@livestore/utils 0.0.54-dev.4 → 0.0.54
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/dist/.tsbuildinfo.json +1 -1
- package/dist/Deferred.d.ts.map +1 -1
- package/dist/NoopTracer.d.ts.map +1 -1
- package/dist/effect/Effect.d.ts +6 -5
- package/dist/effect/Effect.d.ts.map +1 -1
- package/dist/effect/Effect.js +47 -15
- package/dist/effect/Effect.js.map +1 -1
- package/dist/effect/Scheduler.d.ts +4 -0
- package/dist/effect/Scheduler.d.ts.map +1 -0
- package/dist/effect/Scheduler.js +10 -0
- package/dist/effect/Scheduler.js.map +1 -0
- package/dist/effect/Schema/debug-diff.d.ts +13 -0
- package/dist/effect/Schema/debug-diff.d.ts.map +1 -0
- package/dist/effect/Schema/debug-diff.js +51 -0
- package/dist/effect/Schema/debug-diff.js.map +1 -0
- package/dist/effect/Schema/debug-diff.test.d.ts +2 -0
- package/dist/effect/Schema/debug-diff.test.d.ts.map +1 -0
- package/dist/effect/Schema/debug-diff.test.js +91 -0
- package/dist/effect/Schema/debug-diff.test.js.map +1 -0
- package/dist/effect/Schema/index.d.ts +15 -0
- package/dist/effect/Schema/index.d.ts.map +1 -0
- package/dist/effect/Schema/index.js +46 -0
- package/dist/effect/Schema/index.js.map +1 -0
- package/dist/effect/ServiceContext.d.ts.map +1 -1
- package/dist/effect/Stream.d.ts +2 -0
- package/dist/effect/Stream.d.ts.map +1 -1
- package/dist/effect/Stream.js +11 -1
- package/dist/effect/Stream.js.map +1 -1
- package/dist/effect/SubscriptionRef.d.ts +8 -3
- package/dist/effect/SubscriptionRef.d.ts.map +1 -1
- package/dist/effect/SubscriptionRef.js +2 -2
- package/dist/effect/SubscriptionRef.js.map +1 -1
- package/dist/effect/WebLock.d.ts +5 -1
- package/dist/effect/WebLock.d.ts.map +1 -1
- package/dist/effect/WebLock.js +42 -11
- package/dist/effect/WebLock.js.map +1 -1
- package/dist/effect/browser-worker-tmp/BrowserWorker.d.ts +21 -0
- package/dist/effect/browser-worker-tmp/BrowserWorker.d.ts.map +1 -0
- package/dist/effect/browser-worker-tmp/BrowserWorker.js +17 -0
- package/dist/effect/browser-worker-tmp/BrowserWorker.js.map +1 -0
- package/dist/effect/browser-worker-tmp/BrowserWorkerRunner.d.ts +12 -0
- package/dist/effect/browser-worker-tmp/BrowserWorkerRunner.d.ts.map +1 -0
- package/dist/effect/browser-worker-tmp/BrowserWorkerRunner.js +8 -0
- package/dist/effect/browser-worker-tmp/BrowserWorkerRunner.js.map +1 -0
- package/dist/effect/browser-worker-tmp/internal/worker.d.ts +9 -0
- package/dist/effect/browser-worker-tmp/internal/worker.d.ts.map +1 -0
- package/dist/effect/browser-worker-tmp/internal/worker.js +56 -0
- package/dist/effect/browser-worker-tmp/internal/worker.js.map +1 -0
- package/dist/effect/browser-worker-tmp/internal/workerRunner.d.ts +5 -0
- package/dist/effect/browser-worker-tmp/internal/workerRunner.d.ts.map +1 -0
- package/dist/effect/browser-worker-tmp/internal/workerRunner.js +100 -0
- package/dist/effect/browser-worker-tmp/internal/workerRunner.js.map +1 -0
- package/dist/effect/browser-worker-tmp/port-platform-runner.d.ts +5 -0
- package/dist/effect/browser-worker-tmp/port-platform-runner.d.ts.map +1 -0
- package/dist/effect/browser-worker-tmp/port-platform-runner.js +54 -0
- package/dist/effect/browser-worker-tmp/port-platform-runner.js.map +1 -0
- package/dist/effect/index.d.ts +10 -5
- package/dist/effect/index.d.ts.map +1 -1
- package/dist/effect/index.js +12 -5
- package/dist/effect/index.js.map +1 -1
- package/dist/effect/worker-tmp/Worker.d.ts +290 -0
- package/dist/effect/worker-tmp/Worker.d.ts.map +1 -0
- package/dist/effect/worker-tmp/Worker.js +62 -0
- package/dist/effect/worker-tmp/Worker.js.map +1 -0
- package/dist/effect/worker-tmp/WorkerError.d.ts +63 -0
- package/dist/effect/worker-tmp/WorkerError.d.ts.map +1 -0
- package/dist/effect/worker-tmp/WorkerError.js +52 -0
- package/dist/effect/worker-tmp/WorkerError.js.map +1 -0
- package/dist/effect/worker-tmp/WorkerRunner.d.ts +119 -0
- package/dist/effect/worker-tmp/WorkerRunner.d.ts.map +1 -0
- package/dist/effect/worker-tmp/WorkerRunner.js +32 -0
- package/dist/effect/worker-tmp/WorkerRunner.js.map +1 -0
- package/dist/effect/worker-tmp/internal/worker.d.ts +36 -0
- package/dist/effect/worker-tmp/internal/worker.d.ts.map +1 -0
- package/dist/effect/worker-tmp/internal/worker.js +244 -0
- package/dist/effect/worker-tmp/internal/worker.js.map +1 -0
- package/dist/effect/worker-tmp/internal/workerError.d.ts +4 -0
- package/dist/effect/worker-tmp/internal/workerError.d.ts.map +1 -0
- package/dist/effect/worker-tmp/internal/workerError.js +3 -0
- package/dist/effect/worker-tmp/internal/workerError.js.map +1 -0
- package/dist/effect/worker-tmp/internal/workerRunner.d.ts +21 -0
- package/dist/effect/worker-tmp/internal/workerRunner.d.ts.map +1 -0
- package/dist/effect/worker-tmp/internal/workerRunner.js +137 -0
- package/dist/effect/worker-tmp/internal/workerRunner.js.map +1 -0
- package/dist/fast-deep-equal.d.ts +2 -0
- package/dist/fast-deep-equal.d.ts.map +1 -0
- package/dist/fast-deep-equal.js +79 -0
- package/dist/fast-deep-equal.js.map +1 -0
- package/dist/guards.d.ts.map +1 -1
- package/dist/index.d.ts +5 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +20 -19
- package/dist/index.js.map +1 -1
- package/dist/misc.d.ts +2 -0
- package/dist/misc.d.ts.map +1 -0
- package/dist/misc.js +13 -0
- package/dist/misc.js.map +1 -0
- package/dist/object/index.d.ts.map +1 -1
- package/dist/object/omit.d.ts.map +1 -1
- package/dist/object/pick.d.ts +1 -1
- package/dist/object/pick.d.ts.map +1 -1
- package/dist/promise.d.ts.map +1 -1
- package/dist/set.d.ts.map +1 -1
- package/package.json +18 -17
- package/src/effect/Effect.ts +65 -22
- package/src/effect/Scheduler.ts +14 -0
- package/src/effect/Schema/debug-diff.test.ts +102 -0
- package/src/effect/Schema/debug-diff.ts +59 -0
- package/src/effect/Schema/index.ts +60 -0
- package/src/effect/Stream.ts +37 -1
- package/src/effect/SubscriptionRef.ts +22 -7
- package/src/effect/WebLock.ts +69 -31
- package/src/effect/browser-worker-tmp/BrowserWorker.ts +26 -0
- package/src/effect/browser-worker-tmp/BrowserWorkerRunner.ts +14 -0
- package/src/effect/browser-worker-tmp/internal/worker.ts +71 -0
- package/src/effect/browser-worker-tmp/internal/workerRunner.ts +119 -0
- package/src/effect/browser-worker-tmp/port-platform-runner.ts +74 -0
- package/src/effect/index.ts +13 -4
- package/src/effect/worker-tmp/Worker.ts +374 -0
- package/src/effect/worker-tmp/WorkerError.ts +79 -0
- package/src/effect/worker-tmp/WorkerRunner.ts +181 -0
- package/src/effect/worker-tmp/internal/worker.ts +417 -0
- package/src/effect/worker-tmp/internal/workerError.ts +6 -0
- package/src/effect/worker-tmp/internal/workerRunner.ts +237 -0
- package/src/fast-deep-equal.ts +72 -0
- package/src/index.ts +21 -22
- package/src/misc.ts +12 -0
- package/dist/effect/Schema.d.ts +0 -4
- package/dist/effect/Schema.d.ts.map +0 -1
- package/dist/effect/Schema.js +0 -15
- package/dist/effect/Schema.js.map +0 -1
- package/src/effect/Schema.ts +0 -18
package/dist/index.d.ts
CHANGED
|
@@ -7,6 +7,8 @@ export * from './NoopTracer.js';
|
|
|
7
7
|
export * from './set.js';
|
|
8
8
|
export * from './browser.js';
|
|
9
9
|
export * from './Deferred.js';
|
|
10
|
+
export * from './misc.js';
|
|
11
|
+
export * from './fast-deep-equal.js';
|
|
10
12
|
export * as base64 from './base64.js';
|
|
11
13
|
export { default as prettyBytes } from 'pretty-bytes';
|
|
12
14
|
import type * as otel from '@opentelemetry/api';
|
|
@@ -37,12 +39,9 @@ export declare const ref: <T>(val: T) => {
|
|
|
37
39
|
export declare const times: (n: number, fn: (index: number) => {}) => void;
|
|
38
40
|
export declare const debugCatch: <T>(try_: () => T) => T;
|
|
39
41
|
export declare const recRemoveUndefinedValues: (val: any) => void;
|
|
40
|
-
export declare const debugDeepCopy: <T>(val: T) => T;
|
|
41
42
|
export declare const prop: <T extends {}, K extends keyof T>(key: K) => (obj: T) => T[K];
|
|
42
|
-
export declare const objectToString: (error: any) => string;
|
|
43
|
-
export declare const errorToString: (error: any) => string;
|
|
44
43
|
export declare const capitalizeFirstLetter: (str: string) => string;
|
|
45
|
-
export declare const isReadonlyArray: <I, T>(value: ReadonlyArray<I> | T) => value is
|
|
44
|
+
export declare const isReadonlyArray: <I, T>(value: ReadonlyArray<I> | T) => value is ReadonlyArray<I>;
|
|
46
45
|
/**
|
|
47
46
|
* Use this to make assertion at end of if-else chain that all members of a
|
|
48
47
|
* union have been accounted for.
|
|
@@ -71,7 +70,8 @@ export declare const assertTag: <TObj extends {
|
|
|
71
70
|
}>;
|
|
72
71
|
export declare const memoizeByStringifyArgs: <T extends (...args: any[]) => any>(fn: T) => T;
|
|
73
72
|
export declare const memoizeByRef: <T extends (arg: any) => any>(fn: T) => T;
|
|
74
|
-
export declare const isNonEmptyString: (str: string | undefined | null) =>
|
|
73
|
+
export declare const isNonEmptyString: (str: string | undefined | null) => str is string;
|
|
75
74
|
export declare const isPromise: (value: any) => value is Promise<unknown>;
|
|
76
75
|
export declare const isIterable: <T>(value: any) => value is Iterable<T>;
|
|
76
|
+
export { objectToString as errorToString } from './misc.js';
|
|
77
77
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,mBAAmB,CAAA;AACjC,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,cAAc,iBAAiB,CAAA;AAC/B,cAAc,UAAU,CAAA;AACxB,cAAc,cAAc,CAAA;AAC5B,cAAc,eAAe,CAAA;AAC7B,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,cAAc,CAAA;AAErD,OAAO,KAAK,KAAK,IAAI,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -7,8 +7,11 @@ export * from './NoopTracer.js';
|
|
|
7
7
|
export * from './set.js';
|
|
8
8
|
export * from './browser.js';
|
|
9
9
|
export * from './Deferred.js';
|
|
10
|
+
export * from './misc.js';
|
|
11
|
+
export * from './fast-deep-equal.js';
|
|
10
12
|
export * as base64 from './base64.js';
|
|
11
13
|
export { default as prettyBytes } from 'pretty-bytes';
|
|
14
|
+
import { objectToString } from './misc.js';
|
|
12
15
|
export * as dateFns from 'date-fns';
|
|
13
16
|
export const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
|
|
14
17
|
export const ref = (val) => ({ current: val });
|
|
@@ -41,23 +44,7 @@ export const recRemoveUndefinedValues = (val) => {
|
|
|
41
44
|
});
|
|
42
45
|
}
|
|
43
46
|
};
|
|
44
|
-
export const debugDeepCopy = (val) => JSON.parse(JSON.stringify(val));
|
|
45
47
|
export const prop = (key) => (obj) => obj[key];
|
|
46
|
-
export const objectToString = (error) => {
|
|
47
|
-
const stack = error.stack;
|
|
48
|
-
const str = error.toString();
|
|
49
|
-
const stackStr = stack ? `\n${stack}` : '';
|
|
50
|
-
if (str !== '[object Object]')
|
|
51
|
-
return str + stackStr;
|
|
52
|
-
try {
|
|
53
|
-
return JSON.stringify({ ...error, stack }, null, 2);
|
|
54
|
-
}
|
|
55
|
-
catch (e) {
|
|
56
|
-
console.log(error);
|
|
57
|
-
return 'Error while printing error: ' + e;
|
|
58
|
-
}
|
|
59
|
-
};
|
|
60
|
-
export const errorToString = objectToString;
|
|
61
48
|
export const capitalizeFirstLetter = (str) => str.charAt(0).toUpperCase() + str.slice(1);
|
|
62
49
|
export const isReadonlyArray = (value) => Array.isArray(value);
|
|
63
50
|
/**
|
|
@@ -70,8 +57,8 @@ export function casesHandled(unexpectedCase) {
|
|
|
70
57
|
throw new Error(`A case was not handled for value: ${truncate(objectToString(unexpectedCase), 1000)}`);
|
|
71
58
|
}
|
|
72
59
|
export const shouldNeverHappen = (msg, ...args) => {
|
|
73
|
-
|
|
74
|
-
|
|
60
|
+
console.error(msg, ...args);
|
|
61
|
+
if (isDev()) {
|
|
75
62
|
debugger;
|
|
76
63
|
}
|
|
77
64
|
throw new Error(`This should never happen: ${msg}`);
|
|
@@ -170,7 +157,21 @@ export const memoizeByRef = (fn) => {
|
|
|
170
157
|
return result;
|
|
171
158
|
});
|
|
172
159
|
};
|
|
173
|
-
export const isNonEmptyString = (str) =>
|
|
160
|
+
export const isNonEmptyString = (str) => {
|
|
161
|
+
return typeof str === 'string' && str.length > 0;
|
|
162
|
+
};
|
|
174
163
|
export const isPromise = (value) => typeof value?.then === 'function';
|
|
175
164
|
export const isIterable = (value) => typeof value?.[Symbol.iterator] === 'function';
|
|
165
|
+
export { objectToString as errorToString } from './misc.js';
|
|
166
|
+
const isDev = memoizeByRef(() => {
|
|
167
|
+
if (import.meta.env !== undefined) {
|
|
168
|
+
return import.meta.env.DEV || import.meta.env.VITE_DEV;
|
|
169
|
+
}
|
|
170
|
+
else if (typeof process !== 'undefined' && process.env !== undefined) {
|
|
171
|
+
return process.env.DEV;
|
|
172
|
+
}
|
|
173
|
+
else {
|
|
174
|
+
return false;
|
|
175
|
+
}
|
|
176
|
+
});
|
|
176
177
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,mBAAmB,CAAA;AACjC,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,cAAc,iBAAiB,CAAA;AAC/B,cAAc,UAAU,CAAA;AACxB,cAAc,cAAc,CAAA;AAC5B,cAAc,eAAe,CAAA;AAC7B,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,cAAc,CAAA;AAIrD,OAAO,KAAK,OAAO,MAAM,UAAU,CAAA;AAoBnC,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAA;AAEtF,MAAM,CAAC,MAAM,GAAG,GAAG,CAAI,GAAM,EAAkB,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAA;AAEpE,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,CAAS,EAAE,EAAyB,EAAQ,EAAE;IAClE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,EAAE,CAAC,CAAC,CAAC,CAAA;IACP,CAAC;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,UAAU,GAAG,CAAI,IAAa,EAAK,EAAE;IAChD,IAAI,CAAC;QACH,OAAO,IAAI,EAAE,CAAA;IACf,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAChB,QAAQ,CAAA;QACR,MAAM,CAAC,CAAA;IACT,CAAC;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,GAAQ,EAAQ,EAAE;IACzD,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,GAAG,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAA;IACvC,CAAC;SAAM,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QACnC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YAC/B,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;gBAC3B,OAAO,GAAG,CAAC,GAAG,CAAC,CAAA;YACjB,CAAC;iBAAM,CAAC;gBACN,wBAAwB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;YACpC,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/misc.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"misc.d.ts","sourceRoot":"","sources":["../src/misc.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc,UAAW,GAAG,KAAG,MAW3C,CAAA"}
|
package/dist/misc.js
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export const objectToString = (error) => {
|
|
2
|
+
const str = error?.toString();
|
|
3
|
+
if (str !== '[object Object]')
|
|
4
|
+
return str;
|
|
5
|
+
try {
|
|
6
|
+
return JSON.stringify(error, null, 2);
|
|
7
|
+
}
|
|
8
|
+
catch (e) {
|
|
9
|
+
console.log(error);
|
|
10
|
+
return 'Error while printing error: ' + e;
|
|
11
|
+
}
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=misc.js.map
|
package/dist/misc.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"misc.js","sourceRoot":"","sources":["../src/misc.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAAU,EAAU,EAAE;IACnD,MAAM,GAAG,GAAG,KAAK,EAAE,QAAQ,EAAE,CAAA;IAC7B,IAAI,GAAG,KAAK,iBAAiB;QAAE,OAAO,GAAG,CAAA;IAEzC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;IACvC,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QAElB,OAAO,8BAA8B,GAAG,CAAC,CAAA;IAC3C,CAAC;AACH,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/object/index.ts"],"names":[],"mappings":"AAEA,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AAEzB,KAAK,aAAa,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;AAE3F,eAAO,MAAM,eAAe,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/object/index.ts"],"names":[],"mappings":"AAEA,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AAEzB,KAAK,aAAa,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;AAE3F,eAAO,MAAM,eAAe,GAAI,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,KAAK,OAChE,IAAI,YACC,CAAC,GAAG,EAAE,MAAM,IAAI,EAAE,GAAG,EAAE,aAAa,CAAC,IAAI,CAAC,KAAK,KAAK,KAC7D,GAAG,CAAe,IAAV,MAAM,IAAI,GAAG,KAAK,GAG5B,CAAA;AAED,MAAM,MAAM,OAAO,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAA;AAEjE,eAAO,MAAM,aAAa,GAAI,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,KAAG,OAAO,CAAC,CAAC,CAAsC,CAAA;AAErH,eAAO,MAAM,mBAAmB,GAAI,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,OAAO,IAAI,KAAG,GAAG,CAAe,IAAV,MAAM,IAAI,GAAG,CAAC,GAI9F,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"omit.d.ts","sourceRoot":"","sources":["../../src/object/omit.ts"],"names":[],"mappings":"AAKA,uEAAuE;AACvE,eAAO,MAAM,IAAI,
|
|
1
|
+
{"version":3,"file":"omit.d.ts","sourceRoot":"","sources":["../../src/object/omit.ts"],"names":[],"mappings":"AAKA,uEAAuE;AACvE,eAAO,MAAM,IAAI,GAAI,GAAG,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,IAAI,SAAS,MAAM,GAAG,OACrE,GAAG,QACF,IAAI,EAAE,KACX,IAAI,CAAC,GAAG,EAAE,IAAI,CAOhB,CAAA"}
|
package/dist/object/pick.d.ts
CHANGED
|
@@ -9,6 +9,6 @@ type PickRequired<T> = {
|
|
|
9
9
|
};
|
|
10
10
|
type ConvertPick<T> = ConvertUndefined<T> & PickRequired<T>;
|
|
11
11
|
export declare const pick: <Obj, Keys extends keyof Obj>(obj: Obj, keys: Keys[]) => ConvertPick<{ [K in Keys]: Obj[K]; }>;
|
|
12
|
-
export declare const pickAllOrElse: <Obj, Keys extends keyof Obj, TElse>(obj: Obj, keys: Keys[], elseValue: TElse) =>
|
|
12
|
+
export declare const pickAllOrElse: <Obj, Keys extends keyof Obj, TElse>(obj: Obj, keys: Keys[], elseValue: TElse) => ConvertPick<{ [K in Keys]: NonNullable<Obj[K]>; }> | TElse;
|
|
13
13
|
export {};
|
|
14
14
|
//# sourceMappingURL=pick.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pick.d.ts","sourceRoot":"","sources":["../../src/object/pick.ts"],"names":[],"mappings":"AAAA,KAAK,gBAAgB,CAAC,CAAC,IAAI,WAAW,CAAC;KAAG,CAAC,IAAI,MAAM,CAAC,IAAI,SAAS,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAE,CAAC,CAAA;AACxG,KAAK,WAAW,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS;CAAE,CAAA;AAC1D,KAAK,YAAY,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,IAAI,SAAS,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAE,CAAA;AACrF,KAAK,WAAW,CAAC,CAAC,IAAI,gBAAgB,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAA;AAE3D,eAAO,MAAM,IAAI,
|
|
1
|
+
{"version":3,"file":"pick.d.ts","sourceRoot":"","sources":["../../src/object/pick.ts"],"names":[],"mappings":"AAAA,KAAK,gBAAgB,CAAC,CAAC,IAAI,WAAW,CAAC;KAAG,CAAC,IAAI,MAAM,CAAC,IAAI,SAAS,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAE,CAAC,CAAA;AACxG,KAAK,WAAW,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS;CAAE,CAAA;AAC1D,KAAK,YAAY,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,IAAI,SAAS,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAE,CAAA;AACrF,KAAK,WAAW,CAAC,CAAC,IAAI,gBAAgB,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAA;AAE3D,eAAO,MAAM,IAAI,GAAI,GAAG,EAAE,IAAI,SAAS,MAAM,GAAG,OAAO,GAAG,QAAQ,IAAI,EAAE,KAAG,WAAW,CAAC,GAAG,CAAS,IAAJ,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,GAAE,CAK7G,CAAA;AAED,eAAO,MAAM,aAAa,GAAI,GAAG,EAAE,IAAI,SAAS,MAAM,GAAG,EAAE,KAAK,OACzD,GAAG,QACF,IAAI,EAAE,aACD,KAAK,KACf,WAAW,CAAC,GAAG,CAAS,IAAJ,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAE,CAAC,GAAG,KAUtD,CAAA"}
|
package/dist/promise.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"promise.d.ts","sourceRoot":"","sources":["../src/promise.ts"],"names":[],"mappings":"AAAA,8BAA8B;AAC9B,eAAO,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"promise.d.ts","sourceRoot":"","sources":["../src/promise.ts"],"names":[],"mappings":"AAAA,8BAA8B;AAC9B,eAAO,MAAM,UAAU,GAAI,CAAC,EAAE,GAAG,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,6CACpE,CAAA;AAE3B,eAAO,MAAM,cAAc,GAAU,CAAC,EAAE,GAAG,QACnC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,OAClB,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,KACjD,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAG7B,CAAA;AAED,eAAO,MAAM,gBAAgB,GAAU,CAAC,EAAE,GAAG,OACtC,CAAC,EAAE,YACE,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,UAC/C,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,MAAM,KACxC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAI7B,CAAA;AAED,eAAO,MAAM,cAAc,GAAU,CAAC,EAAE,GAAG,OACpC,CAAC,EAAE,OACH,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,CAAC,aACjC,MAAM,KAChB,OAAO,CAAC,GAAG,EAAE,CAgBf,CAAA"}
|
package/dist/set.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"set.d.ts","sourceRoot":"","sources":["../src/set.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"set.d.ts","sourceRoot":"","sources":["../src/set.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU,GAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,WASjD,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@livestore/utils",
|
|
3
|
-
"version": "0.0.54
|
|
3
|
+
"version": "0.0.54",
|
|
4
4
|
"sideEffects": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -35,32 +35,33 @@
|
|
|
35
35
|
"date-fns": "^3.6.0",
|
|
36
36
|
"otel-websocket-exporter": "^0.0.29",
|
|
37
37
|
"pretty-bytes": "^6.1.1",
|
|
38
|
-
"effect-db-schema": "0.0.54
|
|
38
|
+
"effect-db-schema": "0.0.54"
|
|
39
39
|
},
|
|
40
40
|
"peerDependencies": {
|
|
41
|
-
"@effect/experimental": "^0.
|
|
42
|
-
"@effect/opentelemetry": "^0.34.
|
|
43
|
-
"@effect/platform": "^0.
|
|
44
|
-
"@effect/platform-browser": "^0.
|
|
45
|
-
"@effect/schema": "^0.
|
|
41
|
+
"@effect/experimental": "^0.20.3",
|
|
42
|
+
"@effect/opentelemetry": "^0.34.40",
|
|
43
|
+
"@effect/platform": "^0.60.2",
|
|
44
|
+
"@effect/platform-browser": "^0.39.2",
|
|
45
|
+
"@effect/schema": "^0.69.2",
|
|
46
46
|
"@opentelemetry/api": "^1.9.0",
|
|
47
|
-
"effect": "^3.
|
|
47
|
+
"effect": "^3.5.8"
|
|
48
48
|
},
|
|
49
49
|
"devDependencies": {
|
|
50
|
-
"@effect/experimental": "0.
|
|
51
|
-
"@effect/opentelemetry": "0.34.
|
|
52
|
-
"@effect/platform": "0.
|
|
53
|
-
"@effect/platform-browser": "0.
|
|
54
|
-
"@effect/schema": "0.
|
|
50
|
+
"@effect/experimental": "0.20.3",
|
|
51
|
+
"@effect/opentelemetry": "0.34.40",
|
|
52
|
+
"@effect/platform": "0.60.2",
|
|
53
|
+
"@effect/platform-browser": "0.39.2",
|
|
54
|
+
"@effect/schema": "0.69.2",
|
|
55
55
|
"@opentelemetry/api": "^1.9.0",
|
|
56
|
-
"@types/node": "^20.12
|
|
57
|
-
"@types/web": "^0.0.
|
|
58
|
-
"effect": "3.
|
|
56
|
+
"@types/node": "^20.14.12",
|
|
57
|
+
"@types/web": "^0.0.151",
|
|
58
|
+
"effect": "3.5.8",
|
|
59
|
+
"vitest": "^2.0.4"
|
|
59
60
|
},
|
|
60
61
|
"publishConfig": {
|
|
61
62
|
"access": "public"
|
|
62
63
|
},
|
|
63
64
|
"scripts": {
|
|
64
|
-
"test": "
|
|
65
|
+
"test": "vitest"
|
|
65
66
|
}
|
|
66
67
|
}
|
package/src/effect/Effect.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import type { Context, Duration } from 'effect'
|
|
2
|
-
import { Cause, Deferred, Effect, pipe } from 'effect'
|
|
1
|
+
import type { Context, Duration, Scope } from 'effect'
|
|
2
|
+
import { Cause, Deferred, Effect, Fiber, pipe } from 'effect'
|
|
3
|
+
import { log } from 'effect/Console'
|
|
3
4
|
import type { LazyArg } from 'effect/Function'
|
|
4
5
|
|
|
5
6
|
import { isNonEmptyString } from '../index.js'
|
|
@@ -7,34 +8,75 @@ import { UnknownError } from './Error.js'
|
|
|
7
8
|
|
|
8
9
|
export * from 'effect/Effect'
|
|
9
10
|
|
|
10
|
-
export const log = <A>(message: A, ...rest: any[]): Effect.Effect<void> =>
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
// export const log = <A>(message: A, ...rest: any[]): Effect.Effect<void> =>
|
|
12
|
+
// Effect.sync(() => {
|
|
13
|
+
// console.log(message, ...rest)
|
|
14
|
+
// })
|
|
14
15
|
|
|
15
|
-
export const logWarn = <A>(message: A, ...rest: any[]): Effect.Effect<void> =>
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
16
|
+
// export const logWarn = <A>(message: A, ...rest: any[]): Effect.Effect<void> =>
|
|
17
|
+
// Effect.sync(() => {
|
|
18
|
+
// console.warn(message, ...rest)
|
|
19
|
+
// })
|
|
19
20
|
|
|
20
|
-
export const logError = <A>(message: A, ...rest: any[]): Effect.Effect<void> =>
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
21
|
+
// export const logError = <A>(message: A, ...rest: any[]): Effect.Effect<void> =>
|
|
22
|
+
// Effect.sync(() => {
|
|
23
|
+
// console.error(message, ...rest)
|
|
24
|
+
// })
|
|
25
|
+
|
|
26
|
+
const getThreadName = () => {
|
|
27
|
+
// @ts-expect-error TODO fix types
|
|
28
|
+
const globalName = globalThis.name
|
|
29
|
+
return isNonEmptyString(globalName)
|
|
30
|
+
? globalName
|
|
31
|
+
: typeof window === 'object'
|
|
32
|
+
? 'Browser Main Thread'
|
|
33
|
+
: 'unknown-thread'
|
|
34
|
+
}
|
|
24
35
|
|
|
25
36
|
/** Logs both on errors and defects */
|
|
26
37
|
export const tapCauseLogPretty = <R, E, A>(eff: Effect.Effect<A, E, R>): Effect.Effect<A, E, R> =>
|
|
27
|
-
Effect.tapErrorCause(eff, (
|
|
28
|
-
if (Cause.isInterruptedOnly(
|
|
38
|
+
Effect.tapErrorCause(eff, (cause) => {
|
|
39
|
+
if (Cause.isInterruptedOnly(cause)) {
|
|
40
|
+
// console.log('interrupted', Cause.pretty(err), err)
|
|
29
41
|
return Effect.void
|
|
30
42
|
}
|
|
31
43
|
|
|
32
|
-
const threadName =
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
return logError(`Error on ${threadName}`, Cause.pretty(err))
|
|
44
|
+
const threadName = getThreadName()
|
|
45
|
+
const firstErrLine = cause.toString().split('\n')[0]
|
|
46
|
+
return Effect.logError(`Error on ${threadName}: ${firstErrLine}`, cause)
|
|
36
47
|
})
|
|
37
48
|
|
|
49
|
+
export const logWarnIfTakesLongerThan =
|
|
50
|
+
({ label, duration }: { label: string; duration: Duration.DurationInput }) =>
|
|
51
|
+
<R, E, A>(eff: Effect.Effect<A, E, R>): Effect.Effect<A, E, R> =>
|
|
52
|
+
Effect.gen(function* () {
|
|
53
|
+
const runtime = yield* Effect.runtime<never>()
|
|
54
|
+
|
|
55
|
+
let timedOut = false
|
|
56
|
+
|
|
57
|
+
const timeoutFiber = Effect.sleep(duration).pipe(
|
|
58
|
+
Effect.tap(() => {
|
|
59
|
+
timedOut = true
|
|
60
|
+
// TODO include span info
|
|
61
|
+
return Effect.logWarning(`${label}: Took longer than ${duration}ms`)
|
|
62
|
+
}),
|
|
63
|
+
Effect.provide(runtime),
|
|
64
|
+
Effect.runFork,
|
|
65
|
+
)
|
|
66
|
+
|
|
67
|
+
const start = Date.now()
|
|
68
|
+
const res = yield* eff
|
|
69
|
+
|
|
70
|
+
if (timedOut) {
|
|
71
|
+
const end = Date.now()
|
|
72
|
+
yield* Effect.logWarning(`${label}: Actual duration: ${end - start}ms`)
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
yield* Fiber.interrupt(timeoutFiber)
|
|
76
|
+
|
|
77
|
+
return res
|
|
78
|
+
})
|
|
79
|
+
|
|
38
80
|
export const tapSync =
|
|
39
81
|
<A>(tapFn: (a: A) => unknown) =>
|
|
40
82
|
<R, E>(eff: Effect.Effect<A, E, R>): Effect.Effect<A, E, R> =>
|
|
@@ -62,14 +104,15 @@ export const timeoutDieMsg =
|
|
|
62
104
|
|
|
63
105
|
export const toForkedDeferred = <R, E, A>(
|
|
64
106
|
eff: Effect.Effect<A, E, R>,
|
|
65
|
-
): Effect.Effect<Deferred.Deferred<A, E>, never, R> =>
|
|
107
|
+
): Effect.Effect<Deferred.Deferred<A, E>, never, R | Scope.Scope> =>
|
|
66
108
|
pipe(
|
|
67
109
|
Deferred.make<A, E>(),
|
|
68
110
|
Effect.tap((deferred) =>
|
|
69
111
|
pipe(
|
|
70
112
|
Effect.exit(eff),
|
|
71
113
|
Effect.flatMap((ex) => Deferred.done(deferred, ex)),
|
|
72
|
-
|
|
114
|
+
tapCauseLogPretty,
|
|
115
|
+
Effect.forkScoped,
|
|
73
116
|
),
|
|
74
117
|
),
|
|
75
118
|
)
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export * from 'effect/Scheduler'
|
|
2
|
+
|
|
3
|
+
import { Scheduler } from 'effect'
|
|
4
|
+
|
|
5
|
+
// Based on https://github.com/astoilkov/main-thread-scheduling/blob/4b99c26ab96781bc35a331f5c225ad9c8a62cb95/src/utils/waitNextTask.ts#L25
|
|
6
|
+
export const messageChannel = (shouldYield: Scheduler.Scheduler['shouldYield'] = Scheduler.defaultShouldYield) =>
|
|
7
|
+
Scheduler.makeBatched((task) => {
|
|
8
|
+
const messageChannel = new MessageChannel()
|
|
9
|
+
|
|
10
|
+
messageChannel.port1.postMessage(undefined)
|
|
11
|
+
|
|
12
|
+
// eslint-disable-next-line unicorn/prefer-add-event-listener
|
|
13
|
+
messageChannel.port2.onmessage = task
|
|
14
|
+
}, shouldYield)
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { Schema } from '@effect/schema'
|
|
2
|
+
import { describe, expect, test } from 'vitest'
|
|
3
|
+
|
|
4
|
+
import type { DiffItem } from './debug-diff.js'
|
|
5
|
+
import { debugDiff } from './debug-diff.js'
|
|
6
|
+
|
|
7
|
+
describe('debug-diff', () => {
|
|
8
|
+
test('simple object', () => {
|
|
9
|
+
const schema = Schema.Struct({
|
|
10
|
+
a: Schema.String,
|
|
11
|
+
b: Schema.Number,
|
|
12
|
+
})
|
|
13
|
+
|
|
14
|
+
const a = { a: 'hello', b: 1 }
|
|
15
|
+
const b = { a: 'world', b: 2 }
|
|
16
|
+
|
|
17
|
+
const diff = debugDiff(schema)(a, b)
|
|
18
|
+
expect(trimAst(diff)).toMatchInlineSnapshot(`
|
|
19
|
+
[
|
|
20
|
+
{
|
|
21
|
+
"a": "hello",
|
|
22
|
+
"b": "world",
|
|
23
|
+
"path": ".a",
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"a": 1,
|
|
27
|
+
"b": 2,
|
|
28
|
+
"path": ".b",
|
|
29
|
+
},
|
|
30
|
+
]
|
|
31
|
+
`)
|
|
32
|
+
})
|
|
33
|
+
|
|
34
|
+
test('simple object with nested object', () => {
|
|
35
|
+
const schema = Schema.Struct({
|
|
36
|
+
a: Schema.String,
|
|
37
|
+
b: Schema.Struct({
|
|
38
|
+
c: Schema.Number,
|
|
39
|
+
}),
|
|
40
|
+
})
|
|
41
|
+
const a = { a: 'hello', b: { c: 1 } }
|
|
42
|
+
const b = { a: 'world', b: { c: 2 } }
|
|
43
|
+
const diff = debugDiff(schema)(a, b)
|
|
44
|
+
expect(trimAst(diff)).toMatchInlineSnapshot(`
|
|
45
|
+
[
|
|
46
|
+
{
|
|
47
|
+
"a": "hello",
|
|
48
|
+
"b": "world",
|
|
49
|
+
"path": ".a",
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
"a": 1,
|
|
53
|
+
"b": 2,
|
|
54
|
+
"path": ".b.c",
|
|
55
|
+
},
|
|
56
|
+
]
|
|
57
|
+
`)
|
|
58
|
+
})
|
|
59
|
+
|
|
60
|
+
test('union', () => {
|
|
61
|
+
const schema = Schema.Union(Schema.String, Schema.Number)
|
|
62
|
+
const a = 'hello'
|
|
63
|
+
const b = 1
|
|
64
|
+
const diff = debugDiff(schema)(a, b)
|
|
65
|
+
expect(trimAst(diff)).toMatchInlineSnapshot(`
|
|
66
|
+
[
|
|
67
|
+
{
|
|
68
|
+
"a": "hello",
|
|
69
|
+
"b": 1,
|
|
70
|
+
"path": "",
|
|
71
|
+
},
|
|
72
|
+
]
|
|
73
|
+
`)
|
|
74
|
+
})
|
|
75
|
+
|
|
76
|
+
test('tagged union', () => {
|
|
77
|
+
const schema = Schema.Union(
|
|
78
|
+
Schema.Struct({ _tag: Schema.Literal('a'), a: Schema.String }),
|
|
79
|
+
Schema.Struct({ _tag: Schema.Literal('b'), b: Schema.Number }),
|
|
80
|
+
)
|
|
81
|
+
const a = { _tag: 'a', a: 'hello' } as const
|
|
82
|
+
const b = { _tag: 'b', b: 1 } as const
|
|
83
|
+
const diff = debugDiff(schema)(a, b)
|
|
84
|
+
expect(trimAst(diff)).toMatchInlineSnapshot(`
|
|
85
|
+
[
|
|
86
|
+
{
|
|
87
|
+
"a": {
|
|
88
|
+
"_tag": "a",
|
|
89
|
+
"a": "hello",
|
|
90
|
+
},
|
|
91
|
+
"b": {
|
|
92
|
+
"_tag": "b",
|
|
93
|
+
"b": 1,
|
|
94
|
+
},
|
|
95
|
+
"path": "",
|
|
96
|
+
},
|
|
97
|
+
]
|
|
98
|
+
`)
|
|
99
|
+
})
|
|
100
|
+
})
|
|
101
|
+
|
|
102
|
+
const trimAst = (diffItems: DiffItem[]) => diffItems.map(({ ast: _ast, ...rest }) => rest)
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import type { Schema } from '@effect/schema'
|
|
2
|
+
import { AST, Equivalence } from '@effect/schema'
|
|
3
|
+
|
|
4
|
+
export type DiffItem = {
|
|
5
|
+
path: string
|
|
6
|
+
a: any
|
|
7
|
+
b: any
|
|
8
|
+
ast: AST.AST
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Diffs two values for a given schema and traverses downwards and returns a list of differences.
|
|
13
|
+
*/
|
|
14
|
+
export const debugDiff =
|
|
15
|
+
<A, I, R>(base: Schema.Schema<A, I, R>) =>
|
|
16
|
+
(a: A, b: A): DiffItem[] => {
|
|
17
|
+
const bag = [] as DiffItem[]
|
|
18
|
+
debugDiffImpl(base.ast, a, b, '', bag)
|
|
19
|
+
return bag
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
const debugDiffImpl = (ast: AST.AST, a: any, b: any, path: string, bag: DiffItem[]) => {
|
|
23
|
+
const eq = Equivalence.make({ ast } as any)
|
|
24
|
+
if (eq(a, b) === false) {
|
|
25
|
+
// bag.push({ path, a, b, ast })
|
|
26
|
+
|
|
27
|
+
if (AST.isUnion(ast)) {
|
|
28
|
+
if (isTaggedUnion(ast)) {
|
|
29
|
+
bag.push({ path, a, b, ast })
|
|
30
|
+
return
|
|
31
|
+
} else {
|
|
32
|
+
for (const type of ast.types) {
|
|
33
|
+
try {
|
|
34
|
+
debugDiffImpl(type, a, b, path, bag)
|
|
35
|
+
return
|
|
36
|
+
} catch {}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
} else if (AST.isTypeLiteral(ast)) {
|
|
40
|
+
const props = AST.getPropertySignatures(ast)
|
|
41
|
+
for (const prop of props) {
|
|
42
|
+
debugDiffImpl(prop.type, a[prop.name], b[prop.name], `${path}.${prop.name.toString()}`, bag)
|
|
43
|
+
}
|
|
44
|
+
} else {
|
|
45
|
+
// debugger
|
|
46
|
+
bag.push({ path, a, b, ast })
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
const isTaggedUnion = (ast: AST.AST) => {
|
|
52
|
+
if (AST.isUnion(ast)) {
|
|
53
|
+
return ast.types.every((type) => {
|
|
54
|
+
if (AST.isTypeLiteral(type) === false) return false
|
|
55
|
+
const props = AST.getPropertySignatures(type)
|
|
56
|
+
return props.some((prop) => prop.name.toString() === '_tag')
|
|
57
|
+
})
|
|
58
|
+
}
|
|
59
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { Transferable } from '@effect/platform'
|
|
2
|
+
import { Schema } from '@effect/schema'
|
|
3
|
+
import type { ParseOptions } from '@effect/schema/AST'
|
|
4
|
+
import type { ParseError } from '@effect/schema/ParseResult'
|
|
5
|
+
import { Effect, Hash } from 'effect'
|
|
6
|
+
|
|
7
|
+
import { objectToString } from '../../misc.js'
|
|
8
|
+
|
|
9
|
+
export * from '@effect/schema/Schema'
|
|
10
|
+
export * from './debug-diff.js'
|
|
11
|
+
|
|
12
|
+
// NOTE this is a temporary workaround until Effect schema has a better way to hash schemas
|
|
13
|
+
// https://github.com/Effect-TS/effect/issues/2719
|
|
14
|
+
// TODO remove this once the issue is resolved
|
|
15
|
+
export const hash = (schema: Schema.Schema<any>) => {
|
|
16
|
+
try {
|
|
17
|
+
return Hash.string(JSON.stringify(schema.ast, null, 2))
|
|
18
|
+
} catch {
|
|
19
|
+
console.warn(
|
|
20
|
+
`Schema hashing failed, falling back to hashing the shortend schema AST string. This is less reliable and may cause false positives.`,
|
|
21
|
+
)
|
|
22
|
+
return Hash.hash(schema.ast.toString())
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
const errorStructSchema = Schema.Struct({
|
|
27
|
+
message: Schema.String,
|
|
28
|
+
stack: Schema.optional(Schema.String),
|
|
29
|
+
})
|
|
30
|
+
|
|
31
|
+
export class AnyError extends Schema.transform(errorStructSchema, Schema.Any, {
|
|
32
|
+
decode: (errorStruct) => {
|
|
33
|
+
const { message, stack } = errorStruct
|
|
34
|
+
const previousLimit = Error.stackTraceLimit
|
|
35
|
+
Error.stackTraceLimit = 0
|
|
36
|
+
// eslint-disable-next-line unicorn/error-message
|
|
37
|
+
const error = new Error('')
|
|
38
|
+
Error.stackTraceLimit = previousLimit
|
|
39
|
+
error.message = message
|
|
40
|
+
error.stack = stack
|
|
41
|
+
return error
|
|
42
|
+
},
|
|
43
|
+
encode: (anyError) => ({
|
|
44
|
+
message: objectToString(anyError).replace(/^Error: /, ''),
|
|
45
|
+
stack: anyError.stack,
|
|
46
|
+
}),
|
|
47
|
+
}) {}
|
|
48
|
+
|
|
49
|
+
export const encodeWithTransferables =
|
|
50
|
+
<A, I, R>(schema: Schema.Schema<A, I, R>, options?: ParseOptions | undefined) =>
|
|
51
|
+
(a: A, overrideOptions?: ParseOptions | undefined): Effect.Effect<[I, Transferable[]], ParseError, R> =>
|
|
52
|
+
Effect.gen(function* () {
|
|
53
|
+
const collector = yield* Transferable.makeCollector
|
|
54
|
+
|
|
55
|
+
const encoded: I = yield* Schema.encode(schema, options)(a, overrideOptions).pipe(
|
|
56
|
+
Effect.provideService(Transferable.Collector, collector),
|
|
57
|
+
)
|
|
58
|
+
|
|
59
|
+
return [encoded, collector.unsafeRead() as Transferable[]]
|
|
60
|
+
})
|