Skip to content

Comments

feat(SOSO-365): SelectorBuilder mit DI-Support, Selector-Wrapping Fix + Default-URL Korrektur#9

Merged
wagnert merged 3 commits intodevelopfrom
feature/SOSO-365-selector-fix-url-correction
Feb 21, 2026
Merged

feat(SOSO-365): SelectorBuilder mit DI-Support, Selector-Wrapping Fix + Default-URL Korrektur#9
wagnert merged 3 commits intodevelopfrom
feature/SOSO-365-selector-fix-url-correction

Conversation

@wagnert
Copy link
Member

@wagnert wagnert commented Feb 21, 2026

Summary

  • SelectorBuilder-Klasse mit SelectorBuilderInterface fuer API-konforme Selector-Expressions (Filter(), Select(), OrderBy(), Top()) und Injection-sicheres Value-Escaping
  • Bugfix: AppSheetClient.find() wrappet raw Selectors automatisch in Filter(tableName, expression) (AppSheet API Spezifikation)
  • Bugfix: Default Base URL von deprecated api.appsheet.com auf www.appsheet.com korrigiert
  • DI-Kompatibilitaet (Option B): Optionaler SelectorBuilderInterface-Parameter in AppSheetClientFactory-Constructor und AppSheetClient-Constructor — kein Breaking Change, ermoeglicht Injection eigener Builder-Implementierungen (z.B. fuer AOP-Logging via Subklasse)
  • Version Bump: 3.0.0 → 3.1.0

Jira

SOSO-365

Konzept

Siehe docs/SOSO-365/BUGFIX_CONCEPT.md fuer Design-Entscheidungen, DI-Kompatibilitaet und AOP-Erweiterbarkeit.

Neue Dateien

Datei Beschreibung
src/types/selector.ts SelectorBuilderInterface Definition
src/utils/SelectorBuilder.ts SelectorBuilder Klasse
tests/utils/SelectorBuilder.test.ts 40+ Tests inkl. Injection-Attack-Prevention
docs/SOSO-365/BUGFIX_CONCEPT.md Bugfix-Konzept

Geaenderte Dateien

Datei Aenderung
src/client/AppSheetClient.ts Optionaler 3. Constructor-Parameter selectorBuilder?, ensureFunction() in find(), Default URL
src/client/AppSheetClientFactory.ts Constructor mit optionalem selectorBuilder?, Durchreichung an AppSheetClient
src/types/index.ts Export selector types
src/utils/index.ts Export SelectorBuilder
src/types/config.ts Kommentar: Default URL
src/types/schema.ts Kommentar: Default URL
tests/client/AppSheetClient.test.ts Expected Selectors auf Filter(tableName, ...)
tests/client/AppSheetClient.v3.test.ts Default-URL Test

Breaking Changes

Keine. AppSheetClientFactoryInterface.create() ist unveraendert. Alle neuen Parameter sind optional.

Test-Ergebnis

Test Suites: 9 passed, 9 total
Tests:       265 passed, 265 total
Build: clean (0 errors)
Lint:  0 errors (108 pre-existing no-explicit-any warnings)

…pping and default URL

- Add SelectorBuilder class with SelectorBuilderInterface for API-compliant
  selector wrapping (Filter/Select/OrderBy/Top) and injection-safe value escaping
- Fix AppSheetClient.find() to automatically wrap raw selectors in Filter()
- Fix default base URL from deprecated api.appsheet.com to www.appsheet.com
- Add DI-compatible injection via optional constructor parameters in
  AppSheetClient and AppSheetClientFactory (Option B - no breaking change)
- Bump version to 3.1.0
…hnical conception

- Archive TECHNICAL_CONCEPTION.md to docs/archive/ (v1.0 planning document, not current)
- Update examples/basic-usage.ts to v3.1.0 constructor signature (ConnectionDefinition)
- Update examples/schema-based-usage.ts to v3.1.0 factory injection pattern
- Update examples/config/example-schema.yaml to v2.0.0 AppSheet field type format
- Add examples/selector-builder-usage.ts (escaping, safe filters, DI, AOP)
- Update docs/README.md with all examples and concept document references
@wagnert wagnert merged commit 93439d1 into develop Feb 21, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant