@tachui/cli 0.8.1-alpha → 0.8.5-alpha
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +15 -0
- package/bin/tacho.js +57 -7
- package/dist/cli/src/commands/analyze-imports.d.ts +18 -0
- package/dist/cli/src/commands/analyze-imports.d.ts.map +1 -0
- package/dist/cli/src/commands/analyze-imports.js +152 -0
- package/dist/cli/src/commands/analyze-imports.js.map +1 -0
- package/dist/cli/src/commands/analyze.d.ts.map +1 -0
- package/dist/{commands → cli/src/commands}/analyze.js +1 -1
- package/dist/cli/src/commands/analyze.js.map +1 -0
- package/dist/cli/src/commands/dev.d.ts.map +1 -0
- package/dist/cli/src/commands/dev.js.map +1 -0
- package/dist/cli/src/commands/generate.d.ts.map +1 -0
- package/dist/{commands → cli/src/commands}/generate.js +0 -21
- package/dist/cli/src/commands/generate.js.map +1 -0
- package/dist/cli/src/commands/init.d.ts.map +1 -0
- package/dist/{commands → cli/src/commands}/init.js +1 -28
- package/dist/cli/src/commands/init.js.map +1 -0
- package/dist/cli/src/commands/migrate/remove-modifier-trigger.d.ts +3 -0
- package/dist/cli/src/commands/migrate/remove-modifier-trigger.d.ts.map +1 -0
- package/dist/cli/src/commands/migrate/remove-modifier-trigger.js +103 -0
- package/dist/cli/src/commands/migrate/remove-modifier-trigger.js.map +1 -0
- package/dist/cli/src/commands/migrate.d.ts.map +1 -0
- package/dist/{commands → cli/src/commands}/migrate.js +5 -3
- package/dist/cli/src/commands/migrate.js.map +1 -0
- package/dist/cli/src/commands/modifier-docs.d.ts +24 -0
- package/dist/cli/src/commands/modifier-docs.d.ts.map +1 -0
- package/dist/cli/src/commands/modifier-docs.js +375 -0
- package/dist/cli/src/commands/modifier-docs.js.map +1 -0
- package/dist/cli/src/commands/optimize.d.ts.map +1 -0
- package/dist/cli/src/commands/optimize.js.map +1 -0
- package/dist/cli/src/import-optimizer.d.ts +50 -0
- package/dist/cli/src/import-optimizer.d.ts.map +1 -0
- package/dist/cli/src/import-optimizer.js +227 -0
- package/dist/cli/src/import-optimizer.js.map +1 -0
- package/dist/cli/src/index.d.ts.map +1 -0
- package/dist/{index.js → cli/src/index.js} +14 -3
- package/dist/cli/src/index.js.map +1 -0
- package/dist/cli/src/migrations/remove-modifier-trigger.d.ts +7 -0
- package/dist/cli/src/migrations/remove-modifier-trigger.d.ts.map +1 -0
- package/dist/cli/src/migrations/remove-modifier-trigger.js +99 -0
- package/dist/cli/src/migrations/remove-modifier-trigger.js.map +1 -0
- package/dist/core/package.json +223 -0
- package/dist/core/src/assets/Asset.d.ts +11 -0
- package/dist/core/src/assets/Asset.d.ts.map +1 -0
- package/dist/core/src/assets/Asset.js +12 -0
- package/dist/core/src/assets/Asset.js.map +1 -0
- package/dist/core/src/assets/AssetCollection.d.ts +14 -0
- package/dist/core/src/assets/AssetCollection.d.ts.map +1 -0
- package/dist/core/src/assets/AssetCollection.js +133 -0
- package/dist/core/src/assets/AssetCollection.js.map +1 -0
- package/dist/core/src/assets/ColorAsset.d.ts +31 -0
- package/dist/core/src/assets/ColorAsset.d.ts.map +1 -0
- package/dist/core/src/assets/ColorAsset.js +182 -0
- package/dist/core/src/assets/ColorAsset.js.map +1 -0
- package/dist/core/src/assets/FontAsset.d.ts +114 -0
- package/dist/core/src/assets/FontAsset.d.ts.map +1 -0
- package/dist/core/src/assets/FontAsset.js +289 -0
- package/dist/core/src/assets/FontAsset.js.map +1 -0
- package/dist/core/src/assets/ImageAsset.d.ts +35 -0
- package/dist/core/src/assets/ImageAsset.d.ts.map +1 -0
- package/dist/core/src/assets/ImageAsset.js +69 -0
- package/dist/core/src/assets/ImageAsset.js.map +1 -0
- package/dist/core/src/assets/index.d.ts +27 -0
- package/dist/core/src/assets/index.d.ts.map +1 -0
- package/dist/core/src/assets/index.js +137 -0
- package/dist/core/src/assets/index.js.map +1 -0
- package/dist/core/src/assets/types.d.ts +10 -0
- package/dist/core/src/assets/types.d.ts.map +1 -0
- package/dist/core/src/assets/types.js +6 -0
- package/dist/core/src/assets/types.js.map +1 -0
- package/dist/core/src/compiler/advanced-parser.d.ts +113 -0
- package/dist/core/src/compiler/advanced-parser.d.ts.map +1 -0
- package/dist/core/src/compiler/advanced-parser.js +702 -0
- package/dist/core/src/compiler/advanced-parser.js.map +1 -0
- package/dist/core/src/compiler/codegen.d.ts +20 -0
- package/dist/core/src/compiler/codegen.d.ts.map +1 -0
- package/dist/core/src/compiler/codegen.js +509 -0
- package/dist/core/src/compiler/codegen.js.map +1 -0
- package/dist/core/src/compiler/enhanced-codegen.d.ts +121 -0
- package/dist/core/src/compiler/enhanced-codegen.d.ts.map +1 -0
- package/dist/core/src/compiler/enhanced-codegen.js +607 -0
- package/dist/core/src/compiler/enhanced-codegen.js.map +1 -0
- package/dist/core/src/compiler/index.d.ts +14 -0
- package/dist/core/src/compiler/index.d.ts.map +1 -0
- package/dist/core/src/compiler/index.js +12 -0
- package/dist/core/src/compiler/index.js.map +1 -0
- package/dist/core/src/compiler/parser.d.ts +12 -0
- package/dist/core/src/compiler/parser.d.ts.map +1 -0
- package/dist/core/src/compiler/parser.js +407 -0
- package/dist/core/src/compiler/parser.js.map +1 -0
- package/dist/core/src/compiler/plugin.d.ts +13 -0
- package/dist/core/src/compiler/plugin.d.ts.map +1 -0
- package/dist/core/src/compiler/plugin.js +456 -0
- package/dist/core/src/compiler/plugin.js.map +1 -0
- package/dist/core/src/compiler/types.d.ts +177 -0
- package/dist/core/src/compiler/types.d.ts.map +1 -0
- package/dist/core/src/compiler/types.js +5 -0
- package/dist/core/src/compiler/types.js.map +1 -0
- package/dist/core/src/components/factory.d.ts +24 -0
- package/dist/core/src/components/factory.d.ts.map +1 -0
- package/dist/core/src/components/factory.js +19 -0
- package/dist/core/src/components/factory.js.map +1 -0
- package/dist/core/src/components/index.d.ts +12 -0
- package/dist/core/src/components/index.d.ts.map +1 -0
- package/dist/core/src/components/index.js +9 -0
- package/dist/core/src/components/index.js.map +1 -0
- package/dist/core/src/components/wrapper.d.ts +142 -0
- package/dist/core/src/components/wrapper.d.ts.map +1 -0
- package/dist/core/src/components/wrapper.js +628 -0
- package/dist/core/src/components/wrapper.js.map +1 -0
- package/dist/core/src/concatenation/concatenatable.d.ts +63 -0
- package/dist/core/src/concatenation/concatenatable.d.ts.map +1 -0
- package/dist/core/src/concatenation/concatenatable.js +158 -0
- package/dist/core/src/concatenation/concatenatable.js.map +1 -0
- package/dist/core/src/concatenation/concatenated-component.d.ts +124 -0
- package/dist/core/src/concatenation/concatenated-component.d.ts.map +1 -0
- package/dist/core/src/concatenation/concatenated-component.js +447 -0
- package/dist/core/src/concatenation/concatenated-component.js.map +1 -0
- package/dist/core/src/concatenation/index.d.ts +13 -0
- package/dist/core/src/concatenation/index.d.ts.map +1 -0
- package/dist/core/src/concatenation/index.js +16 -0
- package/dist/core/src/concatenation/index.js.map +1 -0
- package/dist/core/src/concatenation/text-optimizer.d.ts +104 -0
- package/dist/core/src/concatenation/text-optimizer.d.ts.map +1 -0
- package/dist/core/src/concatenation/text-optimizer.js +349 -0
- package/dist/core/src/concatenation/text-optimizer.js.map +1 -0
- package/dist/core/src/concatenation/types.d.ts +88 -0
- package/dist/core/src/concatenation/types.d.ts.map +1 -0
- package/dist/core/src/concatenation/types.js +23 -0
- package/dist/core/src/concatenation/types.js.map +1 -0
- package/dist/core/src/config.d.ts +7 -0
- package/dist/core/src/config.d.ts.map +1 -0
- package/dist/core/src/config.js +17 -0
- package/dist/core/src/config.js.map +1 -0
- package/dist/core/src/constants/frame-utils.d.ts +68 -0
- package/dist/core/src/constants/frame-utils.d.ts.map +1 -0
- package/dist/core/src/constants/frame-utils.js +156 -0
- package/dist/core/src/constants/frame-utils.js.map +1 -0
- package/dist/core/src/constants/index.d.ts +8 -0
- package/dist/core/src/constants/index.d.ts.map +1 -0
- package/dist/core/src/constants/index.js +8 -0
- package/dist/core/src/constants/index.js.map +1 -0
- package/dist/core/src/constants/layout.d.ts +96 -0
- package/dist/core/src/constants/layout.d.ts.map +1 -0
- package/dist/core/src/constants/layout.js +124 -0
- package/dist/core/src/constants/layout.js.map +1 -0
- package/dist/core/src/css-classes/component-base.d.ts +40 -0
- package/dist/core/src/css-classes/component-base.d.ts.map +1 -0
- package/dist/core/src/css-classes/component-base.js +90 -0
- package/dist/core/src/css-classes/component-base.js.map +1 -0
- package/dist/core/src/css-classes/css-class-manager.d.ts +89 -0
- package/dist/core/src/css-classes/css-class-manager.d.ts.map +1 -0
- package/dist/core/src/css-classes/css-class-manager.js +328 -0
- package/dist/core/src/css-classes/css-class-manager.js.map +1 -0
- package/dist/core/src/css-classes/dom-integration.d.ts +76 -0
- package/dist/core/src/css-classes/dom-integration.d.ts.map +1 -0
- package/dist/core/src/css-classes/dom-integration.js +104 -0
- package/dist/core/src/css-classes/dom-integration.js.map +1 -0
- package/dist/core/src/css-classes/enhanced-renderer.d.ts +42 -0
- package/dist/core/src/css-classes/enhanced-renderer.d.ts.map +1 -0
- package/dist/core/src/css-classes/enhanced-renderer.js +121 -0
- package/dist/core/src/css-classes/enhanced-renderer.js.map +1 -0
- package/dist/core/src/css-classes/index.d.ts +14 -0
- package/dist/core/src/css-classes/index.d.ts.map +1 -0
- package/dist/core/src/css-classes/index.js +14 -0
- package/dist/core/src/css-classes/index.js.map +1 -0
- package/dist/core/src/css-classes/types.d.ts +59 -0
- package/dist/core/src/css-classes/types.d.ts.map +1 -0
- package/dist/core/src/css-classes/types.js +8 -0
- package/dist/core/src/css-classes/types.js.map +1 -0
- package/dist/core/src/css-classes/utilities.d.ts +104 -0
- package/dist/core/src/css-classes/utilities.d.ts.map +1 -0
- package/dist/core/src/css-classes/utilities.js +126 -0
- package/dist/core/src/css-classes/utilities.js.map +1 -0
- package/dist/core/src/gradients/css-generator.d.ts +10 -0
- package/dist/core/src/gradients/css-generator.d.ts.map +1 -0
- package/dist/core/src/gradients/css-generator.js +123 -0
- package/dist/core/src/gradients/css-generator.js.map +1 -0
- package/dist/core/src/gradients/examples.d.ts +432 -0
- package/dist/core/src/gradients/examples.d.ts.map +1 -0
- package/dist/core/src/gradients/examples.js +588 -0
- package/dist/core/src/gradients/examples.js.map +1 -0
- package/dist/core/src/gradients/gradient-asset.d.ts +10 -0
- package/dist/core/src/gradients/gradient-asset.d.ts.map +1 -0
- package/dist/core/src/gradients/gradient-asset.js +25 -0
- package/dist/core/src/gradients/gradient-asset.js.map +1 -0
- package/dist/core/src/gradients/index.d.ts +19 -0
- package/dist/core/src/gradients/index.d.ts.map +1 -0
- package/dist/core/src/gradients/index.js +56 -0
- package/dist/core/src/gradients/index.js.map +1 -0
- package/dist/core/src/gradients/performance.d.ts +146 -0
- package/dist/core/src/gradients/performance.d.ts.map +1 -0
- package/dist/core/src/gradients/performance.js +413 -0
- package/dist/core/src/gradients/performance.js.map +1 -0
- package/dist/core/src/gradients/presets.d.ts +165 -0
- package/dist/core/src/gradients/presets.d.ts.map +1 -0
- package/dist/core/src/gradients/presets.js +371 -0
- package/dist/core/src/gradients/presets.js.map +1 -0
- package/dist/core/src/gradients/reactive.d.ts +167 -0
- package/dist/core/src/gradients/reactive.d.ts.map +1 -0
- package/dist/core/src/gradients/reactive.js +329 -0
- package/dist/core/src/gradients/reactive.js.map +1 -0
- package/dist/core/src/gradients/state-gradient-asset.d.ts +67 -0
- package/dist/core/src/gradients/state-gradient-asset.d.ts.map +1 -0
- package/dist/core/src/gradients/state-gradient-asset.js +145 -0
- package/dist/core/src/gradients/state-gradient-asset.js.map +1 -0
- package/dist/core/src/gradients/types.d.ts +6 -0
- package/dist/core/src/gradients/types.d.ts.map +1 -0
- package/dist/core/src/gradients/types.js +6 -0
- package/dist/core/src/gradients/types.js.map +1 -0
- package/dist/core/src/gradients/utils.d.ts +313 -0
- package/dist/core/src/gradients/utils.d.ts.map +1 -0
- package/dist/core/src/gradients/utils.js +513 -0
- package/dist/core/src/gradients/utils.js.map +1 -0
- package/dist/core/src/gradients/validation.d.ts +156 -0
- package/dist/core/src/gradients/validation.d.ts.map +1 -0
- package/dist/core/src/gradients/validation.js +392 -0
- package/dist/core/src/gradients/validation.js.map +1 -0
- package/dist/core/src/index.d.ts +33 -0
- package/dist/core/src/index.d.ts.map +1 -0
- package/dist/core/src/index.js +57 -0
- package/dist/core/src/index.js.map +1 -0
- package/dist/core/src/lifecycle/hooks.d.ts +101 -0
- package/dist/core/src/lifecycle/hooks.d.ts.map +1 -0
- package/dist/core/src/lifecycle/hooks.js +241 -0
- package/dist/core/src/lifecycle/hooks.js.map +1 -0
- package/dist/core/src/modifiers/alignment.d.ts +5 -0
- package/dist/core/src/modifiers/alignment.d.ts.map +1 -0
- package/dist/core/src/modifiers/alignment.js +19 -0
- package/dist/core/src/modifiers/alignment.js.map +1 -0
- package/dist/core/src/modifiers/base.d.ts +128 -0
- package/dist/core/src/modifiers/base.d.ts.map +1 -0
- package/dist/core/src/modifiers/base.js +1062 -0
- package/dist/core/src/modifiers/base.js.map +1 -0
- package/dist/core/src/modifiers/builder.d.ts +148 -0
- package/dist/core/src/modifiers/builder.d.ts.map +1 -0
- package/dist/core/src/modifiers/builder.js +903 -0
- package/dist/core/src/modifiers/builder.js.map +1 -0
- package/dist/core/src/modifiers/core.d.ts +14 -0
- package/dist/core/src/modifiers/core.d.ts.map +1 -0
- package/dist/core/src/modifiers/core.js +16 -0
- package/dist/core/src/modifiers/core.js.map +1 -0
- package/dist/core/src/modifiers/corner-radius.d.ts +8 -0
- package/dist/core/src/modifiers/corner-radius.d.ts.map +1 -0
- package/dist/core/src/modifiers/corner-radius.js +19 -0
- package/dist/core/src/modifiers/corner-radius.js.map +1 -0
- package/dist/core/src/modifiers/factories.d.ts +88 -0
- package/dist/core/src/modifiers/factories.d.ts.map +1 -0
- package/dist/core/src/modifiers/factories.js +376 -0
- package/dist/core/src/modifiers/factories.js.map +1 -0
- package/dist/core/src/modifiers/index.d.ts +17 -0
- package/dist/core/src/modifiers/index.d.ts.map +1 -0
- package/dist/core/src/modifiers/index.js +16 -0
- package/dist/core/src/modifiers/index.js.map +1 -0
- package/dist/core/src/modifiers/layout-priority.d.ts +8 -0
- package/dist/core/src/modifiers/layout-priority.d.ts.map +1 -0
- package/dist/core/src/modifiers/layout-priority.js +19 -0
- package/dist/core/src/modifiers/layout-priority.js.map +1 -0
- package/dist/core/src/modifiers/opacity.d.ts +8 -0
- package/dist/core/src/modifiers/opacity.d.ts.map +1 -0
- package/dist/core/src/modifiers/opacity.js +19 -0
- package/dist/core/src/modifiers/opacity.js.map +1 -0
- package/dist/core/src/modifiers/presets.d.ts +368 -0
- package/dist/core/src/modifiers/presets.d.ts.map +1 -0
- package/dist/core/src/modifiers/presets.js +394 -0
- package/dist/core/src/modifiers/presets.js.map +1 -0
- package/dist/core/src/modifiers/proxy.d.ts +4 -0
- package/dist/core/src/modifiers/proxy.d.ts.map +1 -0
- package/dist/core/src/modifiers/proxy.js +212 -0
- package/dist/core/src/modifiers/proxy.js.map +1 -0
- package/dist/core/src/modifiers/registration-utils.d.ts +7 -0
- package/dist/core/src/modifiers/registration-utils.d.ts.map +1 -0
- package/dist/core/src/modifiers/registration-utils.js +46 -0
- package/dist/core/src/modifiers/registration-utils.js.map +1 -0
- package/dist/core/src/modifiers/registry.d.ts +78 -0
- package/dist/core/src/modifiers/registry.d.ts.map +1 -0
- package/dist/core/src/modifiers/registry.js +397 -0
- package/dist/core/src/modifiers/registry.js.map +1 -0
- package/dist/core/src/modifiers/types.d.ts +6 -0
- package/dist/core/src/modifiers/types.d.ts.map +1 -0
- package/dist/core/src/modifiers/types.js +6 -0
- package/dist/core/src/modifiers/types.js.map +1 -0
- package/dist/core/src/plugins/index.d.ts +16 -0
- package/dist/core/src/plugins/index.d.ts.map +1 -0
- package/dist/core/src/plugins/index.js +21 -0
- package/dist/core/src/plugins/index.js.map +1 -0
- package/dist/core/src/plugins/legacy-adapter.d.ts +35 -0
- package/dist/core/src/plugins/legacy-adapter.d.ts.map +1 -0
- package/dist/core/src/plugins/legacy-adapter.js +57 -0
- package/dist/core/src/plugins/legacy-adapter.js.map +1 -0
- package/dist/core/src/plugins/simplified-component-registry.d.ts +40 -0
- package/dist/core/src/plugins/simplified-component-registry.d.ts.map +1 -0
- package/dist/core/src/plugins/simplified-component-registry.js +97 -0
- package/dist/core/src/plugins/simplified-component-registry.js.map +1 -0
- package/dist/core/src/plugins/simplified-lazy-loader.d.ts +65 -0
- package/dist/core/src/plugins/simplified-lazy-loader.d.ts.map +1 -0
- package/dist/core/src/plugins/simplified-lazy-loader.js +205 -0
- package/dist/core/src/plugins/simplified-lazy-loader.js.map +1 -0
- package/dist/core/src/plugins/simplified-plugin-manager.d.ts +24 -0
- package/dist/core/src/plugins/simplified-plugin-manager.d.ts.map +1 -0
- package/dist/core/src/plugins/simplified-plugin-manager.js +77 -0
- package/dist/core/src/plugins/simplified-plugin-manager.js.map +1 -0
- package/dist/core/src/plugins/simplified-tachui-instance.d.ts +54 -0
- package/dist/core/src/plugins/simplified-tachui-instance.d.ts.map +1 -0
- package/dist/core/src/plugins/simplified-tachui-instance.js +114 -0
- package/dist/core/src/plugins/simplified-tachui-instance.js.map +1 -0
- package/dist/core/src/plugins/simplified-types.d.ts +63 -0
- package/dist/core/src/plugins/simplified-types.d.ts.map +1 -0
- package/dist/core/src/plugins/simplified-types.js +18 -0
- package/dist/core/src/plugins/simplified-types.js.map +1 -0
- package/dist/core/src/plugins/simplified-utils.d.ts +39 -0
- package/dist/core/src/plugins/simplified-utils.d.ts.map +1 -0
- package/dist/core/src/plugins/simplified-utils.js +104 -0
- package/dist/core/src/plugins/simplified-utils.js.map +1 -0
- package/dist/core/src/reactive/cleanup.d.ts +115 -0
- package/dist/core/src/reactive/cleanup.d.ts.map +1 -0
- package/dist/core/src/reactive/cleanup.js +187 -0
- package/dist/core/src/reactive/cleanup.js.map +1 -0
- package/dist/core/src/reactive/computed.d.ts +115 -0
- package/dist/core/src/reactive/computed.d.ts.map +1 -0
- package/dist/core/src/reactive/computed.js +237 -0
- package/dist/core/src/reactive/computed.js.map +1 -0
- package/dist/core/src/reactive/context.d.ts +83 -0
- package/dist/core/src/reactive/context.d.ts.map +1 -0
- package/dist/core/src/reactive/context.js +286 -0
- package/dist/core/src/reactive/context.js.map +1 -0
- package/dist/core/src/reactive/effect.d.ts +79 -0
- package/dist/core/src/reactive/effect.d.ts.map +1 -0
- package/dist/core/src/reactive/effect.js +159 -0
- package/dist/core/src/reactive/effect.js.map +1 -0
- package/dist/core/src/reactive/enhanced-effect.d.ts +108 -0
- package/dist/core/src/reactive/enhanced-effect.d.ts.map +1 -0
- package/dist/core/src/reactive/enhanced-effect.js +265 -0
- package/dist/core/src/reactive/enhanced-effect.js.map +1 -0
- package/dist/core/src/reactive/enhanced-signal.d.ts +91 -0
- package/dist/core/src/reactive/enhanced-signal.d.ts.map +1 -0
- package/dist/core/src/reactive/enhanced-signal.js +175 -0
- package/dist/core/src/reactive/enhanced-signal.js.map +1 -0
- package/dist/core/src/reactive/equality.d.ts +51 -0
- package/dist/core/src/reactive/equality.d.ts.map +1 -0
- package/dist/core/src/reactive/equality.js +169 -0
- package/dist/core/src/reactive/equality.js.map +1 -0
- package/dist/core/src/reactive/index.d.ts +22 -0
- package/dist/core/src/reactive/index.d.ts.map +1 -0
- package/dist/core/src/reactive/index.js +33 -0
- package/dist/core/src/reactive/index.js.map +1 -0
- package/dist/core/src/reactive/migration.d.ts +104 -0
- package/dist/core/src/reactive/migration.d.ts.map +1 -0
- package/dist/core/src/reactive/migration.js +257 -0
- package/dist/core/src/reactive/migration.js.map +1 -0
- package/dist/core/src/reactive/ownership.d.ts +75 -0
- package/dist/core/src/reactive/ownership.d.ts.map +1 -0
- package/dist/core/src/reactive/ownership.js +155 -0
- package/dist/core/src/reactive/ownership.js.map +1 -0
- package/dist/core/src/reactive/scheduler.d.ts +56 -0
- package/dist/core/src/reactive/scheduler.d.ts.map +1 -0
- package/dist/core/src/reactive/scheduler.js +263 -0
- package/dist/core/src/reactive/scheduler.js.map +1 -0
- package/dist/core/src/reactive/signal-list.d.ts +100 -0
- package/dist/core/src/reactive/signal-list.d.ts.map +1 -0
- package/dist/core/src/reactive/signal-list.js +240 -0
- package/dist/core/src/reactive/signal-list.js.map +1 -0
- package/dist/core/src/reactive/signal.d.ts +82 -0
- package/dist/core/src/reactive/signal.d.ts.map +1 -0
- package/dist/core/src/reactive/signal.js +172 -0
- package/dist/core/src/reactive/signal.js.map +1 -0
- package/dist/core/src/reactive/theme.d.ts +12 -0
- package/dist/core/src/reactive/theme.d.ts.map +1 -0
- package/dist/core/src/reactive/theme.js +41 -0
- package/dist/core/src/reactive/theme.js.map +1 -0
- package/dist/core/src/reactive/types.d.ts +6 -0
- package/dist/core/src/reactive/types.d.ts.map +1 -0
- package/dist/core/src/reactive/types.js +6 -0
- package/dist/core/src/reactive/types.js.map +1 -0
- package/dist/core/src/reactive/unified-scheduler.d.ts +112 -0
- package/dist/core/src/reactive/unified-scheduler.d.ts.map +1 -0
- package/dist/core/src/reactive/unified-scheduler.js +315 -0
- package/dist/core/src/reactive/unified-scheduler.js.map +1 -0
- package/dist/core/src/runtime/component-context.d.ts +73 -0
- package/dist/core/src/runtime/component-context.d.ts.map +1 -0
- package/dist/core/src/runtime/component-context.js +278 -0
- package/dist/core/src/runtime/component-context.js.map +1 -0
- package/dist/core/src/runtime/component.d.ts +112 -0
- package/dist/core/src/runtime/component.d.ts.map +1 -0
- package/dist/core/src/runtime/component.js +394 -0
- package/dist/core/src/runtime/component.js.map +1 -0
- package/dist/core/src/runtime/context.d.ts +138 -0
- package/dist/core/src/runtime/context.d.ts.map +1 -0
- package/dist/core/src/runtime/context.js +411 -0
- package/dist/core/src/runtime/context.js.map +1 -0
- package/dist/core/src/runtime/dom-bridge.d.ts +70 -0
- package/dist/core/src/runtime/dom-bridge.d.ts.map +1 -0
- package/dist/core/src/runtime/dom-bridge.js +481 -0
- package/dist/core/src/runtime/dom-bridge.js.map +1 -0
- package/dist/core/src/runtime/element-override.d.ts +82 -0
- package/dist/core/src/runtime/element-override.d.ts.map +1 -0
- package/dist/core/src/runtime/element-override.js +360 -0
- package/dist/core/src/runtime/element-override.js.map +1 -0
- package/dist/core/src/runtime/event-delegation.d.ts +59 -0
- package/dist/core/src/runtime/event-delegation.d.ts.map +1 -0
- package/dist/core/src/runtime/event-delegation.js +220 -0
- package/dist/core/src/runtime/event-delegation.js.map +1 -0
- package/dist/core/src/runtime/index.d.ts +24 -0
- package/dist/core/src/runtime/index.d.ts.map +1 -0
- package/dist/core/src/runtime/index.js +36 -0
- package/dist/core/src/runtime/index.js.map +1 -0
- package/dist/core/src/runtime/lazy-component.d.ts +58 -0
- package/dist/core/src/runtime/lazy-component.d.ts.map +1 -0
- package/dist/core/src/runtime/lazy-component.js +206 -0
- package/dist/core/src/runtime/lazy-component.js.map +1 -0
- package/dist/core/src/runtime/lifecycle.d.ts +8 -0
- package/dist/core/src/runtime/lifecycle.d.ts.map +1 -0
- package/dist/core/src/runtime/lifecycle.js +9 -0
- package/dist/core/src/runtime/lifecycle.js.map +1 -0
- package/dist/core/src/runtime/mounting.d.ts +9 -0
- package/dist/core/src/runtime/mounting.d.ts.map +1 -0
- package/dist/core/src/runtime/mounting.js +15 -0
- package/dist/core/src/runtime/mounting.js.map +1 -0
- package/dist/core/src/runtime/optimization.d.ts +8 -0
- package/dist/core/src/runtime/optimization.d.ts.map +1 -0
- package/dist/core/src/runtime/optimization.js +12 -0
- package/dist/core/src/runtime/optimization.js.map +1 -0
- package/dist/core/src/runtime/props.d.ts +154 -0
- package/dist/core/src/runtime/props.d.ts.map +1 -0
- package/dist/core/src/runtime/props.js +389 -0
- package/dist/core/src/runtime/props.js.map +1 -0
- package/dist/core/src/runtime/renderer.d.ts +168 -0
- package/dist/core/src/runtime/renderer.d.ts.map +1 -0
- package/dist/core/src/runtime/renderer.js +1181 -0
- package/dist/core/src/runtime/renderer.js.map +1 -0
- package/dist/core/src/runtime/semantic-role-manager.d.ts +37 -0
- package/dist/core/src/runtime/semantic-role-manager.d.ts.map +1 -0
- package/dist/core/src/runtime/semantic-role-manager.js +102 -0
- package/dist/core/src/runtime/semantic-role-manager.js.map +1 -0
- package/dist/core/src/runtime/types.d.ts +6 -0
- package/dist/core/src/runtime/types.d.ts.map +1 -0
- package/dist/core/src/runtime/types.js +6 -0
- package/dist/core/src/runtime/types.js.map +1 -0
- package/dist/core/src/state/binding.d.ts +96 -0
- package/dist/core/src/state/binding.d.ts.map +1 -0
- package/dist/core/src/state/binding.js +264 -0
- package/dist/core/src/state/binding.js.map +1 -0
- package/dist/core/src/state/environment.d.ts +178 -0
- package/dist/core/src/state/environment.d.ts.map +1 -0
- package/dist/core/src/state/environment.js +272 -0
- package/dist/core/src/state/environment.js.map +1 -0
- package/dist/core/src/state/index.d.ts +108 -0
- package/dist/core/src/state/index.d.ts.map +1 -0
- package/dist/core/src/state/index.js +102 -0
- package/dist/core/src/state/index.js.map +1 -0
- package/dist/core/src/state/observed-object.d.ts +126 -0
- package/dist/core/src/state/observed-object.d.ts.map +1 -0
- package/dist/core/src/state/observed-object.js +330 -0
- package/dist/core/src/state/observed-object.js.map +1 -0
- package/dist/core/src/state/state-manager.d.ts +97 -0
- package/dist/core/src/state/state-manager.d.ts.map +1 -0
- package/dist/core/src/state/state-manager.js +297 -0
- package/dist/core/src/state/state-manager.js.map +1 -0
- package/dist/core/src/state/state.d.ts +78 -0
- package/dist/core/src/state/state.d.ts.map +1 -0
- package/dist/core/src/state/state.js +283 -0
- package/dist/core/src/state/state.js.map +1 -0
- package/dist/core/src/state/types.d.ts +159 -0
- package/dist/core/src/state/types.d.ts.map +1 -0
- package/dist/core/src/state/types.js +8 -0
- package/dist/core/src/state/types.js.map +1 -0
- package/dist/core/src/utils/clone-helpers.d.ts +11 -0
- package/dist/core/src/utils/clone-helpers.d.ts.map +1 -0
- package/dist/core/src/utils/clone-helpers.js +69 -0
- package/dist/core/src/utils/clone-helpers.js.map +1 -0
- package/dist/core/src/validation/build-time-stub.d.ts +33 -0
- package/dist/core/src/validation/build-time-stub.d.ts.map +1 -0
- package/dist/core/src/validation/build-time-stub.js +53 -0
- package/dist/core/src/validation/build-time-stub.js.map +1 -0
- package/dist/core/src/validation/debug-tools-stub.d.ts +67 -0
- package/dist/core/src/validation/debug-tools-stub.d.ts.map +1 -0
- package/dist/core/src/validation/debug-tools-stub.js +94 -0
- package/dist/core/src/validation/debug-tools-stub.js.map +1 -0
- package/dist/core/src/validation/index.d.ts +116 -0
- package/dist/core/src/validation/index.d.ts.map +1 -0
- package/dist/core/src/validation/index.js +306 -0
- package/dist/core/src/validation/index.js.map +1 -0
- package/dist/core/src/validation/lifecycle-validation.d.ts +165 -0
- package/dist/core/src/validation/lifecycle-validation.d.ts.map +1 -0
- package/dist/core/src/validation/lifecycle-validation.js +501 -0
- package/dist/core/src/validation/lifecycle-validation.js.map +1 -0
- package/dist/core/src/validation/performance-optimizer-stub.d.ts +50 -0
- package/dist/core/src/validation/performance-optimizer-stub.d.ts.map +1 -0
- package/dist/core/src/validation/performance-optimizer-stub.js +50 -0
- package/dist/core/src/validation/performance-optimizer-stub.js.map +1 -0
- package/dist/core/src/validation/plugin-registration.d.ts +92 -0
- package/dist/core/src/validation/plugin-registration.d.ts.map +1 -0
- package/dist/core/src/validation/plugin-registration.js +199 -0
- package/dist/core/src/validation/plugin-registration.js.map +1 -0
- package/dist/core/src/validation/production-bypass-core.d.ts +69 -0
- package/dist/core/src/validation/production-bypass-core.d.ts.map +1 -0
- package/dist/core/src/validation/production-bypass-core.js +115 -0
- package/dist/core/src/validation/production-bypass-core.js.map +1 -0
- package/dist/core/src/version.d.ts +19 -0
- package/dist/core/src/version.d.ts.map +1 -0
- package/dist/core/src/version.js +20 -0
- package/dist/core/src/version.js.map +1 -0
- package/dist/devtools/src/build-time/detection.d.ts +32 -0
- package/dist/devtools/src/build-time/detection.d.ts.map +1 -0
- package/dist/devtools/src/build-time/detection.js +327 -0
- package/dist/devtools/src/build-time/detection.js.map +1 -0
- package/dist/devtools/src/build-time/index.d.ts +84 -0
- package/dist/devtools/src/build-time/index.d.ts.map +1 -0
- package/dist/devtools/src/build-time/index.js +157 -0
- package/dist/devtools/src/build-time/index.js.map +1 -0
- package/dist/devtools/src/build-time/plugins.d.ts +75 -0
- package/dist/devtools/src/build-time/plugins.d.ts.map +1 -0
- package/dist/devtools/src/build-time/plugins.js +429 -0
- package/dist/devtools/src/build-time/plugins.js.map +1 -0
- package/dist/devtools/src/build-time/rules.d.ts +73 -0
- package/dist/devtools/src/build-time/rules.d.ts.map +1 -0
- package/dist/devtools/src/build-time/rules.js +622 -0
- package/dist/devtools/src/build-time/rules.js.map +1 -0
- package/dist/devtools/src/build-time/transformer.d.ts +23 -0
- package/dist/devtools/src/build-time/transformer.d.ts.map +1 -0
- package/dist/devtools/src/build-time/transformer.js +294 -0
- package/dist/devtools/src/build-time/transformer.js.map +1 -0
- package/dist/devtools/src/build-time/types.d.ts +212 -0
- package/dist/devtools/src/build-time/types.d.ts.map +1 -0
- package/dist/devtools/src/build-time/types.js +8 -0
- package/dist/devtools/src/build-time/types.js.map +1 -0
- package/dist/devtools/src/debug/debug.d.ts +61 -0
- package/dist/devtools/src/debug/debug.d.ts.map +1 -0
- package/dist/devtools/src/debug/debug.js +239 -0
- package/dist/devtools/src/debug/debug.js.map +1 -0
- package/dist/devtools/src/debug/development-warnings.d.ts +42 -0
- package/dist/devtools/src/debug/development-warnings.d.ts.map +1 -0
- package/dist/devtools/src/debug/development-warnings.js +84 -0
- package/dist/devtools/src/debug/development-warnings.js.map +1 -0
- package/dist/devtools/src/debug/enhanced-errors.d.ts +176 -0
- package/dist/devtools/src/debug/enhanced-errors.d.ts.map +1 -0
- package/dist/devtools/src/debug/enhanced-errors.js +481 -0
- package/dist/devtools/src/debug/enhanced-errors.js.map +1 -0
- package/dist/devtools/src/debug/enhanced-types.d.ts +284 -0
- package/dist/devtools/src/debug/enhanced-types.d.ts.map +1 -0
- package/dist/devtools/src/debug/enhanced-types.js +8 -0
- package/dist/devtools/src/debug/enhanced-types.js.map +1 -0
- package/dist/devtools/src/debug/index.d.ts +13 -0
- package/dist/devtools/src/debug/index.d.ts.map +1 -0
- package/dist/devtools/src/debug/index.js +17 -0
- package/dist/devtools/src/debug/index.js.map +1 -0
- package/dist/devtools/src/debug/validation-debug-tools.d.ts +228 -0
- package/dist/devtools/src/debug/validation-debug-tools.d.ts.map +1 -0
- package/dist/devtools/src/debug/validation-debug-tools.js +472 -0
- package/dist/devtools/src/debug/validation-debug-tools.js.map +1 -0
- package/dist/devtools/src/import-guide.d.ts +50 -0
- package/dist/devtools/src/import-guide.d.ts.map +1 -0
- package/dist/devtools/src/import-guide.js +257 -0
- package/dist/devtools/src/import-guide.js.map +1 -0
- package/dist/devtools/src/index.d.ts +24 -0
- package/dist/devtools/src/index.d.ts.map +1 -0
- package/dist/devtools/src/index.js +32 -0
- package/dist/devtools/src/index.js.map +1 -0
- package/dist/devtools/src/inspector/index.d.ts +232 -0
- package/dist/devtools/src/inspector/index.d.ts.map +1 -0
- package/dist/devtools/src/inspector/index.js +551 -0
- package/dist/devtools/src/inspector/index.js.map +1 -0
- package/dist/devtools/src/modifier-parameter-system.d.ts +69 -0
- package/dist/devtools/src/modifier-parameter-system.d.ts.map +1 -0
- package/dist/devtools/src/modifier-parameter-system.js +462 -0
- package/dist/devtools/src/modifier-parameter-system.js.map +1 -0
- package/dist/devtools/src/plugins/simplified-error-handler.d.ts +83 -0
- package/dist/devtools/src/plugins/simplified-error-handler.d.ts.map +1 -0
- package/dist/devtools/src/plugins/simplified-error-handler.js +335 -0
- package/dist/devtools/src/plugins/simplified-error-handler.js.map +1 -0
- package/dist/devtools/src/profiler/index.d.ts +21 -0
- package/dist/devtools/src/profiler/index.d.ts.map +1 -0
- package/dist/devtools/src/profiler/index.js +30 -0
- package/dist/devtools/src/profiler/index.js.map +1 -0
- package/dist/devtools/src/profiler/performance-optimizer.d.ts +115 -0
- package/dist/devtools/src/profiler/performance-optimizer.d.ts.map +1 -0
- package/dist/devtools/src/profiler/performance-optimizer.js +273 -0
- package/dist/devtools/src/profiler/performance-optimizer.js.map +1 -0
- package/dist/devtools/src/profiler/production-monitoring.d.ts +150 -0
- package/dist/devtools/src/profiler/production-monitoring.d.ts.map +1 -0
- package/dist/devtools/src/profiler/production-monitoring.js +274 -0
- package/dist/devtools/src/profiler/production-monitoring.js.map +1 -0
- package/dist/devtools/src/runtime/error-boundary.d.ts +302 -0
- package/dist/devtools/src/runtime/error-boundary.d.ts.map +1 -0
- package/dist/devtools/src/runtime/error-boundary.js +717 -0
- package/dist/devtools/src/runtime/error-boundary.js.map +1 -0
- package/dist/devtools/src/runtime/error-recovery.d.ts +267 -0
- package/dist/devtools/src/runtime/error-recovery.d.ts.map +1 -0
- package/dist/devtools/src/runtime/error-recovery.js +499 -0
- package/dist/devtools/src/runtime/error-recovery.js.map +1 -0
- package/dist/devtools/src/runtime/error-reporting.d.ts +287 -0
- package/dist/devtools/src/runtime/error-reporting.d.ts.map +1 -0
- package/dist/devtools/src/runtime/error-reporting.js +626 -0
- package/dist/devtools/src/runtime/error-reporting.js.map +1 -0
- package/dist/devtools/src/runtime/error-utils.d.ts +204 -0
- package/dist/devtools/src/runtime/error-utils.d.ts.map +1 -0
- package/dist/devtools/src/runtime/error-utils.js +519 -0
- package/dist/devtools/src/runtime/error-utils.js.map +1 -0
- package/dist/devtools/src/runtime/performance.d.ts +217 -0
- package/dist/devtools/src/runtime/performance.d.ts.map +1 -0
- package/dist/devtools/src/runtime/performance.js +538 -0
- package/dist/devtools/src/runtime/performance.js.map +1 -0
- package/dist/devtools/src/testing/index.d.ts +29 -0
- package/dist/devtools/src/testing/index.d.ts.map +1 -0
- package/dist/devtools/src/testing/index.js +48 -0
- package/dist/devtools/src/testing/index.js.map +1 -0
- package/dist/devtools/src/validation/enhanced-runtime.d.ts +310 -0
- package/dist/devtools/src/validation/enhanced-runtime.d.ts.map +1 -0
- package/dist/devtools/src/validation/enhanced-runtime.js +603 -0
- package/dist/devtools/src/validation/enhanced-runtime.js.map +1 -0
- package/dist/devtools/src/validation/error-reporting.d.ts +186 -0
- package/dist/devtools/src/validation/error-reporting.d.ts.map +1 -0
- package/dist/devtools/src/validation/error-reporting.js +439 -0
- package/dist/devtools/src/validation/error-reporting.js.map +1 -0
- package/package.json +6 -2
- package/dist/commands/analyze.d.ts.map +0 -1
- package/dist/commands/analyze.js.map +0 -1
- package/dist/commands/dev.d.ts.map +0 -1
- package/dist/commands/dev.js.map +0 -1
- package/dist/commands/generate.d.ts.map +0 -1
- package/dist/commands/generate.js.map +0 -1
- package/dist/commands/init.d.ts.map +0 -1
- package/dist/commands/init.js.map +0 -1
- package/dist/commands/migrate.d.ts.map +0 -1
- package/dist/commands/migrate.js.map +0 -1
- package/dist/commands/optimize.d.ts.map +0 -1
- package/dist/commands/optimize.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- /package/dist/{commands → cli/src/commands}/analyze.d.ts +0 -0
- /package/dist/{commands → cli/src/commands}/dev.d.ts +0 -0
- /package/dist/{commands → cli/src/commands}/dev.js +0 -0
- /package/dist/{commands → cli/src/commands}/generate.d.ts +0 -0
- /package/dist/{commands → cli/src/commands}/init.d.ts +0 -0
- /package/dist/{commands → cli/src/commands}/migrate.d.ts +0 -0
- /package/dist/{commands → cli/src/commands}/optimize.d.ts +0 -0
- /package/dist/{commands → cli/src/commands}/optimize.js +0 -0
- /package/dist/{index.d.ts → cli/src/index.d.ts} +0 -0
|
@@ -0,0 +1,265 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Enhanced Effect System v2.0
|
|
3
|
+
*
|
|
4
|
+
* Provides proper error propagation and integrates with the unified scheduler
|
|
5
|
+
* to fix silent error suppression and incomplete cleanup issues.
|
|
6
|
+
*/
|
|
7
|
+
import { getCurrentComputation, getCurrentOwner } from './context';
|
|
8
|
+
import { ReactiveScheduler, UpdatePriority } from './unified-scheduler';
|
|
9
|
+
let effectIdCounter = 0;
|
|
10
|
+
/**
|
|
11
|
+
* Enhanced effect implementation with proper error propagation
|
|
12
|
+
*/
|
|
13
|
+
export class EffectImpl {
|
|
14
|
+
effectFn;
|
|
15
|
+
id = ++effectIdCounter;
|
|
16
|
+
type = 'effect';
|
|
17
|
+
priority;
|
|
18
|
+
sources = new Set();
|
|
19
|
+
observers = new Set(); // Effects don't have observers
|
|
20
|
+
isDisposed = false;
|
|
21
|
+
cleanupFn;
|
|
22
|
+
options;
|
|
23
|
+
owner;
|
|
24
|
+
constructor(effectFn, options = {}) {
|
|
25
|
+
this.effectFn = effectFn;
|
|
26
|
+
this.priority = options.priority ?? UpdatePriority.Normal;
|
|
27
|
+
this.options = options;
|
|
28
|
+
this.owner = getCurrentOwner();
|
|
29
|
+
if (options.fireImmediately !== false) {
|
|
30
|
+
this.execute();
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Notify method called by unified scheduler
|
|
35
|
+
*/
|
|
36
|
+
notify() {
|
|
37
|
+
if (this.isDisposed)
|
|
38
|
+
return;
|
|
39
|
+
this.execute();
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Execute the effect with proper error handling
|
|
43
|
+
*/
|
|
44
|
+
execute() {
|
|
45
|
+
if (this.isDisposed)
|
|
46
|
+
return;
|
|
47
|
+
// Cleanup previous effect run
|
|
48
|
+
if (this.cleanupFn) {
|
|
49
|
+
try {
|
|
50
|
+
this.cleanupFn();
|
|
51
|
+
}
|
|
52
|
+
catch (error) {
|
|
53
|
+
console.error('Effect cleanup error:', error);
|
|
54
|
+
}
|
|
55
|
+
this.cleanupFn = undefined;
|
|
56
|
+
}
|
|
57
|
+
// Clear existing dependencies
|
|
58
|
+
for (const source of this.sources) {
|
|
59
|
+
if ('removeObserver' in source && typeof source.removeObserver === 'function') {
|
|
60
|
+
source.removeObserver(this);
|
|
61
|
+
}
|
|
62
|
+
else if ('observers' in source && source.observers instanceof Set) {
|
|
63
|
+
source.observers.delete(this);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
this.sources.clear();
|
|
67
|
+
// Execute effect with dependency tracking
|
|
68
|
+
const previousComputation = getCurrentComputation();
|
|
69
|
+
// We need to set this as the current computation for dependency tracking
|
|
70
|
+
const setCurrentComputation = this.setCurrentComputation || (() => { });
|
|
71
|
+
setCurrentComputation(this);
|
|
72
|
+
try {
|
|
73
|
+
const result = this.effectFn();
|
|
74
|
+
// Store cleanup function if returned
|
|
75
|
+
if (typeof result === 'function') {
|
|
76
|
+
this.cleanupFn = result;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
catch (error) {
|
|
80
|
+
if (this.options.onError) {
|
|
81
|
+
try {
|
|
82
|
+
this.options.onError(error);
|
|
83
|
+
}
|
|
84
|
+
catch (handlerError) {
|
|
85
|
+
console.error('Effect error handler threw error:', handlerError);
|
|
86
|
+
// Re-throw the original error since handler failed
|
|
87
|
+
throw error;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
// Don't suppress errors like the old implementation - re-throw them
|
|
92
|
+
console.error(`Effect ${this.options.debugName || this.id} threw error:`, error);
|
|
93
|
+
throw error;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
finally {
|
|
97
|
+
setCurrentComputation(previousComputation);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Complete cleanup for memory management
|
|
102
|
+
*/
|
|
103
|
+
cleanup() {
|
|
104
|
+
this.isDisposed = true;
|
|
105
|
+
// Cleanup effect function
|
|
106
|
+
if (this.cleanupFn) {
|
|
107
|
+
try {
|
|
108
|
+
this.cleanupFn();
|
|
109
|
+
}
|
|
110
|
+
catch (error) {
|
|
111
|
+
console.error('Effect cleanup error:', error);
|
|
112
|
+
}
|
|
113
|
+
this.cleanupFn = undefined;
|
|
114
|
+
}
|
|
115
|
+
// Remove from all sources
|
|
116
|
+
for (const source of this.sources) {
|
|
117
|
+
if ('removeObserver' in source && typeof source.removeObserver === 'function') {
|
|
118
|
+
source.removeObserver(this);
|
|
119
|
+
}
|
|
120
|
+
else if ('observers' in source && source.observers instanceof Set) {
|
|
121
|
+
source.observers.delete(this);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
this.sources.clear();
|
|
125
|
+
// Remove from owner cleanup
|
|
126
|
+
if (this.owner?.cleanups) {
|
|
127
|
+
const index = this.owner.cleanups.indexOf(this.cleanup.bind(this));
|
|
128
|
+
if (index >= 0) {
|
|
129
|
+
this.owner.cleanups.splice(index, 1);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Dispose the effect (alias for cleanup)
|
|
135
|
+
*/
|
|
136
|
+
dispose() {
|
|
137
|
+
this.cleanup();
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Check if effect is disposed
|
|
141
|
+
*/
|
|
142
|
+
get disposed() {
|
|
143
|
+
return this.isDisposed;
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Debug information
|
|
147
|
+
*/
|
|
148
|
+
[Symbol.for('tachui.debug')]() {
|
|
149
|
+
return {
|
|
150
|
+
id: this.id,
|
|
151
|
+
type: this.type,
|
|
152
|
+
priority: UpdatePriority[this.priority],
|
|
153
|
+
debugName: this.options.debugName,
|
|
154
|
+
disposed: this.isDisposed,
|
|
155
|
+
sourceCount: this.sources.size,
|
|
156
|
+
hasCleanup: !!this.cleanupFn,
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
toString() {
|
|
160
|
+
return `Effect(${this.options.debugName || this.id})`;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Create a reactive effect with proper error handling
|
|
165
|
+
*
|
|
166
|
+
* @param effectFn The effect function to run
|
|
167
|
+
* @param options Effect configuration options
|
|
168
|
+
* @returns Cleanup function to dispose the effect
|
|
169
|
+
*
|
|
170
|
+
* @example
|
|
171
|
+
* ```typescript
|
|
172
|
+
* const [count, setCount] = createSignal(0)
|
|
173
|
+
*
|
|
174
|
+
* const cleanup = createEnhancedEffect(() => {
|
|
175
|
+
* console.log('Count changed:', count())
|
|
176
|
+
* }, {
|
|
177
|
+
* debugName: 'countLogger',
|
|
178
|
+
* onError: (error) => {
|
|
179
|
+
* console.error('Effect failed:', error)
|
|
180
|
+
* }
|
|
181
|
+
* })
|
|
182
|
+
*
|
|
183
|
+
* // Later, cleanup when no longer needed
|
|
184
|
+
* cleanup()
|
|
185
|
+
* ```
|
|
186
|
+
*/
|
|
187
|
+
export function createEnhancedEffect(effectFn, options) {
|
|
188
|
+
const effect = new EffectImpl(effectFn, options);
|
|
189
|
+
// Register cleanup with owner if available
|
|
190
|
+
const owner = getCurrentOwner();
|
|
191
|
+
if (owner) {
|
|
192
|
+
owner.cleanups.push(() => effect.cleanup());
|
|
193
|
+
}
|
|
194
|
+
return () => effect.cleanup();
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Create an effect with high priority for user interactions
|
|
198
|
+
*/
|
|
199
|
+
export function createHighPriorityEffect(effectFn, options) {
|
|
200
|
+
return createEnhancedEffect(effectFn, { ...options, priority: UpdatePriority.High });
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Create an effect with low priority for background tasks
|
|
204
|
+
*/
|
|
205
|
+
export function createLowPriorityEffect(effectFn, options) {
|
|
206
|
+
return createEnhancedEffect(effectFn, { ...options, priority: UpdatePriority.Low });
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Create an effect that only runs when dependencies change (not immediately)
|
|
210
|
+
*/
|
|
211
|
+
export function createWatchEffect(effectFn, options) {
|
|
212
|
+
return createEnhancedEffect(effectFn, { ...options, fireImmediately: false });
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Create an effect with automatic error recovery
|
|
216
|
+
*/
|
|
217
|
+
export function createResilientEffect(effectFn, onError, // return true to retry
|
|
218
|
+
maxRetries = 3, options) {
|
|
219
|
+
let attempt = 0;
|
|
220
|
+
const resilientFn = () => {
|
|
221
|
+
try {
|
|
222
|
+
return effectFn();
|
|
223
|
+
}
|
|
224
|
+
catch (error) {
|
|
225
|
+
attempt++;
|
|
226
|
+
if (onError && attempt <= maxRetries && onError(error, attempt)) {
|
|
227
|
+
// Retry after a short delay
|
|
228
|
+
setTimeout(() => resilientFn(), attempt * 100);
|
|
229
|
+
return;
|
|
230
|
+
}
|
|
231
|
+
else {
|
|
232
|
+
// Give up and re-throw
|
|
233
|
+
throw error;
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
};
|
|
237
|
+
return createEnhancedEffect(resilientFn, {
|
|
238
|
+
...options,
|
|
239
|
+
debugName: `${options?.debugName || 'effect'}(resilient)`,
|
|
240
|
+
});
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* Batch multiple effect creations for performance
|
|
244
|
+
*/
|
|
245
|
+
export function createEffectBatch(effects) {
|
|
246
|
+
const cleanups = effects.map(({ fn, options }) => createEnhancedEffect(fn, options));
|
|
247
|
+
return () => {
|
|
248
|
+
cleanups.forEach((cleanup) => cleanup());
|
|
249
|
+
};
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* Get performance metrics for all effects
|
|
253
|
+
*/
|
|
254
|
+
export function getEffectPerformanceMetrics() {
|
|
255
|
+
const scheduler = ReactiveScheduler.getInstance();
|
|
256
|
+
return scheduler.getPerformanceMetrics();
|
|
257
|
+
}
|
|
258
|
+
/**
|
|
259
|
+
* Flush all pending effect updates synchronously
|
|
260
|
+
*/
|
|
261
|
+
export function flushEffectUpdates() {
|
|
262
|
+
const scheduler = ReactiveScheduler.getInstance();
|
|
263
|
+
scheduler.flushSync();
|
|
264
|
+
}
|
|
265
|
+
//# sourceMappingURL=enhanced-effect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enhanced-effect.js","sourceRoot":"","sources":["../../../../../core/src/reactive/enhanced-effect.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Enhanced Signal Implementation v2.0
|
|
3
|
+
*
|
|
4
|
+
* Integrates with the unified scheduler and provides custom equality functions
|
|
5
|
+
* to fix signal update detection bugs and eliminate race conditions.
|
|
6
|
+
*/
|
|
7
|
+
import { type EqualityFunction } from './equality';
|
|
8
|
+
import type { Computation } from './types';
|
|
9
|
+
import { type ReactiveNode, UpdatePriority } from './unified-scheduler';
|
|
10
|
+
export interface SignalOptions<T> {
|
|
11
|
+
equals?: EqualityFunction<T>;
|
|
12
|
+
priority?: UpdatePriority;
|
|
13
|
+
debugName?: string;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Enhanced signal implementation with unified scheduler integration
|
|
17
|
+
*/
|
|
18
|
+
export declare class EnhancedSignalImpl<T> implements ReactiveNode {
|
|
19
|
+
readonly id: number;
|
|
20
|
+
readonly type: "signal";
|
|
21
|
+
readonly priority: UpdatePriority;
|
|
22
|
+
readonly observers: Set<Computation>;
|
|
23
|
+
private _value;
|
|
24
|
+
private scheduler;
|
|
25
|
+
private equalsFn;
|
|
26
|
+
private debugName?;
|
|
27
|
+
private options;
|
|
28
|
+
constructor(initialValue: T, options?: SignalOptions<T>);
|
|
29
|
+
/**
|
|
30
|
+
* Get the current value and track dependency
|
|
31
|
+
*/
|
|
32
|
+
getValue(): T;
|
|
33
|
+
/**
|
|
34
|
+
* Get the current value without tracking dependency
|
|
35
|
+
*/
|
|
36
|
+
peek(): T;
|
|
37
|
+
/**
|
|
38
|
+
* Set a new value using custom equality function
|
|
39
|
+
*/
|
|
40
|
+
setValue(newValue: T | ((prev: T) => T)): T;
|
|
41
|
+
/**
|
|
42
|
+
* Notify all observers (called by scheduler)
|
|
43
|
+
*/
|
|
44
|
+
notify(): void;
|
|
45
|
+
/**
|
|
46
|
+
* Remove an observer (cleanup)
|
|
47
|
+
*/
|
|
48
|
+
removeObserver(computation: Computation): void;
|
|
49
|
+
/**
|
|
50
|
+
* Complete cleanup for memory management
|
|
51
|
+
*/
|
|
52
|
+
cleanup(): void;
|
|
53
|
+
toString(): string;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Signal setter function type
|
|
57
|
+
*/
|
|
58
|
+
export type SignalSetter<T> = (value: T | ((prev: T) => T)) => T;
|
|
59
|
+
/**
|
|
60
|
+
* Create a new enhanced reactive signal with custom equality
|
|
61
|
+
*/
|
|
62
|
+
export declare function createEnhancedSignal<T>(initialValue: T, options?: SignalOptions<T>): [() => T, SignalSetter<T>];
|
|
63
|
+
/**
|
|
64
|
+
* Create a signal with deep equality comparison
|
|
65
|
+
*/
|
|
66
|
+
export declare function createDeepSignal<T>(initialValue: T, options?: Omit<SignalOptions<T>, 'equals'>): [() => T, SignalSetter<T>];
|
|
67
|
+
/**
|
|
68
|
+
* Create a signal with shallow equality comparison
|
|
69
|
+
*/
|
|
70
|
+
export declare function createShallowSignal<T>(initialValue: T, options?: Omit<SignalOptions<T>, 'equals'>): [() => T, SignalSetter<T>];
|
|
71
|
+
/**
|
|
72
|
+
* Get the underlying signal implementation for debugging
|
|
73
|
+
*/
|
|
74
|
+
export declare function getEnhancedSignalImpl<T>(signal: (() => T) & {
|
|
75
|
+
peek: () => T;
|
|
76
|
+
}): EnhancedSignalImpl<T> | null;
|
|
77
|
+
/**
|
|
78
|
+
* Type guard to check if a value is an enhanced signal
|
|
79
|
+
*/
|
|
80
|
+
export declare function isEnhancedSignal<T = any>(value: any): value is (() => T) & {
|
|
81
|
+
peek: () => T;
|
|
82
|
+
};
|
|
83
|
+
/**
|
|
84
|
+
* Flush all pending signal updates synchronously
|
|
85
|
+
*/
|
|
86
|
+
export declare function flushSignalUpdates(): void;
|
|
87
|
+
/**
|
|
88
|
+
* Get performance metrics for all signals
|
|
89
|
+
*/
|
|
90
|
+
export declare function getSignalPerformanceMetrics(): import("./unified-scheduler").ReactivePerformanceMetrics;
|
|
91
|
+
//# sourceMappingURL=enhanced-signal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enhanced-signal.d.ts","sourceRoot":"","sources":["../../../../../core/src/reactive/enhanced-signal.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAA4C,KAAK,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAC5F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAE1C,OAAO,EAAE,KAAK,YAAY,EAAqB,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAI1F,MAAM,WAAW,aAAa,CAAC,CAAC;IAC9B,MAAM,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAA;IAC5B,QAAQ,CAAC,EAAE,cAAc,CAAA;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED;;GAEG;AACH,qBAAa,kBAAkB,CAAC,CAAC,CAAE,YAAW,YAAY;IACxD,QAAQ,CAAC,EAAE,SAAoB;IAC/B,QAAQ,CAAC,IAAI,EAAG,QAAQ,CAAS;IACjC,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAA;IACjC,QAAQ,CAAC,SAAS,mBAAyB;IAE3C,OAAO,CAAC,MAAM,CAAG;IACjB,OAAO,CAAC,SAAS,CAAkC;IACnD,OAAO,CAAC,QAAQ,CAAqB;IACrC,OAAO,CAAC,SAAS,CAAC,CAAQ;IAC1B,OAAO,CAAC,OAAO,CAAkB;gBAErB,YAAY,EAAE,CAAC,EAAE,OAAO,GAAE,aAAa,CAAC,CAAC,CAAM;IAQ3D;;OAEG;IACH,QAAQ,IAAI,CAAC;IAUb;;OAEG;IACH,IAAI,IAAI,CAAC;IAIT;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC;IAoB3C;;OAEG;IACH,MAAM,IAAI,IAAI;IAcd;;OAEG;IACH,cAAc,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI;IAI9C;;OAEG;IACH,OAAO,IAAI,IAAI;IAuBf,QAAQ,IAAI,MAAM;CAGnB;AAED;;GAEG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAA;AAEhE;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EACpC,YAAY,EAAE,CAAC,EACf,OAAO,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,GACzB,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAe5B;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAChC,YAAY,EAAE,CAAC,EACf,OAAO,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,GACzC,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAK5B;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EACnC,YAAY,EAAE,CAAC,EACf,OAAO,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,GACzC,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAK5B;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,EACrC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC,CAAA;CAAE,GACpC,kBAAkB,CAAC,CAAC,CAAC,GAAG,IAAI,CAE9B;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,GAAG,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC,CAAA;CAAE,CAE5F;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAGzC;AAED;;GAEG;AACH,wBAAgB,2BAA2B,6DAG1C"}
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Enhanced Signal Implementation v2.0
|
|
3
|
+
*
|
|
4
|
+
* Integrates with the unified scheduler and provides custom equality functions
|
|
5
|
+
* to fix signal update detection bugs and eliminate race conditions.
|
|
6
|
+
*/
|
|
7
|
+
import { getCurrentComputation } from './context';
|
|
8
|
+
import { defaultEquals, deepEquals, shallowEquals } from './equality';
|
|
9
|
+
import { ComputationState } from './types';
|
|
10
|
+
import { ReactiveScheduler, UpdatePriority } from './unified-scheduler';
|
|
11
|
+
let signalIdCounter = 0;
|
|
12
|
+
/**
|
|
13
|
+
* Enhanced signal implementation with unified scheduler integration
|
|
14
|
+
*/
|
|
15
|
+
export class EnhancedSignalImpl {
|
|
16
|
+
id = ++signalIdCounter;
|
|
17
|
+
type = 'signal';
|
|
18
|
+
priority;
|
|
19
|
+
observers = new Set();
|
|
20
|
+
_value;
|
|
21
|
+
scheduler = ReactiveScheduler.getInstance();
|
|
22
|
+
equalsFn;
|
|
23
|
+
debugName;
|
|
24
|
+
options;
|
|
25
|
+
constructor(initialValue, options = {}) {
|
|
26
|
+
this._value = initialValue;
|
|
27
|
+
this.options = options;
|
|
28
|
+
this.priority = options.priority ?? UpdatePriority.Normal;
|
|
29
|
+
this.equalsFn = options.equals ?? defaultEquals;
|
|
30
|
+
this.debugName = options.debugName;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Get the current value and track dependency
|
|
34
|
+
*/
|
|
35
|
+
getValue() {
|
|
36
|
+
const computation = getCurrentComputation();
|
|
37
|
+
if (computation && computation.state !== ComputationState.Disposed) {
|
|
38
|
+
// Establish bidirectional relationship
|
|
39
|
+
this.observers.add(computation);
|
|
40
|
+
computation.sources.add(this);
|
|
41
|
+
}
|
|
42
|
+
return this._value;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Get the current value without tracking dependency
|
|
46
|
+
*/
|
|
47
|
+
peek() {
|
|
48
|
+
return this._value;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Set a new value using custom equality function
|
|
52
|
+
*/
|
|
53
|
+
setValue(newValue) {
|
|
54
|
+
const value = typeof newValue === 'function' ? newValue(this._value) : newValue;
|
|
55
|
+
// Use custom equality function instead of simple !== check
|
|
56
|
+
if (!this.equalsFn(value, this._value)) {
|
|
57
|
+
const oldValue = this._value;
|
|
58
|
+
this._value = value;
|
|
59
|
+
if (process.env.NODE_ENV === 'development' && this.debugName) {
|
|
60
|
+
console.debug(`[Signal:${this.debugName}] ${oldValue} -> ${value}`);
|
|
61
|
+
}
|
|
62
|
+
// Schedule update through unified scheduler
|
|
63
|
+
this.scheduler.schedule(this);
|
|
64
|
+
}
|
|
65
|
+
return value;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Notify all observers (called by scheduler)
|
|
69
|
+
*/
|
|
70
|
+
notify() {
|
|
71
|
+
// Mark all observers as dirty and schedule them
|
|
72
|
+
for (const observer of this.observers) {
|
|
73
|
+
if (observer.state !== ComputationState.Disposed) {
|
|
74
|
+
observer.state = ComputationState.Dirty;
|
|
75
|
+
// Schedule observer if it's also a ReactiveNode
|
|
76
|
+
if ('type' in observer && 'priority' in observer) {
|
|
77
|
+
this.scheduler.schedule(observer);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Remove an observer (cleanup)
|
|
84
|
+
*/
|
|
85
|
+
removeObserver(computation) {
|
|
86
|
+
this.observers.delete(computation);
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Complete cleanup for memory management
|
|
90
|
+
*/
|
|
91
|
+
cleanup() {
|
|
92
|
+
// Complete bidirectional cleanup to prevent memory leaks
|
|
93
|
+
for (const observer of this.observers) {
|
|
94
|
+
observer.sources.delete(this);
|
|
95
|
+
}
|
|
96
|
+
this.observers.clear();
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Get debug information about this signal
|
|
100
|
+
*/
|
|
101
|
+
[Symbol.for('tachui.debug')]() {
|
|
102
|
+
return {
|
|
103
|
+
id: this.id,
|
|
104
|
+
type: this.type,
|
|
105
|
+
value: this._value,
|
|
106
|
+
observerCount: this.observers.size,
|
|
107
|
+
priority: UpdatePriority[this.priority],
|
|
108
|
+
debugName: this.debugName,
|
|
109
|
+
equalsFn: this.equalsFn.name || 'anonymous',
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
toString() {
|
|
113
|
+
return `Signal(${this.options.debugName || this.id}): ${this._value}`;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Create a new enhanced reactive signal with custom equality
|
|
118
|
+
*/
|
|
119
|
+
export function createEnhancedSignal(initialValue, options) {
|
|
120
|
+
const signal = new EnhancedSignalImpl(initialValue, options);
|
|
121
|
+
const getter = signal.getValue.bind(signal);
|
|
122
|
+
getter.peek = signal.peek.bind(signal);
|
|
123
|
+
const setter = signal.setValue.bind(signal);
|
|
124
|
+
// Add debug information for compatibility
|
|
125
|
+
Object.defineProperty(getter, Symbol.for('tachui.signal'), {
|
|
126
|
+
value: signal,
|
|
127
|
+
enumerable: false,
|
|
128
|
+
});
|
|
129
|
+
return [getter, setter];
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Create a signal with deep equality comparison
|
|
133
|
+
*/
|
|
134
|
+
export function createDeepSignal(initialValue, options) {
|
|
135
|
+
return createEnhancedSignal(initialValue, {
|
|
136
|
+
...options,
|
|
137
|
+
equals: deepEquals,
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Create a signal with shallow equality comparison
|
|
142
|
+
*/
|
|
143
|
+
export function createShallowSignal(initialValue, options) {
|
|
144
|
+
return createEnhancedSignal(initialValue, {
|
|
145
|
+
...options,
|
|
146
|
+
equals: shallowEquals,
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Get the underlying signal implementation for debugging
|
|
151
|
+
*/
|
|
152
|
+
export function getEnhancedSignalImpl(signal) {
|
|
153
|
+
return signal[Symbol.for('tachui.signal')] || null;
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Type guard to check if a value is an enhanced signal
|
|
157
|
+
*/
|
|
158
|
+
export function isEnhancedSignal(value) {
|
|
159
|
+
return typeof value === 'function' && Symbol.for('tachui.signal') in value;
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Flush all pending signal updates synchronously
|
|
163
|
+
*/
|
|
164
|
+
export function flushSignalUpdates() {
|
|
165
|
+
const scheduler = ReactiveScheduler.getInstance();
|
|
166
|
+
scheduler.flushSync();
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Get performance metrics for all signals
|
|
170
|
+
*/
|
|
171
|
+
export function getSignalPerformanceMetrics() {
|
|
172
|
+
const scheduler = ReactiveScheduler.getInstance();
|
|
173
|
+
return scheduler.getPerformanceMetrics();
|
|
174
|
+
}
|
|
175
|
+
//# sourceMappingURL=enhanced-signal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enhanced-signal.js","sourceRoot":"","sources":["../../../../../core/src/reactive/enhanced-signal.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Equality Functions for Reactive System
|
|
3
|
+
*
|
|
4
|
+
* Provides various equality comparison functions for signal updates
|
|
5
|
+
* including deep, shallow, and custom equality checking.
|
|
6
|
+
*/
|
|
7
|
+
export type EqualityFunction<T> = (a: T, b: T) => boolean;
|
|
8
|
+
/**
|
|
9
|
+
* Default reference equality (===)
|
|
10
|
+
*/
|
|
11
|
+
export declare const defaultEquals: <T>(a: T, b: T) => boolean;
|
|
12
|
+
/**
|
|
13
|
+
* Deep equality comparison for objects and arrays
|
|
14
|
+
* Recursively compares all properties and array elements
|
|
15
|
+
*/
|
|
16
|
+
export declare const deepEquals: <T>(a: T, b: T) => boolean;
|
|
17
|
+
/**
|
|
18
|
+
* Shallow equality comparison for objects
|
|
19
|
+
* Compares only the top-level properties with reference equality
|
|
20
|
+
*/
|
|
21
|
+
export declare const shallowEquals: <T>(a: T, b: T) => boolean;
|
|
22
|
+
/**
|
|
23
|
+
* Structural equality for specific data types
|
|
24
|
+
*/
|
|
25
|
+
export declare const structuralEquals: <T>(a: T, b: T) => boolean;
|
|
26
|
+
/**
|
|
27
|
+
* JSON-based equality (serializes and compares)
|
|
28
|
+
* Useful for complex nested structures but slower
|
|
29
|
+
*/
|
|
30
|
+
export declare const jsonEquals: <T>(a: T, b: T) => boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Create a custom equality function based on a selector
|
|
33
|
+
*/
|
|
34
|
+
export declare const createSelectorEquals: <T, K>(selector: (value: T) => K, equalsFn?: EqualityFunction<K>) => EqualityFunction<T>;
|
|
35
|
+
/**
|
|
36
|
+
* Create an array equality function with custom element comparison
|
|
37
|
+
*/
|
|
38
|
+
export declare const createArrayEquals: <T>(elementEquals?: EqualityFunction<T>) => EqualityFunction<T[]>;
|
|
39
|
+
/**
|
|
40
|
+
* Create an object equality function with custom property comparison
|
|
41
|
+
*/
|
|
42
|
+
export declare const createObjectEquals: <T extends Record<string, any>>(propertyEquals?: EqualityFunction<any>) => EqualityFunction<T>;
|
|
43
|
+
/**
|
|
44
|
+
* Combine multiple equality functions with AND logic
|
|
45
|
+
*/
|
|
46
|
+
export declare const combineEquals: <T>(...equalsFunctions: EqualityFunction<T>[]) => EqualityFunction<T>;
|
|
47
|
+
/**
|
|
48
|
+
* Utility to wrap an equality function with debugging
|
|
49
|
+
*/
|
|
50
|
+
export declare const debugEquals: <T>(equalsFn: EqualityFunction<T>, debugName?: string) => EqualityFunction<T>;
|
|
51
|
+
//# sourceMappingURL=equality.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"equality.d.ts","sourceRoot":"","sources":["../../../../../core/src/reactive/equality.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,OAAO,CAAA;AAEzD;;GAEG;AACH,eAAO,MAAM,aAAa,GAAI,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,KAAG,OAAkB,CAAA;AAEhE;;;GAGG;AACH,eAAO,MAAM,UAAU,GAAI,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,KAAG,OA0B1C,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,aAAa,GAAI,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,KAAG,OAa7C,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAAI,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,KAAG,OAiChD,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,UAAU,GAAI,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,KAAG,OAS1C,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,oBAAoB,GAAI,CAAC,EAAE,CAAC,EACvC,UAAU,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,EACzB,WAAU,gBAAgB,CAAC,CAAC,CAAiB,KAC5C,gBAAgB,CAAC,CAAC,CAIpB,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB,GAAI,CAAC,EACjC,gBAAe,gBAAgB,CAAC,CAAC,CAAiB,KACjD,gBAAgB,CAAC,CAAC,EAAE,CAOtB,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,kBAAkB,GAAI,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC9D,iBAAgB,gBAAgB,CAAC,GAAG,CAAiB,KACpD,gBAAgB,CAAC,CAAC,CAWpB,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,aAAa,GAAI,CAAC,EAC7B,GAAG,iBAAiB,gBAAgB,CAAC,CAAC,CAAC,EAAE,KACxC,gBAAgB,CAAC,CAAC,CAIpB,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,WAAW,GAAI,CAAC,EAC3B,UAAU,gBAAgB,CAAC,CAAC,CAAC,EAC7B,YAAY,MAAM,KACjB,gBAAgB,CAAC,CAAC,CAQpB,CAAA"}
|