@fluixi/reactive 1.0.0-alpha.53

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.
Files changed (176) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +343 -0
  3. package/dist/cdn/reactive.cjs +1 -0
  4. package/dist/cdn/reactive.d.ts +11 -0
  5. package/dist/cdn/reactive.d.ts.map +1 -0
  6. package/dist/cdn/reactive.global.js +1 -0
  7. package/dist/cdn/reactive.js +10 -0
  8. package/dist/cdn/reactive.mjs +1 -0
  9. package/dist/cdn/signal.cjs +1 -0
  10. package/dist/cdn/signal.d.ts +19 -0
  11. package/dist/cdn/signal.d.ts.map +1 -0
  12. package/dist/cdn/signal.global.js +1 -0
  13. package/dist/cdn/signal.js +18 -0
  14. package/dist/cdn/signal.mjs +1 -0
  15. package/dist/index.cjs +1 -0
  16. package/dist/index.d.ts +2 -0
  17. package/dist/index.d.ts.map +1 -0
  18. package/dist/index.js +1 -0
  19. package/dist/index.mjs +1 -0
  20. package/dist/lib/index.cjs +1 -0
  21. package/dist/lib/index.d.ts +5 -0
  22. package/dist/lib/index.d.ts.map +1 -0
  23. package/dist/lib/index.js +4 -0
  24. package/dist/lib/index.mjs +1 -0
  25. package/dist/lib/observable/index.cjs +1 -0
  26. package/dist/lib/observable/index.d.ts +4 -0
  27. package/dist/lib/observable/index.d.ts.map +1 -0
  28. package/dist/lib/observable/index.js +3 -0
  29. package/dist/lib/observable/index.mjs +1 -0
  30. package/dist/lib/observable/observable.cjs +1 -0
  31. package/dist/lib/observable/observable.d.ts +383 -0
  32. package/dist/lib/observable/observable.d.ts.map +1 -0
  33. package/dist/lib/observable/observable.js +339 -0
  34. package/dist/lib/observable/observable.mjs +1 -0
  35. package/dist/lib/observable/subscription.cjs +1 -0
  36. package/dist/lib/observable/subscription.d.ts +70 -0
  37. package/dist/lib/observable/subscription.d.ts.map +1 -0
  38. package/dist/lib/observable/subscription.js +190 -0
  39. package/dist/lib/observable/subscription.mjs +1 -0
  40. package/dist/lib/observable/types.cjs +1 -0
  41. package/dist/lib/observable/types.d.ts +44 -0
  42. package/dist/lib/observable/types.d.ts.map +1 -0
  43. package/dist/lib/observable/types.js +1 -0
  44. package/dist/lib/observable/types.mjs +0 -0
  45. package/dist/lib/signal/cached-resource.cjs +1 -0
  46. package/dist/lib/signal/cached-resource.d.ts +94 -0
  47. package/dist/lib/signal/cached-resource.d.ts.map +1 -0
  48. package/dist/lib/signal/cached-resource.js +257 -0
  49. package/dist/lib/signal/cached-resource.mjs +1 -0
  50. package/dist/lib/signal/graph/children.cjs +1 -0
  51. package/dist/lib/signal/graph/children.d.ts +2 -0
  52. package/dist/lib/signal/graph/children.d.ts.map +1 -0
  53. package/dist/lib/signal/graph/children.js +30 -0
  54. package/dist/lib/signal/graph/children.mjs +1 -0
  55. package/dist/lib/signal/graph/compat.cjs +1 -0
  56. package/dist/lib/signal/graph/compat.d.ts +64 -0
  57. package/dist/lib/signal/graph/compat.d.ts.map +1 -0
  58. package/dist/lib/signal/graph/compat.js +178 -0
  59. package/dist/lib/signal/graph/compat.mjs +1 -0
  60. package/dist/lib/signal/graph/core.cjs +1 -0
  61. package/dist/lib/signal/graph/core.d.ts +95 -0
  62. package/dist/lib/signal/graph/core.d.ts.map +1 -0
  63. package/dist/lib/signal/graph/core.js +254 -0
  64. package/dist/lib/signal/graph/core.mjs +1 -0
  65. package/dist/lib/signal/graph/derived.cjs +1 -0
  66. package/dist/lib/signal/graph/derived.d.ts +14 -0
  67. package/dist/lib/signal/graph/derived.d.ts.map +1 -0
  68. package/dist/lib/signal/graph/derived.js +81 -0
  69. package/dist/lib/signal/graph/derived.mjs +1 -0
  70. package/dist/lib/signal/graph/detect.cjs +1 -0
  71. package/dist/lib/signal/graph/detect.d.ts +16 -0
  72. package/dist/lib/signal/graph/detect.d.ts.map +1 -0
  73. package/dist/lib/signal/graph/detect.js +36 -0
  74. package/dist/lib/signal/graph/detect.mjs +1 -0
  75. package/dist/lib/signal/graph/error-boundary.cjs +1 -0
  76. package/dist/lib/signal/graph/error-boundary.d.ts +16 -0
  77. package/dist/lib/signal/graph/error-boundary.d.ts.map +1 -0
  78. package/dist/lib/signal/graph/error-boundary.js +34 -0
  79. package/dist/lib/signal/graph/error-boundary.mjs +1 -0
  80. package/dist/lib/signal/graph/index.cjs +1 -0
  81. package/dist/lib/signal/graph/index.d.ts +21 -0
  82. package/dist/lib/signal/graph/index.d.ts.map +1 -0
  83. package/dist/lib/signal/graph/index.js +20 -0
  84. package/dist/lib/signal/graph/index.mjs +1 -0
  85. package/dist/lib/signal/graph/resource.cjs +1 -0
  86. package/dist/lib/signal/graph/resource.d.ts +36 -0
  87. package/dist/lib/signal/graph/resource.d.ts.map +1 -0
  88. package/dist/lib/signal/graph/resource.js +156 -0
  89. package/dist/lib/signal/graph/resource.mjs +1 -0
  90. package/dist/lib/signal/graph/runtime.cjs +1 -0
  91. package/dist/lib/signal/graph/runtime.d.ts +56 -0
  92. package/dist/lib/signal/graph/runtime.d.ts.map +1 -0
  93. package/dist/lib/signal/graph/runtime.js +277 -0
  94. package/dist/lib/signal/graph/runtime.mjs +1 -0
  95. package/dist/lib/signal/graph/signal-next.cjs +1 -0
  96. package/dist/lib/signal/graph/signal-next.d.ts +37 -0
  97. package/dist/lib/signal/graph/signal-next.d.ts.map +1 -0
  98. package/dist/lib/signal/graph/signal-next.js +41 -0
  99. package/dist/lib/signal/graph/signal-next.mjs +1 -0
  100. package/dist/lib/signal/graph/ssr-hooks.cjs +1 -0
  101. package/dist/lib/signal/graph/ssr-hooks.d.ts +28 -0
  102. package/dist/lib/signal/graph/ssr-hooks.d.ts.map +1 -0
  103. package/dist/lib/signal/graph/ssr-hooks.js +45 -0
  104. package/dist/lib/signal/graph/ssr-hooks.mjs +1 -0
  105. package/dist/lib/signal/graph/state.cjs +1 -0
  106. package/dist/lib/signal/graph/state.d.ts +43 -0
  107. package/dist/lib/signal/graph/state.d.ts.map +1 -0
  108. package/dist/lib/signal/graph/state.js +37 -0
  109. package/dist/lib/signal/graph/state.mjs +1 -0
  110. package/dist/lib/signal/graph/suspense.cjs +1 -0
  111. package/dist/lib/signal/graph/suspense.d.ts +13 -0
  112. package/dist/lib/signal/graph/suspense.d.ts.map +1 -0
  113. package/dist/lib/signal/graph/suspense.js +36 -0
  114. package/dist/lib/signal/graph/suspense.mjs +1 -0
  115. package/dist/lib/signal/index-legacy.cjs +1 -0
  116. package/dist/lib/signal/index-legacy.d.ts +12 -0
  117. package/dist/lib/signal/index-legacy.d.ts.map +1 -0
  118. package/dist/lib/signal/index-legacy.js +11 -0
  119. package/dist/lib/signal/index-legacy.mjs +1 -0
  120. package/dist/lib/signal/index.cjs +1 -0
  121. package/dist/lib/signal/index.d.ts +12 -0
  122. package/dist/lib/signal/index.d.ts.map +1 -0
  123. package/dist/lib/signal/index.js +11 -0
  124. package/dist/lib/signal/index.mjs +1 -0
  125. package/dist/lib/signal/list.cjs +1 -0
  126. package/dist/lib/signal/list.d.ts +39 -0
  127. package/dist/lib/signal/list.d.ts.map +1 -0
  128. package/dist/lib/signal/list.js +172 -0
  129. package/dist/lib/signal/list.mjs +1 -0
  130. package/dist/lib/signal/signal.cjs +1 -0
  131. package/dist/lib/signal/signal.d.ts +295 -0
  132. package/dist/lib/signal/signal.d.ts.map +1 -0
  133. package/dist/lib/signal/signal.js +1219 -0
  134. package/dist/lib/signal/signal.mjs +1 -0
  135. package/dist/lib/signal/types.cjs +1 -0
  136. package/dist/lib/signal/types.d.ts +133 -0
  137. package/dist/lib/signal/types.d.ts.map +1 -0
  138. package/dist/lib/signal/types.js +38 -0
  139. package/dist/lib/signal/types.mjs +1 -0
  140. package/dist/lib/signal/utilities.cjs +1 -0
  141. package/dist/lib/signal/utilities.d.ts +355 -0
  142. package/dist/lib/signal/utilities.d.ts.map +1 -0
  143. package/dist/lib/signal/utilities.js +504 -0
  144. package/dist/lib/signal/utilities.mjs +1 -0
  145. package/dist/lib/store/index.cjs +1 -0
  146. package/dist/lib/store/index.d.ts +14 -0
  147. package/dist/lib/store/index.d.ts.map +1 -0
  148. package/dist/lib/store/index.js +11 -0
  149. package/dist/lib/store/index.mjs +1 -0
  150. package/dist/lib/store/setter.types.cjs +1 -0
  151. package/dist/lib/store/setter.types.d.ts +79 -0
  152. package/dist/lib/store/setter.types.d.ts.map +1 -0
  153. package/dist/lib/store/setter.types.js +65 -0
  154. package/dist/lib/store/setter.types.mjs +0 -0
  155. package/dist/lib/store/store.cjs +1 -0
  156. package/dist/lib/store/store.d.ts +86 -0
  157. package/dist/lib/store/store.d.ts.map +1 -0
  158. package/dist/lib/store/store.js +442 -0
  159. package/dist/lib/store/store.mjs +1 -0
  160. package/dist/lib/store/types.cjs +1 -0
  161. package/dist/lib/store/types.d.ts +57 -0
  162. package/dist/lib/store/types.d.ts.map +1 -0
  163. package/dist/lib/store/types.js +1 -0
  164. package/dist/lib/store/types.mjs +0 -0
  165. package/dist/lib/store/utils.cjs +1 -0
  166. package/dist/lib/store/utils.d.ts +13 -0
  167. package/dist/lib/store/utils.d.ts.map +1 -0
  168. package/dist/lib/store/utils.js +29 -0
  169. package/dist/lib/store/utils.mjs +1 -0
  170. package/dist/lib/subject.cjs +1 -0
  171. package/dist/lib/subject.d.ts +14 -0
  172. package/dist/lib/subject.d.ts.map +1 -0
  173. package/dist/lib/subject.js +169 -0
  174. package/dist/lib/subject.mjs +1 -0
  175. package/dist/tsconfig.lib.tsbuildinfo +1 -0
  176. package/package.json +114 -0
@@ -0,0 +1,79 @@
1
+ import { GetAtPath } from '@fluixi/utils/object';
2
+ export type Primitive = string | number | boolean | bigint | symbol | null | undefined | Date | Function;
3
+ export type AnyObject = Record<string, any>;
4
+ export type Callback<T> = (prev: T) => T;
5
+ export interface RangeSelector {
6
+ from?: number;
7
+ to?: number;
8
+ by?: number;
9
+ }
10
+ type Decrement = [never, 0, 1, 2, 3, 4, 5, 6];
11
+ type ArrayElement<T> = T extends readonly (infer U)[] ? U : T extends (infer U)[] ? U : never;
12
+ type SelectorInternal<T, Prefix extends string = '', Depth extends number = 4> = Depth extends 0 ? never : T extends Primitive ? never : T extends readonly (infer U)[] ? `${Prefix}[*]` | `${Prefix}[${number}]` | SelectorInternal<U, `${Prefix}[*].`, Decrement[Depth]> : T extends object ? {
13
+ [K in keyof T & string]: `${Prefix}${K}` | SelectorInternal<T[K], `${Prefix}${K}.`, Decrement[Depth]>;
14
+ }[keyof T & string] : never;
15
+ /**
16
+ * Cached selector type.
17
+ *
18
+ * Examples:
19
+ *
20
+ * users
21
+ * users[*]
22
+ * users[0]
23
+ * users[*].name
24
+ * users[*].posts[*].title
25
+ */
26
+ export type Selector<T> = SelectorInternal<T>;
27
+ type _ResolvePath<T, P extends string> = P extends `${infer Head}.${infer Tail}` ? ResolveSegment<T, Head> extends infer Next ? _ResolvePath<Next, Tail> : never : P extends `${infer Left}[${infer Index}]${infer Right}` ? Left extends '' ? ResolveSegment<T, `[${Index}]`> extends infer Next ? _ResolvePath<Next, Right extends `.${infer R}` ? R : Right> : never : ResolveSegment<T, Left> extends infer Next ? _ResolvePath<Next, `[${Index}]${Right}`> : never : ResolveSegment<T, P>;
28
+ type ResolvePath<T, P extends string> = _ResolvePath<T, P> & GetAtPath<T, P>;
29
+ type ResolveSegment<T, Segment extends string> = Segment extends keyof T ? T[Segment] : Segment extends '[*]' ? T extends readonly (infer U)[] ? U[] : never : Segment extends `[${number}]` ? T extends readonly (infer U)[] ? U : never : T;
30
+ export type PathValue<T, P extends string> = ResolvePath<T, P>;
31
+ export type UpdateValue<V> = V extends Primitive ? V | ((prev: V) => V) : V | Partial<V> | ((prev: V) => V);
32
+ export type Predicate<T> = (item: T, index: number) => boolean;
33
+ export type ArrayStoreMethods<T extends readonly any[]> = {
34
+ push(...items: ArrayElement<T>[]): void;
35
+ pop(): ArrayElement<T> | undefined;
36
+ shift(): ArrayElement<T> | undefined;
37
+ unshift(...items: ArrayElement<T>[]): void;
38
+ insert(index: number, value: ArrayElement<T>): void;
39
+ remove(index: number): void;
40
+ move(from: number, to: number): void;
41
+ reverse(): void;
42
+ sort(compareFn?: (a: ArrayElement<T>, b: ArrayElement<T>) => number): void;
43
+ splice(start: number, deleteCount?: number, ...items: ArrayElement<T>[]): ArrayElement<T>[];
44
+ };
45
+ type RootSetterArgs<T> = [value: UpdateValue<T>];
46
+ type PathSetterArgs<T> = [
47
+ key: Selector<T>,
48
+ value: UpdateValue<PathValue<T, Selector<T>>>
49
+ ];
50
+ type IndexSetterArgs<T> = [key: Selector<T>, index: number, value: any];
51
+ type IndicesSetterArgs<T> = [
52
+ key: Selector<T>,
53
+ indices: readonly number[],
54
+ value: any
55
+ ];
56
+ type RangeSetterArgs<T> = [key: Selector<T>, range: RangeSelector, value: any];
57
+ type PredicateSetterArgs<T> = [
58
+ key: Selector<T>,
59
+ predicate: Predicate<any>,
60
+ value: any
61
+ ];
62
+ type PropertySetterArgs<T> = [
63
+ key: Selector<T>,
64
+ index: number,
65
+ property: string,
66
+ value: any
67
+ ];
68
+ export type SetterArgs<T> = RootSetterArgs<T> | PathSetterArgs<T> | IndexSetterArgs<T> | IndicesSetterArgs<T> | RangeSetterArgs<T> | PredicateSetterArgs<T> | PropertySetterArgs<T>;
69
+ export interface SetStoreFunction<T> {
70
+ (value: UpdateValue<T>): void;
71
+ <P extends string>(path: P & Selector<T>, value: ResolvePath<T, P> | Partial<ResolvePath<T, P>> | GetAtPath<T, P>): void;
72
+ <P extends string>(path: P & Selector<T>, updater: (prev: ResolvePath<T, P>) => ResolvePath<T, P>): void;
73
+ <P extends string, K extends keyof ArrayElement<ResolvePath<T, P>>>(path: P & Selector<T>, index: number | number[] | RangeSelector | Predicate<ArrayElement<ResolvePath<T, P>>>, column: K, value: UpdateValue<ArrayElement<ResolvePath<T, P>>[K]>): void;
74
+ <P extends string>(path: P & Selector<T>, index: number | number[] | RangeSelector | Predicate<ArrayElement<ResolvePath<T, P>>>, value: UpdateValue<ArrayElement<ResolvePath<T, P>>>): void;
75
+ <K1 extends keyof T, K2 extends keyof T[K1], V extends T[K1][K2]>(k1: K1, k2: K2, value: UpdateValue<V>): void;
76
+ }
77
+ export type SetStore<T> = SetStoreFunction<T> & (T extends readonly any[] ? ArrayStoreMethods<T> : {});
78
+ export {};
79
+ //# sourceMappingURL=setter.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setter.types.d.ts","sourceRoot":"","sources":["../../../src/lib/store/setter.types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ export {};
2
+ /* ============================================================
3
+ * Example
4
+ * ============================================================ */
5
+ /*
6
+
7
+ type State = {
8
+ users: {
9
+ id: number;
10
+ name: string;
11
+ posts: {
12
+ title: string;
13
+ }[];
14
+ }[];
15
+
16
+ count: number;
17
+ };
18
+
19
+ declare const set: SetStoreFunction<State>;
20
+
21
+ set({
22
+ count: 5
23
+ });
24
+
25
+ set(
26
+ "count",
27
+ 5
28
+ );
29
+
30
+ set(
31
+ "users[*].name",
32
+ "John"
33
+ );
34
+
35
+ set(
36
+ "users[0].posts[*].title",
37
+ "Hello"
38
+ );
39
+
40
+ set(
41
+ "users",
42
+ 0,
43
+ {
44
+ id: 1,
45
+ name: "John"
46
+ }
47
+ );
48
+
49
+ set(
50
+ "users",
51
+ [0, 2, 4],
52
+ {
53
+ name: "Updated"
54
+ }
55
+ );
56
+
57
+ set(
58
+ "users",
59
+ (user) => user.id > 5,
60
+ {
61
+ name: "Filtered"
62
+ }
63
+ );
64
+
65
+ */
File without changes
@@ -0,0 +1 @@
1
+ "use strict";var h=Object.defineProperty;var V=Object.getOwnPropertyDescriptor;var z=Object.getOwnPropertyNames;var C=Object.prototype.hasOwnProperty;var F=(e,t)=>{for(var n in t)h(e,n,{get:t[n],enumerable:!0})},X=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of z(t))!C.call(e,o)&&o!==n&&h(e,o,{get:()=>t[o],enumerable:!(r=V(t,o))||r.enumerable});return e};var q=e=>X(h({},"__esModule",{value:!0}),e);var at={};F(at,{$HAS:()=>O,$NAME:()=>L,$NODE:()=>f,$RAW:()=>d,$SELF:()=>g,$STORE:()=>Y,$TRACK:()=>x,Store:()=>y,StoreAPI:()=>it,createComputedStore:()=>Z,createMutableStore:()=>B,createStore:()=>W,createStoreEffect:()=>k,createStoreMemo:()=>tt,getNode:()=>rt,getStoreNode:()=>ot,isStore:()=>nt,isStoreProxy:()=>P,modifiable:()=>st,untrackStore:()=>H,unwrap:()=>p,wrap:()=>et});module.exports=q(at);var s=require("@fluixi/reactive/signal"),d=Symbol("store-raw"),f=Symbol("store-node"),O=Symbol("store-has"),g=Symbol("store-self"),x=Symbol("store-track"),L=Symbol("store-name"),Y=Symbol("store-store"),v=new WeakMap,N=new WeakMap;function _(e){let[t,n]=(0,s.createSignal)(e),r=t;return r.$=n,r}function T(e){let t=v.get(e);return t||v.set(e,t={keys:new Map}),t}function U(e,t,n){let r=e.keys.get(t);return r||e.keys.set(t,r=_(n)),r}function $(e){let t=T(e);(t.all||(t.all=_()))()}function M(e,t){e.$(typeof t=="function"?()=>t:t)}function K(e){if(e==null||typeof e!="object")return!1;if(Array.isArray(e))return!0;let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null}function m(e){if(!K(e))return e;let t=N.get(e);if(t)return t;let n=new Proxy(e,G);return N.set(e,n),n}var G={get(e,t,n){if(t===d||t===f)return e;if(t===s.$PROXY)return n;if(t===O)return a=>a in e;if(t==="__proxy")return!0;if(t===x||t===g)return $(e),n;let r=e[t];if(typeof r=="function"&&!Object.prototype.hasOwnProperty.call(e,t))return r;let o=Object.getOwnPropertyDescriptor(e,t);if(o&&o.get)return o.get.call(n);let i=U(T(e),t,r)();return K(i)?m(i):i},set(){return!0},deleteProperty(e,t){return t in e&&l(e,t,void 0),!0},has(e,t){return t===d||t===s.$PROXY||t===f||t===O||t===g||t===x?!0:(U(T(e),t,e[t])(),t in e)},ownKeys(e){return $(e),Reflect.ownKeys(e)},getOwnPropertyDescriptor(e,t){return Reflect.getOwnPropertyDescriptor(e,t)}};function l(e,t,n){if(e[t]===n&&(n!==void 0||t in e))return;let o=Array.isArray(e),i=o?e.length:0;n===void 0?delete e[t]:e[t]=n;let a=T(e),c=a.keys.get(t);if(c&&M(c,n),o&&e.length!==i){let b=a.keys.get("length");b&&M(b,e.length)}a.all&&a.all.$(void 0)}function D(e,t){return typeof e=="function"?e(t):e}function j(e,t){for(let n of Object.keys(t)){let r=t[n],o=e[n];r&&typeof r=="object"&&!Array.isArray(r)&&o&&typeof o=="object"&&!Array.isArray(o)?j(o,r):l(e,n,r)}}function w(e){let t=[],n=e.replace(/\[([^\]]*)\]/g,".$1");for(let r of n.split("."))r.length&&t.push(r);return t}function R(e,t,n){let r=t.length-1;for(let i=0;i<r;i++){let a=t[i];if(a==="*"){let b=t.slice(i+1);if(Array.isArray(e))for(let S=0;S<e.length;S++)R(e[S],b,n);return}let c=e[a];(c==null||typeof c!="object")&&(c=/^\d+$/.test(t[i+1])?[]:{},l(e,a,c)),e=c}let o=t[r];if(o==="*"){if(Array.isArray(e))for(let i=0;i<e.length;i++)l(e,i,D(n,e[i]));return}l(e,o,D(n,e[o]))}function A(e,t,n){R(e,w(t),n)}function J(e,t){let n=t[0];if(typeof n=="function"&&t.length===1){let r=n(e);r&&r!==e&&j(e,r);return}if(Array.isArray(n)&&t.length===1){for(let r of n)Array.isArray(r)&&A(e,r[0],r[1]);return}if(n&&typeof n=="object"&&!Array.isArray(n)&&t.length===1){j(e,n);return}if(Array.isArray(t[1])&&t.length>=3){A(e,`${n}.${t[1].join(".")}`,t[2]);return}A(e,String(n),t[1])}function I(e){if(e==null||typeof e!="object")return e;if(Array.isArray(e))return e.map(I);let t={};for(let n of Object.keys(e))t[n]=I(e[n]);return t}function u(e,t){let n=e;for(let r of w(t)){if(n==null)return;n=n[r]}return n}var y=class{constructor(t,n={immutable:!0}){this.options=n;this.root=t,this.set=((...r)=>(0,s.batch)(()=>J(this.root,r)))}get state(){return m(this.root)}get proxy(){return m(this.root)}get accessor(){return(()=>m(this.root))}unwrap(){return this.root}getNode(t){return this.root&&this.root[t]}get(t){if(t==null||t==="")return p(this.state);let n=this.state;for(let r of w(t)){if(n==null)return;n=n[r]}return p(n)}select(t){return(0,s.createMemo)(()=>t(this.state))}subscribe(t){return(0,s.createEffect)(()=>t(this.state))}watch(t,n){let r;return(0,s.createEffect)(()=>{let o=t(this.state);Object.is(o,r)||(n(o,r),r=o)})}reactive(t){return(0,s.createMemo)(()=>this.state[t])}produce(t){this.set((n=>{let r=I(n);return t(r),r}))}reconcile(t,n={}){this.set(t)}push(t,...n){let r=u(this.root,t);this.set(t,r.concat(n))}pop(t){let n=u(this.root,t).slice(),r=n.pop();return this.set(t,n),r}shift(t){let n=u(this.root,t).slice(),r=n.shift();return this.set(t,n),r}splice(t,n,r,...o){let i=u(this.root,t).slice(),a=i.splice(n,r,...o);return this.set(t,i),a}insert(t,n,r){let o=u(this.root,t).slice();o.splice(n,0,r),this.set(t,o)}removeAt(t,n){let r=u(this.root,t).slice(),o=r.splice(n,1);return this.set(t,r),o}toObservable(){let[t]=(0,s.createSignal)(this.state);return t.toObservable()}dispose(){}},Q=["get","select","watch","subscribe","produce","reconcile","push","pop","shift","splice","insert","removeAt","unwrap","toObservable"];function E(e,t){for(let n of Q)e[n]=t[n].bind(t);e.$=t.reactive.bind(t)}function W(e,t={immutable:!0}){let n=new y(e,t);return E(n.set,n),[n.proxy,n.set]}function B(e,t={}){return new y(e,{...t,immutable:!1})}function Z(e,t={}){let n=new y(e(),t);return(0,s.createEffect)(()=>n.set(e())),n}function k(e,t,n){return(0,s.createEffect)(()=>n(t(e)))}function tt(e,t,n){return(0,s.createMemo)(()=>t(e),void 0,n)}function et(e,t={}){let n=new y(e,t),r=(()=>n.proxy);return E(r,n),r}function p(e){if(e==null||typeof e!="object")return e;let t=e[d];return t!==void 0?t:e}function H(e){return(0,s.untrack)(()=>p(e))}function nt(e){return P(e)}function rt(e){return P(e)?e[f]:null}function ot(e){return e&&typeof e=="object"&&f in e?e[f]:null}function P(e){return!!e&&typeof e=="object"&&(s.$PROXY in e||e.__proxy===!0)}function st(e){return e}var it=Object.freeze({createStore:W,createMutableStore:B,batch:s.batch,unwrap:p,untrackStore:H});
@@ -0,0 +1,86 @@
1
+ import type { Observable } from '../observable/observable.js';
2
+ import { type Accessor, type MemoOptions, batch } from '@fluixi/reactive/signal';
3
+ import type { SetStoreFunction as StoreSetter } from './setter.types.js';
4
+ import type { ReconcileOptions } from './types.js';
5
+ /**
6
+ * Fine-grained reactive store.
7
+ *
8
+ * State stays a plain object/array tree. Every object gets a lazily-grown map of
9
+ * per-key signals (a NodeStore, kept in a WeakMap off the raw target) plus one
10
+ * structural signal for key iteration. Reading a key through the proxy subscribes
11
+ * to that key's signal; the setter writes straight to the raw target and pokes
12
+ * only the keys that actually changed. No snapshots, no diffing. Child objects are
13
+ * proxied on first read and cached, so a given object always yields the same proxy.
14
+ */
15
+ type Primitive = string | number | boolean | bigint | symbol | undefined | null;
16
+ type BrowserNativeObject = Date | RegExp | Blob;
17
+ type ImmutablePrimitive = Primitive | BrowserNativeObject;
18
+ type _Immutable<T> = T extends ImmutablePrimitive ? T : T extends Array<infer U> ? ReadonlyArray<_Immutable<U>> : T extends Map<infer K, infer V> ? ReadonlyMap<_Immutable<K>, _Immutable<V>> : T extends Set<infer M> ? ReadonlySet<_Immutable<M>> : {
19
+ readonly [K in keyof T]: _Immutable<T[K]>;
20
+ };
21
+ type Immutable<T> = _Immutable<T> & {
22
+ __track: T;
23
+ [key: symbol]: any;
24
+ };
25
+ interface StoreOptions<T> {
26
+ name?: string;
27
+ immutable?: boolean;
28
+ equals?: (a: T, b: T) => boolean;
29
+ }
30
+ interface StoreAccessor<T> extends Accessor<T> {
31
+ }
32
+ export declare const $RAW: unique symbol, $NODE: unique symbol, $HAS: unique symbol, $SELF: unique symbol, $TRACK: unique symbol, $NAME: unique symbol, $STORE: unique symbol;
33
+ declare class Store<T> {
34
+ private options;
35
+ private root;
36
+ set: StoreSetter<T>;
37
+ constructor(initialState: T, options?: StoreOptions<T>);
38
+ get state(): Immutable<T>;
39
+ get proxy(): Immutable<T>;
40
+ get accessor(): Accessor<T>;
41
+ unwrap(): T;
42
+ getNode(key: PropertyKey): any;
43
+ get(path?: string): any;
44
+ select<U>(selector: (state: Immutable<T>) => U): () => U;
45
+ subscribe(listener: (state: Immutable<T>) => void): () => void;
46
+ watch<U>(selector: (state: Immutable<T>) => U, effect: (value: U, prev: U | undefined) => void): () => void;
47
+ reactive(key: string): Accessor<any>;
48
+ produce(producer: (draft: T) => void): void;
49
+ reconcile(value: T | Partial<T>, _options?: ReconcileOptions): void;
50
+ push(path: string, ...items: any[]): void;
51
+ pop(path: string): any;
52
+ shift(path: string): any;
53
+ splice(path: string, start: number, deleteCount: number, ...items: any[]): any[];
54
+ insert(path: string, index: number, value: any): void;
55
+ removeAt(path: string, index: number): any[];
56
+ toObservable(): Observable<T>;
57
+ dispose(): void;
58
+ }
59
+ declare function createStore<T>(initialState: T, options?: StoreOptions<T>): [Immutable<T>, Store<T>['set']];
60
+ declare function createMutableStore<T>(initialState: T, options?: Omit<StoreOptions<T>, 'immutable'>): Store<T>;
61
+ /** A store whose state is derived from a reactive function. */
62
+ declare function createComputedStore<T>(fn: () => T, options?: StoreOptions<T>): Store<T>;
63
+ /** Runs an effect over a slice of store state. */
64
+ declare function createStoreEffect<T, U>(state: Immutable<T>, selector: (state: Immutable<T>) => U, effect: (value: U) => void | (() => void)): () => void;
65
+ /** Memoises a slice of store state. */
66
+ declare function createStoreMemo<T, U>(store: Immutable<T>, selector: (state: Immutable<T>) => U, options?: MemoOptions<U>): () => U;
67
+ /** Wraps a value as an accessor carrying the store helper methods. */
68
+ declare function wrap<U extends object>(value: U, options?: StoreOptions<U>): Accessor<U>;
69
+ declare function unwrap<T>(item: T): T;
70
+ declare function untrackStore<T>(store: T): T;
71
+ type StoreWrap<T> = Store<T> | StoreAccessor<T> | (() => T);
72
+ export declare function isStore<T>(store: StoreWrap<T>): store is StoreAccessor<T>;
73
+ export declare function getNode<T>(store: StoreWrap<T>): Accessor<T> | null;
74
+ export declare function getStoreNode<T>(store: any): T | null;
75
+ export declare function isStoreProxy(value: any): boolean;
76
+ export declare function modifiable<T extends object>(value: T): T;
77
+ export declare const StoreAPI: Readonly<{
78
+ createStore: typeof createStore;
79
+ createMutableStore: typeof createMutableStore;
80
+ batch: typeof batch;
81
+ unwrap: typeof unwrap;
82
+ untrackStore: typeof untrackStore;
83
+ }>;
84
+ export { createStore, createMutableStore, createComputedStore, createStoreEffect, createStoreMemo, wrap, unwrap, untrackStore, Store, };
85
+ export type { StoreOptions, StoreSetter, Immutable, StoreAccessor };
86
+ //# sourceMappingURL=store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/lib/store/store.ts"],"names":[],"mappings":"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"}