signalium 1.2.0 → 1.2.2
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 +12 -0
- package/dist/cjs/index.d.ts +1 -1
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +2 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/internals/contexts.d.ts +2 -2
- package/dist/cjs/internals/contexts.d.ts.map +1 -1
- package/dist/cjs/internals/contexts.js +11 -9
- package/dist/cjs/internals/contexts.js.map +1 -1
- package/dist/cjs/react/rendering.d.ts +1 -1
- package/dist/cjs/react/rendering.d.ts.map +1 -1
- package/dist/cjs/react/rendering.js +2 -2
- package/dist/cjs/react/rendering.js.map +1 -1
- package/dist/esm/index.d.ts +1 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/internals/contexts.d.ts +2 -2
- package/dist/esm/internals/contexts.d.ts.map +1 -1
- package/dist/esm/internals/contexts.js +9 -7
- package/dist/esm/internals/contexts.js.map +1 -1
- package/dist/esm/react/rendering.d.ts +1 -1
- package/dist/esm/react/rendering.d.ts.map +1 -1
- package/dist/esm/react/rendering.js +2 -2
- package/dist/esm/react/rendering.js.map +1 -1
- package/package.json +1 -1
- package/src/__tests__/gc.test.ts +2 -2
- package/src/index.ts +1 -0
- package/src/internals/contexts.ts +11 -7
- package/src/react/rendering.ts +2 -2
package/.turbo/turbo-build.log
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
|
2
|
-
> signalium@1.2.
|
2
|
+
> signalium@1.2.2 build
|
3
3
|
> npm run build:esm && npm run build:cjs
|
4
4
|
|
5
5
|
|
6
|
-
> signalium@1.2.
|
6
|
+
> signalium@1.2.2 build:esm
|
7
7
|
> tsc
|
8
8
|
|
9
9
|
|
10
|
-
> signalium@1.2.
|
10
|
+
> signalium@1.2.2 build:cjs
|
11
11
|
> tsc --module commonjs --outDir dist/cjs --moduleResolution node
|
12
12
|
|
package/CHANGELOG.md
CHANGED
@@ -1,5 +1,17 @@
|
|
1
1
|
# signalium
|
2
2
|
|
3
|
+
## 1.2.2
|
4
|
+
|
5
|
+
### Patch Changes
|
6
|
+
|
7
|
+
- b93607d: Make setRootContexts reuse existing scope so we don't leak memory
|
8
|
+
|
9
|
+
## 1.2.1
|
10
|
+
|
11
|
+
### Patch Changes
|
12
|
+
|
13
|
+
- af9216c: Updates runReactiveSafe API to simplify types
|
14
|
+
|
3
15
|
## 1.2.0
|
4
16
|
|
5
17
|
### Minor Changes
|
package/dist/cjs/index.d.ts
CHANGED
@@ -2,7 +2,7 @@ export type * from './types.js';
|
|
2
2
|
export { state, reactive, subscription, task, watcher } from './hooks.js';
|
3
3
|
export { isReactivePromise, isReactiveTask, isReactiveSubscription } from './internals/async.js';
|
4
4
|
export { callback } from './internals/get.js';
|
5
|
-
export { createContext, useContext, withContexts, setRootContexts, SignalScope, CONTEXT_KEY, } from './internals/contexts.js';
|
5
|
+
export { createContext, useContext, withContexts, setRootContexts, clearRootContexts, SignalScope, CONTEXT_KEY, } from './internals/contexts.js';
|
6
6
|
export { setConfig } from './config.js';
|
7
7
|
export { hashValue, registerCustomHash } from './internals/utils/hash.js';
|
8
8
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/cjs/index.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,mBAAmB,YAAY,CAAC;AAEhC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1E,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAEjG,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C,OAAO,EACL,aAAa,EACb,UAAU,EACV,YAAY,EACZ,eAAe,EACf,WAAW,EACX,WAAW,GACZ,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC"}
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,mBAAmB,YAAY,CAAC;AAEhC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1E,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAEjG,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C,OAAO,EACL,aAAa,EACb,UAAU,EACV,YAAY,EACZ,eAAe,EACf,iBAAiB,EACjB,WAAW,EACX,WAAW,GACZ,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC"}
|
package/dist/cjs/index.js
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.registerCustomHash = exports.hashValue = exports.setConfig = exports.CONTEXT_KEY = exports.SignalScope = exports.setRootContexts = exports.withContexts = exports.useContext = exports.createContext = exports.callback = exports.isReactiveSubscription = exports.isReactiveTask = exports.isReactivePromise = exports.watcher = exports.task = exports.subscription = exports.reactive = exports.state = void 0;
|
3
|
+
exports.registerCustomHash = exports.hashValue = exports.setConfig = exports.CONTEXT_KEY = exports.SignalScope = exports.clearRootContexts = exports.setRootContexts = exports.withContexts = exports.useContext = exports.createContext = exports.callback = exports.isReactiveSubscription = exports.isReactiveTask = exports.isReactivePromise = exports.watcher = exports.task = exports.subscription = exports.reactive = exports.state = void 0;
|
4
4
|
var hooks_js_1 = require("./hooks.js");
|
5
5
|
Object.defineProperty(exports, "state", { enumerable: true, get: function () { return hooks_js_1.state; } });
|
6
6
|
Object.defineProperty(exports, "reactive", { enumerable: true, get: function () { return hooks_js_1.reactive; } });
|
@@ -18,6 +18,7 @@ Object.defineProperty(exports, "createContext", { enumerable: true, get: functio
|
|
18
18
|
Object.defineProperty(exports, "useContext", { enumerable: true, get: function () { return contexts_js_1.useContext; } });
|
19
19
|
Object.defineProperty(exports, "withContexts", { enumerable: true, get: function () { return contexts_js_1.withContexts; } });
|
20
20
|
Object.defineProperty(exports, "setRootContexts", { enumerable: true, get: function () { return contexts_js_1.setRootContexts; } });
|
21
|
+
Object.defineProperty(exports, "clearRootContexts", { enumerable: true, get: function () { return contexts_js_1.clearRootContexts; } });
|
21
22
|
Object.defineProperty(exports, "SignalScope", { enumerable: true, get: function () { return contexts_js_1.SignalScope; } });
|
22
23
|
Object.defineProperty(exports, "CONTEXT_KEY", { enumerable: true, get: function () { return contexts_js_1.CONTEXT_KEY; } });
|
23
24
|
var config_js_1 = require("./config.js");
|
package/dist/cjs/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAEA,uCAA0E;AAAjE,iGAAA,KAAK,OAAA;AAAE,oGAAA,QAAQ,OAAA;AAAE,wGAAA,YAAY,OAAA;AAAE,gGAAA,IAAI,OAAA;AAAE,mGAAA,OAAO,OAAA;AAErD,iDAAiG;AAAxF,6GAAA,iBAAiB,OAAA;AAAE,0GAAA,cAAc,OAAA;AAAE,kHAAA,sBAAsB,OAAA;AAElE,6CAA8C;AAArC,kGAAA,QAAQ,OAAA;AAEjB,
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAEA,uCAA0E;AAAjE,iGAAA,KAAK,OAAA;AAAE,oGAAA,QAAQ,OAAA;AAAE,wGAAA,YAAY,OAAA;AAAE,gGAAA,IAAI,OAAA;AAAE,mGAAA,OAAO,OAAA;AAErD,iDAAiG;AAAxF,6GAAA,iBAAiB,OAAA;AAAE,0GAAA,cAAc,OAAA;AAAE,kHAAA,sBAAsB,OAAA;AAElE,6CAA8C;AAArC,kGAAA,QAAQ,OAAA;AAEjB,uDAQiC;AAP/B,4GAAA,aAAa,OAAA;AACb,yGAAA,UAAU,OAAA;AACV,2GAAA,YAAY,OAAA;AACZ,8GAAA,eAAe,OAAA;AACf,gHAAA,iBAAiB,OAAA;AACjB,0GAAA,WAAW,OAAA;AACX,0GAAA,WAAW,OAAA;AAGb,yCAAwC;AAA/B,sGAAA,SAAS,OAAA;AAElB,qDAA0E;AAAjE,oGAAA,SAAS,OAAA;AAAE,6GAAA,kBAAkB,OAAA"}
|
@@ -16,11 +16,11 @@ export declare class ContextImpl<T> {
|
|
16
16
|
export declare const createContext: <T>(initialValue: T, description?: string) => Context<T>;
|
17
17
|
export declare class SignalScope {
|
18
18
|
constructor(contexts: [ContextImpl<unknown>, unknown][], parent?: SignalScope);
|
19
|
-
private parentScope?;
|
20
19
|
private contexts;
|
21
20
|
private children;
|
22
21
|
private signals;
|
23
22
|
private gcCandidates;
|
23
|
+
setContexts(contexts: [ContextImpl<unknown>, unknown][]): void;
|
24
24
|
getChild(contexts: [ContextImpl<unknown>, unknown][]): SignalScope;
|
25
25
|
getContext<T>(_context: Context<T>): T | undefined;
|
26
26
|
get<T, Args extends unknown[]>(def: DerivedSignalDefinition<T, Args>, args: Args, opts?: Partial<SignalOptionsWithInit<T, Args>>): DerivedSignal<T, Args>;
|
@@ -31,7 +31,7 @@ export declare class SignalScope {
|
|
31
31
|
}
|
32
32
|
export declare let ROOT_SCOPE: SignalScope;
|
33
33
|
export declare function setRootContexts<C extends unknown[], U>(contexts: [...ContextPair<C>]): void;
|
34
|
-
export declare const
|
34
|
+
export declare const clearRootContexts: () => void;
|
35
35
|
export declare const getCurrentScope: () => SignalScope;
|
36
36
|
export declare function withContexts<C extends unknown[], U>(contexts: [...ContextPair<C>], fn: () => U): U;
|
37
37
|
export declare const withScope: <T>(scope: SignalScope, fn: () => T) => T;
|
@@ -1 +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,EAAE,uBAAuB,EAAuB,MAAM,cAAc,CAAC;AAK3F,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;
|
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,EAAE,uBAAuB,EAAuB,MAAM,cAAc,CAAC;AAK3F,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;IAM7E,OAAO,CAAC,QAAQ,CAA0B;IAC1C,OAAO,CAAC,QAAQ,CAAkC;IAClD,OAAO,CAAC,OAAO,CAA8C;IAC7D,OAAO,CAAC,YAAY,CAAsC;IAE1D,WAAW,CAAC,QAAQ,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE;IAQvD,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,GAAG,EAAE,uBAAuB,CAAC,CAAC,EAAE,IAAI,CAAC,EACrC,IAAI,EAAE,IAAI,EACV,IAAI,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAC7C,aAAa,CAAC,CAAC,EAAE,IAAI,CAAC;IAazB,SAAS,CAAC,MAAM,EAAE,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC;IAOzC,YAAY,CAAC,MAAM,EAAE,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC;IAI5C,OAAO,CAAC,MAAM,EAAE,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC;IAIvC,OAAO;CAaR;AAED,eAAO,IAAI,UAAU,aAAsB,CAAC;AAE5C,wBAAgB,eAAe,CAAC,CAAC,SAAS,OAAO,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAE3F;AAED,eAAO,MAAM,iBAAiB,YAE7B,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;AAEF,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,QAGtC"}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.useContext = exports.withScope = exports.getCurrentScope = exports.
|
3
|
+
exports.useContext = exports.withScope = exports.getCurrentScope = exports.clearRootContexts = exports.ROOT_SCOPE = exports.SignalScope = exports.createContext = exports.ContextImpl = exports.CONTEXT_KEY = void 0;
|
4
4
|
exports.setRootContexts = setRootContexts;
|
5
5
|
exports.withContexts = withContexts;
|
6
6
|
exports.forceGc = forceGc;
|
@@ -28,17 +28,19 @@ const createContext = (initialValue, description) => {
|
|
28
28
|
exports.createContext = createContext;
|
29
29
|
class SignalScope {
|
30
30
|
constructor(contexts, parent) {
|
31
|
-
this.parentScope = parent;
|
32
31
|
this.contexts = Object.create(parent?.contexts || null);
|
33
|
-
|
34
|
-
this.contexts[context._key] = value;
|
35
|
-
}
|
32
|
+
this.setContexts(contexts);
|
36
33
|
}
|
37
|
-
parentScope = undefined;
|
38
34
|
contexts;
|
39
35
|
children = new Map();
|
40
36
|
signals = new Map();
|
41
37
|
gcCandidates = new Set();
|
38
|
+
setContexts(contexts) {
|
39
|
+
for (const [context, value] of contexts) {
|
40
|
+
this.contexts[context._key] = value;
|
41
|
+
}
|
42
|
+
this.signals.clear();
|
43
|
+
}
|
42
44
|
getChild(contexts) {
|
43
45
|
const key = (0, hash_js_1.hashValue)(contexts);
|
44
46
|
let child = this.children.get(key);
|
@@ -89,12 +91,12 @@ class SignalScope {
|
|
89
91
|
exports.SignalScope = SignalScope;
|
90
92
|
exports.ROOT_SCOPE = new SignalScope([]);
|
91
93
|
function setRootContexts(contexts) {
|
92
|
-
exports.ROOT_SCOPE
|
94
|
+
exports.ROOT_SCOPE.setContexts(contexts);
|
93
95
|
}
|
94
|
-
const
|
96
|
+
const clearRootContexts = () => {
|
95
97
|
exports.ROOT_SCOPE = new SignalScope([]);
|
96
98
|
};
|
97
|
-
exports.
|
99
|
+
exports.clearRootContexts = clearRootContexts;
|
98
100
|
let OVERRIDE_SCOPE;
|
99
101
|
const getCurrentScope = () => {
|
100
102
|
return OVERRIDE_SCOPE ?? get_js_1.CURRENT_CONSUMER?.scope ?? (0, config_js_1.getFrameworkScope)() ?? exports.ROOT_SCOPE;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"contexts.js","sourceRoot":"","sources":["../../../src/internals/contexts.ts"],"names":[],"mappings":";;;
|
1
|
+
{"version":3,"file":"contexts.js","sourceRoot":"","sources":["../../../src/internals/contexts.ts"],"names":[],"mappings":"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"}
|
@@ -3,6 +3,6 @@
|
|
3
3
|
* in code that _may or may not_ be used while rendering, we need to use this function to wrap the
|
4
4
|
* call. This will ensure that we will not be in a rendering context when the reactive function is called.
|
5
5
|
*/
|
6
|
-
export declare const runReactiveSafe: <T
|
6
|
+
export declare const runReactiveSafe: <T>(fn: () => T) => T;
|
7
7
|
export declare function isRendering(): boolean;
|
8
8
|
//# sourceMappingURL=rendering.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"rendering.d.ts","sourceRoot":"","sources":["../../../src/react/rendering.ts"],"names":[],"mappings":"AAgBA;;;;GAIG;AACH,eAAO,MAAM,eAAe,GAAI,CAAC,
|
1
|
+
{"version":3,"file":"rendering.d.ts","sourceRoot":"","sources":["../../../src/react/rendering.ts"],"names":[],"mappings":"AAgBA;;;;GAIG;AACH,eAAO,MAAM,eAAe,GAAI,CAAC,MAAM,MAAM,CAAC,KAAG,CAQhD,CAAC;AAEF,wBAAgB,WAAW,YAW1B"}
|
@@ -21,10 +21,10 @@ let RENDERING_SAFE_MODE_COUNT = 0;
|
|
21
21
|
* in code that _may or may not_ be used while rendering, we need to use this function to wrap the
|
22
22
|
* call. This will ensure that we will not be in a rendering context when the reactive function is called.
|
23
23
|
*/
|
24
|
-
const runReactiveSafe = (fn
|
24
|
+
const runReactiveSafe = (fn) => {
|
25
25
|
RENDERING_SAFE_MODE_COUNT++;
|
26
26
|
try {
|
27
|
-
return fn(
|
27
|
+
return fn();
|
28
28
|
}
|
29
29
|
finally {
|
30
30
|
RENDERING_SAFE_MODE_COUNT--;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"rendering.js","sourceRoot":"","sources":["../../../src/react/rendering.ts"],"names":[],"mappings":";;;;;;AA+BA,kCAWC;AA1CD,kDAA0B;AAE1B,wFAAwF;AACxF,oFAAoF;AACpF,mFAAmF;AACnF,0DAA0D;AAC1D,MAAM,eAAe,GAClB,eAAa,CAAC,kDAAkD;IAChE,eAAa,CAAC,+DAA+D;IAC7E,eAAa,CAAC,+DAA+D,CAAC;AAEjF,MAAM,WAAW,GAAG,CAAC,CAAC,eAAe,CAAC,sBAAsB,CAAC;AAC7D,MAAM,sBAAsB,GAAG,eAAe,CAAC,sBAAsB,IAAI,eAAe,CAAC;AAEzF,IAAI,yBAAyB,GAAG,CAAC,CAAC;AAElC;;;;GAIG;AACI,MAAM,eAAe,GAAG,
|
1
|
+
{"version":3,"file":"rendering.js","sourceRoot":"","sources":["../../../src/react/rendering.ts"],"names":[],"mappings":";;;;;;AA+BA,kCAWC;AA1CD,kDAA0B;AAE1B,wFAAwF;AACxF,oFAAoF;AACpF,mFAAmF;AACnF,0DAA0D;AAC1D,MAAM,eAAe,GAClB,eAAa,CAAC,kDAAkD;IAChE,eAAa,CAAC,+DAA+D;IAC7E,eAAa,CAAC,+DAA+D,CAAC;AAEjF,MAAM,WAAW,GAAG,CAAC,CAAC,eAAe,CAAC,sBAAsB,CAAC;AAC7D,MAAM,sBAAsB,GAAG,eAAe,CAAC,sBAAsB,IAAI,eAAe,CAAC;AAEzF,IAAI,yBAAyB,GAAG,CAAC,CAAC;AAElC;;;;GAIG;AACI,MAAM,eAAe,GAAG,CAAI,EAAW,EAAK,EAAE;IACnD,yBAAyB,EAAE,CAAC;IAE5B,IAAI,CAAC;QACH,OAAO,EAAE,EAAE,CAAC;IACd,CAAC;YAAS,CAAC;QACT,yBAAyB,EAAE,CAAC;IAC9B,CAAC;AACH,CAAC,CAAC;AARW,QAAA,eAAe,mBAQ1B;AAEF,SAAgB,WAAW;IACzB,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC;IAE3F,OAAO,CACL,yBAAyB,KAAK,CAAC;QAC/B,CAAC,CAAC,UAAU;QACZ,sFAAsF;QACtF,yFAAyF;QACzF,wDAAwD;QACxD,UAAU,CAAC,QAAQ,KAAK,UAAU,CAAC,SAAS,CAC7C,CAAC;AACJ,CAAC"}
|
package/dist/esm/index.d.ts
CHANGED
@@ -2,7 +2,7 @@ export type * from './types.js';
|
|
2
2
|
export { state, reactive, subscription, task, watcher } from './hooks.js';
|
3
3
|
export { isReactivePromise, isReactiveTask, isReactiveSubscription } from './internals/async.js';
|
4
4
|
export { callback } from './internals/get.js';
|
5
|
-
export { createContext, useContext, withContexts, setRootContexts, SignalScope, CONTEXT_KEY, } from './internals/contexts.js';
|
5
|
+
export { createContext, useContext, withContexts, setRootContexts, clearRootContexts, SignalScope, CONTEXT_KEY, } from './internals/contexts.js';
|
6
6
|
export { setConfig } from './config.js';
|
7
7
|
export { hashValue, registerCustomHash } from './internals/utils/hash.js';
|
8
8
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/esm/index.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,mBAAmB,YAAY,CAAC;AAEhC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1E,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAEjG,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C,OAAO,EACL,aAAa,EACb,UAAU,EACV,YAAY,EACZ,eAAe,EACf,WAAW,EACX,WAAW,GACZ,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC"}
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,mBAAmB,YAAY,CAAC;AAEhC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1E,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAEjG,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C,OAAO,EACL,aAAa,EACb,UAAU,EACV,YAAY,EACZ,eAAe,EACf,iBAAiB,EACjB,WAAW,EACX,WAAW,GACZ,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC"}
|
package/dist/esm/index.js
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
export { state, reactive, subscription, task, watcher } from './hooks.js';
|
2
2
|
export { isReactivePromise, isReactiveTask, isReactiveSubscription } from './internals/async.js';
|
3
3
|
export { callback } from './internals/get.js';
|
4
|
-
export { createContext, useContext, withContexts, setRootContexts, SignalScope, CONTEXT_KEY, } from './internals/contexts.js';
|
4
|
+
export { createContext, useContext, withContexts, setRootContexts, clearRootContexts, SignalScope, CONTEXT_KEY, } from './internals/contexts.js';
|
5
5
|
export { setConfig } from './config.js';
|
6
6
|
export { hashValue, registerCustomHash } from './internals/utils/hash.js';
|
7
7
|
//# sourceMappingURL=index.js.map
|
package/dist/esm/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1E,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAEjG,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C,OAAO,EACL,aAAa,EACb,UAAU,EACV,YAAY,EACZ,eAAe,EACf,WAAW,EACX,WAAW,GACZ,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC"}
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1E,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAEjG,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C,OAAO,EACL,aAAa,EACb,UAAU,EACV,YAAY,EACZ,eAAe,EACf,iBAAiB,EACjB,WAAW,EACX,WAAW,GACZ,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC"}
|
@@ -16,11 +16,11 @@ export declare class ContextImpl<T> {
|
|
16
16
|
export declare const createContext: <T>(initialValue: T, description?: string) => Context<T>;
|
17
17
|
export declare class SignalScope {
|
18
18
|
constructor(contexts: [ContextImpl<unknown>, unknown][], parent?: SignalScope);
|
19
|
-
private parentScope?;
|
20
19
|
private contexts;
|
21
20
|
private children;
|
22
21
|
private signals;
|
23
22
|
private gcCandidates;
|
23
|
+
setContexts(contexts: [ContextImpl<unknown>, unknown][]): void;
|
24
24
|
getChild(contexts: [ContextImpl<unknown>, unknown][]): SignalScope;
|
25
25
|
getContext<T>(_context: Context<T>): T | undefined;
|
26
26
|
get<T, Args extends unknown[]>(def: DerivedSignalDefinition<T, Args>, args: Args, opts?: Partial<SignalOptionsWithInit<T, Args>>): DerivedSignal<T, Args>;
|
@@ -31,7 +31,7 @@ export declare class SignalScope {
|
|
31
31
|
}
|
32
32
|
export declare let ROOT_SCOPE: SignalScope;
|
33
33
|
export declare function setRootContexts<C extends unknown[], U>(contexts: [...ContextPair<C>]): void;
|
34
|
-
export declare const
|
34
|
+
export declare const clearRootContexts: () => void;
|
35
35
|
export declare const getCurrentScope: () => SignalScope;
|
36
36
|
export declare function withContexts<C extends unknown[], U>(contexts: [...ContextPair<C>], fn: () => U): U;
|
37
37
|
export declare const withScope: <T>(scope: SignalScope, fn: () => T) => T;
|
@@ -1 +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,EAAE,uBAAuB,EAAuB,MAAM,cAAc,CAAC;AAK3F,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;
|
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,EAAE,uBAAuB,EAAuB,MAAM,cAAc,CAAC;AAK3F,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;IAM7E,OAAO,CAAC,QAAQ,CAA0B;IAC1C,OAAO,CAAC,QAAQ,CAAkC;IAClD,OAAO,CAAC,OAAO,CAA8C;IAC7D,OAAO,CAAC,YAAY,CAAsC;IAE1D,WAAW,CAAC,QAAQ,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE;IAQvD,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,GAAG,EAAE,uBAAuB,CAAC,CAAC,EAAE,IAAI,CAAC,EACrC,IAAI,EAAE,IAAI,EACV,IAAI,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAC7C,aAAa,CAAC,CAAC,EAAE,IAAI,CAAC;IAazB,SAAS,CAAC,MAAM,EAAE,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC;IAOzC,YAAY,CAAC,MAAM,EAAE,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC;IAI5C,OAAO,CAAC,MAAM,EAAE,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC;IAIvC,OAAO;CAaR;AAED,eAAO,IAAI,UAAU,aAAsB,CAAC;AAE5C,wBAAgB,eAAe,CAAC,CAAC,SAAS,OAAO,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAE3F;AAED,eAAO,MAAM,iBAAiB,YAE7B,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;AAEF,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,QAGtC"}
|
@@ -20,17 +20,19 @@ export const createContext = (initialValue, description) => {
|
|
20
20
|
};
|
21
21
|
export class SignalScope {
|
22
22
|
constructor(contexts, parent) {
|
23
|
-
this.parentScope = parent;
|
24
23
|
this.contexts = Object.create(parent?.contexts || null);
|
25
|
-
|
26
|
-
this.contexts[context._key] = value;
|
27
|
-
}
|
24
|
+
this.setContexts(contexts);
|
28
25
|
}
|
29
|
-
parentScope = undefined;
|
30
26
|
contexts;
|
31
27
|
children = new Map();
|
32
28
|
signals = new Map();
|
33
29
|
gcCandidates = new Set();
|
30
|
+
setContexts(contexts) {
|
31
|
+
for (const [context, value] of contexts) {
|
32
|
+
this.contexts[context._key] = value;
|
33
|
+
}
|
34
|
+
this.signals.clear();
|
35
|
+
}
|
34
36
|
getChild(contexts) {
|
35
37
|
const key = hashValue(contexts);
|
36
38
|
let child = this.children.get(key);
|
@@ -80,9 +82,9 @@ export class SignalScope {
|
|
80
82
|
}
|
81
83
|
export let ROOT_SCOPE = new SignalScope([]);
|
82
84
|
export function setRootContexts(contexts) {
|
83
|
-
ROOT_SCOPE
|
85
|
+
ROOT_SCOPE.setContexts(contexts);
|
84
86
|
}
|
85
|
-
export const
|
87
|
+
export const clearRootContexts = () => {
|
86
88
|
ROOT_SCOPE = new SignalScope([]);
|
87
89
|
};
|
88
90
|
let OVERRIDE_SCOPE;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"contexts.js","sourceRoot":"","sources":["../../../src/internals/contexts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEjD,OAAO,EAA0C,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAC3F,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,MAAM,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAC;AAUvD,IAAI,UAAU,GAAG,CAAC,CAAC;AAEnB,MAAM,OAAO,WAAW;IAKJ;IAJlB,IAAI,CAAS;IACb,YAAY,CAAS;IAErB,YACkB,YAAe,EAC/B,IAAa;QADG,iBAAY,GAAZ,YAAY,CAAG;QAG/B,IAAI,CAAC,YAAY,GAAG,IAAI,IAAI,WAAW,UAAU,EAAE,EAAE,CAAC;QACtD,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACxC,CAAC;CACF;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,CAAI,YAAe,EAAE,WAAoB,EAAc,EAAE;IACpF,OAAO,IAAI,WAAW,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;AACpD,CAAC,CAAC;AAEF,MAAM,OAAO,WAAW;IACtB,YAAY,QAA2C,EAAE,MAAoB;QAC3E,IAAI,CAAC,
|
1
|
+
{"version":3,"file":"contexts.js","sourceRoot":"","sources":["../../../src/internals/contexts.ts"],"names":[],"mappings":"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"}
|
@@ -3,6 +3,6 @@
|
|
3
3
|
* in code that _may or may not_ be used while rendering, we need to use this function to wrap the
|
4
4
|
* call. This will ensure that we will not be in a rendering context when the reactive function is called.
|
5
5
|
*/
|
6
|
-
export declare const runReactiveSafe: <T
|
6
|
+
export declare const runReactiveSafe: <T>(fn: () => T) => T;
|
7
7
|
export declare function isRendering(): boolean;
|
8
8
|
//# sourceMappingURL=rendering.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"rendering.d.ts","sourceRoot":"","sources":["../../../src/react/rendering.ts"],"names":[],"mappings":"AAgBA;;;;GAIG;AACH,eAAO,MAAM,eAAe,GAAI,CAAC,
|
1
|
+
{"version":3,"file":"rendering.d.ts","sourceRoot":"","sources":["../../../src/react/rendering.ts"],"names":[],"mappings":"AAgBA;;;;GAIG;AACH,eAAO,MAAM,eAAe,GAAI,CAAC,MAAM,MAAM,CAAC,KAAG,CAQhD,CAAC;AAEF,wBAAgB,WAAW,YAW1B"}
|
@@ -14,10 +14,10 @@ let RENDERING_SAFE_MODE_COUNT = 0;
|
|
14
14
|
* in code that _may or may not_ be used while rendering, we need to use this function to wrap the
|
15
15
|
* call. This will ensure that we will not be in a rendering context when the reactive function is called.
|
16
16
|
*/
|
17
|
-
export const runReactiveSafe = (fn
|
17
|
+
export const runReactiveSafe = (fn) => {
|
18
18
|
RENDERING_SAFE_MODE_COUNT++;
|
19
19
|
try {
|
20
|
-
return fn(
|
20
|
+
return fn();
|
21
21
|
}
|
22
22
|
finally {
|
23
23
|
RENDERING_SAFE_MODE_COUNT--;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"rendering.js","sourceRoot":"","sources":["../../../src/react/rendering.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,wFAAwF;AACxF,oFAAoF;AACpF,mFAAmF;AACnF,0DAA0D;AAC1D,MAAM,eAAe,GAClB,KAAa,CAAC,kDAAkD;IAChE,KAAa,CAAC,+DAA+D;IAC7E,KAAa,CAAC,+DAA+D,CAAC;AAEjF,MAAM,WAAW,GAAG,CAAC,CAAC,eAAe,CAAC,sBAAsB,CAAC;AAC7D,MAAM,sBAAsB,GAAG,eAAe,CAAC,sBAAsB,IAAI,eAAe,CAAC;AAEzF,IAAI,yBAAyB,GAAG,CAAC,CAAC;AAElC;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,
|
1
|
+
{"version":3,"file":"rendering.js","sourceRoot":"","sources":["../../../src/react/rendering.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,wFAAwF;AACxF,oFAAoF;AACpF,mFAAmF;AACnF,0DAA0D;AAC1D,MAAM,eAAe,GAClB,KAAa,CAAC,kDAAkD;IAChE,KAAa,CAAC,+DAA+D;IAC7E,KAAa,CAAC,+DAA+D,CAAC;AAEjF,MAAM,WAAW,GAAG,CAAC,CAAC,eAAe,CAAC,sBAAsB,CAAC;AAC7D,MAAM,sBAAsB,GAAG,eAAe,CAAC,sBAAsB,IAAI,eAAe,CAAC;AAEzF,IAAI,yBAAyB,GAAG,CAAC,CAAC;AAElC;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAI,EAAW,EAAK,EAAE;IACnD,yBAAyB,EAAE,CAAC;IAE5B,IAAI,CAAC;QACH,OAAO,EAAE,EAAE,CAAC;IACd,CAAC;YAAS,CAAC;QACT,yBAAyB,EAAE,CAAC;IAC9B,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,UAAU,WAAW;IACzB,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC;IAE3F,OAAO,CACL,yBAAyB,KAAK,CAAC;QAC/B,CAAC,CAAC,UAAU;QACZ,sFAAsF;QACtF,yFAAyF;QACzF,wDAAwD;QACxD,UAAU,CAAC,QAAQ,KAAK,UAAU,CAAC,SAAS,CAC7C,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
package/src/__tests__/gc.test.ts
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
|
2
2
|
import { reactive, createContext, withContexts, watcher, state } from '../index.js';
|
3
|
-
import { SignalScope, ROOT_SCOPE, forceGc,
|
3
|
+
import { SignalScope, ROOT_SCOPE, forceGc, clearRootContexts } from '../internals/contexts.js';
|
4
4
|
import { nextTick, sleep } from './utils/async.js';
|
5
5
|
|
6
6
|
// Helper to access private properties for testing
|
@@ -14,7 +14,7 @@ const getGCCandidates = (scope: SignalScope) => {
|
|
14
14
|
|
15
15
|
describe('Garbage Collection', () => {
|
16
16
|
beforeEach(() => {
|
17
|
-
|
17
|
+
clearRootContexts();
|
18
18
|
});
|
19
19
|
|
20
20
|
it('should automatically garbage collect unwatched signals', async () => {
|
package/src/index.ts
CHANGED
@@ -36,20 +36,24 @@ export const createContext = <T>(initialValue: T, description?: string): Context
|
|
36
36
|
|
37
37
|
export class SignalScope {
|
38
38
|
constructor(contexts: [ContextImpl<unknown>, unknown][], parent?: SignalScope) {
|
39
|
-
this.parentScope = parent;
|
40
39
|
this.contexts = Object.create(parent?.contexts || null);
|
41
40
|
|
42
|
-
|
43
|
-
this.contexts[context._key] = value;
|
44
|
-
}
|
41
|
+
this.setContexts(contexts);
|
45
42
|
}
|
46
43
|
|
47
|
-
private parentScope?: SignalScope = undefined;
|
48
44
|
private contexts: Record<symbol, unknown>;
|
49
45
|
private children = new Map<number, SignalScope>();
|
50
46
|
private signals = new Map<number, DerivedSignal<any, any>>();
|
51
47
|
private gcCandidates = new Set<DerivedSignal<any, any>>();
|
52
48
|
|
49
|
+
setContexts(contexts: [ContextImpl<unknown>, unknown][]) {
|
50
|
+
for (const [context, value] of contexts) {
|
51
|
+
this.contexts[context._key] = value;
|
52
|
+
}
|
53
|
+
|
54
|
+
this.signals.clear();
|
55
|
+
}
|
56
|
+
|
53
57
|
getChild(contexts: [ContextImpl<unknown>, unknown][]) {
|
54
58
|
const key = hashValue(contexts);
|
55
59
|
|
@@ -119,10 +123,10 @@ export class SignalScope {
|
|
119
123
|
export let ROOT_SCOPE = new SignalScope([]);
|
120
124
|
|
121
125
|
export function setRootContexts<C extends unknown[], U>(contexts: [...ContextPair<C>]): void {
|
122
|
-
ROOT_SCOPE
|
126
|
+
ROOT_SCOPE.setContexts(contexts as [ContextImpl<unknown>, unknown][]);
|
123
127
|
}
|
124
128
|
|
125
|
-
export const
|
129
|
+
export const clearRootContexts = () => {
|
126
130
|
ROOT_SCOPE = new SignalScope([]);
|
127
131
|
};
|
128
132
|
|
package/src/react/rendering.ts
CHANGED
@@ -19,11 +19,11 @@ let RENDERING_SAFE_MODE_COUNT = 0;
|
|
19
19
|
* in code that _may or may not_ be used while rendering, we need to use this function to wrap the
|
20
20
|
* call. This will ensure that we will not be in a rendering context when the reactive function is called.
|
21
21
|
*/
|
22
|
-
export const runReactiveSafe = <T
|
22
|
+
export const runReactiveSafe = <T>(fn: () => T): T => {
|
23
23
|
RENDERING_SAFE_MODE_COUNT++;
|
24
24
|
|
25
25
|
try {
|
26
|
-
return fn(
|
26
|
+
return fn();
|
27
27
|
} finally {
|
28
28
|
RENDERING_SAFE_MODE_COUNT--;
|
29
29
|
}
|