atom.io 0.25.6 → 0.27.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 (108) hide show
  1. package/data/dist/index.d.ts +3 -3
  2. package/data/dist/index.js +33 -25
  3. package/data/package.json +1 -4
  4. package/data/src/dict.ts +3 -3
  5. package/dist/chunk-AK23DRMD.js +21 -0
  6. package/dist/{chunk-HYXKCFVY.js → chunk-IBTHB2PI.js} +59 -60
  7. package/dist/{chunk-MR5NETHW.js → chunk-IW6WYRS7.js} +4 -5
  8. package/dist/chunk-XWL6SNVU.js +7 -0
  9. package/dist/index.d.ts +32 -54
  10. package/dist/index.js +33 -21
  11. package/ephemeral/dist/index.d.ts +7 -7
  12. package/ephemeral/dist/index.js +1 -1
  13. package/ephemeral/package.json +1 -4
  14. package/ephemeral/src/find-state.ts +7 -7
  15. package/eslint-plugin/dist/index.js +7 -8
  16. package/eslint-plugin/package.json +1 -4
  17. package/immortal/dist/index.d.ts +7 -7
  18. package/immortal/dist/index.js +1 -1
  19. package/immortal/package.json +1 -4
  20. package/immortal/src/seek-state.ts +8 -8
  21. package/internal/dist/index.d.ts +56 -59
  22. package/internal/dist/index.js +178 -170
  23. package/internal/package.json +1 -4
  24. package/internal/src/families/create-atom-family.ts +4 -4
  25. package/internal/src/families/create-readonly-selector-family.ts +2 -2
  26. package/internal/src/families/create-regular-atom-family.ts +2 -2
  27. package/internal/src/families/create-selector-family.ts +4 -4
  28. package/internal/src/families/create-writable-selector-family.ts +2 -2
  29. package/internal/src/families/dispose-from-store.ts +3 -7
  30. package/internal/src/families/find-in-store.ts +9 -9
  31. package/internal/src/families/init-family-member.ts +25 -37
  32. package/internal/src/families/seek-in-store.ts +11 -10
  33. package/internal/src/get-state/get-from-store.ts +3 -3
  34. package/internal/src/molecule/grow-molecule-in-store.ts +9 -9
  35. package/internal/src/mutable/index.ts +0 -1
  36. package/internal/src/mutable/tracker-family.ts +2 -2
  37. package/internal/src/set-state/set-into-store.ts +4 -4
  38. package/internal/src/store/deposit.ts +3 -3
  39. package/internal/src/store/withdraw.ts +10 -9
  40. package/introspection/dist/index.js +32 -30
  41. package/introspection/package.json +1 -4
  42. package/json/dist/index.d.ts +10 -27
  43. package/json/dist/index.js +3 -3
  44. package/json/package.json +1 -4
  45. package/json/src/index.ts +8 -3
  46. package/json/src/select-json-family.ts +4 -4
  47. package/package.json +36 -65
  48. package/react/dist/index.d.ts +4 -4
  49. package/react/dist/index.js +2 -2
  50. package/react/package.json +1 -4
  51. package/react/src/parse-state-overloads.ts +4 -4
  52. package/react/src/use-i.ts +3 -3
  53. package/react/src/use-json.ts +3 -3
  54. package/react/src/use-o.ts +3 -3
  55. package/react-devtools/dist/index.d.ts +1 -1
  56. package/react-devtools/dist/index.js +90 -72
  57. package/react-devtools/package.json +1 -4
  58. package/react-devtools/src/StateIndex.tsx +5 -4
  59. package/realtime/dist/index.d.ts +3 -3
  60. package/realtime/dist/index.js +8 -9
  61. package/realtime/package.json +1 -4
  62. package/realtime/src/realtime-continuity.ts +2 -2
  63. package/realtime-client/dist/index.js +6 -6
  64. package/realtime-client/package.json +1 -4
  65. package/realtime-react/dist/index.d.ts +4 -4
  66. package/realtime-react/dist/index.js +9 -11
  67. package/realtime-react/package.json +1 -4
  68. package/realtime-react/src/use-pull-atom-family-member.ts +2 -2
  69. package/realtime-react/src/use-pull-mutable-family-member.ts +2 -2
  70. package/realtime-react/src/use-pull-selector-family-member.ts +2 -2
  71. package/realtime-server/dist/index.d.ts +9 -9
  72. package/realtime-server/dist/index.js +59 -54
  73. package/realtime-server/package.json +1 -4
  74. package/realtime-server/src/ipc-sockets/custom-socket.ts +2 -2
  75. package/realtime-server/src/realtime-family-provider.ts +3 -2
  76. package/realtime-server/src/realtime-mutable-family-provider.ts +2 -2
  77. package/realtime-testing/dist/index.js +3 -3
  78. package/realtime-testing/package.json +1 -4
  79. package/src/atom.ts +15 -42
  80. package/src/dispose-state.ts +2 -2
  81. package/src/get-state.ts +4 -4
  82. package/src/index.ts +5 -5
  83. package/src/molecule.ts +4 -3
  84. package/src/selector.ts +17 -39
  85. package/src/set-state.ts +3 -2
  86. package/src/silo.ts +4 -4
  87. package/transceivers/set-rtx/dist/index.js +11 -11
  88. package/transceivers/set-rtx/package.json +1 -4
  89. package/transceivers/set-rtx/src/set-rtx.ts +5 -5
  90. package/data/dist/index.cjs +0 -953
  91. package/dist/chunk-BF4MVQF6.js +0 -44
  92. package/dist/chunk-S4N6XNPH.js +0 -38
  93. package/dist/index.cjs +0 -215
  94. package/ephemeral/dist/index.cjs +0 -11
  95. package/eslint-plugin/dist/index.cjs +0 -388
  96. package/immortal/dist/index.cjs +0 -14
  97. package/internal/dist/index.cjs +0 -3405
  98. package/internal/src/mutable/is-mutable.ts +0 -16
  99. package/introspection/dist/index.cjs +0 -449
  100. package/json/dist/index.cjs +0 -128
  101. package/react/dist/index.cjs +0 -118
  102. package/react-devtools/dist/index.cjs +0 -2191
  103. package/realtime/dist/index.cjs +0 -120
  104. package/realtime-client/dist/index.cjs +0 -569
  105. package/realtime-react/dist/index.cjs +0 -189
  106. package/realtime-server/dist/index.cjs +0 -965
  107. package/realtime-testing/dist/index.cjs +0 -201
  108. package/transceivers/set-rtx/dist/index.cjs +0 -215
@@ -1,16 +0,0 @@
1
- import type { AtomFamily, MutableAtomFamily } from "atom.io"
2
-
3
- import type { Atom, MutableAtom } from ".."
4
-
5
- export function isMutable(atom: Atom<any>): atom is MutableAtom<any, any>
6
- export function isMutable(
7
- family: AtomFamily<any, any>,
8
- ): family is MutableAtomFamily<any, any, any>
9
- export function isMutable(
10
- atomOrTokenOrFamily: Atom<any> | AtomFamily<any, any>,
11
- ): boolean {
12
- return (
13
- atomOrTokenOrFamily.type === `mutable_atom` ||
14
- atomOrTokenOrFamily.type === `mutable_atom_family`
15
- )
16
- }
@@ -1,449 +0,0 @@
1
- 'use strict';
2
-
3
- var Internal = require('atom.io/internal');
4
- var atom_io = require('atom.io');
5
-
6
- function _interopNamespace(e) {
7
- if (e && e.__esModule) return e;
8
- var n = Object.create(null);
9
- if (e) {
10
- Object.keys(e).forEach(function (k) {
11
- if (k !== 'default') {
12
- var d = Object.getOwnPropertyDescriptor(e, k);
13
- Object.defineProperty(n, k, d.get ? d : {
14
- enumerable: true,
15
- get: function () { return e[k]; }
16
- });
17
- }
18
- });
19
- }
20
- n.default = e;
21
- return Object.freeze(n);
22
- }
23
-
24
- var Internal__namespace = /*#__PURE__*/_interopNamespace(Internal);
25
-
26
- var __defProp = Object.defineProperty;
27
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
28
- var __hasOwnProp = Object.prototype.hasOwnProperty;
29
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
30
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
31
- var __spreadValues = (a, b) => {
32
- for (var prop in b || (b = {}))
33
- if (__hasOwnProp.call(b, prop))
34
- __defNormalProp(a, prop, b[prop]);
35
- if (__getOwnPropSymbols)
36
- for (var prop of __getOwnPropSymbols(b)) {
37
- if (__propIsEnum.call(b, prop))
38
- __defNormalProp(a, prop, b[prop]);
39
- }
40
- return a;
41
- };
42
- var attachAtomIndex = (store = Internal.IMPLICIT.STORE) => {
43
- const atomTokenIndexState__INTERNAL = Internal.createRegularAtom(
44
- {
45
- key: `\u{1F441}\u200D\u{1F5E8} Atom Token Index (Internal)`,
46
- default: () => {
47
- const base = /* @__PURE__ */ new Map();
48
- for (const [key, val] of store.atoms) {
49
- if (!key.includes(`\u{1F441}\u200D\u{1F5E8}`)) {
50
- const token = Internal.deposit(val);
51
- if (val.family) {
52
- let familyNode = base.get(val.family.key);
53
- if (!familyNode || !(`familyMembers` in familyNode)) {
54
- familyNode = {
55
- key: val.family.key,
56
- familyMembers: /* @__PURE__ */ new Map()
57
- };
58
- base.set(val.family.key, familyNode);
59
- }
60
- familyNode.familyMembers.set(val.family.subKey, token);
61
- } else {
62
- base.set(key, token);
63
- }
64
- }
65
- }
66
- return base;
67
- },
68
- effects: [
69
- ({ setSelf }) => {
70
- store.on.atomCreation.subscribe(`introspection`, (atomToken) => {
71
- if (atomToken.key.includes(`\u{1F441}\u200D\u{1F5E8}`)) {
72
- return;
73
- }
74
- setSelf((self) => {
75
- if (atomToken.family) {
76
- const { key: familyKey, subKey } = atomToken.family;
77
- let familyNode = self.get(familyKey);
78
- if (familyNode === void 0 || !(`familyMembers` in familyNode)) {
79
- familyNode = {
80
- key: familyKey,
81
- familyMembers: /* @__PURE__ */ new Map()
82
- };
83
- self.set(familyKey, familyNode);
84
- }
85
- familyNode.familyMembers.set(subKey, atomToken);
86
- } else {
87
- self.set(atomToken.key, atomToken);
88
- }
89
- return self;
90
- });
91
- });
92
- store.on.atomDisposal.subscribe(`introspection`, (atomToken) => {
93
- setSelf((self) => {
94
- if (atomToken.family) {
95
- const { key: familyKey, subKey } = atomToken.family;
96
- const familyNode = self.get(familyKey);
97
- if (familyNode && `familyMembers` in familyNode) {
98
- familyNode.familyMembers.delete(subKey);
99
- if (familyNode.familyMembers.size === 0) {
100
- self.delete(familyKey);
101
- }
102
- }
103
- } else {
104
- self.delete(atomToken.key);
105
- }
106
- return self;
107
- });
108
- });
109
- }
110
- ]
111
- },
112
- void 0,
113
- store
114
- );
115
- return Internal.createStandaloneSelector(
116
- {
117
- key: `\u{1F441}\u200D\u{1F5E8} Atom Token Index`,
118
- get: ({ get }) => get(atomTokenIndexState__INTERNAL)
119
- },
120
- store
121
- );
122
- };
123
- var attachSelectorIndex = (store = Internal.IMPLICIT.STORE) => {
124
- const readonlySelectorTokenIndexState__INTERNAL = Internal.createRegularAtom(
125
- {
126
- key: `\u{1F441}\u200D\u{1F5E8} Selector Token Index (Internal)`,
127
- default: () => {
128
- const base = /* @__PURE__ */ new Map();
129
- for (const map of [store.readonlySelectors, store.selectors]) {
130
- for (const [key, val] of map) {
131
- if (!key.includes(`\u{1F441}\u200D\u{1F5E8}`)) {
132
- const token = Internal.deposit(val);
133
- if (val.family) {
134
- let familyNode = base.get(val.family.key);
135
- if (!familyNode || !(`familyMembers` in familyNode)) {
136
- familyNode = {
137
- key: val.family.key,
138
- familyMembers: /* @__PURE__ */ new Map()
139
- };
140
- base.set(val.family.key, familyNode);
141
- }
142
- familyNode.familyMembers.set(val.family.subKey, token);
143
- } else {
144
- base.set(key, token);
145
- }
146
- }
147
- }
148
- }
149
- return base;
150
- },
151
- effects: [
152
- ({ setSelf }) => {
153
- store.on.selectorCreation.subscribe(
154
- `introspection`,
155
- (selectorToken) => {
156
- if (selectorToken.key.includes(`\u{1F441}\u200D\u{1F5E8}`)) {
157
- return;
158
- }
159
- setSelf((self) => {
160
- if (selectorToken.family) {
161
- const { key: familyKey, subKey } = selectorToken.family;
162
- let familyNode = self.get(familyKey);
163
- if (familyNode === void 0 || !(`familyMembers` in familyNode)) {
164
- familyNode = {
165
- key: familyKey,
166
- familyMembers: /* @__PURE__ */ new Map()
167
- };
168
- self.set(familyKey, familyNode);
169
- }
170
- familyNode.familyMembers.set(subKey, selectorToken);
171
- } else {
172
- self.set(selectorToken.key, selectorToken);
173
- }
174
- return self;
175
- });
176
- }
177
- );
178
- store.on.selectorDisposal.subscribe(
179
- `introspection`,
180
- (selectorToken) => {
181
- setSelf((self) => {
182
- if (selectorToken.family) {
183
- const { key: familyKey, subKey } = selectorToken.family;
184
- const familyNode = self.get(familyKey);
185
- if (familyNode && `familyMembers` in familyNode) {
186
- familyNode.familyMembers.delete(subKey);
187
- if (familyNode.familyMembers.size === 0) {
188
- self.delete(familyKey);
189
- }
190
- }
191
- } else {
192
- self.delete(selectorToken.key);
193
- }
194
- return self;
195
- });
196
- }
197
- );
198
- }
199
- ]
200
- },
201
- void 0,
202
- store
203
- );
204
- return Internal.createStandaloneSelector(
205
- {
206
- key: `\u{1F441}\u200D\u{1F5E8} Selector Token Index`,
207
- get: ({ get }) => get(readonlySelectorTokenIndexState__INTERNAL)
208
- },
209
- Internal.IMPLICIT.STORE
210
- );
211
- };
212
- var attachTimelineFamily = (store = Internal.IMPLICIT.STORE) => {
213
- const findTimelineLogState__INTERNAL = Internal.createRegularAtomFamily(
214
- {
215
- key: `\u{1F441}\u200D\u{1F5E8} Timeline Update Log (Internal)`,
216
- default: (key) => {
217
- var _a;
218
- return (_a = store.timelines.get(key)) != null ? _a : {
219
- type: `timeline`,
220
- key: ``,
221
- at: 0,
222
- timeTraveling: null,
223
- history: [],
224
- selectorTime: null,
225
- transactionKey: null,
226
- install: () => {
227
- },
228
- subject: new Internal.Subject(),
229
- subscriptions: /* @__PURE__ */ new Map()
230
- };
231
- },
232
- effects: (key) => [
233
- ({ setSelf }) => {
234
- const tl = store.timelines.get(key);
235
- tl == null ? void 0 : tl.subject.subscribe(`introspection`, (_) => {
236
- setSelf(__spreadValues({}, tl));
237
- });
238
- }
239
- ]
240
- },
241
- store
242
- );
243
- const findTimelineLogState = Internal.createSelectorFamily(
244
- {
245
- key: `\u{1F441}\u200D\u{1F5E8} Timeline Update Log`,
246
- get: (key) => ({ get }) => get(findTimelineLogState__INTERNAL(key))
247
- },
248
- store
249
- );
250
- return findTimelineLogState;
251
- };
252
- var attachTimelineIndex = (store = Internal.IMPLICIT.STORE) => {
253
- const timelineTokenIndexState__INTERNAL = Internal.createRegularAtom(
254
- {
255
- key: `\u{1F441}\u200D\u{1F5E8} Timeline Token Index (Internal)`,
256
- default: () => [...store.timelines].map(([key]) => {
257
- return { key, type: `timeline` };
258
- }),
259
- effects: [
260
- ({ setSelf }) => {
261
- store.on.timelineCreation.subscribe(
262
- `introspection`,
263
- (timelineToken) => {
264
- setSelf((state) => [...state, timelineToken]);
265
- }
266
- );
267
- }
268
- ]
269
- },
270
- void 0,
271
- store
272
- );
273
- const timelineTokenIndex = Internal.createStandaloneSelector(
274
- {
275
- key: `\u{1F441}\u200D\u{1F5E8} Timeline Token Index`,
276
- get: ({ get }) => get(timelineTokenIndexState__INTERNAL)
277
- },
278
- store
279
- );
280
- return timelineTokenIndex;
281
- };
282
- var attachTransactionIndex = (store = Internal.IMPLICIT.STORE) => {
283
- const transactionTokenIndexState__INTERNAL = Internal.createRegularAtom(
284
- {
285
- key: `\u{1F441}\u200D\u{1F5E8} Transaction Token Index (Internal)`,
286
- default: () => [...store.transactions].map(([key]) => {
287
- return { key, type: `transaction` };
288
- }),
289
- effects: [
290
- ({ setSelf }) => {
291
- store.on.transactionCreation.subscribe(
292
- `introspection`,
293
- (transactionToken) => {
294
- setSelf((state) => [...state, transactionToken]);
295
- }
296
- );
297
- }
298
- ]
299
- },
300
- void 0,
301
- store
302
- );
303
- const transactionTokenIndex = Internal.createStandaloneSelector(
304
- {
305
- key: `\u{1F441}\u200D\u{1F5E8} Transaction Token Index`,
306
- get: ({ get }) => get(transactionTokenIndexState__INTERNAL)
307
- },
308
- store
309
- );
310
- return transactionTokenIndex;
311
- };
312
- var attachTransactionLogs = (store = Internal.IMPLICIT.STORE) => {
313
- const findTransactionUpdateLog = Internal.createRegularAtomFamily(
314
- {
315
- key: `\u{1F441}\u200D\u{1F5E8} Transaction Update Log (Internal)`,
316
- default: () => [],
317
- effects: (key) => [
318
- ({ setSelf }) => {
319
- const tx = store.transactions.get(key);
320
- tx == null ? void 0 : tx.subject.subscribe(`introspection`, (transactionUpdate) => {
321
- if (transactionUpdate.key === key) {
322
- setSelf((state) => [...state, transactionUpdate]);
323
- }
324
- });
325
- }
326
- ]
327
- },
328
- store
329
- );
330
- const findTransactionUpdateLogState = Internal.createSelectorFamily(
331
- {
332
- key: `\u{1F441}\u200D\u{1F5E8} Transaction Update Log`,
333
- get: (key) => ({ get }) => get(findTransactionUpdateLog(key))
334
- },
335
- store
336
- );
337
- return findTransactionUpdateLogState;
338
- };
339
-
340
- // introspection/src/attach-introspection-states.ts
341
- var attachIntrospectionStates = (store = Internal__namespace.IMPLICIT.STORE) => {
342
- return {
343
- atomIndex: attachAtomIndex(store),
344
- selectorIndex: attachSelectorIndex(store),
345
- transactionIndex: attachTransactionIndex(store),
346
- findTransactionLogState: attachTransactionLogs(store),
347
- timelineIndex: attachTimelineIndex(store),
348
- findTimelineState: attachTimelineFamily(store)
349
- };
350
- };
351
- var _Auditor = class _Auditor {
352
- /**
353
- * @param {Store} store - The store to audit.
354
- */
355
- constructor(store = Internal__namespace.IMPLICIT.STORE) {
356
- this.store = store;
357
- this.auditorCreatedAt = performance.now();
358
- this.statesCreatedAt = /* @__PURE__ */ new Map();
359
- this.disposed = false;
360
- this.atomIndex = attachAtomIndex(this.store);
361
- this.selectorIndex = attachSelectorIndex(this.store);
362
- this.unsubscribeFromAtomCreation = this.store.on.atomCreation.subscribe(
363
- `auditor-${this.auditorCreatedAt}`,
364
- ({ key }) => {
365
- this.statesCreatedAt.set(key, performance.now() - this.auditorCreatedAt);
366
- }
367
- );
368
- this.unsubscribeFromAtomDisposal = this.store.on.atomDisposal.subscribe(
369
- `auditor-${this.auditorCreatedAt}`,
370
- ({ key }) => {
371
- this.statesCreatedAt.delete(key);
372
- }
373
- );
374
- this.unsubscribeFromSelectorCreation = this.store.on.selectorCreation.subscribe(
375
- `auditor-${this.auditorCreatedAt}`,
376
- ({ key }) => {
377
- this.statesCreatedAt.set(
378
- key,
379
- performance.now() - this.auditorCreatedAt
380
- );
381
- }
382
- );
383
- this.unsubscribeFromSelectorDisposal = this.store.on.selectorDisposal.subscribe(
384
- `auditor-${this.auditorCreatedAt}`,
385
- ({ key }) => {
386
- this.statesCreatedAt.delete(key);
387
- }
388
- );
389
- }
390
- /**
391
- * Lists all resources in the store, along with their creation time.
392
- *
393
- * @param {ListResourcesParam} [param] - Optional parameters for filtering the list of resources.
394
- * @returns {readonly [ReadableToken<unknown>, number]}[] - An array of tuples, where each tuple contains a state token belonging to a family in the store and that state's creation time.
395
- */
396
- listResources(param = _Auditor.DEFAULT_LIST_RESOURCES_PARAM) {
397
- if (this.disposed) {
398
- throw new Error(`This Auditor has been disposed`);
399
- }
400
- const atoms = atom_io.getState(this.atomIndex);
401
- const selectors = atom_io.getState(this.selectorIndex);
402
- const atomFamilyNodes = [...atoms.values()].filter(
403
- (node) => `familyMembers` in node
404
- );
405
- const selectorFamilyNodes = [...selectors.values()].filter(
406
- (node) => `familyMembers` in node
407
- );
408
- const currentTime = performance.now();
409
- const resources = [];
410
- if (param.atomFamilies) {
411
- for (const familyNode of atomFamilyNodes) {
412
- const tokens = familyNode.familyMembers.values();
413
- for (const token of tokens) {
414
- const storedTime = this.statesCreatedAt.get(token.key);
415
- const creationTime = storedTime != null ? storedTime : this.auditorCreatedAt;
416
- const age = currentTime - creationTime;
417
- resources.push([token, age]);
418
- }
419
- }
420
- }
421
- if (param.selectorFamilies) {
422
- for (const familyNode of selectorFamilyNodes) {
423
- const tokens = familyNode.familyMembers.values();
424
- for (const token of tokens) {
425
- const storedTime = this.statesCreatedAt.get(token.key);
426
- const creationTime = storedTime != null ? storedTime : this.auditorCreatedAt;
427
- const age = currentTime - creationTime;
428
- resources.push([token, age]);
429
- }
430
- }
431
- }
432
- return resources;
433
- }
434
- [Symbol.dispose]() {
435
- this.unsubscribeFromAtomCreation();
436
- this.unsubscribeFromAtomDisposal();
437
- this.unsubscribeFromSelectorCreation();
438
- this.unsubscribeFromSelectorDisposal();
439
- this.disposed = true;
440
- }
441
- };
442
- _Auditor.DEFAULT_LIST_RESOURCES_PARAM = {
443
- atomFamilies: true,
444
- selectorFamilies: true
445
- };
446
- var Auditor = _Auditor;
447
-
448
- exports.Auditor = Auditor;
449
- exports.attachIntrospectionStates = attachIntrospectionStates;
@@ -1,128 +0,0 @@
1
- 'use strict';
2
-
3
- var internal = require('atom.io/internal');
4
-
5
- // json/src/select-json.ts
6
- var selectJson = (atom, transform, store = internal.IMPLICIT.STORE) => {
7
- return internal.createStandaloneSelector(
8
- {
9
- key: `${atom.key}:JSON`,
10
- get: ({ get }) => transform.toJson(get(atom)),
11
- set: ({ set }, newValue) => {
12
- set(atom, transform.fromJson(newValue));
13
- }
14
- },
15
- store
16
- );
17
- };
18
- function selectJsonFamily(family, transform, store = internal.IMPLICIT.STORE) {
19
- const jsonFamily = internal.createSelectorFamily(
20
- {
21
- key: `${family.key}:JSON`,
22
- get: (key) => ({ seek, get }) => {
23
- const existingState = seek(family, key);
24
- if (existingState) {
25
- return transform.toJson(get(existingState));
26
- }
27
- const stringKey = stringifyJson(key);
28
- const molecule = store.molecules.get(stringKey);
29
- if (molecule) {
30
- const atom = internal.growMoleculeInStore(molecule, family, store);
31
- return transform.toJson(get(atom));
32
- }
33
- if (store.config.lifespan === `immortal`) {
34
- throw new Error(`No molecule found for key "${stringKey}"`);
35
- }
36
- const newToken = internal.initFamilyMemberInStore(family, key, store);
37
- return transform.toJson(get(newToken));
38
- },
39
- set: (key) => ({ seek, set }, newValue) => {
40
- const existingState = seek(family, key);
41
- if (existingState) {
42
- set(existingState, transform.fromJson(newValue));
43
- } else {
44
- const stringKey = stringifyJson(key);
45
- const molecule = store.molecules.get(stringKey);
46
- if (molecule) {
47
- const atom = internal.growMoleculeInStore(molecule, family, store);
48
- set(atom, transform.fromJson(newValue));
49
- } else {
50
- if (store.config.lifespan === `immortal`) {
51
- throw new Error(`No molecule found for key "${stringKey}"`);
52
- }
53
- set(
54
- internal.initFamilyMemberInStore(family, key, store),
55
- transform.fromJson(newValue)
56
- );
57
- }
58
- }
59
- }
60
- },
61
- store
62
- );
63
- family.subject.subscribe(
64
- `store=${store.config.name}::json-selector-family`,
65
- (event) => {
66
- if (event.token.family) {
67
- internal.seekInStore(jsonFamily, parseJson(event.token.family.subKey), store);
68
- }
69
- }
70
- );
71
- return jsonFamily;
72
- }
73
-
74
- // ../anvl/src/json/json-interface.ts
75
- var stringSetJsonInterface = {
76
- toJson: (stringSet) => Array.from(stringSet),
77
- fromJson: (json) => new Set(json)
78
- };
79
-
80
- // ../anvl/src/json/index.ts
81
- var parseJson = (str) => JSON.parse(str);
82
- var stringifyJson = (json) => JSON.stringify(json);
83
- var JSON_TYPE_NAMES = [
84
- `array`,
85
- `boolean`,
86
- `null`,
87
- `number`,
88
- `object`,
89
- `string`
90
- ];
91
- var JSON_DEFAULTS = {
92
- array: [],
93
- boolean: false,
94
- null: null,
95
- number: 0,
96
- object: {},
97
- string: ``
98
- };
99
-
100
- // ../anvl/src/primitive/index.ts
101
- var isString = (input) => {
102
- return typeof input === `string`;
103
- };
104
- var isNumber = (input) => {
105
- return typeof input === `number`;
106
- };
107
- var isBoolean = (input) => {
108
- return typeof input === `boolean`;
109
- };
110
- var isNull = (input) => {
111
- return input === null;
112
- };
113
- var isPrimitive = (input) => {
114
- return isString(input) || isNumber(input) || isBoolean(input) || isNull(input);
115
- };
116
-
117
- exports.JSON_DEFAULTS = JSON_DEFAULTS;
118
- exports.JSON_TYPE_NAMES = JSON_TYPE_NAMES;
119
- exports.isBoolean = isBoolean;
120
- exports.isNull = isNull;
121
- exports.isNumber = isNumber;
122
- exports.isPrimitive = isPrimitive;
123
- exports.isString = isString;
124
- exports.parseJson = parseJson;
125
- exports.selectJson = selectJson;
126
- exports.selectJsonFamily = selectJsonFamily;
127
- exports.stringSetJsonInterface = stringSetJsonInterface;
128
- exports.stringifyJson = stringifyJson;
@@ -1,118 +0,0 @@
1
- 'use strict';
2
-
3
- var internal = require('atom.io/internal');
4
- var React5 = require('react');
5
- var jsxRuntime = require('react/jsx-runtime');
6
- var atom_io = require('atom.io');
7
-
8
- function _interopNamespace(e) {
9
- if (e && e.__esModule) return e;
10
- var n = Object.create(null);
11
- if (e) {
12
- Object.keys(e).forEach(function (k) {
13
- if (k !== 'default') {
14
- var d = Object.getOwnPropertyDescriptor(e, k);
15
- Object.defineProperty(n, k, d.get ? d : {
16
- enumerable: true,
17
- get: function () { return e[k]; }
18
- });
19
- }
20
- });
21
- }
22
- n.default = e;
23
- return Object.freeze(n);
24
- }
25
-
26
- var React5__namespace = /*#__PURE__*/_interopNamespace(React5);
27
-
28
- // react/src/store-context.tsx
29
- var StoreContext = React5__namespace.createContext(internal.IMPLICIT.STORE);
30
- var StoreProvider = ({ children, store = internal.IMPLICIT.STORE }) => /* @__PURE__ */ jsxRuntime.jsx(StoreContext.Provider, { value: store, children });
31
- function parseStateOverloads(store, ...rest) {
32
- let token;
33
- if (rest.length === 2) {
34
- const family = rest[0];
35
- const key = rest[1];
36
- if (store.config.lifespan === `immortal`) {
37
- const maybeToken = internal.seekInStore(family, key, store);
38
- if (!maybeToken) {
39
- throw new internal.NotFoundError(family, key, store);
40
- }
41
- token = maybeToken;
42
- } else {
43
- token = internal.findInStore(family, key, store);
44
- }
45
- } else {
46
- token = rest[0];
47
- }
48
- return token;
49
- }
50
-
51
- // react/src/use-i.ts
52
- function useI(...params) {
53
- const store = React5__namespace.useContext(StoreContext);
54
- const token = parseStateOverloads(store, ...params);
55
- const setter = React5__namespace.useRef(null);
56
- if (setter.current === null) {
57
- setter.current = (next) => {
58
- internal.setIntoStore(token, next, store);
59
- };
60
- }
61
- return setter.current;
62
- }
63
- function useO(...params) {
64
- const store = React5__namespace.useContext(StoreContext);
65
- const token = parseStateOverloads(store, ...params);
66
- const id = React5__namespace.useId();
67
- return React5__namespace.useSyncExternalStore(
68
- (dispatch) => internal.subscribeToState(token, dispatch, `use-o:${id}`, store),
69
- () => internal.getFromStore(token, store),
70
- () => internal.getFromStore(token, store)
71
- );
72
- }
73
-
74
- // react/src/use-json.ts
75
- function useJSON(token, key) {
76
- const store = React5__namespace.useContext(StoreContext);
77
- const stateToken = token.type === `mutable_atom_family` ? internal.findInStore(token, key, store) : token;
78
- const jsonToken = internal.getJsonToken(stateToken, store);
79
- return useO(jsonToken);
80
- }
81
- function useTL(token) {
82
- const store = React5__namespace.useContext(StoreContext);
83
- const id = React5__namespace.useId();
84
- const timeline = internal.withdraw(token, store);
85
- const tokenRef = React5__namespace.useRef(token);
86
- const rebuildMeta = () => {
87
- return {
88
- at: timeline.at,
89
- length: timeline.history.length,
90
- undo: () => {
91
- atom_io.undo(token);
92
- },
93
- redo: () => {
94
- atom_io.redo(token);
95
- }
96
- };
97
- };
98
- const meta = React5__namespace.useRef(rebuildMeta());
99
- const retrieve = () => {
100
- if (meta.current.at !== (timeline == null ? void 0 : timeline.at) || meta.current.length !== (timeline == null ? void 0 : timeline.history.length) || tokenRef.current !== token) {
101
- tokenRef.current = token;
102
- meta.current = rebuildMeta();
103
- }
104
- return meta.current;
105
- };
106
- return React5__namespace.useSyncExternalStore(
107
- (dispatch) => internal.subscribeToTimeline(token, dispatch, `use-tl:${id}`, store),
108
- retrieve,
109
- retrieve
110
- );
111
- }
112
-
113
- exports.StoreContext = StoreContext;
114
- exports.StoreProvider = StoreProvider;
115
- exports.useI = useI;
116
- exports.useJSON = useJSON;
117
- exports.useO = useO;
118
- exports.useTL = useTL;