@tanstack/db 0.5.11 → 0.5.13
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/cjs/SortedMap.cjs +40 -26
- package/dist/cjs/SortedMap.cjs.map +1 -1
- package/dist/cjs/SortedMap.d.cts +10 -15
- package/dist/cjs/collection/change-events.cjs.map +1 -1
- package/dist/cjs/collection/changes.cjs +2 -0
- package/dist/cjs/collection/changes.cjs.map +1 -1
- package/dist/cjs/collection/events.cjs.map +1 -1
- package/dist/cjs/collection/events.d.cts +12 -4
- package/dist/cjs/collection/index.cjs +2 -1
- package/dist/cjs/collection/index.cjs.map +1 -1
- package/dist/cjs/collection/indexes.cjs.map +1 -1
- package/dist/cjs/collection/lifecycle.cjs.map +1 -1
- package/dist/cjs/collection/mutations.cjs +5 -2
- package/dist/cjs/collection/mutations.cjs.map +1 -1
- package/dist/cjs/collection/state.cjs +6 -5
- package/dist/cjs/collection/state.cjs.map +1 -1
- package/dist/cjs/collection/state.d.cts +4 -1
- package/dist/cjs/collection/subscription.cjs +91 -57
- package/dist/cjs/collection/subscription.cjs.map +1 -1
- package/dist/cjs/collection/subscription.d.cts +26 -4
- package/dist/cjs/collection/sync.cjs +11 -6
- package/dist/cjs/collection/sync.cjs.map +1 -1
- package/dist/cjs/errors.cjs +9 -0
- package/dist/cjs/errors.cjs.map +1 -1
- package/dist/cjs/errors.d.cts +3 -0
- package/dist/cjs/event-emitter.cjs.map +1 -1
- package/dist/cjs/index.cjs +2 -0
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/index.d.cts +1 -1
- package/dist/cjs/indexes/auto-index.cjs.map +1 -1
- package/dist/cjs/indexes/base-index.cjs.map +1 -1
- package/dist/cjs/indexes/btree-index.cjs +8 -6
- package/dist/cjs/indexes/btree-index.cjs.map +1 -1
- package/dist/cjs/indexes/lazy-index.cjs.map +1 -1
- package/dist/cjs/indexes/reverse-index.cjs.map +1 -1
- package/dist/cjs/local-only.cjs.map +1 -1
- package/dist/cjs/local-storage.cjs.map +1 -1
- package/dist/cjs/optimistic-action.cjs.map +1 -1
- package/dist/cjs/paced-mutations.cjs.map +1 -1
- package/dist/cjs/proxy.cjs.map +1 -1
- package/dist/cjs/query/builder/functions.cjs.map +1 -1
- package/dist/cjs/query/builder/index.cjs.map +1 -1
- package/dist/cjs/query/builder/ref-proxy.cjs.map +1 -1
- package/dist/cjs/query/compiler/evaluators.cjs.map +1 -1
- package/dist/cjs/query/compiler/expressions.cjs.map +1 -1
- package/dist/cjs/query/compiler/group-by.cjs.map +1 -1
- package/dist/cjs/query/compiler/index.cjs.map +1 -1
- package/dist/cjs/query/compiler/joins.cjs.map +1 -1
- package/dist/cjs/query/compiler/order-by.cjs +91 -38
- package/dist/cjs/query/compiler/order-by.cjs.map +1 -1
- package/dist/cjs/query/compiler/order-by.d.cts +6 -2
- package/dist/cjs/query/compiler/select.cjs.map +1 -1
- package/dist/cjs/query/expression-helpers.cjs.map +1 -1
- package/dist/cjs/query/index.d.cts +1 -1
- package/dist/cjs/query/ir.cjs.map +1 -1
- package/dist/cjs/query/live/collection-config-builder.cjs.map +1 -1
- package/dist/cjs/query/live/collection-registry.cjs.map +1 -1
- package/dist/cjs/query/live/collection-subscriber.cjs +30 -15
- package/dist/cjs/query/live/collection-subscriber.cjs.map +1 -1
- package/dist/cjs/query/live/internal.cjs.map +1 -1
- package/dist/cjs/query/live-query-collection.cjs.map +1 -1
- package/dist/cjs/query/optimizer.cjs.map +1 -1
- package/dist/cjs/query/predicate-utils.cjs +19 -2
- package/dist/cjs/query/predicate-utils.cjs.map +1 -1
- package/dist/cjs/query/predicate-utils.d.cts +32 -1
- package/dist/cjs/query/subset-dedupe.cjs.map +1 -1
- package/dist/cjs/scheduler.cjs.map +1 -1
- package/dist/cjs/strategies/debounceStrategy.cjs.map +1 -1
- package/dist/cjs/strategies/queueStrategy.cjs.map +1 -1
- package/dist/cjs/strategies/throttleStrategy.cjs.map +1 -1
- package/dist/cjs/transactions.cjs.map +1 -1
- package/dist/cjs/types.d.cts +53 -8
- package/dist/cjs/utils/browser-polyfills.cjs.map +1 -1
- package/dist/cjs/utils/btree.cjs.map +1 -1
- package/dist/cjs/utils/comparison.cjs.map +1 -1
- package/dist/cjs/utils/cursor.cjs +39 -0
- package/dist/cjs/utils/cursor.cjs.map +1 -0
- package/dist/cjs/utils/cursor.d.cts +18 -0
- package/dist/cjs/utils/index-optimization.cjs.map +1 -1
- package/dist/cjs/utils.cjs.map +1 -1
- package/dist/esm/SortedMap.d.ts +10 -15
- package/dist/esm/SortedMap.js +40 -26
- package/dist/esm/SortedMap.js.map +1 -1
- package/dist/esm/collection/change-events.js.map +1 -1
- package/dist/esm/collection/changes.js +2 -0
- package/dist/esm/collection/changes.js.map +1 -1
- package/dist/esm/collection/events.d.ts +12 -4
- package/dist/esm/collection/events.js.map +1 -1
- package/dist/esm/collection/index.js +2 -1
- package/dist/esm/collection/index.js.map +1 -1
- package/dist/esm/collection/indexes.js.map +1 -1
- package/dist/esm/collection/lifecycle.js.map +1 -1
- package/dist/esm/collection/mutations.js +6 -3
- package/dist/esm/collection/mutations.js.map +1 -1
- package/dist/esm/collection/state.d.ts +4 -1
- package/dist/esm/collection/state.js +6 -5
- package/dist/esm/collection/state.js.map +1 -1
- package/dist/esm/collection/subscription.d.ts +26 -4
- package/dist/esm/collection/subscription.js +92 -58
- package/dist/esm/collection/subscription.js.map +1 -1
- package/dist/esm/collection/sync.js +11 -6
- package/dist/esm/collection/sync.js.map +1 -1
- package/dist/esm/errors.d.ts +3 -0
- package/dist/esm/errors.js +9 -0
- package/dist/esm/errors.js.map +1 -1
- package/dist/esm/event-emitter.js.map +1 -1
- package/dist/esm/index.d.ts +1 -1
- package/dist/esm/index.js +4 -2
- package/dist/esm/indexes/auto-index.js.map +1 -1
- package/dist/esm/indexes/base-index.js.map +1 -1
- package/dist/esm/indexes/btree-index.js +8 -6
- package/dist/esm/indexes/btree-index.js.map +1 -1
- package/dist/esm/indexes/lazy-index.js.map +1 -1
- package/dist/esm/indexes/reverse-index.js.map +1 -1
- package/dist/esm/local-only.js.map +1 -1
- package/dist/esm/local-storage.js.map +1 -1
- package/dist/esm/optimistic-action.js.map +1 -1
- package/dist/esm/paced-mutations.js.map +1 -1
- package/dist/esm/proxy.js.map +1 -1
- package/dist/esm/query/builder/functions.js.map +1 -1
- package/dist/esm/query/builder/index.js.map +1 -1
- package/dist/esm/query/builder/ref-proxy.js.map +1 -1
- package/dist/esm/query/compiler/evaluators.js.map +1 -1
- package/dist/esm/query/compiler/expressions.js.map +1 -1
- package/dist/esm/query/compiler/group-by.js.map +1 -1
- package/dist/esm/query/compiler/index.js.map +1 -1
- package/dist/esm/query/compiler/joins.js.map +1 -1
- package/dist/esm/query/compiler/order-by.d.ts +6 -2
- package/dist/esm/query/compiler/order-by.js +91 -38
- package/dist/esm/query/compiler/order-by.js.map +1 -1
- package/dist/esm/query/compiler/select.js.map +1 -1
- package/dist/esm/query/expression-helpers.js.map +1 -1
- package/dist/esm/query/index.d.ts +1 -1
- package/dist/esm/query/ir.js.map +1 -1
- package/dist/esm/query/live/collection-config-builder.js.map +1 -1
- package/dist/esm/query/live/collection-registry.js.map +1 -1
- package/dist/esm/query/live/collection-subscriber.js +30 -15
- package/dist/esm/query/live/collection-subscriber.js.map +1 -1
- package/dist/esm/query/live/internal.js.map +1 -1
- package/dist/esm/query/live-query-collection.js.map +1 -1
- package/dist/esm/query/optimizer.js.map +1 -1
- package/dist/esm/query/predicate-utils.d.ts +32 -1
- package/dist/esm/query/predicate-utils.js +19 -2
- package/dist/esm/query/predicate-utils.js.map +1 -1
- package/dist/esm/query/subset-dedupe.js.map +1 -1
- package/dist/esm/scheduler.js.map +1 -1
- package/dist/esm/strategies/debounceStrategy.js.map +1 -1
- package/dist/esm/strategies/queueStrategy.js.map +1 -1
- package/dist/esm/strategies/throttleStrategy.js.map +1 -1
- package/dist/esm/transactions.js.map +1 -1
- package/dist/esm/types.d.ts +53 -8
- package/dist/esm/utils/browser-polyfills.js.map +1 -1
- package/dist/esm/utils/btree.js.map +1 -1
- package/dist/esm/utils/comparison.js.map +1 -1
- package/dist/esm/utils/cursor.d.ts +18 -0
- package/dist/esm/utils/cursor.js +39 -0
- package/dist/esm/utils/cursor.js.map +1 -0
- package/dist/esm/utils/index-optimization.js.map +1 -1
- package/dist/esm/utils.js.map +1 -1
- package/package.json +30 -28
- package/src/SortedMap.ts +50 -31
- package/src/collection/change-events.ts +20 -20
- package/src/collection/changes.ts +16 -12
- package/src/collection/events.ts +20 -10
- package/src/collection/index.ts +47 -46
- package/src/collection/indexes.ts +14 -14
- package/src/collection/lifecycle.ts +16 -16
- package/src/collection/mutations.ts +25 -20
- package/src/collection/state.ts +43 -36
- package/src/collection/subscription.ts +171 -90
- package/src/collection/sync.ts +34 -22
- package/src/duplicate-instance-check.ts +1 -1
- package/src/errors.ts +49 -40
- package/src/event-emitter.ts +5 -5
- package/src/index.ts +21 -21
- package/src/indexes/auto-index.ts +11 -11
- package/src/indexes/base-index.ts +13 -13
- package/src/indexes/btree-index.ts +21 -17
- package/src/indexes/index-options.ts +3 -3
- package/src/indexes/lazy-index.ts +8 -8
- package/src/indexes/reverse-index.ts +5 -5
- package/src/local-only.ts +12 -12
- package/src/local-storage.ts +17 -17
- package/src/optimistic-action.ts +5 -5
- package/src/paced-mutations.ts +6 -6
- package/src/proxy.ts +43 -43
- package/src/query/builder/functions.ts +28 -28
- package/src/query/builder/index.ts +22 -22
- package/src/query/builder/ref-proxy.ts +4 -4
- package/src/query/builder/types.ts +8 -8
- package/src/query/compiler/evaluators.ts +9 -9
- package/src/query/compiler/expressions.ts +6 -6
- package/src/query/compiler/group-by.ts +24 -24
- package/src/query/compiler/index.ts +44 -44
- package/src/query/compiler/joins.ts +37 -37
- package/src/query/compiler/order-by.ts +170 -77
- package/src/query/compiler/select.ts +13 -13
- package/src/query/compiler/types.ts +2 -2
- package/src/query/expression-helpers.ts +16 -16
- package/src/query/index.ts +10 -9
- package/src/query/ir.ts +13 -13
- package/src/query/live/collection-config-builder.ts +53 -53
- package/src/query/live/collection-registry.ts +6 -6
- package/src/query/live/collection-subscriber.ts +87 -48
- package/src/query/live/internal.ts +1 -1
- package/src/query/live/types.ts +4 -4
- package/src/query/live-query-collection.ts +15 -15
- package/src/query/optimizer.ts +29 -29
- package/src/query/predicate-utils.ts +105 -50
- package/src/query/subset-dedupe.ts +6 -6
- package/src/scheduler.ts +3 -3
- package/src/strategies/debounceStrategy.ts +6 -6
- package/src/strategies/index.ts +4 -4
- package/src/strategies/queueStrategy.ts +5 -5
- package/src/strategies/throttleStrategy.ts +6 -6
- package/src/strategies/types.ts +2 -2
- package/src/transactions.ts +9 -9
- package/src/types.ts +76 -18
- package/src/utils/array-utils.ts +1 -1
- package/src/utils/browser-polyfills.ts +2 -2
- package/src/utils/btree.ts +22 -22
- package/src/utils/comparison.ts +3 -3
- package/src/utils/cursor.ts +78 -0
- package/src/utils/index-optimization.ts +14 -14
- package/src/utils.ts +4 -4
package/src/proxy.ts
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* and provides a way to retrieve those changes.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import { deepEquals, isTemporal } from
|
|
6
|
+
import { deepEquals, isTemporal } from './utils'
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
9
|
* Set of array methods that iterate with callbacks and may return elements.
|
|
@@ -58,7 +58,7 @@ const MAP_SET_ITERATOR_METHODS = new Set([
|
|
|
58
58
|
* Check if a value is a proxiable object (not Date, RegExp, or Temporal)
|
|
59
59
|
*/
|
|
60
60
|
function isProxiableObject(
|
|
61
|
-
value: unknown
|
|
61
|
+
value: unknown,
|
|
62
62
|
): value is Record<string | symbol, unknown> {
|
|
63
63
|
return (
|
|
64
64
|
value !== null &&
|
|
@@ -82,8 +82,8 @@ function createArrayIterationHandler<T extends object>(
|
|
|
82
82
|
parent?: {
|
|
83
83
|
tracker: ChangeTracker<Record<string | symbol, unknown>>
|
|
84
84
|
prop: string | symbol
|
|
85
|
-
}
|
|
86
|
-
) => { proxy: Record<string | symbol, unknown> }
|
|
85
|
+
},
|
|
86
|
+
) => { proxy: Record<string | symbol, unknown> },
|
|
87
87
|
): ((...args: Array<unknown>) => unknown) | undefined {
|
|
88
88
|
if (!CALLBACK_ITERATION_METHODS.has(methodName)) {
|
|
89
89
|
return undefined
|
|
@@ -106,7 +106,7 @@ function createArrayIterationHandler<T extends object>(
|
|
|
106
106
|
}
|
|
107
107
|
const { proxy: elementProxy } = memoizedCreateChangeProxy(
|
|
108
108
|
element,
|
|
109
|
-
nestedParent
|
|
109
|
+
nestedParent,
|
|
110
110
|
)
|
|
111
111
|
return elementProxy
|
|
112
112
|
}
|
|
@@ -118,7 +118,7 @@ function createArrayIterationHandler<T extends object>(
|
|
|
118
118
|
this: unknown,
|
|
119
119
|
element: unknown,
|
|
120
120
|
index: number,
|
|
121
|
-
array: unknown
|
|
121
|
+
array: unknown,
|
|
122
122
|
) {
|
|
123
123
|
const proxiedElement = getProxiedElement(element, index)
|
|
124
124
|
return callback.call(this, proxiedElement, index, array)
|
|
@@ -131,7 +131,7 @@ function createArrayIterationHandler<T extends object>(
|
|
|
131
131
|
accumulator: unknown,
|
|
132
132
|
element: unknown,
|
|
133
133
|
index: number,
|
|
134
|
-
array: unknown
|
|
134
|
+
array: unknown,
|
|
135
135
|
) {
|
|
136
136
|
const proxiedElement = getProxiedElement(element, index)
|
|
137
137
|
return callback.call(this, accumulator, proxiedElement, index, array)
|
|
@@ -188,8 +188,8 @@ function createArrayIteratorHandler<T extends object>(
|
|
|
188
188
|
parent?: {
|
|
189
189
|
tracker: ChangeTracker<Record<string | symbol, unknown>>
|
|
190
190
|
prop: string | symbol
|
|
191
|
-
}
|
|
192
|
-
) => { proxy: Record<string | symbol, unknown> }
|
|
191
|
+
},
|
|
192
|
+
) => { proxy: Record<string | symbol, unknown> },
|
|
193
193
|
): () => Iterator<unknown> {
|
|
194
194
|
return function () {
|
|
195
195
|
const array = changeTracker.copy_ as unknown as Array<unknown>
|
|
@@ -213,7 +213,7 @@ function createArrayIteratorHandler<T extends object>(
|
|
|
213
213
|
}
|
|
214
214
|
const { proxy: elementProxy } = memoizedCreateChangeProxy(
|
|
215
215
|
element,
|
|
216
|
-
nestedParent
|
|
216
|
+
nestedParent,
|
|
217
217
|
)
|
|
218
218
|
proxiedElement = elementProxy
|
|
219
219
|
}
|
|
@@ -235,7 +235,7 @@ function createArrayIteratorHandler<T extends object>(
|
|
|
235
235
|
function createModifyingMethodHandler<T extends object>(
|
|
236
236
|
methodFn: (...args: Array<unknown>) => unknown,
|
|
237
237
|
changeTracker: ChangeTracker<T>,
|
|
238
|
-
markChanged: (tracker: ChangeTracker<T>) => void
|
|
238
|
+
markChanged: (tracker: ChangeTracker<T>) => void,
|
|
239
239
|
): (...args: Array<unknown>) => unknown {
|
|
240
240
|
return function (...args: Array<unknown>) {
|
|
241
241
|
const result = methodFn.apply(changeTracker.copy_, args)
|
|
@@ -259,9 +259,9 @@ function createMapSetIteratorHandler<T extends object>(
|
|
|
259
259
|
parent?: {
|
|
260
260
|
tracker: ChangeTracker<Record<string | symbol, unknown>>
|
|
261
261
|
prop: string | symbol
|
|
262
|
-
}
|
|
262
|
+
},
|
|
263
263
|
) => { proxy: Record<string | symbol, unknown> },
|
|
264
|
-
markChanged: (tracker: ChangeTracker<T>) => void
|
|
264
|
+
markChanged: (tracker: ChangeTracker<T>) => void,
|
|
265
265
|
): ((...args: Array<unknown>) => unknown) | undefined {
|
|
266
266
|
const isIteratorMethod =
|
|
267
267
|
MAP_SET_ITERATOR_METHODS.has(methodName) || prop === Symbol.iterator
|
|
@@ -281,7 +281,7 @@ function createMapSetIteratorHandler<T extends object>(
|
|
|
281
281
|
this: unknown,
|
|
282
282
|
value: unknown,
|
|
283
283
|
key: unknown,
|
|
284
|
-
collection: unknown
|
|
284
|
+
collection: unknown,
|
|
285
285
|
) {
|
|
286
286
|
const cbresult = callback.call(this, value, key, collection)
|
|
287
287
|
markChanged(changeTracker)
|
|
@@ -351,7 +351,7 @@ function createMapSetIteratorHandler<T extends object>(
|
|
|
351
351
|
if (changeTracker.copy_ instanceof Map) {
|
|
352
352
|
;(changeTracker.copy_ as Map<unknown, unknown>).set(
|
|
353
353
|
mapKey,
|
|
354
|
-
newValue
|
|
354
|
+
newValue,
|
|
355
355
|
)
|
|
356
356
|
}
|
|
357
357
|
},
|
|
@@ -361,7 +361,7 @@ function createMapSetIteratorHandler<T extends object>(
|
|
|
361
361
|
mapParent as unknown as {
|
|
362
362
|
tracker: ChangeTracker<Record<string | symbol, unknown>>
|
|
363
363
|
prop: string | symbol
|
|
364
|
-
}
|
|
364
|
+
},
|
|
365
365
|
)
|
|
366
366
|
nextResult.value[1] = valueProxy
|
|
367
367
|
}
|
|
@@ -383,7 +383,7 @@ function createMapSetIteratorHandler<T extends object>(
|
|
|
383
383
|
if (changeTracker.copy_ instanceof Map) {
|
|
384
384
|
;(changeTracker.copy_ as Map<unknown, unknown>).set(
|
|
385
385
|
mapKey,
|
|
386
|
-
newValue
|
|
386
|
+
newValue,
|
|
387
387
|
)
|
|
388
388
|
}
|
|
389
389
|
},
|
|
@@ -393,7 +393,7 @@ function createMapSetIteratorHandler<T extends object>(
|
|
|
393
393
|
mapParent as unknown as {
|
|
394
394
|
tracker: ChangeTracker<Record<string | symbol, unknown>>
|
|
395
395
|
prop: string | symbol
|
|
396
|
-
}
|
|
396
|
+
},
|
|
397
397
|
)
|
|
398
398
|
nextResult.value = valueProxy
|
|
399
399
|
}
|
|
@@ -408,7 +408,7 @@ function createMapSetIteratorHandler<T extends object>(
|
|
|
408
408
|
updateSet: (newValue: unknown) => {
|
|
409
409
|
if (changeTracker.copy_ instanceof Set) {
|
|
410
410
|
;(changeTracker.copy_ as Set<unknown>).delete(
|
|
411
|
-
setOriginalValue
|
|
411
|
+
setOriginalValue,
|
|
412
412
|
)
|
|
413
413
|
;(changeTracker.copy_ as Set<unknown>).add(newValue)
|
|
414
414
|
originalToModifiedMap.set(setOriginalValue, newValue)
|
|
@@ -420,7 +420,7 @@ function createMapSetIteratorHandler<T extends object>(
|
|
|
420
420
|
setParent as unknown as {
|
|
421
421
|
tracker: ChangeTracker<Record<string | symbol, unknown>>
|
|
422
422
|
prop: string | symbol
|
|
423
|
-
}
|
|
423
|
+
},
|
|
424
424
|
)
|
|
425
425
|
nextResult.value = valueProxy
|
|
426
426
|
} else {
|
|
@@ -433,7 +433,7 @@ function createMapSetIteratorHandler<T extends object>(
|
|
|
433
433
|
Record<string | symbol, unknown>
|
|
434
434
|
>,
|
|
435
435
|
prop: tempKey,
|
|
436
|
-
}
|
|
436
|
+
},
|
|
437
437
|
)
|
|
438
438
|
nextResult.value = valueProxy
|
|
439
439
|
}
|
|
@@ -513,7 +513,7 @@ interface ChangeTracker<T extends object> {
|
|
|
513
513
|
|
|
514
514
|
function deepClone<T extends unknown>(
|
|
515
515
|
obj: T,
|
|
516
|
-
visited = new WeakMap<object, unknown>()
|
|
516
|
+
visited = new WeakMap<object, unknown>(),
|
|
517
517
|
): T {
|
|
518
518
|
// Handle null and undefined
|
|
519
519
|
if (obj === null || obj === undefined) {
|
|
@@ -552,7 +552,7 @@ function deepClone<T extends unknown>(
|
|
|
552
552
|
// Get the constructor to create a new instance of the same type
|
|
553
553
|
const TypedArrayConstructor = Object.getPrototypeOf(obj).constructor
|
|
554
554
|
const clone = new TypedArrayConstructor(
|
|
555
|
-
(obj as unknown as TypedArray).length
|
|
555
|
+
(obj as unknown as TypedArray).length,
|
|
556
556
|
) as unknown as TypedArray
|
|
557
557
|
visited.set(obj as object, clone)
|
|
558
558
|
|
|
@@ -596,7 +596,7 @@ function deepClone<T extends unknown>(
|
|
|
596
596
|
if (Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
597
597
|
clone[key] = deepClone(
|
|
598
598
|
(obj as Record<string | symbol, unknown>)[key],
|
|
599
|
-
visited
|
|
599
|
+
visited,
|
|
600
600
|
)
|
|
601
601
|
}
|
|
602
602
|
}
|
|
@@ -605,7 +605,7 @@ function deepClone<T extends unknown>(
|
|
|
605
605
|
for (const sym of symbolProps) {
|
|
606
606
|
clone[sym] = deepClone(
|
|
607
607
|
(obj as Record<string | symbol, unknown>)[sym],
|
|
608
|
-
visited
|
|
608
|
+
visited,
|
|
609
609
|
)
|
|
610
610
|
}
|
|
611
611
|
|
|
@@ -632,7 +632,7 @@ export function createChangeProxy<
|
|
|
632
632
|
parent?: {
|
|
633
633
|
tracker: ChangeTracker<Record<string | symbol, unknown>>
|
|
634
634
|
prop: string | symbol
|
|
635
|
-
}
|
|
635
|
+
},
|
|
636
636
|
): {
|
|
637
637
|
proxy: T
|
|
638
638
|
|
|
@@ -647,7 +647,7 @@ export function createChangeProxy<
|
|
|
647
647
|
innerParent?: {
|
|
648
648
|
tracker: ChangeTracker<Record<string | symbol, unknown>>
|
|
649
649
|
prop: string | symbol
|
|
650
|
-
}
|
|
650
|
+
},
|
|
651
651
|
): {
|
|
652
652
|
proxy: TInner
|
|
653
653
|
getChanges: () => Record<string | symbol, any>
|
|
@@ -683,7 +683,7 @@ export function createChangeProxy<
|
|
|
683
683
|
debugLog(
|
|
684
684
|
`createChangeProxy called for target`,
|
|
685
685
|
target,
|
|
686
|
-
changeTracker.proxyCount
|
|
686
|
+
changeTracker.proxyCount,
|
|
687
687
|
)
|
|
688
688
|
// Mark this object and all its ancestors as modified
|
|
689
689
|
// Also propagate the actual changes up the chain
|
|
@@ -716,11 +716,11 @@ export function createChangeProxy<
|
|
|
716
716
|
|
|
717
717
|
// Check if all properties in the current state have reverted to original values
|
|
718
718
|
function checkIfReverted(
|
|
719
|
-
state: ChangeTracker<Record<string | symbol, unknown
|
|
719
|
+
state: ChangeTracker<Record<string | symbol, unknown>>,
|
|
720
720
|
): boolean {
|
|
721
721
|
debugLog(
|
|
722
722
|
`checkIfReverted called with assigned keys:`,
|
|
723
|
-
Object.keys(state.assigned_)
|
|
723
|
+
Object.keys(state.assigned_),
|
|
724
724
|
)
|
|
725
725
|
|
|
726
726
|
// If there are no assigned properties, object is unchanged
|
|
@@ -743,7 +743,7 @@ export function createChangeProxy<
|
|
|
743
743
|
`Checking property ${String(prop)}, current:`,
|
|
744
744
|
currentValue,
|
|
745
745
|
`original:`,
|
|
746
|
-
originalValue
|
|
746
|
+
originalValue,
|
|
747
747
|
)
|
|
748
748
|
|
|
749
749
|
// If the value is not equal to original, something is still changed
|
|
@@ -785,7 +785,7 @@ export function createChangeProxy<
|
|
|
785
785
|
// Update parent status based on child changes
|
|
786
786
|
function checkParentStatus(
|
|
787
787
|
parentState: ChangeTracker<Record<string | symbol, unknown>>,
|
|
788
|
-
childProp: string | symbol | unknown
|
|
788
|
+
childProp: string | symbol | unknown,
|
|
789
789
|
) {
|
|
790
790
|
debugLog(`checkParentStatus called for child prop:`, childProp)
|
|
791
791
|
|
|
@@ -844,7 +844,7 @@ export function createChangeProxy<
|
|
|
844
844
|
return createModifyingMethodHandler(
|
|
845
845
|
value,
|
|
846
846
|
changeTracker,
|
|
847
|
-
markChanged
|
|
847
|
+
markChanged,
|
|
848
848
|
)
|
|
849
849
|
}
|
|
850
850
|
|
|
@@ -853,7 +853,7 @@ export function createChangeProxy<
|
|
|
853
853
|
methodName,
|
|
854
854
|
value,
|
|
855
855
|
changeTracker,
|
|
856
|
-
memoizedCreateChangeProxy
|
|
856
|
+
memoizedCreateChangeProxy,
|
|
857
857
|
)
|
|
858
858
|
if (iterationHandler) {
|
|
859
859
|
return iterationHandler
|
|
@@ -863,7 +863,7 @@ export function createChangeProxy<
|
|
|
863
863
|
if (prop === Symbol.iterator) {
|
|
864
864
|
return createArrayIteratorHandler(
|
|
865
865
|
changeTracker,
|
|
866
|
-
memoizedCreateChangeProxy
|
|
866
|
+
memoizedCreateChangeProxy,
|
|
867
867
|
)
|
|
868
868
|
}
|
|
869
869
|
}
|
|
@@ -876,7 +876,7 @@ export function createChangeProxy<
|
|
|
876
876
|
return createModifyingMethodHandler(
|
|
877
877
|
value,
|
|
878
878
|
changeTracker,
|
|
879
|
-
markChanged
|
|
879
|
+
markChanged,
|
|
880
880
|
)
|
|
881
881
|
}
|
|
882
882
|
|
|
@@ -888,7 +888,7 @@ export function createChangeProxy<
|
|
|
888
888
|
ptarget,
|
|
889
889
|
changeTracker,
|
|
890
890
|
memoizedCreateChangeProxy,
|
|
891
|
-
markChanged
|
|
891
|
+
markChanged,
|
|
892
892
|
)
|
|
893
893
|
if (iteratorHandler) {
|
|
894
894
|
return iteratorHandler
|
|
@@ -908,7 +908,7 @@ export function createChangeProxy<
|
|
|
908
908
|
// Create a proxy for the nested object
|
|
909
909
|
const { proxy: nestedProxy } = memoizedCreateChangeProxy(
|
|
910
910
|
originalValue,
|
|
911
|
-
nestedParent
|
|
911
|
+
nestedParent,
|
|
912
912
|
)
|
|
913
913
|
|
|
914
914
|
// Cache the proxy
|
|
@@ -926,7 +926,7 @@ export function createChangeProxy<
|
|
|
926
926
|
`set called for property ${String(prop)}, current:`,
|
|
927
927
|
currentValue,
|
|
928
928
|
`new:`,
|
|
929
|
-
value
|
|
929
|
+
value,
|
|
930
930
|
)
|
|
931
931
|
|
|
932
932
|
// Only track the change if the value is actually different
|
|
@@ -941,7 +941,7 @@ export function createChangeProxy<
|
|
|
941
941
|
`original:`,
|
|
942
942
|
originalValue,
|
|
943
943
|
`isRevertToOriginal:`,
|
|
944
|
-
isRevertToOriginal
|
|
944
|
+
isRevertToOriginal,
|
|
945
945
|
)
|
|
946
946
|
|
|
947
947
|
if (isRevertToOriginal) {
|
|
@@ -1128,7 +1128,7 @@ export function createChangeProxy<
|
|
|
1128
1128
|
* @returns An object containing the array of proxies and a function to get all changes
|
|
1129
1129
|
*/
|
|
1130
1130
|
export function createArrayChangeProxy<T extends object>(
|
|
1131
|
-
targets: Array<T
|
|
1131
|
+
targets: Array<T>,
|
|
1132
1132
|
): {
|
|
1133
1133
|
proxies: Array<T>
|
|
1134
1134
|
getChanges: () => Array<Record<string | symbol, unknown>>
|
|
@@ -1151,7 +1151,7 @@ export function createArrayChangeProxy<T extends object>(
|
|
|
1151
1151
|
*/
|
|
1152
1152
|
export function withChangeTracking<T extends object>(
|
|
1153
1153
|
target: T,
|
|
1154
|
-
callback: (proxy: T) => void
|
|
1154
|
+
callback: (proxy: T) => void,
|
|
1155
1155
|
): Record<string | symbol, unknown> {
|
|
1156
1156
|
const { proxy, getChanges } = createChangeProxy(target)
|
|
1157
1157
|
|
|
@@ -1170,7 +1170,7 @@ export function withChangeTracking<T extends object>(
|
|
|
1170
1170
|
*/
|
|
1171
1171
|
export function withArrayChangeTracking<T extends object>(
|
|
1172
1172
|
targets: Array<T>,
|
|
1173
|
-
callback: (proxies: Array<T>) => void
|
|
1173
|
+
callback: (proxies: Array<T>) => void,
|
|
1174
1174
|
): Array<Record<string | symbol, unknown>> {
|
|
1175
1175
|
const { proxies, getChanges } = createArrayChangeProxy(targets)
|
|
1176
1176
|
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { Aggregate, Func } from
|
|
2
|
-
import { toExpression } from
|
|
3
|
-
import type { BasicExpression } from
|
|
4
|
-
import type { RefProxy } from
|
|
5
|
-
import type { RefLeaf } from
|
|
1
|
+
import { Aggregate, Func } from '../ir'
|
|
2
|
+
import { toExpression } from './ref-proxy.js'
|
|
3
|
+
import type { BasicExpression } from '../ir'
|
|
4
|
+
import type { RefProxy } from './ref-proxy.js'
|
|
5
|
+
import type { RefLeaf } from './types.js'
|
|
6
6
|
|
|
7
7
|
type StringRef =
|
|
8
8
|
| RefLeaf<string>
|
|
@@ -114,11 +114,11 @@ type BinaryNumericReturnType<T1, T2> =
|
|
|
114
114
|
|
|
115
115
|
export function eq<T>(
|
|
116
116
|
left: ComparisonOperand<T>,
|
|
117
|
-
right: ComparisonOperand<T
|
|
117
|
+
right: ComparisonOperand<T>,
|
|
118
118
|
): BasicExpression<boolean>
|
|
119
119
|
export function eq<T extends string | number | boolean>(
|
|
120
120
|
left: ComparisonOperandPrimitive<T>,
|
|
121
|
-
right: ComparisonOperandPrimitive<T
|
|
121
|
+
right: ComparisonOperandPrimitive<T>,
|
|
122
122
|
): BasicExpression<boolean>
|
|
123
123
|
export function eq<T>(left: Aggregate<T>, right: any): BasicExpression<boolean>
|
|
124
124
|
export function eq(left: any, right: any): BasicExpression<boolean> {
|
|
@@ -127,11 +127,11 @@ export function eq(left: any, right: any): BasicExpression<boolean> {
|
|
|
127
127
|
|
|
128
128
|
export function gt<T>(
|
|
129
129
|
left: ComparisonOperand<T>,
|
|
130
|
-
right: ComparisonOperand<T
|
|
130
|
+
right: ComparisonOperand<T>,
|
|
131
131
|
): BasicExpression<boolean>
|
|
132
132
|
export function gt<T extends string | number>(
|
|
133
133
|
left: ComparisonOperandPrimitive<T>,
|
|
134
|
-
right: ComparisonOperandPrimitive<T
|
|
134
|
+
right: ComparisonOperandPrimitive<T>,
|
|
135
135
|
): BasicExpression<boolean>
|
|
136
136
|
export function gt<T>(left: Aggregate<T>, right: any): BasicExpression<boolean>
|
|
137
137
|
export function gt(left: any, right: any): BasicExpression<boolean> {
|
|
@@ -140,11 +140,11 @@ export function gt(left: any, right: any): BasicExpression<boolean> {
|
|
|
140
140
|
|
|
141
141
|
export function gte<T>(
|
|
142
142
|
left: ComparisonOperand<T>,
|
|
143
|
-
right: ComparisonOperand<T
|
|
143
|
+
right: ComparisonOperand<T>,
|
|
144
144
|
): BasicExpression<boolean>
|
|
145
145
|
export function gte<T extends string | number>(
|
|
146
146
|
left: ComparisonOperandPrimitive<T>,
|
|
147
|
-
right: ComparisonOperandPrimitive<T
|
|
147
|
+
right: ComparisonOperandPrimitive<T>,
|
|
148
148
|
): BasicExpression<boolean>
|
|
149
149
|
export function gte<T>(left: Aggregate<T>, right: any): BasicExpression<boolean>
|
|
150
150
|
export function gte(left: any, right: any): BasicExpression<boolean> {
|
|
@@ -153,11 +153,11 @@ export function gte(left: any, right: any): BasicExpression<boolean> {
|
|
|
153
153
|
|
|
154
154
|
export function lt<T>(
|
|
155
155
|
left: ComparisonOperand<T>,
|
|
156
|
-
right: ComparisonOperand<T
|
|
156
|
+
right: ComparisonOperand<T>,
|
|
157
157
|
): BasicExpression<boolean>
|
|
158
158
|
export function lt<T extends string | number>(
|
|
159
159
|
left: ComparisonOperandPrimitive<T>,
|
|
160
|
-
right: ComparisonOperandPrimitive<T
|
|
160
|
+
right: ComparisonOperandPrimitive<T>,
|
|
161
161
|
): BasicExpression<boolean>
|
|
162
162
|
export function lt<T>(left: Aggregate<T>, right: any): BasicExpression<boolean>
|
|
163
163
|
export function lt(left: any, right: any): BasicExpression<boolean> {
|
|
@@ -166,11 +166,11 @@ export function lt(left: any, right: any): BasicExpression<boolean> {
|
|
|
166
166
|
|
|
167
167
|
export function lte<T>(
|
|
168
168
|
left: ComparisonOperand<T>,
|
|
169
|
-
right: ComparisonOperand<T
|
|
169
|
+
right: ComparisonOperand<T>,
|
|
170
170
|
): BasicExpression<boolean>
|
|
171
171
|
export function lte<T extends string | number>(
|
|
172
172
|
left: ComparisonOperandPrimitive<T>,
|
|
173
|
-
right: ComparisonOperandPrimitive<T
|
|
173
|
+
right: ComparisonOperandPrimitive<T>,
|
|
174
174
|
): BasicExpression<boolean>
|
|
175
175
|
export function lte<T>(left: Aggregate<T>, right: any): BasicExpression<boolean>
|
|
176
176
|
export function lte(left: any, right: any): BasicExpression<boolean> {
|
|
@@ -180,7 +180,7 @@ export function lte(left: any, right: any): BasicExpression<boolean> {
|
|
|
180
180
|
// Overloads for and() - support 2 or more arguments
|
|
181
181
|
export function and(
|
|
182
182
|
left: ExpressionLike,
|
|
183
|
-
right: ExpressionLike
|
|
183
|
+
right: ExpressionLike,
|
|
184
184
|
): BasicExpression<boolean>
|
|
185
185
|
export function and(
|
|
186
186
|
left: ExpressionLike,
|
|
@@ -195,14 +195,14 @@ export function and(
|
|
|
195
195
|
const allArgs = [left, right, ...rest]
|
|
196
196
|
return new Func(
|
|
197
197
|
`and`,
|
|
198
|
-
allArgs.map((arg) => toExpression(arg))
|
|
198
|
+
allArgs.map((arg) => toExpression(arg)),
|
|
199
199
|
)
|
|
200
200
|
}
|
|
201
201
|
|
|
202
202
|
// Overloads for or() - support 2 or more arguments
|
|
203
203
|
export function or(
|
|
204
204
|
left: ExpressionLike,
|
|
205
|
-
right: ExpressionLike
|
|
205
|
+
right: ExpressionLike,
|
|
206
206
|
): BasicExpression<boolean>
|
|
207
207
|
export function or(
|
|
208
208
|
left: ExpressionLike,
|
|
@@ -217,7 +217,7 @@ export function or(
|
|
|
217
217
|
const allArgs = [left, right, ...rest]
|
|
218
218
|
return new Func(
|
|
219
219
|
`or`,
|
|
220
|
-
allArgs.map((arg) => toExpression(arg))
|
|
220
|
+
allArgs.map((arg) => toExpression(arg)),
|
|
221
221
|
)
|
|
222
222
|
}
|
|
223
223
|
|
|
@@ -236,14 +236,14 @@ export function isNull(value: ExpressionLike): BasicExpression<boolean> {
|
|
|
236
236
|
|
|
237
237
|
export function inArray(
|
|
238
238
|
value: ExpressionLike,
|
|
239
|
-
array: ExpressionLike
|
|
239
|
+
array: ExpressionLike,
|
|
240
240
|
): BasicExpression<boolean> {
|
|
241
241
|
return new Func(`in`, [toExpression(value), toExpression(array)])
|
|
242
242
|
}
|
|
243
243
|
|
|
244
244
|
export function like(
|
|
245
245
|
left: StringLike,
|
|
246
|
-
right: StringLike
|
|
246
|
+
right: StringLike,
|
|
247
247
|
): BasicExpression<boolean>
|
|
248
248
|
export function like(left: any, right: any): BasicExpression<boolean> {
|
|
249
249
|
return new Func(`like`, [toExpression(left), toExpression(right)])
|
|
@@ -251,7 +251,7 @@ export function like(left: any, right: any): BasicExpression<boolean> {
|
|
|
251
251
|
|
|
252
252
|
export function ilike(
|
|
253
253
|
left: StringLike,
|
|
254
|
-
right: StringLike
|
|
254
|
+
right: StringLike,
|
|
255
255
|
): BasicExpression<boolean> {
|
|
256
256
|
return new Func(`ilike`, [toExpression(left), toExpression(right)])
|
|
257
257
|
}
|
|
@@ -259,19 +259,19 @@ export function ilike(
|
|
|
259
259
|
// Functions
|
|
260
260
|
|
|
261
261
|
export function upper<T extends ExpressionLike>(
|
|
262
|
-
arg: T
|
|
262
|
+
arg: T,
|
|
263
263
|
): StringFunctionReturnType<T> {
|
|
264
264
|
return new Func(`upper`, [toExpression(arg)]) as StringFunctionReturnType<T>
|
|
265
265
|
}
|
|
266
266
|
|
|
267
267
|
export function lower<T extends ExpressionLike>(
|
|
268
|
-
arg: T
|
|
268
|
+
arg: T,
|
|
269
269
|
): StringFunctionReturnType<T> {
|
|
270
270
|
return new Func(`lower`, [toExpression(arg)]) as StringFunctionReturnType<T>
|
|
271
271
|
}
|
|
272
272
|
|
|
273
273
|
export function length<T extends ExpressionLike>(
|
|
274
|
-
arg: T
|
|
274
|
+
arg: T,
|
|
275
275
|
): NumericFunctionReturnType<T> {
|
|
276
276
|
return new Func(`length`, [toExpression(arg)]) as NumericFunctionReturnType<T>
|
|
277
277
|
}
|
|
@@ -281,20 +281,20 @@ export function concat(
|
|
|
281
281
|
): BasicExpression<string> {
|
|
282
282
|
return new Func(
|
|
283
283
|
`concat`,
|
|
284
|
-
args.map((arg) => toExpression(arg))
|
|
284
|
+
args.map((arg) => toExpression(arg)),
|
|
285
285
|
)
|
|
286
286
|
}
|
|
287
287
|
|
|
288
288
|
export function coalesce(...args: Array<ExpressionLike>): BasicExpression<any> {
|
|
289
289
|
return new Func(
|
|
290
290
|
`coalesce`,
|
|
291
|
-
args.map((arg) => toExpression(arg))
|
|
291
|
+
args.map((arg) => toExpression(arg)),
|
|
292
292
|
)
|
|
293
293
|
}
|
|
294
294
|
|
|
295
295
|
export function add<T1 extends ExpressionLike, T2 extends ExpressionLike>(
|
|
296
296
|
left: T1,
|
|
297
|
-
right: T2
|
|
297
|
+
right: T2,
|
|
298
298
|
): BinaryNumericReturnType<T1, T2> {
|
|
299
299
|
return new Func(`add`, [
|
|
300
300
|
toExpression(left),
|