@lovrozagar/oat 0.10.0 → 0.12.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.
Files changed (278) hide show
  1. package/README.md +25 -2006
  2. package/dist/cli.js +283 -59
  3. package/dist/config/define-config.d.ts +8 -0
  4. package/dist/config/define-config.d.ts.map +1 -1
  5. package/dist/config/define-config.js.map +1 -1
  6. package/dist/config/validate.d.ts +12 -0
  7. package/dist/config/validate.d.ts.map +1 -0
  8. package/dist/config/validate.js +86 -0
  9. package/dist/config/validate.js.map +1 -0
  10. package/dist/conformance/effects.d.ts +9 -0
  11. package/dist/conformance/effects.d.ts.map +1 -0
  12. package/dist/conformance/effects.js +276 -0
  13. package/dist/conformance/effects.js.map +1 -0
  14. package/dist/conformance/expected-failures.d.ts +18 -0
  15. package/dist/conformance/expected-failures.d.ts.map +1 -0
  16. package/dist/conformance/expected-failures.js +48 -0
  17. package/dist/conformance/expected-failures.js.map +1 -0
  18. package/dist/conformance/feature-gate.d.ts +7 -0
  19. package/dist/conformance/feature-gate.d.ts.map +1 -0
  20. package/dist/conformance/feature-gate.js +428 -0
  21. package/dist/conformance/feature-gate.js.map +1 -0
  22. package/dist/conformance/fuzz.d.ts +108 -0
  23. package/dist/conformance/fuzz.d.ts.map +1 -0
  24. package/dist/conformance/fuzz.js +246 -0
  25. package/dist/conformance/fuzz.js.map +1 -0
  26. package/dist/conformance/leaks.d.ts +10 -0
  27. package/dist/conformance/leaks.d.ts.map +1 -0
  28. package/dist/conformance/leaks.js +23 -0
  29. package/dist/conformance/leaks.js.map +1 -0
  30. package/dist/conformance/pool.d.ts +49 -0
  31. package/dist/conformance/pool.d.ts.map +1 -0
  32. package/dist/conformance/pool.js +75 -0
  33. package/dist/conformance/pool.js.map +1 -0
  34. package/dist/conformance/rate-limit.d.ts +7 -0
  35. package/dist/conformance/rate-limit.d.ts.map +1 -0
  36. package/dist/conformance/rate-limit.js +372 -0
  37. package/dist/conformance/rate-limit.js.map +1 -0
  38. package/dist/conformance/scope.d.ts +15 -0
  39. package/dist/conformance/scope.d.ts.map +1 -0
  40. package/dist/conformance/scope.js +78 -0
  41. package/dist/conformance/scope.js.map +1 -0
  42. package/dist/conformance/seed-contract.d.ts +11 -0
  43. package/dist/conformance/seed-contract.d.ts.map +1 -0
  44. package/dist/conformance/seed-contract.js +680 -0
  45. package/dist/conformance/seed-contract.js.map +1 -0
  46. package/dist/conformance/shapes.d.ts +35 -0
  47. package/dist/conformance/shapes.d.ts.map +1 -0
  48. package/dist/conformance/shapes.js +162 -0
  49. package/dist/conformance/shapes.js.map +1 -0
  50. package/dist/conformance/specs.d.ts +21 -0
  51. package/dist/conformance/specs.d.ts.map +1 -0
  52. package/dist/conformance/specs.js +306 -0
  53. package/dist/conformance/specs.js.map +1 -0
  54. package/dist/conformance/suite.d.ts +209 -0
  55. package/dist/conformance/suite.d.ts.map +1 -0
  56. package/dist/conformance/suite.js +1538 -0
  57. package/dist/conformance/suite.js.map +1 -0
  58. package/dist/conformance/unique.d.ts +7 -0
  59. package/dist/conformance/unique.d.ts.map +1 -0
  60. package/dist/conformance/unique.js +586 -0
  61. package/dist/conformance/unique.js.map +1 -0
  62. package/dist/conformance/worker.d.ts +3 -0
  63. package/dist/conformance/worker.d.ts.map +1 -0
  64. package/dist/conformance/worker.js +27 -0
  65. package/dist/conformance/worker.js.map +1 -0
  66. package/dist/index.d.ts +8 -3
  67. package/dist/index.js +5 -2
  68. package/dist/reference/defects.d.ts +71 -1
  69. package/dist/reference/defects.d.ts.map +1 -1
  70. package/dist/reference/defects.js +74 -8
  71. package/dist/reference/defects.js.map +1 -1
  72. package/dist/reference/dialect.d.ts +6 -4
  73. package/dist/reference/dialect.d.ts.map +1 -1
  74. package/dist/reference/dialect.js +1 -0
  75. package/dist/reference/dialect.js.map +1 -1
  76. package/dist/reference/http.d.ts +17 -25
  77. package/dist/reference/http.d.ts.map +1 -1
  78. package/dist/reference/http.js +574 -224
  79. package/dist/reference/http.js.map +1 -1
  80. package/dist/reference/listing.d.ts +51 -0
  81. package/dist/reference/listing.d.ts.map +1 -0
  82. package/dist/reference/listing.js +256 -0
  83. package/dist/reference/listing.js.map +1 -0
  84. package/dist/reference/model.d.ts +35 -1
  85. package/dist/reference/model.d.ts.map +1 -1
  86. package/dist/reference/model.js +42 -0
  87. package/dist/reference/model.js.map +1 -1
  88. package/dist/reference/query.d.ts +132 -43
  89. package/dist/reference/query.d.ts.map +1 -1
  90. package/dist/reference/query.js +397 -315
  91. package/dist/reference/query.js.map +1 -1
  92. package/dist/reference/shapes.d.ts +60 -0
  93. package/dist/reference/shapes.d.ts.map +1 -0
  94. package/dist/reference/shapes.js +142 -0
  95. package/dist/reference/shapes.js.map +1 -0
  96. package/dist/reference/spec.d.ts +9 -2
  97. package/dist/reference/spec.d.ts.map +1 -1
  98. package/dist/reference/spec.js +291 -71
  99. package/dist/reference/spec.js.map +1 -1
  100. package/dist/reference/store-api.d.ts +14 -43
  101. package/dist/reference/store-api.d.ts.map +1 -1
  102. package/dist/reference/store-api.js +8 -58
  103. package/dist/reference/store-api.js.map +1 -1
  104. package/dist/reference/stores/memory.d.ts +12 -15
  105. package/dist/reference/stores/memory.d.ts.map +1 -1
  106. package/dist/reference/stores/memory.js +22 -70
  107. package/dist/reference/stores/memory.js.map +1 -1
  108. package/dist/reference/stores/postgres.d.ts +11 -23
  109. package/dist/reference/stores/postgres.d.ts.map +1 -1
  110. package/dist/reference/stores/postgres.js +53 -334
  111. package/dist/reference/stores/postgres.js.map +1 -1
  112. package/dist/reference/stores/sql-compile.d.ts +36 -0
  113. package/dist/reference/stores/sql-compile.d.ts.map +1 -0
  114. package/dist/reference/stores/sql-compile.js +95 -0
  115. package/dist/reference/stores/sql-compile.js.map +1 -0
  116. package/dist/reference/stores/sqlite.d.ts +12 -27
  117. package/dist/reference/stores/sqlite.d.ts.map +1 -1
  118. package/dist/reference/stores/sqlite.js +54 -355
  119. package/dist/reference/stores/sqlite.js.map +1 -1
  120. package/dist/report/console.d.ts.map +1 -1
  121. package/dist/report/console.js +23 -9
  122. package/dist/report/console.js.map +1 -1
  123. package/dist/report/matrix.d.ts +2 -0
  124. package/dist/report/matrix.d.ts.map +1 -1
  125. package/dist/report/matrix.js +63 -10
  126. package/dist/report/matrix.js.map +1 -1
  127. package/dist/report/render.d.ts +10 -1
  128. package/dist/report/render.d.ts.map +1 -1
  129. package/dist/report/render.js +75 -13
  130. package/dist/report/render.js.map +1 -1
  131. package/dist/runtime/async.d.ts +16 -3
  132. package/dist/runtime/async.d.ts.map +1 -1
  133. package/dist/runtime/async.js +24 -19
  134. package/dist/runtime/async.js.map +1 -1
  135. package/dist/runtime/auth.d.ts +8 -9
  136. package/dist/runtime/auth.d.ts.map +1 -1
  137. package/dist/runtime/auth.js +60 -62
  138. package/dist/runtime/auth.js.map +1 -1
  139. package/dist/runtime/body.d.ts +15 -3
  140. package/dist/runtime/body.d.ts.map +1 -1
  141. package/dist/runtime/body.js +61 -12
  142. package/dist/runtime/body.js.map +1 -1
  143. package/dist/runtime/check-costs.d.ts +15 -0
  144. package/dist/runtime/check-costs.d.ts.map +1 -0
  145. package/dist/runtime/check-costs.js +114 -0
  146. package/dist/runtime/check-costs.js.map +1 -0
  147. package/dist/runtime/check-ids.d.ts +15 -0
  148. package/dist/runtime/check-ids.d.ts.map +1 -0
  149. package/dist/runtime/check-ids.js +140 -0
  150. package/dist/runtime/check-ids.js.map +1 -0
  151. package/dist/runtime/checks.d.ts +88 -20
  152. package/dist/runtime/checks.d.ts.map +1 -1
  153. package/dist/runtime/checks.js +3288 -1947
  154. package/dist/runtime/checks.js.map +1 -1
  155. package/dist/runtime/client.d.ts +112 -0
  156. package/dist/runtime/client.d.ts.map +1 -1
  157. package/dist/runtime/client.js +271 -39
  158. package/dist/runtime/client.js.map +1 -1
  159. package/dist/runtime/cookies.d.ts +16 -2
  160. package/dist/runtime/cookies.d.ts.map +1 -1
  161. package/dist/runtime/cookies.js +83 -22
  162. package/dist/runtime/cookies.js.map +1 -1
  163. package/dist/runtime/exchanges.d.ts +4 -5
  164. package/dist/runtime/exchanges.d.ts.map +1 -1
  165. package/dist/runtime/exchanges.js +33 -55
  166. package/dist/runtime/exchanges.js.map +1 -1
  167. package/dist/runtime/exit.d.ts +40 -0
  168. package/dist/runtime/exit.d.ts.map +1 -0
  169. package/dist/runtime/exit.js +48 -0
  170. package/dist/runtime/exit.js.map +1 -0
  171. package/dist/runtime/feature-gate.d.ts +0 -9
  172. package/dist/runtime/feature-gate.d.ts.map +1 -1
  173. package/dist/runtime/feature-gate.js +0 -21
  174. package/dist/runtime/feature-gate.js.map +1 -1
  175. package/dist/runtime/finding.d.ts +49 -8
  176. package/dist/runtime/finding.d.ts.map +1 -1
  177. package/dist/runtime/finding.js +51 -8
  178. package/dist/runtime/finding.js.map +1 -1
  179. package/dist/runtime/fixture.d.ts +35 -28
  180. package/dist/runtime/fixture.d.ts.map +1 -1
  181. package/dist/runtime/fixture.js +92 -731
  182. package/dist/runtime/fixture.js.map +1 -1
  183. package/dist/runtime/generate.d.ts +63 -0
  184. package/dist/runtime/generate.d.ts.map +1 -0
  185. package/dist/runtime/generate.js +635 -0
  186. package/dist/runtime/generate.js.map +1 -0
  187. package/dist/runtime/headers.d.ts +6 -0
  188. package/dist/runtime/headers.d.ts.map +1 -0
  189. package/dist/runtime/headers.js +16 -0
  190. package/dist/runtime/headers.js.map +1 -0
  191. package/dist/runtime/path.d.ts +7 -0
  192. package/dist/runtime/path.d.ts.map +1 -0
  193. package/dist/runtime/path.js +44 -0
  194. package/dist/runtime/path.js.map +1 -0
  195. package/dist/runtime/payloads.d.ts +2 -0
  196. package/dist/runtime/payloads.d.ts.map +1 -1
  197. package/dist/runtime/payloads.js +2 -1
  198. package/dist/runtime/payloads.js.map +1 -1
  199. package/dist/runtime/rate-limit.d.ts +6 -4
  200. package/dist/runtime/rate-limit.d.ts.map +1 -1
  201. package/dist/runtime/rate-limit.js +22 -33
  202. package/dist/runtime/rate-limit.js.map +1 -1
  203. package/dist/runtime/redact.d.ts +24 -0
  204. package/dist/runtime/redact.d.ts.map +1 -0
  205. package/dist/runtime/redact.js +98 -0
  206. package/dist/runtime/redact.js.map +1 -0
  207. package/dist/runtime/run.d.ts +34 -2
  208. package/dist/runtime/run.d.ts.map +1 -1
  209. package/dist/runtime/run.js +374 -138
  210. package/dist/runtime/run.js.map +1 -1
  211. package/dist/runtime/runs.d.ts +5 -0
  212. package/dist/runtime/runs.d.ts.map +1 -1
  213. package/dist/runtime/runs.js +7 -1
  214. package/dist/runtime/runs.js.map +1 -1
  215. package/dist/runtime/teardown.d.ts +17 -4
  216. package/dist/runtime/teardown.d.ts.map +1 -1
  217. package/dist/runtime/teardown.js +49 -16
  218. package/dist/runtime/teardown.js.map +1 -1
  219. package/dist/runtime/transcript.d.ts +34 -2
  220. package/dist/runtime/transcript.d.ts.map +1 -1
  221. package/dist/runtime/transcript.js +119 -24
  222. package/dist/runtime/transcript.js.map +1 -1
  223. package/dist/runtime/unique.d.ts +2 -11
  224. package/dist/runtime/unique.d.ts.map +1 -1
  225. package/dist/runtime/unique.js +27 -53
  226. package/dist/runtime/unique.js.map +1 -1
  227. package/dist/runtime/validate.d.ts +13 -2
  228. package/dist/runtime/validate.d.ts.map +1 -1
  229. package/dist/runtime/validate.js +51 -31
  230. package/dist/runtime/validate.js.map +1 -1
  231. package/dist/runtime/wait.d.ts +2 -1
  232. package/dist/runtime/wait.d.ts.map +1 -1
  233. package/dist/runtime/wait.js +2 -36
  234. package/dist/runtime/wait.js.map +1 -1
  235. package/dist/runtime/world.d.ts +24 -1
  236. package/dist/runtime/world.d.ts.map +1 -1
  237. package/dist/runtime/world.js +101 -26
  238. package/dist/runtime/world.js.map +1 -1
  239. package/dist/spec/collection.d.ts +8 -2
  240. package/dist/spec/collection.d.ts.map +1 -1
  241. package/dist/spec/collection.js +47 -7
  242. package/dist/spec/collection.js.map +1 -1
  243. package/dist/spec/extensions.d.ts +11 -1
  244. package/dist/spec/extensions.d.ts.map +1 -1
  245. package/dist/spec/extensions.js +10 -2
  246. package/dist/spec/extensions.js.map +1 -1
  247. package/dist/spec/graph.d.ts +46 -0
  248. package/dist/spec/graph.d.ts.map +1 -1
  249. package/dist/spec/graph.js +175 -11
  250. package/dist/spec/graph.js.map +1 -1
  251. package/dist/spec/load.d.ts +25 -5
  252. package/dist/spec/load.d.ts.map +1 -1
  253. package/dist/spec/load.js +160 -59
  254. package/dist/spec/load.js.map +1 -1
  255. package/dist/spec/query-capabilities.d.ts +4 -0
  256. package/dist/spec/query-capabilities.d.ts.map +1 -1
  257. package/dist/spec/query-capabilities.js +6 -0
  258. package/dist/spec/query-capabilities.js.map +1 -1
  259. package/dist/spec/schema.d.ts +20 -0
  260. package/dist/spec/schema.d.ts.map +1 -0
  261. package/dist/spec/schema.js +118 -0
  262. package/dist/spec/schema.js.map +1 -0
  263. package/dist/spec/tag-schema.d.ts +12 -0
  264. package/dist/spec/tag-schema.d.ts.map +1 -0
  265. package/dist/spec/tag-schema.js +144 -0
  266. package/dist/spec/tag-schema.js.map +1 -0
  267. package/dist/spec/types.js +17 -1
  268. package/dist/spec/types.js.map +1 -1
  269. package/docs/api.md +59 -0
  270. package/docs/assumptions.md +99 -0
  271. package/docs/checks.md +183 -0
  272. package/docs/commands.md +214 -0
  273. package/docs/configuration.md +650 -0
  274. package/docs/model.md +184 -0
  275. package/docs/reference-defects.md +94 -0
  276. package/docs/reports.md +211 -0
  277. package/docs/tags.md +403 -0
  278. package/package.json +3 -1
@@ -1,31 +1,24 @@
1
1
  /**
2
2
  * SQLite-backed storage for the reference backend.
3
3
  *
4
- * The in-memory store executes the query grammar in JavaScript, which quietly sidesteps the
5
- * behaviours that break real APIs: NULL ordering, collation, LIKE escaping, type affinity, and
6
- * result order when a sort has no total order. Those are exactly the semantics oat's checks
7
- * reason about, so a reference backend that never touches SQL can only prove so much.
4
+ * The in-memory store evaluates the query AST in JavaScript, which quietly sidesteps what breaks
5
+ * real APIs: collation, type affinity, and result order when a sort has no total order. Running
6
+ * the same predicates through a real engine is what makes a check that passes here mean something.
8
7
  *
9
8
  * The engine is supplied as a driver, so the same SQL runs in-process via `node:sqlite` and
10
9
  * remotely against Cloudflare D1. That second target is not redundancy: D1 is a different build
11
10
  * with different compile flags, reached over the network, backed by a database that persists
12
11
  * between runs — three properties an in-process store cannot exhibit.
13
12
  */
14
- import { ENTITIES, OVERCLAIMED_FIELD, fieldsWhere } from "../model.js";
15
- import { decodeCursor, encodeCursor, project, SqlError, splitTopLevel, stripParens, } from "../store-api.js";
16
- export { SqlError };
17
- function countTerms(expression) {
18
- const group = /^(and|or)\((.*)\)$/s.exec(expression.trim());
19
- if (group?.[2] !== undefined) {
20
- return splitTopLevel(group[2]).reduce((sum, part) => sum + countTerms(part), 0);
21
- }
22
- return 1;
23
- }
13
+ import { ENTITIES } from "../model.js";
14
+ import { compileOrder, compileWhere, globText } from "./sql-compile.js";
24
15
  /** SQLite storage class per declared field type. */
25
16
  const AFFINITY = {
26
17
  boolean: "INTEGER",
27
18
  integer: "INTEGER",
28
19
  number: "REAL",
20
+ array: "TEXT",
21
+ object: "TEXT",
29
22
  string: "TEXT",
30
23
  };
31
24
  /**
@@ -53,28 +46,56 @@ export class SqlStore {
53
46
  defects;
54
47
  db;
55
48
  prefix;
56
- sequence = 0;
57
- constructor(defects, db, prefix) {
49
+ entities;
50
+ flavour;
51
+ constructor(defects, db, prefix, entities) {
58
52
  this.defects = defects;
59
53
  this.db = db;
60
54
  this.prefix = prefix;
55
+ this.entities = entities;
56
+ this.flavour = {
57
+ binary: (expr) => expr,
58
+ bind: (args, value) => {
59
+ args.push(value);
60
+ return "?";
61
+ },
62
+ bool: (value) => (value ? 1 : 0),
63
+ column: (_entity, field) => col(field),
64
+ hasElement: (expr, element, args) => {
65
+ args.push(element);
66
+ return `EXISTS (SELECT 1 FROM json_each(${expr}) WHERE value = ?)`;
67
+ },
68
+ /* GLOB is SQLite's case-sensitive matcher and needs no pragma, so the same SQL behaves
69
+ * identically in-process and on D1. Case-insensitive matching folds both sides with
70
+ * the engine's own LOWER so the two always agree on what "lower" means. */
71
+ like: (expr, segments, insensitive, args) => {
72
+ args.push(globText(segments));
73
+ return insensitive ? `LOWER(${expr}) GLOB LOWER(?)` : `${expr} GLOB ?`;
74
+ },
75
+ position: (expr, needle, caseSensitive, args) => {
76
+ args.push(needle);
77
+ return caseSensitive ? `instr(${expr}, ?)` : `instr(LOWER(${expr}), LOWER(?))`;
78
+ },
79
+ random: "random()",
80
+ toText: (expr) => `CAST(${expr} AS TEXT)`,
81
+ };
61
82
  }
62
83
  /**
63
84
  * Schema creation is a set of round trips on a networked engine, so it cannot live in a
64
85
  * constructor. `prefix` isolates one run's tables from another's on a shared database.
65
86
  */
66
- static async create(defects, driver, prefix = "") {
67
- const store = new SqlStore(defects, driver, prefix);
87
+ static async create(defects, driver, prefix = "", entities = ENTITIES) {
88
+ const store = new SqlStore(defects, driver, prefix, entities);
68
89
  /* One statement per table would be one network round trip per table. Both drivers accept
69
90
  * a multi-statement script, so the whole schema costs a single trip. */
70
- await driver.exec(ENTITIES.map((entity) => store.ddl(entity)).join(";\n"));
91
+ await driver.exec(entities.map((entity) => store.ddl(entity)).join(";\n"));
71
92
  return store;
72
93
  }
73
94
  async close() {
74
95
  /* Persistent engines keep whatever this run created unless it is dropped. Failures here
75
96
  * are swallowed: teardown must not mask the result the run was there to produce. */
76
97
  if (this.prefix !== "") {
77
- for (const entity of ENTITIES) {
98
+ for (const entity of this.entities) {
78
99
  try {
79
100
  await this.db.exec(`DROP TABLE IF EXISTS ${tableName(entity, this.prefix)}`);
80
101
  }
@@ -95,15 +116,6 @@ export class SqlStore {
95
116
  return (`CREATE TABLE ${table} (\n${columns.join(",\n")}\n);\n` +
96
117
  `CREATE INDEX "${this.prefix}idx_${entity.plural}_id" ON ${table} (${col(entity.identity)})`);
97
118
  }
98
- nextId(prefix) {
99
- this.sequence += 1;
100
- return `${prefix}_${String(this.sequence).padStart(6, "0")}`;
101
- }
102
- now() {
103
- /* Monotonic and derived from the sequence: wall-clock timestamps make ordering
104
- * assertions flaky for reasons that have nothing to do with the backend. */
105
- return 1_700_000_000_000 + this.sequence * 1000;
106
- }
107
119
  /** The stored column for a field — diverges from the declared name only under the defect. */
108
120
  physical(name) {
109
121
  return this.defects.has("COLUMN_NAME_MISMATCH") && name === "name" ? col("mislabelled_name") : col(name);
@@ -154,8 +166,6 @@ export class SqlStore {
154
166
  return row === undefined ? null : this.decode(entity, row);
155
167
  }
156
168
  async update(entity, id, patch) {
157
- if (this.defects.has("CONCURRENT_WRITE_LOST"))
158
- return this.readModifyWrite(entity, id, patch);
159
169
  const names = Object.keys(patch).filter((n) => entity.fields.some((f) => f.name === n));
160
170
  if (names.length === 0)
161
171
  return this.byId(entity, id);
@@ -165,30 +175,16 @@ export class SqlStore {
165
175
  const row = written[0];
166
176
  return row === undefined ? null : this.decode(entity, row);
167
177
  }
168
- /**
169
- * Reads the row, yields, then writes every column back — the `save(entity)` pattern.
170
- *
171
- * A synchronous driver does not prevent this: the lost update comes from the *handler*
172
- * holding state across an await, not from engine-level locking, so it reproduces here
173
- * exactly as it does on a networked database.
174
- */
175
- async readModifyWrite(entity, id, patch) {
176
- const current = await this.byId(entity, id);
177
- if (current === null)
178
- return null;
179
- await new Promise((resolve) => setTimeout(resolve, 15));
180
- const merged = { ...current, ...patch };
181
- const names = entity.fields.map((f) => f.name);
182
- const assignments = names.map((n) => `${this.physical(n)} = ?`).join(", ");
183
- await this.db.run(`UPDATE ${tableName(entity, this.prefix)} SET ${assignments} WHERE ${col(entity.identity)} = ?`, [
184
- ...names.map((n) => toSql(merged[n])),
185
- id,
186
- ]);
187
- return this.byId(entity, id);
188
- }
189
178
  async remove(entity, id) {
190
179
  await this.db.run(`DELETE FROM ${tableName(entity, this.prefix)} WHERE ${col(entity.identity)} = ?`, [id]);
191
180
  }
181
+ async select(entity, plan) {
182
+ const args = [];
183
+ const where = compileWhere(plan.where, entity, this.flavour, args);
184
+ const order = compileOrder(plan.order, plan.collation, plan.shuffleTies, entity, this.flavour);
185
+ const rows = await this.db.all(`SELECT ${this.selectList(entity)} FROM ${tableName(entity, this.prefix)} WHERE ${where}${order}`, args.map(toSql));
186
+ return rows.map((row) => this.decode(entity, row));
187
+ }
192
188
  /**
193
189
  * Converts stored values back to their declared shape. SQLite has no boolean type, so a
194
190
  * field declared boolean comes back as 0/1 and would fail its own response schema.
@@ -201,296 +197,16 @@ export class SqlStore {
201
197
  out[field.name] = null;
202
198
  continue;
203
199
  }
204
- out[field.name] = field.type === "boolean" ? raw === 1 : raw;
200
+ out[field.name] =
201
+ field.type === "boolean"
202
+ ? raw === 1
203
+ : (field.type === "object" || field.type === "array") && typeof raw === "string"
204
+ ? JSON.parse(raw)
205
+ : raw;
205
206
  }
206
207
  return out;
207
208
  }
208
- /* ------------------------------------------------------------------ querying */
209
- async query(entity, scope, params, options) {
210
- const where = [];
211
- const args = [];
212
- /* Ancestor scoping — `.../tables/{table_id}/rows` lists that table only. The defect
213
- * applies scoping to the plain listing but drops it once a filter is present, which is
214
- * how a filter turns into an authorization bypass. */
215
- const scoped = !(this.defects.has("TENANT_LEAK_VIA_FILTER") && params.filter !== undefined);
216
- for (const parent of scoped ? entity.parents : []) {
217
- const value = scope[parent];
218
- if (value === undefined)
219
- continue;
220
- if (!entity.fields.some((f) => f.name === parent))
221
- continue;
222
- where.push(`${col(parent)} = ?`);
223
- args.push(value);
224
- }
225
- const soft = options.softDeleteField;
226
- if (soft !== undefined && !this.defects.has("SOFT_DELETE_LEAK")) {
227
- const mentioned = params.filter?.includes(soft) === true;
228
- if (!mentioned)
229
- where.push(`${col(soft)} IS NULL`);
230
- }
231
- if (params.filter !== undefined && params.filter !== "") {
232
- const compiled = this.compileFilter(params.filter, entity);
233
- where.push(compiled.sql);
234
- args.push(...compiled.args);
235
- }
236
- if (params.q !== undefined && params.q !== "" && !this.defects.has("SEARCH_IGNORED")) {
237
- const searchable = fieldsWhere(entity, "searchable");
238
- const tokens = params.q
239
- .split(/\s+/)
240
- .map((token) => token.trim())
241
- .filter((token) => token.length > 0);
242
- if (searchable.length > 0) {
243
- for (const token of tokens) {
244
- const clauses = searchable.map((f) => `${col(f)} LIKE ? ESCAPE '\\'`);
245
- where.push(`(${clauses.join(" OR ")})`);
246
- for (const _ of searchable)
247
- args.push(`%${escapeLike(token)}%`);
248
- }
249
- }
250
- }
251
- const orderSql = this.compileOrder(params.order, entity);
252
- if (this.dropNullsFor !== null)
253
- where.push(`${col(this.dropNullsFor)} IS NOT NULL`);
254
- const whereSql = where.length > 0 ? ` WHERE ${where.join(" AND ")}` : "";
255
- const countWhere = this.defects.has("COUNT_IGNORES_FILTER") ? "" : whereSql;
256
- const countArgs = this.defects.has("COUNT_IGNORES_FILTER") ? [] : args;
257
- const counted = await this.db.all(`SELECT COUNT(*) AS n FROM ${tableName(entity, this.prefix)}${countWhere}`, countArgs);
258
- const total = { n: Number(counted[0]?.n ?? 0) };
259
- const requested = params.limit ?? entity.defaultLimit;
260
- const limit = this.defects.has("LIMIT_EXCEEDS_MAX") ? requested : Math.min(requested, entity.maxLimit);
261
- let offset;
262
- let page;
263
- if (params.cursor !== undefined && params.cursor !== "") {
264
- const afterId = decodeCursor(params.cursor);
265
- /* The cursor boundary must be resolved under exactly the listing's ordering. Under the
266
- * defect it uses NOCASE while the listing uses BINARY, so the index found here is not
267
- * the index the listing would have produced and the page boundary lands elsewhere. */
268
- /* NOCASE against the listing's BINARY: with mixed-case data the two disagree, because
269
- * BINARY sorts every uppercase letter before every lowercase one. */
270
- const cursorOrderSql = this.defects.has("COLLATION_INCONSISTENT")
271
- ? orderSql.replace(/(".*?")( (?:ASC|DESC))/g, "$1 COLLATE NOCASE$2")
272
- : orderSql;
273
- const ordered = (await this.db.all(`SELECT ${col(entity.identity)} AS id FROM ${tableName(entity, this.prefix)}${whereSql}${cursorOrderSql}`, args));
274
- const index = ordered.findIndex((r) => String(r.id) === afterId);
275
- offset = index === -1 ? 0 : index + (this.defects.has("CURSOR_DRIFT") ? 0 : 1);
276
- page = null;
277
- }
278
- else {
279
- const requestedPage = Math.max(params.page ?? 1, 1);
280
- offset = (requestedPage - 1) * limit + (this.defects.has("OFF_BY_ONE_PAGE") && requestedPage > 1 ? 1 : 0);
281
- page = requestedPage;
282
- }
283
- const window = this.defects.has("LIMIT_IGNORED") ? -1 : limit;
284
- const rows = await this.db.all(`SELECT ${this.selectList(entity)} FROM ${tableName(entity, this.prefix)}${whereSql}${orderSql} LIMIT ? OFFSET ?`, [...args, window, offset]);
285
- /* The "no results must mean a bad query" guard — falls back to the unfiltered set and
286
- * makes an empty result impossible to express. */
287
- const effective = this.defects.has("EMPTY_RESULT_RETURNS_ALL") && rows.length === 0 && where.length > 0
288
- ? await this.db.all(`SELECT ${this.selectList(entity)} FROM ${tableName(entity, this.prefix)}${orderSql} LIMIT ? OFFSET ?`, [window, offset])
289
- : rows;
290
- const decoded = effective.map((row) => this.decode(entity, row));
291
- const last = decoded.at(-1);
292
- const hasMore = this.defects.has("HASMORE_ALWAYS_FALSE") ? false : offset + decoded.length < total.n;
293
- return {
294
- count: this.defects.has("COUNT_ALWAYS_ZERO") ? 0 : total.n,
295
- hasMore,
296
- items: decoded
297
- .map((row) => (options.transform === undefined ? row : options.transform(row)))
298
- .map((row) => project(row, params.select, this.defects.has("SELECT_IGNORED"), this.defects.has("SPEC_OVERCLAIMS_SELECTABLE") ? [OVERCLAIMED_FIELD] : [], {
299
- dropRequested: this.defects.has("SELECT_FIELD_MISSING"),
300
- identity: entity.identity,
301
- ...(entity.filterCatalog?.selectUnknown === undefined
302
- ? {}
303
- : { selectUnknown: entity.filterCatalog.selectUnknown }),
304
- })),
305
- limit,
306
- nextCursor: hasMore && last !== undefined ? encodeCursor(String(last[entity.identity])) : null,
307
- page,
308
- };
309
- }
310
- /* ------------------------------------------------------------- filter → SQL */
311
- compileFilter(expression, entity, top = true) {
312
- if (top && entity.filterCatalog?.maxFilterConditions !== undefined) {
313
- const count = countTerms(expression);
314
- if (count > entity.filterCatalog.maxFilterConditions) {
315
- throw new SqlError("invalid_filter", `more than ${entity.filterCatalog.maxFilterConditions} filter conditions`);
316
- }
317
- }
318
- const trimmed = expression.trim();
319
- const group = /^(and|or)\((.*)\)$/s.exec(trimmed);
320
- if (group?.[1] && group[2] !== undefined) {
321
- const parts = splitTopLevel(group[2]).map((part) => this.compileFilter(part, entity, false));
322
- if (parts.length === 0)
323
- throw new SqlError("invalid_filter", "empty filter group");
324
- const effective = this.defects.has("FILTER_GROUP_COMBINATOR_SWAPPED")
325
- ? group[1] === "and"
326
- ? "or"
327
- : "and"
328
- : group[1];
329
- return {
330
- args: parts.flatMap((p) => p.args),
331
- sql: `(${parts.map((p) => p.sql).join(effective === "and" ? " AND " : " OR ")})`,
332
- };
333
- }
334
- const segments = trimmed.split(".");
335
- if (segments.length < 3) {
336
- throw new SqlError("invalid_filter", `malformed filter term "${trimmed}"`);
337
- }
338
- const [field, rawOp] = segments;
339
- const op = rawOp === "ne" ? "neq" : rawOp;
340
- const raw = segments.slice(2).join(".");
341
- const allowed = entity.filterCatalog?.opsByField?.[field];
342
- if (allowed !== undefined && rawOp !== undefined && !allowed.includes(rawOp) && !allowed.includes(op)) {
343
- if (this.defects.has("FILTER_ILLEGAL_OP_IGNORED"))
344
- return { args: [], sql: "1 = 1" };
345
- throw new SqlError("invalid_filter", `unknown operator "${rawOp}"`);
346
- }
347
- /* Under the overclaim defect the backend refuses a field the document still declares
348
- * filterable — the backend is not wrong to refuse, the document is wrong to promise. */
349
- const filterable = this.defects.has("SPEC_OVERCLAIMS_FILTERABLE")
350
- ? fieldsWhere(entity, "filterable").filter((f) => f !== OVERCLAIMED_FIELD)
351
- : fieldsWhere(entity, "filterable");
352
- if (!filterable.includes(field)) {
353
- if (this.defects.has("FILTER_IGNORED"))
354
- return { args: [], sql: "1 = 1" };
355
- throw new SqlError("invalid_filter", `field "${field}" is not filterable`);
356
- }
357
- const declared = entity.fields.find((f) => f.name === field);
358
- const numeric = declared?.type === "integer" || declared?.type === "number";
359
- /* SQLite compares by storage class, so a numeric column normally orders numerically.
360
- * Casting to TEXT is what reproduces `amount > 9` missing 10. */
361
- const ref = numeric && this.defects.has("NUMERIC_COMPARED_AS_TEXT") ? `CAST(${col(field)} AS TEXT)` : col(field);
362
- const asText = !numeric || this.defects.has("NUMERIC_COMPARED_AS_TEXT");
363
- switch (op) {
364
- case "eq":
365
- if (this.defects.has("FILTER_EQ_NOT_APPLIED"))
366
- return { args: [], sql: "1 = 1" };
367
- return { args: [coerce(raw, asText)], sql: `${ref} = ?` };
368
- case "neq":
369
- /* Correct negation must re-admit NULLs: in SQL `col <> x` is NULL — not true — for
370
- * NULL rows, so they silently vanish without the explicit IS NULL branch. The
371
- * defect drops that branch, which is the real-world bug this models. */
372
- return this.defects.has("NEQ_DROPS_NULLS")
373
- ? { args: [coerce(raw)], sql: `${ref} <> ?` }
374
- : { args: [coerce(raw)], sql: `(${ref} <> ? OR ${ref} IS NULL)` };
375
- case "gt":
376
- return { args: [coerce(raw, asText)], sql: `${ref} > ?` };
377
- case "gte":
378
- if (this.defects.has("FILTER_GTE_IS_GT"))
379
- return { args: [coerce(raw, asText)], sql: `${ref} > ?` };
380
- return { args: [coerce(raw, asText)], sql: `${ref} >= ?` };
381
- case "lt":
382
- return { args: [coerce(raw, asText)], sql: `${ref} < ?` };
383
- case "lte":
384
- return { args: [coerce(raw, asText)], sql: `${ref} <= ?` };
385
- case "in":
386
- case "nin": {
387
- const members = stripParens(raw)
388
- .split(",")
389
- .map((s) => s.trim())
390
- .filter((s) => s.length > 0)
391
- .map((s) => coerce(s));
392
- if (members.length === 0) {
393
- if (entity.filterCatalog?.emptyIn === "reject")
394
- throw new SqlError("invalid_filter", "empty in()");
395
- return { args: [], sql: op === "in" ? "1 = 0" : "1 = 1" };
396
- }
397
- if (entity.filterCatalog?.maxInValues !== undefined && members.length > entity.filterCatalog.maxInValues) {
398
- throw new SqlError("invalid_filter", "in() exceeds maxInValues");
399
- }
400
- const effective = this.defects.has("FILTER_IN_FIRST_ONLY") && op === "in" && members[0] !== undefined ? [members[0]] : members;
401
- const holes = effective.map(() => "?").join(", ");
402
- return {
403
- args: effective,
404
- sql: op === "in" ? `${ref} IN (${holes})` : `${ref} NOT IN (${holes})`,
405
- };
406
- }
407
- case "is":
408
- if (raw === "null") {
409
- if (this.defects.has("FILTER_IS_NULL_MATCHES_ALL"))
410
- return { args: [], sql: "1 = 1" };
411
- return { args: [], sql: `${ref} IS NULL` };
412
- }
413
- if (raw === "notnull" || raw === "not.null")
414
- return { args: [], sql: `${ref} IS NOT NULL` };
415
- if (raw === "true")
416
- return { args: [1], sql: `${ref} = ?` };
417
- if (raw === "false")
418
- return { args: [0], sql: `${ref} = ?` };
419
- throw new SqlError("invalid_filter", `is.${raw} is not a recognised predicate`);
420
- case "contains":
421
- return { args: [coerce(raw)], sql: `${ref} LIKE '%' || ? || '%' ESCAPE '\\'` };
422
- case "like":
423
- case "ilike": {
424
- /* `*` is the grammar's wildcard; % and _ are literals and must be escaped, or a
425
- * value containing them matches far more than the caller asked for. */
426
- const pattern = this.defects.has("LIKE_UNESCAPED")
427
- ? raw.replace(/\*/g, "%")
428
- : escapeLike(raw).replace(/\*/g, "%");
429
- const insensitive = op === "ilike" && !this.defects.has("FILTER_ILIKE_IS_LIKE");
430
- return {
431
- args: [insensitive ? pattern.toLowerCase() : pattern],
432
- sql: insensitive ? `LOWER(${ref}) LIKE ? ESCAPE '\\'` : `${ref} LIKE ? ESCAPE '\\'`,
433
- };
434
- }
435
- default:
436
- throw new SqlError("invalid_filter", `unknown operator "${op}"`);
437
- }
438
- }
439
- /** Set by compileOrder when the descending-drops-nulls defect applies to this query. */
440
- dropNullsFor = null;
441
- compileOrder(expression, entity) {
442
- this.dropNullsFor = null;
443
- const terms = [];
444
- if (expression !== undefined && expression !== "") {
445
- const rawTerms = splitTopLevel(expression);
446
- const used = this.defects.has("SORT_MULTI_KEY_IGNORED") ? rawTerms.slice(0, 1) : rawTerms;
447
- for (const raw of used) {
448
- const [field, ...modifiers] = raw.split(".");
449
- /* Under the overclaim defect the backend refuses a field the document still declares
450
- * sortable — the backend is not wrong to refuse, the document is wrong to promise. */
451
- const sortable = this.defects.has("SPEC_OVERCLAIMS_SORTABLE")
452
- ? fieldsWhere(entity, "sortable").filter((f) => f !== OVERCLAIMED_FIELD)
453
- : fieldsWhere(entity, "sortable");
454
- if (field === undefined || !sortable.includes(field)) {
455
- throw new SqlError("invalid_order", `field "${field ?? ""}" is not sortable`);
456
- }
457
- const descending = modifiers.includes("desc");
458
- const nullsFirst = modifiers.includes("nullsfirst")
459
- ? true
460
- : modifiers.includes("nullslast")
461
- ? false
462
- : descending;
463
- const declared = entity.fields.find((f) => f.name === field);
464
- const numeric = declared?.type === "integer" || declared?.type === "number";
465
- const asText = numeric && (this.defects.has("NUMERIC_COMPARED_AS_TEXT") || this.defects.has("SORT_NUMERIC_AS_TEXT"));
466
- const ref = asText ? `CAST(${col(field)} AS TEXT)` : col(field);
467
- terms.push(`${col(field)} IS NULL ${nullsFirst ? "DESC" : "ASC"}`);
468
- terms.push(`${ref} ${descending ? "DESC" : "ASC"}`);
469
- if (descending && this.defects.has("SORT_DESC_DROPS_NULLS")) {
470
- this.dropNullsFor = field;
471
- }
472
- }
473
- }
474
- if (this.defects.has("ORDER_IGNORED")) {
475
- this.dropNullsFor = null;
476
- return "";
477
- }
478
- /* The tiebreak is what makes pagination sound: without a total order, equal keys may come
479
- * back in any order and a page boundary moves between requests. */
480
- if (this.defects.has("UNSTABLE_SORT")) {
481
- /* Without a tiebreak, rows with equal keys come back in whatever order the plan
482
- * produced — arbitrary, and different between two identical queries. SQLite would
483
- * otherwise fall back to rowid and look stable by accident, so ties are randomised
484
- * to model the real behaviour rather than a friendlier version of it. */
485
- terms.push("random()");
486
- }
487
- else {
488
- terms.push(`${col(entity.identity)} ASC`);
489
- }
490
- return terms.length > 0 ? ` ORDER BY ${terms.join(", ")}` : "";
491
- }
492
209
  }
493
- /* ---------------------------------------------------------------------- helpers */
494
210
  function toSql(value) {
495
211
  if (value === null || value === undefined)
496
212
  return null;
@@ -500,21 +216,4 @@ function toSql(value) {
500
216
  return JSON.stringify(value);
501
217
  return value;
502
218
  }
503
- function coerce(raw, asText = false) {
504
- if (raw === "null")
505
- return null;
506
- if (raw === "true")
507
- return 1;
508
- if (raw === "false")
509
- return 0;
510
- /* A numeric column compared as text needs a text bind too, or SQLite would compare a TEXT
511
- * expression against an INTEGER and match nothing at all — a different bug than the one
512
- * being modelled. */
513
- if (!asText && raw !== "" && !Number.isNaN(Number(raw)))
514
- return Number(raw);
515
- return raw;
516
- }
517
- function escapeLike(value) {
518
- return value.replace(/[\\%_]/g, (ch) => `\\${ch}`);
519
- }
520
219
  //# sourceMappingURL=sqlite.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sqlite.js","sourceRoot":"","sources":["../../../src/reference/stores/sqlite.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sqlite.js","sourceRoot":"","sources":["../../../src/reference/stores/sqlite.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"console.d.ts","sourceRoot":"","sources":["../../src/report/console.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;AAE5F,OAAO,KAAK,EAAe,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAC9D,OAAO,EAAqB,KAAK,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAUvE,MAAM,WAAW,YAAY;IAC5B,KAAK,CAAC,EAAE,iBAAiB,CAAA;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;IACvC,KAAK,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,0BAA0B,CAAC,CAAA;CACzE;AAED;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CA+BzD,CAAA;AA0CD,iBAAS,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,SAAS,GAAG,MAAM,CAuE1E;AA2MD,iBAAS,MAAM,CACd,KAAK,EAAE,SAAS,EAChB,YAAY,EAAE,MAAM,EAAE,EACtB,MAAM,EAAE,OAAO,EACf,MAAM,CAAC,EAAE,YAAY,GACnB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CA8OpC;AAED,eAAO,MAAM,MAAM;;;CAAmB,CAAA"}
1
+ {"version":3,"file":"console.d.ts","sourceRoot":"","sources":["../../src/report/console.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;AAE5F,OAAO,KAAK,EAAe,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAC9D,OAAO,EAAqB,KAAK,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAUvE,MAAM,WAAW,YAAY;IAC5B,KAAK,CAAC,EAAE,iBAAiB,CAAA;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;IACvC,KAAK,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,0BAA0B,CAAC,CAAA;CACzE;AAED;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAsCzD,CAAA;AA2CD,iBAAS,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,SAAS,GAAG,MAAM,CA+E1E;AA0MD,iBAAS,MAAM,CACd,KAAK,EAAE,SAAS,EAChB,YAAY,EAAE,MAAM,EAAE,EACtB,MAAM,EAAE,OAAO,EACf,MAAM,CAAC,EAAE,YAAY,GACnB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CA8OpC;AAED,eAAO,MAAM,MAAM;;;CAAmB,CAAA"}