kiru 0.54.4 → 1.0.1
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/dist/{appContext.d.ts → appHandle.d.ts} +4 -4
- package/dist/appHandle.d.ts.map +1 -0
- package/dist/{appContext.js → appHandle.js} +12 -9
- package/dist/appHandle.js.map +1 -0
- package/dist/components/derive.d.ts +10 -8
- package/dist/components/derive.d.ts.map +1 -1
- package/dist/components/derive.js +50 -47
- package/dist/components/derive.js.map +1 -1
- package/dist/components/index.d.ts +0 -1
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +0 -1
- package/dist/components/index.js.map +1 -1
- package/dist/components/lazy.d.ts.map +1 -1
- package/dist/components/lazy.js +5 -4
- package/dist/components/lazy.js.map +1 -1
- package/dist/components/portal.d.ts.map +1 -1
- package/dist/components/portal.js +2 -3
- package/dist/components/portal.js.map +1 -1
- package/dist/components/transition.d.ts +3 -2
- package/dist/components/transition.d.ts.map +1 -1
- package/dist/components/transition.js +29 -26
- package/dist/components/transition.js.map +1 -1
- package/dist/constants.d.ts +1 -5
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +1 -5
- package/dist/constants.js.map +1 -1
- package/dist/context.d.ts +1 -1
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +25 -19
- package/dist/context.js.map +1 -1
- package/dist/devtools.d.ts +7 -0
- package/dist/devtools.d.ts.map +1 -0
- package/dist/devtools.js +15 -0
- package/dist/devtools.js.map +1 -0
- package/dist/dom.d.ts.map +1 -1
- package/dist/dom.js +25 -58
- package/dist/dom.js.map +1 -1
- package/dist/globalContext.d.ts +15 -16
- package/dist/globalContext.d.ts.map +1 -1
- package/dist/globalContext.js +36 -46
- package/dist/globalContext.js.map +1 -1
- package/dist/globals.d.ts +1 -4
- package/dist/globals.d.ts.map +1 -1
- package/dist/globals.js +1 -4
- package/dist/globals.js.map +1 -1
- package/dist/headlessRender.d.ts +6 -0
- package/dist/headlessRender.d.ts.map +1 -0
- package/dist/{recursiveRender.js → headlessRender.js} +17 -16
- package/dist/headlessRender.js.map +1 -0
- package/dist/hmr.d.ts +5 -7
- package/dist/hmr.d.ts.map +1 -1
- package/dist/hmr.js +27 -32
- package/dist/hmr.js.map +1 -1
- package/dist/hooks/index.d.ts +3 -14
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +3 -14
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/onBeforeMount.d.ts +9 -0
- package/dist/hooks/onBeforeMount.d.ts.map +1 -0
- package/dist/hooks/onBeforeMount.js +12 -0
- package/dist/hooks/onBeforeMount.js.map +1 -0
- package/dist/hooks/onCleanup.d.ts +8 -0
- package/dist/hooks/onCleanup.d.ts.map +1 -0
- package/dist/hooks/onCleanup.js +15 -0
- package/dist/hooks/onCleanup.js.map +1 -0
- package/dist/hooks/onMount.d.ts +9 -0
- package/dist/hooks/onMount.d.ts.map +1 -0
- package/dist/hooks/onMount.js +12 -0
- package/dist/hooks/onMount.js.map +1 -0
- package/dist/hooks/utils.d.ts +2 -62
- package/dist/hooks/utils.d.ts.map +1 -1
- package/dist/hooks/utils.js +22 -144
- package/dist/hooks/utils.js.map +1 -1
- package/dist/index.d.ts +8 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -6
- package/dist/index.js.map +1 -1
- package/dist/profiling.d.ts +15 -14
- package/dist/profiling.d.ts.map +1 -1
- package/dist/profiling.js +9 -4
- package/dist/profiling.js.map +1 -1
- package/dist/reconciler.d.ts.map +1 -1
- package/dist/reconciler.js +12 -25
- package/dist/reconciler.js.map +1 -1
- package/dist/ref.d.ts +4 -0
- package/dist/ref.d.ts.map +1 -0
- package/dist/ref.js +4 -0
- package/dist/ref.js.map +1 -0
- package/dist/renderToString.js +1 -1
- package/dist/renderToString.js.map +1 -1
- package/dist/router/context.d.ts.map +1 -1
- package/dist/router/context.js +1 -2
- package/dist/router/context.js.map +1 -1
- package/dist/router/fileRouter.d.ts +1 -1
- package/dist/router/fileRouter.d.ts.map +1 -1
- package/dist/router/fileRouter.js +17 -11
- package/dist/router/fileRouter.js.map +1 -1
- package/dist/router/fileRouterController.d.ts.map +1 -1
- package/dist/router/fileRouterController.js +68 -55
- package/dist/router/fileRouterController.js.map +1 -1
- package/dist/router/link.d.ts.map +1 -1
- package/dist/router/link.js +19 -23
- package/dist/router/link.js.map +1 -1
- package/dist/router/server/index.d.ts.map +1 -1
- package/dist/router/server/index.js +14 -11
- package/dist/router/server/index.js.map +1 -1
- package/dist/router/types.d.ts +11 -6
- package/dist/router/types.d.ts.map +1 -1
- package/dist/scheduler.d.ts +1 -0
- package/dist/scheduler.d.ts.map +1 -1
- package/dist/scheduler.js +65 -52
- package/dist/scheduler.js.map +1 -1
- package/dist/signals/base.d.ts +0 -1
- package/dist/signals/base.d.ts.map +1 -1
- package/dist/signals/base.js +13 -36
- package/dist/signals/base.js.map +1 -1
- package/dist/signals/computed.d.ts +0 -2
- package/dist/signals/computed.d.ts.map +1 -1
- package/dist/signals/computed.js +1 -40
- package/dist/signals/computed.js.map +1 -1
- package/dist/signals/effect.d.ts +15 -14
- package/dist/signals/effect.d.ts.map +1 -1
- package/dist/signals/effect.js +65 -37
- package/dist/signals/effect.js.map +1 -1
- package/dist/signals/globals.d.ts +0 -5
- package/dist/signals/globals.d.ts.map +1 -1
- package/dist/signals/globals.js +0 -6
- package/dist/signals/globals.js.map +1 -1
- package/dist/signals/index.d.ts +4 -4
- package/dist/signals/index.d.ts.map +1 -1
- package/dist/signals/index.js +4 -4
- package/dist/signals/index.js.map +1 -1
- package/dist/signals/{for.d.ts → jsx.d.ts} +8 -1
- package/dist/signals/jsx.d.ts.map +1 -0
- package/dist/signals/{for.js → jsx.js} +4 -1
- package/dist/signals/jsx.js.map +1 -0
- package/dist/signals/tracking.d.ts +23 -0
- package/dist/signals/tracking.d.ts.map +1 -0
- package/dist/signals/tracking.js +51 -0
- package/dist/signals/tracking.js.map +1 -0
- package/dist/signals/types.d.ts +1 -1
- package/dist/signals/types.d.ts.map +1 -1
- package/dist/signals/utils.d.ts +2 -1
- package/dist/signals/utils.d.ts.map +1 -1
- package/dist/signals/utils.js +9 -2
- package/dist/signals/utils.js.map +1 -1
- package/dist/ssr/client.d.ts +3 -3
- package/dist/ssr/client.d.ts.map +1 -1
- package/dist/ssr/client.js.map +1 -1
- package/dist/ssr/server.js +1 -1
- package/dist/ssr/server.js.map +1 -1
- package/dist/statefulPromise.d.ts +22 -0
- package/dist/statefulPromise.d.ts.map +1 -0
- package/dist/statefulPromise.js +94 -0
- package/dist/statefulPromise.js.map +1 -0
- package/dist/types.d.ts +35 -49
- package/dist/types.d.ts.map +1 -1
- package/dist/types.dom.d.ts +4 -7
- package/dist/types.dom.d.ts.map +1 -1
- package/dist/types.utils.d.ts +3 -4
- package/dist/types.utils.d.ts.map +1 -1
- package/dist/utils/vdom.d.ts +8 -6
- package/dist/utils/vdom.d.ts.map +1 -1
- package/dist/utils/vdom.js +32 -9
- package/dist/utils/vdom.js.map +1 -1
- package/dist/viewTransitions.d.ts +7 -0
- package/dist/viewTransitions.d.ts.map +1 -0
- package/dist/viewTransitions.js +71 -0
- package/dist/viewTransitions.js.map +1 -0
- package/package.json +1 -1
- package/src/{appContext.ts → appHandle.ts} +21 -16
- package/src/components/derive.ts +74 -69
- package/src/components/index.ts +0 -1
- package/src/components/lazy.ts +5 -4
- package/src/components/portal.ts +2 -3
- package/src/components/transition.ts +33 -35
- package/src/constants.ts +0 -8
- package/src/context.ts +30 -23
- package/src/devtools.ts +16 -0
- package/src/dom.ts +31 -65
- package/src/globalContext.ts +57 -74
- package/src/globals.ts +1 -5
- package/src/{recursiveRender.ts → headlessRender.ts} +18 -18
- package/src/hmr.ts +29 -38
- package/src/hooks/index.ts +3 -14
- package/src/hooks/onBeforeMount.ts +12 -0
- package/src/hooks/onCleanup.ts +15 -0
- package/src/hooks/onMount.ts +12 -0
- package/src/hooks/utils.ts +28 -238
- package/src/index.ts +14 -6
- package/src/profiling.ts +22 -20
- package/src/reconciler.ts +18 -30
- package/src/ref.ts +6 -0
- package/src/renderToString.ts +1 -1
- package/src/router/context.ts +1 -2
- package/src/router/fileRouter.ts +23 -13
- package/src/router/fileRouterController.ts +72 -64
- package/src/router/link.ts +11 -25
- package/src/router/server/index.ts +24 -13
- package/src/router/types.ts +15 -8
- package/src/scheduler.ts +74 -71
- package/src/signals/base.ts +12 -41
- package/src/signals/computed.ts +1 -62
- package/src/signals/effect.ts +95 -48
- package/src/signals/globals.ts +0 -7
- package/src/signals/index.ts +4 -4
- package/src/signals/{for.ts → jsx.ts} +10 -0
- package/src/signals/tracking.ts +69 -0
- package/src/signals/types.ts +1 -1
- package/src/signals/utils.ts +9 -1
- package/src/ssr/client.ts +4 -4
- package/src/ssr/server.ts +2 -2
- package/src/statefulPromise.ts +136 -0
- package/src/types.dom.ts +4 -8
- package/src/types.ts +44 -59
- package/src/types.utils.ts +3 -4
- package/src/utils/vdom.ts +44 -15
- package/src/viewTransitions.ts +88 -0
- package/dist/appContext.d.ts.map +0 -1
- package/dist/appContext.js.map +0 -1
- package/dist/components/memo.d.ts +0 -10
- package/dist/components/memo.d.ts.map +0 -1
- package/dist/components/memo.js +0 -23
- package/dist/components/memo.js.map +0 -1
- package/dist/form/index.d.ts +0 -4
- package/dist/form/index.d.ts.map +0 -1
- package/dist/form/index.js +0 -518
- package/dist/form/index.js.map +0 -1
- package/dist/form/types.d.ts +0 -122
- package/dist/form/types.d.ts.map +0 -1
- package/dist/form/types.js +0 -2
- package/dist/form/types.js.map +0 -1
- package/dist/form/utils.d.ts +0 -3
- package/dist/form/utils.d.ts.map +0 -1
- package/dist/form/utils.js +0 -16
- package/dist/form/utils.js.map +0 -1
- package/dist/hooks/useAsync.d.ts +0 -18
- package/dist/hooks/useAsync.d.ts.map +0 -1
- package/dist/hooks/useAsync.js +0 -96
- package/dist/hooks/useAsync.js.map +0 -1
- package/dist/hooks/useCallback.d.ts +0 -7
- package/dist/hooks/useCallback.d.ts.map +0 -1
- package/dist/hooks/useCallback.js +0 -30
- package/dist/hooks/useCallback.js.map +0 -1
- package/dist/hooks/useContext.d.ts +0 -7
- package/dist/hooks/useContext.d.ts.map +0 -1
- package/dist/hooks/useContext.js +0 -59
- package/dist/hooks/useContext.js.map +0 -1
- package/dist/hooks/useEffect.d.ts +0 -8
- package/dist/hooks/useEffect.d.ts.map +0 -1
- package/dist/hooks/useEffect.js +0 -34
- package/dist/hooks/useEffect.js.map +0 -1
- package/dist/hooks/useEffectEvent.d.ts +0 -8
- package/dist/hooks/useEffectEvent.d.ts.map +0 -1
- package/dist/hooks/useEffectEvent.js +0 -23
- package/dist/hooks/useEffectEvent.js.map +0 -1
- package/dist/hooks/useId.d.ts +0 -8
- package/dist/hooks/useId.d.ts.map +0 -1
- package/dist/hooks/useId.js +0 -35
- package/dist/hooks/useId.js.map +0 -1
- package/dist/hooks/useLayoutEffect.d.ts +0 -8
- package/dist/hooks/useLayoutEffect.d.ts.map +0 -1
- package/dist/hooks/useLayoutEffect.js +0 -34
- package/dist/hooks/useLayoutEffect.js.map +0 -1
- package/dist/hooks/useMemo.d.ts +0 -8
- package/dist/hooks/useMemo.d.ts.map +0 -1
- package/dist/hooks/useMemo.js +0 -31
- package/dist/hooks/useMemo.js.map +0 -1
- package/dist/hooks/usePromise.d.ts +0 -8
- package/dist/hooks/usePromise.d.ts.map +0 -1
- package/dist/hooks/usePromise.js +0 -90
- package/dist/hooks/usePromise.js.map +0 -1
- package/dist/hooks/useReducer.d.ts +0 -7
- package/dist/hooks/useReducer.d.ts.map +0 -1
- package/dist/hooks/useReducer.js +0 -44
- package/dist/hooks/useReducer.js.map +0 -1
- package/dist/hooks/useRef.d.ts +0 -10
- package/dist/hooks/useRef.d.ts.map +0 -1
- package/dist/hooks/useRef.js +0 -29
- package/dist/hooks/useRef.js.map +0 -1
- package/dist/hooks/useState.d.ts +0 -7
- package/dist/hooks/useState.d.ts.map +0 -1
- package/dist/hooks/useState.js +0 -54
- package/dist/hooks/useState.js.map +0 -1
- package/dist/hooks/useSyncExternalStore.d.ts +0 -8
- package/dist/hooks/useSyncExternalStore.d.ts.map +0 -1
- package/dist/hooks/useSyncExternalStore.js +0 -50
- package/dist/hooks/useSyncExternalStore.js.map +0 -1
- package/dist/hooks/useViewTransition.d.ts +0 -10
- package/dist/hooks/useViewTransition.d.ts.map +0 -1
- package/dist/hooks/useViewTransition.js +0 -27
- package/dist/hooks/useViewTransition.js.map +0 -1
- package/dist/recursiveRender.d.ts +0 -7
- package/dist/recursiveRender.d.ts.map +0 -1
- package/dist/recursiveRender.js.map +0 -1
- package/dist/signals/for.d.ts.map +0 -1
- package/dist/signals/for.js.map +0 -1
- package/dist/signals/watch.d.ts +0 -21
- package/dist/signals/watch.d.ts.map +0 -1
- package/dist/signals/watch.js +0 -86
- package/dist/signals/watch.js.map +0 -1
- package/dist/store.d.ts +0 -28
- package/dist/store.d.ts.map +0 -1
- package/dist/store.js +0 -166
- package/dist/store.js.map +0 -1
- package/dist/swr.d.ts +0 -63
- package/dist/swr.d.ts.map +0 -1
- package/dist/swr.js +0 -236
- package/dist/swr.js.map +0 -1
- package/dist/utils/promise.d.ts +0 -16
- package/dist/utils/promise.d.ts.map +0 -1
- package/dist/utils/promise.js +0 -14
- package/dist/utils/promise.js.map +0 -1
- package/src/components/memo.ts +0 -39
- package/src/form/index.ts +0 -676
- package/src/form/types.ts +0 -262
- package/src/form/utils.ts +0 -19
- package/src/hooks/useAsync.ts +0 -121
- package/src/hooks/useCallback.ts +0 -32
- package/src/hooks/useContext.ts +0 -79
- package/src/hooks/useEffect.ts +0 -40
- package/src/hooks/useEffectEvent.ts +0 -24
- package/src/hooks/useId.ts +0 -42
- package/src/hooks/useLayoutEffect.ts +0 -43
- package/src/hooks/useMemo.ts +0 -34
- package/src/hooks/usePromise.ts +0 -126
- package/src/hooks/useReducer.ts +0 -50
- package/src/hooks/useRef.ts +0 -40
- package/src/hooks/useState.ts +0 -62
- package/src/hooks/useSyncExternalStore.ts +0 -59
- package/src/hooks/useViewTransition.ts +0 -25
- package/src/signals/watch.ts +0 -139
- package/src/store.ts +0 -245
- package/src/swr.ts +0 -351
- package/src/utils/promise.ts +0 -26
package/dist/signals/effect.js
CHANGED
|
@@ -1,44 +1,72 @@
|
|
|
1
|
+
import { __DEV__ } from "../env.js";
|
|
2
|
+
import { effectQueue } from "./globals.js";
|
|
3
|
+
import { executeWithTracking } from "./tracking.js";
|
|
4
|
+
import { latest, generateRandomID, call, registerVNodeCleanup, } from "../utils/index.js";
|
|
1
5
|
import { node } from "../globals.js";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
tracking.stack.push(observations);
|
|
6
|
+
export class Effect {
|
|
7
|
+
constructor(callback, deps) {
|
|
8
|
+
this.id = generateRandomID();
|
|
9
|
+
this.callback = callback;
|
|
10
|
+
this.deps = deps;
|
|
11
|
+
this.unsubs = new Map();
|
|
12
|
+
this.isRunning = false;
|
|
13
|
+
this.cleanup = null;
|
|
14
|
+
if (__DEV__ && "window" in globalThis) {
|
|
15
|
+
window.__kiru.HMRContext.moduleEffects.push(this);
|
|
16
|
+
}
|
|
17
|
+
const n = node.current;
|
|
18
|
+
if (n) {
|
|
19
|
+
registerVNodeCleanup(n, this.id, this.stop.bind(this));
|
|
20
|
+
}
|
|
21
|
+
this.start();
|
|
19
22
|
}
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
if (observations.has(id))
|
|
24
|
-
continue;
|
|
25
|
-
unsub();
|
|
26
|
-
subs.delete(id);
|
|
23
|
+
start() {
|
|
24
|
+
if (this.isRunning) {
|
|
25
|
+
return;
|
|
27
26
|
}
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
subs.set(id, unsub);
|
|
27
|
+
this.isRunning = true;
|
|
28
|
+
// postpone execution during HMR
|
|
29
|
+
if (__DEV__ &&
|
|
30
|
+
"window" in globalThis &&
|
|
31
|
+
window.__kiru.HMRContext?.isReplacement()) {
|
|
32
|
+
return queueMicrotask(() => {
|
|
33
|
+
if (this.isRunning) {
|
|
34
|
+
Effect.run(this);
|
|
35
|
+
}
|
|
36
|
+
});
|
|
39
37
|
}
|
|
40
|
-
|
|
38
|
+
Effect.run(this);
|
|
39
|
+
}
|
|
40
|
+
stop() {
|
|
41
|
+
effectQueue.delete(this.id);
|
|
42
|
+
this.unsubs.forEach(call);
|
|
43
|
+
this.unsubs.clear();
|
|
44
|
+
this.cleanup?.();
|
|
45
|
+
this.cleanup = null;
|
|
46
|
+
this.isRunning = false;
|
|
47
|
+
}
|
|
48
|
+
static run(watchEffect) {
|
|
49
|
+
const effect = latest(watchEffect);
|
|
50
|
+
const { id, callback: getter, unsubs: subs, deps } = effect;
|
|
51
|
+
effect.cleanup =
|
|
52
|
+
executeWithTracking({
|
|
53
|
+
id,
|
|
54
|
+
subs,
|
|
55
|
+
fn: getter,
|
|
56
|
+
deps,
|
|
57
|
+
onDepChanged: () => {
|
|
58
|
+
effect.cleanup?.();
|
|
59
|
+
Effect.run(effect);
|
|
60
|
+
},
|
|
61
|
+
}) ?? null;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
export function effect(depsOrGetter, callback) {
|
|
65
|
+
if (typeof depsOrGetter === "function") {
|
|
66
|
+
return new Effect(depsOrGetter);
|
|
41
67
|
}
|
|
42
|
-
|
|
68
|
+
const dependencies = depsOrGetter;
|
|
69
|
+
const effectGetter = callback;
|
|
70
|
+
return new Effect(effectGetter, dependencies);
|
|
43
71
|
}
|
|
44
72
|
//# sourceMappingURL=effect.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"effect.js","sourceRoot":"","sources":["../../src/signals/effect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"effect.js","sourceRoot":"","sources":["../../src/signals/effect.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,4 @@
|
|
|
1
|
-
import type { Signal } from "./base.js";
|
|
2
1
|
import type { SignalSubscriber } from "./types.js";
|
|
3
|
-
export declare const tracking: {
|
|
4
|
-
stack: Map<string, Signal<unknown>>[];
|
|
5
|
-
current: () => Map<string, Signal<unknown>> | undefined;
|
|
6
|
-
};
|
|
7
2
|
export declare const effectQueue: Map<string, Function>;
|
|
8
3
|
export declare const signalSubsMap: Map<string, Set<SignalSubscriber<any>>>;
|
|
9
4
|
//# sourceMappingURL=globals.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"globals.d.ts","sourceRoot":"","sources":["../../src/signals/globals.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"globals.d.ts","sourceRoot":"","sources":["../../src/signals/globals.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAElD,eAAO,MAAM,WAAW,uBAA8B,CAAA;AACtD,eAAO,MAAM,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAa,CAAA"}
|
package/dist/signals/globals.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"globals.js","sourceRoot":"","sources":["../../src/signals/globals.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"globals.js","sourceRoot":"","sources":["../../src/signals/globals.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,GAAG,EAAoB,CAAA;AACtD,MAAM,CAAC,MAAM,aAAa,GAA4C,IAAI,GAAG,EAAE,CAAA"}
|
package/dist/signals/index.d.ts
CHANGED
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
* 1. signal subscription when mixing local and global signals get reversed in hmr for ONLY the first update after HMR is dom
|
|
4
4
|
* 2. global computed will lose its vNode subscription on HMR
|
|
5
5
|
* */
|
|
6
|
-
export { Signal, signal
|
|
7
|
-
export { ComputedSignal, computed
|
|
8
|
-
export {
|
|
6
|
+
export { Signal, signal } from "./base.js";
|
|
7
|
+
export { ComputedSignal, computed } from "./computed.js";
|
|
8
|
+
export { Effect, effect } from "./effect.js";
|
|
9
9
|
export { unwrap, tick } from "./utils.js";
|
|
10
|
-
export * from "./
|
|
10
|
+
export * from "./jsx.js";
|
|
11
11
|
export * from "./types.js";
|
|
12
12
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/signals/index.ts"],"names":[],"mappings":"AAAA;;;;KAIK;AAEL,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/signals/index.ts"],"names":[],"mappings":"AAAA;;;;KAIK;AAEL,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAC1C,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AACzC,cAAc,UAAU,CAAA;AACxB,cAAc,YAAY,CAAA"}
|
package/dist/signals/index.js
CHANGED
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
* 1. signal subscription when mixing local and global signals get reversed in hmr for ONLY the first update after HMR is dom
|
|
4
4
|
* 2. global computed will lose its vNode subscription on HMR
|
|
5
5
|
* */
|
|
6
|
-
export { Signal, signal
|
|
7
|
-
export { ComputedSignal, computed
|
|
8
|
-
export {
|
|
6
|
+
export { Signal, signal } from "./base.js";
|
|
7
|
+
export { ComputedSignal, computed } from "./computed.js";
|
|
8
|
+
export { Effect, effect } from "./effect.js";
|
|
9
9
|
export { unwrap, tick } from "./utils.js";
|
|
10
|
-
export * from "./
|
|
10
|
+
export * from "./jsx.js";
|
|
11
11
|
export * from "./types.js";
|
|
12
12
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/signals/index.ts"],"names":[],"mappings":"AAAA;;;;KAIK;AAEL,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/signals/index.ts"],"names":[],"mappings":"AAAA;;;;KAIK;AAEL,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAC1C,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AACzC,cAAc,UAAU,CAAA;AACxB,cAAc,YAAY,CAAA"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Signalable } from "../types.js";
|
|
1
2
|
import type { Signal } from "./base.js";
|
|
2
3
|
type InferArraySignalItemType<T extends Signal<any[]> | readonly unknown[]> = T extends Signal<infer V> ? V extends Array<infer W> ? W : never : T extends unknown[] ? T[number] : never;
|
|
3
4
|
type ForProps<T extends Signal<any[]> | readonly unknown[], U = InferArraySignalItemType<T>> = {
|
|
@@ -6,5 +7,11 @@ type ForProps<T extends Signal<any[]> | readonly unknown[], U = InferArraySignal
|
|
|
6
7
|
children: (value: U, index: number, array: U[]) => JSX.Element;
|
|
7
8
|
};
|
|
8
9
|
export declare function For<T extends Signal<any[]> | unknown[]>({ each, fallback, children, }: ForProps<T>): JSX.Element;
|
|
10
|
+
export interface ShowProps {
|
|
11
|
+
children: JSX.Element;
|
|
12
|
+
when: Signalable<unknown>;
|
|
13
|
+
fallback?: JSX.Element;
|
|
14
|
+
}
|
|
15
|
+
export declare function Show({ children, when, fallback }: ShowProps): JSX.Element;
|
|
9
16
|
export {};
|
|
10
|
-
//# sourceMappingURL=
|
|
17
|
+
//# sourceMappingURL=jsx.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jsx.d.ts","sourceRoot":"","sources":["../../src/signals/jsx.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAGvC,KAAK,wBAAwB,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,SAAS,OAAO,EAAE,IACxE,CAAC,SAAS,MAAM,CAAC,MAAM,CAAC,CAAC,GACrB,CAAC,SAAS,KAAK,CAAC,MAAM,CAAC,CAAC,GACtB,CAAC,GACD,KAAK,GACP,CAAC,SAAS,OAAO,EAAE,GACjB,CAAC,CAAC,MAAM,CAAC,GACT,KAAK,CAAA;AAEb,KAAK,QAAQ,CACX,CAAC,SAAS,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,SAAS,OAAO,EAAE,EAC5C,CAAC,GAAG,wBAAwB,CAAC,CAAC,CAAC,IAC7B;IACF,IAAI,EAAE,CAAC,CAAA;IACP,QAAQ,CAAC,EAAE,GAAG,CAAC,OAAO,CAAA;IACtB,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,GAAG,CAAC,OAAO,CAAA;CAC/D,CAAA;AAED,wBAAgB,GAAG,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,EAAE,EAAE,EACvD,IAAI,EACJ,QAAQ,EACR,QAAQ,GACT,EAAE,QAAQ,CAAC,CAAC,CAAC,eAIb;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAA;IACrB,IAAI,EAAE,UAAU,CAAC,OAAO,CAAC,CAAA;IACzB,QAAQ,CAAC,EAAE,GAAG,CAAC,OAAO,CAAA;CACvB;AACD,wBAAgB,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,SAAS,GAAG,GAAG,CAAC,OAAO,CAEzE"}
|
|
@@ -5,4 +5,7 @@ export function For({ each, fallback, children, }) {
|
|
|
5
5
|
return fallback;
|
|
6
6
|
return items.map(children);
|
|
7
7
|
}
|
|
8
|
-
|
|
8
|
+
export function Show({ children, when, fallback }) {
|
|
9
|
+
return !!unwrap(when, true) ? children : fallback;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=jsx.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jsx.js","sourceRoot":"","sources":["../../src/signals/jsx.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAoBnC,MAAM,UAAU,GAAG,CAAsC,EACvD,IAAI,EACJ,QAAQ,EACR,QAAQ,GACI;IACZ,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IAChC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,QAAQ,CAAA;IACvC,OAAO,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;AAC5B,CAAC;AAOD,MAAM,UAAU,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAa;IAC1D,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAA;AACnD,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { Signal } from "./base.js";
|
|
2
|
+
import type { SignalValues } from "./types.js";
|
|
3
|
+
export declare const tracking: {
|
|
4
|
+
enabled: boolean;
|
|
5
|
+
stack: Map<string, Signal<unknown>>[];
|
|
6
|
+
current: () => Map<string, Signal<unknown>> | undefined;
|
|
7
|
+
};
|
|
8
|
+
type TrackedExecutionContext<T, Deps extends readonly Signal<unknown>[]> = {
|
|
9
|
+
id: string;
|
|
10
|
+
subs: Map<string, Function>;
|
|
11
|
+
fn: (...values: SignalValues<Deps>) => T;
|
|
12
|
+
deps?: Deps;
|
|
13
|
+
onDepChanged: () => void;
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Executes an effect function with dependency tracking enabled, and manages
|
|
17
|
+
* the effect's subscriptions.
|
|
18
|
+
* @param ctx - The execution context
|
|
19
|
+
* @returns The result of the effect function
|
|
20
|
+
*/
|
|
21
|
+
export declare function executeWithTracking<T, Deps extends readonly Signal<unknown>[]>(ctx: TrackedExecutionContext<T, Deps>): T;
|
|
22
|
+
export {};
|
|
23
|
+
//# sourceMappingURL=tracking.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tracking.d.ts","sourceRoot":"","sources":["../../src/signals/tracking.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAE9C,eAAO,MAAM,QAAQ;;;mBAGG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,SAAS;CAG/D,CAAA;AAED,KAAK,uBAAuB,CAAC,CAAC,EAAE,IAAI,SAAS,SAAS,MAAM,CAAC,OAAO,CAAC,EAAE,IAAI;IACzE,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IAC3B,EAAE,EAAE,CAAC,GAAG,MAAM,EAAE,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACxC,IAAI,CAAC,EAAE,IAAI,CAAA;IACX,YAAY,EAAE,MAAM,IAAI,CAAA;CACzB,CAAA;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,IAAI,SAAS,SAAS,MAAM,CAAC,OAAO,CAAC,EAAE,EAC5E,GAAG,EAAE,uBAAuB,CAAC,CAAC,EAAE,IAAI,CAAC,GACpC,CAAC,CAqCH"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { node } from "../globals.js";
|
|
2
|
+
import { sideEffectsEnabled } from "../utils/index.js";
|
|
3
|
+
import { effectQueue } from "./globals.js";
|
|
4
|
+
import { tick } from "./utils.js";
|
|
5
|
+
export const tracking = {
|
|
6
|
+
enabled: true,
|
|
7
|
+
stack: new Array(),
|
|
8
|
+
current: function () {
|
|
9
|
+
return this.stack[this.stack.length - 1];
|
|
10
|
+
},
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Executes an effect function with dependency tracking enabled, and manages
|
|
14
|
+
* the effect's subscriptions.
|
|
15
|
+
* @param ctx - The execution context
|
|
16
|
+
* @returns The result of the effect function
|
|
17
|
+
*/
|
|
18
|
+
export function executeWithTracking(ctx) {
|
|
19
|
+
const { id, subs, fn, deps = [], onDepChanged } = ctx;
|
|
20
|
+
let observations;
|
|
21
|
+
effectQueue.delete(id);
|
|
22
|
+
const isServer = !!node.current && !sideEffectsEnabled();
|
|
23
|
+
if (!isServer) {
|
|
24
|
+
observations = new Map();
|
|
25
|
+
tracking.stack.push(observations);
|
|
26
|
+
}
|
|
27
|
+
const result = fn(...deps.map((s) => s.value));
|
|
28
|
+
if (!isServer) {
|
|
29
|
+
for (const [id, unsub] of subs) {
|
|
30
|
+
if (observations.has(id))
|
|
31
|
+
continue;
|
|
32
|
+
unsub();
|
|
33
|
+
subs.delete(id);
|
|
34
|
+
}
|
|
35
|
+
const effect = () => {
|
|
36
|
+
if (!effectQueue.size) {
|
|
37
|
+
queueMicrotask(tick);
|
|
38
|
+
}
|
|
39
|
+
effectQueue.set(id, onDepChanged);
|
|
40
|
+
};
|
|
41
|
+
for (const [id, sig] of observations) {
|
|
42
|
+
if (subs.has(id))
|
|
43
|
+
continue;
|
|
44
|
+
const unsub = sig.subscribe(effect);
|
|
45
|
+
subs.set(id, unsub);
|
|
46
|
+
}
|
|
47
|
+
tracking.stack.pop();
|
|
48
|
+
}
|
|
49
|
+
return result;
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=tracking.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tracking.js","sourceRoot":"","sources":["../../src/signals/tracking.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA;AACpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AAIjC,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,OAAO,EAAE,IAAI;IACb,KAAK,EAAE,IAAI,KAAK,EAAgC;IAChD,OAAO,EAAE;QACP,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IAC1C,CAAC;CACF,CAAA;AAUD;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CACjC,GAAqC;IAErC,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,YAAY,EAAE,GAAG,GAAG,CAAA;IACrD,IAAI,YAAsD,CAAA;IAE1D,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IACtB,MAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAA;IAExD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,YAAY,GAAG,IAAI,GAAG,EAA2B,CAAA;QACjD,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;IACnC,CAAC;IAED,MAAM,MAAM,GAAG,EAAE,CAAC,GAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAwB,CAAC,CAAA;IAEtE,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,KAAK,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;YAC/B,IAAI,YAAa,CAAC,GAAG,CAAC,EAAE,CAAC;gBAAE,SAAQ;YACnC,KAAK,EAAE,CAAA;YACP,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;QACjB,CAAC;QAED,MAAM,MAAM,GAAG,GAAG,EAAE;YAClB,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;gBACtB,cAAc,CAAC,IAAI,CAAC,CAAA;YACtB,CAAC;YACD,WAAW,CAAC,GAAG,CAAC,EAAE,EAAE,YAAY,CAAC,CAAA;QACnC,CAAC,CAAA;QAED,KAAK,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,YAAa,EAAE,CAAC;YACtC,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBAAE,SAAQ;YAC1B,MAAM,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;YACnC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAA;QACrB,CAAC;QACD,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,CAAA;IACtB,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC"}
|
package/dist/signals/types.d.ts
CHANGED
|
@@ -4,6 +4,6 @@ export type ReadonlySignal<T> = Signal<T> & {
|
|
|
4
4
|
};
|
|
5
5
|
export type SignalSubscriber<T = unknown> = (value: T, prevValue?: T) => void;
|
|
6
6
|
export type SignalValues<T extends readonly Signal<unknown>[]> = {
|
|
7
|
-
[I in keyof T]: T[I] extends Signal<infer V> ? V extends Kiru.
|
|
7
|
+
[I in keyof T]: T[I] extends Signal<infer V> ? V extends Kiru.StatefulPromiseBase<infer P> ? P : V : never;
|
|
8
8
|
};
|
|
9
9
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/signals/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAEvC,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG;IAC1C,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAA;CAClB,CAAA;AACD,MAAM,MAAM,gBAAgB,CAAC,CAAC,GAAG,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC,KAAK,IAAI,CAAA;AAE7E,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,SAAS,MAAM,CAAC,OAAO,CAAC,EAAE,IAAI;KAC9D,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,CAAC,CAAC,GACxC,CAAC,SAAS,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/signals/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAEvC,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG;IAC1C,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAA;CAClB,CAAA;AACD,MAAM,MAAM,gBAAgB,CAAC,CAAC,GAAG,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC,KAAK,IAAI,CAAA;AAE7E,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,SAAS,MAAM,CAAC,OAAO,CAAC,EAAE,IAAI;KAC9D,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,CAAC,CAAC,GACxC,CAAC,SAAS,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,GACzC,CAAC,GACD,CAAC,GACH,KAAK;CACV,CAAA"}
|
package/dist/signals/utils.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Signal } from "./base.js";
|
|
2
2
|
export declare function unwrap<T>(value: T | Signal<T>, reactive?: boolean): T;
|
|
3
|
-
export declare
|
|
3
|
+
export declare function tick(): void;
|
|
4
|
+
export declare function untrack<T>(fn: () => T): T;
|
|
4
5
|
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/signals/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/signals/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAIlC,wBAAgB,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,QAAQ,UAAQ,GAAG,CAAC,CAGnE;AAED,wBAAgB,IAAI,SAGnB;AAED,wBAAgB,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,KAKrC"}
|
package/dist/signals/utils.js
CHANGED
|
@@ -1,13 +1,20 @@
|
|
|
1
1
|
import { call } from "../utils/index.js";
|
|
2
2
|
import { Signal } from "./base.js";
|
|
3
3
|
import { effectQueue } from "./globals.js";
|
|
4
|
+
import { tracking } from "./tracking.js";
|
|
4
5
|
export function unwrap(value, reactive = false) {
|
|
5
6
|
if (!Signal.isSignal(value))
|
|
6
7
|
return value;
|
|
7
8
|
return reactive ? value.value : value.peek();
|
|
8
9
|
}
|
|
9
|
-
export
|
|
10
|
+
export function tick() {
|
|
10
11
|
effectQueue.forEach(call);
|
|
11
12
|
effectQueue.clear();
|
|
12
|
-
}
|
|
13
|
+
}
|
|
14
|
+
export function untrack(fn) {
|
|
15
|
+
tracking.enabled = false;
|
|
16
|
+
const result = fn();
|
|
17
|
+
tracking.enabled = true;
|
|
18
|
+
return result;
|
|
19
|
+
}
|
|
13
20
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/signals/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/signals/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAExC,MAAM,UAAU,MAAM,CAAI,KAAoB,EAAE,QAAQ,GAAG,KAAK;IAC9D,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAA;IACzC,OAAO,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAA;AAC9C,CAAC;AAED,MAAM,UAAU,IAAI;IAClB,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IACzB,WAAW,CAAC,KAAK,EAAE,CAAA;AACrB,CAAC;AAED,MAAM,UAAU,OAAO,CAAI,EAAW;IACpC,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAA;IACxB,MAAM,MAAM,GAAG,EAAE,EAAE,CAAA;IACnB,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAA;IACvB,OAAO,MAAM,CAAA;AACf,CAAC"}
|
package/dist/ssr/client.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
interface
|
|
1
|
+
import type { AppHandle, AppHandleOptions } from "../appHandle";
|
|
2
|
+
interface AppHandleHydrationOptions extends AppHandleOptions {
|
|
3
3
|
/**
|
|
4
4
|
* Configures the hydration mode
|
|
5
5
|
* - "static": SSG
|
|
@@ -8,6 +8,6 @@ interface HydrationAppContextOptions extends AppContextOptions {
|
|
|
8
8
|
*/
|
|
9
9
|
hydrationMode?: "static" | "dynamic";
|
|
10
10
|
}
|
|
11
|
-
export declare function hydrate(children: JSX.Element, container: HTMLElement, options?:
|
|
11
|
+
export declare function hydrate(children: JSX.Element, container: HTMLElement, options?: AppHandleHydrationOptions): AppHandle;
|
|
12
12
|
export {};
|
|
13
13
|
//# sourceMappingURL=client.d.ts.map
|
package/dist/ssr/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/ssr/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/ssr/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAK/D,UAAU,yBAA0B,SAAQ,gBAAgB;IAC1D;;;;;OAKG;IACH,aAAa,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAA;CACrC;AAED,wBAAgB,OAAO,CACrB,QAAQ,EAAE,GAAG,CAAC,OAAO,EACrB,SAAS,EAAE,WAAW,EACtB,OAAO,CAAC,EAAE,yBAAyB,GAClC,SAAS,CAeX"}
|
package/dist/ssr/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/ssr/client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AACzD,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAYnC,MAAM,UAAU,OAAO,CACrB,QAAqB,EACrB,SAAsB,EACtB,
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/ssr/client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AACzD,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAYnC,MAAM,UAAU,OAAO,CACrB,QAAqB,EACrB,SAAsB,EACtB,OAAmC;IAEnC,cAAc,CAAC,KAAK,EAAE,CAAA;IAEtB,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,CAAA;IACzC,UAAU,CAAC,OAAO,GAAG,SAAS,CAAA;IAE9B,MAAM,iBAAiB,GAAG,aAAa,CAAC,OAAO,CAAA;IAC/C,aAAa,CAAC,OAAO,GAAG,OAAO,EAAE,aAAa,IAAI,SAAS,CAAA;IAE3D,MAAM,GAAG,GAAG,KAAK,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,CAAA;IAE/C,UAAU,CAAC,OAAO,GAAG,cAAc,CAAA;IACnC,aAAa,CAAC,OAAO,GAAG,iBAAiB,CAAA;IAEzC,OAAO,GAAG,CAAA;AACZ,CAAC"}
|
package/dist/ssr/server.js
CHANGED
|
@@ -2,7 +2,7 @@ import { Readable } from "node:stream";
|
|
|
2
2
|
import { Fragment } from "../element.js";
|
|
3
3
|
import { renderMode } from "../globals.js";
|
|
4
4
|
import { STREAMED_DATA_EVENT } from "../constants.js";
|
|
5
|
-
import { headlessRender } from "../
|
|
5
|
+
import { headlessRender } from "../headlessRender.js";
|
|
6
6
|
const STREAMED_DATA_SETUP = `
|
|
7
7
|
<script type="text/javascript">
|
|
8
8
|
const d = document,
|
package/dist/ssr/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/ssr/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AACrD,OAAO,EAAE,cAAc,EAAyB,MAAM,
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/ssr/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AACrD,OAAO,EAAE,cAAc,EAAyB,MAAM,sBAAsB,CAAA;AAE5E,MAAM,mBAAmB,GAAG;;;iBAGX,mBAAmB;;;;;mCAKD,mBAAmB;;;;;;CAMrD,CAAA;AAED,MAAM,UAAU,sBAAsB,CAAC,OAAoB;IAIzD,MAAM,MAAM,GAAG,IAAI,QAAQ,CAAC,EAAE,IAAI,KAAI,CAAC,EAAE,CAAC,CAAA;IAC1C,MAAM,QAAQ,GAAG,QAAQ,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAA;IAChD,MAAM,cAAc,GAAG,IAAI,GAAG,EAAqC,CAAA;IACnE,MAAM,oBAAoB,GAAoB,EAAE,CAAA;IAEhD,IAAI,SAAS,GAAG,EAAE,CAAA;IAElB,MAAM,GAAG,GAA0B;QACjC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,SAAS,IAAI,KAAK,CAAC;QACtC,YAAY,CAAC,IAAI;YACf,KAAK,MAAM,OAAO,IAAI,IAAI,EAAE,CAAC;gBAC3B,IAAI,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC;oBAAE,SAAQ;gBACzC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;gBAE3B,MAAM,YAAY,GAAG,OAAO;qBACzB,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;qBACrC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;qBAChD,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;oBACd,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;oBACrC,MAAM,CAAC,IAAI,CACT,eAAe,OAAO,CAAC,EAAE,oCAAoC,OAAO,WAAW,CAChF,CAAA;gBACH,CAAC,CAAC,CAAA;gBAEJ,oBAAoB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;YACzC,CAAC;QACH,CAAC;KACF,CAAA;IAED,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,CAAA;IAC/B,UAAU,CAAC,OAAO,GAAG,QAAQ,CAAA;IAC7B,cAAc,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;IACtC,UAAU,CAAC,OAAO,GAAG,IAAI,CAAA;IAEzB,IAAI,oBAAoB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;YAC1C,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAA;YAChC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACnB,CAAC,CAAC,CAAA;IACJ,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACnB,CAAC;IAED,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,CAAA;AAC9B,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { $STREAM_DATA } from "./constants.js";
|
|
2
|
+
import { Signal } from "./signals/base.js";
|
|
3
|
+
export interface StreamDataThrowValue {
|
|
4
|
+
[$STREAM_DATA]: {
|
|
5
|
+
fallback?: JSX.Element;
|
|
6
|
+
data: Kiru.StatefulPromiseBase<unknown>[];
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Returns true if the value is a {@link StreamDataThrowValue}
|
|
11
|
+
*/
|
|
12
|
+
export declare function isStreamDataThrowValue(value: unknown): value is StreamDataThrowValue;
|
|
13
|
+
/**
|
|
14
|
+
* Returns true if the value is a {@link Kiru.StatefulPromiseBase}
|
|
15
|
+
*/
|
|
16
|
+
export declare function isStatefulPromise(thing: unknown): thing is Kiru.StatefulPromiseBase<unknown>;
|
|
17
|
+
type StatefulPromise<T> = Kiru.StatefulPromiseBase<T> & {
|
|
18
|
+
isPending: Signal<boolean>;
|
|
19
|
+
};
|
|
20
|
+
export declare function statefulPromise<T>(callback: (signal: AbortSignal) => Promise<T>): StatefulPromise<T>;
|
|
21
|
+
export {};
|
|
22
|
+
//# sourceMappingURL=statefulPromise.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"statefulPromise.d.ts","sourceRoot":"","sources":["../src/statefulPromise.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAuB,MAAM,gBAAgB,CAAA;AAElE,OAAO,EAAE,MAAM,EAAU,MAAM,mBAAmB,CAAA;AAIlD,MAAM,WAAW,oBAAoB;IACnC,CAAC,YAAY,CAAC,EAAE;QACd,QAAQ,CAAC,EAAE,GAAG,CAAC,OAAO,CAAA;QACtB,IAAI,EAAE,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,EAAE,CAAA;KAC1C,CAAA;CACF;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,oBAAoB,CAE/B;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAE5C;AAID,KAAK,eAAe,CAAC,CAAC,IAAI,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,GAAG;IACtD,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,CAAA;CAC3B,CAAA;AAED,wBAAgB,eAAe,CAAC,CAAC,EAC/B,QAAQ,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,GAC5C,eAAe,CAAC,CAAC,CAAC,CAuDpB"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { $STREAM_DATA, STREAMED_DATA_EVENT } from "./constants.js";
|
|
2
|
+
import { hydrationMode, node, renderMode } from "./globals.js";
|
|
3
|
+
import { signal } from "./signals/base.js";
|
|
4
|
+
import { getVNodeId } from "./utils/vdom.js";
|
|
5
|
+
import { onCleanup } from "./hooks/onCleanup.js";
|
|
6
|
+
/**
|
|
7
|
+
* Returns true if the value is a {@link StreamDataThrowValue}
|
|
8
|
+
*/
|
|
9
|
+
export function isStreamDataThrowValue(value) {
|
|
10
|
+
return typeof value === "object" && !!value && $STREAM_DATA in value;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Returns true if the value is a {@link Kiru.StatefulPromiseBase}
|
|
14
|
+
*/
|
|
15
|
+
export function isStatefulPromise(thing) {
|
|
16
|
+
return thing instanceof Promise && "id" in thing && "state" in thing;
|
|
17
|
+
}
|
|
18
|
+
const nodeToPromiseIndex = new WeakMap();
|
|
19
|
+
export function statefulPromise(callback) {
|
|
20
|
+
const vNode = node.current;
|
|
21
|
+
if (!vNode) {
|
|
22
|
+
throw new Error("statefulPromise must be called inside a Kiru component");
|
|
23
|
+
}
|
|
24
|
+
const id = getVNodeId(vNode);
|
|
25
|
+
const isPending = signal(true);
|
|
26
|
+
isPending.value = true;
|
|
27
|
+
const controller = new AbortController();
|
|
28
|
+
onCleanup(() => controller.abort());
|
|
29
|
+
const index = nodeToPromiseIndex.get(vNode) ?? 0;
|
|
30
|
+
nodeToPromiseIndex.set(vNode, index + 1);
|
|
31
|
+
const promiseId = `${id}:data:${index}`;
|
|
32
|
+
let promise;
|
|
33
|
+
if (renderMode.current === "string") {
|
|
34
|
+
// if we're rendering to a string, there's no need to fire the callback
|
|
35
|
+
promise = Promise.resolve();
|
|
36
|
+
}
|
|
37
|
+
else if (renderMode.current === "hydrate" &&
|
|
38
|
+
hydrationMode.current === "dynamic") {
|
|
39
|
+
// if we're hydrating and the hydration mode is not static,
|
|
40
|
+
// we need to resolve the promise from cache/event
|
|
41
|
+
promise = resolveDeferredPromise(promiseId, controller.signal);
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
// dom / stream / (hydrate + static)
|
|
45
|
+
promise = callback(controller.signal);
|
|
46
|
+
}
|
|
47
|
+
const state = {
|
|
48
|
+
id: promiseId,
|
|
49
|
+
state: "pending",
|
|
50
|
+
};
|
|
51
|
+
const statefulPromise = Object.assign(promise, state);
|
|
52
|
+
statefulPromise
|
|
53
|
+
.then((value) => {
|
|
54
|
+
statefulPromise.state = "fulfilled";
|
|
55
|
+
statefulPromise.value = value;
|
|
56
|
+
isPending.value = false;
|
|
57
|
+
})
|
|
58
|
+
.catch((error) => {
|
|
59
|
+
statefulPromise.state = "rejected";
|
|
60
|
+
statefulPromise.error = error instanceof Error ? error : new Error(error);
|
|
61
|
+
});
|
|
62
|
+
return Object.assign(statefulPromise, { isPending });
|
|
63
|
+
}
|
|
64
|
+
function resolveDeferredPromise(id, signal) {
|
|
65
|
+
return new Promise((resolve, reject) => {
|
|
66
|
+
const deferralCache = // @ts-ignore
|
|
67
|
+
(window[STREAMED_DATA_EVENT] ?? (window[STREAMED_DATA_EVENT] = new Map()));
|
|
68
|
+
const existing = deferralCache.get(id);
|
|
69
|
+
if (existing) {
|
|
70
|
+
const { data, error } = existing;
|
|
71
|
+
deferralCache.delete(id);
|
|
72
|
+
if (error)
|
|
73
|
+
return reject(error);
|
|
74
|
+
return resolve(data);
|
|
75
|
+
}
|
|
76
|
+
const onDataEvent = (event) => {
|
|
77
|
+
const { detail } = event;
|
|
78
|
+
if (detail.id === id) {
|
|
79
|
+
deferralCache.delete(id);
|
|
80
|
+
window.removeEventListener(STREAMED_DATA_EVENT, onDataEvent);
|
|
81
|
+
const { data, error } = detail;
|
|
82
|
+
if (error)
|
|
83
|
+
return reject(error);
|
|
84
|
+
resolve(data);
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
window.addEventListener(STREAMED_DATA_EVENT, onDataEvent);
|
|
88
|
+
signal.addEventListener("abort", () => {
|
|
89
|
+
window.removeEventListener(STREAMED_DATA_EVENT, onDataEvent);
|
|
90
|
+
reject();
|
|
91
|
+
});
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=statefulPromise.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"statefulPromise.js","sourceRoot":"","sources":["../src/statefulPromise.ts"],"names":[],"mappings":"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"}
|