atom.io 0.27.4 → 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 +65 -81
- package/data/src/dict.ts +9 -12
- package/data/src/join.ts +30 -33
- package/data/src/struct-family.ts +17 -23
- package/data/src/struct.ts +9 -12
- package/dist/{chunk-JRENM6KL.js → chunk-BX3MTH2Z.js} +482 -385
- package/dist/chunk-D52JNVER.js +721 -0
- package/dist/chunk-EUVKUTW3.js +89 -0
- package/dist/index.d.ts +4 -3
- package/dist/index.js +35 -53
- package/ephemeral/dist/index.js +1 -1
- package/ephemeral/src/find-state.ts +1 -1
- package/immortal/dist/index.js +2 -2
- package/immortal/src/seek-state.ts +2 -2
- package/internal/dist/index.d.ts +141 -87
- package/internal/dist/index.js +1 -1
- package/internal/src/atom/create-regular-atom.ts +3 -3
- package/internal/src/atom/create-standalone-atom.ts +7 -5
- package/internal/src/atom/dispose-atom.ts +2 -9
- package/internal/src/families/create-atom-family.ts +5 -5
- package/internal/src/families/create-readonly-selector-family.ts +20 -9
- package/internal/src/families/create-regular-atom-family.ts +15 -6
- package/internal/src/families/create-selector-family.ts +5 -5
- package/internal/src/families/create-writable-selector-family.ts +20 -10
- package/internal/src/families/dispose-from-store.ts +43 -29
- package/internal/src/families/find-in-store.ts +28 -18
- package/internal/src/families/init-family-member.ts +9 -9
- package/internal/src/families/seek-in-store.ts +10 -10
- package/internal/src/get-state/get-from-store.ts +70 -47
- package/internal/src/ingest-updates/ingest-atom-update.ts +1 -1
- package/internal/src/ingest-updates/ingest-creation-disposal.ts +15 -6
- package/internal/src/molecule/create-molecule-family.ts +1 -1
- package/internal/src/molecule/dispose-molecule.ts +7 -18
- package/internal/src/molecule/grow-molecule-in-store.ts +1 -1
- package/internal/src/molecule/make-molecule-in-store.ts +5 -5
- package/internal/src/mutable/create-mutable-atom-family.ts +15 -6
- package/internal/src/mutable/create-mutable-atom.ts +3 -3
- package/internal/src/mutable/get-json-token.ts +2 -2
- package/internal/src/mutable/tracker-family.ts +3 -3
- package/internal/src/mutable/tracker.ts +14 -18
- package/internal/src/pretty-print.ts +1 -16
- package/internal/src/selector/create-readonly-selector.ts +2 -2
- package/internal/src/selector/create-standalone-selector.ts +5 -5
- package/internal/src/selector/create-writable-selector.ts +2 -2
- package/internal/src/selector/dispose-selector.ts +2 -9
- package/internal/src/selector/register-selector.ts +9 -9
- package/internal/src/set-state/set-into-store.ts +23 -33
- package/internal/src/store/circular-buffer.ts +34 -0
- package/internal/src/store/counterfeit.ts +109 -0
- package/internal/src/store/deposit.ts +67 -13
- package/internal/src/store/index.ts +1 -0
- package/internal/src/store/store.ts +4 -1
- package/internal/src/store/withdraw.ts +15 -10
- package/internal/src/subscribe/index.ts +2 -0
- package/internal/src/subscribe/subscribe-in-store.ts +62 -0
- package/internal/src/timeline/time-travel.ts +1 -1
- package/internal/src/transaction/build-transaction.ts +7 -6
- package/introspection/dist/index.d.ts +84 -4
- package/introspection/dist/index.js +1 -413
- package/introspection/src/attach-atom-index.ts +5 -8
- package/introspection/src/attach-introspection-states.ts +7 -4
- package/introspection/src/attach-selector-index.ts +6 -8
- package/introspection/src/attach-timeline-family.ts +25 -28
- package/introspection/src/attach-timeline-index.ts +5 -8
- package/introspection/src/attach-transaction-index.ts +5 -8
- package/introspection/src/attach-transaction-logs.ts +21 -27
- 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 -80
- package/json/src/entries.ts +6 -0
- package/json/src/index.ts +47 -6
- package/json/src/select-json-family.ts +4 -4
- package/json/src/select-json.ts +6 -9
- package/package.json +17 -8
- package/react/dist/index.js +7 -7
- package/react/src/parse-state-overloads.ts +2 -2
- package/react/src/use-i.ts +1 -1
- package/react/src/use-json.ts +2 -2
- package/react/src/use-o.ts +2 -2
- 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 +59 -65
- package/realtime-client/src/pull-atom-family-member.ts +1 -1
- package/realtime-client/src/pull-atom.ts +1 -1
- package/realtime-client/src/pull-mutable-atom-family-member.ts +3 -3
- package/realtime-client/src/pull-mutable-atom.ts +3 -3
- package/realtime-client/src/realtime-client-stores/client-main-store.ts +6 -6
- package/realtime-client/src/sync-continuity.ts +55 -53
- package/realtime-react/dist/index.js +3 -3
- package/realtime-react/src/use-pull-atom-family-member.ts +1 -1
- package/realtime-react/src/use-pull-mutable-family-member.ts +1 -1
- package/realtime-react/src/use-pull-selector-family-member.ts +1 -1
- package/realtime-server/dist/index.js +72 -36
- package/realtime-server/src/realtime-continuity-synchronizer.ts +57 -93
- package/realtime-server/src/realtime-family-provider.ts +3 -3
- package/realtime-server/src/realtime-mutable-family-provider.ts +5 -5
- package/realtime-server/src/realtime-mutable-provider.ts +2 -2
- package/realtime-server/src/realtime-state-provider.ts +1 -1
- package/realtime-server/src/realtime-state-receiver.ts +1 -1
- package/realtime-testing/dist/index.d.ts +2 -0
- package/realtime-testing/dist/index.js +57 -15
- package/realtime-testing/src/setup-realtime-test.tsx +66 -16
- package/src/atom.ts +2 -2
- package/src/dispose-state.ts +2 -2
- package/src/get-state.ts +9 -13
- package/src/molecule.ts +1 -1
- package/src/selector.ts +2 -2
- package/src/set-state.ts +10 -7
- package/src/silo.ts +29 -55
- package/src/subscribe.ts +3 -23
- package/src/timeline.ts +2 -2
- 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
- package/internal/src/families/throw-in-case-of-conflicting-family.ts +0 -18
package/web/package.json
ADDED
package/web/src/index.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./persist-sync"
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { AtomEffect } from "atom.io"
|
|
2
|
+
|
|
3
|
+
export type StringInterface<T> = {
|
|
4
|
+
stringify: (t: T) => string
|
|
5
|
+
parse: (s: string) => T
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export const persistSync =
|
|
9
|
+
<T>(
|
|
10
|
+
storage: Storage,
|
|
11
|
+
{ stringify, parse }: StringInterface<T>,
|
|
12
|
+
key: string,
|
|
13
|
+
): AtomEffect<T> =>
|
|
14
|
+
({ setSelf, onSet }) => {
|
|
15
|
+
const savedValue = storage.getItem(key)
|
|
16
|
+
if (savedValue != null) setSelf(parse(savedValue))
|
|
17
|
+
|
|
18
|
+
onSet(({ newValue }) => {
|
|
19
|
+
if (newValue == null) {
|
|
20
|
+
storage.removeItem(key)
|
|
21
|
+
return
|
|
22
|
+
}
|
|
23
|
+
storage.setItem(key, stringify(newValue))
|
|
24
|
+
})
|
|
25
|
+
}
|
package/dist/chunk-AK23DRMD.js
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
// ../anvl/src/json/index.ts
|
|
2
|
-
var parseJson = (str) => JSON.parse(str);
|
|
3
|
-
var stringifyJson = (json) => JSON.stringify(json);
|
|
4
|
-
var JSON_TYPE_NAMES = [
|
|
5
|
-
`array`,
|
|
6
|
-
`boolean`,
|
|
7
|
-
`null`,
|
|
8
|
-
`number`,
|
|
9
|
-
`object`,
|
|
10
|
-
`string`
|
|
11
|
-
];
|
|
12
|
-
var JSON_DEFAULTS = {
|
|
13
|
-
array: [],
|
|
14
|
-
boolean: false,
|
|
15
|
-
null: null,
|
|
16
|
-
number: 0,
|
|
17
|
-
object: {},
|
|
18
|
-
string: ``
|
|
19
|
-
};
|
|
20
|
-
|
|
21
|
-
export { JSON_DEFAULTS, JSON_TYPE_NAMES, parseJson, stringifyJson };
|
package/dist/chunk-IW6WYRS7.js
DELETED
|
@@ -1,140 +0,0 @@
|
|
|
1
|
-
// ../anvl/src/array/index.ts
|
|
2
|
-
var isArray = (isType) => (input) => Array.isArray(input) && input.every((item) => isType(item));
|
|
3
|
-
var map = (f) => (a) => a.map(f);
|
|
4
|
-
var every = (f = Boolean) => (a) => a.every(f);
|
|
5
|
-
var allTrue = every((x) => x === true);
|
|
6
|
-
|
|
7
|
-
// ../anvl/src/function/pipe.ts
|
|
8
|
-
function pipe(a, ab, bc, cd, de, ef, fg, gh, hi) {
|
|
9
|
-
switch (arguments.length) {
|
|
10
|
-
case 1:
|
|
11
|
-
return a;
|
|
12
|
-
case 2:
|
|
13
|
-
return ab(a);
|
|
14
|
-
case 3:
|
|
15
|
-
return bc(ab(a));
|
|
16
|
-
case 4:
|
|
17
|
-
return cd(bc(ab(a)));
|
|
18
|
-
case 5:
|
|
19
|
-
return de(cd(bc(ab(a))));
|
|
20
|
-
case 6:
|
|
21
|
-
return ef(de(cd(bc(ab(a)))));
|
|
22
|
-
case 7:
|
|
23
|
-
return fg(ef(de(cd(bc(ab(a))))));
|
|
24
|
-
case 8:
|
|
25
|
-
return gh(fg(ef(de(cd(bc(ab(a)))))));
|
|
26
|
-
case 9:
|
|
27
|
-
return hi(gh(fg(ef(de(cd(bc(ab(a))))))));
|
|
28
|
-
default: {
|
|
29
|
-
let ret = arguments[0];
|
|
30
|
-
for (let i = 1; i < arguments.length; i++) {
|
|
31
|
-
ret = arguments[i](ret);
|
|
32
|
-
}
|
|
33
|
-
return ret;
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
// ../anvl/src/function/index.ts
|
|
39
|
-
var doNothing = () => void 0;
|
|
40
|
-
var become = (nextVersionOfThing) => (originalThing) => nextVersionOfThing instanceof Function ? nextVersionOfThing(
|
|
41
|
-
originalThing instanceof Function ? originalThing() : originalThing
|
|
42
|
-
) : nextVersionOfThing;
|
|
43
|
-
var pass = (...params) => (fn) => fn(...params);
|
|
44
|
-
var raiseError = (message) => {
|
|
45
|
-
throw new Error(message);
|
|
46
|
-
};
|
|
47
|
-
var fallback = (fn, fallbackValue) => {
|
|
48
|
-
try {
|
|
49
|
-
return fn();
|
|
50
|
-
} catch (_) {
|
|
51
|
-
return fallbackValue;
|
|
52
|
-
}
|
|
53
|
-
};
|
|
54
|
-
|
|
55
|
-
// ../anvl/src/nullish/index.ts
|
|
56
|
-
var isUndefined = (input) => input === void 0;
|
|
57
|
-
var ifDefined = (validate) => (input) => isUndefined(input) || validate(input);
|
|
58
|
-
var ifNullish = (alt) => (input) => input ?? alt;
|
|
59
|
-
|
|
60
|
-
// ../anvl/src/object/access.ts
|
|
61
|
-
var access = (k) => Object.assign((obj) => obj[k], {
|
|
62
|
-
in: (obj) => obj[k]
|
|
63
|
-
});
|
|
64
|
-
|
|
65
|
-
// ../anvl/src/object/entries.ts
|
|
66
|
-
var recordToEntries = (obj) => Object.entries(obj);
|
|
67
|
-
var entriesToRecord = (entries) => Object.fromEntries(entries);
|
|
68
|
-
|
|
69
|
-
// ../anvl/src/object/mapObject.ts
|
|
70
|
-
var mapObject = (obj, fn) => pipe(
|
|
71
|
-
obj,
|
|
72
|
-
recordToEntries,
|
|
73
|
-
map(([key, val]) => [key, fn(val, key)]),
|
|
74
|
-
entriesToRecord
|
|
75
|
-
);
|
|
76
|
-
var mob = (fn) => (obj) => mapObject(obj, fn);
|
|
77
|
-
|
|
78
|
-
// ../anvl/src/object/refinement.ts
|
|
79
|
-
var isNonNullObject = (input) => typeof input === `object` && input !== null;
|
|
80
|
-
var isPlainObject = (input) => isNonNullObject(input) && Object.getPrototypeOf(input) === Object.prototype;
|
|
81
|
-
var isRecord = (isKey, isValue) => (input) => isPlainObject(input) && Object.entries(input).every(([k, v]) => isKey(k) && isValue(v));
|
|
82
|
-
var hasProperties = (isValue, options = { allowExtraProperties: false }) => {
|
|
83
|
-
const name = `{${recordToEntries(
|
|
84
|
-
isValue
|
|
85
|
-
).map(([k, v]) => String(k) + `:` + v.name).join(`,`)}}`;
|
|
86
|
-
const _ = {
|
|
87
|
-
[name]: (input) => isPlainObject(input) && pipe(
|
|
88
|
-
isValue,
|
|
89
|
-
Object.entries,
|
|
90
|
-
every(([key, val]) => key in input || val(void 0))
|
|
91
|
-
) && pipe(
|
|
92
|
-
input,
|
|
93
|
-
mob(
|
|
94
|
-
(val, key) => pipe(
|
|
95
|
-
isValue,
|
|
96
|
-
access(key),
|
|
97
|
-
ifNullish(() => options.allowExtraProperties),
|
|
98
|
-
pass(val)
|
|
99
|
-
)
|
|
100
|
-
),
|
|
101
|
-
Object.values,
|
|
102
|
-
allTrue
|
|
103
|
-
)
|
|
104
|
-
};
|
|
105
|
-
return _[name];
|
|
106
|
-
};
|
|
107
|
-
var ALLOW_EXTENSION = { allowExtraProperties: true };
|
|
108
|
-
var doesExtend = (isValue) => hasProperties(isValue, ALLOW_EXTENSION);
|
|
109
|
-
|
|
110
|
-
// ../anvl/src/object/sprawl.ts
|
|
111
|
-
var sprawl = (tree, inspector) => {
|
|
112
|
-
const walk = (path, node) => {
|
|
113
|
-
const inspect = (p, n) => {
|
|
114
|
-
const result2 = inspector(p, n);
|
|
115
|
-
if (result2) return result2;
|
|
116
|
-
return null;
|
|
117
|
-
};
|
|
118
|
-
const result = inspect(path, node);
|
|
119
|
-
if (result?.jobComplete ?? result?.pathComplete) {
|
|
120
|
-
return result;
|
|
121
|
-
}
|
|
122
|
-
const childEntries = Array.isArray(node) ? node.map((v, i) => [i, v]) : isPlainObject(node) ? Object.entries(node) : [];
|
|
123
|
-
for (const [k, v] of childEntries) {
|
|
124
|
-
const subResult = walk([...path, k], v);
|
|
125
|
-
if (subResult?.jobComplete) {
|
|
126
|
-
return subResult;
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
return {};
|
|
130
|
-
};
|
|
131
|
-
walk([], tree);
|
|
132
|
-
};
|
|
133
|
-
|
|
134
|
-
// ../anvl/src/object/index.ts
|
|
135
|
-
var delve = (obj, path) => {
|
|
136
|
-
const found = path.reduce((acc, key) => acc?.[key], obj);
|
|
137
|
-
return found === void 0 ? new Error(`Not found`) : { found };
|
|
138
|
-
};
|
|
139
|
-
|
|
140
|
-
export { become, delve, doNothing, doesExtend, fallback, ifDefined, isArray, isPlainObject, isRecord, mapObject, pipe, raiseError, recordToEntries, sprawl };
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import type { AtomFamilyToken, SelectorFamilyToken } from "atom.io"
|
|
2
|
-
|
|
3
|
-
import { prettyPrintTokenType } from "../pretty-print"
|
|
4
|
-
import type { Store } from "../store"
|
|
5
|
-
|
|
6
|
-
export function throwInCaseOfConflictingFamily(
|
|
7
|
-
family: AtomFamilyToken<any, any> | SelectorFamilyToken<any, any>,
|
|
8
|
-
store: Store,
|
|
9
|
-
): void {
|
|
10
|
-
const existingFamily = store.families.get(family.key)
|
|
11
|
-
if (existingFamily) {
|
|
12
|
-
throw new Error(
|
|
13
|
-
`Tried to create ${family.type === `atom_family` ? `an` : `a`} ${prettyPrintTokenType(family)} with key "${family.key}", but "${family.key}" already exists in store "${store.config.name}" as ${existingFamily.type === `atom_family` ? `an` : `a`} ${prettyPrintTokenType(
|
|
14
|
-
existingFamily,
|
|
15
|
-
)}`,
|
|
16
|
-
)
|
|
17
|
-
}
|
|
18
|
-
}
|