@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,119 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-breakpoint visibility CSS generation (the `hidden md:flex` equivalent).
|
|
3
|
+
*
|
|
4
|
+
* `block.layout.hideOn` / `block.layout.showOn` declare at which breakpoints a
|
|
5
|
+
* block is hidden / the only breakpoints where it is visible. Inline styles
|
|
6
|
+
* can't express media queries, so the runtime emits scoped CSS rules — keyed
|
|
7
|
+
* by the block's `data-block-id` — into the surface's generated `<style>`
|
|
8
|
+
* (alongside the box-sizing reset). The pixel thresholds are the SAME
|
|
9
|
+
* `BREAKPOINTS[].minWidth` values the span system uses.
|
|
10
|
+
*
|
|
11
|
+
* Semantics:
|
|
12
|
+
* - `hideOn: ['xs','sm']` → hidden across the xs+sm ranges → hidden below the
|
|
13
|
+
* md threshold (768px) → `@media (max-width:767.98px){ display:none }`.
|
|
14
|
+
* - `showOn: ['lg','xl']` → visible ONLY in the lg+xl ranges → hidden below
|
|
15
|
+
* lg (1024px) AND at/above the breakpoint after xl (2xl = 1536px).
|
|
16
|
+
* - `showOn` is the inverse of `hideOn`; when both are present `showOn` wins.
|
|
17
|
+
*
|
|
18
|
+
* @module @pwfabric/runtime/render/visibility-css
|
|
19
|
+
*/
|
|
20
|
+
import { BREAKPOINTS, BREAKPOINT_ORDER } from '@pwfabric/core';
|
|
21
|
+
import { blockSelector, collectScopedCss } from './scoped-css.js';
|
|
22
|
+
/** Sub-pixel epsilon so `max-width` ranges don't overlap the next `min-width`. */
|
|
23
|
+
const MAX_EPSILON = 0.02;
|
|
24
|
+
/** `[minWidth, maxExclusive)` pixel range a named breakpoint covers. */
|
|
25
|
+
function rangeFor(bp) {
|
|
26
|
+
const idx = BREAKPOINTS.findIndex((b) => b.name === bp);
|
|
27
|
+
const def = BREAKPOINTS[idx];
|
|
28
|
+
const next = BREAKPOINTS[idx + 1];
|
|
29
|
+
return {
|
|
30
|
+
min: def?.minWidth ?? 0,
|
|
31
|
+
maxExclusive: next?.minWidth ?? Number.POSITIVE_INFINITY,
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Resolve the SET of breakpoints at which a block must be hidden, given its
|
|
36
|
+
* `hideOn` / `showOn` declarations. `showOn` takes precedence (the block is
|
|
37
|
+
* hidden at every breakpoint NOT listed in `showOn`).
|
|
38
|
+
*/
|
|
39
|
+
export function resolveHiddenBreakpoints(hideOn, showOn) {
|
|
40
|
+
if (showOn && showOn.length > 0) {
|
|
41
|
+
const visible = new Set(showOn);
|
|
42
|
+
return BREAKPOINT_ORDER.filter((bp) => !visible.has(bp));
|
|
43
|
+
}
|
|
44
|
+
if (hideOn && hideOn.length > 0) {
|
|
45
|
+
const hide = new Set(hideOn);
|
|
46
|
+
return BREAKPOINT_ORDER.filter((bp) => hide.has(bp));
|
|
47
|
+
}
|
|
48
|
+
return [];
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Collapse a set of hidden breakpoints into the minimal set of
|
|
52
|
+
* `[min, maxExclusive)` pixel ranges (contiguous breakpoints merge).
|
|
53
|
+
*/
|
|
54
|
+
function collapseRanges(hidden) {
|
|
55
|
+
// Order by the canonical breakpoint order so contiguity is by ascending width.
|
|
56
|
+
const ordered = BREAKPOINT_ORDER.filter((bp) => hidden.includes(bp));
|
|
57
|
+
const out = [];
|
|
58
|
+
for (const bp of ordered) {
|
|
59
|
+
const r = rangeFor(bp);
|
|
60
|
+
const last = out[out.length - 1];
|
|
61
|
+
if (last && last.maxExclusive === r.min) {
|
|
62
|
+
last.maxExclusive = r.maxExclusive; // contiguous → extend
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
out.push({ ...r });
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return out;
|
|
69
|
+
}
|
|
70
|
+
/** Build a single `@media` condition for a `[min, maxExclusive)` range. */
|
|
71
|
+
function mediaCondition(min, maxExclusive) {
|
|
72
|
+
const parts = [];
|
|
73
|
+
if (min > 0)
|
|
74
|
+
parts.push(`(min-width:${min}px)`);
|
|
75
|
+
if (Number.isFinite(maxExclusive))
|
|
76
|
+
parts.push(`(max-width:${maxExclusive - MAX_EPSILON}px)`);
|
|
77
|
+
return parts.join(' and ');
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Emit the CSS rule(s) that hide a single block at the resolved breakpoints.
|
|
81
|
+
* Targets `[data-block-id="<id>"]` scoped under the surface root so it cannot
|
|
82
|
+
* leak to the host page. Uses `!important` so the rule beats the inline layout
|
|
83
|
+
* style (`display:grid`/flex on the wrapper) it must override.
|
|
84
|
+
*
|
|
85
|
+
* Returns '' when there is nothing to hide.
|
|
86
|
+
*/
|
|
87
|
+
export function blockVisibilityCss(blockId, hidden, surfaceId) {
|
|
88
|
+
if (hidden.length === 0)
|
|
89
|
+
return '';
|
|
90
|
+
const ranges = collapseRanges(hidden);
|
|
91
|
+
// The whole spectrum is hidden (no showOn match anywhere): unconditional hide.
|
|
92
|
+
const everything = ranges.length === 1 && ranges[0].min === 0 && !Number.isFinite(ranges[0].maxExclusive);
|
|
93
|
+
const selector = blockSelector(blockId, surfaceId);
|
|
94
|
+
if (everything) {
|
|
95
|
+
return `${selector}{display:none !important}`;
|
|
96
|
+
}
|
|
97
|
+
return ranges
|
|
98
|
+
.map((r) => {
|
|
99
|
+
const cond = mediaCondition(r.min, r.maxExclusive);
|
|
100
|
+
return `@media ${cond}{${selector}{display:none !important}}`;
|
|
101
|
+
})
|
|
102
|
+
.join('');
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Walk a surface block tree and concatenate the per-block visibility CSS for
|
|
106
|
+
* every block declaring `hideOn` / `showOn`. Blocks without either are skipped
|
|
107
|
+
* (zero bytes emitted) so existing surfaces are byte-identical.
|
|
108
|
+
*/
|
|
109
|
+
export function collectVisibilityCss(blocks, surfaceId) {
|
|
110
|
+
return collectScopedCss(blocks, (block) => {
|
|
111
|
+
const layout = block.layout;
|
|
112
|
+
if (layout && (layout.hideOn?.length || layout.showOn?.length)) {
|
|
113
|
+
const hidden = resolveHiddenBreakpoints(layout.hideOn, layout.showOn);
|
|
114
|
+
return blockVisibilityCss(block.id, hidden, surfaceId);
|
|
115
|
+
}
|
|
116
|
+
return '';
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=visibility-css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"visibility-css.js","sourceRoot":"","sources":["../../src/render/visibility-css.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Width scope — splits blocks into groups while KEEPING SOURCE ORDER.
|
|
3
|
+
*
|
|
4
|
+
* WHY. If the surface root carried both the 12-column grid and
|
|
5
|
+
* `maxWidth: var(--pw-layout-container-max-width)` + `margin: 0 auto`,
|
|
6
|
+
* persistent chrome would sit inside the centred box too (on a 1536px screen
|
|
7
|
+
* a persistent rail would start 218px in from the edge). The rule: persistent
|
|
8
|
+
* navigation chrome belongs to the viewport, the content body to the measure.
|
|
9
|
+
*
|
|
10
|
+
* WHY GROUPS, NOT BUCKETS. A surface runs `[navbar][body…][bottombar]`.
|
|
11
|
+
* Collecting `viewport`-scoped blocks into one bucket and `container` ones
|
|
12
|
+
* into another would break the order and put the bottom bar next to the top
|
|
13
|
+
* bar. Consecutive grouping keeps the order: three groups, three DOM siblings.
|
|
14
|
+
*
|
|
15
|
+
* WHY NOT 100vw. The `width:100vw; margin-inline:calc(50% - 50vw)` trick is
|
|
16
|
+
* the short way out of a centred container and is NOT used: `100vw` counts
|
|
17
|
+
* the scrollbar too, so every page with a vertical scrollbar would get ~15px
|
|
18
|
+
* of horizontal overflow — the very defect this module exists to avoid.
|
|
19
|
+
*
|
|
20
|
+
* @module @pwfabric/runtime/render/width-scope
|
|
21
|
+
*/
|
|
22
|
+
import { type Block, type BreakpointName } from '@pwfabric/core';
|
|
23
|
+
import type { WidthScope } from '@pwfabric/contracts';
|
|
24
|
+
export interface WidthScopeChunk {
|
|
25
|
+
readonly scope: WidthScope;
|
|
26
|
+
readonly blocks: readonly Block[];
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* A block's scope at this breakpoint. Without a declaration it is
|
|
30
|
+
* `container`, so a block that declares nothing keeps the default behaviour.
|
|
31
|
+
*/
|
|
32
|
+
export declare function resolveWidthScope(block: Block, viewport: BreakpointName): WidthScope;
|
|
33
|
+
/** Groups consecutive blocks of the same scope together; order is kept. */
|
|
34
|
+
export declare function chunkByWidthScope(blocks: readonly Block[], viewport: BreakpointName): readonly WidthScopeChunk[];
|
|
35
|
+
//# sourceMappingURL=width-scope.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"width-scope.d.ts","sourceRoot":"","sources":["../../src/render/width-scope.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,EAGL,KAAK,KAAK,EACV,KAAK,cAAc,EACpB,MAAM,gBAAgB,CAAA;AAIvB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAErD,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAA;IAC1B,QAAQ,CAAC,MAAM,EAAE,SAAS,KAAK,EAAE,CAAA;CAClC;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,cAAc,GAAG,UAAU,CAGpF;AAED,2EAA2E;AAC3E,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,SAAS,KAAK,EAAE,EACxB,QAAQ,EAAE,cAAc,GACvB,SAAS,eAAe,EAAE,CAS5B"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Width scope — splits blocks into groups while KEEPING SOURCE ORDER.
|
|
3
|
+
*
|
|
4
|
+
* WHY. If the surface root carried both the 12-column grid and
|
|
5
|
+
* `maxWidth: var(--pw-layout-container-max-width)` + `margin: 0 auto`,
|
|
6
|
+
* persistent chrome would sit inside the centred box too (on a 1536px screen
|
|
7
|
+
* a persistent rail would start 218px in from the edge). The rule: persistent
|
|
8
|
+
* navigation chrome belongs to the viewport, the content body to the measure.
|
|
9
|
+
*
|
|
10
|
+
* WHY GROUPS, NOT BUCKETS. A surface runs `[navbar][body…][bottombar]`.
|
|
11
|
+
* Collecting `viewport`-scoped blocks into one bucket and `container` ones
|
|
12
|
+
* into another would break the order and put the bottom bar next to the top
|
|
13
|
+
* bar. Consecutive grouping keeps the order: three groups, three DOM siblings.
|
|
14
|
+
*
|
|
15
|
+
* WHY NOT 100vw. The `width:100vw; margin-inline:calc(50% - 50vw)` trick is
|
|
16
|
+
* the short way out of a centred container and is NOT used: `100vw` counts
|
|
17
|
+
* the scrollbar too, so every page with a vertical scrollbar would get ~15px
|
|
18
|
+
* of horizontal overflow — the very defect this module exists to avoid.
|
|
19
|
+
*
|
|
20
|
+
* @module @pwfabric/runtime/render/width-scope
|
|
21
|
+
*/
|
|
22
|
+
import { DEFAULT_BLOCK_LAYOUT, resolveResponsiveValue, } from '@pwfabric/core';
|
|
23
|
+
/**
|
|
24
|
+
* A block's scope at this breakpoint. Without a declaration it is
|
|
25
|
+
* `container`, so a block that declares nothing keeps the default behaviour.
|
|
26
|
+
*/
|
|
27
|
+
export function resolveWidthScope(block, viewport) {
|
|
28
|
+
const layout = block.layout ?? DEFAULT_BLOCK_LAYOUT;
|
|
29
|
+
return resolveResponsiveValue(layout.widthScope, viewport) ?? 'container';
|
|
30
|
+
}
|
|
31
|
+
/** Groups consecutive blocks of the same scope together; order is kept. */
|
|
32
|
+
export function chunkByWidthScope(blocks, viewport) {
|
|
33
|
+
const chunks = [];
|
|
34
|
+
for (const block of blocks) {
|
|
35
|
+
const scope = resolveWidthScope(block, viewport);
|
|
36
|
+
const last = chunks[chunks.length - 1];
|
|
37
|
+
if (last && last.scope === scope)
|
|
38
|
+
last.blocks.push(block);
|
|
39
|
+
else
|
|
40
|
+
chunks.push({ scope, blocks: [block] });
|
|
41
|
+
}
|
|
42
|
+
return chunks;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=width-scope.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"width-scope.js","sourceRoot":"","sources":["../../src/render/width-scope.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,EACL,oBAAoB,EACpB,sBAAsB,GAGvB,MAAM,gBAAgB,CAAA;AAWvB;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAY,EAAE,QAAwB;IACtE,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,oBAAoB,CAAA;IACnD,OAAO,sBAAsB,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,IAAI,WAAW,CAAA;AAC3E,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,iBAAiB,CAC/B,MAAwB,EACxB,QAAwB;IAExB,MAAM,MAAM,GAA6C,EAAE,CAAA;IAC3D,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,iBAAiB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;QAChD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;QACtC,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK;YAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;;YACpD,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;IAC9C,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WRITE-ONLY SOURCES — a form's target that nothing on the page reads.
|
|
3
|
+
*
|
|
4
|
+
* A data source a form writes to (`platform/entities` `config.formBindings[].sourceId`)
|
|
5
|
+
* was also fetched as a list on mount and again after every submit (the
|
|
6
|
+
* bridge's `refreshAll`). For an intake-only model — anonymous visitors may
|
|
7
|
+
* create, never list — that is a refused request on every visit and every
|
|
8
|
+
* submit (`GET /_host/records/<model>` → 403
|
|
9
|
+
* `RECORDS_NOT_PUBLIC`, `__errors.records` set, no block bound to it).
|
|
10
|
+
*
|
|
11
|
+
* A source is write-only when:
|
|
12
|
+
* - at least one form binding targets it, and every binding that does writes
|
|
13
|
+
* with POST (a PATCH/PUT needs the loaded record to know what to update), and
|
|
14
|
+
* - its id is referenced NOWHERE else: no block (props, expressions, actions,
|
|
15
|
+
* repeat), no behavior, no other source, no other capability config.
|
|
16
|
+
*
|
|
17
|
+
* The reference check is a whole-word search of every string, which errs on
|
|
18
|
+
* the side of fetching: a stray word equal to the id keeps today's behaviour.
|
|
19
|
+
* A write-only source stays declared and registered — it is still the write
|
|
20
|
+
* target — it is just never asked for its rows.
|
|
21
|
+
*
|
|
22
|
+
* @module @pwfabric/runtime/render/write-only-sources
|
|
23
|
+
*/
|
|
24
|
+
export interface WriteOnlySourceInput {
|
|
25
|
+
readonly blocks: readonly unknown[];
|
|
26
|
+
readonly dataSources: readonly {
|
|
27
|
+
readonly id: string;
|
|
28
|
+
}[];
|
|
29
|
+
readonly capabilities?: readonly unknown[] | undefined;
|
|
30
|
+
readonly behaviors?: readonly unknown[] | undefined;
|
|
31
|
+
}
|
|
32
|
+
/** The ids of the declared sources that are only ever written to. */
|
|
33
|
+
export declare function writeOnlySourceIds(input: WriteOnlySourceInput): ReadonlySet<string>;
|
|
34
|
+
//# sourceMappingURL=write-only-sources.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"write-only-sources.d.ts","sourceRoot":"","sources":["../../src/render/write-only-sources.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAcH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,MAAM,EAAE,SAAS,OAAO,EAAE,CAAA;IACnC,QAAQ,CAAC,WAAW,EAAE,SAAS;QAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IACxD,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,OAAO,EAAE,GAAG,SAAS,CAAA;IACtD,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,OAAO,EAAE,GAAG,SAAS,CAAA;CACpD;AAyBD,qEAAqE;AACrE,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,oBAAoB,GAAG,WAAW,CAAC,MAAM,CAAC,CA2CnF"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WRITE-ONLY SOURCES — a form's target that nothing on the page reads.
|
|
3
|
+
*
|
|
4
|
+
* A data source a form writes to (`platform/entities` `config.formBindings[].sourceId`)
|
|
5
|
+
* was also fetched as a list on mount and again after every submit (the
|
|
6
|
+
* bridge's `refreshAll`). For an intake-only model — anonymous visitors may
|
|
7
|
+
* create, never list — that is a refused request on every visit and every
|
|
8
|
+
* submit (`GET /_host/records/<model>` → 403
|
|
9
|
+
* `RECORDS_NOT_PUBLIC`, `__errors.records` set, no block bound to it).
|
|
10
|
+
*
|
|
11
|
+
* A source is write-only when:
|
|
12
|
+
* - at least one form binding targets it, and every binding that does writes
|
|
13
|
+
* with POST (a PATCH/PUT needs the loaded record to know what to update), and
|
|
14
|
+
* - its id is referenced NOWHERE else: no block (props, expressions, actions,
|
|
15
|
+
* repeat), no behavior, no other source, no other capability config.
|
|
16
|
+
*
|
|
17
|
+
* The reference check is a whole-word search of every string, which errs on
|
|
18
|
+
* the side of fetching: a stray word equal to the id keeps today's behaviour.
|
|
19
|
+
* A write-only source stays declared and registered — it is still the write
|
|
20
|
+
* target — it is just never asked for its rows.
|
|
21
|
+
*
|
|
22
|
+
* @module @pwfabric/runtime/render/write-only-sources
|
|
23
|
+
*/
|
|
24
|
+
import { isCapability } from '../capability/type-mapping.js';
|
|
25
|
+
function collectStrings(value, out, seen) {
|
|
26
|
+
if (typeof value === 'string') {
|
|
27
|
+
out.push(value);
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
if (value === null || typeof value !== 'object')
|
|
31
|
+
return;
|
|
32
|
+
if (seen.has(value))
|
|
33
|
+
return;
|
|
34
|
+
seen.add(value);
|
|
35
|
+
if (Array.isArray(value)) {
|
|
36
|
+
for (const v of value)
|
|
37
|
+
collectStrings(v, out, seen);
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
for (const [k, v] of Object.entries(value)) {
|
|
41
|
+
// A key can be a reference too (`{ records: … }` maps).
|
|
42
|
+
out.push(k);
|
|
43
|
+
collectStrings(v, out, seen);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
function escapeRegExp(s) {
|
|
47
|
+
return s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
48
|
+
}
|
|
49
|
+
/** The ids of the declared sources that are only ever written to. */
|
|
50
|
+
export function writeOnlySourceIds(input) {
|
|
51
|
+
const capabilities = (input.capabilities ?? []);
|
|
52
|
+
const entities = capabilities.find((c) => isCapability(c, 'platform/entities'));
|
|
53
|
+
const bindings = entities?.config?.formBindings;
|
|
54
|
+
if (!Array.isArray(bindings) || bindings.length === 0)
|
|
55
|
+
return new Set();
|
|
56
|
+
// Candidates: targeted by a form, and only ever with POST.
|
|
57
|
+
const postOnly = new Map();
|
|
58
|
+
for (const raw of bindings) {
|
|
59
|
+
if (typeof raw?.sourceId !== 'string')
|
|
60
|
+
continue;
|
|
61
|
+
const isPost = raw.method === undefined || raw.method === 'POST';
|
|
62
|
+
postOnly.set(raw.sourceId, (postOnly.get(raw.sourceId) ?? true) && isPost);
|
|
63
|
+
}
|
|
64
|
+
const declared = new Set(input.dataSources.map((s) => s.id));
|
|
65
|
+
const candidates = [...postOnly].filter(([id, post]) => post && declared.has(id)).map(([id]) => id);
|
|
66
|
+
if (candidates.length === 0)
|
|
67
|
+
return new Set();
|
|
68
|
+
// Everything that could read a source, minus the declarations themselves:
|
|
69
|
+
// the form bindings (they ARE the write) and the source list (each source is
|
|
70
|
+
// checked against the OTHER sources below).
|
|
71
|
+
const strings = [];
|
|
72
|
+
const seen = new Set();
|
|
73
|
+
collectStrings(input.blocks, strings, seen);
|
|
74
|
+
collectStrings(input.behaviors ?? [], strings, seen);
|
|
75
|
+
for (const c of capabilities) {
|
|
76
|
+
const config = c.config;
|
|
77
|
+
if (config === null || typeof config !== 'object')
|
|
78
|
+
continue;
|
|
79
|
+
const rest = { ...config };
|
|
80
|
+
delete rest['dataSources'];
|
|
81
|
+
delete rest['behaviors']; // collected above (the same list, seeded from persistence)
|
|
82
|
+
if (c === entities)
|
|
83
|
+
delete rest['formBindings'];
|
|
84
|
+
collectStrings(rest, strings, seen);
|
|
85
|
+
}
|
|
86
|
+
const result = new Set();
|
|
87
|
+
for (const id of candidates) {
|
|
88
|
+
const word = new RegExp(`(^|[^A-Za-z0-9_$])${escapeRegExp(id)}([^A-Za-z0-9_$]|$)`);
|
|
89
|
+
const others = [];
|
|
90
|
+
for (const s of input.dataSources)
|
|
91
|
+
if (s.id !== id)
|
|
92
|
+
collectStrings(s, others, new Set());
|
|
93
|
+
const read = strings.some((s) => word.test(s)) || others.some((s) => word.test(s));
|
|
94
|
+
if (!read)
|
|
95
|
+
result.add(id);
|
|
96
|
+
}
|
|
97
|
+
return result;
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=write-only-sources.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"write-only-sources.js","sourceRoot":"","sources":["../../src/render/write-only-sources.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Routing Capability Module
|
|
3
|
+
*
|
|
4
|
+
* Route matching, navigation, and URL parameter resolution
|
|
5
|
+
*
|
|
6
|
+
* Exports:
|
|
7
|
+
* - Types: RouteDefinition, RouteMatch, NavigationTarget, RoutingCapability, etc.
|
|
8
|
+
* - Implementations: DefaultRoutingCapability
|
|
9
|
+
* - Factory functions: createRoutingCapability
|
|
10
|
+
*
|
|
11
|
+
* @module @pwfabric/runtime/routing
|
|
12
|
+
*/
|
|
13
|
+
export type { RouteDefinition, RouteGuard, RouteGuardContext, RouteMatchResult, RouteMatch, NavigationTarget, NavigationResult, NavigationFailureReason, NavigationListener, RoutingCapability, } from './types.js';
|
|
14
|
+
export { DefaultRoutingCapability, createRoutingCapability } from './router.js';
|
|
15
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/routing/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,YAAY,EACV,eAAe,EACf,UAAU,EACV,iBAAiB,EACjB,gBAAgB,EAChB,UAAU,EACV,gBAAgB,EAChB,gBAAgB,EAChB,uBAAuB,EACvB,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,YAAY,CAAA;AAGnB,OAAO,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAA"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Routing Capability Module
|
|
3
|
+
*
|
|
4
|
+
* Route matching, navigation, and URL parameter resolution
|
|
5
|
+
*
|
|
6
|
+
* Exports:
|
|
7
|
+
* - Types: RouteDefinition, RouteMatch, NavigationTarget, RoutingCapability, etc.
|
|
8
|
+
* - Implementations: DefaultRoutingCapability
|
|
9
|
+
* - Factory functions: createRoutingCapability
|
|
10
|
+
*
|
|
11
|
+
* @module @pwfabric/runtime/routing
|
|
12
|
+
*/
|
|
13
|
+
// Implementations
|
|
14
|
+
export { DefaultRoutingCapability, createRoutingCapability } from './router.js';
|
|
15
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/routing/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAgBH,kBAAkB;AAClB,OAAO,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAA"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Routing Capability Implementation
|
|
3
|
+
*
|
|
4
|
+
* Route matching, navigation, and parameter resolution
|
|
5
|
+
*
|
|
6
|
+
* @module @pwfabric/runtime/routing/router
|
|
7
|
+
*/
|
|
8
|
+
import type { RoutingCapability, RouteDefinition, RouteMatch, RouteMatchResult, NavigationTarget, NavigationResult, NavigationListener } from './types.js';
|
|
9
|
+
/**
|
|
10
|
+
* Default routing capability implementation
|
|
11
|
+
*/
|
|
12
|
+
export declare class DefaultRoutingCapability implements RoutingCapability {
|
|
13
|
+
private readonly routes;
|
|
14
|
+
private readonly listeners;
|
|
15
|
+
private readonly navigationHistory;
|
|
16
|
+
private currentRoute;
|
|
17
|
+
private readonly maxHistorySize;
|
|
18
|
+
constructor(options?: {
|
|
19
|
+
maxHistorySize?: number;
|
|
20
|
+
});
|
|
21
|
+
addRoute(route: RouteDefinition): void;
|
|
22
|
+
removeRoute(routeId: string): boolean;
|
|
23
|
+
matchRoute(path: string): RouteMatchResult;
|
|
24
|
+
navigate(target: NavigationTarget): Promise<NavigationResult>;
|
|
25
|
+
resolveParams(pattern: string, params: Record<string, string>): string;
|
|
26
|
+
getCurrentRoute(): RouteMatch | undefined;
|
|
27
|
+
getHistory(): readonly RouteMatch[];
|
|
28
|
+
onNavigate(listener: NavigationListener): () => void;
|
|
29
|
+
getRouteIds(): readonly string[];
|
|
30
|
+
clear(): void;
|
|
31
|
+
private compileRoute;
|
|
32
|
+
private tryMatch;
|
|
33
|
+
private parsePath;
|
|
34
|
+
private buildPath;
|
|
35
|
+
private notifyListeners;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Create a routing capability instance
|
|
39
|
+
*/
|
|
40
|
+
export declare function createRoutingCapability(options?: {
|
|
41
|
+
maxHistorySize?: number;
|
|
42
|
+
}): RoutingCapability;
|
|
43
|
+
//# sourceMappingURL=router.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/routing/router.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EACV,iBAAiB,EACjB,eAAe,EACf,UAAU,EACV,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EACnB,MAAM,YAAY,CAAA;AAgBnB;;GAEG;AACH,qBAAa,wBAAyB,YAAW,iBAAiB;IAChE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmC;IAC1D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAgC;IAC1D,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAmB;IACrD,OAAO,CAAC,YAAY,CAAoC;IACxD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAQ;gBAE3B,OAAO,CAAC,EAAE;QAAE,cAAc,CAAC,EAAE,MAAM,CAAA;KAAE;IAIjD,QAAQ,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI;IAQtC,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIrC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB;IAapC,QAAQ,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAuDnE,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM;IAQtE,eAAe,IAAI,UAAU,GAAG,SAAS;IAIzC,UAAU,IAAI,SAAS,UAAU,EAAE;IAInC,UAAU,CAAC,QAAQ,EAAE,kBAAkB,GAAG,MAAM,IAAI;IAOpD,WAAW,IAAI,SAAS,MAAM,EAAE;IAIhC,KAAK,IAAI,IAAI;IAWb,OAAO,CAAC,YAAY;IAuBpB,OAAO,CAAC,QAAQ;IA2BhB,OAAO,CAAC,SAAS;IAsCjB,OAAO,CAAC,SAAS;IAiBjB,OAAO,CAAC,eAAe;CASxB;AAMD;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,CAAC,EAAE;IAAE,cAAc,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,iBAAiB,CAEhG"}
|