cross-state 0.6.7 → 0.6.8

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 (141) hide show
  1. package/dist/cjs/hash.cjs +712 -0
  2. package/dist/cjs/hash.cjs.map +1 -0
  3. package/dist/cjs/immer.cjs +7 -2
  4. package/dist/cjs/immer.cjs.map +1 -1
  5. package/dist/cjs/index.cjs +341 -19
  6. package/dist/cjs/index.cjs.map +1 -1
  7. package/dist/cjs/react.cjs +289 -11
  8. package/dist/cjs/react.cjs.map +1 -1
  9. package/dist/es/hash.mjs +713 -0
  10. package/dist/es/hash.mjs.map +1 -0
  11. package/dist/es/{immer/immerActions.js → immer.mjs} +1 -1
  12. package/dist/es/immer.mjs.map +1 -0
  13. package/dist/es/{core/cache.js → index.mjs} +126 -8
  14. package/dist/es/index.mjs.map +1 -0
  15. package/dist/es/react.mjs +292 -0
  16. package/dist/es/react.mjs.map +1 -0
  17. package/package.json +1 -1
  18. package/dist/cjs/_virtual/use-sync-external-store-with-selector.development.cjs +0 -103
  19. package/dist/cjs/_virtual/use-sync-external-store-with-selector.development.cjs.map +0 -1
  20. package/dist/cjs/_virtual/use-sync-external-store-with-selector.development2.cjs +0 -5
  21. package/dist/cjs/_virtual/use-sync-external-store-with-selector.development2.cjs.map +0 -1
  22. package/dist/cjs/_virtual/use-sync-external-store-with-selector.production.min.cjs +0 -71
  23. package/dist/cjs/_virtual/use-sync-external-store-with-selector.production.min.cjs.map +0 -1
  24. package/dist/cjs/_virtual/use-sync-external-store-with-selector.production.min2.cjs +0 -5
  25. package/dist/cjs/_virtual/use-sync-external-store-with-selector.production.min2.cjs.map +0 -1
  26. package/dist/cjs/_virtual/with-selector.cjs +0 -12
  27. package/dist/cjs/_virtual/with-selector.cjs.map +0 -1
  28. package/dist/cjs/_virtual/with-selector2.cjs +0 -13
  29. package/dist/cjs/_virtual/with-selector2.cjs.map +0 -1
  30. package/dist/cjs/core/cache.cjs +0 -227
  31. package/dist/cjs/core/cache.cjs.map +0 -1
  32. package/dist/cjs/core/resourceGroup.cjs +0 -53
  33. package/dist/cjs/core/resourceGroup.cjs.map +0 -1
  34. package/dist/cjs/core/store.cjs +0 -259
  35. package/dist/cjs/core/store.cjs.map +0 -1
  36. package/dist/cjs/immer/immerActions.cjs +0 -10
  37. package/dist/cjs/immer/immerActions.cjs.map +0 -1
  38. package/dist/cjs/lib/calcDuration.cjs +0 -9
  39. package/dist/cjs/lib/calcDuration.cjs.map +0 -1
  40. package/dist/cjs/lib/calculationHelper.cjs +0 -140
  41. package/dist/cjs/lib/calculationHelper.cjs.map +0 -1
  42. package/dist/cjs/lib/callable.cjs +0 -11
  43. package/dist/cjs/lib/callable.cjs.map +0 -1
  44. package/dist/cjs/lib/clone.cjs +0 -19
  45. package/dist/cjs/lib/clone.cjs.map +0 -1
  46. package/dist/cjs/lib/debounce.cjs +0 -28
  47. package/dist/cjs/lib/debounce.cjs.map +0 -1
  48. package/dist/cjs/lib/equals.cjs +0 -5
  49. package/dist/cjs/lib/equals.cjs.map +0 -1
  50. package/dist/cjs/lib/forwardError.cjs +0 -9
  51. package/dist/cjs/lib/forwardError.cjs.map +0 -1
  52. package/dist/cjs/lib/hash.cjs +0 -19
  53. package/dist/cjs/lib/hash.cjs.map +0 -1
  54. package/dist/cjs/lib/instanceCache.cjs +0 -68
  55. package/dist/cjs/lib/instanceCache.cjs.map +0 -1
  56. package/dist/cjs/lib/makeSelector.cjs +0 -14
  57. package/dist/cjs/lib/makeSelector.cjs.map +0 -1
  58. package/dist/cjs/lib/propAccess.cjs +0 -66
  59. package/dist/cjs/lib/propAccess.cjs.map +0 -1
  60. package/dist/cjs/lib/queue.cjs +0 -61
  61. package/dist/cjs/lib/queue.cjs.map +0 -1
  62. package/dist/cjs/lib/standardMethods.cjs +0 -78
  63. package/dist/cjs/lib/standardMethods.cjs.map +0 -1
  64. package/dist/cjs/lib/throttle.cjs +0 -25
  65. package/dist/cjs/lib/throttle.cjs.map +0 -1
  66. package/dist/cjs/lib/trackingProxy.cjs +0 -39
  67. package/dist/cjs/lib/trackingProxy.cjs.map +0 -1
  68. package/dist/cjs/react/read.cjs +0 -15
  69. package/dist/cjs/react/read.cjs.map +0 -1
  70. package/dist/cjs/react/storeScope.cjs +0 -31
  71. package/dist/cjs/react/storeScope.cjs.map +0 -1
  72. package/dist/cjs/react/useCache.cjs +0 -31
  73. package/dist/cjs/react/useCache.cjs.map +0 -1
  74. package/dist/cjs/react/useProp.cjs +0 -9
  75. package/dist/cjs/react/useProp.cjs.map +0 -1
  76. package/dist/cjs/react/useStore.cjs +0 -51
  77. package/dist/cjs/react/useStore.cjs.map +0 -1
  78. package/dist/es/_virtual/use-sync-external-store-with-selector.development.js +0 -103
  79. package/dist/es/_virtual/use-sync-external-store-with-selector.development.js.map +0 -1
  80. package/dist/es/_virtual/use-sync-external-store-with-selector.development2.js +0 -5
  81. package/dist/es/_virtual/use-sync-external-store-with-selector.development2.js.map +0 -1
  82. package/dist/es/_virtual/use-sync-external-store-with-selector.production.min.js +0 -71
  83. package/dist/es/_virtual/use-sync-external-store-with-selector.production.min.js.map +0 -1
  84. package/dist/es/_virtual/use-sync-external-store-with-selector.production.min2.js +0 -5
  85. package/dist/es/_virtual/use-sync-external-store-with-selector.production.min2.js.map +0 -1
  86. package/dist/es/_virtual/with-selector.js +0 -11
  87. package/dist/es/_virtual/with-selector.js.map +0 -1
  88. package/dist/es/_virtual/with-selector2.js +0 -14
  89. package/dist/es/_virtual/with-selector2.js.map +0 -1
  90. package/dist/es/core/cache.js.map +0 -1
  91. package/dist/es/core/resourceGroup.js +0 -53
  92. package/dist/es/core/resourceGroup.js.map +0 -1
  93. package/dist/es/core/store.js +0 -259
  94. package/dist/es/core/store.js.map +0 -1
  95. package/dist/es/immer/immerActions.js.map +0 -1
  96. package/dist/es/immer.js +0 -5
  97. package/dist/es/immer.js.map +0 -1
  98. package/dist/es/index.js +0 -22
  99. package/dist/es/index.js.map +0 -1
  100. package/dist/es/lib/calcDuration.js +0 -9
  101. package/dist/es/lib/calcDuration.js.map +0 -1
  102. package/dist/es/lib/calculationHelper.js +0 -140
  103. package/dist/es/lib/calculationHelper.js.map +0 -1
  104. package/dist/es/lib/callable.js +0 -11
  105. package/dist/es/lib/callable.js.map +0 -1
  106. package/dist/es/lib/clone.js +0 -19
  107. package/dist/es/lib/clone.js.map +0 -1
  108. package/dist/es/lib/debounce.js +0 -28
  109. package/dist/es/lib/debounce.js.map +0 -1
  110. package/dist/es/lib/equals.js +0 -5
  111. package/dist/es/lib/equals.js.map +0 -1
  112. package/dist/es/lib/forwardError.js +0 -9
  113. package/dist/es/lib/forwardError.js.map +0 -1
  114. package/dist/es/lib/hash.js +0 -19
  115. package/dist/es/lib/hash.js.map +0 -1
  116. package/dist/es/lib/instanceCache.js +0 -68
  117. package/dist/es/lib/instanceCache.js.map +0 -1
  118. package/dist/es/lib/makeSelector.js +0 -14
  119. package/dist/es/lib/makeSelector.js.map +0 -1
  120. package/dist/es/lib/propAccess.js +0 -66
  121. package/dist/es/lib/propAccess.js.map +0 -1
  122. package/dist/es/lib/queue.js +0 -61
  123. package/dist/es/lib/queue.js.map +0 -1
  124. package/dist/es/lib/standardMethods.js +0 -78
  125. package/dist/es/lib/standardMethods.js.map +0 -1
  126. package/dist/es/lib/throttle.js +0 -25
  127. package/dist/es/lib/throttle.js.map +0 -1
  128. package/dist/es/lib/trackingProxy.js +0 -39
  129. package/dist/es/lib/trackingProxy.js.map +0 -1
  130. package/dist/es/react/read.js +0 -15
  131. package/dist/es/react/read.js.map +0 -1
  132. package/dist/es/react/storeScope.js +0 -31
  133. package/dist/es/react/storeScope.js.map +0 -1
  134. package/dist/es/react/useCache.js +0 -31
  135. package/dist/es/react/useCache.js.map +0 -1
  136. package/dist/es/react/useProp.js +0 -9
  137. package/dist/es/react/useProp.js.map +0 -1
  138. package/dist/es/react/useStore.js +0 -51
  139. package/dist/es/react/useStore.js.map +0 -1
  140. package/dist/es/react.js +0 -14
  141. package/dist/es/react.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"standardMethods.js","sources":["../../../src/lib/standardMethods.ts"],"sourcesContent":["import type { Store } from '../core/store';\nimport type { OptionalPropertyOf } from './typeHelpers';\n\ntype Function_ = (...args: any) => any;\n\nconst createArrayAction = <P extends keyof Array<any>>(prop: P) =>\n function arrayAction<T extends Array<any>>(\n this: Store<T>,\n ...args: T[P] extends Function_ ? Parameters<T[P]> : never\n ): T[P] extends Function_ ? ReturnType<T[P]> : never {\n const newArray = this.get().slice() as T;\n const result = (newArray[prop] as Function_)(...(args as any));\n this.set(newArray);\n return result;\n };\n\nexport const arrayMethods = {\n splice: createArrayAction('splice'),\n push: createArrayAction('push'),\n pop: createArrayAction('pop'),\n shift: createArrayAction('shift'),\n unshift: createArrayAction('unshift'),\n reverse: createArrayAction('reverse'),\n sort: createArrayAction('sort'),\n};\n\nexport const recordMethods = {\n // set<T extends Record<any, any>, P extends Path<T>>(\n // this: Store<T>,\n // path: P,\n // value: Update<Value<T, P>>,\n // ) {\n // if (value instanceof Function) {\n // value = value(get(this.get(), path));\n // }\n\n // this.set(set(this.get(), path, value));\n // return this;\n // },\n\n delete<T extends Record<any, any>, K extends OptionalPropertyOf<T>>(this: Store<T>, key: K) {\n const copy = { ...this.get() };\n delete copy[key];\n this.set(copy);\n },\n\n clear<T extends Record<any, any>>(this: Store<Partial<T>>) {\n this.set({} as T);\n },\n};\n\nexport const mapMethods = {\n // set<K, V>(this: Store<Map<K, V>>, key: K, value: UpdateFrom<V, [V | undefined]>) {\n // if (value instanceof Function) {\n // value = value(this.get().get(key));\n // }\n\n // const newMap = new Map(this.get());\n // newMap.set(key, value);\n // this.set(newMap);\n // return this;\n // },\n\n delete<K, V>(this: Store<Map<K, V>>, key: K) {\n const newMap = new Map(this.get());\n const result = newMap.delete(key);\n this.set(newMap);\n return result;\n },\n\n clear<K, V>(this: Store<Map<K, V>>) {\n this.set(new Map());\n },\n};\n\nexport const setMethods = {\n add<T>(this: Store<Set<T>>, value: T) {\n const newSet = new Set(this.get());\n newSet.add(value);\n this.set(newSet);\n },\n\n delete<T>(this: Store<Set<T>>, value: T) {\n const newSet = new Set(this.get());\n newSet.delete(value);\n this.set(newSet);\n },\n\n clear<T>(this: Store<Set<T>>) {\n this.set(new Set());\n },\n};\n"],"names":[],"mappings":"AAKA,MAAM,oBAAoB,CAA6B,SACrD,SAAS,eAEJ,MACgD;AACnD,QAAM,WAAW,KAAK,IAAI,EAAE,MAAM;AAClC,QAAM,SAAU,SAAS,IAAI,EAAgB,GAAI,IAAY;AAC7D,OAAK,IAAI,QAAQ;AACV,SAAA;AACT;AAEK,MAAM,eAAe;AAAA,EAC1B,QAAQ,kBAAkB,QAAQ;AAAA,EAClC,MAAM,kBAAkB,MAAM;AAAA,EAC9B,KAAK,kBAAkB,KAAK;AAAA,EAC5B,OAAO,kBAAkB,OAAO;AAAA,EAChC,SAAS,kBAAkB,SAAS;AAAA,EACpC,SAAS,kBAAkB,SAAS;AAAA,EACpC,MAAM,kBAAkB,MAAM;AAChC;AAEO,MAAM,gBAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAc3B,OAAoF,KAAQ;AAC1F,UAAM,OAAO,EAAE,GAAG,KAAK,IAAM,EAAA;AAC7B,WAAO,KAAK,GAAG;AACf,SAAK,IAAI,IAAI;AAAA,EACf;AAAA,EAEA,QAA2D;AACpD,SAAA,IAAI,CAAA,CAAO;AAAA,EAClB;AACF;AAEO,MAAM,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYxB,OAAqC,KAAQ;AAC3C,UAAM,SAAS,IAAI,IAAI,KAAK,IAAK,CAAA;AAC3B,UAAA,SAAS,OAAO,OAAO,GAAG;AAChC,SAAK,IAAI,MAAM;AACR,WAAA;AAAA,EACT;AAAA,EAEA,QAAoC;AAC7B,SAAA,IAAQ,oBAAA,IAAA,CAAK;AAAA,EACpB;AACF;AAEO,MAAM,aAAa;AAAA,EACxB,IAA4B,OAAU;AACpC,UAAM,SAAS,IAAI,IAAI,KAAK,IAAK,CAAA;AACjC,WAAO,IAAI,KAAK;AAChB,SAAK,IAAI,MAAM;AAAA,EACjB;AAAA,EAEA,OAA+B,OAAU;AACvC,UAAM,SAAS,IAAI,IAAI,KAAK,IAAK,CAAA;AACjC,WAAO,OAAO,KAAK;AACnB,SAAK,IAAI,MAAM;AAAA,EACjB;AAAA,EAEA,QAA8B;AACvB,SAAA,IAAQ,oBAAA,IAAA,CAAK;AAAA,EACpB;AACF;"}
@@ -1,25 +0,0 @@
1
- import { calcDuration } from "./calcDuration.js";
2
- function throttle(action, duration) {
3
- const ms = calcDuration(duration);
4
- let t = 0;
5
- let timeout;
6
- return (...args) => {
7
- if (timeout !== void 0) {
8
- clearTimeout(timeout);
9
- }
10
- const dt = t + ms - Date.now();
11
- if (dt <= 0) {
12
- action(...args);
13
- t = Date.now();
14
- return;
15
- }
16
- timeout = setTimeout(() => {
17
- action(...args);
18
- t = Date.now();
19
- }, dt);
20
- };
21
- }
22
- export {
23
- throttle
24
- };
25
- //# sourceMappingURL=throttle.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"throttle.js","sources":["../../../src/lib/throttle.ts"],"sourcesContent":["import { calcDuration } from './calcDuration';\nimport type { Duration } from '@core';\n\nexport function throttle<Args extends any[]>(\n action: (...args: Args) => void,\n duration: Duration,\n): (...args: Args) => void {\n const ms = calcDuration(duration);\n\n let t = 0;\n let timeout: ReturnType<typeof setTimeout> | undefined;\n\n return (...args: Args) => {\n if (timeout !== undefined) {\n clearTimeout(timeout);\n }\n\n const dt = t + ms - Date.now();\n if (dt <= 0) {\n action(...args);\n t = Date.now();\n return;\n }\n\n timeout = setTimeout(() => {\n action(...args);\n t = Date.now();\n }, dt);\n };\n}\n"],"names":[],"mappings":";AAGgB,SAAA,SACd,QACA,UACyB;AACnB,QAAA,KAAK,aAAa,QAAQ;AAEhC,MAAI,IAAI;AACJ,MAAA;AAEJ,SAAO,IAAI,SAAe;AACxB,QAAI,YAAY,QAAW;AACzB,mBAAa,OAAO;AAAA,IACtB;AAEA,UAAM,KAAK,IAAI,KAAK,KAAK,IAAI;AAC7B,QAAI,MAAM,GAAG;AACX,aAAO,GAAG,IAAI;AACd,UAAI,KAAK;AACT;AAAA,IACF;AAEA,cAAU,WAAW,MAAM;AACzB,aAAO,GAAG,IAAI;AACd,UAAI,KAAK;OACR,EAAE;AAAA,EAAA;AAET;"}
@@ -1,39 +0,0 @@
1
- const ProxyKeys = [
2
- "get",
3
- "getOwnPropertyDescriptor",
4
- "getPrototypeOf",
5
- "has",
6
- "isExtensible",
7
- "ownKeys"
8
- ];
9
- const isPlainObject = (value) => typeof value === "object" && value !== null && Object.getPrototypeOf(value) === Object.prototype;
10
- function trackingProxy(value) {
11
- if (!isPlainObject(value) && !Array.isArray(value)) {
12
- return [value, (other) => other === value];
13
- }
14
- const deps = new Array();
15
- const proxy = new Proxy(
16
- value,
17
- Object.fromEntries(
18
- ProxyKeys.map((key) => [
19
- key,
20
- (currentValue, ...args) => {
21
- const function_ = Reflect[key];
22
- const [proxiedValue, equals] = trackingProxy(function_(currentValue, ...args));
23
- deps.push((otherValue) => {
24
- if (!isPlainObject(otherValue) && !Array.isArray(otherValue)) {
25
- return false;
26
- }
27
- return equals(function_(otherValue, ...args));
28
- });
29
- return proxiedValue;
30
- }
31
- ])
32
- )
33
- );
34
- return [proxy, (other) => !!other && deps.every((equals) => equals(other))];
35
- }
36
- export {
37
- trackingProxy
38
- };
39
- //# sourceMappingURL=trackingProxy.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"trackingProxy.js","sources":["../../../src/lib/trackingProxy.ts"],"sourcesContent":["export type TrackingProxy<T> = [value: T, equals: (newValue: T) => boolean];\ntype Object_ = Record<string | symbol, unknown>;\n\nconst ProxyKeys = [\n 'get',\n 'getOwnPropertyDescriptor',\n 'getPrototypeOf',\n 'has',\n 'isExtensible',\n 'ownKeys',\n] as const;\n\nconst isPlainObject = (value: unknown) =>\n typeof value === 'object' && value !== null && Object.getPrototypeOf(value) === Object.prototype;\n\nexport function trackingProxy<T>(value: T): TrackingProxy<T> {\n if (!isPlainObject(value) && !Array.isArray(value)) {\n return [value, (other) => other === value];\n }\n\n const deps = new Array<TrackingProxy<any>[1]>();\n\n const proxy = new Proxy(\n value as T & Object_,\n Object.fromEntries(\n ProxyKeys.map((key) => [\n key,\n (currentValue: T & Object_, ...args: any[]) => {\n const function_ = Reflect[key] as any;\n const [proxiedValue, equals] = trackingProxy(function_(currentValue, ...args));\n\n deps.push((otherValue) => {\n if (!isPlainObject(otherValue) && !Array.isArray(otherValue)) {\n return false;\n }\n\n return equals(function_(otherValue, ...args));\n });\n\n return proxiedValue;\n },\n ]),\n ),\n );\n\n return [proxy, (other) => !!other && deps.every((equals) => equals(other))];\n}\n"],"names":[],"mappings":"AAGA,MAAM,YAAY;AAAA,EAChB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,MAAM,gBAAgB,CAAC,UACrB,OAAO,UAAU,YAAY,UAAU,QAAQ,OAAO,eAAe,KAAK,MAAM,OAAO;AAElF,SAAS,cAAiB,OAA4B;AACvD,MAAA,CAAC,cAAc,KAAK,KAAK,CAAC,MAAM,QAAQ,KAAK,GAAG;AAClD,WAAO,CAAC,OAAO,CAAC,UAAU,UAAU,KAAK;AAAA,EAC3C;AAEM,QAAA,OAAO,IAAI;AAEjB,QAAM,QAAQ,IAAI;AAAA,IAChB;AAAA,IACA,OAAO;AAAA,MACL,UAAU,IAAI,CAAC,QAAQ;AAAA,QACrB;AAAA,QACA,CAAC,iBAA8B,SAAgB;AACvC,gBAAA,YAAY,QAAQ,GAAG;AACvB,gBAAA,CAAC,cAAc,MAAM,IAAI,cAAc,UAAU,cAAc,GAAG,IAAI,CAAC;AAExE,eAAA,KAAK,CAAC,eAAe;AACpB,gBAAA,CAAC,cAAc,UAAU,KAAK,CAAC,MAAM,QAAQ,UAAU,GAAG;AACrD,qBAAA;AAAA,YACT;AAEA,mBAAO,OAAO,UAAU,YAAY,GAAG,IAAI,CAAC;AAAA,UAAA,CAC7C;AAEM,iBAAA;AAAA,QACT;AAAA,MAAA,CACD;AAAA,IACH;AAAA,EAAA;AAGF,SAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,SAAS,KAAK,MAAM,CAAC,WAAW,OAAO,KAAK,CAAC,CAAC;AAC5E;"}
@@ -1,15 +0,0 @@
1
- import { useCache } from "./useCache.js";
2
- function read(cache, options) {
3
- const { status, value, error } = useCache(cache, options);
4
- if (status === "value") {
5
- return value;
6
- }
7
- if (status === "error") {
8
- throw error;
9
- }
10
- throw cache.state.once((state) => state.status !== "pending");
11
- }
12
- export {
13
- read
14
- };
15
- //# sourceMappingURL=read.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"read.js","sources":["../../../src/react/read.ts"],"sourcesContent":["import { useCache } from './useCache';\nimport type { UseStoreOptions } from './useStore';\nimport type { Cache } from '@core';\n\nexport function read<T>(cache: Cache<T>, options?: UseStoreOptions): T {\n const { status, value, error } = useCache(cache, options);\n\n if (status === 'value') {\n return value;\n }\n\n if (status === 'error') {\n throw error;\n }\n\n throw cache.state.once((state) => state.status !== 'pending');\n}\n"],"names":[],"mappings":";AAIgB,SAAA,KAAQ,OAAiB,SAA8B;AACrE,QAAM,EAAE,QAAQ,OAAO,MAAU,IAAA,SAAS,OAAO,OAAO;AAExD,MAAI,WAAW,SAAS;AACf,WAAA;AAAA,EACT;AAEA,MAAI,WAAW,SAAS;AAChB,UAAA;AAAA,EACR;AAEA,QAAM,MAAM,MAAM,KAAK,CAAC,UAAU,MAAM,WAAW,SAAS;AAC9D;"}
@@ -1,31 +0,0 @@
1
- import { jsx } from "react/jsx-runtime";
2
- import { useMemo, useContext, createContext } from "react";
3
- import { createStore } from "../core/store.js";
4
- const contextMap = /* @__PURE__ */ new WeakMap();
5
- function getStoreScopeContext(scope) {
6
- let context = contextMap.get(scope);
7
- if (!context) {
8
- context = createContext(createStore(scope.defaultValue));
9
- contextMap.set(scope, context);
10
- }
11
- return context;
12
- }
13
- function StoreScopeProvider({ scope, store: inputStore, children }) {
14
- const context = getStoreScopeContext(scope);
15
- const currentStore = useMemo(
16
- () => inputStore ?? createStore(scope.defaultValue),
17
- [scope, inputStore]
18
- );
19
- return /* @__PURE__ */ jsx(context.Provider, { value: currentStore, children });
20
- }
21
- function useStoreScope(scope) {
22
- const context = getStoreScopeContext(scope);
23
- return useContext(context);
24
- }
25
- export {
26
- StoreScopeProvider,
27
- contextMap,
28
- getStoreScopeContext,
29
- useStoreScope
30
- };
31
- //# sourceMappingURL=storeScope.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"storeScope.js","sources":["../../../src/react/storeScope.tsx"],"sourcesContent":["import type { Context, ReactNode } from 'react';\nimport { createContext, useContext, useMemo } from 'react';\nimport type { Store } from '@core/store';\nimport { createStore } from '@core/store';\nimport type { StoreScope } from '@core/storeScope';\n\nexport type StoreScopeProps<T> = { scope: StoreScope<T>; store?: Store<T>; children?: ReactNode };\n\nexport const contextMap = new WeakMap<StoreScope<any>, Context<Store<any>>>();\n\nexport function getStoreScopeContext<T>(scope: StoreScope<T>): Context<Store<T>> {\n let context = contextMap.get(scope);\n\n if (!context) {\n context = createContext<Store<T>>(createStore(scope.defaultValue));\n contextMap.set(scope, context);\n }\n\n return context;\n}\n\nexport function StoreScopeProvider<T>({ scope, store: inputStore, children }: StoreScopeProps<T>) {\n const context = getStoreScopeContext(scope);\n const currentStore = useMemo(\n () => inputStore ?? createStore(scope.defaultValue),\n [scope, inputStore],\n );\n\n return <context.Provider value={currentStore}>{children}</context.Provider>;\n}\n\nexport function useStoreScope<T>(scope: StoreScope<T>): Store<T> {\n const context = getStoreScopeContext(scope);\n return useContext(context);\n}\n"],"names":[],"mappings":";;;AAQa,MAAA,iCAAiB,QAA8C;AAErE,SAAS,qBAAwB,OAAyC;AAC3E,MAAA,UAAU,WAAW,IAAI,KAAK;AAElC,MAAI,CAAC,SAAS;AACZ,cAAU,cAAwB,YAAY,MAAM,YAAY,CAAC;AACtD,eAAA,IAAI,OAAO,OAAO;AAAA,EAC/B;AAEO,SAAA;AACT;AAEO,SAAS,mBAAsB,EAAE,OAAO,OAAO,YAAY,YAAgC;AAC1F,QAAA,UAAU,qBAAqB,KAAK;AAC1C,QAAM,eAAe;AAAA,IACnB,MAAM,cAAc,YAAY,MAAM,YAAY;AAAA,IAClD,CAAC,OAAO,UAAU;AAAA,EAAA;AAGpB,6BAAQ,QAAQ,UAAR,EAAiB,OAAO,cAAe,SAAS,CAAA;AAC1D;AAEO,SAAS,cAAiB,OAAgC;AACzD,QAAA,UAAU,qBAAqB,KAAK;AAC1C,SAAO,WAAW,OAAO;AAC3B;"}
@@ -1,31 +0,0 @@
1
- import { useMemo, useEffect } from "react";
2
- import { useStore } from "./useStore.js";
3
- import { makeSelector } from "../lib/makeSelector.js";
4
- function useCache(cache, { passive, ...options } = {}) {
5
- const mappedState = useMemo(() => {
6
- var _a;
7
- const rootCache = ((_a = cache.derivedFromCache) == null ? void 0 : _a.cache) ?? cache;
8
- let selector = (x) => x;
9
- if (cache.derivedFromCache) {
10
- selector = (value) => {
11
- for (const s of cache.derivedFromCache.selectors) {
12
- value = makeSelector(s)(value);
13
- }
14
- return value;
15
- };
16
- }
17
- return rootCache.state.map((state) => {
18
- const value = state.status === "value" ? selector(state.value) : void 0;
19
- return Object.assign(
20
- [value, state.error, state.isUpdating, state.isStale],
21
- { ...state, value }
22
- );
23
- });
24
- }, [cache]);
25
- useEffect(() => !passive ? cache.sub(() => void 0) : void 0, [cache, passive]);
26
- return useStore(mappedState, options);
27
- }
28
- export {
29
- useCache
30
- };
31
- //# sourceMappingURL=useCache.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useCache.js","sources":["../../../src/react/useCache.ts"],"sourcesContent":["import { useEffect, useMemo } from 'react';\nimport type { UseStoreOptions } from './useStore';\nimport { useStore } from './useStore';\nimport type { Cache } from '@core';\nimport type { CacheState } from '@lib/cacheState';\nimport { makeSelector } from '@lib/makeSelector';\n\nexport type UseCacheArray<T> = [\n value: T | undefined,\n error: unknown | undefined,\n isUpdating: boolean,\n isStale: boolean,\n];\n\nexport type UseCacheValue<T> = UseCacheArray<T> & CacheState<T>;\n\nexport interface UseCacheOptions extends UseStoreOptions {\n passive?: boolean;\n}\n\nexport function useCache<T>(\n cache: Cache<T>,\n { passive, ...options }: UseCacheOptions = {},\n): UseCacheValue<T> {\n const mappedState = useMemo(() => {\n const rootCache: Cache<any> = cache.derivedFromCache?.cache ?? cache;\n let selector = (x: any) => x;\n\n if (cache.derivedFromCache) {\n selector = (value: any) => {\n for (const s of cache.derivedFromCache!.selectors) {\n value = makeSelector(s)(value);\n }\n return value;\n };\n }\n\n return rootCache.state.map((state) => {\n const value = state.status === 'value' ? selector(state.value) : undefined;\n\n return Object.assign<UseCacheArray<T>, CacheState<T>>(\n [value, state.error, state.isUpdating, state.isStale],\n { ...state, value },\n );\n });\n }, [cache]);\n\n useEffect(() => (!passive ? cache.sub(() => undefined) : undefined), [cache, passive]);\n\n return useStore(mappedState, options);\n}\n"],"names":[],"mappings":";;;AAoBgB,SAAA,SACd,OACA,EAAE,SAAS,GAAG,QAAQ,IAAqB,CAAA,GACzB;AACZ,QAAA,cAAc,QAAQ,MAAM;;AAC1B,UAAA,cAAwB,WAAM,qBAAN,mBAAwB,UAAS;AAC3D,QAAA,WAAW,CAAC,MAAW;AAE3B,QAAI,MAAM,kBAAkB;AAC1B,iBAAW,CAAC,UAAe;AACd,mBAAA,KAAK,MAAM,iBAAkB,WAAW;AACzC,kBAAA,aAAa,CAAC,EAAE,KAAK;AAAA,QAC/B;AACO,eAAA;AAAA,MAAA;AAAA,IAEX;AAEA,WAAO,UAAU,MAAM,IAAI,CAAC,UAAU;AACpC,YAAM,QAAQ,MAAM,WAAW,UAAU,SAAS,MAAM,KAAK,IAAI;AAEjE,aAAO,OAAO;AAAA,QACZ,CAAC,OAAO,MAAM,OAAO,MAAM,YAAY,MAAM,OAAO;AAAA,QACpD,EAAE,GAAG,OAAO,MAAM;AAAA,MAAA;AAAA,IACpB,CACD;AAAA,EAAA,GACA,CAAC,KAAK,CAAC;AAEV,YAAU,MAAO,CAAC,UAAU,MAAM,IAAI,MAAM,MAAS,IAAI,QAAY,CAAC,OAAO,OAAO,CAAC;AAE9E,SAAA,SAAS,aAAa,OAAO;AACtC;"}
@@ -1,9 +0,0 @@
1
- import { useStore } from "./useStore.js";
2
- function useProp(store, options) {
3
- const value = useStore(store, options);
4
- return [value, store.set];
5
- }
6
- export {
7
- useProp
8
- };
9
- //# sourceMappingURL=useProp.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useProp.js","sources":["../../../src/react/useProp.ts"],"sourcesContent":["import type { UseStoreOptions } from './useStore';\nimport { useStore } from './useStore';\nimport type { Store } from '@core/store';\nimport type { UpdateFunction } from '@core/commonTypes';\n\nexport function useProp<T>(\n store: Store<T>,\n options?: UseStoreOptions,\n): [value: T, setValue: UpdateFunction<T>] {\n const value = useStore(store, options);\n\n return [value, store.set];\n}\n"],"names":[],"mappings":";AAKgB,SAAA,QACd,OACA,SACyC;AACnC,QAAA,QAAQ,SAAS,OAAO,OAAO;AAE9B,SAAA,CAAC,OAAO,MAAM,GAAG;AAC1B;"}
@@ -1,51 +0,0 @@
1
- import { useRef, useMemo, useCallback, useLayoutEffect, useDebugValue } from "react";
2
- import "../_virtual/with-selector.js";
3
- import { hash } from "../lib/hash.js";
4
- import { makeSelector } from "../lib/makeSelector.js";
5
- import { trackingProxy } from "../lib/trackingProxy.js";
6
- import { exports as withSelectorExports } from "../_virtual/with-selector2.js";
7
- function useStore(store, options) {
8
- const lastEqualsRef = useRef();
9
- const { rootStore, selector } = useMemo(() => {
10
- var _a;
11
- const rootStore2 = ((_a = store.derivedFrom) == null ? void 0 : _a.store) ?? store;
12
- let selector2 = (x) => x;
13
- if (store.derivedFrom) {
14
- selector2 = (value2) => {
15
- for (const s of store.derivedFrom.selectors) {
16
- value2 = makeSelector(s)(value2);
17
- }
18
- return value2;
19
- };
20
- }
21
- return { rootStore: rootStore2, selector: selector2 };
22
- }, [store]);
23
- const subOptions = { ...options, runNow: false, equals: void 0, passive: false };
24
- const subscribe = useCallback(
25
- (listener) => {
26
- return rootStore.sub(listener, subOptions);
27
- },
28
- [rootStore, hash(subOptions)]
29
- );
30
- const value = withSelectorExports.useSyncExternalStoreWithSelector(
31
- //
32
- subscribe,
33
- rootStore.get,
34
- void 0,
35
- selector,
36
- (options == null ? void 0 : options.equals) ?? ((_v, newValue) => {
37
- var _a;
38
- return ((_a = lastEqualsRef.current) == null ? void 0 : _a.call(lastEqualsRef, newValue)) ?? false;
39
- })
40
- );
41
- const [proxiedValue, equals] = trackingProxy(value);
42
- useLayoutEffect(() => {
43
- lastEqualsRef.current = equals;
44
- });
45
- useDebugValue(value);
46
- return proxiedValue;
47
- }
48
- export {
49
- useStore
50
- };
51
- //# sourceMappingURL=useStore.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useStore.js","sources":["../../../src/react/useStore.ts"],"sourcesContent":["import { useCallback, useDebugValue, useLayoutEffect, useMemo, useRef } from 'react';\nimport { useSyncExternalStoreWithSelector } from 'use-sync-external-store/with-selector.js';\nimport type { SubscribeOptions } from '@core/commonTypes';\nimport type { Store } from '@core/store';\nimport { hash } from '@lib/hash';\nimport { makeSelector } from '@lib/makeSelector';\nimport { trackingProxy } from '@lib/trackingProxy';\n\nexport type UseStoreOptions = Omit<SubscribeOptions, 'runNow' | 'passive'>;\n\nexport function useStore<T>(store: Store<T>, options?: UseStoreOptions): T {\n const lastEqualsRef = useRef<(newValue: T) => boolean>();\n\n const { rootStore, selector } = useMemo(() => {\n const rootStore = store.derivedFrom?.store ?? store;\n let selector = (x: any) => x;\n\n if (store.derivedFrom) {\n selector = (value: any) => {\n for (const s of store.derivedFrom!.selectors) {\n value = makeSelector(s)(value);\n }\n return value;\n };\n }\n\n return { rootStore, selector };\n }, [store]);\n\n const subOptions = { ...options, runNow: false, equals: undefined, passive: false };\n const subscribe = useCallback(\n (listener: () => void) => {\n return rootStore.sub(listener, subOptions);\n },\n [rootStore, hash(subOptions)],\n );\n\n const value = useSyncExternalStoreWithSelector<unknown, T>(\n //\n subscribe,\n rootStore.get,\n undefined,\n selector,\n options?.equals ?? ((_v, newValue) => lastEqualsRef.current?.(newValue) ?? false),\n );\n const [proxiedValue, equals] = trackingProxy(value);\n\n useLayoutEffect(() => {\n lastEqualsRef.current = equals;\n });\n\n useDebugValue(value);\n return proxiedValue;\n}\n"],"names":["rootStore","selector","value","useSyncExternalStoreWithSelector"],"mappings":";;;;;;AAUgB,SAAA,SAAY,OAAiB,SAA8B;AACzE,QAAM,gBAAgB;AAEtB,QAAM,EAAE,WAAW,SAAS,IAAI,QAAQ,MAAM;;AACtCA,UAAAA,eAAY,WAAM,gBAAN,mBAAmB,UAAS;AAC1CC,QAAAA,YAAW,CAAC,MAAW;AAE3B,QAAI,MAAM,aAAa;AACrBA,kBAAW,CAACC,WAAe;AACd,mBAAA,KAAK,MAAM,YAAa,WAAW;AAC5CA,mBAAQ,aAAa,CAAC,EAAEA,MAAK;AAAA,QAC/B;AACOA,eAAAA;AAAAA,MAAA;AAAA,IAEX;AAEA,WAAO,EAAE,WAAAF,YAAW,UAAAC,UAAS;AAAA,EAAA,GAC5B,CAAC,KAAK,CAAC;AAEJ,QAAA,aAAa,EAAE,GAAG,SAAS,QAAQ,OAAO,QAAQ,QAAW,SAAS;AAC5E,QAAM,YAAY;AAAA,IAChB,CAAC,aAAyB;AACjB,aAAA,UAAU,IAAI,UAAU,UAAU;AAAA,IAC3C;AAAA,IACA,CAAC,WAAW,KAAK,UAAU,CAAC;AAAA,EAAA;AAG9B,QAAM,QAAQE,oBAAA;AAAA;AAAA,IAEZ;AAAA,IACA,UAAU;AAAA,IACV;AAAA,IACA;AAAA,KACA,mCAAS,YAAW,CAAC,IAAI,aAAa;;AAAA,kCAAc,YAAd,uCAAwB,cAAa;AAAA;AAAA,EAAA;AAE7E,QAAM,CAAC,cAAc,MAAM,IAAI,cAAc,KAAK;AAElD,kBAAgB,MAAM;AACpB,kBAAc,UAAU;AAAA,EAAA,CACzB;AAED,gBAAc,KAAK;AACZ,SAAA;AACT;"}
package/dist/es/react.js DELETED
@@ -1,14 +0,0 @@
1
- import { read } from "./react/read.js";
2
- import { StoreScopeProvider, useStoreScope } from "./react/storeScope.js";
3
- import { useCache } from "./react/useCache.js";
4
- import { useProp } from "./react/useProp.js";
5
- import { useStore } from "./react/useStore.js";
6
- export {
7
- StoreScopeProvider,
8
- read,
9
- useCache,
10
- useProp,
11
- useStore,
12
- useStoreScope
13
- };
14
- //# sourceMappingURL=react.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"react.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;"}