fuzor 0.3.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +36 -88
- package/dist/boundaries.d.ts +5 -0
- package/dist/boundaries.d.ts.map +1 -0
- package/dist/boundaries.js +5 -0
- package/dist/boundaries.js.map +1 -0
- package/dist/browser.d.ts +4 -0
- package/dist/browser.d.ts.map +1 -0
- package/dist/browser.js +4 -0
- package/dist/browser.js.map +1 -0
- package/dist/build-output.d.ts +18 -0
- package/dist/build-output.d.ts.map +1 -0
- package/dist/build-output.js +91 -0
- package/dist/build-output.js.map +1 -0
- package/dist/cli.js +390 -36
- package/dist/cli.js.map +1 -1
- package/dist/compiler/api-routes.d.ts +14 -0
- package/dist/compiler/api-routes.d.ts.map +1 -0
- package/dist/compiler/api-routes.js +66 -0
- package/dist/compiler/api-routes.js.map +1 -0
- package/dist/compiler/base-links.d.ts +7 -0
- package/dist/compiler/base-links.d.ts.map +1 -0
- package/dist/compiler/base-links.js +40 -0
- package/dist/compiler/base-links.js.map +1 -0
- package/dist/compiler/data-document.d.ts +9 -0
- package/dist/compiler/data-document.d.ts.map +1 -0
- package/dist/compiler/data-document.js +21 -0
- package/dist/compiler/data-document.js.map +1 -0
- package/dist/compiler/docs.d.ts +6 -0
- package/dist/compiler/docs.d.ts.map +1 -0
- package/dist/compiler/docs.js +1131 -0
- package/dist/compiler/docs.js.map +1 -0
- package/dist/compiler/highlight.d.ts +13 -0
- package/dist/compiler/highlight.d.ts.map +1 -0
- package/dist/compiler/highlight.js +44 -0
- package/dist/compiler/highlight.js.map +1 -0
- package/dist/compiler/index.d.ts +132 -4
- package/dist/compiler/index.d.ts.map +1 -1
- package/dist/compiler/index.js +845 -48
- package/dist/compiler/index.js.map +1 -1
- package/dist/compiler/inline-assets.d.ts +6 -0
- package/dist/compiler/inline-assets.d.ts.map +1 -0
- package/dist/compiler/inline-assets.js +61 -0
- package/dist/compiler/inline-assets.js.map +1 -0
- package/dist/compiler/inline-modules.d.ts +7 -0
- package/dist/compiler/inline-modules.d.ts.map +1 -0
- package/dist/compiler/inline-modules.js +77 -0
- package/dist/compiler/inline-modules.js.map +1 -0
- package/dist/compiler/island-modules.d.ts +8 -0
- package/dist/compiler/island-modules.d.ts.map +1 -0
- package/dist/compiler/island-modules.js +42 -0
- package/dist/compiler/island-modules.js.map +1 -0
- package/dist/compiler/islands.d.ts +24 -3
- package/dist/compiler/islands.d.ts.map +1 -1
- package/dist/compiler/islands.js +50 -12
- package/dist/compiler/islands.js.map +1 -1
- package/dist/compiler/links.d.ts +37 -0
- package/dist/compiler/links.d.ts.map +1 -0
- package/dist/compiler/links.js +112 -0
- package/dist/compiler/links.js.map +1 -0
- package/dist/compiler/markdown.d.ts +17 -0
- package/dist/compiler/markdown.d.ts.map +1 -0
- package/dist/compiler/markdown.js +92 -0
- package/dist/compiler/markdown.js.map +1 -0
- package/dist/compiler/metadata.d.ts +37 -0
- package/dist/compiler/metadata.d.ts.map +1 -0
- package/dist/compiler/metadata.js +81 -0
- package/dist/compiler/metadata.js.map +1 -0
- package/dist/compiler/native-scripts.d.ts +13 -0
- package/dist/compiler/native-scripts.d.ts.map +1 -0
- package/dist/compiler/native-scripts.js +137 -0
- package/dist/compiler/native-scripts.js.map +1 -0
- package/dist/compiler/page-scripts.d.ts +36 -0
- package/dist/compiler/page-scripts.d.ts.map +1 -0
- package/dist/compiler/page-scripts.js +158 -0
- package/dist/compiler/page-scripts.js.map +1 -0
- package/dist/compiler/route-policy.d.ts +17 -0
- package/dist/compiler/route-policy.d.ts.map +1 -0
- package/dist/compiler/route-policy.js +68 -0
- package/dist/compiler/route-policy.js.map +1 -0
- package/dist/compiler/search.d.ts +13 -0
- package/dist/compiler/search.d.ts.map +1 -0
- package/dist/compiler/search.js +24 -0
- package/dist/compiler/search.js.map +1 -0
- package/dist/compiler/server-modules.d.ts +3 -0
- package/dist/compiler/server-modules.d.ts.map +1 -0
- package/dist/compiler/server-modules.js +31 -0
- package/dist/compiler/server-modules.js.map +1 -0
- package/dist/compiler/static-analysis.d.ts +20 -0
- package/dist/compiler/static-analysis.d.ts.map +1 -0
- package/dist/compiler/static-analysis.js +130 -0
- package/dist/compiler/static-analysis.js.map +1 -0
- package/dist/create-delegate.d.ts +17 -0
- package/dist/create-delegate.d.ts.map +1 -0
- package/dist/create-delegate.js +48 -0
- package/dist/create-delegate.js.map +1 -0
- package/dist/electron.d.ts +5 -0
- package/dist/electron.d.ts.map +1 -0
- package/dist/electron.js +32 -0
- package/dist/electron.js.map +1 -0
- package/dist/html-escape.d.ts +16 -0
- package/dist/html-escape.d.ts.map +1 -0
- package/dist/html-escape.js +26 -0
- package/dist/html-escape.js.map +1 -0
- package/dist/index.d.ts +6 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -3
- package/dist/index.js.map +1 -1
- package/dist/islands/hydration.d.ts +7 -0
- package/dist/islands/hydration.d.ts.map +1 -0
- package/dist/islands/hydration.js +12 -0
- package/dist/islands/hydration.js.map +1 -0
- package/dist/islands/react.d.ts +9 -2
- package/dist/islands/react.d.ts.map +1 -1
- package/dist/islands/react.js +73 -14
- package/dist/islands/react.js.map +1 -1
- package/dist/islands/solid.d.ts.map +1 -1
- package/dist/islands/solid.js +10 -1
- package/dist/islands/solid.js.map +1 -1
- package/dist/islands/vue.d.ts.map +1 -1
- package/dist/islands/vue.js +15 -3
- package/dist/islands/vue.js.map +1 -1
- package/dist/module-specifiers.d.ts +5 -0
- package/dist/module-specifiers.d.ts.map +1 -0
- package/dist/module-specifiers.js +80 -0
- package/dist/module-specifiers.js.map +1 -0
- package/dist/route-path.d.ts +33 -0
- package/dist/route-path.d.ts.map +1 -0
- package/dist/route-path.js +81 -0
- package/dist/route-path.js.map +1 -0
- package/dist/route-patterns.d.ts +8 -0
- package/dist/route-patterns.d.ts.map +1 -0
- package/dist/route-patterns.js +84 -0
- package/dist/route-patterns.js.map +1 -0
- package/dist/runtime/activation.d.ts +29 -0
- package/dist/runtime/activation.d.ts.map +1 -0
- package/dist/runtime/activation.js +236 -0
- package/dist/runtime/activation.js.map +1 -0
- package/dist/runtime/browser-navigation.d.ts +20 -0
- package/dist/runtime/browser-navigation.d.ts.map +1 -0
- package/dist/runtime/browser-navigation.js +138 -0
- package/dist/runtime/browser-navigation.js.map +1 -0
- package/dist/runtime/browser-support.d.ts +20 -0
- package/dist/runtime/browser-support.d.ts.map +1 -0
- package/dist/runtime/browser-support.js +39 -0
- package/dist/runtime/browser-support.js.map +1 -0
- package/dist/runtime/capacitor.d.ts +43 -0
- package/dist/runtime/capacitor.d.ts.map +1 -0
- package/dist/runtime/capacitor.js +84 -0
- package/dist/runtime/capacitor.js.map +1 -0
- package/dist/runtime/client-routes.d.ts +4 -0
- package/dist/runtime/client-routes.d.ts.map +1 -0
- package/dist/runtime/client-routes.js +3 -0
- package/dist/runtime/client-routes.js.map +1 -0
- package/dist/runtime/coordinated-navigation.d.ts +7 -0
- package/dist/runtime/coordinated-navigation.d.ts.map +1 -0
- package/dist/runtime/coordinated-navigation.js +50 -0
- package/dist/runtime/coordinated-navigation.js.map +1 -0
- package/dist/runtime/coordinator.d.ts +32 -0
- package/dist/runtime/coordinator.d.ts.map +1 -0
- package/dist/runtime/coordinator.js +115 -0
- package/dist/runtime/coordinator.js.map +1 -0
- package/dist/runtime/data.d.ts +25 -0
- package/dist/runtime/data.d.ts.map +1 -0
- package/dist/runtime/data.js +115 -0
- package/dist/runtime/data.js.map +1 -0
- package/dist/runtime/docs-search.d.ts +13 -0
- package/dist/runtime/docs-search.d.ts.map +1 -0
- package/dist/runtime/docs-search.js +205 -0
- package/dist/runtime/docs-search.js.map +1 -0
- package/dist/runtime/docs-ui.d.ts +7 -0
- package/dist/runtime/docs-ui.d.ts.map +1 -0
- package/dist/runtime/docs-ui.js +85 -0
- package/dist/runtime/docs-ui.js.map +1 -0
- package/dist/runtime/document-navigation.d.ts +9 -0
- package/dist/runtime/document-navigation.d.ts.map +1 -0
- package/dist/runtime/document-navigation.js +27 -0
- package/dist/runtime/document-navigation.js.map +1 -0
- package/dist/runtime/dom-renderer.d.ts +36 -0
- package/dist/runtime/dom-renderer.d.ts.map +1 -0
- package/dist/runtime/dom-renderer.js +173 -0
- package/dist/runtime/dom-renderer.js.map +1 -0
- package/dist/runtime/hash-navigation.d.ts +12 -0
- package/dist/runtime/hash-navigation.d.ts.map +1 -0
- package/dist/runtime/hash-navigation.js +26 -0
- package/dist/runtime/hash-navigation.js.map +1 -0
- package/dist/runtime/history-navigation.d.ts +17 -0
- package/dist/runtime/history-navigation.d.ts.map +1 -0
- package/dist/runtime/history-navigation.js +172 -0
- package/dist/runtime/history-navigation.js.map +1 -0
- package/dist/runtime/href.d.ts +16 -0
- package/dist/runtime/href.d.ts.map +1 -0
- package/dist/runtime/href.js +38 -0
- package/dist/runtime/href.js.map +1 -0
- package/dist/runtime/index.d.ts +73 -26
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/index.js +33 -118
- package/dist/runtime/index.js.map +1 -1
- package/dist/runtime/initial-route.d.ts +8 -0
- package/dist/runtime/initial-route.d.ts.map +1 -0
- package/dist/runtime/initial-route.js +72 -0
- package/dist/runtime/initial-route.js.map +1 -0
- package/dist/runtime/islands.d.ts +19 -5
- package/dist/runtime/islands.d.ts.map +1 -1
- package/dist/runtime/islands.js +15 -41
- package/dist/runtime/islands.js.map +1 -1
- package/dist/runtime/loading.d.ts +12 -0
- package/dist/runtime/loading.d.ts.map +1 -0
- package/dist/runtime/loading.js +43 -0
- package/dist/runtime/loading.js.map +1 -0
- package/dist/runtime/memory-navigation.d.ts +16 -0
- package/dist/runtime/memory-navigation.d.ts.map +1 -0
- package/dist/runtime/memory-navigation.js +98 -0
- package/dist/runtime/memory-navigation.js.map +1 -0
- package/dist/runtime/native.d.ts +108 -0
- package/dist/runtime/native.d.ts.map +1 -0
- package/dist/runtime/native.js +378 -0
- package/dist/runtime/native.js.map +1 -0
- package/dist/runtime/navigation-atom.d.ts +21 -0
- package/dist/runtime/navigation-atom.d.ts.map +1 -0
- package/dist/runtime/navigation-atom.js +76 -0
- package/dist/runtime/navigation-atom.js.map +1 -0
- package/dist/runtime/navigation.d.ts +61 -0
- package/dist/runtime/navigation.d.ts.map +1 -0
- package/dist/runtime/navigation.js +11 -0
- package/dist/runtime/navigation.js.map +1 -0
- package/dist/runtime/page-scripts.d.ts +54 -0
- package/dist/runtime/page-scripts.d.ts.map +1 -0
- package/dist/runtime/page-scripts.js +207 -0
- package/dist/runtime/page-scripts.js.map +1 -0
- package/dist/runtime/route-matches.d.ts +17 -0
- package/dist/runtime/route-matches.d.ts.map +1 -0
- package/dist/runtime/route-matches.js +50 -0
- package/dist/runtime/route-matches.js.map +1 -0
- package/dist/runtime/router-embedded.d.ts +28 -0
- package/dist/runtime/router-embedded.d.ts.map +1 -0
- package/dist/runtime/router-embedded.js +12 -0
- package/dist/runtime/router-embedded.js.map +1 -0
- package/dist/runtime/router-navigation-api.d.ts +28 -0
- package/dist/runtime/router-navigation-api.d.ts.map +1 -0
- package/dist/runtime/router-navigation-api.js +13 -0
- package/dist/runtime/router-navigation-api.js.map +1 -0
- package/dist/runtime/router.d.ts +137 -0
- package/dist/runtime/router.d.ts.map +1 -0
- package/dist/runtime/router.js +678 -0
- package/dist/runtime/router.js.map +1 -0
- package/dist/runtime/stale-deployment.d.ts +7 -0
- package/dist/runtime/stale-deployment.d.ts.map +1 -0
- package/dist/runtime/stale-deployment.js +30 -0
- package/dist/runtime/stale-deployment.js.map +1 -0
- package/dist/runtime/user-input.d.ts +25 -0
- package/dist/runtime/user-input.d.ts.map +1 -0
- package/dist/runtime/user-input.js +81 -0
- package/dist/runtime/user-input.js.map +1 -0
- package/dist/runtimes.d.ts +43 -0
- package/dist/runtimes.d.ts.map +1 -0
- package/dist/runtimes.js +152 -0
- package/dist/runtimes.js.map +1 -0
- package/dist/server/node.d.ts +47 -2
- package/dist/server/node.d.ts.map +1 -1
- package/dist/server/node.js +185 -23
- package/dist/server/node.js.map +1 -1
- package/dist/server/static.d.ts +11 -0
- package/dist/server/static.d.ts.map +1 -0
- package/dist/server/static.js +61 -0
- package/dist/server/static.js.map +1 -0
- package/dist/server-api.d.ts +73 -0
- package/dist/server-api.d.ts.map +1 -0
- package/dist/server-api.js +171 -0
- package/dist/server-api.js.map +1 -0
- package/dist/server-components/browser.d.ts +75 -0
- package/dist/server-components/browser.d.ts.map +1 -0
- package/dist/server-components/browser.js +558 -0
- package/dist/server-components/browser.js.map +1 -0
- package/dist/server-components/closures.d.ts +21 -0
- package/dist/server-components/closures.d.ts.map +1 -0
- package/dist/server-components/closures.js +192 -0
- package/dist/server-components/closures.js.map +1 -0
- package/dist/server-components/compiler.d.ts +6 -0
- package/dist/server-components/compiler.d.ts.map +1 -0
- package/dist/server-components/compiler.js +118 -0
- package/dist/server-components/compiler.js.map +1 -0
- package/dist/server-components/environment.d.ts +3 -0
- package/dist/server-components/environment.d.ts.map +1 -0
- package/dist/server-components/environment.js +11 -0
- package/dist/server-components/environment.js.map +1 -0
- package/dist/server-components/navigation.d.ts +10 -0
- package/dist/server-components/navigation.d.ts.map +1 -0
- package/dist/server-components/navigation.js +105 -0
- package/dist/server-components/navigation.js.map +1 -0
- package/dist/server-components/protocol.d.ts +77 -0
- package/dist/server-components/protocol.d.ts.map +1 -0
- package/dist/server-components/protocol.js +110 -0
- package/dist/server-components/protocol.js.map +1 -0
- package/dist/server-components/references.d.ts +22 -0
- package/dist/server-components/references.d.ts.map +1 -0
- package/dist/server-components/references.js +94 -0
- package/dist/server-components/references.js.map +1 -0
- package/dist/server-components/server.d.ts +78 -0
- package/dist/server-components/server.d.ts.map +1 -0
- package/dist/server-components/server.js +278 -0
- package/dist/server-components/server.js.map +1 -0
- package/dist/server-components/stream.d.ts +15 -0
- package/dist/server-components/stream.d.ts.map +1 -0
- package/dist/server-components/stream.js +72 -0
- package/dist/server-components/stream.js.map +1 -0
- package/dist/server-cookies.d.ts +41 -0
- package/dist/server-cookies.d.ts.map +1 -0
- package/dist/server-cookies.js +120 -0
- package/dist/server-cookies.js.map +1 -0
- package/dist/server-data.d.ts +51 -0
- package/dist/server-data.d.ts.map +1 -0
- package/dist/server-data.js +37 -0
- package/dist/server-data.js.map +1 -0
- package/dist/server.d.ts +57 -4
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +244 -13
- package/dist/server.js.map +1 -1
- package/dist/ui/behaviors/accordion.d.ts +14 -0
- package/dist/ui/behaviors/accordion.d.ts.map +1 -0
- package/dist/ui/behaviors/accordion.js +149 -0
- package/dist/ui/behaviors/accordion.js.map +1 -0
- package/dist/ui/behaviors/catalogue.d.ts +63 -0
- package/dist/ui/behaviors/catalogue.d.ts.map +1 -0
- package/dist/ui/behaviors/catalogue.js +284 -0
- package/dist/ui/behaviors/catalogue.js.map +1 -0
- package/dist/ui/behaviors/collapsible.d.ts +26 -0
- package/dist/ui/behaviors/collapsible.d.ts.map +1 -0
- package/dist/ui/behaviors/collapsible.js +145 -0
- package/dist/ui/behaviors/collapsible.js.map +1 -0
- package/dist/ui/behaviors/dialog.d.ts +16 -0
- package/dist/ui/behaviors/dialog.d.ts.map +1 -0
- package/dist/ui/behaviors/dialog.js +225 -0
- package/dist/ui/behaviors/dialog.js.map +1 -0
- package/dist/ui/behaviors/lifecycle.d.ts +15 -0
- package/dist/ui/behaviors/lifecycle.d.ts.map +1 -0
- package/dist/ui/behaviors/lifecycle.js +51 -0
- package/dist/ui/behaviors/lifecycle.js.map +1 -0
- package/dist/ui/behaviors/menu.d.ts +15 -0
- package/dist/ui/behaviors/menu.d.ts.map +1 -0
- package/dist/ui/behaviors/menu.js +162 -0
- package/dist/ui/behaviors/menu.js.map +1 -0
- package/dist/ui/behaviors/ownership.d.ts +7 -0
- package/dist/ui/behaviors/ownership.d.ts.map +1 -0
- package/dist/ui/behaviors/ownership.js +16 -0
- package/dist/ui/behaviors/ownership.js.map +1 -0
- package/dist/ui/behaviors/popover.d.ts +16 -0
- package/dist/ui/behaviors/popover.d.ts.map +1 -0
- package/dist/ui/behaviors/popover.js +90 -0
- package/dist/ui/behaviors/popover.js.map +1 -0
- package/dist/ui/behaviors/select.d.ts +37 -0
- package/dist/ui/behaviors/select.d.ts.map +1 -0
- package/dist/ui/behaviors/select.js +261 -0
- package/dist/ui/behaviors/select.js.map +1 -0
- package/dist/ui/behaviors/switch.d.ts +43 -0
- package/dist/ui/behaviors/switch.d.ts.map +1 -0
- package/dist/ui/behaviors/switch.js +269 -0
- package/dist/ui/behaviors/switch.js.map +1 -0
- package/dist/ui/behaviors/tabs.d.ts +4 -0
- package/dist/ui/behaviors/tabs.d.ts.map +1 -0
- package/dist/ui/behaviors/tabs.js +121 -0
- package/dist/ui/behaviors/tabs.js.map +1 -0
- package/dist/ui/behaviors/toolbar.d.ts +4 -0
- package/dist/ui/behaviors/toolbar.d.ts.map +1 -0
- package/dist/ui/behaviors/toolbar.js +81 -0
- package/dist/ui/behaviors/toolbar.js.map +1 -0
- package/dist/ui/behaviors/tooltip.d.ts +16 -0
- package/dist/ui/behaviors/tooltip.d.ts.map +1 -0
- package/dist/ui/behaviors/tooltip.js +91 -0
- package/dist/ui/behaviors/tooltip.js.map +1 -0
- package/dist/ui/behaviors/types.d.ts +51 -0
- package/dist/ui/behaviors/types.d.ts.map +1 -0
- package/dist/ui/behaviors/types.js +2 -0
- package/dist/ui/behaviors/types.js.map +1 -0
- package/dist/ui/catalogue-loaders.d.ts +4 -0
- package/dist/ui/catalogue-loaders.d.ts.map +1 -0
- package/dist/ui/catalogue-loaders.js +45 -0
- package/dist/ui/catalogue-loaders.js.map +1 -0
- package/dist/ui/catalogue.d.ts +465 -0
- package/dist/ui/catalogue.d.ts.map +1 -0
- package/dist/ui/catalogue.js +1570 -0
- package/dist/ui/catalogue.js.map +1 -0
- package/dist/ui/checkpoints.d.ts +20 -0
- package/dist/ui/checkpoints.d.ts.map +1 -0
- package/dist/ui/checkpoints.js +118 -0
- package/dist/ui/checkpoints.js.map +1 -0
- package/dist/ui/components/accordion/accordion.d.ts +22 -0
- package/dist/ui/components/accordion/accordion.d.ts.map +1 -0
- package/dist/ui/components/accordion/accordion.js +47 -0
- package/dist/ui/components/accordion/accordion.js.map +1 -0
- package/dist/ui/components/accordion/index.d.ts +2 -0
- package/dist/ui/components/accordion/index.d.ts.map +1 -0
- package/dist/ui/components/accordion/index.js +2 -0
- package/dist/ui/components/accordion/index.js.map +1 -0
- package/dist/ui/components/angle-slider/index.d.ts +5 -0
- package/dist/ui/components/angle-slider/index.d.ts.map +1 -0
- package/dist/ui/components/angle-slider/index.js +7 -0
- package/dist/ui/components/angle-slider/index.js.map +1 -0
- package/dist/ui/components/async-list/index.d.ts +5 -0
- package/dist/ui/components/async-list/index.d.ts.map +1 -0
- package/dist/ui/components/async-list/index.js +7 -0
- package/dist/ui/components/async-list/index.js.map +1 -0
- package/dist/ui/components/avatar/index.d.ts +5 -0
- package/dist/ui/components/avatar/index.d.ts.map +1 -0
- package/dist/ui/components/avatar/index.js +7 -0
- package/dist/ui/components/avatar/index.js.map +1 -0
- package/dist/ui/components/badge/badge.d.ts +6 -0
- package/dist/ui/components/badge/badge.d.ts.map +1 -0
- package/dist/ui/components/badge/badge.js +11 -0
- package/dist/ui/components/badge/badge.js.map +1 -0
- package/dist/ui/components/badge/index.d.ts +2 -0
- package/dist/ui/components/badge/index.d.ts.map +1 -0
- package/dist/ui/components/badge/index.js +2 -0
- package/dist/ui/components/badge/index.js.map +1 -0
- package/dist/ui/components/button/button.d.ts +26 -0
- package/dist/ui/components/button/button.d.ts.map +1 -0
- package/dist/ui/components/button/button.js +116 -0
- package/dist/ui/components/button/button.js.map +1 -0
- package/dist/ui/components/button/index.d.ts +2 -0
- package/dist/ui/components/button/index.d.ts.map +1 -0
- package/dist/ui/components/button/index.js +2 -0
- package/dist/ui/components/button/index.js.map +1 -0
- package/dist/ui/components/card/card.d.ts +21 -0
- package/dist/ui/components/card/card.d.ts.map +1 -0
- package/dist/ui/components/card/card.js +41 -0
- package/dist/ui/components/card/card.js.map +1 -0
- package/dist/ui/components/card/index.d.ts +2 -0
- package/dist/ui/components/card/index.d.ts.map +1 -0
- package/dist/ui/components/card/index.js +2 -0
- package/dist/ui/components/card/index.js.map +1 -0
- package/dist/ui/components/carousel/index.d.ts +5 -0
- package/dist/ui/components/carousel/index.d.ts.map +1 -0
- package/dist/ui/components/carousel/index.js +7 -0
- package/dist/ui/components/carousel/index.js.map +1 -0
- package/dist/ui/components/cascade-select/index.d.ts +7 -0
- package/dist/ui/components/cascade-select/index.d.ts.map +1 -0
- package/dist/ui/components/cascade-select/index.js +8 -0
- package/dist/ui/components/cascade-select/index.js.map +1 -0
- package/dist/ui/components/checkbox/index.d.ts +5 -0
- package/dist/ui/components/checkbox/index.d.ts.map +1 -0
- package/dist/ui/components/checkbox/index.js +7 -0
- package/dist/ui/components/checkbox/index.js.map +1 -0
- package/dist/ui/components/clipboard/index.d.ts +5 -0
- package/dist/ui/components/clipboard/index.d.ts.map +1 -0
- package/dist/ui/components/clipboard/index.js +7 -0
- package/dist/ui/components/clipboard/index.js.map +1 -0
- package/dist/ui/components/collapsible/collapsible.d.ts +21 -0
- package/dist/ui/components/collapsible/collapsible.d.ts.map +1 -0
- package/dist/ui/components/collapsible/collapsible.js +39 -0
- package/dist/ui/components/collapsible/collapsible.js.map +1 -0
- package/dist/ui/components/collapsible/index.d.ts +2 -0
- package/dist/ui/components/collapsible/index.d.ts.map +1 -0
- package/dist/ui/components/collapsible/index.js +2 -0
- package/dist/ui/components/collapsible/index.js.map +1 -0
- package/dist/ui/components/color-picker/index.d.ts +7 -0
- package/dist/ui/components/color-picker/index.d.ts.map +1 -0
- package/dist/ui/components/color-picker/index.js +8 -0
- package/dist/ui/components/color-picker/index.js.map +1 -0
- package/dist/ui/components/combobox/index.d.ts +7 -0
- package/dist/ui/components/combobox/index.d.ts.map +1 -0
- package/dist/ui/components/combobox/index.js +8 -0
- package/dist/ui/components/combobox/index.js.map +1 -0
- package/dist/ui/components/date-input/index.d.ts +7 -0
- package/dist/ui/components/date-input/index.d.ts.map +1 -0
- package/dist/ui/components/date-input/index.js +8 -0
- package/dist/ui/components/date-input/index.js.map +1 -0
- package/dist/ui/components/date-picker/index.d.ts +7 -0
- package/dist/ui/components/date-picker/index.d.ts.map +1 -0
- package/dist/ui/components/date-picker/index.js +8 -0
- package/dist/ui/components/date-picker/index.js.map +1 -0
- package/dist/ui/components/dialog/dialog.d.ts +44 -0
- package/dist/ui/components/dialog/dialog.d.ts.map +1 -0
- package/dist/ui/components/dialog/dialog.js +105 -0
- package/dist/ui/components/dialog/dialog.js.map +1 -0
- package/dist/ui/components/dialog/index.d.ts +2 -0
- package/dist/ui/components/dialog/index.d.ts.map +1 -0
- package/dist/ui/components/dialog/index.js +2 -0
- package/dist/ui/components/dialog/index.js.map +1 -0
- package/dist/ui/components/drawer/index.d.ts +5 -0
- package/dist/ui/components/drawer/index.d.ts.map +1 -0
- package/dist/ui/components/drawer/index.js +7 -0
- package/dist/ui/components/drawer/index.js.map +1 -0
- package/dist/ui/components/editable/index.d.ts +5 -0
- package/dist/ui/components/editable/index.d.ts.map +1 -0
- package/dist/ui/components/editable/index.js +7 -0
- package/dist/ui/components/editable/index.js.map +1 -0
- package/dist/ui/components/file-upload/index.d.ts +5 -0
- package/dist/ui/components/file-upload/index.d.ts.map +1 -0
- package/dist/ui/components/file-upload/index.js +7 -0
- package/dist/ui/components/file-upload/index.js.map +1 -0
- package/dist/ui/components/floating-panel/index.d.ts +5 -0
- package/dist/ui/components/floating-panel/index.d.ts.map +1 -0
- package/dist/ui/components/floating-panel/index.js +7 -0
- package/dist/ui/components/floating-panel/index.js.map +1 -0
- package/dist/ui/components/hover-card/index.d.ts +5 -0
- package/dist/ui/components/hover-card/index.d.ts.map +1 -0
- package/dist/ui/components/hover-card/index.js +7 -0
- package/dist/ui/components/hover-card/index.js.map +1 -0
- package/dist/ui/components/image-cropper/index.d.ts +5 -0
- package/dist/ui/components/image-cropper/index.d.ts.map +1 -0
- package/dist/ui/components/image-cropper/index.js +7 -0
- package/dist/ui/components/image-cropper/index.js.map +1 -0
- package/dist/ui/components/index.d.ts +61 -0
- package/dist/ui/components/index.d.ts.map +1 -0
- package/dist/ui/components/index.js +186 -0
- package/dist/ui/components/index.js.map +1 -0
- package/dist/ui/components/layout/box.d.ts +11 -0
- package/dist/ui/components/layout/box.d.ts.map +1 -0
- package/dist/ui/components/layout/box.js +44 -0
- package/dist/ui/components/layout/box.js.map +1 -0
- package/dist/ui/components/layout/container.d.ts +9 -0
- package/dist/ui/components/layout/container.d.ts.map +1 -0
- package/dist/ui/components/layout/container.js +38 -0
- package/dist/ui/components/layout/container.js.map +1 -0
- package/dist/ui/components/layout/flex.d.ts +10 -0
- package/dist/ui/components/layout/flex.d.ts.map +1 -0
- package/dist/ui/components/layout/flex.js +53 -0
- package/dist/ui/components/layout/flex.js.map +1 -0
- package/dist/ui/components/layout/grid.d.ts +10 -0
- package/dist/ui/components/layout/grid.d.ts.map +1 -0
- package/dist/ui/components/layout/grid.js +47 -0
- package/dist/ui/components/layout/grid.js.map +1 -0
- package/dist/ui/components/layout/index.d.ts +6 -0
- package/dist/ui/components/layout/index.d.ts.map +1 -0
- package/dist/ui/components/layout/index.js +6 -0
- package/dist/ui/components/layout/index.js.map +1 -0
- package/dist/ui/components/layout/stack.d.ts +9 -0
- package/dist/ui/components/layout/stack.d.ts.map +1 -0
- package/dist/ui/components/layout/stack.js +37 -0
- package/dist/ui/components/layout/stack.js.map +1 -0
- package/dist/ui/components/listbox/index.d.ts +8 -0
- package/dist/ui/components/listbox/index.d.ts.map +1 -0
- package/dist/ui/components/listbox/index.js +9 -0
- package/dist/ui/components/listbox/index.js.map +1 -0
- package/dist/ui/components/marquee/index.d.ts +5 -0
- package/dist/ui/components/marquee/index.d.ts.map +1 -0
- package/dist/ui/components/marquee/index.js +7 -0
- package/dist/ui/components/marquee/index.js.map +1 -0
- package/dist/ui/components/menu/index.d.ts +2 -0
- package/dist/ui/components/menu/index.d.ts.map +1 -0
- package/dist/ui/components/menu/index.js +2 -0
- package/dist/ui/components/menu/index.js.map +1 -0
- package/dist/ui/components/menu/menu.d.ts +23 -0
- package/dist/ui/components/menu/menu.d.ts.map +1 -0
- package/dist/ui/components/menu/menu.js +45 -0
- package/dist/ui/components/menu/menu.js.map +1 -0
- package/dist/ui/components/navigation/breadcrumbs.d.ts +19 -0
- package/dist/ui/components/navigation/breadcrumbs.d.ts.map +1 -0
- package/dist/ui/components/navigation/breadcrumbs.js +90 -0
- package/dist/ui/components/navigation/breadcrumbs.js.map +1 -0
- package/dist/ui/components/navigation/index.d.ts +6 -0
- package/dist/ui/components/navigation/index.d.ts.map +1 -0
- package/dist/ui/components/navigation/index.js +6 -0
- package/dist/ui/components/navigation/index.js.map +1 -0
- package/dist/ui/components/navigation/prose.d.ts +6 -0
- package/dist/ui/components/navigation/prose.d.ts.map +1 -0
- package/dist/ui/components/navigation/prose.js +11 -0
- package/dist/ui/components/navigation/prose.js.map +1 -0
- package/dist/ui/components/navigation/sidebar.d.ts +10 -0
- package/dist/ui/components/navigation/sidebar.d.ts.map +1 -0
- package/dist/ui/components/navigation/sidebar.js +35 -0
- package/dist/ui/components/navigation/sidebar.js.map +1 -0
- package/dist/ui/components/navigation/toc.d.ts +11 -0
- package/dist/ui/components/navigation/toc.d.ts.map +1 -0
- package/dist/ui/components/navigation/toc.js +82 -0
- package/dist/ui/components/navigation/toc.js.map +1 -0
- package/dist/ui/components/navigation-menu/index.d.ts +5 -0
- package/dist/ui/components/navigation-menu/index.d.ts.map +1 -0
- package/dist/ui/components/navigation-menu/index.js +7 -0
- package/dist/ui/components/navigation-menu/index.js.map +1 -0
- package/dist/ui/components/number-input/index.d.ts +5 -0
- package/dist/ui/components/number-input/index.d.ts.map +1 -0
- package/dist/ui/components/number-input/index.js +7 -0
- package/dist/ui/components/number-input/index.js.map +1 -0
- package/dist/ui/components/pagination/index.d.ts +5 -0
- package/dist/ui/components/pagination/index.d.ts.map +1 -0
- package/dist/ui/components/pagination/index.js +7 -0
- package/dist/ui/components/pagination/index.js.map +1 -0
- package/dist/ui/components/password-input/index.d.ts +5 -0
- package/dist/ui/components/password-input/index.d.ts.map +1 -0
- package/dist/ui/components/password-input/index.js +7 -0
- package/dist/ui/components/password-input/index.js.map +1 -0
- package/dist/ui/components/pin-input/index.d.ts +5 -0
- package/dist/ui/components/pin-input/index.d.ts.map +1 -0
- package/dist/ui/components/pin-input/index.js +7 -0
- package/dist/ui/components/pin-input/index.js.map +1 -0
- package/dist/ui/components/popover/index.d.ts +2 -0
- package/dist/ui/components/popover/index.d.ts.map +1 -0
- package/dist/ui/components/popover/index.js +2 -0
- package/dist/ui/components/popover/index.js.map +1 -0
- package/dist/ui/components/popover/popover.d.ts +14 -0
- package/dist/ui/components/popover/popover.d.ts.map +1 -0
- package/dist/ui/components/popover/popover.js +22 -0
- package/dist/ui/components/popover/popover.js.map +1 -0
- package/dist/ui/components/presence/index.d.ts +5 -0
- package/dist/ui/components/presence/index.d.ts.map +1 -0
- package/dist/ui/components/presence/index.js +7 -0
- package/dist/ui/components/presence/index.js.map +1 -0
- package/dist/ui/components/progress/index.d.ts +5 -0
- package/dist/ui/components/progress/index.d.ts.map +1 -0
- package/dist/ui/components/progress/index.js +7 -0
- package/dist/ui/components/progress/index.js.map +1 -0
- package/dist/ui/components/qr-code/index.d.ts +5 -0
- package/dist/ui/components/qr-code/index.d.ts.map +1 -0
- package/dist/ui/components/qr-code/index.js +7 -0
- package/dist/ui/components/qr-code/index.js.map +1 -0
- package/dist/ui/components/radio-group/index.d.ts +5 -0
- package/dist/ui/components/radio-group/index.d.ts.map +1 -0
- package/dist/ui/components/radio-group/index.js +7 -0
- package/dist/ui/components/radio-group/index.js.map +1 -0
- package/dist/ui/components/rating-group/index.d.ts +5 -0
- package/dist/ui/components/rating-group/index.d.ts.map +1 -0
- package/dist/ui/components/rating-group/index.js +7 -0
- package/dist/ui/components/rating-group/index.js.map +1 -0
- package/dist/ui/components/resize-handle/index.d.ts +2 -0
- package/dist/ui/components/resize-handle/index.d.ts.map +1 -0
- package/dist/ui/components/resize-handle/index.js +2 -0
- package/dist/ui/components/resize-handle/index.js.map +1 -0
- package/dist/ui/components/resize-handle/resize-handle.d.ts +39 -0
- package/dist/ui/components/resize-handle/resize-handle.d.ts.map +1 -0
- package/dist/ui/components/resize-handle/resize-handle.js +170 -0
- package/dist/ui/components/resize-handle/resize-handle.js.map +1 -0
- package/dist/ui/components/scroll-area/index.d.ts +5 -0
- package/dist/ui/components/scroll-area/index.d.ts.map +1 -0
- package/dist/ui/components/scroll-area/index.js +7 -0
- package/dist/ui/components/scroll-area/index.js.map +1 -0
- package/dist/ui/components/select/index.d.ts +2 -0
- package/dist/ui/components/select/index.d.ts.map +1 -0
- package/dist/ui/components/select/index.js +2 -0
- package/dist/ui/components/select/index.js.map +1 -0
- package/dist/ui/components/select/select.d.ts +40 -0
- package/dist/ui/components/select/select.d.ts.map +1 -0
- package/dist/ui/components/select/select.js +57 -0
- package/dist/ui/components/select/select.js.map +1 -0
- package/dist/ui/components/separator/index.d.ts +2 -0
- package/dist/ui/components/separator/index.d.ts.map +1 -0
- package/dist/ui/components/separator/index.js +2 -0
- package/dist/ui/components/separator/index.js.map +1 -0
- package/dist/ui/components/separator/separator.d.ts +9 -0
- package/dist/ui/components/separator/separator.d.ts.map +1 -0
- package/dist/ui/components/separator/separator.js +27 -0
- package/dist/ui/components/separator/separator.js.map +1 -0
- package/dist/ui/components/signature-pad/index.d.ts +5 -0
- package/dist/ui/components/signature-pad/index.d.ts.map +1 -0
- package/dist/ui/components/signature-pad/index.js +7 -0
- package/dist/ui/components/signature-pad/index.js.map +1 -0
- package/dist/ui/components/slider/index.d.ts +5 -0
- package/dist/ui/components/slider/index.d.ts.map +1 -0
- package/dist/ui/components/slider/index.js +7 -0
- package/dist/ui/components/slider/index.js.map +1 -0
- package/dist/ui/components/splitter/index.d.ts +5 -0
- package/dist/ui/components/splitter/index.d.ts.map +1 -0
- package/dist/ui/components/splitter/index.js +7 -0
- package/dist/ui/components/splitter/index.js.map +1 -0
- package/dist/ui/components/steps/index.d.ts +5 -0
- package/dist/ui/components/steps/index.d.ts.map +1 -0
- package/dist/ui/components/steps/index.js +7 -0
- package/dist/ui/components/steps/index.js.map +1 -0
- package/dist/ui/components/switch/index.d.ts +2 -0
- package/dist/ui/components/switch/index.d.ts.map +1 -0
- package/dist/ui/components/switch/index.js +2 -0
- package/dist/ui/components/switch/index.js.map +1 -0
- package/dist/ui/components/switch/switch.d.ts +48 -0
- package/dist/ui/components/switch/switch.d.ts.map +1 -0
- package/dist/ui/components/switch/switch.js +64 -0
- package/dist/ui/components/switch/switch.js.map +1 -0
- package/dist/ui/components/tabs/index.d.ts +2 -0
- package/dist/ui/components/tabs/index.d.ts.map +1 -0
- package/dist/ui/components/tabs/index.js +2 -0
- package/dist/ui/components/tabs/index.js.map +1 -0
- package/dist/ui/components/tabs/tabs.d.ts +22 -0
- package/dist/ui/components/tabs/tabs.d.ts.map +1 -0
- package/dist/ui/components/tabs/tabs.js +89 -0
- package/dist/ui/components/tabs/tabs.js.map +1 -0
- package/dist/ui/components/tags-input/index.d.ts +5 -0
- package/dist/ui/components/tags-input/index.d.ts.map +1 -0
- package/dist/ui/components/tags-input/index.js +7 -0
- package/dist/ui/components/tags-input/index.js.map +1 -0
- package/dist/ui/components/timer/index.d.ts +7 -0
- package/dist/ui/components/timer/index.d.ts.map +1 -0
- package/dist/ui/components/timer/index.js +8 -0
- package/dist/ui/components/timer/index.js.map +1 -0
- package/dist/ui/components/toast/index.d.ts +7 -0
- package/dist/ui/components/toast/index.d.ts.map +1 -0
- package/dist/ui/components/toast/index.js +8 -0
- package/dist/ui/components/toast/index.js.map +1 -0
- package/dist/ui/components/toc/index.d.ts +5 -0
- package/dist/ui/components/toc/index.d.ts.map +1 -0
- package/dist/ui/components/toc/index.js +7 -0
- package/dist/ui/components/toc/index.js.map +1 -0
- package/dist/ui/components/toggle/index.d.ts +5 -0
- package/dist/ui/components/toggle/index.d.ts.map +1 -0
- package/dist/ui/components/toggle/index.js +7 -0
- package/dist/ui/components/toggle/index.js.map +1 -0
- package/dist/ui/components/toggle-group/index.d.ts +5 -0
- package/dist/ui/components/toggle-group/index.d.ts.map +1 -0
- package/dist/ui/components/toggle-group/index.js +7 -0
- package/dist/ui/components/toggle-group/index.js.map +1 -0
- package/dist/ui/components/toolbar/index.d.ts +11 -0
- package/dist/ui/components/toolbar/index.d.ts.map +1 -0
- package/dist/ui/components/toolbar/index.js +18 -0
- package/dist/ui/components/toolbar/index.js.map +1 -0
- package/dist/ui/components/tooltip/index.d.ts +2 -0
- package/dist/ui/components/tooltip/index.d.ts.map +1 -0
- package/dist/ui/components/tooltip/index.js +2 -0
- package/dist/ui/components/tooltip/index.js.map +1 -0
- package/dist/ui/components/tooltip/tooltip.d.ts +14 -0
- package/dist/ui/components/tooltip/tooltip.d.ts.map +1 -0
- package/dist/ui/components/tooltip/tooltip.js +22 -0
- package/dist/ui/components/tooltip/tooltip.js.map +1 -0
- package/dist/ui/components/tour/index.d.ts +5 -0
- package/dist/ui/components/tour/index.d.ts.map +1 -0
- package/dist/ui/components/tour/index.js +7 -0
- package/dist/ui/components/tour/index.js.map +1 -0
- package/dist/ui/components/tree-view/index.d.ts +7 -0
- package/dist/ui/components/tree-view/index.d.ts.map +1 -0
- package/dist/ui/components/tree-view/index.js +8 -0
- package/dist/ui/components/tree-view/index.js.map +1 -0
- package/dist/ui/core/button-behavior.d.ts +3 -0
- package/dist/ui/core/button-behavior.d.ts.map +1 -0
- package/dist/ui/core/button-behavior.js +50 -0
- package/dist/ui/core/button-behavior.js.map +1 -0
- package/dist/ui/core/catalogue-element.d.ts +6 -0
- package/dist/ui/core/catalogue-element.d.ts.map +1 -0
- package/dist/ui/core/catalogue-element.js +28 -0
- package/dist/ui/core/catalogue-element.js.map +1 -0
- package/dist/ui/core/component-styles.d.ts +2 -0
- package/dist/ui/core/component-styles.d.ts.map +1 -0
- package/dist/ui/core/component-styles.js +77 -0
- package/dist/ui/core/component-styles.js.map +1 -0
- package/dist/ui/core/element.d.ts +12 -0
- package/dist/ui/core/element.d.ts.map +1 -0
- package/dist/ui/core/element.js +57 -0
- package/dist/ui/core/element.js.map +1 -0
- package/dist/ui/core/events.d.ts +6 -0
- package/dist/ui/core/events.d.ts.map +1 -0
- package/dist/ui/core/events.js +13 -0
- package/dist/ui/core/events.js.map +1 -0
- package/dist/ui/core/form-control.d.ts +4 -0
- package/dist/ui/core/form-control.d.ts.map +1 -0
- package/dist/ui/core/form-control.js +25 -0
- package/dist/ui/core/form-control.js.map +1 -0
- package/dist/ui/core/index.d.ts +5 -0
- package/dist/ui/core/index.d.ts.map +1 -0
- package/dist/ui/core/index.js +5 -0
- package/dist/ui/core/index.js.map +1 -0
- package/dist/ui/core/layout-styles.d.ts +2 -0
- package/dist/ui/core/layout-styles.d.ts.map +1 -0
- package/dist/ui/core/layout-styles.js +58 -0
- package/dist/ui/core/layout-styles.js.map +1 -0
- package/dist/ui/core/machine-checkpoints.d.ts +6 -0
- package/dist/ui/core/machine-checkpoints.d.ts.map +1 -0
- package/dist/ui/core/machine-checkpoints.js +47 -0
- package/dist/ui/core/machine-checkpoints.js.map +1 -0
- package/dist/ui/core/machine-clock.d.ts +16 -0
- package/dist/ui/core/machine-clock.d.ts.map +1 -0
- package/dist/ui/core/machine-clock.js +89 -0
- package/dist/ui/core/machine-clock.js.map +1 -0
- package/dist/ui/core/machine-codec.d.ts +29 -0
- package/dist/ui/core/machine-codec.d.ts.map +1 -0
- package/dist/ui/core/machine-codec.js +217 -0
- package/dist/ui/core/machine-codec.js.map +1 -0
- package/dist/ui/core/machine-profiles.d.ts +437 -0
- package/dist/ui/core/machine-profiles.d.ts.map +1 -0
- package/dist/ui/core/machine-profiles.js +1175 -0
- package/dist/ui/core/machine-profiles.js.map +1 -0
- package/dist/ui/core/machine-resources.d.ts +6 -0
- package/dist/ui/core/machine-resources.d.ts.map +1 -0
- package/dist/ui/core/machine-resources.js +46 -0
- package/dist/ui/core/machine-resources.js.map +1 -0
- package/dist/ui/core/machine.d.ts +29 -0
- package/dist/ui/core/machine.d.ts.map +1 -0
- package/dist/ui/core/machine.js +111 -0
- package/dist/ui/core/machine.js.map +1 -0
- package/dist/ui/core/parts.d.ts +4 -0
- package/dist/ui/core/parts.d.ts.map +1 -0
- package/dist/ui/core/parts.js +33 -0
- package/dist/ui/core/parts.js.map +1 -0
- package/dist/ui/core/portal.d.ts +11 -0
- package/dist/ui/core/portal.d.ts.map +1 -0
- package/dist/ui/core/portal.js +71 -0
- package/dist/ui/core/portal.js.map +1 -0
- package/dist/ui/core/public-machine.d.ts +4 -0
- package/dist/ui/core/public-machine.d.ts.map +1 -0
- package/dist/ui/core/public-machine.js +26 -0
- package/dist/ui/core/public-machine.js.map +1 -0
- package/dist/ui/core/resumable-machine.d.ts +13 -0
- package/dist/ui/core/resumable-machine.d.ts.map +1 -0
- package/dist/ui/core/resumable-machine.js +336 -0
- package/dist/ui/core/resumable-machine.js.map +1 -0
- package/dist/ui/drivers/bulma.d.ts +3 -0
- package/dist/ui/drivers/bulma.d.ts.map +1 -0
- package/dist/ui/drivers/bulma.js +249 -0
- package/dist/ui/drivers/bulma.js.map +1 -0
- package/dist/ui/drivers/daisyui.d.ts +9 -0
- package/dist/ui/drivers/daisyui.d.ts.map +1 -0
- package/dist/ui/drivers/daisyui.js +107 -0
- package/dist/ui/drivers/daisyui.js.map +1 -0
- package/dist/ui/drivers/index.d.ts +7 -0
- package/dist/ui/drivers/index.d.ts.map +1 -0
- package/dist/ui/drivers/index.js +7 -0
- package/dist/ui/drivers/index.js.map +1 -0
- package/dist/ui/drivers/registry.d.ts +11 -0
- package/dist/ui/drivers/registry.d.ts.map +1 -0
- package/dist/ui/drivers/registry.js +109 -0
- package/dist/ui/drivers/registry.js.map +1 -0
- package/dist/ui/drivers/shadcn.d.ts +3 -0
- package/dist/ui/drivers/shadcn.d.ts.map +1 -0
- package/dist/ui/drivers/shadcn.js +288 -0
- package/dist/ui/drivers/shadcn.js.map +1 -0
- package/dist/ui/drivers/types.d.ts +43 -0
- package/dist/ui/drivers/types.d.ts.map +1 -0
- package/dist/ui/drivers/types.js +2 -0
- package/dist/ui/drivers/types.js.map +1 -0
- package/dist/ui/drivers/unstyled.d.ts +3 -0
- package/dist/ui/drivers/unstyled.d.ts.map +1 -0
- package/dist/ui/drivers/unstyled.js +226 -0
- package/dist/ui/drivers/unstyled.js.map +1 -0
- package/dist/ui/engine.d.ts +24 -0
- package/dist/ui/engine.d.ts.map +1 -0
- package/dist/ui/engine.js +22 -0
- package/dist/ui/engine.js.map +1 -0
- package/dist/ui/index.d.ts +7 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/index.js +6 -0
- package/dist/ui/index.js.map +1 -0
- package/dist/ui/machine-state.d.ts +349 -0
- package/dist/ui/machine-state.d.ts.map +1 -0
- package/dist/ui/machine-state.js +105 -0
- package/dist/ui/machine-state.js.map +1 -0
- package/dist/ui/presentation.d.ts +7 -0
- package/dist/ui/presentation.d.ts.map +1 -0
- package/dist/ui/presentation.js +21 -0
- package/dist/ui/presentation.js.map +1 -0
- package/dist/ui/render.d.ts +18 -0
- package/dist/ui/render.d.ts.map +1 -0
- package/dist/ui/render.js +31 -0
- package/dist/ui/render.js.map +1 -0
- package/dist/ui/resume.d.ts +28 -0
- package/dist/ui/resume.d.ts.map +1 -0
- package/dist/ui/resume.js +417 -0
- package/dist/ui/resume.js.map +1 -0
- package/dist/ui/server.d.ts +9 -0
- package/dist/ui/server.d.ts.map +1 -0
- package/dist/ui/server.js +6 -0
- package/dist/ui/server.js.map +1 -0
- package/dist/ui/state.d.ts +24 -0
- package/dist/ui/state.d.ts.map +1 -0
- package/dist/ui/state.js +64 -0
- package/dist/ui/state.js.map +1 -0
- package/dist/ui-server.d.ts +2 -0
- package/dist/ui-server.d.ts.map +1 -0
- package/dist/ui-server.js +2 -0
- package/dist/ui-server.js.map +1 -0
- package/dist/ui.d.ts +2 -0
- package/dist/ui.d.ts.map +1 -0
- package/dist/ui.js +2 -0
- package/dist/ui.js.map +1 -0
- package/dist/vite-environments.d.ts +27 -0
- package/dist/vite-environments.d.ts.map +1 -0
- package/dist/vite-environments.js +63 -0
- package/dist/vite-environments.js.map +1 -0
- package/dist/vite.d.ts +113 -3
- package/dist/vite.d.ts.map +1 -1
- package/dist/vite.js +1290 -196
- package/dist/vite.js.map +1 -1
- package/dist/workflow/browser.d.ts +7 -0
- package/dist/workflow/browser.d.ts.map +1 -0
- package/dist/workflow/browser.js +60 -0
- package/dist/workflow/browser.js.map +1 -0
- package/dist/workflow/compiler.d.ts +8 -0
- package/dist/workflow/compiler.d.ts.map +1 -0
- package/dist/workflow/compiler.js +122 -0
- package/dist/workflow/compiler.js.map +1 -0
- package/dist/workflow/http.d.ts +20 -0
- package/dist/workflow/http.d.ts.map +1 -0
- package/dist/workflow/http.js +68 -0
- package/dist/workflow/http.js.map +1 -0
- package/dist/workflow/index.d.ts +46 -0
- package/dist/workflow/index.d.ts.map +1 -0
- package/dist/workflow/index.js +91 -0
- package/dist/workflow/index.js.map +1 -0
- package/dist/workflow/journal.d.ts +9 -0
- package/dist/workflow/journal.d.ts.map +1 -0
- package/dist/workflow/journal.js +18 -0
- package/dist/workflow/journal.js.map +1 -0
- package/dist/workflow/node.d.ts +6 -0
- package/dist/workflow/node.d.ts.map +1 -0
- package/dist/workflow/node.js +24 -0
- package/dist/workflow/node.js.map +1 -0
- package/dist/workflow/operation.d.ts +23 -0
- package/dist/workflow/operation.d.ts.map +1 -0
- package/dist/workflow/operation.js +65 -0
- package/dist/workflow/operation.js.map +1 -0
- package/dist/workflow/protocol.d.ts +36 -0
- package/dist/workflow/protocol.d.ts.map +1 -0
- package/dist/workflow/protocol.js +45 -0
- package/dist/workflow/protocol.js.map +1 -0
- package/package.json +158 -27
- package/dist/create.d.ts +0 -21
- package/dist/create.d.ts.map +0 -1
- package/dist/create.js +0 -111
- package/dist/create.js.map +0 -1
- package/dist/runtime/atom.d.ts +0 -10
- package/dist/runtime/atom.d.ts.map +0 -1
- package/dist/runtime/atom.js +0 -38
- package/dist/runtime/atom.js.map +0 -1
- package/dist/ssr/node.d.ts +0 -3
- package/dist/ssr/node.d.ts.map +0 -1
- package/dist/ssr/node.js +0 -3
- package/dist/ssr/node.js.map +0 -1
- package/dist/ssr.d.ts +0 -4
- package/dist/ssr.d.ts.map +0 -1
- package/dist/ssr.js +0 -3
- package/dist/ssr.js.map +0 -1
- package/templates/basic/README.md +0 -18
- package/templates/basic/_gitignore +0 -3
- package/templates/basic/components/app-badge.html +0 -1
- package/templates/basic/index.html +0 -12
- package/templates/basic/islands/counter.ts +0 -13
- package/templates/basic/package.json +0 -26
- package/templates/basic/pages/about/index.html +0 -5
- package/templates/basic/pages/docs/index.md +0 -9
- package/templates/basic/pages/index.html +0 -9
- package/templates/basic/pages/layout.html +0 -8
- package/templates/basic/pnpm-workspace.yaml +0 -5
- package/templates/basic/server.mjs +0 -13
- package/templates/basic/style.css +0 -1
- package/templates/basic/tsconfig.json +0 -13
- package/templates/basic/vite.config.ts +0 -4
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import * as Effect from 'effect/Effect';
|
|
2
|
+
import { type Operation } from './operation.js';
|
|
3
|
+
import { type Json, type WorkflowCheckpoint } from './protocol.js';
|
|
4
|
+
import type { OperationJournal } from './journal.js';
|
|
5
|
+
export { defineOperation, executeOperation } from './operation.js';
|
|
6
|
+
export type { Operation, OperationContext } from './operation.js';
|
|
7
|
+
export { createMemoryOperationJournal } from './journal.js';
|
|
8
|
+
export type { OperationJournal } from './journal.js';
|
|
9
|
+
export type { Json, WorkflowCheckpoint, OperationRecord } from './protocol.js';
|
|
10
|
+
export interface WorkflowStep<I extends Json = Json> {
|
|
11
|
+
readonly id: string;
|
|
12
|
+
readonly operation: Operation<any, any>;
|
|
13
|
+
readonly input: (input: I, results: Readonly<Record<string, Json>>) => Json;
|
|
14
|
+
}
|
|
15
|
+
export interface Workflow<I extends Json = Json, O extends Json = Json> {
|
|
16
|
+
readonly id: string;
|
|
17
|
+
readonly version: string;
|
|
18
|
+
readonly program: string;
|
|
19
|
+
readonly steps: readonly WorkflowStep<I>[];
|
|
20
|
+
readonly finish: (input: I, results: Readonly<Record<string, Json>>) => O;
|
|
21
|
+
}
|
|
22
|
+
interface Program<I extends Json, O extends Json> {
|
|
23
|
+
readonly steps: readonly WorkflowStep<I>[];
|
|
24
|
+
readonly finish: Workflow<I, O>['finish'];
|
|
25
|
+
}
|
|
26
|
+
export declare function defineWorkflow<I extends Json, O extends Json>(metadata: {
|
|
27
|
+
id: string;
|
|
28
|
+
version: string;
|
|
29
|
+
}, program: Program<I, O> | ((input: I) => Promise<O>), compiledSignature?: string): Workflow<I, O>;
|
|
30
|
+
/** Authoring marker. The compiler replaces each await with an explicit saved step. */
|
|
31
|
+
export declare function workflowStep<I extends Json, O extends Json>(_id: string, _operation: Operation<I, O>, _input: I): Promise<O>;
|
|
32
|
+
export declare function createWorkflowRun<I extends Json, O extends Json>(definition: Workflow<I, O>, options: {
|
|
33
|
+
id: string;
|
|
34
|
+
input: I;
|
|
35
|
+
journal: OperationJournal;
|
|
36
|
+
checkpoint?: WorkflowCheckpoint;
|
|
37
|
+
leaseMs?: number;
|
|
38
|
+
onCheckpoint?: (checkpoint: WorkflowCheckpoint) => void | Promise<void> | Effect.Effect<void, unknown>;
|
|
39
|
+
}): {
|
|
40
|
+
run: (signal?: AbortSignal) => Promise<O>;
|
|
41
|
+
runEffect: () => Effect.Effect<O, unknown, never>;
|
|
42
|
+
checkpoint: () => WorkflowCheckpoint;
|
|
43
|
+
pause: () => Promise<WorkflowCheckpoint>;
|
|
44
|
+
dispose(): void;
|
|
45
|
+
};
|
|
46
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/workflow/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import * as Effect from 'effect/Effect';
|
|
2
|
+
import * as Atom from 'effect/reactivity/Atom';
|
|
3
|
+
import * as AtomRegistry from 'effect/reactivity/AtomRegistry';
|
|
4
|
+
import * as Hydration from 'effect/reactivity/Hydration';
|
|
5
|
+
import * as Schema from 'effect/Schema';
|
|
6
|
+
import { assertName } from '../server-components/protocol.js';
|
|
7
|
+
import { executeOperation } from './operation.js';
|
|
8
|
+
import { canonical, jsonCopy, operationKey, validateCheckpoint } from './protocol.js';
|
|
9
|
+
export { defineOperation, executeOperation } from './operation.js';
|
|
10
|
+
export { createMemoryOperationJournal } from './journal.js';
|
|
11
|
+
export function defineWorkflow(metadata, program, compiledSignature) {
|
|
12
|
+
assertName(metadata.id);
|
|
13
|
+
assertName(metadata.version);
|
|
14
|
+
if (typeof program === 'function')
|
|
15
|
+
throw new Error('Async workflows require the Fuzor workflow compiler. Use fuzorPlugin() or workflowPlugin().');
|
|
16
|
+
if (!Array.isArray(program.steps) || program.steps.length > 256 || typeof program.finish !== 'function')
|
|
17
|
+
throw new Error('Invalid workflow program');
|
|
18
|
+
const seen = new Set();
|
|
19
|
+
for (const step of program.steps) {
|
|
20
|
+
assertName(step.id);
|
|
21
|
+
if (seen.has(step.id) || typeof step.input !== 'function')
|
|
22
|
+
throw new Error('Invalid or duplicate workflow step');
|
|
23
|
+
seen.add(step.id);
|
|
24
|
+
}
|
|
25
|
+
const identity = JSON.stringify({ steps: program.steps.map(step => [step.id, step.operation.id, step.operation.version]), source: compiledSignature ?? null });
|
|
26
|
+
return Object.freeze({ ...metadata, program: identity, steps: Object.freeze(program.steps.map(step => Object.freeze({ ...step }))), finish: program.finish });
|
|
27
|
+
}
|
|
28
|
+
/** Authoring marker. The compiler replaces each await with an explicit saved step. */
|
|
29
|
+
export function workflowStep(_id, _operation, _input) { throw new Error('workflowStep must be compiled inside defineWorkflow'); }
|
|
30
|
+
export function createWorkflowRun(definition, options) {
|
|
31
|
+
assertName(options.id);
|
|
32
|
+
const input = jsonCopy(options.input);
|
|
33
|
+
const initial = options.checkpoint ? validateCheckpoint(options.checkpoint) : { format: 1, workflow: definition.id, version: definition.version, program: definition.program, runId: options.id, input, results: [], status: 'suspended', revision: 0 };
|
|
34
|
+
if (initial.workflow !== definition.id || initial.version !== definition.version || initial.program !== definition.program || initial.runId !== options.id || canonical(initial.input) !== canonical(input) || initial.results.some((entry, index) => definition.steps[index]?.id !== entry.step) || initial.results.length > definition.steps.length || initial.status === 'completed' && initial.results.length !== definition.steps.length)
|
|
35
|
+
throw new Error('Workflow checkpoint does not match its definition, run or input');
|
|
36
|
+
const registry = AtomRegistry.make();
|
|
37
|
+
const key = `fuzor:workflow:${definition.id}:${options.id}`;
|
|
38
|
+
const atom = Atom.make(initial).pipe(Atom.keepAlive, Atom.serializable({ key, schema: Schema.Json }));
|
|
39
|
+
registry.get(atom);
|
|
40
|
+
let disposed = false;
|
|
41
|
+
let active;
|
|
42
|
+
let controller;
|
|
43
|
+
const assertOpen = () => { if (disposed)
|
|
44
|
+
throw new Error('Workflow run is disposed'); };
|
|
45
|
+
const checkpoint = () => { assertOpen(); const values = Hydration.toValues(Hydration.dehydrate(registry)); return validateCheckpoint(values[0]?.value); };
|
|
46
|
+
const publish = (update) => Effect.gen(function* () {
|
|
47
|
+
const previous = registry.get(atom);
|
|
48
|
+
const next = validateCheckpoint({ ...previous, ...update, revision: previous.revision + 1 });
|
|
49
|
+
// Persist before publishing. A journaled result bridges a crash before this checkpoint saves.
|
|
50
|
+
if (options.onCheckpoint)
|
|
51
|
+
yield* Effect.tryPromise({ try: signal => { const result = options.onCheckpoint(jsonCopy(next)); return Effect.isEffect(result) ? Effect.runPromise(result, { signal }) : Promise.resolve(result); }, catch: error => error });
|
|
52
|
+
registry.set(atom, next);
|
|
53
|
+
});
|
|
54
|
+
const effect = () => Effect.gen(function* () {
|
|
55
|
+
assertOpen();
|
|
56
|
+
if (registry.get(atom).status === 'completed')
|
|
57
|
+
return jsonCopy(registry.get(atom).output);
|
|
58
|
+
yield* publish({ status: 'running' });
|
|
59
|
+
const results = Object.fromEntries(registry.get(atom).results.map(entry => [entry.step, entry.value]));
|
|
60
|
+
for (let index = registry.get(atom).results.length; index < definition.steps.length; index++) {
|
|
61
|
+
const step = definition.steps[index];
|
|
62
|
+
const value = yield* executeOperation(step.operation, jsonCopy(step.input(jsonCopy(input), jsonCopy(results))), { key: `${encodeURIComponent(definition.id)}:${encodeURIComponent(definition.version)}:${operationKey(options.id, step.id)}`, journal: options.journal, ...(options.leaseMs === undefined ? {} : { leaseMs: options.leaseMs }) });
|
|
63
|
+
results[step.id] = value;
|
|
64
|
+
yield* publish({ results: [...registry.get(atom).results, { step: step.id, value }] });
|
|
65
|
+
}
|
|
66
|
+
const output = jsonCopy(definition.finish(jsonCopy(input), jsonCopy(results)));
|
|
67
|
+
yield* publish({ status: 'completed', output });
|
|
68
|
+
return output;
|
|
69
|
+
});
|
|
70
|
+
const run = (signal) => {
|
|
71
|
+
assertOpen();
|
|
72
|
+
if (active)
|
|
73
|
+
return controller?.signal.aborted ? active.then(() => run(signal), () => run(signal)) : active;
|
|
74
|
+
controller = new AbortController();
|
|
75
|
+
const abort = () => controller?.abort();
|
|
76
|
+
signal?.addEventListener('abort', abort, { once: true });
|
|
77
|
+
if (signal?.aborted)
|
|
78
|
+
controller.abort();
|
|
79
|
+
active = Effect.runPromise(effect(), { signal: controller.signal }).finally(() => { signal?.removeEventListener('abort', abort); active = undefined; controller = undefined; });
|
|
80
|
+
return active;
|
|
81
|
+
};
|
|
82
|
+
return {
|
|
83
|
+
run, runEffect: () => Effect.tryPromise({ try: signal => run(signal), catch: error => error }), checkpoint,
|
|
84
|
+
pause: () => Effect.runPromise(Effect.gen(function* () { assertOpen(); controller?.abort(); if (active)
|
|
85
|
+
yield* Effect.tryPromise({ try: () => active.then(() => undefined, () => undefined), catch: error => error }); if (registry.get(atom).status !== 'completed')
|
|
86
|
+
yield* publish({ status: 'suspended' }); return checkpoint(); })),
|
|
87
|
+
dispose() { if (disposed)
|
|
88
|
+
return; controller?.abort(); disposed = true; registry.dispose(); }
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/workflow/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import * as Effect from 'effect/Effect';
|
|
2
|
+
import { type OperationRecord } from './protocol.js';
|
|
3
|
+
/** CAS must be atomic across every executor sharing this journal. Records must survive for the promised replay period. */
|
|
4
|
+
export interface OperationJournal {
|
|
5
|
+
readonly read: (key: string) => Effect.Effect<OperationRecord | null, Error>;
|
|
6
|
+
readonly compareAndSet: (key: string, revision: number | null, next: OperationRecord) => Effect.Effect<boolean, Error>;
|
|
7
|
+
}
|
|
8
|
+
export declare function createMemoryOperationJournal(): OperationJournal;
|
|
9
|
+
//# sourceMappingURL=journal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"journal.d.ts","sourceRoot":"","sources":["../../src/workflow/journal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,EAAqB,KAAK,eAAe,EAAE,MAAM,eAAe,CAAC;AACxE,0HAA0H;AAC1H,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,eAAe,GAAG,IAAI,EAAE,KAAK,CAAC,CAAC;IAC7E,QAAQ,CAAC,aAAa,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,EAAE,IAAI,EAAE,eAAe,KAAK,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;CACxH;AACD,wBAAgB,4BAA4B,IAAI,gBAAgB,CAU/D"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import * as Effect from 'effect/Effect';
|
|
2
|
+
import { validateOperation } from './protocol.js';
|
|
3
|
+
export function createMemoryOperationJournal() {
|
|
4
|
+
const records = new Map();
|
|
5
|
+
return {
|
|
6
|
+
read: key => Effect.sync(() => { const value = records.get(key); return value ? validateOperation(value) : null; }),
|
|
7
|
+
compareAndSet: (key, revision, next) => Effect.try({ try: () => {
|
|
8
|
+
const record = validateOperation(next);
|
|
9
|
+
if (record.key !== key || record.revision !== (revision === null ? 0 : revision + 1))
|
|
10
|
+
throw new Error('Invalid journal revision');
|
|
11
|
+
if ((records.get(key)?.revision ?? null) !== revision)
|
|
12
|
+
return false;
|
|
13
|
+
records.set(key, record);
|
|
14
|
+
return true;
|
|
15
|
+
}, catch: error => error instanceof Error ? error : new Error(String(error)) })
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=journal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"journal.js","sourceRoot":"","sources":["../../src/workflow/journal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,iBAAiB,EAAwB,MAAM,eAAe,CAAC;AAMxE,MAAM,UAAU,4BAA4B;IAC1C,MAAM,OAAO,GAAC,IAAI,GAAG,EAA0B,CAAC;IAChD,OAAO;QACL,IAAI,EAAC,GAAG,CAAA,EAAE,CAAA,MAAM,CAAC,IAAI,CAAC,GAAE,EAAE,GAAC,MAAM,KAAK,GAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA,OAAO,KAAK,CAAA,CAAC,CAAA,iBAAiB,CAAC,KAAK,CAAC,CAAA,CAAC,CAAA,IAAI,CAAC,CAAA,CAAC,CAAC;QACrG,aAAa,EAAC,CAAC,GAAG,EAAC,QAAQ,EAAC,IAAI,EAAC,EAAE,CAAA,MAAM,CAAC,GAAG,CAAC,EAAC,GAAG,EAAC,GAAE,EAAE;gBACrD,MAAM,MAAM,GAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;gBAAA,IAAG,MAAM,CAAC,GAAG,KAAG,GAAG,IAAE,MAAM,CAAC,QAAQ,KAAG,CAAC,QAAQ,KAAG,IAAI,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,CAAA,QAAQ,GAAC,CAAC,CAAC;oBAAC,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;gBACvJ,IAAG,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,QAAQ,IAAE,IAAI,CAAC,KAAG,QAAQ;oBAAC,OAAO,KAAK,CAAC;gBAC9D,OAAO,CAAC,GAAG,CAAC,GAAG,EAAC,MAAM,CAAC,CAAC;gBAAA,OAAO,IAAI,CAAC;YACtC,CAAC,EAAC,KAAK,EAAC,KAAK,CAAA,EAAE,CAAA,KAAK,YAAY,KAAK,CAAA,CAAC,CAAA,KAAK,CAAA,CAAC,CAAA,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAC,CAAC;KACvE,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { OperationJournal } from './journal.js';
|
|
2
|
+
/** A SQLite CAS journal shared safely across connections/processes on one host. Parent directory must already exist. */
|
|
3
|
+
export declare function createSqliteOperationJournal(filename: string): OperationJournal & {
|
|
4
|
+
close(): void;
|
|
5
|
+
};
|
|
6
|
+
//# sourceMappingURL=node.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../src/workflow/node.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACrD,wHAAwH;AACxH,wBAAgB,4BAA4B,CAAC,QAAQ,EAAC,MAAM,GAAE,gBAAgB,GAAC;IAAC,KAAK,IAAG,IAAI,CAAA;CAAC,CAc5F"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { DatabaseSync } from 'node:sqlite';
|
|
2
|
+
import * as Effect from 'effect/Effect';
|
|
3
|
+
import { validateOperation } from './protocol.js';
|
|
4
|
+
/** A SQLite CAS journal shared safely across connections/processes on one host. Parent directory must already exist. */
|
|
5
|
+
export function createSqliteOperationJournal(filename) {
|
|
6
|
+
const database = new DatabaseSync(filename);
|
|
7
|
+
database.exec('PRAGMA busy_timeout=5000; PRAGMA journal_mode=WAL; CREATE TABLE IF NOT EXISTS fuzor_operations (key TEXT PRIMARY KEY, revision INTEGER NOT NULL, payload TEXT NOT NULL)');
|
|
8
|
+
const read = database.prepare('SELECT payload FROM fuzor_operations WHERE key=?');
|
|
9
|
+
const insert = database.prepare('INSERT OR IGNORE INTO fuzor_operations (key,revision,payload) VALUES (?,?,?)');
|
|
10
|
+
const update = database.prepare('UPDATE fuzor_operations SET revision=?,payload=? WHERE key=? AND revision=?');
|
|
11
|
+
const safely = (run) => Effect.try({ try: run, catch: error => error instanceof Error ? error : new Error(String(error)) });
|
|
12
|
+
return {
|
|
13
|
+
read: key => safely(() => { const row = read.get(key); return row ? validateOperation(JSON.parse(row.payload)) : null; }),
|
|
14
|
+
compareAndSet: (key, revision, next) => safely(() => {
|
|
15
|
+
const record = validateOperation(next);
|
|
16
|
+
if (record.key !== key || record.revision !== (revision === null ? 0 : revision + 1))
|
|
17
|
+
throw new Error('Invalid journal revision');
|
|
18
|
+
const payload = JSON.stringify(record);
|
|
19
|
+
return Number((revision === null ? insert.run(key, record.revision, payload) : update.run(record.revision, payload, key, revision)).changes) === 1;
|
|
20
|
+
}),
|
|
21
|
+
close() { database.close(); }
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node.js","sourceRoot":"","sources":["../../src/workflow/node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,iBAAiB,EAAwB,MAAM,eAAe,CAAC;AAExE,wHAAwH;AACxH,MAAM,UAAU,4BAA4B,CAAC,QAAe;IAC1D,MAAM,QAAQ,GAAC,IAAI,YAAY,CAAC,QAAQ,CAAC,CAAC;IAAA,QAAQ,CAAC,IAAI,CAAC,yKAAyK,CAAC,CAAC;IACnO,MAAM,IAAI,GAAC,QAAQ,CAAC,OAAO,CAAC,kDAAkD,CAAC,CAAC;IAChF,MAAM,MAAM,GAAC,QAAQ,CAAC,OAAO,CAAC,8EAA8E,CAAC,CAAC;IAC9G,MAAM,MAAM,GAAC,QAAQ,CAAC,OAAO,CAAC,6EAA6E,CAAC,CAAC;IAC7G,MAAM,MAAM,GAAC,CAAI,GAAS,EAAC,EAAE,CAAA,MAAM,CAAC,GAAG,CAAC,EAAC,GAAG,EAAC,GAAG,EAAC,KAAK,EAAC,KAAK,CAAA,EAAE,CAAA,KAAK,YAAY,KAAK,CAAA,CAAC,CAAA,KAAK,CAAA,CAAC,CAAA,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAC,CAAC,CAAC;IACtH,OAAO;QACL,IAAI,EAAC,GAAG,CAAA,EAAE,CAAA,MAAM,CAAC,GAAE,EAAE,GAAC,MAAM,GAAG,GAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA,OAAO,GAAG,CAAA,CAAC,CAAA,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAiB,CAAC,CAAC,CAAA,CAAC,CAAA,IAAI,CAAC,CAAA,CAAC,CAAC;QACrH,aAAa,EAAC,CAAC,GAAG,EAAC,QAAQ,EAAC,IAAI,EAAC,EAAE,CAAA,MAAM,CAAC,GAAE,EAAE;YAC5C,MAAM,MAAM,GAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAAA,IAAG,MAAM,CAAC,GAAG,KAAG,GAAG,IAAE,MAAM,CAAC,QAAQ,KAAG,CAAC,QAAQ,KAAG,IAAI,CAAA,CAAC,CAAA,CAAC,CAAA,CAAC,CAAA,QAAQ,GAAC,CAAC,CAAC;gBAAC,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;YACvJ,MAAM,OAAO,GAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAAA,OAAO,MAAM,CAAC,CAAC,QAAQ,KAAG,IAAI,CAAA,CAAC,CAAA,MAAM,CAAC,GAAG,CAAC,GAAG,EAAC,MAAM,CAAC,QAAQ,EAAC,OAAO,CAAC,CAAA,CAAC,CAAA,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAC,OAAO,EAAC,GAAG,EAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,KAAG,CAAC,CAAC;QAC7K,CAAC,CAAC;QACF,KAAK,KAAG,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAA,CAAC;KAC3B,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import * as Effect from 'effect/Effect';
|
|
2
|
+
import { type Json } from './protocol.js';
|
|
3
|
+
import type { OperationJournal } from './journal.js';
|
|
4
|
+
export interface OperationContext {
|
|
5
|
+
readonly key: string;
|
|
6
|
+
readonly signal: AbortSignal;
|
|
7
|
+
readonly attempt: number;
|
|
8
|
+
}
|
|
9
|
+
export interface Operation<I extends Json = Json, O extends Json = Json> {
|
|
10
|
+
readonly id: string;
|
|
11
|
+
readonly version: string;
|
|
12
|
+
readonly kind: 'read' | 'write';
|
|
13
|
+
/** Writes must deduplicate by context.key at the side-effect destination. */
|
|
14
|
+
readonly replay?: 'idempotent';
|
|
15
|
+
readonly execute: (input: I, context: OperationContext) => O | Promise<O> | Effect.Effect<O, unknown>;
|
|
16
|
+
}
|
|
17
|
+
export declare function defineOperation<I extends Json, O extends Json>(definition: Operation<I, O>): Operation<I, O>;
|
|
18
|
+
export declare function executeOperation<I extends Json, O extends Json>(operation: Operation<I, O>, input: I, options: {
|
|
19
|
+
key: string;
|
|
20
|
+
journal: OperationJournal;
|
|
21
|
+
leaseMs?: number;
|
|
22
|
+
}): Effect.Effect<O, unknown>;
|
|
23
|
+
//# sourceMappingURL=operation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"operation.d.ts","sourceRoot":"","sources":["../../src/workflow/operation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,EAA0C,KAAK,IAAI,EAAwB,MAAM,eAAe,CAAC;AACxG,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACrD,MAAM,WAAW,gBAAgB;IAAG,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE;AAClH,MAAM,WAAW,SAAS,CAAC,CAAC,SAAS,IAAI,GAAC,IAAI,EAAC,CAAC,SAAS,IAAI,GAAC,IAAI;IAChE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAC,OAAO,CAAC;IAC7E,6EAA6E;IAC7E,QAAQ,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC;IAC/B,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,gBAAgB,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;CACvG;AACD,wBAAgB,eAAe,CAAC,CAAC,SAAS,IAAI,EAAC,CAAC,SAAS,IAAI,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC,EAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,EAAC,CAAC,CAAC,CAIzG;AACD,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,IAAI,EAAC,CAAC,SAAS,IAAI,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE;IAAC,GAAG,EAAC,MAAM,CAAC;IAAA,OAAO,EAAC,gBAAgB,CAAC;IAAA,OAAO,CAAC,EAAC,MAAM,CAAA;CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,EAAC,OAAO,CAAC,CAoC7L"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import * as Effect from 'effect/Effect';
|
|
2
|
+
import { assertName } from '../server-components/protocol.js';
|
|
3
|
+
import { canonical, jsonCopy, validateOperation } from './protocol.js';
|
|
4
|
+
export function defineOperation(definition) {
|
|
5
|
+
assertName(definition.id);
|
|
6
|
+
assertName(definition.version);
|
|
7
|
+
if (!['read', 'write'].includes(definition.kind) || typeof definition.execute !== 'function' || definition.kind === 'write' && definition.replay !== 'idempotent')
|
|
8
|
+
throw new Error('Durable writes require replay: "idempotent" and destination deduplication by context.key');
|
|
9
|
+
return Object.freeze({ ...definition });
|
|
10
|
+
}
|
|
11
|
+
export function executeOperation(operation, input, options) {
|
|
12
|
+
return Effect.gen(function* () {
|
|
13
|
+
defineOperation(operation);
|
|
14
|
+
const detached = jsonCopy(input);
|
|
15
|
+
const leaseMs = options.leaseMs ?? 30000;
|
|
16
|
+
if (!Number.isFinite(leaseMs) || leaseMs < 60 || leaseMs > 3600000)
|
|
17
|
+
throw new Error('Operation lease must be between 60 ms and one hour');
|
|
18
|
+
if (!options.key || options.key.length > 4096)
|
|
19
|
+
throw new Error('Invalid operation key');
|
|
20
|
+
const owner = crypto.randomUUID?.() ?? Array.from(crypto.getRandomValues(new Uint8Array(16)), byte => byte.toString(16).padStart(2, '0')).join('');
|
|
21
|
+
let record;
|
|
22
|
+
while (true) {
|
|
23
|
+
const found = yield* options.journal.read(options.key);
|
|
24
|
+
if (found) {
|
|
25
|
+
validateOperation(found);
|
|
26
|
+
if (found.operation !== operation.id || found.version !== operation.version || canonical(found.input) !== canonical(detached))
|
|
27
|
+
throw new Error('Operation key was reused with a different definition or input');
|
|
28
|
+
if (found.status === 'completed')
|
|
29
|
+
return jsonCopy(found.result);
|
|
30
|
+
if (found.leaseUntil > Date.now()) {
|
|
31
|
+
yield* Effect.sleep(Math.min(50, found.leaseUntil - Date.now()));
|
|
32
|
+
continue;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
record = { format: 1, key: options.key, operation: operation.id, version: operation.version, input: detached, revision: found ? found.revision + 1 : 0, status: 'pending', owner, leaseUntil: Date.now() + leaseMs, attempt: (found?.attempt ?? 0) + 1 };
|
|
36
|
+
if (yield* Effect.uninterruptible(options.journal.compareAndSet(options.key, found?.revision ?? null, record)))
|
|
37
|
+
break;
|
|
38
|
+
}
|
|
39
|
+
const heartbeat = Effect.gen(function* () {
|
|
40
|
+
while (true) {
|
|
41
|
+
yield* Effect.sleep(Math.floor(leaseMs / 3));
|
|
42
|
+
const next = { ...record, revision: record.revision + 1, leaseUntil: Date.now() + leaseMs };
|
|
43
|
+
if (!(yield* Effect.uninterruptible(options.journal.compareAndSet(options.key, record.revision, next))))
|
|
44
|
+
throw new Error('Operation lease ownership was lost');
|
|
45
|
+
record = next;
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
const execute = Effect.tryPromise({ try: signal => {
|
|
49
|
+
const result = operation.execute(jsonCopy(detached), { key: options.key, signal, attempt: record.attempt });
|
|
50
|
+
return Effect.isEffect(result) ? Effect.runPromise(result, { signal }) : Promise.resolve(result);
|
|
51
|
+
}, catch: error => error });
|
|
52
|
+
return yield* Effect.gen(function* () {
|
|
53
|
+
const result = jsonCopy(yield* Effect.raceFirst(execute, heartbeat));
|
|
54
|
+
const next = { ...record, revision: record.revision + 1, status: 'completed', leaseUntil: 0, result };
|
|
55
|
+
if (!(yield* Effect.uninterruptible(options.journal.compareAndSet(options.key, record.revision, next))))
|
|
56
|
+
throw new Error('Operation completion was fenced');
|
|
57
|
+
record = next;
|
|
58
|
+
return result;
|
|
59
|
+
}).pipe(Effect.ensuring(Effect.gen(function* () {
|
|
60
|
+
if (record.status === 'pending')
|
|
61
|
+
yield* options.journal.compareAndSet(options.key, record.revision, { ...record, revision: record.revision + 1, leaseUntil: 0 });
|
|
62
|
+
}).pipe(Effect.orDie)));
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=operation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"operation.js","sourceRoot":"","sources":["../../src/workflow/operation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { type Json } from "../server-components/protocol.js";
|
|
2
|
+
export type { Json };
|
|
3
|
+
export interface OperationRecord {
|
|
4
|
+
readonly format: 1;
|
|
5
|
+
readonly key: string;
|
|
6
|
+
readonly operation: string;
|
|
7
|
+
readonly version: string;
|
|
8
|
+
readonly input: Json;
|
|
9
|
+
readonly revision: number;
|
|
10
|
+
readonly status: "pending" | "completed";
|
|
11
|
+
readonly owner: string;
|
|
12
|
+
readonly leaseUntil: number;
|
|
13
|
+
readonly attempt: number;
|
|
14
|
+
readonly result?: Json;
|
|
15
|
+
}
|
|
16
|
+
export interface WorkflowCheckpoint {
|
|
17
|
+
readonly format: 1;
|
|
18
|
+
readonly workflow: string;
|
|
19
|
+
readonly version: string;
|
|
20
|
+
readonly runId: string;
|
|
21
|
+
readonly program: string;
|
|
22
|
+
readonly input: Json;
|
|
23
|
+
readonly results: readonly {
|
|
24
|
+
readonly step: string;
|
|
25
|
+
readonly value: Json;
|
|
26
|
+
}[];
|
|
27
|
+
readonly status: "suspended" | "running" | "completed";
|
|
28
|
+
readonly revision: number;
|
|
29
|
+
readonly output?: Json;
|
|
30
|
+
}
|
|
31
|
+
export declare function jsonCopy<T>(value: T): T;
|
|
32
|
+
export declare function canonical(value: Json): string;
|
|
33
|
+
export declare function operationKey(runId: string, step: string): string;
|
|
34
|
+
export declare function validateOperation(value: unknown): OperationRecord;
|
|
35
|
+
export declare function validateCheckpoint(value: unknown): WorkflowCheckpoint;
|
|
36
|
+
//# sourceMappingURL=protocol.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/workflow/protocol.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,KAAK,IAAI,EAAE,MAAM,kCAAkC,CAAC;AACrF,YAAY,EAAE,IAAI,EAAE,CAAC;AACrB,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAC/F,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAChD,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,WAAW,CAAC;IACzC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IACpD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC;CAClD;AACD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAC1H,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,SAAS;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAA;KAAE,EAAE,CAAC;IACnG,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,SAAS,GAAG,WAAW,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAClF,QAAQ,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC;CACxB;AACD,wBAAgB,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAKvC;AACD,wBAAgB,SAAS,CAAC,KAAK,EAAE,IAAI,GAAG,MAAM,CAI7C;AACD,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAA0H;AAC3L,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,eAAe,CAMjE;AACD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,kBAAkB,CAOrE"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { assertJson, assertName } from "../server-components/protocol.js";
|
|
2
|
+
export function jsonCopy(value) {
|
|
3
|
+
assertJson(value);
|
|
4
|
+
const encoded = JSON.stringify(value);
|
|
5
|
+
if (new TextEncoder().encode(encoded).byteLength > 2 * 1024 * 1024)
|
|
6
|
+
throw new Error("Workflow JSON exceeds 2 MiB");
|
|
7
|
+
return JSON.parse(encoded);
|
|
8
|
+
}
|
|
9
|
+
export function canonical(value) {
|
|
10
|
+
if (Array.isArray(value))
|
|
11
|
+
return `[${value.map(canonical).join(',')}]`;
|
|
12
|
+
if (value !== null && typeof value === 'object')
|
|
13
|
+
return `{${Object.keys(value).sort().map(k => `${JSON.stringify(k)}:${canonical(value[k])}`).join(',')}}`;
|
|
14
|
+
return JSON.stringify(value);
|
|
15
|
+
}
|
|
16
|
+
export function operationKey(runId, step) { assertName(runId); assertName(step); return `fuzor:operation:${encodeURIComponent(runId)}:${encodeURIComponent(step)}`; }
|
|
17
|
+
export function validateOperation(value) {
|
|
18
|
+
const record = jsonCopy(value);
|
|
19
|
+
if (!record || record.format !== 1 || typeof record.key !== 'string' || record.key.length > 4096)
|
|
20
|
+
throw new Error('Invalid operation journal record');
|
|
21
|
+
assertName(record.operation);
|
|
22
|
+
assertName(record.version);
|
|
23
|
+
assertName(record.owner);
|
|
24
|
+
if (!Number.isSafeInteger(record.revision) || record.revision < 0 || !Number.isSafeInteger(record.attempt) || record.attempt < 1 || !Number.isFinite(record.leaseUntil) || !['pending', 'completed'].includes(record.status) || !Object.hasOwn(record, 'input') || (record.status === 'completed' && !Object.hasOwn(record, 'result')))
|
|
25
|
+
throw new Error('Invalid operation journal state');
|
|
26
|
+
return record;
|
|
27
|
+
}
|
|
28
|
+
export function validateCheckpoint(value) {
|
|
29
|
+
const checkpoint = jsonCopy(value);
|
|
30
|
+
if (!checkpoint || checkpoint.format !== 1)
|
|
31
|
+
throw new Error('Invalid workflow checkpoint');
|
|
32
|
+
for (const name of [checkpoint.workflow, checkpoint.version, checkpoint.runId])
|
|
33
|
+
assertName(name);
|
|
34
|
+
if (typeof checkpoint.program !== 'string' || !checkpoint.program || !Object.hasOwn(checkpoint, 'input') || !Array.isArray(checkpoint.results) || checkpoint.results.length > 256 || !Number.isSafeInteger(checkpoint.revision) || checkpoint.revision < 0 || !['suspended', 'running', 'completed'].includes(checkpoint.status) || (checkpoint.status === 'completed' && !Object.hasOwn(checkpoint, 'output')))
|
|
35
|
+
throw new Error('Invalid workflow checkpoint state');
|
|
36
|
+
const seen = new Set();
|
|
37
|
+
for (const result of checkpoint.results) {
|
|
38
|
+
assertName(result.step);
|
|
39
|
+
if (seen.has(result.step) || !Object.hasOwn(result, 'value'))
|
|
40
|
+
throw new Error('Invalid workflow step results');
|
|
41
|
+
seen.add(result.step);
|
|
42
|
+
}
|
|
43
|
+
return checkpoint;
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=protocol.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/workflow/protocol.ts"],"names":[],"mappings":"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"}
|