cross-state 0.8.6 → 0.9.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.
Files changed (59) hide show
  1. package/dist/cjs/cache.cjs +386 -0
  2. package/dist/cjs/cache.cjs.map +1 -0
  3. package/dist/cjs/immer/index.cjs +21 -3
  4. package/dist/cjs/immer/index.cjs.map +1 -1
  5. package/dist/cjs/immer/register.cjs +2 -2
  6. package/dist/cjs/immer/register.cjs.map +1 -1
  7. package/dist/cjs/index.cjs +21 -16
  8. package/dist/cjs/index.cjs.map +1 -1
  9. package/dist/cjs/react/index.cjs +268 -11
  10. package/dist/cjs/react/index.cjs.map +1 -1
  11. package/dist/cjs/react/register.cjs +12 -12
  12. package/dist/cjs/react/register.cjs.map +1 -1
  13. package/dist/cjs/scope.cjs +11 -379
  14. package/dist/cjs/scope.cjs.map +1 -1
  15. package/dist/cjs/store.cjs.map +1 -1
  16. package/dist/cjs/{scope2.cjs → useCache.cjs} +69 -74
  17. package/dist/cjs/useCache.cjs.map +1 -0
  18. package/dist/es/cache.mjs +387 -0
  19. package/dist/es/cache.mjs.map +1 -0
  20. package/dist/es/immer/index.mjs +21 -3
  21. package/dist/es/immer/index.mjs.map +1 -1
  22. package/dist/es/immer/register.mjs +1 -1
  23. package/dist/es/index.mjs +22 -17
  24. package/dist/es/index.mjs.map +1 -1
  25. package/dist/es/react/index.mjs +267 -10
  26. package/dist/es/react/index.mjs.map +1 -1
  27. package/dist/es/react/register.mjs +4 -4
  28. package/dist/es/scope.mjs +12 -380
  29. package/dist/es/scope.mjs.map +1 -1
  30. package/dist/es/store.mjs +7 -7
  31. package/dist/es/store.mjs.map +1 -1
  32. package/dist/es/{scope2.mjs → useCache.mjs} +73 -78
  33. package/dist/es/useCache.mjs.map +1 -0
  34. package/dist/types/lib/castArray.d.ts +1 -0
  35. package/dist/types/lib/path.d.ts +5 -7
  36. package/dist/types/lib/propAccess.d.ts +1 -1
  37. package/dist/types/lib/typeHelpers.d.ts +2 -1
  38. package/dist/types/lib/wildcardMatch.d.ts +3 -0
  39. package/dist/types/persist/persist.d.ts +6 -4
  40. package/dist/types/react/form/form.d.ts +50 -0
  41. package/dist/types/react/form/formError.d.ts +6 -0
  42. package/dist/types/react/form/formInput.d.ts +48 -0
  43. package/dist/types/react/form/index.d.ts +3 -0
  44. package/dist/types/react/index.d.ts +1 -0
  45. package/dist/types/react/register.d.ts +1 -1
  46. package/dist/types/react/scope.d.ts +1 -1
  47. package/dist/types/react/useProp.d.ts +5 -1
  48. package/dist/types/react/useStore.d.ts +5 -2
  49. package/package.json +34 -19
  50. package/dist/cjs/hash.cjs +0 -18
  51. package/dist/cjs/hash.cjs.map +0 -1
  52. package/dist/cjs/immerMethods.cjs +0 -23
  53. package/dist/cjs/immerMethods.cjs.map +0 -1
  54. package/dist/cjs/scope2.cjs.map +0 -1
  55. package/dist/es/hash.mjs +0 -19
  56. package/dist/es/hash.mjs.map +0 -1
  57. package/dist/es/immerMethods.mjs +0 -24
  58. package/dist/es/immerMethods.mjs.map +0 -1
  59. package/dist/es/scope2.mjs.map +0 -1
package/dist/es/scope.mjs CHANGED
@@ -1,381 +1,18 @@
1
- import { S as Store, c as createStore, a as calcDuration, i as makeSelector } from "./store.mjs";
2
- import { h as hash } from "./hash.mjs";
3
- class ResourceGroup {
4
- constructor(name) {
5
- this.name = name;
6
- this.refMap = /* @__PURE__ */ new WeakMap();
7
- this.refSet = /* @__PURE__ */ new Set();
8
- this.add = this.add.bind(this);
9
- this.delete = this.delete.bind(this);
10
- this.invalidateAll = this.invalidateAll.bind(this);
11
- this.clearAll = this.clearAll.bind(this);
1
+ function hash(value) {
2
+ if (value instanceof Set) {
3
+ return `s[${[...value].map(hash).sort().join(",")}]`;
12
4
  }
13
- add(resource) {
14
- const ref = new WeakRef(resource);
15
- this.refMap.set(resource, ref);
16
- this.refSet.add(ref);
5
+ if (value instanceof Map) {
6
+ return `m[${[...value.entries()].map(hash).sort().join(",")}]`;
17
7
  }
18
- delete(resource) {
19
- const ref = this.refMap.get(resource);
20
- if (ref) {
21
- this.refMap.delete(resource);
22
- this.refSet.delete(ref);
23
- }
24
- }
25
- invalidateAll() {
26
- for (const ref of this.refSet) {
27
- const resource = ref.deref();
28
- if (resource) {
29
- resource.invalidateAll();
30
- } else {
31
- this.refSet.delete(ref);
32
- }
33
- }
34
- }
35
- clearAll() {
36
- for (const ref of this.refSet) {
37
- const resource = ref.deref();
38
- if (resource) {
39
- resource.clearAll();
40
- } else {
41
- this.refSet.delete(ref);
42
- }
43
- }
44
- }
45
- }
46
- const allResources = /* @__PURE__ */ new ResourceGroup();
47
- function createResourceGroup(name) {
48
- return new ResourceGroup(name);
49
- }
50
- class InstanceCache {
51
- constructor(factory, cacheTime) {
52
- this.factory = factory;
53
- this.cacheTime = cacheTime;
54
- this.cache = /* @__PURE__ */ new Map();
55
- this.interval = this.cacheTime ? setInterval(() => this.cleanup(), Math.max(this.cacheTime / 10, 1)) : void 0;
56
- }
57
- cleanup() {
58
- var _a;
59
- const cutoff = this.now() - (this.cacheTime ?? 0);
60
- for (const [key, entry] of this.cache.entries()) {
61
- if (entry.ref && entry.t <= cutoff) {
62
- delete entry.ref;
63
- }
64
- if (!entry.ref && !((_a = entry.weakRef) == null ? void 0 : _a.deref())) {
65
- this.cache.delete(key);
66
- }
67
- }
68
- }
69
- get(...args) {
70
- var _a;
71
- const key = hash(args);
72
- let entry = this.cache.get(key);
73
- let value = (entry == null ? void 0 : entry.ref) ?? ((_a = entry == null ? void 0 : entry.weakRef) == null ? void 0 : _a.deref());
74
- if (!entry || !value) {
75
- value = this.factory(...args);
76
- entry = {
77
- t: this.now(),
78
- ref: value,
79
- weakRef: new WeakRef(value)
80
- };
81
- this.cache.set(key, entry);
82
- } else {
83
- entry.t = this.now();
84
- entry.ref ?? (entry.ref = value);
85
- }
86
- return value;
87
- }
88
- values() {
89
- return [...this.cache.values()].map((entry) => {
90
- var _a;
91
- return entry.ref ?? ((_a = entry.weakRef) == null ? void 0 : _a.deref());
92
- }).filter((value) => !!value);
93
- }
94
- stop() {
95
- if (this.interval) {
96
- clearInterval(this.interval);
97
- }
98
- }
99
- stats() {
100
- return {
101
- count: this.cache.size,
102
- withRef: [...this.cache.values()].filter((x) => !!x.ref).length,
103
- withWeakRef: [...this.cache.values()].filter((x) => {
104
- var _a;
105
- return !!((_a = x.weakRef) == null ? void 0 : _a.deref());
106
- }).length
107
- };
108
- }
109
- now() {
110
- return performance.now();
111
- }
112
- }
113
- class PromiseWithState extends Promise {
114
- constructor(value, state = { status: "pending" }) {
115
- super((resolve) => resolve(value));
116
- this.state = state;
117
- value.then((value2) => {
118
- this.state = { status: "value", value: value2 };
119
- }).catch((error) => {
120
- this.state = { status: "error", error };
121
- });
122
- }
123
- static resolve(value) {
124
- return new PromiseWithState(Promise.resolve(value), {
125
- status: "value",
126
- value
127
- });
128
- }
129
- static reject(error) {
130
- return new PromiseWithState(Promise.reject(error), { status: "error", error });
131
- }
132
- }
133
- class Cache extends Store {
134
- constructor(getter, options = {}, derivedFromCache, _call) {
135
- super(
136
- function() {
137
- let result = getter.apply(this);
138
- if (result instanceof Function) {
139
- result = result(this);
140
- }
141
- return result;
142
- },
143
- options,
144
- void 0,
145
- _call
146
- );
147
- this.options = options;
148
- this.derivedFromCache = derivedFromCache;
149
- this.state = createStore({
150
- status: "pending",
151
- isStale: true,
152
- isUpdating: false
153
- });
154
- this.invalidate = this.invalidate.bind(this);
155
- this.clear = this.clear.bind(this);
156
- this.mapValue = this.mapValue.bind(this);
157
- this.calculationHelper.options.onInvalidate = () => this.invalidate({ invalidateDependencies: false });
158
- this.watchPromise();
159
- this.watchFocus();
160
- }
161
- get({ update = "whenStale", backgroundUpdate = false } = {}) {
162
- var _a;
163
- const promise = (_a = this._value) == null ? void 0 : _a.v;
164
- const stalePromise = this.stalePromise;
165
- if (update === "whenMissing" && !promise && !stalePromise || update === "whenStale" && !promise || update === "force") {
166
- this.calculationHelper.execute();
167
- if (!promise && !stalePromise || !backgroundUpdate) {
168
- return super.get();
169
- }
170
- }
171
- if (!promise || stalePromise && backgroundUpdate) {
172
- return stalePromise;
173
- }
174
- return promise;
175
- }
176
- updateValue(value) {
177
- this.set(PromiseWithState.resolve(value));
178
- }
179
- updateError(error) {
180
- this.set(PromiseWithState.reject(error));
181
- }
182
- invalidate({ invalidateDependencies = true } = {}) {
183
- var _a;
184
- const { clearOnInvalidate = createCache.defaultOptions.clearOnInvalidate } = this.options;
185
- if (clearOnInvalidate) {
186
- return this.clear({ invalidateDependencies });
187
- }
188
- if (invalidateDependencies) {
189
- this.calculationHelper.invalidateDependencies();
190
- }
191
- const { status, isStale, isUpdating } = this.state.get();
192
- if (status !== "pending" && !isStale && !isUpdating) {
193
- this.stalePromise = (_a = this._value) == null ? void 0 : _a.v;
194
- }
195
- this.state.set((state) => ({
196
- ...state,
197
- isStale: true,
198
- isUpdating: false
199
- }));
200
- this.calculationHelper.stop();
201
- super.reset();
202
- }
203
- clear({ invalidateDependencies = true } = {}) {
204
- if (invalidateDependencies) {
205
- this.calculationHelper.invalidateDependencies();
206
- }
207
- this.state.set({
208
- status: "pending",
209
- isStale: true,
210
- isUpdating: false
211
- });
212
- delete this.stalePromise;
213
- this.calculationHelper.stop();
214
- super.reset();
215
- }
216
- mapValue(_selector) {
217
- const selector = makeSelector(_selector);
218
- const derivedFromCache = {
219
- cache: this.derivedFromCache ? this.derivedFromCache.cache : this,
220
- selectors: this.derivedFromCache ? [...this.derivedFromCache.selectors, _selector] : [_selector]
221
- };
222
- const that = this;
223
- return new Cache(
224
- async function() {
225
- const value = await this.use(that);
226
- return selector(value);
227
- },
228
- {},
229
- derivedFromCache
230
- );
231
- }
232
- watchPromise() {
233
- this.subscribe(
234
- async (promise) => {
235
- var _a, _b;
236
- if (promise instanceof PromiseWithState) {
237
- this.state.set({
238
- ...promise.state,
239
- isStale: false,
240
- isUpdating: false
241
- });
242
- delete this.stalePromise;
243
- this.setTimers();
244
- return;
245
- }
246
- this.state.set((state) => ({
247
- ...state,
248
- isUpdating: true
249
- }));
250
- this.setTimers();
251
- try {
252
- const value = await promise;
253
- if (promise !== ((_a = this._value) == null ? void 0 : _a.v)) {
254
- return;
255
- }
256
- this.state.set({
257
- status: "value",
258
- value,
259
- isStale: false,
260
- isUpdating: false
261
- });
262
- delete this.stalePromise;
263
- this.setTimers();
264
- } catch (error) {
265
- if (promise !== ((_b = this._value) == null ? void 0 : _b.v)) {
266
- return;
267
- }
268
- this.state.set({
269
- status: "error",
270
- error,
271
- isStale: false,
272
- isUpdating: false
273
- });
274
- delete this.stalePromise;
275
- this.setTimers();
276
- }
277
- },
278
- { passive: true }
279
- );
8
+ if (Array.isArray(value)) {
9
+ return `[${value.map(hash).join(",")}]`;
280
10
  }
281
- setTimers() {
282
- if (this.invalidationTimer) {
283
- clearTimeout(this.invalidationTimer);
284
- }
285
- this.invalidationTimer = void 0;
286
- const state = this.state.get();
287
- let { invalidateAfter = createCache.defaultOptions.invalidateAfter } = this.options;
288
- const ref = new WeakRef(this);
289
- if (state.status === "pending") {
290
- return;
291
- }
292
- if (invalidateAfter instanceof Function) {
293
- invalidateAfter = invalidateAfter(state);
294
- }
295
- if (invalidateAfter !== null && invalidateAfter !== void 0) {
296
- this.invalidationTimer = setTimeout(
297
- () => {
298
- var _a;
299
- return (_a = ref == null ? void 0 : ref.deref()) == null ? void 0 : _a.invalidate();
300
- },
301
- calcDuration(invalidateAfter)
302
- );
303
- }
304
- }
305
- watchFocus() {
306
- const { invalidateOnWindowFocus = createCache.defaultOptions.invalidateOnWindowFocus } = this.options;
307
- if (!invalidateOnWindowFocus || typeof document === "undefined" || typeof document.addEventListener === "undefined") {
308
- return;
309
- }
310
- const ref = new WeakRef(this);
311
- const onFocus = () => {
312
- const that = ref == null ? void 0 : ref.deref();
313
- if (!that) {
314
- document.removeEventListener("visibilitychange", onFocus);
315
- return;
316
- }
317
- if (!document.hidden) {
318
- that.invalidate();
319
- }
320
- };
321
- document.addEventListener("visibilitychange", onFocus);
11
+ if (value instanceof Object) {
12
+ return `o[${Object.entries(value).map(hash).sort().join(",")}]`;
322
13
  }
14
+ return JSON.stringify(value);
323
15
  }
324
- function create(cacheFunction, options) {
325
- const { clearUnusedAfter = createCache.defaultOptions.clearUnusedAfter, resourceGroup } = options ?? {};
326
- let baseInstance;
327
- const instanceCache = new InstanceCache(
328
- (...args) => {
329
- if (args.length === 0 && baseInstance) {
330
- return baseInstance;
331
- }
332
- return new Cache(function() {
333
- return cacheFunction.apply(this, args);
334
- }, options);
335
- },
336
- clearUnusedAfter ? calcDuration(clearUnusedAfter) : void 0
337
- );
338
- const get = (...args) => {
339
- return instanceCache.get(...args);
340
- };
341
- const invalidateAll = () => {
342
- for (const instance of instanceCache.values()) {
343
- instance.invalidate();
344
- }
345
- };
346
- const clearAll = () => {
347
- for (const instance of instanceCache.values()) {
348
- instance.clear();
349
- }
350
- };
351
- baseInstance = Object.assign(
352
- new Cache(
353
- function() {
354
- return cacheFunction.apply(this);
355
- },
356
- options,
357
- void 0,
358
- get
359
- ),
360
- {
361
- invalidateAll,
362
- clearAll
363
- }
364
- );
365
- const groups = Array.isArray(resourceGroup) ? resourceGroup : resourceGroup ? [resourceGroup] : [];
366
- for (const group of groups.concat(allResources)) {
367
- group.add(baseInstance);
368
- }
369
- get(...[]);
370
- return baseInstance;
371
- }
372
- const createCache = /* @__PURE__ */ Object.assign(create, {
373
- defaultOptions: {
374
- invalidateOnWindowFocus: true,
375
- invalidateOnActivation: true,
376
- clearUnusedAfter: { days: 1 }
377
- }
378
- });
379
16
  class Scope {
380
17
  constructor(defaultValue) {
381
18
  this.defaultValue = defaultValue;
@@ -388,13 +25,8 @@ function createScope(defaultValue) {
388
25
  return new Scope(defaultValue);
389
26
  }
390
27
  export {
391
- Cache as C,
392
- InstanceCache as I,
393
- ResourceGroup as R,
394
28
  Scope as S,
395
- allResources as a,
396
- createResourceGroup as b,
397
- createCache as c,
398
- createScope as d
29
+ createScope as c,
30
+ hash as h
399
31
  };
400
32
  //# sourceMappingURL=scope.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"scope.mjs","sources":["../../src/core/resourceGroup.ts","../../src/lib/instanceCache.ts","../../src/lib/promiseWithState.ts","../../src/core/cache.ts","../../src/core/scope.ts"],"sourcesContent":["export interface Resource {\n invalidateAll(): void;\n clearAll(): void;\n}\n\nexport class ResourceGroup {\n private refMap = new WeakMap<Resource, WeakRef<Resource>>();\n\n private refSet = new Set<WeakRef<Resource>>();\n\n constructor(public readonly name?: string) {\n this.add = this.add.bind(this);\n this.delete = this.delete.bind(this);\n this.invalidateAll = this.invalidateAll.bind(this);\n this.clearAll = this.clearAll.bind(this);\n }\n\n add(resource: Resource) {\n const ref = new WeakRef(resource);\n this.refMap.set(resource, ref);\n this.refSet.add(ref);\n }\n\n delete(resource: Resource) {\n const ref = this.refMap.get(resource);\n if (ref) {\n this.refMap.delete(resource);\n this.refSet.delete(ref);\n }\n }\n\n invalidateAll() {\n for (const ref of this.refSet) {\n const resource = ref.deref();\n if (resource) {\n resource.invalidateAll();\n } else {\n this.refSet.delete(ref);\n }\n }\n }\n\n clearAll() {\n for (const ref of this.refSet) {\n const resource = ref.deref();\n if (resource) {\n resource.clearAll();\n } else {\n this.refSet.delete(ref);\n }\n }\n }\n}\n\nexport const allResources = /* @__PURE__ */ new ResourceGroup();\n\nexport function createResourceGroup(name?: string) {\n return new ResourceGroup(name);\n}\n","import { hash } from './hash';\n\nexport class InstanceCache<Args extends any[], T extends object> {\n private cache = new Map<string, { t: number; ref?: T; weakRef: WeakRef<T> }>();\n\n private interval = this.cacheTime\n ? setInterval(() => this.cleanup(), Math.max(this.cacheTime / 10, 1))\n : undefined;\n\n constructor(public readonly factory: (...args: Args) => T, public readonly cacheTime?: number) {}\n\n cleanup() {\n const cutoff = this.now() - (this.cacheTime ?? 0);\n\n for (const [key, entry] of this.cache.entries()) {\n if (entry.ref && entry.t <= cutoff) {\n delete entry.ref;\n }\n\n if (!entry.ref && !entry.weakRef?.deref()) {\n this.cache.delete(key);\n }\n }\n }\n\n get(...args: Args) {\n const key = hash(args);\n let entry = this.cache.get(key);\n let value = entry?.ref ?? entry?.weakRef?.deref();\n\n if (!entry || !value) {\n value = this.factory(...args);\n entry = {\n t: this.now(),\n ref: value,\n weakRef: new WeakRef(value),\n };\n\n this.cache.set(key, entry);\n } else {\n entry.t = this.now();\n entry.ref ??= value;\n }\n\n return value;\n }\n\n values() {\n return [...this.cache.values()]\n .map((entry) => entry.ref ?? entry.weakRef?.deref())\n .filter((value): value is T => !!value);\n }\n\n stop() {\n if (this.interval) {\n clearInterval(this.interval);\n }\n }\n\n stats() {\n return {\n count: this.cache.size,\n withRef: [...this.cache.values()].filter((x) => !!x.ref).length,\n withWeakRef: [...this.cache.values()].filter((x) => !!x.weakRef?.deref()).length,\n };\n }\n\n private now() {\n return performance.now();\n }\n}\n","import { type ErrorState, type PendingState, type ValueState } from './cacheState';\nimport { type MaybePromise } from './maybePromise';\n\nexport class PromiseWithState<T> extends Promise<T> {\n static override resolve(): PromiseWithState<void>;\n\n static override resolve<T>(value: MaybePromise<T>): PromiseWithState<T>;\n\n static override resolve<T>(value?: MaybePromise<T>) {\n return new PromiseWithState<T>(Promise.resolve(value as MaybePromise<T>), {\n status: 'value',\n value: value as T,\n });\n }\n\n static override reject<T = never>(error: unknown) {\n // eslint-disable-next-line promise/no-promise-in-callback\n return new PromiseWithState<T>(Promise.reject(error), { status: 'error', error });\n }\n\n constructor(\n value: Promise<T>,\n public state: ValueState<T> | ErrorState | PendingState = { status: 'pending' },\n ) {\n super((resolve) => resolve(value));\n\n value\n .then((value) => {\n this.state = { status: 'value', value };\n })\n .catch((error) => {\n this.state = { status: 'error', error };\n });\n }\n}\n","import type { Duration, Selector, Use } from './commonTypes';\nimport { allResources, type ResourceGroup } from './resourceGroup';\nimport { Store, createStore } from './store';\nimport type { CacheState, ErrorState, ValueState } from '@lib/cacheState';\nimport { calcDuration } from '@lib/calcDuration';\nimport { InstanceCache } from '@lib/instanceCache';\nimport { makeSelector } from '@lib/makeSelector';\nimport { type MaybePromise } from '@lib/maybePromise';\nimport type { Path, Value } from '@lib/path';\nimport { PromiseWithState } from '@lib/promiseWithState';\n\nexport interface CacheGetOptions {\n update?: 'whenMissing' | 'whenStale' | 'force';\n backgroundUpdate?: boolean;\n}\n\nexport interface CacheFunction<T, Args extends any[] = []> {\n (this: { use: Use }, ...args: Args): Promise<T> | ((cache: { use: Use }) => Promise<T>);\n}\n\nexport interface CacheOptions<T> {\n invalidateAfter?: Duration | ((state: ValueState<T> | ErrorState) => Duration | null) | null;\n invalidateOnWindowFocus?: boolean;\n invalidateOnActivation?: boolean;\n clearOnInvalidate?: boolean;\n clearUnusedAfter?: Duration | null;\n resourceGroup?: ResourceGroup | ResourceGroup[];\n retain?: number;\n}\n\nexport class Cache<T> extends Store<Promise<T>> {\n readonly state = createStore<CacheState<T>>({\n status: 'pending',\n isStale: true,\n isUpdating: false,\n });\n\n protected stalePromise?: Promise<T>;\n\n protected invalidationTimer?: ReturnType<typeof setTimeout>;\n\n constructor(\n getter: CacheFunction<T>,\n public readonly options: CacheOptions<T> = {},\n public readonly derivedFromCache?: {\n cache: Cache<any>;\n selectors: (Selector<any, any> | Path<any>)[];\n },\n _call?: (...args: any[]) => any,\n ) {\n super(\n function () {\n let result = getter.apply(this);\n\n if (result instanceof Function) {\n result = result(this);\n }\n\n return result;\n },\n options,\n undefined,\n _call,\n );\n this.invalidate = this.invalidate.bind(this);\n this.clear = this.clear.bind(this);\n this.mapValue = this.mapValue.bind(this);\n\n this.calculationHelper.options.onInvalidate = () =>\n this.invalidate({ invalidateDependencies: false });\n this.watchPromise();\n this.watchFocus();\n }\n\n get({ update = 'whenStale', backgroundUpdate = false }: CacheGetOptions = {}) {\n const promise = this._value?.v;\n const stalePromise = this.stalePromise;\n\n if (\n (update === 'whenMissing' && !promise && !stalePromise) ||\n (update === 'whenStale' && !promise) ||\n update === 'force'\n ) {\n this.calculationHelper.execute();\n\n if ((!promise && !stalePromise) || !backgroundUpdate) {\n return super.get();\n }\n }\n\n if (!promise || (stalePromise && backgroundUpdate)) {\n return stalePromise!;\n }\n\n return promise;\n }\n\n updateValue(value: MaybePromise<T>) {\n this.set(PromiseWithState.resolve(value));\n }\n\n updateError(error: unknown) {\n this.set(PromiseWithState.reject(error));\n }\n\n invalidate({ invalidateDependencies = true }: { invalidateDependencies?: boolean } = {}) {\n const { clearOnInvalidate = createCache.defaultOptions.clearOnInvalidate } = this.options;\n\n if (clearOnInvalidate) {\n return this.clear({ invalidateDependencies });\n }\n\n if (invalidateDependencies) {\n this.calculationHelper.invalidateDependencies();\n }\n\n const { status, isStale, isUpdating } = this.state.get();\n if (status !== 'pending' && !isStale && !isUpdating) {\n this.stalePromise = this._value?.v;\n }\n\n this.state.set((state) => ({\n ...state,\n isStale: true,\n isUpdating: false,\n }));\n\n this.calculationHelper.stop();\n super.reset();\n }\n\n clear({ invalidateDependencies = true }: { invalidateDependencies?: boolean } = {}): void {\n if (invalidateDependencies) {\n this.calculationHelper.invalidateDependencies();\n }\n\n this.state.set({\n status: 'pending',\n isStale: true,\n isUpdating: false,\n });\n delete this.stalePromise;\n\n this.calculationHelper.stop();\n super.reset();\n }\n\n mapValue<S>(selector: Selector<T, S>): Cache<S>;\n\n mapValue<P extends Path<T>>(selector: P): Cache<Value<T, P>>;\n\n mapValue<S>(_selector: Selector<T, S> | Path<any>): Cache<S> {\n const selector = makeSelector(_selector);\n const derivedFromCache = {\n cache: this.derivedFromCache ? this.derivedFromCache.cache : this,\n selectors: this.derivedFromCache\n ? [...this.derivedFromCache.selectors, _selector]\n : [_selector],\n };\n const that = this;\n\n return new Cache(\n async function () {\n const value = await this.use(that);\n return selector(value);\n },\n {},\n derivedFromCache,\n );\n }\n\n protected watchPromise() {\n this.subscribe(\n async (promise) => {\n if (promise instanceof PromiseWithState) {\n this.state.set({\n ...promise.state,\n isStale: false,\n isUpdating: false,\n });\n\n delete this.stalePromise;\n this.setTimers();\n return;\n }\n\n this.state.set((state) => ({\n ...state,\n isUpdating: true,\n }));\n\n this.setTimers();\n\n try {\n const value = await promise;\n\n if (promise !== this._value?.v) {\n return;\n }\n\n this.state.set({\n status: 'value',\n value,\n isStale: false,\n isUpdating: false,\n });\n delete this.stalePromise;\n this.setTimers();\n } catch (error) {\n if (promise !== this._value?.v) {\n return;\n }\n\n this.state.set({\n status: 'error',\n error,\n isStale: false,\n isUpdating: false,\n });\n delete this.stalePromise;\n this.setTimers();\n }\n },\n { passive: true },\n );\n }\n\n protected setTimers() {\n if (this.invalidationTimer) {\n clearTimeout(this.invalidationTimer);\n }\n this.invalidationTimer = undefined;\n\n const state = this.state.get();\n let { invalidateAfter = createCache.defaultOptions.invalidateAfter } = this.options;\n const ref = new WeakRef(this);\n\n if (state.status === 'pending') {\n return;\n }\n\n if (invalidateAfter instanceof Function) {\n invalidateAfter = invalidateAfter(state);\n }\n\n if (invalidateAfter !== null && invalidateAfter !== undefined) {\n this.invalidationTimer = setTimeout(\n () => ref?.deref()?.invalidate(),\n calcDuration(invalidateAfter),\n );\n }\n }\n\n protected watchFocus() {\n const { invalidateOnWindowFocus = createCache.defaultOptions.invalidateOnWindowFocus } =\n this.options;\n\n if (\n !invalidateOnWindowFocus ||\n typeof document === 'undefined' ||\n typeof document.addEventListener === 'undefined'\n ) {\n return;\n }\n\n const ref = new WeakRef(this);\n\n const onFocus = () => {\n const that = ref?.deref();\n if (!that) {\n document.removeEventListener('visibilitychange', onFocus);\n return;\n }\n\n if (!document.hidden) {\n that.invalidate();\n }\n };\n\n document.addEventListener('visibilitychange', onFocus);\n }\n}\n\ntype CreateReturnType<T, Args extends any[]> = {\n (...args: Args): Cache<T>;\n invalidateAll: () => void;\n clearAll: () => void;\n} & ([] extends Args ? Cache<T> : {});\n\nfunction create<T, Args extends any[]>(\n cacheFunction: CacheFunction<T, Args>,\n options?: CacheOptions<T>,\n): CreateReturnType<T, Args> {\n const { clearUnusedAfter = createCache.defaultOptions.clearUnusedAfter, resourceGroup } =\n options ?? {};\n\n let baseInstance: CreateReturnType<T, Args> & Cache<T>;\n\n const instanceCache = new InstanceCache<Args, Cache<T>>(\n (...args: Args): Cache<T> => {\n if (args.length === 0 && baseInstance) {\n return baseInstance;\n }\n\n return new Cache(function () {\n return cacheFunction.apply(this, args);\n }, options);\n },\n clearUnusedAfter ? calcDuration(clearUnusedAfter) : undefined,\n );\n\n const get = (...args: Args) => {\n return instanceCache.get(...args);\n };\n\n const invalidateAll = () => {\n for (const instance of instanceCache.values()) {\n instance.invalidate();\n }\n };\n\n const clearAll = () => {\n for (const instance of instanceCache.values()) {\n instance.clear();\n }\n };\n\n baseInstance = Object.assign(\n new Cache(\n function () {\n return cacheFunction.apply(this);\n },\n options,\n undefined,\n get,\n ),\n {\n invalidateAll,\n clearAll,\n },\n ) as CreateReturnType<T, Args> & Cache<T>;\n\n const groups = Array.isArray(resourceGroup)\n ? resourceGroup\n : resourceGroup\n ? [resourceGroup]\n : [];\n for (const group of groups.concat(allResources)) {\n group.add(baseInstance);\n }\n\n get(...([] as any));\n\n return baseInstance;\n}\n\nexport const createCache = /* @__PURE__ */ Object.assign(create, {\n defaultOptions: {\n invalidateOnWindowFocus: true,\n invalidateOnActivation: true,\n clearUnusedAfter: { days: 1 },\n } as CacheOptions<unknown>,\n});\n","export class Scope<T> {\n constructor(public readonly defaultValue: T) {\n if ('Provider' in this && this.Provider instanceof Function) {\n this.Provider = this.Provider.bind(this) as any;\n }\n }\n}\n\nexport function createScope<T>(defaultValue: T): Scope<T> {\n return new Scope(defaultValue);\n}\n"],"names":["value"],"mappings":"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"}
1
+ {"version":3,"file":"scope.mjs","sources":["../../src/lib/hash.ts","../../src/core/scope.ts"],"sourcesContent":["export function hash(value: unknown): string {\n if (value instanceof Set) {\n return `s[${[...value].map(hash).sort().join(',')}]`;\n }\n\n if (value instanceof Map) {\n return `m[${[...value.entries()].map(hash).sort().join(',')}]`;\n }\n\n if (Array.isArray(value)) {\n return `[${value.map(hash).join(',')}]`;\n }\n\n if (value instanceof Object) {\n return `o[${Object.entries(value).map(hash).sort().join(',')}]`;\n }\n\n return JSON.stringify(value);\n}\n","export class Scope<T> {\n constructor(public readonly defaultValue: T) {\n if ('Provider' in this && this.Provider instanceof Function) {\n this.Provider = this.Provider.bind(this) as any;\n }\n }\n}\n\nexport function createScope<T>(defaultValue: T): Scope<T> {\n return new Scope(defaultValue);\n}\n"],"names":[],"mappings":"AAAO,SAAS,KAAK,OAAwB;AAC3C,MAAI,iBAAiB,KAAK;AACjB,WAAA,KAAK,CAAC,GAAG,KAAK,EAAE,IAAI,IAAI,EAAE,KAAO,EAAA,KAAK,GAAG;AAAA,EAClD;AAEA,MAAI,iBAAiB,KAAK;AACxB,WAAO,KAAK,CAAC,GAAG,MAAM,QAAS,CAAA,EAAE,IAAI,IAAI,EAAE,KAAK,EAAE,KAAK,GAAG;AAAA,EAC5D;AAEI,MAAA,MAAM,QAAQ,KAAK,GAAG;AACxB,WAAO,IAAI,MAAM,IAAI,IAAI,EAAE,KAAK,GAAG;AAAA,EACrC;AAEA,MAAI,iBAAiB,QAAQ;AACpB,WAAA,KAAK,OAAO,QAAQ,KAAK,EAAE,IAAI,IAAI,EAAE,KAAA,EAAO,KAAK,GAAG;AAAA,EAC7D;AAEO,SAAA,KAAK,UAAU,KAAK;AAC7B;AClBO,MAAM,MAAS;AAAA,EACpB,YAA4B,cAAiB;AAAjB,SAAA,eAAA;AAC1B,QAAI,cAAc,QAAQ,KAAK,oBAAoB,UAAU;AAC3D,WAAK,WAAW,KAAK,SAAS,KAAK,IAAI;AAAA,IACzC;AAAA,EACF;AACF;AAEO,SAAS,YAAe,cAA2B;AACjD,SAAA,IAAI,MAAM,YAAY;AAC/B;"}
package/dist/es/store.mjs CHANGED
@@ -726,14 +726,14 @@ export {
726
726
  calcDuration as a,
727
727
  castArrayPath as b,
728
728
  createStore as c,
729
- set as d,
730
- arrayMethods as e,
731
- setMethods as f,
729
+ deepEqual as d,
730
+ debounce as e,
731
+ set as f,
732
732
  get as g,
733
- debounce as h,
734
- makeSelector as i,
735
- deepEqual as j,
736
- mapMethods as m,
733
+ arrayMethods as h,
734
+ mapMethods as i,
735
+ setMethods as j,
736
+ makeSelector as m,
737
737
  queue as q,
738
738
  recordMethods as r,
739
739
  shallowEqual as s,