@pwfabric/runtime 0.0.0-stage → 1.0.0-rc.0
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/LICENSE +90 -0
- package/README.md +13 -2
- package/dist/__tests__/dom-test-setup.d.ts +21 -0
- package/dist/__tests__/dom-test-setup.d.ts.map +1 -0
- package/dist/__tests__/dom-test-setup.js +36 -0
- package/dist/__tests__/dom-test-setup.js.map +1 -0
- package/dist/a11y/announcer.d.ts +66 -0
- package/dist/a11y/announcer.d.ts.map +1 -0
- package/dist/a11y/announcer.js +140 -0
- package/dist/a11y/announcer.js.map +1 -0
- package/dist/a11y/contrast.d.ts +55 -0
- package/dist/a11y/contrast.d.ts.map +1 -0
- package/dist/a11y/contrast.js +93 -0
- package/dist/a11y/contrast.js.map +1 -0
- package/dist/a11y/focus.d.ts +124 -0
- package/dist/a11y/focus.d.ts.map +1 -0
- package/dist/a11y/focus.js +282 -0
- package/dist/a11y/focus.js.map +1 -0
- package/dist/a11y/index.d.ts +22 -0
- package/dist/a11y/index.d.ts.map +1 -0
- package/dist/a11y/index.js +18 -0
- package/dist/a11y/index.js.map +1 -0
- package/dist/a11y/keyboard.d.ts +145 -0
- package/dist/a11y/keyboard.d.ts.map +1 -0
- package/dist/a11y/keyboard.js +317 -0
- package/dist/a11y/keyboard.js.map +1 -0
- package/dist/adapters/default-image.d.ts +26 -0
- package/dist/adapters/default-image.d.ts.map +1 -0
- package/dist/adapters/default-image.js +37 -0
- package/dist/adapters/default-image.js.map +1 -0
- package/dist/adapters/index.d.ts +28 -0
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/index.js +28 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/adapters/next-image.d.ts +39 -0
- package/dist/adapters/next-image.d.ts.map +1 -0
- package/dist/adapters/next-image.js +124 -0
- package/dist/adapters/next-image.js.map +1 -0
- package/dist/adapters/types.d.ts +62 -0
- package/dist/adapters/types.d.ts.map +1 -0
- package/dist/adapters/types.js +11 -0
- package/dist/adapters/types.js.map +1 -0
- package/dist/analytics/index.d.ts +15 -0
- package/dist/analytics/index.d.ts.map +1 -0
- package/dist/analytics/index.js +15 -0
- package/dist/analytics/index.js.map +1 -0
- package/dist/analytics/tracker.d.ts +66 -0
- package/dist/analytics/tracker.d.ts.map +1 -0
- package/dist/analytics/tracker.js +251 -0
- package/dist/analytics/tracker.js.map +1 -0
- package/dist/analytics/types.d.ts +131 -0
- package/dist/analytics/types.d.ts.map +1 -0
- package/dist/analytics/types.js +11 -0
- package/dist/analytics/types.js.map +1 -0
- package/dist/auth/index.d.ts +16 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +14 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/provider.d.ts +133 -0
- package/dist/auth/provider.d.ts.map +1 -0
- package/dist/auth/provider.js +473 -0
- package/dist/auth/provider.js.map +1 -0
- package/dist/auth/types.d.ts +118 -0
- package/dist/auth/types.d.ts.map +1 -0
- package/dist/auth/types.js +9 -0
- package/dist/auth/types.js.map +1 -0
- package/dist/binding/collection.d.ts +191 -0
- package/dist/binding/collection.d.ts.map +1 -0
- package/dist/binding/collection.js +358 -0
- package/dist/binding/collection.js.map +1 -0
- package/dist/binding/datasource.d.ts +320 -0
- package/dist/binding/datasource.d.ts.map +1 -0
- package/dist/binding/datasource.js +556 -0
- package/dist/binding/datasource.js.map +1 -0
- package/dist/binding/engine.d.ts +66 -0
- package/dist/binding/engine.d.ts.map +1 -0
- package/dist/binding/engine.js +268 -0
- package/dist/binding/engine.js.map +1 -0
- package/dist/binding/expression.d.ts +151 -0
- package/dist/binding/expression.d.ts.map +1 -0
- package/dist/binding/expression.js +787 -0
- package/dist/binding/expression.js.map +1 -0
- package/dist/binding/index.d.ts +20 -0
- package/dist/binding/index.d.ts.map +1 -0
- package/dist/binding/index.js +14 -0
- package/dist/binding/index.js.map +1 -0
- package/dist/binding/two-way.d.ts +150 -0
- package/dist/binding/two-way.d.ts.map +1 -0
- package/dist/binding/two-way.js +462 -0
- package/dist/binding/two-way.js.map +1 -0
- package/dist/binding/types.d.ts +120 -0
- package/dist/binding/types.d.ts.map +1 -0
- package/dist/binding/types.js +9 -0
- package/dist/binding/types.js.map +1 -0
- package/dist/blocks/__test-fixtures__/block-fixtures.d.ts +40 -0
- package/dist/blocks/__test-fixtures__/block-fixtures.d.ts.map +1 -0
- package/dist/blocks/__test-fixtures__/block-fixtures.js +506 -0
- package/dist/blocks/__test-fixtures__/block-fixtures.js.map +1 -0
- package/dist/blocks/component-types.d.ts +82 -0
- package/dist/blocks/component-types.d.ts.map +1 -0
- package/dist/blocks/component-types.js +11 -0
- package/dist/blocks/component-types.js.map +1 -0
- package/dist/blocks/composition-rules.d.ts +169 -0
- package/dist/blocks/composition-rules.d.ts.map +1 -0
- package/dist/blocks/composition-rules.js +391 -0
- package/dist/blocks/composition-rules.js.map +1 -0
- package/dist/blocks/hooks.d.ts +32 -0
- package/dist/blocks/hooks.d.ts.map +1 -0
- package/dist/blocks/hooks.js +42 -0
- package/dist/blocks/hooks.js.map +1 -0
- package/dist/blocks/index.d.ts +16 -0
- package/dist/blocks/index.d.ts.map +1 -0
- package/dist/blocks/index.js +24 -0
- package/dist/blocks/index.js.map +1 -0
- package/dist/blocks/registry.d.ts +85 -0
- package/dist/blocks/registry.d.ts.map +1 -0
- package/dist/blocks/registry.js +136 -0
- package/dist/blocks/registry.js.map +1 -0
- package/dist/blocks/rule-engine.d.ts +132 -0
- package/dist/blocks/rule-engine.d.ts.map +1 -0
- package/dist/blocks/rule-engine.js +321 -0
- package/dist/blocks/rule-engine.js.map +1 -0
- package/dist/blocks/surface-event-context.d.ts +14 -0
- package/dist/blocks/surface-event-context.d.ts.map +1 -0
- package/dist/blocks/surface-event-context.js +14 -0
- package/dist/blocks/surface-event-context.js.map +1 -0
- package/dist/blocks/surface-id-context.d.ts +14 -0
- package/dist/blocks/surface-id-context.d.ts.map +1 -0
- package/dist/blocks/surface-id-context.js +15 -0
- package/dist/blocks/surface-id-context.js.map +1 -0
- package/dist/bus.d.ts +42 -0
- package/dist/bus.d.ts.map +1 -0
- package/dist/bus.js +158 -0
- package/dist/bus.js.map +1 -0
- package/dist/cache/index.d.ts +10 -0
- package/dist/cache/index.d.ts.map +1 -0
- package/dist/cache/index.js +10 -0
- package/dist/cache/index.js.map +1 -0
- package/dist/cache/memory.d.ts +33 -0
- package/dist/cache/memory.d.ts.map +1 -0
- package/dist/cache/memory.js +138 -0
- package/dist/cache/memory.js.map +1 -0
- package/dist/cache/types.d.ts +63 -0
- package/dist/cache/types.d.ts.map +1 -0
- package/dist/cache/types.js +9 -0
- package/dist/cache/types.js.map +1 -0
- package/dist/capability/index.d.ts +73 -0
- package/dist/capability/index.d.ts.map +1 -0
- package/dist/capability/index.js +87 -0
- package/dist/capability/index.js.map +1 -0
- package/dist/capability/kernel-capabilities.d.ts +32 -0
- package/dist/capability/kernel-capabilities.d.ts.map +1 -0
- package/dist/capability/kernel-capabilities.js +36 -0
- package/dist/capability/kernel-capabilities.js.map +1 -0
- package/dist/capability/platform-capabilities.d.ts +72 -0
- package/dist/capability/platform-capabilities.d.ts.map +1 -0
- package/dist/capability/platform-capabilities.js +267 -0
- package/dist/capability/platform-capabilities.js.map +1 -0
- package/dist/capability/type-mapping.d.ts +71 -0
- package/dist/capability/type-mapping.d.ts.map +1 -0
- package/dist/capability/type-mapping.js +107 -0
- package/dist/capability/type-mapping.js.map +1 -0
- package/dist/capability/validation.d.ts +47 -0
- package/dist/capability/validation.d.ts.map +1 -0
- package/dist/capability/validation.js +54 -0
- package/dist/capability/validation.js.map +1 -0
- package/dist/connectors/declared-connector.d.ts +49 -0
- package/dist/connectors/declared-connector.d.ts.map +1 -0
- package/dist/connectors/declared-connector.js +333 -0
- package/dist/connectors/declared-connector.js.map +1 -0
- package/dist/connectors/engine-registry.d.ts +51 -0
- package/dist/connectors/engine-registry.d.ts.map +1 -0
- package/dist/connectors/engine-registry.js +135 -0
- package/dist/connectors/engine-registry.js.map +1 -0
- package/dist/connectors/index.d.ts +15 -0
- package/dist/connectors/index.d.ts.map +1 -0
- package/dist/connectors/index.js +14 -0
- package/dist/connectors/index.js.map +1 -0
- package/dist/connectors/module-loader.d.ts +71 -0
- package/dist/connectors/module-loader.d.ts.map +1 -0
- package/dist/connectors/module-loader.js +143 -0
- package/dist/connectors/module-loader.js.map +1 -0
- package/dist/connectors/types.d.ts +175 -0
- package/dist/connectors/types.d.ts.map +1 -0
- package/dist/connectors/types.js +23 -0
- package/dist/connectors/types.js.map +1 -0
- package/dist/context.d.ts +28 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +38 -0
- package/dist/context.js.map +1 -0
- package/dist/data/DataCapabilityProvider.d.ts +40 -0
- package/dist/data/DataCapabilityProvider.d.ts.map +1 -0
- package/dist/data/DataCapabilityProvider.js +58 -0
- package/dist/data/DataCapabilityProvider.js.map +1 -0
- package/dist/data/index.d.ts +18 -0
- package/dist/data/index.d.ts.map +1 -0
- package/dist/data/index.js +18 -0
- package/dist/data/index.js.map +1 -0
- package/dist/data/manager.d.ts +41 -0
- package/dist/data/manager.d.ts.map +1 -0
- package/dist/data/manager.js +442 -0
- package/dist/data/manager.js.map +1 -0
- package/dist/data/types.d.ts +219 -0
- package/dist/data/types.d.ts.map +1 -0
- package/dist/data/types.js +2 -0
- package/dist/data/types.js.map +1 -0
- package/dist/entity/aggregate.d.ts +9 -0
- package/dist/entity/aggregate.d.ts.map +1 -0
- package/dist/entity/aggregate.js +24 -0
- package/dist/entity/aggregate.js.map +1 -0
- package/dist/entity/apply-query.d.ts +59 -0
- package/dist/entity/apply-query.d.ts.map +1 -0
- package/dist/entity/apply-query.js +264 -0
- package/dist/entity/apply-query.js.map +1 -0
- package/dist/entity/behavior.d.ts +95 -0
- package/dist/entity/behavior.d.ts.map +1 -0
- package/dist/entity/behavior.js +78 -0
- package/dist/entity/behavior.js.map +1 -0
- package/dist/entity/connector.d.ts +142 -0
- package/dist/entity/connector.d.ts.map +1 -0
- package/dist/entity/connector.js +89 -0
- package/dist/entity/connector.js.map +1 -0
- package/dist/entity/connectors/index.d.ts +13 -0
- package/dist/entity/connectors/index.d.ts.map +1 -0
- package/dist/entity/connectors/index.js +11 -0
- package/dist/entity/connectors/index.js.map +1 -0
- package/dist/entity/connectors/static.d.ts +52 -0
- package/dist/entity/connectors/static.d.ts.map +1 -0
- package/dist/entity/connectors/static.js +245 -0
- package/dist/entity/connectors/static.js.map +1 -0
- package/dist/entity/entity-datasource.d.ts +51 -0
- package/dist/entity/entity-datasource.d.ts.map +1 -0
- package/dist/entity/entity-datasource.js +33 -0
- package/dist/entity/entity-datasource.js.map +1 -0
- package/dist/entity/facade.d.ts +71 -0
- package/dist/entity/facade.d.ts.map +1 -0
- package/dist/entity/facade.js +70 -0
- package/dist/entity/facade.js.map +1 -0
- package/dist/entity/http-connector.d.ts +124 -0
- package/dist/entity/http-connector.d.ts.map +1 -0
- package/dist/entity/http-connector.js +295 -0
- package/dist/entity/http-connector.js.map +1 -0
- package/dist/entity/index.d.ts +39 -0
- package/dist/entity/index.d.ts.map +1 -0
- package/dist/entity/index.js +31 -0
- package/dist/entity/index.js.map +1 -0
- package/dist/entity/postgres-connector.d.ts +65 -0
- package/dist/entity/postgres-connector.d.ts.map +1 -0
- package/dist/entity/postgres-connector.js +239 -0
- package/dist/entity/postgres-connector.js.map +1 -0
- package/dist/entity/registry.d.ts +60 -0
- package/dist/entity/registry.d.ts.map +1 -0
- package/dist/entity/registry.js +90 -0
- package/dist/entity/registry.js.map +1 -0
- package/dist/entity/store.d.ts +67 -0
- package/dist/entity/store.d.ts.map +1 -0
- package/dist/entity/store.js +349 -0
- package/dist/entity/store.js.map +1 -0
- package/dist/entity/types.d.ts +181 -0
- package/dist/entity/types.d.ts.map +1 -0
- package/dist/entity/types.js +10 -0
- package/dist/entity/types.js.map +1 -0
- package/dist/execution-context.d.ts +89 -0
- package/dist/execution-context.d.ts.map +1 -0
- package/dist/execution-context.js +146 -0
- package/dist/execution-context.js.map +1 -0
- package/dist/executor.d.ts +28 -0
- package/dist/executor.d.ts.map +1 -0
- package/dist/executor.js +33 -0
- package/dist/executor.js.map +1 -0
- package/dist/forms/form-entity-bridge.d.ts +95 -0
- package/dist/forms/form-entity-bridge.d.ts.map +1 -0
- package/dist/forms/form-entity-bridge.js +96 -0
- package/dist/forms/form-entity-bridge.js.map +1 -0
- package/dist/forms/form-write-target.d.ts +35 -0
- package/dist/forms/form-write-target.d.ts.map +1 -0
- package/dist/forms/form-write-target.js +81 -0
- package/dist/forms/form-write-target.js.map +1 -0
- package/dist/forms/index.d.ts +23 -0
- package/dist/forms/index.d.ts.map +1 -0
- package/dist/forms/index.js +25 -0
- package/dist/forms/index.js.map +1 -0
- package/dist/forms/named-control-values.d.ts +28 -0
- package/dist/forms/named-control-values.d.ts.map +1 -0
- package/dist/forms/named-control-values.js +42 -0
- package/dist/forms/named-control-values.js.map +1 -0
- package/dist/forms/processor.d.ts +56 -0
- package/dist/forms/processor.d.ts.map +1 -0
- package/dist/forms/processor.js +154 -0
- package/dist/forms/processor.js.map +1 -0
- package/dist/forms/types.d.ts +175 -0
- package/dist/forms/types.d.ts.map +1 -0
- package/dist/forms/types.js +33 -0
- package/dist/forms/types.js.map +1 -0
- package/dist/forms/validator.d.ts +62 -0
- package/dist/forms/validator.d.ts.map +1 -0
- package/dist/forms/validator.js +218 -0
- package/dist/forms/validator.js.map +1 -0
- package/dist/graph/index.d.ts +11 -0
- package/dist/graph/index.d.ts.map +1 -0
- package/dist/graph/index.js +9 -0
- package/dist/graph/index.js.map +1 -0
- package/dist/graph/resolver.d.ts +67 -0
- package/dist/graph/resolver.d.ts.map +1 -0
- package/dist/graph/resolver.js +243 -0
- package/dist/graph/resolver.js.map +1 -0
- package/dist/graph/types.d.ts +126 -0
- package/dist/graph/types.d.ts.map +1 -0
- package/dist/graph/types.js +9 -0
- package/dist/graph/types.js.map +1 -0
- package/dist/hooks/useInstalledAtoms.d.ts +97 -0
- package/dist/hooks/useInstalledAtoms.d.ts.map +1 -0
- package/dist/hooks/useInstalledAtoms.js +92 -0
- package/dist/hooks/useInstalledAtoms.js.map +1 -0
- package/dist/i18n/index.d.ts +16 -0
- package/dist/i18n/index.d.ts.map +1 -0
- package/dist/i18n/index.js +14 -0
- package/dist/i18n/index.js.map +1 -0
- package/dist/i18n/translator.d.ts +77 -0
- package/dist/i18n/translator.d.ts.map +1 -0
- package/dist/i18n/translator.js +357 -0
- package/dist/i18n/translator.js.map +1 -0
- package/dist/i18n/types.d.ts +94 -0
- package/dist/i18n/types.d.ts.map +1 -0
- package/dist/i18n/types.js +9 -0
- package/dist/i18n/types.js.map +1 -0
- package/dist/index.d.ts +65 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +95 -0
- package/dist/index.js.map +1 -0
- package/dist/kernel.d.ts +48 -0
- package/dist/kernel.d.ts.map +1 -0
- package/dist/kernel.js +258 -0
- package/dist/kernel.js.map +1 -0
- package/dist/perf/budget.d.ts +93 -0
- package/dist/perf/budget.d.ts.map +1 -0
- package/dist/perf/budget.js +122 -0
- package/dist/perf/budget.js.map +1 -0
- package/dist/perf/index.d.ts +17 -0
- package/dist/perf/index.d.ts.map +1 -0
- package/dist/perf/index.js +13 -0
- package/dist/perf/index.js.map +1 -0
- package/dist/perf/render-timer.d.ts +91 -0
- package/dist/perf/render-timer.d.ts.map +1 -0
- package/dist/perf/render-timer.js +136 -0
- package/dist/perf/render-timer.js.map +1 -0
- package/dist/perf/reporter.d.ts +127 -0
- package/dist/perf/reporter.d.ts.map +1 -0
- package/dist/perf/reporter.js +241 -0
- package/dist/perf/reporter.js.map +1 -0
- package/dist/perf/web-vitals.d.ts +112 -0
- package/dist/perf/web-vitals.d.ts.map +1 -0
- package/dist/perf/web-vitals.js +268 -0
- package/dist/perf/web-vitals.js.map +1 -0
- package/dist/registry.d.ts +64 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/registry.js +126 -0
- package/dist/registry.js.map +1 -0
- package/dist/render/BehaviorSurfaceProvider.d.ts +66 -0
- package/dist/render/BehaviorSurfaceProvider.d.ts.map +1 -0
- package/dist/render/BehaviorSurfaceProvider.js +185 -0
- package/dist/render/BehaviorSurfaceProvider.js.map +1 -0
- package/dist/render/BlockErrorBoundary.d.ts +27 -0
- package/dist/render/BlockErrorBoundary.d.ts.map +1 -0
- package/dist/render/BlockErrorBoundary.js +41 -0
- package/dist/render/BlockErrorBoundary.js.map +1 -0
- package/dist/render/DataBoundSurfaceRenderer.d.ts +79 -0
- package/dist/render/DataBoundSurfaceRenderer.d.ts.map +1 -0
- package/dist/render/DataBoundSurfaceRenderer.js +998 -0
- package/dist/render/DataBoundSurfaceRenderer.js.map +1 -0
- package/dist/render/DynamicBlockWrapper.d.ts +24 -0
- package/dist/render/DynamicBlockWrapper.d.ts.map +1 -0
- package/dist/render/DynamicBlockWrapper.js +117 -0
- package/dist/render/DynamicBlockWrapper.js.map +1 -0
- package/dist/render/appearance-resolver.d.ts +51 -0
- package/dist/render/appearance-resolver.d.ts.map +1 -0
- package/dist/render/appearance-resolver.js +78 -0
- package/dist/render/appearance-resolver.js.map +1 -0
- package/dist/render/capability-gate.d.ts +70 -0
- package/dist/render/capability-gate.d.ts.map +1 -0
- package/dist/render/capability-gate.js +94 -0
- package/dist/render/capability-gate.js.map +1 -0
- package/dist/render/conditional-states-css.d.ts +42 -0
- package/dist/render/conditional-states-css.d.ts.map +1 -0
- package/dist/render/conditional-states-css.js +82 -0
- package/dist/render/conditional-states-css.js.map +1 -0
- package/dist/render/connections-context.d.ts +32 -0
- package/dist/render/connections-context.d.ts.map +1 -0
- package/dist/render/connections-context.js +34 -0
- package/dist/render/connections-context.js.map +1 -0
- package/dist/render/dark-theme-css.d.ts +37 -0
- package/dist/render/dark-theme-css.d.ts.map +1 -0
- package/dist/render/dark-theme-css.js +67 -0
- package/dist/render/dark-theme-css.js.map +1 -0
- package/dist/render/data-binding-types.d.ts +192 -0
- package/dist/render/data-binding-types.d.ts.map +1 -0
- package/dist/render/data-binding-types.js +11 -0
- package/dist/render/data-binding-types.js.map +1 -0
- package/dist/render/data-cache.d.ts +31 -0
- package/dist/render/data-cache.d.ts.map +1 -0
- package/dist/render/data-cache.js +37 -0
- package/dist/render/data-cache.js.map +1 -0
- package/dist/render/derive-dark-theme.d.ts +18 -0
- package/dist/render/derive-dark-theme.d.ts.map +1 -0
- package/dist/render/derive-dark-theme.js +18 -0
- package/dist/render/derive-dark-theme.js.map +1 -0
- package/dist/render/dynamic-artifact-context.d.ts +78 -0
- package/dist/render/dynamic-artifact-context.d.ts.map +1 -0
- package/dist/render/dynamic-artifact-context.js +89 -0
- package/dist/render/dynamic-artifact-context.js.map +1 -0
- package/dist/render/dynamic-block-loader.d.ts +81 -0
- package/dist/render/dynamic-block-loader.d.ts.map +1 -0
- package/dist/render/dynamic-block-loader.js +197 -0
- package/dist/render/dynamic-block-loader.js.map +1 -0
- package/dist/render/endpoint.d.ts +19 -0
- package/dist/render/endpoint.d.ts.map +1 -0
- package/dist/render/endpoint.js +109 -0
- package/dist/render/endpoint.js.map +1 -0
- package/dist/render/entity-facade-context.d.ts +35 -0
- package/dist/render/entity-facade-context.d.ts.map +1 -0
- package/dist/render/entity-facade-context.js +37 -0
- package/dist/render/entity-facade-context.js.map +1 -0
- package/dist/render/group-states-css.d.ts +42 -0
- package/dist/render/group-states-css.d.ts.map +1 -0
- package/dist/render/group-states-css.js +73 -0
- package/dist/render/group-states-css.js.map +1 -0
- package/dist/render/hooks/useSurfaceEvents.d.ts +9 -0
- package/dist/render/hooks/useSurfaceEvents.d.ts.map +1 -0
- package/dist/render/hooks/useSurfaceEvents.js +9 -0
- package/dist/render/hooks/useSurfaceEvents.js.map +1 -0
- package/dist/render/hooks/useSurfaceId.d.ts +9 -0
- package/dist/render/hooks/useSurfaceId.d.ts.map +1 -0
- package/dist/render/hooks/useSurfaceId.js +9 -0
- package/dist/render/hooks/useSurfaceId.js.map +1 -0
- package/dist/render/index.d.ts +49 -0
- package/dist/render/index.d.ts.map +1 -0
- package/dist/render/index.js +61 -0
- package/dist/render/index.js.map +1 -0
- package/dist/render/interaction-rule-engine.d.ts +13 -0
- package/dist/render/interaction-rule-engine.d.ts.map +1 -0
- package/dist/render/interaction-rule-engine.js +47 -0
- package/dist/render/interaction-rule-engine.js.map +1 -0
- package/dist/render/keyframes-css.d.ts +32 -0
- package/dist/render/keyframes-css.d.ts.map +1 -0
- package/dist/render/keyframes-css.js +44 -0
- package/dist/render/keyframes-css.js.map +1 -0
- package/dist/render/query-state.d.ts +4 -0
- package/dist/render/query-state.d.ts.map +1 -0
- package/dist/render/query-state.js +70 -0
- package/dist/render/query-state.js.map +1 -0
- package/dist/render/renderer.d.ts +45 -0
- package/dist/render/renderer.d.ts.map +1 -0
- package/dist/render/renderer.js +937 -0
- package/dist/render/renderer.js.map +1 -0
- package/dist/render/resolve-expressions.d.ts +38 -0
- package/dist/render/resolve-expressions.d.ts.map +1 -0
- package/dist/render/resolve-expressions.js +309 -0
- package/dist/render/resolve-expressions.js.map +1 -0
- package/dist/render/responsive-style-css.d.ts +43 -0
- package/dist/render/responsive-style-css.d.ts.map +1 -0
- package/dist/render/responsive-style-css.js +123 -0
- package/dist/render/responsive-style-css.js.map +1 -0
- package/dist/render/responsive.d.ts +50 -0
- package/dist/render/responsive.d.ts.map +1 -0
- package/dist/render/responsive.js +99 -0
- package/dist/render/responsive.js.map +1 -0
- package/dist/render/scoped-css.d.ts +72 -0
- package/dist/render/scoped-css.d.ts.map +1 -0
- package/dist/render/scoped-css.js +102 -0
- package/dist/render/scoped-css.js.map +1 -0
- package/dist/render/shell-selection.d.ts +70 -0
- package/dist/render/shell-selection.d.ts.map +1 -0
- package/dist/render/shell-selection.js +117 -0
- package/dist/render/shell-selection.js.map +1 -0
- package/dist/render/states-css.d.ts +33 -0
- package/dist/render/states-css.d.ts.map +1 -0
- package/dist/render/states-css.js +63 -0
- package/dist/render/states-css.js.map +1 -0
- package/dist/render/surface-data-context.d.ts +19 -0
- package/dist/render/surface-data-context.d.ts.map +1 -0
- package/dist/render/surface-data-context.js +21 -0
- package/dist/render/surface-data-context.js.map +1 -0
- package/dist/render/surface-event-bus.d.ts +20 -0
- package/dist/render/surface-event-bus.d.ts.map +1 -0
- package/dist/render/surface-event-bus.js +68 -0
- package/dist/render/surface-event-bus.js.map +1 -0
- package/dist/render/surface-event-context.d.ts +12 -0
- package/dist/render/surface-event-context.d.ts.map +1 -0
- package/dist/render/surface-event-context.js +12 -0
- package/dist/render/surface-event-context.js.map +1 -0
- package/dist/render/surface-id-context.d.ts +9 -0
- package/dist/render/surface-id-context.d.ts.map +1 -0
- package/dist/render/surface-id-context.js +9 -0
- package/dist/render/surface-id-context.js.map +1 -0
- package/dist/render/theme-utils.d.ts +15 -0
- package/dist/render/theme-utils.d.ts.map +1 -0
- package/dist/render/theme-utils.js +15 -0
- package/dist/render/theme-utils.js.map +1 -0
- package/dist/render/types.d.ts +283 -0
- package/dist/render/types.d.ts.map +1 -0
- package/dist/render/types.js +9 -0
- package/dist/render/types.js.map +1 -0
- package/dist/render/visibility-css.d.ts +43 -0
- package/dist/render/visibility-css.d.ts.map +1 -0
- package/dist/render/visibility-css.js +119 -0
- package/dist/render/visibility-css.js.map +1 -0
- package/dist/render/width-scope.d.ts +35 -0
- package/dist/render/width-scope.d.ts.map +1 -0
- package/dist/render/width-scope.js +44 -0
- package/dist/render/width-scope.js.map +1 -0
- package/dist/render/write-only-sources.d.ts +34 -0
- package/dist/render/write-only-sources.d.ts.map +1 -0
- package/dist/render/write-only-sources.js +99 -0
- package/dist/render/write-only-sources.js.map +1 -0
- package/dist/routing/index.d.ts +15 -0
- package/dist/routing/index.d.ts.map +1 -0
- package/dist/routing/index.js +15 -0
- package/dist/routing/index.js.map +1 -0
- package/dist/routing/router.d.ts +43 -0
- package/dist/routing/router.d.ts.map +1 -0
- package/dist/routing/router.js +218 -0
- package/dist/routing/router.js.map +1 -0
- package/dist/routing/types.d.ts +125 -0
- package/dist/routing/types.d.ts.map +1 -0
- package/dist/routing/types.js +9 -0
- package/dist/routing/types.js.map +1 -0
- package/dist/seo/generator.d.ts +40 -0
- package/dist/seo/generator.d.ts.map +1 -0
- package/dist/seo/generator.js +236 -0
- package/dist/seo/generator.js.map +1 -0
- package/dist/seo/index.d.ts +15 -0
- package/dist/seo/index.d.ts.map +1 -0
- package/dist/seo/index.js +15 -0
- package/dist/seo/index.js.map +1 -0
- package/dist/seo/types.d.ts +182 -0
- package/dist/seo/types.d.ts.map +1 -0
- package/dist/seo/types.js +9 -0
- package/dist/seo/types.js.map +1 -0
- package/dist/state/index.d.ts +16 -0
- package/dist/state/index.d.ts.map +1 -0
- package/dist/state/index.js +16 -0
- package/dist/state/index.js.map +1 -0
- package/dist/state/manager.d.ts +34 -0
- package/dist/state/manager.d.ts.map +1 -0
- package/dist/state/manager.js +81 -0
- package/dist/state/manager.js.map +1 -0
- package/dist/state/store.d.ts +41 -0
- package/dist/state/store.d.ts.map +1 -0
- package/dist/state/store.js +145 -0
- package/dist/state/store.js.map +1 -0
- package/dist/state/types.d.ts +108 -0
- package/dist/state/types.d.ts.map +1 -0
- package/dist/state/types.js +9 -0
- package/dist/state/types.js.map +1 -0
- package/dist/surface/expression.d.ts +66 -0
- package/dist/surface/expression.d.ts.map +1 -0
- package/dist/surface/expression.js +179 -0
- package/dist/surface/expression.js.map +1 -0
- package/dist/surface/index.d.ts +33 -0
- package/dist/surface/index.d.ts.map +1 -0
- package/dist/surface/index.js +25 -0
- package/dist/surface/index.js.map +1 -0
- package/dist/surface/interpreter.d.ts +97 -0
- package/dist/surface/interpreter.d.ts.map +1 -0
- package/dist/surface/interpreter.js +231 -0
- package/dist/surface/interpreter.js.map +1 -0
- package/dist/surface/layout.d.ts +55 -0
- package/dist/surface/layout.d.ts.map +1 -0
- package/dist/surface/layout.js +288 -0
- package/dist/surface/layout.js.map +1 -0
- package/dist/surface/output.d.ts +91 -0
- package/dist/surface/output.d.ts.map +1 -0
- package/dist/surface/output.js +104 -0
- package/dist/surface/output.js.map +1 -0
- package/dist/surface/primitives.d.ts +181 -0
- package/dist/surface/primitives.d.ts.map +1 -0
- package/dist/surface/primitives.js +339 -0
- package/dist/surface/primitives.js.map +1 -0
- package/dist/surface/renderer.d.ts +97 -0
- package/dist/surface/renderer.d.ts.map +1 -0
- package/dist/surface/renderer.js +190 -0
- package/dist/surface/renderer.js.map +1 -0
- package/dist/surface/schemas.d.ts +182 -0
- package/dist/surface/schemas.d.ts.map +1 -0
- package/dist/surface/schemas.js +142 -0
- package/dist/surface/schemas.js.map +1 -0
- package/dist/surface/transforms.d.ts +145 -0
- package/dist/surface/transforms.d.ts.map +1 -0
- package/dist/surface/transforms.js +120 -0
- package/dist/surface/transforms.js.map +1 -0
- package/dist/surface/types.d.ts +161 -0
- package/dist/surface/types.d.ts.map +1 -0
- package/dist/surface/types.js +51 -0
- package/dist/surface/types.js.map +1 -0
- package/dist/surface/validation.d.ts +124 -0
- package/dist/surface/validation.d.ts.map +1 -0
- package/dist/surface/validation.js +147 -0
- package/dist/surface/validation.js.map +1 -0
- package/dist/validator.d.ts +56 -0
- package/dist/validator.d.ts.map +1 -0
- package/dist/validator.js +100 -0
- package/dist/validator.js.map +1 -0
- package/package.json +105 -3
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* State Management Types
|
|
3
|
+
*
|
|
4
|
+
* State management capability for surfaces
|
|
5
|
+
*
|
|
6
|
+
* @module @pwfabric/runtime/state/types
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Event emitted when state changes
|
|
10
|
+
*/
|
|
11
|
+
export interface StateChangeEvent<T = unknown> {
|
|
12
|
+
readonly key: string;
|
|
13
|
+
readonly previousValue: T | undefined;
|
|
14
|
+
readonly newValue: T;
|
|
15
|
+
readonly timestamp: number;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* State change listener callback
|
|
19
|
+
*/
|
|
20
|
+
export type StateChangeListener<T = unknown> = (value: T, event: StateChangeEvent<T>) => void;
|
|
21
|
+
/**
|
|
22
|
+
* State store interface for managing reactive state
|
|
23
|
+
*/
|
|
24
|
+
export interface StateStore<T = unknown> {
|
|
25
|
+
/**
|
|
26
|
+
* Get a value from the store
|
|
27
|
+
*/
|
|
28
|
+
get(key: string): T | undefined;
|
|
29
|
+
/**
|
|
30
|
+
* Set a value in the store
|
|
31
|
+
*/
|
|
32
|
+
set(key: string, value: T): void;
|
|
33
|
+
/**
|
|
34
|
+
* Subscribe to changes for a specific key
|
|
35
|
+
* Returns an unsubscribe function
|
|
36
|
+
*/
|
|
37
|
+
subscribe(key: string, listener: StateChangeListener<T>): () => void;
|
|
38
|
+
/**
|
|
39
|
+
* Clear all state from the store
|
|
40
|
+
*/
|
|
41
|
+
clear(): void;
|
|
42
|
+
/**
|
|
43
|
+
* Get all keys in the store
|
|
44
|
+
*/
|
|
45
|
+
keys(): string[];
|
|
46
|
+
/**
|
|
47
|
+
* Check if a key exists in the store
|
|
48
|
+
*/
|
|
49
|
+
has(key: string): boolean;
|
|
50
|
+
/**
|
|
51
|
+
* Get the number of entries in the store
|
|
52
|
+
*/
|
|
53
|
+
size(): number;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Manager for surface-scoped state stores
|
|
57
|
+
*/
|
|
58
|
+
export interface SurfaceStateManager {
|
|
59
|
+
/**
|
|
60
|
+
* Create a new store for a surface with initial state
|
|
61
|
+
*/
|
|
62
|
+
createStore<T>(surfaceId: string, initialState: T): StateStore<T>;
|
|
63
|
+
/**
|
|
64
|
+
* Get an existing store for a surface
|
|
65
|
+
*/
|
|
66
|
+
getStore<T>(surfaceId: string): StateStore<T> | undefined;
|
|
67
|
+
/**
|
|
68
|
+
* Check if a store exists for a surface
|
|
69
|
+
*/
|
|
70
|
+
hasStore(surfaceId: string): boolean;
|
|
71
|
+
/**
|
|
72
|
+
* Destroy a store for a surface
|
|
73
|
+
*/
|
|
74
|
+
destroyStore(surfaceId: string): void;
|
|
75
|
+
/**
|
|
76
|
+
* Destroy all stores
|
|
77
|
+
*/
|
|
78
|
+
destroyAll(): void;
|
|
79
|
+
/**
|
|
80
|
+
* Get all surface IDs with active stores
|
|
81
|
+
*/
|
|
82
|
+
getSurfaceIds(): string[];
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Configuration for state store
|
|
86
|
+
*/
|
|
87
|
+
export interface StateStoreConfig {
|
|
88
|
+
/**
|
|
89
|
+
* Whether to enable state change history
|
|
90
|
+
*/
|
|
91
|
+
readonly enableHistory?: boolean;
|
|
92
|
+
/**
|
|
93
|
+
* Maximum history entries to keep per key
|
|
94
|
+
*/
|
|
95
|
+
readonly maxHistorySize?: number;
|
|
96
|
+
/**
|
|
97
|
+
* Whether to deep clone values on get/set
|
|
98
|
+
*/
|
|
99
|
+
readonly deepClone?: boolean;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* State history entry
|
|
103
|
+
*/
|
|
104
|
+
export interface StateHistoryEntry<T = unknown> {
|
|
105
|
+
readonly value: T;
|
|
106
|
+
readonly timestamp: number;
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/state/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH;;GAEG;AACH,MAAM,WAAW,gBAAgB,CAAC,CAAC,GAAG,OAAO;IAC3C,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,aAAa,EAAE,CAAC,GAAG,SAAS,CAAA;IACrC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAA;IACpB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAC3B;AAED;;GAEG;AACH,MAAM,MAAM,mBAAmB,CAAC,CAAC,GAAG,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC,KAAK,IAAI,CAAA;AAM7F;;GAEG;AACH,MAAM,WAAW,UAAU,CAAC,CAAC,GAAG,OAAO;IACrC;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS,CAAA;IAE/B;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,CAAA;IAEhC;;;OAGG;IACH,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,CAAA;IAEpE;;OAEG;IACH,KAAK,IAAI,IAAI,CAAA;IAEb;;OAEG;IACH,IAAI,IAAI,MAAM,EAAE,CAAA;IAEhB;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;IAEzB;;OAEG;IACH,IAAI,IAAI,MAAM,CAAA;CACf;AAMD;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,WAAW,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAA;IAEjE;;OAEG;IACH,QAAQ,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,SAAS,CAAA;IAEzD;;OAEG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAA;IAEpC;;OAEG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IAErC;;OAEG;IACH,UAAU,IAAI,IAAI,CAAA;IAElB;;OAEG;IACH,aAAa,IAAI,MAAM,EAAE,CAAA;CAC1B;AAMD;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAA;IAEhC;;OAEG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAA;IAEhC;;OAEG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAA;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB,CAAC,CAAC,GAAG,OAAO;IAC5C,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAA;IACjB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAC3B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/state/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Expression Evaluator
|
|
3
|
+
*
|
|
4
|
+
* Safe expression evaluation for surface rendering
|
|
5
|
+
*
|
|
6
|
+
* Expressions are used in conditionals, loops, and data bindings.
|
|
7
|
+
* This evaluator provides a safe, sandboxed way to evaluate expressions.
|
|
8
|
+
*
|
|
9
|
+
* @module @pwfabric/runtime/surface/expression
|
|
10
|
+
*/
|
|
11
|
+
export type ExpressionResult<T = unknown> = {
|
|
12
|
+
readonly success: true;
|
|
13
|
+
readonly value: T;
|
|
14
|
+
} | {
|
|
15
|
+
readonly success: false;
|
|
16
|
+
readonly error: string;
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Expression context - the scope for evaluation
|
|
20
|
+
*/
|
|
21
|
+
export interface ExpressionContext {
|
|
22
|
+
readonly data: Record<string, unknown>;
|
|
23
|
+
readonly helpers?: Record<string, (...args: unknown[]) => unknown>;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Resolve a dotted path in an object
|
|
27
|
+
* e.g., "user.profile.name" -> obj.user.profile.name
|
|
28
|
+
*/
|
|
29
|
+
export declare function resolvePath(obj: unknown, path: string): unknown;
|
|
30
|
+
/**
|
|
31
|
+
* Evaluate an expression (the text between `{{` and `}}`).
|
|
32
|
+
*
|
|
33
|
+
* THE SAME PARSER AS THE BINDING EVALUATOR (binding/expression.ts). This used
|
|
34
|
+
* to be a regex/`split` evaluator of its own, and the two drifted: no
|
|
35
|
+
* parentheses, no arithmetic, helper arguments split on every comma — so
|
|
36
|
+
* `{{a == 'x' && (b || c)}}` failed, and a failed `visibleWhen` rendered its
|
|
37
|
+
* raw template, which counts as visible.
|
|
38
|
+
*
|
|
39
|
+
* Supported: paths (`user.name`, `items[0]`, `items.0`, hyphenated source ids
|
|
40
|
+
* `hero-stats.0.text`), literals, `! - +`, `* / %`, `+ -`, comparisons,
|
|
41
|
+
* `&& || ??` (short-circuit), `?:`, parentheses, array literals, helper calls
|
|
42
|
+
* (`join(xs, ', ')`) and a safe list of string / array / number methods
|
|
43
|
+
* (`name.toLowerCase().includes(q)`).
|
|
44
|
+
*
|
|
45
|
+
* Names resolve against `context.data`; a call resolves against
|
|
46
|
+
* `context.helpers`. In this mode a `-` between two name characters is part of
|
|
47
|
+
* the name (source ids are hyphenated) — write subtraction as `a - b`.
|
|
48
|
+
*
|
|
49
|
+
* A syntax error, an unknown helper or an unsupported method is a FAILURE
|
|
50
|
+
* (`success: false`), never a partial value.
|
|
51
|
+
*/
|
|
52
|
+
export declare function evaluate(expression: string, context: ExpressionContext): ExpressionResult;
|
|
53
|
+
/**
|
|
54
|
+
* Interpolate expressions within a template string
|
|
55
|
+
* e.g., "Hello, {{user.name}}!" -> "Hello, John!"
|
|
56
|
+
*/
|
|
57
|
+
export declare function interpolate(template: string, context: ExpressionContext): ExpressionResult<string>;
|
|
58
|
+
/**
|
|
59
|
+
* Default helper functions available in expressions
|
|
60
|
+
*/
|
|
61
|
+
export declare const DEFAULT_HELPERS: Record<string, (...args: unknown[]) => unknown>;
|
|
62
|
+
/**
|
|
63
|
+
* Create an expression context with default helpers
|
|
64
|
+
*/
|
|
65
|
+
export declare function createExpressionContext(data: Record<string, unknown>, additionalHelpers?: Record<string, (...args: unknown[]) => unknown>): ExpressionContext;
|
|
66
|
+
//# sourceMappingURL=expression.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expression.d.ts","sourceRoot":"","sources":["../../src/surface/expression.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAWH,MAAM,MAAM,gBAAgB,CAAC,CAAC,GAAG,OAAO,IACpC;IAAE,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAA;CAAE,GAC7C;IAAE,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAA;AAEvD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACtC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,CAAA;CACnE;AAMD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAmC/D;AAMD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,gBAAgB,CAiBzF;AAMD;;;GAGG;AACH,wBAAgB,WAAW,CACzB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,iBAAiB,GACzB,gBAAgB,CAAC,MAAM,CAAC,CAuB1B;AAMD;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAwC3E,CAAA;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,GAClE,iBAAiB,CAKnB"}
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Expression Evaluator
|
|
3
|
+
*
|
|
4
|
+
* Safe expression evaluation for surface rendering
|
|
5
|
+
*
|
|
6
|
+
* Expressions are used in conditionals, loops, and data bindings.
|
|
7
|
+
* This evaluator provides a safe, sandboxed way to evaluate expressions.
|
|
8
|
+
*
|
|
9
|
+
* @module @pwfabric/runtime/surface/expression
|
|
10
|
+
*/
|
|
11
|
+
// ============================================================
|
|
12
|
+
// EXPRESSION TYPES
|
|
13
|
+
// ============================================================
|
|
14
|
+
/**
|
|
15
|
+
* Expression result
|
|
16
|
+
*/
|
|
17
|
+
import { DEFAULT_BINDING_HELPERS, evaluateWithScope, readProperty } from '../binding/expression.js';
|
|
18
|
+
// ============================================================
|
|
19
|
+
// PATH RESOLUTION
|
|
20
|
+
// ============================================================
|
|
21
|
+
/**
|
|
22
|
+
* Resolve a dotted path in an object
|
|
23
|
+
* e.g., "user.profile.name" -> obj.user.profile.name
|
|
24
|
+
*/
|
|
25
|
+
export function resolvePath(obj, path) {
|
|
26
|
+
if (!path || typeof obj !== 'object' || obj === null) {
|
|
27
|
+
return undefined;
|
|
28
|
+
}
|
|
29
|
+
const parts = path.split('.');
|
|
30
|
+
let current = obj;
|
|
31
|
+
for (const part of parts) {
|
|
32
|
+
if (current === null || current === undefined) {
|
|
33
|
+
return undefined;
|
|
34
|
+
}
|
|
35
|
+
// Handle array indexing: items[0]
|
|
36
|
+
const arrayMatch = part.match(/^(\w+)\[(\d+)\]$/);
|
|
37
|
+
if (arrayMatch) {
|
|
38
|
+
const prop = arrayMatch[1];
|
|
39
|
+
const index = arrayMatch[2];
|
|
40
|
+
if (prop && index) {
|
|
41
|
+
current = readProperty(current, prop);
|
|
42
|
+
if (Array.isArray(current)) {
|
|
43
|
+
current = current[parseInt(index, 10)];
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
return undefined;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
else if (typeof current === 'object') {
|
|
51
|
+
// A list of ONE record is read through — see readProperty.
|
|
52
|
+
current = readProperty(current, part);
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
return undefined;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return current;
|
|
59
|
+
}
|
|
60
|
+
// ============================================================
|
|
61
|
+
// EXPRESSION EVALUATOR
|
|
62
|
+
// ============================================================
|
|
63
|
+
/**
|
|
64
|
+
* Evaluate an expression (the text between `{{` and `}}`).
|
|
65
|
+
*
|
|
66
|
+
* THE SAME PARSER AS THE BINDING EVALUATOR (binding/expression.ts). This used
|
|
67
|
+
* to be a regex/`split` evaluator of its own, and the two drifted: no
|
|
68
|
+
* parentheses, no arithmetic, helper arguments split on every comma — so
|
|
69
|
+
* `{{a == 'x' && (b || c)}}` failed, and a failed `visibleWhen` rendered its
|
|
70
|
+
* raw template, which counts as visible.
|
|
71
|
+
*
|
|
72
|
+
* Supported: paths (`user.name`, `items[0]`, `items.0`, hyphenated source ids
|
|
73
|
+
* `hero-stats.0.text`), literals, `! - +`, `* / %`, `+ -`, comparisons,
|
|
74
|
+
* `&& || ??` (short-circuit), `?:`, parentheses, array literals, helper calls
|
|
75
|
+
* (`join(xs, ', ')`) and a safe list of string / array / number methods
|
|
76
|
+
* (`name.toLowerCase().includes(q)`).
|
|
77
|
+
*
|
|
78
|
+
* Names resolve against `context.data`; a call resolves against
|
|
79
|
+
* `context.helpers`. In this mode a `-` between two name characters is part of
|
|
80
|
+
* the name (source ids are hyphenated) — write subtraction as `a - b`.
|
|
81
|
+
*
|
|
82
|
+
* A syntax error, an unknown helper or an unsupported method is a FAILURE
|
|
83
|
+
* (`success: false`), never a partial value.
|
|
84
|
+
*/
|
|
85
|
+
export function evaluate(expression, context) {
|
|
86
|
+
try {
|
|
87
|
+
const data = context.data;
|
|
88
|
+
const helpers = context.helpers;
|
|
89
|
+
const value = evaluateWithScope(expression, {
|
|
90
|
+
lookup: (name) => data[name],
|
|
91
|
+
helper: (name) => helpers && Object.prototype.hasOwnProperty.call(helpers, name) ? helpers[name] : undefined,
|
|
92
|
+
}, { hyphenNames: true });
|
|
93
|
+
return { success: true, value };
|
|
94
|
+
}
|
|
95
|
+
catch (e) {
|
|
96
|
+
return { success: false, error: `Unable to evaluate expression: ${expression.trim()} — ${e instanceof Error ? e.message : String(e)}` };
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
// ============================================================
|
|
100
|
+
// INTERPOLATION
|
|
101
|
+
// ============================================================
|
|
102
|
+
/**
|
|
103
|
+
* Interpolate expressions within a template string
|
|
104
|
+
* e.g., "Hello, {{user.name}}!" -> "Hello, John!"
|
|
105
|
+
*/
|
|
106
|
+
export function interpolate(template, context) {
|
|
107
|
+
const pattern = /\{\{(.+?)\}\}/g;
|
|
108
|
+
let result = template;
|
|
109
|
+
let match;
|
|
110
|
+
while ((match = pattern.exec(template)) !== null) {
|
|
111
|
+
const placeholder = match[0];
|
|
112
|
+
const expression = match[1];
|
|
113
|
+
if (!expression)
|
|
114
|
+
continue;
|
|
115
|
+
const evalResult = evaluate(expression.trim(), context);
|
|
116
|
+
if (!evalResult.success) {
|
|
117
|
+
return evalResult;
|
|
118
|
+
}
|
|
119
|
+
// CALLBACK replacer, NOT a string replacement. When its second argument is
|
|
120
|
+
// a string, `String.replace` treats `$&`, `$\``, `$'`, `$$` as REPLACEMENT
|
|
121
|
+
// PATTERNS: `"$$5"` in the data would print as `"$5"`, and `"a$&b"` would
|
|
122
|
+
// bring back the placeholder itself. The sibling evaluator
|
|
123
|
+
// (binding/expression.ts) uses a callback too.
|
|
124
|
+
const replacement = String(evalResult.value ?? '');
|
|
125
|
+
result = result.replace(placeholder, () => replacement);
|
|
126
|
+
}
|
|
127
|
+
return { success: true, value: result };
|
|
128
|
+
}
|
|
129
|
+
// ============================================================
|
|
130
|
+
// BUILT-IN HELPERS
|
|
131
|
+
// ============================================================
|
|
132
|
+
/**
|
|
133
|
+
* Default helper functions available in expressions
|
|
134
|
+
*/
|
|
135
|
+
export const DEFAULT_HELPERS = {
|
|
136
|
+
// The binding evaluator's helper set comes first. Two evaluators exist —
|
|
137
|
+
// binding/expression (bindings, computed values) and this one (block props
|
|
138
|
+
// through resolveBlockExpressions) — and their helper lists drifted:
|
|
139
|
+
// `sumBy`, `groupCount`, `min`, `max`, `currency`, `date`… live in the
|
|
140
|
+
// binding set, and without it a KPI tile authored as
|
|
141
|
+
// `{{sumBy(customers,'mrr')}}` would render the raw template. One name, one meaning: the surface-specific entries below
|
|
142
|
+
// override where both define the same name.
|
|
143
|
+
...DEFAULT_BINDING_HELPERS,
|
|
144
|
+
// String helpers
|
|
145
|
+
upper: (s) => String(s).toUpperCase(),
|
|
146
|
+
lower: (s) => String(s).toLowerCase(),
|
|
147
|
+
trim: (s) => String(s).trim(),
|
|
148
|
+
length: (s) => (Array.isArray(s) ? s.length : String(s).length),
|
|
149
|
+
concat: (...args) => args.map(String).join(''),
|
|
150
|
+
// Number helpers
|
|
151
|
+
// `round` comes from the binding set: `round(n)` as before, `round(n, 2)`
|
|
152
|
+
// to two decimals (this override used to drop the second argument).
|
|
153
|
+
floor: (n) => Math.floor(Number(n)),
|
|
154
|
+
ceil: (n) => Math.ceil(Number(n)),
|
|
155
|
+
abs: (n) => Math.abs(Number(n)),
|
|
156
|
+
// Array helpers
|
|
157
|
+
first: (arr) => (Array.isArray(arr) ? arr[0] : undefined),
|
|
158
|
+
last: (arr) => (Array.isArray(arr) ? arr[arr.length - 1] : undefined),
|
|
159
|
+
isEmpty: (v) => v === null || v === undefined || v === '' || (Array.isArray(v) && v.length === 0),
|
|
160
|
+
isNotEmpty: (v) => v !== null && v !== undefined && v !== '' && !(Array.isArray(v) && v.length === 0),
|
|
161
|
+
// Type helpers
|
|
162
|
+
typeof: (v) => typeof v,
|
|
163
|
+
isArray: (v) => Array.isArray(v),
|
|
164
|
+
isString: (v) => typeof v === 'string',
|
|
165
|
+
isNumber: (v) => typeof v === 'number',
|
|
166
|
+
isBool: (v) => typeof v === 'boolean',
|
|
167
|
+
// Formatting helpers
|
|
168
|
+
json: (v) => JSON.stringify(v),
|
|
169
|
+
};
|
|
170
|
+
/**
|
|
171
|
+
* Create an expression context with default helpers
|
|
172
|
+
*/
|
|
173
|
+
export function createExpressionContext(data, additionalHelpers) {
|
|
174
|
+
return {
|
|
175
|
+
data,
|
|
176
|
+
helpers: { ...DEFAULT_HELPERS, ...additionalHelpers },
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
//# sourceMappingURL=expression.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expression.js","sourceRoot":"","sources":["../../src/surface/expression.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,+DAA+D;AAC/D,mBAAmB;AACnB,+DAA+D;AAE/D;;GAEG;AACH,OAAO,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAcnG,+DAA+D;AAC/D,kBAAkB;AAClB,+DAA+D;AAE/D;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,GAAY,EAAE,IAAY;IACpD,IAAI,CAAC,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QACrD,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAC7B,IAAI,OAAO,GAAY,GAAG,CAAA;IAE1B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC9C,OAAO,SAAS,CAAA;QAClB,CAAC;QAED,kCAAkC;QAClC,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAA;QACjD,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,CAAA;YAC1B,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,CAAA;YAC3B,IAAI,IAAI,IAAI,KAAK,EAAE,CAAC;gBAClB,OAAO,GAAG,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;gBACrC,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC3B,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAA;gBACxC,CAAC;qBAAM,CAAC;oBACN,OAAO,SAAS,CAAA;gBAClB,CAAC;YACH,CAAC;QACH,CAAC;aAAM,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YACvC,2DAA2D;YAC3D,OAAO,GAAG,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;QACvC,CAAC;aAAM,CAAC;YACN,OAAO,SAAS,CAAA;QAClB,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,+DAA+D;AAC/D,uBAAuB;AACvB,+DAA+D;AAE/D;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,QAAQ,CAAC,UAAkB,EAAE,OAA0B;IACrE,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAA;QACzB,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAA;QAC/B,MAAM,KAAK,GAAG,iBAAiB,CAC7B,UAAU,EACV;YACE,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;YAC5B,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CACf,OAAO,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;SAC7F,EACD,EAAE,WAAW,EAAE,IAAI,EAAE,CACtB,CAAA;QACD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAA;IACjC,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,kCAAkC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAA;IACzI,CAAC;AACH,CAAC;AAED,+DAA+D;AAC/D,gBAAgB;AAChB,+DAA+D;AAE/D;;;GAGG;AACH,MAAM,UAAU,WAAW,CACzB,QAAgB,EAChB,OAA0B;IAE1B,MAAM,OAAO,GAAG,gBAAgB,CAAA;IAChC,IAAI,MAAM,GAAG,QAAQ,CAAA;IACrB,IAAI,KAA6B,CAAA;IAEjC,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QACjD,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;QAC5B,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;QAC3B,IAAI,CAAC,UAAU;YAAE,SAAQ;QACzB,MAAM,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,OAAO,CAAC,CAAA;QACvD,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;YACxB,OAAO,UAAsC,CAAA;QAC/C,CAAC;QACD,2EAA2E;QAC3E,2EAA2E;QAC3E,0EAA0E;QAC1E,2DAA2D;QAC3D,+CAA+C;QAC/C,MAAM,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,IAAI,EAAE,CAAC,CAAA;QAClD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,CAAA;IACzD,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAA;AACzC,CAAC;AAED,+DAA+D;AAC/D,mBAAmB;AACnB,+DAA+D;AAE/D;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAoD;IAC9E,yEAAyE;IACzE,2EAA2E;IAC3E,qEAAqE;IACrE,uEAAuE;IACvE,qDAAqD;IACrD,wHAAwH;IACxH,4CAA4C;IAC5C,GAAG,uBAAuB;IAC1B,iBAAiB;IACjB,KAAK,EAAE,CAAC,CAAU,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;IAC9C,KAAK,EAAE,CAAC,CAAU,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;IAC9C,IAAI,EAAE,CAAC,CAAU,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;IACtC,MAAM,EAAE,CAAC,CAAU,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IACxE,MAAM,EAAE,CAAC,GAAG,IAAe,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;IAEzD,iBAAiB;IACjB,0EAA0E;IAC1E,oEAAoE;IACpE,KAAK,EAAE,CAAC,CAAU,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC5C,IAAI,EAAE,CAAC,CAAU,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC1C,GAAG,EAAE,CAAC,CAAU,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAExC,gBAAgB;IAChB,KAAK,EAAE,CAAC,GAAY,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAClE,IAAI,EAAE,CAAC,GAAY,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC9E,OAAO,EAAE,CAAC,CAAU,EAAE,EAAE,CACtB,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;IACnF,UAAU,EAAE,CAAC,CAAU,EAAE,EAAE,CACzB,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;IAEpF,eAAe;IACf,MAAM,EAAE,CAAC,CAAU,EAAE,EAAE,CAAC,OAAO,CAAC;IAChC,OAAO,EAAE,CAAC,CAAU,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IACzC,QAAQ,EAAE,CAAC,CAAU,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ;IAC/C,QAAQ,EAAE,CAAC,CAAU,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ;IAC/C,MAAM,EAAE,CAAC,CAAU,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,SAAS;IAE9C,qBAAqB;IACrB,IAAI,EAAE,CAAC,CAAU,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;CACxC,CAAA;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB,CACrC,IAA6B,EAC7B,iBAAmE;IAEnE,OAAO;QACL,IAAI;QACJ,OAAO,EAAE,EAAE,GAAG,eAAe,EAAE,GAAG,iBAAiB,EAAE;KACtD,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Surface Rendering Module
|
|
3
|
+
*
|
|
4
|
+
* Surface JSON interpreter, renderer, layout system, and primitives
|
|
5
|
+
*
|
|
6
|
+
* This module provides the complete surface rendering pipeline:
|
|
7
|
+
* - JSON interpretation and validation
|
|
8
|
+
* - Layout resolution (slots, conditionals, loops)
|
|
9
|
+
* - Deterministic rendering
|
|
10
|
+
* - Built-in primitives
|
|
11
|
+
*
|
|
12
|
+
* @module @pwfabric/runtime/surface
|
|
13
|
+
*/
|
|
14
|
+
export type { PrimitiveType, BaseNodeProps, RenderNode, SurfaceJSON, BindingJSON, LayoutJSON, RenderContext, RenderResult, RenderOutput, RenderError, RenderErrorCode, } from './types.js';
|
|
15
|
+
export { createNode, createRenderContext, createChildContext, renderSuccess, renderError, } from './types.js';
|
|
16
|
+
export type { ExpressionResult, ExpressionContext } from './expression.js';
|
|
17
|
+
export { evaluate, interpolate, resolvePath, createExpressionContext, DEFAULT_HELPERS, } from './expression.js';
|
|
18
|
+
export type { LayoutResult } from './layout.js';
|
|
19
|
+
export { resolveLayout, createSlotMap, extractSlots, composeLayouts, wrapInContainer, validateLayout, } from './layout.js';
|
|
20
|
+
export type { TextProps, ContainerProps, ButtonProps, InputProps, ImageProps, LinkProps, ListProps, HeadingProps, SpacerProps, DividerProps, SlotProps, ConditionalProps, LoopProps, PrimitiveDefinition, PropDefinition, } from './primitives.js';
|
|
21
|
+
export { PRIMITIVE_DEFINITIONS, text, container, button, heading, spacer, divider, isPrimitive, getPrimitiveDefinition, } from './primitives.js';
|
|
22
|
+
export { surfaceJsonSchema, layoutJsonSchema, bindingJsonSchema, environmentSchema, isSurfaceJSON, isLayoutJSON, isBindingJSON, } from './schemas.js';
|
|
23
|
+
export type { InterpretedSurface, InterpretationResult, InterpretSurfaceOptions, } from './interpreter.js';
|
|
24
|
+
export { interpretSurface, parseSurfaceJSON, SurfaceBuilder, surface, createSurfaceContext, } from './interpreter.js';
|
|
25
|
+
export type { RenderOptions, SurfaceRenderer } from './renderer.js';
|
|
26
|
+
export { DeterministicRenderer, createRenderer, renderSurface, isRenderSuccess, isRenderError, serializeNode, serializeOutput, hashNode, verifyDeterminism, } from './renderer.js';
|
|
27
|
+
export type { BlockPropsValidationResult, BlockPropsValidationOptions, LayoutPropsIssue, ManifestPropSpec, BlockManifestPropsMap, ManifestPropFinding, ManifestPropFindingCode, } from './validation.js';
|
|
28
|
+
export { validateBlockProps, validateLayoutProps, blockManifestPropFindings, manifestPropFindings, } from './validation.js';
|
|
29
|
+
export type { MapTransformConfig, FilterTransformConfig, PickTransformConfig, OmitTransformConfig, CustomTransformConfig, TypedTransformConfig, TransformValidationResult, } from './transforms.js';
|
|
30
|
+
export { mapTransformConfigSchema, filterTransformConfigSchema, pickTransformConfigSchema, omitTransformConfigSchema, customTransformConfigSchema, validateTransformConfig, narrowTransformDescriptor, createMapTransform, createFilterTransform, createPickTransform, createOmitTransform, createCustomTransform, } from './transforms.js';
|
|
31
|
+
export type { TypedWebOutput, TypedApiOutput, TypedCliOutput, OutputFactoryResult, } from './output.js';
|
|
32
|
+
export { createWebOutput, createApiOutput, createCliOutput } from './output.js';
|
|
33
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/surface/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,YAAY,EACV,aAAa,EACb,aAAa,EACb,UAAU,EACV,WAAW,EACX,WAAW,EACX,UAAU,EACV,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,eAAe,GAChB,MAAM,YAAY,CAAA;AAEnB,OAAO,EACL,UAAU,EACV,mBAAmB,EACnB,kBAAkB,EAClB,aAAa,EACb,WAAW,GACZ,MAAM,YAAY,CAAA;AAGnB,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAC1E,OAAO,EACL,QAAQ,EACR,WAAW,EACX,WAAW,EACX,uBAAuB,EACvB,eAAe,GAChB,MAAM,iBAAiB,CAAA;AAGxB,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,EACL,aAAa,EACb,aAAa,EACb,YAAY,EACZ,cAAc,EACd,eAAe,EACf,cAAc,GACf,MAAM,aAAa,CAAA;AAGpB,YAAY,EACV,SAAS,EACT,cAAc,EACd,WAAW,EACX,UAAU,EACV,UAAU,EACV,SAAS,EACT,SAAS,EACT,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,SAAS,EACT,gBAAgB,EAChB,SAAS,EACT,mBAAmB,EACnB,cAAc,GACf,MAAM,iBAAiB,CAAA;AAExB,OAAO,EACL,qBAAqB,EACrB,IAAI,EACJ,SAAS,EACT,MAAM,EACN,OAAO,EACP,MAAM,EACN,OAAO,EACP,WAAW,EACX,sBAAsB,GACvB,MAAM,iBAAiB,CAAA;AAGxB,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,EACb,YAAY,EACZ,aAAa,GACd,MAAM,cAAc,CAAA;AAGrB,YAAY,EACV,kBAAkB,EAClB,oBAAoB,EACpB,uBAAuB,GACxB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACd,OAAO,EACP,oBAAoB,GACrB,MAAM,kBAAkB,CAAA;AAGzB,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AACnE,OAAO,EACL,qBAAqB,EACrB,cAAc,EACd,aAAa,EACb,eAAe,EACf,aAAa,EACb,aAAa,EACb,eAAe,EACf,QAAQ,EACR,iBAAiB,GAClB,MAAM,eAAe,CAAA;AAGtB,YAAY,EACV,0BAA0B,EAC1B,2BAA2B,EAC3B,gBAAgB,EAChB,gBAAgB,EAChB,qBAAqB,EACrB,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,yBAAyB,EACzB,oBAAoB,GACrB,MAAM,iBAAiB,CAAA;AAGxB,YAAY,EACV,kBAAkB,EAClB,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,EACrB,oBAAoB,EACpB,yBAAyB,GAC1B,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACL,wBAAwB,EACxB,2BAA2B,EAC3B,yBAAyB,EACzB,yBAAyB,EACzB,2BAA2B,EAC3B,uBAAuB,EACvB,yBAAyB,EACzB,kBAAkB,EAClB,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,iBAAiB,CAAA;AAGxB,YAAY,EACV,cAAc,EACd,cAAc,EACd,cAAc,EACd,mBAAmB,GACpB,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Surface Rendering Module
|
|
3
|
+
*
|
|
4
|
+
* Surface JSON interpreter, renderer, layout system, and primitives
|
|
5
|
+
*
|
|
6
|
+
* This module provides the complete surface rendering pipeline:
|
|
7
|
+
* - JSON interpretation and validation
|
|
8
|
+
* - Layout resolution (slots, conditionals, loops)
|
|
9
|
+
* - Deterministic rendering
|
|
10
|
+
* - Built-in primitives
|
|
11
|
+
*
|
|
12
|
+
* @module @pwfabric/runtime/surface
|
|
13
|
+
*/
|
|
14
|
+
export { createNode, createRenderContext, createChildContext, renderSuccess, renderError, } from './types.js';
|
|
15
|
+
export { evaluate, interpolate, resolvePath, createExpressionContext, DEFAULT_HELPERS, } from './expression.js';
|
|
16
|
+
export { resolveLayout, createSlotMap, extractSlots, composeLayouts, wrapInContainer, validateLayout, } from './layout.js';
|
|
17
|
+
export { PRIMITIVE_DEFINITIONS, text, container, button, heading, spacer, divider, isPrimitive, getPrimitiveDefinition, } from './primitives.js';
|
|
18
|
+
// Schemas
|
|
19
|
+
export { surfaceJsonSchema, layoutJsonSchema, bindingJsonSchema, environmentSchema, isSurfaceJSON, isLayoutJSON, isBindingJSON, } from './schemas.js';
|
|
20
|
+
export { interpretSurface, parseSurfaceJSON, SurfaceBuilder, surface, createSurfaceContext, } from './interpreter.js';
|
|
21
|
+
export { DeterministicRenderer, createRenderer, renderSurface, isRenderSuccess, isRenderError, serializeNode, serializeOutput, hashNode, verifyDeterminism, } from './renderer.js';
|
|
22
|
+
export { validateBlockProps, validateLayoutProps, blockManifestPropFindings, manifestPropFindings, } from './validation.js';
|
|
23
|
+
export { mapTransformConfigSchema, filterTransformConfigSchema, pickTransformConfigSchema, omitTransformConfigSchema, customTransformConfigSchema, validateTransformConfig, narrowTransformDescriptor, createMapTransform, createFilterTransform, createPickTransform, createOmitTransform, createCustomTransform, } from './transforms.js';
|
|
24
|
+
export { createWebOutput, createApiOutput, createCliOutput } from './output.js';
|
|
25
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/surface/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAiBH,OAAO,EACL,UAAU,EACV,mBAAmB,EACnB,kBAAkB,EAClB,aAAa,EACb,WAAW,GACZ,MAAM,YAAY,CAAA;AAInB,OAAO,EACL,QAAQ,EACR,WAAW,EACX,WAAW,EACX,uBAAuB,EACvB,eAAe,GAChB,MAAM,iBAAiB,CAAA;AAIxB,OAAO,EACL,aAAa,EACb,aAAa,EACb,YAAY,EACZ,cAAc,EACd,eAAe,EACf,cAAc,GACf,MAAM,aAAa,CAAA;AAqBpB,OAAO,EACL,qBAAqB,EACrB,IAAI,EACJ,SAAS,EACT,MAAM,EACN,OAAO,EACP,MAAM,EACN,OAAO,EACP,WAAW,EACX,sBAAsB,GACvB,MAAM,iBAAiB,CAAA;AAExB,UAAU;AACV,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,EACb,YAAY,EACZ,aAAa,GACd,MAAM,cAAc,CAAA;AAQrB,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACd,OAAO,EACP,oBAAoB,GACrB,MAAM,kBAAkB,CAAA;AAIzB,OAAO,EACL,qBAAqB,EACrB,cAAc,EACd,aAAa,EACb,eAAe,EACf,aAAa,EACb,aAAa,EACb,eAAe,EACf,QAAQ,EACR,iBAAiB,GAClB,MAAM,eAAe,CAAA;AAYtB,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,yBAAyB,EACzB,oBAAoB,GACrB,MAAM,iBAAiB,CAAA;AAYxB,OAAO,EACL,wBAAwB,EACxB,2BAA2B,EAC3B,yBAAyB,EACzB,yBAAyB,EACzB,2BAA2B,EAC3B,uBAAuB,EACvB,yBAAyB,EACzB,kBAAkB,EAClB,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,iBAAiB,CAAA;AASxB,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Surface JSON Interpreter
|
|
3
|
+
*
|
|
4
|
+
* Parse and validate Surface JSON definitions
|
|
5
|
+
*
|
|
6
|
+
* The interpreter converts Surface JSON into a validated Surface object
|
|
7
|
+
* that can be rendered by the renderer.
|
|
8
|
+
*
|
|
9
|
+
* @module @pwfabric/runtime/surface/interpreter
|
|
10
|
+
*/
|
|
11
|
+
import type { SurfaceId, CapabilityId } from '@pwfabric/contracts';
|
|
12
|
+
import type { SurfaceJSON, LayoutJSON, RenderContext } from './types.js';
|
|
13
|
+
import { type BlockPropsValidationOptions, type ManifestPropFinding } from './validation.js';
|
|
14
|
+
import type { EnvironmentType } from '@pwfabric/contracts';
|
|
15
|
+
/**
|
|
16
|
+
* Interpreted surface
|
|
17
|
+
*/
|
|
18
|
+
export interface InterpretedSurface {
|
|
19
|
+
readonly id: SurfaceId;
|
|
20
|
+
readonly version: string;
|
|
21
|
+
readonly environment: EnvironmentType;
|
|
22
|
+
readonly metadata: {
|
|
23
|
+
readonly name: string;
|
|
24
|
+
readonly description?: string;
|
|
25
|
+
readonly tags?: readonly string[];
|
|
26
|
+
};
|
|
27
|
+
readonly bindings: Map<string, CapabilityId>;
|
|
28
|
+
readonly layout: LayoutJSON;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Interpretation result
|
|
32
|
+
*/
|
|
33
|
+
export type InterpretationResult = {
|
|
34
|
+
readonly success: true;
|
|
35
|
+
readonly surface: InterpretedSurface;
|
|
36
|
+
/**
|
|
37
|
+
* Manifest findings when `validation.manifests` was supplied.
|
|
38
|
+
* Warnings only: the surface is interpreted all the same.
|
|
39
|
+
*/
|
|
40
|
+
readonly warnings?: readonly ManifestPropFinding[];
|
|
41
|
+
} | {
|
|
42
|
+
readonly success: false;
|
|
43
|
+
readonly errors: readonly string[];
|
|
44
|
+
};
|
|
45
|
+
/**
|
|
46
|
+
* Options for surface interpretation
|
|
47
|
+
*/
|
|
48
|
+
export interface InterpretSurfaceOptions {
|
|
49
|
+
/**
|
|
50
|
+
* Block props validation options.
|
|
51
|
+
* Set to false to disable prop validation entirely.
|
|
52
|
+
*/
|
|
53
|
+
readonly validation?: BlockPropsValidationOptions | false;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Interpret a Surface JSON definition
|
|
57
|
+
*/
|
|
58
|
+
export declare function interpretSurface(json: SurfaceJSON, options?: InterpretSurfaceOptions): InterpretationResult;
|
|
59
|
+
/**
|
|
60
|
+
* Parse Surface JSON from a string
|
|
61
|
+
*/
|
|
62
|
+
export declare function parseSurfaceJSON(jsonString: string): InterpretationResult;
|
|
63
|
+
/**
|
|
64
|
+
* Surface builder for programmatic construction
|
|
65
|
+
*/
|
|
66
|
+
export declare class SurfaceBuilder {
|
|
67
|
+
private _id;
|
|
68
|
+
private _version;
|
|
69
|
+
private _environment;
|
|
70
|
+
private _metadata;
|
|
71
|
+
private _bindings;
|
|
72
|
+
private _layout;
|
|
73
|
+
private _validationOptions;
|
|
74
|
+
constructor(id: string);
|
|
75
|
+
version(v: string): this;
|
|
76
|
+
environment(env: EnvironmentType): this;
|
|
77
|
+
name(n: string): this;
|
|
78
|
+
description(d: string): this;
|
|
79
|
+
tags(...t: string[]): this;
|
|
80
|
+
bind(capability: string, alias?: string): this;
|
|
81
|
+
layout(l: LayoutJSON): this;
|
|
82
|
+
/**
|
|
83
|
+
* Configure block props validation.
|
|
84
|
+
* Pass false to disable validation entirely.
|
|
85
|
+
*/
|
|
86
|
+
validation(options: BlockPropsValidationOptions | false): this;
|
|
87
|
+
build(): InterpretationResult;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Create a surface builder
|
|
91
|
+
*/
|
|
92
|
+
export declare function surface(id: string): SurfaceBuilder;
|
|
93
|
+
/**
|
|
94
|
+
* Create a render context for an interpreted surface
|
|
95
|
+
*/
|
|
96
|
+
export declare function createSurfaceContext(surface: InterpretedSurface, data?: Record<string, unknown>): RenderContext;
|
|
97
|
+
//# sourceMappingURL=interpreter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interpreter.d.ts","sourceRoot":"","sources":["../../src/surface/interpreter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAElE,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAe,aAAa,EAAE,MAAM,YAAY,CAAA;AAGrF,OAAO,EAGL,KAAK,2BAA2B,EAChC,KAAK,mBAAmB,EACzB,MAAM,iBAAiB,CAAA;AACxB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAM1D;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAA;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,WAAW,EAAE,eAAe,CAAA;IACrC,QAAQ,CAAC,QAAQ,EAAE;QACjB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;QACrB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;QAC7B,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;KAClC,CAAA;IACD,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;IAC5C,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAA;CAC5B;AAED;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAC5B;IACE,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAA;IACtB,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAA;IACpC;;;OAGG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,mBAAmB,EAAE,CAAA;CACnD,GACD;IAAE,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,CAAA;AA2EnE;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC;;;OAGG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,2BAA2B,GAAG,KAAK,CAAA;CAC1D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,WAAW,EACjB,OAAO,GAAE,uBAA4B,GACpC,oBAAoB,CA4DtB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,oBAAoB,CAOzE;AAMD;;GAEG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,GAAG,CAAQ;IACnB,OAAO,CAAC,QAAQ,CAAU;IAC1B,OAAO,CAAC,YAAY,CAAyB;IAC7C,OAAO,CAAC,SAAS,CAA+D;IAChF,OAAO,CAAC,SAAS,CAAoB;IACrC,OAAO,CAAC,OAAO,CAA0B;IACzC,OAAO,CAAC,kBAAkB,CAA0C;gBAExD,EAAE,EAAE,MAAM;IAItB,OAAO,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAKxB,WAAW,CAAC,GAAG,EAAE,eAAe,GAAG,IAAI;IAKvC,IAAI,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAKrB,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAK5B,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI;IAK1B,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI;IAM9C,MAAM,CAAC,CAAC,EAAE,UAAU,GAAG,IAAI;IAK3B;;;OAGG;IACH,UAAU,CAAC,OAAO,EAAE,2BAA2B,GAAG,KAAK,GAAG,IAAI;IAK9D,KAAK,IAAI,oBAAoB;CAgB9B;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,cAAc,CAElD;AAMD;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,kBAAkB,EAC3B,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,aAAa,CAMf"}
|