atom.io 0.27.5 → 0.28.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/data/dist/index.d.ts +31 -29
- package/data/dist/index.js +16 -17
- package/data/src/join.ts +17 -19
- package/dist/{chunk-6ABWLAGY.js → chunk-BX3MTH2Z.js} +320 -249
- package/dist/chunk-D52JNVER.js +721 -0
- package/dist/chunk-EUVKUTW3.js +89 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +3 -1
- package/internal/dist/index.d.ts +72 -36
- package/internal/dist/index.js +1 -1
- package/internal/src/atom/dispose-atom.ts +2 -9
- package/internal/src/families/dispose-from-store.ts +35 -18
- package/internal/src/families/find-in-store.ts +17 -7
- package/internal/src/get-state/get-from-store.ts +41 -32
- package/internal/src/ingest-updates/ingest-creation-disposal.ts +10 -1
- package/internal/src/molecule/dispose-molecule.ts +6 -17
- package/internal/src/pretty-print.ts +1 -16
- package/internal/src/selector/dispose-selector.ts +2 -9
- package/internal/src/set-state/set-into-store.ts +17 -19
- package/internal/src/store/circular-buffer.ts +34 -0
- package/internal/src/store/counterfeit.ts +109 -0
- package/internal/src/store/deposit.ts +14 -0
- package/internal/src/store/index.ts +1 -0
- package/internal/src/store/store.ts +3 -0
- package/internal/src/store/withdraw.ts +15 -10
- package/internal/src/transaction/build-transaction.ts +1 -0
- package/introspection/dist/index.d.ts +84 -4
- package/introspection/dist/index.js +1 -392
- package/introspection/src/attach-introspection-states.ts +7 -4
- package/introspection/src/attach-type-selectors.ts +26 -0
- package/introspection/src/differ.ts +167 -0
- package/introspection/src/index.ts +2 -0
- package/introspection/src/refinery.ts +100 -0
- package/json/dist/index.d.ts +31 -30
- package/json/dist/index.js +2 -77
- package/json/src/entries.ts +6 -0
- package/json/src/index.ts +47 -6
- package/package.json +17 -8
- package/react-devtools/dist/index.d.ts +1 -91
- package/react-devtools/dist/index.js +285 -414
- package/react-devtools/src/AtomIODevtools.tsx +2 -2
- package/react-devtools/src/StateEditor.tsx +20 -12
- package/react-devtools/src/StateIndex.tsx +8 -26
- package/react-devtools/src/TimelineIndex.tsx +3 -3
- package/react-devtools/src/TransactionIndex.tsx +6 -6
- package/react-devtools/src/Updates.tsx +1 -4
- package/react-devtools/src/index.ts +0 -71
- package/react-devtools/src/store.ts +51 -0
- package/realtime/dist/index.d.ts +7 -7
- package/realtime/dist/index.js +18 -22
- package/realtime/src/realtime-continuity.ts +27 -35
- package/realtime-client/dist/index.js +24 -10
- package/realtime-client/src/realtime-client-stores/client-main-store.ts +6 -6
- package/realtime-client/src/sync-continuity.ts +28 -6
- package/realtime-server/dist/index.js +41 -5
- package/realtime-server/src/realtime-continuity-synchronizer.ts +42 -78
- package/realtime-testing/dist/index.d.ts +2 -0
- package/realtime-testing/dist/index.js +50 -8
- package/realtime-testing/src/setup-realtime-test.tsx +59 -9
- package/src/silo.ts +7 -3
- package/web/dist/index.d.ts +9 -0
- package/{dist/chunk-H6EDLPKH.js → web/dist/index.js} +5 -4
- package/web/package.json +13 -0
- package/web/src/index.ts +1 -0
- package/web/src/persist-sync.ts +25 -0
- package/dist/chunk-AK23DRMD.js +0 -21
- package/dist/chunk-IW6WYRS7.js +0 -140
|
@@ -1,266 +1,18 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
1
|
+
import { pipe, ifDefined, isArray, isRecord, doesExtend, jsonRefinery, doNothing, isPlainObject, become, mapObject, delve } from '../../dist/chunk-D52JNVER.js';
|
|
2
|
+
import { isJson as isJson$1 } from '../../dist/chunk-EUVKUTW3.js';
|
|
3
|
+
import '../../dist/chunk-BX3MTH2Z.js';
|
|
4
|
+
import '../../dist/chunk-IBTHB2PI.js';
|
|
4
5
|
import '../../dist/chunk-XWL6SNVU.js';
|
|
5
|
-
import { selectorFamily, atom, atomFamily, undo, redo, getState } from 'atom.io';
|
|
6
|
-
import { attachIntrospectionStates } from 'atom.io/introspection';
|
|
7
6
|
import { useI, useO } from 'atom.io/react';
|
|
8
7
|
import { motion, spring, LayoutGroup } from 'framer-motion';
|
|
9
8
|
import { forwardRef, useRef, useState, useImperativeHandle, useLayoutEffect, Fragment as Fragment$1, Component, useId } from 'react';
|
|
9
|
+
import { atom, atomFamily, undo, redo, getState } from 'atom.io';
|
|
10
10
|
import { findState } from 'atom.io/ephemeral';
|
|
11
|
+
import { attachIntrospectionStates, primitiveRefinery, prettyJson, discoverType } from 'atom.io/introspection';
|
|
11
12
|
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
13
|
+
import { isJson } from 'atom.io/json';
|
|
14
|
+
import { persistSync } from 'atom.io/web';
|
|
12
15
|
|
|
13
|
-
// ../anvl/src/refinement/can-exist.ts
|
|
14
|
-
var canExist = (_) => true;
|
|
15
|
-
|
|
16
|
-
// ../anvl/src/refinement/cannot-exist.ts
|
|
17
|
-
var cannotExist = (_) => false;
|
|
18
|
-
|
|
19
|
-
// ../anvl/src/refinement/is-intersection.ts
|
|
20
|
-
function mustSatisfyAllOfTheFollowing(isTypeA, logging = false, refinements = [isTypeA]) {
|
|
21
|
-
const name = `(${refinements.map((r) => r?.name || `anon`).join(` & `)})`;
|
|
22
|
-
const _ = {
|
|
23
|
-
[name]: (input) => refinements.every(
|
|
24
|
-
(refinement) => (logging && console.log(
|
|
25
|
-
refinements.map((r) => r.name || `anon`).join(` & `),
|
|
26
|
-
`>`,
|
|
27
|
-
refinement.name || `anon`,
|
|
28
|
-
`:`,
|
|
29
|
-
refinement(input)
|
|
30
|
-
), refinement(input))
|
|
31
|
-
)
|
|
32
|
-
};
|
|
33
|
-
const checkTypes = Object.assign(_[name], {
|
|
34
|
-
and: (isTypeB) => mustSatisfyAllOfTheFollowing(isTypeB, logging, [
|
|
35
|
-
...refinements,
|
|
36
|
-
isTypeB
|
|
37
|
-
])
|
|
38
|
-
});
|
|
39
|
-
return checkTypes;
|
|
40
|
-
}
|
|
41
|
-
var isIntersection = mustSatisfyAllOfTheFollowing(canExist);
|
|
42
|
-
|
|
43
|
-
// ../anvl/src/refinement/is-union.ts
|
|
44
|
-
var mustSatisfyOneOfTheFollowing = (isTypeA, logging = false, refinements = [isTypeA]) => {
|
|
45
|
-
const name = `(${refinements.map((r) => r?.name || `anon`).join(` | `)})`;
|
|
46
|
-
const _ = {
|
|
47
|
-
[name]: (input) => refinements.some(
|
|
48
|
-
(refinement) => (logging && console.log(
|
|
49
|
-
refinements.map((r) => r.name || `anon`).join(` | `),
|
|
50
|
-
`>`,
|
|
51
|
-
refinement.name ?? `anon`,
|
|
52
|
-
`:`,
|
|
53
|
-
refinement(input)
|
|
54
|
-
), refinement(input))
|
|
55
|
-
)
|
|
56
|
-
};
|
|
57
|
-
const checkTypes = Object.assign(_[name], {
|
|
58
|
-
or: (isTypeB) => mustSatisfyOneOfTheFollowing(isTypeB, logging, [...refinements, isTypeB])
|
|
59
|
-
});
|
|
60
|
-
return checkTypes;
|
|
61
|
-
};
|
|
62
|
-
var isUnion = mustSatisfyOneOfTheFollowing(cannotExist);
|
|
63
|
-
|
|
64
|
-
// ../anvl/src/primitive/index.ts
|
|
65
|
-
var isString = (input) => {
|
|
66
|
-
return typeof input === `string`;
|
|
67
|
-
};
|
|
68
|
-
var isNumber = (input) => {
|
|
69
|
-
return typeof input === `number`;
|
|
70
|
-
};
|
|
71
|
-
var isBoolean = (input) => {
|
|
72
|
-
return typeof input === `boolean`;
|
|
73
|
-
};
|
|
74
|
-
|
|
75
|
-
// ../anvl/src/refinement/refine-json.ts
|
|
76
|
-
var JSON_PROTOTYPES = [
|
|
77
|
-
`Array`,
|
|
78
|
-
`Boolean`,
|
|
79
|
-
`Number`,
|
|
80
|
-
`Object`,
|
|
81
|
-
`String`
|
|
82
|
-
];
|
|
83
|
-
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(
|
|
84
|
-
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.`
|
|
85
|
-
);
|
|
86
|
-
var isJson = (input) => {
|
|
87
|
-
if (input === null) return true;
|
|
88
|
-
if (input === void 0) return false;
|
|
89
|
-
const prototype = Object.getPrototypeOf(input)?.constructor.name;
|
|
90
|
-
const refine = JSON_PROTOTYPES.includes(prototype);
|
|
91
|
-
return refine;
|
|
92
|
-
};
|
|
93
|
-
|
|
94
|
-
// ../anvl/src/refinement/refinery.ts
|
|
95
|
-
var Refinery = class {
|
|
96
|
-
supported;
|
|
97
|
-
constructor(supported) {
|
|
98
|
-
this.supported = supported;
|
|
99
|
-
}
|
|
100
|
-
refine(input) {
|
|
101
|
-
for (const [key, refiner] of Object.entries(this.supported)) {
|
|
102
|
-
try {
|
|
103
|
-
if (
|
|
104
|
-
// @ts-expect-error that's the point
|
|
105
|
-
refiner(input) === true && refiner !== Boolean
|
|
106
|
-
) {
|
|
107
|
-
return { type: key, data: input };
|
|
108
|
-
}
|
|
109
|
-
} catch (e) {
|
|
110
|
-
try {
|
|
111
|
-
if (input instanceof refiner) {
|
|
112
|
-
return { type: key, data: input };
|
|
113
|
-
}
|
|
114
|
-
} catch (_) {
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
return null;
|
|
119
|
-
}
|
|
120
|
-
};
|
|
121
|
-
var jsonRefinery = new Refinery({
|
|
122
|
-
number: (input) => typeof input === `number`,
|
|
123
|
-
string: (input) => typeof input === `string`,
|
|
124
|
-
boolean: (input) => typeof input === `boolean`,
|
|
125
|
-
object: isPlainObject,
|
|
126
|
-
array: (input) => Array.isArray(input),
|
|
127
|
-
null: (input) => input === null
|
|
128
|
-
});
|
|
129
|
-
var discoverType = (input) => {
|
|
130
|
-
if (input === void 0) {
|
|
131
|
-
return `undefined`;
|
|
132
|
-
}
|
|
133
|
-
const refined = jsonRefinery.refine(input);
|
|
134
|
-
if (refined) {
|
|
135
|
-
return refined.type;
|
|
136
|
-
}
|
|
137
|
-
return Object.getPrototypeOf(input).constructor.name;
|
|
138
|
-
};
|
|
139
|
-
|
|
140
|
-
// ../anvl/src/refinement/index.ts
|
|
141
|
-
var isLiteral = (value) => (input) => input === value;
|
|
142
|
-
var isWithin = (args) => (input) => args.includes(input);
|
|
143
|
-
|
|
144
|
-
// ../anvl/src/tree/differ.ts
|
|
145
|
-
function diffNumber(a, b) {
|
|
146
|
-
const sign = a < b ? `+` : `-`;
|
|
147
|
-
return {
|
|
148
|
-
summary: `${sign}${Math.abs(a - b)} (${a} \u2192 ${b})`
|
|
149
|
-
};
|
|
150
|
-
}
|
|
151
|
-
function diffString(a, b) {
|
|
152
|
-
const sign = a.length < b.length ? `+` : `-`;
|
|
153
|
-
return {
|
|
154
|
-
summary: `${sign}${Math.abs(a.length - b.length)} ("${a}" \u2192 "${b}")`
|
|
155
|
-
};
|
|
156
|
-
}
|
|
157
|
-
function diffBoolean(a, b) {
|
|
158
|
-
return {
|
|
159
|
-
summary: `${a} \u2192 ${b}`
|
|
160
|
-
};
|
|
161
|
-
}
|
|
162
|
-
function diffObject(a, b, recurse) {
|
|
163
|
-
let summary = ``;
|
|
164
|
-
const added = [];
|
|
165
|
-
const removed = [];
|
|
166
|
-
const changed = [];
|
|
167
|
-
sprawl(a, (path, nodeA) => {
|
|
168
|
-
let key;
|
|
169
|
-
for (key of path) {
|
|
170
|
-
const nodeB = b[key];
|
|
171
|
-
if (nodeB === void 0) {
|
|
172
|
-
removed.push([key, JSON.stringify(nodeA)]);
|
|
173
|
-
} else {
|
|
174
|
-
const delta = recurse(nodeA, nodeB);
|
|
175
|
-
if (delta.summary !== `No Change`) {
|
|
176
|
-
changed.push([key, delta]);
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
});
|
|
181
|
-
sprawl(b, (path, nodeB) => {
|
|
182
|
-
let key;
|
|
183
|
-
for (key of path) {
|
|
184
|
-
const nodeA = a[key];
|
|
185
|
-
if (nodeA === void 0) {
|
|
186
|
-
added.push([key, JSON.stringify(nodeB)]);
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
});
|
|
190
|
-
summary = `\uFF5E${changed.length} \uFF0B${added.length} \uFF0D${removed.length}`;
|
|
191
|
-
return {
|
|
192
|
-
summary,
|
|
193
|
-
added,
|
|
194
|
-
removed,
|
|
195
|
-
changed
|
|
196
|
-
};
|
|
197
|
-
}
|
|
198
|
-
function diffArray(a, b, recurse) {
|
|
199
|
-
return diffObject(a, b, recurse);
|
|
200
|
-
}
|
|
201
|
-
var Differ = class {
|
|
202
|
-
leafRefinery;
|
|
203
|
-
treeRefinery;
|
|
204
|
-
leafDiffers;
|
|
205
|
-
treeDiffers;
|
|
206
|
-
constructor(leafRefinery, treeRefinery, diffFunctions) {
|
|
207
|
-
this.leafRefinery = leafRefinery;
|
|
208
|
-
this.treeRefinery = treeRefinery;
|
|
209
|
-
this.leafDiffers = {};
|
|
210
|
-
this.treeDiffers = {};
|
|
211
|
-
for (const key of Object.keys(leafRefinery.supported)) {
|
|
212
|
-
const diffFunction = diffFunctions[key];
|
|
213
|
-
this.leafDiffers[key] = diffFunction;
|
|
214
|
-
}
|
|
215
|
-
for (const key of Object.keys(treeRefinery.supported)) {
|
|
216
|
-
const diffFunction = diffFunctions[key];
|
|
217
|
-
this.treeDiffers[key] = diffFunction;
|
|
218
|
-
}
|
|
219
|
-
}
|
|
220
|
-
diff(a, b) {
|
|
221
|
-
if (a === b) {
|
|
222
|
-
return { summary: `No Change` };
|
|
223
|
-
}
|
|
224
|
-
try {
|
|
225
|
-
if (JSON.stringify(a) === JSON.stringify(b)) {
|
|
226
|
-
return { summary: `No Change` };
|
|
227
|
-
}
|
|
228
|
-
} catch (thrown) {
|
|
229
|
-
console.error(`Error stringifying`, a, b);
|
|
230
|
-
}
|
|
231
|
-
const aRefined = this.leafRefinery.refine(a) ?? this.treeRefinery.refine(a);
|
|
232
|
-
const bRefined = this.leafRefinery.refine(b) ?? this.treeRefinery.refine(b);
|
|
233
|
-
if (aRefined !== null && bRefined !== null) {
|
|
234
|
-
if (aRefined.type === bRefined.type) {
|
|
235
|
-
if (aRefined.type in this.leafDiffers) {
|
|
236
|
-
const delta = this.leafDiffers[aRefined.type](
|
|
237
|
-
aRefined.data,
|
|
238
|
-
bRefined.data
|
|
239
|
-
);
|
|
240
|
-
return delta;
|
|
241
|
-
}
|
|
242
|
-
if (aRefined.type in this.treeDiffers) {
|
|
243
|
-
const delta = this.treeDiffers[aRefined.type](
|
|
244
|
-
aRefined.data,
|
|
245
|
-
bRefined.data,
|
|
246
|
-
(x, y) => this.diff(x, y)
|
|
247
|
-
);
|
|
248
|
-
return delta;
|
|
249
|
-
}
|
|
250
|
-
}
|
|
251
|
-
}
|
|
252
|
-
const typeA = discoverType(a);
|
|
253
|
-
const typeB = discoverType(b);
|
|
254
|
-
if (typeA === typeB) {
|
|
255
|
-
return {
|
|
256
|
-
summary: `${typeA} \u2192 ${typeB}`
|
|
257
|
-
};
|
|
258
|
-
}
|
|
259
|
-
return {
|
|
260
|
-
summary: `Type change: ${typeA} \u2192 ${typeB}`
|
|
261
|
-
};
|
|
262
|
-
}
|
|
263
|
-
};
|
|
264
16
|
var OpenClose = ({ isOpen, setIsOpen, disabled, testid }) => {
|
|
265
17
|
return /* @__PURE__ */ jsx(
|
|
266
18
|
"button",
|
|
@@ -523,8 +275,11 @@ var JsonEditor_INTERNAL = ({
|
|
|
523
275
|
Header: HeaderDisplay,
|
|
524
276
|
Components
|
|
525
277
|
}) => {
|
|
526
|
-
const dataIsJson = isJson(data);
|
|
527
|
-
const refined =
|
|
278
|
+
const dataIsJson = isJson$1(data);
|
|
279
|
+
const refined = jsonRefinery.refine(data) ?? {
|
|
280
|
+
type: `non-json`,
|
|
281
|
+
data
|
|
282
|
+
};
|
|
528
283
|
const SubEditor = dataIsJson ? SubEditors[refined.type] : NonJsonEditor;
|
|
529
284
|
const disabled = isReadonly(path);
|
|
530
285
|
return isHidden(path) ? null : /* @__PURE__ */ jsx(Components.ErrorBoundary, { children: /* @__PURE__ */ jsxs(Components.EditorWrapper, { className, style, children: [
|
|
@@ -609,6 +364,90 @@ var ArrayEditor = ({
|
|
|
609
364
|
}) });
|
|
610
365
|
};
|
|
611
366
|
|
|
367
|
+
// ../anvl/src/json/index.ts
|
|
368
|
+
var JSON_TYPE_NAMES = [
|
|
369
|
+
`array`,
|
|
370
|
+
`boolean`,
|
|
371
|
+
`null`,
|
|
372
|
+
`number`,
|
|
373
|
+
`object`,
|
|
374
|
+
`string`
|
|
375
|
+
];
|
|
376
|
+
var JSON_DEFAULTS = {
|
|
377
|
+
array: [],
|
|
378
|
+
boolean: false,
|
|
379
|
+
null: null,
|
|
380
|
+
number: 0,
|
|
381
|
+
object: {},
|
|
382
|
+
string: ``
|
|
383
|
+
};
|
|
384
|
+
|
|
385
|
+
// ../anvl/src/primitive/index.ts
|
|
386
|
+
var isString = (input) => {
|
|
387
|
+
return typeof input === `string`;
|
|
388
|
+
};
|
|
389
|
+
var isNumber = (input) => {
|
|
390
|
+
return typeof input === `number`;
|
|
391
|
+
};
|
|
392
|
+
var isBoolean = (input) => {
|
|
393
|
+
return typeof input === `boolean`;
|
|
394
|
+
};
|
|
395
|
+
|
|
396
|
+
// ../anvl/src/refinement/can-exist.ts
|
|
397
|
+
var canExist = (_) => true;
|
|
398
|
+
|
|
399
|
+
// ../anvl/src/refinement/cannot-exist.ts
|
|
400
|
+
var cannotExist = (_) => false;
|
|
401
|
+
|
|
402
|
+
// ../anvl/src/refinement/is-intersection.ts
|
|
403
|
+
function mustSatisfyAllOfTheFollowing(isTypeA, logging = false, refinements = [isTypeA]) {
|
|
404
|
+
const name = `(${refinements.map((r) => r?.name || `anon`).join(` & `)})`;
|
|
405
|
+
const _ = {
|
|
406
|
+
[name]: (input) => refinements.every(
|
|
407
|
+
(refinement) => (logging && console.log(
|
|
408
|
+
refinements.map((r) => r.name || `anon`).join(` & `),
|
|
409
|
+
`>`,
|
|
410
|
+
refinement.name || `anon`,
|
|
411
|
+
`:`,
|
|
412
|
+
refinement(input)
|
|
413
|
+
), refinement(input))
|
|
414
|
+
)
|
|
415
|
+
};
|
|
416
|
+
const checkTypes = Object.assign(_[name], {
|
|
417
|
+
and: (isTypeB) => mustSatisfyAllOfTheFollowing(isTypeB, logging, [
|
|
418
|
+
...refinements,
|
|
419
|
+
isTypeB
|
|
420
|
+
])
|
|
421
|
+
});
|
|
422
|
+
return checkTypes;
|
|
423
|
+
}
|
|
424
|
+
var isIntersection = mustSatisfyAllOfTheFollowing(canExist);
|
|
425
|
+
|
|
426
|
+
// ../anvl/src/refinement/is-union.ts
|
|
427
|
+
var mustSatisfyOneOfTheFollowing = (isTypeA, logging = false, refinements = [isTypeA]) => {
|
|
428
|
+
const name = `(${refinements.map((r) => r?.name || `anon`).join(` | `)})`;
|
|
429
|
+
const _ = {
|
|
430
|
+
[name]: (input) => refinements.some(
|
|
431
|
+
(refinement) => (logging && console.log(
|
|
432
|
+
refinements.map((r) => r.name || `anon`).join(` | `),
|
|
433
|
+
`>`,
|
|
434
|
+
refinement.name ?? `anon`,
|
|
435
|
+
`:`,
|
|
436
|
+
refinement(input)
|
|
437
|
+
), refinement(input))
|
|
438
|
+
)
|
|
439
|
+
};
|
|
440
|
+
const checkTypes = Object.assign(_[name], {
|
|
441
|
+
or: (isTypeB) => mustSatisfyOneOfTheFollowing(isTypeB, logging, [...refinements, isTypeB])
|
|
442
|
+
});
|
|
443
|
+
return checkTypes;
|
|
444
|
+
};
|
|
445
|
+
var isUnion = mustSatisfyOneOfTheFollowing(cannotExist);
|
|
446
|
+
|
|
447
|
+
// ../anvl/src/refinement/index.ts
|
|
448
|
+
var isLiteral = (value) => (input) => input === value;
|
|
449
|
+
var isWithin = (args) => (input) => args.includes(input);
|
|
450
|
+
|
|
612
451
|
// ../anvl/src/json-schema/integer.ts
|
|
613
452
|
var isInteger = (input) => Number.isInteger(input);
|
|
614
453
|
var parseInteger = (input) => {
|
|
@@ -951,92 +790,150 @@ var nullToObject = () => ({});
|
|
|
951
790
|
|
|
952
791
|
// ../anvl/src/refinement/smart-cast-json.ts
|
|
953
792
|
var castToJson = (input) => {
|
|
954
|
-
const
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
793
|
+
const refined = jsonRefinery.refine(input);
|
|
794
|
+
switch (refined?.type) {
|
|
795
|
+
case `array`: {
|
|
796
|
+
const data = refined.data;
|
|
797
|
+
return {
|
|
798
|
+
get array() {
|
|
799
|
+
return data;
|
|
800
|
+
},
|
|
801
|
+
get boolean() {
|
|
802
|
+
return arrayToBoolean(data);
|
|
803
|
+
},
|
|
804
|
+
get number() {
|
|
805
|
+
return arrayToNumber(data);
|
|
806
|
+
},
|
|
807
|
+
get object() {
|
|
808
|
+
return arrayToObject(data);
|
|
809
|
+
},
|
|
810
|
+
get string() {
|
|
811
|
+
return arrayToString(data);
|
|
812
|
+
},
|
|
813
|
+
get null() {
|
|
814
|
+
return null;
|
|
971
815
|
}
|
|
972
|
-
}
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
|
|
816
|
+
};
|
|
817
|
+
}
|
|
818
|
+
case `boolean`: {
|
|
819
|
+
const data = refined.data;
|
|
820
|
+
return {
|
|
821
|
+
get array() {
|
|
822
|
+
return booleanToArray(data);
|
|
823
|
+
},
|
|
824
|
+
get boolean() {
|
|
825
|
+
return data;
|
|
826
|
+
},
|
|
827
|
+
get number() {
|
|
828
|
+
return booleanToNumber(data);
|
|
829
|
+
},
|
|
830
|
+
get object() {
|
|
831
|
+
return booleanToObject(data);
|
|
832
|
+
},
|
|
833
|
+
get string() {
|
|
834
|
+
return booleanToString(data);
|
|
835
|
+
},
|
|
836
|
+
get null() {
|
|
837
|
+
return null;
|
|
987
838
|
}
|
|
988
|
-
}
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
839
|
+
};
|
|
840
|
+
}
|
|
841
|
+
case `number`: {
|
|
842
|
+
const data = refined.data;
|
|
843
|
+
return {
|
|
844
|
+
get array() {
|
|
845
|
+
return numberToArray(data);
|
|
846
|
+
},
|
|
847
|
+
get boolean() {
|
|
848
|
+
return numberToBoolean(data);
|
|
849
|
+
},
|
|
850
|
+
get number() {
|
|
851
|
+
return data;
|
|
852
|
+
},
|
|
853
|
+
get object() {
|
|
854
|
+
return numberToObject(data);
|
|
855
|
+
},
|
|
856
|
+
get string() {
|
|
857
|
+
return numberToString(data);
|
|
858
|
+
},
|
|
859
|
+
get null() {
|
|
860
|
+
return null;
|
|
1003
861
|
}
|
|
1004
|
-
}
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
862
|
+
};
|
|
863
|
+
}
|
|
864
|
+
case `object`: {
|
|
865
|
+
const data = refined.data;
|
|
866
|
+
return {
|
|
867
|
+
get array() {
|
|
868
|
+
return objectToArray(data);
|
|
869
|
+
},
|
|
870
|
+
get boolean() {
|
|
871
|
+
return objectToBoolean(data);
|
|
872
|
+
},
|
|
873
|
+
get number() {
|
|
874
|
+
return objectToNumber(data);
|
|
875
|
+
},
|
|
876
|
+
get object() {
|
|
877
|
+
return data;
|
|
878
|
+
},
|
|
879
|
+
get string() {
|
|
880
|
+
return objectToString(data);
|
|
881
|
+
},
|
|
882
|
+
get null() {
|
|
883
|
+
return null;
|
|
1019
884
|
}
|
|
1020
|
-
}
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
|
|
1025
|
-
|
|
1026
|
-
|
|
1027
|
-
|
|
1028
|
-
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
|
|
885
|
+
};
|
|
886
|
+
}
|
|
887
|
+
case `string`: {
|
|
888
|
+
const data = refined.data;
|
|
889
|
+
return {
|
|
890
|
+
get array() {
|
|
891
|
+
return stringToArray(data);
|
|
892
|
+
},
|
|
893
|
+
get boolean() {
|
|
894
|
+
return stringToBoolean(data);
|
|
895
|
+
},
|
|
896
|
+
get number() {
|
|
897
|
+
return stringToNumber(data);
|
|
898
|
+
},
|
|
899
|
+
get object() {
|
|
900
|
+
return stringToObject(data);
|
|
901
|
+
},
|
|
902
|
+
get string() {
|
|
903
|
+
return data;
|
|
904
|
+
},
|
|
905
|
+
get null() {
|
|
906
|
+
return null;
|
|
1035
907
|
}
|
|
1036
|
-
}
|
|
1037
|
-
null: () => null
|
|
908
|
+
};
|
|
1038
909
|
}
|
|
1039
|
-
|
|
910
|
+
case `null`: {
|
|
911
|
+
refined.data;
|
|
912
|
+
return {
|
|
913
|
+
get array() {
|
|
914
|
+
return nullToArray();
|
|
915
|
+
},
|
|
916
|
+
get boolean() {
|
|
917
|
+
return nullToBoolean();
|
|
918
|
+
},
|
|
919
|
+
get number() {
|
|
920
|
+
return nullToNumber();
|
|
921
|
+
},
|
|
922
|
+
get object() {
|
|
923
|
+
return nullToObject();
|
|
924
|
+
},
|
|
925
|
+
get string() {
|
|
926
|
+
return nullToString();
|
|
927
|
+
},
|
|
928
|
+
get null() {
|
|
929
|
+
return null;
|
|
930
|
+
}
|
|
931
|
+
};
|
|
932
|
+
}
|
|
933
|
+
default:
|
|
934
|
+
console.error(`Could not handle input given to castToJson`);
|
|
935
|
+
throw new Error(`Could not handle input given to castToJson`);
|
|
936
|
+
}
|
|
1040
937
|
};
|
|
1041
938
|
|
|
1042
939
|
// ../hamr/react-json-editor/src/editors-by-type/utilities/object-properties.ts
|
|
@@ -1075,7 +972,7 @@ var makePropertyRecasters = (data, set) => mapObject(
|
|
|
1075
972
|
(value, key) => (newType) => {
|
|
1076
973
|
set(() => ({
|
|
1077
974
|
...data,
|
|
1078
|
-
[key]: castToJson(value)
|
|
975
|
+
[key]: castToJson(value)[newType]
|
|
1079
976
|
}));
|
|
1080
977
|
}
|
|
1081
978
|
);
|
|
@@ -1224,7 +1121,7 @@ var BooleanEditor = ({
|
|
|
1224
1121
|
) });
|
|
1225
1122
|
var NullEditor = ({
|
|
1226
1123
|
Components
|
|
1227
|
-
}) => /* @__PURE__ */ jsx(Components.NullWrapper, { children:
|
|
1124
|
+
}) => /* @__PURE__ */ jsx(Components.NullWrapper, { children: " " });
|
|
1228
1125
|
var NumberEditor = ({
|
|
1229
1126
|
path = [],
|
|
1230
1127
|
isReadonly = () => false,
|
|
@@ -1333,7 +1230,7 @@ var DEFAULT_JSON_EDITOR_COMPONENTS = {
|
|
|
1333
1230
|
children
|
|
1334
1231
|
}
|
|
1335
1232
|
),
|
|
1336
|
-
EditorWrapper: ({ children, className }) => /* @__PURE__ */ jsx("div", { className: `json_editor
|
|
1233
|
+
EditorWrapper: ({ children, className }) => /* @__PURE__ */ jsx("div", { className: `json_editor` + (className ? ` ${className}` : ``), children }),
|
|
1337
1234
|
EditorLayout: ({
|
|
1338
1235
|
DeleteButton,
|
|
1339
1236
|
Header,
|
|
@@ -1412,13 +1309,20 @@ var SubEditors = {
|
|
|
1412
1309
|
object: ObjectEditor,
|
|
1413
1310
|
string: StringEditor
|
|
1414
1311
|
};
|
|
1312
|
+
var fallback = (fn, fallbackValue) => {
|
|
1313
|
+
try {
|
|
1314
|
+
return fn();
|
|
1315
|
+
} catch (_) {
|
|
1316
|
+
return fallbackValue;
|
|
1317
|
+
}
|
|
1318
|
+
};
|
|
1415
1319
|
var StateEditor = ({ token }) => {
|
|
1416
1320
|
const set = useI(token);
|
|
1417
1321
|
const data = useO(token);
|
|
1418
1322
|
return isJson(data) ? /* @__PURE__ */ jsx(JsonEditor, { data, set, schema: true }) : /* @__PURE__ */ jsx("div", { className: "json_editor", children: /* @__PURE__ */ jsx(
|
|
1419
1323
|
ElasticInput,
|
|
1420
1324
|
{
|
|
1421
|
-
value: data
|
|
1325
|
+
value: data === void 0 || data === null ? `` : typeof data === `object` && `toJson` in data && typeof data.toJson === `function` ? JSON.stringify(data.toJson()) : data instanceof Set ? `Set { ${JSON.stringify([...data]).slice(1, -1)} }` : Object.getPrototypeOf(data).constructor.name + ` ` + fallback(() => JSON.stringify(data), `?`),
|
|
1422
1326
|
disabled: true
|
|
1423
1327
|
}
|
|
1424
1328
|
) });
|
|
@@ -1447,19 +1351,34 @@ var StoreEditor = ({ token }) => {
|
|
|
1447
1351
|
}
|
|
1448
1352
|
return /* @__PURE__ */ jsx(StateEditor, { token });
|
|
1449
1353
|
};
|
|
1450
|
-
var
|
|
1451
|
-
|
|
1452
|
-
|
|
1453
|
-
|
|
1454
|
-
|
|
1455
|
-
|
|
1456
|
-
|
|
1457
|
-
|
|
1458
|
-
|
|
1459
|
-
|
|
1460
|
-
|
|
1461
|
-
|
|
1462
|
-
}
|
|
1354
|
+
var {
|
|
1355
|
+
atomIndex,
|
|
1356
|
+
selectorIndex,
|
|
1357
|
+
transactionIndex,
|
|
1358
|
+
transactionLogSelectors,
|
|
1359
|
+
timelineIndex,
|
|
1360
|
+
timelineSelectors,
|
|
1361
|
+
typeSelectors
|
|
1362
|
+
} = attachIntrospectionStates();
|
|
1363
|
+
var devtoolsAreOpenState = atom({
|
|
1364
|
+
key: `\u{1F441}\u200D\u{1F5E8} Devtools Are Open`,
|
|
1365
|
+
default: true,
|
|
1366
|
+
effects: typeof window === `undefined` ? [] : [persistSync(window.localStorage, JSON, `\u{1F441}\u200D\u{1F5E8} Devtools Are Open`)]
|
|
1367
|
+
});
|
|
1368
|
+
var devtoolsViewSelectionState = atom({
|
|
1369
|
+
key: `\u{1F441}\u200D\u{1F5E8} Devtools View Selection`,
|
|
1370
|
+
default: `atoms`,
|
|
1371
|
+
effects: typeof window === `undefined` ? [] : [persistSync(window.localStorage, JSON, `\u{1F441}\u200D\u{1F5E8} Devtools View`)]
|
|
1372
|
+
});
|
|
1373
|
+
var devtoolsViewOptionsState = atom({
|
|
1374
|
+
key: `\u{1F441}\u200D\u{1F5E8} Devtools View Options`,
|
|
1375
|
+
default: [`atoms`, `selectors`, `transactions`, `timelines`],
|
|
1376
|
+
effects: typeof window === `undefined` ? [] : [persistSync(window.localStorage, JSON, `\u{1F441}\u200D\u{1F5E8} Devtools View Options`)]
|
|
1377
|
+
});
|
|
1378
|
+
var viewIsOpenAtoms = atomFamily({
|
|
1379
|
+
key: `\u{1F441}\u200D\u{1F5E8} Devtools View Is Open`,
|
|
1380
|
+
default: false,
|
|
1381
|
+
effects: (key) => typeof window === `undefined` ? [] : [persistSync(window.localStorage, JSON, key + `:view-is-open`)]
|
|
1463
1382
|
});
|
|
1464
1383
|
var StateIndexLeafNode = ({ node, isOpenState, typeState }) => {
|
|
1465
1384
|
const setIsOpen = useI(isOpenState);
|
|
@@ -1506,8 +1425,8 @@ var StateIndexTreeNode = ({ node, isOpenState }) => {
|
|
|
1506
1425
|
const setIsOpen = useI(isOpenState);
|
|
1507
1426
|
const isOpen = useO(isOpenState);
|
|
1508
1427
|
for (const [key, childNode] of node.familyMembers) {
|
|
1509
|
-
findState(
|
|
1510
|
-
findState(
|
|
1428
|
+
findState(viewIsOpenAtoms, key);
|
|
1429
|
+
findState(typeSelectors, childNode.key);
|
|
1511
1430
|
}
|
|
1512
1431
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
1513
1432
|
/* @__PURE__ */ jsxs("header", { children: [
|
|
@@ -1528,8 +1447,8 @@ var StateIndexTreeNode = ({ node, isOpenState }) => {
|
|
|
1528
1447
|
StateIndexNode,
|
|
1529
1448
|
{
|
|
1530
1449
|
node: childNode,
|
|
1531
|
-
isOpenState: findState(
|
|
1532
|
-
typeState: findState(
|
|
1450
|
+
isOpenState: findState(viewIsOpenAtoms, childNode.key),
|
|
1451
|
+
typeState: findState(typeSelectors, childNode.key)
|
|
1533
1452
|
},
|
|
1534
1453
|
key
|
|
1535
1454
|
)) : null
|
|
@@ -1552,8 +1471,8 @@ var StateIndex = ({ tokenIndex }) => {
|
|
|
1552
1471
|
StateIndexNode,
|
|
1553
1472
|
{
|
|
1554
1473
|
node,
|
|
1555
|
-
isOpenState: findState(
|
|
1556
|
-
typeState: findState(
|
|
1474
|
+
isOpenState: findState(viewIsOpenAtoms, node.key),
|
|
1475
|
+
typeState: findState(typeSelectors, node.key)
|
|
1557
1476
|
},
|
|
1558
1477
|
key
|
|
1559
1478
|
);
|
|
@@ -1791,8 +1710,8 @@ var TimelineIndex = () => {
|
|
|
1791
1710
|
TimelineLog,
|
|
1792
1711
|
{
|
|
1793
1712
|
token,
|
|
1794
|
-
isOpenState: findState(
|
|
1795
|
-
timelineState: findState(
|
|
1713
|
+
isOpenState: findState(viewIsOpenAtoms, token.key),
|
|
1714
|
+
timelineState: findState(timelineSelectors, token.key)
|
|
1796
1715
|
},
|
|
1797
1716
|
token.key
|
|
1798
1717
|
);
|
|
@@ -1845,8 +1764,8 @@ var TransactionIndex = () => {
|
|
|
1845
1764
|
TransactionLog,
|
|
1846
1765
|
{
|
|
1847
1766
|
token,
|
|
1848
|
-
isOpenState: findState(
|
|
1849
|
-
logState: findState(
|
|
1767
|
+
isOpenState: findState(viewIsOpenAtoms, token.key),
|
|
1768
|
+
logState: findState(transactionLogSelectors, token.key)
|
|
1850
1769
|
},
|
|
1851
1770
|
token.key
|
|
1852
1771
|
);
|
|
@@ -1930,52 +1849,4 @@ var AtomIODevtools = () => {
|
|
|
1930
1849
|
] });
|
|
1931
1850
|
};
|
|
1932
1851
|
|
|
1933
|
-
|
|
1934
|
-
var {
|
|
1935
|
-
atomIndex,
|
|
1936
|
-
selectorIndex,
|
|
1937
|
-
transactionIndex,
|
|
1938
|
-
findTransactionLogState,
|
|
1939
|
-
timelineIndex,
|
|
1940
|
-
findTimelineState
|
|
1941
|
-
} = attachIntrospectionStates();
|
|
1942
|
-
var devtoolsAreOpenState = atom({
|
|
1943
|
-
key: `\u{1F441}\u200D\u{1F5E8} Devtools Are Open`,
|
|
1944
|
-
default: true,
|
|
1945
|
-
effects: [lazyLocalStorageEffect(`\u{1F441}\u200D\u{1F5E8} Devtools Are Open`)]
|
|
1946
|
-
});
|
|
1947
|
-
var devtoolsViewSelectionState = atom({
|
|
1948
|
-
key: `\u{1F441}\u200D\u{1F5E8} Devtools View Selection`,
|
|
1949
|
-
default: `atoms`,
|
|
1950
|
-
effects: [lazyLocalStorageEffect(`\u{1F441}\u200D\u{1F5E8} Devtools View`)]
|
|
1951
|
-
});
|
|
1952
|
-
var devtoolsViewOptionsState = atom({
|
|
1953
|
-
key: `\u{1F441}\u200D\u{1F5E8} Devtools View Options`,
|
|
1954
|
-
default: [`atoms`, `selectors`, `transactions`, `timelines`],
|
|
1955
|
-
effects: [lazyLocalStorageEffect(`\u{1F441}\u200D\u{1F5E8} Devtools View Options`)]
|
|
1956
|
-
});
|
|
1957
|
-
var findViewIsOpenState = atomFamily({
|
|
1958
|
-
key: `\u{1F441}\u200D\u{1F5E8} Devtools View Is Open`,
|
|
1959
|
-
default: false,
|
|
1960
|
-
effects: (key) => [lazyLocalStorageEffect(key + `:view-is-open`)]
|
|
1961
|
-
});
|
|
1962
|
-
var primitiveRefinery = new Refinery({
|
|
1963
|
-
number: (input) => typeof input === `number`,
|
|
1964
|
-
string: (input) => typeof input === `string`,
|
|
1965
|
-
boolean: (input) => typeof input === `boolean`,
|
|
1966
|
-
null: (input) => input === null
|
|
1967
|
-
});
|
|
1968
|
-
var jsonTreeRefinery = new Refinery({
|
|
1969
|
-
object: isPlainObject,
|
|
1970
|
-
array: (input) => Array.isArray(input)
|
|
1971
|
-
});
|
|
1972
|
-
var prettyJson = new Differ(primitiveRefinery, jsonTreeRefinery, {
|
|
1973
|
-
number: diffNumber,
|
|
1974
|
-
string: diffString,
|
|
1975
|
-
boolean: diffBoolean,
|
|
1976
|
-
null: () => ({ summary: `No Change` }),
|
|
1977
|
-
object: diffObject,
|
|
1978
|
-
array: diffArray
|
|
1979
|
-
});
|
|
1980
|
-
|
|
1981
|
-
export { AtomIODevtools, atomIndex, devtoolsAreOpenState, devtoolsViewOptionsState, devtoolsViewSelectionState, findTimelineState, findTransactionLogState, findViewIsOpenState, jsonTreeRefinery, prettyJson, primitiveRefinery, selectorIndex, timelineIndex, transactionIndex };
|
|
1852
|
+
export { AtomIODevtools };
|