@tachui/core 0.7.0-alpha1 → 0.7.1-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 +195 -0
- package/dist/ScrollView-h-6wYMAm.js +515 -0
- package/dist/Spacer-BbteDQ9I.js +5337 -0
- package/dist/binding-CmdpowkI.js +2276 -0
- package/dist/bundles/minimal.d.ts +30 -4
- package/dist/bundles/minimal.d.ts.map +1 -1
- package/dist/common.js +825 -954
- package/dist/compiler/index.js +1386 -10
- package/dist/components/index.js +4166 -101
- package/dist/concatenated-component-DPcl2TEO.js +6779 -0
- package/dist/{runtime/context.js → context--zQFIImS.js} +65 -71
- package/dist/debug.js +0 -1
- package/dist/dom-bridge-Cx-s6Ihx.js +406 -0
- package/dist/effect-CytAc9em.js +66 -0
- package/dist/essential.js +825 -954
- package/dist/index-Nfi2SBQh.js +3268 -0
- package/dist/index.js +825 -954
- package/dist/minimal-prod.js +162 -191
- package/dist/minimal.js +183 -957
- package/dist/modifiers/responsive/index.d.ts +10 -9
- package/dist/modifiers/responsive/index.d.ts.map +1 -1
- package/dist/plugins/index.js +543 -32
- package/dist/reactive/index.js +490 -93
- package/dist/runtime/dom-bridge.js +12 -239
- package/dist/runtime/renderer.js +8 -388
- package/dist/scheduler-7SvC3a21.js +814 -0
- package/dist/validation/index.js +6614 -198
- package/dist/viewport/index.js +2002 -83
- package/package.json +3 -4
- package/dist/assets/Asset.cjs +0 -2
- package/dist/assets/Asset.cjs.map +0 -1
- package/dist/assets/Asset.js +0 -9
- package/dist/assets/Asset.js.map +0 -1
- package/dist/assets/AssetCollection.cjs +0 -2
- package/dist/assets/AssetCollection.cjs.map +0 -1
- package/dist/assets/AssetCollection.js +0 -44
- package/dist/assets/AssetCollection.js.map +0 -1
- package/dist/assets/ColorAsset.cjs +0 -2
- package/dist/assets/ColorAsset.cjs.map +0 -1
- package/dist/assets/ColorAsset.js +0 -114
- package/dist/assets/ColorAsset.js.map +0 -1
- package/dist/assets/FontAsset.cjs +0 -9
- package/dist/assets/FontAsset.cjs.map +0 -1
- package/dist/assets/FontAsset.js +0 -173
- package/dist/assets/FontAsset.js.map +0 -1
- package/dist/assets/ImageAsset.cjs +0 -2
- package/dist/assets/ImageAsset.cjs.map +0 -1
- package/dist/assets/ImageAsset.js +0 -39
- package/dist/assets/ImageAsset.js.map +0 -1
- package/dist/assets/index.cjs +0 -2
- package/dist/assets/index.cjs.map +0 -1
- package/dist/assets/index.js +0 -119
- package/dist/assets/index.js.map +0 -1
- package/dist/common.cjs +0 -2
- package/dist/common.cjs.map +0 -1
- package/dist/common.js.map +0 -1
- package/dist/compiler/advanced-parser.cjs +0 -5
- package/dist/compiler/advanced-parser.cjs.map +0 -1
- package/dist/compiler/advanced-parser.js +0 -440
- package/dist/compiler/advanced-parser.js.map +0 -1
- package/dist/compiler/codegen.cjs +0 -6
- package/dist/compiler/codegen.cjs.map +0 -1
- package/dist/compiler/codegen.js +0 -241
- package/dist/compiler/codegen.js.map +0 -1
- package/dist/compiler/enhanced-codegen.cjs +0 -6
- package/dist/compiler/enhanced-codegen.cjs.map +0 -1
- package/dist/compiler/enhanced-codegen.js +0 -347
- package/dist/compiler/enhanced-codegen.js.map +0 -1
- package/dist/compiler/index.cjs +0 -2
- package/dist/compiler/index.cjs.map +0 -1
- package/dist/compiler/index.js.map +0 -1
- package/dist/compiler/parser.cjs +0 -5
- package/dist/compiler/parser.cjs.map +0 -1
- package/dist/compiler/parser.js +0 -275
- package/dist/compiler/parser.js.map +0 -1
- package/dist/compiler/plugin.cjs +0 -33
- package/dist/compiler/plugin.cjs.map +0 -1
- package/dist/compiler/plugin.js +0 -103
- package/dist/compiler/plugin.js.map +0 -1
- package/dist/components/BasicInput.cjs +0 -2
- package/dist/components/BasicInput.cjs.map +0 -1
- package/dist/components/BasicInput.js +0 -182
- package/dist/components/BasicInput.js.map +0 -1
- package/dist/components/Button.cjs +0 -7
- package/dist/components/Button.cjs.map +0 -1
- package/dist/components/Button.js +0 -408
- package/dist/components/Button.js.map +0 -1
- package/dist/components/Divider.cjs +0 -2
- package/dist/components/Divider.cjs.map +0 -1
- package/dist/components/Divider.js +0 -187
- package/dist/components/Divider.js.map +0 -1
- package/dist/components/EnhancedLink.cjs +0 -2
- package/dist/components/EnhancedLink.cjs.map +0 -1
- package/dist/components/EnhancedLink.js +0 -345
- package/dist/components/EnhancedLink.js.map +0 -1
- package/dist/components/Form.cjs +0 -2
- package/dist/components/Form.cjs.map +0 -1
- package/dist/components/Form.js +0 -244
- package/dist/components/Form.js.map +0 -1
- package/dist/components/Grid.cjs +0 -2
- package/dist/components/Grid.cjs.map +0 -1
- package/dist/components/Grid.js +0 -1045
- package/dist/components/Grid.js.map +0 -1
- package/dist/components/GridResponsive.cjs +0 -2
- package/dist/components/GridResponsive.cjs.map +0 -1
- package/dist/components/GridResponsive.js +0 -382
- package/dist/components/GridResponsive.js.map +0 -1
- package/dist/components/Image.cjs +0 -2
- package/dist/components/Image.cjs.map +0 -1
- package/dist/components/Image.js +0 -212
- package/dist/components/Image.js.map +0 -1
- package/dist/components/List.cjs +0 -2
- package/dist/components/List.cjs.map +0 -1
- package/dist/components/List.js +0 -561
- package/dist/components/List.js.map +0 -1
- package/dist/components/Menu.cjs +0 -2
- package/dist/components/Menu.cjs.map +0 -1
- package/dist/components/Menu.js +0 -443
- package/dist/components/Menu.js.map +0 -1
- package/dist/components/Picker.cjs +0 -2
- package/dist/components/Picker.cjs.map +0 -1
- package/dist/components/Picker.js +0 -478
- package/dist/components/Picker.js.map +0 -1
- package/dist/components/ScrollView.cjs +0 -6
- package/dist/components/ScrollView.cjs.map +0 -1
- package/dist/components/ScrollView.js +0 -363
- package/dist/components/ScrollView.js.map +0 -1
- package/dist/components/Section.cjs +0 -2
- package/dist/components/Section.cjs.map +0 -1
- package/dist/components/Section.js +0 -323
- package/dist/components/Section.js.map +0 -1
- package/dist/components/Show.cjs +0 -2
- package/dist/components/Show.cjs.map +0 -1
- package/dist/components/Show.js +0 -112
- package/dist/components/Show.js.map +0 -1
- package/dist/components/Spacer.cjs +0 -2
- package/dist/components/Spacer.cjs.map +0 -1
- package/dist/components/Spacer.js +0 -53
- package/dist/components/Spacer.js.map +0 -1
- package/dist/components/Text.cjs +0 -2
- package/dist/components/Text.cjs.map +0 -1
- package/dist/components/Text.js +0 -193
- package/dist/components/Text.js.map +0 -1
- package/dist/components/Toggle.cjs +0 -2
- package/dist/components/Toggle.cjs.map +0 -1
- package/dist/components/Toggle.js +0 -477
- package/dist/components/Toggle.js.map +0 -1
- package/dist/components/index.cjs +0 -2
- package/dist/components/index.cjs.map +0 -1
- package/dist/components/index.js.map +0 -1
- package/dist/components/wrapper.cjs +0 -2
- package/dist/components/wrapper.cjs.map +0 -1
- package/dist/components/wrapper.js +0 -484
- package/dist/components/wrapper.js.map +0 -1
- package/dist/concatenation/concatenatable.cjs +0 -2
- package/dist/concatenation/concatenatable.cjs.map +0 -1
- package/dist/concatenation/concatenatable.js +0 -118
- package/dist/concatenation/concatenatable.js.map +0 -1
- package/dist/concatenation/concatenated-component.cjs +0 -2
- package/dist/concatenation/concatenated-component.cjs.map +0 -1
- package/dist/concatenation/concatenated-component.js +0 -276
- package/dist/concatenation/concatenated-component.js.map +0 -1
- package/dist/concatenation/text-optimizer.cjs +0 -2
- package/dist/concatenation/text-optimizer.cjs.map +0 -1
- package/dist/concatenation/text-optimizer.js +0 -236
- package/dist/concatenation/text-optimizer.js.map +0 -1
- package/dist/concatenation/types.cjs +0 -2
- package/dist/concatenation/types.cjs.map +0 -1
- package/dist/concatenation/types.js +0 -13
- package/dist/concatenation/types.js.map +0 -1
- package/dist/constants/frame-utils.cjs +0 -2
- package/dist/constants/frame-utils.cjs.map +0 -1
- package/dist/constants/frame-utils.js +0 -116
- package/dist/constants/frame-utils.js.map +0 -1
- package/dist/constants/layout.cjs +0 -2
- package/dist/constants/layout.cjs.map +0 -1
- package/dist/constants/layout.js +0 -46
- package/dist/constants/layout.js.map +0 -1
- package/dist/css-classes/component-base.cjs +0 -2
- package/dist/css-classes/component-base.cjs.map +0 -1
- package/dist/css-classes/component-base.js +0 -62
- package/dist/css-classes/component-base.js.map +0 -1
- package/dist/css-classes/css-class-manager.cjs +0 -2
- package/dist/css-classes/css-class-manager.cjs.map +0 -1
- package/dist/css-classes/css-class-manager.js +0 -209
- package/dist/css-classes/css-class-manager.js.map +0 -1
- package/dist/css-classes/dom-integration.cjs +0 -2
- package/dist/css-classes/dom-integration.cjs.map +0 -1
- package/dist/css-classes/dom-integration.js +0 -67
- package/dist/css-classes/dom-integration.js.map +0 -1
- package/dist/css-classes/enhanced-renderer.cjs +0 -2
- package/dist/css-classes/enhanced-renderer.cjs.map +0 -1
- package/dist/css-classes/enhanced-renderer.js +0 -73
- package/dist/css-classes/enhanced-renderer.js.map +0 -1
- package/dist/css-classes/utilities.cjs +0 -2
- package/dist/css-classes/utilities.cjs.map +0 -1
- package/dist/css-classes/utilities.js +0 -41
- package/dist/css-classes/utilities.js.map +0 -1
- package/dist/debug.cjs +0 -52
- package/dist/debug.cjs.map +0 -1
- package/dist/debug.js.map +0 -1
- package/dist/essential.cjs +0 -2
- package/dist/essential.cjs.map +0 -1
- package/dist/essential.js.map +0 -1
- package/dist/gradients/css-generator.cjs +0 -2
- package/dist/gradients/css-generator.cjs.map +0 -1
- package/dist/gradients/css-generator.js +0 -100
- package/dist/gradients/css-generator.js.map +0 -1
- package/dist/gradients/examples.cjs +0 -2
- package/dist/gradients/examples.cjs.map +0 -1
- package/dist/gradients/examples.js +0 -555
- package/dist/gradients/examples.js.map +0 -1
- package/dist/gradients/gradient-asset.cjs +0 -2
- package/dist/gradients/gradient-asset.cjs.map +0 -1
- package/dist/gradients/gradient-asset.js +0 -22
- package/dist/gradients/gradient-asset.js.map +0 -1
- package/dist/gradients/index.cjs +0 -2
- package/dist/gradients/index.cjs.map +0 -1
- package/dist/gradients/index.js +0 -78
- package/dist/gradients/index.js.map +0 -1
- package/dist/gradients/performance.cjs +0 -2
- package/dist/gradients/performance.cjs.map +0 -1
- package/dist/gradients/performance.js +0 -237
- package/dist/gradients/performance.js.map +0 -1
- package/dist/gradients/presets.cjs +0 -2
- package/dist/gradients/presets.cjs.map +0 -1
- package/dist/gradients/presets.js +0 -254
- package/dist/gradients/presets.js.map +0 -1
- package/dist/gradients/reactive.cjs +0 -2
- package/dist/gradients/reactive.cjs.map +0 -1
- package/dist/gradients/reactive.js +0 -239
- package/dist/gradients/reactive.js.map +0 -1
- package/dist/gradients/state-gradient-asset.cjs +0 -2
- package/dist/gradients/state-gradient-asset.cjs.map +0 -1
- package/dist/gradients/state-gradient-asset.js +0 -111
- package/dist/gradients/state-gradient-asset.js.map +0 -1
- package/dist/gradients/utils.cjs +0 -2
- package/dist/gradients/utils.cjs.map +0 -1
- package/dist/gradients/utils.js +0 -385
- package/dist/gradients/utils.js.map +0 -1
- package/dist/gradients/validation.cjs +0 -2
- package/dist/gradients/validation.cjs.map +0 -1
- package/dist/gradients/validation.js +0 -209
- package/dist/gradients/validation.js.map +0 -1
- package/dist/index.cjs +0 -2
- package/dist/index.cjs.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/index2.cjs +0 -2
- package/dist/index2.cjs.map +0 -1
- package/dist/index2.js +0 -293
- package/dist/index2.js.map +0 -1
- package/dist/lifecycle/hooks.cjs +0 -2
- package/dist/lifecycle/hooks.cjs.map +0 -1
- package/dist/lifecycle/hooks.js +0 -159
- package/dist/lifecycle/hooks.js.map +0 -1
- package/dist/minimal-prod.cjs +0 -2
- package/dist/minimal-prod.cjs.map +0 -1
- package/dist/minimal-prod.js.map +0 -1
- package/dist/minimal.cjs +0 -2
- package/dist/minimal.cjs.map +0 -1
- package/dist/minimal.js.map +0 -1
- package/dist/modifiers/as-html-validator.cjs +0 -2
- package/dist/modifiers/as-html-validator.cjs.map +0 -1
- package/dist/modifiers/as-html-validator.js +0 -47
- package/dist/modifiers/as-html-validator.js.map +0 -1
- package/dist/modifiers/as-html.cjs +0 -2
- package/dist/modifiers/as-html.cjs.map +0 -1
- package/dist/modifiers/as-html.js +0 -71
- package/dist/modifiers/as-html.js.map +0 -1
- package/dist/modifiers/attributes.cjs +0 -2
- package/dist/modifiers/attributes.cjs.map +0 -1
- package/dist/modifiers/attributes.js +0 -272
- package/dist/modifiers/attributes.js.map +0 -1
- package/dist/modifiers/backdrop.cjs +0 -2
- package/dist/modifiers/backdrop.cjs.map +0 -1
- package/dist/modifiers/backdrop.js +0 -109
- package/dist/modifiers/backdrop.js.map +0 -1
- package/dist/modifiers/background.cjs +0 -2
- package/dist/modifiers/background.cjs.map +0 -1
- package/dist/modifiers/background.js +0 -67
- package/dist/modifiers/background.js.map +0 -1
- package/dist/modifiers/base.cjs +0 -25
- package/dist/modifiers/base.cjs.map +0 -1
- package/dist/modifiers/base.js +0 -745
- package/dist/modifiers/base.js.map +0 -1
- package/dist/modifiers/basic-sanitizer.cjs +0 -2
- package/dist/modifiers/basic-sanitizer.cjs.map +0 -1
- package/dist/modifiers/basic-sanitizer.js +0 -162
- package/dist/modifiers/basic-sanitizer.js.map +0 -1
- package/dist/modifiers/border.cjs +0 -2
- package/dist/modifiers/border.cjs.map +0 -1
- package/dist/modifiers/border.js +0 -160
- package/dist/modifiers/border.js.map +0 -1
- package/dist/modifiers/builder.cjs +0 -2
- package/dist/modifiers/builder.cjs.map +0 -1
- package/dist/modifiers/builder.js +0 -930
- package/dist/modifiers/builder.js.map +0 -1
- package/dist/modifiers/core.cjs +0 -2
- package/dist/modifiers/core.cjs.map +0 -1
- package/dist/modifiers/core.js +0 -398
- package/dist/modifiers/core.js.map +0 -1
- package/dist/modifiers/css.cjs +0 -2
- package/dist/modifiers/css.cjs.map +0 -1
- package/dist/modifiers/css.js +0 -50
- package/dist/modifiers/css.js.map +0 -1
- package/dist/modifiers/effects.cjs +0 -2
- package/dist/modifiers/effects.cjs.map +0 -1
- package/dist/modifiers/effects.js +0 -178
- package/dist/modifiers/effects.js.map +0 -1
- package/dist/modifiers/elements.cjs +0 -2
- package/dist/modifiers/elements.cjs.map +0 -1
- package/dist/modifiers/elements.js +0 -216
- package/dist/modifiers/elements.js.map +0 -1
- package/dist/modifiers/filters.cjs +0 -2
- package/dist/modifiers/filters.cjs.map +0 -1
- package/dist/modifiers/filters.js +0 -223
- package/dist/modifiers/filters.js.map +0 -1
- package/dist/modifiers/flexbox.cjs +0 -2
- package/dist/modifiers/flexbox.cjs.map +0 -1
- package/dist/modifiers/flexbox.js +0 -56
- package/dist/modifiers/flexbox.js.map +0 -1
- package/dist/modifiers/font.cjs +0 -2
- package/dist/modifiers/font.cjs.map +0 -1
- package/dist/modifiers/font.js +0 -60
- package/dist/modifiers/font.js.map +0 -1
- package/dist/modifiers/grid.cjs +0 -2
- package/dist/modifiers/grid.cjs.map +0 -1
- package/dist/modifiers/grid.js +0 -92
- package/dist/modifiers/grid.js.map +0 -1
- package/dist/modifiers/margin.cjs +0 -2
- package/dist/modifiers/margin.cjs.map +0 -1
- package/dist/modifiers/margin.js +0 -65
- package/dist/modifiers/margin.js.map +0 -1
- package/dist/modifiers/padding.cjs +0 -2
- package/dist/modifiers/padding.cjs.map +0 -1
- package/dist/modifiers/padding.js +0 -109
- package/dist/modifiers/padding.js.map +0 -1
- package/dist/modifiers/registry.cjs +0 -2
- package/dist/modifiers/registry.cjs.map +0 -1
- package/dist/modifiers/registry.js +0 -163
- package/dist/modifiers/registry.js.map +0 -1
- package/dist/modifiers/responsive/advanced-utilities.cjs +0 -2
- package/dist/modifiers/responsive/advanced-utilities.cjs.map +0 -1
- package/dist/modifiers/responsive/advanced-utilities.js +0 -291
- package/dist/modifiers/responsive/advanced-utilities.js.map +0 -1
- package/dist/modifiers/responsive/breakpoints.cjs +0 -2
- package/dist/modifiers/responsive/breakpoints.cjs.map +0 -1
- package/dist/modifiers/responsive/breakpoints.js +0 -168
- package/dist/modifiers/responsive/breakpoints.js.map +0 -1
- package/dist/modifiers/responsive/css-generator.cjs +0 -5
- package/dist/modifiers/responsive/css-generator.cjs.map +0 -1
- package/dist/modifiers/responsive/css-generator.js +0 -261
- package/dist/modifiers/responsive/css-generator.js.map +0 -1
- package/dist/modifiers/responsive/dev-tools.cjs +0 -77
- package/dist/modifiers/responsive/dev-tools.cjs.map +0 -1
- package/dist/modifiers/responsive/dev-tools.js +0 -380
- package/dist/modifiers/responsive/dev-tools.js.map +0 -1
- package/dist/modifiers/responsive/layout-patterns.cjs +0 -2
- package/dist/modifiers/responsive/layout-patterns.cjs.map +0 -1
- package/dist/modifiers/responsive/layout-patterns.js +0 -254
- package/dist/modifiers/responsive/layout-patterns.js.map +0 -1
- package/dist/modifiers/responsive/performance.cjs +0 -3
- package/dist/modifiers/responsive/performance.cjs.map +0 -1
- package/dist/modifiers/responsive/performance.js +0 -212
- package/dist/modifiers/responsive/performance.js.map +0 -1
- package/dist/modifiers/responsive/responsive-builder.cjs +0 -2
- package/dist/modifiers/responsive/responsive-builder.cjs.map +0 -1
- package/dist/modifiers/responsive/responsive-builder.js +0 -272
- package/dist/modifiers/responsive/responsive-builder.js.map +0 -1
- package/dist/modifiers/responsive/responsive-modifier.cjs +0 -3
- package/dist/modifiers/responsive/responsive-modifier.cjs.map +0 -1
- package/dist/modifiers/responsive/responsive-modifier.js +0 -204
- package/dist/modifiers/responsive/responsive-modifier.js.map +0 -1
- package/dist/modifiers/responsive/types.cjs +0 -2
- package/dist/modifiers/responsive/types.cjs.map +0 -1
- package/dist/modifiers/responsive/types.js +0 -26
- package/dist/modifiers/responsive/types.js.map +0 -1
- package/dist/modifiers/responsive/utilities.cjs +0 -16
- package/dist/modifiers/responsive/utilities.cjs.map +0 -1
- package/dist/modifiers/responsive/utilities.js +0 -273
- package/dist/modifiers/responsive/utilities.js.map +0 -1
- package/dist/modifiers/scroll.cjs +0 -2
- package/dist/modifiers/scroll.cjs.map +0 -1
- package/dist/modifiers/scroll.js +0 -82
- package/dist/modifiers/scroll.js.map +0 -1
- package/dist/modifiers/shadows.cjs +0 -2
- package/dist/modifiers/shadows.cjs.map +0 -1
- package/dist/modifiers/shadows.js +0 -147
- package/dist/modifiers/shadows.js.map +0 -1
- package/dist/modifiers/size.cjs +0 -2
- package/dist/modifiers/size.cjs.map +0 -1
- package/dist/modifiers/size.js +0 -74
- package/dist/modifiers/size.js.map +0 -1
- package/dist/modifiers/text.cjs +0 -2
- package/dist/modifiers/text.cjs.map +0 -1
- package/dist/modifiers/text.js +0 -166
- package/dist/modifiers/text.js.map +0 -1
- package/dist/modifiers/transformations.cjs +0 -2
- package/dist/modifiers/transformations.cjs.map +0 -1
- package/dist/modifiers/transformations.js +0 -216
- package/dist/modifiers/transformations.js.map +0 -1
- package/dist/modifiers/transitions.cjs +0 -2
- package/dist/modifiers/transitions.cjs.map +0 -1
- package/dist/modifiers/transitions.js +0 -102
- package/dist/modifiers/transitions.js.map +0 -1
- package/dist/modifiers/types.cjs +0 -2
- package/dist/modifiers/types.cjs.map +0 -1
- package/dist/modifiers/types.js +0 -5
- package/dist/modifiers/types.js.map +0 -1
- package/dist/modifiers/typography.cjs +0 -2
- package/dist/modifiers/typography.cjs.map +0 -1
- package/dist/modifiers/typography.js +0 -76
- package/dist/modifiers/typography.js.map +0 -1
- package/dist/modifiers/utility.cjs +0 -2
- package/dist/modifiers/utility.cjs.map +0 -1
- package/dist/modifiers/utility.js +0 -71
- package/dist/modifiers/utility.js.map +0 -1
- package/dist/modifiers/utils.cjs +0 -2
- package/dist/modifiers/utils.cjs.map +0 -1
- package/dist/modifiers/utils.js +0 -250
- package/dist/modifiers/utils.js.map +0 -1
- package/dist/plugins/index.cjs +0 -2
- package/dist/plugins/index.cjs.map +0 -1
- package/dist/plugins/index.js.map +0 -1
- package/dist/plugins/legacy-adapter.cjs +0 -2
- package/dist/plugins/legacy-adapter.cjs.map +0 -1
- package/dist/plugins/legacy-adapter.js +0 -30
- package/dist/plugins/legacy-adapter.js.map +0 -1
- package/dist/plugins/simplified-component-registry.cjs +0 -2
- package/dist/plugins/simplified-component-registry.cjs.map +0 -1
- package/dist/plugins/simplified-component-registry.js +0 -71
- package/dist/plugins/simplified-component-registry.js.map +0 -1
- package/dist/plugins/simplified-error-handler.cjs +0 -2
- package/dist/plugins/simplified-error-handler.cjs.map +0 -1
- package/dist/plugins/simplified-error-handler.js +0 -154
- package/dist/plugins/simplified-error-handler.js.map +0 -1
- package/dist/plugins/simplified-lazy-loader.cjs +0 -2
- package/dist/plugins/simplified-lazy-loader.cjs.map +0 -1
- package/dist/plugins/simplified-lazy-loader.js +0 -129
- package/dist/plugins/simplified-lazy-loader.js.map +0 -1
- package/dist/plugins/simplified-plugin-manager.cjs +0 -2
- package/dist/plugins/simplified-plugin-manager.cjs.map +0 -1
- package/dist/plugins/simplified-plugin-manager.js +0 -51
- package/dist/plugins/simplified-plugin-manager.js.map +0 -1
- package/dist/plugins/simplified-tachui-instance.cjs +0 -2
- package/dist/plugins/simplified-tachui-instance.cjs.map +0 -1
- package/dist/plugins/simplified-tachui-instance.js +0 -88
- package/dist/plugins/simplified-tachui-instance.js.map +0 -1
- package/dist/plugins/simplified-types.cjs +0 -2
- package/dist/plugins/simplified-types.cjs.map +0 -1
- package/dist/plugins/simplified-types.js +0 -9
- package/dist/plugins/simplified-types.js.map +0 -1
- package/dist/plugins/simplified-utils.cjs +0 -2
- package/dist/plugins/simplified-utils.cjs.map +0 -1
- package/dist/plugins/simplified-utils.js +0 -40
- package/dist/plugins/simplified-utils.js.map +0 -1
- package/dist/reactive/cleanup.cjs +0 -2
- package/dist/reactive/cleanup.cjs.map +0 -1
- package/dist/reactive/cleanup.js +0 -62
- package/dist/reactive/cleanup.js.map +0 -1
- package/dist/reactive/computed.cjs +0 -2
- package/dist/reactive/computed.cjs.map +0 -1
- package/dist/reactive/computed.js +0 -121
- package/dist/reactive/computed.js.map +0 -1
- package/dist/reactive/context.cjs +0 -2
- package/dist/reactive/context.cjs.map +0 -1
- package/dist/reactive/context.js +0 -143
- package/dist/reactive/context.js.map +0 -1
- package/dist/reactive/effect.cjs +0 -2
- package/dist/reactive/effect.cjs.map +0 -1
- package/dist/reactive/effect.js +0 -67
- package/dist/reactive/effect.js.map +0 -1
- package/dist/reactive/enhanced-effect.cjs +0 -2
- package/dist/reactive/enhanced-effect.cjs.map +0 -1
- package/dist/reactive/enhanced-effect.js +0 -153
- package/dist/reactive/enhanced-effect.js.map +0 -1
- package/dist/reactive/enhanced-signal.cjs +0 -2
- package/dist/reactive/enhanced-signal.cjs.map +0 -1
- package/dist/reactive/enhanced-signal.js +0 -117
- package/dist/reactive/enhanced-signal.js.map +0 -1
- package/dist/reactive/equality.cjs +0 -2
- package/dist/reactive/equality.cjs.map +0 -1
- package/dist/reactive/equality.js +0 -66
- package/dist/reactive/equality.js.map +0 -1
- package/dist/reactive/index.cjs +0 -2
- package/dist/reactive/index.cjs.map +0 -1
- package/dist/reactive/index.js.map +0 -1
- package/dist/reactive/migration.cjs +0 -18
- package/dist/reactive/migration.cjs.map +0 -1
- package/dist/reactive/migration.js +0 -164
- package/dist/reactive/migration.js.map +0 -1
- package/dist/reactive/ownership.cjs +0 -2
- package/dist/reactive/ownership.cjs.map +0 -1
- package/dist/reactive/ownership.js +0 -34
- package/dist/reactive/ownership.js.map +0 -1
- package/dist/reactive/scheduler.cjs +0 -2
- package/dist/reactive/scheduler.cjs.map +0 -1
- package/dist/reactive/scheduler.js +0 -111
- package/dist/reactive/scheduler.js.map +0 -1
- package/dist/reactive/signal.cjs +0 -2
- package/dist/reactive/signal.cjs.map +0 -1
- package/dist/reactive/signal.js +0 -96
- package/dist/reactive/signal.js.map +0 -1
- package/dist/reactive/theme.cjs +0 -2
- package/dist/reactive/theme.cjs.map +0 -1
- package/dist/reactive/theme.js +0 -27
- package/dist/reactive/theme.js.map +0 -1
- package/dist/reactive/types.cjs +0 -2
- package/dist/reactive/types.cjs.map +0 -1
- package/dist/reactive/types.js +0 -5
- package/dist/reactive/types.js.map +0 -1
- package/dist/reactive/unified-scheduler.cjs +0 -2
- package/dist/reactive/unified-scheduler.cjs.map +0 -1
- package/dist/reactive/unified-scheduler.js +0 -219
- package/dist/reactive/unified-scheduler.js.map +0 -1
- package/dist/runtime/component-context.cjs +0 -2
- package/dist/runtime/component-context.cjs.map +0 -1
- package/dist/runtime/component-context.js +0 -177
- package/dist/runtime/component-context.js.map +0 -1
- package/dist/runtime/component.cjs +0 -2
- package/dist/runtime/component.cjs.map +0 -1
- package/dist/runtime/component.js +0 -238
- package/dist/runtime/component.js.map +0 -1
- package/dist/runtime/context.cjs +0 -2
- package/dist/runtime/context.cjs.map +0 -1
- package/dist/runtime/context.js.map +0 -1
- package/dist/runtime/dev-tools.cjs +0 -2
- package/dist/runtime/dev-tools.cjs.map +0 -1
- package/dist/runtime/dev-tools.js +0 -391
- package/dist/runtime/dev-tools.js.map +0 -1
- package/dist/runtime/development-warnings.cjs +0 -2
- package/dist/runtime/development-warnings.cjs.map +0 -1
- package/dist/runtime/development-warnings.js +0 -69
- package/dist/runtime/development-warnings.js.map +0 -1
- package/dist/runtime/dom-bridge.cjs +0 -2
- package/dist/runtime/dom-bridge.cjs.map +0 -1
- package/dist/runtime/dom-bridge.js.map +0 -1
- package/dist/runtime/element-override.cjs +0 -2
- package/dist/runtime/element-override.cjs.map +0 -1
- package/dist/runtime/element-override.js +0 -214
- package/dist/runtime/element-override.js.map +0 -1
- package/dist/runtime/error-boundary.cjs +0 -2
- package/dist/runtime/error-boundary.cjs.map +0 -1
- package/dist/runtime/error-boundary.js +0 -559
- package/dist/runtime/error-boundary.js.map +0 -1
- package/dist/runtime/error-recovery.cjs +0 -2
- package/dist/runtime/error-recovery.cjs.map +0 -1
- package/dist/runtime/error-recovery.js +0 -385
- package/dist/runtime/error-recovery.js.map +0 -1
- package/dist/runtime/error-reporting.cjs +0 -3
- package/dist/runtime/error-reporting.cjs.map +0 -1
- package/dist/runtime/error-reporting.js +0 -479
- package/dist/runtime/error-reporting.js.map +0 -1
- package/dist/runtime/error-utils.cjs +0 -3
- package/dist/runtime/error-utils.cjs.map +0 -1
- package/dist/runtime/error-utils.js +0 -352
- package/dist/runtime/error-utils.js.map +0 -1
- package/dist/runtime/lazy-component.cjs +0 -2
- package/dist/runtime/lazy-component.cjs.map +0 -1
- package/dist/runtime/lazy-component.js +0 -129
- package/dist/runtime/lazy-component.js.map +0 -1
- package/dist/runtime/lifecycle.cjs +0 -2
- package/dist/runtime/lifecycle.cjs.map +0 -1
- package/dist/runtime/lifecycle.js +0 -7
- package/dist/runtime/lifecycle.js.map +0 -1
- package/dist/runtime/mounting.cjs +0 -2
- package/dist/runtime/mounting.cjs.map +0 -1
- package/dist/runtime/mounting.js +0 -12
- package/dist/runtime/mounting.js.map +0 -1
- package/dist/runtime/optimization.cjs +0 -2
- package/dist/runtime/optimization.cjs.map +0 -1
- package/dist/runtime/optimization.js +0 -6
- package/dist/runtime/optimization.js.map +0 -1
- package/dist/runtime/performance.cjs +0 -2
- package/dist/runtime/performance.cjs.map +0 -1
- package/dist/runtime/performance.js +0 -399
- package/dist/runtime/performance.js.map +0 -1
- package/dist/runtime/props.cjs +0 -2
- package/dist/runtime/props.cjs.map +0 -1
- package/dist/runtime/props.js +0 -265
- package/dist/runtime/props.js.map +0 -1
- package/dist/runtime/renderer.cjs +0 -2
- package/dist/runtime/renderer.cjs.map +0 -1
- package/dist/runtime/renderer.js.map +0 -1
- package/dist/runtime/semantic-role-manager.cjs +0 -2
- package/dist/runtime/semantic-role-manager.cjs.map +0 -1
- package/dist/runtime/semantic-role-manager.js +0 -82
- package/dist/runtime/semantic-role-manager.js.map +0 -1
- package/dist/state/binding.cjs +0 -2
- package/dist/state/binding.cjs.map +0 -1
- package/dist/state/binding.js +0 -155
- package/dist/state/binding.js.map +0 -1
- package/dist/state/environment.cjs +0 -2
- package/dist/state/environment.cjs.map +0 -1
- package/dist/state/environment.js +0 -115
- package/dist/state/environment.js.map +0 -1
- package/dist/state/index.cjs +0 -2
- package/dist/state/index.cjs.map +0 -1
- package/dist/state/index.js +0 -63
- package/dist/state/index.js.map +0 -1
- package/dist/state/observed-object.cjs +0 -2
- package/dist/state/observed-object.cjs.map +0 -1
- package/dist/state/observed-object.js +0 -163
- package/dist/state/observed-object.js.map +0 -1
- package/dist/state/state-manager.cjs +0 -2
- package/dist/state/state-manager.cjs.map +0 -1
- package/dist/state/state-manager.js +0 -233
- package/dist/state/state-manager.js.map +0 -1
- package/dist/state/state.cjs +0 -2
- package/dist/state/state.cjs.map +0 -1
- package/dist/state/state.js +0 -159
- package/dist/state/state.js.map +0 -1
- package/dist/sui-compat.cjs +0 -2
- package/dist/sui-compat.cjs.map +0 -1
- package/dist/sui-compat.js +0 -88
- package/dist/sui-compat.js.map +0 -1
- package/dist/validation/advanced-debugging.cjs +0 -44
- package/dist/validation/advanced-debugging.cjs.map +0 -1
- package/dist/validation/advanced-debugging.js +0 -455
- package/dist/validation/advanced-debugging.js.map +0 -1
- package/dist/validation/build-time/detection.cjs +0 -2
- package/dist/validation/build-time/detection.cjs.map +0 -1
- package/dist/validation/build-time/detection.js +0 -199
- package/dist/validation/build-time/detection.js.map +0 -1
- package/dist/validation/build-time/index.cjs +0 -2
- package/dist/validation/build-time/index.cjs.map +0 -1
- package/dist/validation/build-time/index.js +0 -122
- package/dist/validation/build-time/index.js.map +0 -1
- package/dist/validation/build-time/plugins.cjs +0 -3
- package/dist/validation/build-time/plugins.cjs.map +0 -1
- package/dist/validation/build-time/plugins.js +0 -282
- package/dist/validation/build-time/plugins.js.map +0 -1
- package/dist/validation/build-time/rules.cjs +0 -2
- package/dist/validation/build-time/rules.cjs.map +0 -1
- package/dist/validation/build-time/rules.js +0 -576
- package/dist/validation/build-time/rules.js.map +0 -1
- package/dist/validation/build-time/transformer.cjs +0 -3
- package/dist/validation/build-time/transformer.cjs.map +0 -1
- package/dist/validation/build-time/transformer.js +0 -177
- package/dist/validation/build-time/transformer.js.map +0 -1
- package/dist/validation/comprehensive.cjs +0 -9
- package/dist/validation/comprehensive.cjs.map +0 -1
- package/dist/validation/comprehensive.js +0 -916
- package/dist/validation/comprehensive.js.map +0 -1
- package/dist/validation/debug-tools.cjs +0 -16
- package/dist/validation/debug-tools.cjs.map +0 -1
- package/dist/validation/debug-tools.js +0 -405
- package/dist/validation/debug-tools.js.map +0 -1
- package/dist/validation/developer-experience.cjs +0 -17
- package/dist/validation/developer-experience.cjs.map +0 -1
- package/dist/validation/developer-experience.js +0 -433
- package/dist/validation/developer-experience.js.map +0 -1
- package/dist/validation/documentation-integration.cjs +0 -7
- package/dist/validation/documentation-integration.cjs.map +0 -1
- package/dist/validation/documentation-integration.js +0 -440
- package/dist/validation/documentation-integration.js.map +0 -1
- package/dist/validation/enhanced-runtime.cjs +0 -6
- package/dist/validation/enhanced-runtime.cjs.map +0 -1
- package/dist/validation/enhanced-runtime.js +0 -465
- package/dist/validation/enhanced-runtime.js.map +0 -1
- package/dist/validation/error-reporting.cjs +0 -32
- package/dist/validation/error-reporting.cjs.map +0 -1
- package/dist/validation/error-reporting.js +0 -370
- package/dist/validation/error-reporting.js.map +0 -1
- package/dist/validation/ide-integration.cjs +0 -85
- package/dist/validation/ide-integration.cjs.map +0 -1
- package/dist/validation/ide-integration.js +0 -557
- package/dist/validation/ide-integration.js.map +0 -1
- package/dist/validation/index.cjs +0 -6
- package/dist/validation/index.cjs.map +0 -1
- package/dist/validation/index.js.map +0 -1
- package/dist/validation/lifecycle-validation.cjs +0 -2
- package/dist/validation/lifecycle-validation.cjs.map +0 -1
- package/dist/validation/lifecycle-validation.js +0 -314
- package/dist/validation/lifecycle-validation.js.map +0 -1
- package/dist/validation/performance-optimizer.cjs +0 -2
- package/dist/validation/performance-optimizer.cjs.map +0 -1
- package/dist/validation/performance-optimizer.js +0 -338
- package/dist/validation/performance-optimizer.js.map +0 -1
- package/dist/validation/plugin-registration.cjs +0 -2
- package/dist/validation/plugin-registration.cjs.map +0 -1
- package/dist/validation/plugin-registration.js +0 -126
- package/dist/validation/plugin-registration.js.map +0 -1
- package/dist/validation/production-bypass.cjs +0 -2
- package/dist/validation/production-bypass.cjs.map +0 -1
- package/dist/validation/production-bypass.js +0 -218
- package/dist/validation/production-bypass.js.map +0 -1
- package/dist/validation/simple.cjs +0 -9
- package/dist/validation/simple.cjs.map +0 -1
- package/dist/validation/simple.js +0 -146
- package/dist/validation/simple.js.map +0 -1
- package/dist/viewport/adapters/web-adapter.cjs +0 -70
- package/dist/viewport/adapters/web-adapter.cjs.map +0 -1
- package/dist/viewport/adapters/web-adapter.js +0 -823
- package/dist/viewport/adapters/web-adapter.js.map +0 -1
- package/dist/viewport/components.cjs +0 -2
- package/dist/viewport/components.cjs.map +0 -1
- package/dist/viewport/components.js +0 -298
- package/dist/viewport/components.js.map +0 -1
- package/dist/viewport/environment.cjs +0 -2
- package/dist/viewport/environment.cjs.map +0 -1
- package/dist/viewport/environment.js +0 -86
- package/dist/viewport/environment.js.map +0 -1
- package/dist/viewport/index.cjs +0 -2
- package/dist/viewport/index.cjs.map +0 -1
- package/dist/viewport/index.js.map +0 -1
- package/dist/viewport/platform-detection.cjs +0 -2
- package/dist/viewport/platform-detection.cjs.map +0 -1
- package/dist/viewport/platform-detection.js +0 -205
- package/dist/viewport/platform-detection.js.map +0 -1
- package/dist/viewport/types.cjs +0 -2
- package/dist/viewport/types.cjs.map +0 -1
- package/dist/viewport/types.js +0 -13
- package/dist/viewport/types.js.map +0 -1
- package/dist/viewport/viewport-manager.cjs +0 -2
- package/dist/viewport/viewport-manager.cjs.map +0 -1
- package/dist/viewport/viewport-manager.js +0 -524
- package/dist/viewport/viewport-manager.js.map +0 -1
- package/src/assets/Asset.ts +0 -11
- package/src/assets/AssetCollection.ts +0 -99
- package/src/assets/ColorAsset.ts +0 -210
- package/src/assets/FontAsset.ts +0 -380
- package/src/assets/ImageAsset.ts +0 -91
- package/src/assets/README.md +0 -190
- package/src/assets/index.ts +0 -175
- package/src/assets/test-assets.ts +0 -69
- package/src/assets/test-integration.ts +0 -46
- package/src/assets/test-simple.ts +0 -28
- package/src/assets/types.ts +0 -79
- package/src/bundles/common.ts +0 -30
- package/src/bundles/complete.ts +0 -29
- package/src/bundles/essential.ts +0 -26
- package/src/bundles/minimal.ts +0 -26
- package/src/bundles/production-minimal.ts +0 -67
- package/src/compiler/advanced-parser.ts +0 -871
- package/src/compiler/codegen.ts +0 -450
- package/src/compiler/enhanced-codegen.ts +0 -729
- package/src/compiler/index.ts +0 -25
- package/src/compiler/parser.ts +0 -461
- package/src/compiler/plugin.ts +0 -181
- package/src/compiler/types.ts +0 -177
- package/src/components/BasicInput.ts +0 -352
- package/src/components/Button.ts +0 -963
- package/src/components/Divider.ts +0 -341
- package/src/components/EnhancedLink.ts +0 -676
- package/src/components/Form.ts +0 -414
- package/src/components/Grid.ts +0 -2507
- package/src/components/GridResponsive.ts +0 -637
- package/src/components/Image.ts +0 -426
- package/src/components/List.ts +0 -1084
- package/src/components/Menu.ts +0 -807
- package/src/components/Picker.ts +0 -678
- package/src/components/ScrollView.ts +0 -725
- package/src/components/Section.ts +0 -472
- package/src/components/Show.ts +0 -205
- package/src/components/Spacer.ts +0 -93
- package/src/components/Text.ts +0 -447
- package/src/components/Toggle.ts +0 -700
- package/src/components/index.ts +0 -231
- package/src/components/wrapper.ts +0 -828
- package/src/concatenation/concatenatable.ts +0 -211
- package/src/concatenation/concatenated-component.ts +0 -471
- package/src/concatenation/index.ts +0 -41
- package/src/concatenation/styles.css +0 -120
- package/src/concatenation/text-optimizer.ts +0 -440
- package/src/concatenation/types.ts +0 -116
- package/src/constants/README.md +0 -339
- package/src/constants/__tests__/frame-utils.test.ts +0 -276
- package/src/constants/__tests__/layout.test.ts +0 -215
- package/src/constants/frame-utils.ts +0 -174
- package/src/constants/index.ts +0 -8
- package/src/constants/layout.ts +0 -120
- package/src/css-classes/component-base.ts +0 -117
- package/src/css-classes/css-class-manager.ts +0 -372
- package/src/css-classes/dom-integration.ts +0 -162
- package/src/css-classes/enhanced-renderer.ts +0 -166
- package/src/css-classes/index.ts +0 -45
- package/src/css-classes/types.ts +0 -73
- package/src/css-classes/utilities.ts +0 -175
- package/src/debug/index.ts +0 -267
- package/src/developer-experience/enhanced-errors.ts +0 -556
- package/src/developer-experience/enhanced-types.ts +0 -427
- package/src/developer-experience/index.ts +0 -220
- package/src/globals.d.ts +0 -43
- package/src/gradients/__tests__/angular-gradient.test.ts +0 -111
- package/src/gradients/__tests__/background-modifier.test.ts +0 -81
- package/src/gradients/__tests__/comprehensive-gradients.test.ts +0 -296
- package/src/gradients/__tests__/gradient-asset.test.ts +0 -144
- package/src/gradients/__tests__/linear-gradient.test.ts +0 -92
- package/src/gradients/__tests__/phase4-features.test.ts +0 -386
- package/src/gradients/__tests__/radial-gradient.test.ts +0 -110
- package/src/gradients/__tests__/repeating-gradients.test.ts +0 -125
- package/src/gradients/__tests__/state-background-modifier.test.ts +0 -340
- package/src/gradients/__tests__/state-gradient-asset.test.ts +0 -262
- package/src/gradients/__tests__/state-gradient-integration.test.ts +0 -277
- package/src/gradients/css-generator.ts +0 -158
- package/src/gradients/examples.ts +0 -632
- package/src/gradients/gradient-asset.ts +0 -30
- package/src/gradients/index.ts +0 -85
- package/src/gradients/performance.ts +0 -521
- package/src/gradients/presets.ts +0 -422
- package/src/gradients/reactive.ts +0 -470
- package/src/gradients/state-gradient-asset.ts +0 -179
- package/src/gradients/types.ts +0 -148
- package/src/gradients/utils.ts +0 -579
- package/src/gradients/validation.ts +0 -489
- package/src/index.ts +0 -168
- package/src/lifecycle/hooks.ts +0 -332
- package/src/modifiers/__tests__/as-html-integration.test.ts +0 -204
- package/src/modifiers/__tests__/as-html.test.ts +0 -437
- package/src/modifiers/__tests__/basic-sanitizer-security.test.ts +0 -294
- package/src/modifiers/__tests__/border.test.ts +0 -371
- package/src/modifiers/__tests__/margin-string-support.test.ts +0 -41
- package/src/modifiers/__tests__/padding-string-support.test.ts +0 -41
- package/src/modifiers/as-html-validator.ts +0 -68
- package/src/modifiers/as-html.ts +0 -216
- package/src/modifiers/attributes.ts +0 -574
- package/src/modifiers/backdrop.ts +0 -290
- package/src/modifiers/background.ts +0 -165
- package/src/modifiers/base.ts +0 -1815
- package/src/modifiers/basic-sanitizer.ts +0 -227
- package/src/modifiers/border.ts +0 -574
- package/src/modifiers/builder.ts +0 -1747
- package/src/modifiers/core.ts +0 -521
- package/src/modifiers/css.ts +0 -148
- package/src/modifiers/effects.ts +0 -412
- package/src/modifiers/elements.ts +0 -541
- package/src/modifiers/filters.ts +0 -501
- package/src/modifiers/flexbox.ts +0 -180
- package/src/modifiers/font.ts +0 -149
- package/src/modifiers/grid.ts +0 -238
- package/src/modifiers/index.ts +0 -481
- package/src/modifiers/margin.ts +0 -218
- package/src/modifiers/padding.ts +0 -318
- package/src/modifiers/registry.ts +0 -444
- package/src/modifiers/responsive/__tests__/advanced-media-queries.test.ts +0 -392
- package/src/modifiers/responsive/__tests__/advanced-utilities.test.ts +0 -368
- package/src/modifiers/responsive/__tests__/comprehensive-browser-tests.test.ts +0 -556
- package/src/modifiers/responsive/__tests__/layout-patterns.test.ts +0 -558
- package/src/modifiers/responsive/advanced-utilities.ts +0 -562
- package/src/modifiers/responsive/breakpoints.ts +0 -330
- package/src/modifiers/responsive/css-generator.ts +0 -432
- package/src/modifiers/responsive/dev-tools.ts +0 -650
- package/src/modifiers/responsive/index.ts +0 -119
- package/src/modifiers/responsive/layout-patterns.ts +0 -592
- package/src/modifiers/responsive/performance.ts +0 -385
- package/src/modifiers/responsive/responsive-builder.ts +0 -620
- package/src/modifiers/responsive/responsive-modifier.ts +0 -410
- package/src/modifiers/responsive/types.ts +0 -226
- package/src/modifiers/responsive/utilities.ts +0 -478
- package/src/modifiers/scroll.ts +0 -297
- package/src/modifiers/shadows.ts +0 -321
- package/src/modifiers/size.ts +0 -208
- package/src/modifiers/text.ts +0 -416
- package/src/modifiers/transformations.ts +0 -640
- package/src/modifiers/transitions.ts +0 -218
- package/src/modifiers/types.ts +0 -889
- package/src/modifiers/typography.ts +0 -341
- package/src/modifiers/utility.ts +0 -209
- package/src/modifiers/utils.ts +0 -413
- package/src/plugins/__tests__/simplified-plugin-system.test.ts +0 -190
- package/src/plugins/component-loader-registry.ts +0 -371
- package/src/plugins/index.ts +0 -61
- package/src/plugins/legacy-adapter.ts +0 -84
- package/src/plugins/simplified-component-registry.ts +0 -130
- package/src/plugins/simplified-error-handler.ts +0 -372
- package/src/plugins/simplified-index.ts +0 -61
- package/src/plugins/simplified-lazy-loader.ts +0 -242
- package/src/plugins/simplified-plugin-manager.ts +0 -93
- package/src/plugins/simplified-tachui-instance.ts +0 -142
- package/src/plugins/simplified-types.ts +0 -79
- package/src/plugins/simplified-utils.ts +0 -118
- package/src/reactive/cleanup.ts +0 -241
- package/src/reactive/computed.ts +0 -281
- package/src/reactive/context.ts +0 -287
- package/src/reactive/effect.ts +0 -194
- package/src/reactive/enhanced-effect.ts +0 -318
- package/src/reactive/enhanced-signal.ts +0 -227
- package/src/reactive/equality.ts +0 -188
- package/src/reactive/globals.d.ts +0 -5
- package/src/reactive/index.ts +0 -150
- package/src/reactive/migration.ts +0 -335
- package/src/reactive/ownership.ts +0 -182
- package/src/reactive/scheduler.ts +0 -300
- package/src/reactive/signal.ts +0 -201
- package/src/reactive/theme.ts +0 -49
- package/src/reactive/types.ts +0 -103
- package/src/reactive/unified-scheduler.ts +0 -357
- package/src/runtime/component-context.ts +0 -343
- package/src/runtime/component.ts +0 -499
- package/src/runtime/context.ts +0 -527
- package/src/runtime/dev-tools.ts +0 -752
- package/src/runtime/development-warnings.ts +0 -114
- package/src/runtime/dom-bridge.ts +0 -570
- package/src/runtime/element-override.ts +0 -282
- package/src/runtime/error-boundary.ts +0 -955
- package/src/runtime/error-recovery.ts +0 -638
- package/src/runtime/error-reporting.ts +0 -808
- package/src/runtime/error-utils.ts +0 -698
- package/src/runtime/index.ts +0 -202
- package/src/runtime/lazy-component.ts +0 -268
- package/src/runtime/lifecycle.ts +0 -10
- package/src/runtime/mounting.ts +0 -17
- package/src/runtime/optimization.ts +0 -13
- package/src/runtime/performance.ts +0 -693
- package/src/runtime/props.ts +0 -434
- package/src/runtime/refs.ts +0 -13
- package/src/runtime/renderer.ts +0 -674
- package/src/runtime/semantic-role-manager.ts +0 -140
- package/src/runtime/types.ts +0 -282
- package/src/state/binding.ts +0 -381
- package/src/state/environment-object.ts +0 -444
- package/src/state/environment.ts +0 -351
- package/src/state/index.ts +0 -179
- package/src/state/observed-object.ts +0 -405
- package/src/state/state-manager.ts +0 -366
- package/src/state/state.ts +0 -339
- package/src/state/types.ts +0 -192
- package/src/sui-compat.ts +0 -163
- package/src/validation/__tests__/phase-1d-integration.test.ts +0 -558
- package/src/validation/advanced-debugging.ts +0 -860
- package/src/validation/build-time/detection.ts +0 -373
- package/src/validation/build-time/index.ts +0 -222
- package/src/validation/build-time/plugins.ts +0 -515
- package/src/validation/build-time/rules.ts +0 -624
- package/src/validation/build-time/transformer.ts +0 -372
- package/src/validation/build-time/types.ts +0 -232
- package/src/validation/comprehensive.ts +0 -1272
- package/src/validation/debug-tools.ts +0 -724
- package/src/validation/developer-experience.ts +0 -712
- package/src/validation/documentation-integration.ts +0 -835
- package/src/validation/enhanced-runtime.ts +0 -765
- package/src/validation/error-reporting.ts +0 -587
- package/src/validation/ide-integration.ts +0 -845
- package/src/validation/index.ts +0 -353
- package/src/validation/lifecycle-validation.ts +0 -636
- package/src/validation/performance-optimizer.ts +0 -599
- package/src/validation/plugin-registration.ts +0 -249
- package/src/validation/production-bypass.ts +0 -466
- package/src/validation/simple.ts +0 -465
- package/src/viewport/adapters/web-adapter.ts +0 -1385
- package/src/viewport/components.ts +0 -505
- package/src/viewport/environment.ts +0 -173
- package/src/viewport/index.ts +0 -290
- package/src/viewport/platform-detection.ts +0 -431
- package/src/viewport/types.ts +0 -371
- package/src/viewport/viewport-manager.ts +0 -979
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"error-recovery.cjs","sources":["../../src/runtime/error-recovery.ts"],"sourcesContent":["/**\n * Error Recovery Mechanisms (Phase 3.2.3)\n *\n * Advanced error recovery strategies and retry logic for TachUI.\n * Provides intelligent error handling, circuit breakers, and recovery patterns.\n */\n\nimport { createSignal } from '../reactive'\nimport { globalErrorManager, type TachUIError } from './error-boundary'\n\n/**\n * Circuit breaker states\n */\nexport type CircuitBreakerState = 'closed' | 'open' | 'half-open'\n\n/**\n * Circuit breaker configuration\n */\nexport interface CircuitBreakerConfig {\n failureThreshold: number\n resetTimeout: number\n monitoringPeriod: number\n minimumThroughput: number\n}\n\n/**\n * Retry policy configuration\n */\nexport interface RetryPolicyConfig {\n maxAttempts: number\n baseDelay: number\n maxDelay: number\n backoffMultiplier: number\n jitter: boolean\n retryableErrors: string[]\n nonRetryableErrors: string[]\n}\n\n/**\n * Fallback configuration\n */\nexport interface FallbackConfig<T> {\n value?: T\n factory?: () => T | Promise<T>\n timeout?: number\n cache?: boolean\n cacheKey?: string\n cacheTimeout?: number\n}\n\n/**\n * Circuit breaker implementation\n */\nexport class CircuitBreaker {\n private state: CircuitBreakerState = 'closed'\n private failureCount = 0\n private lastFailureTime = 0\n private successCount = 0\n private requestCount = 0\n private lastRequestTime = 0\n\n private config: CircuitBreakerConfig\n private stateSignal: () => CircuitBreakerState\n private setState: (value: CircuitBreakerState) => void\n\n constructor(config: Partial<CircuitBreakerConfig> = {}) {\n this.config = {\n failureThreshold: 5,\n resetTimeout: 60000, // 1 minute\n monitoringPeriod: 300000, // 5 minutes\n minimumThroughput: 10,\n ...config,\n }\n\n // Initialize reactive state\n const [stateSignal, setState] = createSignal<CircuitBreakerState>('closed')\n this.stateSignal = stateSignal\n this.setState = setState\n }\n\n /**\n * Execute function with circuit breaker protection\n */\n async execute<R>(fn: () => Promise<R>): Promise<R> {\n this.updateRequestCount()\n\n if (this.state === 'open') {\n if (this.shouldAttemptReset()) {\n this.state = 'half-open'\n this.setState('half-open')\n } else {\n throw new Error('Circuit breaker is open')\n }\n }\n\n try {\n const result = await fn()\n this.onSuccess()\n return result\n } catch (error) {\n this.onFailure()\n throw error\n }\n }\n\n /**\n * Handle successful execution\n */\n private onSuccess(): void {\n this.successCount++\n\n if (this.state === 'half-open') {\n this.reset()\n }\n }\n\n /**\n * Handle failed execution\n */\n private onFailure(): void {\n this.failureCount++\n this.lastFailureTime = Date.now()\n\n if (this.shouldTrip()) {\n this.trip()\n }\n }\n\n /**\n * Check if circuit breaker should trip to open state\n */\n private shouldTrip(): boolean {\n return (\n this.failureCount >= this.config.failureThreshold &&\n this.requestCount >= this.config.minimumThroughput\n )\n }\n\n /**\n * Trip circuit breaker to open state\n */\n private trip(): void {\n this.state = 'open'\n this.setState('open')\n\n globalErrorManager.reportError(\n globalErrorManager.createTachUIError(new Error('Circuit breaker tripped'), {\n category: 'component_error',\n severity: 'medium',\n context: {\n failureCount: this.failureCount,\n requestCount: this.requestCount,\n },\n })\n )\n }\n\n /**\n * Check if should attempt reset from open state\n */\n private shouldAttemptReset(): boolean {\n return Date.now() - this.lastFailureTime >= this.config.resetTimeout\n }\n\n /**\n * Reset circuit breaker to closed state\n */\n private reset(): void {\n this.state = 'closed'\n this.failureCount = 0\n this.successCount = 0\n this.setState('closed')\n }\n\n /**\n * Update request count for monitoring period\n */\n private updateRequestCount(): void {\n const now = Date.now()\n\n if (now - this.lastRequestTime > this.config.monitoringPeriod) {\n this.requestCount = 0\n }\n\n this.requestCount++\n this.lastRequestTime = now\n }\n\n /**\n * Get current state\n */\n getState(): CircuitBreakerState {\n return this.state\n }\n\n /**\n * Get state signal\n */\n getStateSignal(): () => CircuitBreakerState {\n return this.stateSignal\n }\n\n /**\n * Get metrics\n */\n getMetrics(): {\n state: CircuitBreakerState\n failureCount: number\n successCount: number\n requestCount: number\n failureRate: number\n } {\n return {\n state: this.state,\n failureCount: this.failureCount,\n successCount: this.successCount,\n requestCount: this.requestCount,\n failureRate: this.requestCount > 0 ? this.failureCount / this.requestCount : 0,\n }\n }\n}\n\n/**\n * Retry policy implementation\n */\nexport class RetryPolicy {\n private config: RetryPolicyConfig\n\n constructor(config: Partial<RetryPolicyConfig> = {}) {\n this.config = {\n maxAttempts: 3,\n baseDelay: 1000,\n maxDelay: 30000,\n backoffMultiplier: 2,\n jitter: true,\n retryableErrors: [], // Empty means retry all errors by default (except non-retryable)\n nonRetryableErrors: ['ValidationError', 'AuthenticationError'],\n ...config,\n }\n }\n\n /**\n * Execute function with retry policy\n */\n async execute<T>(fn: () => Promise<T>): Promise<T> {\n let lastError: Error\n\n for (let attempt = 1; attempt <= this.config.maxAttempts; attempt++) {\n try {\n return await fn()\n } catch (error) {\n lastError = error as Error\n\n if (!this.shouldRetry(error as Error, attempt)) {\n throw error\n }\n\n if (attempt < this.config.maxAttempts) {\n const delay = this.calculateDelay(attempt)\n await this.sleep(delay)\n\n // Report retry attempt\n globalErrorManager.reportError(\n globalErrorManager.createTachUIError(error as Error, {\n category: 'network_error',\n severity: 'low',\n context: {\n attempt,\n nextDelay: delay,\n retryPolicy: true,\n },\n })\n )\n }\n }\n }\n\n throw lastError!\n }\n\n /**\n * Check if error should be retried\n */\n private shouldRetry(error: Error, attempt: number): boolean {\n if (attempt >= this.config.maxAttempts) {\n return false\n }\n\n const errorName = error.constructor.name\n\n // Check non-retryable errors first\n if (this.config.nonRetryableErrors.includes(errorName)) {\n return false\n }\n\n // Check retryable errors - if empty, allow retries by default\n if (this.config.retryableErrors.length > 0) {\n return this.config.retryableErrors.includes(errorName)\n }\n\n // Default: retry most errors except validation/auth\n return !['ValidationError', 'AuthenticationError', 'AuthorizationError'].includes(errorName)\n }\n\n /**\n * Calculate delay for next retry\n */\n private calculateDelay(attempt: number): number {\n const exponentialDelay = this.config.baseDelay * this.config.backoffMultiplier ** (attempt - 1)\n let delay = Math.min(exponentialDelay, this.config.maxDelay)\n\n // Add jitter to prevent thundering herd\n if (this.config.jitter) {\n delay = delay * (0.5 + Math.random() * 0.5)\n }\n\n return Math.floor(delay)\n }\n\n /**\n * Sleep for specified duration\n */\n private sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms))\n }\n\n /**\n * Get configuration\n */\n getConfig(): RetryPolicyConfig {\n return { ...this.config }\n }\n}\n\n/**\n * Fallback manager\n */\nexport class FallbackManager<T> {\n private cache = new Map<string, { value: T; timestamp: number }>()\n\n /**\n * Execute with fallback\n */\n async executeWithFallback<R>(\n fn: () => Promise<R>,\n fallbackConfig: FallbackConfig<R>\n ): Promise<R> {\n try {\n // Try with timeout if specified\n if (fallbackConfig.timeout) {\n return await this.withTimeout(fn(), fallbackConfig.timeout)\n } else {\n return await fn()\n }\n } catch (error) {\n return this.getFallbackValue(fallbackConfig, error as Error)\n }\n }\n\n /**\n * Get fallback value\n */\n private async getFallbackValue<R>(config: FallbackConfig<R>, error: Error): Promise<R> {\n // Check cache first\n if (config.cache && config.cacheKey) {\n const cached = this.getCachedValue<R>(config.cacheKey, config.cacheTimeout || 300000)\n if (cached !== null) {\n return cached\n }\n }\n\n let fallbackValue: R\n\n // Get fallback value\n if (config.factory) {\n fallbackValue = await config.factory()\n } else if (config.value !== undefined) {\n fallbackValue = config.value\n } else {\n throw error // No fallback available\n }\n\n // Cache the fallback value\n if (config.cache && config.cacheKey) {\n this.setCachedValue(config.cacheKey, fallbackValue)\n }\n\n return fallbackValue\n }\n\n /**\n * Execute with timeout\n */\n private withTimeout<R>(promise: Promise<R>, timeout: number): Promise<R> {\n return new Promise((resolve, reject) => {\n const timer = setTimeout(() => {\n reject(new Error(`Operation timed out after ${timeout}ms`))\n }, timeout)\n\n promise\n .then(resolve)\n .catch(reject)\n .finally(() => clearTimeout(timer))\n })\n }\n\n /**\n * Get cached value\n */\n private getCachedValue<R>(key: string, maxAge: number): R | null {\n const cached = this.cache.get(key)\n if (!cached) return null\n\n if (Date.now() - cached.timestamp > maxAge) {\n this.cache.delete(key)\n return null\n }\n\n return cached.value as unknown as R\n }\n\n /**\n * Set cached value\n */\n private setCachedValue<R>(key: string, value: R): void {\n this.cache.set(key, { value: value as any, timestamp: Date.now() })\n }\n\n /**\n * Clear cache\n */\n clearCache(): void {\n this.cache.clear()\n }\n}\n\n/**\n * Composite recovery strategy\n */\nexport class RecoveryOrchestrator {\n private circuitBreaker?: CircuitBreaker\n private retryPolicy?: RetryPolicy\n private fallbackManager = new FallbackManager()\n\n constructor(\n circuitBreakerConfig?: Partial<CircuitBreakerConfig>,\n retryPolicyConfig?: Partial<RetryPolicyConfig>\n ) {\n if (circuitBreakerConfig) {\n this.circuitBreaker = new CircuitBreaker(circuitBreakerConfig)\n }\n\n if (retryPolicyConfig) {\n this.retryPolicy = new RetryPolicy(retryPolicyConfig)\n }\n }\n\n /**\n * Execute with all recovery mechanisms\n */\n async execute<T>(fn: () => Promise<T>, fallbackConfig?: FallbackConfig<T>): Promise<T> {\n const wrappedFn = this.wrapWithRecovery(fn)\n\n if (fallbackConfig) {\n return this.fallbackManager.executeWithFallback(wrappedFn, fallbackConfig)\n } else {\n return wrappedFn()\n }\n }\n\n /**\n * Wrap function with recovery mechanisms\n */\n private wrapWithRecovery<T>(fn: () => Promise<T>): () => Promise<T> {\n let wrappedFn = fn\n\n // Apply retry policy\n if (this.retryPolicy) {\n const retryFn = wrappedFn\n wrappedFn = () => this.retryPolicy!.execute(retryFn)\n }\n\n // Apply circuit breaker\n if (this.circuitBreaker) {\n const circuitFn = wrappedFn\n wrappedFn = () => this.circuitBreaker!.execute(circuitFn)\n }\n\n return wrappedFn\n }\n\n /**\n * Get circuit breaker metrics\n */\n getCircuitBreakerMetrics() {\n return this.circuitBreaker?.getMetrics()\n }\n\n /**\n * Get retry policy configuration\n */\n getRetryPolicyConfig() {\n return this.retryPolicy?.getConfig()\n }\n}\n\n/**\n * Error recovery utilities\n */\nexport const recoveryUtils = {\n /**\n * Create a robust function wrapper with all recovery mechanisms\n */\n createRobustFunction<T extends (...args: any[]) => Promise<any>>(\n fn: T,\n options: {\n circuitBreaker?: Partial<CircuitBreakerConfig>\n retryPolicy?: Partial<RetryPolicyConfig>\n fallback?: FallbackConfig<Awaited<ReturnType<T>>>\n onError?: (error: TachUIError) => void\n } = {}\n ): T {\n const orchestrator = new RecoveryOrchestrator(options.circuitBreaker, options.retryPolicy)\n\n return (async (...args: Parameters<T>): Promise<Awaited<ReturnType<T>>> => {\n try {\n return await orchestrator.execute(() => fn(...args), options.fallback)\n } catch (error) {\n if (options.onError) {\n const tachUIError = globalErrorManager.createTachUIError(error as Error, {\n category: 'network_error',\n })\n options.onError(tachUIError)\n }\n throw error\n }\n }) as T\n },\n\n /**\n * Create simple retry wrapper\n */\n withRetry<T extends (...args: any[]) => Promise<any>>(\n fn: T,\n maxAttempts: number = 3,\n baseDelay: number = 1000\n ): T {\n const retryPolicy = new RetryPolicy({\n maxAttempts,\n baseDelay,\n })\n\n return ((...args: Parameters<T>): Promise<Awaited<ReturnType<T>>> => {\n return retryPolicy.execute(() => fn(...args))\n }) as T\n },\n\n /**\n * Create circuit breaker wrapper\n */\n withCircuitBreaker<T extends (...args: any[]) => Promise<any>>(\n fn: T,\n config?: Partial<CircuitBreakerConfig>\n ): T {\n const circuitBreaker = new CircuitBreaker(config)\n\n return ((...args: Parameters<T>): Promise<Awaited<ReturnType<T>>> => {\n return circuitBreaker.execute(() => fn(...args))\n }) as T\n },\n\n /**\n * Create fallback wrapper\n */\n withFallback<T extends (...args: any[]) => Promise<any>>(\n fn: T,\n fallbackValue: Awaited<ReturnType<T>> | (() => Awaited<ReturnType<T>>)\n ): T {\n const fallbackManager = new FallbackManager()\n\n return ((...args: Parameters<T>): Promise<Awaited<ReturnType<T>>> => {\n return fallbackManager.executeWithFallback(() => fn(...args), {\n factory:\n typeof fallbackValue === 'function'\n ? (fallbackValue as () => Awaited<ReturnType<T>>)\n : undefined,\n value: typeof fallbackValue !== 'function' ? fallbackValue : undefined,\n })\n }) as T\n },\n}\n\n/**\n * Global recovery configurations\n */\nexport const recoveryPresets = {\n /**\n * Configuration for network requests\n */\n network: {\n circuitBreaker: {\n failureThreshold: 5,\n resetTimeout: 60000,\n monitoringPeriod: 300000,\n },\n retryPolicy: {\n maxAttempts: 3,\n baseDelay: 1000,\n backoffMultiplier: 2,\n jitter: true,\n retryableErrors: ['NetworkError', 'TimeoutError', 'ServiceUnavailable'],\n },\n },\n\n /**\n * Configuration for component rendering\n */\n component: {\n retryPolicy: {\n maxAttempts: 2,\n baseDelay: 100,\n backoffMultiplier: 1.5,\n jitter: false,\n retryableErrors: ['RenderError', 'ComponentError'],\n },\n },\n\n /**\n * Configuration for reactive operations\n */\n reactive: {\n retryPolicy: {\n maxAttempts: 1,\n baseDelay: 0,\n retryableErrors: [],\n },\n },\n}\n"],"names":["CircuitBreaker","config","__publicField","stateSignal","setState","createSignal","fn","result","error","globalErrorManager","now","RetryPolicy","lastError","attempt","delay","errorName","exponentialDelay","ms","resolve","FallbackManager","fallbackConfig","cached","fallbackValue","promise","timeout","reject","timer","key","maxAge","value","RecoveryOrchestrator","circuitBreakerConfig","retryPolicyConfig","wrappedFn","retryFn","circuitFn","recoveryUtils","options","orchestrator","args","tachUIError","maxAttempts","baseDelay","retryPolicy","circuitBreaker","fallbackManager","recoveryPresets"],"mappings":"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"}
|
|
@@ -1,385 +0,0 @@
|
|
|
1
|
-
import "../reactive/cleanup.js";
|
|
2
|
-
import "../reactive/unified-scheduler.js";
|
|
3
|
-
import { createSignal as l } from "../reactive/signal.js";
|
|
4
|
-
import "../reactive/scheduler.js";
|
|
5
|
-
import "../reactive/theme.js";
|
|
6
|
-
import { globalErrorManager as c } from "./error-boundary.js";
|
|
7
|
-
var y = Object.defineProperty, f = (i, t, e) => t in i ? y(i, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : i[t] = e, a = (i, t, e) => f(i, typeof t != "symbol" ? t + "" : t, e);
|
|
8
|
-
class n {
|
|
9
|
-
constructor(t = {}) {
|
|
10
|
-
a(this, "state", "closed"), a(this, "failureCount", 0), a(this, "lastFailureTime", 0), a(this, "successCount", 0), a(this, "requestCount", 0), a(this, "lastRequestTime", 0), a(this, "config"), a(this, "stateSignal"), a(this, "setState"), this.config = {
|
|
11
|
-
failureThreshold: 5,
|
|
12
|
-
resetTimeout: 6e4,
|
|
13
|
-
// 1 minute
|
|
14
|
-
monitoringPeriod: 3e5,
|
|
15
|
-
// 5 minutes
|
|
16
|
-
minimumThroughput: 10,
|
|
17
|
-
...t
|
|
18
|
-
};
|
|
19
|
-
const [e, r] = l("closed");
|
|
20
|
-
this.stateSignal = e, this.setState = r;
|
|
21
|
-
}
|
|
22
|
-
/**
|
|
23
|
-
* Execute function with circuit breaker protection
|
|
24
|
-
*/
|
|
25
|
-
async execute(t) {
|
|
26
|
-
if (this.updateRequestCount(), this.state === "open")
|
|
27
|
-
if (this.shouldAttemptReset())
|
|
28
|
-
this.state = "half-open", this.setState("half-open");
|
|
29
|
-
else
|
|
30
|
-
throw new Error("Circuit breaker is open");
|
|
31
|
-
try {
|
|
32
|
-
const e = await t();
|
|
33
|
-
return this.onSuccess(), e;
|
|
34
|
-
} catch (e) {
|
|
35
|
-
throw this.onFailure(), e;
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Handle successful execution
|
|
40
|
-
*/
|
|
41
|
-
onSuccess() {
|
|
42
|
-
this.successCount++, this.state === "half-open" && this.reset();
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* Handle failed execution
|
|
46
|
-
*/
|
|
47
|
-
onFailure() {
|
|
48
|
-
this.failureCount++, this.lastFailureTime = Date.now(), this.shouldTrip() && this.trip();
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Check if circuit breaker should trip to open state
|
|
52
|
-
*/
|
|
53
|
-
shouldTrip() {
|
|
54
|
-
return this.failureCount >= this.config.failureThreshold && this.requestCount >= this.config.minimumThroughput;
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* Trip circuit breaker to open state
|
|
58
|
-
*/
|
|
59
|
-
trip() {
|
|
60
|
-
this.state = "open", this.setState("open"), c.reportError(
|
|
61
|
-
c.createTachUIError(new Error("Circuit breaker tripped"), {
|
|
62
|
-
category: "component_error",
|
|
63
|
-
severity: "medium",
|
|
64
|
-
context: {
|
|
65
|
-
failureCount: this.failureCount,
|
|
66
|
-
requestCount: this.requestCount
|
|
67
|
-
}
|
|
68
|
-
})
|
|
69
|
-
);
|
|
70
|
-
}
|
|
71
|
-
/**
|
|
72
|
-
* Check if should attempt reset from open state
|
|
73
|
-
*/
|
|
74
|
-
shouldAttemptReset() {
|
|
75
|
-
return Date.now() - this.lastFailureTime >= this.config.resetTimeout;
|
|
76
|
-
}
|
|
77
|
-
/**
|
|
78
|
-
* Reset circuit breaker to closed state
|
|
79
|
-
*/
|
|
80
|
-
reset() {
|
|
81
|
-
this.state = "closed", this.failureCount = 0, this.successCount = 0, this.setState("closed");
|
|
82
|
-
}
|
|
83
|
-
/**
|
|
84
|
-
* Update request count for monitoring period
|
|
85
|
-
*/
|
|
86
|
-
updateRequestCount() {
|
|
87
|
-
const t = Date.now();
|
|
88
|
-
t - this.lastRequestTime > this.config.monitoringPeriod && (this.requestCount = 0), this.requestCount++, this.lastRequestTime = t;
|
|
89
|
-
}
|
|
90
|
-
/**
|
|
91
|
-
* Get current state
|
|
92
|
-
*/
|
|
93
|
-
getState() {
|
|
94
|
-
return this.state;
|
|
95
|
-
}
|
|
96
|
-
/**
|
|
97
|
-
* Get state signal
|
|
98
|
-
*/
|
|
99
|
-
getStateSignal() {
|
|
100
|
-
return this.stateSignal;
|
|
101
|
-
}
|
|
102
|
-
/**
|
|
103
|
-
* Get metrics
|
|
104
|
-
*/
|
|
105
|
-
getMetrics() {
|
|
106
|
-
return {
|
|
107
|
-
state: this.state,
|
|
108
|
-
failureCount: this.failureCount,
|
|
109
|
-
successCount: this.successCount,
|
|
110
|
-
requestCount: this.requestCount,
|
|
111
|
-
failureRate: this.requestCount > 0 ? this.failureCount / this.requestCount : 0
|
|
112
|
-
};
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
class u {
|
|
116
|
-
constructor(t = {}) {
|
|
117
|
-
a(this, "config"), this.config = {
|
|
118
|
-
maxAttempts: 3,
|
|
119
|
-
baseDelay: 1e3,
|
|
120
|
-
maxDelay: 3e4,
|
|
121
|
-
backoffMultiplier: 2,
|
|
122
|
-
jitter: !0,
|
|
123
|
-
retryableErrors: [],
|
|
124
|
-
// Empty means retry all errors by default (except non-retryable)
|
|
125
|
-
nonRetryableErrors: ["ValidationError", "AuthenticationError"],
|
|
126
|
-
...t
|
|
127
|
-
};
|
|
128
|
-
}
|
|
129
|
-
/**
|
|
130
|
-
* Execute function with retry policy
|
|
131
|
-
*/
|
|
132
|
-
async execute(t) {
|
|
133
|
-
let e;
|
|
134
|
-
for (let r = 1; r <= this.config.maxAttempts; r++)
|
|
135
|
-
try {
|
|
136
|
-
return await t();
|
|
137
|
-
} catch (s) {
|
|
138
|
-
if (e = s, !this.shouldRetry(s, r))
|
|
139
|
-
throw s;
|
|
140
|
-
if (r < this.config.maxAttempts) {
|
|
141
|
-
const o = this.calculateDelay(r);
|
|
142
|
-
await this.sleep(o), c.reportError(
|
|
143
|
-
c.createTachUIError(s, {
|
|
144
|
-
category: "network_error",
|
|
145
|
-
severity: "low",
|
|
146
|
-
context: {
|
|
147
|
-
attempt: r,
|
|
148
|
-
nextDelay: o,
|
|
149
|
-
retryPolicy: !0
|
|
150
|
-
}
|
|
151
|
-
})
|
|
152
|
-
);
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
throw e;
|
|
156
|
-
}
|
|
157
|
-
/**
|
|
158
|
-
* Check if error should be retried
|
|
159
|
-
*/
|
|
160
|
-
shouldRetry(t, e) {
|
|
161
|
-
if (e >= this.config.maxAttempts)
|
|
162
|
-
return !1;
|
|
163
|
-
const r = t.constructor.name;
|
|
164
|
-
return this.config.nonRetryableErrors.includes(r) ? !1 : this.config.retryableErrors.length > 0 ? this.config.retryableErrors.includes(r) : !["ValidationError", "AuthenticationError", "AuthorizationError"].includes(r);
|
|
165
|
-
}
|
|
166
|
-
/**
|
|
167
|
-
* Calculate delay for next retry
|
|
168
|
-
*/
|
|
169
|
-
calculateDelay(t) {
|
|
170
|
-
const e = this.config.baseDelay * this.config.backoffMultiplier ** (t - 1);
|
|
171
|
-
let r = Math.min(e, this.config.maxDelay);
|
|
172
|
-
return this.config.jitter && (r = r * (0.5 + Math.random() * 0.5)), Math.floor(r);
|
|
173
|
-
}
|
|
174
|
-
/**
|
|
175
|
-
* Sleep for specified duration
|
|
176
|
-
*/
|
|
177
|
-
sleep(t) {
|
|
178
|
-
return new Promise((e) => setTimeout(e, t));
|
|
179
|
-
}
|
|
180
|
-
/**
|
|
181
|
-
* Get configuration
|
|
182
|
-
*/
|
|
183
|
-
getConfig() {
|
|
184
|
-
return { ...this.config };
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
class h {
|
|
188
|
-
constructor() {
|
|
189
|
-
a(this, "cache", /* @__PURE__ */ new Map());
|
|
190
|
-
}
|
|
191
|
-
/**
|
|
192
|
-
* Execute with fallback
|
|
193
|
-
*/
|
|
194
|
-
async executeWithFallback(t, e) {
|
|
195
|
-
try {
|
|
196
|
-
return e.timeout ? await this.withTimeout(t(), e.timeout) : await t();
|
|
197
|
-
} catch (r) {
|
|
198
|
-
return this.getFallbackValue(e, r);
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
/**
|
|
202
|
-
* Get fallback value
|
|
203
|
-
*/
|
|
204
|
-
async getFallbackValue(t, e) {
|
|
205
|
-
if (t.cache && t.cacheKey) {
|
|
206
|
-
const s = this.getCachedValue(t.cacheKey, t.cacheTimeout || 3e5);
|
|
207
|
-
if (s !== null)
|
|
208
|
-
return s;
|
|
209
|
-
}
|
|
210
|
-
let r;
|
|
211
|
-
if (t.factory)
|
|
212
|
-
r = await t.factory();
|
|
213
|
-
else if (t.value !== void 0)
|
|
214
|
-
r = t.value;
|
|
215
|
-
else
|
|
216
|
-
throw e;
|
|
217
|
-
return t.cache && t.cacheKey && this.setCachedValue(t.cacheKey, r), r;
|
|
218
|
-
}
|
|
219
|
-
/**
|
|
220
|
-
* Execute with timeout
|
|
221
|
-
*/
|
|
222
|
-
withTimeout(t, e) {
|
|
223
|
-
return new Promise((r, s) => {
|
|
224
|
-
const o = setTimeout(() => {
|
|
225
|
-
s(new Error(`Operation timed out after ${e}ms`));
|
|
226
|
-
}, e);
|
|
227
|
-
t.then(r).catch(s).finally(() => clearTimeout(o));
|
|
228
|
-
});
|
|
229
|
-
}
|
|
230
|
-
/**
|
|
231
|
-
* Get cached value
|
|
232
|
-
*/
|
|
233
|
-
getCachedValue(t, e) {
|
|
234
|
-
const r = this.cache.get(t);
|
|
235
|
-
return r ? Date.now() - r.timestamp > e ? (this.cache.delete(t), null) : r.value : null;
|
|
236
|
-
}
|
|
237
|
-
/**
|
|
238
|
-
* Set cached value
|
|
239
|
-
*/
|
|
240
|
-
setCachedValue(t, e) {
|
|
241
|
-
this.cache.set(t, { value: e, timestamp: Date.now() });
|
|
242
|
-
}
|
|
243
|
-
/**
|
|
244
|
-
* Clear cache
|
|
245
|
-
*/
|
|
246
|
-
clearCache() {
|
|
247
|
-
this.cache.clear();
|
|
248
|
-
}
|
|
249
|
-
}
|
|
250
|
-
class m {
|
|
251
|
-
constructor(t, e) {
|
|
252
|
-
a(this, "circuitBreaker"), a(this, "retryPolicy"), a(this, "fallbackManager", new h()), t && (this.circuitBreaker = new n(t)), e && (this.retryPolicy = new u(e));
|
|
253
|
-
}
|
|
254
|
-
/**
|
|
255
|
-
* Execute with all recovery mechanisms
|
|
256
|
-
*/
|
|
257
|
-
async execute(t, e) {
|
|
258
|
-
const r = this.wrapWithRecovery(t);
|
|
259
|
-
return e ? this.fallbackManager.executeWithFallback(r, e) : r();
|
|
260
|
-
}
|
|
261
|
-
/**
|
|
262
|
-
* Wrap function with recovery mechanisms
|
|
263
|
-
*/
|
|
264
|
-
wrapWithRecovery(t) {
|
|
265
|
-
let e = t;
|
|
266
|
-
if (this.retryPolicy) {
|
|
267
|
-
const r = e;
|
|
268
|
-
e = () => this.retryPolicy.execute(r);
|
|
269
|
-
}
|
|
270
|
-
if (this.circuitBreaker) {
|
|
271
|
-
const r = e;
|
|
272
|
-
e = () => this.circuitBreaker.execute(r);
|
|
273
|
-
}
|
|
274
|
-
return e;
|
|
275
|
-
}
|
|
276
|
-
/**
|
|
277
|
-
* Get circuit breaker metrics
|
|
278
|
-
*/
|
|
279
|
-
getCircuitBreakerMetrics() {
|
|
280
|
-
return this.circuitBreaker?.getMetrics();
|
|
281
|
-
}
|
|
282
|
-
/**
|
|
283
|
-
* Get retry policy configuration
|
|
284
|
-
*/
|
|
285
|
-
getRetryPolicyConfig() {
|
|
286
|
-
return this.retryPolicy?.getConfig();
|
|
287
|
-
}
|
|
288
|
-
}
|
|
289
|
-
const E = {
|
|
290
|
-
/**
|
|
291
|
-
* Create a robust function wrapper with all recovery mechanisms
|
|
292
|
-
*/
|
|
293
|
-
createRobustFunction(i, t = {}) {
|
|
294
|
-
const e = new m(t.circuitBreaker, t.retryPolicy);
|
|
295
|
-
return (async (...r) => {
|
|
296
|
-
try {
|
|
297
|
-
return await e.execute(() => i(...r), t.fallback);
|
|
298
|
-
} catch (s) {
|
|
299
|
-
if (t.onError) {
|
|
300
|
-
const o = c.createTachUIError(s, {
|
|
301
|
-
category: "network_error"
|
|
302
|
-
});
|
|
303
|
-
t.onError(o);
|
|
304
|
-
}
|
|
305
|
-
throw s;
|
|
306
|
-
}
|
|
307
|
-
});
|
|
308
|
-
},
|
|
309
|
-
/**
|
|
310
|
-
* Create simple retry wrapper
|
|
311
|
-
*/
|
|
312
|
-
withRetry(i, t = 3, e = 1e3) {
|
|
313
|
-
const r = new u({
|
|
314
|
-
maxAttempts: t,
|
|
315
|
-
baseDelay: e
|
|
316
|
-
});
|
|
317
|
-
return ((...s) => r.execute(() => i(...s)));
|
|
318
|
-
},
|
|
319
|
-
/**
|
|
320
|
-
* Create circuit breaker wrapper
|
|
321
|
-
*/
|
|
322
|
-
withCircuitBreaker(i, t) {
|
|
323
|
-
const e = new n(t);
|
|
324
|
-
return ((...r) => e.execute(() => i(...r)));
|
|
325
|
-
},
|
|
326
|
-
/**
|
|
327
|
-
* Create fallback wrapper
|
|
328
|
-
*/
|
|
329
|
-
withFallback(i, t) {
|
|
330
|
-
const e = new h();
|
|
331
|
-
return ((...r) => e.executeWithFallback(() => i(...r), {
|
|
332
|
-
factory: typeof t == "function" ? t : void 0,
|
|
333
|
-
value: typeof t != "function" ? t : void 0
|
|
334
|
-
}));
|
|
335
|
-
}
|
|
336
|
-
}, T = {
|
|
337
|
-
/**
|
|
338
|
-
* Configuration for network requests
|
|
339
|
-
*/
|
|
340
|
-
network: {
|
|
341
|
-
circuitBreaker: {
|
|
342
|
-
failureThreshold: 5,
|
|
343
|
-
resetTimeout: 6e4,
|
|
344
|
-
monitoringPeriod: 3e5
|
|
345
|
-
},
|
|
346
|
-
retryPolicy: {
|
|
347
|
-
maxAttempts: 3,
|
|
348
|
-
baseDelay: 1e3,
|
|
349
|
-
backoffMultiplier: 2,
|
|
350
|
-
jitter: !0,
|
|
351
|
-
retryableErrors: ["NetworkError", "TimeoutError", "ServiceUnavailable"]
|
|
352
|
-
}
|
|
353
|
-
},
|
|
354
|
-
/**
|
|
355
|
-
* Configuration for component rendering
|
|
356
|
-
*/
|
|
357
|
-
component: {
|
|
358
|
-
retryPolicy: {
|
|
359
|
-
maxAttempts: 2,
|
|
360
|
-
baseDelay: 100,
|
|
361
|
-
backoffMultiplier: 1.5,
|
|
362
|
-
jitter: !1,
|
|
363
|
-
retryableErrors: ["RenderError", "ComponentError"]
|
|
364
|
-
}
|
|
365
|
-
},
|
|
366
|
-
/**
|
|
367
|
-
* Configuration for reactive operations
|
|
368
|
-
*/
|
|
369
|
-
reactive: {
|
|
370
|
-
retryPolicy: {
|
|
371
|
-
maxAttempts: 1,
|
|
372
|
-
baseDelay: 0,
|
|
373
|
-
retryableErrors: []
|
|
374
|
-
}
|
|
375
|
-
}
|
|
376
|
-
};
|
|
377
|
-
export {
|
|
378
|
-
n as CircuitBreaker,
|
|
379
|
-
h as FallbackManager,
|
|
380
|
-
m as RecoveryOrchestrator,
|
|
381
|
-
u as RetryPolicy,
|
|
382
|
-
T as recoveryPresets,
|
|
383
|
-
E as recoveryUtils
|
|
384
|
-
};
|
|
385
|
-
//# sourceMappingURL=error-recovery.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"error-recovery.js","sources":["../../src/runtime/error-recovery.ts"],"sourcesContent":["/**\n * Error Recovery Mechanisms (Phase 3.2.3)\n *\n * Advanced error recovery strategies and retry logic for TachUI.\n * Provides intelligent error handling, circuit breakers, and recovery patterns.\n */\n\nimport { createSignal } from '../reactive'\nimport { globalErrorManager, type TachUIError } from './error-boundary'\n\n/**\n * Circuit breaker states\n */\nexport type CircuitBreakerState = 'closed' | 'open' | 'half-open'\n\n/**\n * Circuit breaker configuration\n */\nexport interface CircuitBreakerConfig {\n failureThreshold: number\n resetTimeout: number\n monitoringPeriod: number\n minimumThroughput: number\n}\n\n/**\n * Retry policy configuration\n */\nexport interface RetryPolicyConfig {\n maxAttempts: number\n baseDelay: number\n maxDelay: number\n backoffMultiplier: number\n jitter: boolean\n retryableErrors: string[]\n nonRetryableErrors: string[]\n}\n\n/**\n * Fallback configuration\n */\nexport interface FallbackConfig<T> {\n value?: T\n factory?: () => T | Promise<T>\n timeout?: number\n cache?: boolean\n cacheKey?: string\n cacheTimeout?: number\n}\n\n/**\n * Circuit breaker implementation\n */\nexport class CircuitBreaker {\n private state: CircuitBreakerState = 'closed'\n private failureCount = 0\n private lastFailureTime = 0\n private successCount = 0\n private requestCount = 0\n private lastRequestTime = 0\n\n private config: CircuitBreakerConfig\n private stateSignal: () => CircuitBreakerState\n private setState: (value: CircuitBreakerState) => void\n\n constructor(config: Partial<CircuitBreakerConfig> = {}) {\n this.config = {\n failureThreshold: 5,\n resetTimeout: 60000, // 1 minute\n monitoringPeriod: 300000, // 5 minutes\n minimumThroughput: 10,\n ...config,\n }\n\n // Initialize reactive state\n const [stateSignal, setState] = createSignal<CircuitBreakerState>('closed')\n this.stateSignal = stateSignal\n this.setState = setState\n }\n\n /**\n * Execute function with circuit breaker protection\n */\n async execute<R>(fn: () => Promise<R>): Promise<R> {\n this.updateRequestCount()\n\n if (this.state === 'open') {\n if (this.shouldAttemptReset()) {\n this.state = 'half-open'\n this.setState('half-open')\n } else {\n throw new Error('Circuit breaker is open')\n }\n }\n\n try {\n const result = await fn()\n this.onSuccess()\n return result\n } catch (error) {\n this.onFailure()\n throw error\n }\n }\n\n /**\n * Handle successful execution\n */\n private onSuccess(): void {\n this.successCount++\n\n if (this.state === 'half-open') {\n this.reset()\n }\n }\n\n /**\n * Handle failed execution\n */\n private onFailure(): void {\n this.failureCount++\n this.lastFailureTime = Date.now()\n\n if (this.shouldTrip()) {\n this.trip()\n }\n }\n\n /**\n * Check if circuit breaker should trip to open state\n */\n private shouldTrip(): boolean {\n return (\n this.failureCount >= this.config.failureThreshold &&\n this.requestCount >= this.config.minimumThroughput\n )\n }\n\n /**\n * Trip circuit breaker to open state\n */\n private trip(): void {\n this.state = 'open'\n this.setState('open')\n\n globalErrorManager.reportError(\n globalErrorManager.createTachUIError(new Error('Circuit breaker tripped'), {\n category: 'component_error',\n severity: 'medium',\n context: {\n failureCount: this.failureCount,\n requestCount: this.requestCount,\n },\n })\n )\n }\n\n /**\n * Check if should attempt reset from open state\n */\n private shouldAttemptReset(): boolean {\n return Date.now() - this.lastFailureTime >= this.config.resetTimeout\n }\n\n /**\n * Reset circuit breaker to closed state\n */\n private reset(): void {\n this.state = 'closed'\n this.failureCount = 0\n this.successCount = 0\n this.setState('closed')\n }\n\n /**\n * Update request count for monitoring period\n */\n private updateRequestCount(): void {\n const now = Date.now()\n\n if (now - this.lastRequestTime > this.config.monitoringPeriod) {\n this.requestCount = 0\n }\n\n this.requestCount++\n this.lastRequestTime = now\n }\n\n /**\n * Get current state\n */\n getState(): CircuitBreakerState {\n return this.state\n }\n\n /**\n * Get state signal\n */\n getStateSignal(): () => CircuitBreakerState {\n return this.stateSignal\n }\n\n /**\n * Get metrics\n */\n getMetrics(): {\n state: CircuitBreakerState\n failureCount: number\n successCount: number\n requestCount: number\n failureRate: number\n } {\n return {\n state: this.state,\n failureCount: this.failureCount,\n successCount: this.successCount,\n requestCount: this.requestCount,\n failureRate: this.requestCount > 0 ? this.failureCount / this.requestCount : 0,\n }\n }\n}\n\n/**\n * Retry policy implementation\n */\nexport class RetryPolicy {\n private config: RetryPolicyConfig\n\n constructor(config: Partial<RetryPolicyConfig> = {}) {\n this.config = {\n maxAttempts: 3,\n baseDelay: 1000,\n maxDelay: 30000,\n backoffMultiplier: 2,\n jitter: true,\n retryableErrors: [], // Empty means retry all errors by default (except non-retryable)\n nonRetryableErrors: ['ValidationError', 'AuthenticationError'],\n ...config,\n }\n }\n\n /**\n * Execute function with retry policy\n */\n async execute<T>(fn: () => Promise<T>): Promise<T> {\n let lastError: Error\n\n for (let attempt = 1; attempt <= this.config.maxAttempts; attempt++) {\n try {\n return await fn()\n } catch (error) {\n lastError = error as Error\n\n if (!this.shouldRetry(error as Error, attempt)) {\n throw error\n }\n\n if (attempt < this.config.maxAttempts) {\n const delay = this.calculateDelay(attempt)\n await this.sleep(delay)\n\n // Report retry attempt\n globalErrorManager.reportError(\n globalErrorManager.createTachUIError(error as Error, {\n category: 'network_error',\n severity: 'low',\n context: {\n attempt,\n nextDelay: delay,\n retryPolicy: true,\n },\n })\n )\n }\n }\n }\n\n throw lastError!\n }\n\n /**\n * Check if error should be retried\n */\n private shouldRetry(error: Error, attempt: number): boolean {\n if (attempt >= this.config.maxAttempts) {\n return false\n }\n\n const errorName = error.constructor.name\n\n // Check non-retryable errors first\n if (this.config.nonRetryableErrors.includes(errorName)) {\n return false\n }\n\n // Check retryable errors - if empty, allow retries by default\n if (this.config.retryableErrors.length > 0) {\n return this.config.retryableErrors.includes(errorName)\n }\n\n // Default: retry most errors except validation/auth\n return !['ValidationError', 'AuthenticationError', 'AuthorizationError'].includes(errorName)\n }\n\n /**\n * Calculate delay for next retry\n */\n private calculateDelay(attempt: number): number {\n const exponentialDelay = this.config.baseDelay * this.config.backoffMultiplier ** (attempt - 1)\n let delay = Math.min(exponentialDelay, this.config.maxDelay)\n\n // Add jitter to prevent thundering herd\n if (this.config.jitter) {\n delay = delay * (0.5 + Math.random() * 0.5)\n }\n\n return Math.floor(delay)\n }\n\n /**\n * Sleep for specified duration\n */\n private sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms))\n }\n\n /**\n * Get configuration\n */\n getConfig(): RetryPolicyConfig {\n return { ...this.config }\n }\n}\n\n/**\n * Fallback manager\n */\nexport class FallbackManager<T> {\n private cache = new Map<string, { value: T; timestamp: number }>()\n\n /**\n * Execute with fallback\n */\n async executeWithFallback<R>(\n fn: () => Promise<R>,\n fallbackConfig: FallbackConfig<R>\n ): Promise<R> {\n try {\n // Try with timeout if specified\n if (fallbackConfig.timeout) {\n return await this.withTimeout(fn(), fallbackConfig.timeout)\n } else {\n return await fn()\n }\n } catch (error) {\n return this.getFallbackValue(fallbackConfig, error as Error)\n }\n }\n\n /**\n * Get fallback value\n */\n private async getFallbackValue<R>(config: FallbackConfig<R>, error: Error): Promise<R> {\n // Check cache first\n if (config.cache && config.cacheKey) {\n const cached = this.getCachedValue<R>(config.cacheKey, config.cacheTimeout || 300000)\n if (cached !== null) {\n return cached\n }\n }\n\n let fallbackValue: R\n\n // Get fallback value\n if (config.factory) {\n fallbackValue = await config.factory()\n } else if (config.value !== undefined) {\n fallbackValue = config.value\n } else {\n throw error // No fallback available\n }\n\n // Cache the fallback value\n if (config.cache && config.cacheKey) {\n this.setCachedValue(config.cacheKey, fallbackValue)\n }\n\n return fallbackValue\n }\n\n /**\n * Execute with timeout\n */\n private withTimeout<R>(promise: Promise<R>, timeout: number): Promise<R> {\n return new Promise((resolve, reject) => {\n const timer = setTimeout(() => {\n reject(new Error(`Operation timed out after ${timeout}ms`))\n }, timeout)\n\n promise\n .then(resolve)\n .catch(reject)\n .finally(() => clearTimeout(timer))\n })\n }\n\n /**\n * Get cached value\n */\n private getCachedValue<R>(key: string, maxAge: number): R | null {\n const cached = this.cache.get(key)\n if (!cached) return null\n\n if (Date.now() - cached.timestamp > maxAge) {\n this.cache.delete(key)\n return null\n }\n\n return cached.value as unknown as R\n }\n\n /**\n * Set cached value\n */\n private setCachedValue<R>(key: string, value: R): void {\n this.cache.set(key, { value: value as any, timestamp: Date.now() })\n }\n\n /**\n * Clear cache\n */\n clearCache(): void {\n this.cache.clear()\n }\n}\n\n/**\n * Composite recovery strategy\n */\nexport class RecoveryOrchestrator {\n private circuitBreaker?: CircuitBreaker\n private retryPolicy?: RetryPolicy\n private fallbackManager = new FallbackManager()\n\n constructor(\n circuitBreakerConfig?: Partial<CircuitBreakerConfig>,\n retryPolicyConfig?: Partial<RetryPolicyConfig>\n ) {\n if (circuitBreakerConfig) {\n this.circuitBreaker = new CircuitBreaker(circuitBreakerConfig)\n }\n\n if (retryPolicyConfig) {\n this.retryPolicy = new RetryPolicy(retryPolicyConfig)\n }\n }\n\n /**\n * Execute with all recovery mechanisms\n */\n async execute<T>(fn: () => Promise<T>, fallbackConfig?: FallbackConfig<T>): Promise<T> {\n const wrappedFn = this.wrapWithRecovery(fn)\n\n if (fallbackConfig) {\n return this.fallbackManager.executeWithFallback(wrappedFn, fallbackConfig)\n } else {\n return wrappedFn()\n }\n }\n\n /**\n * Wrap function with recovery mechanisms\n */\n private wrapWithRecovery<T>(fn: () => Promise<T>): () => Promise<T> {\n let wrappedFn = fn\n\n // Apply retry policy\n if (this.retryPolicy) {\n const retryFn = wrappedFn\n wrappedFn = () => this.retryPolicy!.execute(retryFn)\n }\n\n // Apply circuit breaker\n if (this.circuitBreaker) {\n const circuitFn = wrappedFn\n wrappedFn = () => this.circuitBreaker!.execute(circuitFn)\n }\n\n return wrappedFn\n }\n\n /**\n * Get circuit breaker metrics\n */\n getCircuitBreakerMetrics() {\n return this.circuitBreaker?.getMetrics()\n }\n\n /**\n * Get retry policy configuration\n */\n getRetryPolicyConfig() {\n return this.retryPolicy?.getConfig()\n }\n}\n\n/**\n * Error recovery utilities\n */\nexport const recoveryUtils = {\n /**\n * Create a robust function wrapper with all recovery mechanisms\n */\n createRobustFunction<T extends (...args: any[]) => Promise<any>>(\n fn: T,\n options: {\n circuitBreaker?: Partial<CircuitBreakerConfig>\n retryPolicy?: Partial<RetryPolicyConfig>\n fallback?: FallbackConfig<Awaited<ReturnType<T>>>\n onError?: (error: TachUIError) => void\n } = {}\n ): T {\n const orchestrator = new RecoveryOrchestrator(options.circuitBreaker, options.retryPolicy)\n\n return (async (...args: Parameters<T>): Promise<Awaited<ReturnType<T>>> => {\n try {\n return await orchestrator.execute(() => fn(...args), options.fallback)\n } catch (error) {\n if (options.onError) {\n const tachUIError = globalErrorManager.createTachUIError(error as Error, {\n category: 'network_error',\n })\n options.onError(tachUIError)\n }\n throw error\n }\n }) as T\n },\n\n /**\n * Create simple retry wrapper\n */\n withRetry<T extends (...args: any[]) => Promise<any>>(\n fn: T,\n maxAttempts: number = 3,\n baseDelay: number = 1000\n ): T {\n const retryPolicy = new RetryPolicy({\n maxAttempts,\n baseDelay,\n })\n\n return ((...args: Parameters<T>): Promise<Awaited<ReturnType<T>>> => {\n return retryPolicy.execute(() => fn(...args))\n }) as T\n },\n\n /**\n * Create circuit breaker wrapper\n */\n withCircuitBreaker<T extends (...args: any[]) => Promise<any>>(\n fn: T,\n config?: Partial<CircuitBreakerConfig>\n ): T {\n const circuitBreaker = new CircuitBreaker(config)\n\n return ((...args: Parameters<T>): Promise<Awaited<ReturnType<T>>> => {\n return circuitBreaker.execute(() => fn(...args))\n }) as T\n },\n\n /**\n * Create fallback wrapper\n */\n withFallback<T extends (...args: any[]) => Promise<any>>(\n fn: T,\n fallbackValue: Awaited<ReturnType<T>> | (() => Awaited<ReturnType<T>>)\n ): T {\n const fallbackManager = new FallbackManager()\n\n return ((...args: Parameters<T>): Promise<Awaited<ReturnType<T>>> => {\n return fallbackManager.executeWithFallback(() => fn(...args), {\n factory:\n typeof fallbackValue === 'function'\n ? (fallbackValue as () => Awaited<ReturnType<T>>)\n : undefined,\n value: typeof fallbackValue !== 'function' ? fallbackValue : undefined,\n })\n }) as T\n },\n}\n\n/**\n * Global recovery configurations\n */\nexport const recoveryPresets = {\n /**\n * Configuration for network requests\n */\n network: {\n circuitBreaker: {\n failureThreshold: 5,\n resetTimeout: 60000,\n monitoringPeriod: 300000,\n },\n retryPolicy: {\n maxAttempts: 3,\n baseDelay: 1000,\n backoffMultiplier: 2,\n jitter: true,\n retryableErrors: ['NetworkError', 'TimeoutError', 'ServiceUnavailable'],\n },\n },\n\n /**\n * Configuration for component rendering\n */\n component: {\n retryPolicy: {\n maxAttempts: 2,\n baseDelay: 100,\n backoffMultiplier: 1.5,\n jitter: false,\n retryableErrors: ['RenderError', 'ComponentError'],\n },\n },\n\n /**\n * Configuration for reactive operations\n */\n reactive: {\n retryPolicy: {\n maxAttempts: 1,\n baseDelay: 0,\n retryableErrors: [],\n },\n },\n}\n"],"names":["CircuitBreaker","config","__publicField","stateSignal","setState","createSignal","fn","result","error","globalErrorManager","now","RetryPolicy","lastError","attempt","delay","errorName","exponentialDelay","ms","resolve","FallbackManager","fallbackConfig","cached","fallbackValue","promise","timeout","reject","timer","key","maxAge","value","RecoveryOrchestrator","circuitBreakerConfig","retryPolicyConfig","wrappedFn","retryFn","circuitFn","recoveryUtils","options","orchestrator","args","tachUIError","maxAttempts","baseDelay","retryPolicy","circuitBreaker","fallbackManager","recoveryPresets"],"mappings":"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"}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("../reactive/cleanup.cjs");require("../reactive/unified-scheduler.cjs");const p=require("../reactive/signal.cjs");require("../reactive/scheduler.cjs");require("../reactive/theme.cjs");const m=require("./error-boundary.cjs");var S=Object.defineProperty,w=(n,e,t)=>e in n?S(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,a=(n,e,t)=>w(n,typeof e!="symbol"?e+"":e,t);class d{constructor(e={}){a(this,"entries",[]),a(this,"config"),a(this,"sessionId"),a(this,"userId"),a(this,"entriesSignal"),a(this,"setEntries"),this.config={enabled:!0,logLevel:"info",batchSize:50,batchTimeout:3e4,aggregationWindow:3e5,maxRetries:3,destinations:[],enableContextCapture:!0,enableStackTrace:!0,enableUserTracking:!1,enableSessionTracking:!0,sensitiveKeys:["password","token","apiKey","secret"],enableCompression:!1,...e};const[t,s]=p.createSignal([]);this.entriesSignal=t,this.setEntries=s,this.sessionId=this.generateSessionId(),this.setupBatchProcessing()}debug(e,t){this.log("debug",e,t)}info(e,t){this.log("info",e,t)}warn(e,t){this.log("warn",e,t)}error(e,t){this.log("error",e,t)}fatal(e,t){this.log("fatal",e,t)}log(e,t,s){if(!this.config.enabled||!this.shouldLog(e))return;const o={id:this.generateId(),timestamp:Date.now(),level:e,message:t,context:this.sanitizeContext(s),userAgent:typeof window<"u"?window.navigator.userAgent:void 0,url:typeof window<"u"?window.location.href:void 0,userId:this.userId,sessionId:this.sessionId,stack:this.config.enableStackTrace?new Error().stack:void 0};this.addEntry(o),typeof console<"u"&&(console[e==="fatal"?"error":e]||console.log)(`[${e.toUpperCase()}] ${t}`,s||"")}shouldLog(e){const t=["debug","info","warn","error","fatal"],s=t.indexOf(this.config.logLevel);return t.indexOf(e)>=s}addEntry(e){this.entries.push(e),this.setEntries([...this.entries]),this.entries.length>1e3&&(this.entries=this.entries.slice(-500),this.setEntries([...this.entries]))}sanitizeContext(e){if(!e||!this.config.enableContextCapture)return;const t={...e};for(const s of this.config.sensitiveKeys)s in t&&(t[s]="[REDACTED]");return t}setupBatchProcessing(){setInterval(()=>{this.flushBatch()},this.config.batchTimeout)}async flushBatch(){if(this.entries.length===0)return;const e=this.entries.splice(0,this.config.batchSize);for(const t of this.config.destinations)if(t.isEnabled())try{await this.sendWithRetry(t,e)}catch(s){console.error(`Failed to send logs to ${t.name}:`,s)}}async sendWithRetry(e,t){let s;for(let o=1;o<=this.config.maxRetries;o++)try{await e.send(t);return}catch(r){s=r,o<this.config.maxRetries&&await this.sleep(2**o*1e3)}throw s}sleep(e){return new Promise(t=>setTimeout(t,e))}generateId(){return`log_${Date.now()}_${Math.random().toString(36).substr(2,9)}`}generateSessionId(){return`session_${Date.now()}_${Math.random().toString(36).substr(2,9)}`}setUserId(e){this.config.enableUserTracking&&(this.userId=e)}getEntries(){return[...this.entries]}getEntriesSignal(){return this.entriesSignal}addDestination(e){this.config.destinations.push(e)}removeDestination(e){this.config.destinations=this.config.destinations.filter(t=>t.name!==e)}clear(){this.entries.length=0,this.setEntries([])}}class b{constructor(e={}){a(this,"aggregations",new Map),a(this,"config"),a(this,"aggregationsSignal"),a(this,"setAggregations"),this.config={enabled:!0,logLevel:"error",batchSize:10,batchTimeout:6e4,aggregationWindow:3e5,maxRetries:3,destinations:[],enableContextCapture:!0,enableStackTrace:!0,enableUserTracking:!1,enableSessionTracking:!0,sensitiveKeys:[],enableCompression:!0,...e};const[t,s]=p.createSignal([]);this.aggregationsSignal=t,this.setAggregations=s,this.setupCleanup()}aggregateError(e){const t=this.generateFingerprint(e),s=this.aggregations.get(t);if(s)s.count++,s.lastSeen=e.timestamp,s.samples.push(e),s.samples.length>5&&(s.samples=s.samples.slice(-5)),e.componentId&&!s.affectedComponents.includes(e.componentId)&&s.affectedComponents.push(e.componentId);else{const o={id:t,message:e.message,category:e.category,severity:e.severity,count:1,firstSeen:e.timestamp,lastSeen:e.timestamp,affectedComponents:e.componentId?[e.componentId]:[],samples:[e],fingerprint:t};this.aggregations.set(t,o)}this.setAggregations(Array.from(this.aggregations.values()))}generateFingerprint(e){return[e.category,e.message.replace(/\d+/g,"N"),e.componentName||"unknown"].join("|")}setupCleanup(){setInterval(()=>{this.cleanupOldAggregations()},this.config.aggregationWindow)}cleanupOldAggregations(){const e=Date.now()-this.config.aggregationWindow;for(const[t,s]of this.aggregations)s.lastSeen<e&&this.aggregations.delete(t);this.setAggregations(Array.from(this.aggregations.values()))}getAggregations(){return Array.from(this.aggregations.values())}getAggregationsSignal(){return this.aggregationsSignal}getTopErrors(e=10){return Array.from(this.aggregations.values()).sort((t,s)=>s.count-t.count).slice(0,e)}clear(){this.aggregations.clear(),this.setAggregations([])}}const g={console:{name:"console",async send(n){console.group("TachUI Report"),n.forEach(e=>{"level"in e?console.log(`[${e.level}] ${e.message}`,e.context||""):console.log(`Error: ${e.message} (${e.count} times)`)}),console.groupEnd()},isEnabled(){return typeof console<"u"}},localStorage:{name:"localStorage",async send(n){try{const e="level"in n[0]?"tachui_logs":"tachui_error_aggregations",s=[...JSON.parse(localStorage.getItem(e)||"[]"),...n];s.length>100&&s.splice(0,s.length-100),localStorage.setItem(e,JSON.stringify(s))}catch(e){console.error("Failed to save to localStorage:",e)}},isEnabled(){return typeof localStorage<"u"}},createHttpDestination(n,e){return{name:"http",async send(t){const s={"Content-Type":"application/json"};e&&(s.Authorization=`Bearer ${e}`);const o=await fetch(n,{method:"POST",headers:s,body:JSON.stringify({type:"level"in t[0]?"logs":"error_aggregations",data:t,timestamp:Date.now()})});if(!o.ok)throw new Error(`HTTP ${o.status}: ${o.statusText}`)},isEnabled(){return typeof fetch<"u"}}},createWebhookDestination(n,e={}){const t=o=>({blocks:o.slice(0,5).map(i=>"level"in i?{type:"section",text:{type:"mrkdwn",text:`*${i.level.toUpperCase()}*: ${i.message}`}}:{type:"section",text:{type:"mrkdwn",text:`*Error*: ${i.message} (${i.count} occurrences)`}})}),s=o=>({embeds:[{title:"TachUI Report",description:o.slice(0,5).map(i=>"level"in i?`**${i.level.toUpperCase()}**: ${i.message}`:`**Error**: ${i.message} (${i.count} times)`).join(`
|
|
2
|
-
`),color:16711680}]});return{name:"webhook",async send(o){const r=e.onlyErrors?o.filter(l=>"level"in l&&["error","fatal"].includes(l.level)||"count"in l):o;if(r.length===0)return;let i;switch(e.format){case"slack":i=t(r);break;case"discord":i=s(r);break;default:i={data:r}}const f=await fetch(n,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(i)});if(!f.ok)throw new Error(`Webhook failed: ${f.status}`)},isEnabled(){return typeof fetch<"u"}}}},h=new d({logLevel:"info",destinations:[g.console]}),u=new b;function c(n={}){m.globalErrorManager.addHandler(e=>{u.aggregateError(e),h.error(e.message,{category:e.category,severity:e.severity,componentId:e.componentId,componentName:e.componentName,context:e.context})})}const v={setupDevelopment(){c({destinations:[g.console,g.localStorage]})},setupProduction(n){const e=[];n.endpoint&&e.push(g.createHttpDestination(n.endpoint,n.apiKey)),n.webhookUrl&&e.push(g.createWebhookDestination(n.webhookUrl,{format:"slack",onlyErrors:!0})),c({logLevel:n.logLevel||"warn"})},createLogger(n,e){const t=new d(e),s=t.log.bind(t);return t.log=(o,r,i)=>{s(o,`[${n}] ${r}`,i)},t},getErrorReport(){return{logs:h.getEntries(),aggregations:u.getAggregations(),statistics:m.globalErrorManager.getStatistics()}}};exports.ErrorAggregator=b;exports.StructuredLogger=d;exports.globalErrorAggregator=u;exports.globalLogger=h;exports.reportDestinations=g;exports.reportingUtils=v;exports.setupErrorReporting=c;
|
|
3
|
-
//# sourceMappingURL=error-reporting.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"error-reporting.cjs","sources":["../../src/runtime/error-reporting.ts"],"sourcesContent":["/**\n * Error Reporting and Logging System (Phase 3.2.3)\n *\n * Advanced error reporting, logging, and analytics for TachUI.\n * Provides structured logging, error aggregation, and reporting pipelines.\n */\n\nimport { createSignal } from '../reactive'\nimport {\n type ErrorCategory,\n type ErrorSeverity,\n globalErrorManager,\n type TachUIError,\n} from './error-boundary'\n\n/**\n * Log levels\n */\nexport type LogLevel = 'debug' | 'info' | 'warn' | 'error' | 'fatal'\n\n/**\n * Log entry structure\n */\nexport interface LogEntry {\n id: string\n timestamp: number\n level: LogLevel\n message: string\n category?: string\n componentId?: string\n componentName?: string\n context?: Record<string, any>\n stack?: string\n userAgent?: string\n url?: string\n userId?: string\n sessionId?: string\n tags?: string[]\n}\n\n/**\n * Error aggregation data\n */\nexport interface ErrorAggregation {\n id: string\n message: string\n category: ErrorCategory\n severity: ErrorSeverity\n count: number\n firstSeen: number\n lastSeen: number\n affectedComponents: string[]\n samples: TachUIError[]\n fingerprint: string\n}\n\n/**\n * Logger interface\n */\nexport interface Logger {\n debug(message: string, context?: Record<string, any>): void\n info(message: string, context?: Record<string, any>): void\n warn(message: string, context?: Record<string, any>): void\n error(message: string, context?: Record<string, any>): void\n fatal(message: string, context?: Record<string, any>): void\n log(level: LogLevel, message: string, context?: Record<string, any>): void\n}\n\n/**\n * Report destination interface\n */\nexport interface ReportDestination {\n name: string\n send(data: LogEntry[] | ErrorAggregation[]): Promise<void>\n isEnabled(): boolean\n}\n\n/**\n * Reporting configuration\n */\nexport interface ReportingConfig {\n enabled: boolean\n logLevel: LogLevel\n batchSize: number\n batchTimeout: number\n aggregationWindow: number\n maxRetries: number\n destinations: ReportDestination[]\n enableContextCapture: boolean\n enableStackTrace: boolean\n enableUserTracking: boolean\n enableSessionTracking: boolean\n sensitiveKeys: string[]\n enableCompression: boolean\n}\n\n/**\n * Structured logger implementation\n */\nexport class StructuredLogger implements Logger {\n private entries: LogEntry[] = []\n private config: ReportingConfig\n private sessionId: string\n private userId?: string\n\n // Reactive state\n private entriesSignal: () => LogEntry[]\n private setEntries: (value: LogEntry[]) => void\n\n constructor(config: Partial<ReportingConfig> = {}) {\n this.config = {\n enabled: true,\n logLevel: 'info',\n batchSize: 50,\n batchTimeout: 30000, // 30 seconds\n aggregationWindow: 300000, // 5 minutes\n maxRetries: 3,\n destinations: [],\n enableContextCapture: true,\n enableStackTrace: true,\n enableUserTracking: false,\n enableSessionTracking: true,\n sensitiveKeys: ['password', 'token', 'apiKey', 'secret'],\n enableCompression: false,\n ...config,\n }\n\n // Initialize reactive state\n const [entriesSignal, setEntries] = createSignal<LogEntry[]>([])\n this.entriesSignal = entriesSignal\n this.setEntries = setEntries\n\n this.sessionId = this.generateSessionId()\n this.setupBatchProcessing()\n }\n\n /**\n * Debug level logging\n */\n debug(message: string, context?: Record<string, any>): void {\n this.log('debug', message, context)\n }\n\n /**\n * Info level logging\n */\n info(message: string, context?: Record<string, any>): void {\n this.log('info', message, context)\n }\n\n /**\n * Warning level logging\n */\n warn(message: string, context?: Record<string, any>): void {\n this.log('warn', message, context)\n }\n\n /**\n * Error level logging\n */\n error(message: string, context?: Record<string, any>): void {\n this.log('error', message, context)\n }\n\n /**\n * Fatal level logging\n */\n fatal(message: string, context?: Record<string, any>): void {\n this.log('fatal', message, context)\n }\n\n /**\n * Generic logging method\n */\n log(level: LogLevel, message: string, context?: Record<string, any>): void {\n if (!this.config.enabled || !this.shouldLog(level)) {\n return\n }\n\n const entry: LogEntry = {\n id: this.generateId(),\n timestamp: Date.now(),\n level,\n message,\n context: this.sanitizeContext(context),\n userAgent: typeof window !== 'undefined' ? window.navigator.userAgent : undefined,\n url: typeof window !== 'undefined' ? window.location.href : undefined,\n userId: this.userId,\n sessionId: this.sessionId,\n stack: this.config.enableStackTrace ? new Error().stack : undefined,\n }\n\n this.addEntry(entry)\n\n // Console logging in development\n if (typeof console !== 'undefined') {\n const consoleLevel = level === 'fatal' ? 'error' : level\n const consoleFn = (console as any)[consoleLevel] || console.log\n consoleFn(`[${level.toUpperCase()}] ${message}`, context || '')\n }\n }\n\n /**\n * Check if should log at given level\n */\n private shouldLog(level: LogLevel): boolean {\n const levels: LogLevel[] = ['debug', 'info', 'warn', 'error', 'fatal']\n const currentLevelIndex = levels.indexOf(this.config.logLevel)\n const requestedLevelIndex = levels.indexOf(level)\n\n return requestedLevelIndex >= currentLevelIndex\n }\n\n /**\n * Add log entry\n */\n private addEntry(entry: LogEntry): void {\n this.entries.push(entry)\n this.setEntries([...this.entries])\n\n // Limit entries array size\n if (this.entries.length > 1000) {\n this.entries = this.entries.slice(-500)\n this.setEntries([...this.entries])\n }\n }\n\n /**\n * Sanitize context to remove sensitive data\n */\n private sanitizeContext(context?: Record<string, any>): Record<string, any> | undefined {\n if (!context || !this.config.enableContextCapture) return undefined\n\n const sanitized = { ...context }\n\n for (const key of this.config.sensitiveKeys) {\n if (key in sanitized) {\n sanitized[key] = '[REDACTED]'\n }\n }\n\n return sanitized\n }\n\n /**\n * Setup batch processing\n */\n private setupBatchProcessing(): void {\n setInterval(() => {\n this.flushBatch()\n }, this.config.batchTimeout)\n }\n\n /**\n * Flush current batch of log entries\n */\n private async flushBatch(): Promise<void> {\n if (this.entries.length === 0) return\n\n const batch = this.entries.splice(0, this.config.batchSize)\n\n for (const destination of this.config.destinations) {\n if (destination.isEnabled()) {\n try {\n await this.sendWithRetry(destination, batch)\n } catch (error) {\n console.error(`Failed to send logs to ${destination.name}:`, error)\n }\n }\n }\n }\n\n /**\n * Send data with retry logic\n */\n private async sendWithRetry(destination: ReportDestination, data: LogEntry[]): Promise<void> {\n let lastError: Error\n\n for (let attempt = 1; attempt <= this.config.maxRetries; attempt++) {\n try {\n await destination.send(data)\n return\n } catch (error) {\n lastError = error as Error\n\n if (attempt < this.config.maxRetries) {\n await this.sleep(2 ** attempt * 1000) // Exponential backoff\n }\n }\n }\n\n throw lastError!\n }\n\n /**\n * Sleep for specified duration\n */\n private sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms))\n }\n\n /**\n * Generate unique ID\n */\n private generateId(): string {\n return `log_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`\n }\n\n /**\n * Generate session ID\n */\n private generateSessionId(): string {\n return `session_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`\n }\n\n /**\n * Set user ID for tracking\n */\n setUserId(userId: string): void {\n if (this.config.enableUserTracking) {\n this.userId = userId\n }\n }\n\n /**\n * Get log entries\n */\n getEntries(): LogEntry[] {\n return [...this.entries]\n }\n\n /**\n * Get entries signal\n */\n getEntriesSignal(): () => LogEntry[] {\n return this.entriesSignal\n }\n\n /**\n * Add destination\n */\n addDestination(destination: ReportDestination): void {\n this.config.destinations.push(destination)\n }\n\n /**\n * Remove destination\n */\n removeDestination(name: string): void {\n this.config.destinations = this.config.destinations.filter((d) => d.name !== name)\n }\n\n /**\n * Clear all log entries\n */\n clear(): void {\n this.entries.length = 0\n this.setEntries([])\n }\n}\n\n/**\n * Error aggregator\n */\nexport class ErrorAggregator {\n private aggregations = new Map<string, ErrorAggregation>()\n private config: ReportingConfig\n\n // Reactive state\n private aggregationsSignal: () => ErrorAggregation[]\n private setAggregations: (value: ErrorAggregation[]) => void\n\n constructor(config: Partial<ReportingConfig> = {}) {\n this.config = {\n enabled: true,\n logLevel: 'error',\n batchSize: 10,\n batchTimeout: 60000, // 1 minute\n aggregationWindow: 300000, // 5 minutes\n maxRetries: 3,\n destinations: [],\n enableContextCapture: true,\n enableStackTrace: true,\n enableUserTracking: false,\n enableSessionTracking: true,\n sensitiveKeys: [],\n enableCompression: true,\n ...config,\n }\n\n // Initialize reactive state\n const [aggregationsSignal, setAggregations] = createSignal<ErrorAggregation[]>([])\n this.aggregationsSignal = aggregationsSignal\n this.setAggregations = setAggregations\n\n this.setupCleanup()\n }\n\n /**\n * Aggregate error\n */\n aggregateError(error: TachUIError): void {\n const fingerprint = this.generateFingerprint(error)\n const existing = this.aggregations.get(fingerprint)\n\n if (existing) {\n existing.count++\n existing.lastSeen = error.timestamp\n existing.samples.push(error)\n\n // Keep only recent samples\n if (existing.samples.length > 5) {\n existing.samples = existing.samples.slice(-5)\n }\n\n if (error.componentId && !existing.affectedComponents.includes(error.componentId)) {\n existing.affectedComponents.push(error.componentId)\n }\n } else {\n const aggregation: ErrorAggregation = {\n id: fingerprint,\n message: error.message,\n category: error.category,\n severity: error.severity,\n count: 1,\n firstSeen: error.timestamp,\n lastSeen: error.timestamp,\n affectedComponents: error.componentId ? [error.componentId] : [],\n samples: [error],\n fingerprint,\n }\n\n this.aggregations.set(fingerprint, aggregation)\n }\n\n this.setAggregations(Array.from(this.aggregations.values()))\n }\n\n /**\n * Generate error fingerprint for grouping\n */\n private generateFingerprint(error: TachUIError): string {\n // Create a consistent hash based on error characteristics\n const components = [\n error.category,\n error.message.replace(/\\d+/g, 'N'), // Replace numbers with N\n error.componentName || 'unknown',\n ]\n\n return components.join('|')\n }\n\n /**\n * Setup cleanup of old aggregations\n */\n private setupCleanup(): void {\n setInterval(() => {\n this.cleanupOldAggregations()\n }, this.config.aggregationWindow)\n }\n\n /**\n * Cleanup old aggregations\n */\n private cleanupOldAggregations(): void {\n const cutoff = Date.now() - this.config.aggregationWindow\n\n for (const [fingerprint, aggregation] of this.aggregations) {\n if (aggregation.lastSeen < cutoff) {\n this.aggregations.delete(fingerprint)\n }\n }\n\n this.setAggregations(Array.from(this.aggregations.values()))\n }\n\n /**\n * Get aggregations\n */\n getAggregations(): ErrorAggregation[] {\n return Array.from(this.aggregations.values())\n }\n\n /**\n * Get aggregations signal\n */\n getAggregationsSignal(): () => ErrorAggregation[] {\n return this.aggregationsSignal\n }\n\n /**\n * Get top errors by count\n */\n getTopErrors(limit: number = 10): ErrorAggregation[] {\n return Array.from(this.aggregations.values())\n .sort((a, b) => b.count - a.count)\n .slice(0, limit)\n }\n\n /**\n * Clear aggregations\n */\n clear(): void {\n this.aggregations.clear()\n this.setAggregations([])\n }\n}\n\n/**\n * Built-in report destinations\n */\nexport const reportDestinations = {\n /**\n * Console destination\n */\n console: {\n name: 'console',\n async send(data: LogEntry[] | ErrorAggregation[]): Promise<void> {\n console.group('TachUI Report')\n data.forEach((entry) => {\n if ('level' in entry) {\n console.log(`[${entry.level}] ${entry.message}`, entry.context || '')\n } else {\n console.log(`Error: ${entry.message} (${entry.count} times)`)\n }\n })\n console.groupEnd()\n },\n isEnabled(): boolean {\n return typeof console !== 'undefined'\n },\n } as ReportDestination,\n\n /**\n * Local storage destination\n */\n localStorage: {\n name: 'localStorage',\n async send(data: LogEntry[] | ErrorAggregation[]): Promise<void> {\n try {\n const key = 'level' in data[0] ? 'tachui_logs' : 'tachui_error_aggregations'\n const existing = JSON.parse(localStorage.getItem(key) || '[]')\n const combined = [...existing, ...data]\n\n // Keep only last 100 entries\n if (combined.length > 100) {\n combined.splice(0, combined.length - 100)\n }\n\n localStorage.setItem(key, JSON.stringify(combined))\n } catch (error) {\n console.error('Failed to save to localStorage:', error)\n }\n },\n isEnabled(): boolean {\n return typeof localStorage !== 'undefined'\n },\n } as ReportDestination,\n\n /**\n * Create HTTP destination\n */\n createHttpDestination(endpoint: string, apiKey?: string): ReportDestination {\n return {\n name: 'http',\n async send(data: LogEntry[] | ErrorAggregation[]): Promise<void> {\n const headers: HeadersInit = {\n 'Content-Type': 'application/json',\n }\n\n if (apiKey) {\n headers.Authorization = `Bearer ${apiKey}`\n }\n\n const response = await fetch(endpoint, {\n method: 'POST',\n headers,\n body: JSON.stringify({\n type: 'level' in data[0] ? 'logs' : 'error_aggregations',\n data,\n timestamp: Date.now(),\n }),\n })\n\n if (!response.ok) {\n throw new Error(`HTTP ${response.status}: ${response.statusText}`)\n }\n },\n isEnabled(): boolean {\n return typeof fetch !== 'undefined'\n },\n }\n },\n\n /**\n * Create webhook destination\n */\n createWebhookDestination(\n webhookUrl: string,\n options: {\n format?: 'slack' | 'discord' | 'teams' | 'generic'\n onlyErrors?: boolean\n } = {}\n ): ReportDestination {\n const formatForSlack = (data: (LogEntry | ErrorAggregation)[]): any => {\n const blocks = data.slice(0, 5).map((entry) => {\n if ('level' in entry) {\n return {\n type: 'section',\n text: {\n type: 'mrkdwn',\n text: `*${entry.level.toUpperCase()}*: ${entry.message}`,\n },\n }\n } else {\n return {\n type: 'section',\n text: {\n type: 'mrkdwn',\n text: `*Error*: ${entry.message} (${entry.count} occurrences)`,\n },\n }\n }\n })\n\n return { blocks }\n }\n\n const formatForDiscord = (data: (LogEntry | ErrorAggregation)[]): any => {\n const description = data\n .slice(0, 5)\n .map((entry) => {\n if ('level' in entry) {\n return `**${entry.level.toUpperCase()}**: ${entry.message}`\n } else {\n return `**Error**: ${entry.message} (${entry.count} times)`\n }\n })\n .join('\\n')\n\n return {\n embeds: [\n {\n title: 'TachUI Report',\n description,\n color: 0xff0000,\n },\n ],\n }\n }\n\n return {\n name: 'webhook',\n async send(data: LogEntry[] | ErrorAggregation[]): Promise<void> {\n const filteredData = options.onlyErrors\n ? data.filter(\n (entry) =>\n ('level' in entry && ['error', 'fatal'].includes(entry.level)) || 'count' in entry\n )\n : data\n\n if (filteredData.length === 0) return\n\n let payload: any\n\n switch (options.format) {\n case 'slack':\n payload = formatForSlack(filteredData)\n break\n case 'discord':\n payload = formatForDiscord(filteredData)\n break\n default:\n payload = { data: filteredData }\n }\n\n const response = await fetch(webhookUrl, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify(payload),\n })\n\n if (!response.ok) {\n throw new Error(`Webhook failed: ${response.status}`)\n }\n },\n isEnabled(): boolean {\n return typeof fetch !== 'undefined'\n },\n }\n },\n}\n\n/**\n * Global logger instance\n */\nexport const globalLogger = new StructuredLogger({\n logLevel: 'info',\n destinations: [reportDestinations.console],\n})\n\n/**\n * Global error aggregator\n */\nexport const globalErrorAggregator = new ErrorAggregator()\n\n/**\n * Setup error reporting integration\n */\nexport function setupErrorReporting(config: Partial<ReportingConfig> = {}): void {\n // Configure logger by creating a new instance with merged config\n // Note: This assumes globalLogger has a way to get current config or we need to refactor\n // For now, we'll skip the config merge since there's no public API for it\n \n // TODO: Implement config usage once StructuredLogger has a public configure method\n void config // Silence unused parameter warning\n\n // Setup error aggregation\n globalErrorManager.addHandler((error: TachUIError) => {\n globalErrorAggregator.aggregateError(error)\n globalLogger.error(error.message, {\n category: error.category,\n severity: error.severity,\n componentId: error.componentId,\n componentName: error.componentName,\n context: error.context,\n })\n })\n}\n\n/**\n * Reporting utilities\n */\nexport const reportingUtils = {\n /**\n * Setup development reporting\n */\n setupDevelopment(): void {\n setupErrorReporting({\n logLevel: 'debug',\n enableStackTrace: true,\n enableContextCapture: true,\n destinations: [reportDestinations.console, reportDestinations.localStorage],\n })\n },\n\n /**\n * Setup production reporting\n */\n setupProduction(config: {\n endpoint?: string\n apiKey?: string\n webhookUrl?: string\n logLevel?: LogLevel\n }): void {\n const destinations: ReportDestination[] = []\n\n if (config.endpoint) {\n destinations.push(reportDestinations.createHttpDestination(config.endpoint, config.apiKey))\n }\n\n if (config.webhookUrl) {\n destinations.push(\n reportDestinations.createWebhookDestination(config.webhookUrl, {\n format: 'slack',\n onlyErrors: true,\n })\n )\n }\n\n setupErrorReporting({\n logLevel: config.logLevel || 'warn',\n enableStackTrace: false,\n enableContextCapture: false,\n destinations,\n })\n },\n\n /**\n * Create custom logger\n */\n createLogger(name: string, config?: Partial<ReportingConfig>): Logger {\n const logger = new StructuredLogger(config)\n\n // Wrap methods to include logger name\n const originalLog = logger.log.bind(logger)\n logger.log = (level: LogLevel, message: string, context?: Record<string, any>) => {\n originalLog(level, `[${name}] ${message}`, context)\n }\n\n return logger\n },\n\n /**\n * Get error report\n */\n getErrorReport(): {\n logs: LogEntry[]\n aggregations: ErrorAggregation[]\n statistics: any\n } {\n return {\n logs: globalLogger.getEntries(),\n aggregations: globalErrorAggregator.getAggregations(),\n statistics: globalErrorManager.getStatistics(),\n }\n },\n}\n"],"names":["StructuredLogger","config","__publicField","entriesSignal","setEntries","createSignal","message","context","level","entry","levels","currentLevelIndex","sanitized","key","batch","destination","error","data","lastError","attempt","ms","resolve","userId","name","d","ErrorAggregator","aggregationsSignal","setAggregations","fingerprint","existing","aggregation","cutoff","limit","a","b","reportDestinations","combined","endpoint","apiKey","headers","response","webhookUrl","options","formatForSlack","formatForDiscord","filteredData","payload","globalLogger","globalErrorAggregator","setupErrorReporting","globalErrorManager","reportingUtils","destinations","logger","originalLog"],"mappings":"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"}
|