@minnowdb/core 0.1.0 → 0.1.1
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/README.md +29 -18
- package/package.json +1 -1
- package/dist/engine/dsl/db.d.ts +0 -137
- package/dist/engine/dsl/db.d.ts.map +0 -1
- package/dist/engine/dsl/db.js +0 -161
- package/dist/engine/dsl/db.js.map +0 -1
- package/dist/engine/dsl/expression.d.ts +0 -172
- package/dist/engine/dsl/expression.d.ts.map +0 -1
- package/dist/engine/dsl/expression.js +0 -397
- package/dist/engine/dsl/expression.js.map +0 -1
- package/dist/engine/dsl/index.d.ts +0 -8
- package/dist/engine/dsl/index.d.ts.map +0 -1
- package/dist/engine/dsl/index.js +0 -7
- package/dist/engine/dsl/index.js.map +0 -1
- package/dist/engine/dsl/live-query.d.ts +0 -45
- package/dist/engine/dsl/live-query.d.ts.map +0 -1
- package/dist/engine/dsl/live-query.js +0 -116
- package/dist/engine/dsl/live-query.js.map +0 -1
- package/dist/engine/dsl/mutations.d.ts +0 -123
- package/dist/engine/dsl/mutations.d.ts.map +0 -1
- package/dist/engine/dsl/mutations.js +0 -241
- package/dist/engine/dsl/mutations.js.map +0 -1
- package/dist/engine/dsl/select-query-builder.d.ts +0 -148
- package/dist/engine/dsl/select-query-builder.d.ts.map +0 -1
- package/dist/engine/dsl/select-query-builder.js +0 -377
- package/dist/engine/dsl/select-query-builder.js.map +0 -1
- package/dist/engine/dsl/sql-tag.d.ts +0 -46
- package/dist/engine/dsl/sql-tag.d.ts.map +0 -1
- package/dist/engine/dsl/sql-tag.js +0 -85
- package/dist/engine/dsl/sql-tag.js.map +0 -1
- package/dist/engine/dsl/types.d.ts +0 -133
- package/dist/engine/dsl/types.d.ts.map +0 -1
- package/dist/engine/dsl/types.js +0 -9
- package/dist/engine/dsl/types.js.map +0 -1
|
@@ -1,397 +0,0 @@
|
|
|
1
|
-
import { validateFtsQuery } from "../fts.js";
|
|
2
|
-
import { hasAggregate, } from "../query.js";
|
|
3
|
-
import { isBlockCompilable, materialize, } from "./types.js";
|
|
4
|
-
const comparisonTokens = new Set(["=", "!=", "<>", ">", ">=", "<", "<="]);
|
|
5
|
-
const arithmeticTokens = new Set(["+", "-", "*", "/"]);
|
|
6
|
-
export class ExpressionWrapper {
|
|
7
|
-
source;
|
|
8
|
-
kind = "dsl-expression";
|
|
9
|
-
constructor(source) {
|
|
10
|
-
this.source = source;
|
|
11
|
-
}
|
|
12
|
-
/** Names this expression's output column, as SQL `AS alias` does. */
|
|
13
|
-
as(alias) {
|
|
14
|
-
return { kind: "aliased-expression", alias, source: this.source };
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
export function isExpressionWrapper(value) {
|
|
18
|
-
return value instanceof ExpressionWrapper;
|
|
19
|
-
}
|
|
20
|
-
// --- Operand resolution -------------------------------------------------------------------------
|
|
21
|
-
export function literalExpression(value) {
|
|
22
|
-
if (value === null ||
|
|
23
|
-
typeof value === "boolean" ||
|
|
24
|
-
typeof value === "number" ||
|
|
25
|
-
typeof value === "string" ||
|
|
26
|
-
value instanceof Date) {
|
|
27
|
-
if (typeof value === "number" && !Number.isFinite(value)) {
|
|
28
|
-
throw new TypeError("Query literals must be finite numbers");
|
|
29
|
-
}
|
|
30
|
-
return { kind: "literal", value };
|
|
31
|
-
}
|
|
32
|
-
throw new TypeError(`Unsupported query literal of type ${typeof value}`);
|
|
33
|
-
}
|
|
34
|
-
function subquerySource(builder) {
|
|
35
|
-
return (context) => ({ kind: "subquery", block: builder.compileBlock(context, "(subquery)") });
|
|
36
|
-
}
|
|
37
|
-
/** Left-hand sides treat strings as column references. */
|
|
38
|
-
function operandAsRef(value) {
|
|
39
|
-
if (isExpressionWrapper(value))
|
|
40
|
-
return value.source;
|
|
41
|
-
if (isBlockCompilable(value))
|
|
42
|
-
return subquerySource(value);
|
|
43
|
-
if (typeof value === "string")
|
|
44
|
-
return { kind: "column", reference: value };
|
|
45
|
-
return literalExpression(value);
|
|
46
|
-
}
|
|
47
|
-
/** Right-hand sides treat strings as values. */
|
|
48
|
-
function operandAsValue(value) {
|
|
49
|
-
if (isExpressionWrapper(value))
|
|
50
|
-
return value.source;
|
|
51
|
-
if (isBlockCompilable(value))
|
|
52
|
-
return subquerySource(value);
|
|
53
|
-
return literalExpression(value);
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* Builds eagerly when every child is concrete, deferring only when a child needs the compile
|
|
57
|
-
* context. The builder receives a bounds-checked accessor over the materialized children.
|
|
58
|
-
*/
|
|
59
|
-
function combineSources(sources, build) {
|
|
60
|
-
const buildFrom = (expressions) => build((index) => {
|
|
61
|
-
const expression = expressions[index];
|
|
62
|
-
if (expression === undefined) {
|
|
63
|
-
throw new TypeError(`Expression child ${String(index)} is missing`);
|
|
64
|
-
}
|
|
65
|
-
return expression;
|
|
66
|
-
});
|
|
67
|
-
if (sources.every((source) => typeof source !== "function")) {
|
|
68
|
-
return buildFrom(sources);
|
|
69
|
-
}
|
|
70
|
-
return (context) => buildFrom(sources.map((source) => materialize(source, context)));
|
|
71
|
-
}
|
|
72
|
-
/** Shared with the query builders: `lhs op rhs` where lhs is a reference and rhs a value. */
|
|
73
|
-
export function buildBinaryCondition(lhs, operator, rhs) {
|
|
74
|
-
if (comparisonTokens.has(operator)) {
|
|
75
|
-
return combineSources([operandAsRef(lhs), operandAsValue(rhs)], (expressionAt) => ({
|
|
76
|
-
kind: "condition",
|
|
77
|
-
operator: operator,
|
|
78
|
-
left: expressionAt(0),
|
|
79
|
-
right: expressionAt(1),
|
|
80
|
-
}));
|
|
81
|
-
}
|
|
82
|
-
if (arithmeticTokens.has(operator)) {
|
|
83
|
-
return combineSources([operandAsRef(lhs), operandAsValue(rhs)], (expressionAt) => ({
|
|
84
|
-
kind: "binary",
|
|
85
|
-
operator: operator,
|
|
86
|
-
left: expressionAt(0),
|
|
87
|
-
right: expressionAt(1),
|
|
88
|
-
}));
|
|
89
|
-
}
|
|
90
|
-
if (operator === "like" || operator === "not like") {
|
|
91
|
-
return combineSources([operandAsRef(lhs), operandAsValue(rhs)], (expressionAt) => ({
|
|
92
|
-
kind: "condition",
|
|
93
|
-
operator: operator === "like" ? "LIKE" : "NOT LIKE",
|
|
94
|
-
left: expressionAt(0),
|
|
95
|
-
right: expressionAt(1),
|
|
96
|
-
}));
|
|
97
|
-
}
|
|
98
|
-
if (operator === "in" || operator === "not in") {
|
|
99
|
-
const conditionOperator = operator === "in" ? "IN" : "NOT IN";
|
|
100
|
-
if (isBlockCompilable(rhs)) {
|
|
101
|
-
return combineSources([operandAsRef(lhs), subquerySource(rhs)], (expressionAt) => ({
|
|
102
|
-
kind: "condition",
|
|
103
|
-
operator: conditionOperator,
|
|
104
|
-
left: expressionAt(0),
|
|
105
|
-
right: expressionAt(1),
|
|
106
|
-
}));
|
|
107
|
-
}
|
|
108
|
-
if (!Array.isArray(rhs)) {
|
|
109
|
-
throw new TypeError(`${operator} requires an array of values or a subquery`);
|
|
110
|
-
}
|
|
111
|
-
const items = rhs.map(operandAsValue);
|
|
112
|
-
return combineSources([operandAsRef(lhs), ...items], (expressionAt) => ({
|
|
113
|
-
kind: "condition",
|
|
114
|
-
operator: conditionOperator,
|
|
115
|
-
left: expressionAt(0),
|
|
116
|
-
right: { kind: "list", items: items.map((_, index) => expressionAt(index + 1)) },
|
|
117
|
-
}));
|
|
118
|
-
}
|
|
119
|
-
if (operator === "is" || operator === "is not") {
|
|
120
|
-
if (rhs !== null)
|
|
121
|
-
throw new TypeError(`${operator} only supports null`);
|
|
122
|
-
return combineSources([operandAsRef(lhs)], (expressionAt) => ({
|
|
123
|
-
kind: "condition",
|
|
124
|
-
operator: operator === "is" ? "IS NULL" : "IS NOT NULL",
|
|
125
|
-
left: expressionAt(0),
|
|
126
|
-
right: { kind: "literal", value: null },
|
|
127
|
-
}));
|
|
128
|
-
}
|
|
129
|
-
throw new TypeError(`Unsupported operator: ${operator}`);
|
|
130
|
-
}
|
|
131
|
-
export class OverBuilder {
|
|
132
|
-
state;
|
|
133
|
-
constructor(state = { partitionBy: [], orderBy: [] }) {
|
|
134
|
-
this.state = state;
|
|
135
|
-
}
|
|
136
|
-
partitionBy(...references) {
|
|
137
|
-
return new OverBuilder({
|
|
138
|
-
...this.state,
|
|
139
|
-
partitionBy: [...this.state.partitionBy, ...references.map(operandAsRef)],
|
|
140
|
-
});
|
|
141
|
-
}
|
|
142
|
-
orderBy(reference, direction = "asc") {
|
|
143
|
-
return new OverBuilder({
|
|
144
|
-
...this.state,
|
|
145
|
-
orderBy: [...this.state.orderBy, { source: operandAsRef(reference), direction }],
|
|
146
|
-
});
|
|
147
|
-
}
|
|
148
|
-
/** @internal */
|
|
149
|
-
get clause() {
|
|
150
|
-
return this.state;
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
function windowSource(name, over, argument) {
|
|
154
|
-
const children = [
|
|
155
|
-
...over.partitionBy,
|
|
156
|
-
...over.orderBy.map(({ source }) => source),
|
|
157
|
-
...(argument === undefined ? [] : [argument]),
|
|
158
|
-
];
|
|
159
|
-
return combineSources(children, (expressionAt) => {
|
|
160
|
-
const partitionBy = over.partitionBy.map((_, index) => expressionAt(index));
|
|
161
|
-
const orderBy = over.orderBy.map(({ direction }, index) => ({
|
|
162
|
-
expression: expressionAt(over.partitionBy.length + index),
|
|
163
|
-
direction,
|
|
164
|
-
}));
|
|
165
|
-
const argumentExpression = argument === undefined ? undefined : expressionAt(children.length - 1);
|
|
166
|
-
if (argumentExpression !== undefined && hasAggregate(argumentExpression)) {
|
|
167
|
-
throw new TypeError("Window aggregate arguments cannot contain aggregates");
|
|
168
|
-
}
|
|
169
|
-
return {
|
|
170
|
-
kind: "window",
|
|
171
|
-
name,
|
|
172
|
-
partitionBy,
|
|
173
|
-
orderBy,
|
|
174
|
-
...(argumentExpression === undefined || argumentExpression.kind === "wildcard"
|
|
175
|
-
? {}
|
|
176
|
-
: { argument: argumentExpression }),
|
|
177
|
-
};
|
|
178
|
-
});
|
|
179
|
-
}
|
|
180
|
-
function overClauseOf(configure) {
|
|
181
|
-
return configure === undefined
|
|
182
|
-
? { partitionBy: [], orderBy: [] }
|
|
183
|
-
: configure(new OverBuilder()).clause;
|
|
184
|
-
}
|
|
185
|
-
/** A ranking window function; SQL requires OVER, so only `.over()` yields an expression. */
|
|
186
|
-
export class WindowFunctionBuilder {
|
|
187
|
-
name;
|
|
188
|
-
constructor(name) {
|
|
189
|
-
this.name = name;
|
|
190
|
-
}
|
|
191
|
-
over(configure) {
|
|
192
|
-
return new ExpressionWrapper(windowSource(this.name, overClauseOf(configure), undefined));
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
// --- Aggregate functions ------------------------------------------------------------------------
|
|
196
|
-
export class AggregateExpressionWrapper extends ExpressionWrapper {
|
|
197
|
-
name;
|
|
198
|
-
argument;
|
|
199
|
-
isDistinct;
|
|
200
|
-
constructor(name, argument, isDistinct = false) {
|
|
201
|
-
super(combineSources([argument], (expressionAt) => ({
|
|
202
|
-
kind: "call",
|
|
203
|
-
name,
|
|
204
|
-
arguments: [expressionAt(0)],
|
|
205
|
-
...(isDistinct ? { distinct: true } : {}),
|
|
206
|
-
})));
|
|
207
|
-
this.name = name;
|
|
208
|
-
this.argument = argument;
|
|
209
|
-
this.isDistinct = isDistinct;
|
|
210
|
-
}
|
|
211
|
-
/** COUNT(DISTINCT e); the engine restricts DISTINCT to COUNT over one scalar argument. */
|
|
212
|
-
distinct() {
|
|
213
|
-
if (this.name !== "COUNT")
|
|
214
|
-
throw new TypeError("DISTINCT is only supported inside COUNT");
|
|
215
|
-
if (typeof this.argument !== "function" && this.argument.kind === "wildcard") {
|
|
216
|
-
throw new TypeError("COUNT(DISTINCT) requires exactly one scalar argument");
|
|
217
|
-
}
|
|
218
|
-
return new AggregateExpressionWrapper(this.name, this.argument, true);
|
|
219
|
-
}
|
|
220
|
-
/** Turns the aggregate into a window over the given partition and ordering. */
|
|
221
|
-
over(configure) {
|
|
222
|
-
if (this.isDistinct)
|
|
223
|
-
throw new TypeError("DISTINCT window aggregates are not supported");
|
|
224
|
-
return new ExpressionWrapper(windowSource(this.name, overClauseOf(configure), typeof this.argument !== "function" && this.argument.kind === "wildcard"
|
|
225
|
-
? undefined
|
|
226
|
-
: this.argument));
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
function createFunctionModule() {
|
|
230
|
-
const aggregate = (name, argument) => new AggregateExpressionWrapper(name, operandAsRef(argument));
|
|
231
|
-
const call = (name, args) => combineSources(args, (expressionAt) => ({
|
|
232
|
-
kind: "call",
|
|
233
|
-
name,
|
|
234
|
-
arguments: args.map((_, index) => expressionAt(index)),
|
|
235
|
-
}));
|
|
236
|
-
return {
|
|
237
|
-
count: (reference) => aggregate("COUNT", reference),
|
|
238
|
-
countAll: () => new AggregateExpressionWrapper("COUNT", { kind: "wildcard" }),
|
|
239
|
-
sum: (reference) => aggregate("SUM", reference),
|
|
240
|
-
avg: (reference) => aggregate("AVG", reference),
|
|
241
|
-
min: ((reference) => aggregate("MIN", reference)),
|
|
242
|
-
max: ((reference) => aggregate("MAX", reference)),
|
|
243
|
-
round: (value, digits) => new ExpressionWrapper(call("ROUND", digits === undefined
|
|
244
|
-
? [operandAsRef(value)]
|
|
245
|
-
: [operandAsRef(value), literalExpression(digits)])),
|
|
246
|
-
coalesce: (...values) => {
|
|
247
|
-
if (values.length === 0)
|
|
248
|
-
throw new TypeError("COALESCE requires at least one argument");
|
|
249
|
-
return new ExpressionWrapper(call("COALESCE", values.map(operandAsRef)));
|
|
250
|
-
},
|
|
251
|
-
dateTrunc: (unit, value) => new ExpressionWrapper(call("DATE_TRUNC", [literalExpression(unit), operandAsRef(value)])),
|
|
252
|
-
bm25: (columns, query) => new ExpressionWrapper(buildFtsExpression("bm25", columns, query)),
|
|
253
|
-
};
|
|
254
|
-
}
|
|
255
|
-
/** Shared by eb.match and fn.bm25: validates and assembles the full-text plan node. */
|
|
256
|
-
export function buildFtsExpression(op, columns, query) {
|
|
257
|
-
if (typeof query !== "string") {
|
|
258
|
-
throw new TypeError("Full-text search requires a string query");
|
|
259
|
-
}
|
|
260
|
-
validateFtsQuery(query);
|
|
261
|
-
if (columns !== "*" && columns.length === 0) {
|
|
262
|
-
throw new TypeError("Full-text search requires at least one column");
|
|
263
|
-
}
|
|
264
|
-
return {
|
|
265
|
-
kind: "fts",
|
|
266
|
-
op,
|
|
267
|
-
columns: columns === "*"
|
|
268
|
-
? "*"
|
|
269
|
-
: columns.map((reference) => ({ kind: "column", reference })),
|
|
270
|
-
query,
|
|
271
|
-
};
|
|
272
|
-
}
|
|
273
|
-
export class CaseThenBuilder {
|
|
274
|
-
branches;
|
|
275
|
-
pendingWhen;
|
|
276
|
-
constructor(branches, pendingWhen) {
|
|
277
|
-
this.branches = branches;
|
|
278
|
-
this.pendingWhen = pendingWhen;
|
|
279
|
-
}
|
|
280
|
-
then(value) {
|
|
281
|
-
return new CaseBuilder([
|
|
282
|
-
...this.branches,
|
|
283
|
-
{ when: this.pendingWhen, then: operandAsValue(value) },
|
|
284
|
-
]);
|
|
285
|
-
}
|
|
286
|
-
}
|
|
287
|
-
export class CaseBuilder {
|
|
288
|
-
branches;
|
|
289
|
-
constructor(branches = []) {
|
|
290
|
-
this.branches = branches;
|
|
291
|
-
}
|
|
292
|
-
when(lhs, operator, rhs) {
|
|
293
|
-
const when = operator === undefined ? operandAsRef(lhs) : buildBinaryCondition(lhs, operator, rhs);
|
|
294
|
-
return new CaseThenBuilder(this.branches, when);
|
|
295
|
-
}
|
|
296
|
-
else(value) {
|
|
297
|
-
return new CaseEndBuilder(this.branches, operandAsValue(value));
|
|
298
|
-
}
|
|
299
|
-
end() {
|
|
300
|
-
return new ExpressionWrapper(buildCase(this.branches, undefined));
|
|
301
|
-
}
|
|
302
|
-
}
|
|
303
|
-
export class CaseEndBuilder {
|
|
304
|
-
branches;
|
|
305
|
-
otherwise;
|
|
306
|
-
constructor(branches, otherwise) {
|
|
307
|
-
this.branches = branches;
|
|
308
|
-
this.otherwise = otherwise;
|
|
309
|
-
}
|
|
310
|
-
end() {
|
|
311
|
-
return new ExpressionWrapper(buildCase(this.branches, this.otherwise));
|
|
312
|
-
}
|
|
313
|
-
}
|
|
314
|
-
function buildCase(branches, otherwise) {
|
|
315
|
-
if (branches.length === 0)
|
|
316
|
-
throw new TypeError("CASE requires at least one WHEN branch");
|
|
317
|
-
const sources = [
|
|
318
|
-
...branches.flatMap((branch) => [branch.when, branch.then]),
|
|
319
|
-
...(otherwise === undefined ? [] : [otherwise]),
|
|
320
|
-
];
|
|
321
|
-
return combineSources(sources, (expressionAt) => ({
|
|
322
|
-
kind: "case",
|
|
323
|
-
branches: branches.map((_, index) => ({
|
|
324
|
-
when: expressionAt(index * 2),
|
|
325
|
-
then: expressionAt(index * 2 + 1),
|
|
326
|
-
})),
|
|
327
|
-
...(otherwise === undefined ? {} : { otherwise: expressionAt(sources.length - 1) }),
|
|
328
|
-
}));
|
|
329
|
-
}
|
|
330
|
-
function foldLogical(operator, conditions) {
|
|
331
|
-
if (conditions.length === 0) {
|
|
332
|
-
throw new TypeError(`${operator}() requires at least one condition`);
|
|
333
|
-
}
|
|
334
|
-
return combineSources(conditions.map((condition) => condition.source), (expressionAt) => {
|
|
335
|
-
let folded = expressionAt(0);
|
|
336
|
-
for (let index = 1; index < conditions.length; index += 1) {
|
|
337
|
-
folded = { kind: "logical", operator, left: folded, right: expressionAt(index) };
|
|
338
|
-
}
|
|
339
|
-
return folded;
|
|
340
|
-
});
|
|
341
|
-
}
|
|
342
|
-
function betweenSource(reference, lower, upper, negated) {
|
|
343
|
-
return combineSources([operandAsRef(reference), operandAsValue(lower), operandAsValue(upper)], (expressionAt) => {
|
|
344
|
-
const range = {
|
|
345
|
-
kind: "logical",
|
|
346
|
-
operator: "and",
|
|
347
|
-
left: { kind: "condition", operator: ">=", left: expressionAt(0), right: expressionAt(1) },
|
|
348
|
-
right: {
|
|
349
|
-
kind: "condition",
|
|
350
|
-
operator: "<=",
|
|
351
|
-
left: structuredClone(expressionAt(0)),
|
|
352
|
-
right: expressionAt(2),
|
|
353
|
-
},
|
|
354
|
-
};
|
|
355
|
-
return negated ? { kind: "not", operand: range } : range;
|
|
356
|
-
});
|
|
357
|
-
}
|
|
358
|
-
/**
|
|
359
|
-
* Creates the callable expression builder. The subquery factory is injected by the select
|
|
360
|
-
* builder module, which owns both sides of that recursion.
|
|
361
|
-
*/
|
|
362
|
-
export function createExpressionBuilder(createSubquery) {
|
|
363
|
-
const callable = (lhs, operator, rhs) => new ExpressionWrapper(buildBinaryCondition(lhs, operator, rhs));
|
|
364
|
-
const members = {
|
|
365
|
-
and: (conditions) => new ExpressionWrapper(foldLogical("and", conditions)),
|
|
366
|
-
or: (conditions) => new ExpressionWrapper(foldLogical("or", conditions)),
|
|
367
|
-
not: (condition) => new ExpressionWrapper(combineSources([condition.source], (expressionAt) => ({
|
|
368
|
-
kind: "not",
|
|
369
|
-
operand: expressionAt(0),
|
|
370
|
-
}))),
|
|
371
|
-
between: (reference, lower, upper) => new ExpressionWrapper(betweenSource(reference, lower, upper, false)),
|
|
372
|
-
notBetween: (reference, lower, upper) => new ExpressionWrapper(betweenSource(reference, lower, upper, true)),
|
|
373
|
-
exists: (subquery) => new ExpressionWrapper((context) => {
|
|
374
|
-
const block = subquery.compileBlock(context, "(subquery)");
|
|
375
|
-
// Existence needs at most one row, so cap the subquery unless it already limits itself.
|
|
376
|
-
block.limit ??= 1;
|
|
377
|
-
return { kind: "exists", block, negated: false };
|
|
378
|
-
}),
|
|
379
|
-
match: (columns, query) => new ExpressionWrapper(buildFtsExpression("match", columns, query)),
|
|
380
|
-
ref: (reference) => new ExpressionWrapper({ kind: "column", reference }),
|
|
381
|
-
val: (value) => new ExpressionWrapper(literalExpression(value)),
|
|
382
|
-
neg: (value) => new ExpressionWrapper(combineSources([operandAsRef(value)], (expressionAt) => ({
|
|
383
|
-
kind: "binary",
|
|
384
|
-
operator: "*",
|
|
385
|
-
left: { kind: "literal", value: -1 },
|
|
386
|
-
right: expressionAt(0),
|
|
387
|
-
}))),
|
|
388
|
-
case: () => new CaseBuilder(),
|
|
389
|
-
rowNumber: () => new WindowFunctionBuilder("ROW_NUMBER"),
|
|
390
|
-
rank: () => new WindowFunctionBuilder("RANK"),
|
|
391
|
-
denseRank: () => new WindowFunctionBuilder("DENSE_RANK"),
|
|
392
|
-
selectFrom: (table) => createSubquery(table),
|
|
393
|
-
fn: createFunctionModule(),
|
|
394
|
-
};
|
|
395
|
-
return Object.assign(callable, members);
|
|
396
|
-
}
|
|
397
|
-
//# sourceMappingURL=expression.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"expression.js","sourceRoot":"","sources":["../../../src/engine/dsl/expression.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
export { Minnow, createMinnow, type MinnowOptions, type DriverLiveSet, type DslDriver, type DslLiveOptions, } from "./db.js";
|
|
2
|
-
export { AggregateExpressionWrapper, CaseBuilder, CaseEndBuilder, CaseThenBuilder, ExpressionWrapper, OverBuilder, WindowFunctionBuilder, type ArithmeticOperatorToken, type BinaryOperatorToken, type ComparisonOperatorToken, type ExpressionBuilder, type FunctionModule, type InOperatorToken, type IsOperatorToken, type LikeOperatorToken, type ScalarSubquery, type SqlBool, type ValueOperand, } from "./expression.js";
|
|
3
|
-
export { LiveQuery, type LiveQueryHandlers, type LiveQueryServices, type LiveSubscriptionHandle, } from "./live-query.js";
|
|
4
|
-
export { DeleteQueryBuilder, InsertQueryBuilder, UpdateQueryBuilder, type DeleteResult, type InsertResult, type MutationServices, type UpdateResult, } from "./mutations.js";
|
|
5
|
-
export { JoinBuilder, NoResultError, SelectQueryBuilder, type AliasedSelectQuery, type ExecuteServices, } from "./select-query-builder.js";
|
|
6
|
-
export { RawSqlFragment, sql, type RawSqlValue, type SqlExecutable } from "./sql-tag.js";
|
|
7
|
-
export type { AliasedExpression, AllColumnsRow, ColumnReference, ColumnReferenceOf, ContextWithLeftTable, ContextWithTable, DuplicateJoinAliasError, InferDatabase, JoinResult, InsertRowFor, ReferencedValue, RowFromSelections, Selection, StringSelection, TableExpression, TypedQueryEnvelope, UpdateChangesFor, } from "./types.js";
|
|
8
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/engine/dsl/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,EACN,YAAY,EACZ,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,SAAS,EACd,KAAK,cAAc,GACpB,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,0BAA0B,EAC1B,WAAW,EACX,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,WAAW,EACX,qBAAqB,EACrB,KAAK,uBAAuB,EAC5B,KAAK,mBAAmB,EACxB,KAAK,uBAAuB,EAC5B,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,OAAO,EACZ,KAAK,YAAY,GAClB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,SAAS,EACT,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,sBAAsB,GAC5B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,YAAY,GAClB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,WAAW,EACX,aAAa,EACb,kBAAkB,EAClB,KAAK,kBAAkB,EACvB,KAAK,eAAe,GACrB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,cAAc,EAAE,GAAG,EAAE,KAAK,WAAW,EAAE,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AACzF,YAAY,EACV,iBAAiB,EACjB,aAAa,EACb,eAAe,EACf,iBAAiB,EACjB,oBAAoB,EACpB,gBAAgB,EAChB,uBAAuB,EACvB,aAAa,EACb,UAAU,EACV,YAAY,EACZ,eAAe,EACf,iBAAiB,EACjB,SAAS,EACT,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,YAAY,CAAC"}
|
package/dist/engine/dsl/index.js
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
export { Minnow, createMinnow, } from "./db.js";
|
|
2
|
-
export { AggregateExpressionWrapper, CaseBuilder, CaseEndBuilder, CaseThenBuilder, ExpressionWrapper, OverBuilder, WindowFunctionBuilder, } from "./expression.js";
|
|
3
|
-
export { LiveQuery, } from "./live-query.js";
|
|
4
|
-
export { DeleteQueryBuilder, InsertQueryBuilder, UpdateQueryBuilder, } from "./mutations.js";
|
|
5
|
-
export { JoinBuilder, NoResultError, SelectQueryBuilder, } from "./select-query-builder.js";
|
|
6
|
-
export { RawSqlFragment, sql } from "./sql-tag.js";
|
|
7
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/engine/dsl/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,EACN,YAAY,GAKb,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,0BAA0B,EAC1B,WAAW,EACX,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,WAAW,EACX,qBAAqB,GAYtB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,SAAS,GAIV,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,GAKnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,WAAW,EACX,aAAa,EACb,kBAAkB,GAGnB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,cAAc,EAAE,GAAG,EAAwC,MAAM,cAAc,CAAC"}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import { type QueryResult } from "../query.js";
|
|
2
|
-
import { type TypedQueryEnvelope } from "./types.js";
|
|
3
|
-
/**
|
|
4
|
-
* The `.live()` terminal of a select builder: one query, typed rows, push delivery. Subscribing
|
|
5
|
-
* delivers the current result immediately and again after any commit that may have changed it;
|
|
6
|
-
* unchanged results are digest-suppressed by the underlying live set. Async iteration coalesces
|
|
7
|
-
* to the latest result — every yielded value is a true snapshot, but intermediate snapshots may
|
|
8
|
-
* be skipped when the consumer is slower than the writer. Iteration ends cleanly when the
|
|
9
|
-
* iterator is cancelled (break, return(), Promise.race timeouts) or when the subscription's
|
|
10
|
-
* live set closes.
|
|
11
|
-
*/
|
|
12
|
-
export interface LiveSubscriptionHandle {
|
|
13
|
-
close(): void | Promise<void>;
|
|
14
|
-
}
|
|
15
|
-
/** The slice of a live-query set the DSL needs; Database and the worker client both provide it. */
|
|
16
|
-
export interface LiveQueryServices {
|
|
17
|
-
subscribe(query: TypedQueryEnvelope<unknown>, handlers: {
|
|
18
|
-
onChange(result: QueryResult): void;
|
|
19
|
-
onError?(error: unknown): void;
|
|
20
|
-
onComplete?(): void;
|
|
21
|
-
}): Promise<LiveSubscriptionHandle>;
|
|
22
|
-
}
|
|
23
|
-
export interface LiveQueryHandlers<TRow> {
|
|
24
|
-
onChange(rows: TRow[]): void;
|
|
25
|
-
onError?(error: unknown): void;
|
|
26
|
-
/** Called once when the subscription ends because it (or its live set) closed. */
|
|
27
|
-
onComplete?(): void;
|
|
28
|
-
}
|
|
29
|
-
export declare class LiveQuery<out TRow> implements AsyncIterable<TRow[]> {
|
|
30
|
-
private readonly services;
|
|
31
|
-
private readonly query;
|
|
32
|
-
/** Type-only: the subscription row, e.g. `type Row = typeof live.$inferRow`. Undefined at runtime. */
|
|
33
|
-
readonly $inferRow: TRow;
|
|
34
|
-
constructor(services: LiveQueryServices, query: TypedQueryEnvelope<TRow>);
|
|
35
|
-
/** Delivers the initial result, then every changed result, until the handle is closed. */
|
|
36
|
-
subscribe(handlers: LiveQueryHandlers<TRow>): Promise<LiveSubscriptionHandle>;
|
|
37
|
-
/**
|
|
38
|
-
* A hand-rolled iterator rather than an async generator: a generator parked on an internal
|
|
39
|
-
* await would defer a queued `return()` until the next database change, deadlocking
|
|
40
|
-
* cancellation. Here `return()` settles the pending wait itself and closes the subscription
|
|
41
|
-
* immediately.
|
|
42
|
-
*/
|
|
43
|
-
[Symbol.asyncIterator](): AsyncIterator<TRow[], undefined>;
|
|
44
|
-
}
|
|
45
|
-
//# sourceMappingURL=live-query.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"live-query.d.ts","sourceRoot":"","sources":["../../../src/engine/dsl/live-query.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAErD;;;;;;;;GAQG;AAEH,MAAM,WAAW,sBAAsB;IACrC,KAAK,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/B;AAED,mGAAmG;AACnG,MAAM,WAAW,iBAAiB;IAChC,SAAS,CACP,KAAK,EAAE,kBAAkB,CAAC,OAAO,CAAC,EAClC,QAAQ,EAAE;QACR,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC;QACpC,OAAO,CAAC,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;QAC/B,UAAU,CAAC,IAAI,IAAI,CAAC;KACrB,GACA,OAAO,CAAC,sBAAsB,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,iBAAiB,CAAC,IAAI;IACrC,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IAC7B,OAAO,CAAC,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;IAC/B,kFAAkF;IAClF,UAAU,CAAC,IAAI,IAAI,CAAC;CACrB;AAED,qBAAa,SAAS,CAAC,GAAG,CAAC,IAAI,CAAE,YAAW,aAAa,CAAC,IAAI,EAAE,CAAC;IAK7D,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,KAAK;IALxB,sGAAsG;IACtG,SAAiB,SAAS,EAAE,IAAI,CAAC;gBAGd,QAAQ,EAAE,iBAAiB,EAC3B,KAAK,EAAE,kBAAkB,CAAC,IAAI,CAAC;IAGlD,0FAA0F;IACpF,SAAS,CAAC,QAAQ,EAAE,iBAAiB,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAYnF;;;;;OAKG;IACH,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,IAAI,EAAE,EAAE,SAAS,CAAC;CAoF3D"}
|
|
@@ -1,116 +0,0 @@
|
|
|
1
|
-
export class LiveQuery {
|
|
2
|
-
services;
|
|
3
|
-
query;
|
|
4
|
-
constructor(services, query) {
|
|
5
|
-
this.services = services;
|
|
6
|
-
this.query = query;
|
|
7
|
-
}
|
|
8
|
-
/** Delivers the initial result, then every changed result, until the handle is closed. */
|
|
9
|
-
async subscribe(handlers) {
|
|
10
|
-
return this.services.subscribe(this.query, {
|
|
11
|
-
onChange: (result) => {
|
|
12
|
-
handlers.onChange(result.rows);
|
|
13
|
-
},
|
|
14
|
-
...(handlers.onError === undefined ? {} : { onError: handlers.onError.bind(handlers) }),
|
|
15
|
-
...(handlers.onComplete === undefined
|
|
16
|
-
? {}
|
|
17
|
-
: { onComplete: handlers.onComplete.bind(handlers) }),
|
|
18
|
-
});
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* A hand-rolled iterator rather than an async generator: a generator parked on an internal
|
|
22
|
-
* await would defer a queued `return()` until the next database change, deadlocking
|
|
23
|
-
* cancellation. Here `return()` settles the pending wait itself and closes the subscription
|
|
24
|
-
* immediately.
|
|
25
|
-
*/
|
|
26
|
-
[Symbol.asyncIterator]() {
|
|
27
|
-
const inbox = {
|
|
28
|
-
latest: [],
|
|
29
|
-
hasLatest: false,
|
|
30
|
-
failure: undefined,
|
|
31
|
-
completed: false,
|
|
32
|
-
stopped: false,
|
|
33
|
-
notify: undefined,
|
|
34
|
-
};
|
|
35
|
-
const wake = () => {
|
|
36
|
-
const resolve = inbox.notify;
|
|
37
|
-
inbox.notify = undefined;
|
|
38
|
-
resolve?.();
|
|
39
|
-
};
|
|
40
|
-
let subscription;
|
|
41
|
-
let closed = false;
|
|
42
|
-
const closeOnce = async () => {
|
|
43
|
-
if (closed)
|
|
44
|
-
return;
|
|
45
|
-
closed = true;
|
|
46
|
-
if (subscription === undefined)
|
|
47
|
-
return;
|
|
48
|
-
// A completed subscription was already torn down by its live set; closing again is a
|
|
49
|
-
// best-effort no-op (the worker-side handle may be gone).
|
|
50
|
-
try {
|
|
51
|
-
const handle = await subscription;
|
|
52
|
-
if (!inbox.completed)
|
|
53
|
-
await handle.close();
|
|
54
|
-
}
|
|
55
|
-
catch {
|
|
56
|
-
// The subscription itself failed to establish; there is nothing to close.
|
|
57
|
-
}
|
|
58
|
-
};
|
|
59
|
-
const done = { done: true, value: undefined };
|
|
60
|
-
return {
|
|
61
|
-
next: async () => {
|
|
62
|
-
subscription ??= this.subscribe({
|
|
63
|
-
onChange: (rows) => {
|
|
64
|
-
inbox.latest = rows;
|
|
65
|
-
inbox.hasLatest = true;
|
|
66
|
-
wake();
|
|
67
|
-
},
|
|
68
|
-
onError: (error) => {
|
|
69
|
-
inbox.failure = { error };
|
|
70
|
-
wake();
|
|
71
|
-
},
|
|
72
|
-
onComplete: () => {
|
|
73
|
-
inbox.completed = true;
|
|
74
|
-
wake();
|
|
75
|
-
},
|
|
76
|
-
});
|
|
77
|
-
await subscription;
|
|
78
|
-
for (;;) {
|
|
79
|
-
if (inbox.stopped)
|
|
80
|
-
return done;
|
|
81
|
-
if (inbox.failure !== undefined) {
|
|
82
|
-
const { error } = inbox.failure;
|
|
83
|
-
inbox.stopped = true;
|
|
84
|
-
await closeOnce();
|
|
85
|
-
throw error;
|
|
86
|
-
}
|
|
87
|
-
if (inbox.hasLatest) {
|
|
88
|
-
inbox.hasLatest = false;
|
|
89
|
-
return { done: false, value: inbox.latest };
|
|
90
|
-
}
|
|
91
|
-
if (inbox.completed) {
|
|
92
|
-
inbox.stopped = true;
|
|
93
|
-
await closeOnce();
|
|
94
|
-
return done;
|
|
95
|
-
}
|
|
96
|
-
await new Promise((resolve) => {
|
|
97
|
-
inbox.notify = resolve;
|
|
98
|
-
});
|
|
99
|
-
}
|
|
100
|
-
},
|
|
101
|
-
return: async () => {
|
|
102
|
-
inbox.stopped = true;
|
|
103
|
-
wake();
|
|
104
|
-
await closeOnce();
|
|
105
|
-
return done;
|
|
106
|
-
},
|
|
107
|
-
throw: async (error) => {
|
|
108
|
-
inbox.stopped = true;
|
|
109
|
-
wake();
|
|
110
|
-
await closeOnce();
|
|
111
|
-
throw error;
|
|
112
|
-
},
|
|
113
|
-
};
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
//# sourceMappingURL=live-query.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"live-query.js","sourceRoot":"","sources":["../../../src/engine/dsl/live-query.ts"],"names":[],"mappings":"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"}
|