signalium 0.3.8 → 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/.turbo/turbo-build.log +3 -3
- package/CHANGELOG.md +21 -0
- package/build/react.js +19 -0
- package/build/transform.js +19 -0
- package/dist/cjs/config.d.ts +8 -3
- package/dist/cjs/config.d.ts.map +1 -1
- package/dist/cjs/config.js +14 -8
- package/dist/cjs/config.js.map +1 -1
- package/dist/cjs/debug.d.ts +2 -2
- package/dist/cjs/debug.d.ts.map +1 -1
- package/dist/cjs/debug.js +3 -3
- package/dist/cjs/debug.js.map +1 -1
- package/dist/cjs/hooks.d.ts +14 -42
- package/dist/cjs/hooks.d.ts.map +1 -1
- package/dist/cjs/hooks.js +19 -240
- package/dist/cjs/hooks.js.map +1 -1
- package/dist/cjs/index.d.ts +5 -3
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +18 -18
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/internals/async.d.ts +52 -0
- package/dist/cjs/internals/async.d.ts.map +1 -0
- package/dist/cjs/internals/async.js +394 -0
- package/dist/cjs/internals/async.js.map +1 -0
- package/dist/cjs/internals/connect.d.ts +4 -0
- package/dist/cjs/internals/connect.d.ts.map +1 -0
- package/dist/cjs/internals/connect.js +37 -0
- package/dist/cjs/internals/connect.js.map +1 -0
- package/dist/cjs/internals/consumer.d.ts +6 -0
- package/dist/cjs/internals/consumer.d.ts.map +1 -0
- package/dist/cjs/internals/consumer.js +13 -0
- package/dist/cjs/internals/consumer.js.map +1 -0
- package/dist/cjs/internals/contexts.d.ts +33 -0
- package/dist/cjs/internals/contexts.d.ts.map +1 -0
- package/dist/cjs/internals/contexts.js +103 -0
- package/dist/cjs/internals/contexts.js.map +1 -0
- package/dist/cjs/internals/derived.d.ts +66 -0
- package/dist/cjs/internals/derived.d.ts.map +1 -0
- package/dist/cjs/internals/derived.js +128 -0
- package/dist/cjs/internals/derived.js.map +1 -0
- package/dist/cjs/internals/dirty.d.ts +5 -0
- package/dist/cjs/internals/dirty.d.ts.map +1 -0
- package/dist/cjs/internals/dirty.js +79 -0
- package/dist/cjs/internals/dirty.js.map +1 -0
- package/dist/cjs/internals/edge.d.ts +32 -0
- package/dist/cjs/internals/edge.d.ts.map +1 -0
- package/dist/cjs/internals/edge.js +59 -0
- package/dist/cjs/internals/edge.js.map +1 -0
- package/dist/cjs/internals/get.d.ts +10 -0
- package/dist/cjs/internals/get.d.ts.map +1 -0
- package/dist/cjs/internals/get.js +255 -0
- package/dist/cjs/internals/get.js.map +1 -0
- package/dist/cjs/internals/scheduling.d.ts +12 -0
- package/dist/cjs/internals/scheduling.d.ts.map +1 -0
- package/dist/cjs/internals/scheduling.js +117 -0
- package/dist/cjs/internals/scheduling.js.map +1 -0
- package/dist/cjs/internals/state.d.ts +18 -0
- package/dist/cjs/internals/state.d.ts.map +1 -0
- package/dist/cjs/internals/state.js +88 -0
- package/dist/cjs/internals/state.js.map +1 -0
- package/dist/cjs/internals/utils/debug-name.d.ts +2 -0
- package/dist/cjs/internals/utils/debug-name.d.ts.map +1 -0
- package/dist/cjs/internals/utils/debug-name.js +14 -0
- package/dist/cjs/internals/utils/debug-name.js.map +1 -0
- package/dist/cjs/internals/utils/equals.d.ts +3 -0
- package/dist/cjs/internals/utils/equals.d.ts.map +1 -0
- package/dist/cjs/internals/utils/equals.js +13 -0
- package/dist/cjs/internals/utils/equals.js.map +1 -0
- package/dist/cjs/internals/utils/hash.d.ts +7 -0
- package/dist/cjs/internals/utils/hash.d.ts.map +1 -0
- package/dist/cjs/internals/utils/hash.js +181 -0
- package/dist/cjs/internals/utils/hash.js.map +1 -0
- package/dist/cjs/internals/utils/stringify.d.ts +3 -0
- package/dist/cjs/internals/utils/stringify.d.ts.map +1 -0
- package/dist/cjs/{utils.js → internals/utils/stringify.js} +5 -27
- package/dist/cjs/internals/utils/stringify.js.map +1 -0
- package/dist/cjs/internals/utils/type-utils.d.ts +6 -0
- package/dist/cjs/internals/utils/type-utils.d.ts.map +1 -0
- package/dist/cjs/internals/utils/type-utils.js +22 -0
- package/dist/cjs/internals/utils/type-utils.js.map +1 -0
- package/dist/cjs/react/context.d.ts +1 -1
- package/dist/cjs/react/context.d.ts.map +1 -1
- package/dist/cjs/react/provider.d.ts +4 -3
- package/dist/cjs/react/provider.d.ts.map +1 -1
- package/dist/cjs/react/provider.js +7 -3
- package/dist/cjs/react/provider.js.map +1 -1
- package/dist/cjs/react/setup.d.ts.map +1 -1
- package/dist/cjs/react/setup.js +2 -1
- package/dist/cjs/react/setup.js.map +1 -1
- package/dist/cjs/react/signal-value.d.ts +5 -1
- package/dist/cjs/react/signal-value.d.ts.map +1 -1
- package/dist/cjs/react/signal-value.js +35 -45
- package/dist/cjs/react/signal-value.js.map +1 -1
- package/dist/cjs/trace.d.ts +32 -28
- package/dist/cjs/trace.d.ts.map +1 -1
- package/dist/cjs/trace.js +14 -16
- package/dist/cjs/trace.js.map +1 -1
- package/dist/cjs/transform.d.ts +6 -0
- package/dist/cjs/transform.d.ts.map +1 -0
- package/dist/cjs/transform.js +92 -0
- package/dist/cjs/transform.js.map +1 -0
- package/dist/cjs/types.d.ts +32 -40
- package/dist/cjs/types.d.ts.map +1 -1
- package/dist/esm/config.d.ts +8 -3
- package/dist/esm/config.d.ts.map +1 -1
- package/dist/esm/config.js +12 -7
- package/dist/esm/config.js.map +1 -1
- package/dist/esm/debug.d.ts +2 -2
- package/dist/esm/debug.d.ts.map +1 -1
- package/dist/esm/debug.js +2 -2
- package/dist/esm/debug.js.map +1 -1
- package/dist/esm/hooks.d.ts +14 -42
- package/dist/esm/hooks.d.ts.map +1 -1
- package/dist/esm/hooks.js +17 -226
- package/dist/esm/hooks.js.map +1 -1
- package/dist/esm/index.d.ts +5 -3
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +5 -3
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/internals/async.d.ts +52 -0
- package/dist/esm/internals/async.d.ts.map +1 -0
- package/dist/esm/internals/async.js +387 -0
- package/dist/esm/internals/async.js.map +1 -0
- package/dist/esm/internals/connect.d.ts +4 -0
- package/dist/esm/internals/connect.d.ts.map +1 -0
- package/dist/esm/internals/connect.js +33 -0
- package/dist/esm/internals/connect.js.map +1 -0
- package/dist/esm/internals/consumer.d.ts +6 -0
- package/dist/esm/internals/consumer.d.ts.map +1 -0
- package/dist/esm/internals/consumer.js +9 -0
- package/dist/esm/internals/consumer.js.map +1 -0
- package/dist/esm/internals/contexts.d.ts +33 -0
- package/dist/esm/internals/contexts.d.ts.map +1 -0
- package/dist/esm/internals/contexts.js +92 -0
- package/dist/esm/internals/contexts.js.map +1 -0
- package/dist/esm/internals/derived.d.ts +66 -0
- package/dist/esm/internals/derived.d.ts.map +1 -0
- package/dist/esm/internals/derived.js +118 -0
- package/dist/esm/internals/derived.js.map +1 -0
- package/dist/esm/internals/dirty.d.ts +5 -0
- package/dist/esm/internals/dirty.d.ts.map +1 -0
- package/dist/esm/internals/dirty.js +75 -0
- package/dist/esm/internals/dirty.js.map +1 -0
- package/dist/esm/internals/edge.d.ts +32 -0
- package/dist/esm/internals/edge.d.ts.map +1 -0
- package/dist/esm/internals/edge.js +54 -0
- package/dist/esm/internals/edge.js.map +1 -0
- package/dist/esm/internals/get.d.ts +10 -0
- package/dist/esm/internals/get.d.ts.map +1 -0
- package/dist/esm/internals/get.js +247 -0
- package/dist/esm/internals/get.js.map +1 -0
- package/dist/esm/internals/scheduling.d.ts +12 -0
- package/dist/esm/internals/scheduling.d.ts.map +1 -0
- package/dist/esm/internals/scheduling.js +106 -0
- package/dist/esm/internals/scheduling.js.map +1 -0
- package/dist/esm/internals/state.d.ts +18 -0
- package/dist/esm/internals/state.d.ts.map +1 -0
- package/dist/esm/internals/state.js +82 -0
- package/dist/esm/internals/state.js.map +1 -0
- package/dist/esm/internals/utils/debug-name.d.ts +2 -0
- package/dist/esm/internals/utils/debug-name.d.ts.map +1 -0
- package/dist/esm/internals/utils/debug-name.js +11 -0
- package/dist/esm/internals/utils/debug-name.js.map +1 -0
- package/dist/esm/internals/utils/equals.d.ts +3 -0
- package/dist/esm/internals/utils/equals.d.ts.map +1 -0
- package/dist/esm/internals/utils/equals.js +9 -0
- package/dist/esm/internals/utils/equals.js.map +1 -0
- package/dist/esm/internals/utils/hash.d.ts +7 -0
- package/dist/esm/internals/utils/hash.d.ts.map +1 -0
- package/dist/esm/internals/utils/hash.js +174 -0
- package/dist/esm/internals/utils/hash.js.map +1 -0
- package/dist/esm/internals/utils/stringify.d.ts +3 -0
- package/dist/esm/internals/utils/stringify.d.ts.map +1 -0
- package/dist/esm/{utils.js → internals/utils/stringify.js} +4 -25
- package/dist/esm/internals/utils/stringify.js.map +1 -0
- package/dist/esm/internals/utils/type-utils.d.ts +6 -0
- package/dist/esm/internals/utils/type-utils.d.ts.map +1 -0
- package/dist/esm/internals/utils/type-utils.js +15 -0
- package/dist/esm/internals/utils/type-utils.js.map +1 -0
- package/dist/esm/react/context.d.ts +1 -1
- package/dist/esm/react/context.d.ts.map +1 -1
- package/dist/esm/react/provider.d.ts +4 -3
- package/dist/esm/react/provider.d.ts.map +1 -1
- package/dist/esm/react/provider.js +6 -2
- package/dist/esm/react/provider.js.map +1 -1
- package/dist/esm/react/setup.d.ts.map +1 -1
- package/dist/esm/react/setup.js +3 -2
- package/dist/esm/react/setup.js.map +1 -1
- package/dist/esm/react/signal-value.d.ts +5 -1
- package/dist/esm/react/signal-value.d.ts.map +1 -1
- package/dist/esm/react/signal-value.js +34 -45
- package/dist/esm/react/signal-value.js.map +1 -1
- package/dist/esm/trace.d.ts +32 -28
- package/dist/esm/trace.d.ts.map +1 -1
- package/dist/esm/trace.js +13 -15
- package/dist/esm/trace.js.map +1 -1
- package/dist/esm/transform.d.ts +6 -0
- package/dist/esm/transform.d.ts.map +1 -0
- package/dist/esm/transform.js +89 -0
- package/dist/esm/transform.js.map +1 -0
- package/dist/esm/types.d.ts +32 -40
- package/dist/esm/types.d.ts.map +1 -1
- package/package.json +23 -4
- package/src/__tests__/__snapshots__/context.test.ts.snap +2101 -0
- package/src/__tests__/__snapshots__/nesting.test.ts.snap +16201 -0
- package/src/__tests__/__snapshots__/params-and-state.test.ts.snap +1879 -0
- package/src/__tests__/async-task.test.ts +327 -0
- package/src/__tests__/context.test.ts +517 -0
- package/src/__tests__/nesting.test.ts +298 -0
- package/src/__tests__/params-and-state.test.ts +230 -0
- package/src/__tests__/reactive-async.test.ts +548 -0
- package/src/__tests__/reactive-sync.test.ts +130 -0
- package/src/__tests__/subscription.test.ts +510 -0
- package/src/__tests__/utils/async.ts +1 -1
- package/src/__tests__/utils/instrumented-hooks.ts +229 -124
- package/src/__tests__/utils/permute.ts +25 -14
- package/src/config.ts +19 -9
- package/src/debug.ts +2 -2
- package/src/hooks.ts +46 -380
- package/src/index.ts +7 -24
- package/src/internals/async.ts +558 -0
- package/src/internals/connect.ts +41 -0
- package/src/internals/consumer.ts +13 -0
- package/src/internals/contexts.ts +133 -0
- package/src/internals/derived.ts +208 -0
- package/src/internals/dirty.ts +91 -0
- package/src/internals/edge.ts +109 -0
- package/src/internals/get.ts +298 -0
- package/src/internals/scheduling.ts +140 -0
- package/src/internals/state.ts +111 -0
- package/src/internals/utils/debug-name.ts +14 -0
- package/src/internals/utils/equals.ts +12 -0
- package/src/internals/utils/hash.ts +221 -0
- package/src/{utils.ts → internals/utils/stringify.ts} +3 -29
- package/src/internals/utils/type-utils.ts +19 -0
- package/src/react/__tests__/async.test.tsx +704 -0
- package/src/react/__tests__/basic.test.tsx +95 -0
- package/src/react/__tests__/contexts.test.tsx +99 -0
- package/src/react/__tests__/subscriptions.test.tsx +49 -0
- package/src/react/__tests__/utils.tsx +40 -0
- package/src/react/context.ts +1 -1
- package/src/react/provider.tsx +12 -4
- package/src/react/setup.ts +3 -2
- package/src/react/signal-value.ts +47 -67
- package/src/trace.ts +43 -38
- package/src/transform.ts +113 -0
- package/src/types.ts +56 -46
- package/transform.js +19 -0
- package/vitest.workspace.ts +38 -2
- package/dist/cjs/scheduling.d.ts +0 -11
- package/dist/cjs/scheduling.d.ts.map +0 -1
- package/dist/cjs/scheduling.js +0 -108
- package/dist/cjs/scheduling.js.map +0 -1
- package/dist/cjs/signals.d.ts +0 -73
- package/dist/cjs/signals.d.ts.map +0 -1
- package/dist/cjs/signals.js +0 -632
- package/dist/cjs/signals.js.map +0 -1
- package/dist/cjs/utils.d.ts +0 -4
- package/dist/cjs/utils.d.ts.map +0 -1
- package/dist/cjs/utils.js.map +0 -1
- package/dist/esm/scheduling.d.ts +0 -11
- package/dist/esm/scheduling.d.ts.map +0 -1
- package/dist/esm/scheduling.js +0 -97
- package/dist/esm/scheduling.js.map +0 -1
- package/dist/esm/signals.d.ts +0 -73
- package/dist/esm/signals.d.ts.map +0 -1
- package/dist/esm/signals.js +0 -614
- package/dist/esm/signals.js.map +0 -1
- package/dist/esm/utils.d.ts +0 -4
- package/dist/esm/utils.d.ts.map +0 -1
- package/dist/esm/utils.js.map +0 -1
- package/src/__tests__/hooks/async-computed.test.ts +0 -190
- package/src/__tests__/hooks/async-task.test.ts +0 -334
- package/src/__tests__/hooks/computed.test.ts +0 -126
- package/src/__tests__/hooks/context.test.ts +0 -527
- package/src/__tests__/hooks/nesting.test.ts +0 -303
- package/src/__tests__/hooks/params-and-state.test.ts +0 -168
- package/src/__tests__/hooks/subscription.test.ts +0 -97
- package/src/__tests__/signals/async.test.ts +0 -416
- package/src/__tests__/signals/basic.test.ts +0 -399
- package/src/__tests__/signals/subscription.test.ts +0 -632
- package/src/__tests__/signals/watcher.test.ts +0 -253
- package/src/__tests__/utils/builders.ts +0 -22
- package/src/__tests__/utils/instrumented-signals.ts +0 -291
- package/src/react/__tests__/react.test.tsx +0 -227
- package/src/scheduling.ts +0 -130
- package/src/signals.ts +0 -824
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"contexts.d.ts","sourceRoot":"","sources":["../../../src/internals/contexts.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,aAAa,EAAuB,MAAM,cAAc,CAAC;AAIlE,eAAO,MAAM,WAAW,eAA8B,CAAC;AAEvD,MAAM,MAAM,OAAO,CAAC,CAAC,IAAI;IACvB,YAAY,EAAE,CAAC,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,OAAO,EAAE,IAAI;KAC5C,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAC/C,CAAC;AAIF,qBAAa,WAAW,CAAC,CAAC;aAKN,YAAY,EAAE,CAAC;IAJjC,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;gBAGH,YAAY,EAAE,CAAC,EAC/B,IAAI,CAAC,EAAE,MAAM;CAKhB;AAED,eAAO,MAAM,aAAa,GAAI,CAAC,gBAAgB,CAAC,gBAAgB,MAAM,KAAG,OAAO,CAAC,CAAC,CAEjF,CAAC;AAEF,qBAAa,WAAW;gBACV,QAAQ,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,WAAW;IAS7E,OAAO,CAAC,WAAW,CAAC,CAA0B;IAC9C,OAAO,CAAC,QAAQ,CAA0B;IAC1C,OAAO,CAAC,QAAQ,CAAkC;IAClD,OAAO,CAAC,OAAO,CAAgD;IAE/D,QAAQ,CAAC,QAAQ,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE;IAapD,UAAU,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS;IAMlD,GAAG,CAAC,CAAC,EAAE,IAAI,SAAS,OAAO,EAAE,EAC3B,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,IAAI,KAAK,CAAC,EACxB,IAAI,EAAE,IAAI,EACV,IAAI,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAC7C,aAAa,CAAC,CAAC,EAAE,IAAI,CAAC;CAY1B;AAED,eAAO,IAAI,UAAU,aAAsB,CAAC;AAE5C,eAAO,MAAM,cAAc,YAE1B,CAAC;AAIF,eAAO,MAAM,eAAe,QAAO,WAElC,CAAC;AAEF,wBAAgB,YAAY,CAAC,CAAC,SAAS,OAAO,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAUlG;AAED,eAAO,MAAM,SAAS,GAAI,CAAC,SAAS,WAAW,MAAM,MAAM,CAAC,MAS3D,CAAC;AAEF,eAAO,MAAM,UAAU,GAAI,CAAC,WAAW,OAAO,CAAC,CAAC,CAAC,KAAG,CAUnD,CAAC"}
|
@@ -0,0 +1,103 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.useContext = exports.withScope = exports.getCurrentScope = exports.clearRootScope = exports.ROOT_SCOPE = exports.SignalScope = exports.createContext = exports.ContextImpl = exports.CONTEXT_KEY = void 0;
|
4
|
+
exports.withContexts = withContexts;
|
5
|
+
const config_js_1 = require("../config.js");
|
6
|
+
const derived_js_1 = require("./derived.js");
|
7
|
+
const get_js_1 = require("./get.js");
|
8
|
+
const hash_js_1 = require("./utils/hash.js");
|
9
|
+
exports.CONTEXT_KEY = Symbol('signalium:context');
|
10
|
+
let CONTEXT_ID = 0;
|
11
|
+
class ContextImpl {
|
12
|
+
defaultValue;
|
13
|
+
_key;
|
14
|
+
_description;
|
15
|
+
constructor(defaultValue, desc) {
|
16
|
+
this.defaultValue = defaultValue;
|
17
|
+
this._description = desc ?? `context:${CONTEXT_ID++}`;
|
18
|
+
this._key = Symbol(this._description);
|
19
|
+
}
|
20
|
+
}
|
21
|
+
exports.ContextImpl = ContextImpl;
|
22
|
+
const createContext = (initialValue, description) => {
|
23
|
+
return new ContextImpl(initialValue, description);
|
24
|
+
};
|
25
|
+
exports.createContext = createContext;
|
26
|
+
class SignalScope {
|
27
|
+
constructor(contexts, parent) {
|
28
|
+
this.parentScope = parent;
|
29
|
+
this.contexts = Object.create(parent?.contexts || null);
|
30
|
+
for (const [context, value] of contexts) {
|
31
|
+
this.contexts[context._key] = value;
|
32
|
+
}
|
33
|
+
}
|
34
|
+
parentScope = undefined;
|
35
|
+
contexts;
|
36
|
+
children = new Map();
|
37
|
+
signals = new Map();
|
38
|
+
getChild(contexts) {
|
39
|
+
const key = (0, hash_js_1.hashValue)(contexts);
|
40
|
+
let child = this.children.get(key);
|
41
|
+
if (child === undefined) {
|
42
|
+
child = new SignalScope(contexts, this);
|
43
|
+
this.children.set(key, child);
|
44
|
+
}
|
45
|
+
return child;
|
46
|
+
}
|
47
|
+
getContext(_context) {
|
48
|
+
const context = _context;
|
49
|
+
return this.contexts[context._key];
|
50
|
+
}
|
51
|
+
get(fn, args, opts) {
|
52
|
+
const paramKey = opts?.paramKey?.(...args);
|
53
|
+
const key = (0, hash_js_1.hashReactiveFn)(fn, paramKey ? [paramKey] : args);
|
54
|
+
let signal = this.signals.get(key);
|
55
|
+
if (signal === undefined) {
|
56
|
+
signal = (0, derived_js_1.createDerivedSignal)(fn, args, key, this, opts);
|
57
|
+
this.signals.set(key, signal);
|
58
|
+
}
|
59
|
+
return signal;
|
60
|
+
}
|
61
|
+
}
|
62
|
+
exports.SignalScope = SignalScope;
|
63
|
+
exports.ROOT_SCOPE = new SignalScope([]);
|
64
|
+
const clearRootScope = () => {
|
65
|
+
exports.ROOT_SCOPE = new SignalScope([]);
|
66
|
+
};
|
67
|
+
exports.clearRootScope = clearRootScope;
|
68
|
+
let OVERRIDE_SCOPE;
|
69
|
+
const getCurrentScope = () => {
|
70
|
+
return OVERRIDE_SCOPE ?? get_js_1.CURRENT_CONSUMER?.scope ?? (0, config_js_1.getFrameworkScope)() ?? exports.ROOT_SCOPE;
|
71
|
+
};
|
72
|
+
exports.getCurrentScope = getCurrentScope;
|
73
|
+
function withContexts(contexts, fn) {
|
74
|
+
const prevScope = OVERRIDE_SCOPE;
|
75
|
+
const currentScope = (0, exports.getCurrentScope)();
|
76
|
+
try {
|
77
|
+
OVERRIDE_SCOPE = currentScope.getChild(contexts);
|
78
|
+
return fn();
|
79
|
+
}
|
80
|
+
finally {
|
81
|
+
OVERRIDE_SCOPE = prevScope;
|
82
|
+
}
|
83
|
+
}
|
84
|
+
const withScope = (scope, fn) => {
|
85
|
+
const prevScope = OVERRIDE_SCOPE;
|
86
|
+
try {
|
87
|
+
OVERRIDE_SCOPE = scope;
|
88
|
+
return fn();
|
89
|
+
}
|
90
|
+
finally {
|
91
|
+
OVERRIDE_SCOPE = prevScope;
|
92
|
+
}
|
93
|
+
};
|
94
|
+
exports.withScope = withScope;
|
95
|
+
const useContext = (context) => {
|
96
|
+
const scope = OVERRIDE_SCOPE ?? get_js_1.CURRENT_CONSUMER?.scope ?? (0, config_js_1.getFrameworkScope)();
|
97
|
+
if (scope === undefined) {
|
98
|
+
throw new Error('useContext must be used within a signal hook, a withContext, or within a framework-specific context provider.');
|
99
|
+
}
|
100
|
+
return scope.getContext(context) ?? context.defaultValue;
|
101
|
+
};
|
102
|
+
exports.useContext = useContext;
|
103
|
+
//# sourceMappingURL=contexts.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"contexts.js","sourceRoot":"","sources":["../../../src/internals/contexts.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,66 @@
|
|
1
|
+
import { Tracer, TracerMeta } from '../trace.js';
|
2
|
+
import { ReactiveValue, Signal, SignalEquals, SignalListener, SignalOptionsWithInit } from '../types.js';
|
3
|
+
import { SignalScope } from './contexts.js';
|
4
|
+
import { Edge } from './edge.js';
|
5
|
+
/**
|
6
|
+
* This file contains computed signal base types and struct definitions.
|
7
|
+
*
|
8
|
+
* Computed signals are monomorphic to make them more efficient, but this also
|
9
|
+
* means that multiple fields differ based on the type of the signal. Defining
|
10
|
+
* them using this pattern rather than a class allows us to switch on the `type`
|
11
|
+
* field to get strong typing in branches everywhere else.
|
12
|
+
*
|
13
|
+
* "Methods" for this struct are defined in other files for better organization.
|
14
|
+
*/
|
15
|
+
export type SignalId = number;
|
16
|
+
export declare const enum SignalState {
|
17
|
+
Clean = 0,
|
18
|
+
Pending = 1,
|
19
|
+
Dirty = 2,
|
20
|
+
MaybeDirty = 3
|
21
|
+
}
|
22
|
+
export declare const enum SignalFlags {
|
23
|
+
State = 3,
|
24
|
+
isSubscription = 4,
|
25
|
+
isListener = 8
|
26
|
+
}
|
27
|
+
interface ListenerMeta {
|
28
|
+
updatedAt: number;
|
29
|
+
current: Set<SignalListener>;
|
30
|
+
cachedBoundAdd: (listener: SignalListener) => () => void;
|
31
|
+
}
|
32
|
+
export declare class DerivedSignal<T, Args extends unknown[]> implements Signal<ReactiveValue<T>> {
|
33
|
+
private flags;
|
34
|
+
scope: SignalScope | undefined;
|
35
|
+
subs: Map<WeakRef<DerivedSignal<any, any>>, Edge>;
|
36
|
+
deps: Map<DerivedSignal<any, any>, Edge>;
|
37
|
+
ref: WeakRef<DerivedSignal<T, Args>>;
|
38
|
+
equals: SignalEquals<any>;
|
39
|
+
dirtyHead: Edge | undefined;
|
40
|
+
updatedCount: number;
|
41
|
+
computedCount: number;
|
42
|
+
watchCount: number;
|
43
|
+
_listeners: ListenerMeta | null;
|
44
|
+
compute: (...args: Args) => T;
|
45
|
+
args: Args;
|
46
|
+
value: ReactiveValue<T> | undefined;
|
47
|
+
tracerMeta?: TracerMeta;
|
48
|
+
constructor(isSubscription: boolean, compute: (...args: Args) => T, args: Args, key?: SignalId, scope?: SignalScope, opts?: Partial<SignalOptionsWithInit<T, Args>> & {
|
49
|
+
tracer?: Tracer;
|
50
|
+
});
|
51
|
+
get _state(): SignalState;
|
52
|
+
set _state(state: SignalState);
|
53
|
+
get _isListener(): boolean;
|
54
|
+
set _isListener(isListener: boolean);
|
55
|
+
get listeners(): ListenerMeta;
|
56
|
+
get(): ReactiveValue<T>;
|
57
|
+
addListener(listener: SignalListener): () => void;
|
58
|
+
addListenerLazy(): (listener: SignalListener) => () => void;
|
59
|
+
}
|
60
|
+
export declare const runListeners: (signal: DerivedSignal<any, any>) => void;
|
61
|
+
export declare const isSubscription: (signal: unknown) => boolean;
|
62
|
+
export declare function createDerivedSignal<T, Args extends unknown[]>(compute: (...args: Args) => T, args?: Args, key?: SignalId, scope?: SignalScope, opts?: Partial<SignalOptionsWithInit<T, Args>> & {
|
63
|
+
tracer?: Tracer;
|
64
|
+
}, isSubscription?: boolean): DerivedSignal<T, Args>;
|
65
|
+
export {};
|
66
|
+
//# sourceMappingURL=derived.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"derived.d.ts","sourceRoot":"","sources":["../../../src/internals/derived.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,128 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
+
};
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
+
exports.isSubscription = exports.runListeners = exports.DerivedSignal = void 0;
|
7
|
+
exports.createDerivedSignal = createDerivedSignal;
|
8
|
+
const weakref_js_1 = __importDefault(require("../weakref.js"));
|
9
|
+
const trace_js_1 = require("../trace.js");
|
10
|
+
const debug_name_js_1 = require("./utils/debug-name.js");
|
11
|
+
const get_js_1 = require("./get.js");
|
12
|
+
const scheduling_js_1 = require("./scheduling.js");
|
13
|
+
const hash_js_1 = require("./utils/hash.js");
|
14
|
+
const stringify_js_1 = require("./utils/stringify.js");
|
15
|
+
const equals_js_1 = require("./utils/equals.js");
|
16
|
+
let ID = 0;
|
17
|
+
class DerivedSignal {
|
18
|
+
// Bitmask containing state in the first 2 bits and boolean properties in the remaining bits
|
19
|
+
flags;
|
20
|
+
scope = undefined;
|
21
|
+
subs = new Map();
|
22
|
+
deps = new Map();
|
23
|
+
ref = new weakref_js_1.default(this);
|
24
|
+
equals;
|
25
|
+
dirtyHead = undefined;
|
26
|
+
updatedCount = 0;
|
27
|
+
computedCount = 0;
|
28
|
+
watchCount = 0;
|
29
|
+
_listeners = null;
|
30
|
+
compute;
|
31
|
+
args;
|
32
|
+
value;
|
33
|
+
tracerMeta;
|
34
|
+
constructor(isSubscription, compute, args, key, scope, opts) {
|
35
|
+
this.flags = (isSubscription ? 4 /* SignalFlags.isSubscription */ : 0) | 2 /* SignalState.Dirty */;
|
36
|
+
this.scope = scope;
|
37
|
+
this.compute = compute;
|
38
|
+
this.args = args;
|
39
|
+
this.equals = (0, equals_js_1.equalsFrom)(opts?.equals);
|
40
|
+
this.value = opts?.initValue;
|
41
|
+
if (trace_js_1.TRACER) {
|
42
|
+
this.tracerMeta = {
|
43
|
+
id: opts?.id ?? key ?? (0, hash_js_1.hashValue)([compute, ID++]),
|
44
|
+
desc: opts?.desc ?? compute.name ?? (0, debug_name_js_1.getUnknownSignalFnName)(compute),
|
45
|
+
params: args.map(arg => (0, stringify_js_1.stringifyValue)(arg)).join(', '),
|
46
|
+
tracer: opts?.tracer,
|
47
|
+
};
|
48
|
+
}
|
49
|
+
}
|
50
|
+
get _state() {
|
51
|
+
return this.flags & 3 /* SignalFlags.State */;
|
52
|
+
}
|
53
|
+
set _state(state) {
|
54
|
+
this.flags = (this.flags & ~3 /* SignalFlags.State */) | state;
|
55
|
+
}
|
56
|
+
get _isListener() {
|
57
|
+
return (this.flags & 8 /* SignalFlags.isListener */) !== 0;
|
58
|
+
}
|
59
|
+
set _isListener(isListener) {
|
60
|
+
if (isListener) {
|
61
|
+
this.flags |= 8 /* SignalFlags.isListener */;
|
62
|
+
}
|
63
|
+
else {
|
64
|
+
this.flags &= ~8 /* SignalFlags.isListener */;
|
65
|
+
}
|
66
|
+
}
|
67
|
+
get listeners() {
|
68
|
+
return (this._listeners ??
|
69
|
+
(this._listeners = {
|
70
|
+
updatedAt: 0,
|
71
|
+
current: new Set(),
|
72
|
+
cachedBoundAdd: this.addListener.bind(this),
|
73
|
+
}));
|
74
|
+
}
|
75
|
+
get() {
|
76
|
+
return (0, get_js_1.getSignal)(this);
|
77
|
+
}
|
78
|
+
addListener(listener) {
|
79
|
+
const { current } = this.listeners;
|
80
|
+
if (!current.has(listener)) {
|
81
|
+
if (!this._isListener) {
|
82
|
+
this.watchCount++;
|
83
|
+
this.flags |= 8 /* SignalFlags.isListener */;
|
84
|
+
}
|
85
|
+
(0, scheduling_js_1.schedulePull)(this);
|
86
|
+
current.add(listener);
|
87
|
+
}
|
88
|
+
return () => {
|
89
|
+
if (current.has(listener)) {
|
90
|
+
current.delete(listener);
|
91
|
+
if (current.size === 0) {
|
92
|
+
(0, scheduling_js_1.scheduleUnwatch)(this);
|
93
|
+
this.flags &= ~8 /* SignalFlags.isListener */;
|
94
|
+
}
|
95
|
+
}
|
96
|
+
};
|
97
|
+
}
|
98
|
+
// This method is used in React hooks specifically. It returns a bound add method
|
99
|
+
// that is cached to avoid creating a new one on each call, and it eagerly sets
|
100
|
+
// the listener as watched so that subscriptions that are accessed will be activated.
|
101
|
+
addListenerLazy() {
|
102
|
+
if (!this._isListener) {
|
103
|
+
this.watchCount++;
|
104
|
+
this.flags |= 8 /* SignalFlags.isListener */;
|
105
|
+
}
|
106
|
+
return this.listeners.cachedBoundAdd;
|
107
|
+
}
|
108
|
+
}
|
109
|
+
exports.DerivedSignal = DerivedSignal;
|
110
|
+
const runListeners = (signal) => {
|
111
|
+
const { listeners } = signal;
|
112
|
+
if (listeners === null) {
|
113
|
+
return;
|
114
|
+
}
|
115
|
+
const { current } = listeners;
|
116
|
+
for (const listener of current) {
|
117
|
+
listener();
|
118
|
+
}
|
119
|
+
};
|
120
|
+
exports.runListeners = runListeners;
|
121
|
+
const isSubscription = (signal) => {
|
122
|
+
return (signal.flags & 4 /* SignalFlags.isSubscription */) !== 0;
|
123
|
+
};
|
124
|
+
exports.isSubscription = isSubscription;
|
125
|
+
function createDerivedSignal(compute, args = [], key, scope, opts, isSubscription = false) {
|
126
|
+
return new DerivedSignal(isSubscription, compute, args, key, scope, opts);
|
127
|
+
}
|
128
|
+
//# sourceMappingURL=derived.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"derived.js","sourceRoot":"","sources":["../../../src/internals/derived.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,5 @@
|
|
1
|
+
import { DerivedSignal } from './derived.js';
|
2
|
+
import { Edge } from './edge.js';
|
3
|
+
export declare function dirtySignal(signal: DerivedSignal<any, any>): void;
|
4
|
+
export declare function dirtySignalConsumers(map: Map<WeakRef<DerivedSignal<any, any>>, Edge>): void;
|
5
|
+
//# sourceMappingURL=dirty.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"dirty.d.ts","sourceRoot":"","sources":["../../../src/internals/dirty.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAA+B,MAAM,cAAc,CAAC;AAE1E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,wBAAgB,WAAW,CAAC,MAAM,EAAE,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,QAY1D;AAyBD,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,QAgDpF"}
|
@@ -0,0 +1,79 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.dirtySignal = dirtySignal;
|
4
|
+
exports.dirtySignalConsumers = dirtySignalConsumers;
|
5
|
+
const scheduling_js_1 = require("./scheduling.js");
|
6
|
+
const derived_js_1 = require("./derived.js");
|
7
|
+
const get_js_1 = require("./get.js");
|
8
|
+
function dirtySignal(signal) {
|
9
|
+
const prevState = signal._state;
|
10
|
+
if (prevState === 2 /* SignalState.Dirty */) {
|
11
|
+
return;
|
12
|
+
}
|
13
|
+
signal._state = 2 /* SignalState.Dirty */;
|
14
|
+
if (prevState !== 3 /* SignalState.MaybeDirty */) {
|
15
|
+
propagateDirty(signal);
|
16
|
+
}
|
17
|
+
}
|
18
|
+
function propagateDirty(signal) {
|
19
|
+
if (get_js_1.CURRENT_CONSUMER === signal) {
|
20
|
+
throw new Error('A signal was dirtied after it was consumed by the current function. This can cause race conditions and infinite rerenders and is not allowed.');
|
21
|
+
}
|
22
|
+
if ((0, derived_js_1.isSubscription)(signal)) {
|
23
|
+
if (signal.watchCount > 0) {
|
24
|
+
(0, scheduling_js_1.scheduleAsyncPull)(signal);
|
25
|
+
}
|
26
|
+
// else do nothing, only schedule if connected
|
27
|
+
}
|
28
|
+
else {
|
29
|
+
if (signal._isListener) {
|
30
|
+
(0, scheduling_js_1.schedulePull)(signal);
|
31
|
+
}
|
32
|
+
dirtySignalConsumers(signal.subs);
|
33
|
+
signal.subs = new Map();
|
34
|
+
}
|
35
|
+
}
|
36
|
+
function dirtySignalConsumers(map) {
|
37
|
+
for (const [subRef, edge] of map) {
|
38
|
+
const sub = subRef.deref();
|
39
|
+
if (sub === undefined || sub.computedCount !== edge.consumedAt)
|
40
|
+
continue;
|
41
|
+
const dirtyState = sub._state;
|
42
|
+
switch (dirtyState) {
|
43
|
+
case 0 /* SignalState.Clean */:
|
44
|
+
sub._state = 3 /* SignalState.MaybeDirty */;
|
45
|
+
sub.dirtyHead = edge;
|
46
|
+
edge.nextDirty = undefined;
|
47
|
+
propagateDirty(sub);
|
48
|
+
break;
|
49
|
+
case 1 /* SignalState.Pending */:
|
50
|
+
case 3 /* SignalState.MaybeDirty */: {
|
51
|
+
let subEdge = sub.dirtyHead;
|
52
|
+
const ord = edge.ord;
|
53
|
+
if (subEdge.ord > ord) {
|
54
|
+
sub.dirtyHead = edge;
|
55
|
+
edge.nextDirty = subEdge;
|
56
|
+
if (dirtyState === 1 /* SignalState.Pending */) {
|
57
|
+
// If the signal is pending, the first edge is the halt edge. If the
|
58
|
+
// new dirty edge is BEFORE the halt edge, then it means that something
|
59
|
+
// changed before the current halt, so we need to cancel the current computation
|
60
|
+
// and recompute.
|
61
|
+
sub._state = 3 /* SignalState.MaybeDirty */;
|
62
|
+
propagateDirty(sub);
|
63
|
+
}
|
64
|
+
}
|
65
|
+
else {
|
66
|
+
let nextDirty = subEdge.nextDirty;
|
67
|
+
while (nextDirty !== undefined && nextDirty.ord < ord) {
|
68
|
+
subEdge = nextDirty;
|
69
|
+
nextDirty = subEdge.nextDirty;
|
70
|
+
}
|
71
|
+
edge.nextDirty = nextDirty;
|
72
|
+
subEdge.nextDirty = edge;
|
73
|
+
}
|
74
|
+
break;
|
75
|
+
}
|
76
|
+
}
|
77
|
+
}
|
78
|
+
}
|
79
|
+
//# sourceMappingURL=dirty.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"dirty.js","sourceRoot":"","sources":["../../../src/internals/dirty.ts"],"names":[],"mappings":";;AAKA,kCAYC;AAyBD,oDAgDC;AA1FD,mDAAkE;AAClE,6CAA0E;AAC1E,qCAA4C;AAG5C,SAAgB,WAAW,CAAC,MAA+B;IACzD,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC;IAEhC,IAAI,SAAS,8BAAsB,EAAE,CAAC;QACpC,OAAO;IACT,CAAC;IAED,MAAM,CAAC,MAAM,4BAAoB,CAAC;IAElC,IAAI,SAAS,mCAA2B,EAAE,CAAC;QACzC,cAAc,CAAC,MAAM,CAAC,CAAC;IACzB,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,MAA+B;IACrD,IAAI,yBAAgB,KAAK,MAAM,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CACb,+IAA+I,CAChJ,CAAC;IACJ,CAAC;IAED,IAAI,IAAA,2BAAc,EAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,IAAI,MAAM,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC;YAC1B,IAAA,iCAAiB,EAAC,MAAM,CAAC,CAAC;QAC5B,CAAC;QAED,8CAA8C;IAChD,CAAC;SAAM,CAAC;QACN,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YACvB,IAAA,4BAAY,EAAC,MAAM,CAAC,CAAC;QACvB,CAAC;QAED,oBAAoB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,CAAC,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;IAC1B,CAAC;AACH,CAAC;AAED,SAAgB,oBAAoB,CAAC,GAAgD;IACnF,KAAK,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;QACjC,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;QAE3B,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,aAAa,KAAK,IAAI,CAAC,UAAU;YAAE,SAAS;QAEzE,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC;QAE9B,QAAQ,UAAU,EAAE,CAAC;YACnB;gBACE,GAAG,CAAC,MAAM,iCAAyB,CAAC;gBACpC,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC;gBACrB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;gBAC3B,cAAc,CAAC,GAAG,CAAC,CAAC;gBACpB,MAAM;YAER,iCAAyB;YACzB,mCAA2B,CAAC,CAAC,CAAC;gBAC5B,IAAI,OAAO,GAAG,GAAG,CAAC,SAAU,CAAC;gBAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;gBAErB,IAAI,OAAO,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC;oBACtB,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC;oBACrB,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC;oBAEzB,IAAI,UAAU,gCAAwB,EAAE,CAAC;wBACvC,oEAAoE;wBACpE,uEAAuE;wBACvE,gFAAgF;wBAChF,iBAAiB;wBACjB,GAAG,CAAC,MAAM,iCAAyB,CAAC;wBACpC,cAAc,CAAC,GAAG,CAAC,CAAC;oBACtB,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,IAAI,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;oBAElC,OAAO,SAAS,KAAK,SAAS,IAAI,SAAS,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC;wBACtD,OAAO,GAAG,SAAS,CAAC;wBACpB,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;oBAChC,CAAC;oBAED,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;oBAC3B,OAAQ,CAAC,SAAS,GAAG,IAAI,CAAC;gBAC5B,CAAC;gBACD,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC"}
|
@@ -0,0 +1,32 @@
|
|
1
|
+
import { ReactivePromise } from './async.js';
|
2
|
+
import type { DerivedSignal } from './derived.js';
|
3
|
+
export declare const enum EdgeType {
|
4
|
+
Signal = 0,
|
5
|
+
Promise = 1
|
6
|
+
}
|
7
|
+
export interface EdgeTypeDep {
|
8
|
+
[EdgeType.Signal]: DerivedSignal<any, any>;
|
9
|
+
[EdgeType.Promise]: ReactivePromise<any>;
|
10
|
+
}
|
11
|
+
interface BaseEdge {
|
12
|
+
type: EdgeType;
|
13
|
+
dep: EdgeTypeDep[EdgeType];
|
14
|
+
ord: number;
|
15
|
+
updatedAt: number;
|
16
|
+
consumedAt: number;
|
17
|
+
nextDirty: Edge | undefined;
|
18
|
+
}
|
19
|
+
export interface SignalEdge extends BaseEdge {
|
20
|
+
type: EdgeType.Signal;
|
21
|
+
dep: DerivedSignal<any, any>;
|
22
|
+
}
|
23
|
+
export interface PromiseEdge extends BaseEdge {
|
24
|
+
type: EdgeType.Promise;
|
25
|
+
dep: ReactivePromise<any>;
|
26
|
+
}
|
27
|
+
export type Edge = SignalEdge | PromiseEdge;
|
28
|
+
export declare function createEdge<T extends EdgeType, R extends T extends EdgeType.Signal ? SignalEdge : PromiseEdge>(prevEdge: Edge | undefined, type: T, dep: EdgeTypeDep[T], updatedAt: number, consumedAt: number): R;
|
29
|
+
export declare function insertDirty(node: DerivedSignal<any, any>, edge: Edge): void;
|
30
|
+
export declare function findAndRemoveDirty(sub: DerivedSignal<any, any>, dep: DerivedSignal<any, any> | ReactivePromise<any>): Edge | undefined;
|
31
|
+
export {};
|
32
|
+
//# sourceMappingURL=edge.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"edge.d.ts","sourceRoot":"","sources":["../../../src/internals/edge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAIlD,0BAAkB,QAAQ;IACxB,MAAM,IAAI;IACV,OAAO,IAAI;CACZ;AAED,MAAM,WAAW,WAAW;IAC1B,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC3C,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,eAAe,CAAC,GAAG,CAAC,CAAC;CAC1C;AAED,UAAU,QAAQ;IAChB,IAAI,EAAE,QAAQ,CAAC;IACf,GAAG,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IAEnB,SAAS,EAAE,IAAI,GAAG,SAAS,CAAC;CAC7B;AAED,MAAM,WAAW,UAAW,SAAQ,QAAQ;IAC1C,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC;IACtB,GAAG,EAAE,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC9B;AAED,MAAM,WAAW,WAAY,SAAQ,QAAQ;IAC3C,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC;IACvB,GAAG,EAAE,eAAe,CAAC,GAAG,CAAC,CAAC;CAC3B;AAED,MAAM,MAAM,IAAI,GAAG,UAAU,GAAG,WAAW,CAAC;AAE5C,wBAAgB,UAAU,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,CAAC,SAAS,QAAQ,CAAC,MAAM,GAAG,UAAU,GAAG,WAAW,EAC3G,QAAQ,EAAE,IAAI,GAAG,SAAS,EAC1B,IAAI,EAAE,CAAC,EACP,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC,EACnB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,GACjB,CAAC,CAiBH;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,QAgBpE;AAED,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,EAC5B,GAAG,EAAE,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,eAAe,CAAC,GAAG,CAAC,GAClD,IAAI,GAAG,SAAS,CAyBlB"}
|
@@ -0,0 +1,59 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.createEdge = createEdge;
|
4
|
+
exports.insertDirty = insertDirty;
|
5
|
+
exports.findAndRemoveDirty = findAndRemoveDirty;
|
6
|
+
let CURRENT_ORD = 0;
|
7
|
+
function createEdge(prevEdge, type, dep, updatedAt, consumedAt) {
|
8
|
+
if (prevEdge === undefined) {
|
9
|
+
return {
|
10
|
+
type,
|
11
|
+
dep,
|
12
|
+
ord: CURRENT_ORD++,
|
13
|
+
updatedAt,
|
14
|
+
consumedAt,
|
15
|
+
nextDirty: undefined,
|
16
|
+
};
|
17
|
+
}
|
18
|
+
prevEdge.ord = CURRENT_ORD++;
|
19
|
+
prevEdge.updatedAt = updatedAt;
|
20
|
+
prevEdge.consumedAt = consumedAt;
|
21
|
+
prevEdge.nextDirty = undefined;
|
22
|
+
return prevEdge;
|
23
|
+
}
|
24
|
+
function insertDirty(node, edge) {
|
25
|
+
const ord = edge.ord;
|
26
|
+
let currentEdge = node.dirtyHead;
|
27
|
+
if (currentEdge === undefined || currentEdge.ord > ord) {
|
28
|
+
node.dirtyHead = edge;
|
29
|
+
}
|
30
|
+
else {
|
31
|
+
let nextEdge = currentEdge.nextDirty;
|
32
|
+
while (nextEdge !== undefined && nextEdge.ord < ord) {
|
33
|
+
currentEdge = nextEdge;
|
34
|
+
nextEdge = currentEdge.nextDirty;
|
35
|
+
}
|
36
|
+
currentEdge.nextDirty = edge;
|
37
|
+
}
|
38
|
+
}
|
39
|
+
function findAndRemoveDirty(sub, dep) {
|
40
|
+
let edge = sub.dirtyHead;
|
41
|
+
if (edge === undefined) {
|
42
|
+
return undefined;
|
43
|
+
}
|
44
|
+
if (edge.dep === dep) {
|
45
|
+
sub.dirtyHead = edge.nextDirty;
|
46
|
+
return edge;
|
47
|
+
}
|
48
|
+
let nextLink = edge.nextDirty;
|
49
|
+
while (nextLink !== undefined) {
|
50
|
+
if (nextLink.dep === dep) {
|
51
|
+
edge.nextDirty = nextLink.nextDirty;
|
52
|
+
return nextLink;
|
53
|
+
}
|
54
|
+
edge = nextLink;
|
55
|
+
nextLink = edge.nextDirty;
|
56
|
+
}
|
57
|
+
return undefined;
|
58
|
+
}
|
59
|
+
//# sourceMappingURL=edge.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"edge.js","sourceRoot":"","sources":["../../../src/internals/edge.ts"],"names":[],"mappings":";;AAqCA,gCAuBC;AAED,kCAgBC;AAED,gDA4BC;AAzGD,IAAI,WAAW,GAAG,CAAC,CAAC;AAkCpB,SAAgB,UAAU,CACxB,QAA0B,EAC1B,IAAO,EACP,GAAmB,EACnB,SAAiB,EACjB,UAAkB;IAElB,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,OAAO;YACL,IAAI;YACJ,GAAG;YACH,GAAG,EAAE,WAAW,EAAE;YAClB,SAAS;YACT,UAAU;YACV,SAAS,EAAE,SAAS;SAChB,CAAC;IACT,CAAC;IAED,QAAQ,CAAC,GAAG,GAAG,WAAW,EAAE,CAAC;IAC7B,QAAQ,CAAC,SAAS,GAAG,SAAS,CAAC;IAC/B,QAAQ,CAAC,UAAU,GAAG,UAAU,CAAC;IACjC,QAAQ,CAAC,SAAS,GAAG,SAAS,CAAC;IAC/B,OAAO,QAAa,CAAC;AACvB,CAAC;AAED,SAAgB,WAAW,CAAC,IAA6B,EAAE,IAAU;IACnE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;IACrB,IAAI,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC;IAEjC,IAAI,WAAW,KAAK,SAAS,IAAI,WAAW,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC;QACvD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IACxB,CAAC;SAAM,CAAC;QACN,IAAI,QAAQ,GAAG,WAAW,CAAC,SAAS,CAAC;QAErC,OAAO,QAAQ,KAAK,SAAS,IAAI,QAAQ,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC;YACpD,WAAW,GAAG,QAAQ,CAAC;YACvB,QAAQ,GAAG,WAAW,CAAC,SAAS,CAAC;QACnC,CAAC;QAED,WAAW,CAAC,SAAS,GAAG,IAAI,CAAC;IAC/B,CAAC;AACH,CAAC;AAED,SAAgB,kBAAkB,CAChC,GAA4B,EAC5B,GAAmD;IAEnD,IAAI,IAAI,GAAG,GAAG,CAAC,SAAS,CAAC;IAEzB,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,IAAI,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;QACrB,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;IAE9B,OAAO,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC9B,IAAI,QAAQ,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;YACzB,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;YACpC,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,IAAI,GAAG,QAAQ,CAAC;QAChB,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;IAC5B,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
@@ -0,0 +1,10 @@
|
|
1
|
+
import { DerivedSignal } from './derived.js';
|
2
|
+
import { ReactiveValue } from '../types.js';
|
3
|
+
export declare let CURRENT_CONSUMER: DerivedSignal<any, any> | undefined;
|
4
|
+
export declare function getSignal<T, Args extends unknown[]>(signal: DerivedSignal<T, Args>): ReactiveValue<T>;
|
5
|
+
export declare function checkSignal(signal: DerivedSignal<any, any>): number;
|
6
|
+
export declare function runSignal(signal: DerivedSignal<any, any[]>): void;
|
7
|
+
export declare function checkAndRunListeners(signal: DerivedSignal<any, any>, willWatch?: boolean): number;
|
8
|
+
export declare function callback<T, Args extends unknown[]>(fn: (...args: Args) => T): (...args: Args) => T;
|
9
|
+
export declare function generatorResultToPromise<T, Args extends unknown[]>(generator: Generator<any, T>, savedConsumer: DerivedSignal<any, any> | undefined): Promise<T>;
|
10
|
+
//# sourceMappingURL=get.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../../src/internals/get.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAA4B,MAAM,cAAc,CAAC;AAIvE,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C,eAAO,IAAI,gBAAgB,EAAE,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,SAAS,CAAC;AAEjE,wBAAgB,SAAS,CAAC,CAAC,EAAE,IAAI,SAAS,OAAO,EAAE,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAkCrG;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,MAAM,CAiEnE;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,QA8F1D;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,SAAS,UAAQ,UAiBtF;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,IAAI,SAAS,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,IAAI,KAAK,CAAC,CAmBlG;AAED,wBAAgB,wBAAwB,CAAC,CAAC,EAAE,IAAI,SAAS,OAAO,EAAE,EAChE,SAAS,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC,EAC5B,aAAa,EAAE,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,SAAS,GACjD,OAAO,CAAC,CAAC,CAAC,CA4CZ"}
|