atom.io 0.21.1 → 0.22.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.
Files changed (92) hide show
  1. package/data/dist/index.cjs +136 -63
  2. package/data/dist/index.d.ts +6 -0
  3. package/data/dist/index.js +3 -3
  4. package/data/src/join.ts +135 -51
  5. package/data/src/struct-family.ts +2 -2
  6. package/dist/{chunk-RT43TVKP.js → chunk-GVHKIJ3G.js} +1 -1
  7. package/dist/{chunk-HITX3MO4.js → chunk-JA4V7TJY.js} +135 -62
  8. package/dist/index.cjs +2 -7
  9. package/dist/index.d.ts +29 -14
  10. package/dist/index.js +4 -8
  11. package/ephemeral/dist/index.cjs +11 -0
  12. package/ephemeral/dist/index.js +9 -0
  13. package/ephemeral/package.json +16 -0
  14. package/ephemeral/src/index.ts +1 -0
  15. package/eslint-plugin/dist/index.cjs +156 -1
  16. package/eslint-plugin/dist/index.js +156 -1
  17. package/eslint-plugin/src/rules/index.ts +1 -0
  18. package/eslint-plugin/src/rules/lifespan.ts +204 -0
  19. package/eslint-plugin/src/rules/synchronous-selector-dependencies.ts +1 -65
  20. package/eslint-plugin/src/walk.ts +73 -0
  21. package/immortal/dist/index.cjs +100 -0
  22. package/immortal/dist/index.js +97 -0
  23. package/immortal/package.json +16 -0
  24. package/immortal/src/index.ts +2 -0
  25. package/immortal/src/molecule.ts +134 -0
  26. package/immortal/src/seek-state.ts +60 -0
  27. package/internal/dist/index.cjs +186 -146
  28. package/internal/dist/index.d.ts +29 -13
  29. package/internal/dist/index.js +185 -146
  30. package/internal/src/atom/dispose-atom.ts +4 -1
  31. package/internal/src/families/create-readonly-selector-family.ts +9 -9
  32. package/internal/src/families/create-regular-atom-family.ts +15 -20
  33. package/internal/src/families/create-writable-selector-family.ts +6 -7
  34. package/internal/src/families/find-in-store.ts +11 -5
  35. package/internal/src/families/index.ts +2 -0
  36. package/internal/src/families/init-family-member.ts +91 -0
  37. package/internal/src/families/seek-in-store.ts +106 -0
  38. package/internal/src/get-state/get-from-store.ts +2 -2
  39. package/internal/src/mutable/create-mutable-atom-family.ts +17 -23
  40. package/internal/src/mutable/create-mutable-atom.ts +3 -1
  41. package/internal/src/mutable/get-json-family.ts +2 -2
  42. package/internal/src/mutable/get-json-token.ts +27 -12
  43. package/internal/src/mutable/tracker-family.ts +14 -12
  44. package/internal/src/not-found-error.ts +11 -3
  45. package/internal/src/selector/create-readonly-selector.ts +2 -2
  46. package/internal/src/selector/create-writable-selector.ts +2 -2
  47. package/internal/src/selector/dispose-selector.ts +40 -23
  48. package/internal/src/selector/register-selector.ts +8 -5
  49. package/internal/src/set-state/set-into-store.ts +2 -2
  50. package/internal/src/store/index.ts +0 -1
  51. package/internal/src/store/store.ts +18 -5
  52. package/internal/src/subscribe/subscribe-to-state.ts +2 -2
  53. package/internal/src/transaction/build-transaction.ts +7 -2
  54. package/introspection/dist/index.cjs +38 -52
  55. package/introspection/dist/index.js +38 -52
  56. package/introspection/src/attach-atom-index.ts +38 -48
  57. package/introspection/src/attach-selector-index.ts +45 -50
  58. package/json/dist/index.cjs +38 -4
  59. package/json/dist/index.js +40 -6
  60. package/json/src/select-json-family.ts +46 -7
  61. package/package.json +30 -10
  62. package/react/dist/index.cjs +1 -1
  63. package/react/dist/index.js +1 -1
  64. package/react/src/use-json.ts +1 -1
  65. package/react-devtools/dist/index.cjs +11 -10
  66. package/react-devtools/dist/index.js +2 -1
  67. package/react-devtools/src/StateIndex.tsx +2 -1
  68. package/react-devtools/src/TimelineIndex.tsx +2 -1
  69. package/react-devtools/src/TransactionIndex.tsx +7 -7
  70. package/realtime-client/dist/index.cjs +3 -3
  71. package/realtime-client/dist/index.js +3 -3
  72. package/realtime-client/src/pull-mutable-atom-family-member.ts +1 -1
  73. package/realtime-client/src/pull-mutable-atom.ts +1 -1
  74. package/realtime-client/src/sync-continuity.ts +1 -2
  75. package/realtime-react/dist/index.cjs +1 -1
  76. package/realtime-react/dist/index.js +1 -1
  77. package/realtime-server/dist/index.cjs +18 -17
  78. package/realtime-server/dist/index.js +7 -6
  79. package/realtime-server/src/realtime-continuity-synchronizer.ts +5 -3
  80. package/realtime-server/src/realtime-mutable-family-provider.ts +2 -1
  81. package/realtime-server/src/realtime-mutable-provider.ts +1 -1
  82. package/realtime-testing/dist/index.cjs +6 -2
  83. package/realtime-testing/dist/index.js +8 -5
  84. package/realtime-testing/src/setup-realtime-test.tsx +5 -2
  85. package/src/atom.ts +10 -4
  86. package/src/index.ts +1 -2
  87. package/src/selector.ts +10 -4
  88. package/src/silo.ts +3 -3
  89. package/src/transaction.ts +5 -2
  90. package/internal/src/store/withdraw-new-family-member.ts +0 -69
  91. /package/{src → ephemeral/src}/find-state.ts +0 -0
  92. /package/src/{dispose.ts → dispose-state.ts} +0 -0
@@ -1,5 +1,6 @@
1
1
  import { Func, TransactionToken, TransactionUpdate, TransactionOptions, TransactorsWithRunAndEnv, RegularAtomToken, MutableAtomToken, AtomToken, WritableSelectorToken, ReadonlySelectorToken, SelectorToken, WritableToken, ReadableToken, TimelineManageable, StateUpdate, TokenType, FamilyMetadata, TimelineUpdate, TimelineOptions, TimelineToken, WritableSelectorFamily, MutableAtomFamily, RegularAtomFamily, ReadonlySelectorFamily, AtomIOLogger, Logger, AtomFamily, SelectorFamily, RegularAtomFamilyToken, MutableAtomFamilyToken, AtomFamilyToken, ReadonlySelectorFamilyToken, WritableSelectorFamilyToken, SelectorFamilyToken, MutableAtomOptions, MutableAtomFamilyOptions, RegularAtomOptions, RegularAtomFamilyOptions, ReadonlySelectorFamilyOptions, WritableSelectorFamilyOptions, WritableFamilyToken, ReadableFamilyToken, KeyedStateUpdate, ReadonlySelectorOptions, WritableSelectorOptions, Transactors, UpdateHandler, TransactionUpdateHandler } from 'atom.io';
2
2
  import { Json, JsonInterface } from 'atom.io/json';
3
+ import { Molecule } from 'atom.io/immortal';
3
4
 
4
5
  type primitive = boolean | number | string | null;
5
6
 
@@ -221,6 +222,8 @@ declare class Store implements Lineage {
221
222
  selectorGraph: Junction<"upstreamSelectorKey", "downstreamSelectorKey", {
222
223
  source: string;
223
224
  }>;
225
+ molecules: Map<string, Molecule<any>>;
226
+ miscResources: Map<string, Disposable>;
224
227
  on: {
225
228
  atomCreation: Subject<AtomToken<unknown>>;
226
229
  atomDisposal: Subject<AtomToken<unknown>>;
@@ -235,10 +238,11 @@ declare class Store implements Lineage {
235
238
  transactionMeta: TransactionEpoch | TransactionProgress<Func>;
236
239
  config: {
237
240
  name: string;
241
+ lifespan: `ephemeral` | `immortal`;
238
242
  };
239
243
  loggers: AtomIOLogger[];
240
244
  logger: Logger;
241
- constructor(name: string, store?: Store | null);
245
+ constructor(config: Store[`config`], store?: Store | null);
242
246
  }
243
247
  declare const IMPLICIT: {
244
248
  STORE_INTERNAL: Store | undefined;
@@ -264,12 +268,6 @@ declare function withdraw<T, K extends Json.Serializable>(token: SelectorFamilyT
264
268
  declare function withdraw<T extends Func>(token: TransactionToken<T>, store: Store): Transaction<T extends Func ? T : never>;
265
269
  declare function withdraw<T>(token: TimelineToken<T>, store: Store): Timeline<T extends TimelineManageable ? T : never>;
266
270
 
267
- declare function withdrawOrCreate<T>(token: RegularAtomToken<T>, store: Store): Atom<T>;
268
- declare function withdrawOrCreate<T>(token: WritableSelectorToken<T>, store: Store): WritableSelector<T>;
269
- declare function withdrawOrCreate<T>(token: ReadonlySelectorToken<T>, store: Store): ReadonlySelector<T>;
270
- declare function withdrawOrCreate<T>(token: WritableToken<T>, store: Store): WritableState<T>;
271
- declare function withdrawOrCreate<T>(token: ReadableToken<T>, store: Store): ReadableState<T>;
272
-
273
271
  interface Transceiver<Signal extends Json.Serializable> {
274
272
  do: (update: Signal) => number | `OUT_OF_RANGE` | null;
275
273
  undo: (update: Signal) => void;
@@ -285,9 +283,9 @@ declare function createMutableAtom<T extends Transceiver<any>, J extends Json.Se
285
283
 
286
284
  declare function createMutableAtomFamily<T extends Transceiver<any>, J extends Json.Serializable, K extends string>(options: MutableAtomFamilyOptions<T, J, K>, store: Store): MutableAtomFamily<T, J, K>;
287
285
 
288
- declare const getJsonFamily: <Core extends Transceiver<Json.Serializable>, SerializableCore extends Json.Serializable, Key extends string>(mutableAtomFamily: MutableAtomFamily<Core, SerializableCore, Key>, store: Store) => WritableSelectorFamily<SerializableCore, Key>;
286
+ declare const getJsonFamily: <Core extends Transceiver<Json.Serializable>, SerializableCore extends Json.Serializable, Key extends string>(mutableAtomFamily: MutableAtomFamilyToken<Core, SerializableCore, Key>, store: Store) => WritableSelectorFamily<SerializableCore, Key>;
289
287
 
290
- declare const getJsonToken: <Core extends Transceiver<any>, SerializableCore extends Json.Serializable>(mutableAtomToken: MutableAtomToken<Core, SerializableCore>) => WritableSelectorToken<SerializableCore>;
288
+ declare const getJsonToken: <Core extends Transceiver<any>, SerializableCore extends Json.Serializable>(mutableAtomToken: MutableAtomToken<Core, SerializableCore>, store: Store) => WritableSelectorToken<SerializableCore>;
291
289
 
292
290
  declare const getUpdateToken: <Core extends Transceiver<any>, SerializableCore extends Json.Serializable>(mutableAtomToken: MutableAtomToken<Core, SerializableCore>) => RegularAtomToken<Signal<Core>>;
293
291
 
@@ -314,9 +312,9 @@ declare class Tracker<Mutable extends Transceiver<any>> {
314
312
 
315
313
  declare class FamilyTracker<Core extends Transceiver<any>, FamilyMemberKey extends Json.Serializable> {
316
314
  private readonly Update;
317
- readonly findLatestUpdateState: RegularAtomFamily<typeof this.Update | null, FamilyMemberKey>;
318
- readonly findMutableState: MutableAtomFamily<Core, any, FamilyMemberKey>;
319
- constructor(findMutableState: MutableAtomFamily<Core, any, FamilyMemberKey>, store: Store);
315
+ readonly latestUpdateAtoms: RegularAtomFamily<typeof this.Update | null, FamilyMemberKey>;
316
+ readonly mutableAtoms: MutableAtomFamily<Core, any, FamilyMemberKey>;
317
+ constructor(mutableAtoms: MutableAtomFamily<Core, any, FamilyMemberKey>, store: Store);
320
318
  }
321
319
 
322
320
  declare function arbitrary(random?: () => number): string;
@@ -375,6 +373,24 @@ declare function findInStore<T, K extends Json.Serializable, Key extends K>(toke
375
373
  declare function findInStore<T, K extends Json.Serializable, Key extends K>(token: WritableFamilyToken<T, K>, key: Key, store: Store): WritableToken<T>;
376
374
  declare function findInStore<T, K extends Json.Serializable, Key extends K>(token: ReadableFamilyToken<T, K>, key: Key, store: Store): ReadableToken<T>;
377
375
 
376
+ declare function initFamilyMember<T extends Transceiver<any>, J extends Json.Serializable, K extends Json.Serializable, Key extends K>(token: MutableAtomFamilyToken<T, J, K>, key: Key, store: Store): MutableAtomToken<T, J>;
377
+ declare function initFamilyMember<T, K extends Json.Serializable, Key extends K>(token: RegularAtomFamilyToken<T, K>, key: Key, store: Store): RegularAtomToken<T>;
378
+ declare function initFamilyMember<T, K extends Json.Serializable, Key extends K>(token: AtomFamilyToken<T, K>, key: Key, store: Store): AtomToken<T>;
379
+ declare function initFamilyMember<T, K extends Json.Serializable, Key extends K>(token: WritableSelectorFamilyToken<T, K>, key: Key, store: Store): WritableSelectorToken<T>;
380
+ declare function initFamilyMember<T, K extends Json.Serializable, Key extends K>(token: ReadonlySelectorFamilyToken<T, K>, key: Key, store: Store): ReadonlySelectorToken<T>;
381
+ declare function initFamilyMember<T, K extends Json.Serializable, Key extends K>(token: SelectorFamilyToken<T, K>, key: Key, store: Store): SelectorToken<T>;
382
+ declare function initFamilyMember<T, K extends Json.Serializable, Key extends K>(token: WritableFamilyToken<T, K>, key: Key, store: Store): WritableToken<T>;
383
+ declare function initFamilyMember<T, K extends Json.Serializable, Key extends K>(token: ReadableFamilyToken<T, K>, key: Key, store: Store): ReadableToken<T>;
384
+
385
+ declare function seekInStore<T extends Transceiver<any>, J extends Json.Serializable, K extends Json.Serializable, Key extends K>(token: MutableAtomFamilyToken<T, J, K>, key: Key, store: Store): MutableAtomToken<T, J> | undefined;
386
+ declare function seekInStore<T, K extends Json.Serializable, Key extends K>(token: RegularAtomFamilyToken<T, K>, key: Key, store: Store): RegularAtomToken<T> | undefined;
387
+ declare function seekInStore<T, K extends Json.Serializable, Key extends K>(token: AtomFamilyToken<T, K>, key: Key, store: Store): AtomToken<T> | undefined;
388
+ declare function seekInStore<T, K extends Json.Serializable, Key extends K>(token: WritableSelectorFamilyToken<T, K>, key: Key, store: Store): WritableSelectorToken<T> | undefined;
389
+ declare function seekInStore<T, K extends Json.Serializable, Key extends K>(token: ReadonlySelectorFamilyToken<T, K>, key: Key, store: Store): ReadonlySelectorToken<T> | undefined;
390
+ declare function seekInStore<T, K extends Json.Serializable, Key extends K>(token: SelectorFamilyToken<T, K>, key: Key, store: Store): SelectorToken<T> | undefined;
391
+ declare function seekInStore<T, K extends Json.Serializable, Key extends K>(token: WritableFamilyToken<T, K>, key: Key, store: Store): WritableToken<T> | undefined;
392
+ declare function seekInStore<T, K extends Json.Serializable, Key extends K>(token: ReadableFamilyToken<T, K>, key: Key, store: Store): ReadableToken<T> | undefined;
393
+
378
394
  type EnvironmentData = {
379
395
  window: typeof window | undefined;
380
396
  global: typeof global | undefined;
@@ -492,4 +508,4 @@ type Selector<T> = ReadonlySelector<T> | WritableSelector<T>;
492
508
  type WritableState<T> = Atom<T> | WritableSelector<T>;
493
509
  type ReadableState<T> = Atom<T> | Selector<T>;
494
510
 
495
- export { type Atom, type AtomIOState, type AtomKey, type ChildStore, type EnvironmentData, FamilyTracker, Future, IMPLICIT, LazyMap, type Lineage, type Modify, type MutableAtom, NotFoundError, type OperationProgress, type ReadableState, type ReadonlySelector, type ReadonlySelectorKey, type RegularAtom, type RootStore, 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, actUponStore, addAtomToTimeline, applyTransaction, arbitrary, assignTransactionToContinuity, become, buildTransaction, cacheValue, clearStore, closeOperation, createAtomFamily, createMutableAtom, createMutableAtomFamily, createReadonlySelector, createReadonlySelectorFamily, createRegularAtom, createRegularAtomFamily, createSelectorFamily, createStandaloneAtom, createStandaloneSelector, createTimeline, createTransaction, createWritableSelector, deposit, disposeAtom, disposeSelector, evictCachedValue, findInStore, getContinuityKey, getEnvironmentData, getEpochNumberOfAction, getEpochNumberOfContinuity, getFromStore, getJsonFamily, getJsonToken, getSelectorDependencyKeys, getUpdateToken, ingestAtomUpdate, ingestSelectorUpdate, ingestTransactionUpdate, isAtomDefault, isAtomKey, isChildStore, isDone, isMutable, isReadonlySelectorKey, isRootStore, isSelectorKey, isStateKey, isTransceiver, markAtomAsDefault, markAtomAsNotDefault, markDone, newest, openOperation, readCachedValue, readOrComputeValue, registerSelector, setAtomOrSelector, setEpochNumberOfAction, setEpochNumberOfContinuity, setIntoStore, subscribeToRootAtoms, subscribeToState, subscribeToTimeline, subscribeToTransaction, timeTravel, traceAllSelectorAtoms, traceSelectorAtoms, updateSelectorAtoms, withdraw, withdrawOrCreate };
511
+ export { type Atom, type AtomIOState, type AtomKey, type ChildStore, type EnvironmentData, FamilyTracker, Future, IMPLICIT, LazyMap, type Lineage, type Modify, type MutableAtom, NotFoundError, type OperationProgress, type ReadableState, type ReadonlySelector, type ReadonlySelectorKey, type RegularAtom, type RootStore, 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, actUponStore, addAtomToTimeline, applyTransaction, arbitrary, assignTransactionToContinuity, become, buildTransaction, cacheValue, clearStore, closeOperation, createAtomFamily, createMutableAtom, createMutableAtomFamily, createReadonlySelector, createReadonlySelectorFamily, createRegularAtom, createRegularAtomFamily, createSelectorFamily, createStandaloneAtom, createStandaloneSelector, createTimeline, createTransaction, createWritableSelector, deposit, disposeAtom, disposeSelector, evictCachedValue, findInStore, getContinuityKey, getEnvironmentData, getEpochNumberOfAction, getEpochNumberOfContinuity, getFromStore, getJsonFamily, getJsonToken, getSelectorDependencyKeys, getUpdateToken, ingestAtomUpdate, ingestSelectorUpdate, ingestTransactionUpdate, initFamilyMember, isAtomDefault, isAtomKey, isChildStore, isDone, isMutable, isReadonlySelectorKey, isRootStore, isSelectorKey, isStateKey, isTransceiver, markAtomAsDefault, markAtomAsNotDefault, markDone, newest, openOperation, readCachedValue, readOrComputeValue, registerSelector, seekInStore, setAtomOrSelector, setEpochNumberOfAction, setEpochNumberOfContinuity, setIntoStore, subscribeToRootAtoms, subscribeToState, subscribeToTimeline, subscribeToTransaction, timeTravel, traceAllSelectorAtoms, traceSelectorAtoms, updateSelectorAtoms, withdraw };