@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":"two-way.js","sourceRoot":"","sources":["../../src/binding/two-way.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAmE7C;;GAEG;AACH,SAAS,SAAS,CAAC,IAAY;IAC7B,MAAM,QAAQ,GAAkB,EAAE,CAAA;IAClC,MAAM,KAAK,GAAG,kBAAkB,CAAA;IAChC,IAAI,KAA6B,CAAA;IAEjC,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAC3C,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;YAC3B,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;QACpD,CAAC;aAAM,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;YAClC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAA;QACjE,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED;;;;;GAKG;AACH,SAAS,SAAS,CAAC,GAA4B,EAAE,IAAY,EAAE,KAAc;IAC3E,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAA;IAChC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAM;IAEjC,IAAI,OAAO,GAAY,GAAG,CAAA;IAE1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7C,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;QAC3B,IAAI,OAAO,KAAK,SAAS;YAAE,OAAM;QAEjC,IAAI,OAAO,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAChC,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI;gBAAE,OAAM;YAC3D,MAAM,MAAM,GAAG,OAAkC,CAAA;YACjD,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,SAAS,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;gBACtE,4DAA4D;gBAC5D,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;gBAC5B,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;YAC/D,CAAC;YACD,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QAC/B,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;gBAAE,OAAM;YACnC,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;gBAC5E,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;gBAC5B,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;YAClE,CAAC;YACD,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QAClC,CAAC;IACH,CAAC;IAED,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IAC1C,IAAI,IAAI,KAAK,SAAS;QAAE,OAAM;IAE9B,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QAC7B,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACpD,CAAC;YAAC,OAAmC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;QACzD,CAAC;IACH,CAAC;SAAM,CAAC;QACN,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,CAAA;QAC7B,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,SAAS,CAAI,KAAQ;IAC5B,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAA;IACvD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAA;IAC3C,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAM,CAAA;AAC/C,CAAC;AAED,+DAA+D;AAC/D,sCAAsC;AACtC,+DAA+D;AAE/D;;GAEG;AACH,MAAM,qBAAqB;IAChB,IAAI,CAAQ;IAEb,MAAM,CAAG;IACT,aAAa,CAAG;IAChB,MAAM,CAAoB;IAC1B,QAAQ,GAAG,KAAK,CAAA;IAChB,aAAa,GAAG,KAAK,CAAA;IACrB,SAAS,GAAG,KAAK,CAAA;IAER,MAAM,CAAqB;IAC3B,OAAO,CAAsB;IACtC,aAAa,CAA2C;IAEhE,YAAY,MAA2B,EAAE,YAAe,EAAE,OAA6B;QACrF,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAA;QACvB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QAEtB,2CAA2C;QAC3C,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,EAAE,MAAM;YACxC,CAAC,CAAE,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,YAAY,CAAO;YAC9C,CAAC,CAAC,YAAY,CAAA;QAEhB,IAAI,CAAC,MAAM,GAAG,SAAS,CAAA;QACvB,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC,SAAS,CAAC,CAAA;IAC3C,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAA;IACpB,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAA;IACpB,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,QAAQ,CAAA;IACtB,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,aAAa,CAAA;IAC3B,CAAC;IAED,QAAQ,CAAC,QAAW;QAClB,IAAI,IAAI,CAAC,SAAS;YAAE,OAAM;QAE1B,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAA;QAE5B,+BAA+B;QAC/B,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YACzB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAA;YACzB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;YAC7C,IAAI,CAAC,aAAa,GAAG,KAAK,CAAA;YAE1B,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;gBAClB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAA;gBAC1B,OAAM;YACR,CAAC;QACH,CAAC;QAED,2BAA2B;QAC3B,IAAI,CAAC,MAAM,GAAG,SAAS,CAAA;QAEvB,yBAAyB;QACzB,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAA;QAEtB,oBAAoB;QACpB,IAAI,CAAC,QAAQ,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,CAAA;QAEtD,gCAAgC;QAChC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;IAC5C,CAAC;IAED,KAAK;QACH,IAAI,IAAI,CAAC,SAAS;YAAE,OAAM;QAE1B,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAA;QAC5B,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;QAC3C,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAA;QACrB,IAAI,CAAC,MAAM,GAAG,SAAS,CAAA;QACvB,IAAI,CAAC,aAAa,EAAE,CAAA;QAEpB,kDAAkD;QAClD,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO;YAC/C,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;YAC5C,CAAC,CAAC,IAAI,CAAC,MAAM,CAAA;QAEf,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAA;IAChE,CAAC;IAED,OAAO;QACL,IAAI,IAAI,CAAC,SAAS;YAAE,OAAM;QAC1B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAA;QACrB,IAAI,CAAC,aAAa,EAAE,CAAA;IACtB,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,UAAmB;QACjC,IAAI,IAAI,CAAC,SAAS;YAAE,OAAM;QAE1B,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM;YAC7C,CAAC,CAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAO;YACjD,CAAC,CAAE,UAAgB,CAAA;QAErB,IAAI,CAAC,MAAM,GAAG,SAAS,CAAA;QACvB,IAAI,CAAC,QAAQ,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,CAAA;IACzD,CAAC;IAEO,iBAAiB,CAAC,QAAW,EAAE,QAAW;QAChD,IAAI,CAAC,aAAa,EAAE,CAAA;QAEpB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,mBAAmB,CAAA;QAE3D,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;YACf,oBAAoB;YACpB,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;YAClC,OAAM;QACR,CAAC;QAED,IAAI,CAAC,aAAa,GAAG,UAAU,CAAC,GAAG,EAAE;YACnC,IAAI,CAAC,aAAa,GAAG,SAAS,CAAA;YAC9B,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;QACpC,CAAC,EAAE,KAAK,CAAC,CAAA;IACX,CAAC;IAEO,SAAS,CAAC,QAAW,EAAE,QAAW;QACxC,IAAI,IAAI,CAAC,SAAS;YAAE,OAAM;QAE1B,8CAA8C;QAC9C,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO;YAC/C,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC;YACzC,CAAC,CAAC,QAAQ,CAAA;QAEZ,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAA;IAChE,CAAC;IAEO,aAAa;QACnB,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;YACrC,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;YAChC,IAAI,CAAC,aAAa,GAAG,SAAS,CAAA;QAChC,CAAC;IACH,CAAC;CACF;AAED,+DAA+D;AAC/D,YAAY;AACZ,+DAA+D;AAE/D,6CAA6C;AAC7C,MAAM,mBAAmB,GAAG,GAAG,CAAA;AAE/B,+DAA+D;AAC/D,UAAU;AACV,+DAA+D;AAE/D;;;GAGG;AACH,SAAS,OAAO,CAAC,CAAU,EAAE,CAAU;IACrC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IACxB,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI;QAAE,OAAO,KAAK,CAAA;IAC1C,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO,KAAK,CAAA;IACpD,IAAI,OAAO,CAAC,KAAK,OAAO,CAAC;QAAE,OAAO,KAAK,CAAA;IACvC,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;QAC1B,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;QAChD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAA;QACd,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,+DAA+D;AAC/D,0BAA0B;AAC1B,+DAA+D;AAE/D;;;;;;;GAOG;AACH,MAAM,OAAO,oBAAoB;IACd,QAAQ,GAAG,IAAI,GAAG,EAAiC,CAAA;IAC5D,IAAI,CAAyB;IACpB,SAAS,GAAG,IAAI,GAAG,EAA+B,CAAA;IAC3D,UAAU,GAAG,CAAC,CAAA;IACL,oBAAoB,GAI/B,EAAE,CAAA;IAER,YAAY,WAAqC;QAC/C,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IACvD,CAAC;IAED;;;;;;OAMG;IACH,IAAI,CAAc,MAA2B;QAC3C,4CAA4C;QAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QAC/C,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,OAAO,EAAE,CAAA;QACpB,CAAC;QAED,MAAM,YAAY,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAM,CAAA;QAC7D,MAAM,QAAQ,GAAG,IAAI,qBAAqB,CAAI,MAAM,EAAE,YAAY,EAAE,IAAI,CAAC,CAAA;QAEzE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,QAAiC,CAAC,CAAA;QAEjE,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,IAAY;QACnB,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IACrC,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,IAAY,EAAE,KAAc;QACnC,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;QAE7C,sBAAsB;QACtB,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAA;QAEjC,wCAAwC;QACxC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACvC,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,CAAA;QAChC,CAAC;QAED,mBAAmB;QACnB,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAA;IAC1C,CAAC;IAED;;;;OAIG;IACH,QAAQ,CAAc,IAAY,EAAE,QAA2B;QAC7D,IAAI,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAC5C,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,aAAa,GAAG,IAAI,GAAG,EAAkB,CAAA;YACzC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,aAAa,CAAC,CAAA;QACzC,CAAC;QAED,aAAa,CAAC,GAAG,CAAC,QAA0B,CAAC,CAAA;QAE7C,OAAO,GAAG,EAAE;YACV,aAAa,CAAC,MAAM,CAAC,QAA0B,CAAC,CAAA;YAChD,IAAI,aAAa,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;gBAC7B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;YAC7B,CAAC;QACH,CAAC,CAAA;IACH,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,OAAmB;QACvB,IAAI,CAAC,UAAU,EAAE,CAAA;QAEjB,IAAI,CAAC;YACH,OAAO,EAAE,CAAA;QACX,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,UAAU,EAAE,CAAA;YAEjB,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC,EAAE,CAAC;gBAC1B,IAAI,CAAC,yBAAyB,EAAE,CAAA;YAClC,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACH,gBAAgB;QACd,MAAM,KAAK,GAAoB,EAAE,CAAA;QAEjC,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;YAC7C,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;gBACpB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YACrB,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAA;IACd,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;YAC7C,OAAO,CAAC,KAAK,EAAE,CAAA;QACjB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,OAAO;QACL,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;QACrB,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAA;QACtB,IAAI,CAAC,oBAAoB,CAAC,MAAM,GAAG,CAAC,CAAA;IACtC,CAAC;IAED;;;OAGG;IACH,gBAAgB,CAAC,IAAY,EAAE,UAAmB,EAAE,YAAqB;QACvE,MAAM,aAAa,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;QAElD,sBAAsB;QACtB,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,CAAA;QAEtC,qCAAqC;QACrC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE,aAAa,IAAI,YAAY,CAAC,CAAA;IACpE,CAAC;IAED,+DAA+D;IAC/D,UAAU;IACV,+DAA+D;IAEvD,YAAY,CAAC,IAAY,EAAE,QAAiB,EAAE,QAAiB;QACrE,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC;YACxB,oEAAoE;YACpE,MAAM,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAA;YAC/E,IAAI,WAAW,IAAI,CAAC,EAAE,CAAC;gBACrB,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAA;gBACvD,IAAI,QAAQ,EAAE,CAAC;oBACb,8CAA8C;oBAC9C,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,GAAG;wBACvC,IAAI;wBACJ,QAAQ;wBACR,QAAQ,EAAE,QAAQ,CAAC,QAAQ;qBAC5B,CAAA;gBACH,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAA;YAC9D,CAAC;YACD,OAAM;QACR,CAAC;QAED,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAA;IAC9C,CAAC;IAEO,yBAAyB;QAC/B,kDAAkD;QAClD,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,CAAA;QAC9C,IAAI,CAAC,oBAAoB,CAAC,MAAM,GAAG,CAAC,CAAA;QAEpC,KAAK,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,OAAO,EAAE,CAAC;YACnD,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAA;QAC9C,CAAC;IACH,CAAC;IAEO,aAAa,CAAC,IAAY,EAAE,QAAiB,EAAE,QAAiB;QACtE,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAC9C,IAAI,CAAC,aAAa;YAAE,OAAM;QAE1B,KAAK,MAAM,QAAQ,IAAI,aAAa,EAAE,CAAC;YACrC,IAAI,CAAC;gBACH,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;YAC9B,CAAC;YAAC,MAAM,CAAC;gBACP,4DAA4D;YAC9D,CAAC;QACH,CAAC;IACH,CAAC;CACF;AAED,+DAA+D;AAC/D,UAAU;AACV,+DAA+D;AAE/D;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,UAAU,0BAA0B,CACxC,WAAqC;IAErC,OAAO,IAAI,oBAAoB,CAAC,WAAW,CAAC,CAAA;AAC9C,CAAC"}
|
|
1
|
+
{"version":3,"file":"two-way.js","sourceRoot":"","sources":["../../src/binding/two-way.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Two-way Data Binding\n *\n * P1-5: Extends the binding system with write-back capability.\n * UI changes propagate back to the data source, enabling form inputs,\n * editable fields, and other interactive elements to automatically\n * update the data model.\n *\n * @module @pwfabric/runtime/binding/two-way\n */\n\nimport { resolvePath } from './expression.js'\n\n// ============================================================\n// TYPES\n// ============================================================\n\n/**\n * Configuration for a two-way binding\n */\nexport interface TwoWayBindingConfig {\n /** Data path using dot-notation (e.g., \"user.profile.name\") */\n readonly path: string\n /** Debounce delay in ms for write-back (default: 300) */\n readonly debounceMs?: number\n /** Optional validation function run before setting value */\n readonly validate?: (value: unknown) => ValidationResult\n /** Optional transform functions between UI and model */\n readonly transform?: {\n readonly toModel?: (uiValue: unknown) => unknown\n readonly toView?: (modelValue: unknown) => unknown\n }\n}\n\n/**\n * Result of value validation\n */\nexport interface ValidationResult {\n readonly valid: boolean\n readonly error?: string\n}\n\n/**\n * A two-way binding instance for a specific data path\n */\nexport interface TwoWayBinding<T = unknown> {\n /** The data path this binding targets */\n readonly path: string\n /** Current value at the path */\n readonly value: T\n /** Current validation error, if any */\n readonly error?: string | undefined\n /** Whether the value has changed from the initial value */\n readonly isDirty: boolean\n /** Whether validation is currently running */\n readonly isValidating: boolean\n /** Set a new value (triggers validation, debounced write-back) */\n setValue(newValue: T): void\n /** Reset value to the initial value */\n reset(): void\n /** Dispose the binding and clean up timers */\n dispose(): void\n}\n\n/**\n * Listener called when a value changes at a path\n */\nexport type ChangeListener<T = unknown> = (newValue: T, oldValue: T) => void\n\n// ============================================================\n// PATH UTILITIES\n// ============================================================\n\n/**\n * Parsed segment of a data path\n */\ntype PathSegment = { type: 'property'; key: string } | { type: 'index'; index: number }\n\n/**\n * Parse a dot-notation path into segments for traversal\n */\nfunction parsePath(path: string): PathSegment[] {\n const segments: PathSegment[] = []\n const regex = /(\\w+)|\\[(\\d+)\\]/g\n let match: RegExpExecArray | null\n\n while ((match = regex.exec(path)) !== null) {\n if (match[1] !== undefined) {\n segments.push({ type: 'property', key: match[1] })\n } else if (match[2] !== undefined) {\n segments.push({ type: 'index', index: parseInt(match[2], 10) })\n }\n }\n\n return segments\n}\n\n/**\n * Set a value at a dot-notation path in an object, creating\n * intermediate objects/arrays as needed.\n *\n * Mutates the target object in place.\n */\nfunction setAtPath(obj: Record<string, unknown>, path: string, value: unknown): void {\n const segments = parsePath(path)\n if (segments.length === 0) return\n\n let current: unknown = obj\n\n for (let i = 0; i < segments.length - 1; i++) {\n const segment = segments[i]\n if (segment === undefined) return\n\n if (segment.type === 'property') {\n if (typeof current !== 'object' || current === null) return\n const record = current as Record<string, unknown>\n if (record[segment.key] === undefined || record[segment.key] === null) {\n // Look ahead to decide whether to create an object or array\n const next = segments[i + 1]\n record[segment.key] = next && next.type === 'index' ? [] : {}\n }\n current = record[segment.key]\n } else {\n if (!Array.isArray(current)) return\n if (current[segment.index] === undefined || current[segment.index] === null) {\n const next = segments[i + 1]\n current[segment.index] = next && next.type === 'index' ? [] : {}\n }\n current = current[segment.index]\n }\n }\n\n const last = segments[segments.length - 1]\n if (last === undefined) return\n\n if (last.type === 'property') {\n if (typeof current === 'object' && current !== null) {\n ;(current as Record<string, unknown>)[last.key] = value\n }\n } else {\n if (Array.isArray(current)) {\n current[last.index] = value\n }\n }\n}\n\n/**\n * Deep-clone a plain object/array structure using structured clone\n * semantics (JSON round-trip for simplicity and zero dependencies).\n */\nfunction deepClone<T>(value: T): T {\n if (value === undefined || value === null) return value\n if (typeof value !== 'object') return value\n return JSON.parse(JSON.stringify(value)) as T\n}\n\n// ============================================================\n// TWO-WAY BINDING INSTANCE (INTERNAL)\n// ============================================================\n\n/**\n * Internal class that implements a single two-way binding\n */\nclass TwoWayBindingInstance<T = unknown> implements TwoWayBinding<T> {\n readonly path: string\n\n private _value: T\n private _initialValue: T\n private _error: string | undefined\n private _isDirty = false\n private _isValidating = false\n private _disposed = false\n\n private readonly config: TwoWayBindingConfig\n private readonly manager: TwoWayBindingManager\n private debounceTimer: ReturnType<typeof setTimeout> | undefined\n\n constructor(config: TwoWayBindingConfig, initialValue: T, manager: TwoWayBindingManager) {\n this.path = config.path\n this.config = config\n this.manager = manager\n\n // Apply toView transform for initial value\n const viewValue = config.transform?.toView\n ? (config.transform.toView(initialValue) as T)\n : initialValue\n\n this._value = viewValue\n this._initialValue = deepClone(viewValue)\n }\n\n get value(): T {\n return this._value\n }\n\n get error(): string | undefined {\n return this._error\n }\n\n get isDirty(): boolean {\n return this._isDirty\n }\n\n get isValidating(): boolean {\n return this._isValidating\n }\n\n setValue(newValue: T): void {\n if (this._disposed) return\n\n const oldValue = this._value\n\n // Run validation if configured\n if (this.config.validate) {\n this._isValidating = true\n const result = this.config.validate(newValue)\n this._isValidating = false\n\n if (!result.valid) {\n this._error = result.error\n return\n }\n }\n\n // Clear any previous error\n this._error = undefined\n\n // Update the local value\n this._value = newValue\n\n // Track dirty state\n this._isDirty = !isEqual(newValue, this._initialValue)\n\n // Debounced write-back to model\n this.scheduleWriteBack(newValue, oldValue)\n }\n\n reset(): void {\n if (this._disposed) return\n\n const oldValue = this._value\n this._value = deepClone(this._initialValue)\n this._isDirty = false\n this._error = undefined\n this.clearDebounce()\n\n // Write the reset value back to model immediately\n const modelValue = this.config.transform?.toModel\n ? this.config.transform.toModel(this._value)\n : this._value\n\n this.manager.setValueInternal(this.path, modelValue, oldValue)\n }\n\n dispose(): void {\n if (this._disposed) return\n this._disposed = true\n this.clearDebounce()\n }\n\n /**\n * Called by the manager when the model value changes externally\n */\n updateFromModel(modelValue: unknown): void {\n if (this._disposed) return\n\n const viewValue = this.config.transform?.toView\n ? (this.config.transform.toView(modelValue) as T)\n : (modelValue as T)\n\n this._value = viewValue\n this._isDirty = !isEqual(viewValue, this._initialValue)\n }\n\n private scheduleWriteBack(newValue: T, oldValue: T): void {\n this.clearDebounce()\n\n const delay = this.config.debounceMs ?? DEFAULT_DEBOUNCE_MS\n\n if (delay <= 0) {\n // Write immediately\n this.writeBack(newValue, oldValue)\n return\n }\n\n this.debounceTimer = setTimeout(() => {\n this.debounceTimer = undefined\n this.writeBack(newValue, oldValue)\n }, delay)\n }\n\n private writeBack(newValue: T, oldValue: T): void {\n if (this._disposed) return\n\n // Apply toModel transform before writing back\n const modelValue = this.config.transform?.toModel\n ? this.config.transform.toModel(newValue)\n : newValue\n\n this.manager.setValueInternal(this.path, modelValue, oldValue)\n }\n\n private clearDebounce(): void {\n if (this.debounceTimer !== undefined) {\n clearTimeout(this.debounceTimer)\n this.debounceTimer = undefined\n }\n }\n}\n\n// ============================================================\n// CONSTANTS\n// ============================================================\n\n/** Default debounce delay in milliseconds */\nconst DEFAULT_DEBOUNCE_MS = 300\n\n// ============================================================\n// UTILITY\n// ============================================================\n\n/**\n * Shallow equality check suitable for primitive and simple object values.\n * Uses JSON serialization for object comparison (safe for plain data).\n */\nfunction isEqual(a: unknown, b: unknown): boolean {\n if (a === b) return true\n if (a === null || b === null) return false\n if (a === undefined || b === undefined) return false\n if (typeof a !== typeof b) return false\n if (typeof a === 'object') {\n try {\n return JSON.stringify(a) === JSON.stringify(b)\n } catch {\n return false\n }\n }\n return false\n}\n\n// ============================================================\n// TWO-WAY BINDING MANAGER\n// ============================================================\n\n/**\n * Manages two-way data bindings.\n *\n * Provides a central data store with path-based access, change listeners,\n * validation, transforms, and batch update support. Each call to `bind()`\n * creates a `TwoWayBinding` instance that can read/write a specific path\n * in the data model.\n */\nexport class TwoWayBindingManager {\n private readonly bindings = new Map<string, TwoWayBindingInstance>()\n private data: Record<string, unknown>\n private readonly listeners = new Map<string, Set<ChangeListener>>()\n private batchDepth = 0\n private readonly pendingNotifications: {\n path: string\n newValue: unknown\n oldValue: unknown\n }[] = []\n\n constructor(initialData?: Record<string, unknown>) {\n this.data = initialData ? deepClone(initialData) : {}\n }\n\n /**\n * Create a two-way binding for a specific data path.\n *\n * Returns a `TwoWayBinding` instance that tracks the value at the path,\n * supports validation and transforms, and writes changes back to the\n * data model with optional debouncing.\n */\n bind<T = unknown>(config: TwoWayBindingConfig): TwoWayBinding<T> {\n // Dispose any existing binding at this path\n const existing = this.bindings.get(config.path)\n if (existing) {\n existing.dispose()\n }\n\n const currentValue = resolvePath(this.data, config.path) as T\n const instance = new TwoWayBindingInstance<T>(config, currentValue, this)\n\n this.bindings.set(config.path, instance as TwoWayBindingInstance)\n\n return instance\n }\n\n /**\n * Get the current value at a data path\n */\n getValue(path: string): unknown {\n return resolvePath(this.data, path)\n }\n\n /**\n * Set a value at a data path, triggering change listeners\n */\n setValue(path: string, value: unknown): void {\n const oldValue = resolvePath(this.data, path)\n\n // Write to data store\n setAtPath(this.data, path, value)\n\n // Update any binding watching this path\n const binding = this.bindings.get(path)\n if (binding) {\n binding.updateFromModel(value)\n }\n\n // Notify listeners\n this.notifyChange(path, value, oldValue)\n }\n\n /**\n * Subscribe to changes at a data path.\n *\n * @returns Unsubscribe function\n */\n onChange<T = unknown>(path: string, listener: ChangeListener<T>): () => void {\n let pathListeners = this.listeners.get(path)\n if (!pathListeners) {\n pathListeners = new Set<ChangeListener>()\n this.listeners.set(path, pathListeners)\n }\n\n pathListeners.add(listener as ChangeListener)\n\n return () => {\n pathListeners.delete(listener as ChangeListener)\n if (pathListeners.size === 0) {\n this.listeners.delete(path)\n }\n }\n }\n\n /**\n * Batch multiple updates together.\n *\n * Listener notifications are deferred until the outermost batch\n * completes, then fired once per changed path.\n */\n batch(updates: () => void): void {\n this.batchDepth++\n\n try {\n updates()\n } finally {\n this.batchDepth--\n\n if (this.batchDepth === 0) {\n this.flushPendingNotifications()\n }\n }\n }\n\n /**\n * Get all bindings that have been modified from their initial values\n */\n getDirtyBindings(): readonly TwoWayBinding[] {\n const dirty: TwoWayBinding[] = []\n\n for (const binding of this.bindings.values()) {\n if (binding.isDirty) {\n dirty.push(binding)\n }\n }\n\n return dirty\n }\n\n /**\n * Reset all bindings to their initial values\n */\n resetAll(): void {\n for (const binding of this.bindings.values()) {\n binding.reset()\n }\n }\n\n /**\n * Dispose all bindings and clear all listeners\n */\n dispose(): void {\n for (const binding of this.bindings.values()) {\n binding.dispose()\n }\n this.bindings.clear()\n this.listeners.clear()\n this.pendingNotifications.length = 0\n }\n\n /**\n * Internal method called by binding instances to write back to the model.\n * Not part of the public API.\n */\n setValueInternal(path: string, modelValue: unknown, oldViewValue: unknown): void {\n const oldModelValue = resolvePath(this.data, path)\n\n // Write to data store\n setAtPath(this.data, path, modelValue)\n\n // Notify listeners with model values\n this.notifyChange(path, modelValue, oldModelValue ?? oldViewValue)\n }\n\n // ============================================================\n // PRIVATE\n // ============================================================\n\n private notifyChange(path: string, newValue: unknown, oldValue: unknown): void {\n if (this.batchDepth > 0) {\n // During batch, accumulate notifications (last write wins per path)\n const existingIdx = this.pendingNotifications.findIndex((n) => n.path === path)\n if (existingIdx >= 0) {\n const existing = this.pendingNotifications[existingIdx]\n if (existing) {\n // Keep the original oldValue, update newValue\n this.pendingNotifications[existingIdx] = {\n path,\n newValue,\n oldValue: existing.oldValue,\n }\n }\n } else {\n this.pendingNotifications.push({ path, newValue, oldValue })\n }\n return\n }\n\n this.fireListeners(path, newValue, oldValue)\n }\n\n private flushPendingNotifications(): void {\n // Copy and clear to handle re-entrant batch calls\n const pending = [...this.pendingNotifications]\n this.pendingNotifications.length = 0\n\n for (const { path, newValue, oldValue } of pending) {\n this.fireListeners(path, newValue, oldValue)\n }\n }\n\n private fireListeners(path: string, newValue: unknown, oldValue: unknown): void {\n const pathListeners = this.listeners.get(path)\n if (!pathListeners) return\n\n for (const listener of pathListeners) {\n try {\n listener(newValue, oldValue)\n } catch {\n // Swallow errors from listeners to prevent cascade failures\n }\n }\n }\n}\n\n// ============================================================\n// FACTORY\n// ============================================================\n\n/**\n * Create a two-way binding manager\n *\n * @param initialData - Optional initial data to populate the model\n * @returns A new TwoWayBindingManager instance\n *\n * @example\n * ```ts\n * const manager = createTwoWayBindingManager({\n * user: { name: 'John', email: 'john@example.com' }\n * })\n *\n * const nameBinding = manager.bind<string>({\n * path: 'user.name',\n * debounceMs: 200,\n * validate: (v) => ({\n * valid: typeof v === 'string' && v.length > 0,\n * error: 'Name is required',\n * }),\n * })\n *\n * nameBinding.setValue('Jane')\n * // After debounce, manager.getValue('user.name') === 'Jane'\n * ```\n */\nexport function createTwoWayBindingManager(\n initialData?: Record<string, unknown>\n): TwoWayBindingManager {\n return new TwoWayBindingManager(initialData)\n}\n"]}
|
package/dist/binding/types.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/binding/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/binding/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG","sourcesContent":["/**\n * Binding System Types\n *\n * Types for capability-to-surface binding\n *\n * @module @pwfabric/runtime/binding/types\n */\n\nimport type { CapabilityId, SurfaceId, ExecutionResult } from '@pwfabric/contracts'\n\n// ============================================================\n// BINDING TYPES\n// ============================================================\n\n/**\n * Binding state\n */\nexport type BindingState = 'unbound' | 'binding' | 'bound' | 'error' | 'stale'\n\n/**\n * Binding configuration\n */\nexport interface BindingConfig {\n readonly capabilityId: CapabilityId\n readonly alias?: string\n readonly transform?: RuntimeBindingTransform\n readonly cache?: BindingCacheConfig\n readonly retry?: RetryConfig\n}\n\n/**\n * Transform configuration for binding input/output (runtime version)\n * Named differently from contracts BindingTransform to avoid export collision\n */\nexport interface RuntimeBindingTransform {\n readonly input?: (data: unknown) => unknown\n readonly output?: (data: unknown) => unknown\n}\n\n/**\n * Cache configuration for binding (runtime version)\n * Named differently from contracts CacheConfig to avoid export collision\n */\nexport interface BindingCacheConfig {\n readonly enabled: boolean\n readonly ttl?: number\n readonly key?: string\n}\n\n/**\n * Retry configuration\n */\nexport interface RetryConfig {\n readonly maxAttempts: number\n readonly backoff: 'fixed' | 'exponential'\n readonly delayMs: number\n}\n\n// ============================================================\n// BINDING INSTANCE\n// ============================================================\n\n/**\n * A bound capability instance\n */\nexport interface BoundCapability<TInput = unknown, TOutput = unknown> {\n readonly id: string\n readonly capabilityId: CapabilityId\n readonly state: BindingState\n readonly config: BindingConfig\n readonly lastExecuted?: number\n readonly lastResult?: ExecutionResult<TOutput>\n readonly error?: BindingError\n\n /**\n * Execute the bound capability\n */\n execute(input: TInput): Promise<ExecutionResult<TOutput>>\n\n /**\n * Refresh the binding (re-execute with last input)\n */\n refresh(): Promise<ExecutionResult<TOutput>>\n\n /**\n * Invalidate cached data\n */\n invalidate(): void\n}\n\n/**\n * Binding error\n */\nexport interface BindingError {\n readonly type: 'resolution_failed' | 'execution_failed' | 'transform_failed' | 'cache_failed'\n readonly message: string\n readonly cause?: unknown\n}\n\n// ============================================================\n// BINDING CONTEXT\n// ============================================================\n\n/**\n * Context for binding resolution\n */\nexport interface BindingContext {\n readonly surfaceId: SurfaceId\n readonly auth?: AuthContext\n readonly data: Record<string, unknown>\n readonly bindings: Map<string, BoundCapability>\n}\n\n/**\n * Authentication context\n */\nexport interface AuthContext {\n readonly isAuthenticated: boolean\n readonly userId?: string\n readonly worldId?: string\n readonly scopes?: readonly string[]\n readonly token?: string\n readonly expiresAt?: number\n}\n\n// ============================================================\n// BINDING RESULT\n// ============================================================\n\n/**\n * Result of binding resolution\n */\nexport type BindingResult<T = unknown> =\n | { readonly success: true; readonly binding: BoundCapability<unknown, T> }\n | { readonly success: false; readonly error: BindingError }\n\n/**\n * Result of binding all capabilities for a surface\n */\nexport type SurfaceBindingResult =\n | { readonly success: true; readonly context: BindingContext }\n | { readonly success: false; readonly errors: readonly BindingError[] }\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component-types.js","sourceRoot":"","sources":["../../src/blocks/component-types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG"}
|
|
1
|
+
{"version":3,"file":"component-types.js","sourceRoot":"","sources":["../../src/blocks/component-types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG","sourcesContent":["/**\n * Block Component Types\n *\n * Minimal type definitions for block React components.\n * These types are structurally compatible with @pwfabric/runtime's\n * BlockComponent and BlockComponentRegistry types.\n *\n * @module @pwfabric/runtime/blocks/component-types\n */\n\nimport type { ReactNode } from 'react'\nimport type { Block } from '@pwfabric/contracts'\nimport type { BreakpointName } from '@pwfabric/core'\n\n// ============================================================\n// SURFACE EVENTS (minimal subset used by block components)\n// ============================================================\n\n/**\n * Surface event types emitted by block components\n */\nexport type BlockSurfaceEventType = 'click' | 'submit' | 'change' | 'navigate' | 'custom'\n\n/**\n * Surface event emitted by block components\n */\nexport interface BlockSurfaceEvent {\n /** Event type */\n readonly type: BlockSurfaceEventType\n /** Block ID that triggered the event */\n readonly blockId: string\n /** Event payload */\n readonly payload?: unknown\n /** Original DOM event (if applicable) */\n readonly originalEvent?: Event\n}\n\n// ============================================================\n// BLOCK CONTEXT (minimal subset needed by block components)\n// ============================================================\n\n/**\n * Minimal block rendering context available to block components.\n * Structurally compatible with @pwfabric/runtime's BlockContext.\n */\nexport interface BlockComponentContext {\n /** Event handler for block events */\n readonly onEvent?: ((event: BlockSurfaceEvent) => void) | undefined\n /** Current viewport breakpoint */\n readonly viewport?: BreakpointName\n /** Image adapter (optional, runtime-provided) */\n readonly imageAdapter?: unknown\n /** Capabilities (optional, runtime-provided) */\n readonly capabilities?: Map<string, unknown>\n}\n\n// ============================================================\n// BLOCK COMPONENT TYPES\n// ============================================================\n\n/**\n * Props passed to block components\n */\nexport interface BlockComponentProps<T = Record<string, unknown>> {\n /** Block instance */\n readonly block: Block\n /** Resolved props (validated and defaulted) */\n readonly props: T\n /** Rendered children (for container blocks) */\n readonly children?: ReactNode\n /** Block context */\n readonly context: BlockComponentContext\n}\n\n/**\n * Block component type\n */\nexport type BlockComponent<T = Record<string, unknown>> = ((\n props: BlockComponentProps<T>\n) => ReactNode) & {\n /**\n * How the block wants to be sized when it sits in a flex ROW.\n *\n * The engine's default for a row child is an equal share (`flex: 1 1 0`) —\n * right for two content columns, wrong for an avatar, a badge, a button: an\n * intrinsic thing stretched to half a row is the single most measured layout\n * defect of the 2026-09 surface audit (127 hand-written `flex: 0 0 auto`\n * overrides across 14 receipts). A block whose natural width is its content\n * declares `sizing: 'intrinsic'` — as a static on the component, the same\n * way `displayName` travels — and the engine gives it `flex: 0 0 auto`.\n * An authored flex hint on the instance still wins. The engine memorises no\n * block names: the block declares, the engine obeys.\n */\n sizing?: BlockSizing\n}\n\n/** The only sizing word the engine knows besides its default (fluid share). */\nexport type BlockSizing = 'intrinsic'\n\n/**\n * Block component registry — maps block type strings to React component implementations\n */\nexport type BlockComponentRegistry = Record<string, BlockComponent>\n"]}
|
|
@@ -166,4 +166,3 @@ export declare function getRulesByType(ruleType: CompositionRule['type']): reado
|
|
|
166
166
|
export declare const TABS_ALLOWED_CHILDREN: Set<string>;
|
|
167
167
|
/** Allowed direct children of a form block */
|
|
168
168
|
export declare const FORM_ALLOWED_CHILDREN: Set<string>;
|
|
169
|
-
//# sourceMappingURL=composition-rules.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"composition-rules.js","sourceRoot":"","sources":["../../src/blocks/composition-rules.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"composition-rules.js","sourceRoot":"","sources":["../../src/blocks/composition-rules.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Composition Rules\n *\n * CP7: Rules defining valid block compositions\n *\n * @module @pwfabric/core/blocks/composition-rules\n */\n\nimport type { CompositionRule } from '@pwfabric/core'\nimport { MAX_NESTING_DEPTH } from '@pwfabric/core'\n\n// ============================================================\n// BUILT-IN RULES\n// ============================================================\n\n/**\n * Maximum nesting depth rule\n *\n * Prevents blocks from being nested too deeply.\n */\nexport const maxDepthRule: CompositionRule = {\n type: 'max_depth',\n description: `Blocks cannot be nested more than ${MAX_NESTING_DEPTH} levels deep`,\n appliesTo: '*',\n config: {\n maxDepth: MAX_NESTING_DEPTH,\n },\n}\n\n/**\n * Form children rule\n *\n * Forms can contain all form input elements plus structural/content blocks.\n */\nexport const formChildrenRule: CompositionRule = {\n type: 'allowed_children',\n description:\n 'Forms can contain form input elements and structural/content blocks (text, heading, container, divider, button)',\n appliesTo: 'form',\n config: {\n allowedChildren: [\n // Form input elements — the form family of the first-party base pack as\n // shipped, so every field a form pattern uses passes validation.\n 'input',\n 'textarea',\n 'select',\n 'checkbox',\n 'radio',\n 'toggle',\n 'slider',\n 'combobox',\n 'date-input',\n 'file-dropzone',\n 'number-stepper',\n 'otp-input',\n 'rich-text-editor',\n 'segmented-control',\n 'tag-input',\n // legacy names kept so older documents keep validating\n 'switch',\n 'file-upload',\n // Structural / content blocks valid inside forms\n 'button',\n 'text',\n 'heading',\n 'container',\n 'divider',\n 'badge',\n 'icon',\n 'link',\n 'alert',\n ],\n },\n}\n\n/**\n * Grid children rule\n *\n * Grids cannot have nested grids as direct children.\n */\nexport const gridChildrenRule: CompositionRule = {\n type: 'allowed_children',\n description: 'Grids cannot contain other grids as direct children',\n appliesTo: 'grid',\n config: {\n disallowedChildren: ['grid'],\n },\n}\n\n/**\n * Button no children rule\n *\n * Buttons cannot have children.\n */\nexport const buttonNoChildrenRule: CompositionRule = {\n type: 'no_children',\n description: 'Buttons cannot have children',\n appliesTo: 'button',\n config: {},\n}\n\n/**\n * Text no children rule\n *\n * Text blocks cannot have children.\n */\nexport const textNoChildrenRule: CompositionRule = {\n type: 'no_children',\n description: 'Text blocks cannot have children',\n appliesTo: 'text',\n config: {},\n}\n\n/**\n * Heading no children rule\n *\n * Heading blocks cannot have children.\n */\nexport const headingNoChildrenRule: CompositionRule = {\n type: 'no_children',\n description: 'Heading blocks cannot have children',\n appliesTo: 'heading',\n config: {},\n}\n\n/**\n * Image no children rule\n *\n * Image blocks cannot have children.\n */\nexport const imageNoChildrenRule: CompositionRule = {\n type: 'no_children',\n description: 'Image blocks cannot have children',\n appliesTo: 'image',\n config: {},\n}\n\n/**\n * Input no children rule\n *\n * Input blocks cannot have children.\n */\nexport const inputNoChildrenRule: CompositionRule = {\n type: 'no_children',\n description: 'Input blocks cannot have children',\n appliesTo: 'input',\n config: {},\n}\n\n/**\n * Input required parent rule\n *\n * Inputs should be inside forms or containers.\n */\nexport const inputParentRule: CompositionRule = {\n type: 'allowed_parents',\n description: 'Inputs should be placed inside forms or containers',\n appliesTo: 'input',\n config: {\n allowedParents: ['form', 'container'],\n severity: 'warning',\n },\n}\n\n/**\n * Link no children rule\n *\n * Link blocks cannot have children.\n */\nexport const linkNoChildrenRule: CompositionRule = {\n type: 'no_children',\n description: 'Link blocks cannot have children',\n appliesTo: 'link',\n config: {},\n}\n\n/**\n * Icon no children rule\n *\n * Icon blocks cannot have children.\n */\nexport const iconNoChildrenRule: CompositionRule = {\n type: 'no_children',\n description: 'Icon blocks cannot have children',\n appliesTo: 'icon',\n config: {},\n}\n\n/**\n * Badge no children rule\n *\n * Badge blocks cannot have children.\n */\nexport const badgeNoChildrenRule: CompositionRule = {\n type: 'no_children',\n description: 'Badge blocks cannot have children',\n appliesTo: 'badge',\n config: {},\n}\n\n/**\n * Code no children rule\n *\n * Code blocks cannot have children.\n */\nexport const codeNoChildrenRule: CompositionRule = {\n type: 'no_children',\n description: 'Code blocks cannot have children',\n appliesTo: 'code',\n config: {},\n}\n\n/**\n * Divider no children rule\n *\n * Divider blocks cannot have children.\n */\nexport const dividerNoChildrenRule: CompositionRule = {\n type: 'no_children',\n description: 'Divider blocks cannot have children',\n appliesTo: 'divider',\n config: {},\n}\n\n/**\n * List no children rule\n *\n * List blocks cannot have children.\n */\nexport const listNoChildrenRule: CompositionRule = {\n type: 'no_children',\n description: 'List blocks cannot have children',\n appliesTo: 'list',\n config: {},\n}\n\n/**\n * Table no children rule\n *\n * Table blocks cannot have children.\n */\nexport const tableNoChildrenRule: CompositionRule = {\n type: 'no_children',\n description: 'Table blocks cannot have children',\n appliesTo: 'table',\n config: {},\n}\n\n// ============================================================\n// INTERACTIVE BLOCK RULES\n// ============================================================\n\n/**\n * Accordion no children rule\n *\n * Accordion items are defined via props, not children.\n */\nexport const accordionNoChildrenRule: CompositionRule = {\n type: 'no_children',\n description: 'Accordion items are defined via props, not as children blocks',\n appliesTo: 'accordion',\n config: {},\n}\n\n/**\n * Dropdown no children rule\n *\n * Dropdown items are defined via props, not children.\n */\nexport const dropdownNoChildrenRule: CompositionRule = {\n type: 'no_children',\n description: 'Dropdown items are defined via props, not as children blocks',\n appliesTo: 'dropdown',\n config: {},\n}\n\n/**\n * Avatar no children rule\n *\n * Avatar is a leaf block with no children.\n */\nexport const avatarNoChildrenRule: CompositionRule = {\n type: 'no_children',\n description: 'Avatar blocks cannot have children',\n appliesTo: 'avatar',\n config: {},\n}\n\n/**\n * Tooltip children rule\n *\n * Tooltip can wrap specific inline/interactive blocks.\n */\nexport const tooltipChildrenRule: CompositionRule = {\n type: 'allowed_children',\n description: 'Tooltips can only wrap text, buttons, icons, badges, and links',\n appliesTo: 'tooltip',\n config: {\n allowedChildren: ['text', 'button', 'icon', 'badge', 'link'],\n },\n}\n\n/**\n * Tabs children rule\n *\n * Tabs can contain containers as tab panels.\n */\nexport const tabsChildrenRule: CompositionRule = {\n type: 'allowed_children',\n description: 'Tabs can only contain containers as tab panel content',\n appliesTo: 'tabs',\n config: {\n allowedChildren: ['container'],\n },\n}\n\n/**\n * Modal children rule\n *\n * Modal can contain layout and content blocks.\n */\nexport const modalChildrenRule: CompositionRule = {\n type: 'allowed_children',\n description: 'Modals can contain layout and content blocks',\n appliesTo: 'modal',\n config: {\n allowedChildren: [\n 'container',\n 'grid',\n 'text',\n 'heading',\n 'button',\n 'image',\n 'form',\n 'input',\n 'list',\n 'table',\n 'divider',\n 'icon',\n 'badge',\n ],\n },\n}\n\n/**\n * No self nesting rule\n *\n * Blocks cannot be nested inside themselves.\n */\nexport const noSelfNestingRule: CompositionRule = {\n type: 'no_self_nesting',\n description: 'Blocks cannot be nested inside themselves',\n appliesTo: '*',\n config: {},\n}\n\n// ============================================================\n// ALL RULES\n// ============================================================\n\n/**\n * All composition rules\n */\nexport const compositionRules: readonly CompositionRule[] = [\n maxDepthRule,\n formChildrenRule,\n gridChildrenRule,\n // Content blocks - no children\n buttonNoChildrenRule,\n textNoChildrenRule,\n headingNoChildrenRule,\n linkNoChildrenRule,\n iconNoChildrenRule,\n badgeNoChildrenRule,\n codeNoChildrenRule,\n dividerNoChildrenRule,\n // Layout blocks - no children (leaf)\n listNoChildrenRule,\n tableNoChildrenRule,\n // Media blocks - no children\n imageNoChildrenRule,\n // Form blocks - no children\n inputNoChildrenRule,\n inputParentRule,\n // Interactive blocks\n accordionNoChildrenRule,\n dropdownNoChildrenRule,\n avatarNoChildrenRule,\n tooltipChildrenRule,\n tabsChildrenRule,\n modalChildrenRule,\n // Universal rules\n noSelfNestingRule,\n] as const\n\n/**\n * Get rules that apply to a specific block type\n *\n * @param blockType - Block type to get rules for\n * @returns Array of applicable rules\n */\nexport function getRulesForBlockType(blockType: string): readonly CompositionRule[] {\n return compositionRules.filter((rule) => rule.appliesTo === '*' || rule.appliesTo === blockType)\n}\n\n/**\n * Get rules by type\n *\n * @param ruleType - Rule type to filter by\n * @returns Array of matching rules\n */\nexport function getRulesByType(ruleType: CompositionRule['type']): readonly CompositionRule[] {\n return compositionRules.filter((rule) => rule.type === ruleType)\n}\n\n// ============================================================\n// CANONICAL CHILD SETS (single source of truth)\n// Import these in API validator instead of redeclaring.\n// ============================================================\n\n/** Allowed direct children of a tabs block */\nexport const TABS_ALLOWED_CHILDREN = new Set(tabsChildrenRule.config.allowedChildren as string[])\n\n/** Allowed direct children of a form block */\nexport const FORM_ALLOWED_CHILDREN = new Set(formChildrenRule.config.allowedChildren as string[])\n"]}
|
package/dist/blocks/hooks.d.ts
CHANGED
package/dist/blocks/hooks.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../src/blocks/hooks.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAElC,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAE1D;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,gBAAgB;IAG9B,MAAM,GAAG,GAAG,UAAU,CAAC,mBAAmB,CAAC,CAAA;IAE3C,MAAM,IAAI,GAAG,CAAC,OAAkD,EAAQ,EAAE;QACxE,IAAI,CAAC,GAAG;YAAE,OAAM;QAChB,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;IACjD,CAAC,CAAA;IAED,OAAO,EAAE,IAAI,EAAE,CAAA;AACjB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY;IAC1B,OAAO,UAAU,CAAC,gBAAgB,CAAC,CAAA;AACrC,CAAC"}
|
|
1
|
+
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../src/blocks/hooks.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAElC,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAE1D;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,gBAAgB;IAG9B,MAAM,GAAG,GAAG,UAAU,CAAC,mBAAmB,CAAC,CAAA;IAE3C,MAAM,IAAI,GAAG,CAAC,OAAkD,EAAQ,EAAE;QACxE,IAAI,CAAC,GAAG;YAAE,OAAM;QAChB,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;IACjD,CAAC,CAAA;IAED,OAAO,EAAE,IAAI,EAAE,CAAA;AACjB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY;IAC1B,OAAO,UAAU,CAAC,gBAAgB,CAAC,CAAA;AACrC,CAAC","sourcesContent":["/**\n * Block Component Hooks\n *\n * React hooks used by block components for event emission and surface ID access.\n *\n * @module @pwfabric/runtime/blocks/hooks\n */\n\nimport { useContext } from 'react'\nimport type { SurfaceEventDescriptor } from '@pwfabric/contracts'\nimport { SurfaceEventContext } from './surface-event-context.js'\nimport { SurfaceIdContext } from './surface-id-context.js'\n\n/**\n * Hook for block components to emit surface events.\n *\n * When the context is absent (no bus provided by the surface renderer)\n * the hook returns a no-op `emit` so callers need no guard code.\n *\n * @example\n * ```tsx\n * const { emit } = useSurfaceEvents()\n *\n * const handleClick = () => {\n * emit({ type: SURFACE_EVENTS.BLOCK_CLICK, surfaceId, blockId: block.id })\n * }\n * ```\n */\nexport function useSurfaceEvents(): {\n emit: (partial: Omit<SurfaceEventDescriptor, 'timestamp'>) => void\n} {\n const bus = useContext(SurfaceEventContext)\n\n const emit = (partial: Omit<SurfaceEventDescriptor, 'timestamp'>): void => {\n if (!bus) return\n bus.emit({ ...partial, timestamp: Date.now() })\n }\n\n return { emit }\n}\n\n/**\n * Hook that returns the current surface ID from `SurfaceIdContext`.\n * Returns an empty string when no `BehaviorSurfaceProvider` is in the tree.\n */\nexport function useSurfaceId(): string {\n return useContext(SurfaceIdContext)\n}\n"]}
|
package/dist/blocks/index.d.ts
CHANGED
|
@@ -12,5 +12,3 @@ export * from './component-types.js';
|
|
|
12
12
|
export { SurfaceEventContext } from './surface-event-context.js';
|
|
13
13
|
export { SurfaceIdContext } from './surface-id-context.js';
|
|
14
14
|
export { useSurfaceEvents, useSurfaceId } from './hooks.js';
|
|
15
|
-
export { populateTestBlocks, TEST_BLOCK_DEFINITIONS } from './__test-fixtures__/block-fixtures.js';
|
|
16
|
-
//# sourceMappingURL=index.d.ts.map
|
package/dist/blocks/index.js
CHANGED
|
@@ -15,10 +15,9 @@ export * from './component-types.js';
|
|
|
15
15
|
export { SurfaceEventContext } from './surface-event-context.js';
|
|
16
16
|
export { SurfaceIdContext } from './surface-id-context.js';
|
|
17
17
|
export { useSurfaceEvents, useSurfaceId } from './hooks.js';
|
|
18
|
-
//
|
|
19
|
-
//
|
|
20
|
-
//
|
|
21
|
-
//
|
|
22
|
-
//
|
|
23
|
-
export { populateTestBlocks, TEST_BLOCK_DEFINITIONS } from './__test-fixtures__/block-fixtures.js';
|
|
18
|
+
// The test fixtures (populateTestBlocks, TEST_BLOCK_DEFINITIONS) are NOT
|
|
19
|
+
// exported: tests import ./__test-fixtures__/block-fixtures.js directly, and
|
|
20
|
+
// the published package does not ship that folder. Block metadata reaches a
|
|
21
|
+
// running app through the install pipeline (`useInstalledAtoms` in the
|
|
22
|
+
// browser, `installedBlocksOverride` on the server).
|
|
24
23
|
//# sourceMappingURL=index.js.map
|
package/dist/blocks/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/blocks/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,qDAAqD;AACrD,0FAA0F;AAC1F,kEAAkE;AAClE,cAAc,eAAe,CAAA;AAC7B,cAAc,wBAAwB,CAAA;AACtC,cAAc,kBAAkB,CAAA;AAChC,cAAc,sBAAsB,CAAA;AACpC,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAE3D,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/blocks/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,qDAAqD;AACrD,0FAA0F;AAC1F,kEAAkE;AAClE,cAAc,eAAe,CAAA;AAC7B,cAAc,wBAAwB,CAAA;AACtC,cAAc,kBAAkB,CAAA;AAChC,cAAc,sBAAsB,CAAA;AACpC,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAE3D,yEAAyE;AACzE,6EAA6E;AAC7E,4EAA4E;AAC5E,uEAAuE;AACvE,qDAAqD","sourcesContent":["/**\n * @pwfabric/runtime/blocks\n *\n * Core UI block schemas, definitions, and React components for the PWFabric platform.\n *\n * @module @pwfabric/runtime/blocks\n */\n\n// `./blocks/*` directory deleted — first-party block\n// components live exclusively in `pwpack-source/<pack>/blocks/<cat>/<name>/component.tsx`\n// and are loaded at runtime through the dynamic install pipeline.\nexport * from './registry.js'\nexport * from './composition-rules.js'\nexport * from './rule-engine.js'\nexport * from './component-types.js'\nexport { SurfaceEventContext } from './surface-event-context.js'\nexport { SurfaceIdContext } from './surface-id-context.js'\nexport { useSurfaceEvents, useSurfaceId } from './hooks.js'\n\n// The test fixtures (populateTestBlocks, TEST_BLOCK_DEFINITIONS) are NOT\n// exported: tests import ./__test-fixtures__/block-fixtures.js directly, and\n// the published package does not ship that folder. Block metadata reaches a\n// running app through the install pipeline (`useInstalledAtoms` in the\n// browser, `installedBlocksOverride` on the server).\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/blocks/registry.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,qDAAqD;AACrD,8DAA8D;AAC9D,mEAAmE;AACnE,mDAAmD;AACnD,oEAAoE;AACpE,kEAAkE;AAClE,mEAAmE;AACnE,+DAA+D;AAC/D,iDAAiD;AAEjD,+DAA+D;AAC/D,uBAAuB;AACvB,+DAA+D;AAE/D;;;;GAIG;AACH,MAAM,OAAO,aAAa;IACP,WAAW,GAAG,IAAI,GAAG,EAA2B,CAAA;IAEjE;;;;;OAKG;IACH,QAAQ,CAAC,UAA2B;QAClC,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1C,MAAM,IAAI,KAAK,CAAC,eAAe,UAAU,CAAC,IAAI,yBAAyB,CAAC,CAAA;QAC1E,CAAC;QACD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,CAAA;IACnD,CAAC;IAED;;;;;OAKG;IACH,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IACnC,CAAC;IAED;;;;;OAKG;IACH,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IACnC,CAAC;IAED;;;;OAIG;IACH,IAAI;QACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAA;IAC9C,CAAC;IAED;;;;;OAKG;IACH,aAAa,CAAC,QAAuB;QACnC,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAA;IAC/D,CAAC;IAED;;;;OAIG;IACH,KAAK;QACH,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAA;IAC5C,CAAC;IAED;;;;;OAKG;IACH,UAAU,CAAC,IAAY;QACrB,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACtC,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAA;IAC1B,CAAC;CACF;AAED,+DAA+D;AAC/D,qBAAqB;AACrB,+DAA+D;AAE/D;;;;;;;GAOG;AACH,SAAS,qBAAqB;IAC5B,OAAO,IAAI,aAAa,EAAE,CAAA;AAC5B,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,qBAAqB,EAAE,CAAA;AAEpD;;;;GAIG;AACH,MAAM,UAAU,gBAAgB;IAC9B,OAAO,aAAa,CAAA;AACtB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,QAAQ,GAAG,KAAK;IAClD,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,qBAAqB,EAAE,CAAA;IAChC,CAAC;IACD,OAAO,IAAI,aAAa,EAAE,CAAA;AAC5B,CAAC"}
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/blocks/registry.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,qDAAqD;AACrD,8DAA8D;AAC9D,mEAAmE;AACnE,mDAAmD;AACnD,oEAAoE;AACpE,kEAAkE;AAClE,mEAAmE;AACnE,+DAA+D;AAC/D,iDAAiD;AAEjD,+DAA+D;AAC/D,uBAAuB;AACvB,+DAA+D;AAE/D;;;;GAIG;AACH,MAAM,OAAO,aAAa;IACP,WAAW,GAAG,IAAI,GAAG,EAA2B,CAAA;IAEjE;;;;;OAKG;IACH,QAAQ,CAAC,UAA2B;QAClC,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1C,MAAM,IAAI,KAAK,CAAC,eAAe,UAAU,CAAC,IAAI,yBAAyB,CAAC,CAAA;QAC1E,CAAC;QACD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,CAAA;IACnD,CAAC;IAED;;;;;OAKG;IACH,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IACnC,CAAC;IAED;;;;;OAKG;IACH,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IACnC,CAAC;IAED;;;;OAIG;IACH,IAAI;QACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAA;IAC9C,CAAC;IAED;;;;;OAKG;IACH,aAAa,CAAC,QAAuB;QACnC,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAA;IAC/D,CAAC;IAED;;;;OAIG;IACH,KAAK;QACH,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAA;IAC5C,CAAC;IAED;;;;;OAKG;IACH,UAAU,CAAC,IAAY;QACrB,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACtC,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAA;IAC1B,CAAC;CACF;AAED,+DAA+D;AAC/D,qBAAqB;AACrB,+DAA+D;AAE/D;;;;;;;GAOG;AACH,SAAS,qBAAqB;IAC5B,OAAO,IAAI,aAAa,EAAE,CAAA;AAC5B,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,qBAAqB,EAAE,CAAA;AAEpD;;;;GAIG;AACH,MAAM,UAAU,gBAAgB;IAC9B,OAAO,aAAa,CAAA;AACtB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,QAAQ,GAAG,KAAK;IAClD,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,qBAAqB,EAAE,CAAA;IAChC,CAAC;IACD,OAAO,IAAI,aAAa,EAAE,CAAA;AAC5B,CAAC","sourcesContent":["/**\n * Block Registry\n *\n * CP7: Central registry for block type definitions\n *\n * @module @pwfabric/core/blocks/registry\n */\n\nimport type { BlockDefinition, BlockCategory } from '@pwfabric/core'\n// legacy first-party `BlockDefinition` imports moved\n// to the `__test-fixtures__/block-fixtures.ts` module so this\n// production registry file no longer pulls the 45 hardcoded blocks\n// into its bundle. Block authoring is canonical in\n// `pwpack-source/<pack>/.../component.tsx`; the runtime registry is\n// populated per world via `getBlockRegistryForWorld` (browser) or\n// `assembleCanonicalRegistry({installedBlocksOverride})` (server).\n// Tests that need a populated singleton must explicitly import\n// `populateTestBlocks` from the fixtures module.\n\n// ============================================================\n// BLOCK REGISTRY CLASS\n// ============================================================\n\n/**\n * Block Registry\n *\n * Manages registration and retrieval of block definitions.\n */\nexport class BlockRegistry {\n private readonly definitions = new Map<string, BlockDefinition>()\n\n /**\n * Register a block definition\n *\n * @param definition - Block definition to register\n * @throws Error if block type already registered\n */\n register(definition: BlockDefinition): void {\n if (this.definitions.has(definition.type)) {\n throw new Error(`Block type \"${definition.type}\" is already registered`)\n }\n this.definitions.set(definition.type, definition)\n }\n\n /**\n * Get a block definition by type\n *\n * @param type - Block type identifier\n * @returns Block definition or undefined\n */\n get(type: string): BlockDefinition | undefined {\n return this.definitions.get(type)\n }\n\n /**\n * Check if a block type is registered\n *\n * @param type - Block type identifier\n * @returns True if registered\n */\n has(type: string): boolean {\n return this.definitions.has(type)\n }\n\n /**\n * Get all registered block definitions\n *\n * @returns Array of all block definitions\n */\n list(): readonly BlockDefinition[] {\n return Array.from(this.definitions.values())\n }\n\n /**\n * Get block definitions by category\n *\n * @param category - Block category\n * @returns Array of block definitions in category\n */\n getByCategory(category: BlockCategory): readonly BlockDefinition[] {\n return this.list().filter((def) => def.category === category)\n }\n\n /**\n * Get all registered block types\n *\n * @returns Array of block type identifiers\n */\n types(): readonly string[] {\n return Array.from(this.definitions.keys())\n }\n\n /**\n * Unregister a block definition\n *\n * @param type - Block type identifier\n * @returns True if block was unregistered\n */\n unregister(type: string): boolean {\n return this.definitions.delete(type)\n }\n\n /**\n * Clear all registrations\n */\n clear(): void {\n this.definitions.clear()\n }\n}\n\n// ============================================================\n// REGISTRY SINGLETON\n// ============================================================\n\n/**\n * the default block registry is empty. Per-world content\n * comes through the dynamic install pipeline — see\n * `getBlockRegistryForWorld` (browser) / `loadInstalledBlocksForWorld`\n * (server). The empty singleton is kept for legacy callers that just\n * type-check against `BlockRegistry`; production code paths must NOT\n * depend on it being pre-populated.\n */\nfunction createDefaultRegistry(): BlockRegistry {\n return new BlockRegistry()\n}\n\n/**\n * Default block registry singleton (intentionally empty post-).\n */\nexport const blockRegistry = createDefaultRegistry()\n\n/**\n * Get the default block registry\n *\n * @returns The default block registry instance\n */\nexport function getBlockRegistry(): BlockRegistry {\n return blockRegistry\n}\n\n/**\n * Create a new block registry\n *\n * @param populate - Whether to populate with default blocks\n * @returns New block registry instance\n */\nexport function createBlockRegistry(populate = false): BlockRegistry {\n if (populate) {\n return createDefaultRegistry()\n }\n return new BlockRegistry()\n}\n"]}
|
|
@@ -129,4 +129,3 @@ export declare function canMoveBlock(block: Block, newParent: Block | null, curr
|
|
|
129
129
|
* Validate a block tree (convenience function)
|
|
130
130
|
*/
|
|
131
131
|
export declare function validateBlockTree(blocks: readonly Block[]): ValidationResult;
|
|
132
|
-
//# sourceMappingURL=rule-engine.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rule-engine.js","sourceRoot":"","sources":["../../src/blocks/rule-engine.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"rule-engine.js","sourceRoot":"","sources":["../../src/blocks/rule-engine.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Composition Rule Engine\n *\n * CP7: Validation engine for block compositions\n * Block metadata accessor is now an injectable provider so\n * web-side editor flows can supply install-aware data without depending on\n * the populated runtime singleton.\n *\n * @module @pwfabric/core/blocks/rule-engine\n */\n\nimport type {\n Block,\n BlockValidationResult as ValidationResult,\n BlockValidationError as ValidationError,\n CompositionRule,\n BlockDefinition,\n} from '@pwfabric/core'\nimport { MAX_NESTING_DEPTH } from '@pwfabric/core'\nimport { blockRegistry } from './registry.js'\nimport { compositionRules } from './composition-rules.js'\n\n// ============================================================\n// BLOCK META PROVIDER\n// ============================================================\n\n/**\n * Snapshot of the block metadata the rule engine consults during\n * validation. A subset of `BlockDefinition` — only the fields that\n * affect composition decisions (name + child/parent rules).\n */\nexport interface BlockMetaSnapshot {\n readonly type: string\n readonly name: string\n readonly canHaveChildren: boolean\n readonly allowedChildren?: readonly string[]\n readonly allowedParents?: readonly string[]\n}\n\n/**\n * Pluggable block metadata accessor. The default implementation is a\n * thin adapter over the legacy `blockRegistry` singleton; install-aware\n * editor flows construct their own provider that wraps\n * `useInstalledAtoms` data.\n */\nexport interface BlockMetaProvider {\n get(type: string): BlockMetaSnapshot | undefined\n}\n\nfunction definitionToSnapshot(def: BlockDefinition): BlockMetaSnapshot {\n return {\n type: def.type,\n name: def.name,\n canHaveChildren: def.canHaveChildren,\n ...(def.allowedChildren !== undefined ? { allowedChildren: def.allowedChildren } : {}),\n ...(def.allowedParents !== undefined ? { allowedParents: def.allowedParents } : {}),\n }\n}\n\n/**\n * Default provider — reads from the runtime `blockRegistry` singleton.\n * Returns `undefined` for types absent from the singleton (post-\n * the singleton is empty by default).\n */\nexport const defaultBlockMetaProvider: BlockMetaProvider = {\n get(type: string): BlockMetaSnapshot | undefined {\n const def = blockRegistry.get(type)\n return def ? definitionToSnapshot(def) : undefined\n },\n}\n\n// ============================================================\n// ERROR CODES\n// ============================================================\n\nexport const CompositionErrorCode = {\n MAX_DEPTH_EXCEEDED: 'MAX_DEPTH_EXCEEDED',\n INVALID_CHILD: 'INVALID_CHILD',\n INVALID_PARENT: 'INVALID_PARENT',\n NO_CHILDREN_ALLOWED: 'NO_CHILDREN_ALLOWED',\n SELF_NESTING: 'SELF_NESTING',\n UNKNOWN_BLOCK_TYPE: 'UNKNOWN_BLOCK_TYPE',\n ORPHANED_BLOCK: 'ORPHANED_BLOCK',\n} as const\n\nexport type CompositionErrorCodeType =\n (typeof CompositionErrorCode)[keyof typeof CompositionErrorCode]\n\n// ============================================================\n// RULE ENGINE CLASS\n// ============================================================\n\n/**\n * Composition Rule Engine\n *\n * Validates block compositions against defined rules.\n */\nexport class CompositionRuleEngine {\n /** Rules for this engine instance (reserved for future custom rule support) */\n readonly rules: readonly CompositionRule[]\n /** Block metadata accessor */\n readonly meta: BlockMetaProvider\n\n constructor(\n rules: readonly CompositionRule[] = compositionRules,\n meta: BlockMetaProvider = defaultBlockMetaProvider\n ) {\n this.rules = rules\n this.meta = meta\n }\n\n /**\n * Check if a child can be inserted into a parent\n *\n * @param parent - Parent block (null for root level)\n * @param childType - Type of child block to insert\n * @param currentDepth - Current nesting depth\n * @returns Validation result\n */\n canInsert(parent: Block | null, childType: string, currentDepth = 0): ValidationResult {\n const errors: ValidationError[] = []\n\n // Check if child type is registered\n const childDef = this.meta.get(childType)\n if (!childDef) {\n errors.push({\n code: CompositionErrorCode.UNKNOWN_BLOCK_TYPE,\n message: `Unknown block type: ${childType}`,\n suggestion: 'Use a registered block type',\n })\n return { valid: false, errors }\n }\n\n // Root level insertion\n if (parent === null) {\n return { valid: true, errors: [] }\n }\n\n // Get parent definition\n const parentDef = this.meta.get(parent.type)\n if (!parentDef) {\n errors.push({\n code: CompositionErrorCode.UNKNOWN_BLOCK_TYPE,\n message: `Unknown parent block type: ${parent.type}`,\n blockId: parent.id,\n })\n return { valid: false, errors }\n }\n\n // Check if parent can have children\n if (!parentDef.canHaveChildren) {\n errors.push({\n code: CompositionErrorCode.NO_CHILDREN_ALLOWED,\n message: `${parentDef.name} blocks cannot have children`,\n blockId: parent.id,\n suggestion: `Place the ${childDef.name} block outside of ${parentDef.name}`,\n })\n return { valid: false, errors }\n }\n\n // Check depth limit\n if (currentDepth >= MAX_NESTING_DEPTH) {\n errors.push({\n code: CompositionErrorCode.MAX_DEPTH_EXCEEDED,\n message: `Maximum nesting depth (${MAX_NESTING_DEPTH}) exceeded`,\n blockId: parent.id,\n suggestion: 'Reduce nesting or restructure your layout',\n })\n return { valid: false, errors }\n }\n\n // Check allowed children\n if (parentDef.allowedChildren && !parentDef.allowedChildren.includes(childType)) {\n errors.push({\n code: CompositionErrorCode.INVALID_CHILD,\n message: `${childDef.name} is not allowed inside ${parentDef.name}`,\n blockId: parent.id,\n suggestion: `Allowed children: ${parentDef.allowedChildren.join(', ')}`,\n })\n return { valid: false, errors }\n }\n\n // Check allowed parents\n if (childDef.allowedParents && !childDef.allowedParents.includes(parent.type)) {\n errors.push({\n code: CompositionErrorCode.INVALID_PARENT,\n message: `${childDef.name} should be placed inside ${childDef.allowedParents.join(' or ')}`,\n blockId: parent.id,\n suggestion: `Move the ${childDef.name} into a ${childDef.allowedParents[0]}`,\n })\n // This is a warning, not a hard error\n return { valid: true, errors }\n }\n\n // Check grid-specific rules (no nested grids)\n if (parent.type === 'grid' && childType === 'grid') {\n errors.push({\n code: CompositionErrorCode.INVALID_CHILD,\n message: 'Grids cannot contain other grids as direct children',\n blockId: parent.id,\n suggestion: 'Wrap the inner grid in a container first',\n })\n return { valid: false, errors }\n }\n\n return { valid: true, errors: [] }\n }\n\n /**\n * Check if a block can be moved to a new parent\n *\n * @param block - Block to move\n * @param newParent - New parent block (null for root level)\n * @param currentDepth - Current nesting depth\n * @returns Validation result\n */\n canMove(block: Block, newParent: Block | null, currentDepth = 0): ValidationResult {\n const errors: ValidationError[] = []\n\n // Check for self-nesting\n if (newParent && this.isDescendantOf(newParent, block)) {\n errors.push({\n code: CompositionErrorCode.SELF_NESTING,\n message: 'Cannot move a block into itself or its descendants',\n blockId: block.id,\n suggestion: 'Choose a different location',\n })\n return { valid: false, errors }\n }\n\n // Use canInsert for other validations\n return this.canInsert(newParent, block.type, currentDepth)\n }\n\n /**\n * Validate an entire block tree\n *\n * @param blocks - Root level blocks to validate\n * @returns Array of validation errors\n */\n validateTree(blocks: readonly Block[]): ValidationResult {\n const errors: ValidationError[] = []\n\n const validateBlock = (block: Block, parent: Block | null, depth: number): void => {\n // Check block type\n const def = this.meta.get(block.type)\n if (!def) {\n errors.push({\n code: CompositionErrorCode.UNKNOWN_BLOCK_TYPE,\n message: `Unknown block type: ${block.type}`,\n blockId: block.id,\n })\n return\n }\n\n // Validate insertion\n if (parent !== null) {\n if (depth >= MAX_NESTING_DEPTH) {\n errors.push({\n code: CompositionErrorCode.MAX_DEPTH_EXCEEDED,\n message: `Block at depth ${depth} exceeds maximum nesting depth (${MAX_NESTING_DEPTH})`,\n blockId: block.id,\n suggestion: 'Reduce nesting or restructure your layout',\n })\n } else {\n const insertResult = this.canInsert(parent, block.type, depth)\n errors.push(...insertResult.errors)\n }\n }\n\n // Recursively validate children\n if (block.children) {\n // Check if block can have children\n if (!def.canHaveChildren && block.children.length > 0) {\n errors.push({\n code: CompositionErrorCode.NO_CHILDREN_ALLOWED,\n message: `${def.name} blocks cannot have children`,\n blockId: block.id,\n suggestion: 'Remove children from this block',\n })\n }\n\n for (const child of block.children) {\n validateBlock(child, block, depth + 1)\n }\n }\n }\n\n for (const block of blocks) {\n validateBlock(block, null, 0)\n }\n\n return {\n valid: errors.length === 0,\n errors,\n }\n }\n\n /**\n * Get the depth of a block in a tree\n *\n * @param blocks - Root level blocks\n * @param targetId - ID of block to find\n * @returns Depth of block or -1 if not found\n */\n getBlockDepth(blocks: readonly Block[], targetId: string): number {\n const findDepth = (blockList: readonly Block[], currentDepth: number): number => {\n for (const block of blockList) {\n if (block.id === targetId) {\n return currentDepth\n }\n if (block.children) {\n const found = findDepth(block.children, currentDepth + 1)\n if (found >= 0) return found\n }\n }\n return -1\n }\n\n return findDepth(blocks, 0)\n }\n\n /**\n * Check if a block is a descendant of another block\n *\n * @param block - Block to check descendants of\n * @param potentialAncestor - Potential ancestor block\n * @returns True if block is a descendant\n */\n private isDescendantOf(block: Block, potentialAncestor: Block): boolean {\n if (block.id === potentialAncestor.id) {\n return true\n }\n\n if (potentialAncestor.children) {\n for (const child of potentialAncestor.children) {\n if (this.isDescendantOf(block, child)) {\n return true\n }\n }\n }\n\n return false\n }\n}\n\n// ============================================================\n// SINGLETON INSTANCE\n// ============================================================\n\n/**\n * Default composition rule engine singleton\n */\nexport const compositionRuleEngine = new CompositionRuleEngine()\n\n/**\n * Get the default composition rule engine\n *\n * @returns The default rule engine instance\n */\nexport function getCompositionRuleEngine(): CompositionRuleEngine {\n return compositionRuleEngine\n}\n\n/**\n * Create a new composition rule engine\n *\n * @param rules - Optional custom rules\n * @param meta - Optional block metadata provider\n * @returns New rule engine instance\n */\nexport function createCompositionRuleEngine(\n rules?: readonly CompositionRule[],\n meta?: BlockMetaProvider\n): CompositionRuleEngine {\n return new CompositionRuleEngine(rules, meta)\n}\n\n// ============================================================\n// CONVENIENCE FUNCTIONS\n// ============================================================\n\n/**\n * Check if a block can be inserted (convenience function)\n */\nexport function canInsertBlock(\n parent: Block | null,\n childType: string,\n currentDepth = 0\n): ValidationResult {\n return compositionRuleEngine.canInsert(parent, childType, currentDepth)\n}\n\n/**\n * Check if a block can be moved (convenience function)\n */\nexport function canMoveBlock(\n block: Block,\n newParent: Block | null,\n currentDepth = 0\n): ValidationResult {\n return compositionRuleEngine.canMove(block, newParent, currentDepth)\n}\n\n/**\n * Validate a block tree (convenience function)\n */\nexport function validateBlockTree(blocks: readonly Block[]): ValidationResult {\n return compositionRuleEngine.validateTree(blocks)\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"surface-event-context.js","sourceRoot":"","sources":["../../src/blocks/surface-event-context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AAGrC,MAAM,CAAC,MAAM,mBAAmB,GAAG,aAAa,CAAyB,IAAI,CAAC,CAAA"}
|
|
1
|
+
{"version":3,"file":"surface-event-context.js","sourceRoot":"","sources":["../../src/blocks/surface-event-context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AAGrC,MAAM,CAAC,MAAM,mBAAmB,GAAG,aAAa,CAAyB,IAAI,CAAC,CAAA","sourcesContent":["/**\n * Surface Event Context\n *\n * React context that carries the SurfaceEventBus down the render tree\n * so block components can emit events without prop-drilling.\n *\n * The default value is `null`; block components that call `useSurfaceEvents()`\n * when no bus is provided simply no-op rather than throwing.\n *\n * @module @pwfabric/runtime/blocks/surface-event-context\n */\n\nimport { createContext } from 'react'\nimport type { SurfaceEventBus } from '@pwfabric/contracts'\n\nexport const SurfaceEventContext = createContext<SurfaceEventBus | null>(null)\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"surface-id-context.js","sourceRoot":"","sources":["../../src/blocks/surface-id-context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AAErC,MAAM,CAAC,MAAM,gBAAgB,GAAG,aAAa,CAAS,EAAE,CAAC,CAAA"}
|
|
1
|
+
{"version":3,"file":"surface-id-context.js","sourceRoot":"","sources":["../../src/blocks/surface-id-context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AAErC,MAAM,CAAC,MAAM,gBAAgB,GAAG,aAAa,CAAS,EAAE,CAAC,CAAA","sourcesContent":["/**\n * Surface ID Context\n *\n * React context that carries the current surface ID down the render tree\n * so block components can include it in emitted events without prop-drilling.\n *\n * The default value is an empty string; blocks that read this context when\n * no `BehaviorSurfaceProvider` is present will emit events with an empty\n * surfaceId rather than throwing.\n *\n * @module @pwfabric/runtime/blocks/surface-id-context\n */\n\nimport { createContext } from 'react'\n\nexport const SurfaceIdContext = createContext<string>('')\n"]}
|
package/dist/bus.d.ts
CHANGED
package/dist/bus.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bus.js","sourceRoot":"","sources":["../src/bus.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bus.js","sourceRoot":"","sources":["../src/bus.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Event Bus\n *\n * Event bus for fabric communication\n *\n * @module @pwfabric/runtime/bus\n */\n\nimport type {\n BaseEvent,\n EventBus,\n EventHandler,\n EventSubscription,\n EventFilter,\n FabricEvent,\n} from '@pwfabric/contracts'\nimport { generateEventId } from '@pwfabric/contracts'\n\n// ============================================================\n// IN-MEMORY EVENT BUS IMPLEMENTATION\n// ============================================================\n\n/**\n * Subscription entry\n */\ninterface SubscriptionEntry {\n readonly id: string\n readonly handler: EventHandler<BaseEvent>\n readonly filter: EventFilter | undefined\n}\n\n/**\n * In-memory event bus implementation\n */\nexport class InMemoryEventBus implements EventBus {\n private subscriptions: SubscriptionEntry[] = []\n private typeSubscriptions = new Map<string, Set<SubscriptionEntry>>()\n\n emit<E extends BaseEvent>(event: E): void {\n // Emit to type-specific subscribers\n const typeHandlers = this.typeSubscriptions.get(event.type)\n if (typeHandlers) {\n for (const entry of typeHandlers) {\n this.invokeHandler(entry.handler, event)\n }\n }\n\n // Emit to general subscribers\n for (const entry of this.subscriptions) {\n if (this.matchesFilter(event, entry.filter)) {\n this.invokeHandler(entry.handler, event)\n }\n }\n }\n\n subscribe<E extends BaseEvent>(\n handler: EventHandler<E>,\n filter?: EventFilter\n ): EventSubscription {\n const entry: SubscriptionEntry = {\n id: generateEventId(),\n handler: handler as EventHandler<BaseEvent>,\n filter,\n }\n\n this.subscriptions.push(entry)\n\n return {\n unsubscribe: () => {\n const index = this.subscriptions.indexOf(entry)\n if (index !== -1) {\n this.subscriptions.splice(index, 1)\n }\n },\n }\n }\n\n on<E extends BaseEvent>(type: E['type'], handler: EventHandler<E>): EventSubscription {\n const entry: SubscriptionEntry = {\n id: generateEventId(),\n handler: handler as EventHandler<BaseEvent>,\n filter: undefined,\n }\n\n let typeSet = this.typeSubscriptions.get(type)\n if (!typeSet) {\n typeSet = new Set()\n this.typeSubscriptions.set(type, typeSet)\n }\n typeSet.add(entry)\n\n return {\n unsubscribe: () => {\n const set = this.typeSubscriptions.get(type)\n if (set) {\n set.delete(entry)\n if (set.size === 0) {\n this.typeSubscriptions.delete(type)\n }\n }\n },\n }\n }\n\n once<E extends BaseEvent>(type: E['type'], handler: EventHandler<E>): EventSubscription {\n const subscription = this.on(type, (event) => {\n subscription.unsubscribe()\n handler(event as E)\n })\n return subscription\n }\n\n /**\n * Clear all subscriptions\n */\n clear(): void {\n this.subscriptions = []\n this.typeSubscriptions.clear()\n }\n\n /**\n * Get subscription count\n */\n subscriptionCount(): number {\n let count = this.subscriptions.length\n for (const set of this.typeSubscriptions.values()) {\n count += set.size\n }\n return count\n }\n\n private matchesFilter(event: BaseEvent, filter?: EventFilter): boolean {\n if (!filter) return true\n\n // Check type filter\n if (filter.types && filter.types.length > 0) {\n if (!filter.types.includes(event.type)) {\n return false\n }\n }\n\n // Check source filter\n if (filter.sources && filter.sources.length > 0) {\n const eventSource = event.source\n const matches = filter.sources.some((source) => {\n if (source.fabricId && source.fabricId !== eventSource.fabricId) {\n return false\n }\n if (source.capabilityId && source.capabilityId !== eventSource.capabilityId) {\n return false\n }\n if (source.domainId && source.domainId !== eventSource.domainId) {\n return false\n }\n return true\n })\n if (!matches) return false\n }\n\n return true\n }\n\n private invokeHandler(handler: EventHandler<BaseEvent>, event: BaseEvent): void {\n try {\n const result = handler(event)\n // Handle async handlers - errors are swallowed but could be logged\n if (result instanceof Promise) {\n result.catch(() => {\n // Handler error - could log here\n })\n }\n } catch {\n // Handler threw synchronously - could log here\n }\n }\n}\n\n/**\n * Create a new event bus\n */\nexport function createEventBus(): EventBus {\n return new InMemoryEventBus()\n}\n\n// ============================================================\n// TYPED EVENT EMITTERS\n// ============================================================\n\n/**\n * Helper to create a typed event\n */\nexport function createFabricEvent<T extends FabricEvent['type']>(\n type: T,\n data: Omit<Extract<FabricEvent, { type: T }>, 'id' | 'type' | 'timestamp'>\n): Extract<FabricEvent, { type: T }> {\n return {\n id: generateEventId(),\n type,\n timestamp: Date.now(),\n ...data,\n } as Extract<FabricEvent, { type: T }>\n}\n"]}
|
package/dist/cache/index.d.ts
CHANGED
package/dist/cache/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cache/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,eAAe;AACf,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cache/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,eAAe;AACf,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA","sourcesContent":["/**\n * Cache Module\n *\n * Caching system for binding and data\n *\n * @module @pwfabric/runtime/cache\n */\n\n// Types\nexport type { CacheProvider, CacheStats, CacheEntry, CacheConfig } from './types.js'\n\n// Memory cache\nexport { InMemoryCache, createMemoryCache } from './memory.js'\n"]}
|
package/dist/cache/memory.d.ts
CHANGED
package/dist/cache/memory.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory.js","sourceRoot":"","sources":["../../src/cache/memory.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"memory.js","sourceRoot":"","sources":["../../src/cache/memory.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * In-Memory Cache\n *\n * In-memory cache implementation\n *\n * @module @pwfabric/runtime/cache/memory\n */\n\nimport type { CacheProvider, CacheStats, CacheEntry, CacheConfig } from './types.js'\n\n// ============================================================\n// IN-MEMORY CACHE\n// ============================================================\n\n/**\n * In-memory cache implementation with LRU eviction\n */\nexport class InMemoryCache implements CacheProvider {\n private readonly cache = new Map<string, CacheEntry<unknown>>()\n private readonly config: Required<CacheConfig>\n private hits = 0\n private misses = 0\n\n constructor(config: CacheConfig = {}) {\n this.config = {\n maxSize: config.maxSize ?? 1000,\n defaultTtl: config.defaultTtl ?? 300000, // 5 minutes\n evictionPolicy: config.evictionPolicy ?? 'lru',\n }\n }\n\n async get<T>(key: string): Promise<T | undefined> {\n const entry = this.cache.get(key)\n\n if (!entry) {\n this.misses++\n return undefined\n }\n\n // Check expiration\n if (entry.expiresAt && entry.expiresAt < Date.now()) {\n this.cache.delete(key)\n this.misses++\n return undefined\n }\n\n // Update hit count and move to end for LRU\n this.hits++\n const updated: CacheEntry<T> = {\n ...entry,\n hits: entry.hits + 1,\n } as CacheEntry<T>\n\n // LRU: delete and re-add to move to end\n this.cache.delete(key)\n this.cache.set(key, updated)\n\n return entry.value as T\n }\n\n async set<T>(key: string, value: T, ttl?: number): Promise<void> {\n // Evict if at max size\n if (this.cache.size >= this.config.maxSize && !this.cache.has(key)) {\n this.evict()\n }\n\n const entry: CacheEntry<T> = {\n value,\n createdAt: Date.now(),\n hits: 0,\n }\n\n // Only set expiresAt if TTL is specified\n if (ttl !== undefined) {\n ;(entry as { expiresAt: number }).expiresAt = Date.now() + ttl\n }\n\n this.cache.set(key, entry)\n }\n\n async delete(key: string): Promise<boolean> {\n return this.cache.delete(key)\n }\n\n async has(key: string): Promise<boolean> {\n const entry = this.cache.get(key)\n if (!entry) return false\n\n // Check expiration\n if (entry.expiresAt && entry.expiresAt < Date.now()) {\n this.cache.delete(key)\n return false\n }\n\n return true\n }\n\n async clear(): Promise<void> {\n this.cache.clear()\n this.hits = 0\n this.misses = 0\n }\n\n stats(): CacheStats {\n return {\n hits: this.hits,\n misses: this.misses,\n size: this.cache.size,\n maxSize: this.config.maxSize,\n }\n }\n\n private evict(): void {\n switch (this.config.evictionPolicy) {\n case 'lru':\n this.evictLru()\n break\n case 'lfu':\n this.evictLfu()\n break\n case 'fifo':\n this.evictFifo()\n break\n }\n }\n\n private evictLru(): void {\n // Map maintains insertion order, first item is LRU\n const firstKey = this.cache.keys().next().value\n if (firstKey) {\n this.cache.delete(firstKey)\n }\n }\n\n private evictLfu(): void {\n // Find entry with lowest hit count\n let minHits = Infinity\n let minKey: string | undefined\n\n for (const [key, entry] of this.cache) {\n if (entry.hits < minHits) {\n minHits = entry.hits\n minKey = key\n }\n }\n\n if (minKey) {\n this.cache.delete(minKey)\n }\n }\n\n private evictFifo(): void {\n // Same as LRU for Map since it maintains insertion order\n this.evictLru()\n }\n}\n\n/**\n * Create an in-memory cache\n */\nexport function createMemoryCache(config?: CacheConfig): CacheProvider {\n return new InMemoryCache(config)\n}\n"]}
|
package/dist/cache/types.d.ts
CHANGED
package/dist/cache/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/cache/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/cache/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG","sourcesContent":["/**\n * Cache Types\n *\n * Caching system types\n *\n * @module @pwfabric/runtime/cache/types\n */\n\n// ============================================================\n// CACHE PROVIDER TYPES\n// ============================================================\n\n/**\n * Cache provider interface\n */\nexport interface CacheProvider {\n /**\n * Get a value from cache\n */\n get<T>(key: string): Promise<T | undefined>\n\n /**\n * Set a value in cache\n */\n set<T>(key: string, value: T, ttl?: number): Promise<void>\n\n /**\n * Delete a value from cache\n */\n delete(key: string): Promise<boolean>\n\n /**\n * Check if a key exists\n */\n has(key: string): Promise<boolean>\n\n /**\n * Clear all cache entries\n */\n clear(): Promise<void>\n\n /**\n * Get cache statistics\n */\n stats(): CacheStats\n}\n\n/**\n * Cache statistics\n */\nexport interface CacheStats {\n readonly hits: number\n readonly misses: number\n readonly size: number\n readonly maxSize?: number\n}\n\n/**\n * Cache entry with metadata\n */\nexport interface CacheEntry<T> {\n readonly value: T\n readonly createdAt: number\n readonly expiresAt?: number\n readonly hits: number\n}\n\n/**\n * Cache configuration\n */\nexport interface CacheConfig {\n readonly maxSize?: number\n readonly defaultTtl?: number\n readonly evictionPolicy?: 'lru' | 'lfu' | 'fifo'\n}\n"]}
|
|
@@ -70,4 +70,3 @@ export type TenantCapabilityList = (worldId: string) => Promise<readonly Capabil
|
|
|
70
70
|
* their plan bundle is empty).
|
|
71
71
|
*/
|
|
72
72
|
export declare function listCapabilities(worldId: string, list: TenantCapabilityList): Promise<readonly Capability[]>;
|
|
73
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/capability/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAA;AAEjE,+DAA+D;AAC/D,iDAAiD;AACjD,+DAA+D;AAE/D,OAAO,EACL,qBAAqB,EACrB,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,4BAA4B,GAC7B,MAAM,4BAA4B,CAAA;AAEnC,+DAA+D;AAC/D,0DAA0D;AAC1D,+DAA+D;AAE/D;;;;;GAKG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAsB,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;AAEhG;;;GAGG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAW,oBAAoB,CAAC,MAAM,CAAA;AAEnE,+DAA+D;AAC/D,+CAA+C;AAC/C,EAAE;AACF,uEAAuE;AACvE,+DAA+D;AAE/D,OAAO,EACL,qBAAqB,EACrB,gBAAgB,EAChB,cAAc,EACd,mBAAmB,EACnB,qBAAqB,EACrB,qBAAqB;AACrB,0EAA0E;AAC1E,6EAA6E;AAC7E,gBAAgB;AAChB,qBAAqB,EACrB,YAAY,GACb,MAAM,mBAAmB,CAAA;AAE1B,+DAA+D;AAC/D,gCAAgC;AAChC,+DAA+D;AAE/D,OAAO,EAGL,2BAA2B,GAC5B,MAAM,iBAAiB,CAAA;AAiBxB;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,EAAU,EACV,OAAe,EACf,MAA8B;IAE9B,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,CAAA;IAC9C,IAAI,YAAY;QAAE,OAAO,YAAY,CAAA;IACrC,MAAM,IAAI,KAAK,CACb,eAAe,EAAE,kCAAkC,OAAO,KAAK;QAC7D,wEAAwE,CAC3E,CAAA;AACH,CAAC;AAOD;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,OAAe,EACf,IAA0B;IAE1B,OAAO,IAAI,CAAC,OAAO,CAAC,CAAA;AACtB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/capability/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAA;AAEjE,+DAA+D;AAC/D,iDAAiD;AACjD,+DAA+D;AAE/D,OAAO,EACL,qBAAqB,EACrB,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,4BAA4B,GAC7B,MAAM,4BAA4B,CAAA;AAEnC,+DAA+D;AAC/D,0DAA0D;AAC1D,+DAA+D;AAE/D;;;;;GAKG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAsB,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;AAEhG;;;GAGG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAW,oBAAoB,CAAC,MAAM,CAAA;AAEnE,+DAA+D;AAC/D,+CAA+C;AAC/C,EAAE;AACF,uEAAuE;AACvE,+DAA+D;AAE/D,OAAO,EACL,qBAAqB,EACrB,gBAAgB,EAChB,cAAc,EACd,mBAAmB,EACnB,qBAAqB,EACrB,qBAAqB;AACrB,0EAA0E;AAC1E,6EAA6E;AAC7E,gBAAgB;AAChB,qBAAqB,EACrB,YAAY,GACb,MAAM,mBAAmB,CAAA;AAE1B,+DAA+D;AAC/D,gCAAgC;AAChC,+DAA+D;AAE/D,OAAO,EAGL,2BAA2B,GAC5B,MAAM,iBAAiB,CAAA;AAiBxB;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,EAAU,EACV,OAAe,EACf,MAA8B;IAE9B,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,CAAA;IAC9C,IAAI,YAAY;QAAE,OAAO,YAAY,CAAA;IACrC,MAAM,IAAI,KAAK,CACb,eAAe,EAAE,kCAAkC,OAAO,KAAK;QAC7D,wEAAwE,CAC3E,CAAA;AACH,CAAC;AAOD;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,OAAe,EACf,IAA0B;IAE1B,OAAO,IAAI,CAAC,OAAO,CAAC,CAAA;AACtB,CAAC","sourcesContent":["/**\n * Capability Module — Canonical 4-Capability Registry\n *\n * ## Single Source of Truth\n *\n * `platform-capabilities.ts` is the canonical source for all platform\n * capabilities. Everything below is derived from `platformCapabilities`\n * or re-exported from siblings. Add/remove a capability there — this file\n * and all consumers stay in sync automatically.\n *\n * ## Canonical Count: 4\n *\n * - platform/persistence (data + state, merger)\n * - platform/entities (schema-driven entity CRUD; canonical form write path)\n * - platform/navigation (renamed from routing)\n * - platform/interaction (event-driven rules, replaces behaviors)\n *\n * ## Removed (historical)\n *\n * - platform/auth — phantom capability\n * - ai/content, ai/style, ai/compose, ai/spawn — facade layer\n * - platform/analytics, platform/seo, platform/i18n — Tier 3 deferred\n * - platform/routing — renamed to platform/navigation\n * - platform/input — hard cutover; form writes via platform/entities\n *\n * @module @pwfabric/runtime/capability\n */\n\nimport { platformCapabilities } from './platform-capabilities.js'\n\n// ============================================================\n// CANONICAL CAPABILITY EXPORTS (SOURCE OF TRUTH)\n// ============================================================\n\nexport {\n persistenceCapability,\n entitiesCapability,\n navigationCapability,\n interactionCapability,\n platformCapabilities,\n registerPlatformCapabilities,\n} from './platform-capabilities.js'\n\n// ============================================================\n// DERIVED CANONICAL CONSTANTS (from platformCapabilities)\n// ============================================================\n\n/**\n * Canonical capability IDs — derived from the `platformCapabilities` array.\n *\n * Drift-proof: if `platformCapabilities` changes, this updates automatically.\n * Consumers should import this constant rather than hardcoding the list.\n */\nexport const CANONICAL_CAPABILITY_IDS: readonly string[] = platformCapabilities.map((c) => c.id)\n\n/**\n * Canonical capability count. Should remain 4 until a governance-approved\n * change adds/removes a capability (dropped platform/input).\n */\nexport const CAPABILITY_COUNT: number = platformCapabilities.length\n\n// ============================================================\n// TYPE MAPPING (starter short-form ↔ full IDs)\n//\n// Translates between the short-form capability types and the full IDs.\n// ============================================================\n\nexport {\n CAPABILITY_TYPE_TO_ID,\n CAPABILITY_TYPES,\n CAPABILITY_IDS,\n resolveCapabilityId,\n resolveCapabilityType,\n isKnownCapabilityType,\n // The canonical resolver every reader needed: accepts either spelling and\n // answers with the one id the registry, the pack's atoms and the drift guard\n // all agree on.\n canonicalCapabilityId,\n isCapability,\n} from './type-mapping.js'\n\n// ============================================================\n// SURFACE CAPABILITY VALIDATION\n// ============================================================\n\nexport {\n type CapabilityRequirement,\n type CapabilityValidationResult,\n validateSurfaceCapabilities,\n} from './validation.js'\n\n// ============================================================\n// resolveCapability / listCapabilities (registry-only cutover)\n// ============================================================\n\nimport type { Capability } from '@pwfabric/contracts'\n\n/**\n * Tenant-registry lookup function injected by the runtime host.\n *\n * the hardcoded fallback is RETIRED. Callers MUST pass a\n * lookup backed by `workspace_capabilities` (or an equivalent data source).\n * A registry miss is a hard error — no silent fall-through to a global list.\n */\nexport type TenantCapabilityLookup = (id: string, worldId: string) => Promise<Capability | null>\n\n/**\n * Registry-first capability resolve.\n *\n * @throws if the lookup is missing or the capability is not installed for\n * the tenant. No fallback — pack install fan-out is the sole source of\n * truth for what a tenant can resolve.\n */\nexport async function resolveCapability(\n id: string,\n worldId: string,\n lookup: TenantCapabilityLookup\n): Promise<Capability> {\n const fromRegistry = await lookup(id, worldId)\n if (fromRegistry) return fromRegistry\n throw new Error(\n `Capability \"${id}\" is not installed for tenant \"${worldId}\". ` +\n `Install the providing pack via the plan bundle or marketplace install.`\n )\n}\n\n/**\n * Tenant-registry list function injected by the runtime host.\n */\nexport type TenantCapabilityList = (worldId: string) => Promise<readonly Capability[]>\n\n/**\n * Registry-first capability list.\n *\n * Returns the full set of capabilities installed for a tenant. No fallback\n * to the canonical platformCapabilities array — an empty install state\n * returns `[]`, which the caller must handle (usually by telling the user\n * their plan bundle is empty).\n */\nexport async function listCapabilities(\n worldId: string,\n list: TenantCapabilityList\n): Promise<readonly Capability[]> {\n return list(worldId)\n}\n"]}
|
|
@@ -29,4 +29,3 @@ export type KernelComponentId = (typeof KERNEL_COMPONENT_IDS)[number];
|
|
|
29
29
|
*/
|
|
30
30
|
export declare const KERNEL_CAPABILITY_IDS: readonly ["surface"];
|
|
31
31
|
export type KernelCapabilityId = (typeof KERNEL_CAPABILITY_IDS)[number];
|
|
32
|
-
//# sourceMappingURL=kernel-capabilities.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kernel-capabilities.js","sourceRoot":"","sources":["../../src/capability/kernel-capabilities.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,mBAAmB;IACnB,kBAAkB;IAClB,2BAA2B;IAC3B,mBAAmB;IACnB,qBAAqB;CACb,CAAA;AAIV;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,SAAS,CAAU,CAAA"}
|
|
1
|
+
{"version":3,"file":"kernel-capabilities.js","sourceRoot":"","sources":["../../src/capability/kernel-capabilities.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,mBAAmB;IACnB,kBAAkB;IAClB,2BAA2B;IAC3B,mBAAmB;IACnB,qBAAqB;CACb,CAAA;AAIV;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,SAAS,CAAU,CAAA","sourcesContent":["/**\n * Tier 0 — Kernel Capabilities\n *\n * Platform infrastructure that is always active, plan-independent,\n * and non-toggleable. These are NOT capabilities in the entitlement sense —\n * they are substrate components that must be present for any surface to render.\n *\n * Kernel components are NOT shown in a host's plan editor, NOT listed in\n * any pack catalogue, and NOT included in `ALWAYS_ON_CAPABILITY_IDS` or any\n * entitlement check. They exist below the capability tier system.\n *\n * @module @pwfabric/runtime/capability/kernel-capabilities\n * @see — Tier 0: Runtime Infrastructure (Kernel)\n */\n\n/**\n * Canonical list of Tier 0 kernel component identifiers.\n *\n * These are informational — used for documentation, logging, and\n * internal diagnostics. Not checked against any entitlement grant.\n */\nexport const KERNEL_COMPONENT_IDS = [\n 'surface-event-bus',\n 'surface-renderer',\n 'behavior-surface-provider',\n 'capability-kernel',\n 'capability-registry',\n] as const\n\nexport type KernelComponentId = (typeof KERNEL_COMPONENT_IDS)[number]\n\n/**\n * Tier 0 capability ID tokens (Kernel tier).\n *\n * `surface` is the single Tier 0 identifier used in\n * `KERNEL_CAPABILITY_IDS` (bundle-manifests.ts). It represents the\n * capability system bootstrap — the surface itself.\n */\nexport const KERNEL_CAPABILITY_IDS = ['surface'] as const\n\nexport type KernelCapabilityId = (typeof KERNEL_CAPABILITY_IDS)[number]\n"]}
|