atom.io 0.17.0 → 0.18.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 (140) hide show
  1. package/data/dist/index.cjs +62 -40
  2. package/data/dist/index.cjs.map +1 -1
  3. package/data/dist/index.d.ts +8 -2
  4. package/data/dist/index.js +64 -42
  5. package/data/dist/index.js.map +1 -1
  6. package/data/src/dict.ts +8 -4
  7. package/data/src/join.ts +74 -33
  8. package/data/src/struct-family.ts +18 -17
  9. package/dist/chunk-OEVFAUPE.js +289 -0
  10. package/dist/chunk-OEVFAUPE.js.map +1 -0
  11. package/dist/index.cjs +4 -10
  12. package/dist/index.cjs.map +1 -1
  13. package/dist/index.d.ts +62 -51
  14. package/dist/index.js +5 -11
  15. package/dist/index.js.map +1 -1
  16. package/internal/dist/index.cjs +163 -64
  17. package/internal/dist/index.cjs.map +1 -1
  18. package/internal/dist/index.d.ts +94 -70
  19. package/internal/dist/index.js +155 -59
  20. package/internal/dist/index.js.map +1 -1
  21. package/internal/src/arbitrary.ts +3 -0
  22. package/internal/src/caching.ts +8 -6
  23. package/internal/src/families/find-in-store.ts +16 -0
  24. package/internal/src/get-environment-data.ts +4 -7
  25. package/internal/src/index.ts +6 -5
  26. package/internal/src/ingest-updates/ingest-transaction-update.ts +0 -1
  27. package/internal/src/selector/create-standalone-selector.ts +0 -2
  28. package/internal/src/set-state/set-atom.ts +14 -18
  29. package/internal/src/store/store.ts +14 -2
  30. package/internal/src/store/withdraw.ts +72 -2
  31. package/internal/src/subscribe/subscribe-to-timeline.ts +2 -2
  32. package/internal/src/subscribe/subscribe-to-transaction.ts +2 -2
  33. package/internal/src/timeline/create-timeline.ts +12 -1
  34. package/internal/src/transaction/act-upon-store.ts +19 -0
  35. package/internal/src/transaction/apply-transaction.ts +7 -1
  36. package/internal/src/transaction/assign-transaction-to-continuity.ts +18 -0
  37. package/internal/src/transaction/build-transaction.ts +7 -6
  38. package/internal/src/transaction/create-transaction.ts +1 -1
  39. package/internal/src/transaction/get-epoch-number.ts +40 -0
  40. package/internal/src/transaction/index.ts +10 -1
  41. package/internal/src/transaction/set-epoch-number.ts +31 -0
  42. package/introspection/dist/index.cjs.map +1 -1
  43. package/introspection/dist/index.d.ts +3 -3
  44. package/introspection/dist/index.js.map +1 -1
  45. package/introspection/src/attach-introspection-states.ts +6 -2
  46. package/introspection/src/attach-timeline-family.ts +5 -2
  47. package/introspection/src/attach-transaction-logs.ts +2 -2
  48. package/json/dist/index.d.ts +3 -1
  49. package/json/src/index.ts +6 -2
  50. package/package.json +24 -13
  51. package/react/dist/index.cjs.map +1 -1
  52. package/react/dist/index.d.ts +1 -1
  53. package/react/dist/index.js.map +1 -1
  54. package/react/src/use-json.ts +1 -1
  55. package/react-devtools/dist/index.cjs +131 -134
  56. package/react-devtools/dist/index.cjs.map +1 -1
  57. package/react-devtools/dist/index.css +2 -2
  58. package/react-devtools/dist/index.css.map +1 -1
  59. package/react-devtools/dist/index.d.ts +3 -3
  60. package/react-devtools/dist/index.js +103 -106
  61. package/react-devtools/dist/index.js.map +1 -1
  62. package/react-devtools/src/StateEditor.tsx +6 -6
  63. package/react-devtools/src/StateIndex.tsx +2 -5
  64. package/react-devtools/src/TimelineIndex.tsx +3 -3
  65. package/react-devtools/src/TransactionIndex.tsx +9 -8
  66. package/react-devtools/src/Updates.tsx +1 -1
  67. package/react-devtools/src/index.ts +4 -4
  68. package/realtime/dist/index.cjs +72 -0
  69. package/realtime/dist/index.cjs.map +1 -0
  70. package/realtime/dist/index.d.ts +39 -0
  71. package/realtime/dist/index.js +68 -0
  72. package/realtime/dist/index.js.map +1 -0
  73. package/realtime/package.json +16 -0
  74. package/realtime/src/index.ts +1 -0
  75. package/realtime/src/realtime-continuity.ts +152 -0
  76. package/realtime-client/dist/index.cjs +389 -48
  77. package/realtime-client/dist/index.cjs.map +1 -1
  78. package/realtime-client/dist/index.d.ts +16 -9
  79. package/realtime-client/dist/index.js +100 -37
  80. package/realtime-client/dist/index.js.map +1 -1
  81. package/realtime-client/src/index.ts +8 -5
  82. package/realtime-client/src/{pull-family-member.ts → pull-atom-family-member.ts} +2 -2
  83. package/realtime-client/src/{pull-state.ts → pull-atom.ts} +2 -2
  84. package/realtime-client/src/{pull-mutable-family-member.ts → pull-mutable-atom-family-member.ts} +1 -1
  85. package/realtime-client/src/{pull-mutable.ts → pull-mutable-atom.ts} +1 -1
  86. package/realtime-client/src/pull-selector-family-member.ts +42 -0
  87. package/realtime-client/src/pull-selector.ts +38 -0
  88. package/realtime-client/src/realtime-client-stores/client-main-store.ts +2 -2
  89. package/realtime-client/src/realtime-client-stores/client-sync-store.ts +7 -7
  90. package/realtime-client/src/sync-continuity.ts +321 -0
  91. package/realtime-client/src/sync-server-action.ts +18 -20
  92. package/realtime-react/dist/index.cjs +330 -15
  93. package/realtime-react/dist/index.cjs.map +1 -1
  94. package/realtime-react/dist/index.d.ts +26 -6
  95. package/realtime-react/dist/index.js +43 -12
  96. package/realtime-react/dist/index.js.map +1 -1
  97. package/realtime-react/src/index.ts +6 -3
  98. package/realtime-react/src/use-pull-atom-family-member.ts +21 -0
  99. package/realtime-react/src/{use-pull-family-member.ts → use-pull-atom.ts} +6 -5
  100. package/realtime-react/src/{use-pull-mutable.ts → use-pull-mutable-atom.ts} +4 -3
  101. package/realtime-react/src/use-pull-mutable-family-member.ts +9 -4
  102. package/realtime-react/src/use-pull-selector-family-member.ts +21 -0
  103. package/realtime-react/src/{use-pull.ts → use-pull-selector.ts} +7 -5
  104. package/realtime-react/src/use-push.ts +3 -2
  105. package/realtime-react/src/use-server-action.ts +3 -2
  106. package/realtime-react/src/use-sync-continuity.ts +12 -0
  107. package/realtime-react/src/use-sync-server-action.ts +3 -2
  108. package/realtime-server/dist/index.cjs +568 -242
  109. package/realtime-server/dist/index.cjs.map +1 -1
  110. package/realtime-server/dist/index.d.ts +124 -49
  111. package/realtime-server/dist/index.js +555 -238
  112. package/realtime-server/dist/index.js.map +1 -1
  113. package/realtime-server/src/index.ts +18 -2
  114. package/realtime-server/src/ipc-socket.ts +230 -0
  115. package/realtime-server/src/realtime-action-receiver.ts +8 -5
  116. package/realtime-server/src/realtime-action-synchronizer.ts +40 -28
  117. package/realtime-server/src/realtime-continuity-synchronizer.ts +247 -0
  118. package/realtime-server/src/realtime-family-provider.ts +30 -71
  119. package/realtime-server/src/realtime-mutable-family-provider.ts +24 -86
  120. package/realtime-server/src/realtime-server-stores/index.ts +3 -1
  121. package/realtime-server/src/realtime-server-stores/realtime-continuity-store.ts +90 -0
  122. package/realtime-server/src/realtime-server-stores/server-room-store.ts +97 -0
  123. package/realtime-server/src/realtime-server-stores/server-sync-store.ts +2 -72
  124. package/realtime-server/src/realtime-server-stores/server-user-store.ts +14 -29
  125. package/realtime-server/src/realtime-state-receiver.ts +0 -1
  126. package/realtime-testing/dist/index.cjs +28 -28
  127. package/realtime-testing/dist/index.cjs.map +1 -1
  128. package/realtime-testing/dist/index.js +28 -27
  129. package/realtime-testing/dist/index.js.map +1 -1
  130. package/realtime-testing/src/setup-realtime-test.tsx +38 -28
  131. package/src/atom.ts +49 -31
  132. package/src/logger.ts +10 -5
  133. package/src/selector.ts +44 -25
  134. package/src/subscribe.ts +2 -1
  135. package/src/timeline.ts +4 -4
  136. package/src/transaction.ts +13 -17
  137. package/src/validators.ts +15 -9
  138. package/dist/chunk-H4Q5FTPZ.js +0 -11
  139. package/dist/chunk-H4Q5FTPZ.js.map +0 -1
  140. package/internal/src/set-state/copy-mutable-in-transaction.ts +0 -19
@@ -61,21 +61,6 @@ var __objRest = (source, exclude) => {
61
61
  return target;
62
62
  };
63
63
 
64
- // __unstable__/web-effects/src/storage.ts
65
- var persistAtom = (storage) => ({ stringify, parse }) => (key) => ({ setSelf, onSet }) => {
66
- const savedValue = storage.getItem(key);
67
- if (savedValue != null)
68
- setSelf(parse(savedValue));
69
- onSet(({ newValue }) => {
70
- if (newValue == null) {
71
- storage.removeItem(key);
72
- return;
73
- }
74
- storage.setItem(key, stringify(newValue));
75
- });
76
- };
77
- var lazyLocalStorageEffect = persistAtom(localStorage)(JSON);
78
-
79
64
  // ../anvl/src/function/pipe.ts
80
65
  function pipe(a2, ab, bc, cd, de, ef, fg, gh, hi) {
81
66
  switch (arguments.length) {
@@ -299,6 +284,116 @@ var discoverType = (input) => {
299
284
  return Object.getPrototypeOf(input).constructor.name;
300
285
  };
301
286
 
287
+ // ../anvl/src/json/index.ts
288
+ var stringifyJson = (json) => JSON.stringify(json);
289
+ var JSON_TYPE_NAMES = [
290
+ `array`,
291
+ `boolean`,
292
+ `null`,
293
+ `number`,
294
+ `object`,
295
+ `string`
296
+ ];
297
+ var JSON_DEFAULTS = {
298
+ array: [],
299
+ boolean: false,
300
+ null: null,
301
+ number: 0,
302
+ object: {},
303
+ string: ``
304
+ };
305
+
306
+ // ../anvl/src/primitive/index.ts
307
+ var isString = (input) => {
308
+ return typeof input === `string`;
309
+ };
310
+ var isNumber = (input) => {
311
+ return typeof input === `number`;
312
+ };
313
+ var isBoolean = (input) => {
314
+ return typeof input === `boolean`;
315
+ };
316
+
317
+ // ../anvl/src/refinement/refine-json.ts
318
+ var JSON_PROTOTYPES = [
319
+ `Array`,
320
+ `Boolean`,
321
+ `Number`,
322
+ `Object`,
323
+ `String`
324
+ ];
325
+ var refineJsonType = (data) => data === null ? { type: `null`, data: null } : isBoolean(data) ? { type: `boolean`, data } : isNumber(data) ? { type: `number`, data } : isString(data) ? { type: `string`, data } : Array.isArray(data) ? { type: `array`, data } : isPlainObject(data) ? { type: `object`, data } : raiseError(
326
+ data === void 0 ? `undefined passed to refineJsonType. This is not valid JSON.` : `${stringifyJson(data)} with prototype "${Object.getPrototypeOf(data).constructor.name}" passed to refineJsonType. This is not valid JSON.`
327
+ );
328
+ var isJson = (input) => {
329
+ var _a2;
330
+ if (input === null)
331
+ return true;
332
+ if (input === void 0)
333
+ return false;
334
+ const prototype = (_a2 = Object.getPrototypeOf(input)) == null ? void 0 : _a2.constructor.name;
335
+ const isJson2 = JSON_PROTOTYPES.includes(prototype);
336
+ return isJson2;
337
+ };
338
+
339
+ // ../anvl/src/refinement/can-exist.ts
340
+ var canExist = (_) => true;
341
+
342
+ // ../anvl/src/refinement/cannot-exist.ts
343
+ var cannotExist = (_) => false;
344
+
345
+ // ../anvl/src/refinement/is-union.ts
346
+ var mustSatisfyOneOfTheFollowing = (isTypeA, logging = false, refinements = [isTypeA]) => {
347
+ const name = `(${refinements.map((r) => (r == null ? void 0 : r.name) || `anon`).join(` | `)})`;
348
+ const _ = {
349
+ [name]: (input) => refinements.some(
350
+ (refinement) => {
351
+ var _a2;
352
+ return logging && console.log(
353
+ refinements.map((r) => r.name || `anon`).join(` | `),
354
+ `>`,
355
+ (_a2 = refinement.name) != null ? _a2 : `anon`,
356
+ `:`,
357
+ refinement(input)
358
+ ), refinement(input);
359
+ }
360
+ )
361
+ };
362
+ const checkTypes = Object.assign(_[name], {
363
+ or: (isTypeB) => mustSatisfyOneOfTheFollowing(isTypeB, logging, [...refinements, isTypeB])
364
+ });
365
+ return checkTypes;
366
+ };
367
+ var isUnion = mustSatisfyOneOfTheFollowing(cannotExist);
368
+
369
+ // ../anvl/src/refinement/is-intersection.ts
370
+ function mustSatisfyAllOfTheFollowing(isTypeA, logging = false, refinements = [isTypeA]) {
371
+ const name = `(${refinements.map((r) => (r == null ? void 0 : r.name) || `anon`).join(` & `)})`;
372
+ const _ = {
373
+ [name]: (input) => refinements.every(
374
+ (refinement) => (logging && console.log(
375
+ refinements.map((r) => r.name || `anon`).join(` & `),
376
+ `>`,
377
+ refinement.name || `anon`,
378
+ `:`,
379
+ refinement(input)
380
+ ), refinement(input))
381
+ )
382
+ };
383
+ const checkTypes = Object.assign(_[name], {
384
+ and: (isTypeB) => mustSatisfyAllOfTheFollowing(isTypeB, logging, [
385
+ ...refinements,
386
+ isTypeB
387
+ ])
388
+ });
389
+ return checkTypes;
390
+ }
391
+ var isIntersection = mustSatisfyAllOfTheFollowing(canExist);
392
+
393
+ // ../anvl/src/refinement/index.ts
394
+ var isLiteral = (value) => (input) => input === value;
395
+ var isWithin = (args) => (input) => args.includes(input);
396
+
302
397
  // ../anvl/src/tree/differ.ts
303
398
  function diffNumber(a2, b2) {
304
399
  const sign = a2 < b2 ? `+` : `-`;
@@ -417,57 +512,20 @@ var Differ = class {
417
512
  }
418
513
  };
419
514
 
420
- // ../anvl/src/json/index.ts
421
- var stringifyJson = (json) => JSON.stringify(json);
422
- var JSON_TYPE_NAMES = [
423
- `array`,
424
- `boolean`,
425
- `null`,
426
- `number`,
427
- `object`,
428
- `string`
429
- ];
430
- var JSON_DEFAULTS = {
431
- array: [],
432
- boolean: false,
433
- null: null,
434
- number: 0,
435
- object: {},
436
- string: ``
437
- };
438
-
439
- // ../anvl/src/primitive/index.ts
440
- var isString = (input) => {
441
- return typeof input === `string`;
442
- };
443
- var isNumber = (input) => {
444
- return typeof input === `number`;
445
- };
446
- var isBoolean = (input) => {
447
- return typeof input === `boolean`;
448
- };
449
-
450
- // ../anvl/src/refinement/refine-json.ts
451
- var JSON_PROTOTYPES = [
452
- `Array`,
453
- `Boolean`,
454
- `Number`,
455
- `Object`,
456
- `String`
457
- ];
458
- var refineJsonType = (data) => data === null ? { type: `null`, data: null } : isBoolean(data) ? { type: `boolean`, data } : isNumber(data) ? { type: `number`, data } : isString(data) ? { type: `string`, data } : Array.isArray(data) ? { type: `array`, data } : isPlainObject(data) ? { type: `object`, data } : raiseError(
459
- data === void 0 ? `undefined passed to refineJsonType. This is not valid JSON.` : `${stringifyJson(data)} with prototype "${Object.getPrototypeOf(data).constructor.name}" passed to refineJsonType. This is not valid JSON.`
460
- );
461
- var isJson = (input) => {
462
- var _a2;
463
- if (input === null)
464
- return true;
465
- if (input === void 0)
466
- return false;
467
- const prototype = (_a2 = Object.getPrototypeOf(input)) == null ? void 0 : _a2.constructor.name;
468
- const isJson2 = JSON_PROTOTYPES.includes(prototype);
469
- return isJson2;
515
+ // __unstable__/web-effects/src/storage.ts
516
+ var persistAtom = (storage) => ({ stringify, parse }) => (key) => ({ setSelf, onSet }) => {
517
+ const savedValue = storage.getItem(key);
518
+ if (savedValue != null)
519
+ setSelf(parse(savedValue));
520
+ onSet(({ newValue }) => {
521
+ if (newValue == null) {
522
+ storage.removeItem(key);
523
+ return;
524
+ }
525
+ storage.setItem(key, stringify(newValue));
526
+ });
470
527
  };
528
+ var lazyLocalStorageEffect = persistAtom(localStorage)(JSON);
471
529
  var OpenClose = ({ isOpen, setIsOpen, disabled }) => {
472
530
  return /* @__PURE__ */ jsxRuntime.jsx(
473
531
  "button",
@@ -484,64 +542,6 @@ var button = {
484
542
  OpenClose
485
543
  };
486
544
 
487
- // ../anvl/src/refinement/can-exist.ts
488
- var canExist = (_) => true;
489
-
490
- // ../anvl/src/refinement/cannot-exist.ts
491
- var cannotExist = (_) => false;
492
-
493
- // ../anvl/src/refinement/is-union.ts
494
- var mustSatisfyOneOfTheFollowing = (isTypeA, logging = false, refinements = [isTypeA]) => {
495
- const name = `(${refinements.map((r) => (r == null ? void 0 : r.name) || `anon`).join(` | `)})`;
496
- const _ = {
497
- [name]: (input) => refinements.some(
498
- (refinement) => {
499
- var _a2;
500
- return logging && console.log(
501
- refinements.map((r) => r.name || `anon`).join(` | `),
502
- `>`,
503
- (_a2 = refinement.name) != null ? _a2 : `anon`,
504
- `:`,
505
- refinement(input)
506
- ), refinement(input);
507
- }
508
- )
509
- };
510
- const checkTypes = Object.assign(_[name], {
511
- or: (isTypeB) => mustSatisfyOneOfTheFollowing(isTypeB, logging, [...refinements, isTypeB])
512
- });
513
- return checkTypes;
514
- };
515
- var isUnion = mustSatisfyOneOfTheFollowing(cannotExist);
516
-
517
- // ../anvl/src/refinement/is-intersection.ts
518
- function mustSatisfyAllOfTheFollowing(isTypeA, logging = false, refinements = [isTypeA]) {
519
- const name = `(${refinements.map((r) => (r == null ? void 0 : r.name) || `anon`).join(` & `)})`;
520
- const _ = {
521
- [name]: (input) => refinements.every(
522
- (refinement) => (logging && console.log(
523
- refinements.map((r) => r.name || `anon`).join(` & `),
524
- `>`,
525
- refinement.name || `anon`,
526
- `:`,
527
- refinement(input)
528
- ), refinement(input))
529
- )
530
- };
531
- const checkTypes = Object.assign(_[name], {
532
- and: (isTypeB) => mustSatisfyAllOfTheFollowing(isTypeB, logging, [
533
- ...refinements,
534
- isTypeB
535
- ])
536
- });
537
- return checkTypes;
538
- }
539
- var isIntersection = mustSatisfyAllOfTheFollowing(canExist);
540
-
541
- // ../anvl/src/refinement/index.ts
542
- var isLiteral = (value) => (input) => input === value;
543
- var isWithin = (args) => (input) => args.includes(input);
544
-
545
545
  // ../anvl/src/join/core-relation-data.ts
546
546
  var RELATION_TYPES = [`1:1`, `1:n`, `n:n`];
547
547
  var isRelationType = (x) => RELATION_TYPES.includes(x);
@@ -1131,7 +1131,7 @@ var JsonEditor_INTERNAL = ({
1131
1131
  ] }) });
1132
1132
  };
1133
1133
 
1134
- // ../hamr/src/react-json-editor/editors-by-type/utilities/array-elements.ts
1134
+ // ../hamr/react-json-editor/src/editors-by-type/utilities/array-elements.ts
1135
1135
  var makeElementSetters = (data, set) => data.map(
1136
1136
  (value, index) => (newValue) => set(() => {
1137
1137
  const newData = [...data];
@@ -1613,7 +1613,7 @@ var castToJson = (input) => {
1613
1613
  };
1614
1614
  };
1615
1615
 
1616
- // ../hamr/src/react-json-editor/editors-by-type/utilities/object-properties.ts
1616
+ // ../hamr/react-json-editor/src/editors-by-type/utilities/object-properties.ts
1617
1617
  var makePropertySetters = (data, set) => mapObject(
1618
1618
  data,
1619
1619
  (value, key) => (newValue) => set(__spreadProps(__spreadValues({}, data), { [key]: become(newValue)(value[key]) }))
@@ -1939,7 +1939,7 @@ var JsonEditor = ({
1939
1939
  );
1940
1940
  };
1941
1941
 
1942
- // ../hamr/src/react-json-editor/index.ts
1942
+ // ../hamr/react-json-editor/src/index.ts
1943
1943
  var SubEditors = {
1944
1944
  array: ArrayEditor,
1945
1945
  boolean: BooleanEditor,
@@ -2331,9 +2331,6 @@ var Id = ({ id }) => {
2331
2331
  ) })
2332
2332
  ] });
2333
2333
  };
2334
-
2335
- // ../hamr/src/react-data-designer/RelationEditor.module.scss
2336
- var RelationEditor_module_default = {};
2337
2334
  var RelationEditor = (props) => {
2338
2335
  const seen = /* @__PURE__ */ new Set();
2339
2336
  const data = Object.entries(props.data.relations).sort(([_, a2], [__, b2]) => b2.length - a2.length).filter(([head, tail]) => {
@@ -2345,7 +2342,7 @@ var RelationEditor = (props) => {
2345
2342
  }
2346
2343
  return true;
2347
2344
  });
2348
- return /* @__PURE__ */ jsxRuntime.jsx("article", { className: RelationEditor_module_default.class, children: data.map(([head, tail]) => /* @__PURE__ */ jsxRuntime.jsxs("section", { children: [
2345
+ return /* @__PURE__ */ jsxRuntime.jsx("article", { className: "relation-editor-0123456789", children: data.map(([head, tail]) => /* @__PURE__ */ jsxRuntime.jsxs("section", { children: [
2349
2346
  /* @__PURE__ */ jsxRuntime.jsx("span", { children: /* @__PURE__ */ jsxRuntime.jsx(Id, { id: head }) }),
2350
2347
  ":",
2351
2348
  /* @__PURE__ */ jsxRuntime.jsx("span", { children: tail.map((child) => /* @__PURE__ */ jsxRuntime.jsx(Id, { id: child })) })
@@ -2671,8 +2668,8 @@ var TimelineIndex = () => {
2671
2668
  TimelineLog,
2672
2669
  {
2673
2670
  token,
2674
- isOpenState: findViewIsOpenState(token.key),
2675
- timelineState: findTimelineState(token.key)
2671
+ isOpenState: atom_io.findState(findViewIsOpenState, token.key),
2672
+ timelineState: atom_io.findState(findTimelineState, token.key)
2676
2673
  },
2677
2674
  token.key
2678
2675
  );
@@ -2711,8 +2708,8 @@ var TransactionIndex = () => {
2711
2708
  TransactionLog,
2712
2709
  {
2713
2710
  token,
2714
- isOpenState: findViewIsOpenState(token.key),
2715
- logState: findTransactionLogState(token.key)
2711
+ isOpenState: atom_io.findState(findViewIsOpenState, token.key),
2712
+ logState: atom_io.findState(findTransactionLogState, token.key)
2716
2713
  },
2717
2714
  token.key
2718
2715
  );