signalium 0.2.8 → 0.3.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/.turbo/turbo-build.log +12 -0
- package/CHANGELOG.md +12 -0
- package/dist/cjs/config.d.ts +14 -5
- package/dist/cjs/config.d.ts.map +1 -1
- package/dist/cjs/config.js +23 -14
- package/dist/cjs/config.js.map +1 -1
- package/dist/cjs/debug.d.ts +3 -0
- package/dist/cjs/debug.d.ts.map +1 -0
- package/dist/cjs/debug.js +16 -0
- package/dist/cjs/debug.js.map +1 -0
- package/dist/cjs/hooks.d.ts +45 -0
- package/dist/cjs/hooks.d.ts.map +1 -0
- package/dist/cjs/hooks.js +263 -0
- package/dist/cjs/hooks.js.map +1 -0
- package/dist/cjs/index.d.ts +5 -3
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +21 -8
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/react/context.d.ts +4 -0
- package/dist/cjs/react/context.d.ts.map +1 -0
- package/dist/cjs/react/context.js +10 -0
- package/dist/cjs/react/context.js.map +1 -0
- package/dist/cjs/react/index.d.ts +5 -0
- package/dist/cjs/react/index.d.ts.map +1 -0
- package/dist/cjs/react/index.js +12 -0
- package/dist/cjs/react/index.js.map +1 -0
- package/dist/cjs/react/provider.d.ts +7 -0
- package/dist/cjs/react/provider.d.ts.map +1 -0
- package/dist/cjs/react/provider.js +13 -0
- package/dist/cjs/react/provider.js.map +1 -0
- package/dist/cjs/react/setup.d.ts +2 -0
- package/dist/cjs/react/setup.d.ts.map +1 -0
- package/dist/cjs/react/setup.js +13 -0
- package/dist/cjs/react/setup.js.map +1 -0
- package/dist/cjs/react/signal-value.d.ts +2 -0
- package/dist/cjs/react/signal-value.d.ts.map +1 -0
- package/dist/cjs/react/signal-value.js +35 -0
- package/dist/cjs/react/signal-value.js.map +1 -0
- package/dist/cjs/react/state.d.ts +3 -0
- package/dist/cjs/react/state.d.ts.map +1 -0
- package/dist/cjs/react/state.js +13 -0
- package/dist/cjs/react/state.js.map +1 -0
- package/dist/cjs/scheduling.d.ts +5 -0
- package/dist/cjs/scheduling.d.ts.map +1 -1
- package/dist/cjs/scheduling.js +59 -5
- package/dist/cjs/scheduling.js.map +1 -1
- package/dist/cjs/signals.d.ts +28 -68
- package/dist/cjs/signals.d.ts.map +1 -1
- package/dist/cjs/signals.js +223 -76
- package/dist/cjs/signals.js.map +1 -1
- package/dist/cjs/trace.d.ts +127 -0
- package/dist/cjs/trace.d.ts.map +1 -0
- package/dist/cjs/trace.js +319 -0
- package/dist/cjs/trace.js.map +1 -0
- package/dist/cjs/types.d.ts +66 -0
- package/dist/cjs/types.d.ts.map +1 -0
- package/dist/cjs/types.js +3 -0
- package/dist/cjs/types.js.map +1 -0
- package/dist/cjs/utils.d.ts +4 -0
- package/dist/cjs/utils.d.ts.map +1 -0
- package/dist/cjs/utils.js +80 -0
- package/dist/cjs/utils.js.map +1 -0
- package/dist/esm/config.d.ts +14 -5
- package/dist/esm/config.d.ts.map +1 -1
- package/dist/esm/config.js +19 -11
- package/dist/esm/config.js.map +1 -1
- package/dist/esm/debug.d.ts +3 -0
- package/dist/esm/debug.d.ts.map +1 -0
- package/dist/esm/debug.js +3 -0
- package/dist/esm/debug.js.map +1 -0
- package/dist/esm/hooks.d.ts +45 -0
- package/dist/esm/hooks.d.ts.map +1 -0
- package/dist/esm/hooks.js +246 -0
- package/dist/esm/hooks.js.map +1 -0
- package/dist/esm/index.d.ts +5 -3
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +4 -2
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/react/context.d.ts +4 -0
- package/dist/esm/react/context.d.ts.map +1 -0
- package/dist/esm/react/context.js +6 -0
- package/dist/esm/react/context.js.map +1 -0
- package/dist/esm/react/index.d.ts +5 -0
- package/dist/esm/react/index.d.ts.map +1 -0
- package/dist/esm/react/index.js +5 -0
- package/dist/esm/react/index.js.map +1 -0
- package/dist/esm/react/provider.d.ts +7 -0
- package/dist/esm/react/provider.d.ts.map +1 -0
- package/dist/esm/react/provider.js +10 -0
- package/dist/esm/react/provider.js.map +1 -0
- package/dist/esm/react/setup.d.ts +2 -0
- package/dist/esm/react/setup.d.ts.map +1 -0
- package/dist/esm/react/setup.js +10 -0
- package/dist/esm/react/setup.js.map +1 -0
- package/dist/esm/react/signal-value.d.ts +2 -0
- package/dist/esm/react/signal-value.d.ts.map +1 -0
- package/dist/esm/react/signal-value.js +32 -0
- package/dist/esm/react/signal-value.js.map +1 -0
- package/dist/esm/react/state.d.ts +3 -0
- package/dist/esm/react/state.d.ts.map +1 -0
- package/dist/esm/react/state.js +10 -0
- package/dist/esm/react/state.js.map +1 -0
- package/dist/esm/scheduling.d.ts +5 -0
- package/dist/esm/scheduling.d.ts.map +1 -1
- package/dist/esm/scheduling.js +51 -1
- package/dist/esm/scheduling.js.map +1 -1
- package/dist/esm/signals.d.ts +28 -68
- package/dist/esm/signals.d.ts.map +1 -1
- package/dist/esm/signals.js +215 -72
- package/dist/esm/signals.js.map +1 -1
- package/dist/esm/trace.d.ts +127 -0
- package/dist/esm/trace.d.ts.map +1 -0
- package/dist/esm/trace.js +311 -0
- package/dist/esm/trace.js.map +1 -0
- package/dist/esm/types.d.ts +66 -0
- package/dist/esm/types.d.ts.map +1 -0
- package/dist/esm/types.js +2 -0
- package/dist/esm/types.js.map +1 -0
- package/dist/esm/utils.d.ts +4 -0
- package/dist/esm/utils.d.ts.map +1 -0
- package/dist/esm/utils.js +75 -0
- package/dist/esm/utils.js.map +1 -0
- package/package.json +43 -2
- package/src/__tests__/hooks/async-computed.test.ts +190 -0
- package/src/__tests__/hooks/async-task.test.ts +227 -0
- package/src/__tests__/hooks/computed.test.ts +126 -0
- package/src/__tests__/hooks/context.test.ts +527 -0
- package/src/__tests__/hooks/nesting.test.ts +303 -0
- package/src/__tests__/hooks/params-and-state.test.ts +168 -0
- package/src/__tests__/hooks/subscription.test.ts +97 -0
- package/src/__tests__/signals/async.test.ts +416 -0
- package/src/__tests__/signals/basic.test.ts +399 -0
- package/src/__tests__/signals/subscription.test.ts +632 -0
- package/src/__tests__/signals/watcher.test.ts +253 -0
- package/src/__tests__/utils/async.ts +6 -0
- package/src/__tests__/utils/builders.ts +22 -0
- package/src/__tests__/utils/instrumented-hooks.ts +309 -0
- package/src/__tests__/utils/instrumented-signals.ts +281 -0
- package/src/__tests__/utils/permute.ts +74 -0
- package/src/config.ts +32 -17
- package/src/debug.ts +14 -0
- package/src/hooks.ts +433 -0
- package/src/index.ts +28 -3
- package/src/react/__tests__/react.test.tsx +227 -0
- package/src/react/context.ts +8 -0
- package/src/react/index.ts +4 -0
- package/src/react/provider.tsx +18 -0
- package/src/react/setup.ts +10 -0
- package/src/react/signal-value.ts +49 -0
- package/src/react/state.ts +13 -0
- package/src/scheduling.ts +69 -1
- package/src/signals.ts +328 -169
- package/src/trace.ts +449 -0
- package/src/types.ts +86 -0
- package/src/utils.ts +83 -0
- package/tsconfig.json +2 -1
- package/vitest.workspace.ts +24 -0
- package/src/__tests__/async.test.ts +0 -426
- package/src/__tests__/basic.test.ts +0 -378
- package/src/__tests__/subscription.test.ts +0 -645
- package/src/__tests__/utils/instrumented.ts +0 -326
@@ -0,0 +1,13 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.ContextProvider = ContextProvider;
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
5
|
+
const react_1 = require("react");
|
6
|
+
const hooks_js_1 = require("../hooks.js");
|
7
|
+
const context_js_1 = require("./context.js");
|
8
|
+
function ContextProvider({ children, contexts, inherit = true, }) {
|
9
|
+
const parentScope = (0, react_1.useContext)(context_js_1.ScopeContext);
|
10
|
+
const scope = new hooks_js_1.SignalScope(contexts, inherit ? parentScope : undefined);
|
11
|
+
return (0, jsx_runtime_1.jsx)(context_js_1.ScopeContext.Provider, { value: scope, children: children });
|
12
|
+
}
|
13
|
+
//# sourceMappingURL=provider.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../../../src/react/provider.tsx"],"names":[],"mappings":";;AAIA,0CAaC;;AAjBD,iCAAmC;AACnC,0CAA0D;AAC1D,6CAA4C;AAE5C,SAAgB,eAAe,CAAC,EAC9B,QAAQ,EACR,QAAQ,EACR,OAAO,GAAG,IAAI,GAKf;IACC,MAAM,WAAW,GAAG,IAAA,kBAAU,EAAC,yBAAY,CAAC,CAAC;IAC7C,MAAM,KAAK,GAAG,IAAI,sBAAW,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAE3E,OAAO,uBAAC,yBAAY,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,YAAG,QAAQ,GAAyB,CAAC;AACjF,CAAC"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../../src/react/setup.ts"],"names":[],"mappings":"AAIA,wBAAgB,UAAU,SAKzB"}
|
@@ -0,0 +1,13 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.setupReact = setupReact;
|
4
|
+
const config_js_1 = require("../config.js");
|
5
|
+
const context_js_1 = require("./context.js");
|
6
|
+
const signal_value_js_1 = require("./signal-value.js");
|
7
|
+
function setupReact() {
|
8
|
+
(0, config_js_1.setConfig)({
|
9
|
+
useSignalValue: signal_value_js_1.useSignalValue,
|
10
|
+
getFrameworkScope: context_js_1.useScope,
|
11
|
+
});
|
12
|
+
}
|
13
|
+
//# sourceMappingURL=setup.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../src/react/setup.ts"],"names":[],"mappings":";;AAIA,gCAKC;AATD,4CAAyC;AACzC,6CAAwC;AACxC,uDAAmD;AAEnD,SAAgB,UAAU;IACxB,IAAA,qBAAS,EAAC;QACR,cAAc,EAAd,gCAAc;QACd,iBAAiB,EAAE,qBAAQ;KAC5B,CAAC,CAAC;AACL,CAAC"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"signal-value.d.ts","sourceRoot":"","sources":["../../../src/react/signal-value.ts"],"names":[],"mappings":"AAIA,wBAAgB,cAAc,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CA4C7D"}
|
@@ -0,0 +1,35 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.useSignalValue = useSignalValue;
|
4
|
+
const react_1 = require("react");
|
5
|
+
const context_js_1 = require("./context.js");
|
6
|
+
const hooks_js_1 = require("../hooks.js");
|
7
|
+
function useSignalValue(key, fn) {
|
8
|
+
const [, setVersion] = (0, react_1.useState)(0);
|
9
|
+
const scope = (0, react_1.useContext)(context_js_1.ScopeContext);
|
10
|
+
const ref = (0, react_1.useRef)({
|
11
|
+
value: undefined,
|
12
|
+
unsub: undefined,
|
13
|
+
key: undefined,
|
14
|
+
});
|
15
|
+
const currentKey = ref.current.key;
|
16
|
+
if (key !== currentKey) {
|
17
|
+
ref.current.unsub?.();
|
18
|
+
const w = (0, hooks_js_1.watcher)(fn, { scope });
|
19
|
+
let initialized = false;
|
20
|
+
ref.current.unsub = w.addListener(value => {
|
21
|
+
ref.current.value = value;
|
22
|
+
// Trigger an update to the component
|
23
|
+
if (initialized) {
|
24
|
+
setVersion(v => v + 1);
|
25
|
+
}
|
26
|
+
initialized = true;
|
27
|
+
}, {
|
28
|
+
immediate: true,
|
29
|
+
});
|
30
|
+
ref.current.key = key;
|
31
|
+
}
|
32
|
+
(0, react_1.useEffect)(() => ref.current.unsub, []);
|
33
|
+
return ref.current.value;
|
34
|
+
}
|
35
|
+
//# sourceMappingURL=signal-value.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"signal-value.js","sourceRoot":"","sources":["../../../src/react/signal-value.ts"],"names":[],"mappings":";;AAIA,wCA4CC;AAhDD,iCAAgE;AAChE,6CAA4C;AAC5C,0CAAsC;AAEtC,SAAgB,cAAc,CAAI,GAAW,EAAE,EAAW;IACxD,MAAM,CAAC,EAAE,UAAU,CAAC,GAAG,IAAA,gBAAQ,EAAC,CAAC,CAAC,CAAC;IACnC,MAAM,KAAK,GAAG,IAAA,kBAAU,EAAC,yBAAY,CAAC,CAAC;IACvC,MAAM,GAAG,GAAG,IAAA,cAAM,EAIf;QACD,KAAK,EAAE,SAAS;QAChB,KAAK,EAAE,SAAS;QAChB,GAAG,EAAE,SAAS;KACf,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC;IAEnC,IAAI,GAAG,KAAK,UAAU,EAAE,CAAC;QACvB,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;QAEtB,MAAM,CAAC,GAAG,IAAA,kBAAO,EAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAEjC,IAAI,WAAW,GAAG,KAAK,CAAC;QAExB,GAAG,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,WAAW,CAC/B,KAAK,CAAC,EAAE;YACN,GAAG,CAAC,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;YAE1B,qCAAqC;YACrC,IAAI,WAAW,EAAE,CAAC;gBAChB,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACzB,CAAC;YAED,WAAW,GAAG,IAAI,CAAC;QACrB,CAAC,EACD;YACE,SAAS,EAAE,IAAI;SAChB,CACF,CAAC;QAEF,GAAG,CAAC,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC;IACxB,CAAC;IAED,IAAA,iBAAS,EAAC,GAAG,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAEvC,OAAO,GAAG,CAAC,OAAO,CAAC,KAAM,CAAC;AAC5B,CAAC"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../../src/react/state.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE7D,wBAAgB,cAAc,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,aAAa,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAQlG"}
|
@@ -0,0 +1,13 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.useStateSignal = useStateSignal;
|
4
|
+
const react_1 = require("react");
|
5
|
+
const hooks_js_1 = require("../hooks.js");
|
6
|
+
function useStateSignal(value, opts) {
|
7
|
+
const ref = (0, react_1.useRef)(undefined);
|
8
|
+
if (!ref.current) {
|
9
|
+
ref.current = (0, hooks_js_1.state)(value, opts);
|
10
|
+
}
|
11
|
+
return ref.current;
|
12
|
+
}
|
13
|
+
//# sourceMappingURL=state.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../../src/react/state.ts"],"names":[],"mappings":";;AAIA,wCAQC;AAZD,iCAA+B;AAC/B,0CAAoC;AAGpC,SAAgB,cAAc,CAAI,KAAQ,EAAE,IAAkC;IAC5E,MAAM,GAAG,GAAG,IAAA,cAAM,EAAiC,SAAS,CAAC,CAAC;IAE9D,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QACjB,GAAG,CAAC,OAAO,GAAG,IAAA,gBAAK,EAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,OAAO,GAAG,CAAC,OAAO,CAAC;AACrB,CAAC"}
|
package/dist/cjs/scheduling.d.ts
CHANGED
@@ -1,6 +1,11 @@
|
|
1
1
|
import { ComputedSignal } from './signals.js';
|
2
|
+
import { Tracer } from './trace.js';
|
2
3
|
export declare const scheduleWatcher: (watcher: ComputedSignal<any>) => void;
|
3
4
|
export declare const scheduleDirty: (signal: ComputedSignal<any>) => void;
|
4
5
|
export declare const schedulePull: (signal: ComputedSignal<any>) => void;
|
6
|
+
export declare const scheduleConnect: (connect: ComputedSignal<any>) => void;
|
5
7
|
export declare const scheduleDisconnect: (disconnect: ComputedSignal<any>) => void;
|
8
|
+
export declare const scheduleEffect: (signal: ComputedSignal<any>) => void;
|
9
|
+
export declare const scheduleTracer: (tracer: Tracer) => void;
|
10
|
+
export declare const settled: () => Promise<void>;
|
6
11
|
//# sourceMappingURL=scheduling.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"scheduling.d.ts","sourceRoot":"","sources":["../../src/scheduling.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;
|
1
|
+
{"version":3,"file":"scheduling.d.ts","sourceRoot":"","sources":["../../src/scheduling.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAyBpC,eAAO,MAAM,eAAe,YAAa,cAAc,CAAC,GAAG,CAAC,SAI3D,CAAC;AAEF,eAAO,MAAM,aAAa,WAAY,cAAc,CAAC,GAAG,CAAC,SAGxD,CAAC;AAEF,eAAO,MAAM,YAAY,WAAY,cAAc,CAAC,GAAG,CAAC,SAGvD,CAAC;AAEF,eAAO,MAAM,eAAe,YAAa,cAAc,CAAC,GAAG,CAAC,SAM3D,CAAC;AAEF,eAAO,MAAM,kBAAkB,eAAgB,cAAc,CAAC,GAAG,CAAC,SAMjE,CAAC;AAEF,eAAO,MAAM,cAAc,WAAY,cAAc,CAAC,GAAG,CAAC,SAGzD,CAAC;AAEF,eAAO,MAAM,cAAc,WAAY,MAAM,SAG5C,CAAC;AA0DF,eAAO,MAAM,OAAO,qBAInB,CAAC"}
|
package/dist/cjs/scheduling.js
CHANGED
@@ -1,34 +1,65 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.scheduleDisconnect = exports.schedulePull = exports.scheduleDirty = exports.scheduleWatcher = void 0;
|
3
|
+
exports.settled = exports.scheduleTracer = exports.scheduleEffect = exports.scheduleDisconnect = exports.scheduleConnect = exports.schedulePull = exports.scheduleDirty = exports.scheduleWatcher = void 0;
|
4
4
|
const config_js_1 = require("./config.js");
|
5
5
|
let PENDING_DIRTIES = [];
|
6
6
|
let PENDING_PULLS = [];
|
7
7
|
let PENDING_WATCHERS = [];
|
8
|
+
let PENDING_CONNECTS = new Map();
|
8
9
|
let PENDING_DISCONNECTS = new Map();
|
10
|
+
let PENDING_EFFECTS = [];
|
11
|
+
let PENDING_TRACERS = [];
|
9
12
|
const microtask = () => Promise.resolve();
|
13
|
+
let currentFlush = null;
|
14
|
+
const scheduleFlush = (fn) => {
|
15
|
+
if (currentFlush)
|
16
|
+
return;
|
17
|
+
let resolve;
|
18
|
+
const promise = new Promise(r => (resolve = r));
|
19
|
+
currentFlush = { promise, resolve: resolve };
|
20
|
+
(0, config_js_1.scheduleFlush)(flushWatchers);
|
21
|
+
};
|
10
22
|
const scheduleWatcher = (watcher) => {
|
11
23
|
PENDING_WATCHERS.push(watcher);
|
12
|
-
|
24
|
+
scheduleFlush(flushWatchers);
|
13
25
|
};
|
14
26
|
exports.scheduleWatcher = scheduleWatcher;
|
15
27
|
const scheduleDirty = (signal) => {
|
16
28
|
PENDING_DIRTIES.push(signal);
|
17
|
-
|
29
|
+
scheduleFlush(flushWatchers);
|
18
30
|
};
|
19
31
|
exports.scheduleDirty = scheduleDirty;
|
20
32
|
const schedulePull = (signal) => {
|
21
33
|
PENDING_PULLS.push(signal);
|
22
|
-
|
34
|
+
scheduleFlush(flushWatchers);
|
23
35
|
};
|
24
36
|
exports.schedulePull = schedulePull;
|
37
|
+
const scheduleConnect = (connect) => {
|
38
|
+
const current = PENDING_CONNECTS.get(connect) ?? 0;
|
39
|
+
PENDING_CONNECTS.set(connect, current + 1);
|
40
|
+
scheduleFlush(flushWatchers);
|
41
|
+
};
|
42
|
+
exports.scheduleConnect = scheduleConnect;
|
25
43
|
const scheduleDisconnect = (disconnect) => {
|
26
44
|
const current = PENDING_DISCONNECTS.get(disconnect) ?? 0;
|
27
45
|
PENDING_DISCONNECTS.set(disconnect, current + 1);
|
28
|
-
|
46
|
+
scheduleFlush(flushWatchers);
|
29
47
|
};
|
30
48
|
exports.scheduleDisconnect = scheduleDisconnect;
|
49
|
+
const scheduleEffect = (signal) => {
|
50
|
+
PENDING_EFFECTS.push(signal);
|
51
|
+
scheduleFlush(flushWatchers);
|
52
|
+
};
|
53
|
+
exports.scheduleEffect = scheduleEffect;
|
54
|
+
const scheduleTracer = (tracer) => {
|
55
|
+
PENDING_TRACERS.push(tracer);
|
56
|
+
scheduleFlush(flushWatchers);
|
57
|
+
};
|
58
|
+
exports.scheduleTracer = scheduleTracer;
|
31
59
|
const flushWatchers = async () => {
|
60
|
+
const flush = currentFlush;
|
61
|
+
// Flush all the dirty signals and pulls recursively, clearing
|
62
|
+
// the microtask queue until they are all settled
|
32
63
|
while (PENDING_DIRTIES.length > 0 || PENDING_PULLS.length > 0) {
|
33
64
|
for (const dirty of PENDING_DIRTIES) {
|
34
65
|
dirty._dirtyConsumers();
|
@@ -40,15 +71,38 @@ const flushWatchers = async () => {
|
|
40
71
|
PENDING_PULLS = [];
|
41
72
|
await microtask();
|
42
73
|
}
|
74
|
+
// Clear the flush so that if any more watchers are scheduled,
|
75
|
+
// they will be flushed in the next tick
|
76
|
+
currentFlush = null;
|
43
77
|
(0, config_js_1.runBatch)(() => {
|
44
78
|
for (const watcher of PENDING_WATCHERS) {
|
45
79
|
watcher._check();
|
46
80
|
}
|
81
|
+
for (const [signal, count] of PENDING_CONNECTS) {
|
82
|
+
signal._check(true, count);
|
83
|
+
}
|
47
84
|
for (const [signal, count] of PENDING_DISCONNECTS) {
|
48
85
|
signal._disconnect(count);
|
49
86
|
}
|
87
|
+
for (const signal of PENDING_EFFECTS) {
|
88
|
+
signal._runEffects();
|
89
|
+
}
|
90
|
+
for (const tracer of PENDING_TRACERS) {
|
91
|
+
tracer.flush();
|
92
|
+
}
|
50
93
|
PENDING_WATCHERS = [];
|
94
|
+
PENDING_CONNECTS.clear();
|
51
95
|
PENDING_DISCONNECTS.clear();
|
96
|
+
PENDING_EFFECTS = [];
|
97
|
+
PENDING_TRACERS = [];
|
52
98
|
});
|
99
|
+
// resolve the flush promise
|
100
|
+
flush.resolve();
|
101
|
+
};
|
102
|
+
const settled = async () => {
|
103
|
+
while (currentFlush) {
|
104
|
+
await currentFlush.promise;
|
105
|
+
}
|
53
106
|
};
|
107
|
+
exports.settled = settled;
|
54
108
|
//# sourceMappingURL=scheduling.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"scheduling.js","sourceRoot":"","sources":["../../src/scheduling.ts"],"names":[],"mappings":";;;AACA,
|
1
|
+
{"version":3,"file":"scheduling.js","sourceRoot":"","sources":["../../src/scheduling.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/signals.d.ts
CHANGED
@@ -1,31 +1,11 @@
|
|
1
|
+
import { VisualizerNodeType } from './trace.js';
|
2
|
+
import { AsyncResult, AsyncSignal, AsyncTask, Signal, SignalAsyncCompute, SignalCompute, SignalEquals, SignalOptions, SignalOptionsWithInit, SignalSubscribe, Watcher, WatcherListenerOptions } from './types.js';
|
1
3
|
declare const enum SignalType {
|
2
4
|
Computed = 0,
|
3
5
|
Subscription = 1,
|
4
6
|
Async = 2,
|
5
7
|
Watcher = 3
|
6
8
|
}
|
7
|
-
export interface Signal<T = unknown> {
|
8
|
-
get(): T;
|
9
|
-
}
|
10
|
-
export interface WriteableSignal<T> extends Signal<T> {
|
11
|
-
set(value: T): void;
|
12
|
-
}
|
13
|
-
export type AsyncSignal<T> = Signal<AsyncResult<T>>;
|
14
|
-
export type SignalCompute<T> = (prev: T | undefined) => T;
|
15
|
-
export type SignalAsyncCompute<T> = (prev: T | undefined) => T | Promise<T>;
|
16
|
-
export type SignalWatcherEffect = () => void;
|
17
|
-
export type SignalEquals<T> = (prev: T, next: T) => boolean;
|
18
|
-
export type SignalSubscription = {
|
19
|
-
update?(): void;
|
20
|
-
unsubscribe?(): void;
|
21
|
-
};
|
22
|
-
export type SignalSubscribe<T> = (get: () => T, set: (value: T) => void) => SignalSubscription | undefined | void;
|
23
|
-
export interface SignalOptions<T> {
|
24
|
-
equals?: SignalEquals<T>;
|
25
|
-
}
|
26
|
-
export interface SignalOptionsWithInit<T> extends SignalOptions<T> {
|
27
|
-
initValue: T;
|
28
|
-
}
|
29
9
|
declare const enum SignalState {
|
30
10
|
Clean = 0,
|
31
11
|
MaybeDirty = 1,
|
@@ -39,8 +19,13 @@ interface Link {
|
|
39
19
|
consumedAt: number;
|
40
20
|
nextDirty: Link | undefined;
|
41
21
|
}
|
22
|
+
export declare function signalTypeToVisualizerType(type: SignalType): VisualizerNodeType;
|
23
|
+
interface InternalSignalOptions<T> extends SignalOptions<T, unknown[]> {
|
24
|
+
equals: SignalEquals<T>;
|
25
|
+
id: string;
|
26
|
+
subscribers?: ((value: T) => void)[];
|
27
|
+
}
|
42
28
|
export declare class ComputedSignal<T> {
|
43
|
-
_id: number;
|
44
29
|
_type: SignalType;
|
45
30
|
_deps: Map<ComputedSignal<any>, Link>;
|
46
31
|
_dirtyDep: Link | undefined;
|
@@ -50,63 +35,38 @@ export declare class ComputedSignal<T> {
|
|
50
35
|
_computedCount: number;
|
51
36
|
_connectedCount: number;
|
52
37
|
_currentValue: T | AsyncResult<T> | undefined;
|
53
|
-
_compute: SignalCompute<T> | SignalAsyncCompute<T> | SignalSubscribe<T
|
54
|
-
|
38
|
+
_compute: SignalCompute<T> | SignalAsyncCompute<T> | SignalSubscribe<T>;
|
39
|
+
_opts: InternalSignalOptions<T>;
|
55
40
|
_ref: WeakRef<ComputedSignal<T>>;
|
56
|
-
constructor(type: SignalType, compute: SignalCompute<T> | SignalAsyncCompute<T> | SignalSubscribe<T
|
41
|
+
constructor(type: SignalType, compute: SignalCompute<T> | SignalAsyncCompute<T> | SignalSubscribe<T>, opts: InternalSignalOptions<T>, initValue?: T);
|
57
42
|
get(): T | AsyncResult<T>;
|
58
|
-
_check(shouldWatch?: boolean): number;
|
59
|
-
_run(wasConnected: boolean, shouldConnect: boolean): void;
|
43
|
+
_check(shouldWatch?: boolean, connectCount?: number, immediate?: boolean): number;
|
44
|
+
_run(wasConnected: boolean, shouldConnect: boolean, immediate?: boolean): void;
|
60
45
|
_resetDirty(): void;
|
61
46
|
_dirty(): void;
|
62
47
|
_dirtyConsumers(): void;
|
63
48
|
_disconnect(count?: number): void;
|
49
|
+
_runEffects(): void;
|
50
|
+
addListener(subscriber: (value: T) => void, opts?: WatcherListenerOptions): () => void;
|
64
51
|
}
|
65
|
-
export
|
66
|
-
invalidate(): void;
|
67
|
-
await(): T;
|
68
|
-
}
|
69
|
-
export interface AsyncPending<T> extends AsyncBaseResult<T> {
|
70
|
-
result: undefined;
|
71
|
-
error: unknown;
|
72
|
-
isPending: boolean;
|
73
|
-
isReady: false;
|
74
|
-
isError: boolean;
|
75
|
-
isSuccess: boolean;
|
76
|
-
didResolve: boolean;
|
77
|
-
}
|
78
|
-
export interface AsyncReady<T> extends AsyncBaseResult<T> {
|
79
|
-
result: T;
|
80
|
-
error: unknown;
|
81
|
-
isPending: boolean;
|
82
|
-
isReady: true;
|
83
|
-
isError: boolean;
|
84
|
-
isSuccess: boolean;
|
85
|
-
didResolve: boolean;
|
86
|
-
}
|
87
|
-
export type AsyncResult<T> = AsyncPending<T> | AsyncReady<T>;
|
88
|
-
declare class StateSignal<T> implements StateSignal<T> {
|
52
|
+
export declare class StateSignal<T> implements StateSignal<T> {
|
89
53
|
private _value;
|
90
54
|
private _equals;
|
91
|
-
|
92
|
-
|
55
|
+
_subs: WeakRef<ComputedSignal<unknown>>[];
|
56
|
+
_desc: string;
|
57
|
+
constructor(_value: T, _equals?: SignalEquals<T>, desc?: string);
|
93
58
|
get(): T;
|
94
59
|
set(value: T): void;
|
95
60
|
}
|
96
|
-
export declare function
|
97
|
-
export declare function
|
98
|
-
export declare function
|
99
|
-
export declare function
|
100
|
-
export declare function
|
101
|
-
export declare function
|
102
|
-
export
|
103
|
-
|
104
|
-
|
105
|
-
}
|
106
|
-
export interface WatcherOpts {
|
107
|
-
immediate?: boolean;
|
108
|
-
}
|
109
|
-
export declare function watcher(fn: () => void, opts?: WatcherOpts): Watcher;
|
61
|
+
export declare function createStateSignal<T>(initialValue: T, opts?: Omit<SignalOptions<T, unknown[]>, 'paramKey'>): StateSignal<T>;
|
62
|
+
export declare function createComputedSignal<T>(compute: (prev: T | undefined) => T, opts?: SignalOptions<T, unknown[]>): Signal<T>;
|
63
|
+
export declare function createAsyncComputedSignal<T>(compute: (prev: T | undefined) => Promise<T>, opts?: SignalOptions<T, unknown[]>): AsyncSignal<T>;
|
64
|
+
export declare function createAsyncComputedSignal<T>(compute: (prev: T | undefined) => Promise<T>, opts: SignalOptionsWithInit<T, unknown[]>): AsyncSignal<T>;
|
65
|
+
export declare function createSubscriptionSignal<T>(subscribe: SignalSubscribe<T>, opts?: SignalOptions<T, unknown[]>): Signal<T | undefined>;
|
66
|
+
export declare function createSubscriptionSignal<T>(subscribe: SignalSubscribe<T>, opts: SignalOptionsWithInit<T, unknown[]>): Signal<T>;
|
67
|
+
export declare function createAsyncTaskSignal<T, Args extends unknown[]>(fn: (...args: Args) => Promise<T>): Signal<AsyncTask<T, Args>>;
|
68
|
+
export declare function createWatcherSignal<T>(fn: (prev: T | undefined) => T, opts?: SignalOptions<T, unknown[]>): Watcher<T>;
|
69
|
+
export declare function getCurrentConsumer(): ComputedSignal<any> | undefined;
|
110
70
|
export declare function isTracking(): boolean;
|
111
71
|
export declare function untrack<T = void>(fn: () => T): T;
|
112
72
|
export {};
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"signals.d.ts","sourceRoot":"","sources":["../../src/signals.ts"],"names":[],"mappings":"AASA,
|
1
|
+
{"version":3,"file":"signals.d.ts","sourceRoot":"","sources":["../../src/signals.ts"],"names":[],"mappings":"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"}
|