@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,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Surface / Block Render Timing
|
|
3
|
+
*
|
|
4
|
+
* Tracks render durations for surfaces and blocks using
|
|
5
|
+
* high-resolution timing. Maintains a bounded history of
|
|
6
|
+
* render metrics for performance analysis.
|
|
7
|
+
*
|
|
8
|
+
* Uses `performance.now()` when available, falling back to
|
|
9
|
+
* `Date.now()` for SSR environments.
|
|
10
|
+
*
|
|
11
|
+
* @module @pwfabric/runtime/perf
|
|
12
|
+
*/
|
|
13
|
+
/** Metrics for a single surface render cycle */
|
|
14
|
+
export interface RenderMetrics {
|
|
15
|
+
/** Surface identifier */
|
|
16
|
+
readonly surfaceId: string;
|
|
17
|
+
/** High-resolution render start time */
|
|
18
|
+
readonly startTime: number;
|
|
19
|
+
/** High-resolution render end time */
|
|
20
|
+
readonly endTime: number;
|
|
21
|
+
/** Render duration in milliseconds */
|
|
22
|
+
readonly duration: number;
|
|
23
|
+
/** Number of blocks rendered */
|
|
24
|
+
readonly blockCount: number;
|
|
25
|
+
}
|
|
26
|
+
/** Configuration for the RenderTimer */
|
|
27
|
+
export interface RenderTimerConfig {
|
|
28
|
+
/** Maximum number of entries to keep in history (default: 100) */
|
|
29
|
+
maxEntries?: number;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Tracks surface render timing with bounded history.
|
|
33
|
+
*
|
|
34
|
+
* Call `startRender` before a surface renders and `endRender`
|
|
35
|
+
* when rendering completes. The timer records the duration and
|
|
36
|
+
* maintains a history of recent render metrics.
|
|
37
|
+
*/
|
|
38
|
+
export declare class RenderTimer {
|
|
39
|
+
private entries;
|
|
40
|
+
private history;
|
|
41
|
+
private readonly maxEntries;
|
|
42
|
+
/**
|
|
43
|
+
* @param config - Optional configuration
|
|
44
|
+
*/
|
|
45
|
+
constructor(config?: RenderTimerConfig);
|
|
46
|
+
/**
|
|
47
|
+
* Mark the start of a surface render.
|
|
48
|
+
*
|
|
49
|
+
* @param surfaceId - Unique identifier for the surface
|
|
50
|
+
* @param blockCount - Number of blocks being rendered (default: 0)
|
|
51
|
+
*/
|
|
52
|
+
startRender(surfaceId: string, blockCount?: number): void;
|
|
53
|
+
/**
|
|
54
|
+
* Mark the end of a surface render and record metrics.
|
|
55
|
+
*
|
|
56
|
+
* @param surfaceId - The surface identifier passed to `startRender`
|
|
57
|
+
* @returns The render metrics, or `undefined` if no matching start was found
|
|
58
|
+
*/
|
|
59
|
+
endRender(surfaceId: string): RenderMetrics | undefined;
|
|
60
|
+
/**
|
|
61
|
+
* Calculate the average render time across all recorded renders.
|
|
62
|
+
*
|
|
63
|
+
* @returns Average duration in milliseconds, or 0 if no renders recorded
|
|
64
|
+
*/
|
|
65
|
+
getAverageRenderTime(): number;
|
|
66
|
+
/**
|
|
67
|
+
* Get the full render history.
|
|
68
|
+
*
|
|
69
|
+
* @returns Readonly array of render metrics
|
|
70
|
+
*/
|
|
71
|
+
getHistory(): readonly RenderMetrics[];
|
|
72
|
+
/**
|
|
73
|
+
* Get the slowest renders, sorted by duration descending.
|
|
74
|
+
*
|
|
75
|
+
* @param count - Number of entries to return (default: 5)
|
|
76
|
+
* @returns Array of the slowest render metrics
|
|
77
|
+
*/
|
|
78
|
+
getSlowest(count?: number): RenderMetrics[];
|
|
79
|
+
/**
|
|
80
|
+
* Clear all history and active entries.
|
|
81
|
+
*/
|
|
82
|
+
clear(): void;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Create a new RenderTimer instance.
|
|
86
|
+
*
|
|
87
|
+
* @param config - Optional configuration
|
|
88
|
+
* @returns A new RenderTimer
|
|
89
|
+
*/
|
|
90
|
+
export declare function createRenderTimer(config?: RenderTimerConfig): RenderTimer;
|
|
91
|
+
//# sourceMappingURL=render-timer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render-timer.d.ts","sourceRoot":"","sources":["../../src/perf/render-timer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAsBH,gDAAgD;AAChD,MAAM,WAAW,aAAa;IAC5B,yBAAyB;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,wCAAwC;IACxC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,sCAAsC;IACtC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,sCAAsC;IACtC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,gCAAgC;IAChC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;CAC5B;AAED,wCAAwC;AACxC,MAAM,WAAW,iBAAiB;IAChC,kEAAkE;IAClE,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAkBD;;;;;;GAMG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,OAAO,CAAkC;IACjD,OAAO,CAAC,OAAO,CAAsB;IACrC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAQ;IAEnC;;OAEG;gBACS,MAAM,CAAC,EAAE,iBAAiB;IAItC;;;;;OAKG;IACH,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,SAAI,GAAG,IAAI;IAOpD;;;;;OAKG;IACH,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IA2BvD;;;;OAIG;IACH,oBAAoB,IAAI,MAAM;IAQ9B;;;;OAIG;IACH,UAAU,IAAI,SAAS,aAAa,EAAE;IAItC;;;;;OAKG;IACH,UAAU,CAAC,KAAK,SAAI,GAAG,aAAa,EAAE;IAItC;;OAEG;IACH,KAAK,IAAI,IAAI;CAId;AAMD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,CAAC,EAAE,iBAAiB,GAAG,WAAW,CAEzE"}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Surface / Block Render Timing
|
|
3
|
+
*
|
|
4
|
+
* Tracks render durations for surfaces and blocks using
|
|
5
|
+
* high-resolution timing. Maintains a bounded history of
|
|
6
|
+
* render metrics for performance analysis.
|
|
7
|
+
*
|
|
8
|
+
* Uses `performance.now()` when available, falling back to
|
|
9
|
+
* `Date.now()` for SSR environments.
|
|
10
|
+
*
|
|
11
|
+
* @module @pwfabric/runtime/perf
|
|
12
|
+
*/
|
|
13
|
+
// ============================================================
|
|
14
|
+
// TIMING UTILITY
|
|
15
|
+
// ============================================================
|
|
16
|
+
/**
|
|
17
|
+
* Get the current high-resolution timestamp.
|
|
18
|
+
*
|
|
19
|
+
* Falls back to `Date.now()` when `performance` is not available (SSR).
|
|
20
|
+
*/
|
|
21
|
+
function now() {
|
|
22
|
+
if (typeof performance !== 'undefined' && typeof performance.now === 'function') {
|
|
23
|
+
return performance.now();
|
|
24
|
+
}
|
|
25
|
+
return Date.now();
|
|
26
|
+
}
|
|
27
|
+
// ============================================================
|
|
28
|
+
// DEFAULTS
|
|
29
|
+
// ============================================================
|
|
30
|
+
const DEFAULT_MAX_ENTRIES = 100;
|
|
31
|
+
/**
|
|
32
|
+
* Tracks surface render timing with bounded history.
|
|
33
|
+
*
|
|
34
|
+
* Call `startRender` before a surface renders and `endRender`
|
|
35
|
+
* when rendering completes. The timer records the duration and
|
|
36
|
+
* maintains a history of recent render metrics.
|
|
37
|
+
*/
|
|
38
|
+
export class RenderTimer {
|
|
39
|
+
entries = new Map();
|
|
40
|
+
history = [];
|
|
41
|
+
maxEntries;
|
|
42
|
+
/**
|
|
43
|
+
* @param config - Optional configuration
|
|
44
|
+
*/
|
|
45
|
+
constructor(config) {
|
|
46
|
+
this.maxEntries = config?.maxEntries ?? DEFAULT_MAX_ENTRIES;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Mark the start of a surface render.
|
|
50
|
+
*
|
|
51
|
+
* @param surfaceId - Unique identifier for the surface
|
|
52
|
+
* @param blockCount - Number of blocks being rendered (default: 0)
|
|
53
|
+
*/
|
|
54
|
+
startRender(surfaceId, blockCount = 0) {
|
|
55
|
+
this.entries.set(surfaceId, {
|
|
56
|
+
startTime: now(),
|
|
57
|
+
blockCount,
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Mark the end of a surface render and record metrics.
|
|
62
|
+
*
|
|
63
|
+
* @param surfaceId - The surface identifier passed to `startRender`
|
|
64
|
+
* @returns The render metrics, or `undefined` if no matching start was found
|
|
65
|
+
*/
|
|
66
|
+
endRender(surfaceId) {
|
|
67
|
+
const entry = this.entries.get(surfaceId);
|
|
68
|
+
if (!entry) {
|
|
69
|
+
return undefined;
|
|
70
|
+
}
|
|
71
|
+
this.entries.delete(surfaceId);
|
|
72
|
+
const endTime = now();
|
|
73
|
+
const metrics = {
|
|
74
|
+
surfaceId,
|
|
75
|
+
startTime: entry.startTime,
|
|
76
|
+
endTime,
|
|
77
|
+
duration: endTime - entry.startTime,
|
|
78
|
+
blockCount: entry.blockCount,
|
|
79
|
+
};
|
|
80
|
+
this.history.push(metrics);
|
|
81
|
+
// Enforce bounded history
|
|
82
|
+
if (this.history.length > this.maxEntries) {
|
|
83
|
+
this.history = this.history.slice(-this.maxEntries);
|
|
84
|
+
}
|
|
85
|
+
return metrics;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Calculate the average render time across all recorded renders.
|
|
89
|
+
*
|
|
90
|
+
* @returns Average duration in milliseconds, or 0 if no renders recorded
|
|
91
|
+
*/
|
|
92
|
+
getAverageRenderTime() {
|
|
93
|
+
if (this.history.length === 0) {
|
|
94
|
+
return 0;
|
|
95
|
+
}
|
|
96
|
+
const total = this.history.reduce((sum, m) => sum + m.duration, 0);
|
|
97
|
+
return total / this.history.length;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Get the full render history.
|
|
101
|
+
*
|
|
102
|
+
* @returns Readonly array of render metrics
|
|
103
|
+
*/
|
|
104
|
+
getHistory() {
|
|
105
|
+
return this.history;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Get the slowest renders, sorted by duration descending.
|
|
109
|
+
*
|
|
110
|
+
* @param count - Number of entries to return (default: 5)
|
|
111
|
+
* @returns Array of the slowest render metrics
|
|
112
|
+
*/
|
|
113
|
+
getSlowest(count = 5) {
|
|
114
|
+
return [...this.history].sort((a, b) => b.duration - a.duration).slice(0, count);
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Clear all history and active entries.
|
|
118
|
+
*/
|
|
119
|
+
clear() {
|
|
120
|
+
this.entries.clear();
|
|
121
|
+
this.history = [];
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
// ============================================================
|
|
125
|
+
// FACTORY
|
|
126
|
+
// ============================================================
|
|
127
|
+
/**
|
|
128
|
+
* Create a new RenderTimer instance.
|
|
129
|
+
*
|
|
130
|
+
* @param config - Optional configuration
|
|
131
|
+
* @returns A new RenderTimer
|
|
132
|
+
*/
|
|
133
|
+
export function createRenderTimer(config) {
|
|
134
|
+
return new RenderTimer(config);
|
|
135
|
+
}
|
|
136
|
+
//# sourceMappingURL=render-timer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render-timer.js","sourceRoot":"","sources":["../../src/perf/render-timer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,+DAA+D;AAC/D,iBAAiB;AACjB,+DAA+D;AAE/D;;;;GAIG;AACH,SAAS,GAAG;IACV,IAAI,OAAO,WAAW,KAAK,WAAW,IAAI,OAAO,WAAW,CAAC,GAAG,KAAK,UAAU,EAAE,CAAC;QAChF,OAAO,WAAW,CAAC,GAAG,EAAE,CAAA;IAC1B,CAAC;IACD,OAAO,IAAI,CAAC,GAAG,EAAE,CAAA;AACnB,CAAC;AA0BD,+DAA+D;AAC/D,WAAW;AACX,+DAA+D;AAE/D,MAAM,mBAAmB,GAAG,GAAG,CAAA;AAY/B;;;;;;GAMG;AACH,MAAM,OAAO,WAAW;IACd,OAAO,GAAG,IAAI,GAAG,EAAwB,CAAA;IACzC,OAAO,GAAoB,EAAE,CAAA;IACpB,UAAU,CAAQ;IAEnC;;OAEG;IACH,YAAY,MAA0B;QACpC,IAAI,CAAC,UAAU,GAAG,MAAM,EAAE,UAAU,IAAI,mBAAmB,CAAA;IAC7D,CAAC;IAED;;;;;OAKG;IACH,WAAW,CAAC,SAAiB,EAAE,UAAU,GAAG,CAAC;QAC3C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE;YAC1B,SAAS,EAAE,GAAG,EAAE;YAChB,UAAU;SACX,CAAC,CAAA;IACJ,CAAC;IAED;;;;;OAKG;IACH,SAAS,CAAC,SAAiB;QACzB,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;QACzC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,SAAS,CAAA;QAClB,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;QAE9B,MAAM,OAAO,GAAG,GAAG,EAAE,CAAA;QACrB,MAAM,OAAO,GAAkB;YAC7B,SAAS;YACT,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,OAAO;YACP,QAAQ,EAAE,OAAO,GAAG,KAAK,CAAC,SAAS;YACnC,UAAU,EAAE,KAAK,CAAC,UAAU;SAC7B,CAAA;QAED,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAE1B,0BAA0B;QAC1B,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YAC1C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QACrD,CAAC;QAED,OAAO,OAAO,CAAA;IAChB,CAAC;IAED;;;;OAIG;IACH,oBAAoB;QAClB,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO,CAAC,CAAA;QACV,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAA;QAClE,OAAO,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAA;IACpC,CAAC;IAED;;;;OAIG;IACH,UAAU;QACR,OAAO,IAAI,CAAC,OAAO,CAAA;IACrB,CAAC;IAED;;;;;OAKG;IACH,UAAU,CAAC,KAAK,GAAG,CAAC;QAClB,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;IAClF,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAA;QACpB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAA;IACnB,CAAC;CACF;AAED,+DAA+D;AAC/D,UAAU;AACV,+DAA+D;AAE/D;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAA0B;IAC1D,OAAO,IAAI,WAAW,CAAC,MAAM,CAAC,CAAA;AAChC,CAAC"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Performance Metric Reporter
|
|
3
|
+
*
|
|
4
|
+
* Orchestrates Web Vitals collection, render timing, and budget
|
|
5
|
+
* checking into a unified reporting pipeline. Supports periodic
|
|
6
|
+
* automatic reporting or manual on-demand reports.
|
|
7
|
+
*
|
|
8
|
+
* @module @pwfabric/runtime/perf
|
|
9
|
+
*/
|
|
10
|
+
import type { WebVitalsReport } from './web-vitals.js';
|
|
11
|
+
import type { RenderMetrics } from './render-timer.js';
|
|
12
|
+
import type { PerformanceBudget, BudgetCheckResult } from './budget.js';
|
|
13
|
+
import { WebVitalsCollector } from './web-vitals.js';
|
|
14
|
+
import { RenderTimer } from './render-timer.js';
|
|
15
|
+
/** Where to send performance reports */
|
|
16
|
+
export type ReportDestination = 'console' | 'custom';
|
|
17
|
+
/** Reporter configuration */
|
|
18
|
+
export interface ReporterConfig {
|
|
19
|
+
/** Report destination */
|
|
20
|
+
readonly destination: ReportDestination;
|
|
21
|
+
/** Custom report handler (required when destination is 'custom') */
|
|
22
|
+
readonly onReport?: (report: PerformanceReport) => void | Promise<void>;
|
|
23
|
+
/** Reporting interval in ms (0 = manual only, default: 0) */
|
|
24
|
+
readonly interval?: number;
|
|
25
|
+
/** Whether to include render metrics (default: true) */
|
|
26
|
+
readonly includeRenderMetrics?: boolean;
|
|
27
|
+
/** Whether to include Web Vitals (default: true) */
|
|
28
|
+
readonly includeWebVitals?: boolean;
|
|
29
|
+
/** Performance budget to check against */
|
|
30
|
+
readonly budget?: PerformanceBudget;
|
|
31
|
+
}
|
|
32
|
+
/** A complete performance report */
|
|
33
|
+
export interface PerformanceReport {
|
|
34
|
+
/** Timestamp when the report was generated */
|
|
35
|
+
readonly timestamp: number;
|
|
36
|
+
/** Web Vitals snapshot */
|
|
37
|
+
readonly webVitals?: WebVitalsReport | undefined;
|
|
38
|
+
/** Render timing summary */
|
|
39
|
+
readonly renderMetrics?: {
|
|
40
|
+
readonly averageRenderTime: number;
|
|
41
|
+
readonly totalRenders: number;
|
|
42
|
+
readonly slowestRenders: readonly RenderMetrics[];
|
|
43
|
+
} | undefined;
|
|
44
|
+
/** Budget check result */
|
|
45
|
+
readonly budgetCheck?: BudgetCheckResult | undefined;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Orchestrates performance monitoring components and generates
|
|
49
|
+
* unified performance reports.
|
|
50
|
+
*
|
|
51
|
+
* Manages a WebVitalsCollector, RenderTimer, and BudgetChecker
|
|
52
|
+
* internally. Supports automatic periodic reporting or manual
|
|
53
|
+
* on-demand report generation.
|
|
54
|
+
*/
|
|
55
|
+
export declare class PerformanceReporter {
|
|
56
|
+
private readonly destination;
|
|
57
|
+
private readonly onReportCallback?;
|
|
58
|
+
private readonly interval;
|
|
59
|
+
private readonly includeRenderMetrics;
|
|
60
|
+
private readonly includeWebVitals;
|
|
61
|
+
private webVitals?;
|
|
62
|
+
private renderTimer?;
|
|
63
|
+
private budgetChecker?;
|
|
64
|
+
private intervalId?;
|
|
65
|
+
/**
|
|
66
|
+
* @param config - Reporter configuration
|
|
67
|
+
*/
|
|
68
|
+
constructor(config: ReporterConfig);
|
|
69
|
+
/**
|
|
70
|
+
* Start periodic reporting and Web Vitals collection.
|
|
71
|
+
*
|
|
72
|
+
* If an interval is configured, reports will be generated
|
|
73
|
+
* automatically at that interval. Web Vitals collection
|
|
74
|
+
* starts immediately.
|
|
75
|
+
*/
|
|
76
|
+
start(): void;
|
|
77
|
+
/**
|
|
78
|
+
* Generate and deliver a performance report.
|
|
79
|
+
*
|
|
80
|
+
* Collects metrics from all active sub-components, runs
|
|
81
|
+
* budget checks if configured, and delivers the report
|
|
82
|
+
* to the configured destination.
|
|
83
|
+
*
|
|
84
|
+
* @returns The generated performance report
|
|
85
|
+
*/
|
|
86
|
+
report(): Promise<PerformanceReport>;
|
|
87
|
+
/**
|
|
88
|
+
* Stop periodic reporting.
|
|
89
|
+
*
|
|
90
|
+
* Does not stop Web Vitals collection or clear history.
|
|
91
|
+
* Use `dispose()` for full cleanup.
|
|
92
|
+
*/
|
|
93
|
+
stop(): void;
|
|
94
|
+
/**
|
|
95
|
+
* Get the internal WebVitalsCollector.
|
|
96
|
+
*
|
|
97
|
+
* Useful for registering custom metric callbacks.
|
|
98
|
+
*
|
|
99
|
+
* @returns The collector, or undefined if Web Vitals are disabled
|
|
100
|
+
*/
|
|
101
|
+
getWebVitals(): WebVitalsCollector | undefined;
|
|
102
|
+
/**
|
|
103
|
+
* Get the internal RenderTimer.
|
|
104
|
+
*
|
|
105
|
+
* Useful for tracking surface render timing externally.
|
|
106
|
+
*
|
|
107
|
+
* @returns The timer, or undefined if render metrics are disabled
|
|
108
|
+
*/
|
|
109
|
+
getRenderTimer(): RenderTimer | undefined;
|
|
110
|
+
/**
|
|
111
|
+
* Stop reporting and release all resources.
|
|
112
|
+
*/
|
|
113
|
+
dispose(): void;
|
|
114
|
+
private buildWebVitalsSection;
|
|
115
|
+
private buildRenderMetricsSection;
|
|
116
|
+
private buildBudgetCheckSection;
|
|
117
|
+
private deliverReport;
|
|
118
|
+
private logToConsole;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Create a new PerformanceReporter instance.
|
|
122
|
+
*
|
|
123
|
+
* @param config - Reporter configuration
|
|
124
|
+
* @returns A new PerformanceReporter
|
|
125
|
+
*/
|
|
126
|
+
export declare function createPerformanceReporter(config: ReporterConfig): PerformanceReporter;
|
|
127
|
+
//# sourceMappingURL=reporter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reporter.d.ts","sourceRoot":"","sources":["../../src/perf/reporter.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACtD,OAAO,KAAK,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAO/C,wCAAwC;AACxC,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,QAAQ,CAAA;AAEpD,6BAA6B;AAC7B,MAAM,WAAW,cAAc;IAC7B,yBAAyB;IACzB,QAAQ,CAAC,WAAW,EAAE,iBAAiB,CAAA;IACvC,oEAAoE;IACpE,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,iBAAiB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACvE,6DAA6D;IAC7D,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAC1B,wDAAwD;IACxD,QAAQ,CAAC,oBAAoB,CAAC,EAAE,OAAO,CAAA;IACvC,oDAAoD;IACpD,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAA;IACnC,0CAA0C;IAC1C,QAAQ,CAAC,MAAM,CAAC,EAAE,iBAAiB,CAAA;CACpC;AAED,oCAAoC;AACpC,MAAM,WAAW,iBAAiB;IAChC,8CAA8C;IAC9C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,0BAA0B;IAC1B,QAAQ,CAAC,SAAS,CAAC,EAAE,eAAe,GAAG,SAAS,CAAA;IAChD,4BAA4B;IAC5B,QAAQ,CAAC,aAAa,CAAC,EACnB;QACE,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAA;QAClC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;QAC7B,QAAQ,CAAC,cAAc,EAAE,SAAS,aAAa,EAAE,CAAA;KAClD,GACD,SAAS,CAAA;IACb,0BAA0B;IAC1B,QAAQ,CAAC,WAAW,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAA;CACrD;AAYD;;;;;;;GAOG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAmB;IAC/C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAErB;IACb,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAQ;IACjC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAS;IAC9C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAE1C,OAAO,CAAC,SAAS,CAAC,CAAgC;IAClD,OAAO,CAAC,WAAW,CAAC,CAAyB;IAC7C,OAAO,CAAC,aAAa,CAAC,CAA2B;IACjD,OAAO,CAAC,UAAU,CAAC,CAA4C;IAE/D;;OAEG;gBACS,MAAM,EAAE,cAAc;IAqBlC;;;;;;OAMG;IACH,KAAK,IAAI,IAAI;IAYb;;;;;;;;OAQG;IACG,MAAM,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAa1C;;;;;OAKG;IACH,IAAI,IAAI,IAAI;IAOZ;;;;;;OAMG;IACH,YAAY,IAAI,kBAAkB,GAAG,SAAS;IAI9C;;;;;;OAMG;IACH,cAAc,IAAI,WAAW,GAAG,SAAS;IAIzC;;OAEG;IACH,OAAO,IAAI,IAAI;IAaf,OAAO,CAAC,qBAAqB;IAO7B,OAAO,CAAC,yBAAyB;IAajC,OAAO,CAAC,uBAAuB;YAiCjB,aAAa;IAc3B,OAAO,CAAC,YAAY;CAgCrB;AAMD;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,cAAc,GAAG,mBAAmB,CAErF"}
|
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Performance Metric Reporter
|
|
3
|
+
*
|
|
4
|
+
* Orchestrates Web Vitals collection, render timing, and budget
|
|
5
|
+
* checking into a unified reporting pipeline. Supports periodic
|
|
6
|
+
* automatic reporting or manual on-demand reports.
|
|
7
|
+
*
|
|
8
|
+
* @module @pwfabric/runtime/perf
|
|
9
|
+
*/
|
|
10
|
+
import { WebVitalsCollector } from './web-vitals.js';
|
|
11
|
+
import { RenderTimer } from './render-timer.js';
|
|
12
|
+
import { BudgetChecker } from './budget.js';
|
|
13
|
+
// ============================================================
|
|
14
|
+
// DEFAULTS
|
|
15
|
+
// ============================================================
|
|
16
|
+
const DEFAULT_SLOWEST_COUNT = 5;
|
|
17
|
+
// ============================================================
|
|
18
|
+
// REPORTER
|
|
19
|
+
// ============================================================
|
|
20
|
+
/**
|
|
21
|
+
* Orchestrates performance monitoring components and generates
|
|
22
|
+
* unified performance reports.
|
|
23
|
+
*
|
|
24
|
+
* Manages a WebVitalsCollector, RenderTimer, and BudgetChecker
|
|
25
|
+
* internally. Supports automatic periodic reporting or manual
|
|
26
|
+
* on-demand report generation.
|
|
27
|
+
*/
|
|
28
|
+
export class PerformanceReporter {
|
|
29
|
+
destination;
|
|
30
|
+
onReportCallback;
|
|
31
|
+
interval;
|
|
32
|
+
includeRenderMetrics;
|
|
33
|
+
includeWebVitals;
|
|
34
|
+
webVitals;
|
|
35
|
+
renderTimer;
|
|
36
|
+
budgetChecker;
|
|
37
|
+
intervalId;
|
|
38
|
+
/**
|
|
39
|
+
* @param config - Reporter configuration
|
|
40
|
+
*/
|
|
41
|
+
constructor(config) {
|
|
42
|
+
this.destination = config.destination;
|
|
43
|
+
this.onReportCallback = config.onReport;
|
|
44
|
+
this.interval = config.interval ?? 0;
|
|
45
|
+
this.includeRenderMetrics = config.includeRenderMetrics ?? true;
|
|
46
|
+
this.includeWebVitals = config.includeWebVitals ?? true;
|
|
47
|
+
// Initialize sub-components
|
|
48
|
+
if (this.includeWebVitals) {
|
|
49
|
+
this.webVitals = new WebVitalsCollector();
|
|
50
|
+
}
|
|
51
|
+
if (this.includeRenderMetrics) {
|
|
52
|
+
this.renderTimer = new RenderTimer();
|
|
53
|
+
}
|
|
54
|
+
if (config.budget) {
|
|
55
|
+
this.budgetChecker = new BudgetChecker(config.budget);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Start periodic reporting and Web Vitals collection.
|
|
60
|
+
*
|
|
61
|
+
* If an interval is configured, reports will be generated
|
|
62
|
+
* automatically at that interval. Web Vitals collection
|
|
63
|
+
* starts immediately.
|
|
64
|
+
*/
|
|
65
|
+
start() {
|
|
66
|
+
// Start web vitals collection
|
|
67
|
+
this.webVitals?.startCollecting();
|
|
68
|
+
// Set up periodic reporting
|
|
69
|
+
if (this.interval > 0) {
|
|
70
|
+
this.intervalId = setInterval(() => {
|
|
71
|
+
void this.report();
|
|
72
|
+
}, this.interval);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Generate and deliver a performance report.
|
|
77
|
+
*
|
|
78
|
+
* Collects metrics from all active sub-components, runs
|
|
79
|
+
* budget checks if configured, and delivers the report
|
|
80
|
+
* to the configured destination.
|
|
81
|
+
*
|
|
82
|
+
* @returns The generated performance report
|
|
83
|
+
*/
|
|
84
|
+
async report() {
|
|
85
|
+
const performanceReport = {
|
|
86
|
+
timestamp: Date.now(),
|
|
87
|
+
webVitals: this.buildWebVitalsSection(),
|
|
88
|
+
renderMetrics: this.buildRenderMetricsSection(),
|
|
89
|
+
budgetCheck: this.buildBudgetCheckSection(),
|
|
90
|
+
};
|
|
91
|
+
await this.deliverReport(performanceReport);
|
|
92
|
+
return performanceReport;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Stop periodic reporting.
|
|
96
|
+
*
|
|
97
|
+
* Does not stop Web Vitals collection or clear history.
|
|
98
|
+
* Use `dispose()` for full cleanup.
|
|
99
|
+
*/
|
|
100
|
+
stop() {
|
|
101
|
+
if (this.intervalId !== undefined) {
|
|
102
|
+
clearInterval(this.intervalId);
|
|
103
|
+
this.intervalId = undefined;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Get the internal WebVitalsCollector.
|
|
108
|
+
*
|
|
109
|
+
* Useful for registering custom metric callbacks.
|
|
110
|
+
*
|
|
111
|
+
* @returns The collector, or undefined if Web Vitals are disabled
|
|
112
|
+
*/
|
|
113
|
+
getWebVitals() {
|
|
114
|
+
return this.webVitals;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Get the internal RenderTimer.
|
|
118
|
+
*
|
|
119
|
+
* Useful for tracking surface render timing externally.
|
|
120
|
+
*
|
|
121
|
+
* @returns The timer, or undefined if render metrics are disabled
|
|
122
|
+
*/
|
|
123
|
+
getRenderTimer() {
|
|
124
|
+
return this.renderTimer;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Stop reporting and release all resources.
|
|
128
|
+
*/
|
|
129
|
+
dispose() {
|
|
130
|
+
this.stop();
|
|
131
|
+
this.webVitals?.dispose();
|
|
132
|
+
this.renderTimer?.clear();
|
|
133
|
+
this.webVitals = undefined;
|
|
134
|
+
this.renderTimer = undefined;
|
|
135
|
+
this.budgetChecker = undefined;
|
|
136
|
+
}
|
|
137
|
+
// ----------------------------------------------------------
|
|
138
|
+
// Private: report building
|
|
139
|
+
// ----------------------------------------------------------
|
|
140
|
+
buildWebVitalsSection() {
|
|
141
|
+
if (!this.includeWebVitals || !this.webVitals) {
|
|
142
|
+
return undefined;
|
|
143
|
+
}
|
|
144
|
+
return this.webVitals.getReport();
|
|
145
|
+
}
|
|
146
|
+
buildRenderMetricsSection() {
|
|
147
|
+
if (!this.includeRenderMetrics || !this.renderTimer) {
|
|
148
|
+
return undefined;
|
|
149
|
+
}
|
|
150
|
+
const history = this.renderTimer.getHistory();
|
|
151
|
+
return {
|
|
152
|
+
averageRenderTime: this.renderTimer.getAverageRenderTime(),
|
|
153
|
+
totalRenders: history.length,
|
|
154
|
+
slowestRenders: this.renderTimer.getSlowest(DEFAULT_SLOWEST_COUNT),
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
buildBudgetCheckSection() {
|
|
158
|
+
if (!this.budgetChecker) {
|
|
159
|
+
return undefined;
|
|
160
|
+
}
|
|
161
|
+
// Collect all available numeric metrics for budget checking
|
|
162
|
+
const metrics = {};
|
|
163
|
+
// Web Vitals
|
|
164
|
+
if (this.webVitals) {
|
|
165
|
+
const vitalsReport = this.webVitals.getReport();
|
|
166
|
+
if (vitalsReport.lcp)
|
|
167
|
+
metrics['lcp'] = vitalsReport.lcp.value;
|
|
168
|
+
if (vitalsReport.fid)
|
|
169
|
+
metrics['fid'] = vitalsReport.fid.value;
|
|
170
|
+
if (vitalsReport.cls)
|
|
171
|
+
metrics['cls'] = vitalsReport.cls.value;
|
|
172
|
+
if (vitalsReport.fcp)
|
|
173
|
+
metrics['fcp'] = vitalsReport.fcp.value;
|
|
174
|
+
if (vitalsReport.ttfb)
|
|
175
|
+
metrics['ttfb'] = vitalsReport.ttfb.value;
|
|
176
|
+
}
|
|
177
|
+
// Render metrics
|
|
178
|
+
if (this.renderTimer) {
|
|
179
|
+
const avg = this.renderTimer.getAverageRenderTime();
|
|
180
|
+
if (avg > 0) {
|
|
181
|
+
metrics['maxRenderTime'] = avg;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
return this.budgetChecker.check(metrics);
|
|
185
|
+
}
|
|
186
|
+
// ----------------------------------------------------------
|
|
187
|
+
// Private: report delivery
|
|
188
|
+
// ----------------------------------------------------------
|
|
189
|
+
async deliverReport(performanceReport) {
|
|
190
|
+
switch (this.destination) {
|
|
191
|
+
case 'console':
|
|
192
|
+
this.logToConsole(performanceReport);
|
|
193
|
+
break;
|
|
194
|
+
case 'custom':
|
|
195
|
+
if (this.onReportCallback) {
|
|
196
|
+
await this.onReportCallback(performanceReport);
|
|
197
|
+
}
|
|
198
|
+
break;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
logToConsole(performanceReport) {
|
|
202
|
+
if (typeof globalThis.console === 'undefined') {
|
|
203
|
+
return;
|
|
204
|
+
}
|
|
205
|
+
const log = globalThis.console;
|
|
206
|
+
const group = typeof log.group === 'function' ? log.group.bind(log) : undefined;
|
|
207
|
+
const groupEnd = typeof log.groupEnd === 'function' ? log.groupEnd.bind(log) : undefined;
|
|
208
|
+
if (group) {
|
|
209
|
+
group('[PWFabric Perf Report]');
|
|
210
|
+
}
|
|
211
|
+
else {
|
|
212
|
+
log.warn('[PWFabric Perf Report]');
|
|
213
|
+
}
|
|
214
|
+
if (performanceReport.webVitals) {
|
|
215
|
+
log.warn('Web Vitals:', performanceReport.webVitals);
|
|
216
|
+
}
|
|
217
|
+
if (performanceReport.renderMetrics) {
|
|
218
|
+
log.warn('Render Metrics:', performanceReport.renderMetrics);
|
|
219
|
+
}
|
|
220
|
+
if (performanceReport.budgetCheck) {
|
|
221
|
+
const status = performanceReport.budgetCheck.passed ? 'PASS' : 'FAIL';
|
|
222
|
+
log.warn(`Budget Check: ${status}`, performanceReport.budgetCheck.violations);
|
|
223
|
+
}
|
|
224
|
+
if (groupEnd) {
|
|
225
|
+
groupEnd();
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
// ============================================================
|
|
230
|
+
// FACTORY
|
|
231
|
+
// ============================================================
|
|
232
|
+
/**
|
|
233
|
+
* Create a new PerformanceReporter instance.
|
|
234
|
+
*
|
|
235
|
+
* @param config - Reporter configuration
|
|
236
|
+
* @returns A new PerformanceReporter
|
|
237
|
+
*/
|
|
238
|
+
export function createPerformanceReporter(config) {
|
|
239
|
+
return new PerformanceReporter(config);
|
|
240
|
+
}
|
|
241
|
+
//# sourceMappingURL=reporter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reporter.js","sourceRoot":"","sources":["../../src/perf/reporter.ts"],"names":[],"mappings":"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"}
|