@askrjs/askr 0.0.27 → 0.0.29
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 +55 -147
- package/dist/_virtual/_rolldown/runtime.js +7 -0
- package/dist/bench/components/benchmark-row.d.ts +20 -0
- package/dist/bench/components/benchmark-row.d.ts.map +1 -0
- package/dist/bench/components/benchmark-row.js +42 -0
- package/dist/bench/components/benchmark-row.js.map +1 -0
- package/dist/bench/components/benchmark-table.js +25 -0
- package/dist/bench/components/benchmark-table.js.map +1 -0
- package/dist/benchmark.d.ts +22 -0
- package/dist/benchmark.d.ts.map +1 -0
- package/dist/benchmark.js +64 -1
- package/dist/benchmark.js.map +1 -0
- package/dist/bin/askr-ssg.d.ts +28 -0
- package/dist/bin/askr-ssg.d.ts.map +1 -0
- package/dist/bin/askr-ssg.js +171 -0
- package/dist/bin/askr-ssg.js.map +1 -0
- package/dist/boot/index.d.ts +64 -42
- package/dist/boot/index.d.ts.map +1 -1
- package/dist/boot/index.js +416 -2
- package/dist/boot/index.js.map +1 -0
- package/dist/common/component.d.ts +14 -13
- package/dist/common/component.d.ts.map +1 -1
- package/dist/common/control.d.ts +13 -0
- package/dist/common/control.d.ts.map +1 -0
- package/dist/common/control.js +14 -0
- package/dist/common/control.js.map +1 -0
- package/dist/common/env.js +47 -0
- package/dist/common/env.js.map +1 -0
- package/dist/common/jsx.d.ts +17 -15
- package/dist/common/jsx.d.ts.map +1 -1
- package/dist/common/jsx.js +8 -1
- package/dist/common/jsx.js.map +1 -0
- package/dist/common/props.d.ts +14 -11
- package/dist/common/props.d.ts.map +1 -1
- package/dist/common/router.d.ts +190 -32
- package/dist/common/router.d.ts.map +1 -1
- package/dist/common/ssr-errors.d.ts +6 -3
- package/dist/common/ssr-errors.d.ts.map +1 -1
- package/dist/common/ssr-errors.js +16 -1
- package/dist/common/ssr-errors.js.map +1 -0
- package/dist/common/ssr.d.ts +12 -9
- package/dist/common/ssr.d.ts.map +1 -1
- package/dist/common/vnode.d.ts +17 -15
- package/dist/common/vnode.d.ts.map +1 -1
- package/dist/common/vnode.js +10 -1
- package/dist/common/vnode.js.map +1 -0
- package/dist/components/link.d.ts +37 -25
- package/dist/components/link.d.ts.map +1 -1
- package/dist/components/link.js +64 -1
- package/dist/components/link.js.map +1 -0
- package/dist/control/case.d.ts +17 -0
- package/dist/control/case.d.ts.map +1 -0
- package/dist/control/case.js +69 -0
- package/dist/control/case.js.map +1 -0
- package/dist/control/for.d.ts +23 -0
- package/dist/control/for.d.ts.map +1 -0
- package/dist/control/for.js +62 -0
- package/dist/control/for.js.map +1 -0
- package/dist/control/index.d.ts +4 -0
- package/dist/control/index.js +4 -0
- package/dist/control/shared.js +20 -0
- package/dist/control/shared.js.map +1 -0
- package/dist/control/show.d.ts +14 -0
- package/dist/control/show.d.ts.map +1 -0
- package/dist/control/show.js +33 -0
- package/dist/control/show.js.map +1 -0
- package/dist/dev/invariant.js +29 -2
- package/dist/dev/invariant.js.map +1 -0
- package/dist/dev/logger.js +37 -1
- package/dist/dev/logger.js.map +1 -0
- package/dist/foundations/icon/icon.d.ts +53 -0
- package/dist/foundations/icon/icon.d.ts.map +1 -0
- package/dist/foundations/icon/icon.js +88 -0
- package/dist/foundations/icon/icon.js.map +1 -0
- package/dist/foundations/icon/icon.types.d.ts +21 -0
- package/dist/foundations/icon/icon.types.d.ts.map +1 -0
- package/dist/foundations/index.d.ts +10 -3
- package/dist/foundations/index.js +9 -1
- package/dist/foundations/interactions/interaction-policy.js +93 -1
- package/dist/foundations/interactions/interaction-policy.js.map +1 -0
- package/dist/foundations/interactions/pressable.js +51 -1
- package/dist/foundations/interactions/pressable.js.map +1 -0
- package/dist/foundations/structures/collection.d.ts +25 -40
- package/dist/foundations/structures/collection.d.ts.map +1 -1
- package/dist/foundations/structures/collection.js +51 -1
- package/dist/foundations/structures/collection.js.map +1 -0
- package/dist/foundations/structures/layer.d.ts +47 -68
- package/dist/foundations/structures/layer.d.ts.map +1 -1
- package/dist/foundations/structures/layer.js +81 -1
- package/dist/foundations/structures/layer.js.map +1 -0
- package/dist/foundations/structures/layout.d.ts +6 -3
- package/dist/foundations/structures/layout.d.ts.map +1 -1
- package/dist/foundations/structures/layout.js +13 -1
- package/dist/foundations/structures/layout.js.map +1 -0
- package/dist/foundations/structures/portal.d.ts +17 -10
- package/dist/foundations/structures/portal.d.ts.map +1 -1
- package/dist/foundations/structures/portal.js +105 -1
- package/dist/foundations/structures/portal.js.map +1 -0
- package/dist/foundations/structures/presence.d.ts +11 -5
- package/dist/foundations/structures/presence.d.ts.map +1 -1
- package/dist/foundations/structures/presence.js +39 -1
- package/dist/foundations/structures/presence.js.map +1 -0
- package/dist/foundations/structures/slot.d.ts +11 -8
- package/dist/foundations/structures/slot.d.ts.map +1 -1
- package/dist/foundations/structures/slot.js +41 -1
- package/dist/foundations/structures/slot.js.map +1 -0
- package/dist/foundations/structures.d.ts +7 -14
- package/dist/foundations/structures.js +6 -1
- package/dist/foundations/utilities/aria.js +11 -1
- package/dist/foundations/utilities/aria.js.map +1 -0
- package/dist/foundations/utilities/compose-handlers.js +20 -1
- package/dist/foundations/utilities/compose-handlers.js.map +1 -0
- package/dist/foundations/utilities/compose-ref.d.ts +7 -4
- package/dist/foundations/utilities/compose-ref.d.ts.map +1 -1
- package/dist/foundations/utilities/compose-ref.js +18 -1
- package/dist/foundations/utilities/compose-ref.js.map +1 -0
- package/dist/foundations/utilities/merge-props.js +49 -1
- package/dist/foundations/utilities/merge-props.js.map +1 -0
- package/dist/fx/fx.d.ts +24 -21
- package/dist/fx/fx.d.ts.map +1 -1
- package/dist/fx/fx.js +212 -1
- package/dist/fx/fx.js.map +1 -0
- package/dist/fx/index.d.ts +4 -7
- package/dist/fx/index.js +4 -1
- package/dist/fx/noop.js +9 -1
- package/dist/fx/noop.js.map +1 -0
- package/dist/fx/timing.d.ts +24 -21
- package/dist/fx/timing.d.ts.map +1 -1
- package/dist/fx/timing.js +236 -1
- package/dist/fx/timing.js.map +1 -0
- package/dist/index.d.ts +21 -20
- package/dist/index.js +34 -1
- package/dist/index.js.map +1 -0
- package/dist/jsx/index.d.ts +1 -4
- package/dist/jsx/index.js +3 -1
- package/dist/jsx/types.d.ts +18 -25
- package/dist/jsx/types.d.ts.map +1 -1
- package/dist/jsx/types.js +1 -1
- package/dist/jsx/utils.d.ts +4 -3
- package/dist/jsx/utils.d.ts.map +1 -1
- package/dist/jsx/utils.js +19 -1
- package/dist/jsx/utils.js.map +1 -0
- package/dist/jsx-dev-runtime.d.ts +8 -0
- package/dist/jsx-dev-runtime.d.ts.map +1 -0
- package/dist/jsx-dev-runtime.js +32 -1
- package/dist/jsx-dev-runtime.js.map +1 -0
- package/dist/jsx-runtime.d.ts +12 -0
- package/dist/jsx-runtime.d.ts.map +1 -0
- package/dist/jsx-runtime.js +45 -1
- package/dist/jsx-runtime.js.map +1 -0
- package/dist/jsx-runtime2.d.ts +2 -0
- package/dist/jsx-runtime2.js +3 -0
- package/dist/renderer/children.js +293 -0
- package/dist/renderer/children.js.map +1 -0
- package/dist/renderer/cleanup.js +150 -1
- package/dist/renderer/cleanup.js.map +1 -0
- package/dist/renderer/dom.js +2439 -1
- package/dist/renderer/dom.js.map +1 -0
- package/dist/renderer/env.js +1 -0
- package/dist/renderer/evaluate.js +450 -1
- package/dist/renderer/evaluate.js.map +1 -0
- package/dist/renderer/fastpath.js +145 -1
- package/dist/renderer/fastpath.js.map +1 -0
- package/dist/renderer/index.js +24 -1
- package/dist/renderer/index.js.map +1 -0
- package/dist/renderer/keyed.js +119 -1
- package/dist/renderer/keyed.js.map +1 -0
- package/dist/renderer/reconcile.js +359 -1
- package/dist/renderer/reconcile.js.map +1 -0
- package/dist/renderer/types.js +1 -1
- package/dist/renderer/utils.js +220 -1
- package/dist/renderer/utils.js.map +1 -0
- package/dist/resources/index.d.ts +3 -9
- package/dist/resources/index.js +3 -1
- package/dist/router/index.d.ts +6 -10
- package/dist/router/index.js +5 -1
- package/dist/router/match.js +83 -1
- package/dist/router/match.js.map +1 -0
- package/dist/router/navigate.d.ts +20 -8
- package/dist/router/navigate.d.ts.map +1 -1
- package/dist/router/navigate.js +288 -1
- package/dist/router/navigate.js.map +1 -0
- package/dist/router/policy.d.ts +22 -0
- package/dist/router/policy.d.ts.map +1 -0
- package/dist/router/policy.js +116 -0
- package/dist/router/policy.js.map +1 -0
- package/dist/router/route-context.js +79 -0
- package/dist/router/route-context.js.map +1 -0
- package/dist/router/route.d.ts +101 -33
- package/dist/router/route.d.ts.map +1 -1
- package/dist/router/route.js +599 -1
- package/dist/router/route.js.map +1 -0
- package/dist/runtime/child-scope.d.ts +21 -0
- package/dist/runtime/child-scope.d.ts.map +1 -0
- package/dist/runtime/child-scope.js +77 -0
- package/dist/runtime/child-scope.js.map +1 -0
- package/dist/runtime/component.d.ts +67 -53
- package/dist/runtime/component.d.ts.map +1 -1
- package/dist/runtime/component.js +462 -1
- package/dist/runtime/component.js.map +1 -0
- package/dist/runtime/context.d.ts +28 -42
- package/dist/runtime/context.d.ts.map +1 -1
- package/dist/runtime/context.js +205 -1
- package/dist/runtime/context.js.map +1 -0
- package/dist/runtime/control.d.ts +43 -0
- package/dist/runtime/control.d.ts.map +1 -0
- package/dist/runtime/control.js +125 -0
- package/dist/runtime/control.js.map +1 -0
- package/dist/runtime/derive.d.ts +15 -6
- package/dist/runtime/derive.d.ts.map +1 -1
- package/dist/runtime/derive.js +134 -1
- package/dist/runtime/derive.js.map +1 -0
- package/dist/runtime/dev-namespace.js +57 -1
- package/dist/runtime/dev-namespace.js.map +1 -0
- package/dist/runtime/effect.d.ts +32 -0
- package/dist/runtime/effect.d.ts.map +1 -0
- package/dist/runtime/effect.js +146 -0
- package/dist/runtime/effect.js.map +1 -0
- package/dist/runtime/events.js +162 -1
- package/dist/runtime/events.js.map +1 -0
- package/dist/runtime/execution-model.js +15 -1
- package/dist/runtime/execution-model.js.map +1 -0
- package/dist/runtime/fastlane.js +204 -1
- package/dist/runtime/fastlane.js.map +1 -0
- package/dist/runtime/for-bench.d.ts +41 -0
- package/dist/runtime/for-bench.d.ts.map +1 -0
- package/dist/runtime/for-bench.js +173 -0
- package/dist/runtime/for-bench.js.map +1 -0
- package/dist/runtime/for.d.ts +62 -49
- package/dist/runtime/for.d.ts.map +1 -1
- package/dist/runtime/for.js +668 -1
- package/dist/runtime/for.js.map +1 -0
- package/dist/runtime/operations.d.ts +18 -15
- package/dist/runtime/operations.d.ts.map +1 -1
- package/dist/runtime/operations.js +209 -1
- package/dist/runtime/operations.js.map +1 -0
- package/dist/runtime/perf-metrics.js +64 -0
- package/dist/runtime/perf-metrics.js.map +1 -0
- package/dist/runtime/readable.d.ts +27 -0
- package/dist/runtime/readable.d.ts.map +1 -0
- package/dist/runtime/readable.js +118 -0
- package/dist/runtime/readable.js.map +1 -0
- package/dist/runtime/resource-cell.js +102 -1
- package/dist/runtime/resource-cell.js.map +1 -0
- package/dist/runtime/scheduler.d.ts +51 -35
- package/dist/runtime/scheduler.d.ts.map +1 -1
- package/dist/runtime/scheduler.js +328 -1
- package/dist/runtime/scheduler.js.map +1 -0
- package/dist/runtime/selector.d.ts +11 -0
- package/dist/runtime/selector.d.ts.map +1 -0
- package/dist/runtime/selector.js +188 -0
- package/dist/runtime/selector.js.map +1 -0
- package/dist/runtime/ssr-bridge.js +24 -1
- package/dist/runtime/ssr-bridge.js.map +1 -0
- package/dist/runtime/state.d.ts +11 -21
- package/dist/runtime/state.d.ts.map +1 -1
- package/dist/runtime/state.js +99 -1
- package/dist/runtime/state.js.map +1 -0
- package/dist/ssg/batch-render.d.ts +16 -0
- package/dist/ssg/batch-render.d.ts.map +1 -0
- package/dist/ssg/batch-render.js +84 -0
- package/dist/ssg/batch-render.js.map +1 -0
- package/dist/ssg/create-static-gen.d.ts +50 -0
- package/dist/ssg/create-static-gen.d.ts.map +1 -0
- package/dist/ssg/create-static-gen.js +282 -0
- package/dist/ssg/create-static-gen.js.map +1 -0
- package/dist/ssg/generate-metadata.d.ts +24 -0
- package/dist/ssg/generate-metadata.d.ts.map +1 -0
- package/dist/ssg/generate-metadata.js +94 -0
- package/dist/ssg/generate-metadata.js.map +1 -0
- package/dist/ssg/incremental-manifest.js +56 -0
- package/dist/ssg/incremental-manifest.js.map +1 -0
- package/dist/ssg/index.d.ts +8 -0
- package/dist/ssg/index.js +7 -0
- package/dist/ssg/resolve-ssg-data.d.ts +23 -0
- package/dist/ssg/resolve-ssg-data.d.ts.map +1 -0
- package/dist/ssg/resolve-ssg-data.js +46 -0
- package/dist/ssg/resolve-ssg-data.js.map +1 -0
- package/dist/ssg/route-utils.d.ts +16 -0
- package/dist/ssg/route-utils.d.ts.map +1 -0
- package/dist/ssg/route-utils.js +24 -0
- package/dist/ssg/route-utils.js.map +1 -0
- package/dist/ssg/types.d.ts +177 -0
- package/dist/ssg/types.d.ts.map +1 -0
- package/dist/ssg/write-static-files.d.ts +15 -0
- package/dist/ssg/write-static-files.d.ts.map +1 -0
- package/dist/ssg/write-static-files.js +73 -0
- package/dist/ssg/write-static-files.js.map +1 -0
- package/dist/ssr/attrs.js +93 -1
- package/dist/ssr/attrs.js.map +1 -0
- package/dist/ssr/context.d.ts +31 -32
- package/dist/ssr/context.d.ts.map +1 -1
- package/dist/ssr/context.js +63 -1
- package/dist/ssr/context.js.map +1 -0
- package/dist/ssr/errors.d.ts +6 -4
- package/dist/ssr/errors.d.ts.map +1 -1
- package/dist/ssr/errors.js +4 -1
- package/dist/ssr/errors.js.map +1 -0
- package/dist/ssr/escape.js +153 -1
- package/dist/ssr/escape.js.map +1 -0
- package/dist/ssr/index.d.ts +75 -46
- package/dist/ssr/index.d.ts.map +1 -1
- package/dist/ssr/index.js +543 -1
- package/dist/ssr/index.js.map +1 -0
- package/dist/ssr/render-keys.d.ts +27 -29
- package/dist/ssr/render-keys.d.ts.map +1 -1
- package/dist/ssr/render-keys.js +39 -1
- package/dist/ssr/render-keys.js.map +1 -0
- package/dist/ssr/sink.js +86 -1
- package/dist/ssr/sink.js.map +1 -0
- package/dist/ssr/stream-render.js +76 -1
- package/dist/ssr/stream-render.js.map +1 -0
- package/dist/ssr/types.d.ts +14 -13
- package/dist/ssr/types.d.ts.map +1 -1
- package/package.json +53 -48
- package/dist/_virtual/___vite-browser-external.js +0 -1
- package/dist/_virtual/__vite-browser-external.js +0 -1
- package/dist/_virtual/_commonjsHelpers.js +0 -1
- package/dist/_virtual/main.js +0 -1
- package/dist/_virtual/preload-helper.js +0 -1
- package/dist/bench/benchmark-entry.d.ts +0 -14
- package/dist/bench/benchmark-entry.d.ts.map +0 -1
- package/dist/common/errors.d.ts +0 -53
- package/dist/common/errors.d.ts.map +0 -1
- package/dist/common/index.d.ts +0 -14
- package/dist/common/index.d.ts.map +0 -1
- package/dist/dev/invariant.d.ts +0 -83
- package/dist/dev/invariant.d.ts.map +0 -1
- package/dist/dev/logger.d.ts +0 -13
- package/dist/dev/logger.d.ts.map +0 -1
- package/dist/dev/vite-plugin-askr.d.ts +0 -18
- package/dist/dev/vite-plugin-askr.d.ts.map +0 -1
- package/dist/dev/warnings.d.ts +0 -5
- package/dist/dev/warnings.d.ts.map +0 -1
- package/dist/for/for.d.ts +0 -16
- package/dist/for/for.d.ts.map +0 -1
- package/dist/for/for.js +0 -1
- package/dist/for/index.d.ts +0 -2
- package/dist/for/index.d.ts.map +0 -1
- package/dist/for/index.js +0 -1
- package/dist/foundations/core.d.ts +0 -23
- package/dist/foundations/core.d.ts.map +0 -1
- package/dist/foundations/core.js +0 -1
- package/dist/foundations/index.d.ts.map +0 -1
- package/dist/foundations/interactions/dismissable.d.ts +0 -58
- package/dist/foundations/interactions/dismissable.d.ts.map +0 -1
- package/dist/foundations/interactions/dismissable.js +0 -1
- package/dist/foundations/interactions/focusable.d.ts +0 -16
- package/dist/foundations/interactions/focusable.d.ts.map +0 -1
- package/dist/foundations/interactions/focusable.js +0 -1
- package/dist/foundations/interactions/hoverable.d.ts +0 -19
- package/dist/foundations/interactions/hoverable.d.ts.map +0 -1
- package/dist/foundations/interactions/hoverable.js +0 -1
- package/dist/foundations/interactions/index.d.ts +0 -5
- package/dist/foundations/interactions/index.d.ts.map +0 -1
- package/dist/foundations/interactions/interaction-policy.d.ts +0 -96
- package/dist/foundations/interactions/interaction-policy.d.ts.map +0 -1
- package/dist/foundations/interactions/pressable.d.ts +0 -54
- package/dist/foundations/interactions/pressable.d.ts.map +0 -1
- package/dist/foundations/interactions/roving-focus.d.ts +0 -117
- package/dist/foundations/interactions/roving-focus.d.ts.map +0 -1
- package/dist/foundations/interactions/roving-focus.js +0 -1
- package/dist/foundations/state/controllable.d.ts +0 -53
- package/dist/foundations/state/controllable.d.ts.map +0 -1
- package/dist/foundations/state/controllable.js +0 -1
- package/dist/foundations/state/index.d.ts +0 -2
- package/dist/foundations/state/index.d.ts.map +0 -1
- package/dist/foundations/structures/index.d.ts +0 -5
- package/dist/foundations/structures/index.d.ts.map +0 -1
- package/dist/foundations/structures.d.ts.map +0 -1
- package/dist/foundations/utilities/aria.d.ts +0 -13
- package/dist/foundations/utilities/aria.d.ts.map +0 -1
- package/dist/foundations/utilities/compose-handlers.d.ts +0 -34
- package/dist/foundations/utilities/compose-handlers.d.ts.map +0 -1
- package/dist/foundations/utilities/event-types.d.ts +0 -17
- package/dist/foundations/utilities/event-types.d.ts.map +0 -1
- package/dist/foundations/utilities/index.d.ts +0 -7
- package/dist/foundations/utilities/index.d.ts.map +0 -1
- package/dist/foundations/utilities/merge-props.d.ts +0 -2
- package/dist/foundations/utilities/merge-props.d.ts.map +0 -1
- package/dist/foundations/utilities/use-id.d.ts +0 -29
- package/dist/foundations/utilities/use-id.d.ts.map +0 -1
- package/dist/foundations/utilities/use-id.js +0 -1
- package/dist/fx/index.d.ts.map +0 -1
- package/dist/fx/noop.d.ts +0 -12
- package/dist/fx/noop.d.ts.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/jsx/index.d.ts.map +0 -1
- package/dist/jsx/jsx-dev-runtime.d.ts +0 -4
- package/dist/jsx/jsx-dev-runtime.d.ts.map +0 -1
- package/dist/jsx/jsx-runtime.d.ts +0 -10
- package/dist/jsx/jsx-runtime.d.ts.map +0 -1
- package/dist/node_modules/esbuild/lib/main.js +0 -65
- package/dist/renderer/cleanup.d.ts +0 -25
- package/dist/renderer/cleanup.d.ts.map +0 -1
- package/dist/renderer/dom.d.ts +0 -62
- package/dist/renderer/dom.d.ts.map +0 -1
- package/dist/renderer/evaluate.d.ts +0 -4
- package/dist/renderer/evaluate.d.ts.map +0 -1
- package/dist/renderer/fastpath.d.ts +0 -7
- package/dist/renderer/fastpath.d.ts.map +0 -1
- package/dist/renderer/index.d.ts +0 -6
- package/dist/renderer/index.d.ts.map +0 -1
- package/dist/renderer/keyed.d.ts +0 -23
- package/dist/renderer/keyed.d.ts.map +0 -1
- package/dist/renderer/reconcile.d.ts +0 -88
- package/dist/renderer/reconcile.d.ts.map +0 -1
- package/dist/renderer/types.d.ts +0 -3
- package/dist/renderer/types.d.ts.map +0 -1
- package/dist/renderer/utils.d.ts +0 -63
- package/dist/renderer/utils.d.ts.map +0 -1
- package/dist/resources/index.d.ts.map +0 -1
- package/dist/router/index.d.ts.map +0 -1
- package/dist/router/match.d.ts +0 -22
- package/dist/router/match.d.ts.map +0 -1
- package/dist/runtime/dev-namespace.d.ts +0 -31
- package/dist/runtime/dev-namespace.d.ts.map +0 -1
- package/dist/runtime/events.d.ts +0 -52
- package/dist/runtime/events.d.ts.map +0 -1
- package/dist/runtime/execution-model.d.ts +0 -4
- package/dist/runtime/execution-model.d.ts.map +0 -1
- package/dist/runtime/fastlane.d.ts +0 -27
- package/dist/runtime/fastlane.d.ts.map +0 -1
- package/dist/runtime/hydration.d.ts +0 -25
- package/dist/runtime/hydration.d.ts.map +0 -1
- package/dist/runtime/resource-cell.d.ts +0 -35
- package/dist/runtime/resource-cell.d.ts.map +0 -1
- package/dist/runtime/snapshot.d.ts +0 -25
- package/dist/runtime/snapshot.d.ts.map +0 -1
- package/dist/runtime/ssr-bridge.d.ts +0 -10
- package/dist/runtime/ssr-bridge.d.ts.map +0 -1
- package/dist/ssr/attrs.d.ts +0 -26
- package/dist/ssr/attrs.d.ts.map +0 -1
- package/dist/ssr/create-ssr.d.ts +0 -19
- package/dist/ssr/create-ssr.d.ts.map +0 -1
- package/dist/ssr/escape.d.ts +0 -38
- package/dist/ssr/escape.d.ts.map +0 -1
- package/dist/ssr/sink.d.ts +0 -23
- package/dist/ssr/sink.d.ts.map +0 -1
- package/dist/ssr/stream-render.d.ts +0 -7
- package/dist/ssr/stream-render.d.ts.map +0 -1
- package/dist/vite/index.js +0 -3
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { globalScheduler } from "./scheduler.js";
|
|
2
|
+
import { getCurrentInstance } from "./component.js";
|
|
3
|
+
//#region src/runtime/readable.ts
|
|
4
|
+
function markReadableUsage(source) {
|
|
5
|
+
if (source && typeof source === "function" && ("_hasBeenRead" in source || "_readers" in source)) source._hasBeenRead = true;
|
|
6
|
+
}
|
|
7
|
+
let currentDerivedSubscriber = null;
|
|
8
|
+
let suppressComponentReadTrackingDepth = 0;
|
|
9
|
+
let currentFineGrainedReadSources = null;
|
|
10
|
+
function recordReadableRead(source) {
|
|
11
|
+
if (currentFineGrainedReadSources) {
|
|
12
|
+
currentFineGrainedReadSources.add(source);
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
if (currentDerivedSubscriber) {
|
|
16
|
+
if (!currentDerivedSubscriber._pendingDependencySources) currentDerivedSubscriber._pendingDependencySources = /* @__PURE__ */ new Set();
|
|
17
|
+
currentDerivedSubscriber._pendingDependencySources.add(source);
|
|
18
|
+
}
|
|
19
|
+
if (suppressComponentReadTrackingDepth > 0) return;
|
|
20
|
+
const inst = getCurrentInstance();
|
|
21
|
+
if (!inst || inst._currentRenderToken === void 0) return;
|
|
22
|
+
if (!inst._pendingReadSources) inst._pendingReadSources = /* @__PURE__ */ new Set();
|
|
23
|
+
inst._pendingReadSources.add(source);
|
|
24
|
+
}
|
|
25
|
+
function withFineGrainedReadTracking(pendingSources, fn) {
|
|
26
|
+
const previousPendingSources = currentFineGrainedReadSources;
|
|
27
|
+
currentFineGrainedReadSources = pendingSources;
|
|
28
|
+
try {
|
|
29
|
+
return fn();
|
|
30
|
+
} finally {
|
|
31
|
+
currentFineGrainedReadSources = previousPendingSources;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
function finalizeReadableSubscriptions(instance) {
|
|
35
|
+
const newSet = instance._pendingReadSources;
|
|
36
|
+
const oldSet = instance._lastReadSources;
|
|
37
|
+
const token = instance._currentRenderToken;
|
|
38
|
+
if (token === void 0) return;
|
|
39
|
+
if (oldSet) {
|
|
40
|
+
for (const source of oldSet) if (!newSet?.has(source)) source._readers?.delete(instance);
|
|
41
|
+
}
|
|
42
|
+
instance.lastRenderToken = token;
|
|
43
|
+
if (newSet) for (const source of newSet) {
|
|
44
|
+
let readers = source._readers;
|
|
45
|
+
if (!readers) {
|
|
46
|
+
readers = /* @__PURE__ */ new Map();
|
|
47
|
+
source._readers = readers;
|
|
48
|
+
}
|
|
49
|
+
readers.set(instance, instance.lastRenderToken ?? 0);
|
|
50
|
+
}
|
|
51
|
+
instance._lastReadSources = newSet ?? /* @__PURE__ */ new Set();
|
|
52
|
+
instance._pendingReadSources = void 0;
|
|
53
|
+
instance._currentRenderToken = void 0;
|
|
54
|
+
}
|
|
55
|
+
function cleanupReadableSubscriptions(instance) {
|
|
56
|
+
const sources = instance._lastReadSources;
|
|
57
|
+
if (!sources || sources.size === 0) return;
|
|
58
|
+
for (const source of sources) source._readers?.delete(instance);
|
|
59
|
+
instance._lastReadSources = /* @__PURE__ */ new Set();
|
|
60
|
+
}
|
|
61
|
+
function withDerivedReadTracking(subscriber, fn) {
|
|
62
|
+
const prevDerivedSubscriber = currentDerivedSubscriber;
|
|
63
|
+
currentDerivedSubscriber = subscriber;
|
|
64
|
+
suppressComponentReadTrackingDepth += 1;
|
|
65
|
+
try {
|
|
66
|
+
return fn();
|
|
67
|
+
} finally {
|
|
68
|
+
suppressComponentReadTrackingDepth -= 1;
|
|
69
|
+
currentDerivedSubscriber = prevDerivedSubscriber;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
function syncDerivedDependencySubscriptions(subscriber, prevSources, nextSources) {
|
|
73
|
+
for (const source of prevSources) if (!nextSources.has(source)) source._derivedSubscribers?.delete(subscriber);
|
|
74
|
+
for (const source of nextSources) {
|
|
75
|
+
let subscribers = source._derivedSubscribers;
|
|
76
|
+
if (!subscribers) {
|
|
77
|
+
subscribers = /* @__PURE__ */ new Set();
|
|
78
|
+
source._derivedSubscribers = subscribers;
|
|
79
|
+
}
|
|
80
|
+
subscribers.add(subscriber);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
function clearDerivedDependencySubscriptions(subscriber, sources) {
|
|
84
|
+
for (const source of sources) source._derivedSubscribers?.delete(subscriber);
|
|
85
|
+
sources.clear();
|
|
86
|
+
}
|
|
87
|
+
function markReadableDerivedSubscribersDirty(source) {
|
|
88
|
+
const subscribers = source._derivedSubscribers;
|
|
89
|
+
if (!subscribers || subscribers.size === 0) return;
|
|
90
|
+
for (const subscriber of subscribers) subscriber._markDirty();
|
|
91
|
+
}
|
|
92
|
+
function markReactivePropsDirtySource(source) {
|
|
93
|
+
try {
|
|
94
|
+
globalThis.__ASKR_RENDERER?.markReactivePropsDirtySource?.(source);
|
|
95
|
+
} catch {}
|
|
96
|
+
}
|
|
97
|
+
function notifyReadableReaders(source) {
|
|
98
|
+
const readers = source._readers;
|
|
99
|
+
let didScheduleUpdate = false;
|
|
100
|
+
if (!readers || readers.size === 0) return false;
|
|
101
|
+
for (const [instance, token] of readers) {
|
|
102
|
+
if (instance.lastRenderToken !== token) continue;
|
|
103
|
+
if (instance.hasPendingUpdate) continue;
|
|
104
|
+
instance.hasPendingUpdate = true;
|
|
105
|
+
const task = instance._pendingFlushTask;
|
|
106
|
+
if (task) globalScheduler.enqueue(task);
|
|
107
|
+
else globalScheduler.enqueue(() => {
|
|
108
|
+
instance.hasPendingUpdate = false;
|
|
109
|
+
instance.notifyUpdate?.();
|
|
110
|
+
});
|
|
111
|
+
didScheduleUpdate = true;
|
|
112
|
+
}
|
|
113
|
+
return didScheduleUpdate;
|
|
114
|
+
}
|
|
115
|
+
//#endregion
|
|
116
|
+
export { cleanupReadableSubscriptions, clearDerivedDependencySubscriptions, finalizeReadableSubscriptions, markReactivePropsDirtySource, markReadableDerivedSubscribersDirty, markReadableUsage, notifyReadableReaders, recordReadableRead, syncDerivedDependencySubscriptions, withDerivedReadTracking, withFineGrainedReadTracking };
|
|
117
|
+
|
|
118
|
+
//# sourceMappingURL=readable.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"readable.js","names":[],"sources":["../../src/runtime/readable.ts"],"sourcesContent":["import { globalScheduler } from './scheduler';\nimport { getCurrentInstance, type ComponentInstance } from './component';\n\nexport interface DerivedSubscriber {\n _markDirty(): void;\n _pendingDependencySources?: Set<ReadableSource<unknown>>;\n}\n\nexport interface ReadableSource<T = unknown> {\n (): T;\n _hasBeenRead?: boolean;\n _readers?: Map<ComponentInstance, number>;\n _derivedSubscribers?: Set<DerivedSubscriber>;\n}\n\nexport function markReadableUsage(source: unknown): void {\n if (\n source &&\n typeof source === 'function' &&\n ('_hasBeenRead' in source || '_readers' in source)\n ) {\n (source as ReadableSource<unknown>)._hasBeenRead = true;\n }\n}\n\ntype RendererBridge = {\n markReactivePropsDirtySource?: (source: ReadableSource<unknown>) => void;\n};\n\nlet currentDerivedSubscriber: DerivedSubscriber | null = null;\nlet suppressComponentReadTrackingDepth = 0;\nlet currentFineGrainedReadSources: Set<ReadableSource<unknown>> | null = null;\n\nexport function recordReadableRead(source: ReadableSource<unknown>): void {\n if (currentFineGrainedReadSources) {\n currentFineGrainedReadSources.add(source);\n return;\n }\n\n if (currentDerivedSubscriber) {\n if (!currentDerivedSubscriber._pendingDependencySources) {\n currentDerivedSubscriber._pendingDependencySources = new Set();\n }\n currentDerivedSubscriber._pendingDependencySources.add(source);\n }\n\n if (suppressComponentReadTrackingDepth > 0) {\n return;\n }\n\n const inst = getCurrentInstance();\n if (!inst || inst._currentRenderToken === undefined) {\n return;\n }\n\n if (!inst._pendingReadSources) {\n inst._pendingReadSources = new Set();\n }\n inst._pendingReadSources.add(source);\n}\n\nexport function withFineGrainedReadTracking<T>(\n pendingSources: Set<ReadableSource<unknown>>,\n fn: () => T\n): T {\n const previousPendingSources = currentFineGrainedReadSources;\n currentFineGrainedReadSources = pendingSources;\n\n try {\n return fn();\n } finally {\n currentFineGrainedReadSources = previousPendingSources;\n }\n}\n\nexport function finalizeReadableSubscriptions(\n instance: ComponentInstance\n): void {\n const newSet = instance._pendingReadSources;\n const oldSet = instance._lastReadSources;\n const token = instance._currentRenderToken;\n\n if (token === undefined) {\n return;\n }\n\n if (oldSet) {\n for (const source of oldSet) {\n if (!newSet?.has(source)) {\n source._readers?.delete(instance);\n }\n }\n }\n\n instance.lastRenderToken = token;\n\n if (newSet) {\n for (const source of newSet) {\n let readers = source._readers;\n if (!readers) {\n readers = new Map();\n source._readers = readers;\n }\n readers.set(instance, instance.lastRenderToken ?? 0);\n }\n }\n\n instance._lastReadSources = newSet ?? new Set();\n instance._pendingReadSources = undefined;\n instance._currentRenderToken = undefined;\n}\n\nexport function cleanupReadableSubscriptions(\n instance: ComponentInstance\n): void {\n const sources = instance._lastReadSources;\n if (!sources || sources.size === 0) {\n return;\n }\n\n for (const source of sources) {\n source._readers?.delete(instance);\n }\n instance._lastReadSources = new Set();\n}\n\nexport function withDerivedReadTracking<T>(\n subscriber: DerivedSubscriber,\n fn: () => T\n): T {\n const prevDerivedSubscriber = currentDerivedSubscriber;\n currentDerivedSubscriber = subscriber;\n suppressComponentReadTrackingDepth += 1;\n\n try {\n return fn();\n } finally {\n suppressComponentReadTrackingDepth -= 1;\n currentDerivedSubscriber = prevDerivedSubscriber;\n }\n}\n\nexport function syncDerivedDependencySubscriptions(\n subscriber: DerivedSubscriber,\n prevSources: Set<ReadableSource<unknown>>,\n nextSources: Set<ReadableSource<unknown>>\n): void {\n for (const source of prevSources) {\n if (!nextSources.has(source)) {\n source._derivedSubscribers?.delete(subscriber);\n }\n }\n\n for (const source of nextSources) {\n let subscribers = source._derivedSubscribers;\n if (!subscribers) {\n subscribers = new Set();\n source._derivedSubscribers = subscribers;\n }\n subscribers.add(subscriber);\n }\n}\n\nexport function clearDerivedDependencySubscriptions(\n subscriber: DerivedSubscriber,\n sources: Set<ReadableSource<unknown>>\n): void {\n for (const source of sources) {\n source._derivedSubscribers?.delete(subscriber);\n }\n sources.clear();\n}\n\nexport function markReadableDerivedSubscribersDirty(\n source: ReadableSource<unknown>\n): void {\n const subscribers = source._derivedSubscribers;\n if (!subscribers || subscribers.size === 0) {\n return;\n }\n\n for (const subscriber of subscribers) {\n subscriber._markDirty();\n }\n}\n\nexport function markReactivePropsDirtySource(\n source: ReadableSource<unknown>\n): void {\n try {\n (\n globalThis as {\n __ASKR_RENDERER?: RendererBridge;\n }\n ).__ASKR_RENDERER?.markReactivePropsDirtySource?.(source);\n } catch {\n // Keep readable notifications side-effect safe.\n }\n}\n\nexport function notifyReadableReaders(\n source: ReadableSource<unknown>\n): boolean {\n const readers = source._readers;\n let didScheduleUpdate = false;\n\n if (!readers || readers.size === 0) {\n return false;\n }\n\n for (const [instance, token] of readers) {\n if (instance.lastRenderToken !== token) {\n continue;\n }\n if (instance.hasPendingUpdate) {\n continue;\n }\n\n instance.hasPendingUpdate = true;\n const task = instance._pendingFlushTask;\n if (task) {\n globalScheduler.enqueue(task);\n } else {\n globalScheduler.enqueue(() => {\n instance.hasPendingUpdate = false;\n instance.notifyUpdate?.();\n });\n }\n didScheduleUpdate = true;\n }\n\n return didScheduleUpdate;\n}\n"],"mappings":"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"}
|
|
@@ -1 +1,102 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import { logger } from "../dev/logger.js";
|
|
2
|
+
import { withAsyncResourceContext } from "./context.js";
|
|
3
|
+
import { getSSRBridge } from "./ssr-bridge.js";
|
|
4
|
+
//#region src/runtime/resource-cell.ts
|
|
5
|
+
/**
|
|
6
|
+
* Pure, component-agnostic ResourceCell state machine.
|
|
7
|
+
* - Holds value/pending/error/generation/controller
|
|
8
|
+
* - Exposes a stable `snapshot` object: { value, pending, error, refresh }
|
|
9
|
+
* - Uses `withAsyncResourceContext` to bind the synchronous execution step
|
|
10
|
+
* to a captured frame. Continuations after await do not see the frame.
|
|
11
|
+
*/
|
|
12
|
+
var ResourceCell = class {
|
|
13
|
+
constructor(fn, deps, resourceFrame) {
|
|
14
|
+
this.value = null;
|
|
15
|
+
this.pending = true;
|
|
16
|
+
this.error = null;
|
|
17
|
+
this.generation = 0;
|
|
18
|
+
this.controller = null;
|
|
19
|
+
this.deps = null;
|
|
20
|
+
this.resourceFrame = null;
|
|
21
|
+
this.subscribers = /* @__PURE__ */ new Set();
|
|
22
|
+
this.fn = fn;
|
|
23
|
+
this.deps = deps ? deps.slice() : null;
|
|
24
|
+
this.resourceFrame = resourceFrame;
|
|
25
|
+
this.snapshot = {
|
|
26
|
+
value: null,
|
|
27
|
+
pending: true,
|
|
28
|
+
error: null,
|
|
29
|
+
refresh: () => this.refresh()
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
setLoader(fn) {
|
|
33
|
+
this.fn = fn;
|
|
34
|
+
}
|
|
35
|
+
subscribe(cb) {
|
|
36
|
+
this.subscribers.add(cb);
|
|
37
|
+
return () => this.subscribers.delete(cb);
|
|
38
|
+
}
|
|
39
|
+
notifySubscribers() {
|
|
40
|
+
this.snapshot.value = this.value;
|
|
41
|
+
this.snapshot.pending = this.pending;
|
|
42
|
+
this.snapshot.error = this.error;
|
|
43
|
+
for (const cb of this.subscribers) cb();
|
|
44
|
+
}
|
|
45
|
+
start(ssr = false, notify = true) {
|
|
46
|
+
const generation = this.generation;
|
|
47
|
+
this.controller?.abort();
|
|
48
|
+
const controller = new AbortController();
|
|
49
|
+
this.controller = controller;
|
|
50
|
+
this.pending = true;
|
|
51
|
+
this.error = null;
|
|
52
|
+
if (notify) this.notifySubscribers();
|
|
53
|
+
let result;
|
|
54
|
+
try {
|
|
55
|
+
result = withAsyncResourceContext(this.resourceFrame, () => this.fn({ signal: controller.signal }));
|
|
56
|
+
} catch (err) {
|
|
57
|
+
this.pending = false;
|
|
58
|
+
this.error = err;
|
|
59
|
+
if (notify) this.notifySubscribers();
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
if (!(result instanceof Promise)) {
|
|
63
|
+
this.value = result;
|
|
64
|
+
this.pending = false;
|
|
65
|
+
this.error = null;
|
|
66
|
+
if (notify) this.notifySubscribers();
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
if (ssr) getSSRBridge().throwSSRDataMissing();
|
|
70
|
+
result.then((val) => {
|
|
71
|
+
if (this.generation !== generation) return;
|
|
72
|
+
if (this.controller !== controller) return;
|
|
73
|
+
this.value = val;
|
|
74
|
+
this.pending = false;
|
|
75
|
+
this.error = null;
|
|
76
|
+
this.notifySubscribers();
|
|
77
|
+
}).catch((err) => {
|
|
78
|
+
if (this.generation !== generation) return;
|
|
79
|
+
if (this.controller !== controller) return;
|
|
80
|
+
if (controller.signal.aborted || err instanceof Error && err.name === "AbortError" || typeof DOMException !== "undefined" && err instanceof DOMException && err.name === "AbortError") return;
|
|
81
|
+
this.pending = false;
|
|
82
|
+
this.error = err;
|
|
83
|
+
try {
|
|
84
|
+
if (this.ownerName) logger.error(`[Askr] Async resource error in ${this.ownerName}:`, err);
|
|
85
|
+
else logger.error("[Askr] Async resource error:", err);
|
|
86
|
+
} catch {}
|
|
87
|
+
this.notifySubscribers();
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
refresh() {
|
|
91
|
+
this.generation++;
|
|
92
|
+
this.controller?.abort();
|
|
93
|
+
this.start();
|
|
94
|
+
}
|
|
95
|
+
abort() {
|
|
96
|
+
this.controller?.abort();
|
|
97
|
+
}
|
|
98
|
+
};
|
|
99
|
+
//#endregion
|
|
100
|
+
export { ResourceCell };
|
|
101
|
+
|
|
102
|
+
//# sourceMappingURL=resource-cell.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resource-cell.js","names":[],"sources":["../../src/runtime/resource-cell.ts"],"sourcesContent":["import { withAsyncResourceContext, type ContextFrame } from './context';\nimport { logger } from '../dev/logger';\nimport { getSSRBridge } from './ssr-bridge';\n\n/**\n * Pure, component-agnostic ResourceCell state machine.\n * - Holds value/pending/error/generation/controller\n * - Exposes a stable `snapshot` object: { value, pending, error, refresh }\n * - Uses `withAsyncResourceContext` to bind the synchronous execution step\n * to a captured frame. Continuations after await do not see the frame.\n */\nexport class ResourceCell<U> {\n value: U | null = null;\n pending = true;\n error: Error | null = null;\n generation = 0;\n controller: AbortController | null = null;\n deps: unknown[] | null = null;\n resourceFrame: ContextFrame | null = null;\n\n // Optional debug label set by caller (component name) to improve logs\n ownerName?: string;\n\n private subscribers = new Set<() => void>();\n\n readonly snapshot: {\n value: U | null;\n pending: boolean;\n error: Error | null;\n refresh: () => void;\n };\n\n private fn: (opts: { signal: AbortSignal }) => Promise<U> | U;\n\n constructor(\n fn: (opts: { signal: AbortSignal }) => Promise<U> | U,\n deps: unknown[] | null,\n resourceFrame: ContextFrame | null\n ) {\n this.fn = fn;\n this.deps = deps ? deps.slice() : null;\n this.resourceFrame = resourceFrame;\n this.snapshot = {\n value: null,\n pending: true,\n error: null,\n refresh: () => this.refresh(),\n };\n }\n\n setLoader(fn: (opts: { signal: AbortSignal }) => Promise<U> | U): void {\n this.fn = fn;\n }\n\n subscribe(cb: () => void): () => void {\n this.subscribers.add(cb);\n return () => this.subscribers.delete(cb);\n }\n\n private notifySubscribers() {\n this.snapshot.value = this.value;\n this.snapshot.pending = this.pending;\n this.snapshot.error = this.error;\n for (const cb of this.subscribers) cb();\n }\n\n start(ssr = false, notify = true) {\n const generation = this.generation;\n\n this.controller?.abort();\n const controller = new AbortController();\n this.controller = controller;\n this.pending = true;\n this.error = null;\n if (notify) this.notifySubscribers();\n\n let result: Promise<U> | U;\n try {\n // Execute only the synchronous step inside the frozen resource frame.\n result = withAsyncResourceContext(this.resourceFrame, () =>\n this.fn({ signal: controller.signal })\n );\n } catch (err) {\n this.pending = false;\n this.error = err as Error;\n if (notify) this.notifySubscribers();\n return;\n }\n\n if (!(result instanceof Promise)) {\n this.value = result as U;\n this.pending = false;\n this.error = null;\n if (notify) this.notifySubscribers();\n return;\n }\n\n if (ssr) {\n // During SSR async results are disallowed\n getSSRBridge().throwSSRDataMissing();\n }\n\n (result as Promise<U>)\n .then((val) => {\n if (this.generation !== generation) return;\n if (this.controller !== controller) return;\n this.value = val;\n this.pending = false;\n this.error = null;\n this.notifySubscribers();\n })\n .catch((err) => {\n if (this.generation !== generation) return;\n if (this.controller !== controller) return;\n\n const isAbortError =\n controller.signal.aborted ||\n (err instanceof Error && err.name === 'AbortError') ||\n (typeof DOMException !== 'undefined' &&\n err instanceof DOMException &&\n err.name === 'AbortError');\n\n if (isAbortError) {\n return;\n }\n\n this.pending = false;\n this.error = err as Error;\n try {\n if (this.ownerName) {\n logger.error(\n `[Askr] Async resource error in ${this.ownerName}:`,\n err\n );\n } else {\n logger.error('[Askr] Async resource error:', err);\n }\n } catch {\n /* ignore logging errors */\n }\n this.notifySubscribers();\n });\n }\n\n refresh() {\n this.generation++;\n this.controller?.abort();\n this.start();\n }\n\n abort() {\n this.controller?.abort();\n }\n}\n"],"mappings":";;;;;;;;;;;AAWA,IAAa,eAAb,MAA6B;CAuB3B,YACE,IACA,MACA,eACA;eA1BgB;iBACR;eACY;oBACT;oBACwB;cACZ;uBACY;qCAKf,IAAI,KAAiB;AAgBzC,OAAK,KAAK;AACV,OAAK,OAAO,OAAO,KAAK,OAAO,GAAG;AAClC,OAAK,gBAAgB;AACrB,OAAK,WAAW;GACd,OAAO;GACP,SAAS;GACT,OAAO;GACP,eAAe,KAAK,SAAS;GAC9B;;CAGH,UAAU,IAA6D;AACrE,OAAK,KAAK;;CAGZ,UAAU,IAA4B;AACpC,OAAK,YAAY,IAAI,GAAG;AACxB,eAAa,KAAK,YAAY,OAAO,GAAG;;CAG1C,oBAA4B;AAC1B,OAAK,SAAS,QAAQ,KAAK;AAC3B,OAAK,SAAS,UAAU,KAAK;AAC7B,OAAK,SAAS,QAAQ,KAAK;AAC3B,OAAK,MAAM,MAAM,KAAK,YAAa,KAAI;;CAGzC,MAAM,MAAM,OAAO,SAAS,MAAM;EAChC,MAAM,aAAa,KAAK;AAExB,OAAK,YAAY,OAAO;EACxB,MAAM,aAAa,IAAI,iBAAiB;AACxC,OAAK,aAAa;AAClB,OAAK,UAAU;AACf,OAAK,QAAQ;AACb,MAAI,OAAQ,MAAK,mBAAmB;EAEpC,IAAI;AACJ,MAAI;AAEF,YAAS,yBAAyB,KAAK,qBACrC,KAAK,GAAG,EAAE,QAAQ,WAAW,QAAQ,CAAC,CACvC;WACM,KAAK;AACZ,QAAK,UAAU;AACf,QAAK,QAAQ;AACb,OAAI,OAAQ,MAAK,mBAAmB;AACpC;;AAGF,MAAI,EAAE,kBAAkB,UAAU;AAChC,QAAK,QAAQ;AACb,QAAK,UAAU;AACf,QAAK,QAAQ;AACb,OAAI,OAAQ,MAAK,mBAAmB;AACpC;;AAGF,MAAI,IAEF,eAAc,CAAC,qBAAqB;AAGrC,SACE,MAAM,QAAQ;AACb,OAAI,KAAK,eAAe,WAAY;AACpC,OAAI,KAAK,eAAe,WAAY;AACpC,QAAK,QAAQ;AACb,QAAK,UAAU;AACf,QAAK,QAAQ;AACb,QAAK,mBAAmB;IACxB,CACD,OAAO,QAAQ;AACd,OAAI,KAAK,eAAe,WAAY;AACpC,OAAI,KAAK,eAAe,WAAY;AASpC,OANE,WAAW,OAAO,WACjB,eAAe,SAAS,IAAI,SAAS,gBACrC,OAAO,iBAAiB,eACvB,eAAe,gBACf,IAAI,SAAS,aAGf;AAGF,QAAK,UAAU;AACf,QAAK,QAAQ;AACb,OAAI;AACF,QAAI,KAAK,UACP,QAAO,MACL,kCAAkC,KAAK,UAAU,IACjD,IACD;QAED,QAAO,MAAM,gCAAgC,IAAI;WAE7C;AAGR,QAAK,mBAAmB;IACxB;;CAGN,UAAU;AACR,OAAK;AACL,OAAK,YAAY,OAAO;AACxB,OAAK,OAAO;;CAGd,QAAQ;AACN,OAAK,YAAY,OAAO"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
//#region src/runtime/scheduler.d.ts
|
|
1
2
|
/**
|
|
2
3
|
* Serialized update scheduler — safer design (no inline execution, explicit flush)
|
|
3
4
|
*
|
|
@@ -9,41 +10,56 @@
|
|
|
9
10
|
* - `waitForFlush()` is race-free with a monotonic `flushVersion`.
|
|
10
11
|
*/
|
|
11
12
|
type Task = () => void;
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
13
|
+
type SchedulerLane = 'derived' | 'component' | 'reactive' | 'post';
|
|
14
|
+
declare class Scheduler {
|
|
15
|
+
private lanes;
|
|
16
|
+
private running;
|
|
17
|
+
private inHandler;
|
|
18
|
+
private depth;
|
|
19
|
+
private executionDepth;
|
|
20
|
+
private flushVersion;
|
|
21
|
+
private kickScheduled;
|
|
22
|
+
private allowSyncProgress;
|
|
23
|
+
private waiters;
|
|
24
|
+
private taskCount;
|
|
25
|
+
private hasPendingTasks;
|
|
26
|
+
private getPendingTaskCount;
|
|
27
|
+
private compactLane;
|
|
28
|
+
private scheduleFlushKick;
|
|
29
|
+
enqueue(task: Task): void;
|
|
30
|
+
enqueueInLane(lane: SchedulerLane, task: Task): void;
|
|
31
|
+
flush(): void;
|
|
32
|
+
private finalizeFlush;
|
|
33
|
+
runWithSyncProgress<T>(fn: () => T): T;
|
|
34
|
+
waitForFlush(targetVersion?: number, timeoutMs?: number): Promise<void>;
|
|
35
|
+
getState(): {
|
|
36
|
+
queueLength: number;
|
|
37
|
+
running: boolean;
|
|
38
|
+
depth: number;
|
|
39
|
+
executionDepth: number;
|
|
40
|
+
taskCount: number;
|
|
41
|
+
flushVersion: number;
|
|
42
|
+
laneQueues: {
|
|
43
|
+
derived: number;
|
|
44
|
+
component: number;
|
|
45
|
+
reactive: number;
|
|
46
|
+
post: number;
|
|
38
47
|
};
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
48
|
+
inHandler: boolean;
|
|
49
|
+
allowSyncProgress: boolean;
|
|
50
|
+
};
|
|
51
|
+
getFlushVersion(): number;
|
|
52
|
+
flushIfQueued(): void;
|
|
53
|
+
runInHandlerScope<T>(fn: () => T, flushMode?: 'defer' | 'sync'): T;
|
|
54
|
+
setInHandler(v: boolean): void;
|
|
55
|
+
isInHandler(): boolean;
|
|
56
|
+
isExecuting(): boolean;
|
|
57
|
+
clearPendingSyncTasks(): number;
|
|
58
|
+
private resolveWaiters;
|
|
44
59
|
}
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
60
|
+
declare const globalScheduler: Scheduler;
|
|
61
|
+
declare function isSchedulerExecuting(): boolean;
|
|
62
|
+
declare function scheduleEventHandler(handler: EventListener): EventListener;
|
|
63
|
+
//#endregion
|
|
64
|
+
export { SchedulerLane, scheduleEventHandler };
|
|
49
65
|
//# sourceMappingURL=scheduler.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scheduler.d.ts","
|
|
1
|
+
{"version":3,"file":"scheduler.d.ts","names":[],"sources":["../../src/runtime/scheduler.ts"],"mappings":";;;;;;;AAmBA;;;;KADK,IAAA;AAAA,KACO,aAAA;AAAA,cA8BC,SAAA;EAAA,QACH,KAAA;EAAA,QAOA,OAAA;EAAA,QACA,SAAA;EAAA,QACA,KAAA;EAAA,QACA,cAAA;EAAA,QAGA,YAAA;EAAA,QAGA,aAAA;EAAA,QAGA,iBAAA;EAAA,QAGA,OAAA;EAAA,QAQA,SAAA;EAAA,QAEA,eAAA;EAAA,QAUA,mBAAA;EAAA,QASA,WAAA;EAAA,QAmBA,iBAAA;EA2BR,OAAA,CAAQ,IAAA,EAAM,IAAA;EAId,aAAA,CAAc,IAAA,EAAM,aAAA,EAAe,IAAA,EAAM,IAAA;EAuBzC,KAAA,CAAA;EAAA,QAoFQ,aAAA;EAIR,mBAAA,GAAA,CAAuB,EAAA,QAAU,CAAA,GAAI,CAAA;EAmErC,YAAA,CAAa,aAAA,WAAwB,SAAA,YAAmB,OAAA;EAgCxD,QAAA,CAAA;;;;;;;;;;;;;;;;EAsBA,eAAA,CAAA;EAIA,aAAA,CAAA;EAMA,iBAAA,GAAA,CAAqB,EAAA,QAAU,CAAA,EAAG,SAAA,sBAAwC,CAAA;EAmB1E,YAAA,CAAa,CAAA;EAOb,WAAA,CAAA;EAIA,WAAA,CAAA;EAKA,qBAAA,CAAA;EAAA,QAgCQ,cAAA;AAAA;AAAA,cAmBG,eAAA,EAAe,SAAA;AAAA,iBAEZ,oBAAA,CAAA;AAAA,iBAIA,oBAAA,CAAqB,OAAA,EAAS,aAAA,GAAgB,aAAA"}
|