atom.io 0.16.3 → 0.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +35 -50
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +11 -26
- package/dist/index.js.map +1 -1
- package/internal/dist/index.cjs +48 -17
- package/internal/dist/index.cjs.map +1 -1
- package/internal/dist/index.d.ts +7 -3
- package/internal/dist/index.js +47 -18
- package/internal/dist/index.js.map +1 -1
- package/internal/src/atom/create-regular-atom.ts +2 -3
- package/internal/src/get-state/get-from-store.ts +14 -0
- package/internal/src/get-state/index.ts +2 -0
- package/internal/src/{read-or-compute-value.ts → get-state/read-or-compute-value.ts} +3 -3
- package/internal/src/index.ts +1 -1
- package/internal/src/ingest-updates/ingest-atom-update.ts +2 -2
- package/internal/src/mutable/create-mutable-atom.ts +3 -4
- package/internal/src/mutable/tracker.ts +18 -13
- package/internal/src/selector/register-selector.ts +1 -1
- package/internal/src/set-state/index.ts +1 -0
- package/internal/src/set-state/set-atom.ts +1 -1
- package/internal/src/set-state/set-into-store.ts +24 -0
- package/internal/src/subscribe/subscribe-to-root-atoms.ts +1 -1
- package/internal/src/transaction/build-transaction.ts +5 -3
- package/package.json +1 -1
- package/react/dist/index.cjs +3 -3
- package/react/dist/index.cjs.map +1 -1
- package/react/dist/index.js +5 -5
- package/react/dist/index.js.map +1 -1
- package/react/src/use-i.ts +2 -3
- package/react/src/use-o.ts +3 -4
- package/realtime-client/dist/index.cjs +24 -21
- package/realtime-client/dist/index.cjs.map +1 -1
- package/realtime-client/dist/index.js +24 -21
- package/realtime-client/dist/index.js.map +1 -1
- package/realtime-client/src/pull-family-member.ts +3 -3
- package/realtime-client/src/pull-mutable-family-member.ts +4 -4
- package/realtime-client/src/pull-mutable.ts +4 -4
- package/realtime-client/src/pull-state.ts +3 -3
- package/realtime-client/src/sync-server-action.ts +9 -6
- package/realtime-client/src/sync-state.ts +3 -3
- package/realtime-server/dist/index.cjs +32 -32
- package/realtime-server/dist/index.cjs.map +1 -1
- package/realtime-server/dist/index.js +24 -24
- package/realtime-server/dist/index.js.map +1 -1
- package/realtime-server/src/realtime-action-synchronizer.ts +15 -9
- package/realtime-server/src/realtime-family-provider.ts +10 -5
- package/realtime-server/src/realtime-mutable-family-provider.ts +6 -5
- package/realtime-server/src/realtime-mutable-provider.ts +3 -2
- package/realtime-server/src/realtime-state-provider.ts +3 -3
- package/realtime-server/src/realtime-state-receiver.ts +2 -2
- package/realtime-server/src/realtime-state-synchronizer.ts +3 -3
- package/realtime-testing/dist/index.cjs +2 -2
- package/realtime-testing/dist/index.cjs.map +1 -1
- package/realtime-testing/dist/index.js +2 -2
- package/realtime-testing/dist/index.js.map +1 -1
- package/realtime-testing/src/setup-realtime-test.tsx +2 -2
- package/src/get-state.ts +2 -11
- package/src/set-state.ts +1 -13
- package/src/silo.ts +7 -3
package/internal/dist/index.d.ts
CHANGED
|
@@ -350,6 +350,10 @@ type EnvironmentData = {
|
|
|
350
350
|
};
|
|
351
351
|
declare function getEnvironmentData(store: Store): EnvironmentData;
|
|
352
352
|
|
|
353
|
+
declare function getFromStore<T>(token: ReadableToken<T>, store: Store): T;
|
|
354
|
+
|
|
355
|
+
declare const readOrComputeValue: <T>(state: ReadableState<T>, target: Store) => T;
|
|
356
|
+
|
|
353
357
|
declare function ingestAtomUpdate(applying: `newValue` | `oldValue`, atomUpdate: KeyedStateUpdate<any>, store: Store): void;
|
|
354
358
|
|
|
355
359
|
declare function ingestSelectorUpdate(applying: `newValue` | `oldValue`, selectorUpdate: TimelineSelectorUpdate<any>, store: Store): void;
|
|
@@ -390,8 +394,6 @@ declare class NotFoundError extends Error {
|
|
|
390
394
|
constructor(token: AtomIOToken, store: Store);
|
|
391
395
|
}
|
|
392
396
|
|
|
393
|
-
declare const readOrComputeValue: <T>(state: ReadableState<T>, target: Store) => T;
|
|
394
|
-
|
|
395
397
|
declare const createReadonlySelector: <T>(options: ReadonlySelectorOptions<T>, family: FamilyMetadata | undefined, store: Store) => ReadonlySelectorToken<T>;
|
|
396
398
|
|
|
397
399
|
declare function createStandaloneSelector<T>(options: WritableSelectorOptions<T>, store: Store): WritableSelectorToken<T>;
|
|
@@ -415,6 +417,8 @@ declare const become: <T>(nextVersionOfThing: T | Modify<T>) => (originalThing:
|
|
|
415
417
|
|
|
416
418
|
declare const setAtomOrSelector: <T>(state: WritableState<T>, value: T | ((oldValue: T) => T), store: Store) => void;
|
|
417
419
|
|
|
420
|
+
declare function setIntoStore<T, New extends T>(token: WritableToken<T>, value: New | ((oldValue: T) => New), store: Store): void;
|
|
421
|
+
|
|
418
422
|
declare const subscribeToRootAtoms: <T>(selector: Selector<T>, store: Store) => (() => void)[] | null;
|
|
419
423
|
|
|
420
424
|
declare function subscribeToState<T>(token: ReadableToken<T>, handleUpdate: UpdateHandler<T>, key: string, store: Store): () => void;
|
|
@@ -456,4 +460,4 @@ type Selector<T> = ReadonlySelector<T> | WritableSelector<T>;
|
|
|
456
460
|
type WritableState<T> = Atom<T> | WritableSelector<T>;
|
|
457
461
|
type ReadableState<T> = Atom<T> | Selector<T>;
|
|
458
462
|
|
|
459
|
-
export { type Atom, type AtomKey, type BaseStateData, type EnvironmentData, FamilyTracker, Future, IMPLICIT, LazyMap, type Lineage, type Modify, type MutableAtom, NotFoundError, type OperationProgress, type ReadableState, type ReadonlySelector, type ReadonlySelectorKey, type RegularAtom, type Selector, type SelectorKey, type Signal, type StateKey, StatefulSubject, Store, Subject, TRANSACTION_PHASES, type Timeline, type TimelineAtomUpdate, type TimelineSelectorUpdate, type TimelineTransactionUpdate, Tracker, type Transaction, type TransactionEpoch, type TransactionPhase, type TransactionProgress, type Transceiver, type TransceiverMode, type Withdrawable, type WritableSelector, type WritableState, abortTransaction, addAtomToTimeline, applyTransaction, become, buildTransaction, cacheValue, clearStore, closeOperation, createAtomFamily, createMutableAtom, createMutableAtomFamily, createReadonlySelector, createReadonlySelectorFamily, createRegularAtom, createRegularAtomFamily, createSelectorFamily, createStandaloneAtom, createStandaloneSelector, createTimeline, createTransaction, createWritableSelector, deleteAtom, deleteSelector, deposit, evictCachedValue, findInStore, getEnvironmentData, getJsonFamily, getJsonToken, getSelectorDependencyKeys, getUpdateToken, ingestAtomUpdate, ingestSelectorUpdate, ingestTransactionUpdate, isAtomDefault, isAtomKey, isDone, isMutable, isReadonlySelectorKey, isSelectorKey, isStateKey, isTransceiver, markAtomAsDefault, markAtomAsNotDefault, markDone, newest, openOperation, readCachedValue, readOrComputeValue, registerSelector, setAtomOrSelector, subscribeToRootAtoms, subscribeToState, subscribeToTimeline, subscribeToTransaction, timeTravel, traceAllSelectorAtoms, traceSelectorAtoms, updateSelectorAtoms, withdraw, withdrawNewFamilyMember };
|
|
463
|
+
export { type Atom, type AtomKey, type BaseStateData, type EnvironmentData, FamilyTracker, Future, IMPLICIT, LazyMap, type Lineage, type Modify, type MutableAtom, NotFoundError, type OperationProgress, type ReadableState, type ReadonlySelector, type ReadonlySelectorKey, type RegularAtom, type Selector, type SelectorKey, type Signal, type StateKey, StatefulSubject, Store, Subject, TRANSACTION_PHASES, type Timeline, type TimelineAtomUpdate, type TimelineSelectorUpdate, type TimelineTransactionUpdate, Tracker, type Transaction, type TransactionEpoch, type TransactionPhase, type TransactionProgress, type Transceiver, type TransceiverMode, type Withdrawable, type WritableSelector, type WritableState, abortTransaction, addAtomToTimeline, applyTransaction, become, buildTransaction, cacheValue, clearStore, closeOperation, createAtomFamily, createMutableAtom, createMutableAtomFamily, createReadonlySelector, createReadonlySelectorFamily, createRegularAtom, createRegularAtomFamily, createSelectorFamily, createStandaloneAtom, createStandaloneSelector, createTimeline, createTransaction, createWritableSelector, deleteAtom, deleteSelector, deposit, evictCachedValue, findInStore, getEnvironmentData, getFromStore, getJsonFamily, getJsonToken, getSelectorDependencyKeys, getUpdateToken, ingestAtomUpdate, ingestSelectorUpdate, ingestTransactionUpdate, isAtomDefault, isAtomKey, isDone, isMutable, isReadonlySelectorKey, isSelectorKey, isStateKey, isTransceiver, markAtomAsDefault, markAtomAsNotDefault, markDone, newest, openOperation, readCachedValue, readOrComputeValue, registerSelector, setAtomOrSelector, setIntoStore, subscribeToRootAtoms, subscribeToState, subscribeToTimeline, subscribeToTransaction, timeTravel, traceAllSelectorAtoms, traceSelectorAtoms, updateSelectorAtoms, withdraw, withdrawNewFamilyMember };
|
package/internal/dist/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { Junction } from '../../dist/chunk-NYTGCPHB.js';
|
|
2
2
|
import { isChildStore, isRootStore } from '../../dist/chunk-H4Q5FTPZ.js';
|
|
3
3
|
import { __spreadValues, __spreadProps } from '../../dist/chunk-PZLG2HP3.js';
|
|
4
|
-
import { AtomIOLogger, getState, setState, runTransaction } from 'atom.io';
|
|
5
4
|
import { stringifyJson, selectJson, parseJson, selectJsonFamily } from 'atom.io/json';
|
|
5
|
+
import { AtomIOLogger, runTransaction } from 'atom.io';
|
|
6
6
|
import { withdraw as withdraw$1 } from 'atom.io/internal';
|
|
7
7
|
|
|
8
8
|
// internal/src/lineage.ts
|
|
@@ -317,7 +317,7 @@ var evictCachedValue = (key, target) => {
|
|
|
317
317
|
target.logger.info(`\u{1F5D1}`, `state`, key, `evicted`);
|
|
318
318
|
};
|
|
319
319
|
|
|
320
|
-
// internal/src/read-or-compute-value.ts
|
|
320
|
+
// internal/src/get-state/read-or-compute-value.ts
|
|
321
321
|
var readOrComputeValue = (state, target) => {
|
|
322
322
|
if (target.valueMap.has(state.key)) {
|
|
323
323
|
target.logger.info(`\u{1F4D6}`, state.type, state.key, `reading cached value`);
|
|
@@ -687,6 +687,21 @@ var setAtomOrSelector = (state, value, store) => {
|
|
|
687
687
|
}
|
|
688
688
|
};
|
|
689
689
|
|
|
690
|
+
// internal/src/set-state/set-into-store.ts
|
|
691
|
+
function setIntoStore(token, value, store) {
|
|
692
|
+
var _a;
|
|
693
|
+
const rejection = openOperation(token, store);
|
|
694
|
+
if (rejection) {
|
|
695
|
+
return;
|
|
696
|
+
}
|
|
697
|
+
const state = (_a = withdraw(token, store)) != null ? _a : withdrawNewFamilyMember(token, store);
|
|
698
|
+
if (state === void 0) {
|
|
699
|
+
throw new NotFoundError(token, store);
|
|
700
|
+
}
|
|
701
|
+
setAtomOrSelector(state, value, store);
|
|
702
|
+
closeOperation(store);
|
|
703
|
+
}
|
|
704
|
+
|
|
690
705
|
// internal/src/keys.ts
|
|
691
706
|
var isAtomKey = (key, store) => newest(store).atoms.has(key);
|
|
692
707
|
var isSelectorKey = (key, store) => newest(store).selectors.has(key);
|
|
@@ -1065,6 +1080,8 @@ var subscribeToTransaction = (token, handleUpdate, key, store) => {
|
|
|
1065
1080
|
unsubscribe();
|
|
1066
1081
|
};
|
|
1067
1082
|
};
|
|
1083
|
+
|
|
1084
|
+
// internal/src/mutable/tracker.ts
|
|
1068
1085
|
var Tracker = class {
|
|
1069
1086
|
initializeState(mutableState, store) {
|
|
1070
1087
|
var _a;
|
|
@@ -1091,7 +1108,7 @@ var Tracker = class {
|
|
|
1091
1108
|
}
|
|
1092
1109
|
observeCore(mutableState, latestUpdateState, target) {
|
|
1093
1110
|
const subscriptionKey = `tracker:${target.config.name}:${isChildStore(target) ? target.transactionMeta.update.key : `main`}:${mutableState.key}`;
|
|
1094
|
-
const originalInnerValue =
|
|
1111
|
+
const originalInnerValue = getFromStore(mutableState, target);
|
|
1095
1112
|
this.unsubscribeFromInnerValue = originalInnerValue.subscribe(
|
|
1096
1113
|
subscriptionKey,
|
|
1097
1114
|
(update) => {
|
|
@@ -1100,12 +1117,12 @@ var Tracker = class {
|
|
|
1100
1117
|
subscriptionKey,
|
|
1101
1118
|
() => {
|
|
1102
1119
|
unsubscribe();
|
|
1103
|
-
|
|
1120
|
+
setIntoStore(latestUpdateState, update, target);
|
|
1104
1121
|
}
|
|
1105
1122
|
);
|
|
1106
1123
|
} else {
|
|
1107
|
-
|
|
1108
|
-
|
|
1124
|
+
setIntoStore(mutableState, (current) => current, target);
|
|
1125
|
+
setIntoStore(latestUpdateState, update, target);
|
|
1109
1126
|
}
|
|
1110
1127
|
}
|
|
1111
1128
|
);
|
|
@@ -1122,12 +1139,12 @@ var Tracker = class {
|
|
|
1122
1139
|
subscriptionKey,
|
|
1123
1140
|
() => {
|
|
1124
1141
|
unsubscribe();
|
|
1125
|
-
|
|
1142
|
+
setIntoStore(latestUpdateState, update2, target);
|
|
1126
1143
|
}
|
|
1127
1144
|
);
|
|
1128
1145
|
} else {
|
|
1129
|
-
|
|
1130
|
-
|
|
1146
|
+
setIntoStore(mutableState, (current) => current, target);
|
|
1147
|
+
setIntoStore(latestUpdateState, update2, target);
|
|
1131
1148
|
}
|
|
1132
1149
|
}
|
|
1133
1150
|
);
|
|
@@ -1152,7 +1169,7 @@ var Tracker = class {
|
|
|
1152
1169
|
{ key: timelineId, type: `timeline` },
|
|
1153
1170
|
(update) => {
|
|
1154
1171
|
unsubscribe2();
|
|
1155
|
-
|
|
1172
|
+
setIntoStore(
|
|
1156
1173
|
mutableState,
|
|
1157
1174
|
(transceiver) => {
|
|
1158
1175
|
if (update === `redo` && newValue) {
|
|
@@ -1175,11 +1192,11 @@ var Tracker = class {
|
|
|
1175
1192
|
subscriptionKey,
|
|
1176
1193
|
() => {
|
|
1177
1194
|
unsubscribe();
|
|
1178
|
-
const mutable =
|
|
1195
|
+
const mutable = getFromStore(mutableState, target);
|
|
1179
1196
|
const updateNumber = newValue === null ? -1 : mutable.getUpdateNumber(newValue);
|
|
1180
1197
|
const eventOffset = updateNumber - mutable.cacheUpdateNumber;
|
|
1181
1198
|
if (newValue && eventOffset === 1) {
|
|
1182
|
-
|
|
1199
|
+
setIntoStore(
|
|
1183
1200
|
mutableState,
|
|
1184
1201
|
(transceiver) => (transceiver.do(newValue), transceiver),
|
|
1185
1202
|
target
|
|
@@ -1260,7 +1277,7 @@ function createMutableAtom(options, family, store) {
|
|
|
1260
1277
|
const cleanupFunctions = [];
|
|
1261
1278
|
for (const effect of options.effects) {
|
|
1262
1279
|
const cleanup = effect({
|
|
1263
|
-
setSelf: (next) =>
|
|
1280
|
+
setSelf: (next) => setIntoStore(token, next, store),
|
|
1264
1281
|
onSet: (handle) => subscribeToState(token, handle, `effect[${effectIndex}]`, store)
|
|
1265
1282
|
});
|
|
1266
1283
|
if (cleanup) {
|
|
@@ -1467,7 +1484,7 @@ function createRegularAtom(options, family, store) {
|
|
|
1467
1484
|
const cleanupFunctions = [];
|
|
1468
1485
|
for (const effect of options.effects) {
|
|
1469
1486
|
const cleanup = effect({
|
|
1470
|
-
setSelf: (next) =>
|
|
1487
|
+
setSelf: (next) => setIntoStore(token, next, store),
|
|
1471
1488
|
onSet: (handle) => subscribeToState(token, handle, `effect[${effectIndex}]`, store)
|
|
1472
1489
|
});
|
|
1473
1490
|
if (cleanup) {
|
|
@@ -1533,10 +1550,22 @@ function getEnvironmentData(store) {
|
|
|
1533
1550
|
store
|
|
1534
1551
|
};
|
|
1535
1552
|
}
|
|
1553
|
+
|
|
1554
|
+
// internal/src/get-state/get-from-store.ts
|
|
1555
|
+
function getFromStore(token, store) {
|
|
1556
|
+
var _a;
|
|
1557
|
+
const state = (_a = withdraw(token, store)) != null ? _a : withdrawNewFamilyMember(token, store);
|
|
1558
|
+
if (state === void 0) {
|
|
1559
|
+
throw new NotFoundError(token, store);
|
|
1560
|
+
}
|
|
1561
|
+
return readOrComputeValue(state, store);
|
|
1562
|
+
}
|
|
1563
|
+
|
|
1564
|
+
// internal/src/ingest-updates/ingest-atom-update.ts
|
|
1536
1565
|
function ingestAtomUpdate(applying, atomUpdate, store) {
|
|
1537
1566
|
const { key, newValue, oldValue } = atomUpdate;
|
|
1538
1567
|
const value = applying === `newValue` ? newValue : oldValue;
|
|
1539
|
-
|
|
1568
|
+
setIntoStore({ key, type: `atom` }, value, store);
|
|
1540
1569
|
}
|
|
1541
1570
|
|
|
1542
1571
|
// internal/src/ingest-updates/ingest-selector-update.ts
|
|
@@ -2069,8 +2098,8 @@ var buildTransaction = (key, params, store, id) => {
|
|
|
2069
2098
|
output: void 0
|
|
2070
2099
|
},
|
|
2071
2100
|
transactors: {
|
|
2072
|
-
get: (token) =>
|
|
2073
|
-
set: (token, value) =>
|
|
2101
|
+
get: (token) => getFromStore(token, child),
|
|
2102
|
+
set: (token, value) => setIntoStore(token, value, child),
|
|
2074
2103
|
run: (token, id2) => runTransaction(token, id2, child),
|
|
2075
2104
|
find: (token, key2) => findInStore(token, key2, child),
|
|
2076
2105
|
env: () => getEnvironmentData(child)
|
|
@@ -2122,6 +2151,6 @@ function createTransaction(options, store) {
|
|
|
2122
2151
|
// internal/src/transaction/index.ts
|
|
2123
2152
|
var TRANSACTION_PHASES = [`idle`, `building`, `applying`];
|
|
2124
2153
|
|
|
2125
|
-
export { FamilyTracker, Future, IMPLICIT, LazyMap, NotFoundError, StatefulSubject, Store, Subject, TRANSACTION_PHASES, Tracker, abortTransaction, addAtomToTimeline, applyTransaction, become, buildTransaction, cacheValue, clearStore, closeOperation, createAtomFamily, createMutableAtom, createMutableAtomFamily, createReadonlySelector, createReadonlySelectorFamily, createRegularAtom, createRegularAtomFamily, createSelectorFamily, createStandaloneAtom, createStandaloneSelector, createTimeline, createTransaction, createWritableSelector, deleteAtom, deleteSelector, deposit, evictCachedValue, findInStore, getEnvironmentData, getJsonFamily, getJsonToken, getSelectorDependencyKeys, getUpdateToken, ingestAtomUpdate, ingestSelectorUpdate, ingestTransactionUpdate, isAtomDefault, isAtomKey, isDone, isMutable, isReadonlySelectorKey, isSelectorKey, isStateKey, isTransceiver, markAtomAsDefault, markAtomAsNotDefault, markDone, newest, openOperation, readCachedValue, readOrComputeValue, registerSelector, setAtomOrSelector, subscribeToRootAtoms, subscribeToState, subscribeToTimeline, subscribeToTransaction, timeTravel, traceAllSelectorAtoms, traceSelectorAtoms, updateSelectorAtoms, withdraw, withdrawNewFamilyMember };
|
|
2154
|
+
export { FamilyTracker, Future, IMPLICIT, LazyMap, NotFoundError, StatefulSubject, Store, Subject, TRANSACTION_PHASES, Tracker, abortTransaction, addAtomToTimeline, applyTransaction, become, buildTransaction, cacheValue, clearStore, closeOperation, createAtomFamily, createMutableAtom, createMutableAtomFamily, createReadonlySelector, createReadonlySelectorFamily, createRegularAtom, createRegularAtomFamily, createSelectorFamily, createStandaloneAtom, createStandaloneSelector, createTimeline, createTransaction, createWritableSelector, deleteAtom, deleteSelector, deposit, evictCachedValue, findInStore, getEnvironmentData, getFromStore, getJsonFamily, getJsonToken, getSelectorDependencyKeys, getUpdateToken, ingestAtomUpdate, ingestSelectorUpdate, ingestTransactionUpdate, isAtomDefault, isAtomKey, isDone, isMutable, isReadonlySelectorKey, isSelectorKey, isStateKey, isTransceiver, markAtomAsDefault, markAtomAsNotDefault, markDone, newest, openOperation, readCachedValue, readOrComputeValue, registerSelector, setAtomOrSelector, setIntoStore, subscribeToRootAtoms, subscribeToState, subscribeToTimeline, subscribeToTransaction, timeTravel, traceAllSelectorAtoms, traceSelectorAtoms, updateSelectorAtoms, withdraw, withdrawNewFamilyMember };
|
|
2126
2155
|
//# sourceMappingURL=out.js.map
|
|
2127
2156
|
//# sourceMappingURL=index.js.map
|