@tanstack/db 0.5.10 → 0.5.12

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 (224) hide show
  1. package/dist/cjs/SortedMap.cjs +40 -26
  2. package/dist/cjs/SortedMap.cjs.map +1 -1
  3. package/dist/cjs/SortedMap.d.cts +10 -15
  4. package/dist/cjs/collection/change-events.cjs +1 -1
  5. package/dist/cjs/collection/change-events.cjs.map +1 -1
  6. package/dist/cjs/collection/changes.cjs.map +1 -1
  7. package/dist/cjs/collection/events.cjs.map +1 -1
  8. package/dist/cjs/collection/events.d.cts +12 -4
  9. package/dist/cjs/collection/index.cjs +2 -1
  10. package/dist/cjs/collection/index.cjs.map +1 -1
  11. package/dist/cjs/collection/indexes.cjs.map +1 -1
  12. package/dist/cjs/collection/lifecycle.cjs.map +1 -1
  13. package/dist/cjs/collection/mutations.cjs +5 -2
  14. package/dist/cjs/collection/mutations.cjs.map +1 -1
  15. package/dist/cjs/collection/state.cjs +6 -5
  16. package/dist/cjs/collection/state.cjs.map +1 -1
  17. package/dist/cjs/collection/state.d.cts +4 -1
  18. package/dist/cjs/collection/subscription.cjs +60 -53
  19. package/dist/cjs/collection/subscription.cjs.map +1 -1
  20. package/dist/cjs/collection/subscription.d.cts +18 -4
  21. package/dist/cjs/collection/sync.cjs.map +1 -1
  22. package/dist/cjs/errors.cjs +9 -0
  23. package/dist/cjs/errors.cjs.map +1 -1
  24. package/dist/cjs/errors.d.cts +3 -0
  25. package/dist/cjs/event-emitter.cjs.map +1 -1
  26. package/dist/cjs/index.cjs +4 -0
  27. package/dist/cjs/index.cjs.map +1 -1
  28. package/dist/cjs/index.d.cts +2 -1
  29. package/dist/cjs/indexes/auto-index.cjs.map +1 -1
  30. package/dist/cjs/indexes/base-index.cjs.map +1 -1
  31. package/dist/cjs/indexes/btree-index.cjs +8 -6
  32. package/dist/cjs/indexes/btree-index.cjs.map +1 -1
  33. package/dist/cjs/indexes/lazy-index.cjs.map +1 -1
  34. package/dist/cjs/indexes/reverse-index.cjs.map +1 -1
  35. package/dist/cjs/local-only.cjs.map +1 -1
  36. package/dist/cjs/local-storage.cjs.map +1 -1
  37. package/dist/cjs/optimistic-action.cjs.map +1 -1
  38. package/dist/cjs/paced-mutations.cjs.map +1 -1
  39. package/dist/cjs/proxy.cjs.map +1 -1
  40. package/dist/cjs/query/builder/functions.cjs.map +1 -1
  41. package/dist/cjs/query/builder/index.cjs.map +1 -1
  42. package/dist/cjs/query/builder/ref-proxy.cjs.map +1 -1
  43. package/dist/cjs/query/compiler/evaluators.cjs.map +1 -1
  44. package/dist/cjs/query/compiler/expressions.cjs.map +1 -1
  45. package/dist/cjs/query/compiler/group-by.cjs.map +1 -1
  46. package/dist/cjs/query/compiler/index.cjs.map +1 -1
  47. package/dist/cjs/query/compiler/joins.cjs.map +1 -1
  48. package/dist/cjs/query/compiler/order-by.cjs +91 -38
  49. package/dist/cjs/query/compiler/order-by.cjs.map +1 -1
  50. package/dist/cjs/query/compiler/order-by.d.cts +6 -2
  51. package/dist/cjs/query/compiler/select.cjs.map +1 -1
  52. package/dist/cjs/query/expression-helpers.cjs.map +1 -1
  53. package/dist/cjs/query/index.d.cts +1 -1
  54. package/dist/cjs/query/ir.cjs.map +1 -1
  55. package/dist/cjs/query/live/collection-config-builder.cjs.map +1 -1
  56. package/dist/cjs/query/live/collection-registry.cjs.map +1 -1
  57. package/dist/cjs/query/live/collection-subscriber.cjs +30 -15
  58. package/dist/cjs/query/live/collection-subscriber.cjs.map +1 -1
  59. package/dist/cjs/query/live/internal.cjs.map +1 -1
  60. package/dist/cjs/query/live-query-collection.cjs.map +1 -1
  61. package/dist/cjs/query/optimizer.cjs.map +1 -1
  62. package/dist/cjs/query/predicate-utils.cjs +19 -2
  63. package/dist/cjs/query/predicate-utils.cjs.map +1 -1
  64. package/dist/cjs/query/predicate-utils.d.cts +32 -1
  65. package/dist/cjs/query/subset-dedupe.cjs.map +1 -1
  66. package/dist/cjs/scheduler.cjs.map +1 -1
  67. package/dist/cjs/strategies/debounceStrategy.cjs.map +1 -1
  68. package/dist/cjs/strategies/queueStrategy.cjs.map +1 -1
  69. package/dist/cjs/strategies/throttleStrategy.cjs.map +1 -1
  70. package/dist/cjs/transactions.cjs.map +1 -1
  71. package/dist/cjs/types.d.cts +43 -5
  72. package/dist/cjs/utils/browser-polyfills.cjs.map +1 -1
  73. package/dist/cjs/utils/btree.cjs.map +1 -1
  74. package/dist/cjs/utils/comparison.cjs.map +1 -1
  75. package/dist/cjs/utils/cursor.cjs +39 -0
  76. package/dist/cjs/utils/cursor.cjs.map +1 -0
  77. package/dist/cjs/utils/cursor.d.cts +18 -0
  78. package/dist/cjs/utils/index-optimization.cjs.map +1 -1
  79. package/dist/cjs/utils.cjs.map +1 -1
  80. package/dist/esm/SortedMap.d.ts +10 -15
  81. package/dist/esm/SortedMap.js +40 -26
  82. package/dist/esm/SortedMap.js.map +1 -1
  83. package/dist/esm/collection/change-events.js +1 -1
  84. package/dist/esm/collection/change-events.js.map +1 -1
  85. package/dist/esm/collection/changes.js.map +1 -1
  86. package/dist/esm/collection/events.d.ts +12 -4
  87. package/dist/esm/collection/events.js.map +1 -1
  88. package/dist/esm/collection/index.js +2 -1
  89. package/dist/esm/collection/index.js.map +1 -1
  90. package/dist/esm/collection/indexes.js.map +1 -1
  91. package/dist/esm/collection/lifecycle.js.map +1 -1
  92. package/dist/esm/collection/mutations.js +6 -3
  93. package/dist/esm/collection/mutations.js.map +1 -1
  94. package/dist/esm/collection/state.d.ts +4 -1
  95. package/dist/esm/collection/state.js +6 -5
  96. package/dist/esm/collection/state.js.map +1 -1
  97. package/dist/esm/collection/subscription.d.ts +18 -4
  98. package/dist/esm/collection/subscription.js +61 -54
  99. package/dist/esm/collection/subscription.js.map +1 -1
  100. package/dist/esm/collection/sync.js.map +1 -1
  101. package/dist/esm/errors.d.ts +3 -0
  102. package/dist/esm/errors.js +9 -0
  103. package/dist/esm/errors.js.map +1 -1
  104. package/dist/esm/event-emitter.js.map +1 -1
  105. package/dist/esm/index.d.ts +2 -1
  106. package/dist/esm/index.js +6 -2
  107. package/dist/esm/index.js.map +1 -1
  108. package/dist/esm/indexes/auto-index.js.map +1 -1
  109. package/dist/esm/indexes/base-index.js.map +1 -1
  110. package/dist/esm/indexes/btree-index.js +8 -6
  111. package/dist/esm/indexes/btree-index.js.map +1 -1
  112. package/dist/esm/indexes/lazy-index.js.map +1 -1
  113. package/dist/esm/indexes/reverse-index.js.map +1 -1
  114. package/dist/esm/local-only.js.map +1 -1
  115. package/dist/esm/local-storage.js.map +1 -1
  116. package/dist/esm/optimistic-action.js.map +1 -1
  117. package/dist/esm/paced-mutations.js.map +1 -1
  118. package/dist/esm/proxy.js.map +1 -1
  119. package/dist/esm/query/builder/functions.js.map +1 -1
  120. package/dist/esm/query/builder/index.js.map +1 -1
  121. package/dist/esm/query/builder/ref-proxy.js.map +1 -1
  122. package/dist/esm/query/compiler/evaluators.js.map +1 -1
  123. package/dist/esm/query/compiler/expressions.js.map +1 -1
  124. package/dist/esm/query/compiler/group-by.js.map +1 -1
  125. package/dist/esm/query/compiler/index.js.map +1 -1
  126. package/dist/esm/query/compiler/joins.js.map +1 -1
  127. package/dist/esm/query/compiler/order-by.d.ts +6 -2
  128. package/dist/esm/query/compiler/order-by.js +91 -38
  129. package/dist/esm/query/compiler/order-by.js.map +1 -1
  130. package/dist/esm/query/compiler/select.js.map +1 -1
  131. package/dist/esm/query/expression-helpers.js.map +1 -1
  132. package/dist/esm/query/index.d.ts +1 -1
  133. package/dist/esm/query/ir.js.map +1 -1
  134. package/dist/esm/query/live/collection-config-builder.js.map +1 -1
  135. package/dist/esm/query/live/collection-registry.js.map +1 -1
  136. package/dist/esm/query/live/collection-subscriber.js +30 -15
  137. package/dist/esm/query/live/collection-subscriber.js.map +1 -1
  138. package/dist/esm/query/live/internal.js.map +1 -1
  139. package/dist/esm/query/live-query-collection.js.map +1 -1
  140. package/dist/esm/query/optimizer.js.map +1 -1
  141. package/dist/esm/query/predicate-utils.d.ts +32 -1
  142. package/dist/esm/query/predicate-utils.js +19 -2
  143. package/dist/esm/query/predicate-utils.js.map +1 -1
  144. package/dist/esm/query/subset-dedupe.js.map +1 -1
  145. package/dist/esm/scheduler.js.map +1 -1
  146. package/dist/esm/strategies/debounceStrategy.js.map +1 -1
  147. package/dist/esm/strategies/queueStrategy.js.map +1 -1
  148. package/dist/esm/strategies/throttleStrategy.js.map +1 -1
  149. package/dist/esm/transactions.js.map +1 -1
  150. package/dist/esm/types.d.ts +43 -5
  151. package/dist/esm/utils/browser-polyfills.js.map +1 -1
  152. package/dist/esm/utils/btree.js.map +1 -1
  153. package/dist/esm/utils/comparison.js.map +1 -1
  154. package/dist/esm/utils/cursor.d.ts +18 -0
  155. package/dist/esm/utils/cursor.js +39 -0
  156. package/dist/esm/utils/cursor.js.map +1 -0
  157. package/dist/esm/utils/index-optimization.js.map +1 -1
  158. package/dist/esm/utils.js.map +1 -1
  159. package/package.json +30 -28
  160. package/src/SortedMap.ts +50 -31
  161. package/src/collection/change-events.ts +23 -21
  162. package/src/collection/changes.ts +12 -12
  163. package/src/collection/events.ts +20 -10
  164. package/src/collection/index.ts +47 -46
  165. package/src/collection/indexes.ts +14 -14
  166. package/src/collection/lifecycle.ts +16 -16
  167. package/src/collection/mutations.ts +25 -20
  168. package/src/collection/state.ts +43 -36
  169. package/src/collection/subscription.ts +114 -83
  170. package/src/collection/sync.ts +13 -13
  171. package/src/duplicate-instance-check.ts +1 -1
  172. package/src/errors.ts +49 -40
  173. package/src/event-emitter.ts +5 -5
  174. package/src/index.ts +21 -20
  175. package/src/indexes/auto-index.ts +11 -11
  176. package/src/indexes/base-index.ts +13 -13
  177. package/src/indexes/btree-index.ts +21 -17
  178. package/src/indexes/index-options.ts +3 -3
  179. package/src/indexes/lazy-index.ts +8 -8
  180. package/src/indexes/reverse-index.ts +5 -5
  181. package/src/local-only.ts +12 -12
  182. package/src/local-storage.ts +17 -17
  183. package/src/optimistic-action.ts +5 -5
  184. package/src/paced-mutations.ts +6 -6
  185. package/src/proxy.ts +43 -43
  186. package/src/query/builder/functions.ts +28 -28
  187. package/src/query/builder/index.ts +22 -22
  188. package/src/query/builder/ref-proxy.ts +4 -4
  189. package/src/query/builder/types.ts +8 -8
  190. package/src/query/compiler/evaluators.ts +9 -9
  191. package/src/query/compiler/expressions.ts +6 -6
  192. package/src/query/compiler/group-by.ts +24 -24
  193. package/src/query/compiler/index.ts +44 -44
  194. package/src/query/compiler/joins.ts +37 -37
  195. package/src/query/compiler/order-by.ts +170 -77
  196. package/src/query/compiler/select.ts +13 -13
  197. package/src/query/compiler/types.ts +2 -2
  198. package/src/query/expression-helpers.ts +16 -16
  199. package/src/query/index.ts +10 -9
  200. package/src/query/ir.ts +13 -13
  201. package/src/query/live/collection-config-builder.ts +53 -53
  202. package/src/query/live/collection-registry.ts +6 -6
  203. package/src/query/live/collection-subscriber.ts +87 -48
  204. package/src/query/live/internal.ts +1 -1
  205. package/src/query/live/types.ts +4 -4
  206. package/src/query/live-query-collection.ts +15 -15
  207. package/src/query/optimizer.ts +29 -29
  208. package/src/query/predicate-utils.ts +105 -50
  209. package/src/query/subset-dedupe.ts +6 -6
  210. package/src/scheduler.ts +3 -3
  211. package/src/strategies/debounceStrategy.ts +6 -6
  212. package/src/strategies/index.ts +4 -4
  213. package/src/strategies/queueStrategy.ts +5 -5
  214. package/src/strategies/throttleStrategy.ts +6 -6
  215. package/src/strategies/types.ts +2 -2
  216. package/src/transactions.ts +9 -9
  217. package/src/types.ts +51 -12
  218. package/src/utils/array-utils.ts +1 -1
  219. package/src/utils/browser-polyfills.ts +2 -2
  220. package/src/utils/btree.ts +22 -22
  221. package/src/utils/comparison.ts +3 -3
  222. package/src/utils/cursor.ts +78 -0
  223. package/src/utils/index-optimization.ts +14 -14
  224. 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 "./utils"
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 "../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"
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),