atom.io 0.13.0 → 0.14.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/data/dist/index.cjs +1473 -52
- package/data/dist/index.cjs.map +1 -1
- package/data/dist/index.d.cts +315 -16
- package/data/dist/index.js +10 -267
- package/data/dist/index.js.map +1 -1
- package/data/package.json +5 -5
- package/data/src/join.ts +3 -3
- package/dist/chunk-5VJ77LZE.js +176 -0
- package/dist/chunk-5VJ77LZE.js.map +1 -0
- package/dist/chunk-CK7GNCU5.js +309 -0
- package/dist/chunk-CK7GNCU5.js.map +1 -0
- package/dist/chunk-KW7RA7IM.js +67 -0
- package/dist/chunk-KW7RA7IM.js.map +1 -0
- package/dist/chunk-LFXB7Y6M.js +68 -0
- package/dist/chunk-LFXB7Y6M.js.map +1 -0
- package/dist/chunk-NYCVSXQB.js +181 -0
- package/dist/chunk-NYCVSXQB.js.map +1 -0
- package/dist/chunk-TE3ZSTQ6.js +2516 -0
- package/dist/chunk-TE3ZSTQ6.js.map +1 -0
- package/dist/index.cjs +2250 -126
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +272 -25
- package/dist/index.js +1 -215
- package/dist/index.js.map +1 -1
- package/dist/metafile-cjs.json +1 -1
- package/internal/dist/index.cjs +885 -684
- package/internal/dist/index.cjs.map +1 -1
- package/internal/dist/index.d.cts +230 -24
- package/internal/dist/index.js +1 -2171
- package/internal/dist/index.js.map +1 -1
- package/internal/package.json +5 -5
- package/internal/src/atom/create-atom.ts +3 -2
- package/internal/src/mutable/create-mutable-atom.ts +3 -2
- package/internal/src/mutable/tracker.ts +6 -4
- package/internal/src/selector/register-selector.ts +1 -1
- package/internal/src/selector/update-selector-atoms.ts +3 -3
- package/internal/src/subscribe/index.ts +3 -0
- package/internal/src/subscribe/recall-state.ts +0 -6
- package/internal/src/subscribe/subscribe-to-state.ts +47 -0
- package/internal/src/subscribe/subscribe-to-timeline.ts +28 -0
- package/internal/src/subscribe/subscribe-to-transaction.ts +33 -0
- package/introspection/dist/index.cjs +1618 -46
- package/introspection/dist/index.cjs.map +1 -1
- package/introspection/dist/index.d.cts +374 -4
- package/introspection/dist/index.js +2 -316
- package/introspection/dist/index.js.map +1 -1
- package/introspection/package.json +5 -5
- package/json/dist/index.cjs +1560 -8
- package/json/dist/index.cjs.map +1 -1
- package/json/dist/index.d.cts +371 -7
- package/json/dist/index.js +1 -76
- package/json/dist/index.js.map +1 -1
- package/json/package.json +5 -5
- package/package.json +10 -9
- package/react/dist/index.cjs +1638 -10
- package/react/dist/index.cjs.map +1 -1
- package/react/dist/index.d.cts +383 -5
- package/react/dist/index.js +2 -31
- package/react/dist/index.js.map +1 -1
- package/react/package.json +5 -5
- package/react/src/store-hooks.ts +52 -3
- package/react-devtools/dist/index.cjs +2268 -198
- package/react-devtools/dist/index.cjs.map +1 -1
- package/react-devtools/dist/index.css +2 -2
- package/react-devtools/dist/index.d.cts +148 -24
- package/react-devtools/dist/index.js +57 -297
- package/react-devtools/dist/index.js.map +1 -1
- package/react-devtools/package.json +5 -5
- package/realtime-client/dist/index.cjs +1585 -34
- package/realtime-client/dist/index.cjs.map +1 -1
- package/realtime-client/dist/index.d.cts +382 -11
- package/realtime-client/dist/index.js +2 -164
- package/realtime-client/dist/index.js.map +1 -1
- package/realtime-client/package.json +5 -5
- package/realtime-client/src/use-push.ts +4 -4
- package/realtime-client/src/use-server-action.ts +4 -4
- package/realtime-react/dist/index.cjs +1782 -35
- package/realtime-react/dist/index.cjs.map +1 -1
- package/realtime-react/dist/index.d.cts +49 -9
- package/realtime-react/dist/index.js +4 -66
- package/realtime-react/dist/index.js.map +1 -1
- package/realtime-react/package.json +5 -5
- package/realtime-server/dist/index.cjs +1627 -60
- package/realtime-server/dist/index.cjs.map +1 -1
- package/realtime-server/dist/index.d.cts +391 -11
- package/realtime-server/dist/index.js +59 -32
- package/realtime-server/dist/index.js.map +1 -1
- package/realtime-server/package.json +6 -6
- package/realtime-server/src/hook-composition/expose-family.ts +7 -3
- package/realtime-server/src/hook-composition/expose-mutable-family.ts +13 -5
- package/realtime-server/src/hook-composition/expose-mutable.ts +11 -3
- package/realtime-server/src/hook-composition/expose-single.ts +6 -2
- package/realtime-server/src/hook-composition/receive-transaction.ts +14 -5
- package/realtime-testing/dist/index.cjs +2352 -16
- package/realtime-testing/dist/index.cjs.map +1 -1
- package/realtime-testing/dist/index.d.cts +486 -3
- package/realtime-testing/dist/index.js +10 -31
- package/realtime-testing/dist/index.js.map +1 -1
- package/realtime-testing/package.json +5 -5
- package/src/subscribe.ts +37 -91
- package/transceivers/set-rtx/dist/index.cjs +31 -10
- package/transceivers/set-rtx/dist/index.cjs.map +1 -1
- package/transceivers/set-rtx/dist/index.d.cts +29 -3
- package/transceivers/set-rtx/dist/index.js +2 -3
- package/transceivers/set-rtx/dist/index.js.map +1 -1
- package/transceivers/set-rtx/package.json +6 -6
- package/data/dist/index.d.ts +0 -158
- package/data/dist/metafile-cjs.json +0 -1
- package/data/dist/metafile-esm.json +0 -1
- package/dist/index.d.ts +0 -243
- package/dist/metafile-esm.json +0 -1
- package/internal/dist/index.d.ts +0 -414
- package/internal/dist/metafile-cjs.json +0 -1
- package/internal/dist/metafile-esm.json +0 -1
- package/introspection/dist/index.d.ts +0 -24
- package/introspection/dist/metafile-cjs.json +0 -1
- package/introspection/dist/metafile-esm.json +0 -1
- package/json/dist/index.d.ts +0 -51
- package/json/dist/metafile-cjs.json +0 -1
- package/json/dist/metafile-esm.json +0 -1
- package/react/dist/index.d.ts +0 -16
- package/react/dist/metafile-cjs.json +0 -1
- package/react/dist/metafile-esm.json +0 -1
- package/react-devtools/dist/index.d.ts +0 -341
- package/react-devtools/dist/metafile-cjs.json +0 -1
- package/react-devtools/dist/metafile-esm.json +0 -1
- package/realtime-client/dist/index.d.ts +0 -21
- package/realtime-client/dist/metafile-cjs.json +0 -1
- package/realtime-client/dist/metafile-esm.json +0 -1
- package/realtime-react/dist/index.d.ts +0 -27
- package/realtime-react/dist/metafile-cjs.json +0 -1
- package/realtime-react/dist/metafile-esm.json +0 -1
- package/realtime-server/dist/index.d.ts +0 -25
- package/realtime-server/dist/metafile-cjs.json +0 -1
- package/realtime-server/dist/metafile-esm.json +0 -1
- package/realtime-testing/dist/index.d.ts +0 -49
- package/realtime-testing/dist/metafile-cjs.json +0 -1
- package/realtime-testing/dist/metafile-esm.json +0 -1
- package/transceivers/set-rtx/dist/index.d.ts +0 -40
- package/transceivers/set-rtx/dist/metafile-cjs.json +0 -1
- package/transceivers/set-rtx/dist/metafile-esm.json +0 -1
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
// ../anvl/src/function/pipe.ts
|
|
2
|
+
function pipe(a, ab, bc, cd, de, ef, fg, gh, hi) {
|
|
3
|
+
switch (arguments.length) {
|
|
4
|
+
case 1:
|
|
5
|
+
return a;
|
|
6
|
+
case 2:
|
|
7
|
+
return ab(a);
|
|
8
|
+
case 3:
|
|
9
|
+
return bc(ab(a));
|
|
10
|
+
case 4:
|
|
11
|
+
return cd(bc(ab(a)));
|
|
12
|
+
case 5:
|
|
13
|
+
return de(cd(bc(ab(a))));
|
|
14
|
+
case 6:
|
|
15
|
+
return ef(de(cd(bc(ab(a)))));
|
|
16
|
+
case 7:
|
|
17
|
+
return fg(ef(de(cd(bc(ab(a))))));
|
|
18
|
+
case 8:
|
|
19
|
+
return gh(fg(ef(de(cd(bc(ab(a)))))));
|
|
20
|
+
case 9:
|
|
21
|
+
return hi(gh(fg(ef(de(cd(bc(ab(a))))))));
|
|
22
|
+
default: {
|
|
23
|
+
let ret = arguments[0];
|
|
24
|
+
for (let i = 1; i < arguments.length; i++) {
|
|
25
|
+
ret = arguments[i](ret);
|
|
26
|
+
}
|
|
27
|
+
return ret;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
// ../anvl/src/function/index.ts
|
|
33
|
+
var doNothing = () => void 0;
|
|
34
|
+
var become = (nextVersionOfThing) => (originalThing) => nextVersionOfThing instanceof Function ? nextVersionOfThing(
|
|
35
|
+
originalThing instanceof Function ? originalThing() : originalThing
|
|
36
|
+
) : nextVersionOfThing;
|
|
37
|
+
var isModifier = (validate) => (sample) => {
|
|
38
|
+
const sampleIsValid = validate(sample);
|
|
39
|
+
if (!sampleIsValid) {
|
|
40
|
+
throw new Error(`Invalid test case: JSON.stringify(${sample})`);
|
|
41
|
+
}
|
|
42
|
+
return (input) => {
|
|
43
|
+
if (typeof input !== `function`)
|
|
44
|
+
return false;
|
|
45
|
+
const testResult = input(sample);
|
|
46
|
+
return validate(testResult);
|
|
47
|
+
};
|
|
48
|
+
};
|
|
49
|
+
var pass = (...params) => (fn) => fn(...params);
|
|
50
|
+
var raiseError = (message) => {
|
|
51
|
+
throw new Error(message);
|
|
52
|
+
};
|
|
53
|
+
var fallback = (fn, fallbackValue) => {
|
|
54
|
+
try {
|
|
55
|
+
return fn();
|
|
56
|
+
} catch (_) {
|
|
57
|
+
return fallbackValue;
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
// ../anvl/src/array/venn.ts
|
|
62
|
+
var includesAll = (items) => (array) => {
|
|
63
|
+
for (const item of items) {
|
|
64
|
+
if (!array.includes(item))
|
|
65
|
+
return false;
|
|
66
|
+
}
|
|
67
|
+
return true;
|
|
68
|
+
};
|
|
69
|
+
var comprises = (items) => (array) => includesAll(items)(array) && includesAll(array)(items);
|
|
70
|
+
|
|
71
|
+
// ../anvl/src/array/index.ts
|
|
72
|
+
var isArray = (isType) => (input) => Array.isArray(input) && input.every((item) => isType(item));
|
|
73
|
+
var map = (f) => (a) => a.map(f);
|
|
74
|
+
var every = (f = Boolean) => (a) => a.every(f);
|
|
75
|
+
var allTrue = every((x) => x === true);
|
|
76
|
+
var addTo = (a) => (x) => a.includes(x) ? a : [...a, x];
|
|
77
|
+
var isEmptyArray = (input) => Array.isArray(input) && input.length === 0;
|
|
78
|
+
var isOneOf = (...args) => (input) => args.includes(input);
|
|
79
|
+
|
|
80
|
+
// ../anvl/src/nullish/index.ts
|
|
81
|
+
var isUndefined = (input) => input === void 0;
|
|
82
|
+
var ifDefined = (validate) => (input) => isUndefined(input) || validate(input);
|
|
83
|
+
var ifNullish = (alt) => (input) => input != null ? input : alt;
|
|
84
|
+
|
|
85
|
+
// ../anvl/src/object/access.ts
|
|
86
|
+
var access = (k) => Object.assign((obj) => obj[k], {
|
|
87
|
+
in: (obj) => obj[k]
|
|
88
|
+
});
|
|
89
|
+
|
|
90
|
+
// ../anvl/src/object/entries.ts
|
|
91
|
+
var recordToEntries = (obj) => Object.entries(obj);
|
|
92
|
+
var entriesToRecord = (entries) => Object.fromEntries(entries);
|
|
93
|
+
|
|
94
|
+
// ../anvl/src/object/mapObject.ts
|
|
95
|
+
var mapObject = (obj, fn) => pipe(
|
|
96
|
+
obj,
|
|
97
|
+
recordToEntries,
|
|
98
|
+
map(([key, val]) => [key, fn(val, key)]),
|
|
99
|
+
entriesToRecord
|
|
100
|
+
);
|
|
101
|
+
var mob = (fn) => (obj) => mapObject(obj, fn);
|
|
102
|
+
|
|
103
|
+
// ../anvl/src/object/refinement.ts
|
|
104
|
+
var isNonNullObject = (input) => typeof input === `object` && input !== null;
|
|
105
|
+
var isPlainObject = (input) => isNonNullObject(input) && Object.getPrototypeOf(input) === Object.prototype;
|
|
106
|
+
var isEmptyObject = (input) => isPlainObject(input) && Object.keys(input).length === 0;
|
|
107
|
+
var isRecord = (isKey, isValue) => (input) => isPlainObject(input) && Object.entries(input).every(([k, v]) => isKey(k) && isValue(v));
|
|
108
|
+
var hasProperties = (isValue, options = { allowExtraProperties: false }) => {
|
|
109
|
+
const name = `{${recordToEntries(
|
|
110
|
+
isValue
|
|
111
|
+
).map(([k, v]) => String(k) + `:` + v.name).join(`,`)}}`;
|
|
112
|
+
const _ = {
|
|
113
|
+
[name]: (input) => isPlainObject(input) && pipe(
|
|
114
|
+
isValue,
|
|
115
|
+
Object.entries,
|
|
116
|
+
every(([key, val]) => key in input || val(void 0))
|
|
117
|
+
) && pipe(
|
|
118
|
+
input,
|
|
119
|
+
mob(
|
|
120
|
+
(val, key) => pipe(
|
|
121
|
+
isValue,
|
|
122
|
+
access(key),
|
|
123
|
+
ifNullish(() => options.allowExtraProperties),
|
|
124
|
+
pass(val)
|
|
125
|
+
)
|
|
126
|
+
),
|
|
127
|
+
Object.values,
|
|
128
|
+
allTrue
|
|
129
|
+
)
|
|
130
|
+
};
|
|
131
|
+
return _[name];
|
|
132
|
+
};
|
|
133
|
+
var ALLOW_EXTENSION = { allowExtraProperties: true };
|
|
134
|
+
var doesExtend = (isValue) => hasProperties(isValue, ALLOW_EXTENSION);
|
|
135
|
+
var DO_NOT_ALLOW_EXTENSION = { allowExtraProperties: false };
|
|
136
|
+
var hasExactProperties = (isValue) => hasProperties(isValue, DO_NOT_ALLOW_EXTENSION);
|
|
137
|
+
|
|
138
|
+
// ../anvl/src/object/sprawl.ts
|
|
139
|
+
var sprawl = (tree, inspector) => {
|
|
140
|
+
const walk = (path, node) => {
|
|
141
|
+
const inspect = (path2, node2) => {
|
|
142
|
+
const result2 = inspector(path2, node2);
|
|
143
|
+
if (result2)
|
|
144
|
+
return result2;
|
|
145
|
+
return null;
|
|
146
|
+
};
|
|
147
|
+
const result = inspect(path, node);
|
|
148
|
+
if ((result == null ? void 0 : result.jobComplete) || (result == null ? void 0 : result.pathComplete)) {
|
|
149
|
+
return result;
|
|
150
|
+
}
|
|
151
|
+
const childEntries = Array.isArray(node) ? node.map((v, i) => [i, v]) : isPlainObject(node) ? Object.entries(node) : [];
|
|
152
|
+
for (const [k, v] of childEntries) {
|
|
153
|
+
const subResult = walk([...path, k], v);
|
|
154
|
+
if (subResult == null ? void 0 : subResult.jobComplete) {
|
|
155
|
+
return subResult;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
return {};
|
|
159
|
+
};
|
|
160
|
+
walk([], tree);
|
|
161
|
+
};
|
|
162
|
+
|
|
163
|
+
// ../anvl/src/object/index.ts
|
|
164
|
+
var treeShake = (shouldDiscard = isUndefined) => (obj) => {
|
|
165
|
+
const newObj = {};
|
|
166
|
+
const entries = Object.entries(obj);
|
|
167
|
+
for (const [key, val] of entries) {
|
|
168
|
+
if (!shouldDiscard(val, key)) {
|
|
169
|
+
newObj[key] = val;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
return newObj;
|
|
173
|
+
};
|
|
174
|
+
var delve = (obj, path) => {
|
|
175
|
+
const found = path.reduce((acc, key) => acc == null ? void 0 : acc[key], obj);
|
|
176
|
+
return found === void 0 ? new Error(`Not found`) : { found };
|
|
177
|
+
};
|
|
178
|
+
|
|
179
|
+
export { addTo, become, comprises, delve, doNothing, doesExtend, entriesToRecord, fallback, hasExactProperties, ifDefined, isArray, isEmptyArray, isEmptyObject, isModifier, isOneOf, isPlainObject, isRecord, map, mapObject, pipe, raiseError, recordToEntries, sprawl, treeShake };
|
|
180
|
+
//# sourceMappingURL=out.js.map
|
|
181
|
+
//# sourceMappingURL=chunk-NYCVSXQB.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../anvl/src/function/pipe.ts","../../anvl/src/function/index.ts","../../anvl/src/array/venn.ts","../../anvl/src/array/index.ts","../../anvl/src/nullish/index.ts","../../anvl/src/object/access.ts","../../anvl/src/object/entries.ts","../../anvl/src/object/mapObject.ts","../../anvl/src/object/refinement.ts","../../anvl/src/object/sprawl.ts","../../anvl/src/object/index.ts"],"names":["path","node","result"],"mappings":";AA2PO,SAAS,KACf,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACU;AAEV,UAAQ,UAAU,QAAQ;AAAA,IACzB,KAAK;AACJ,aAAO;AAAA,IACR,KAAK;AAEJ,aAAO,GAAI,CAAC;AAAA,IACb,KAAK;AAEJ,aAAO,GAAI,GAAI,CAAC,CAAC;AAAA,IAClB,KAAK;AAEJ,aAAO,GAAI,GAAI,GAAI,CAAC,CAAC,CAAC;AAAA,IACvB,KAAK;AAEJ,aAAO,GAAI,GAAI,GAAI,GAAI,CAAC,CAAC,CAAC,CAAC;AAAA,IAC5B,KAAK;AAEJ,aAAO,GAAI,GAAI,GAAI,GAAI,GAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAAA,IACjC,KAAK;AAEJ,aAAO,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAAA,IACtC,KAAK;AAEJ,aAAO,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAAA,IAC3C,KAAK;AAEJ,aAAO,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAAA,IAChD,SAAS;AAER,UAAI,MAAM,UAAU,CAAC;AAErB,eAAS,IAAI,GAAG,IAAI,UAAU,QAAQ,KAAK;AAE1C,cAAM,UAAU,CAAC,EAAE,GAAG;AAAA,MACvB;AACA,aAAO;AAAA,IACR;AAAA,EACD;AACD;;;ACtSO,IAAM,YAAY,MAAY;AAE9B,IAAM,SACZ,CAAI,uBACJ,CAAC,kBACA,8BAA8B,WAC3B;AAAA,EACA,yBAAyB,WAAW,cAAc,IAAI;AACtD,IACA;AAOE,IAAM,aACZ,CAAI,aACJ,CAAC,WAAgD;AAChD,QAAM,gBAAgB,SAAS,MAAM;AACrC,MAAI,CAAC,eAAe;AACnB,UAAM,IAAI,MAAM,qCAAqC,MAAM,GAAG;AAAA,EAC/D;AACA,SAAO,CAAC,UAAyC;AAChD,QAAI,OAAO,UAAU;AAAY,aAAO;AACxC,UAAM,aAAa,MAAM,MAAM;AAC/B,WAAO,SAAS,UAAU;AAAA,EAC3B;AACD;AAEM,IAAM,OACZ,IAA4C,WAC5C,CAAC,OACA,GAAG,GAAG,MAAM;AAOP,IAAM,aAAa,CAAC,YAA2B;AACrD,QAAM,IAAI,MAAM,OAAO;AACxB;AAeO,IAAM,WAAW,CAAI,IAAa,kBAAwB;AAChE,MAAI;AACH,WAAO,GAAG;AAAA,EACX,SAAS,GAAG;AACX,WAAO;AAAA,EACR;AACD;;;AC9DO,IAAM,cAAyB,CAAC,UAAU,CAAC,UAAU;AAC3D,aAAW,QAAQ,OAAO;AACzB,QAAI,CAAC,MAAM,SAAS,IAAI;AAAG,aAAO;AAAA,EACnC;AACA,SAAO;AACR;AAeO,IAAM,YAAuB,CAAC,UAAU,CAAC,UAC/C,YAAY,KAAK,EAAE,KAAK,KAAK,YAAY,KAAK,EAAE,KAAK;;;AChB/C,IAAM,UACZ,CAAI,WACJ,CAAC,UACA,MAAM,QAAQ,KAAK,KAAK,MAAM,MAAM,CAAC,SAAS,OAAO,IAAI,CAAC;AAiBrD,IAAM,MACZ,CAAO,MACP,CAAC,MACA,EAAE,IAAI,CAAC;AAwCF,IAAM,QACZ,CAAI,IAAsD,YAC1D,CAAC,MACA,EAAE,MAAM,CAAC;AAEJ,IAAM,UAAU,MAAM,CAAC,MAAe,MAAM,IAAI;AAEhD,IAAM,QACZ,CAAI,MACJ,CAAC,MACA,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC;AAEvB,IAAM,eAAe,CAAC,UAC5B,MAAM,QAAQ,KAAK,KAAK,MAAM,WAAW;AAEnC,IAAM,UACZ,IAAO,SACP,CAAC,UACA,KAAK,SAAS,KAAU;;;AC5FnB,IAAM,cAAc,CAAC,UAC3B,UAAU;AAEJ,IAAM,YAAY,CACxB,aAEC,CAAC,UAAU,YAAY,KAAK,KAAK,SAAS,KAAK;AAsB1C,IAAM,YACZ,CAAO,QACP,CAAC,UACC,wBAAS;;;AC5BL,IAAM,SAAS,CACrB,MAKA,OAAO,OAAO,CAAC,QAAW,IAAI,CAAY,GAAG;AAAA,EAC5C,IAAI,CAAC,QAAW,IAAI,CAAY;AACjC,CAAC;;;ACXK,IAAM,kBAAkB,CAC9B,QACmB,OAAO,QAAQ,GAAG;AAE/B,IAAM,kBAAkB,CAC9B,YACkB,OAAO,YAAY,OAAO;;;ACHtC,IAAM,YAAY,CACxB,KACA,OAEA;AAAA,EACC;AAAA,EACA;AAAA,EACA,IAAI,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,GAAG,KAAK,GAAG,CAAC,CAAU;AAAA,EAChD;AACD;AAEM,IAAM,MACZ,CAA4B,OAC5B,CAAC,QACA,UAAU,KAAK,EAAE;;;ACNZ,IAAM,kBAAkB,CAAC,UAC/B,OAAO,UAAU,YAAY,UAAU;AAEjC,IAAM,gBAAgB,CAAC,UAC7B,gBAAgB,KAAK,KAAK,OAAO,eAAe,KAAK,MAAM,OAAO;AAE5D,IAAM,gBAAgB,CAAC,UAC7B,cAAc,KAAK,KAAK,OAAO,KAAK,KAAK,EAAE,WAAW;AAEhD,IAAM,WACZ,CACC,OACA,YAED,CAAC,UACA,cAAc,KAAK,KACnB,OAAO,QAAQ,KAAK,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,MAAM,CAAC,KAAK,QAAQ,CAAC,CAAC;AAKzD,IAAM,gBAAgB,CAC5B,SAGA,UAAgC,EAAE,sBAAsB,MAAM,MAChC;AAC9B,QAAM,OAAO,IAAI;AAAA,IAChB;AAAA,EACD,EACE,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,OAAO,CAAC,IAAI,MAAM,EAAE,IAAI,EACxC,KAAK,GAAG,CAAC;AAEX,QAAM,IAAI;AAAA,IACT,CAAC,IAAI,GAAG,CAAC,UACR,cAAc,KAAK,KACnB;AAAA,MACC;AAAA,MACA,OAAO;AAAA,MACP,MAAM,CAAC,CAAC,KAAK,GAAG,MAAM,OAAO,SAAS,IAAI,MAAS,CAAC;AAAA,IACrD,KACA;AAAA,MACC;AAAA,MACA;AAAA,QAAI,CAAC,KAAK,QACT;AAAA,UACC;AAAA,UACA,OAAO,GAAG;AAAA,UACV,UAAU,MAAM,QAAQ,oBAAoB;AAAA,UAC5C,KAAK,GAAG;AAAA,QACT;AAAA,MACD;AAAA,MACA,OAAO;AAAA,MACP;AAAA,IACD;AAAA,EACF;AACA,SAAO,EAAE,IAAI;AACd;AAEO,IAAM,kBAAkB,EAAE,sBAAsB,KAAK;AACrD,IAAM,aAAa,CACzB,YAG8B,cAAc,SAAS,eAAe;AAE9D,IAAM,yBAAyB,EAAE,sBAAsB,MAAM;AAC7D,IAAM,qBAAqB,CACjC,YAG8B,cAAc,SAAS,sBAAsB;;;ACvErE,IAAM,SAAS,CACrB,MACA,cACU;AACV,QAAM,OAAO,CAAC,MAAgB,SAAoC;AACjE,UAAM,UAAU,CAACA,OAAgBC,UAA2C;AAE3E,YAAMC,UAAS,UAAUF,OAAMC,KAAI;AACnC,UAAIC;AAAQ,eAAOA;AACnB,aAAO;AAAA,IACR;AACA,UAAM,SAAS,QAAQ,MAAM,IAAI;AACjC,SAAI,iCAAQ,iBAAe,iCAAQ,eAAc;AAChD,aAAO;AAAA,IACR;AACA,UAAM,eAAe,MAAM,QAAQ,IAAI,IACpC,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,IACzB,cAAc,IAAI,IAChB,OAAO,QAAQ,IAAI,IACnB,CAAC;AACN,eAAW,CAAC,GAAG,CAAC,KAAK,cAAc;AAClC,YAAM,YAAY,KAAK,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC;AACtC,UAAI,uCAAW,aAAa;AAC3B,eAAO;AAAA,MACR;AAAA,IACD;AACA,WAAO,CAAC;AAAA,EACT;AACA,OAAK,CAAC,GAAG,IAAI;AACd;;;ACwBO,IAAM,YACZ,CAAC,gBAA2D,gBAC5D,CACC,QAC2D;AAC3D,QAAM,SAAS,CAAC;AAChB,QAAM,UAAU,OAAO,QAAQ,GAAG;AAClC,aAAW,CAAC,KAAK,GAAG,KAAK,SAAS;AACjC,QAAI,CAAC,cAAc,KAAK,GAAG,GAAG;AAC7B,aAAO,GAAG,IAAI;AAAA,IACf;AAAA,EACD;AACA,SAAO;AACR;AAmCM,IAAM,QAAQ,CACpB,KACA,SACgC;AAChC,QAAM,QAAQ,KAAK,OAAO,CAAC,KAAK,QAAQ,2BAAM,MAAM,GAAG;AACvD,SAAO,UAAU,SAAY,IAAI,MAAM,WAAW,IAAI,EAAE,MAAM;AAC/D","sourcesContent":["/* ❤️ fp-ts */\n/* eslint-disable @typescript-eslint/no-non-null-assertion */\n/* eslint-disable prefer-rest-params */\n/* eslint-disable @typescript-eslint/ban-types */\n\nexport function pipe<A>(a: A): A\nexport function pipe<A, B>(a: A, ab: (a: A) => B): B\nexport function pipe<A, B, C>(a: A, ab: (a: A) => B, bc: (b: B) => C): C\nexport function pipe<A, B, C, D>(\n\ta: A,\n\tab: (a: A) => B,\n\tbc: (b: B) => C,\n\tcd: (c: C) => D,\n): D\nexport function pipe<A, B, C, D, E>(\n\ta: A,\n\tab: (a: A) => B,\n\tbc: (b: B) => C,\n\tcd: (c: C) => D,\n\tde: (d: D) => E,\n): E\nexport function pipe<A, B, C, D, E, F>(\n\ta: A,\n\tab: (a: A) => B,\n\tbc: (b: B) => C,\n\tcd: (c: C) => D,\n\tde: (d: D) => E,\n\tef: (e: E) => F,\n): F\nexport function pipe<A, B, C, D, E, F, G>(\n\ta: A,\n\tab: (a: A) => B,\n\tbc: (b: B) => C,\n\tcd: (c: C) => D,\n\tde: (d: D) => E,\n\tef: (e: E) => F,\n\tfg: (f: F) => G,\n): G\nexport function pipe<A, B, C, D, E, F, G, H>(\n\ta: A,\n\tab: (a: A) => B,\n\tbc: (b: B) => C,\n\tcd: (c: C) => D,\n\tde: (d: D) => E,\n\tef: (e: E) => F,\n\tfg: (f: F) => G,\n\tgh: (g: G) => H,\n): H\nexport function pipe<A, B, C, D, E, F, G, H, I>(\n\ta: A,\n\tab: (a: A) => B,\n\tbc: (b: B) => C,\n\tcd: (c: C) => D,\n\tde: (d: D) => E,\n\tef: (e: E) => F,\n\tfg: (f: F) => G,\n\tgh: (g: G) => H,\n\thi: (h: H) => I,\n): I\nexport function pipe<A, B, C, D, E, F, G, H, I, J>(\n\ta: A,\n\tab: (a: A) => B,\n\tbc: (b: B) => C,\n\tcd: (c: C) => D,\n\tde: (d: D) => E,\n\tef: (e: E) => F,\n\tfg: (f: F) => G,\n\tgh: (g: G) => H,\n\thi: (h: H) => I,\n\tij: (i: I) => J,\n): J\nexport function pipe<A, B, C, D, E, F, G, H, I, J, K>(\n\ta: A,\n\tab: (a: A) => B,\n\tbc: (b: B) => C,\n\tcd: (c: C) => D,\n\tde: (d: D) => E,\n\tef: (e: E) => F,\n\tfg: (f: F) => G,\n\tgh: (g: G) => H,\n\thi: (h: H) => I,\n\tij: (i: I) => J,\n\tjk: (j: J) => K,\n): K\nexport function pipe<A, B, C, D, E, F, G, H, I, J, K, L>(\n\ta: A,\n\tab: (a: A) => B,\n\tbc: (b: B) => C,\n\tcd: (c: C) => D,\n\tde: (d: D) => E,\n\tef: (e: E) => F,\n\tfg: (f: F) => G,\n\tgh: (g: G) => H,\n\thi: (h: H) => I,\n\tij: (i: I) => J,\n\tjk: (j: J) => K,\n\tkl: (k: K) => L,\n): L\nexport function pipe<A, B, C, D, E, F, G, H, I, J, K, L, M>(\n\ta: A,\n\tab: (a: A) => B,\n\tbc: (b: B) => C,\n\tcd: (c: C) => D,\n\tde: (d: D) => E,\n\tef: (e: E) => F,\n\tfg: (f: F) => G,\n\tgh: (g: G) => H,\n\thi: (h: H) => I,\n\tij: (i: I) => J,\n\tjk: (j: J) => K,\n\tkl: (k: K) => L,\n\tlm: (l: L) => M,\n): M\nexport function pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N>(\n\ta: A,\n\tab: (a: A) => B,\n\tbc: (b: B) => C,\n\tcd: (c: C) => D,\n\tde: (d: D) => E,\n\tef: (e: E) => F,\n\tfg: (f: F) => G,\n\tgh: (g: G) => H,\n\thi: (h: H) => I,\n\tij: (i: I) => J,\n\tjk: (j: J) => K,\n\tkl: (k: K) => L,\n\tlm: (l: L) => M,\n\tmn: (m: M) => N,\n): N\nexport function pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O>(\n\ta: A,\n\tab: (a: A) => B,\n\tbc: (b: B) => C,\n\tcd: (c: C) => D,\n\tde: (d: D) => E,\n\tef: (e: E) => F,\n\tfg: (f: F) => G,\n\tgh: (g: G) => H,\n\thi: (h: H) => I,\n\tij: (i: I) => J,\n\tjk: (j: J) => K,\n\tkl: (k: K) => L,\n\tlm: (l: L) => M,\n\tmn: (m: M) => N,\n\tno: (n: N) => O,\n): O\n\nexport function pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P>(\n\ta: A,\n\tab: (a: A) => B,\n\tbc: (b: B) => C,\n\tcd: (c: C) => D,\n\tde: (d: D) => E,\n\tef: (e: E) => F,\n\tfg: (f: F) => G,\n\tgh: (g: G) => H,\n\thi: (h: H) => I,\n\tij: (i: I) => J,\n\tjk: (j: J) => K,\n\tkl: (k: K) => L,\n\tlm: (l: L) => M,\n\tmn: (m: M) => N,\n\tno: (n: N) => O,\n\top: (o: O) => P,\n): P\n\nexport function pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q>(\n\ta: A,\n\tab: (a: A) => B,\n\tbc: (b: B) => C,\n\tcd: (c: C) => D,\n\tde: (d: D) => E,\n\tef: (e: E) => F,\n\tfg: (f: F) => G,\n\tgh: (g: G) => H,\n\thi: (h: H) => I,\n\tij: (i: I) => J,\n\tjk: (j: J) => K,\n\tkl: (k: K) => L,\n\tlm: (l: L) => M,\n\tmn: (m: M) => N,\n\tno: (n: N) => O,\n\top: (o: O) => P,\n\tpq: (p: P) => Q,\n): Q\n\nexport function pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R>(\n\ta: A,\n\tab: (a: A) => B,\n\tbc: (b: B) => C,\n\tcd: (c: C) => D,\n\tde: (d: D) => E,\n\tef: (e: E) => F,\n\tfg: (f: F) => G,\n\tgh: (g: G) => H,\n\thi: (h: H) => I,\n\tij: (i: I) => J,\n\tjk: (j: J) => K,\n\tkl: (k: K) => L,\n\tlm: (l: L) => M,\n\tmn: (m: M) => N,\n\tno: (n: N) => O,\n\top: (o: O) => P,\n\tpq: (p: P) => Q,\n\tqr: (q: Q) => R,\n): R\n\nexport function pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S>(\n\ta: A,\n\tab: (a: A) => B,\n\tbc: (b: B) => C,\n\tcd: (c: C) => D,\n\tde: (d: D) => E,\n\tef: (e: E) => F,\n\tfg: (f: F) => G,\n\tgh: (g: G) => H,\n\thi: (h: H) => I,\n\tij: (i: I) => J,\n\tjk: (j: J) => K,\n\tkl: (k: K) => L,\n\tlm: (l: L) => M,\n\tmn: (m: M) => N,\n\tno: (n: N) => O,\n\top: (o: O) => P,\n\tpq: (p: P) => Q,\n\tqr: (q: Q) => R,\n\trs: (r: R) => S,\n): S\n\nexport function pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T>(\n\ta: A,\n\tab: (a: A) => B,\n\tbc: (b: B) => C,\n\tcd: (c: C) => D,\n\tde: (d: D) => E,\n\tef: (e: E) => F,\n\tfg: (f: F) => G,\n\tgh: (g: G) => H,\n\thi: (h: H) => I,\n\tij: (i: I) => J,\n\tjk: (j: J) => K,\n\tkl: (k: K) => L,\n\tlm: (l: L) => M,\n\tmn: (m: M) => N,\n\tno: (n: N) => O,\n\top: (o: O) => P,\n\tpq: (p: P) => Q,\n\tqr: (q: Q) => R,\n\trs: (r: R) => S,\n\tst: (s: S) => T,\n): T\nexport function pipe(\n\ta: unknown,\n\tab?: Function,\n\tbc?: Function,\n\tcd?: Function,\n\tde?: Function,\n\tef?: Function,\n\tfg?: Function,\n\tgh?: Function,\n\thi?: Function,\n): unknown {\n\t// biome-ignore lint/style/noArguments: <explanation>\n\tswitch (arguments.length) {\n\t\tcase 1:\n\t\t\treturn a\n\t\tcase 2:\n\t\t\t// biome-ignore lint/style/noNonNullAssertion: <explanation>\n\t\t\treturn ab!(a)\n\t\tcase 3:\n\t\t\t// biome-ignore lint/style/noNonNullAssertion: <explanation>\n\t\t\treturn bc!(ab!(a))\n\t\tcase 4:\n\t\t\t// biome-ignore lint/style/noNonNullAssertion: <explanation>\n\t\t\treturn cd!(bc!(ab!(a)))\n\t\tcase 5:\n\t\t\t// biome-ignore lint/style/noNonNullAssertion: <explanation>\n\t\t\treturn de!(cd!(bc!(ab!(a))))\n\t\tcase 6:\n\t\t\t// biome-ignore lint/style/noNonNullAssertion: <explanation>\n\t\t\treturn ef!(de!(cd!(bc!(ab!(a)))))\n\t\tcase 7:\n\t\t\t// biome-ignore lint/style/noNonNullAssertion: <explanation>\n\t\t\treturn fg!(ef!(de!(cd!(bc!(ab!(a))))))\n\t\tcase 8:\n\t\t\t// biome-ignore lint/style/noNonNullAssertion: <explanation>\n\t\t\treturn gh!(fg!(ef!(de!(cd!(bc!(ab!(a)))))))\n\t\tcase 9:\n\t\t\t// biome-ignore lint/style/noNonNullAssertion: <explanation>\n\t\t\treturn hi!(gh!(fg!(ef!(de!(cd!(bc!(ab!(a))))))))\n\t\tdefault: {\n\t\t\t// biome-ignore lint/style/noArguments: <explanation>\n\t\t\tlet ret = arguments[0]\n\t\t\t// biome-ignore lint/style/noArguments: <explanation>\n\t\t\tfor (let i = 1; i < arguments.length; i++) {\n\t\t\t\t// biome-ignore lint/style/noArguments: <explanation>\n\t\t\t\tret = arguments[i](ret)\n\t\t\t}\n\t\t\treturn ret\n\t\t}\n\t}\n}\n","import type { Refinement } from \"../refinement\"\n\nexport * from \"./curry\"\nexport * from \"./pipe\"\n\nexport type ƒn = (...parameters: any[]) => any\n\nexport const doNothing = (): void => undefined\n\nexport const become =\n\t<T>(nextVersionOfThing: Modifier<T> | T) =>\n\t(originalThing: T | (() => T)): T =>\n\t\tnextVersionOfThing instanceof Function\n\t\t\t? nextVersionOfThing(\n\t\t\t\t\toriginalThing instanceof Function ? originalThing() : originalThing,\n\t\t\t )\n\t\t\t: nextVersionOfThing\n\nexport type Applicator<X, Y> = (next: Modifier<X> | X) => Modifier<Y>\nexport type Modifier<T> = (thing: T) => T\n\nexport type OneOrMany<T> = T | T[]\n\nexport const isModifier =\n\t<T>(validate: Refinement<unknown, T>) =>\n\t(sample: T): Refinement<unknown, Modifier<T>> => {\n\t\tconst sampleIsValid = validate(sample)\n\t\tif (!sampleIsValid) {\n\t\t\tthrow new Error(`Invalid test case: JSON.stringify(${sample})`)\n\t\t}\n\t\treturn (input: unknown): input is Modifier<T> => {\n\t\t\tif (typeof input !== `function`) return false\n\t\t\tconst testResult = input(sample)\n\t\t\treturn validate(testResult)\n\t\t}\n\t}\n\nexport const pass =\n\t<Params extends ReadonlyArray<any>, Out>(...params: Params) =>\n\t(fn: (...params: Params) => Out): Out =>\n\t\tfn(...params)\n\nexport const typeOf =\n\t<T>(input: unknown) =>\n\t(isType: Refinement<unknown, T>): boolean =>\n\t\tisType(input)\n\nexport const raiseError = (message: string): never => {\n\tthrow new Error(message)\n}\n\nexport type Encapsulate<T extends (...args: any[]) => any> = (\n\t...args: Parameters<T>\n) => void\n\nexport const attempt = (fn: () => void): boolean => {\n\ttry {\n\t\tfn()\n\t\treturn true\n\t} catch (_) {\n\t\treturn false\n\t}\n}\n\nexport const fallback = <T>(fn: () => T, fallbackValue: T): T => {\n\ttry {\n\t\treturn fn()\n\t} catch (_) {\n\t\treturn fallbackValue\n\t}\n}\n","export type VennCheck = (\n\titems: ReadonlyArray<unknown> | unknown[],\n) => (array: ReadonlyArray<unknown> | unknown[]) => boolean\n\nexport type VennTally = (\n\titems: ReadonlyArray<unknown> | unknown[],\n) => (array: ReadonlyArray<unknown> | unknown[]) => number\n\nexport const includesAll: VennCheck = (items) => (array) => {\n\tfor (const item of items) {\n\t\tif (!array.includes(item)) return false\n\t}\n\treturn true\n}\n\nexport const includesAny: VennCheck = (items) => (array) => {\n\tfor (const item of items) {\n\t\tif (array.includes(item)) return true\n\t}\n\treturn false\n}\n\nexport const excludesAll: VennCheck = (items) => (array) =>\n\t!includesAny(items)(array)\n\nexport const excludesAny: VennCheck = (items) => (array) =>\n\t!includesAll(items)(array)\n\nexport const comprises: VennCheck = (items) => (array) =>\n\tincludesAll(items)(array) && includesAll(array)(items)\n\nexport const overlaps: VennTally = (items) => (array) => {\n\tlet incidences = 0\n\tfor (const item of items) {\n\t\tif (array.includes(item)) incidences += 1\n\t}\n\treturn incidences\n}\n","import type { Refinement } from \"../refinement\"\n\nexport * from \"./match\"\nexport * from \"./venn\"\n\nexport const each =\n\t<T>(isType: Refinement<unknown, T>) =>\n\t(input: unknown): T[] =>\n\t\tisType(input) ? [input] : Array.isArray(input) ? input.filter(isType) : []\n\nexport const lastOf = <T>(input: ReadonlyArray<T>): T | undefined =>\n\tinput[input.length - 1]\n\nexport const isArray =\n\t<T>(isType: Refinement<unknown, T>) =>\n\t(input: unknown): input is T[] =>\n\t\tArray.isArray(input) && input.every((item) => isType(item))\n\nexport const at =\n\t<T>(index: number) =>\n\t(input: T[]): T | undefined =>\n\t\tinput.at(index)\n\nexport const content =\n\t<T>(isType: Refinement<unknown, T>) =>\n\t(input: unknown): input is T | T[] =>\n\t\tisType(input) || isArray(isType)(input)\n\nexport const join =\n\t(separator?: string) =>\n\t(a: string[]): string =>\n\t\ta.join(separator)\n\nexport const map =\n\t<I, O>(f: (value: I, index: number, array: I[]) => O) =>\n\t(a: I[]): O[] =>\n\t\ta.map(f)\n\nexport const reduce =\n\t<I, O>(f: (acc: O, value: I, index: number, array: I[]) => O, initial: O) =>\n\t(a: I[]): O =>\n\t\ta.reduce(f, initial)\n\nexport const slice =\n\t(start: number, end?: number) =>\n\t<I>(a: I[]): I[] =>\n\t\ta.slice(start, end)\n\nexport const using =\n\t<I, O>(a: I[]) =>\n\t(f: (acc: O, value: I, index: number, array: I[]) => O) =>\n\t(initial: O): O =>\n\t\ta.reduce(f, initial)\n\nexport const reduceRight =\n\t<I, O>(f: (acc: O, value: I, index: number, array: I[]) => O, initial: O) =>\n\t(a: I[]): O =>\n\t\ta.reduceRight(f, initial)\n\nexport const reverse = <I>(a: I[]): I[] => a.reverse()\n\nexport const sort =\n\t<I>(a: I[]) =>\n\t(f?: (x: I, y: I) => number): I[] =>\n\t\tf ? a.sort(f) : a.sort()\n\nexport const sortBy =\n\t<I>(f: (value: I) => number) =>\n\t(a: I[]): I[] =>\n\t\ta.sort((x, y) => f(x) - f(y))\n\nexport const sortByDesc =\n\t<I>(f: (value: I) => number) =>\n\t(a: I[]): I[] =>\n\t\ta.sort((x, y) => f(y) - f(x))\n\nexport const every =\n\t<I>(f: (value: I, index: number, array: I[]) => boolean = Boolean) =>\n\t(a: I[]): boolean =>\n\t\ta.every(f)\n\nexport const allTrue = every((x: boolean) => x === true)\n\nexport const addTo =\n\t<I>(a: I[]) =>\n\t(x: I): I[] =>\n\t\ta.includes(x) ? a : [...a, x]\n\nexport const isEmptyArray = (input: unknown): input is [] =>\n\tArray.isArray(input) && input.length === 0\n\nexport const isOneOf =\n\t<T>(...args: ReadonlyArray<T>) =>\n\t(input: unknown): input is T =>\n\t\targs.includes(input as T)\n\nexport const filter =\n\t<I, O extends I>(f: (value: I, index: number, array: I[]) => value is O) =>\n\t(a: I[]): O[] =>\n\t\ta.filter(f)\n","import type { Refinement } from \"../refinement\"\n\nexport const isUndefined = (input: unknown): input is undefined =>\n\tinput === undefined\n\nexport const ifDefined = <T>(\n\tvalidate: Refinement<unknown, T>,\n): Refinement<unknown, T | undefined> =>\n\t((input) => isUndefined(input) || validate(input)) as Refinement<\n\t\tunknown,\n\t\tT | undefined\n\t>\n\nexport const isNull = (input: unknown): input is null => input === null\n\nexport const isNullish = (input: unknown): input is null | undefined =>\n\tisUndefined(input) || isNull(input)\n\nexport type NullSafeUnion<Base, Extension> = Extension extends null\n\t? Base\n\t: Base & Extension\n\nexport type NullSafeRest<MaybeArg, IfArg = MaybeArg> = MaybeArg extends null\n\t? [] | [undefined]\n\t: [IfArg]\n\nexport interface Discard {\n\treadonly _discard: unique symbol\n}\n\nexport const ifNullish =\n\t<X, Y>(alt: Y) =>\n\t(input: X): Exclude<X, null | undefined> | Y =>\n\t\t(input ?? alt) as Exclude<X, null | undefined> | Y\n","export const key =\n\t<T extends object>(k: keyof T) =>\n\t(obj: Exclude<object, null>): unknown =>\n\t\t(obj as Record<keyof any, any>)[k]\n\nexport const access = <V, T extends Record<keyof any, V>>(\n\tk: keyof any,\n): {\n\t(obj: T): T[keyof T] | undefined\n\tin: (obj: T) => T[keyof T] | undefined\n} =>\n\tObject.assign((obj: T) => obj[k as keyof T], {\n\t\tin: (obj: T) => obj[k as keyof T],\n\t})\n","export type Entries<K extends keyof any, V> = [key: K, value: V][]\n\nexport const recordToEntries = <K extends keyof any, V>(\n\tobj: Record<K, V>,\n): Entries<K, V> => Object.entries(obj) as Entries<K, V>\n\nexport const entriesToRecord = <K extends keyof any, V>(\n\tentries: Entries<K, V>,\n): Record<K, V> => Object.fromEntries(entries) as Record<K, V>\n","import { pipe } from \"../function\"\n\nimport { map } from \"../array\"\nimport { entriesToRecord, recordToEntries } from \"./entries\"\n\nexport const mapObject = <K extends keyof any, I, O>(\n\tobj: Record<K, I>,\n\tfn: (val: I, key: K) => O,\n): Record<K, O> =>\n\tpipe(\n\t\tobj,\n\t\trecordToEntries,\n\t\tmap(([key, val]) => [key, fn(val, key)] as const),\n\t\tentriesToRecord,\n\t)\n\nexport const mob =\n\t<K extends keyof any, I, O>(fn: (val: I, key: K) => O) =>\n\t(obj: Record<K, I>): Record<K, O> =>\n\t\tmapObject(obj, fn)\n","import { pipe } from \"../function\"\nimport type { Refinement } from \"../refinement\"\n\nimport { allTrue, every } from \"../array\"\nimport { pass } from \"../function\"\nimport { ifNullish } from \"../nullish\"\nimport { access } from \"./access\"\nimport { recordToEntries } from \"./entries\"\nimport { mob } from \"./mapObject\"\n\nexport type PlainObject = Record<keyof any, unknown>\nexport type EmptyObject = Record<keyof any, never>\n\nexport const isNonNullObject = (input: unknown): input is object =>\n\ttypeof input === `object` && input !== null\n\nexport const isPlainObject = (input: unknown): input is PlainObject =>\n\tisNonNullObject(input) && Object.getPrototypeOf(input) === Object.prototype\n\nexport const isEmptyObject = (input: unknown): input is EmptyObject =>\n\tisPlainObject(input) && Object.keys(input).length === 0\n\nexport const isRecord =\n\t<KEY extends keyof any, VAL>(\n\t\tisKey: Refinement<keyof any, KEY>,\n\t\tisValue: Refinement<unknown, VAL>,\n\t) =>\n\t(input: unknown): input is Record<KEY, VAL> =>\n\t\tisPlainObject(input) &&\n\t\tObject.entries(input).every(([k, v]) => isKey(k) && isValue(v))\n\nexport type HasPropertiesOptions = {\n\treadonly allowExtraProperties?: boolean\n}\nexport const hasProperties = <OBJ extends object>(\n\tisValue: {\n\t\t[K in keyof OBJ]: Refinement<unknown, OBJ[K]>\n\t},\n\toptions: HasPropertiesOptions = { allowExtraProperties: false },\n): Refinement<unknown, OBJ> => {\n\tconst name = `{${recordToEntries(\n\t\tisValue as Record<keyof any, Refinement<any, any>>,\n\t)\n\t\t.map(([k, v]) => String(k) + `:` + v.name)\n\t\t.join(`,`)}}`\n\n\tconst _ = {\n\t\t[name]: (input: unknown): input is OBJ =>\n\t\t\tisPlainObject(input) &&\n\t\t\tpipe(\n\t\t\t\tisValue,\n\t\t\t\tObject.entries,\n\t\t\t\tevery(([key, val]) => key in input || val(undefined)),\n\t\t\t) &&\n\t\t\tpipe(\n\t\t\t\tinput,\n\t\t\t\tmob((val, key) =>\n\t\t\t\t\tpipe(\n\t\t\t\t\t\tisValue,\n\t\t\t\t\t\taccess(key),\n\t\t\t\t\t\tifNullish(() => options.allowExtraProperties),\n\t\t\t\t\t\tpass(val),\n\t\t\t\t\t),\n\t\t\t\t),\n\t\t\t\tObject.values,\n\t\t\t\tallTrue,\n\t\t\t),\n\t}\n\treturn _[name]\n}\n\nexport const ALLOW_EXTENSION = { allowExtraProperties: true }\nexport const doesExtend = <OBJ extends object>(\n\tisValue: {\n\t\t[K in keyof OBJ]: Refinement<unknown, OBJ[K]>\n\t},\n): Refinement<unknown, OBJ> => hasProperties(isValue, ALLOW_EXTENSION)\n\nexport const DO_NOT_ALLOW_EXTENSION = { allowExtraProperties: false }\nexport const hasExactProperties = <OBJ extends object>(\n\tisValue: {\n\t\t[K in keyof OBJ]: Refinement<unknown, OBJ[K]>\n\t},\n): Refinement<unknown, OBJ> => hasProperties(isValue, DO_NOT_ALLOW_EXTENSION)\n","import { isPlainObject } from \"./refinement\"\n\n// if you found what you were looking for, return true and break\nexport type InspectionResult = Partial<{\n\tpathComplete: true\n\tjobComplete: true\n}>\nexport type InspectNode = (\n\tpath: string[],\n\tnode: unknown,\n) => InspectionResult | void\n\nexport const sprawl = (\n\ttree: Array<unknown> | object,\n\tinspector: InspectNode,\n): void => {\n\tconst walk = (path: string[], node: unknown): InspectionResult => {\n\t\tconst inspect = (path: string[], node: unknown): InspectionResult | null => {\n\t\t\t// console.log(parent)\n\t\t\tconst result = inspector(path, node)\n\t\t\tif (result) return result\n\t\t\treturn null\n\t\t}\n\t\tconst result = inspect(path, node)\n\t\tif (result?.jobComplete || result?.pathComplete) {\n\t\t\treturn result\n\t\t}\n\t\tconst childEntries = Array.isArray(node)\n\t\t\t? node.map((v, i) => [i, v])\n\t\t\t: isPlainObject(node)\n\t\t\t ? Object.entries(node)\n\t\t\t : []\n\t\tfor (const [k, v] of childEntries) {\n\t\t\tconst subResult = walk([...path, k], v)\n\t\t\tif (subResult?.jobComplete) {\n\t\t\t\treturn subResult\n\t\t\t}\n\t\t}\n\t\treturn {}\n\t}\n\twalk([], tree)\n}\n","import { pipe } from \"../function\"\nimport type { Refinement } from \"../refinement\"\n\nimport { filter, includesAny, reduce } from \"../array\"\nimport { isUndefined } from \"../nullish\"\nimport { deepMob } from \"./deepMob\"\nimport { entriesToRecord, recordToEntries } from \"./entries\"\nimport { isPlainObject } from \"./refinement\"\n\nexport * from \"./access\"\nexport * from \"./deepMob\"\nexport * from \"./entries\"\nexport * from \"./mapObject\"\nexport * from \"./modify\"\nexport * from \"./patch\"\nexport * from \"./refinement\"\nexport * from \"./sprawl\"\n\nexport const redact =\n\t<K extends keyof any>(...args: K[]) =>\n\t<O extends Record<K, any>>(obj: O): Omit<O, K> =>\n\t\treduce<K, O>((acc, key) => (delete acc[key], acc), obj)(args)\n\nexport type Redacted<Holder, RedactProp extends keyof any> = Omit<\n\t{\n\t\t[K in keyof Holder]: Holder[K] extends (infer Item)[]\n\t\t\t? Redacted<Item, RedactProp>[]\n\t\t\t: Redacted<Omit<Holder[K], RedactProp>, RedactProp>\n\t},\n\tRedactProp\n>\nexport const redactDeep =\n\t<K extends keyof any>(...args: K[]) =>\n\t<O extends Record<K, any>>(base: O): Redacted<O, K> =>\n\t\tdeepMob(base, (node, path) =>\n\t\t\tincludesAny(args)(path)\n\t\t\t\t? {\n\t\t\t\t\t\tmeta: { pathComplete: true },\n\t\t\t\t }\n\t\t\t\t: {\n\t\t\t\t\t\tdata: isPlainObject(node)\n\t\t\t\t\t\t\t? redact(...args)(node as Record<keyof any, any>)\n\t\t\t\t\t\t\t: node,\n\t\t\t\t },\n\t\t)\n\nexport const select =\n\t<Key extends keyof any>(...args: Key[]) =>\n\t<Obj extends object>(\n\t\tobj: Obj,\n\t): {\n\t\t// @ts-expect-error fuk u\n\t\t[K in keyof Pick<Obj, Key>]: any extends Pick<Obj, Key>[K]\n\t\t\t? undefined\n\t\t\t: // @ts-expect-error fuk u\n\t\t\t Pick<Obj, Key>[K]\n\t} =>\n\t\t// @ts-expect-error fuk u ts\n\t\treduce<Key, Pick<Obj, Key>>(\n\t\t\t// @ts-expect-error i will fite u\n\t\t\t(acc, key) => (key in obj ? (acc[key] = obj[key as keyof Obj]) : acc, acc),\n\t\t\t// @ts-expect-error fuk u\n\t\t\t{} as Pick<Obj, Key>,\n\t\t)(args)\n\nexport const treeShake =\n\t(shouldDiscard: (val: unknown, key: keyof any) => boolean = isUndefined) =>\n\t<T extends object>(\n\t\tobj: T,\n\t): T extends Record<keyof any, unknown> ? T : Partial<T> => {\n\t\tconst newObj = {} as T\n\t\tconst entries = Object.entries(obj) as [keyof T, any][]\n\t\tfor (const [key, val] of entries) {\n\t\t\tif (!shouldDiscard(val, key)) {\n\t\t\t\tnewObj[key] = val\n\t\t\t}\n\t\t}\n\t\treturn newObj as T extends Record<keyof any, unknown> ? T : Partial<T>\n\t}\n\nexport type KeysExtending<T, V> = keyof {\n\t[K in keyof T]: T[K] extends V ? K : never\n}\n\nconst a: never | null = null\n\nexport const filterProperties =\n\t<DiscardVal, DiscardKey extends keyof any>(\n\t\tshouldDiscardVal: Refinement<unknown, DiscardVal>,\n\t\tshouldDiscardKey: Refinement<unknown, DiscardKey>,\n\t) =>\n\t<P extends Record<keyof any, any>>(\n\t\tprops: P,\n\t): DiscardVal extends never\n\t\t? DiscardKey extends never\n\t\t\t? P\n\t\t\t: Omit<P, DiscardKey>\n\t\t: Omit<P, DiscardKey | KeysExtending<P, DiscardVal>> =>\n\t\t// @ts-expect-error oh well\n\t\tpipe(\n\t\t\tprops,\n\t\t\trecordToEntries,\n\t\t\tfilter(\n\t\t\t\t(\n\t\t\t\t\tentry,\n\t\t\t\t): entry is [\n\t\t\t\t\tExclude<keyof P, DiscardKey>,\n\t\t\t\t\tExclude<P[keyof P], DiscardVal>,\n\t\t\t\t] => !shouldDiscardKey(entry[0]) || !shouldDiscardVal(entry[1]),\n\t\t\t),\n\t\t\tentriesToRecord,\n\t\t)\n\nexport const delve = (\n\tobj: Record<keyof any, any>,\n\tpath: ReadonlyArray<keyof any>,\n): Error | { found: unknown } => {\n\tconst found = path.reduce((acc, key) => acc?.[key], obj)\n\treturn found === undefined ? new Error(`Not found`) : { found }\n}\n\nexport const tweak = (\n\tobj: Record<keyof any, any>,\n\tpath: ReadonlyArray<keyof any>,\n\tvalue: unknown,\n): void =>\n\tpath.reduce((acc, key, i) => {\n\t\tif (i === path.length - 1) {\n\t\t\tacc[key] = value\n\t\t}\n\t\tif (acc[key] === undefined) {\n\t\t\tacc[key] = typeof key === `number` ? [] : {}\n\t\t}\n\t\treturn acc[key]\n\t}, obj)\n\nexport type RequireAtLeastOne<T> = {\n\t[K in keyof T]-?: Partial<Pick<T, Exclude<keyof T, K>>> & Required<Pick<T, K>>\n}[keyof T]\n\nexport type RequireExactlyOne<T> = {\n\t[K in keyof T]-?: Required<Pick<T, K>>\n}[keyof T]\n"]}
|