@tanstack/db 0.0.13 → 0.0.15

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 (198) 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 +19 -22
  4. package/dist/cjs/index.cjs +35 -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 +96 -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 +80 -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 +6 -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 +13 -4
  45. package/dist/cjs/types.d.cts +14 -1
  46. package/dist/esm/collection.d.ts +19 -22
  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 +34 -12
  51. package/dist/esm/index.js.map +1 -1
  52. package/dist/esm/query/builder/functions.d.ts +38 -0
  53. package/dist/esm/query/builder/functions.js +107 -0
  54. package/dist/esm/query/builder/functions.js.map +1 -0
  55. package/dist/esm/query/builder/index.d.ts +324 -0
  56. package/dist/esm/query/builder/index.js +499 -0
  57. package/dist/esm/query/builder/index.js.map +1 -0
  58. package/dist/esm/query/builder/ref-proxy.d.ts +28 -0
  59. package/dist/esm/query/builder/ref-proxy.js +96 -0
  60. package/dist/esm/query/builder/ref-proxy.js.map +1 -0
  61. package/dist/esm/query/builder/types.d.ts +80 -0
  62. package/dist/esm/query/compiler/evaluators.d.ts +11 -0
  63. package/dist/esm/query/compiler/evaluators.js +261 -0
  64. package/dist/esm/query/compiler/evaluators.js.map +1 -0
  65. package/dist/esm/query/compiler/group-by.d.ts +7 -0
  66. package/dist/esm/query/compiler/group-by.js +271 -0
  67. package/dist/esm/query/compiler/group-by.js.map +1 -0
  68. package/dist/esm/query/compiler/index.d.ts +15 -0
  69. package/dist/esm/query/compiler/index.js +181 -0
  70. package/dist/esm/query/compiler/index.js.map +1 -0
  71. package/dist/esm/query/compiler/joins.d.ts +11 -0
  72. package/dist/esm/query/compiler/joins.js +116 -0
  73. package/dist/esm/query/compiler/joins.js.map +1 -0
  74. package/dist/esm/query/compiler/order-by.d.ts +9 -0
  75. package/dist/esm/query/compiler/order-by.js +89 -0
  76. package/dist/esm/query/compiler/order-by.js.map +1 -0
  77. package/dist/esm/query/compiler/select.d.ts +15 -0
  78. package/dist/esm/query/compiler/select.js +57 -0
  79. package/dist/esm/query/compiler/select.js.map +1 -0
  80. package/dist/esm/query/index.d.ts +6 -5
  81. package/dist/esm/query/ir.d.ts +81 -0
  82. package/dist/esm/query/ir.js +57 -0
  83. package/dist/esm/query/ir.js.map +1 -0
  84. package/dist/esm/query/live-query-collection.d.ts +124 -0
  85. package/dist/esm/query/live-query-collection.js +224 -0
  86. package/dist/esm/query/live-query-collection.js.map +1 -0
  87. package/dist/esm/transactions.d.ts +13 -4
  88. package/dist/esm/transactions.js +20 -13
  89. package/dist/esm/transactions.js.map +1 -1
  90. package/dist/esm/types.d.ts +14 -1
  91. package/package.json +3 -4
  92. package/src/collection.ts +152 -129
  93. package/src/index.ts +0 -1
  94. package/src/query/builder/functions.ts +267 -0
  95. package/src/query/builder/index.ts +648 -0
  96. package/src/query/builder/ref-proxy.ts +156 -0
  97. package/src/query/builder/types.ts +278 -0
  98. package/src/query/compiler/evaluators.ts +315 -0
  99. package/src/query/compiler/group-by.ts +428 -0
  100. package/src/query/compiler/index.ts +276 -0
  101. package/src/query/compiler/joins.ts +228 -0
  102. package/src/query/compiler/order-by.ts +139 -0
  103. package/src/query/compiler/select.ts +173 -0
  104. package/src/query/index.ts +64 -5
  105. package/src/query/ir.ts +128 -0
  106. package/src/query/live-query-collection.ts +509 -0
  107. package/src/transactions.ts +34 -19
  108. package/src/types.ts +16 -1
  109. package/dist/cjs/query/compiled-query.cjs +0 -160
  110. package/dist/cjs/query/compiled-query.cjs.map +0 -1
  111. package/dist/cjs/query/compiled-query.d.cts +0 -20
  112. package/dist/cjs/query/evaluators.cjs +0 -161
  113. package/dist/cjs/query/evaluators.cjs.map +0 -1
  114. package/dist/cjs/query/evaluators.d.cts +0 -14
  115. package/dist/cjs/query/extractors.cjs +0 -122
  116. package/dist/cjs/query/extractors.cjs.map +0 -1
  117. package/dist/cjs/query/extractors.d.cts +0 -22
  118. package/dist/cjs/query/functions.cjs +0 -152
  119. package/dist/cjs/query/functions.cjs.map +0 -1
  120. package/dist/cjs/query/functions.d.cts +0 -21
  121. package/dist/cjs/query/group-by.cjs +0 -88
  122. package/dist/cjs/query/group-by.cjs.map +0 -1
  123. package/dist/cjs/query/group-by.d.cts +0 -40
  124. package/dist/cjs/query/joins.cjs +0 -141
  125. package/dist/cjs/query/joins.cjs.map +0 -1
  126. package/dist/cjs/query/joins.d.cts +0 -14
  127. package/dist/cjs/query/order-by.cjs +0 -185
  128. package/dist/cjs/query/order-by.cjs.map +0 -1
  129. package/dist/cjs/query/order-by.d.cts +0 -3
  130. package/dist/cjs/query/pipeline-compiler.cjs +0 -89
  131. package/dist/cjs/query/pipeline-compiler.cjs.map +0 -1
  132. package/dist/cjs/query/pipeline-compiler.d.cts +0 -10
  133. package/dist/cjs/query/query-builder.cjs +0 -307
  134. package/dist/cjs/query/query-builder.cjs.map +0 -1
  135. package/dist/cjs/query/query-builder.d.cts +0 -225
  136. package/dist/cjs/query/schema.d.cts +0 -100
  137. package/dist/cjs/query/select.cjs +0 -130
  138. package/dist/cjs/query/select.cjs.map +0 -1
  139. package/dist/cjs/query/select.d.cts +0 -3
  140. package/dist/cjs/query/types.d.cts +0 -189
  141. package/dist/cjs/query/utils.cjs +0 -154
  142. package/dist/cjs/query/utils.cjs.map +0 -1
  143. package/dist/cjs/query/utils.d.cts +0 -37
  144. package/dist/cjs/utils.cjs +0 -17
  145. package/dist/cjs/utils.cjs.map +0 -1
  146. package/dist/cjs/utils.d.cts +0 -3
  147. package/dist/esm/query/compiled-query.d.ts +0 -20
  148. package/dist/esm/query/compiled-query.js +0 -160
  149. package/dist/esm/query/compiled-query.js.map +0 -1
  150. package/dist/esm/query/evaluators.d.ts +0 -14
  151. package/dist/esm/query/evaluators.js +0 -161
  152. package/dist/esm/query/evaluators.js.map +0 -1
  153. package/dist/esm/query/extractors.d.ts +0 -22
  154. package/dist/esm/query/extractors.js +0 -122
  155. package/dist/esm/query/extractors.js.map +0 -1
  156. package/dist/esm/query/functions.d.ts +0 -21
  157. package/dist/esm/query/functions.js +0 -152
  158. package/dist/esm/query/functions.js.map +0 -1
  159. package/dist/esm/query/group-by.d.ts +0 -40
  160. package/dist/esm/query/group-by.js +0 -88
  161. package/dist/esm/query/group-by.js.map +0 -1
  162. package/dist/esm/query/joins.d.ts +0 -14
  163. package/dist/esm/query/joins.js +0 -141
  164. package/dist/esm/query/joins.js.map +0 -1
  165. package/dist/esm/query/order-by.d.ts +0 -3
  166. package/dist/esm/query/order-by.js +0 -185
  167. package/dist/esm/query/order-by.js.map +0 -1
  168. package/dist/esm/query/pipeline-compiler.d.ts +0 -10
  169. package/dist/esm/query/pipeline-compiler.js +0 -89
  170. package/dist/esm/query/pipeline-compiler.js.map +0 -1
  171. package/dist/esm/query/query-builder.d.ts +0 -225
  172. package/dist/esm/query/query-builder.js +0 -307
  173. package/dist/esm/query/query-builder.js.map +0 -1
  174. package/dist/esm/query/schema.d.ts +0 -100
  175. package/dist/esm/query/select.d.ts +0 -3
  176. package/dist/esm/query/select.js +0 -130
  177. package/dist/esm/query/select.js.map +0 -1
  178. package/dist/esm/query/types.d.ts +0 -189
  179. package/dist/esm/query/utils.d.ts +0 -37
  180. package/dist/esm/query/utils.js +0 -154
  181. package/dist/esm/query/utils.js.map +0 -1
  182. package/dist/esm/utils.d.ts +0 -3
  183. package/dist/esm/utils.js +0 -17
  184. package/dist/esm/utils.js.map +0 -1
  185. package/src/query/compiled-query.ts +0 -234
  186. package/src/query/evaluators.ts +0 -250
  187. package/src/query/extractors.ts +0 -214
  188. package/src/query/functions.ts +0 -297
  189. package/src/query/group-by.ts +0 -139
  190. package/src/query/joins.ts +0 -260
  191. package/src/query/order-by.ts +0 -264
  192. package/src/query/pipeline-compiler.ts +0 -149
  193. package/src/query/query-builder.ts +0 -902
  194. package/src/query/schema.ts +0 -268
  195. package/src/query/select.ts +0 -208
  196. package/src/query/types.ts +0 -418
  197. package/src/query/utils.ts +0 -245
  198. 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
+ }