valdres 0.2.0-alpha.0 → 0.2.0-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +85 -78
- package/dist/src/atom.test.d.ts +1 -0
- package/dist/src/atomFamily.test.d.ts +1 -0
- package/dist/src/createStore.test.d.ts +1 -0
- package/dist/src/getDefaultStore.d.ts +1 -1
- package/dist/src/lib/initAtom.test.d.ts +1 -0
- package/dist/src/lib/initSelector.test.d.ts +1 -0
- package/dist/src/lib/recursivlyUpdateSelectors.d.ts +1 -0
- package/dist/src/lib/setAtom.test.d.ts +1 -0
- package/dist/src/lib/subscribe.d.ts +2 -1
- package/dist/src/lib/subscribe.test.d.ts +1 -0
- package/dist/src/lib/transaction.test.d.ts +1 -0
- package/dist/src/lib/unsubscribe.d.ts +1 -1
- package/dist/src/lib/updateSelectorSubscribers.d.ts +1 -1
- package/dist/src/selector.d.ts +2 -4
- package/dist/src/selector.test.d.ts +1 -0
- package/dist/src/selectorFamily.d.ts +2 -4
- package/dist/src/selectorFamily.test.d.ts +1 -0
- package/dist/src/types/Atom.d.ts +3 -1
- package/dist/src/types/AtomFamily.d.ts +1 -1
- package/dist/src/types/Family.d.ts +1 -1
- package/dist/src/types/GetValue.d.ts +1 -1
- package/dist/src/types/Selector.d.ts +6 -2
- package/dist/src/types/SelectorFamily.d.ts +5 -1
- package/dist/src/types/SetAtom.d.ts +1 -1
- package/dist/src/types/StoreData.d.ts +3 -1
- package/dist/src/types/SubscribeFn.d.ts +1 -1
- package/dist/src/utils/isAtom.d.ts +2 -1
- package/dist/src/utils/isPromiseLike.d.ts +1 -1
- package/dist/src/utils/isSelector.d.ts +1 -2
- package/dist/test/utils/wait.d.ts +2 -0
- package/package.json +4 -3
- package/dist/index.d.ts +0 -14
package/dist/index.js
CHANGED
|
@@ -8,7 +8,9 @@ var atom = (defaultValue, options) => {
|
|
|
8
8
|
};
|
|
9
9
|
};
|
|
10
10
|
// src/utils/isPromiseLike.ts
|
|
11
|
-
var isPromiseLike = (object) =>
|
|
11
|
+
var isPromiseLike = (object) => {
|
|
12
|
+
return object && object.then && typeof object.then === "function";
|
|
13
|
+
};
|
|
12
14
|
|
|
13
15
|
// src/lib/stableStringify.ts
|
|
14
16
|
var stableStringifyRecurse = (x, key) => {
|
|
@@ -65,24 +67,15 @@ var stableStringify = (x) => {
|
|
|
65
67
|
};
|
|
66
68
|
|
|
67
69
|
// src/atomFamily.ts
|
|
68
|
-
var handleDefaultValue = (defaultValue, override, key) => {
|
|
69
|
-
if (override) {
|
|
70
|
-
return typeof override === "function" ? () => typeof defaultValue === "function" ? override(defaultValue(key)) : override(defaultValue) : override;
|
|
71
|
-
} else {
|
|
72
|
-
return typeof defaultValue === "function" ? () => defaultValue(key) : defaultValue;
|
|
73
|
-
}
|
|
74
|
-
};
|
|
75
70
|
var atomFamily = (defaultValue, debugLabel) => {
|
|
76
71
|
const map = new Map;
|
|
77
72
|
const atomFamily2 = (key, defaultOverride) => {
|
|
78
73
|
const keyStringified = stableStringify(key);
|
|
79
74
|
if (map.has(keyStringified)) {
|
|
80
|
-
if (defaultOverride)
|
|
81
|
-
throw new Error("defaultOverride is only allowed first time an atom is initiaizlied");
|
|
82
75
|
return map.get(keyStringified);
|
|
83
76
|
}
|
|
84
77
|
const atomDebugLabel = debugLabel && debugLabel + "_" + keyStringified;
|
|
85
|
-
const newAtom = atom(
|
|
78
|
+
const newAtom = atom(typeof defaultValue === "function" ? () => defaultValue(key) : defaultValue, {
|
|
86
79
|
label: atomDebugLabel
|
|
87
80
|
});
|
|
88
81
|
newAtom.family = atomFamily2;
|
|
@@ -94,18 +87,18 @@ var atomFamily = (defaultValue, debugLabel) => {
|
|
|
94
87
|
return atomFamily2;
|
|
95
88
|
};
|
|
96
89
|
// src/lib/updateStateSubscribers.ts
|
|
97
|
-
var updateStateSubscribers = (
|
|
98
|
-
const subscribtions = data.subscriptions.get(
|
|
90
|
+
var updateStateSubscribers = (state, data) => {
|
|
91
|
+
const subscribtions = data.subscriptions.get(state);
|
|
99
92
|
if (subscribtions?.size) {
|
|
100
93
|
for (const subscribtion of subscribtions) {
|
|
101
94
|
subscribtion.callback();
|
|
102
95
|
}
|
|
103
96
|
}
|
|
104
|
-
if (
|
|
105
|
-
const familySubscriptions = data.subscriptions.get(
|
|
97
|
+
if (state.family) {
|
|
98
|
+
const familySubscriptions = data.subscriptions.get(state.family);
|
|
106
99
|
if (familySubscriptions?.size) {
|
|
107
100
|
for (const subscribtion of familySubscriptions) {
|
|
108
|
-
subscribtion.callback(
|
|
101
|
+
subscribtion.callback(state.familyKey);
|
|
109
102
|
}
|
|
110
103
|
}
|
|
111
104
|
}
|
|
@@ -123,12 +116,12 @@ class SuspendAndWaitForResolveError extends Error {
|
|
|
123
116
|
this.promise = promise;
|
|
124
117
|
}
|
|
125
118
|
}
|
|
126
|
-
var getOrInitConsumersSet = (
|
|
127
|
-
const set = data.stateConsumers.get(
|
|
119
|
+
var getOrInitConsumersSet = (state, data) => {
|
|
120
|
+
const set = data.stateConsumers.get(state);
|
|
128
121
|
if (set)
|
|
129
122
|
return set;
|
|
130
123
|
const newSet = new Set;
|
|
131
|
-
data.stateConsumers.set(
|
|
124
|
+
data.stateConsumers.set(state, newSet);
|
|
132
125
|
return newSet;
|
|
133
126
|
};
|
|
134
127
|
var evaluateSelector = (selector, data) => {
|
|
@@ -136,9 +129,9 @@ var evaluateSelector = (selector, data) => {
|
|
|
136
129
|
const updatedDependencies = new Set;
|
|
137
130
|
let result;
|
|
138
131
|
try {
|
|
139
|
-
result = selector.get((
|
|
140
|
-
const value = getState2(
|
|
141
|
-
updatedDependencies.add(
|
|
132
|
+
result = selector.get((state) => {
|
|
133
|
+
const value = getState2(state, data);
|
|
134
|
+
updatedDependencies.add(state);
|
|
142
135
|
if (isPromiseLike(value))
|
|
143
136
|
throw new SuspendAndWaitForResolveError(value);
|
|
144
137
|
return value;
|
|
@@ -152,12 +145,12 @@ var evaluateSelector = (selector, data) => {
|
|
|
152
145
|
}
|
|
153
146
|
const added = updatedDependencies?.difference(currentDependencies);
|
|
154
147
|
const removed = currentDependencies?.difference(updatedDependencies);
|
|
155
|
-
for (const
|
|
156
|
-
const set = getOrInitConsumersSet(
|
|
148
|
+
for (const state of added) {
|
|
149
|
+
const set = getOrInitConsumersSet(state, data);
|
|
157
150
|
set.add(selector);
|
|
158
151
|
}
|
|
159
|
-
for (const
|
|
160
|
-
const set = getOrInitConsumersSet(
|
|
152
|
+
for (const state of removed) {
|
|
153
|
+
const set = getOrInitConsumersSet(state, data);
|
|
161
154
|
set.delete(selector);
|
|
162
155
|
}
|
|
163
156
|
data.stateDependencies.set(selector, updatedDependencies);
|
|
@@ -214,7 +207,7 @@ var updateSelectorSubscribers = (selector, data) => {
|
|
|
214
207
|
}
|
|
215
208
|
if (familySubscriptions?.size) {
|
|
216
209
|
for (const subscribtion of familySubscriptions) {
|
|
217
|
-
subscribtion.callback(
|
|
210
|
+
subscribtion.callback(selector.familyKey);
|
|
218
211
|
}
|
|
219
212
|
}
|
|
220
213
|
};
|
|
@@ -307,25 +300,25 @@ var initAtom = (atom3, data) => {
|
|
|
307
300
|
};
|
|
308
301
|
|
|
309
302
|
// src/utils/isAtom.ts
|
|
310
|
-
var isAtom = (
|
|
303
|
+
var isAtom = (state) => Object.hasOwn(state, "defaultValue");
|
|
311
304
|
|
|
312
305
|
// src/utils/isSelector.ts
|
|
313
|
-
var isSelector = (
|
|
306
|
+
var isSelector = (state) => Object.hasOwn(state, "get");
|
|
314
307
|
|
|
315
308
|
// src/utils/isFamily.ts
|
|
316
|
-
var isFamily = (
|
|
309
|
+
var isFamily = (state) => Object.hasOwn(state, "_map");
|
|
317
310
|
|
|
318
311
|
// src/lib/getState.ts
|
|
319
|
-
var getState2 = (
|
|
320
|
-
if (data.values.has(
|
|
321
|
-
return data.values.get(
|
|
322
|
-
if (isAtom(
|
|
323
|
-
return initAtom(
|
|
324
|
-
if (isSelector(
|
|
325
|
-
return initSelector(
|
|
326
|
-
if (isFamily(
|
|
312
|
+
var getState2 = (state, data) => {
|
|
313
|
+
if (data.values.has(state))
|
|
314
|
+
return data.values.get(state);
|
|
315
|
+
if (isAtom(state))
|
|
316
|
+
return initAtom(state, data);
|
|
317
|
+
if (isSelector(state))
|
|
318
|
+
return initSelector(state, data);
|
|
319
|
+
if (isFamily(state)) {
|
|
327
320
|
const res = [];
|
|
328
|
-
for (const atom3 of
|
|
321
|
+
for (const atom3 of state._map.values()) {
|
|
329
322
|
res.push([atom3.familyKey, getState2(atom3, data)]);
|
|
330
323
|
}
|
|
331
324
|
return res;
|
|
@@ -334,11 +327,11 @@ var getState2 = (state2, data) => {
|
|
|
334
327
|
};
|
|
335
328
|
|
|
336
329
|
// src/lib/unsubscribe.ts
|
|
337
|
-
var unsubscribe = (
|
|
338
|
-
const subscribers = data.subscriptions.get(
|
|
330
|
+
var unsubscribe = (state, subscription, data, mountRes) => {
|
|
331
|
+
const subscribers = data.subscriptions.get(state);
|
|
339
332
|
if (subscribers) {
|
|
340
333
|
subscribers.delete(subscription);
|
|
341
|
-
if (data.subscriptionsRequireEqualCheck.get(
|
|
334
|
+
if (data.subscriptionsRequireEqualCheck.get(state)) {
|
|
342
335
|
let remove = true;
|
|
343
336
|
for (const subscriber of subscribers) {
|
|
344
337
|
if (subscriber.requireDeepEqualCheckBeforeCallback) {
|
|
@@ -347,33 +340,33 @@ var unsubscribe = (state2, subscription, data, mountRes) => {
|
|
|
347
340
|
}
|
|
348
341
|
}
|
|
349
342
|
if (remove) {
|
|
350
|
-
data.subscriptionsRequireEqualCheck.delete(
|
|
343
|
+
data.subscriptionsRequireEqualCheck.delete(state);
|
|
351
344
|
}
|
|
352
345
|
}
|
|
353
346
|
if (subscribers.size === 0) {
|
|
354
|
-
if (
|
|
355
|
-
|
|
347
|
+
if (state.onUnmount) {
|
|
348
|
+
state.onUnmount(mountRes);
|
|
356
349
|
}
|
|
357
350
|
}
|
|
358
351
|
}
|
|
359
352
|
};
|
|
360
353
|
|
|
361
354
|
// src/lib/subscribe.ts
|
|
362
|
-
var initSubscribers = (
|
|
355
|
+
var initSubscribers = (state, data) => {
|
|
363
356
|
const set = new Set;
|
|
364
|
-
data.subscriptions.set(
|
|
357
|
+
data.subscriptions.set(state, set);
|
|
365
358
|
return set;
|
|
366
359
|
};
|
|
367
|
-
var subscribe = (
|
|
368
|
-
const subscribers = data.subscriptions.get(
|
|
369
|
-
if (isSelector(
|
|
370
|
-
initSelector(
|
|
360
|
+
var subscribe = (state, callback, requireDeepEqualCheckBeforeCallback, data) => {
|
|
361
|
+
const subscribers = data.subscriptions.get(state) || initSubscribers(state, data);
|
|
362
|
+
if (isSelector(state) && !data.values.has(state)) {
|
|
363
|
+
initSelector(state, data);
|
|
371
364
|
}
|
|
372
365
|
let subscription;
|
|
373
|
-
if (isFamily(
|
|
366
|
+
if (isFamily(state)) {
|
|
374
367
|
subscription = {
|
|
375
368
|
callback,
|
|
376
|
-
state
|
|
369
|
+
state,
|
|
377
370
|
requireDeepEqualCheckBeforeCallback
|
|
378
371
|
};
|
|
379
372
|
} else {
|
|
@@ -383,16 +376,16 @@ var subscribe = (state2, callback, requireDeepEqualCheckBeforeCallback, data) =>
|
|
|
383
376
|
};
|
|
384
377
|
}
|
|
385
378
|
let mountRes;
|
|
386
|
-
if (subscribers.size === 0 &&
|
|
387
|
-
mountRes =
|
|
388
|
-
setAtom(
|
|
379
|
+
if (subscribers.size === 0 && state.onMount) {
|
|
380
|
+
mountRes = state.onMount((value) => {
|
|
381
|
+
setAtom(state, value, data);
|
|
389
382
|
});
|
|
390
383
|
}
|
|
391
384
|
subscribers.add(subscription);
|
|
392
|
-
if (requireDeepEqualCheckBeforeCallback && data.subscriptionsRequireEqualCheck.get(
|
|
393
|
-
data.subscriptionsRequireEqualCheck.set(
|
|
385
|
+
if (requireDeepEqualCheckBeforeCallback && data.subscriptionsRequireEqualCheck.get(state) !== true) {
|
|
386
|
+
data.subscriptionsRequireEqualCheck.set(state, true);
|
|
394
387
|
}
|
|
395
|
-
return () => unsubscribe(
|
|
388
|
+
return () => unsubscribe(state, subscription, data, mountRes);
|
|
396
389
|
};
|
|
397
390
|
|
|
398
391
|
// src/lib/setAtoms.ts
|
|
@@ -410,8 +403,8 @@ var setAtoms = (pairs, data) => {
|
|
|
410
403
|
};
|
|
411
404
|
|
|
412
405
|
// src/lib/transaction.ts
|
|
413
|
-
var findDependencies = (
|
|
414
|
-
const consumers = data.stateConsumers.get(
|
|
406
|
+
var findDependencies = (state, data, result = new Set) => {
|
|
407
|
+
const consumers = data.stateConsumers.get(state);
|
|
415
408
|
if (consumers?.size) {
|
|
416
409
|
for (const consumer of consumers) {
|
|
417
410
|
if (!result.has(consumer)) {
|
|
@@ -426,18 +419,18 @@ var transaction = (callback, data) => {
|
|
|
426
419
|
let txnAtomMap = new Map;
|
|
427
420
|
let txnSelectorCache = new Map;
|
|
428
421
|
let dirtySelectors = new Set;
|
|
429
|
-
const txnGet = (
|
|
430
|
-
if (isAtom(
|
|
431
|
-
return txnAtomMap.has(
|
|
422
|
+
const txnGet = (state) => {
|
|
423
|
+
if (isAtom(state)) {
|
|
424
|
+
return txnAtomMap.has(state) ? txnAtomMap.get(state) : getState2(state, data);
|
|
432
425
|
} else {
|
|
433
|
-
if (txnSelectorCache.has(
|
|
434
|
-
return txnSelectorCache.get(
|
|
435
|
-
} else if (dirtySelectors.has(
|
|
436
|
-
const res =
|
|
437
|
-
txnSelectorCache.set(
|
|
426
|
+
if (txnSelectorCache.has(state)) {
|
|
427
|
+
return txnSelectorCache.get(state);
|
|
428
|
+
} else if (dirtySelectors.has(state)) {
|
|
429
|
+
const res = state.get(txnGet);
|
|
430
|
+
txnSelectorCache.set(state, res);
|
|
438
431
|
return res;
|
|
439
432
|
} else {
|
|
440
|
-
return getState2(
|
|
433
|
+
return getState2(state, data);
|
|
441
434
|
}
|
|
442
435
|
}
|
|
443
436
|
};
|
|
@@ -489,14 +482,27 @@ var createStore = (id) => {
|
|
|
489
482
|
stateConsumers: new WeakMap,
|
|
490
483
|
stateDependencies: new WeakMap
|
|
491
484
|
};
|
|
492
|
-
const get = (
|
|
493
|
-
const
|
|
494
|
-
if (isAtom(
|
|
495
|
-
|
|
485
|
+
const get = (state) => getState2(state, data);
|
|
486
|
+
const getWithDefault = (atom3, defaultValue) => {
|
|
487
|
+
if (!isAtom(atom3))
|
|
488
|
+
throw new Error("Only atom allowed");
|
|
489
|
+
if (data.values.has(atom3)) {
|
|
490
|
+
return data.values.get(atom3);
|
|
491
|
+
} else {
|
|
492
|
+
if (typeof defaultValue === "function") {
|
|
493
|
+
defaultValue = defaultValue((state) => getState2(state, data));
|
|
494
|
+
}
|
|
495
|
+
data.values.set(atom3, defaultValue);
|
|
496
|
+
return defaultValue;
|
|
497
|
+
}
|
|
498
|
+
};
|
|
499
|
+
const set = (state, value) => {
|
|
500
|
+
if (isAtom(state)) {
|
|
501
|
+
return setAtom(state, value, data);
|
|
496
502
|
} else {
|
|
497
|
-
if (isSelector(
|
|
498
|
-
if (
|
|
499
|
-
txn((set2, get2) =>
|
|
503
|
+
if (isSelector(state)) {
|
|
504
|
+
if (state.set) {
|
|
505
|
+
txn((set2, get2) => state.set({ get: get2, set: set2 }, value));
|
|
500
506
|
return;
|
|
501
507
|
} else {
|
|
502
508
|
throw new Error("set on selector is not supported");
|
|
@@ -506,10 +512,11 @@ var createStore = (id) => {
|
|
|
506
512
|
}
|
|
507
513
|
};
|
|
508
514
|
const reset = (atom3) => resetAtom(atom3, data);
|
|
509
|
-
const sub = (
|
|
515
|
+
const sub = (state, callback, deepEqualCheckBeforeCallback = true) => subscribe(state, callback, deepEqualCheckBeforeCallback, data);
|
|
510
516
|
const txn = (callback) => transaction(callback, data);
|
|
511
517
|
return {
|
|
512
518
|
get,
|
|
519
|
+
getWithDefault,
|
|
513
520
|
set,
|
|
514
521
|
sub,
|
|
515
522
|
txn,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export declare const getDefaultStore: () => any;
|
|
2
|
-
export declare const resetDefaultStore: () => import("
|
|
2
|
+
export declare const resetDefaultStore: () => import("./types/Store").Store;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { Family } from "../types/Family";
|
|
1
2
|
import type { State } from "../types/State";
|
|
2
3
|
import type { StoreData } from "../types/StoreData";
|
|
3
|
-
export declare const subscribe: <V>(state: State<V>, callback: any, data: StoreData) => () => void;
|
|
4
|
+
export declare const subscribe: <V>(state: State<V> | Family<V>, callback: any, requireDeepEqualCheckBeforeCallback: boolean, data: StoreData) => () => void;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { State } from "../types/State";
|
|
2
2
|
import type { StoreData } from "../types/StoreData";
|
|
3
|
-
export declare const unsubscribe: <V>(state: State<V>, subscription: any,
|
|
3
|
+
export declare const unsubscribe: <V>(state: State<V>, subscription: any, data: StoreData, mountRes?: any) => void;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { Selector } from "../types/Selector";
|
|
2
2
|
import type { StoreData } from "../types/StoreData";
|
|
3
|
-
export declare const updateSelectorSubscribers: (selector: Selector, data: StoreData
|
|
3
|
+
export declare const updateSelectorSubscribers: (selector: Selector, data: StoreData) => void;
|
package/dist/src/selector.d.ts
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
1
|
import type { GetValue } from "./types/GetValue";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
debugLabel: string;
|
|
5
|
-
};
|
|
2
|
+
import type { Selector } from "./types/Selector";
|
|
3
|
+
export declare const selector: <Value, FamilyKey = undefined>(get: (get: GetValue) => Value, debugLabel?: string) => Selector<Value, FamilyKey>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1,4 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
_map: Map<any, any>;
|
|
4
|
-
};
|
|
1
|
+
import type { SelectorFamily } from "./types/SelectorFamily";
|
|
2
|
+
export declare const selectorFamily: <Value, Key>(get: any, debugLabel?: string) => SelectorFamily<Value, Key>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/dist/src/types/Atom.d.ts
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import type { AtomFamily } from "./AtomFamily";
|
|
2
|
-
export type Atom<Value = unknown, FamilyKey = undefined> = {
|
|
2
|
+
export type Atom<Value = unknown, FamilyKey = undefined, MountRes = undefined> = {
|
|
3
3
|
defaultValue?: Value | (() => Value | Promise<Value>);
|
|
4
4
|
label?: string;
|
|
5
5
|
family?: AtomFamily<Value, FamilyKey>;
|
|
6
6
|
familyKey?: FamilyKey;
|
|
7
|
+
onMount?: () => MountRes;
|
|
8
|
+
onUnmount?: (mountRes?: MountRes) => void;
|
|
7
9
|
};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import type { State } from "./State";
|
|
2
|
-
export type GetValue = <V>(state: State<V>) => V
|
|
2
|
+
export type GetValue = <V>(state: State<V>) => V | Promise<V>;
|
|
@@ -1,4 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import type { GetValue } from "./GetValue";
|
|
2
|
+
import type { SelectorFamily } from "./SelectorFamily";
|
|
3
|
+
export type Selector<Value = any, FamilyKey = undefined> = {
|
|
4
|
+
get: (get: GetValue) => Value;
|
|
3
5
|
debugLabel?: string;
|
|
6
|
+
family?: SelectorFamily<Value, FamilyKey>;
|
|
7
|
+
familyKey?: FamilyKey;
|
|
4
8
|
};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import type { Atom } from "./Atom";
|
|
2
|
-
export type SetAtom = <V>(atom: Atom<V>, value: V) => void;
|
|
2
|
+
export type SetAtom = <V>(atom: Atom<V>, value: V | ((current: V) => V)) => void;
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
export type StoreData = {
|
|
2
2
|
id: string;
|
|
3
3
|
values: WeakMap<WeakKey, any>;
|
|
4
|
-
|
|
4
|
+
expiredValues: WeakMap<WeakKey, any>;
|
|
5
|
+
subscriptions: WeakMap<WeakKey, Set<any>>;
|
|
6
|
+
subscriptionsRequireEqualCheck: WeakMap<WeakKey, boolean>;
|
|
5
7
|
stateConsumers: WeakMap<WeakKey, any>;
|
|
6
8
|
stateDependencies: WeakMap<WeakKey, any>;
|
|
7
9
|
};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import type { State } from "./State";
|
|
2
|
-
export type SubscribeFn = <V>(state: State<V>, callback: () => void) => () => void;
|
|
2
|
+
export type SubscribeFn = <V>(state: State<V>, callback: () => void, requireDeepEqualCheckBeforeCallback?: boolean) => () => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const isPromiseLike: (object: any) =>
|
|
1
|
+
export declare const isPromiseLike: <T>(object: any) => object is Promise<T>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "valdres",
|
|
3
|
-
"version": "0.2.0-alpha.
|
|
3
|
+
"version": "0.2.0-alpha.2",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Eigil Sagafos"
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
],
|
|
16
16
|
"scripts": {
|
|
17
17
|
"build": "NODE_ENV=production bun scripts/build.ts",
|
|
18
|
-
"build:types": "tsc
|
|
18
|
+
"build:types": "tsc",
|
|
19
19
|
"test": "bun test"
|
|
20
20
|
},
|
|
21
21
|
"dependencies": {
|
|
@@ -23,6 +23,7 @@
|
|
|
23
23
|
},
|
|
24
24
|
"devDependencies": {
|
|
25
25
|
"@testing-library/react-hooks": "8.0.1",
|
|
26
|
+
"jotai": "2.10.0",
|
|
26
27
|
"mitata": "0.1.14",
|
|
27
28
|
"react": ">=18",
|
|
28
29
|
"react-dom": ">=18",
|
|
@@ -33,5 +34,5 @@
|
|
|
33
34
|
"access": "public",
|
|
34
35
|
"registry": "https://registry.npmjs.org/"
|
|
35
36
|
},
|
|
36
|
-
"gitHead": "
|
|
37
|
+
"gitHead": "4f2355214e1e4d2cf9011705733b18ab425f8d20"
|
|
37
38
|
}
|
package/dist/index.d.ts
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
export { atom } from "./src/atom";
|
|
2
|
-
export { atomFamily } from "./src/atomFamily";
|
|
3
|
-
export { createStore } from "./src/createStore";
|
|
4
|
-
export { getDefaultStore, resetDefaultStore } from "./src/getDefaultStore";
|
|
5
|
-
export { selector } from "./src/selector";
|
|
6
|
-
export { selectorFamily } from "./src/selectorFamily";
|
|
7
|
-
export { isAtom } from "./src/utils/isAtom";
|
|
8
|
-
export { isSelector } from "./src/utils/isSelector";
|
|
9
|
-
export { isFamily } from "./src/utils/isFamily";
|
|
10
|
-
export { isPromiseLike } from "./src/utils/isPromiseLike";
|
|
11
|
-
export type { Atom } from "./src/types/Atom";
|
|
12
|
-
export type { Selector } from "./src/types/Selector";
|
|
13
|
-
export type { State } from "./src/types/State";
|
|
14
|
-
export type { Store } from "./src/types/Store";
|