@pwfabric/runtime 1.0.0-rc.0 → 1.0.0-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +35 -5
- package/dist/a11y/announcer.d.ts +0 -1
- package/dist/a11y/announcer.js.map +1 -1
- package/dist/a11y/contrast.d.ts +0 -1
- package/dist/a11y/contrast.js.map +1 -1
- package/dist/a11y/focus.d.ts +0 -1
- package/dist/a11y/focus.js.map +1 -1
- package/dist/a11y/index.d.ts +0 -1
- package/dist/a11y/index.js.map +1 -1
- package/dist/a11y/keyboard.d.ts +0 -1
- package/dist/a11y/keyboard.js.map +1 -1
- package/dist/adapters/default-image.d.ts +0 -1
- package/dist/adapters/default-image.js.map +1 -1
- package/dist/adapters/index.d.ts +0 -1
- package/dist/adapters/index.js.map +1 -1
- package/dist/adapters/next-image.d.ts +0 -1
- package/dist/adapters/next-image.js.map +1 -1
- package/dist/adapters/types.d.ts +0 -1
- package/dist/adapters/types.js.map +1 -1
- package/dist/analytics/index.d.ts +0 -1
- package/dist/analytics/index.js.map +1 -1
- package/dist/analytics/tracker.d.ts +0 -1
- package/dist/analytics/tracker.js.map +1 -1
- package/dist/analytics/types.d.ts +0 -1
- package/dist/analytics/types.js.map +1 -1
- package/dist/auth/index.d.ts +0 -1
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/provider.d.ts +0 -1
- package/dist/auth/provider.js.map +1 -1
- package/dist/auth/types.d.ts +0 -1
- package/dist/auth/types.js.map +1 -1
- package/dist/binding/collection.d.ts +0 -1
- package/dist/binding/collection.js.map +1 -1
- package/dist/binding/datasource.d.ts +0 -1
- package/dist/binding/datasource.js.map +1 -1
- package/dist/binding/engine.d.ts +0 -1
- package/dist/binding/engine.js.map +1 -1
- package/dist/binding/expression.d.ts +0 -1
- package/dist/binding/expression.js.map +1 -1
- package/dist/binding/index.d.ts +0 -1
- package/dist/binding/index.js.map +1 -1
- package/dist/binding/two-way.d.ts +0 -1
- package/dist/binding/two-way.js.map +1 -1
- package/dist/binding/types.d.ts +0 -1
- package/dist/binding/types.js.map +1 -1
- package/dist/blocks/component-types.d.ts +0 -1
- package/dist/blocks/component-types.js.map +1 -1
- package/dist/blocks/composition-rules.d.ts +0 -1
- package/dist/blocks/composition-rules.js.map +1 -1
- package/dist/blocks/hooks.d.ts +0 -1
- package/dist/blocks/hooks.js.map +1 -1
- package/dist/blocks/index.d.ts +0 -2
- package/dist/blocks/index.js +5 -6
- package/dist/blocks/index.js.map +1 -1
- package/dist/blocks/registry.d.ts +0 -1
- package/dist/blocks/registry.js.map +1 -1
- package/dist/blocks/rule-engine.d.ts +0 -1
- package/dist/blocks/rule-engine.js.map +1 -1
- package/dist/blocks/surface-event-context.d.ts +0 -1
- package/dist/blocks/surface-event-context.js.map +1 -1
- package/dist/blocks/surface-id-context.d.ts +0 -1
- package/dist/blocks/surface-id-context.js.map +1 -1
- package/dist/bus.d.ts +0 -1
- package/dist/bus.js.map +1 -1
- package/dist/cache/index.d.ts +0 -1
- package/dist/cache/index.js.map +1 -1
- package/dist/cache/memory.d.ts +0 -1
- package/dist/cache/memory.js.map +1 -1
- package/dist/cache/types.d.ts +0 -1
- package/dist/cache/types.js.map +1 -1
- package/dist/capability/index.d.ts +0 -1
- package/dist/capability/index.js.map +1 -1
- package/dist/capability/kernel-capabilities.d.ts +0 -1
- package/dist/capability/kernel-capabilities.js.map +1 -1
- package/dist/capability/platform-capabilities.d.ts +0 -1
- package/dist/capability/platform-capabilities.js.map +1 -1
- package/dist/capability/type-mapping.d.ts +0 -1
- package/dist/capability/type-mapping.js.map +1 -1
- package/dist/capability/validation.d.ts +0 -1
- package/dist/capability/validation.js.map +1 -1
- package/dist/connectors/declared-connector.d.ts +0 -1
- package/dist/connectors/declared-connector.js.map +1 -1
- package/dist/connectors/engine-registry.d.ts +0 -1
- package/dist/connectors/engine-registry.js.map +1 -1
- package/dist/connectors/index.d.ts +0 -1
- package/dist/connectors/index.js.map +1 -1
- package/dist/connectors/module-loader.d.ts +0 -1
- package/dist/connectors/module-loader.js.map +1 -1
- package/dist/connectors/types.d.ts +0 -1
- package/dist/connectors/types.js.map +1 -1
- package/dist/context.d.ts +0 -1
- package/dist/context.js.map +1 -1
- package/dist/data/DataCapabilityProvider.d.ts +0 -1
- package/dist/data/DataCapabilityProvider.js.map +1 -1
- package/dist/data/index.d.ts +0 -1
- package/dist/data/index.js.map +1 -1
- package/dist/data/manager.d.ts +0 -1
- package/dist/data/manager.js.map +1 -1
- package/dist/data/types.d.ts +0 -1
- package/dist/data/types.js.map +1 -1
- package/dist/entity/aggregate.d.ts +0 -1
- package/dist/entity/aggregate.js.map +1 -1
- package/dist/entity/apply-query.d.ts +0 -1
- package/dist/entity/apply-query.js.map +1 -1
- package/dist/entity/behavior.d.ts +0 -1
- package/dist/entity/behavior.js.map +1 -1
- package/dist/entity/connector.d.ts +0 -1
- package/dist/entity/connector.js.map +1 -1
- package/dist/entity/connectors/index.d.ts +0 -1
- package/dist/entity/connectors/index.js.map +1 -1
- package/dist/entity/connectors/static.d.ts +0 -1
- package/dist/entity/connectors/static.js.map +1 -1
- package/dist/entity/entity-datasource.d.ts +0 -1
- package/dist/entity/entity-datasource.js.map +1 -1
- package/dist/entity/facade.d.ts +0 -1
- package/dist/entity/facade.js.map +1 -1
- package/dist/entity/http-connector.d.ts +0 -1
- package/dist/entity/http-connector.js.map +1 -1
- package/dist/entity/index.d.ts +0 -1
- package/dist/entity/index.js.map +1 -1
- package/dist/entity/postgres-connector.d.ts +0 -1
- package/dist/entity/postgres-connector.js.map +1 -1
- package/dist/entity/registry.d.ts +0 -1
- package/dist/entity/registry.js.map +1 -1
- package/dist/entity/store.d.ts +0 -1
- package/dist/entity/store.js.map +1 -1
- package/dist/entity/types.d.ts +0 -1
- package/dist/entity/types.js.map +1 -1
- package/dist/execution-context.d.ts +0 -1
- package/dist/execution-context.js.map +1 -1
- package/dist/executor.d.ts +0 -1
- package/dist/executor.js.map +1 -1
- package/dist/forms/form-entity-bridge.d.ts +0 -1
- package/dist/forms/form-entity-bridge.js.map +1 -1
- package/dist/forms/form-write-target.d.ts +0 -1
- package/dist/forms/form-write-target.js.map +1 -1
- package/dist/forms/index.d.ts +0 -1
- package/dist/forms/index.js.map +1 -1
- package/dist/forms/named-control-values.d.ts +0 -1
- package/dist/forms/named-control-values.js.map +1 -1
- package/dist/forms/processor.d.ts +0 -1
- package/dist/forms/processor.js.map +1 -1
- package/dist/forms/types.d.ts +0 -1
- package/dist/forms/types.js.map +1 -1
- package/dist/forms/validator.d.ts +0 -1
- package/dist/forms/validator.js.map +1 -1
- package/dist/graph/index.d.ts +0 -1
- package/dist/graph/index.js.map +1 -1
- package/dist/graph/resolver.d.ts +0 -1
- package/dist/graph/resolver.js.map +1 -1
- package/dist/graph/types.d.ts +0 -1
- package/dist/graph/types.js.map +1 -1
- package/dist/hooks/useInstalledAtoms.d.ts +0 -1
- package/dist/hooks/useInstalledAtoms.js.map +1 -1
- package/dist/i18n/index.d.ts +0 -1
- package/dist/i18n/index.js.map +1 -1
- package/dist/i18n/translator.d.ts +0 -1
- package/dist/i18n/translator.js.map +1 -1
- package/dist/i18n/types.d.ts +0 -1
- package/dist/i18n/types.js.map +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.js.map +1 -1
- package/dist/kernel.d.ts +0 -1
- package/dist/kernel.js.map +1 -1
- package/dist/perf/budget.d.ts +0 -1
- package/dist/perf/budget.js.map +1 -1
- package/dist/perf/index.d.ts +0 -1
- package/dist/perf/index.js.map +1 -1
- package/dist/perf/render-timer.d.ts +0 -1
- package/dist/perf/render-timer.js.map +1 -1
- package/dist/perf/reporter.d.ts +0 -1
- package/dist/perf/reporter.js.map +1 -1
- package/dist/perf/web-vitals.d.ts +0 -1
- package/dist/perf/web-vitals.js.map +1 -1
- package/dist/registry.d.ts +0 -1
- package/dist/registry.js.map +1 -1
- package/dist/render/BehaviorSurfaceProvider.d.ts +0 -1
- package/dist/render/BehaviorSurfaceProvider.js.map +1 -1
- package/dist/render/BlockErrorBoundary.d.ts +0 -1
- package/dist/render/BlockErrorBoundary.js.map +1 -1
- package/dist/render/DataBoundSurfaceRenderer.d.ts +0 -1
- package/dist/render/DataBoundSurfaceRenderer.js.map +1 -1
- package/dist/render/DynamicBlockWrapper.d.ts +0 -1
- package/dist/render/DynamicBlockWrapper.js.map +1 -1
- package/dist/render/appearance-resolver.d.ts +0 -1
- package/dist/render/appearance-resolver.js.map +1 -1
- package/dist/render/capability-gate.d.ts +0 -1
- package/dist/render/capability-gate.js.map +1 -1
- package/dist/render/conditional-states-css.d.ts +0 -1
- package/dist/render/conditional-states-css.js.map +1 -1
- package/dist/render/connections-context.d.ts +0 -1
- package/dist/render/connections-context.js.map +1 -1
- package/dist/render/dark-theme-css.d.ts +0 -1
- package/dist/render/dark-theme-css.js.map +1 -1
- package/dist/render/data-binding-types.d.ts +0 -1
- package/dist/render/data-binding-types.js.map +1 -1
- package/dist/render/data-cache.d.ts +0 -1
- package/dist/render/data-cache.js.map +1 -1
- package/dist/render/derive-dark-theme.d.ts +0 -1
- package/dist/render/derive-dark-theme.js.map +1 -1
- package/dist/render/dynamic-artifact-context.d.ts +0 -1
- package/dist/render/dynamic-artifact-context.js.map +1 -1
- package/dist/render/dynamic-block-loader.d.ts +0 -1
- package/dist/render/dynamic-block-loader.js.map +1 -1
- package/dist/render/endpoint.d.ts +0 -1
- package/dist/render/endpoint.js.map +1 -1
- package/dist/render/entity-facade-context.d.ts +0 -1
- package/dist/render/entity-facade-context.js.map +1 -1
- package/dist/render/group-states-css.d.ts +0 -1
- package/dist/render/group-states-css.js.map +1 -1
- package/dist/render/hooks/useSurfaceEvents.d.ts +0 -1
- package/dist/render/hooks/useSurfaceEvents.js.map +1 -1
- package/dist/render/hooks/useSurfaceId.d.ts +0 -1
- package/dist/render/hooks/useSurfaceId.js.map +1 -1
- package/dist/render/index.d.ts +0 -1
- package/dist/render/index.js.map +1 -1
- package/dist/render/interaction-rule-engine.d.ts +0 -1
- package/dist/render/interaction-rule-engine.js.map +1 -1
- package/dist/render/keyframes-css.d.ts +0 -1
- package/dist/render/keyframes-css.js.map +1 -1
- package/dist/render/query-state.d.ts +0 -1
- package/dist/render/query-state.js.map +1 -1
- package/dist/render/renderer.d.ts +0 -1
- package/dist/render/renderer.js.map +1 -1
- package/dist/render/resolve-expressions.d.ts +0 -1
- package/dist/render/resolve-expressions.js.map +1 -1
- package/dist/render/responsive-style-css.d.ts +0 -1
- package/dist/render/responsive-style-css.js.map +1 -1
- package/dist/render/responsive.d.ts +0 -1
- package/dist/render/responsive.js.map +1 -1
- package/dist/render/scoped-css.d.ts +0 -1
- package/dist/render/scoped-css.js.map +1 -1
- package/dist/render/shell-selection.d.ts +0 -1
- package/dist/render/shell-selection.js.map +1 -1
- package/dist/render/states-css.d.ts +0 -1
- package/dist/render/states-css.js.map +1 -1
- package/dist/render/surface-data-context.d.ts +0 -1
- package/dist/render/surface-data-context.js.map +1 -1
- package/dist/render/surface-event-bus.d.ts +0 -1
- package/dist/render/surface-event-bus.js.map +1 -1
- package/dist/render/surface-event-context.d.ts +0 -1
- package/dist/render/surface-event-context.js.map +1 -1
- package/dist/render/surface-id-context.d.ts +0 -1
- package/dist/render/surface-id-context.js.map +1 -1
- package/dist/render/theme-utils.d.ts +0 -1
- package/dist/render/theme-utils.js.map +1 -1
- package/dist/render/types.d.ts +0 -1
- package/dist/render/types.js.map +1 -1
- package/dist/render/visibility-css.d.ts +0 -1
- package/dist/render/visibility-css.js.map +1 -1
- package/dist/render/width-scope.d.ts +0 -1
- package/dist/render/width-scope.js.map +1 -1
- package/dist/render/write-only-sources.d.ts +0 -1
- package/dist/render/write-only-sources.js.map +1 -1
- package/dist/routing/index.d.ts +0 -1
- package/dist/routing/index.js.map +1 -1
- package/dist/routing/router.d.ts +0 -1
- package/dist/routing/router.js.map +1 -1
- package/dist/routing/types.d.ts +0 -1
- package/dist/routing/types.js.map +1 -1
- package/dist/seo/generator.d.ts +0 -1
- package/dist/seo/generator.js.map +1 -1
- package/dist/seo/index.d.ts +0 -1
- package/dist/seo/index.js.map +1 -1
- package/dist/seo/types.d.ts +0 -1
- package/dist/seo/types.js.map +1 -1
- package/dist/state/index.d.ts +0 -1
- package/dist/state/index.js.map +1 -1
- package/dist/state/manager.d.ts +0 -1
- package/dist/state/manager.js.map +1 -1
- package/dist/state/store.d.ts +0 -1
- package/dist/state/store.js.map +1 -1
- package/dist/state/types.d.ts +0 -1
- package/dist/state/types.js.map +1 -1
- package/dist/surface/expression.d.ts +0 -1
- package/dist/surface/expression.js.map +1 -1
- package/dist/surface/index.d.ts +0 -1
- package/dist/surface/index.js.map +1 -1
- package/dist/surface/interpreter.d.ts +0 -1
- package/dist/surface/interpreter.js.map +1 -1
- package/dist/surface/layout.d.ts +0 -1
- package/dist/surface/layout.js.map +1 -1
- package/dist/surface/output.d.ts +0 -1
- package/dist/surface/output.js.map +1 -1
- package/dist/surface/primitives.d.ts +0 -1
- package/dist/surface/primitives.js.map +1 -1
- package/dist/surface/renderer.d.ts +0 -1
- package/dist/surface/renderer.js.map +1 -1
- package/dist/surface/schemas.d.ts +0 -1
- package/dist/surface/schemas.js.map +1 -1
- package/dist/surface/transforms.d.ts +0 -1
- package/dist/surface/transforms.js.map +1 -1
- package/dist/surface/types.d.ts +0 -1
- package/dist/surface/types.js.map +1 -1
- package/dist/surface/validation.d.ts +0 -1
- package/dist/surface/validation.js.map +1 -1
- package/dist/validator.d.ts +0 -1
- package/dist/validator.js.map +1 -1
- package/package.json +41 -40
- package/dist/__tests__/dom-test-setup.d.ts +0 -21
- package/dist/__tests__/dom-test-setup.d.ts.map +0 -1
- package/dist/__tests__/dom-test-setup.js +0 -36
- package/dist/__tests__/dom-test-setup.js.map +0 -1
- package/dist/a11y/announcer.d.ts.map +0 -1
- package/dist/a11y/contrast.d.ts.map +0 -1
- package/dist/a11y/focus.d.ts.map +0 -1
- package/dist/a11y/index.d.ts.map +0 -1
- package/dist/a11y/keyboard.d.ts.map +0 -1
- package/dist/adapters/default-image.d.ts.map +0 -1
- package/dist/adapters/index.d.ts.map +0 -1
- package/dist/adapters/next-image.d.ts.map +0 -1
- package/dist/adapters/types.d.ts.map +0 -1
- package/dist/analytics/index.d.ts.map +0 -1
- package/dist/analytics/tracker.d.ts.map +0 -1
- package/dist/analytics/types.d.ts.map +0 -1
- package/dist/auth/index.d.ts.map +0 -1
- package/dist/auth/provider.d.ts.map +0 -1
- package/dist/auth/types.d.ts.map +0 -1
- package/dist/binding/collection.d.ts.map +0 -1
- package/dist/binding/datasource.d.ts.map +0 -1
- package/dist/binding/engine.d.ts.map +0 -1
- package/dist/binding/expression.d.ts.map +0 -1
- package/dist/binding/index.d.ts.map +0 -1
- package/dist/binding/two-way.d.ts.map +0 -1
- package/dist/binding/types.d.ts.map +0 -1
- package/dist/blocks/__test-fixtures__/block-fixtures.d.ts +0 -40
- package/dist/blocks/__test-fixtures__/block-fixtures.d.ts.map +0 -1
- package/dist/blocks/__test-fixtures__/block-fixtures.js +0 -506
- package/dist/blocks/__test-fixtures__/block-fixtures.js.map +0 -1
- package/dist/blocks/component-types.d.ts.map +0 -1
- package/dist/blocks/composition-rules.d.ts.map +0 -1
- package/dist/blocks/hooks.d.ts.map +0 -1
- package/dist/blocks/index.d.ts.map +0 -1
- package/dist/blocks/registry.d.ts.map +0 -1
- package/dist/blocks/rule-engine.d.ts.map +0 -1
- package/dist/blocks/surface-event-context.d.ts.map +0 -1
- package/dist/blocks/surface-id-context.d.ts.map +0 -1
- package/dist/bus.d.ts.map +0 -1
- package/dist/cache/index.d.ts.map +0 -1
- package/dist/cache/memory.d.ts.map +0 -1
- package/dist/cache/types.d.ts.map +0 -1
- package/dist/capability/index.d.ts.map +0 -1
- package/dist/capability/kernel-capabilities.d.ts.map +0 -1
- package/dist/capability/platform-capabilities.d.ts.map +0 -1
- package/dist/capability/type-mapping.d.ts.map +0 -1
- package/dist/capability/validation.d.ts.map +0 -1
- package/dist/connectors/declared-connector.d.ts.map +0 -1
- package/dist/connectors/engine-registry.d.ts.map +0 -1
- package/dist/connectors/index.d.ts.map +0 -1
- package/dist/connectors/module-loader.d.ts.map +0 -1
- package/dist/connectors/types.d.ts.map +0 -1
- package/dist/context.d.ts.map +0 -1
- package/dist/data/DataCapabilityProvider.d.ts.map +0 -1
- package/dist/data/index.d.ts.map +0 -1
- package/dist/data/manager.d.ts.map +0 -1
- package/dist/data/types.d.ts.map +0 -1
- package/dist/entity/aggregate.d.ts.map +0 -1
- package/dist/entity/apply-query.d.ts.map +0 -1
- package/dist/entity/behavior.d.ts.map +0 -1
- package/dist/entity/connector.d.ts.map +0 -1
- package/dist/entity/connectors/index.d.ts.map +0 -1
- package/dist/entity/connectors/static.d.ts.map +0 -1
- package/dist/entity/entity-datasource.d.ts.map +0 -1
- package/dist/entity/facade.d.ts.map +0 -1
- package/dist/entity/http-connector.d.ts.map +0 -1
- package/dist/entity/index.d.ts.map +0 -1
- package/dist/entity/postgres-connector.d.ts.map +0 -1
- package/dist/entity/registry.d.ts.map +0 -1
- package/dist/entity/store.d.ts.map +0 -1
- package/dist/entity/types.d.ts.map +0 -1
- package/dist/execution-context.d.ts.map +0 -1
- package/dist/executor.d.ts.map +0 -1
- package/dist/forms/form-entity-bridge.d.ts.map +0 -1
- package/dist/forms/form-write-target.d.ts.map +0 -1
- package/dist/forms/index.d.ts.map +0 -1
- package/dist/forms/named-control-values.d.ts.map +0 -1
- package/dist/forms/processor.d.ts.map +0 -1
- package/dist/forms/types.d.ts.map +0 -1
- package/dist/forms/validator.d.ts.map +0 -1
- package/dist/graph/index.d.ts.map +0 -1
- package/dist/graph/resolver.d.ts.map +0 -1
- package/dist/graph/types.d.ts.map +0 -1
- package/dist/hooks/useInstalledAtoms.d.ts.map +0 -1
- package/dist/i18n/index.d.ts.map +0 -1
- package/dist/i18n/translator.d.ts.map +0 -1
- package/dist/i18n/types.d.ts.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/kernel.d.ts.map +0 -1
- package/dist/perf/budget.d.ts.map +0 -1
- package/dist/perf/index.d.ts.map +0 -1
- package/dist/perf/render-timer.d.ts.map +0 -1
- package/dist/perf/reporter.d.ts.map +0 -1
- package/dist/perf/web-vitals.d.ts.map +0 -1
- package/dist/registry.d.ts.map +0 -1
- package/dist/render/BehaviorSurfaceProvider.d.ts.map +0 -1
- package/dist/render/BlockErrorBoundary.d.ts.map +0 -1
- package/dist/render/DataBoundSurfaceRenderer.d.ts.map +0 -1
- package/dist/render/DynamicBlockWrapper.d.ts.map +0 -1
- package/dist/render/appearance-resolver.d.ts.map +0 -1
- package/dist/render/capability-gate.d.ts.map +0 -1
- package/dist/render/conditional-states-css.d.ts.map +0 -1
- package/dist/render/connections-context.d.ts.map +0 -1
- package/dist/render/dark-theme-css.d.ts.map +0 -1
- package/dist/render/data-binding-types.d.ts.map +0 -1
- package/dist/render/data-cache.d.ts.map +0 -1
- package/dist/render/derive-dark-theme.d.ts.map +0 -1
- package/dist/render/dynamic-artifact-context.d.ts.map +0 -1
- package/dist/render/dynamic-block-loader.d.ts.map +0 -1
- package/dist/render/endpoint.d.ts.map +0 -1
- package/dist/render/entity-facade-context.d.ts.map +0 -1
- package/dist/render/group-states-css.d.ts.map +0 -1
- package/dist/render/hooks/useSurfaceEvents.d.ts.map +0 -1
- package/dist/render/hooks/useSurfaceId.d.ts.map +0 -1
- package/dist/render/index.d.ts.map +0 -1
- package/dist/render/interaction-rule-engine.d.ts.map +0 -1
- package/dist/render/keyframes-css.d.ts.map +0 -1
- package/dist/render/query-state.d.ts.map +0 -1
- package/dist/render/renderer.d.ts.map +0 -1
- package/dist/render/resolve-expressions.d.ts.map +0 -1
- package/dist/render/responsive-style-css.d.ts.map +0 -1
- package/dist/render/responsive.d.ts.map +0 -1
- package/dist/render/scoped-css.d.ts.map +0 -1
- package/dist/render/shell-selection.d.ts.map +0 -1
- package/dist/render/states-css.d.ts.map +0 -1
- package/dist/render/surface-data-context.d.ts.map +0 -1
- package/dist/render/surface-event-bus.d.ts.map +0 -1
- package/dist/render/surface-event-context.d.ts.map +0 -1
- package/dist/render/surface-id-context.d.ts.map +0 -1
- package/dist/render/theme-utils.d.ts.map +0 -1
- package/dist/render/types.d.ts.map +0 -1
- package/dist/render/visibility-css.d.ts.map +0 -1
- package/dist/render/width-scope.d.ts.map +0 -1
- package/dist/render/write-only-sources.d.ts.map +0 -1
- package/dist/routing/index.d.ts.map +0 -1
- package/dist/routing/router.d.ts.map +0 -1
- package/dist/routing/types.d.ts.map +0 -1
- package/dist/seo/generator.d.ts.map +0 -1
- package/dist/seo/index.d.ts.map +0 -1
- package/dist/seo/types.d.ts.map +0 -1
- package/dist/state/index.d.ts.map +0 -1
- package/dist/state/manager.d.ts.map +0 -1
- package/dist/state/store.d.ts.map +0 -1
- package/dist/state/types.d.ts.map +0 -1
- package/dist/surface/expression.d.ts.map +0 -1
- package/dist/surface/index.d.ts.map +0 -1
- package/dist/surface/interpreter.d.ts.map +0 -1
- package/dist/surface/layout.d.ts.map +0 -1
- package/dist/surface/output.d.ts.map +0 -1
- package/dist/surface/primitives.d.ts.map +0 -1
- package/dist/surface/renderer.d.ts.map +0 -1
- package/dist/surface/schemas.d.ts.map +0 -1
- package/dist/surface/transforms.d.ts.map +0 -1
- package/dist/surface/types.d.ts.map +0 -1
- package/dist/surface/validation.d.ts.map +0 -1
- package/dist/validator.d.ts.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"platform-capabilities.js","sourceRoot":"","sources":["../../src/capability/platform-capabilities.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"platform-capabilities.js","sourceRoot":"","sources":["../../src/capability/platform-capabilities.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Platform Capability Definitions\n *\n * Canonical capability taxonomy.\n * - persistence replaces data + state (merged)\n * - interaction replaces behaviors (Tier 2)\n * - entities is the canonical form write path\n *\n * platform/auth phantom capability removed — real auth\n * enforcement lives in JWT middleware (requireAuthenticated()), not\n * the capability system.\n *\n * platform/input retired — form submissions flow through\n * platform/entities (entity_records), hard cutover, no fallback.\n *\n * Active capabilities: persistence, entities, navigation, interaction.\n *\n * @module @pwfabric/runtime/capability/platform-capabilities\n */\n\nimport {\n defineCapability,\n defineContract,\n defineConfigSchema,\n anySchema,\n} from '@pwfabric/core'\nimport type { Capability } from '@pwfabric/contracts'\nimport type { CapabilityRegistry } from '../registry.js'\nimport { createDataService } from '../data/manager.js'\n\n// ============================================================\n// PASSTHROUGH CONTRACT\n// ============================================================\n\n/**\n * A passthrough contract for declaration-only capabilities.\n * Accepts any input and produces any output with no validation.\n * Used by: persistence, navigation, interaction, entities.\n */\nconst passthroughContract = defineContract()\n .id('platform/passthrough')\n .name('Platform Passthrough')\n .description('Passthrough contract for platform capability declarations')\n .state('stable')\n .input(anySchema())\n .output(anySchema())\n .build()\n\n// ============================================================\n// CONFIG SCHEMAS\n// ============================================================\n\n/**\n * persistenceConfigSchema merges former dataConfigSchema and stateConfigSchema.\n * data fields: defaultCacheTtl, maxRetries, timeout\n * state fields: persistenceEnabled, storageKey\n */\nconst persistenceConfigSchema = defineConfigSchema()\n .field('defaultCacheTtl', (f) =>\n f\n .number()\n .default(300)\n .label('Default Cache TTL')\n .description('Default cache time-to-live in seconds')\n .min(0)\n .max(86400)\n )\n .field('maxRetries', (f) =>\n f\n .number()\n .default(3)\n .label('Max Retries')\n .description('Maximum number of retry attempts for failed requests')\n .min(0)\n .max(10)\n )\n .field('timeout', (f) =>\n f\n .number()\n .default(5000)\n .label('Request Timeout')\n .description('Request timeout in milliseconds')\n .min(1000)\n .max(30000)\n )\n .field('persistenceEnabled', (f) =>\n f\n .boolean()\n .default(true)\n .label('Enable Persistence')\n .description('Persist state to local storage')\n )\n .field('storageKey', (f) =>\n f\n .string()\n .default('pwfabric-state')\n .label('Storage Key')\n .description('Local storage key prefix for persisted state')\n )\n .build()\n\nconst navigationConfigSchema = defineConfigSchema()\n .field('basePath', (f) =>\n f.string().default('/').label('Base Path').description('Base path prefix for all routes')\n )\n .field('trailingSlash', (f) =>\n f.boolean().default(false).label('Trailing Slash').description('Append trailing slash to URLs')\n )\n .build()\n\nconst interactionConfigSchema = defineConfigSchema()\n .field('executionMode', (f) =>\n f\n .select([\n {\n value: 'sync',\n label: 'Synchronous',\n description: 'Actions block the event chain until complete',\n },\n {\n value: 'async',\n label: 'Asynchronous',\n description: 'Actions run in background without blocking',\n },\n ])\n .default('async')\n .label('Execution Mode')\n .description('How behavior actions are executed when a trigger fires')\n )\n .field('maxConcurrent', (f) =>\n f\n .number()\n .default(5)\n .label('Max Concurrent')\n .description('Maximum number of behaviors that can execute simultaneously')\n .min(1)\n .max(20)\n )\n .field('errorPolicy', (f) =>\n f\n .select([\n { value: 'ignore', label: 'Ignore', description: 'Silently swallow errors' },\n {\n value: 'log',\n label: 'Log',\n description: 'Log errors to console without stopping execution',\n },\n { value: 'halt', label: 'Halt', description: 'Stop the behavior chain on first error' },\n ])\n .default('log')\n .label('Error Policy')\n .description('How errors in behavior actions are handled')\n )\n .field('debugMode', (f) =>\n f\n .boolean()\n .default(false)\n .label('Debug Mode')\n .description('Emit detailed trace events for behavior execution')\n )\n .build()\n\n// ============================================================\n// PLATFORM CAPABILITY DEFINITIONS\n// ============================================================\n\n/**\n * Persistence capability\n *\n * Merges former data + state capabilities.\n * Provides data fetching, mutation, persistence operations, and\n * client-side state management with optional local storage persistence.\n */\nexport const persistenceCapability = defineCapability()\n .id('platform/persistence')\n .name('Data & State Persistence')\n .description('Data fetching, mutation, persistence operations, and client-side state management')\n .version('1.0.0')\n .state('stable')\n .tags(['data', 'state', 'persistence', 'api'])\n .contract(passthroughContract)\n .configSchema(persistenceConfigSchema)\n .execute(async (config) => {\n const cfg = config as Record<string, unknown> | undefined\n return createDataService({\n ...(cfg?.defaultCacheTtl != null ? { defaultCacheTtl: cfg.defaultCacheTtl as number } : {}),\n ...(cfg?.maxRetries != null ? { maxRetries: cfg.maxRetries as number } : {}),\n ...(cfg?.timeout != null ? { timeout: cfg.timeout as number } : {}),\n })\n })\n .build()\n\n/**\n * Navigation capability\n *\n * Provides multi-page surface navigation, base path configuration, and route handling.\n * Renamed from routingCapability (platform/routing) to avoid confusion with framework-level routing.\n */\nexport const navigationCapability = defineCapability()\n .id('platform/navigation')\n .name('Navigation')\n .description('Multi-page surface navigation, base path configuration, and route handling')\n .version('1.0.0')\n .state('stable')\n .tags(['navigation', 'routing', 'url'])\n .contract(passthroughContract)\n .configSchema(navigationConfigSchema)\n .execute(async (input) => {\n const data = input as Record<string, unknown> | undefined\n const path = (data?.path as string) ?? '/'\n const config = (data?.config as Record<string, unknown>) ?? {}\n const basePath = (config.basePath as string) ?? '/'\n const trailingSlash = (config.trailingSlash as boolean) ?? false\n let resolvedPath = path.startsWith(basePath) ? path : `${basePath}${path}`.replace(/\\/+/g, '/')\n if (trailingSlash && !resolvedPath.endsWith('/')) resolvedPath += '/'\n else if (!trailingSlash && resolvedPath.length > 1 && resolvedPath.endsWith('/'))\n resolvedPath = resolvedPath.slice(0, -1)\n return { resolvedPath, params: {} }\n })\n .build()\n\n/**\n * Interaction capability\n *\n * Replaces former behaviors capability.\n * Provides event-driven interaction rules for dynamic surfaces.\n */\nexport const interactionCapability = defineCapability()\n .id('platform/interaction')\n .name('Interaction Rules')\n .description(\n 'Event-driven interaction rules — attach triggers and actions to surface events for interactive, dynamic surfaces'\n )\n .version('1.0.0')\n .state('stable')\n .tags(['interaction', 'events', 'automation'])\n .contract(passthroughContract)\n .configSchema(interactionConfigSchema)\n .execute(async () => ({ success: true }))\n .build()\n\n/**\n * Entities capability — NEW Tier 1 capability.\n *\n * Schema-driven entity definitions, CRUD store, and connector abstraction.\n */\nexport const entitiesCapability = defineCapability()\n .id('platform/entities')\n .name('Entity System')\n .description('Schema-driven entity definitions, CRUD store, connector abstraction')\n .version('1.0.0')\n .state('stable')\n .tags(['entities', 'schema', 'crud'])\n .contract(passthroughContract)\n .configSchema(\n defineConfigSchema()\n .field('enableLifecycleHooks', (f) =>\n f\n .boolean()\n .default(true)\n .label('Enable Lifecycle Hooks')\n .description('Enable entity lifecycle hook callbacks')\n )\n .field('enableEventBridge', (f) =>\n f\n .boolean()\n .default(false)\n .label('Enable Event Bridge')\n .description('Emit entity events to the platform event bridge')\n )\n .build()\n )\n .execute(async () => ({ success: true }))\n .build()\n\n// ============================================================\n// AGGREGATE EXPORTS\n// ============================================================\n\n/**\n * All platform capabilities as an array.\n *\n * SOURCE OF TRUTH — derive all other lists from this array (see index.ts).\n * platform/auth removed (phantom capability).\n * routing renamed to navigation.\n * platform/input removed — form writes flow through platform/entities.\n */\nexport const platformCapabilities: readonly Capability[] = [\n persistenceCapability,\n entitiesCapability,\n navigationCapability,\n interactionCapability,\n] as const\n\n/**\n * Register all platform capabilities with a registry\n *\n * @param registry - The capability registry to register with\n * @returns An object with successfully registered IDs and any errors\n */\nexport function registerPlatformCapabilities(registry: CapabilityRegistry): {\n registered: readonly string[]\n errors: readonly { id: string; error: string }[]\n} {\n const registered: string[] = []\n const errors: { id: string; error: string }[] = []\n\n for (const capability of platformCapabilities) {\n const result = registry.register(capability)\n if (result.success) {\n registered.push(capability.id)\n } else {\n errors.push({\n id: capability.id,\n error: result.error.type,\n })\n }\n }\n\n return { registered, errors }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"type-mapping.js","sourceRoot":"","sources":["../../src/capability/type-mapping.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAGlD,+DAA+D;AAC/D,qBAAqB;AACrB,+DAA+D;AAE/D;;;;;GAKG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAA2B;IAC3D,WAAW,EAAE,sBAAsB;IACnC,QAAQ,EAAE,mBAAmB;IAC7B,UAAU,EAAE,qBAAqB;IACjC,WAAW,EAAE,sBAAsB;CAC3B,CAAA;AAEV;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAsB,CAAA;AAEvF;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,qBAAqB,CAAsB,CAAA;AAEvF,+DAA+D;AAC/D,mBAAmB;AACnB,+DAA+D;AAE/D;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,MAAM,EAAE,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAA;IACtC,IAAI,CAAC,EAAE;QAAE,OAAO,IAAI,CAAA;IACpB,OAAO,YAAY,CAAC,EAAE,CAAC,CAAA;AACzB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,EAAU;IAC9C,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,qBAAqB,CAAC,EAAE,CAAC;QAClE,IAAI,KAAK,KAAK,EAAE;YAAE,OAAO,IAAI,CAAA;IAC/B,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAAY;IAChD,OAAO,IAAI,IAAI,qBAAqB,CAAA;AACtC,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAAa;IACjD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAA;IAC5B,IAAI,OAAO,KAAK,EAAE;QAAE,OAAO,IAAI,CAAA;IAC/B,MAAM,MAAM,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAA;IAC7C,IAAI,MAAM;QAAE,OAAO,YAAY,CAAC,MAAM,CAAC,CAAA;IACvC,OAAO,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;AACxE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,KAAiD,EAAE,EAAU;IACxF,MAAM,QAAQ,GAAG,KAAK,EAAE,UAAU,CAAA;IAClC,IAAI,OAAO,QAAQ,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAA;IAC9C,MAAM,SAAS,GAAG,qBAAqB,CAAC,EAAE,CAAC,CAAA;IAC3C,OAAO,SAAS,KAAK,IAAI,IAAI,qBAAqB,CAAC,QAAQ,CAAC,KAAK,SAAS,CAAA;AAC5E,CAAC"}
|
|
1
|
+
{"version":3,"file":"type-mapping.js","sourceRoot":"","sources":["../../src/capability/type-mapping.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAGlD,+DAA+D;AAC/D,qBAAqB;AACrB,+DAA+D;AAE/D;;;;;GAKG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAA2B;IAC3D,WAAW,EAAE,sBAAsB;IACnC,QAAQ,EAAE,mBAAmB;IAC7B,UAAU,EAAE,qBAAqB;IACjC,WAAW,EAAE,sBAAsB;CAC3B,CAAA;AAEV;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAsB,CAAA;AAEvF;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,qBAAqB,CAAsB,CAAA;AAEvF,+DAA+D;AAC/D,mBAAmB;AACnB,+DAA+D;AAE/D;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,MAAM,EAAE,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAA;IACtC,IAAI,CAAC,EAAE;QAAE,OAAO,IAAI,CAAA;IACpB,OAAO,YAAY,CAAC,EAAE,CAAC,CAAA;AACzB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,EAAU;IAC9C,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,qBAAqB,CAAC,EAAE,CAAC;QAClE,IAAI,KAAK,KAAK,EAAE;YAAE,OAAO,IAAI,CAAA;IAC/B,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAAY;IAChD,OAAO,IAAI,IAAI,qBAAqB,CAAA;AACtC,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAAa;IACjD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAA;IAC5B,IAAI,OAAO,KAAK,EAAE;QAAE,OAAO,IAAI,CAAA;IAC/B,MAAM,MAAM,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAA;IAC7C,IAAI,MAAM;QAAE,OAAO,YAAY,CAAC,MAAM,CAAC,CAAA;IACvC,OAAO,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;AACxE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,KAAiD,EAAE,EAAU;IACxF,MAAM,QAAQ,GAAG,KAAK,EAAE,UAAU,CAAA;IAClC,IAAI,OAAO,QAAQ,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAA;IAC9C,MAAM,SAAS,GAAG,qBAAqB,CAAC,EAAE,CAAC,CAAA;IAC3C,OAAO,SAAS,KAAK,IAAI,IAAI,qBAAqB,CAAC,QAAQ,CAAC,KAAK,SAAS,CAAA;AAC5E,CAAC","sourcesContent":["/**\n * Capability Type Mapping\n *\n * Maps short-form CapabilityType strings to their corresponding platform\n * capability IDs used in the registry.\n *\n * @module @pwfabric/runtime/capability/type-mapping\n */\n\nimport { capabilityId } from '@pwfabric/contracts'\nimport type { CapabilityId } from '@pwfabric/contracts'\n\n// ============================================================\n// TYPE-TO-ID MAPPING\n// ============================================================\n\n/**\n * Maps short-form CapabilityType strings to registry CapabilityId values.\n *\n * Keys are the short-form types (e.g., 'persistence').\n * Values are the full platform capability IDs (e.g., 'platform/persistence').\n */\nexport const CAPABILITY_TYPE_TO_ID: Record<string, string> = {\n persistence: 'platform/persistence',\n entities: 'platform/entities',\n navigation: 'platform/navigation',\n interaction: 'platform/interaction',\n} as const\n\n/**\n * All known capability type keys\n */\nexport const CAPABILITY_TYPES = Object.keys(CAPABILITY_TYPE_TO_ID) as readonly string[]\n\n/**\n * All known capability IDs\n */\nexport const CAPABILITY_IDS = Object.values(CAPABILITY_TYPE_TO_ID) as readonly string[]\n\n// ============================================================\n// LOOKUP FUNCTIONS\n// ============================================================\n\n/**\n * Resolve a CapabilityType string to a CapabilityId.\n *\n * @param type - The capability type string (e.g., 'auth')\n * @returns The corresponding CapabilityId, or null if not found\n */\nexport function resolveCapabilityId(type: string): CapabilityId | null {\n const id = CAPABILITY_TYPE_TO_ID[type]\n if (!id) return null\n return capabilityId(id)\n}\n\n/**\n * Resolve a CapabilityId back to a CapabilityType string.\n *\n * @param id - The capability ID (e.g., 'platform/persistence')\n * @returns The corresponding type string, or null if not found\n */\nexport function resolveCapabilityType(id: string): string | null {\n for (const [type, capId] of Object.entries(CAPABILITY_TYPE_TO_ID)) {\n if (capId === id) return type\n }\n return null\n}\n\n/**\n * Check if a CapabilityType string is known.\n *\n * @param type - The capability type string to check\n * @returns true if the type is a known platform capability type\n */\nexport function isKnownCapabilityType(type: string): boolean {\n return type in CAPABILITY_TYPE_TO_ID\n}\n\n/**\n * The canonical id, from EITHER spelling.\n *\n * Every reader that compares a capability id should go through this: a raw\n * comparison against `'platform/…'` misses anything written the short way.\n *\n * Both spellings occur in real documents (`navigation`, `persistence`,\n * `entities` next to `platform/navigation` …). Both are legitimate — the plan\n * layer's contract types the short one, the registry and the pack's atoms use\n * the long one — so a reader that accepts only one is blind to real data.\n *\n * `null` for anything outside the canonical four, which is the answer a caller\n * needs for a retired name (`auth`, `input`) or one that never existed (`seo`):\n * not a silent pass-through that would let a ghost look like a capability.\n */\nexport function canonicalCapabilityId(value: string): CapabilityId | null {\n const trimmed = value.trim()\n if (trimmed === '') return null\n const mapped = CAPABILITY_TYPE_TO_ID[trimmed]\n if (mapped) return capabilityId(mapped)\n return CAPABILITY_IDS.includes(trimmed) ? capabilityId(trimmed) : null\n}\n\n/**\n * Does this capability entry name the given canonical capability?\n *\n * The shape every one of those fourteen sites was hand-rolling:\n * `caps.find((c) => c.capability === 'platform/persistence')`.\n */\nexport function isCapability(entry: { capability?: string } | null | undefined, id: string): boolean {\n const declared = entry?.capability\n if (typeof declared !== 'string') return false\n const canonical = canonicalCapabilityId(id)\n return canonical !== null && canonicalCapabilityId(declared) === canonical\n}\n"]}
|
|
@@ -44,4 +44,3 @@ export interface CapabilityValidationResult {
|
|
|
44
44
|
* @returns A ValidationResult indicating which requirements are met
|
|
45
45
|
*/
|
|
46
46
|
export declare function validateSurfaceCapabilities(requirements: readonly CapabilityRequirement[], registry: CapabilityRegistry): CapabilityValidationResult;
|
|
47
|
-
//# sourceMappingURL=validation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/capability/validation.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AAgCvD,+DAA+D;AAC/D,aAAa;AACb,+DAA+D;AAE/D;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,2BAA2B,CACzC,YAA8C,EAC9C,QAA4B;IAE5B,MAAM,SAAS,GAAa,EAAE,CAAA;IAC9B,MAAM,OAAO,GAAa,EAAE,CAAA;IAC5B,MAAM,QAAQ,GAAa,EAAE,CAAA;IAE7B,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;QACvC,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,WAAW,CAAA;QAE5C,0DAA0D;QAC1D,MAAM,UAAU,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAA;QAClD,MAAM,QAAQ,GAAG,UAAU,IAAI,UAAU,CAAA;QAEzC,wCAAwC;QACxC,8EAA8E;QAC9E,MAAM,YAAY,GAAG,QAAQ,CAAC,GAAG,CAAC,QAA2D,CAAC,CAAA;QAE9F,IAAI,YAAY,EAAE,CAAC;YACjB,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAC5B,CAAC;aAAM,IAAI,QAAQ,EAAE,CAAC;YACpB,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAC1B,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAC3B,CAAC;IACH,CAAC;IAED,OAAO;QACL,KAAK,EAAE,OAAO,CAAC,MAAM,KAAK,CAAC;QAC3B,SAAS;QACT,OAAO;QACP,QAAQ;KACT,CAAA;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/capability/validation.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AAgCvD,+DAA+D;AAC/D,aAAa;AACb,+DAA+D;AAE/D;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,2BAA2B,CACzC,YAA8C,EAC9C,QAA4B;IAE5B,MAAM,SAAS,GAAa,EAAE,CAAA;IAC9B,MAAM,OAAO,GAAa,EAAE,CAAA;IAC5B,MAAM,QAAQ,GAAa,EAAE,CAAA;IAE7B,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;QACvC,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,WAAW,CAAA;QAE5C,0DAA0D;QAC1D,MAAM,UAAU,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAA;QAClD,MAAM,QAAQ,GAAG,UAAU,IAAI,UAAU,CAAA;QAEzC,wCAAwC;QACxC,8EAA8E;QAC9E,MAAM,YAAY,GAAG,QAAQ,CAAC,GAAG,CAAC,QAA2D,CAAC,CAAA;QAE9F,IAAI,YAAY,EAAE,CAAC;YACjB,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAC5B,CAAC;aAAM,IAAI,QAAQ,EAAE,CAAC;YACpB,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAC1B,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAC3B,CAAC;IACH,CAAC;IAED,OAAO;QACL,KAAK,EAAE,OAAO,CAAC,MAAM,KAAK,CAAC;QAC3B,SAAS;QACT,OAAO;QACP,QAAQ;KACT,CAAA;AACH,CAAC","sourcesContent":["/**\n * Surface Capability Validation\n *\n * Validates that a surface's capability requirements\n * can be satisfied by the capabilities registered in a registry.\n *\n * @module @pwfabric/runtime/capability/validation\n */\n\nimport type { CapabilityRegistry } from '../registry.js'\nimport { resolveCapabilityId } from './type-mapping.js'\n\n// ============================================================\n// TYPES\n// ============================================================\n\n/**\n * A capability requirement declared by a surface.\n */\nexport interface CapabilityRequirement {\n /** The capability type string (e.g., 'persistence' or 'platform/persistence') */\n readonly capability: string\n /** Whether this capability is required (true) or optional (false) */\n readonly required: boolean\n /** Optional configuration for the capability */\n readonly config?: Record<string, unknown>\n}\n\n/**\n * Result of validating surface capabilities against a registry.\n */\nexport interface CapabilityValidationResult {\n /** Whether all required capabilities are satisfied */\n readonly valid: boolean\n /** IDs of capabilities that are registered and satisfy requirements */\n readonly satisfied: readonly string[]\n /** IDs of required capabilities that are NOT registered */\n readonly missing: readonly string[]\n /** IDs of optional capabilities that are NOT registered */\n readonly optional: readonly string[]\n}\n\n// ============================================================\n// VALIDATION\n// ============================================================\n\n/**\n * Validate that a surface's capability requirements can be met\n * by the capabilities available in the registry.\n *\n * Capability strings can be either:\n * - Short-form types from starters (e.g., 'persistence') which are resolved via type-mapping\n * - Full capability IDs (e.g., 'platform/persistence') used directly\n *\n * @param requirements - The capability requirements declared by a surface\n * @param registry - The capability registry to validate against\n * @returns A ValidationResult indicating which requirements are met\n */\nexport function validateSurfaceCapabilities(\n requirements: readonly CapabilityRequirement[],\n registry: CapabilityRegistry\n): CapabilityValidationResult {\n const satisfied: string[] = []\n const missing: string[] = []\n const optional: string[] = []\n\n for (const requirement of requirements) {\n const { capability, required } = requirement\n\n // Try to resolve short-form type to full ID, or use as-is\n const resolvedId = resolveCapabilityId(capability)\n const lookupId = resolvedId ?? capability\n\n // Check if the capability is registered\n // Use capabilityId() cast since registry.has() expects a branded CapabilityId\n const isRegistered = registry.has(lookupId as ReturnType<typeof resolveCapabilityId> & string)\n\n if (isRegistered) {\n satisfied.push(capability)\n } else if (required) {\n missing.push(capability)\n } else {\n optional.push(capability)\n }\n }\n\n return {\n valid: missing.length === 0,\n satisfied,\n missing,\n optional,\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"declared-connector.js","sourceRoot":"","sources":["../../src/connectors/declared-connector.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"declared-connector.js","sourceRoot":"","sources":["../../src/connectors/declared-connector.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * build an engine from its DECLARATION.\n *\n * A REST engine is not a class. A class has a call signature, and a\n * hand-written engine that takes one options object where the runtime passes\n * two positional arguments ends up asking SharePoint for `lists/undefined`.\n * A declaration has no signature to get wrong.\n *\n * WHAT THIS MODULE IS ALLOWED TO KNOW: how to turn seven declared facts into\n * an `HttpEntityConnector`. It must not know a vendor's name, and the\n * placement test measures exactly that — no provider name anywhere in\n * `packages/runtime`. Everything SharePoint-shaped lives in the declaration,\n * which lives in the pack that ships the connector.\n *\n * WHAT THE BASE DOES NOT LEARN. `entityPathMapper` and `responseMapper` stay\n * plain functions on `HttpConnectorConfig`; this builds them. The pre-flight —\n * Graph cannot address a list before its site id is resolved — is handled by\n * constructing ONE base per resolved binding, so the mapper stays synchronous.\n * Making it asynchronous would teach a shared contract one vendor's\n * addressing dance.\n *\n * @module @pwfabric/runtime/connectors/declared-connector\n */\n\nimport type { EngineDeclaration } from '@pwfabric/contracts'\n\nimport { HttpEntityConnector } from '../entity/http-connector.js'\nimport type {\n ConnectorQueryResult,\n ConnectorResult,\n EntityConnector,\n} from '../entity/connector.js'\nimport type { EntityInstanceId, EntityQuery, EntityTypeId } from '../entity/types.js'\nimport { applyEntityQuery } from '../entity/apply-query.js'\n\n// ============================================================\n// VALUE TRANSFORMS — a CLOSED registry\n// ============================================================\n\n/**\n * The only value transforms a declaration may name.\n *\n * CLOSED ON PURPOSE. A declaration carries a NAME, never a function — the\n * moment it could carry a function it would be a class again with extra steps,\n * and an AI-written declaration would regain the power to get something wrong.\n * An unknown name throws at construction (see `resolveTransform`) rather than\n * passing values through unchanged, because a silently skipped transform looks\n * exactly like a field the source never sent.\n *\n * These two are named for what they DO, not for who needs them: the runtime\n * must not learn a vendor's name.\n */\nexport const VALUE_TRANSFORMS: Readonly<Record<string, (value: unknown) => unknown>> = {\n /**\n * A field whose value is a JSON STRING describing a hosted file becomes the\n * absolute URL. Image/Thumbnail-typed columns serialise this way and a\n * consumer binding it into an `image` block needs a real URL.\n */\n 'hosted-file-url': (value) => {\n if (typeof value !== 'string' || !value.startsWith('{')) return value\n try {\n const parsed = JSON.parse(value) as { serverUrl?: string; serverRelativeUrl?: string }\n return parsed.serverUrl && parsed.serverRelativeUrl\n ? `${parsed.serverUrl}${parsed.serverRelativeUrl}`\n : value\n } catch {\n return value\n }\n },\n /**\n * A numeric string becomes a number. Form data yields strings only, while\n * lookup-style columns are typed numeric by the API.\n */\n 'numeric-string': (value) =>\n typeof value === 'string' && value !== '' && !Number.isNaN(Number(value)) ? Number(value) : value,\n}\n\nfunction resolveTransform(use: string): (value: unknown) => unknown {\n const fn = VALUE_TRANSFORMS[use]\n if (!fn) {\n throw new Error(\n `engine declaration names an unknown transform \"${use}\" — known: ${Object.keys(VALUE_TRANSFORMS).join(', ')}`\n )\n }\n return fn\n}\n\n// ============================================================\n// TEMPLATE\n// ============================================================\n\n/** `{name}` substitution. An unbound placeholder is left visible, not blanked. */\nfunction fill(template: string, bindings: Readonly<Record<string, string>>): string {\n return template.replace(/\\{(\\w+)\\}/g, (whole, key: string) => bindings[key] ?? whole)\n}\n\nfunction readPath(source: unknown, path: string): unknown {\n return path.split('.').reduce<unknown>((acc, key) => {\n if (acc && typeof acc === 'object') return (acc as Record<string, unknown>)[key]\n return undefined\n }, source)\n}\n\n// ============================================================\n// THE ORIGIN — https, except an explicit http:// on loopback\n// ============================================================\n\n/** Hosts a declaration may reach over plain `http://`: the machine itself. */\nfunction isLoopbackHost(hostname: string): boolean {\n const h = hostname.toLowerCase()\n return h === 'localhost' || h === '127.0.0.1' || h === '[::1]' || h.endsWith('.localhost')\n}\n\n/**\n * The origin a filled declared host resolves to.\n *\n * - no scheme or `https://` → `https://<host>` (unchanged since the first release);\n * - `http://` on a loopback host (`localhost`, `127.0.0.1`, `[::1]`,\n * `*.localhost`) → kept as `http://<host>`, so a development server is reachable;\n * - `http://` anywhere else → `https://<host>`, as every release before\n * this one did. It is never downgraded (the visitor's token must not cross\n * the network in clear text), and published apps whose connection holds an\n * `http://` address keep working the way they always have.\n */\nfunction declaredOrigin(filledHost: string): { readonly origin: string } {\n const plain = /^http:\\/\\//i.exec(filledHost)\n if (!plain) return { origin: `https://${filledHost.replace(/^https?:\\/\\//i, '')}` }\n const rest = filledHost.slice(plain[0].length)\n let hostname = ''\n try {\n hostname = new URL(`http://${rest}`).hostname\n } catch {\n hostname = ''\n }\n if (hostname && isLoopbackHost(hostname)) return { origin: `http://${rest}` }\n return { origin: `https://${rest}` }\n}\n\n// ============================================================\n// THE ENGINE\n// ============================================================\n\nexport interface DeclaredConnectorOptions {\n /** Connection name — the engine reports it, and the registry keys on it. */\n readonly name: string\n readonly declaration: EngineDeclaration\n /** Per-connection config the declaration's templates draw on. */\n readonly config: Readonly<Record<string, unknown>>\n readonly getAccessToken: () => Promise<string | null>\n}\n\nexport function createDeclaredConnector(options: DeclaredConnectorOptions): EntityConnector {\n const { name, declaration: d, config, getAccessToken } = options\n\n // Fail at construction, not at the first read: a declaration naming a\n // transform nobody implements is broken whether or not anyone calls it.\n const transforms = (d.transforms ?? []).map((t) => ({ field: t.field, fn: resolveTransform(t.use) }))\n\n const stringConfig: Record<string, string> = {}\n for (const [k, v] of Object.entries(config)) {\n if (typeof v === 'string') stringConfig[k] = v\n }\n\n /**\n * THE HOST IS A TEMPLATE — the one substitution a user-owned API cannot do\n * without, and the one this function used to compute before the config it\n * would have drawn on even existed.\n *\n * `graph.microsoft.com/v1.0` is a constant because Graph is one address for\n * everyone. A connection to the user's OWN API has no constant to state: the\n * address IS the thing the user supplies. `host: \"{baseUrl}\"` is how they\n * supply it, and the scheme is stripped after filling so a pasted\n * `https://api.example.com` and a bare `api.example.com` mean the same thing.\n *\n * An explicit `http://` survives ONLY for a loopback host — a development\n * server on `http://127.0.0.1:8787` is otherwise unreachable. Anywhere else\n * `http://` is upgraded to https, as before: see {@link declaredOrigin}.\n */\n const declared = declaredOrigin(fill(d.host, stringConfig))\n const origin = declared.origin\n\n /**\n * THE READ PATHS ARE TEMPLATES TOO — and that is what makes a generic REST\n * connection declarable rather than compiled.\n *\n * If `fill` reached only `resolve.path` and `path`, the RESPONSE SHAPE would\n * have to be hardcoded into the declaration: an API answering `{data:[…]}`\n * and one answering `{results:[…]}` would need two different atoms. Two\n * atoms that differ only in a string is code wearing a manifest, and the\n * declared-engine design's whole claim is that \"a new API is a connection\n * record rather than code\".\n *\n * `fill` on a string carrying no `{name}` returns that string, so a\n * declaration without templates behaves as a literal one. `graph-lists`\n * is the proof and has a test that says so.\n */\n const readItems = fill(d.read.items, stringConfig)\n const readId = fill(d.read.id, stringConfig)\n const readFlatten = d.read.flatten === undefined ? undefined : fill(d.read.flatten, stringConfig)\n\n const authHeaders = async (): Promise<Record<string, string>> => {\n if (d.auth.type !== 'bearer') return {}\n const token = await getAccessToken()\n return token ? { Authorization: `Bearer ${token}` } : {}\n }\n\n /** Pre-flight, memoised per template result — the site id and its kin. */\n const bindings = new Map<string, Promise<Record<string, string>>>()\n function resolveBindings(extra: Readonly<Record<string, string>>): Promise<Record<string, string>> {\n const base = { ...stringConfig, ...extra }\n if (!d.resolve) return Promise.resolve(base)\n const url = origin + fill(d.resolve.path, base)\n let pending = bindings.get(url)\n if (!pending) {\n pending = authHeaders()\n .then((headers) => fetch(url, { headers }))\n .then((res) => res.json())\n .then((body: unknown) => {\n const value = readPath(body, d.resolve!.field)\n if (typeof value !== 'string') {\n throw new Error(`engine pre-flight ${url} carried no \"${d.resolve!.field}\"`)\n }\n return { ...base, [d.resolve!.as]: value }\n })\n .catch((err: unknown) => {\n bindings.delete(url)\n throw err\n })\n bindings.set(url, pending)\n }\n return pending\n }\n\n function applyTransforms(row: Record<string, unknown>): Record<string, unknown> {\n if (transforms.length === 0) return row\n const out = { ...row }\n for (const { field, fn } of transforms) {\n if (field in out) out[field] = fn(out[field])\n }\n return out\n }\n\n function mapRow(raw: unknown): Record<string, unknown> {\n const item = (raw ?? {}) as Record<string, unknown>\n const row: Record<string, unknown> = { id: readPath(item, readId) }\n for (const key of d.read.lift ?? []) {\n const v = readPath(item, key)\n if (v !== undefined) row[key] = v\n }\n /**\n * `flatten: \"*\"` means THE ITEM ITSELF IS THE BAG.\n *\n * `mapRow` starts from `{ id }` and only grows when `flatten` names a\n * nested bag. Graph's bag is `fields`; flat REST has no bag because the\n * item is already the row — so without this a plain REST read produced\n * rows carrying nothing but `id`, and the panels rendered empty for a\n * reason no warning named.\n *\n * `\"*\"` is spelled out rather than inferred from an absent `flatten`:\n * inferring it would silently change what every existing declaration\n * means, and a fallback nobody declared is how this family of bugs got\n * here. It is also not a valid `readPath`, so it can never collide with a\n * real path. The schema is untouched — it already accepts any non-empty\n * string, so contracts stay frozen.\n */\n const bag = readFlatten === '*' ? item : readFlatten ? readPath(item, readFlatten) : undefined\n if (bag && typeof bag === 'object') Object.assign(row, bag as Record<string, unknown>)\n return applyTransforms(row)\n }\n\n /** One base per resolved binding set — the site is already inside baseUrl. */\n const bases = new Map<string, Promise<HttpEntityConnector>>()\n function baseFor(extra: Readonly<Record<string, string>>): Promise<HttpEntityConnector> {\n const key = JSON.stringify(extra)\n let pending = bases.get(key)\n if (!pending) {\n pending = resolveBindings(extra)\n .then(\n (bound) =>\n new HttpEntityConnector(name, {\n baseUrl: origin,\n // Synchronous: every binding is already resolved into the string.\n entityPathMapper: (entityType) => fill(d.path, { ...bound, entityType: String(entityType) }),\n ...(d.params ? { defaultQueryParams: d.params } : {}),\n // `none` means no credential at all: the visitor's token must never reach\n // a host that did not ask for it, so no auth config is passed.\n ...(d.auth.type === 'none' ? {} : { auth: { type: d.auth.type, token: getAccessToken } }),\n responseMapper: (raw) => {\n const items = readPath(raw, readItems)\n return { items: Array.isArray(items) ? items.map(mapRow) : [] }\n },\n })\n )\n .catch((err: unknown) => {\n bases.delete(key)\n throw err\n })\n bases.set(key, pending)\n }\n return pending\n }\n\n /** A query may name its own binding overrides (e.g. a different site). */\n function overridesFrom(query: EntityQuery | undefined): Record<string, string> {\n const out: Record<string, string> = {}\n for (const [k, v] of Object.entries((query ?? {}) as Record<string, unknown>)) {\n if (typeof v === 'string' && k in stringConfig) out[k] = v\n }\n return out\n }\n\n return {\n name,\n type: 'custom' as const,\n\n async query(entityType: EntityTypeId, query: EntityQuery): Promise<ConnectorQueryResult> {\n try {\n const base = await baseFor(overridesFrom(query))\n // A declared engine talks to a FOREIGN API. The base connector would\n // serialise the surface's query as the platform's own wire params —\n // `filter=<json>&sort=&limit=&offset=` — which mean nothing there:\n // Microsoft Graph answers 400 to any list read carrying `filter=`\n // (sort-only reads happen to pass, so half the pages would be live and\n // half fallback). Fetch with the declaration's own params only and apply the query\n // here, where every declared engine speaks the same query language.\n const res = await base.query(entityType, {})\n if (!res.success) return res\n return { success: true, result: applyEntityQuery(res.result.items, query) }\n } catch (err) {\n return { success: false, error: err instanceof Error ? err.message : 'engine query failed' }\n }\n },\n\n async read(entityType: EntityTypeId, instanceId: EntityInstanceId): Promise<ConnectorResult> {\n const result = await this.query(entityType, {})\n if (!result.success) return { success: false, error: result.error }\n const match = result.result.items.find((i) => (i as { id?: unknown }).id === instanceId)\n return match ? { success: true, data: match } : { success: false, error: 'Not found' }\n },\n\n async create(entityType: EntityTypeId, data: Record<string, unknown>): Promise<ConnectorResult> {\n try {\n const base = await baseFor({})\n // The wrap belongs to the LAYER: the base posts whatever it is handed,\n // and the declaration says what shape to hand it.\n const body = d.write?.bodyWrap ? { [d.write.bodyWrap]: applyTransforms(data) } : applyTransforms(data)\n const result = await base.create(entityType, body)\n return result.success ? { success: true, data: mapRow(result.data) } : result\n } catch (err) {\n return { success: false, error: err instanceof Error ? err.message : 'engine create failed' }\n }\n },\n\n async update(): Promise<ConnectorResult> {\n return { success: false, error: 'declared engines do not support update yet' }\n },\n\n async delete(entityType: EntityTypeId, instanceId: EntityInstanceId): Promise<ConnectorResult> {\n try {\n const base = await baseFor({})\n return await base.delete(entityType, instanceId)\n } catch (err) {\n return { success: false, error: err instanceof Error ? err.message : 'engine delete failed' }\n }\n },\n } as EntityConnector\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine-registry.js","sourceRoot":"","sources":["../../src/connectors/engine-registry.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"engine-registry.js","sourceRoot":"","sources":["../../src/connectors/engine-registry.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Connector Engine Registry\n *\n * Connection name → constructed engine instance. Owns the load-and-\n * construct lifecycle: `configure()` declares the world's connections\n * (which engine bundle serves each name + per-connection config), and\n * `resolve()` lazily loads the bundle via `ConnectorModuleLoader` and\n * constructs the engine ONCE with `(getAccessToken, config)` — the exact\n * signature the existing engines (GraphListConnector, the Graph motor)\n * already take.\n *\n * Auth seam: the access-token hook handed to each engine closes over an\n * injectable resolver. By default the resolver answers\n * `null` — engines behave as unauthenticated and degrade honestly. A host\n * plugs the AuthRegistry in via `setAccessTokenResolver` (or the factory\n * option) without another core change.\n *\n * Error isolation: `resolve()` NEVER throws. A failed load or construction\n * marks the entry `failed` with the reason (`getStatus`) and resolves\n * `null`; consumers surface the reason (e.g. into the `__errors` context)\n * instead of crashing the surface.\n *\n * @module @pwfabric/runtime/connectors/engine-registry\n */\n\nimport { ConnectorModuleLoader, type ConnectorModuleLoaderImpl } from './module-loader.js'\nimport type {\n ConnectorAccessTokenResolver,\n ConnectorConnectionBinding,\n ConnectorEngine,\n ConnectorEngineRegistry,\n ConnectorEngineStatus,\n} from './types.js'\n\n// ============================================================\n// HELPERS\n// ============================================================\n\n/** Duck-check the minimal read contract every engine must satisfy. */\nfunction isConnectorEngine(value: unknown): value is ConnectorEngine {\n return (\n typeof value === 'object' &&\n value !== null &&\n typeof (value as { query?: unknown }).query === 'function'\n )\n}\n\n/** Default token resolver — unauthenticated until a host installs one. */\nconst NULL_TOKEN_RESOLVER: ConnectorAccessTokenResolver = async () => null\n\ninterface RegistryEntry {\n readonly binding: ConnectorConnectionBinding | null\n engine: ConnectorEngine | null\n pending: Promise<ConnectorEngine | null> | null\n failure: string | null\n}\n\n// ============================================================\n// REGISTRY IMPLEMENTATION\n// ============================================================\n\nexport class DefaultConnectorEngineRegistry implements ConnectorEngineRegistry {\n private readonly entries = new Map<string, RegistryEntry>()\n private readonly loader: ConnectorModuleLoaderImpl\n private tokenResolver: ConnectorAccessTokenResolver\n\n constructor(options?: {\n readonly loader?: ConnectorModuleLoaderImpl\n readonly getAccessToken?: ConnectorAccessTokenResolver\n }) {\n this.loader = options?.loader ?? ConnectorModuleLoader\n this.tokenResolver = options?.getAccessToken ?? NULL_TOKEN_RESOLVER\n }\n\n configure(bindings: readonly ConnectorConnectionBinding[]): void {\n // Replace semantics: drop entries whose binding disappeared, keep\n // constructed engines whose binding is unchanged (identity by\n // connection + descriptor + config reference equality is too strict —\n // a reconfigure resets the entry so config changes take effect).\n this.entries.clear()\n for (const binding of bindings) {\n this.entries.set(binding.connection, {\n binding,\n engine: null,\n pending: null,\n failure: null,\n })\n }\n }\n\n register(connection: string, engine: ConnectorEngine): void {\n this.entries.set(connection, { binding: null, engine, pending: null, failure: null })\n }\n\n async resolve(connection: string): Promise<ConnectorEngine | null> {\n const entry = this.entries.get(connection)\n if (!entry) return null\n if (entry.engine) return entry.engine\n if (entry.failure !== null) return null // sticky until reconfigure/clear\n if (entry.pending) return entry.pending\n if (!entry.binding) return null\n\n const binding = entry.binding\n const construct = async (): Promise<ConnectorEngine | null> => {\n try {\n const factory = await this.loader.load(binding.descriptor)\n // The hook closes over `this.tokenResolver` so a later\n // setAccessTokenResolver takes effect on the NEXT token\n // request without reconstructing engines.\n const getAccessToken = async (): Promise<string | null> =>\n this.tokenResolver(binding)\n const engine: unknown = factory(getAccessToken, binding.config ?? {})\n if (!isConnectorEngine(engine)) {\n throw new Error(\n `Engine for connection '${binding.connection}' does not expose query() — ` +\n `not a usable connector engine`\n )\n }\n entry.engine = engine\n return engine\n } catch (err) {\n entry.failure = err instanceof Error ? err.message : String(err)\n return null\n } finally {\n entry.pending = null\n }\n }\n\n entry.pending = construct()\n return entry.pending\n }\n\n getStatus(connection: string): ConnectorEngineStatus {\n const entry = this.entries.get(connection)\n if (!entry) return { state: 'unregistered' }\n if (entry.engine) return { state: 'ready' }\n if (entry.failure !== null) return { state: 'failed', reason: entry.failure }\n return { state: 'pending' }\n }\n\n setAccessTokenResolver(resolver: ConnectorAccessTokenResolver): void {\n this.tokenResolver = resolver\n }\n\n list(): readonly string[] {\n return Array.from(this.entries.keys())\n }\n\n clear(): void {\n this.entries.clear()\n }\n}\n\n// ============================================================\n// FACTORY\n// ============================================================\n\n/**\n * Create a connector engine registry. One per world/host render context —\n * deliberately NOT a singleton (per-connection config is world state).\n */\nexport function createConnectorEngineRegistry(options?: {\n readonly loader?: ConnectorModuleLoaderImpl\n readonly getAccessToken?: ConnectorAccessTokenResolver\n}): ConnectorEngineRegistry {\n return new DefaultConnectorEngineRegistry(options)\n}\n"]}
|
|
@@ -12,4 +12,3 @@ export { ConnectorModuleLoader, ConnectorModuleLoaderImpl, createConnectorModule
|
|
|
12
12
|
export { DefaultConnectorEngineRegistry, createConnectorEngineRegistry, } from './engine-registry.js';
|
|
13
13
|
export { createDeclaredConnector, VALUE_TRANSFORMS } from './declared-connector.js';
|
|
14
14
|
export type { DeclaredConnectorOptions } from './declared-connector.js';
|
|
15
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/connectors/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAiBH,OAAO,EACL,qBAAqB,EACrB,yBAAyB,EACzB,2BAA2B,GAE5B,MAAM,oBAAoB,CAAA;AAE3B,OAAO,EACL,8BAA8B,EAC9B,6BAA6B,GAC9B,MAAM,sBAAsB,CAAA;AAE7B,2EAA2E;AAC3E,OAAO,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/connectors/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAiBH,OAAO,EACL,qBAAqB,EACrB,yBAAyB,EACzB,2BAA2B,GAE5B,MAAM,oBAAoB,CAAA;AAE3B,OAAO,EACL,8BAA8B,EAC9B,6BAA6B,GAC9B,MAAM,sBAAsB,CAAA;AAE7B,2EAA2E;AAC3E,OAAO,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA","sourcesContent":["/**\n * Connector Engine Module\n *\n * Platform-side loading + registry for CONNECTOR/PROVIDER atom engines,\n * so platform-rendered surfaces can execute the same engines the runner\n * app runs from its bundled pack source.\n *\n * @module @pwfabric/runtime/connectors\n */\n\nexport type {\n ConnectorEngineKind,\n ConnectorEngineDescriptor,\n ConnectorAccessTokenHook,\n ConnectorEngineFactory,\n ConnectorEngineModule,\n ConnectorEngine,\n ConnectorConnectionBinding,\n ConnectorAccessTokenResolver,\n ConnectorEngineStatus,\n ConnectorEngineRegistry,\n SurfaceConnection,\n SurfaceConnectionsValue,\n} from './types.js'\n\nexport {\n ConnectorModuleLoader,\n ConnectorModuleLoaderImpl,\n createConnectorModuleLoader,\n type ConnectorModuleEvaluator,\n} from './module-loader.js'\n\nexport {\n DefaultConnectorEngineRegistry,\n createConnectorEngineRegistry,\n} from './engine-registry.js'\n\n// an engine built from its declaration; the runtime learns no vendor name.\nexport { createDeclaredConnector, VALUE_TRANSFORMS } from './declared-connector.js'\nexport type { DeclaredConnectorOptions } from './declared-connector.js'\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module-loader.js","sourceRoot":"","sources":["../../src/connectors/module-loader.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"module-loader.js","sourceRoot":"","sources":["../../src/connectors/module-loader.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Connector Module Loader\n *\n * Mirror of `BlockModuleLoader` (render/dynamic-block-loader.ts) for\n * kind='connector' / kind='provider' atom bundles: fetches the ESM bundle\n * from `bundleUrl`, SHA-256 verifies the bytes against\n * `descriptor.integrity` BEFORE evaluation (same security boundary as block\n * bundles — a CDN-side compromise must not execute under our origin), then\n * imports it via a Blob URL and resolves the engine FACTORY under the\n * stable export convention (`createConnector`, `default` fallback).\n *\n * Error isolation: a failed load never throws out of `tryLoad` — the\n * failure reason is recorded per atom id (`getFailure`) so the registry can\n * mark its entry failed and consumers degrade honestly. `load` (the raw\n * form) rejects for callers that want the exception.\n *\n * @module @pwfabric/runtime/connectors/module-loader\n */\n\nimport { verifyIntegrity } from '../render/dynamic-block-loader.js'\nimport type {\n ConnectorEngineDescriptor,\n ConnectorEngineFactory,\n ConnectorEngineModule,\n} from './types.js'\n\n// ============================================================\n// TYPES\n// ============================================================\n\n/**\n * Evaluates verified bundle bytes into a module namespace. Injectable so\n * tests (and non-browser hosts) can substitute the Blob-URL `import()`\n * step, which only exists in browsers.\n */\nexport type ConnectorModuleEvaluator = (\n bytes: ArrayBuffer,\n descriptor: ConnectorEngineDescriptor\n) => Promise<ConnectorEngineModule>\n\ninterface CachedEngineModule {\n readonly factory: ConnectorEngineFactory\n readonly loadedAt: number\n}\n\nconst LOAD_TIMEOUT_MS = 10_000\n\n// ============================================================\n// DEFAULT EVALUATOR (browser Blob-URL import)\n// ============================================================\n\nasync function blobImportEvaluator(\n bytes: ArrayBuffer,\n _descriptor: ConnectorEngineDescriptor\n): Promise<ConnectorEngineModule> {\n const blob = new Blob([bytes], { type: 'text/javascript' })\n const blobUrl = URL.createObjectURL(blob)\n try {\n return (await import(/* webpackIgnore: true */ blobUrl)) as ConnectorEngineModule\n } finally {\n URL.revokeObjectURL(blobUrl)\n }\n}\n\n// ============================================================\n// MODULE LOADER\n// ============================================================\n\n/**\n * Loader for connector-engine ESM bundles.\n *\n * - Caches loaded factories by atom id\n * - Deduplicates concurrent requests for the same atom\n * - Records the last failure reason per atom id (does NOT poison the cache\n * — a later retry is allowed and clears the failure on success)\n */\nexport class ConnectorModuleLoaderImpl {\n private readonly cache = new Map<string, CachedEngineModule>()\n private readonly pending = new Map<string, Promise<ConnectorEngineFactory>>()\n private readonly failures = new Map<string, string>()\n private readonly evaluate: ConnectorModuleEvaluator\n\n constructor(options?: { readonly evaluate?: ConnectorModuleEvaluator }) {\n this.evaluate = options?.evaluate ?? blobImportEvaluator\n }\n\n /**\n * Load a connector engine bundle and return its factory. Rejects on\n * failure (fetch / integrity / export shape / timeout) after recording\n * the reason — see `tryLoad` for the non-throwing form.\n */\n async load(descriptor: ConnectorEngineDescriptor): Promise<ConnectorEngineFactory> {\n const cached = this.cache.get(descriptor.id)\n if (cached) return cached.factory\n\n const inflight = this.pending.get(descriptor.id)\n if (inflight) return inflight\n\n const promise = this.doLoad(descriptor)\n this.pending.set(descriptor.id, promise)\n\n try {\n const factory = await promise\n this.cache.set(descriptor.id, { factory, loadedAt: Date.now() })\n this.failures.delete(descriptor.id)\n return factory\n } catch (err) {\n this.failures.set(descriptor.id, err instanceof Error ? err.message : String(err))\n throw err\n } finally {\n this.pending.delete(descriptor.id)\n }\n }\n\n /**\n * Non-throwing load: `null` on failure, with the reason retrievable via\n * `getFailure(descriptor.id)`.\n */\n async tryLoad(descriptor: ConnectorEngineDescriptor): Promise<ConnectorEngineFactory | null> {\n try {\n return await this.load(descriptor)\n } catch {\n return null\n }\n }\n\n /** Whether the factory for an atom id is already cached. */\n isLoaded(atomId: string): boolean {\n return this.cache.has(atomId)\n }\n\n /** Last recorded failure reason for an atom id, or null. */\n getFailure(atomId: string): string | null {\n return this.failures.get(atomId) ?? null\n }\n\n /** Invalidate cache (and failure record) for one atom id or all. */\n invalidate(atomId?: string): void {\n if (atomId) {\n this.cache.delete(atomId)\n this.failures.delete(atomId)\n } else {\n this.cache.clear()\n this.failures.clear()\n }\n }\n\n private async doLoad(descriptor: ConnectorEngineDescriptor): Promise<ConnectorEngineFactory> {\n const fetchAndEvaluate = async (): Promise<ConnectorEngineModule> => {\n const res = await fetch(descriptor.bundleUrl, { credentials: 'omit' })\n if (!res.ok) {\n throw new Error(`Bundle fetch failed for ${descriptor.id}: ${res.status}`)\n }\n const bytes = await res.arrayBuffer()\n // Same law as block bundles: integrity is verified BEFORE evaluation.\n await verifyIntegrity(bytes, descriptor.integrity, descriptor.id)\n return this.evaluate(bytes, descriptor)\n }\n\n const timeoutPromise = new Promise<never>((_, reject) =>\n setTimeout(\n () => reject(new Error(`Module load timed out after ${LOAD_TIMEOUT_MS / 1000}s`)),\n LOAD_TIMEOUT_MS\n )\n )\n\n const mod = await Promise.race([fetchAndEvaluate(), timeoutPromise])\n\n const factory = mod.createConnector ?? mod.default\n if (typeof factory !== 'function') {\n throw new Error(\n `Module at ${descriptor.bundleUrl} does not export a connector factory ` +\n `(expected 'createConnector' or a default function export)`\n )\n }\n return factory\n }\n}\n\n/**\n * Create a loader with injectable evaluation (tests / non-browser hosts).\n */\nexport function createConnectorModuleLoader(options?: {\n readonly evaluate?: ConnectorModuleEvaluator\n}): ConnectorModuleLoaderImpl {\n return new ConnectorModuleLoaderImpl(options)\n}\n\n/**\n * Singleton instance — mirrors `BlockModuleLoader`.\n */\nexport const ConnectorModuleLoader = new ConnectorModuleLoaderImpl()\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/connectors/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG"}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/connectors/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG","sourcesContent":["/**\n * Connector Engine Types\n *\n * Platform-side vocabulary for CONNECTOR/PROVIDER atom engines. Two\n * consumption paths, ONE engine source:\n *\n * 1. dataSource path — a surface dataSource `{kind:'entity', entityType,\n * connector:'graph-lists'}` routes through a `ConnectorEngineRegistry`:\n * when a loaded engine is registered under that connection name the read\n * goes through it (constructed with the world connection's config);\n * absent engine/config keeps today's behavior (default facade or honest\n * empty + `__errors` context), never a crash.\n * 2. engine-bridge path — pack blocks get their connections/config from the\n * runtime-provided connections context (`SurfaceConnectionsContext`).\n * On the platform the value comes from the project's connections doc +\n * world connector rows; in the runner the existing `connections.json`\n * path is unchanged. Single dialect — the source differs, the shape\n * doesn't (mirrors the runner's `PwappConnection`).\n *\n * @module @pwfabric/runtime/connectors/types\n */\n\nimport type { EntityAggregate, EntityTypeId, EntityQuery } from '../entity/types.js'\nimport type { ConnectorAggregateResult, ConnectorQueryResult } from '../entity/connector.js'\n\n// ============================================================\n// ENGINE DESCRIPTOR (what the loader consumes)\n// ============================================================\n\n/**\n * Atom kinds that ship a connector engine bundle. `connector` = dynamic\n * data engine (e.g. graph-lists); `provider` = fixed-enum provider motor\n * facet (e.g. the single Graph motor behind graph-mail/graph-users/…).\n */\nexport type ConnectorEngineKind = 'connector' | 'provider'\n\n/**\n * Descriptor for a loadable connector-engine atom bundle. Mirrors\n * `DynamicBlockDescriptor` with the AtomRef `bundleUrl`\n * vocabulary: the publish pipeline uploads the ESM bundle and stamps its\n * SHA-256 — integrity is verified BEFORE evaluation (security boundary,\n * same law as block bundles).\n */\nexport interface ConnectorEngineDescriptor {\n /** Atom id of the engine (e.g. 'graph-lists', 'microsoft-graph-motor'). */\n readonly id: string\n readonly kind: ConnectorEngineKind\n /** CDN URL of the ESM bundle produced by the publish pipeline. */\n readonly bundleUrl: string\n /** SHA-256 of the bundle bytes (bare hex or SRI `sha256-<base64>`). */\n readonly integrity: string\n readonly version?: string\n}\n\n// ============================================================\n// ENGINE MODULE CONVENTION (what a bundle exports)\n// ============================================================\n\n/**\n * Per-call access-token supplier handed to an engine at construction —\n * exactly the signature the existing engines already take\n * (GraphListConnector / createGraphConnector). Re-invoked on every request\n * so token rotation is transparent. Resolving to `null` means\n * unauthenticated — engines degrade honestly (anon/empty), they do not\n * throw at construction time.\n */\nexport type ConnectorAccessTokenHook = () => Promise<string | null>\n\n/**\n * Factory a connector-engine bundle must export. The wrapper convention\n * (mirror of the block bundle's `Component` + `definition`) is a stable\n * `createConnector` named export; `default` is accepted as fallback.\n */\nexport type ConnectorEngineFactory = (\n getAccessToken: ConnectorAccessTokenHook,\n config: Readonly<Record<string, unknown>>\n) => unknown\n\n/** Module shape of an evaluated connector-engine bundle. */\nexport interface ConnectorEngineModule {\n readonly createConnector?: ConnectorEngineFactory\n readonly default?: ConnectorEngineFactory\n}\n\n/**\n * Minimal read contract every constructed engine must satisfy — the surface\n * dataSource path only lists records. Engines that additionally implement\n * the full `EntityConnector` interface can be registered into an\n * `EntityFacade` (`facade.connectors.register(engine)`) for the write path.\n */\nexport interface ConnectorEngine {\n readonly name?: string\n query(entityType: EntityTypeId, query: EntityQuery): Promise<ConnectorQueryResult>\n /** Optional: an engine that can count server-side; absent = list and reduce. */\n aggregate?(entityType: EntityTypeId, aggregate: EntityAggregate): Promise<ConnectorAggregateResult>\n}\n\n// ============================================================\n// CONNECTION BINDING (registry configuration unit)\n// ============================================================\n\n/**\n * One configured connection: a connector engine bound to this world with\n * per-connection config. `connection` is the connection NAME the surface\n * dialect references (`dataSources[].connector`); `descriptor` says which\n * engine bundle serves it; `config` is the world connection's config\n * (never credential values — auth law).\n */\nexport interface ConnectorConnectionBinding {\n readonly connection: string\n readonly descriptor: ConnectorEngineDescriptor\n readonly config?: Readonly<Record<string, unknown>>\n /** Auth binding BY NAME — resolved by the token resolver. */\n readonly authProviderRef?: string\n}\n\n/**\n * Injectable token resolver — the registry derives each engine's\n * `ConnectorAccessTokenHook` from this. By default the\n * resolver answers `null` (engines behave as unauthenticated); a host plugs\n * the AuthRegistry in through `setAccessTokenResolver` without another\n * core change.\n */\nexport type ConnectorAccessTokenResolver = (\n binding: ConnectorConnectionBinding\n) => Promise<string | null>\n\n// ============================================================\n// REGISTRY (name → engine instance)\n// ============================================================\n\n/** Lifecycle state of a connection's engine inside the registry. */\nexport type ConnectorEngineStatus =\n | { readonly state: 'unregistered' }\n | { readonly state: 'pending' }\n | { readonly state: 'ready' }\n | { readonly state: 'failed'; readonly reason: string }\n\n/**\n * Registry of connection name → constructed engine instance. Distinct from\n * the entity system's `ConnectorRegistry`, which manages\n * `EntityConnector` instances INSIDE one facade — this registry owns\n * loading + constructing engines from atom bundles, world-wide.\n */\nexport interface ConnectorEngineRegistry {\n /** Declare the world's connections (replaces the current set). */\n configure(bindings: readonly ConnectorConnectionBinding[]): void\n\n /** Register an already-constructed engine directly (host/in-process). */\n register(connection: string, engine: ConnectorEngine): void\n\n /**\n * Resolve the engine for a connection name — loads the bundle and\n * constructs the engine on first use, then answers from cache. NEVER\n * throws: a failed load/construction marks the entry `failed` (with\n * reason) and resolves `null` so consumers degrade honestly.\n */\n resolve(connection: string): Promise<ConnectorEngine | null>\n\n /** Current lifecycle state of a connection (sync, for honest UI/errors). */\n getStatus(connection: string): ConnectorEngineStatus\n\n /** Swap the token resolver (the auth-registry seam). Existing constructed\n * engines keep their hook — it closes over the resolver reference, so a\n * swap takes effect on the next token request, not the next construction. */\n setAccessTokenResolver(resolver: ConnectorAccessTokenResolver): void\n\n /** Configured/registered connection names. */\n list(): readonly string[]\n\n /** Drop all bindings, instances, and failure states. */\n clear(): void\n}\n\n// ============================================================\n// SURFACE CONNECTIONS CONTEXT VALUE (single dialect)\n// ============================================================\n\n/**\n * One connection as blocks/the renderer see it. Shape-compatible with the\n * runner's `PwappConnection` (`connections.json` entry) — single dialect,\n * different source (platform: project connections doc + world connector\n * rows; runner: connections.json).\n */\nexport interface SurfaceConnection {\n readonly name: string\n /** Connector engine (atom) id serving this connection. */\n readonly connector?: string\n readonly config?: Readonly<Record<string, unknown>>\n /** World row status when known (e.g. 'active' | 'pending'). */\n readonly status?: string\n readonly authProviderRef?: string\n}\n\n/**\n * Value carried by `SurfaceConnectionsContext` and the renderer's\n * `connections` prop. `engines` may be null when the host provides the\n * connections doc for bridge blocks but no loaded engines (yet).\n */\nexport interface SurfaceConnectionsValue {\n readonly connections: readonly SurfaceConnection[]\n readonly engines: ConnectorEngineRegistry | null\n /**\n * the same live token the engine registry is constructed\n * with, reachable by the data path.\n *\n * The registry already closes over a resolver, but it keeps it private, so a\n * `rest` data source sitting beside an engine-backed one had no route to the\n * identity the app was already signed in with. Exposed here, both paths draw\n * on one bridge instead of the REST half having none.\n */\n readonly getAccessToken?: ConnectorAccessTokenResolver\n}\n"]}
|
package/dist/context.d.ts
CHANGED
package/dist/context.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAe,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAY1D;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,OAAO;QACL,EAAE,EAAE,MAAM,CAAC,UAAU,EAAE;QACvB,MAAM,EAAE,YAAY,CAAC,WAAW,IAAI,EAAE,CAAC;QACvC,SAAS,EAAE,IAAI,IAAI,EAAE;QACrB,QAAQ,EAAE,IAAI,GAAG,EAAE;KACpB,CAAA;AACH,CAAC;AAED;;GAEG;AACH,MAAM,OAAO,cAAc;IACjB,IAAI,GAAG,SAAS,CAAA;IAChB,IAAI,GAAG,IAAI,GAAG,EAAmB,CAAA;IAEzC,QAAQ,CAAC,IAAY;QACnB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,YAAY,CAAC,GAAW,EAAE,KAAc;QACtC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;QACzB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,KAAK;QACH,MAAM,GAAG,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACpC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACrC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;QAC9B,CAAC;QACD,OAAO,GAAG,CAAA;IACZ,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAe,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAY1D;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,OAAO;QACL,EAAE,EAAE,MAAM,CAAC,UAAU,EAAE;QACvB,MAAM,EAAE,YAAY,CAAC,WAAW,IAAI,EAAE,CAAC;QACvC,SAAS,EAAE,IAAI,IAAI,EAAE;QACrB,QAAQ,EAAE,IAAI,GAAG,EAAE;KACpB,CAAA;AACH,CAAC;AAED;;GAEG;AACH,MAAM,OAAO,cAAc;IACjB,IAAI,GAAG,SAAS,CAAA;IAChB,IAAI,GAAG,IAAI,GAAG,EAAmB,CAAA;IAEzC,QAAQ,CAAC,IAAY;QACnB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,YAAY,CAAC,GAAW,EAAE,KAAc;QACtC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;QACzB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,KAAK;QACH,MAAM,GAAG,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACpC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACrC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;QAC9B,CAAC;QACD,OAAO,GAAG,CAAA;IACZ,CAAC;CACF","sourcesContent":["/**\n * Execution context for PWFabric runtime\n */\n\nimport { type Logger, createLogger } from '@pwfabric/core'\n\n/**\n * Runtime context interface\n */\nexport interface RuntimeContext {\n readonly id: string\n readonly logger: Logger\n readonly startTime: Date\n readonly metadata: Map<string, unknown>\n}\n\n/**\n * Create a new runtime context\n */\nexport function createContext(name: string): RuntimeContext {\n return {\n id: crypto.randomUUID(),\n logger: createLogger(`runtime:${name}`),\n startTime: new Date(),\n metadata: new Map(),\n }\n}\n\n/**\n * Context builder for fluent API\n */\nexport class ContextBuilder {\n private name = 'default'\n private meta = new Map<string, unknown>()\n\n withName(name: string): this {\n this.name = name\n return this\n }\n\n withMetadata(key: string, value: unknown): this {\n this.meta.set(key, value)\n return this\n }\n\n build(): RuntimeContext {\n const ctx = createContext(this.name)\n for (const [key, value] of this.meta) {\n ctx.metadata.set(key, value)\n }\n return ctx\n }\n}\n"]}
|
|
@@ -37,4 +37,3 @@ export declare function useDataService(): DataServiceInterface;
|
|
|
37
37
|
* Useful for components that work with or without data binding.
|
|
38
38
|
*/
|
|
39
39
|
export declare function useOptionalDataService(): DataServiceInterface | null;
|
|
40
|
-
//# sourceMappingURL=DataCapabilityProvider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataCapabilityProvider.js","sourceRoot":"","sources":["../../src/data/DataCapabilityProvider.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAG1C,+DAA+D;AAC/D,UAAU;AACV,+DAA+D;AAE/D,MAAM,kBAAkB,GAAG,KAAK,CAAC,aAAa,CAA8B,IAAI,CAAC,CAAA;AAYjF;;;;;;;;GAQG;AACH,MAAM,UAAU,sBAAsB,CAAC,EACrC,MAAM,EACN,OAAO,EACP,QAAQ,GACoB;IAC5B,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QACrC,IAAI,OAAO;YAAE,OAAO,OAAO,CAAA;QAC3B,OAAO,IAAI,WAAW,CAAC,MAAM,CAAC,CAAA;IAChC,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAA;IAErB,OAAO,KAAC,kBAAkB,CAAC,QAAQ,IAAC,KAAK,EAAE,WAAW,YAAG,QAAQ,GAA+B,CAAA;AAClG,CAAC;AAED,+DAA+D;AAC/D,OAAO;AACP,+DAA+D;AAE/D;;;;GAIG;AACH,MAAM,UAAU,cAAc;IAC5B,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAA;IACpD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAA;IAChF,CAAC;IACD,OAAO,OAAO,CAAA;AAChB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,sBAAsB;IACpC,OAAO,KAAK,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAA;AAC7C,CAAC"}
|
|
1
|
+
{"version":3,"file":"DataCapabilityProvider.js","sourceRoot":"","sources":["../../src/data/DataCapabilityProvider.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAG1C,+DAA+D;AAC/D,UAAU;AACV,+DAA+D;AAE/D,MAAM,kBAAkB,GAAG,KAAK,CAAC,aAAa,CAA8B,IAAI,CAAC,CAAA;AAYjF;;;;;;;;GAQG;AACH,MAAM,UAAU,sBAAsB,CAAC,EACrC,MAAM,EACN,OAAO,EACP,QAAQ,GACoB;IAC5B,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QACrC,IAAI,OAAO;YAAE,OAAO,OAAO,CAAA;QAC3B,OAAO,IAAI,WAAW,CAAC,MAAM,CAAC,CAAA;IAChC,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAA;IAErB,OAAO,KAAC,kBAAkB,CAAC,QAAQ,IAAC,KAAK,EAAE,WAAW,YAAG,QAAQ,GAA+B,CAAA;AAClG,CAAC;AAED,+DAA+D;AAC/D,OAAO;AACP,+DAA+D;AAE/D;;;;GAIG;AACH,MAAM,UAAU,cAAc;IAC5B,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAA;IACpD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAA;IAChF,CAAC;IACD,OAAO,OAAO,CAAA;AAChB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,sBAAsB;IACpC,OAAO,KAAK,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAA;AAC7C,CAAC","sourcesContent":["/**\n * Data Capability Provider\n *\n * React context bridge between the capability registry and the render layer.\n * Instantiates a DataService with config and exposes it via useDataService() hook.\n *\n * This is the canonical pattern for capability → React integration.\n * Other capabilities (auth, routing, analytics, etc.) should follow the same structure.\n *\n * @module @pwfabric/runtime/data/DataCapabilityProvider\n */\n\nimport * as React from 'react'\nimport { DataService } from './manager.js'\nimport type { DataServiceInterface, DataServiceConfig } from './types.js'\n\n// ============================================================\n// CONTEXT\n// ============================================================\n\nconst DataServiceContext = React.createContext<DataServiceInterface | null>(null)\n\n// ============================================================\n// PROVIDER\n// ============================================================\n\nexport interface DataCapabilityProviderProps {\n readonly config?: DataServiceConfig\n readonly service?: DataServiceInterface\n readonly children: React.ReactNode\n}\n\n/**\n * Provides a DataService instance to the component tree.\n *\n * Usage:\n * - Pass `config` to let the provider create a DataService internally.\n * - Pass `service` to inject an existing DataService (useful for testing or\n * when the capability registry has already instantiated one).\n * - If both are provided, `service` takes precedence.\n */\nexport function DataCapabilityProvider({\n config,\n service,\n children,\n}: DataCapabilityProviderProps): React.ReactElement {\n const dataService = React.useMemo(() => {\n if (service) return service\n return new DataService(config)\n }, [service, config])\n\n return <DataServiceContext.Provider value={dataService}>{children}</DataServiceContext.Provider>\n}\n\n// ============================================================\n// HOOK\n// ============================================================\n\n/**\n * Access the DataService from the nearest DataCapabilityProvider.\n *\n * @throws Error if called outside of a DataCapabilityProvider.\n */\nexport function useDataService(): DataServiceInterface {\n const service = React.useContext(DataServiceContext)\n if (!service) {\n throw new Error('useDataService must be used within a DataCapabilityProvider')\n }\n return service\n}\n\n/**\n * Optionally access the DataService — returns null if no provider is present.\n * Useful for components that work with or without data binding.\n */\nexport function useOptionalDataService(): DataServiceInterface | null {\n return React.useContext(DataServiceContext)\n}\n"]}
|
package/dist/data/index.d.ts
CHANGED
|
@@ -15,4 +15,3 @@ export type { DataSourceKind, DataSourceDefinition, DataCacheConfig, DataRetryCo
|
|
|
15
15
|
export { DataService, createDataService } from './manager.js';
|
|
16
16
|
export { DataCapabilityProvider, useDataService, useOptionalDataService, } from './DataCapabilityProvider.js';
|
|
17
17
|
export type { DataCapabilityProviderProps } from './DataCapabilityProvider.js';
|
|
18
|
-
//# sourceMappingURL=index.d.ts.map
|
package/dist/data/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/data/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAqBH,yBAAyB;AACzB,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAE7D,kCAAkC;AAClC,OAAO,EACL,sBAAsB,EACtB,cAAc,EACd,sBAAsB,GACvB,MAAM,6BAA6B,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/data/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAqBH,yBAAyB;AACzB,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAE7D,kCAAkC;AAClC,OAAO,EACL,sBAAsB,EACtB,cAAc,EACd,sBAAsB,GACvB,MAAM,6BAA6B,CAAA","sourcesContent":["/**\n * Data Module\n *\n * Data source resolution, fetch integration, and data binding\n *\n * Exports:\n * - Types: DataSourceDefinition, DataFetchResult, DataBinding, LiveDataBinding, etc.\n * - Service: DataService\n * - Provider: DataCapabilityProvider, useDataService\n * - Factory functions: createDataService\n *\n * @module @pwfabric/runtime/data\n */\n\n// Types\nexport type {\n DataSourceKind,\n DataSourceDefinition,\n DataCacheConfig,\n DataRetryConfig,\n DataResolveContext,\n DataFetchOptions,\n DataFetchResult,\n DataFetchMetadata,\n DataFetchError,\n DataBinding,\n DataBindingState,\n LiveDataBinding,\n DataBindingListener,\n DataServiceConfig,\n DataServiceInterface,\n} from './types.js'\n\n// Service implementation\nexport { DataService, createDataService } from './manager.js'\n\n// React context provider and hook\nexport {\n DataCapabilityProvider,\n useDataService,\n useOptionalDataService,\n} from './DataCapabilityProvider.js'\nexport type { DataCapabilityProviderProps } from './DataCapabilityProvider.js'\n"]}
|
package/dist/data/manager.d.ts
CHANGED
package/dist/data/manager.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/data/manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AA0B3D,+DAA+D;AAC/D,eAAe;AACf,+DAA+D;AAE/D;;;;;;;;;;;;GAYG;AACH,SAAS,gBAAgB,CAAC,GAAW,EAAE,iBAAqC;IAC1E,IAAI,CAAC,iBAAiB;QAAE,OAAO,KAAK,CAAA;IACpC,IAAI,CAAC;QACH,wEAAwE;QACxE,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,GAAG,CAAC;YAAE,OAAO,IAAI,CAAA;QACtD,OAAO,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,IAAI,GAAG,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAA;IAClE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,WAAW,CAAC,QAAkB;IAC3C,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAA6D,CAAA;QAChG,MAAM,KAAK,GAAG,IAAI,EAAE,KAAK,CAAA;QACzB,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,OAAO,EAAE,CAAA;QAClD,OAAO;YACL,GAAG,CAAC,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/D,GAAG,CAAC,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC1F,CAAA;IACH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAA;IACX,CAAC;AACH,CAAC;AAED,SAAS,KAAK,CAAC,IAAa,EAAE,IAAwB;IACpD,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAA;IACtB,IAAI,IAAI,GAAY,IAAI,CAAA;IACxB,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QAClC,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7D,MAAM,IAAI,KAAK,CAAC,oBAAoB,IAAI,mBAAmB,GAAG,GAAG,CAAC,CAAA;QACpE,CAAC;QACD,IAAI,GAAI,IAAgC,CAAC,GAAG,CAAC,CAAA;IAC/C,CAAC;IACD,IAAI,IAAI,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,IAAI,GAAG,CAAC,CAAA;IACpE,OAAO,IAAI,CAAA;AACb,CAAC;AAED;;;;;GAKG;AACH,SAAS,UAAU,CAAC,IAAa,EAAE,IAAwB;IACzD,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QAAE,OAAO,SAAS,CAAA;IACvF,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAA;IACvC,MAAM,IAAI,GAA4B,EAAE,CAAA;IACxC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAA+B,CAAC,EAAE,CAAC;QACrE,IAAI,CAAC,KAAK,IAAI;YAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IAC7B,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,qFAAqF;AACrF,MAAM,UAAU;IAEH;IACA;IACA;IAHX,YACW,IAAa,EACb,MAAc,EACd,QAA6C;QAF7C,SAAI,GAAJ,IAAI,CAAS;QACb,WAAM,GAAN,MAAM,CAAQ;QACd,aAAQ,GAAR,QAAQ,CAAqC;IACrD,CAAC;CACL;AAED;;;;GAIG;AACH,MAAM,OAAO,WAAW;IACL,OAAO,GAAG,IAAI,GAAG,EAAgC,CAAA;IACjD,KAAK,GAAG,IAAI,GAAG,EAA+B,CAAA;IAC9C,QAAQ,GAAG,IAAI,GAAG,EAA2C,CAAA;IACrE,MAAM,CAAmB;IAElC,YAAY,MAA0B;QACpC,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,EAAE,CAAA;IAC5B,CAAC;IAED,cAAc,CAAI,UAAmC;QACnD,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,gBAAgB,UAAU,CAAC,EAAE,yBAAyB,CAAC,CAAA;QACzE,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE,UAAkC,CAAC,CAAA;IACrE,CAAC;IAED,iBAAiB,CAAC,QAAgB;QAChC,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IACnC,CAAC;IAED,SAAS,CAAC,QAAgB;QACxB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IACnC,CAAC;IAED,KAAK,CAAC,SAAS,CAAI,QAAgB,EAAE,OAA0B;QAC7D,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QACzC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE;oBACL,IAAI,EAAE,WAAW;oBACjB,OAAO,EAAE,gBAAgB,QAAQ,aAAa;iBAC/C;aACF,CAAA;QACH,CAAC;QAED,yEAAyE;QACzE,4DAA4D;QAC5D,MAAM,OAAO,GAAG,CAAC,OAAO,EAAE,MAAM,IAAI,MAAM,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,KAAK,CAAA;QAErE,cAAc;QACd,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,EAAE,SAAS,IAAI,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC;YAC7D,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,QAAQ,QAAQ,EAAE,CAAA;YACvD,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAI,QAAQ,CAAC,CAAA;YAC7C,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,IAAI,EAAE,MAAM;oBACZ,QAAQ,EAAE;wBACR,QAAQ,EAAE,CAAC;wBACX,SAAS,EAAE,IAAI;wBACf,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;qBACtB;iBACF,CAAA;YACH,CAAC;QACH,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QAE5B,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;YACxD,iEAAiE;YACjE,MAAM,OAAO,GAAG,OAAO,YAAY,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAA;YACtE,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAA;YAEnE,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAA;YACvC,MAAM,QAAQ,GAAsB;gBAClC,QAAQ;gBACR,SAAS,EAAE,KAAK;gBAChB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;gBACrB,GAAG,CAAC,OAAO,YAAY,UAAU;oBAC/B,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;oBACzF,CAAC,CAAC,EAAE,CAAC;aACR,CAAA;YAED,mFAAmF;YACnF,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC;gBACtC,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,QAAQ,QAAQ,EAAE,CAAA;gBACvD,MAAM,GAAG,GACP,MAAM,CAAC,KAAK,CAAC,GAAG;oBAChB,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;gBAC7E,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,CAAA;YACpC,CAAC;YAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAS,EAAE,QAAQ,EAAE,CAAA;QACrD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAA;YACvC,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;YAC9C,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAA;QAClC,CAAC;IACH,CAAC;IAED,QAAQ,CAAI,OAAuB;QACjC,MAAM,WAAW,GAAG,IAAI,sBAAsB,CAAI,OAAO,EAAE,IAAI,CAAC,CAAA;QAChE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,WAA8C,CAAC,CAAA;QAC7E,OAAO,WAAW,CAAA;IACpB,CAAC;IAED,gBAAgB,CAAC,QAAgB;QAC/B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChC,OAAO,KAAK,CAAA;QACd,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;QAC7B,mBAAmB;QACnB,MAAM,QAAQ,GAAG,QAAQ,QAAQ,EAAE,CAAA;QACnC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;QAC3B,OAAO,IAAI,CAAA;IACb,CAAC;IAED,YAAY;QACV,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAA;IACxC,CAAC;IAED,KAAK;QACH,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAA;QACpB,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;QAClB,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;YAC7C,OAAO,CAAC,OAAO,EAAE,CAAA;QACnB,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAA;IACvB,CAAC;IAED,+DAA+D;IAC/D,kBAAkB;IAClB,+DAA+D;IAEvD,KAAK,CAAC,YAAY,CACxB,MAA4B,EAC5B,OAA0B;QAE1B,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;YACpB,KAAK,QAAQ;gBACX,OAAO,MAAM,CAAC,UAAU,CAAA;YAE1B,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,MAAM,OAAO,GAAuB;oBAClC,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,EAAE;oBAC7B,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACvD,CAAA;gBACD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;oBACnB,OAAO,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;gBAChC,CAAC;gBACD,OAAO,MAAM,CAAC,UAAU,CAAA;YAC1B,CAAC;YAED,KAAK,UAAU,CAAC,CAAC,CAAC;gBAChB,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;oBACpB,MAAM,IAAI,KAAK,CAAC,yBAAyB,MAAM,CAAC,EAAE,2BAA2B,CAAC,CAAA;gBAChF,CAAC;gBACD,MAAM,OAAO,GAAuB;oBAClC,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,EAAE;oBAC7B,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACvD,CAAA;gBACD,OAAO,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;YAChC,CAAC;YAED,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;oBACrB,MAAM,IAAI,KAAK,CAAC,qBAAqB,MAAM,CAAC,EAAE,mBAAmB,CAAC,CAAA;gBACpE,CAAC;gBACD,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;YACxC,CAAC;YAED,KAAK,SAAS,CAAC,CAAC,CAAC;gBACf,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;oBACrB,MAAM,IAAI,KAAK,CAAC,wBAAwB,MAAM,CAAC,EAAE,mBAAmB,CAAC,CAAA;gBACvE,CAAC;gBACD,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;YACxC,CAAC;YAED;gBACE,MAAM,IAAI,KAAK,CAAC,6BAA6B,MAAM,CAAC,IAAI,EAAE,CAAC,CAAA;QAC/D,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,SAAS,CACrB,MAA4B,EAC5B,OAA0B;QAE1B,MAAM,UAAU,GAAG,MAAM,CAAC,QAAkB,CAAA;QAC5C,qEAAqE;QACrE,0EAA0E;QAC1E,wDAAwD;QACxD,MAAM,GAAG,GACP,OAAO,EAAE,QAAQ,KAAK,SAAS;YAC7B,CAAC,CAAC,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,kBAAkB,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;YAC7E,CAAC,CAAC,UAAU,CAAA;QAChB,wEAAwE;QACxE,kDAAkD;QAClD,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,IAAI,MAAM,CAAC,MAAM,IAAI,KAAK,CAAA;QACxD,MAAM,OAAO,GAA2B;YACtC,cAAc,EAAE,kBAAkB;YAClC,GAAG,MAAM,CAAC,OAAO;YACjB,GAAG,OAAO,EAAE,OAAO;SACpB,CAAA;QAED,iCAAiC;QACjC,EAAE;QACF,0EAA0E;QAC1E,yEAAyE;QACzE,sEAAsE;QACtE,yEAAyE;QACzE,uEAAuE;QACvE,mBAAmB;QACnB,IAAI,MAAM,CAAC,eAAe,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;YACzD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,eAAe,CAAC,CAAA;YACtE,IAAI,KAAK;gBAAE,OAAO,CAAC,eAAe,CAAC,GAAG,UAAU,KAAK,EAAE,CAAA;QACzD,CAAC;QAED,MAAM,OAAO,GAAG,OAAO,EAAE,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAA;QAEvD,MAAM,WAAW,GAAgB;YAC/B,MAAM;YACN,OAAO;YACP,qEAAqE;YACrE,mEAAmE;YACnE,sEAAsE;YACtE,iEAAiE;YACjE,WAAW,EAAE,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM;YACtF,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACvD,CAAA;QAED,IAAI,OAAO,EAAE,IAAI,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;YACtC,WAAW,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QACjD,CAAC;QAED,8DAA8D;QAC9D,IAAI,OAAO,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;YAChC,WAAW,CAAC,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QACnD,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,WAAW,CAAC,CAAA;QAE9C,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,kEAAkE;YAClE,sEAAsE;YACtE,sEAAsE;YACtE,mEAAmE;YACnE,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,QAAQ,CAAC,CAAA;YAC3C,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,IAAI,QAAQ,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,UAAU,EAAE,CAAC,CAC5F;YAAC,KAAoC,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAA;YAC/D,IAAI,OAAO,CAAC,IAAI;gBAAG,KAAkC,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAA;YACzE,MAAM,KAAK,CAAA;QACb,CAAC;QAED,MAAM,IAAI,GAAY,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;QAC3C,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,CAAA;QACxC,uEAAuE;QACvE,yEAAyE;QACzE,iDAAiD;QACjD,MAAM,IAAI,GACR,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAiC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAA;QACtH,OAAO,IAAI,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAA;IAChF,CAAC;IAEO,YAAY,CAAI,GAAW;QACjC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QACjC,IAAI,CAAC,KAAK;YAAE,OAAO,SAAS,CAAA;QAE5B,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,SAAS,CAAA;QAC5C,IAAI,OAAO,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;YACxB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;YACtB,OAAO,SAAS,CAAA;QAClB,CAAC;QAED,OAAO,KAAK,CAAC,IAAS,CAAA;IACxB,CAAC;IAEO,QAAQ,CAAC,GAAW,EAAE,IAAa,EAAE,GAAW;QACtD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,CAAC,CAAA;IAC3D,CAAC;IAEO,YAAY,CAAC,GAAY,EAAE,SAAkB;QACnD,IAAI,GAAG,YAAY,KAAK,EAAE,CAAC;YACzB,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBAC9B,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,CAAA;YACxE,CAAC;YACD,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;gBACpC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,CAAA;YAC9D,CAAC;YACD,MAAM,MAAM,GAAI,GAAmC,CAAC,MAAM,CAAA;YAC1D,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,IAAI,GAAI,GAAiC,CAAC,IAAI,CAAA;gBACpD,OAAO;oBACL,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,GAAG,CAAC,OAAO;oBACpB,MAAM;oBACN,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACzB,KAAK,EAAE,GAAG;iBACX,CAAA;YACH,CAAC;YACD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,CAAA;QAC9D,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAA;IAC9D,CAAC;CACF;AAED,+DAA+D;AAC/D,4BAA4B;AAC5B,+DAA+D;AAE/D;;GAEG;AACH,MAAM,sBAAsB;IACjB,OAAO,CAAgB;IAExB,MAAM,GAAqB,MAAM,CAAA;IACjC,KAAK,GAAkB,SAAS,CAAA;IAChC,MAAM,GAA+B,SAAS,CAAA;IACrC,SAAS,GAAG,IAAI,GAAG,EAA0B,CAAA;IAC7C,OAAO,CAAa;IAErC,YAAY,OAAuB,EAAE,OAAoB;QACvD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAA;IACpB,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAA;IACnB,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAA;IACpB,CAAC;IAED,KAAK,CAAC,OAAO;QACX,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;QAElD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;QAErE,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS;gBACxC,CAAC,CAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAO;gBAC5C,CAAC,CAAC,MAAM,CAAC,IAAI,CAAA;YACf,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,WAAW,EAAE,SAAS,CAAC,CAAA;QACpD,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;QACrD,CAAC;QAED,OAAO,MAAM,CAAA;IACf,CAAC;IAED,SAAS,CAAC,QAAgC;QACxC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QAC5B,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;QACjC,CAAC,CAAA;IACH,CAAC;IAED,OAAO;QACL,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAA;QACtB,IAAI,CAAC,KAAK,GAAG,SAAS,CAAA;QACtB,IAAI,CAAC,MAAM,GAAG,SAAS,CAAA;QACvB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;IAEO,WAAW,CACjB,KAAuB,EACvB,IAAmB,EACnB,KAAiC;QAEjC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAA;QACnB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;QACjB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAA;QACnB,IAAI,CAAC,eAAe,EAAE,CAAA;IACxB,CAAC;IAEO,eAAe;QACrB,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACtC,IAAI,CAAC;gBACH,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;YACnC,CAAC;YAAC,MAAM,CAAC;gBACP,wDAAwD;YAC1D,CAAC;QACH,CAAC;IACH,CAAC;CACF;AAED,+DAA+D;AAC/D,oBAAoB;AACpB,+DAA+D;AAE/D;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAA0B;IAC1D,OAAO,IAAI,WAAW,CAAC,MAAM,CAAC,CAAA;AAChC,CAAC"}
|
|
1
|
+
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/data/manager.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Data Service (formerly Data Capability Manager)\n *\n * Default implementation of the data service\n *\n * Provides data source registration, resolution, fetch with caching,\n * and live data bindings for surfaces.\n *\n * @module @pwfabric/runtime/data/manager\n */\n\nimport { applyEntityQuery } from '../entity/apply-query.js'\nimport type {\n DataServiceInterface,\n DataServiceConfig,\n DataSourceDefinition,\n DataFetchOptions,\n DataFetchResult,\n DataFetchError,\n DataFetchMetadata,\n DataBinding,\n LiveDataBinding,\n DataBindingState,\n DataBindingListener,\n DataResolveContext,\n} from './types.js'\n\n// ============================================================\n// CACHE ENTRY\n// ============================================================\n\ninterface CacheEntry<T> {\n data: T\n timestamp: number\n ttl: number\n}\n\n// ============================================================\n// DATA SERVICE\n// ============================================================\n\n/**\n * The list, out of whatever the endpoint wrapped it in.\n *\n * `returns` names the property holding the array — `data` for ours,\n * `products` for DummyJSON, absent when the body already IS the array. Three\n * shapes were in circulation and the binding context received whichever one\n * came back, so a block bound to a list could not take all three.\n *\n * A named path that is not there THROWS rather than yielding undefined: a\n * silently empty panel is the failure this field exists to end, and \"the\n * endpoint answered, but not with what the plan said\" is a sentence the user\n * can act on.\n */\nfunction isPlatformOrigin(url: string, platformApiOrigin: string | undefined): boolean {\n if (!platformApiOrigin) return false\n try {\n // A relative endpoint is same-document, which is our own by definition.\n if (!/^[a-z][a-z0-9+.-]*:\\/\\//i.test(url)) return true\n return new URL(url).origin === new URL(platformApiOrigin).origin\n } catch {\n return false\n }\n}\n\n/**\n * What a non-OK response says about itself: `{ error: { code, message } }`\n * when it is our API (or anyone keeping the same envelope), nothing when the\n * body is absent, not JSON, or not that shape. Never throws — a refusal\n * without a readable body is still a refusal with a status.\n */\nasync function readRefusal(response: Response): Promise<{ code?: string; message?: string }> {\n try {\n const body = (await response.json()) as { error?: { code?: unknown; message?: unknown } } | null\n const error = body?.error\n if (!error || typeof error !== 'object') return {}\n return {\n ...(typeof error.code === 'string' ? { code: error.code } : {}),\n ...(typeof error.message === 'string' && error.message ? { message: error.message } : {}),\n }\n } catch {\n return {}\n }\n}\n\nfunction pluck(body: unknown, path: string | undefined): unknown {\n if (!path) return body\n let node: unknown = body\n for (const key of path.split('.')) {\n if (!node || typeof node !== 'object' || Array.isArray(node)) {\n throw new Error(`Response has no '${path}' — nothing at '${key}'`)\n }\n node = (node as Record<string, unknown>)[key]\n }\n if (node === undefined) throw new Error(`Response has no '${path}'`)\n return node\n}\n\n/**\n * What `returns` left behind: the body's top-level fields other than the one\n * the rows were plucked from. `{ products, total, skip, limit }` with\n * `returns: \"products\"` → `{ total, skip, limit }`; with `returns: \"data.items\"`\n * every top-level field except `data`.\n */\nfunction envelopeOf(body: unknown, path: string | undefined): Record<string, unknown> | undefined {\n if (!path || !body || typeof body !== 'object' || Array.isArray(body)) return undefined\n const head = path.split('.')[0] ?? path\n const rest: Record<string, unknown> = {}\n for (const [k, v] of Object.entries(body as Record<string, unknown>)) {\n if (k !== head) rest[k] = v\n }\n return rest\n}\n\n/** A REST answer on its way out of `executeFetch`: rows plus what came with them. */\nclass RestAnswer {\n constructor(\n readonly data: unknown,\n readonly status: number,\n readonly envelope: Record<string, unknown> | undefined\n ) {}\n}\n\n/**\n * Default implementation of the DataServiceInterface.\n *\n * Accepts optional DataServiceConfig for default cache TTL, retry, and timeout.\n */\nexport class DataService implements DataServiceInterface {\n private readonly sources = new Map<string, DataSourceDefinition>()\n private readonly cache = new Map<string, CacheEntry<unknown>>()\n private readonly bindings = new Map<string, DefaultLiveDataBinding<unknown>>()\n readonly config: DataServiceConfig\n\n constructor(config?: DataServiceConfig) {\n this.config = config ?? {}\n }\n\n registerSource<T>(definition: DataSourceDefinition<T>): void {\n if (this.sources.has(definition.id)) {\n throw new Error(`Data source '${definition.id}' is already registered`)\n }\n this.sources.set(definition.id, definition as DataSourceDefinition)\n }\n\n resolveDataSource(sourceId: string): DataSourceDefinition | undefined {\n return this.sources.get(sourceId)\n }\n\n hasSource(sourceId: string): boolean {\n return this.sources.has(sourceId)\n }\n\n async fetchData<T>(sourceId: string, options?: DataFetchOptions): Promise<DataFetchResult<T>> {\n const source = this.sources.get(sourceId)\n if (!source) {\n return {\n success: false,\n error: {\n type: 'not_found',\n message: `Data source '${sourceId}' not found`,\n },\n }\n }\n\n // A write is never answered from the read cache, and never fills it: the\n // record a POST returns is not the list a reader asked for.\n const isWrite = (options?.method ?? source.method ?? 'GET') !== 'GET'\n\n // Check cache\n if (!isWrite && !options?.skipCache && source.cache?.enabled) {\n const cacheKey = source.cache.key ?? `data:${sourceId}`\n const cached = this.getFromCache<T>(cacheKey)\n if (cached !== undefined) {\n return {\n success: true,\n data: cached,\n metadata: {\n duration: 0,\n fromCache: true,\n timestamp: Date.now(),\n },\n }\n }\n }\n\n const startTime = Date.now()\n\n try {\n const fetched = await this.executeFetch(source, options)\n // A REST answer carries its status and envelope beside the rows.\n const rawData = fetched instanceof RestAnswer ? fetched.data : fetched\n const data = source.transform ? source.transform(rawData) : rawData\n\n const duration = Date.now() - startTime\n const metadata: DataFetchMetadata = {\n duration,\n fromCache: false,\n timestamp: Date.now(),\n ...(fetched instanceof RestAnswer\n ? { status: fetched.status, ...(fetched.envelope ? { envelope: fetched.envelope } : {}) }\n : {}),\n }\n\n // Store in cache — use source-level TTL, fall back to service config, then default\n if (!isWrite && source.cache?.enabled) {\n const cacheKey = source.cache.key ?? `data:${sourceId}`\n const ttl =\n source.cache.ttl ??\n (this.config.defaultCacheTtl ? this.config.defaultCacheTtl * 1000 : 60_000)\n this.setCache(cacheKey, data, ttl)\n }\n\n return { success: true, data: data as T, metadata }\n } catch (err) {\n const duration = Date.now() - startTime\n const error = this.toFetchError(err, duration)\n return { success: false, error }\n }\n }\n\n bindData<T>(binding: DataBinding<T>): LiveDataBinding<T> {\n const liveBinding = new DefaultLiveDataBinding<T>(binding, this)\n this.bindings.set(binding.id, liveBinding as DefaultLiveDataBinding<unknown>)\n return liveBinding\n }\n\n unregisterSource(sourceId: string): boolean {\n if (!this.sources.has(sourceId)) {\n return false\n }\n this.sources.delete(sourceId)\n // Invalidate cache\n const cacheKey = `data:${sourceId}`\n this.cache.delete(cacheKey)\n return true\n }\n\n getSourceIds(): readonly string[] {\n return Array.from(this.sources.keys())\n }\n\n clear(): void {\n this.sources.clear()\n this.cache.clear()\n for (const binding of this.bindings.values()) {\n binding.dispose()\n }\n this.bindings.clear()\n }\n\n // ============================================================\n // PRIVATE METHODS\n // ============================================================\n\n private async executeFetch(\n source: DataSourceDefinition,\n options?: DataFetchOptions\n ): Promise<unknown> {\n switch (source.kind) {\n case 'static':\n return source.staticData\n\n case 'state': {\n const context: DataResolveContext = {\n params: options?.params ?? {},\n ...(options?.signal ? { signal: options.signal } : {}),\n }\n if (source.compute) {\n return source.compute(context)\n }\n return source.staticData\n }\n\n case 'computed': {\n if (!source.compute) {\n throw new Error(`Computed data source '${source.id}' has no compute function`)\n }\n const context: DataResolveContext = {\n params: options?.params ?? {},\n ...(options?.signal ? { signal: options.signal } : {}),\n }\n return source.compute(context)\n }\n\n case 'rest': {\n if (!source.endpoint) {\n throw new Error(`REST data source '${source.id}' has no endpoint`)\n }\n return this.fetchRest(source, options)\n }\n\n case 'graphql': {\n if (!source.endpoint) {\n throw new Error(`GraphQL data source '${source.id}' has no endpoint`)\n }\n return this.fetchRest(source, options)\n }\n\n default:\n throw new Error(`Unknown data source kind: ${source.kind}`)\n }\n }\n\n private async fetchRest(\n source: DataSourceDefinition,\n options?: DataFetchOptions\n ): Promise<unknown> {\n const collection = source.endpoint as string\n // One record of the collection, when the call names it. The source's\n // address is the collection; `<collection>/<id>` is how the platform (and\n // every REST API worth the name) addresses a row of it.\n const url =\n options?.recordId !== undefined\n ? `${collection.replace(/\\/+$/, '')}/${encodeURIComponent(options.recordId)}`\n : collection\n // A write uses the same address with a different verb — the source says\n // how it is read, the call says what it is doing.\n const method = options?.method ?? source.method ?? 'GET'\n const headers: Record<string, string> = {\n 'Content-Type': 'application/json',\n ...source.headers,\n ...options?.headers,\n }\n\n // call it AS THE SIGNED-IN USER.\n //\n // Resolved per request and never cached: a delegated token expires within\n // the hour, and a value held here would be the beginning of a credential\n // living somewhere it can be serialised. A resolver that answers null\n // sends the request WITHOUT the header — the server's own 401 is a truer\n // error than a client-side guess, and it is what a panel's `errorWhen`\n // already renders.\n if (source.authProviderRef && this.config.getAccessToken) {\n const token = await this.config.getAccessToken(source.authProviderRef)\n if (token) headers['Authorization'] = `Bearer ${token}`\n }\n\n const timeout = options?.timeout ?? this.config.timeout\n\n const requestInit: RequestInit = {\n method,\n headers,\n // Explicit on both sides. Our own API authenticates by cookie and is\n // cross-origin from a published app, so it needs `include`; anyone\n // else's endpoint must never receive one, and leaving this to fetch's\n // `'same-origin'` default would be a decision nobody wrote down.\n credentials: isPlatformOrigin(url, this.config.platformApiOrigin) ? 'include' : 'omit',\n ...(options?.signal ? { signal: options.signal } : {}),\n }\n\n if (options?.body && method !== 'GET') {\n requestInit.body = JSON.stringify(options.body)\n }\n\n // Apply timeout if configured and no external signal provided\n if (timeout && !options?.signal) {\n requestInit.signal = AbortSignal.timeout(timeout)\n }\n\n const response = await fetch(url, requestInit)\n\n if (!response.ok) {\n // The server's own words travel with the refusal. Our API answers\n // `{ error: { code, message } }`; anyone else's body is read the same\n // way and ignored when it is not that shape. Before this the body was\n // dropped, and a form could only report \"it failed\" and guess why.\n const refusal = await readRefusal(response)\n const error = new Error(refusal.message ?? `HTTP ${response.status}: ${response.statusText}`)\n ;(error as Error & { status: number }).status = response.status\n if (refusal.code) (error as Error & { code: string }).code = refusal.code\n throw error\n }\n\n const body: unknown = await response.json()\n const rows = pluck(body, source.returns)\n // Filter / sort / pagination are not sent (the endpoint does not speak\n // them), so they are applied here: otherwise a REST source that declared\n // `filter: status eq open` would show every row.\n const data =\n source.query && Array.isArray(rows) ? applyEntityQuery(rows as Record<string, unknown>[], source.query).items : rows\n return new RestAnswer(data, response.status, envelopeOf(body, source.returns))\n }\n\n private getFromCache<T>(key: string): T | undefined {\n const entry = this.cache.get(key)\n if (!entry) return undefined\n\n const elapsed = Date.now() - entry.timestamp\n if (elapsed > entry.ttl) {\n this.cache.delete(key)\n return undefined\n }\n\n return entry.data as T\n }\n\n private setCache(key: string, data: unknown, ttl: number): void {\n this.cache.set(key, { data, timestamp: Date.now(), ttl })\n }\n\n private toFetchError(err: unknown, _duration?: number): DataFetchError {\n if (err instanceof Error) {\n if (err.name === 'AbortError') {\n return { type: 'timeout', message: 'Request was aborted', cause: err }\n }\n if (err.message.includes('timeout')) {\n return { type: 'timeout', message: err.message, cause: err }\n }\n const status = (err as Error & { status?: number }).status\n if (status) {\n const code = (err as Error & { code?: string }).code\n return {\n type: 'network',\n message: err.message,\n status,\n ...(code ? { code } : {}),\n cause: err,\n }\n }\n return { type: 'unknown', message: err.message, cause: err }\n }\n return { type: 'unknown', message: String(err), cause: err }\n }\n}\n\n// ============================================================\n// DEFAULT LIVE DATA BINDING\n// ============================================================\n\n/**\n * Default live data binding implementation\n */\nclass DefaultLiveDataBinding<T> implements LiveDataBinding<T> {\n readonly binding: DataBinding<T>\n\n private _state: DataBindingState = 'idle'\n private _data: T | undefined = undefined\n private _error: DataFetchError | undefined = undefined\n private readonly listeners = new Set<DataBindingListener<T>>()\n private readonly service: DataService\n\n constructor(binding: DataBinding<T>, service: DataService) {\n this.binding = binding\n this.service = service\n }\n\n get state(): DataBindingState {\n return this._state\n }\n\n get data(): T | undefined {\n return this._data\n }\n\n get error(): DataFetchError | undefined {\n return this._error\n }\n\n async refresh(): Promise<DataFetchResult<T>> {\n this.updateState('loading', this._data, undefined)\n\n const result = await this.service.fetchData<T>(this.binding.sourceId)\n\n if (result.success) {\n const transformed = this.binding.transform\n ? (this.binding.transform(result.data) as T)\n : result.data\n this.updateState('loaded', transformed, undefined)\n } else {\n this.updateState('error', this._data, result.error)\n }\n\n return result\n }\n\n subscribe(listener: DataBindingListener<T>): () => void {\n this.listeners.add(listener)\n return () => {\n this.listeners.delete(listener)\n }\n }\n\n dispose(): void {\n this.listeners.clear()\n this._data = undefined\n this._error = undefined\n this._state = 'idle'\n }\n\n private updateState(\n state: DataBindingState,\n data: T | undefined,\n error: DataFetchError | undefined\n ): void {\n this._state = state\n this._data = data\n this._error = error\n this.notifyListeners()\n }\n\n private notifyListeners(): void {\n for (const listener of this.listeners) {\n try {\n listener(this._data, this._state)\n } catch {\n // Swallow listener errors to prevent cascading failures\n }\n }\n }\n}\n\n// ============================================================\n// FACTORY FUNCTIONS\n// ============================================================\n\n/**\n * Create a DataService instance with optional config\n */\nexport function createDataService(config?: DataServiceConfig): DataServiceInterface {\n return new DataService(config)\n}\n\n"]}
|
package/dist/data/types.d.ts
CHANGED
package/dist/data/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/data/types.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/data/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { EntityQuery } from '../entity/types.js'\n/**\n * Data Capability Types\n *\n * Data source resolution, fetch integration, and data binding for surfaces\n *\n * @module @pwfabric/runtime/data/types\n */\n\n// ============================================================\n// DATA SOURCE DEFINITION\n// ============================================================\n\n/**\n * Supported data source kinds\n */\nexport type DataSourceKind = 'rest' | 'graphql' | 'static' | 'state' | 'computed'\n\n/**\n * Data source definition for capability resolution\n */\nexport interface DataSourceDefinition<T = unknown> {\n readonly id: string\n readonly kind: DataSourceKind\n readonly name?: string\n readonly endpoint?: string\n readonly method?: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE'\n readonly headers?: Readonly<Record<string, string>>\n readonly staticData?: T\n readonly stateKey?: string\n readonly compute?: (context: DataResolveContext) => T | Promise<T>\n readonly transform?: (raw: unknown) => T\n readonly cache?: DataCacheConfig\n readonly retry?: DataRetryConfig\n /**\n * the identity this source is called WITH, by name.\n *\n * Without it a `rest` source cannot read authenticated data at all — 403\n * anonymous, 401 without a bearer, CORS-blocked with cookies — so the only\n * answer to \"read this API as me\" would be to write an engine. Named here,\n * the data path attaches that identity's LIVE token at call time.\n *\n * A NAME, NEVER A VALUE. The ref is resolved per call against the running\n * app's auth bridge; no token is stored on the source and none is serialised\n * into a published bundle.\n */\n readonly authProviderRef?: string\n /**\n * The response property holding the list — `data`, `products`, or absent\n * when the body IS the array. Dotted paths allowed for a nested one.\n */\n readonly returns?: string\n /**\n * The source's own filter / sort / pagination, applied to the rows AFTER the\n * fetch. A REST endpoint does not speak the platform's query language — a\n * declared engine's foreign API answers 400 to `filter=` — so the query is\n * never sent; it is applied here, once, the same way for every kind.\n */\n readonly query?: EntityQuery\n}\n\n/**\n * Cache configuration for data sources\n */\nexport interface DataCacheConfig {\n readonly enabled: boolean\n readonly ttl?: number\n readonly key?: string\n}\n\n/**\n * Retry configuration for data sources\n */\nexport interface DataRetryConfig {\n readonly maxAttempts: number\n readonly baseDelay: number\n readonly exponentialBackoff?: boolean\n}\n\n// ============================================================\n// DATA RESOLVE CONTEXT\n// ============================================================\n\n/**\n * Context provided during data resolution\n */\nexport interface DataResolveContext {\n readonly params: Readonly<Record<string, unknown>>\n readonly signal?: AbortSignal\n readonly getState?: (key: string) => unknown\n}\n\n// ============================================================\n// DATA FETCH OPTIONS\n// ============================================================\n\n/**\n * Options for fetching data\n */\nexport interface DataFetchOptions {\n readonly params?: Readonly<Record<string, unknown>>\n readonly headers?: Readonly<Record<string, string>>\n readonly body?: unknown\n /**\n * Overrides the source's own method for this call — a form writing to a\n * source it also reads from. The source declares how it is READ; a write is\n * a different verb against the same address.\n */\n readonly method?: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE'\n /**\n * Address ONE record of the collection the source reads: the request goes\n * to `<endpoint>/<recordId>`. A form updating the row it loaded needs this;\n * a PATCH to the collection path is a request nobody answers.\n */\n readonly recordId?: string\n readonly signal?: AbortSignal\n readonly skipCache?: boolean\n readonly timeout?: number\n}\n\n// ============================================================\n// DATA FETCH RESULT\n// ============================================================\n\n/**\n * Result of a data fetch operation\n */\nexport type DataFetchResult<T> =\n | { readonly success: true; readonly data: T; readonly metadata: DataFetchMetadata }\n | { readonly success: false; readonly error: DataFetchError }\n\n/**\n * Metadata about a successful data fetch\n */\nexport interface DataFetchMetadata {\n readonly duration: number\n readonly fromCache: boolean\n /** HTTP status of a `rest` / `graphql` answer. */\n readonly status?: number\n readonly timestamp: number\n /**\n * The rest of the response body when `returns` plucked the list out of it —\n * DummyJSON's `{ products, total, skip, limit }` gives\n * `{ total, skip, limit }`. Without it a paginated list could not know how\n * many rows exist. Absent when there is no `returns` or the body is not an\n * object.\n */\n readonly envelope?: Readonly<Record<string, unknown>>\n}\n\n/**\n * Error from a data fetch operation\n */\nexport interface DataFetchError {\n readonly type: 'network' | 'timeout' | 'validation' | 'transform' | 'not_found' | 'unknown'\n /**\n * The server's own message when its refusal carried one\n * (`{ error: { code, message } }`), else the HTTP status line.\n */\n readonly message: string\n readonly status?: number\n /** The server's error code (`NOT_FOUND`, `VALIDATION_FAILED`, …) when it sent one. */\n readonly code?: string\n readonly cause?: unknown\n}\n\n// ============================================================\n// DATA BINDING\n// ============================================================\n\n/**\n * Binding between a data source and a surface element\n */\nexport interface DataBinding<T = unknown> {\n readonly id: string\n readonly sourceId: string\n readonly targetPath: string\n readonly transform?: (data: T) => unknown\n readonly autoRefresh?: boolean\n}\n\n/**\n * Data binding state\n */\nexport type DataBindingState = 'idle' | 'loading' | 'loaded' | 'error' | 'stale'\n\n/**\n * Live data binding with current state and subscription\n */\nexport interface LiveDataBinding<T = unknown> {\n readonly binding: DataBinding<T>\n readonly state: DataBindingState\n readonly data: T | undefined\n readonly error: DataFetchError | undefined\n refresh(): Promise<DataFetchResult<T>>\n subscribe(listener: DataBindingListener<T>): () => void\n}\n\n/**\n * Listener for data binding changes\n */\nexport type DataBindingListener<T> = (data: T | undefined, state: DataBindingState) => void\n\n// ============================================================\n// DATA SERVICE CONFIG\n// ============================================================\n\n/**\n * Configuration for DataService instances.\n * Can be provided by the capability registry or directly.\n */\nexport interface DataServiceConfig {\n readonly defaultCacheTtl?: number\n readonly maxRetries?: number\n readonly timeout?: number\n /**\n * resolves the live token for a source's\n * `authProviderRef`. Supplied by the host (the runner hands over the same\n * PKCE bridge the engine registry is constructed with). Absent, every\n * request goes out unauthenticated, exactly as before.\n */\n readonly getAccessToken?: (ref?: string) => Promise<string | null>\n /**\n * The platform's own API origin — and ONLY requests to it carry credentials.\n *\n * The platform store is a REST resource like any other, so it goes through\n * the same engine; the one thing that differs is that it authenticates by\n * cookie. `credentials` is therefore decided by origin, never by default:\n * `'same-origin'` is what fetch does on its own, and a published app served\n * at `<slug>.apps.example.com` calling `api.example.com` is cross-origin, so\n * the default would silently drop the cookie. Absent, nothing is ever sent\n * anywhere — a cookie must never leak to a third party's endpoint.\n */\n readonly platformApiOrigin?: string\n}\n\n// ============================================================\n// DATA SERVICE INTERFACE\n// ============================================================\n\n/**\n * Service interface for managing data sources and bindings.\n *\n * Renamed from DataCapability to avoid overloading \"capability\" —\n * this is a service, not a registry capability declaration.\n */\nexport interface DataServiceInterface {\n registerSource<T>(definition: DataSourceDefinition<T>): void\n resolveDataSource(sourceId: string): DataSourceDefinition | undefined\n hasSource(sourceId: string): boolean\n fetchData<T>(sourceId: string, options?: DataFetchOptions): Promise<DataFetchResult<T>>\n bindData<T>(binding: DataBinding<T>): LiveDataBinding<T>\n unregisterSource(sourceId: string): boolean\n getSourceIds(): readonly string[]\n clear(): void\n}\n\n"]}
|
|
@@ -6,4 +6,3 @@ export interface AggregateSource {
|
|
|
6
6
|
aggregate?(entityType: EntityTypeId, aggregate: EntityAggregate): Promise<ConnectorAggregateResult>;
|
|
7
7
|
}
|
|
8
8
|
export declare function aggregateThrough(source: AggregateSource, entityType: EntityTypeId, aggregate: EntityAggregate): Promise<ConnectorAggregateResult>;
|
|
9
|
-
//# sourceMappingURL=aggregate.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aggregate.js","sourceRoot":"","sources":["../../src/entity/aggregate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAUpD,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,MAAuB,EACvB,UAAwB,EACxB,SAA0B;IAE1B,IAAI,OAAO,MAAM,CAAC,SAAS,KAAK,UAAU;QAAE,OAAO,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC,CAAA;IAC1F,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;IAChG,IAAI,CAAC,GAAG,CAAC,OAAO;QAAE,OAAO,GAAG,CAAA;IAC5B,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,CAAA;AAClF,CAAC"}
|
|
1
|
+
{"version":3,"file":"aggregate.js","sourceRoot":"","sources":["../../src/entity/aggregate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAUpD,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,MAAuB,EACvB,UAAwB,EACxB,SAA0B;IAE1B,IAAI,OAAO,MAAM,CAAC,SAAS,KAAK,UAAU;QAAE,OAAO,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC,CAAA;IAC1F,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;IAChG,IAAI,CAAC,GAAG,CAAC,OAAO;QAAE,OAAO,GAAG,CAAA;IAC5B,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,CAAA;AAClF,CAAC","sourcesContent":["/**\n * aggregateThrough — one number from whatever can answer.\n *\n * The platform connector asks the server (`HttpEntityConnector.aggregate`).\n * Everything else — the static connector, a declared engine, a host facade\n * that predates `resolveAggregate` — only lists. Rather than make every one\n * of them grow an aggregate, the store and the renderer go through here: a\n * source with `aggregate` is asked, a source without is queried with the\n * aggregate's filter and reduced in memory (`aggregateEntities`). The\n * fallback reduces the rows the query RETURNS — a paginated list connector\n * counts its first page — which is why the platform path is server-side.\n *\n * @module @pwfabric/runtime/entity/aggregate\n */\nimport { aggregateEntities } from './apply-query.js'\nimport type { ConnectorAggregateResult, ConnectorQueryResult } from './connector.js'\nimport type { EntityAggregate, EntityQuery, EntityTypeId } from './types.js'\n\n/** The least a source needs: `query`, and `aggregate` when it has one. */\nexport interface AggregateSource {\n query(entityType: EntityTypeId, query: EntityQuery): Promise<ConnectorQueryResult>\n aggregate?(entityType: EntityTypeId, aggregate: EntityAggregate): Promise<ConnectorAggregateResult>\n}\n\nexport async function aggregateThrough(\n source: AggregateSource,\n entityType: EntityTypeId,\n aggregate: EntityAggregate\n): Promise<ConnectorAggregateResult> {\n if (typeof source.aggregate === 'function') return source.aggregate(entityType, aggregate)\n const res = await source.query(entityType, aggregate.filter ? { filter: aggregate.filter } : {})\n if (!res.success) return res\n return { success: true, result: aggregateEntities(res.result.items, aggregate) }\n}\n"]}
|
|
@@ -56,4 +56,3 @@ export declare function aggregateEntities(items: readonly Row[], aggregate: Enti
|
|
|
56
56
|
*/
|
|
57
57
|
export declare function applyEntityQuery<T extends Row>(items: readonly T[], query: EntityQuery | undefined): EntityQueryResult<T>;
|
|
58
58
|
export {};
|
|
59
|
-
//# sourceMappingURL=apply-query.d.ts.map
|