@livestore/utils 0.0.54-dev.3 → 0.0.54-dev.30

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (132) hide show
  1. package/dist/.tsbuildinfo.json +1 -1
  2. package/dist/Deferred.d.ts.map +1 -1
  3. package/dist/NoopTracer.d.ts.map +1 -1
  4. package/dist/effect/Effect.d.ts +6 -5
  5. package/dist/effect/Effect.d.ts.map +1 -1
  6. package/dist/effect/Effect.js +47 -15
  7. package/dist/effect/Effect.js.map +1 -1
  8. package/dist/effect/Scheduler.d.ts +4 -0
  9. package/dist/effect/Scheduler.d.ts.map +1 -0
  10. package/dist/effect/Scheduler.js +10 -0
  11. package/dist/effect/Scheduler.js.map +1 -0
  12. package/dist/effect/Schema/debug-diff.d.ts +13 -0
  13. package/dist/effect/Schema/debug-diff.d.ts.map +1 -0
  14. package/dist/effect/Schema/debug-diff.js +51 -0
  15. package/dist/effect/Schema/debug-diff.js.map +1 -0
  16. package/dist/effect/Schema/debug-diff.test.d.ts +2 -0
  17. package/dist/effect/Schema/debug-diff.test.d.ts.map +1 -0
  18. package/dist/effect/Schema/debug-diff.test.js +91 -0
  19. package/dist/effect/Schema/debug-diff.test.js.map +1 -0
  20. package/dist/effect/Schema/index.d.ts +15 -0
  21. package/dist/effect/Schema/index.d.ts.map +1 -0
  22. package/dist/effect/Schema/index.js +46 -0
  23. package/dist/effect/Schema/index.js.map +1 -0
  24. package/dist/effect/ServiceContext.d.ts.map +1 -1
  25. package/dist/effect/Stream.d.ts +2 -0
  26. package/dist/effect/Stream.d.ts.map +1 -1
  27. package/dist/effect/Stream.js +11 -1
  28. package/dist/effect/Stream.js.map +1 -1
  29. package/dist/effect/SubscriptionRef.d.ts +8 -3
  30. package/dist/effect/SubscriptionRef.d.ts.map +1 -1
  31. package/dist/effect/SubscriptionRef.js +2 -2
  32. package/dist/effect/SubscriptionRef.js.map +1 -1
  33. package/dist/effect/WebLock.d.ts +5 -1
  34. package/dist/effect/WebLock.d.ts.map +1 -1
  35. package/dist/effect/WebLock.js +42 -11
  36. package/dist/effect/WebLock.js.map +1 -1
  37. package/dist/effect/browser-worker-tmp/BrowserWorker.d.ts +21 -0
  38. package/dist/effect/browser-worker-tmp/BrowserWorker.d.ts.map +1 -0
  39. package/dist/effect/browser-worker-tmp/BrowserWorker.js +17 -0
  40. package/dist/effect/browser-worker-tmp/BrowserWorker.js.map +1 -0
  41. package/dist/effect/browser-worker-tmp/BrowserWorkerRunner.d.ts +12 -0
  42. package/dist/effect/browser-worker-tmp/BrowserWorkerRunner.d.ts.map +1 -0
  43. package/dist/effect/browser-worker-tmp/BrowserWorkerRunner.js +8 -0
  44. package/dist/effect/browser-worker-tmp/BrowserWorkerRunner.js.map +1 -0
  45. package/dist/effect/browser-worker-tmp/internal/worker.d.ts +9 -0
  46. package/dist/effect/browser-worker-tmp/internal/worker.d.ts.map +1 -0
  47. package/dist/effect/browser-worker-tmp/internal/worker.js +56 -0
  48. package/dist/effect/browser-worker-tmp/internal/worker.js.map +1 -0
  49. package/dist/effect/browser-worker-tmp/internal/workerRunner.d.ts +5 -0
  50. package/dist/effect/browser-worker-tmp/internal/workerRunner.d.ts.map +1 -0
  51. package/dist/effect/browser-worker-tmp/internal/workerRunner.js +100 -0
  52. package/dist/effect/browser-worker-tmp/internal/workerRunner.js.map +1 -0
  53. package/dist/effect/browser-worker-tmp/port-platform-runner.d.ts +5 -0
  54. package/dist/effect/browser-worker-tmp/port-platform-runner.d.ts.map +1 -0
  55. package/dist/effect/browser-worker-tmp/port-platform-runner.js +54 -0
  56. package/dist/effect/browser-worker-tmp/port-platform-runner.js.map +1 -0
  57. package/dist/effect/index.d.ts +10 -5
  58. package/dist/effect/index.d.ts.map +1 -1
  59. package/dist/effect/index.js +12 -5
  60. package/dist/effect/index.js.map +1 -1
  61. package/dist/effect/worker-tmp/Worker.d.ts +290 -0
  62. package/dist/effect/worker-tmp/Worker.d.ts.map +1 -0
  63. package/dist/effect/worker-tmp/Worker.js +62 -0
  64. package/dist/effect/worker-tmp/Worker.js.map +1 -0
  65. package/dist/effect/worker-tmp/WorkerError.d.ts +63 -0
  66. package/dist/effect/worker-tmp/WorkerError.d.ts.map +1 -0
  67. package/dist/effect/worker-tmp/WorkerError.js +52 -0
  68. package/dist/effect/worker-tmp/WorkerError.js.map +1 -0
  69. package/dist/effect/worker-tmp/WorkerRunner.d.ts +119 -0
  70. package/dist/effect/worker-tmp/WorkerRunner.d.ts.map +1 -0
  71. package/dist/effect/worker-tmp/WorkerRunner.js +32 -0
  72. package/dist/effect/worker-tmp/WorkerRunner.js.map +1 -0
  73. package/dist/effect/worker-tmp/internal/worker.d.ts +36 -0
  74. package/dist/effect/worker-tmp/internal/worker.d.ts.map +1 -0
  75. package/dist/effect/worker-tmp/internal/worker.js +244 -0
  76. package/dist/effect/worker-tmp/internal/worker.js.map +1 -0
  77. package/dist/effect/worker-tmp/internal/workerError.d.ts +4 -0
  78. package/dist/effect/worker-tmp/internal/workerError.d.ts.map +1 -0
  79. package/dist/effect/worker-tmp/internal/workerError.js +3 -0
  80. package/dist/effect/worker-tmp/internal/workerError.js.map +1 -0
  81. package/dist/effect/worker-tmp/internal/workerRunner.d.ts +21 -0
  82. package/dist/effect/worker-tmp/internal/workerRunner.d.ts.map +1 -0
  83. package/dist/effect/worker-tmp/internal/workerRunner.js +137 -0
  84. package/dist/effect/worker-tmp/internal/workerRunner.js.map +1 -0
  85. package/dist/fast-deep-equal.d.ts +2 -0
  86. package/dist/fast-deep-equal.d.ts.map +1 -0
  87. package/dist/fast-deep-equal.js +79 -0
  88. package/dist/fast-deep-equal.js.map +1 -0
  89. package/dist/guards.d.ts.map +1 -1
  90. package/dist/index.d.ts +5 -5
  91. package/dist/index.d.ts.map +1 -1
  92. package/dist/index.js +20 -19
  93. package/dist/index.js.map +1 -1
  94. package/dist/misc.d.ts +2 -0
  95. package/dist/misc.d.ts.map +1 -0
  96. package/dist/misc.js +13 -0
  97. package/dist/misc.js.map +1 -0
  98. package/dist/object/index.d.ts.map +1 -1
  99. package/dist/object/omit.d.ts.map +1 -1
  100. package/dist/object/pick.d.ts +1 -1
  101. package/dist/object/pick.d.ts.map +1 -1
  102. package/dist/promise.d.ts.map +1 -1
  103. package/dist/set.d.ts.map +1 -1
  104. package/package.json +18 -17
  105. package/src/effect/Effect.ts +65 -22
  106. package/src/effect/Scheduler.ts +14 -0
  107. package/src/effect/Schema/debug-diff.test.ts +102 -0
  108. package/src/effect/Schema/debug-diff.ts +59 -0
  109. package/src/effect/Schema/index.ts +60 -0
  110. package/src/effect/Stream.ts +37 -1
  111. package/src/effect/SubscriptionRef.ts +22 -7
  112. package/src/effect/WebLock.ts +69 -31
  113. package/src/effect/browser-worker-tmp/BrowserWorker.ts +26 -0
  114. package/src/effect/browser-worker-tmp/BrowserWorkerRunner.ts +14 -0
  115. package/src/effect/browser-worker-tmp/internal/worker.ts +71 -0
  116. package/src/effect/browser-worker-tmp/internal/workerRunner.ts +119 -0
  117. package/src/effect/browser-worker-tmp/port-platform-runner.ts +74 -0
  118. package/src/effect/index.ts +13 -4
  119. package/src/effect/worker-tmp/Worker.ts +374 -0
  120. package/src/effect/worker-tmp/WorkerError.ts +79 -0
  121. package/src/effect/worker-tmp/WorkerRunner.ts +181 -0
  122. package/src/effect/worker-tmp/internal/worker.ts +417 -0
  123. package/src/effect/worker-tmp/internal/workerError.ts +6 -0
  124. package/src/effect/worker-tmp/internal/workerRunner.ts +237 -0
  125. package/src/fast-deep-equal.ts +72 -0
  126. package/src/index.ts +21 -22
  127. package/src/misc.ts +12 -0
  128. package/dist/effect/Schema.d.ts +0 -4
  129. package/dist/effect/Schema.d.ts.map +0 -1
  130. package/dist/effect/Schema.js +0 -15
  131. package/dist/effect/Schema.js.map +0 -1
  132. package/src/effect/Schema.ts +0 -18
@@ -0,0 +1,72 @@
1
+ /* eslint-disable no-var */
2
+
3
+ // Copied from fast-deep-equal
4
+ // MIT License
5
+
6
+ export const deepEqual = <T>(a: T, b: T): boolean => {
7
+ if (a === b) return true
8
+
9
+ if (a && b && typeof a == 'object' && typeof b == 'object') {
10
+ if (a.constructor !== b.constructor) return false
11
+
12
+ var length, i, keys
13
+ if (Array.isArray(a)) {
14
+ length = a.length
15
+ // @ts-expect-error ...
16
+ if (length != b.length) return false
17
+ for (i = length; i-- !== 0; )
18
+ // @ts-expect-error ...
19
+ if (!deepEqual(a[i], b[i])) return false
20
+ return true
21
+ }
22
+
23
+ if (a instanceof Map && b instanceof Map) {
24
+ if (a.size !== b.size) return false
25
+ for (i of a.entries()) if (!b.has(i[0])) return false
26
+ for (i of a.entries()) if (!deepEqual(i[1], b.get(i[0]))) return false
27
+ return true
28
+ }
29
+
30
+ if (a instanceof Set && b instanceof Set) {
31
+ if (a.size !== b.size) return false
32
+ for (i of a.entries()) if (!b.has(i[0])) return false
33
+ return true
34
+ }
35
+
36
+ if (ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {
37
+ // @ts-expect-error ...
38
+ length = a.length
39
+ // @ts-expect-error ...
40
+ if (length != b.length) return false
41
+ for (i = length; i-- !== 0; )
42
+ // @ts-expect-error ...
43
+ if (a[i] !== b[i]) return false
44
+ return true
45
+ }
46
+
47
+ // @ts-expect-error ...
48
+ if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags
49
+ if (a.valueOf !== undefined && a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf()
50
+ if (a.toString !== undefined && a.toString !== Object.prototype.toString) return a.toString() === b.toString()
51
+
52
+ keys = Object.keys(a)
53
+ length = keys.length
54
+ if (length !== Object.keys(b).length) return false
55
+
56
+ for (i = length; i-- !== 0; )
57
+ // @ts-expect-error ...
58
+ if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false
59
+
60
+ for (i = length; i-- !== 0; ) {
61
+ var key = keys[i]
62
+
63
+ // @ts-expect-error ...
64
+ if (!deepEqual(a[key], b[key])) return false
65
+ }
66
+
67
+ return true
68
+ }
69
+
70
+ // true if both NaN, false otherwise
71
+ return a !== a && b !== b
72
+ }
package/src/index.ts CHANGED
@@ -7,11 +7,15 @@ 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
 
13
15
  import type * as otel from '@opentelemetry/api'
14
16
 
17
+ import { objectToString } from './misc.js'
18
+
15
19
  export * as dateFns from 'date-fns'
16
20
 
17
21
  export type Prettify<T> = T extends infer U ? { [K in keyof U]: Prettify<U[K]> } : never
@@ -65,30 +69,11 @@ export const recRemoveUndefinedValues = (val: any): void => {
65
69
  }
66
70
  }
67
71
 
68
- export const debugDeepCopy = <T>(val: T): T => JSON.parse(JSON.stringify(val))
69
-
70
72
  export const prop =
71
73
  <T extends {}, K extends keyof T>(key: K) =>
72
74
  (obj: T): T[K] =>
73
75
  obj[key]
74
76
 
75
- export const objectToString = (error: any): string => {
76
- const stack = error.stack
77
- const str = error.toString()
78
- const stackStr = stack ? `\n${stack}` : ''
79
- if (str !== '[object Object]') return str + stackStr
80
-
81
- try {
82
- return JSON.stringify({ ...error, stack }, null, 2)
83
- } catch (e: any) {
84
- console.log(error)
85
-
86
- return 'Error while printing error: ' + e
87
- }
88
- }
89
-
90
- export const errorToString = objectToString
91
-
92
77
  export const capitalizeFirstLetter = (str: string): string => str.charAt(0).toUpperCase() + str.slice(1)
93
78
 
94
79
  export const isReadonlyArray = <I, T>(value: ReadonlyArray<I> | T): value is ReadonlyArray<I> => Array.isArray(value)
@@ -104,8 +89,8 @@ export function casesHandled(unexpectedCase: never): never {
104
89
  }
105
90
 
106
91
  export const shouldNeverHappen = (msg?: string, ...args: any[]): never => {
107
- if (import.meta.env.DEV || import.meta.env.VITE_DEV) {
108
- console.error(msg, ...args)
92
+ console.error(msg, ...args)
93
+ if (isDev()) {
109
94
  debugger
110
95
  }
111
96
 
@@ -236,8 +221,22 @@ export const memoizeByRef = <T extends (arg: any) => any>(fn: T): T => {
236
221
  }) as any
237
222
  }
238
223
 
239
- export const isNonEmptyString = (str: string | undefined | null) => str === undefined || str === null || str === ''
224
+ export const isNonEmptyString = (str: string | undefined | null): str is string => {
225
+ return typeof str === 'string' && str.length > 0
226
+ }
240
227
 
241
228
  export const isPromise = (value: any): value is Promise<unknown> => typeof value?.then === 'function'
242
229
 
243
230
  export const isIterable = <T>(value: any): value is Iterable<T> => typeof value?.[Symbol.iterator] === 'function'
231
+
232
+ export { objectToString as errorToString } from './misc.js'
233
+
234
+ const isDev = memoizeByRef(() => {
235
+ if (import.meta.env !== undefined) {
236
+ return import.meta.env.DEV || import.meta.env.VITE_DEV
237
+ } else if (typeof process !== 'undefined' && process.env !== undefined) {
238
+ return process.env.DEV
239
+ } else {
240
+ return false
241
+ }
242
+ })
package/src/misc.ts ADDED
@@ -0,0 +1,12 @@
1
+ export const objectToString = (error: any): string => {
2
+ const str = error?.toString()
3
+ if (str !== '[object Object]') return str
4
+
5
+ try {
6
+ return JSON.stringify(error, null, 2)
7
+ } catch (e: any) {
8
+ console.log(error)
9
+
10
+ return 'Error while printing error: ' + e
11
+ }
12
+ }
@@ -1,4 +0,0 @@
1
- import type { Schema } from '@effect/schema';
2
- export * from '@effect/schema/Schema';
3
- export declare const hash: (schema: Schema.Schema<any>) => number;
4
- //# sourceMappingURL=Schema.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Schema.d.ts","sourceRoot":"","sources":["../../src/effect/Schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAG5C,cAAc,uBAAuB,CAAA;AAKrC,eAAO,MAAM,IAAI,WAAY,OAAO,MAAM,CAAC,GAAG,CAAC,WAS9C,CAAA"}
@@ -1,15 +0,0 @@
1
- import { Hash } from 'effect';
2
- export * from '@effect/schema/Schema';
3
- // NOTE this is a temporary workaround until Effect schema has a better way to hash schemas
4
- // https://github.com/Effect-TS/effect/issues/2719
5
- // TODO remove this once the issue is resolved
6
- export const hash = (schema) => {
7
- try {
8
- return Hash.string(JSON.stringify(schema.ast, null, 2));
9
- }
10
- catch {
11
- console.warn(`Schema hashing failed, falling back to hashing the shortend schema AST string. This is less reliable and may cause false positives.`);
12
- return Hash.hash(schema.ast.toString());
13
- }
14
- };
15
- //# sourceMappingURL=Schema.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Schema.js","sourceRoot":"","sources":["../../src/effect/Schema.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAE7B,cAAc,uBAAuB,CAAA;AAErC,2FAA2F;AAC3F,kDAAkD;AAClD,8CAA8C;AAC9C,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,MAA0B,EAAE,EAAE;IACjD,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;IACzD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,IAAI,CACV,qIAAqI,CACtI,CAAA;QACD,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAA;IACzC,CAAC;AACH,CAAC,CAAA"}
@@ -1,18 +0,0 @@
1
- import type { Schema } from '@effect/schema'
2
- import { Hash } from 'effect'
3
-
4
- export * from '@effect/schema/Schema'
5
-
6
- // NOTE this is a temporary workaround until Effect schema has a better way to hash schemas
7
- // https://github.com/Effect-TS/effect/issues/2719
8
- // TODO remove this once the issue is resolved
9
- export const hash = (schema: Schema.Schema<any>) => {
10
- try {
11
- return Hash.string(JSON.stringify(schema.ast, null, 2))
12
- } catch {
13
- console.warn(
14
- `Schema hashing failed, falling back to hashing the shortend schema AST string. This is less reliable and may cause false positives.`,
15
- )
16
- return Hash.hash(schema.ast.toString())
17
- }
18
- }