atom.io 0.31.1 → 0.32.1

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 (162) hide show
  1. package/data/dist/index.d.ts +3 -154
  2. package/data/dist/index.js +11 -559
  3. package/data/src/index.ts +0 -2
  4. package/data/src/struct-family.ts +1 -1
  5. package/data/src/struct.ts +1 -2
  6. package/dist/chunk-3PQTWLQQ.js +83 -0
  7. package/dist/chunk-3ZFTRSNG.js +523 -0
  8. package/dist/chunk-4LWKCEW3.js +14 -0
  9. package/dist/chunk-KVI5OBF2.js +153 -0
  10. package/dist/{chunk-Y5MBNTVU.js → chunk-UQEYZ3OI.js} +1814 -721
  11. package/dist/chunk-UYYKOGZQ.js +1034 -0
  12. package/dist/chunk-VRJP2PCU.js +631 -0
  13. package/dist/chunk-X7SD2NXU.js +108 -0
  14. package/dist/index.d.ts +137 -12
  15. package/dist/index.js +1 -228
  16. package/eslint-plugin/dist/index.d.ts +1 -30
  17. package/eslint-plugin/dist/index.js +3 -149
  18. package/eslint-plugin/src/index.ts +0 -1
  19. package/eslint-plugin/src/rules/explicit-state-types.ts +1 -0
  20. package/eslint-plugin/src/rules/index.ts +0 -1
  21. package/eslint-plugin/src/rules/synchronous-selector-dependencies.ts +1 -0
  22. package/eslint-plugin/src/walk.ts +1 -0
  23. package/internal/dist/index.d.ts +129 -58
  24. package/internal/dist/index.js +1 -1
  25. package/internal/src/atom/create-regular-atom.ts +3 -3
  26. package/internal/src/atom/dispose-atom.ts +4 -13
  27. package/internal/src/atom/is-default.ts +3 -3
  28. package/internal/src/caching.ts +5 -5
  29. package/internal/src/capitalize.ts +3 -0
  30. package/internal/src/families/create-readonly-selector-family.ts +5 -6
  31. package/internal/src/families/create-writable-selector-family.ts +1 -4
  32. package/internal/src/families/dispose-from-store.ts +3 -13
  33. package/internal/src/get-state/get-from-store.ts +2 -2
  34. package/internal/src/get-state/read-or-compute-value.ts +1 -1
  35. package/internal/src/index.ts +2 -0
  36. package/internal/src/install-into-store.ts +1 -1
  37. package/internal/src/join/edit-relations-in-store.ts +32 -0
  38. package/internal/src/join/find-relations-in-store.ts +124 -0
  39. package/internal/src/join/get-internal-relations-from-store.ts +14 -0
  40. package/internal/src/join/get-join.ts +31 -0
  41. package/internal/src/join/index.ts +5 -0
  42. package/{data/src/join.ts → internal/src/join/join-internal.ts} +21 -430
  43. package/internal/src/junction.ts +7 -4
  44. package/internal/src/keys.ts +7 -7
  45. package/internal/src/mutable/create-mutable-atom-family.ts +1 -1
  46. package/internal/src/mutable/create-mutable-atom.ts +3 -3
  47. package/internal/src/mutable/get-json-token.ts +1 -1
  48. package/internal/src/mutable/tracker-family.ts +19 -17
  49. package/internal/src/mutable/tracker.ts +8 -8
  50. package/internal/src/pretty-print.ts +1 -1
  51. package/internal/src/selector/create-readonly-selector.ts +3 -7
  52. package/internal/src/selector/create-writable-selector.ts +4 -4
  53. package/internal/src/selector/dispose-selector.ts +20 -11
  54. package/internal/src/selector/get-selector-dependency-keys.ts +1 -1
  55. package/internal/src/selector/register-selector.ts +6 -9
  56. package/internal/src/selector/trace-selector-atoms.ts +2 -2
  57. package/internal/src/set-state/copy-mutable-if-needed.ts +1 -1
  58. package/internal/src/set-state/emit-update.ts +4 -2
  59. package/internal/src/set-state/evict-downstream.ts +1 -1
  60. package/internal/src/set-state/set-atom-or-selector.ts +1 -1
  61. package/internal/src/set-state/set-atom.ts +10 -10
  62. package/internal/src/set-state/set-into-store.ts +2 -2
  63. package/internal/src/set-state/stow-update.ts +1 -1
  64. package/internal/src/store/store.ts +1 -1
  65. package/internal/src/store/withdraw.ts +22 -22
  66. package/internal/src/subscribe/recall-state.ts +1 -1
  67. package/internal/src/subscribe/subscribe-in-store.ts +3 -3
  68. package/internal/src/subscribe/subscribe-to-root-atoms.ts +3 -3
  69. package/internal/src/subscribe/subscribe-to-state.ts +5 -5
  70. package/internal/src/subscribe/subscribe-to-timeline.ts +3 -3
  71. package/internal/src/subscribe/subscribe-to-transaction.ts +3 -3
  72. package/internal/src/timeline/create-timeline.ts +19 -38
  73. package/internal/src/timeline/time-travel.ts +2 -1
  74. package/internal/src/transaction/act-upon-store.ts +2 -2
  75. package/internal/src/transaction/apply-transaction.ts +5 -5
  76. package/internal/src/transaction/assign-transaction-to-continuity.ts +1 -1
  77. package/internal/src/transaction/build-transaction.ts +5 -8
  78. package/internal/src/transaction/create-transaction.ts +3 -3
  79. package/internal/src/transaction/get-epoch-number.ts +3 -3
  80. package/internal/src/transaction/set-epoch-number.ts +2 -2
  81. package/introspection/dist/index.js +2 -620
  82. package/json/dist/index.d.ts +2 -2
  83. package/json/dist/index.js +1 -80
  84. package/json/src/select-json-family.ts +3 -14
  85. package/package.json +31 -49
  86. package/react/dist/index.js +2 -82
  87. package/react/src/use-o.ts +1 -1
  88. package/react/src/use-tl.ts +2 -2
  89. package/react-devtools/dist/index.css +16 -14
  90. package/react-devtools/dist/index.js +31 -18
  91. package/react-devtools/src/Updates.tsx +12 -0
  92. package/react-devtools/src/devtools.scss +16 -14
  93. package/react-devtools/src/json-editor/editors-by-type/utilities/cast-to-json.ts +2 -1
  94. package/realtime/dist/index.d.ts +1 -2
  95. package/realtime/dist/index.js +2 -107
  96. package/realtime/src/realtime-continuity.ts +3 -2
  97. package/realtime/src/shared-room-store.ts +1 -2
  98. package/realtime-client/dist/index.d.ts +9 -9
  99. package/realtime-client/dist/index.js +3 -509
  100. package/realtime-client/src/continuity/register-and-attempt-confirmed-update.ts +3 -3
  101. package/realtime-client/src/continuity/use-conceal-state.ts +1 -1
  102. package/realtime-client/src/pull-atom-family-member.ts +2 -2
  103. package/realtime-client/src/pull-atom.ts +2 -2
  104. package/realtime-client/src/pull-mutable-atom-family-member.ts +2 -2
  105. package/realtime-client/src/pull-mutable-atom.ts +2 -2
  106. package/realtime-client/src/pull-selector-family-member.ts +4 -4
  107. package/realtime-client/src/pull-selector.ts +4 -4
  108. package/realtime-client/src/push-state.ts +5 -10
  109. package/realtime-client/src/server-action.ts +4 -4
  110. package/realtime-client/src/sync-continuity.ts +6 -6
  111. package/realtime-react/dist/index.js +5 -154
  112. package/realtime-react/src/use-pull-atom-family-member.ts +1 -1
  113. package/realtime-react/src/use-pull-atom.ts +1 -1
  114. package/realtime-react/src/use-pull-mutable-atom.ts +1 -1
  115. package/realtime-react/src/use-pull-mutable-family-member.ts +1 -1
  116. package/realtime-react/src/use-pull-selector-family-member.ts +1 -1
  117. package/realtime-react/src/use-pull-selector.ts +1 -1
  118. package/realtime-react/src/use-push.ts +1 -1
  119. package/realtime-react/src/use-server-action.ts +2 -2
  120. package/realtime-react/src/use-sync-continuity.ts +1 -1
  121. package/realtime-server/dist/index.d.ts +2 -4
  122. package/realtime-server/dist/index.js +3 -1001
  123. package/realtime-server/src/continuity/prepare-to-serve-transaction-request.ts +1 -1
  124. package/realtime-server/src/continuity/prepare-to-sync-realtime-continuity.ts +3 -3
  125. package/realtime-server/src/continuity/subscribe-to-continuity-actions.ts +2 -2
  126. package/realtime-server/src/continuity/subscribe-to-continuity-perpectives.ts +2 -2
  127. package/realtime-server/src/ipc-sockets/child-socket.ts +2 -0
  128. package/realtime-server/src/realtime-action-receiver.ts +1 -1
  129. package/realtime-server/src/realtime-family-provider.ts +2 -2
  130. package/realtime-server/src/realtime-mutable-family-provider.ts +2 -2
  131. package/realtime-server/src/realtime-mutable-provider.ts +2 -2
  132. package/realtime-server/src/realtime-server-stores/server-room-external-actions.ts +2 -1
  133. package/realtime-server/src/realtime-server-stores/server-room-external-store.ts +1 -1
  134. package/realtime-server/src/realtime-server-stores/server-sync-store.ts +10 -2
  135. package/realtime-server/src/realtime-server-stores/server-user-store.ts +1 -2
  136. package/realtime-server/src/realtime-state-provider.ts +2 -2
  137. package/realtime-testing/dist/index.js +20 -22
  138. package/realtime-testing/src/setup-realtime-test.tsx +2 -1
  139. package/src/index.ts +4 -0
  140. package/src/join.ts +218 -0
  141. package/src/silo.ts +4 -4
  142. package/src/timeline.ts +1 -1
  143. package/src/transaction.ts +4 -8
  144. package/transceivers/set-rtx/dist/index.d.ts +4 -3
  145. package/transceivers/set-rtx/dist/index.js +1 -215
  146. package/transceivers/set-rtx/src/set-rtx.ts +4 -7
  147. package/web/dist/index.js +1 -15
  148. package/data/src/until.ts +0 -15
  149. package/ephemeral/dist/index.d.ts +0 -67
  150. package/ephemeral/dist/index.js +0 -9
  151. package/ephemeral/package.json +0 -13
  152. package/ephemeral/src/index.ts +0 -1
  153. package/eslint-plugin/src/rules/lifespan.ts +0 -203
  154. package/immortal/dist/index.d.ts +0 -12
  155. package/immortal/dist/index.js +0 -9
  156. package/immortal/package.json +0 -13
  157. package/immortal/src/index.ts +0 -1
  158. package/immortal/src/seek-state.ts +0 -60
  159. package/react-devtools/src/json-editor/assets/Untitled-1.ai +2 -1436
  160. package/react-devtools/src/json-editor/assets/data-vis.ai +1 -1548
  161. package/react-devtools/src/json-editor/comp/json-editor-sketches.ai +5 -1449
  162. /package/{ephemeral/src → src}/find-state.ts +0 -0
@@ -5,7 +5,6 @@ import { ESLintUtils } from '@typescript-eslint/utils';
5
5
  var rules_exports = {};
6
6
  __export(rules_exports, {
7
7
  explicitStateTypes: () => explicitStateTypes,
8
- lifespan: () => lifespan,
9
8
  synchronousSelectorDependencies: () => synchronousSelectorDependencies
10
9
  });
11
10
  var createRule = ESLintUtils.RuleCreator(
@@ -133,150 +132,6 @@ function walk(node, callback, depth = 0) {
133
132
  }
134
133
  }
135
134
 
136
- // eslint-plugin/src/rules/lifespan.ts
137
- var lifespan = {
138
- meta: {
139
- type: `problem`,
140
- docs: {
141
- description: `atom.io provides tools for short-lived (ephemeral) and long-lived (immortal) stores. This rule allows you to guard against unsafe usage of tools for the other type of store.`,
142
- category: `Possible Errors`,
143
- recommended: false,
144
- url: ``
145
- // URL to documentation page for this rule
146
- },
147
- schema: [
148
- {
149
- type: `string`,
150
- enum: [`ephemeral`, `immortal`],
151
- default: `ephemeral`
152
- }
153
- ]
154
- },
155
- create(context) {
156
- const storeLifespan = context.options[0] ?? `ephemeral`;
157
- return {
158
- ImportDeclaration(node) {
159
- const importSource = node.source.value;
160
- if (!importSource.startsWith(`atom.io/`)) {
161
- return;
162
- }
163
- const [_, subPackageName] = importSource.split(`/`);
164
- if (storeLifespan === `immortal` && subPackageName === `ephemeral`) {
165
- context.report({
166
- node,
167
- message: `do not import from "${importSource}" in an ${storeLifespan} store`
168
- });
169
- }
170
- },
171
- CallExpression(node) {
172
- if (storeLifespan === `ephemeral`) {
173
- return;
174
- }
175
- const functionCallee = node.callee.type === `Identifier` ? node.callee : undefined;
176
- const methodCallee = node.callee.type === `MemberExpression` && node.callee.property.type === `Identifier` ? node.callee.property : undefined;
177
- const callee = functionCallee ?? methodCallee;
178
- if (callee === undefined) {
179
- return;
180
- }
181
- if (callee.name === `findState`) {
182
- context.report({
183
- node,
184
- message: `do not use findState in an ${storeLifespan} store`
185
- });
186
- }
187
- const storeProcedures = [];
188
- if (callee.name === `selector` || callee.name === `selectorFamily` || callee.name === `transaction`) {
189
- if (node.arguments[0].type === `ObjectExpression`) {
190
- const argProperties = node.arguments[0].properties;
191
- switch (callee.name) {
192
- case `selector`:
193
- case `selectorFamily`:
194
- {
195
- const getAndSetProps = argProperties.filter(
196
- (prop) => {
197
- return `key` in prop && `name` in prop.key && (prop.key.name === `get` || prop.key.name === `set`);
198
- }
199
- );
200
- switch (callee.name) {
201
- case `selector`:
202
- {
203
- for (const prop of getAndSetProps) {
204
- if (prop.value.type === `FunctionExpression` || prop.value.type === `ArrowFunctionExpression`) {
205
- storeProcedures.push(prop.value);
206
- }
207
- }
208
- }
209
- break;
210
- case `selectorFamily`:
211
- {
212
- for (const prop of getAndSetProps) {
213
- const { value } = prop;
214
- if (value.type === `FunctionExpression` || value.type === `ArrowFunctionExpression`) {
215
- if (value.body.type === `BlockStatement`) {
216
- for (const statement of value.body.body) {
217
- if (statement.type === `ReturnStatement` && statement.argument && (statement.argument.type === `FunctionExpression` || statement.argument.type === `ArrowFunctionExpression`)) {
218
- storeProcedures.push(statement.argument);
219
- }
220
- }
221
- } else if (value.body.type === `FunctionExpression` || value.body.type === `ArrowFunctionExpression`) {
222
- storeProcedures.push(value.body);
223
- }
224
- }
225
- }
226
- }
227
- break;
228
- }
229
- }
230
- break;
231
- case `transaction`:
232
- {
233
- const doProp = argProperties.find(
234
- (prop) => {
235
- return `key` in prop && `name` in prop.key && prop.key.name === `do`;
236
- }
237
- );
238
- if (doProp) {
239
- if (doProp.value.type === `FunctionExpression` || doProp.value.type === `ArrowFunctionExpression`) {
240
- storeProcedures.push(doProp.value);
241
- }
242
- }
243
- }
244
- break;
245
- }
246
- }
247
- }
248
- for (const storeProcedure of storeProcedures) {
249
- const transactorsParam = storeProcedure.params[0];
250
- const nonDestructuredTransactorsName = transactorsParam && `name` in transactorsParam ? transactorsParam.name : undefined;
251
- walk(storeProcedure.body, (n) => {
252
- if (n.type === `CallExpression`) {
253
- let willReport = false;
254
- switch (n.callee.type) {
255
- case `MemberExpression`:
256
- if (n.callee.object.type === `Identifier` && n.callee.object.name === nonDestructuredTransactorsName && n.callee.property.type === `Identifier` && n.callee.property.name === `find`) {
257
- willReport = true;
258
- }
259
- break;
260
- case `Identifier`:
261
- if (n.callee.name === `find`) {
262
- willReport = true;
263
- }
264
- break;
265
- }
266
- if (willReport) {
267
- context.report({
268
- node: n,
269
- message: `Using find in a transactor is not allowed in an immortal store.`
270
- });
271
- }
272
- }
273
- });
274
- }
275
- }
276
- };
277
- }
278
- };
279
-
280
135
  // eslint-plugin/src/rules/synchronous-selector-dependencies.ts
281
136
  var synchronousSelectorDependencies = {
282
137
  meta: {
@@ -327,14 +182,14 @@ var synchronousSelectorDependencies = {
327
182
  }
328
183
  }
329
184
  if (selectorComputation?.type === `FunctionExpression` || selectorComputation?.type === `ArrowFunctionExpression`) {
330
- const nonDestructuredTransactorsName = selectorComputation.params[0] && `name` in selectorComputation.params[0] ? selectorComputation.params[0].name : undefined;
185
+ const nonDestructuredTransactorsName = selectorComputation.params[0] && `name` in selectorComputation.params[0] ? selectorComputation.params[0].name : void 0;
331
186
  let awaited;
332
187
  let awaitNode;
333
188
  walk(selectorComputation, (n, depth) => {
334
189
  if (typeof awaited === `number`) {
335
190
  if (awaited > depth) {
336
- awaited = undefined;
337
- awaitNode = undefined;
191
+ awaited = void 0;
192
+ awaitNode = void 0;
338
193
  }
339
194
  }
340
195
  switch (n.type) {
@@ -376,7 +231,6 @@ var synchronousSelectorDependencies = {
376
231
  var src_default = {
377
232
  rules: {
378
233
  "explicit-state-types": explicitStateTypes,
379
- lifespan,
380
234
  "synchronous-selector-dependencies": synchronousSelectorDependencies
381
235
  }
382
236
  };
@@ -7,7 +7,6 @@ export { Rules }
7
7
  export default {
8
8
  rules: {
9
9
  "explicit-state-types": Rules.explicitStateTypes as any,
10
- lifespan: Rules.lifespan as any,
11
10
  "synchronous-selector-dependencies": Rules.synchronousSelectorDependencies,
12
11
  },
13
12
  } satisfies ESLint.Plugin
@@ -1,3 +1,4 @@
1
+ /* eslint-disable @typescript-eslint/switch-exhaustiveness-check */
1
2
  import { ESLintUtils } from "@typescript-eslint/utils"
2
3
 
3
4
  const createRule = ESLintUtils.RuleCreator(
@@ -1,3 +1,2 @@
1
1
  export * from "./explicit-state-types"
2
- export * from "./lifespan"
3
2
  export * from "./synchronous-selector-dependencies"
@@ -1,3 +1,4 @@
1
+ /* eslint-disable @typescript-eslint/switch-exhaustiveness-check */
1
2
  import type { Rule } from "eslint"
2
3
  import type * as ESTree from "estree"
3
4
 
@@ -1,3 +1,4 @@
1
+ /* eslint-disable @typescript-eslint/switch-exhaustiveness-check */
1
2
  import type * as ESTree from "estree"
2
3
 
3
4
  export function walk(
@@ -1,6 +1,6 @@
1
- import { MutableAtomFamilyToken, MutableAtomToken, RegularAtomFamilyToken, RegularAtomToken, AtomFamilyToken, AtomToken, WritableSelectorFamilyToken, WritableSelectorToken, ReadonlySelectorFamilyToken, ReadonlySelectorToken, SelectorFamilyToken, SelectorToken, WritableFamilyToken, WritableToken, ReadableFamilyToken, ReadableToken, TransactionToken, TransactionUpdate, TransactionOptions, ActorToolkit, TimelineManageable, TimelineToken, AtomIOToken, Hierarchy, Vassal, Above, Claim, CompoundFrom, CompoundTypedKey, SingularTypedKey, StateUpdate, TokenType, FamilyMetadata, StateCreation, StateDisposal, MoleculeCreation, MoleculeDisposal, TimelineUpdate, TimelineOptions, AtomIOLogger, Logger, MutableAtomOptions, MutableAtomFamilyOptions, RegularAtomOptions, RegularAtomFamilyOptions, ReadonlySelectorFamilyOptions, WritableSelectorFamilyOptions, KeyedStateUpdate, MoleculeTransfer, ReadonlySelectorOptions, WritableSelectorOptions, SetterToolkit, UpdateHandler, TransactionUpdateHandler } from 'atom.io';
1
+ import { MutableAtomFamilyToken, MutableAtomToken, RegularAtomFamilyToken, RegularAtomToken, AtomFamilyToken, AtomToken, WritableSelectorFamilyToken, WritableSelectorToken, ReadonlySelectorFamilyToken, ReadonlySelectorToken, SelectorFamilyToken, SelectorToken, WritableFamilyToken, WritableToken, ReadableFamilyToken, ReadableToken, TransactionToken, TransactionUpdate, TransactionOptions, ActorToolkit, TimelineManageable, TimelineToken, AtomIOToken, JoinToken, JoinStates, Hierarchy, Vassal, Above, Claim, CompoundFrom, CompoundTypedKey, SingularTypedKey, JoinOptions, SetterToolkit, Anarchy, TimelineUpdate, StateUpdate, TokenType, FamilyMetadata, StateCreation, StateDisposal, MoleculeCreation, MoleculeDisposal, TimelineOptions, AtomIOLogger, Logger, MutableAtomOptions, MutableAtomFamilyOptions, RegularAtomOptions, RegularAtomFamilyOptions, ReadonlySelectorFamilyOptions, WritableSelectorFamilyOptions, KeyedStateUpdate, MoleculeTransfer, ReadonlySelectorOptions, WritableSelectorOptions, UpdateHandler, TransactionUpdateHandler } from 'atom.io';
2
2
  import { Json, Canonical, stringified, JsonInterface } from 'atom.io/json';
3
- import { Join } from 'atom.io/data';
3
+ import { SetRTX, SetRTXJson } from 'atom.io/transceivers/set-rtx';
4
4
  import { Store as Store$1, Func as Func$1 } from 'atom.io/internal';
5
5
 
6
6
  declare class CircularBuffer<T> {
@@ -142,11 +142,11 @@ declare class Junction<const ASide extends string, const AType extends string, c
142
142
 
143
143
  declare const abortTransaction: (store: Store) => void;
144
144
 
145
- declare function actUponStore<F extends Func>(token: TransactionToken<F>, id: string, store: Store): (...parameters: Parameters<F>) => ReturnType<F>;
145
+ declare function actUponStore<F extends Func>(store: Store, token: TransactionToken<F>, id: string): (...parameters: Parameters<F>) => ReturnType<F>;
146
146
 
147
147
  declare const applyTransaction: <F extends Func>(output: ReturnType<F>, store: Store) => void;
148
148
 
149
- declare function assignTransactionToContinuity(continuityKey: string, transactionKey: string, store: Store): void;
149
+ declare function assignTransactionToContinuity(store: Store, continuityKey: string, transactionKey: string): void;
150
150
 
151
151
  interface RootStore extends Store {
152
152
  transactionMeta: TransactionEpoch;
@@ -161,7 +161,7 @@ interface ChildStore extends Store {
161
161
  declare function isRootStore(store: Store): store is RootStore;
162
162
  declare function isChildStore(store: Store): store is ChildStore;
163
163
 
164
- declare const buildTransaction: (key: string, params: any[], store: Store, id: string) => ChildStore;
164
+ declare const buildTransaction: (store: Store, key: string, params: any[], id: string) => ChildStore;
165
165
 
166
166
  declare class Subject<T> {
167
167
  Subscriber: (value: T) => void;
@@ -183,14 +183,14 @@ type Transaction<F extends Func> = {
183
183
  subject: Subject<TransactionUpdate<F>>;
184
184
  run: (parameters: Parameters<F>, id?: string) => ReturnType<F>;
185
185
  };
186
- declare function createTransaction<F extends Func>(options: TransactionOptions<F>, store: Store): TransactionToken<F>;
186
+ declare function createTransaction<F extends Func>(store: Store, options: TransactionOptions<F>): TransactionToken<F>;
187
187
 
188
- declare function getContinuityKey(transactionKey: string, store: Store): string | undefined;
189
- declare function getEpochNumberOfContinuity(continuityKey: string, store: Store): number | undefined;
190
- declare function getEpochNumberOfAction(transactionKey: string, store: Store): number | undefined;
188
+ declare function getContinuityKey(store: Store, transactionKey: string): string | undefined;
189
+ declare function getEpochNumberOfContinuity(store: Store, continuityKey: string): number | undefined;
190
+ declare function getEpochNumberOfAction(store: Store, transactionKey: string): number | undefined;
191
191
 
192
- declare function setEpochNumberOfContinuity(continuityKey: string, newEpoch: number, store: Store): void;
193
- declare function setEpochNumberOfAction(transactionKey: string, newEpoch: number, store: Store): void;
192
+ declare function setEpochNumberOfContinuity(store: Store, continuityKey: string, newEpoch: number): void;
193
+ declare function setEpochNumberOfAction(store: Store, transactionKey: string, newEpoch: number): void;
194
194
 
195
195
  declare const TRANSACTION_PHASES: readonly ["idle", "building", "applying"];
196
196
  type TransactionPhase = (typeof TRANSACTION_PHASES)[number];
@@ -224,11 +224,11 @@ declare function deposit<T extends Func>(state: Transaction<T>): TransactionToke
224
224
  declare function deposit<M extends TimelineManageable>(state: Timeline<M>): TimelineToken<M>;
225
225
  declare function deposit(resource: AtomIOInternalResource): AtomIOToken;
226
226
 
227
- interface Lineage {
228
- parent: typeof this | null;
229
- child: typeof this | null;
230
- }
231
- declare function newest<T extends Lineage>(scion: T): T;
227
+ declare function editRelationsInStore<ASide extends string, AType extends string, BSide extends string, BType extends string, Cardinality extends `1:1` | `1:n` | `n:n`, Content extends Json.Object | null>(token: JoinToken<ASide, AType, BSide, BType, Cardinality, Content>, change: (relations: Junction<ASide, AType, BSide, BType, Content>) => void, store: Store): void;
228
+
229
+ declare function findRelationsInStore<ASide extends string, AType extends string, BSide extends string, BType extends string, Cardinality extends `1:1` | `1:n` | `n:n`, Content extends Json.Object | null>(token: JoinToken<ASide, AType, BSide, BType, Cardinality, Content>, key: AType | BType, store: Store): JoinStates<ASide, AType, BSide, BType, Cardinality, Content>;
230
+
231
+ declare function getInternalRelationsFromStore(token: JoinToken<any, any, any, any, any, any>, store: Store): MutableAtomFamilyToken<SetRTX<string>, SetRTXJson<string>, string>;
232
232
 
233
233
  type Molecule<K extends Canonical> = {
234
234
  readonly key: K;
@@ -241,6 +241,74 @@ declare function fuseWithinStore<H extends Hierarchy, C extends CompoundFrom<H>,
241
241
  declare function deallocateFromStore<H extends Hierarchy, V extends Vassal<H>>(store: Store, claim: Claim<V>): void;
242
242
  declare function claimWithinStore<H extends Hierarchy, V extends Exclude<Vassal<H>, CompoundTypedKey>, A extends Above<V, H>>(store: Store, newProvenance: A, claim: Claim<V>, exclusive?: `exclusive`): Claim<V>;
243
243
 
244
+ type JoinStateFamilies<ASide extends string, AType extends string, BSide extends string, BType extends string, Cardinality extends `1:1` | `1:n` | `n:n`, Content extends Json.Object | null> = Cardinality extends `1:1` ? (Content extends Json.Object ? {
245
+ readonly [A in ASide as `${A}EntryOf${Capitalize<BSide>}`]: ReadonlySelectorFamilyToken<[
246
+ AType,
247
+ Content
248
+ ] | null, BType>;
249
+ } & {
250
+ readonly [B in BSide as `${B}EntryOf${Capitalize<ASide>}`]: ReadonlySelectorFamilyToken<[
251
+ BType,
252
+ Content
253
+ ] | null, AType>;
254
+ } : {}) & {
255
+ readonly [A in ASide as `${A}KeyOf${Capitalize<BSide>}`]: ReadonlySelectorFamilyToken<AType | null, BType>;
256
+ } & {
257
+ readonly [B in BSide as `${B}KeyOf${Capitalize<ASide>}`]: ReadonlySelectorFamilyToken<BType | null, AType>;
258
+ } : Cardinality extends `1:n` ? (Content extends Json.Object ? {
259
+ readonly [A in ASide as `${A}EntryOf${Capitalize<BSide>}`]: ReadonlySelectorFamilyToken<[
260
+ AType,
261
+ Content
262
+ ] | null, BType>;
263
+ } & {
264
+ readonly [B in BSide as `${B}EntriesOf${Capitalize<ASide>}`]: ReadonlySelectorFamilyToken<[
265
+ BType,
266
+ Content
267
+ ][], AType>;
268
+ } : {}) & {
269
+ readonly [A in ASide as `${A}KeyOf${Capitalize<BSide>}`]: ReadonlySelectorFamilyToken<AType | null, BType>;
270
+ } & {
271
+ readonly [B in BSide as `${B}KeysOf${Capitalize<ASide>}`]: ReadonlySelectorFamilyToken<BType[], AType>;
272
+ } : Cardinality extends `n:n` ? (Content extends Json.Object ? {
273
+ readonly [A in ASide as `${A}EntriesOf${Capitalize<BSide>}`]: ReadonlySelectorFamilyToken<[
274
+ AType,
275
+ Content
276
+ ][], BType>;
277
+ } & {
278
+ readonly [B in BSide as `${B}EntriesOf${Capitalize<ASide>}`]: ReadonlySelectorFamilyToken<[
279
+ BType,
280
+ Content
281
+ ][], AType>;
282
+ } : {}) & {
283
+ readonly [A in ASide as `${A}KeysOf${Capitalize<BSide>}`]: ReadonlySelectorFamilyToken<AType[], BType>;
284
+ } & {
285
+ readonly [B in BSide as `${B}KeysOf${Capitalize<ASide>}`]: ReadonlySelectorFamilyToken<BType[], AType>;
286
+ } : never;
287
+ declare class Join<const ASide extends string, const AType extends string, const BSide extends string, const BType extends string, const Cardinality extends `1:1` | `1:n` | `n:n`, const Content extends Json.Object | null = null, const ContentKey extends CompoundTypedKey<`content`, ASide, BSide> = CompoundTypedKey<`content`, ASide, BSide>> {
288
+ private toolkit;
289
+ options: JoinOptions<ASide, AType, BSide, BType, Cardinality, Content>;
290
+ defaultContent: Content | undefined;
291
+ molecules: Map<string, Molecule<any>>;
292
+ relations: Junction<ASide, AType, BSide, BType, Content>;
293
+ states: JoinStateFamilies<ASide, AType, BSide, BType, Cardinality, Content>;
294
+ core: {
295
+ relatedKeysAtoms: MutableAtomFamilyToken<SetRTX<string>, SetRTXJson<string>, string>;
296
+ };
297
+ transact(toolkit: SetterToolkit, run: (join: Join<ASide, AType, BSide, BType, Cardinality, Content>) => void): void;
298
+ store: Store;
299
+ realm: Anarchy;
300
+ [Symbol.dispose](): void;
301
+ constructor(options: JoinOptions<ASide, AType, BSide, BType, Cardinality, Content>, defaultContent: Content | undefined, store?: Store);
302
+ }
303
+
304
+ declare function getJoin<ASide extends string, AType extends string, BSide extends string, BType extends string, Cardinality extends `1:1` | `1:n` | `n:n`, Content extends Json.Object | null>(token: JoinToken<ASide, AType, BSide, BType, Cardinality, Content>, store: Store): Join<ASide, AType, BSide, BType, Cardinality, Content>;
305
+
306
+ interface Lineage {
307
+ parent: typeof this | null;
308
+ child: typeof this | null;
309
+ }
310
+ declare function newest<T extends Lineage>(scion: T): T;
311
+
244
312
  type OperationProgress = {
245
313
  open: false;
246
314
  } | {
@@ -297,7 +365,7 @@ type Timeline<ManagedAtom extends TimelineManageable> = {
297
365
  subject: Subject<TimelineUpdate<ManagedAtom> | `redo` | `undo`>;
298
366
  subscriptions: Map<string, () => void>;
299
367
  };
300
- declare function createTimeline<ManagedAtom extends TimelineManageable>(options: TimelineOptions<ManagedAtom>, store: Store, data?: Timeline<ManagedAtom>): TimelineToken<ManagedAtom>;
368
+ declare function createTimeline<ManagedAtom extends TimelineManageable>(store: Store, options: TimelineOptions<ManagedAtom>, data?: Timeline<ManagedAtom>): TimelineToken<ManagedAtom>;
301
369
 
302
370
  declare const timeTravel: (store: Store, action: `redo` | `undo`, token: TimelineToken<any>) => void;
303
371
 
@@ -360,27 +428,27 @@ declare const IMPLICIT: {
360
428
  };
361
429
  declare const clearStore: (store: Store) => void;
362
430
 
363
- declare function withdraw<T>(token: RegularAtomToken<T>, store: Store): RegularAtom<T>;
364
- declare function withdraw<T extends Transceiver<any>>(token: MutableAtomToken<T, any>, store: Store): MutableAtom<T, any>;
365
- declare function withdraw<T>(token: AtomToken<T>, store: Store): Atom<T>;
366
- declare function withdraw<T>(token: WritableSelectorToken<T>, store: Store): WritableSelector<T>;
367
- declare function withdraw<T>(token: ReadonlySelectorToken<T>, store: Store): ReadonlySelector<T>;
368
- declare function withdraw<T>(token: SelectorToken<T>, store: Store): Selector<T>;
369
- declare function withdraw<T>(token: WritableToken<T>, store: Store): WritableState<T>;
370
- declare function withdraw<T>(token: ReadableToken<T>, store: Store): ReadableState<T>;
371
- declare function withdraw<T, K extends Canonical>(token: RegularAtomFamilyToken<T, K>, store: Store): RegularAtomFamily<T, K>;
372
- declare function withdraw<T extends Transceiver<any>, J extends Json.Serializable, K extends Canonical>(token: MutableAtomFamilyToken<T, J, K>, store: Store): MutableAtomFamily<T, J, K>;
373
- declare function withdraw<T, K extends Canonical>(token: AtomFamilyToken<T>, store: Store): AtomFamily<T, any>;
374
- declare function withdraw<T, K extends Canonical>(token: ReadonlySelectorFamilyToken<T, K>, store: Store): ReadonlySelectorFamily<T, any>;
375
- declare function withdraw<T, K extends Canonical>(token: WritableSelectorFamilyToken<T, K>, store: Store): WritableSelectorFamily<T, any>;
376
- declare function withdraw<T, K extends Canonical>(token: SelectorFamilyToken<T, K>, store: Store): SelectorFamily<T, any>;
377
- declare function withdraw<T, K extends Canonical>(token: ReadableFamilyToken<T, K>, store: Store): ReadableFamily<T, any>;
378
- declare function withdraw<T, K extends Canonical>(token: WritableFamilyToken<T, K>, store: Store): WritableFamily<T, any>;
379
- declare function withdraw<T extends Func>(token: TransactionToken<T>, store: Store): Transaction<T extends Func ? T : never>;
380
- declare function withdraw<T>(token: TimelineToken<T>, store: Store): Timeline<T extends TimelineManageable ? T : never>;
381
- declare function withdraw<T>(token: WritableToken<T>, store: Store): WritableState<T>;
382
- declare function withdraw<T>(token: ReadableToken<T>, store: Store): ReadableState<T>;
383
- declare function withdraw(token: AtomIOToken, store: Store): AtomIOInternalResource;
431
+ declare function withdraw<T>(store: Store, token: RegularAtomToken<T>): RegularAtom<T>;
432
+ declare function withdraw<T extends Transceiver<any>>(store: Store, token: MutableAtomToken<T, any>): MutableAtom<T, any>;
433
+ declare function withdraw<T>(store: Store, token: AtomToken<T>): Atom<T>;
434
+ declare function withdraw<T>(store: Store, token: WritableSelectorToken<T>): WritableSelector<T>;
435
+ declare function withdraw<T>(store: Store, token: ReadonlySelectorToken<T>): ReadonlySelector<T>;
436
+ declare function withdraw<T>(store: Store, token: SelectorToken<T>): Selector<T>;
437
+ declare function withdraw<T>(store: Store, token: WritableToken<T>): WritableState<T>;
438
+ declare function withdraw<T>(store: Store, token: ReadableToken<T>): ReadableState<T>;
439
+ declare function withdraw<T, K extends Canonical>(store: Store, token: RegularAtomFamilyToken<T, K>): RegularAtomFamily<T, K>;
440
+ declare function withdraw<T extends Transceiver<any>, J extends Json.Serializable, K extends Canonical>(store: Store, token: MutableAtomFamilyToken<T, J, K>): MutableAtomFamily<T, J, K>;
441
+ declare function withdraw<T, K extends Canonical>(store: Store, token: AtomFamilyToken<T>): AtomFamily<T, any>;
442
+ declare function withdraw<T, K extends Canonical>(store: Store, token: ReadonlySelectorFamilyToken<T, K>): ReadonlySelectorFamily<T, any>;
443
+ declare function withdraw<T, K extends Canonical>(store: Store, token: WritableSelectorFamilyToken<T, K>): WritableSelectorFamily<T, any>;
444
+ declare function withdraw<T, K extends Canonical>(store: Store, token: SelectorFamilyToken<T, K>): SelectorFamily<T, any>;
445
+ declare function withdraw<T, K extends Canonical>(store: Store, token: ReadableFamilyToken<T, K>): ReadableFamily<T, any>;
446
+ declare function withdraw<T, K extends Canonical>(store: Store, token: WritableFamilyToken<T, K>): WritableFamily<T, any>;
447
+ declare function withdraw<T extends Func>(store: Store, token: TransactionToken<T>): Transaction<T extends Func ? T : never>;
448
+ declare function withdraw<T>(store: Store, token: TimelineToken<T>): Timeline<T extends TimelineManageable ? T : never>;
449
+ declare function withdraw<T>(store: Store, token: WritableToken<T>): WritableState<T>;
450
+ declare function withdraw<T>(store: Store, token: ReadableToken<T>): ReadableState<T>;
451
+ declare function withdraw(store: Store, token: AtomIOToken): AtomIOInternalResource;
384
452
 
385
453
  interface Transceiver<S extends Json.Serializable> {
386
454
  do: (update: S) => number | `OUT_OF_RANGE` | null;
@@ -419,11 +487,12 @@ declare class Tracker<Mutable extends Transceiver<any>> {
419
487
  private updateCore;
420
488
  mutableState: MutableAtomToken<Mutable, Json.Serializable>;
421
489
  latestUpdateState: RegularAtomToken<typeof this.Update | null>;
422
- dispose: () => void;
490
+ [Symbol.dispose]: () => void;
423
491
  constructor(mutableState: MutableAtomToken<Mutable, Json.Serializable>, store: Store);
424
492
  }
425
493
 
426
494
  declare class FamilyTracker<Core extends Transceiver<any>, FamilyMemberKey extends Canonical> {
495
+ private trackers;
427
496
  private readonly Update;
428
497
  readonly latestUpdateAtoms: RegularAtomFamily<typeof this.Update | null, FamilyMemberKey>;
429
498
  readonly mutableAtoms: MutableAtomFamily<Core, any, FamilyMemberKey>;
@@ -437,11 +506,11 @@ declare function createRegularAtom<T>(store: Store, options: RegularAtomOptions<
437
506
  declare function createStandaloneAtom<T>(store: Store, options: RegularAtomOptions<T>): RegularAtomToken<T>;
438
507
  declare function createStandaloneAtom<T extends Transceiver<any>, J extends Json.Serializable>(store: Store, options: MutableAtomOptions<T, J>): MutableAtomToken<T, J>;
439
508
 
440
- declare function disposeAtom(atomToken: AtomToken<unknown>, store: Store): void;
509
+ declare function disposeAtom(store: Store, atomToken: AtomToken<unknown>): void;
441
510
 
442
- declare const isAtomDefault: (key: string, store: Store) => boolean;
443
- declare const markAtomAsDefault: (key: string, store: Store) => void;
444
- declare const markAtomAsNotDefault: (key: string, store: Store) => void;
511
+ declare const isAtomDefault: (store: Store, key: string) => boolean;
512
+ declare const markAtomAsDefault: (store: Store, key: string) => void;
513
+ declare const markAtomAsNotDefault: (store: Store, key: string) => void;
445
514
 
446
515
  /**
447
516
  * A Promise whose incoming value can be hot swapped.
@@ -463,11 +532,13 @@ declare class Future<T> extends Promise<T> {
463
532
  use(value: Promise<T> | T): void;
464
533
  }
465
534
 
466
- declare function cacheValue<T>(key: string, value: T, subject: Subject<StateUpdate<unknown>>, store: Store): T;
467
- declare function cacheValue<T extends Promise<any>>(key: string, value: T, subject: Subject<StateUpdate<unknown>>, store: Store): Future<T>;
535
+ declare function cacheValue<T>(store: Store, key: string, value: T, subject: Subject<StateUpdate<unknown>>): T;
536
+ declare function cacheValue<T extends Promise<any>>(store: Store, key: string, value: T, subject: Subject<StateUpdate<unknown>>): Future<T>;
468
537
  declare const readCachedValue: <T>(token: ReadableState<any>, target: Store) => T;
469
538
  declare const evictCachedValue: (key: string, target: Store) => void;
470
539
 
540
+ declare function capitalize<S extends string>(string: S): Capitalize<S>;
541
+
471
542
  declare function createAtomFamily<T extends Transceiver<any>, J extends Json.Serializable, K extends Canonical>(store: Store, options: MutableAtomFamilyOptions<T, J, K>): MutableAtomFamilyToken<T, J, K>;
472
543
  declare function createAtomFamily<T, K extends Canonical>(store: Store, options: RegularAtomFamilyOptions<T, K>): RegularAtomFamilyToken<T, K>;
473
544
 
@@ -516,7 +587,7 @@ declare function getEnvironmentData(store: Store): EnvironmentData;
516
587
  declare function getFromStore<T>(store: Store, token: ReadableToken<T>): T;
517
588
  declare function getFromStore<T, K extends Canonical>(store: Store, token: ReadableFamilyToken<T, K>, key: K): T;
518
589
 
519
- declare const readOrComputeValue: <T>(state: ReadableState<T>, target: Store) => T;
590
+ declare const readOrComputeValue: <T>(target: Store, state: ReadableState<T>) => T;
520
591
 
521
592
  declare function getTrace(error: Error): string;
522
593
 
@@ -544,11 +615,11 @@ type ReadonlySelectorKey<T> = string & {
544
615
  __readonlySelectorKey?: never;
545
616
  __brand?: T;
546
617
  };
547
- declare const isAtomKey: (key: string, store: Store) => key is AtomKey<unknown>;
548
- declare const isSelectorKey: (key: string, store: Store) => key is SelectorKey<unknown>;
549
- declare const isReadonlySelectorKey: (key: string, store: Store) => key is ReadonlySelectorKey<unknown>;
618
+ declare const isAtomKey: (store: Store, key: string) => key is AtomKey<unknown>;
619
+ declare const isSelectorKey: (store: Store, key: string) => key is SelectorKey<unknown>;
620
+ declare const isReadonlySelectorKey: (store: Store, key: string) => key is ReadonlySelectorKey<unknown>;
550
621
  type StateKey<T> = AtomKey<T> | ReadonlySelectorKey<T> | SelectorKey<T>;
551
- declare const isStateKey: (key: string, store: Store) => key is StateKey<unknown>;
622
+ declare const isStateKey: (store: Store, key: string) => key is StateKey<unknown>;
552
623
 
553
624
  declare class LazyMap<K, V> extends Map<K, V> {
554
625
  protected readonly source: Map<K, V>;
@@ -574,7 +645,7 @@ declare function createStandaloneSelector<T>(store: Store, options: ReadonlySele
574
645
 
575
646
  declare const createWritableSelector: <T>(store: Store, options: WritableSelectorOptions<T>, family: FamilyMetadata | undefined) => WritableSelectorToken<T>;
576
647
 
577
- declare function disposeSelector(selectorToken: ReadonlySelectorToken<unknown> | WritableSelectorToken<unknown>, store: Store): void;
648
+ declare function disposeSelector(store: Store, selectorToken: SelectorToken<unknown>): void;
578
649
 
579
650
  declare const getSelectorDependencyKeys: (key: string, store: Store) => (AtomKey<unknown> | ReadonlySelectorKey<unknown> | SelectorKey<unknown>)[];
580
651
 
@@ -588,25 +659,25 @@ declare const updateSelectorAtoms: (selectorKey: string, dependency: ReadonlySel
588
659
  type Modify<T> = (thing: T) => T;
589
660
  declare const become: <T>(nextVersionOfThing: Modify<T> | T) => (originalThing: T) => T;
590
661
 
591
- declare const setAtomOrSelector: <T>(state: WritableState<T>, value: T | ((oldValue: T) => T), store: Store) => void;
662
+ declare const setAtomOrSelector: <T>(store: Store, state: WritableState<T>, value: T | ((oldValue: T) => T)) => void;
592
663
 
593
664
  declare function setIntoStore<T, New extends T>(store: Store, token: WritableToken<T>, value: New | ((oldValue: T) => New)): void;
594
665
  declare function setIntoStore<T, K extends Canonical, New extends T>(store: Store, token: WritableFamilyToken<T, K>, key: K, value: New | ((oldValue: T) => New)): void;
595
666
 
596
- declare const recallState: <T>(state: ReadableState<T>, store: Store) => T;
667
+ declare const recallState: <T>(store: Store, state: ReadableState<T>) => T;
597
668
 
598
669
  declare function subscribeInStore<T>(store: Store$1, token: ReadableToken<T>, handleUpdate: UpdateHandler<T>, key?: string): () => void;
599
670
  declare function subscribeInStore<F extends Func$1>(store: Store$1, token: TransactionToken<F>, handleUpdate: TransactionUpdateHandler<F>, key?: string): () => void;
600
671
  declare function subscribeInStore<M extends TimelineManageable>(store: Store$1, token: TimelineToken<M>, handleUpdate: (update: TimelineUpdate<M> | `redo` | `undo`) => void, key?: string): () => void;
601
672
  declare function subscribeInStore<M extends TimelineManageable>(store: Store$1, token: ReadableToken<any> | TimelineToken<M> | TransactionToken<any>, handleUpdate: TransactionUpdateHandler<any> | UpdateHandler<any> | ((update: TimelineUpdate<M> | `redo` | `undo`) => void), key?: string): () => void;
602
673
 
603
- declare const subscribeToRootAtoms: <T>(selector: Selector<T>, store: Store) => (() => void)[];
674
+ declare const subscribeToRootAtoms: <T>(store: Store, selector: Selector<T>) => (() => void)[];
604
675
 
605
- declare function subscribeToState<T>(token: ReadableToken<T>, handleUpdate: UpdateHandler<T>, key: string, store: Store): () => void;
676
+ declare function subscribeToState<T>(store: Store, token: ReadableToken<T>, key: string, handleUpdate: UpdateHandler<T>): () => void;
606
677
 
607
- declare const subscribeToTimeline: <ManagedAtom extends TimelineManageable>(token: TimelineToken<ManagedAtom>, handleUpdate: (update: TimelineUpdate<any> | `redo` | `undo`) => void, key: string, store: Store) => (() => void);
678
+ declare const subscribeToTimeline: <ManagedAtom extends TimelineManageable>(store: Store, token: TimelineToken<ManagedAtom>, key: string, handleUpdate: (update: TimelineUpdate<any> | `redo` | `undo`) => void) => (() => void);
608
679
 
609
- declare const subscribeToTransaction: <F extends Func>(token: TransactionToken<F>, handleUpdate: TransactionUpdateHandler<F>, key: string, store: Store) => (() => void);
680
+ declare const subscribeToTransaction: <F extends Func>(store: Store, token: TransactionToken<F>, key: string, handleUpdate: TransactionUpdateHandler<F>) => (() => void);
610
681
 
611
682
  type AtomIOState = {
612
683
  key: string;
@@ -670,4 +741,4 @@ type WritableFamily<T, K extends Canonical> = AtomFamily<T, K> | WritableSelecto
670
741
  type ReadableFamily<T, K extends Canonical> = AtomFamily<T, K> | SelectorFamily<T, K>;
671
742
  type AtomIOInternalResource = ReadableFamily<any, any> | ReadableState<any> | Timeline<any> | Transaction<any>;
672
743
 
673
- export { type Atom, type AtomFamily, type AtomIOInternalResource, type AtomIOState, type AtomKey, type BaseExternalStoreConfiguration, type ChildStore, CircularBuffer, type Count, type Each, type Empty, type EnvironmentData, type ExternalStoreConfiguration, type ExternalStoreWithContentConfiguration, FAMILY_MEMBER_TOKEN_TYPES, FamilyTracker, type Flat, type Func, Future, IMPLICIT, Junction, type JunctionAdvancedConfiguration, type JunctionEntries, type JunctionEntriesBase, type JunctionJSON, type JunctionSchema, type JunctionSchemaBase, LazyMap, type Lineage, type Modify, type Molecule, type MutableAtom, type MutableAtomFamily, NotFoundError, type OperationProgress, type ReadableFamily, type ReadableState, type ReadonlySelector, type ReadonlySelectorFamily, type ReadonlySelectorKey, type Refinement, type RegularAtom, type RegularAtomFamily, type RootStore, type Selector, type SelectorFamily, type SelectorKey, type Signal, type StateKey, StatefulSubject, Store, Subject, TRANSACTION_PHASES, type Timeline, type TimelineAtomUpdate, type TimelineMoleculeCreation, type TimelineMoleculeDisposal, type TimelineSelectorUpdate, type TimelineStateCreation, type TimelineStateDisposal, type TimelineTransactionUpdate, Tracker, type Transaction, type TransactionEpoch, type TransactionPhase, type TransactionProgress, type Transceiver, type TransceiverMode, type WritableFamily, type WritableSelector, type WritableSelectorFamily, type WritableState, abortTransaction, actUponStore, allocateIntoStore, applyTransaction, arbitrary, assignTransactionToContinuity, become, buildTransaction, cacheValue, claimWithinStore, clearStore, closeOperation, counterfeit, createAtomFamily, createMutableAtom, createMutableAtomFamily, createReadonlySelector, createReadonlySelectorFamily, createRegularAtom, createRegularAtomFamily, createSelectorFamily, createStandaloneAtom, createStandaloneSelector, createTimeline, createTransaction, createWritableSelector, deallocateFromStore, deposit, disposeAtom, disposeFromStore, disposeSelector, evictCachedValue, findInStore, fuseWithinStore, getContinuityKey, getEnvironmentData, getEpochNumberOfAction, getEpochNumberOfContinuity, getFromStore, getJsonFamily, getJsonToken, getSelectorDependencyKeys, getTrace, getUpdateFamily, getUpdateToken, ingestAtomUpdate, ingestCreationEvent, ingestDisposalEvent, ingestMoleculeCreationEvent, ingestMoleculeDisposalEvent, ingestMoleculeTransferEvent, ingestSelectorUpdate, ingestTransactionUpdate, initFamilyMemberInStore, isAtomDefault, isAtomKey, isChildStore, isDone, isReadonlySelectorKey, isRootStore, isSelectorKey, isStateKey, isTransceiver, makeRootMoleculeInStore, markAtomAsDefault, markAtomAsNotDefault, markDone, newest, openOperation, prettyPrintTokenType, readCachedValue, readOrComputeValue, recallState, registerSelector, seekInStore, setAtomOrSelector, setEpochNumberOfAction, setEpochNumberOfContinuity, setIntoStore, subscribeInStore, subscribeToRootAtoms, subscribeToState, subscribeToTimeline, subscribeToTransaction, timeTravel, traceAllSelectorAtoms, traceSelectorAtoms, updateSelectorAtoms, withdraw };
744
+ export { type Atom, type AtomFamily, type AtomIOInternalResource, type AtomIOState, type AtomKey, type BaseExternalStoreConfiguration, type ChildStore, CircularBuffer, type Count, type Each, type Empty, type EnvironmentData, type ExternalStoreConfiguration, type ExternalStoreWithContentConfiguration, FAMILY_MEMBER_TOKEN_TYPES, FamilyTracker, type Flat, type Func, Future, IMPLICIT, Join, type JoinStateFamilies, Junction, type JunctionAdvancedConfiguration, type JunctionEntries, type JunctionEntriesBase, type JunctionJSON, type JunctionSchema, type JunctionSchemaBase, LazyMap, type Lineage, type Modify, type Molecule, type MutableAtom, type MutableAtomFamily, NotFoundError, type OperationProgress, type ReadableFamily, type ReadableState, type ReadonlySelector, type ReadonlySelectorFamily, type ReadonlySelectorKey, type Refinement, type RegularAtom, type RegularAtomFamily, type RootStore, type Selector, type SelectorFamily, type SelectorKey, type Signal, type StateKey, StatefulSubject, Store, Subject, TRANSACTION_PHASES, type Timeline, type TimelineAtomUpdate, type TimelineMoleculeCreation, type TimelineMoleculeDisposal, type TimelineSelectorUpdate, type TimelineStateCreation, type TimelineStateDisposal, type TimelineTransactionUpdate, Tracker, type Transaction, type TransactionEpoch, type TransactionPhase, type TransactionProgress, type Transceiver, type TransceiverMode, type WritableFamily, type WritableSelector, type WritableSelectorFamily, type WritableState, abortTransaction, actUponStore, allocateIntoStore, applyTransaction, arbitrary, assignTransactionToContinuity, become, buildTransaction, cacheValue, capitalize, claimWithinStore, clearStore, closeOperation, counterfeit, createAtomFamily, createMutableAtom, createMutableAtomFamily, createReadonlySelector, createReadonlySelectorFamily, createRegularAtom, createRegularAtomFamily, createSelectorFamily, createStandaloneAtom, createStandaloneSelector, createTimeline, createTransaction, createWritableSelector, deallocateFromStore, deposit, disposeAtom, disposeFromStore, disposeSelector, editRelationsInStore, evictCachedValue, findInStore, findRelationsInStore, fuseWithinStore, getContinuityKey, getEnvironmentData, getEpochNumberOfAction, getEpochNumberOfContinuity, getFromStore, getInternalRelationsFromStore, getJoin, getJsonFamily, getJsonToken, getSelectorDependencyKeys, getTrace, getUpdateFamily, getUpdateToken, ingestAtomUpdate, ingestCreationEvent, ingestDisposalEvent, ingestMoleculeCreationEvent, ingestMoleculeDisposalEvent, ingestMoleculeTransferEvent, ingestSelectorUpdate, ingestTransactionUpdate, initFamilyMemberInStore, isAtomDefault, isAtomKey, isChildStore, isDone, isReadonlySelectorKey, isRootStore, isSelectorKey, isStateKey, isTransceiver, makeRootMoleculeInStore, markAtomAsDefault, markAtomAsNotDefault, markDone, newest, openOperation, prettyPrintTokenType, readCachedValue, readOrComputeValue, recallState, registerSelector, seekInStore, setAtomOrSelector, setEpochNumberOfAction, setEpochNumberOfContinuity, setIntoStore, subscribeInStore, subscribeToRootAtoms, subscribeToState, subscribeToTimeline, subscribeToTransaction, timeTravel, traceAllSelectorAtoms, traceSelectorAtoms, updateSelectorAtoms, withdraw };
@@ -1,2 +1,2 @@
1
- export { CircularBuffer, FAMILY_MEMBER_TOKEN_TYPES, FamilyTracker, Future, IMPLICIT, Junction, LazyMap, NotFoundError, StatefulSubject, Store, Subject, TRANSACTION_PHASES, Tracker, abortTransaction, actUponStore, allocateIntoStore, applyTransaction, arbitrary, assignTransactionToContinuity, become, buildTransaction, cacheValue, claimWithinStore, clearStore, closeOperation, counterfeit, createAtomFamily, createMutableAtom, createMutableAtomFamily, createReadonlySelector, createReadonlySelectorFamily, createRegularAtom, createRegularAtomFamily, createSelectorFamily, createStandaloneAtom, createStandaloneSelector, createTimeline, createTransaction, createWritableSelector, deallocateFromStore, deposit, disposeAtom, disposeFromStore, disposeSelector, evictCachedValue, findInStore, fuseWithinStore, getContinuityKey, getEnvironmentData, getEpochNumberOfAction, getEpochNumberOfContinuity, getFromStore, getJsonFamily, getJsonToken, getSelectorDependencyKeys, getTrace, getUpdateFamily, getUpdateToken, ingestAtomUpdate, ingestCreationEvent, ingestDisposalEvent, ingestMoleculeCreationEvent, ingestMoleculeDisposalEvent, ingestMoleculeTransferEvent, ingestSelectorUpdate, ingestTransactionUpdate, initFamilyMemberInStore, isAtomDefault, isAtomKey, isChildStore, isDone, isReadonlySelectorKey, isRootStore, isSelectorKey, isStateKey, isTransceiver, makeRootMoleculeInStore, markAtomAsDefault, markAtomAsNotDefault, markDone, newest, openOperation, prettyPrintTokenType, readCachedValue, readOrComputeValue, recallState, registerSelector, seekInStore, setAtomOrSelector, setEpochNumberOfAction, setEpochNumberOfContinuity, setIntoStore, subscribeInStore, subscribeToRootAtoms, subscribeToState, subscribeToTimeline, subscribeToTransaction, timeTravel, traceAllSelectorAtoms, traceSelectorAtoms, updateSelectorAtoms, withdraw } from '../../dist/chunk-Y5MBNTVU.js';
1
+ export { CircularBuffer, FAMILY_MEMBER_TOKEN_TYPES, FamilyTracker, Future, IMPLICIT, Join, Junction, LazyMap, NotFoundError, StatefulSubject, Store, Subject, TRANSACTION_PHASES, Tracker, abortTransaction, actUponStore, allocateIntoStore, applyTransaction, arbitrary, assignTransactionToContinuity, become, buildTransaction, cacheValue, capitalize, claimWithinStore, clearStore, closeOperation, counterfeit, createAtomFamily, createMutableAtom, createMutableAtomFamily, createReadonlySelector, createReadonlySelectorFamily, createRegularAtom, createRegularAtomFamily, createSelectorFamily, createStandaloneAtom, createStandaloneSelector, createTimeline, createTransaction, createWritableSelector, deallocateFromStore, deposit, disposeAtom, disposeFromStore, disposeSelector, editRelationsInStore, evictCachedValue, findInStore, findRelationsInStore, fuseWithinStore, getContinuityKey, getEnvironmentData, getEpochNumberOfAction, getEpochNumberOfContinuity, getFromStore, getInternalRelationsFromStore, getJoin, getJsonFamily, getJsonToken, getSelectorDependencyKeys, getTrace, getUpdateFamily, getUpdateToken, ingestAtomUpdate, ingestCreationEvent, ingestDisposalEvent, ingestMoleculeCreationEvent, ingestMoleculeDisposalEvent, ingestMoleculeTransferEvent, ingestSelectorUpdate, ingestTransactionUpdate, initFamilyMemberInStore, isAtomDefault, isAtomKey, isChildStore, isDone, isReadonlySelectorKey, isRootStore, isSelectorKey, isStateKey, isTransceiver, makeRootMoleculeInStore, markAtomAsDefault, markAtomAsNotDefault, markDone, newest, openOperation, prettyPrintTokenType, readCachedValue, readOrComputeValue, recallState, registerSelector, seekInStore, setAtomOrSelector, setEpochNumberOfAction, setEpochNumberOfContinuity, setIntoStore, subscribeInStore, subscribeToRootAtoms, subscribeToState, subscribeToTimeline, subscribeToTransaction, timeTravel, traceAllSelectorAtoms, traceSelectorAtoms, updateSelectorAtoms, withdraw } from '../../dist/chunk-UQEYZ3OI.js';
2
2
  import '../../dist/chunk-XWL6SNVU.js';
@@ -59,8 +59,8 @@ export function createRegularAtom<T>(
59
59
  initialValue = options.default()
60
60
  }
61
61
  target.atoms.set(newAtom.key, newAtom)
62
- markAtomAsDefault(options.key, store)
63
- cacheValue(options.key, initialValue, subject, target)
62
+ markAtomAsDefault(store, options.key)
63
+ cacheValue(target, options.key, initialValue, subject)
64
64
  const token = deposit(newAtom)
65
65
  if (options.effects) {
66
66
  let effectIndex = 0
@@ -71,7 +71,7 @@ export function createRegularAtom<T>(
71
71
  setIntoStore(store, token, next)
72
72
  },
73
73
  onSet: (handle: UpdateHandler<T>) =>
74
- subscribeToState(token, handle, `effect[${effectIndex}]`, store),
74
+ subscribeToState(store, token, `effect[${effectIndex}]`, handle),
75
75
  })
76
76
  if (cleanup) {
77
77
  cleanupFunctions.push(cleanup)
@@ -3,16 +3,16 @@ import type { AtomDisposal, AtomToken } from "atom.io"
3
3
  import type { Store } from ".."
4
4
  import { getUpdateToken, isChildStore, newest, withdraw } from ".."
5
5
 
6
- export function disposeAtom(atomToken: AtomToken<unknown>, store: Store): void {
6
+ export function disposeAtom(store: Store, atomToken: AtomToken<unknown>): void {
7
7
  const target = newest(store)
8
8
  const { key, family } = atomToken
9
- const atom = withdraw(atomToken, target)
9
+ const atom = withdraw(target, atomToken)
10
10
  if (!family) {
11
11
  store.logger.error(`❌`, `atom`, key, `Standalone atoms cannot be disposed.`)
12
12
  } else {
13
13
  atom.cleanup?.()
14
14
  const lastValue = store.valueMap.get(atom.key)
15
- const atomFamily = withdraw({ key: family.key, type: `atom_family` }, store)
15
+ const atomFamily = withdraw(store, { key: family.key, type: `atom_family` })
16
16
 
17
17
  const disposal: AtomDisposal<AtomToken<unknown>> = {
18
18
  type: `state_disposal`,
@@ -24,15 +24,6 @@ export function disposeAtom(atomToken: AtomToken<unknown>, store: Store): void {
24
24
  atomFamily.subject.next(disposal)
25
25
 
26
26
  const isChild = isChildStore(target)
27
- // let molecule = target.molecules.get(family.subKey)
28
- // if (molecule && isChild) {
29
- // const parentMolecule = target.parent.molecules.get(family.subKey)
30
- // if (parentMolecule === molecule) {
31
- // molecule = parentMolecule.copy()
32
- // target.molecules.set(family.subKey, molecule)
33
- // }
34
- // }
35
- // molecule?.tokens.delete(family.key)
36
27
 
37
28
  target.atoms.delete(key)
38
29
  target.valueMap.delete(key)
@@ -42,7 +33,7 @@ export function disposeAtom(atomToken: AtomToken<unknown>, store: Store): void {
42
33
 
43
34
  if (atomToken.type === `mutable_atom`) {
44
35
  const updateToken = getUpdateToken(atomToken)
45
- disposeAtom(updateToken, store)
36
+ disposeAtom(store, updateToken)
46
37
  store.trackers.delete(key)
47
38
  }
48
39
  store.logger.info(`🔥`, `atom`, key, `deleted`)