@lovrozagar/oat 0.10.0 → 0.11.0
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 +25 -2006
- package/dist/cli.js +283 -59
- package/dist/config/define-config.d.ts +8 -0
- package/dist/config/define-config.d.ts.map +1 -1
- package/dist/config/define-config.js.map +1 -1
- package/dist/config/validate.d.ts +12 -0
- package/dist/config/validate.d.ts.map +1 -0
- package/dist/config/validate.js +86 -0
- package/dist/config/validate.js.map +1 -0
- package/dist/conformance/effects.d.ts +9 -0
- package/dist/conformance/effects.d.ts.map +1 -0
- package/dist/conformance/effects.js +276 -0
- package/dist/conformance/effects.js.map +1 -0
- package/dist/conformance/expected-failures.d.ts +18 -0
- package/dist/conformance/expected-failures.d.ts.map +1 -0
- package/dist/conformance/expected-failures.js +48 -0
- package/dist/conformance/expected-failures.js.map +1 -0
- package/dist/conformance/feature-gate.d.ts +7 -0
- package/dist/conformance/feature-gate.d.ts.map +1 -0
- package/dist/conformance/feature-gate.js +428 -0
- package/dist/conformance/feature-gate.js.map +1 -0
- package/dist/conformance/fuzz.d.ts +108 -0
- package/dist/conformance/fuzz.d.ts.map +1 -0
- package/dist/conformance/fuzz.js +246 -0
- package/dist/conformance/fuzz.js.map +1 -0
- package/dist/conformance/leaks.d.ts +10 -0
- package/dist/conformance/leaks.d.ts.map +1 -0
- package/dist/conformance/leaks.js +23 -0
- package/dist/conformance/leaks.js.map +1 -0
- package/dist/conformance/pool.d.ts +49 -0
- package/dist/conformance/pool.d.ts.map +1 -0
- package/dist/conformance/pool.js +75 -0
- package/dist/conformance/pool.js.map +1 -0
- package/dist/conformance/rate-limit.d.ts +7 -0
- package/dist/conformance/rate-limit.d.ts.map +1 -0
- package/dist/conformance/rate-limit.js +372 -0
- package/dist/conformance/rate-limit.js.map +1 -0
- package/dist/conformance/scope.d.ts +15 -0
- package/dist/conformance/scope.d.ts.map +1 -0
- package/dist/conformance/scope.js +78 -0
- package/dist/conformance/scope.js.map +1 -0
- package/dist/conformance/seed-contract.d.ts +11 -0
- package/dist/conformance/seed-contract.d.ts.map +1 -0
- package/dist/conformance/seed-contract.js +680 -0
- package/dist/conformance/seed-contract.js.map +1 -0
- package/dist/conformance/shapes.d.ts +35 -0
- package/dist/conformance/shapes.d.ts.map +1 -0
- package/dist/conformance/shapes.js +162 -0
- package/dist/conformance/shapes.js.map +1 -0
- package/dist/conformance/specs.d.ts +21 -0
- package/dist/conformance/specs.d.ts.map +1 -0
- package/dist/conformance/specs.js +306 -0
- package/dist/conformance/specs.js.map +1 -0
- package/dist/conformance/suite.d.ts +209 -0
- package/dist/conformance/suite.d.ts.map +1 -0
- package/dist/conformance/suite.js +1538 -0
- package/dist/conformance/suite.js.map +1 -0
- package/dist/conformance/unique.d.ts +7 -0
- package/dist/conformance/unique.d.ts.map +1 -0
- package/dist/conformance/unique.js +586 -0
- package/dist/conformance/unique.js.map +1 -0
- package/dist/conformance/worker.d.ts +3 -0
- package/dist/conformance/worker.d.ts.map +1 -0
- package/dist/conformance/worker.js +27 -0
- package/dist/conformance/worker.js.map +1 -0
- package/dist/index.d.ts +8 -3
- package/dist/index.js +5 -2
- package/dist/reference/defects.d.ts +71 -1
- package/dist/reference/defects.d.ts.map +1 -1
- package/dist/reference/defects.js +74 -8
- package/dist/reference/defects.js.map +1 -1
- package/dist/reference/dialect.d.ts +6 -4
- package/dist/reference/dialect.d.ts.map +1 -1
- package/dist/reference/dialect.js +1 -0
- package/dist/reference/dialect.js.map +1 -1
- package/dist/reference/http.d.ts +17 -25
- package/dist/reference/http.d.ts.map +1 -1
- package/dist/reference/http.js +574 -224
- package/dist/reference/http.js.map +1 -1
- package/dist/reference/listing.d.ts +51 -0
- package/dist/reference/listing.d.ts.map +1 -0
- package/dist/reference/listing.js +256 -0
- package/dist/reference/listing.js.map +1 -0
- package/dist/reference/model.d.ts +35 -1
- package/dist/reference/model.d.ts.map +1 -1
- package/dist/reference/model.js +42 -0
- package/dist/reference/model.js.map +1 -1
- package/dist/reference/query.d.ts +132 -43
- package/dist/reference/query.d.ts.map +1 -1
- package/dist/reference/query.js +397 -315
- package/dist/reference/query.js.map +1 -1
- package/dist/reference/shapes.d.ts +60 -0
- package/dist/reference/shapes.d.ts.map +1 -0
- package/dist/reference/shapes.js +142 -0
- package/dist/reference/shapes.js.map +1 -0
- package/dist/reference/spec.d.ts +9 -2
- package/dist/reference/spec.d.ts.map +1 -1
- package/dist/reference/spec.js +291 -71
- package/dist/reference/spec.js.map +1 -1
- package/dist/reference/store-api.d.ts +14 -43
- package/dist/reference/store-api.d.ts.map +1 -1
- package/dist/reference/store-api.js +8 -58
- package/dist/reference/store-api.js.map +1 -1
- package/dist/reference/stores/memory.d.ts +12 -15
- package/dist/reference/stores/memory.d.ts.map +1 -1
- package/dist/reference/stores/memory.js +22 -70
- package/dist/reference/stores/memory.js.map +1 -1
- package/dist/reference/stores/postgres.d.ts +11 -23
- package/dist/reference/stores/postgres.d.ts.map +1 -1
- package/dist/reference/stores/postgres.js +53 -334
- package/dist/reference/stores/postgres.js.map +1 -1
- package/dist/reference/stores/sql-compile.d.ts +36 -0
- package/dist/reference/stores/sql-compile.d.ts.map +1 -0
- package/dist/reference/stores/sql-compile.js +95 -0
- package/dist/reference/stores/sql-compile.js.map +1 -0
- package/dist/reference/stores/sqlite.d.ts +12 -27
- package/dist/reference/stores/sqlite.d.ts.map +1 -1
- package/dist/reference/stores/sqlite.js +54 -355
- package/dist/reference/stores/sqlite.js.map +1 -1
- package/dist/report/console.d.ts.map +1 -1
- package/dist/report/console.js +23 -9
- package/dist/report/console.js.map +1 -1
- package/dist/report/matrix.d.ts +2 -0
- package/dist/report/matrix.d.ts.map +1 -1
- package/dist/report/matrix.js +63 -10
- package/dist/report/matrix.js.map +1 -1
- package/dist/report/render.d.ts +10 -1
- package/dist/report/render.d.ts.map +1 -1
- package/dist/report/render.js +75 -13
- package/dist/report/render.js.map +1 -1
- package/dist/runtime/async.d.ts +16 -3
- package/dist/runtime/async.d.ts.map +1 -1
- package/dist/runtime/async.js +24 -19
- package/dist/runtime/async.js.map +1 -1
- package/dist/runtime/auth.d.ts +2 -9
- package/dist/runtime/auth.d.ts.map +1 -1
- package/dist/runtime/auth.js +38 -62
- package/dist/runtime/auth.js.map +1 -1
- package/dist/runtime/body.d.ts +15 -3
- package/dist/runtime/body.d.ts.map +1 -1
- package/dist/runtime/body.js +61 -12
- package/dist/runtime/body.js.map +1 -1
- package/dist/runtime/check-costs.d.ts +15 -0
- package/dist/runtime/check-costs.d.ts.map +1 -0
- package/dist/runtime/check-costs.js +114 -0
- package/dist/runtime/check-costs.js.map +1 -0
- package/dist/runtime/check-ids.d.ts +15 -0
- package/dist/runtime/check-ids.d.ts.map +1 -0
- package/dist/runtime/check-ids.js +140 -0
- package/dist/runtime/check-ids.js.map +1 -0
- package/dist/runtime/checks.d.ts +83 -20
- package/dist/runtime/checks.d.ts.map +1 -1
- package/dist/runtime/checks.js +3285 -1947
- package/dist/runtime/checks.js.map +1 -1
- package/dist/runtime/client.d.ts +112 -0
- package/dist/runtime/client.d.ts.map +1 -1
- package/dist/runtime/client.js +271 -39
- package/dist/runtime/client.js.map +1 -1
- package/dist/runtime/cookies.d.ts +16 -2
- package/dist/runtime/cookies.d.ts.map +1 -1
- package/dist/runtime/cookies.js +83 -22
- package/dist/runtime/cookies.js.map +1 -1
- package/dist/runtime/exchanges.d.ts +4 -5
- package/dist/runtime/exchanges.d.ts.map +1 -1
- package/dist/runtime/exchanges.js +33 -55
- package/dist/runtime/exchanges.js.map +1 -1
- package/dist/runtime/exit.d.ts +40 -0
- package/dist/runtime/exit.d.ts.map +1 -0
- package/dist/runtime/exit.js +48 -0
- package/dist/runtime/exit.js.map +1 -0
- package/dist/runtime/feature-gate.d.ts +0 -9
- package/dist/runtime/feature-gate.d.ts.map +1 -1
- package/dist/runtime/feature-gate.js +0 -21
- package/dist/runtime/feature-gate.js.map +1 -1
- package/dist/runtime/finding.d.ts +49 -8
- package/dist/runtime/finding.d.ts.map +1 -1
- package/dist/runtime/finding.js +51 -8
- package/dist/runtime/finding.js.map +1 -1
- package/dist/runtime/fixture.d.ts +35 -28
- package/dist/runtime/fixture.d.ts.map +1 -1
- package/dist/runtime/fixture.js +92 -731
- package/dist/runtime/fixture.js.map +1 -1
- package/dist/runtime/generate.d.ts +63 -0
- package/dist/runtime/generate.d.ts.map +1 -0
- package/dist/runtime/generate.js +635 -0
- package/dist/runtime/generate.js.map +1 -0
- package/dist/runtime/headers.d.ts +6 -0
- package/dist/runtime/headers.d.ts.map +1 -0
- package/dist/runtime/headers.js +16 -0
- package/dist/runtime/headers.js.map +1 -0
- package/dist/runtime/path.d.ts +7 -0
- package/dist/runtime/path.d.ts.map +1 -0
- package/dist/runtime/path.js +44 -0
- package/dist/runtime/path.js.map +1 -0
- package/dist/runtime/payloads.d.ts +2 -0
- package/dist/runtime/payloads.d.ts.map +1 -1
- package/dist/runtime/payloads.js +2 -1
- package/dist/runtime/payloads.js.map +1 -1
- package/dist/runtime/rate-limit.d.ts +6 -4
- package/dist/runtime/rate-limit.d.ts.map +1 -1
- package/dist/runtime/rate-limit.js +22 -33
- package/dist/runtime/rate-limit.js.map +1 -1
- package/dist/runtime/redact.d.ts +24 -0
- package/dist/runtime/redact.d.ts.map +1 -0
- package/dist/runtime/redact.js +98 -0
- package/dist/runtime/redact.js.map +1 -0
- package/dist/runtime/run.d.ts +34 -2
- package/dist/runtime/run.d.ts.map +1 -1
- package/dist/runtime/run.js +346 -138
- package/dist/runtime/run.js.map +1 -1
- package/dist/runtime/runs.d.ts +5 -0
- package/dist/runtime/runs.d.ts.map +1 -1
- package/dist/runtime/runs.js +7 -1
- package/dist/runtime/runs.js.map +1 -1
- package/dist/runtime/teardown.d.ts +17 -4
- package/dist/runtime/teardown.d.ts.map +1 -1
- package/dist/runtime/teardown.js +49 -16
- package/dist/runtime/teardown.js.map +1 -1
- package/dist/runtime/transcript.d.ts +34 -2
- package/dist/runtime/transcript.d.ts.map +1 -1
- package/dist/runtime/transcript.js +119 -24
- package/dist/runtime/transcript.js.map +1 -1
- package/dist/runtime/unique.d.ts +2 -11
- package/dist/runtime/unique.d.ts.map +1 -1
- package/dist/runtime/unique.js +27 -53
- package/dist/runtime/unique.js.map +1 -1
- package/dist/runtime/validate.d.ts +13 -2
- package/dist/runtime/validate.d.ts.map +1 -1
- package/dist/runtime/validate.js +51 -31
- package/dist/runtime/validate.js.map +1 -1
- package/dist/runtime/wait.d.ts +2 -1
- package/dist/runtime/wait.d.ts.map +1 -1
- package/dist/runtime/wait.js +2 -36
- package/dist/runtime/wait.js.map +1 -1
- package/dist/runtime/world.d.ts +24 -1
- package/dist/runtime/world.d.ts.map +1 -1
- package/dist/runtime/world.js +101 -26
- package/dist/runtime/world.js.map +1 -1
- package/dist/spec/collection.d.ts +8 -2
- package/dist/spec/collection.d.ts.map +1 -1
- package/dist/spec/collection.js +47 -7
- package/dist/spec/collection.js.map +1 -1
- package/dist/spec/extensions.d.ts +5 -1
- package/dist/spec/extensions.d.ts.map +1 -1
- package/dist/spec/extensions.js +9 -2
- package/dist/spec/extensions.js.map +1 -1
- package/dist/spec/graph.d.ts +46 -0
- package/dist/spec/graph.d.ts.map +1 -1
- package/dist/spec/graph.js +175 -11
- package/dist/spec/graph.js.map +1 -1
- package/dist/spec/load.d.ts +25 -5
- package/dist/spec/load.d.ts.map +1 -1
- package/dist/spec/load.js +160 -59
- package/dist/spec/load.js.map +1 -1
- package/dist/spec/query-capabilities.d.ts +4 -0
- package/dist/spec/query-capabilities.d.ts.map +1 -1
- package/dist/spec/query-capabilities.js +6 -0
- package/dist/spec/query-capabilities.js.map +1 -1
- package/dist/spec/schema.d.ts +20 -0
- package/dist/spec/schema.d.ts.map +1 -0
- package/dist/spec/schema.js +118 -0
- package/dist/spec/schema.js.map +1 -0
- package/dist/spec/tag-schema.d.ts +12 -0
- package/dist/spec/tag-schema.d.ts.map +1 -0
- package/dist/spec/tag-schema.js +143 -0
- package/dist/spec/tag-schema.js.map +1 -0
- package/dist/spec/types.js +17 -1
- package/dist/spec/types.js.map +1 -1
- package/docs/api.md +59 -0
- package/docs/assumptions.md +99 -0
- package/docs/checks.md +183 -0
- package/docs/commands.md +214 -0
- package/docs/configuration.md +650 -0
- package/docs/model.md +184 -0
- package/docs/reference-defects.md +94 -0
- package/docs/reports.md +211 -0
- package/docs/tags.md +400 -0
- package/package.json +3 -1
package/dist/reference/model.js
CHANGED
|
@@ -11,6 +11,7 @@ const TIMESTAMPS = [
|
|
|
11
11
|
export const TABLE = {
|
|
12
12
|
collectionPath: "/v1/projects/{project_id}/tables",
|
|
13
13
|
defaultLimit: 20,
|
|
14
|
+
defaultOrder: "created_at.desc",
|
|
14
15
|
fields: [
|
|
15
16
|
{ generated: true, immutable: true, name: "id", required: true, sortable: true, filterable: true, type: "string" },
|
|
16
17
|
{ generated: true, immutable: true, name: "project_id", required: true, filterable: true, type: "string" },
|
|
@@ -77,6 +78,7 @@ export const TABLE = {
|
|
|
77
78
|
export const ROW = {
|
|
78
79
|
collectionPath: "/v1/projects/{project_id}/tables/{table_id}/rows",
|
|
79
80
|
defaultLimit: 20,
|
|
81
|
+
defaultOrder: "created_at.desc",
|
|
80
82
|
fields: [
|
|
81
83
|
{ generated: true, immutable: true, name: "id", required: true, sortable: true, filterable: true, type: "string" },
|
|
82
84
|
{ generated: true, immutable: true, name: "table_id", required: true, filterable: true, type: "string" },
|
|
@@ -100,10 +102,14 @@ export const ROW = {
|
|
|
100
102
|
type: "string",
|
|
101
103
|
},
|
|
102
104
|
{ filterable: true, name: "active", sortable: true, type: "boolean" },
|
|
105
|
+
/* An array, so set membership (`contains`) has something real to test. The elements are
|
|
106
|
+
* chosen so one is a prefix of another: matching by substring is then visibly wrong. */
|
|
107
|
+
{ filterable: true, items: ["red", "redwood", "blue", "green"], name: "tags", type: "array" },
|
|
103
108
|
...TIMESTAMPS,
|
|
104
109
|
],
|
|
105
110
|
identity: "id",
|
|
106
111
|
itemParam: "row_id",
|
|
112
|
+
relations: { table: { entity: "table", fields: ["name", "status"], via: "table_id" } },
|
|
107
113
|
itemPath: "/v1/projects/{project_id}/tables/{table_id}/rows/{row_id}",
|
|
108
114
|
/* Deliberately below the default cohort size so the cap is observable at all — a limit
|
|
109
115
|
* ceiling no request can reach cannot be tested. */
|
|
@@ -119,6 +125,7 @@ export const ROW = {
|
|
|
119
125
|
export const JOB = {
|
|
120
126
|
collectionPath: "/v1/projects/{project_id}/jobs",
|
|
121
127
|
defaultLimit: 20,
|
|
128
|
+
defaultOrder: "created_at.desc",
|
|
122
129
|
fields: [
|
|
123
130
|
{ generated: true, immutable: true, name: "id", required: true, sortable: true, filterable: true, type: "string" },
|
|
124
131
|
{ generated: true, immutable: true, name: "project_id", required: true, filterable: true, type: "string" },
|
|
@@ -198,4 +205,39 @@ export function writableFields(entity, phase) {
|
|
|
198
205
|
return true;
|
|
199
206
|
});
|
|
200
207
|
}
|
|
208
|
+
/**
|
|
209
|
+
* The entities as a given shape serves them.
|
|
210
|
+
*
|
|
211
|
+
* A shape changes what the records look like — the identifier format, extra fields a real schema
|
|
212
|
+
* would carry — without changing what a correct backend does with them. Copies are returned, so
|
|
213
|
+
* one server's shape never leaks into another's.
|
|
214
|
+
*/
|
|
215
|
+
export function shapedEntities(shape) {
|
|
216
|
+
const idField = (field) => {
|
|
217
|
+
if (shape.ids === "uuid")
|
|
218
|
+
return { ...field, format: "uuid", type: "string" };
|
|
219
|
+
if (shape.ids === "integer")
|
|
220
|
+
return { ...field, type: "integer" };
|
|
221
|
+
return field;
|
|
222
|
+
};
|
|
223
|
+
const linkParams = new Set(ENTITIES.map((entity) => entity.itemParam));
|
|
224
|
+
return ENTITIES.map((entity) => {
|
|
225
|
+
const fields = entity.fields.map((field) => field.name === entity.identity || linkParams.has(field.name) ? idField(field) : { ...field });
|
|
226
|
+
if (entity.name === TABLE.name) {
|
|
227
|
+
if (shape.writeOnlyField === true) {
|
|
228
|
+
fields.push({ maxLength: 64, name: "secret", required: true, type: "string", writeOnly: true });
|
|
229
|
+
}
|
|
230
|
+
if (shape.richSchema === true) {
|
|
231
|
+
fields.push({ format: "date-time", name: "due_at", required: true, type: "string" }, { maximum: 10, minimum: 1, multipleOf: 0.5, name: "weight", required: true, type: "number" }, { const: "v1", name: "schema_version", required: true, type: "string" }, { name: "start", ref: "Point", required: true, type: "object" }, { name: "end", ref: "Point", required: true, type: "object" });
|
|
232
|
+
}
|
|
233
|
+
if (shape.largeRecords === true) {
|
|
234
|
+
fields.push({ generated: true, name: "padding", type: "string" });
|
|
235
|
+
}
|
|
236
|
+
if (shape.specLayout === true) {
|
|
237
|
+
fields.push({ generated: true, name: "tree", nullable: true, ref: "TreeNode", type: "object" });
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
return { ...entity, fields };
|
|
241
|
+
});
|
|
242
|
+
}
|
|
201
243
|
//# sourceMappingURL=model.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/reference/model.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA+
|
|
1
|
+
{"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/reference/model.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,50 +1,139 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* The reference backend's query language, parsed once.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
4
|
+
* Filter, sort, select and search arrive as text in the canonical grammar (`field.op.value`,
|
|
5
|
+
* `and(...)`, `field.desc`). They are parsed here into an AST that every store consumes: the
|
|
6
|
+
* in-memory store evaluates it, the SQL stores compile it. Defects that change what a predicate
|
|
7
|
+
* *means* are applied here as rewrites of the tree, so a defect is defined exactly once and every
|
|
8
|
+
* engine exhibits the same bug.
|
|
9
|
+
*
|
|
10
|
+
* Values are coerced by the field's declared type, never by what the text looks like. A string
|
|
11
|
+
* field filtered on `123` compares against the string "123"; a numeric field filtered on `abc`
|
|
12
|
+
* matches nothing (or is rejected with a 400 when the backend is strictly typed).
|
|
13
|
+
*
|
|
14
|
+
* Null semantics, decided once and held by every store:
|
|
15
|
+
* - `eq`, `gt`, `gte`, `lt`, `lte`, `in`, `like`, `ilike` never match a null value.
|
|
16
|
+
* - `neq` and `nin` do match a null value: null is not equal to, and not a member of, anything.
|
|
17
|
+
* - `is.null` / `is.notnull` test for null explicitly. `eq.null` is not a null test: on a
|
|
18
|
+
* text field it compares against the text "null", as PostgREST does.
|
|
7
19
|
*/
|
|
8
|
-
import
|
|
9
|
-
|
|
10
|
-
export type
|
|
11
|
-
export
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
20
|
+
import { DefectSet } from "./defects.ts";
|
|
21
|
+
import type { EntityDef } from "./model.ts";
|
|
22
|
+
export type Scalar = string | number | boolean | null;
|
|
23
|
+
export type LikeSegment = {
|
|
24
|
+
kind: "text";
|
|
25
|
+
text: string;
|
|
26
|
+
} | {
|
|
27
|
+
kind: "any";
|
|
28
|
+
} | {
|
|
29
|
+
kind: "one";
|
|
30
|
+
};
|
|
31
|
+
export type ComparisonOp = "eq" | "neq" | "gt" | "gte" | "lt" | "lte";
|
|
32
|
+
export type FilterNode = {
|
|
33
|
+
kind: "const";
|
|
34
|
+
value: boolean;
|
|
35
|
+
} | {
|
|
36
|
+
kind: "and" | "or";
|
|
37
|
+
children: FilterNode[];
|
|
38
|
+
} | {
|
|
39
|
+
kind: "cmp";
|
|
40
|
+
field: string;
|
|
41
|
+
op: ComparisonOp;
|
|
42
|
+
value: Scalar;
|
|
43
|
+
/** Compare the textual form of both sides — the numeric-as-text defect. */
|
|
44
|
+
asText: boolean;
|
|
45
|
+
/** Whether a null value satisfies the predicate. True only for a correct `neq`. */
|
|
46
|
+
nullsMatch: boolean;
|
|
47
|
+
} | {
|
|
48
|
+
kind: "in";
|
|
49
|
+
field: string;
|
|
50
|
+
values: Scalar[];
|
|
51
|
+
negate: boolean;
|
|
52
|
+
asText: boolean;
|
|
53
|
+
} | {
|
|
54
|
+
kind: "isnull";
|
|
55
|
+
field: string;
|
|
56
|
+
negate: boolean;
|
|
57
|
+
} | {
|
|
58
|
+
kind: "like";
|
|
59
|
+
field: string;
|
|
60
|
+
pattern: LikeSegment[];
|
|
61
|
+
insensitive: boolean;
|
|
62
|
+
}
|
|
63
|
+
/** Array membership. `substring` is the defect: the serialised array matched as text. */
|
|
64
|
+
| {
|
|
65
|
+
kind: "contains";
|
|
66
|
+
field: string;
|
|
67
|
+
value: string;
|
|
68
|
+
substring: boolean;
|
|
69
|
+
} | {
|
|
70
|
+
kind: "search";
|
|
71
|
+
fields: string[];
|
|
72
|
+
token: string;
|
|
73
|
+
/** `prefix`: some field starts with the token; `contains`: some field contains it. */
|
|
74
|
+
mode: SearchMode;
|
|
75
|
+
caseSensitive: boolean;
|
|
76
|
+
};
|
|
77
|
+
export interface OrderTerm {
|
|
78
|
+
field: string;
|
|
79
|
+
descending: boolean;
|
|
80
|
+
nullsFirst: boolean;
|
|
81
|
+
asText: boolean;
|
|
19
82
|
}
|
|
20
|
-
export
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
selectUnknown?: "reject" | "ignore";
|
|
83
|
+
export type Collation = "binary" | "insensitive";
|
|
84
|
+
export declare const SEARCH_MODES: readonly ["contains", "prefix"];
|
|
85
|
+
export type SearchMode = (typeof SEARCH_MODES)[number];
|
|
86
|
+
/** Everything a store needs to answer a listing: which rows, in what order. */
|
|
87
|
+
export interface SelectPlan {
|
|
88
|
+
where: FilterNode;
|
|
89
|
+
order: OrderTerm[];
|
|
90
|
+
/** Text ordering. Filters always compare binary; only ordering follows the collation. */
|
|
91
|
+
collation: Collation;
|
|
92
|
+
/**
|
|
93
|
+
* Tied rows come back in an arbitrary, varying order — what a database does when the sort
|
|
94
|
+
* has no total order. Set only under UNSTABLE_SORT; otherwise the identity breaks every tie.
|
|
95
|
+
*/
|
|
96
|
+
shuffleTies: boolean;
|
|
35
97
|
}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
98
|
+
/** Behaviour of a correct backend that varies between real APIs — see `ReferenceShape`. */
|
|
99
|
+
export interface QueryConventions {
|
|
100
|
+
/** Where nulls sort when the request does not say. */
|
|
101
|
+
nulls: "first" | "last";
|
|
102
|
+
collation: Collation;
|
|
103
|
+
/** Reject a filter value that does not parse as the field's type, instead of matching nothing. */
|
|
104
|
+
strictTypes: boolean;
|
|
43
105
|
}
|
|
44
|
-
export declare
|
|
45
|
-
/**
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
106
|
+
export declare const DEFAULT_CONVENTIONS: QueryConventions;
|
|
107
|
+
/** Splits on commas at paren depth zero — shared by the filter and order grammars. */
|
|
108
|
+
export declare function splitTopLevel(input: string): string[];
|
|
109
|
+
interface ParseContext {
|
|
110
|
+
entity: EntityDef;
|
|
111
|
+
defects: DefectSet;
|
|
112
|
+
conventions: QueryConventions;
|
|
113
|
+
}
|
|
114
|
+
/** Parses a canonical filter expression. Throws `SqlError` for anything a correct backend rejects. */
|
|
115
|
+
export declare function parseFilter(expression: string, ctx: ParseContext): FilterNode;
|
|
116
|
+
/**
|
|
117
|
+
* Parses a canonical order expression (`field.desc.nullslast,other`).
|
|
118
|
+
*
|
|
119
|
+
* `trusted` is for the server's own default order: it is not a request, so the request's
|
|
120
|
+
* validation — and the defects that corrupt it — do not apply to it.
|
|
121
|
+
*/
|
|
122
|
+
export declare function parseOrder(expression: string, ctx: ParseContext, trusted?: boolean): OrderTerm[];
|
|
123
|
+
/**
|
|
124
|
+
* Search tokens: every token must occur, case-insensitively, in some searchable field — as a
|
|
125
|
+
* substring under `contains`, at the start of the value under `prefix`. A blank query matches
|
|
126
|
+
* everything.
|
|
127
|
+
*/
|
|
128
|
+
export declare function parseSearch(q: string, entity: EntityDef, defects: DefectSet, mode: SearchMode): FilterNode | null;
|
|
129
|
+
export declare function and(...nodes: Array<FilterNode | null>): FilterNode;
|
|
130
|
+
/** Fields a filter expression names, for the tombstone rule (an explicit mention lifts it). */
|
|
131
|
+
export declare function fieldsIn(node: FilterNode): string[];
|
|
132
|
+
type Row = Record<string, unknown>;
|
|
133
|
+
export declare function likeToRegExp(pattern: LikeSegment[], insensitive: boolean): RegExp;
|
|
134
|
+
/** The in-memory evaluation of a filter — the reference semantics the SQL compilers match. */
|
|
135
|
+
export declare function evaluate(node: FilterNode, row: Row): boolean;
|
|
136
|
+
/** Orders rows under the plan. Ties the plan leaves open keep their input order. */
|
|
137
|
+
export declare function compareRows(order: OrderTerm[], collation: Collation): (left: Row, right: Row) => number;
|
|
138
|
+
export {};
|
|
50
139
|
//# sourceMappingURL=query.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/reference/query.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/reference/query.ts"],"names":[],"mappings":"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"}
|