@tanstack/db 0.0.14 → 0.0.16

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 (197) hide show
  1. package/dist/cjs/collection.cjs +117 -104
  2. package/dist/cjs/collection.cjs.map +1 -1
  3. package/dist/cjs/collection.d.cts +18 -21
  4. package/dist/cjs/index.cjs +31 -13
  5. package/dist/cjs/index.cjs.map +1 -1
  6. package/dist/cjs/index.d.cts +0 -1
  7. package/dist/cjs/query/builder/functions.cjs +107 -0
  8. package/dist/cjs/query/builder/functions.cjs.map +1 -0
  9. package/dist/cjs/query/builder/functions.d.cts +38 -0
  10. package/dist/cjs/query/builder/index.cjs +499 -0
  11. package/dist/cjs/query/builder/index.cjs.map +1 -0
  12. package/dist/cjs/query/builder/index.d.cts +324 -0
  13. package/dist/cjs/query/builder/ref-proxy.cjs +92 -0
  14. package/dist/cjs/query/builder/ref-proxy.cjs.map +1 -0
  15. package/dist/cjs/query/builder/ref-proxy.d.cts +28 -0
  16. package/dist/cjs/query/builder/types.d.cts +81 -0
  17. package/dist/cjs/query/compiler/evaluators.cjs +261 -0
  18. package/dist/cjs/query/compiler/evaluators.cjs.map +1 -0
  19. package/dist/cjs/query/compiler/evaluators.d.cts +11 -0
  20. package/dist/cjs/query/compiler/group-by.cjs +271 -0
  21. package/dist/cjs/query/compiler/group-by.cjs.map +1 -0
  22. package/dist/cjs/query/compiler/group-by.d.cts +7 -0
  23. package/dist/cjs/query/compiler/index.cjs +181 -0
  24. package/dist/cjs/query/compiler/index.cjs.map +1 -0
  25. package/dist/cjs/query/compiler/index.d.cts +15 -0
  26. package/dist/cjs/query/compiler/joins.cjs +116 -0
  27. package/dist/cjs/query/compiler/joins.cjs.map +1 -0
  28. package/dist/cjs/query/compiler/joins.d.cts +11 -0
  29. package/dist/cjs/query/compiler/order-by.cjs +89 -0
  30. package/dist/cjs/query/compiler/order-by.cjs.map +1 -0
  31. package/dist/cjs/query/compiler/order-by.d.cts +9 -0
  32. package/dist/cjs/query/compiler/select.cjs +57 -0
  33. package/dist/cjs/query/compiler/select.cjs.map +1 -0
  34. package/dist/cjs/query/compiler/select.d.cts +15 -0
  35. package/dist/cjs/query/index.d.cts +5 -5
  36. package/dist/cjs/query/ir.cjs +57 -0
  37. package/dist/cjs/query/ir.cjs.map +1 -0
  38. package/dist/cjs/query/ir.d.cts +81 -0
  39. package/dist/cjs/query/live-query-collection.cjs +224 -0
  40. package/dist/cjs/query/live-query-collection.cjs.map +1 -0
  41. package/dist/cjs/query/live-query-collection.d.cts +124 -0
  42. package/dist/cjs/transactions.cjs +20 -13
  43. package/dist/cjs/transactions.cjs.map +1 -1
  44. package/dist/cjs/transactions.d.cts +10 -1
  45. package/dist/cjs/types.d.cts +13 -0
  46. package/dist/esm/collection.d.ts +18 -21
  47. package/dist/esm/collection.js +118 -105
  48. package/dist/esm/collection.js.map +1 -1
  49. package/dist/esm/index.d.ts +0 -1
  50. package/dist/esm/index.js +30 -12
  51. package/dist/esm/query/builder/functions.d.ts +38 -0
  52. package/dist/esm/query/builder/functions.js +107 -0
  53. package/dist/esm/query/builder/functions.js.map +1 -0
  54. package/dist/esm/query/builder/index.d.ts +324 -0
  55. package/dist/esm/query/builder/index.js +499 -0
  56. package/dist/esm/query/builder/index.js.map +1 -0
  57. package/dist/esm/query/builder/ref-proxy.d.ts +28 -0
  58. package/dist/esm/query/builder/ref-proxy.js +92 -0
  59. package/dist/esm/query/builder/ref-proxy.js.map +1 -0
  60. package/dist/esm/query/builder/types.d.ts +81 -0
  61. package/dist/esm/query/compiler/evaluators.d.ts +11 -0
  62. package/dist/esm/query/compiler/evaluators.js +261 -0
  63. package/dist/esm/query/compiler/evaluators.js.map +1 -0
  64. package/dist/esm/query/compiler/group-by.d.ts +7 -0
  65. package/dist/esm/query/compiler/group-by.js +271 -0
  66. package/dist/esm/query/compiler/group-by.js.map +1 -0
  67. package/dist/esm/query/compiler/index.d.ts +15 -0
  68. package/dist/esm/query/compiler/index.js +181 -0
  69. package/dist/esm/query/compiler/index.js.map +1 -0
  70. package/dist/esm/query/compiler/joins.d.ts +11 -0
  71. package/dist/esm/query/compiler/joins.js +116 -0
  72. package/dist/esm/query/compiler/joins.js.map +1 -0
  73. package/dist/esm/query/compiler/order-by.d.ts +9 -0
  74. package/dist/esm/query/compiler/order-by.js +89 -0
  75. package/dist/esm/query/compiler/order-by.js.map +1 -0
  76. package/dist/esm/query/compiler/select.d.ts +15 -0
  77. package/dist/esm/query/compiler/select.js +57 -0
  78. package/dist/esm/query/compiler/select.js.map +1 -0
  79. package/dist/esm/query/index.d.ts +5 -5
  80. package/dist/esm/query/ir.d.ts +81 -0
  81. package/dist/esm/query/ir.js +57 -0
  82. package/dist/esm/query/ir.js.map +1 -0
  83. package/dist/esm/query/live-query-collection.d.ts +124 -0
  84. package/dist/esm/query/live-query-collection.js +224 -0
  85. package/dist/esm/query/live-query-collection.js.map +1 -0
  86. package/dist/esm/transactions.d.ts +10 -1
  87. package/dist/esm/transactions.js +20 -13
  88. package/dist/esm/transactions.js.map +1 -1
  89. package/dist/esm/types.d.ts +13 -0
  90. package/package.json +3 -4
  91. package/src/collection.ts +152 -129
  92. package/src/index.ts +0 -1
  93. package/src/query/builder/functions.ts +267 -0
  94. package/src/query/builder/index.ts +648 -0
  95. package/src/query/builder/ref-proxy.ts +156 -0
  96. package/src/query/builder/types.ts +282 -0
  97. package/src/query/compiler/evaluators.ts +315 -0
  98. package/src/query/compiler/group-by.ts +428 -0
  99. package/src/query/compiler/index.ts +276 -0
  100. package/src/query/compiler/joins.ts +228 -0
  101. package/src/query/compiler/order-by.ts +139 -0
  102. package/src/query/compiler/select.ts +173 -0
  103. package/src/query/index.ts +54 -5
  104. package/src/query/ir.ts +128 -0
  105. package/src/query/live-query-collection.ts +512 -0
  106. package/src/transactions.ts +27 -16
  107. package/src/types.ts +15 -0
  108. package/dist/cjs/query/compiled-query.cjs +0 -160
  109. package/dist/cjs/query/compiled-query.cjs.map +0 -1
  110. package/dist/cjs/query/compiled-query.d.cts +0 -20
  111. package/dist/cjs/query/evaluators.cjs +0 -161
  112. package/dist/cjs/query/evaluators.cjs.map +0 -1
  113. package/dist/cjs/query/evaluators.d.cts +0 -14
  114. package/dist/cjs/query/extractors.cjs +0 -122
  115. package/dist/cjs/query/extractors.cjs.map +0 -1
  116. package/dist/cjs/query/extractors.d.cts +0 -22
  117. package/dist/cjs/query/functions.cjs +0 -152
  118. package/dist/cjs/query/functions.cjs.map +0 -1
  119. package/dist/cjs/query/functions.d.cts +0 -21
  120. package/dist/cjs/query/group-by.cjs +0 -88
  121. package/dist/cjs/query/group-by.cjs.map +0 -1
  122. package/dist/cjs/query/group-by.d.cts +0 -40
  123. package/dist/cjs/query/joins.cjs +0 -141
  124. package/dist/cjs/query/joins.cjs.map +0 -1
  125. package/dist/cjs/query/joins.d.cts +0 -14
  126. package/dist/cjs/query/order-by.cjs +0 -185
  127. package/dist/cjs/query/order-by.cjs.map +0 -1
  128. package/dist/cjs/query/order-by.d.cts +0 -3
  129. package/dist/cjs/query/pipeline-compiler.cjs +0 -89
  130. package/dist/cjs/query/pipeline-compiler.cjs.map +0 -1
  131. package/dist/cjs/query/pipeline-compiler.d.cts +0 -10
  132. package/dist/cjs/query/query-builder.cjs +0 -307
  133. package/dist/cjs/query/query-builder.cjs.map +0 -1
  134. package/dist/cjs/query/query-builder.d.cts +0 -225
  135. package/dist/cjs/query/schema.d.cts +0 -100
  136. package/dist/cjs/query/select.cjs +0 -130
  137. package/dist/cjs/query/select.cjs.map +0 -1
  138. package/dist/cjs/query/select.d.cts +0 -3
  139. package/dist/cjs/query/types.d.cts +0 -189
  140. package/dist/cjs/query/utils.cjs +0 -154
  141. package/dist/cjs/query/utils.cjs.map +0 -1
  142. package/dist/cjs/query/utils.d.cts +0 -37
  143. package/dist/cjs/utils.cjs +0 -17
  144. package/dist/cjs/utils.cjs.map +0 -1
  145. package/dist/cjs/utils.d.cts +0 -3
  146. package/dist/esm/query/compiled-query.d.ts +0 -20
  147. package/dist/esm/query/compiled-query.js +0 -160
  148. package/dist/esm/query/compiled-query.js.map +0 -1
  149. package/dist/esm/query/evaluators.d.ts +0 -14
  150. package/dist/esm/query/evaluators.js +0 -161
  151. package/dist/esm/query/evaluators.js.map +0 -1
  152. package/dist/esm/query/extractors.d.ts +0 -22
  153. package/dist/esm/query/extractors.js +0 -122
  154. package/dist/esm/query/extractors.js.map +0 -1
  155. package/dist/esm/query/functions.d.ts +0 -21
  156. package/dist/esm/query/functions.js +0 -152
  157. package/dist/esm/query/functions.js.map +0 -1
  158. package/dist/esm/query/group-by.d.ts +0 -40
  159. package/dist/esm/query/group-by.js +0 -88
  160. package/dist/esm/query/group-by.js.map +0 -1
  161. package/dist/esm/query/joins.d.ts +0 -14
  162. package/dist/esm/query/joins.js +0 -141
  163. package/dist/esm/query/joins.js.map +0 -1
  164. package/dist/esm/query/order-by.d.ts +0 -3
  165. package/dist/esm/query/order-by.js +0 -185
  166. package/dist/esm/query/order-by.js.map +0 -1
  167. package/dist/esm/query/pipeline-compiler.d.ts +0 -10
  168. package/dist/esm/query/pipeline-compiler.js +0 -89
  169. package/dist/esm/query/pipeline-compiler.js.map +0 -1
  170. package/dist/esm/query/query-builder.d.ts +0 -225
  171. package/dist/esm/query/query-builder.js +0 -307
  172. package/dist/esm/query/query-builder.js.map +0 -1
  173. package/dist/esm/query/schema.d.ts +0 -100
  174. package/dist/esm/query/select.d.ts +0 -3
  175. package/dist/esm/query/select.js +0 -130
  176. package/dist/esm/query/select.js.map +0 -1
  177. package/dist/esm/query/types.d.ts +0 -189
  178. package/dist/esm/query/utils.d.ts +0 -37
  179. package/dist/esm/query/utils.js +0 -154
  180. package/dist/esm/query/utils.js.map +0 -1
  181. package/dist/esm/utils.d.ts +0 -3
  182. package/dist/esm/utils.js +0 -17
  183. package/dist/esm/utils.js.map +0 -1
  184. package/src/query/compiled-query.ts +0 -234
  185. package/src/query/evaluators.ts +0 -250
  186. package/src/query/extractors.ts +0 -214
  187. package/src/query/functions.ts +0 -297
  188. package/src/query/group-by.ts +0 -139
  189. package/src/query/joins.ts +0 -260
  190. package/src/query/order-by.ts +0 -264
  191. package/src/query/pipeline-compiler.ts +0 -149
  192. package/src/query/query-builder.ts +0 -902
  193. package/src/query/schema.ts +0 -268
  194. package/src/query/select.ts +0 -208
  195. package/src/query/types.ts +0 -418
  196. package/src/query/utils.ts +0 -245
  197. package/src/utils.ts +0 -15
@@ -0,0 +1,267 @@
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
+
6
+ // Helper type for any expression-like value
7
+ type ExpressionLike = BasicExpression | RefProxy<any> | any
8
+
9
+ // Operators
10
+
11
+ export function eq<T>(
12
+ left: RefProxy<T>,
13
+ right: T | RefProxy<T> | BasicExpression<T>
14
+ ): BasicExpression<boolean>
15
+ export function eq<T extends string | number | boolean>(
16
+ left: T | BasicExpression<T>,
17
+ right: T | BasicExpression<T>
18
+ ): BasicExpression<boolean>
19
+ export function eq<T>(left: Aggregate<T>, right: any): BasicExpression<boolean>
20
+ export function eq(left: any, right: any): BasicExpression<boolean> {
21
+ return new Func(`eq`, [toExpression(left), toExpression(right)])
22
+ }
23
+
24
+ export function gt<T>(
25
+ left: RefProxy<T>,
26
+ right: T | RefProxy<T> | BasicExpression<T>
27
+ ): BasicExpression<boolean>
28
+ export function gt<T extends string | number>(
29
+ left: T | BasicExpression<T>,
30
+ right: T | BasicExpression<T>
31
+ ): BasicExpression<boolean>
32
+ export function gt<T>(left: Aggregate<T>, right: any): BasicExpression<boolean>
33
+ export function gt(left: any, right: any): BasicExpression<boolean> {
34
+ return new Func(`gt`, [toExpression(left), toExpression(right)])
35
+ }
36
+
37
+ export function gte<T>(
38
+ left: RefProxy<T>,
39
+ right: T | RefProxy<T> | BasicExpression<T>
40
+ ): BasicExpression<boolean>
41
+ export function gte<T extends string | number>(
42
+ left: T | BasicExpression<T>,
43
+ right: T | BasicExpression<T>
44
+ ): BasicExpression<boolean>
45
+ export function gte<T>(left: Aggregate<T>, right: any): BasicExpression<boolean>
46
+ export function gte(left: any, right: any): BasicExpression<boolean> {
47
+ return new Func(`gte`, [toExpression(left), toExpression(right)])
48
+ }
49
+
50
+ export function lt<T>(
51
+ left: RefProxy<T>,
52
+ right: T | RefProxy<T> | BasicExpression<T>
53
+ ): BasicExpression<boolean>
54
+ export function lt<T extends string | number>(
55
+ left: T | BasicExpression<T>,
56
+ right: T | BasicExpression<T>
57
+ ): BasicExpression<boolean>
58
+ export function lt<T>(left: Aggregate<T>, right: any): BasicExpression<boolean>
59
+ export function lt(left: any, right: any): BasicExpression<boolean> {
60
+ return new Func(`lt`, [toExpression(left), toExpression(right)])
61
+ }
62
+
63
+ export function lte<T>(
64
+ left: RefProxy<T>,
65
+ right: T | RefProxy<T> | BasicExpression<T>
66
+ ): BasicExpression<boolean>
67
+ export function lte<T extends string | number>(
68
+ left: T | BasicExpression<T>,
69
+ right: T | BasicExpression<T>
70
+ ): BasicExpression<boolean>
71
+ export function lte<T>(left: Aggregate<T>, right: any): BasicExpression<boolean>
72
+ export function lte(left: any, right: any): BasicExpression<boolean> {
73
+ return new Func(`lte`, [toExpression(left), toExpression(right)])
74
+ }
75
+
76
+ // Overloads for and() - support 2 or more arguments
77
+ export function and(
78
+ left: ExpressionLike,
79
+ right: ExpressionLike
80
+ ): BasicExpression<boolean>
81
+ export function and(
82
+ left: ExpressionLike,
83
+ right: ExpressionLike,
84
+ ...rest: Array<ExpressionLike>
85
+ ): BasicExpression<boolean>
86
+ export function and(
87
+ left: ExpressionLike,
88
+ right: ExpressionLike,
89
+ ...rest: Array<ExpressionLike>
90
+ ): BasicExpression<boolean> {
91
+ const allArgs = [left, right, ...rest]
92
+ return new Func(
93
+ `and`,
94
+ allArgs.map((arg) => toExpression(arg))
95
+ )
96
+ }
97
+
98
+ // Overloads for or() - support 2 or more arguments
99
+ export function or(
100
+ left: ExpressionLike,
101
+ right: ExpressionLike
102
+ ): BasicExpression<boolean>
103
+ export function or(
104
+ left: ExpressionLike,
105
+ right: ExpressionLike,
106
+ ...rest: Array<ExpressionLike>
107
+ ): BasicExpression<boolean>
108
+ export function or(
109
+ left: ExpressionLike,
110
+ right: ExpressionLike,
111
+ ...rest: Array<ExpressionLike>
112
+ ): BasicExpression<boolean> {
113
+ const allArgs = [left, right, ...rest]
114
+ return new Func(
115
+ `or`,
116
+ allArgs.map((arg) => toExpression(arg))
117
+ )
118
+ }
119
+
120
+ export function not(value: ExpressionLike): BasicExpression<boolean> {
121
+ return new Func(`not`, [toExpression(value)])
122
+ }
123
+
124
+ export function inArray(
125
+ value: ExpressionLike,
126
+ array: ExpressionLike
127
+ ): BasicExpression<boolean> {
128
+ return new Func(`in`, [toExpression(value), toExpression(array)])
129
+ }
130
+
131
+ export function like(
132
+ left:
133
+ | RefProxy<string>
134
+ | RefProxy<string | null>
135
+ | RefProxy<string | undefined>
136
+ | string
137
+ | BasicExpression<string>,
138
+ right: string | RefProxy<string> | BasicExpression<string>
139
+ ): BasicExpression<boolean>
140
+ export function like(left: any, right: any): BasicExpression<boolean> {
141
+ return new Func(`like`, [toExpression(left), toExpression(right)])
142
+ }
143
+
144
+ export function ilike(
145
+ left:
146
+ | RefProxy<string>
147
+ | RefProxy<string | null>
148
+ | RefProxy<string | undefined>
149
+ | string
150
+ | BasicExpression<string>,
151
+ right: string | RefProxy<string> | BasicExpression<string>
152
+ ): BasicExpression<boolean> {
153
+ return new Func(`ilike`, [toExpression(left), toExpression(right)])
154
+ }
155
+
156
+ // Functions
157
+
158
+ export function upper(
159
+ arg:
160
+ | RefProxy<string>
161
+ | RefProxy<string | undefined>
162
+ | string
163
+ | BasicExpression<string>
164
+ ): BasicExpression<string> {
165
+ return new Func(`upper`, [toExpression(arg)])
166
+ }
167
+
168
+ export function lower(
169
+ arg:
170
+ | RefProxy<string>
171
+ | RefProxy<string | undefined>
172
+ | string
173
+ | BasicExpression<string>
174
+ ): BasicExpression<string> {
175
+ return new Func(`lower`, [toExpression(arg)])
176
+ }
177
+
178
+ export function length(
179
+ arg:
180
+ | RefProxy<string>
181
+ | RefProxy<string | undefined>
182
+ | RefProxy<Array<any>>
183
+ | RefProxy<Array<any> | undefined>
184
+ | string
185
+ | Array<any>
186
+ | BasicExpression<string>
187
+ | BasicExpression<Array<any>>
188
+ ): BasicExpression<number> {
189
+ return new Func(`length`, [toExpression(arg)])
190
+ }
191
+
192
+ export function concat(
193
+ ...args: Array<ExpressionLike>
194
+ ): BasicExpression<string> {
195
+ return new Func(
196
+ `concat`,
197
+ args.map((arg) => toExpression(arg))
198
+ )
199
+ }
200
+
201
+ export function coalesce(...args: Array<ExpressionLike>): BasicExpression<any> {
202
+ return new Func(
203
+ `coalesce`,
204
+ args.map((arg) => toExpression(arg))
205
+ )
206
+ }
207
+
208
+ export function add(
209
+ left:
210
+ | RefProxy<number>
211
+ | RefProxy<number | undefined>
212
+ | number
213
+ | BasicExpression<number>,
214
+ right:
215
+ | RefProxy<number>
216
+ | RefProxy<number | undefined>
217
+ | number
218
+ | BasicExpression<number>
219
+ ): BasicExpression<number> {
220
+ return new Func(`add`, [toExpression(left), toExpression(right)])
221
+ }
222
+
223
+ // Aggregates
224
+
225
+ export function count(arg: ExpressionLike): Aggregate<number> {
226
+ return new Aggregate(`count`, [toExpression(arg)])
227
+ }
228
+
229
+ export function avg(
230
+ arg:
231
+ | RefProxy<number>
232
+ | RefProxy<number | undefined>
233
+ | number
234
+ | BasicExpression<number>
235
+ ): Aggregate<number> {
236
+ return new Aggregate(`avg`, [toExpression(arg)])
237
+ }
238
+
239
+ export function sum(
240
+ arg:
241
+ | RefProxy<number>
242
+ | RefProxy<number | undefined>
243
+ | number
244
+ | BasicExpression<number>
245
+ ): Aggregate<number> {
246
+ return new Aggregate(`sum`, [toExpression(arg)])
247
+ }
248
+
249
+ export function min(
250
+ arg:
251
+ | RefProxy<number>
252
+ | RefProxy<number | undefined>
253
+ | number
254
+ | BasicExpression<number>
255
+ ): Aggregate<number> {
256
+ return new Aggregate(`min`, [toExpression(arg)])
257
+ }
258
+
259
+ export function max(
260
+ arg:
261
+ | RefProxy<number>
262
+ | RefProxy<number | undefined>
263
+ | number
264
+ | BasicExpression<number>
265
+ ): Aggregate<number> {
266
+ return new Aggregate(`max`, [toExpression(arg)])
267
+ }