@rlabs-inc/signals 1.2.0 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/collections/map.d.ts.map +1 -1
- package/dist/collections/set.d.ts.map +1 -1
- package/dist/deep/proxy.d.ts.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +105 -6
- package/dist/index.mjs +105 -6
- package/dist/primitives/bind.d.ts +29 -38
- package/dist/primitives/bind.d.ts.map +1 -1
- package/dist/primitives/derived.d.ts.map +1 -1
- package/dist/primitives/signal.d.ts +5 -0
- package/dist/primitives/signal.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"map.d.ts","sourceRoot":"","sources":["../../src/collections/map.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"map.d.ts","sourceRoot":"","sources":["../../src/collections/map.ts"],"names":[],"mappings":"AA0CA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,WAAW,CAAC,CAAC,EAAE,CAAC,CAAE,SAAQ,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;;gBAUlC,OAAO,CAAC,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI;IAmCtD,IAAI,IAAI,IAAI,MAAM,CAGjB;IAMD,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO;IAwBpB,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,SAAS;IA0B1B,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAsC3B,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO;IAwBvB,KAAK,IAAI,IAAI;IAmBb,IAAI,IAAI,WAAW,CAAC,CAAC,CAAC;IAKtB,MAAM,IAAI,WAAW,CAAC,CAAC,CAAC;IAKxB,OAAO,IAAI,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAK9B,OAAO,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI;IAKxF,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CAGzC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"set.d.ts","sourceRoot":"","sources":["../../src/collections/set.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"set.d.ts","sourceRoot":"","sources":["../../src/collections/set.ts"],"names":[],"mappings":"AA0CA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,WAAW,CAAC,CAAC,CAAE,SAAQ,GAAG,CAAC,CAAC,CAAC;;gBAU5B,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI;IAmCvC,IAAI,IAAI,IAAI,MAAM,CAGjB;IAMD,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,OAAO;IA0BrB,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI;IAmBlB,MAAM,CAAC,IAAI,EAAE,CAAC,GAAG,OAAO;IAuBxB,KAAK,IAAI,IAAI;IAmBb,IAAI,IAAI,WAAW,CAAC,CAAC,CAAC;IAKtB,MAAM,IAAI,WAAW,CAAC,CAAC,CAAC;IAKxB,OAAO,IAAI,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAK9B,OAAO,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI;IAKxF,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC;CAGpC"}
|
package/dist/deep/proxy.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../../src/deep/proxy.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../../src/deep/proxy.ts"],"names":[],"mappings":"AA8EA;;;;;;;;GAQG;AACH,wBAAgB,KAAK,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CA8PnD;AAMD;;GAEG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAKpC;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAElD"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export { signal, source, mutableSource, state, stateRaw } from './primitives/signal.js';
|
|
2
2
|
export { derived, createDerived, disconnectDerived } from './primitives/derived.js';
|
|
3
3
|
export { effect, createEffect, updateEffect, destroyEffect } from './primitives/effect.js';
|
|
4
|
-
export { bind, bindReadonly, isBinding, unwrap } from './primitives/bind.js';
|
|
4
|
+
export { bind, bindReadonly, isBinding, unwrap, signals } from './primitives/bind.js';
|
|
5
5
|
export { proxy, toRaw, isReactive } from './deep/proxy.js';
|
|
6
6
|
export { batch, untrack, peek } from './reactivity/batching.js';
|
|
7
7
|
export { flushSync, tick } from './reactivity/scheduling.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AACvF,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AACnF,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAC1F,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AACvF,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AACnF,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAC1F,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAMrF,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAM1D,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAA;AAC/D,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,4BAA4B,CAAA;AAM5D,OAAO,EACL,MAAM,EACN,UAAU,EACV,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,WAAW,EACX,YAAY,GACb,MAAM,0BAA0B,CAAA;AAMjC,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAMpD,OAAO,EACL,GAAG,EACH,GAAG,EACH,OAAO,EACP,eAAe,EACf,aAAa,EACb,cAAc,EACd,eAAe,GAChB,MAAM,0BAA0B,CAAA;AAMjC,OAAO,EAEL,OAAO,EACP,MAAM,EACN,aAAa,EACb,WAAW,EACX,aAAa,EACb,WAAW,EACX,YAAY,EAGZ,KAAK,EACL,KAAK,EACL,WAAW,EACX,oBAAoB,EACpB,SAAS,EACT,KAAK,EACL,UAAU,EACV,gBAAgB,EAGhB,OAAO,EACP,YAAY,EAGZ,aAAa,EACb,cAAc,EACd,YAAY,EACZ,eAAe,GAChB,MAAM,qBAAqB,CAAA;AAM5B,OAAO,EACL,cAAc,EACd,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,WAAW,EACX,UAAU,EAGV,iBAAiB,EACjB,eAAe,EACf,aAAa,EACb,qBAAqB,EACrB,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,EAGnB,cAAc,EACd,eAAe,EACf,aAAa,GACd,MAAM,mBAAmB,CAAA;AAM1B,YAAY,EAEV,MAAM,EACN,MAAM,EACN,QAAQ,EACR,OAAO,EACP,MAAM,EACN,KAAK,EAGL,cAAc,EACd,cAAc,EACd,aAAa,EACb,SAAS,EACT,SAAS,EACT,QAAQ,EAGR,MAAM,EACN,aAAa,GACd,MAAM,iBAAiB,CAAA;AAExB,YAAY,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -40,6 +40,7 @@ __export(exports_src, {
|
|
|
40
40
|
stateRaw: () => stateRaw,
|
|
41
41
|
state: () => state,
|
|
42
42
|
source: () => source,
|
|
43
|
+
signals: () => signals,
|
|
43
44
|
signal: () => signal,
|
|
44
45
|
shallowEquals: () => shallowEquals,
|
|
45
46
|
setUntracking: () => setUntracking,
|
|
@@ -564,6 +565,7 @@ function updateReaction(reaction) {
|
|
|
564
565
|
}
|
|
565
566
|
|
|
566
567
|
// src/primitives/signal.ts
|
|
568
|
+
var SOURCE_SYMBOL = Symbol("signal.source");
|
|
567
569
|
function source(initialValue, options) {
|
|
568
570
|
return {
|
|
569
571
|
f: 0,
|
|
@@ -577,9 +579,13 @@ function source(initialValue, options) {
|
|
|
577
579
|
function mutableSource(initialValue) {
|
|
578
580
|
return source(initialValue, { equals: safeEquals });
|
|
579
581
|
}
|
|
582
|
+
var signalCleanup = new FinalizationRegistry((src) => {
|
|
583
|
+
src.reactions = null;
|
|
584
|
+
});
|
|
580
585
|
function signal(initialValue, options) {
|
|
581
586
|
const src = source(initialValue, options);
|
|
582
|
-
|
|
587
|
+
const sig = {
|
|
588
|
+
[SOURCE_SYMBOL]: src,
|
|
583
589
|
get value() {
|
|
584
590
|
return get(src);
|
|
585
591
|
},
|
|
@@ -587,6 +593,11 @@ function signal(initialValue, options) {
|
|
|
587
593
|
set(src, newValue);
|
|
588
594
|
}
|
|
589
595
|
};
|
|
596
|
+
signalCleanup.register(sig, src);
|
|
597
|
+
return sig;
|
|
598
|
+
}
|
|
599
|
+
function getSource(sig) {
|
|
600
|
+
return sig[SOURCE_SYMBOL];
|
|
590
601
|
}
|
|
591
602
|
var proxyFn = null;
|
|
592
603
|
function setProxyFn(fn) {
|
|
@@ -603,6 +614,13 @@ function stateRaw(initialValue) {
|
|
|
603
614
|
}
|
|
604
615
|
|
|
605
616
|
// src/deep/proxy.ts
|
|
617
|
+
var proxyCleanup = new FinalizationRegistry((data) => {
|
|
618
|
+
data.version.reactions = null;
|
|
619
|
+
for (const src of data.sources.values()) {
|
|
620
|
+
src.reactions = null;
|
|
621
|
+
}
|
|
622
|
+
data.sources.clear();
|
|
623
|
+
});
|
|
606
624
|
function shouldProxy(value) {
|
|
607
625
|
if (value === null || typeof value !== "object") {
|
|
608
626
|
return false;
|
|
@@ -640,7 +658,7 @@ function proxy(value) {
|
|
|
640
658
|
setActiveReaction(prevReaction);
|
|
641
659
|
}
|
|
642
660
|
};
|
|
643
|
-
const
|
|
661
|
+
const getSource2 = (prop, initialValue) => {
|
|
644
662
|
let s = sources.get(prop);
|
|
645
663
|
if (s === undefined) {
|
|
646
664
|
s = withParent(() => {
|
|
@@ -663,7 +681,7 @@ function proxy(value) {
|
|
|
663
681
|
return currentValue.bind(proxyObj);
|
|
664
682
|
}
|
|
665
683
|
if (exists || isWritable(target, prop)) {
|
|
666
|
-
const s =
|
|
684
|
+
const s = getSource2(prop, currentValue);
|
|
667
685
|
const val = get(s);
|
|
668
686
|
if (val === UNINITIALIZED) {
|
|
669
687
|
return;
|
|
@@ -763,6 +781,7 @@ function proxy(value) {
|
|
|
763
781
|
return Reflect.getOwnPropertyDescriptor(target, prop);
|
|
764
782
|
}
|
|
765
783
|
});
|
|
784
|
+
proxyCleanup.register(proxyObj, { sources, version });
|
|
766
785
|
return proxyObj;
|
|
767
786
|
}
|
|
768
787
|
function toRaw(value) {
|
|
@@ -775,6 +794,18 @@ function isReactive(value) {
|
|
|
775
794
|
return isProxy(value);
|
|
776
795
|
}
|
|
777
796
|
// src/primitives/derived.ts
|
|
797
|
+
var derivedCleanup = new FinalizationRegistry((d) => {
|
|
798
|
+
removeReactions(d, 0);
|
|
799
|
+
d.deps = null;
|
|
800
|
+
d.reactions = null;
|
|
801
|
+
const effects = d.effects;
|
|
802
|
+
if (effects !== null) {
|
|
803
|
+
d.effects = null;
|
|
804
|
+
for (let i = 0;i < effects.length; i++) {
|
|
805
|
+
destroyEffectImpl(effects[i]);
|
|
806
|
+
}
|
|
807
|
+
}
|
|
808
|
+
});
|
|
778
809
|
function createDerived(fn, options) {
|
|
779
810
|
let flags = DERIVED | DIRTY;
|
|
780
811
|
const parentDerived = activeReaction !== null && (activeReaction.f & DERIVED) !== 0 ? activeReaction : null;
|
|
@@ -825,11 +856,13 @@ function destroyDerivedEffects(derived) {
|
|
|
825
856
|
}
|
|
826
857
|
function derived(fn, options) {
|
|
827
858
|
const d = createDerived(fn, options);
|
|
828
|
-
|
|
859
|
+
const wrapper = {
|
|
829
860
|
get value() {
|
|
830
861
|
return get(d);
|
|
831
862
|
}
|
|
832
863
|
};
|
|
864
|
+
derivedCleanup.register(wrapper, d);
|
|
865
|
+
return wrapper;
|
|
833
866
|
}
|
|
834
867
|
derived.by = derived;
|
|
835
868
|
function disconnectDerived(derived2) {
|
|
@@ -962,20 +995,49 @@ effect.tracking = function effectTracking() {
|
|
|
962
995
|
return activeEffect !== null;
|
|
963
996
|
};
|
|
964
997
|
// src/primitives/bind.ts
|
|
998
|
+
var bindingCleanup = new FinalizationRegistry((internalSource) => {
|
|
999
|
+
internalSource.reactions = null;
|
|
1000
|
+
});
|
|
965
1001
|
var BINDING_SYMBOL = Symbol("binding");
|
|
966
1002
|
function isBinding(value) {
|
|
967
1003
|
return value !== null && typeof value === "object" && BINDING_SYMBOL in value;
|
|
968
1004
|
}
|
|
1005
|
+
function isSignal(value) {
|
|
1006
|
+
return value !== null && typeof value === "object" && "value" in value;
|
|
1007
|
+
}
|
|
1008
|
+
function isGetter(value) {
|
|
1009
|
+
return typeof value === "function";
|
|
1010
|
+
}
|
|
969
1011
|
function bind(source2) {
|
|
1012
|
+
if (isGetter(source2)) {
|
|
1013
|
+
return {
|
|
1014
|
+
[BINDING_SYMBOL]: true,
|
|
1015
|
+
get value() {
|
|
1016
|
+
return source2();
|
|
1017
|
+
}
|
|
1018
|
+
};
|
|
1019
|
+
}
|
|
1020
|
+
let actualSource;
|
|
1021
|
+
let internalSource = null;
|
|
1022
|
+
if (isBinding(source2) || isSignal(source2)) {
|
|
1023
|
+
actualSource = source2;
|
|
1024
|
+
} else {
|
|
1025
|
+
const sig = signal(source2);
|
|
1026
|
+
actualSource = sig;
|
|
1027
|
+
internalSource = getSource(sig) ?? null;
|
|
1028
|
+
}
|
|
970
1029
|
const binding = {
|
|
971
1030
|
[BINDING_SYMBOL]: true,
|
|
972
1031
|
get value() {
|
|
973
|
-
return
|
|
1032
|
+
return actualSource.value;
|
|
974
1033
|
},
|
|
975
1034
|
set value(v) {
|
|
976
|
-
|
|
1035
|
+
actualSource.value = v;
|
|
977
1036
|
}
|
|
978
1037
|
};
|
|
1038
|
+
if (internalSource !== null) {
|
|
1039
|
+
bindingCleanup.register(binding, internalSource);
|
|
1040
|
+
}
|
|
979
1041
|
return binding;
|
|
980
1042
|
}
|
|
981
1043
|
function bindReadonly(source2) {
|
|
@@ -992,6 +1054,15 @@ function unwrap(value) {
|
|
|
992
1054
|
}
|
|
993
1055
|
return value;
|
|
994
1056
|
}
|
|
1057
|
+
function signals(initial) {
|
|
1058
|
+
const result = {};
|
|
1059
|
+
for (const key in initial) {
|
|
1060
|
+
if (Object.prototype.hasOwnProperty.call(initial, key)) {
|
|
1061
|
+
result[key] = signal(initial[key]);
|
|
1062
|
+
}
|
|
1063
|
+
}
|
|
1064
|
+
return result;
|
|
1065
|
+
}
|
|
995
1066
|
// src/reactivity/batching.ts
|
|
996
1067
|
function batch(fn) {
|
|
997
1068
|
incrementBatchDepth();
|
|
@@ -1014,6 +1085,15 @@ function untrack(fn) {
|
|
|
1014
1085
|
}
|
|
1015
1086
|
var peek = untrack;
|
|
1016
1087
|
// src/collections/map.ts
|
|
1088
|
+
var mapCleanup = new FinalizationRegistry((data) => {
|
|
1089
|
+
data.version.reactions = null;
|
|
1090
|
+
data.size.reactions = null;
|
|
1091
|
+
for (const sig of data.keySignals.values()) {
|
|
1092
|
+
sig.reactions = null;
|
|
1093
|
+
}
|
|
1094
|
+
data.keySignals.clear();
|
|
1095
|
+
});
|
|
1096
|
+
|
|
1017
1097
|
class ReactiveMap extends Map {
|
|
1018
1098
|
#keySignals = new Map;
|
|
1019
1099
|
#version = source(0);
|
|
@@ -1021,6 +1101,11 @@ class ReactiveMap extends Map {
|
|
|
1021
1101
|
constructor(entries) {
|
|
1022
1102
|
super(entries);
|
|
1023
1103
|
this.#size = source(super.size);
|
|
1104
|
+
mapCleanup.register(this, {
|
|
1105
|
+
keySignals: this.#keySignals,
|
|
1106
|
+
version: this.#version,
|
|
1107
|
+
size: this.#size
|
|
1108
|
+
});
|
|
1024
1109
|
}
|
|
1025
1110
|
#getKeySignal(key) {
|
|
1026
1111
|
let sig = this.#keySignals.get(key);
|
|
@@ -1131,6 +1216,15 @@ class ReactiveMap extends Map {
|
|
|
1131
1216
|
}
|
|
1132
1217
|
}
|
|
1133
1218
|
// src/collections/set.ts
|
|
1219
|
+
var setCleanup = new FinalizationRegistry((data) => {
|
|
1220
|
+
data.version.reactions = null;
|
|
1221
|
+
data.size.reactions = null;
|
|
1222
|
+
for (const sig of data.itemSignals.values()) {
|
|
1223
|
+
sig.reactions = null;
|
|
1224
|
+
}
|
|
1225
|
+
data.itemSignals.clear();
|
|
1226
|
+
});
|
|
1227
|
+
|
|
1134
1228
|
class ReactiveSet extends Set {
|
|
1135
1229
|
#itemSignals = new Map;
|
|
1136
1230
|
#version = source(0);
|
|
@@ -1138,6 +1232,11 @@ class ReactiveSet extends Set {
|
|
|
1138
1232
|
constructor(values) {
|
|
1139
1233
|
super(values);
|
|
1140
1234
|
this.#size = source(super.size);
|
|
1235
|
+
setCleanup.register(this, {
|
|
1236
|
+
itemSignals: this.#itemSignals,
|
|
1237
|
+
version: this.#version,
|
|
1238
|
+
size: this.#size
|
|
1239
|
+
});
|
|
1141
1240
|
}
|
|
1142
1241
|
#getItemSignal(item) {
|
|
1143
1242
|
let sig = this.#itemSignals.get(item);
|
package/dist/index.mjs
CHANGED
|
@@ -452,6 +452,7 @@ function updateReaction(reaction) {
|
|
|
452
452
|
}
|
|
453
453
|
|
|
454
454
|
// src/primitives/signal.ts
|
|
455
|
+
var SOURCE_SYMBOL = Symbol("signal.source");
|
|
455
456
|
function source(initialValue, options) {
|
|
456
457
|
return {
|
|
457
458
|
f: 0,
|
|
@@ -465,9 +466,13 @@ function source(initialValue, options) {
|
|
|
465
466
|
function mutableSource(initialValue) {
|
|
466
467
|
return source(initialValue, { equals: safeEquals });
|
|
467
468
|
}
|
|
469
|
+
var signalCleanup = new FinalizationRegistry((src) => {
|
|
470
|
+
src.reactions = null;
|
|
471
|
+
});
|
|
468
472
|
function signal(initialValue, options) {
|
|
469
473
|
const src = source(initialValue, options);
|
|
470
|
-
|
|
474
|
+
const sig = {
|
|
475
|
+
[SOURCE_SYMBOL]: src,
|
|
471
476
|
get value() {
|
|
472
477
|
return get(src);
|
|
473
478
|
},
|
|
@@ -475,6 +480,11 @@ function signal(initialValue, options) {
|
|
|
475
480
|
set(src, newValue);
|
|
476
481
|
}
|
|
477
482
|
};
|
|
483
|
+
signalCleanup.register(sig, src);
|
|
484
|
+
return sig;
|
|
485
|
+
}
|
|
486
|
+
function getSource(sig) {
|
|
487
|
+
return sig[SOURCE_SYMBOL];
|
|
478
488
|
}
|
|
479
489
|
var proxyFn = null;
|
|
480
490
|
function setProxyFn(fn) {
|
|
@@ -491,6 +501,13 @@ function stateRaw(initialValue) {
|
|
|
491
501
|
}
|
|
492
502
|
|
|
493
503
|
// src/deep/proxy.ts
|
|
504
|
+
var proxyCleanup = new FinalizationRegistry((data) => {
|
|
505
|
+
data.version.reactions = null;
|
|
506
|
+
for (const src of data.sources.values()) {
|
|
507
|
+
src.reactions = null;
|
|
508
|
+
}
|
|
509
|
+
data.sources.clear();
|
|
510
|
+
});
|
|
494
511
|
function shouldProxy(value) {
|
|
495
512
|
if (value === null || typeof value !== "object") {
|
|
496
513
|
return false;
|
|
@@ -528,7 +545,7 @@ function proxy(value) {
|
|
|
528
545
|
setActiveReaction(prevReaction);
|
|
529
546
|
}
|
|
530
547
|
};
|
|
531
|
-
const
|
|
548
|
+
const getSource2 = (prop, initialValue) => {
|
|
532
549
|
let s = sources.get(prop);
|
|
533
550
|
if (s === undefined) {
|
|
534
551
|
s = withParent(() => {
|
|
@@ -551,7 +568,7 @@ function proxy(value) {
|
|
|
551
568
|
return currentValue.bind(proxyObj);
|
|
552
569
|
}
|
|
553
570
|
if (exists || isWritable(target, prop)) {
|
|
554
|
-
const s =
|
|
571
|
+
const s = getSource2(prop, currentValue);
|
|
555
572
|
const val = get(s);
|
|
556
573
|
if (val === UNINITIALIZED) {
|
|
557
574
|
return;
|
|
@@ -651,6 +668,7 @@ function proxy(value) {
|
|
|
651
668
|
return Reflect.getOwnPropertyDescriptor(target, prop);
|
|
652
669
|
}
|
|
653
670
|
});
|
|
671
|
+
proxyCleanup.register(proxyObj, { sources, version });
|
|
654
672
|
return proxyObj;
|
|
655
673
|
}
|
|
656
674
|
function toRaw(value) {
|
|
@@ -663,6 +681,18 @@ function isReactive(value) {
|
|
|
663
681
|
return isProxy(value);
|
|
664
682
|
}
|
|
665
683
|
// src/primitives/derived.ts
|
|
684
|
+
var derivedCleanup = new FinalizationRegistry((d) => {
|
|
685
|
+
removeReactions(d, 0);
|
|
686
|
+
d.deps = null;
|
|
687
|
+
d.reactions = null;
|
|
688
|
+
const effects = d.effects;
|
|
689
|
+
if (effects !== null) {
|
|
690
|
+
d.effects = null;
|
|
691
|
+
for (let i = 0;i < effects.length; i++) {
|
|
692
|
+
destroyEffectImpl(effects[i]);
|
|
693
|
+
}
|
|
694
|
+
}
|
|
695
|
+
});
|
|
666
696
|
function createDerived(fn, options) {
|
|
667
697
|
let flags = DERIVED | DIRTY;
|
|
668
698
|
const parentDerived = activeReaction !== null && (activeReaction.f & DERIVED) !== 0 ? activeReaction : null;
|
|
@@ -713,11 +743,13 @@ function destroyDerivedEffects(derived) {
|
|
|
713
743
|
}
|
|
714
744
|
function derived(fn, options) {
|
|
715
745
|
const d = createDerived(fn, options);
|
|
716
|
-
|
|
746
|
+
const wrapper = {
|
|
717
747
|
get value() {
|
|
718
748
|
return get(d);
|
|
719
749
|
}
|
|
720
750
|
};
|
|
751
|
+
derivedCleanup.register(wrapper, d);
|
|
752
|
+
return wrapper;
|
|
721
753
|
}
|
|
722
754
|
derived.by = derived;
|
|
723
755
|
function disconnectDerived(derived2) {
|
|
@@ -850,20 +882,49 @@ effect.tracking = function effectTracking() {
|
|
|
850
882
|
return activeEffect !== null;
|
|
851
883
|
};
|
|
852
884
|
// src/primitives/bind.ts
|
|
885
|
+
var bindingCleanup = new FinalizationRegistry((internalSource) => {
|
|
886
|
+
internalSource.reactions = null;
|
|
887
|
+
});
|
|
853
888
|
var BINDING_SYMBOL = Symbol("binding");
|
|
854
889
|
function isBinding(value) {
|
|
855
890
|
return value !== null && typeof value === "object" && BINDING_SYMBOL in value;
|
|
856
891
|
}
|
|
892
|
+
function isSignal(value) {
|
|
893
|
+
return value !== null && typeof value === "object" && "value" in value;
|
|
894
|
+
}
|
|
895
|
+
function isGetter(value) {
|
|
896
|
+
return typeof value === "function";
|
|
897
|
+
}
|
|
857
898
|
function bind(source2) {
|
|
899
|
+
if (isGetter(source2)) {
|
|
900
|
+
return {
|
|
901
|
+
[BINDING_SYMBOL]: true,
|
|
902
|
+
get value() {
|
|
903
|
+
return source2();
|
|
904
|
+
}
|
|
905
|
+
};
|
|
906
|
+
}
|
|
907
|
+
let actualSource;
|
|
908
|
+
let internalSource = null;
|
|
909
|
+
if (isBinding(source2) || isSignal(source2)) {
|
|
910
|
+
actualSource = source2;
|
|
911
|
+
} else {
|
|
912
|
+
const sig = signal(source2);
|
|
913
|
+
actualSource = sig;
|
|
914
|
+
internalSource = getSource(sig) ?? null;
|
|
915
|
+
}
|
|
858
916
|
const binding = {
|
|
859
917
|
[BINDING_SYMBOL]: true,
|
|
860
918
|
get value() {
|
|
861
|
-
return
|
|
919
|
+
return actualSource.value;
|
|
862
920
|
},
|
|
863
921
|
set value(v) {
|
|
864
|
-
|
|
922
|
+
actualSource.value = v;
|
|
865
923
|
}
|
|
866
924
|
};
|
|
925
|
+
if (internalSource !== null) {
|
|
926
|
+
bindingCleanup.register(binding, internalSource);
|
|
927
|
+
}
|
|
867
928
|
return binding;
|
|
868
929
|
}
|
|
869
930
|
function bindReadonly(source2) {
|
|
@@ -880,6 +941,15 @@ function unwrap(value) {
|
|
|
880
941
|
}
|
|
881
942
|
return value;
|
|
882
943
|
}
|
|
944
|
+
function signals(initial) {
|
|
945
|
+
const result = {};
|
|
946
|
+
for (const key in initial) {
|
|
947
|
+
if (Object.prototype.hasOwnProperty.call(initial, key)) {
|
|
948
|
+
result[key] = signal(initial[key]);
|
|
949
|
+
}
|
|
950
|
+
}
|
|
951
|
+
return result;
|
|
952
|
+
}
|
|
883
953
|
// src/reactivity/batching.ts
|
|
884
954
|
function batch(fn) {
|
|
885
955
|
incrementBatchDepth();
|
|
@@ -902,6 +972,15 @@ function untrack(fn) {
|
|
|
902
972
|
}
|
|
903
973
|
var peek = untrack;
|
|
904
974
|
// src/collections/map.ts
|
|
975
|
+
var mapCleanup = new FinalizationRegistry((data) => {
|
|
976
|
+
data.version.reactions = null;
|
|
977
|
+
data.size.reactions = null;
|
|
978
|
+
for (const sig of data.keySignals.values()) {
|
|
979
|
+
sig.reactions = null;
|
|
980
|
+
}
|
|
981
|
+
data.keySignals.clear();
|
|
982
|
+
});
|
|
983
|
+
|
|
905
984
|
class ReactiveMap extends Map {
|
|
906
985
|
#keySignals = new Map;
|
|
907
986
|
#version = source(0);
|
|
@@ -909,6 +988,11 @@ class ReactiveMap extends Map {
|
|
|
909
988
|
constructor(entries) {
|
|
910
989
|
super(entries);
|
|
911
990
|
this.#size = source(super.size);
|
|
991
|
+
mapCleanup.register(this, {
|
|
992
|
+
keySignals: this.#keySignals,
|
|
993
|
+
version: this.#version,
|
|
994
|
+
size: this.#size
|
|
995
|
+
});
|
|
912
996
|
}
|
|
913
997
|
#getKeySignal(key) {
|
|
914
998
|
let sig = this.#keySignals.get(key);
|
|
@@ -1019,6 +1103,15 @@ class ReactiveMap extends Map {
|
|
|
1019
1103
|
}
|
|
1020
1104
|
}
|
|
1021
1105
|
// src/collections/set.ts
|
|
1106
|
+
var setCleanup = new FinalizationRegistry((data) => {
|
|
1107
|
+
data.version.reactions = null;
|
|
1108
|
+
data.size.reactions = null;
|
|
1109
|
+
for (const sig of data.itemSignals.values()) {
|
|
1110
|
+
sig.reactions = null;
|
|
1111
|
+
}
|
|
1112
|
+
data.itemSignals.clear();
|
|
1113
|
+
});
|
|
1114
|
+
|
|
1022
1115
|
class ReactiveSet extends Set {
|
|
1023
1116
|
#itemSignals = new Map;
|
|
1024
1117
|
#version = source(0);
|
|
@@ -1026,6 +1119,11 @@ class ReactiveSet extends Set {
|
|
|
1026
1119
|
constructor(values) {
|
|
1027
1120
|
super(values);
|
|
1028
1121
|
this.#size = source(super.size);
|
|
1122
|
+
setCleanup.register(this, {
|
|
1123
|
+
itemSignals: this.#itemSignals,
|
|
1124
|
+
version: this.#version,
|
|
1125
|
+
size: this.#size
|
|
1126
|
+
});
|
|
1029
1127
|
}
|
|
1030
1128
|
#getItemSignal(item) {
|
|
1031
1129
|
let sig = this.#itemSignals.get(item);
|
|
@@ -1369,6 +1467,7 @@ export {
|
|
|
1369
1467
|
stateRaw,
|
|
1370
1468
|
state,
|
|
1371
1469
|
source,
|
|
1470
|
+
signals,
|
|
1372
1471
|
signal,
|
|
1373
1472
|
shallowEquals,
|
|
1374
1473
|
setUntracking,
|
|
@@ -18,48 +18,12 @@ export interface ReadonlyBinding<T> {
|
|
|
18
18
|
* Check if a value is a binding created by bind()
|
|
19
19
|
*/
|
|
20
20
|
export declare function isBinding(value: unknown): value is Binding<unknown>;
|
|
21
|
-
/**
|
|
22
|
-
* Create a reactive binding to a signal or another binding.
|
|
23
|
-
*
|
|
24
|
-
* A binding is a "reactive pointer" - it forwards reads and writes to the source.
|
|
25
|
-
* This enables connecting user's reactive state to internal component state.
|
|
26
|
-
*
|
|
27
|
-
* @example
|
|
28
|
-
* ```ts
|
|
29
|
-
* const source = signal(0)
|
|
30
|
-
* const binding = bind(source)
|
|
31
|
-
*
|
|
32
|
-
* // Reading through binding reads from source (creates dependency)
|
|
33
|
-
* console.log(binding.value) // → 0
|
|
34
|
-
*
|
|
35
|
-
* // Writing through binding writes to source (triggers reactivity)
|
|
36
|
-
* binding.value = 42
|
|
37
|
-
* console.log(source.value) // → 42
|
|
38
|
-
* ```
|
|
39
|
-
*
|
|
40
|
-
* @example Two-way binding for inputs
|
|
41
|
-
* ```ts
|
|
42
|
-
* const username = signal('')
|
|
43
|
-
* const inputBinding = bind(username)
|
|
44
|
-
*
|
|
45
|
-
* // When user types:
|
|
46
|
-
* inputBinding.value = 'alice' // Updates username signal!
|
|
47
|
-
* ```
|
|
48
|
-
*
|
|
49
|
-
* @example Chaining bindings
|
|
50
|
-
* ```ts
|
|
51
|
-
* const source = signal(0)
|
|
52
|
-
* const b1 = bind(source)
|
|
53
|
-
* const b2 = bind(b1) // Points to same source
|
|
54
|
-
*
|
|
55
|
-
* b2.value = 99
|
|
56
|
-
* console.log(source.value) // → 99
|
|
57
|
-
* ```
|
|
58
|
-
*/
|
|
59
21
|
export declare function bind<T>(source: WritableSignal<T>): Binding<T>;
|
|
60
22
|
export declare function bind<T>(source: ReadableSignal<T>): ReadonlyBinding<T>;
|
|
61
23
|
export declare function bind<T>(source: Binding<T>): Binding<T>;
|
|
62
24
|
export declare function bind<T>(source: ReadonlyBinding<T>): ReadonlyBinding<T>;
|
|
25
|
+
export declare function bind<T>(source: () => T): ReadonlyBinding<T>;
|
|
26
|
+
export declare function bind<T>(source: T): Binding<T>;
|
|
63
27
|
/**
|
|
64
28
|
* Create an explicitly read-only binding.
|
|
65
29
|
* Attempting to write will throw an error at runtime.
|
|
@@ -92,4 +56,31 @@ export declare function bindReadonly<T>(source: ReadableSignal<T> | Binding<T>):
|
|
|
92
56
|
* ```
|
|
93
57
|
*/
|
|
94
58
|
export declare function unwrap<T>(value: T | Binding<T> | ReadonlyBinding<T>): T;
|
|
59
|
+
/**
|
|
60
|
+
* Create multiple signals from an object.
|
|
61
|
+
* Returns an object with the same keys, where each value is a signal.
|
|
62
|
+
*
|
|
63
|
+
* This is a convenience helper for creating reactive props without
|
|
64
|
+
* declaring each signal individually.
|
|
65
|
+
*
|
|
66
|
+
* @example
|
|
67
|
+
* ```ts
|
|
68
|
+
* // Instead of:
|
|
69
|
+
* const content = signal('hello')
|
|
70
|
+
* const width = signal(40)
|
|
71
|
+
* const visible = signal(true)
|
|
72
|
+
*
|
|
73
|
+
* // Do this:
|
|
74
|
+
* const ui = signals({ content: 'hello', width: 40, visible: true })
|
|
75
|
+
*
|
|
76
|
+
* // Pass to components:
|
|
77
|
+
* text({ content: ui.content }) // ui.content IS a Signal<string>
|
|
78
|
+
*
|
|
79
|
+
* // Update:
|
|
80
|
+
* ui.content.value = 'updated' // Works!
|
|
81
|
+
* ```
|
|
82
|
+
*/
|
|
83
|
+
export declare function signals<T extends Record<string, unknown>>(initial: T): {
|
|
84
|
+
[K in keyof T]: WritableSignal<T[K]>;
|
|
85
|
+
};
|
|
95
86
|
//# sourceMappingURL=bind.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bind.d.ts","sourceRoot":"","sources":["../../src/primitives/bind.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"bind.d.ts","sourceRoot":"","sources":["../../src/primitives/bind.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAU,MAAM,kBAAkB,CAAA;AAqB9E;;;GAGG;AACH,MAAM,WAAW,OAAO,CAAC,CAAC;IACxB,IAAI,KAAK,IAAI,CAAC,CAAA;IACd,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,EAAC;CAChB;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe,CAAC,CAAC;IAChC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAA;CAClB;AAQD;;GAEG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC,CAEnE;AA0DD,wBAAgB,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;AAC9D,wBAAgB,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAAA;AACtE,wBAAgB,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;AACvD,wBAAgB,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAAA;AACvE,wBAAgB,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAAA;AAC5D,wBAAgB,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;AA2D9C;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAQ1F;AAMD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,GAAG,CAAC,CAKvE;AAMD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,OAAO,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACvD,OAAO,EAAE,CAAC,GACT;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,CAU1C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"derived.d.ts","sourceRoot":"","sources":["../../src/primitives/derived.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"derived.d.ts","sourceRoot":"","sources":["../../src/primitives/derived.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AA+C9E,MAAM,WAAW,cAAc,CAAC,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAA;CACnB;AAMD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CA4BrF;AAMD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAQxD;AAMD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAc1D;AAYD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAEzE;AAmBD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAarF;yBAbe,OAAO;;;AAyBvB;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAKxD"}
|
|
@@ -27,6 +27,11 @@ export interface SignalOptions<T> {
|
|
|
27
27
|
* ```
|
|
28
28
|
*/
|
|
29
29
|
export declare function signal<T>(initialValue: T, options?: SignalOptions<T>): WritableSignal<T>;
|
|
30
|
+
/**
|
|
31
|
+
* Get the internal Source from a signal wrapper.
|
|
32
|
+
* Used internally for cleanup registration.
|
|
33
|
+
*/
|
|
34
|
+
export declare function getSource<T>(sig: WritableSignal<T>): Source<T> | undefined;
|
|
30
35
|
export declare function setProxyFn(fn: <T extends object>(value: T) => T): void;
|
|
31
36
|
/**
|
|
32
37
|
* Create a deeply reactive state object
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signal.d.ts","sourceRoot":"","sources":["../../src/primitives/signal.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"signal.d.ts","sourceRoot":"","sources":["../../src/primitives/signal.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAetE,MAAM,WAAW,aAAa,CAAC,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAA;CACnB;AAED;;;GAGG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAShF;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAE3D;AAMD,MAAM,WAAW,aAAa,CAAC,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAA;CACnB;AAeD;;;;;;;;;;GAUG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAiBxF;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,SAAS,CAE1E;AASD,wBAAgB,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,IAAI,CAEtE;AAED;;;;;;;;;GASG;AACH,wBAAgB,KAAK,CAAC,CAAC,SAAS,MAAM,EAAE,YAAY,EAAE,CAAC,GAAG,CAAC,CAK1D;AAMD;;;;;;;;;;GAUG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAE9D"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rlabs-inc/signals",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.0",
|
|
4
4
|
"description": "Production-grade fine-grained reactivity for TypeScript. A complete standalone mirror of Svelte 5's reactivity system - signals, effects, derived values, deep reactivity, reactive collections, and reactive bindings.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.mjs",
|