@antelopejs/postgres 0.2.1 → 0.2.3

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 (284) hide show
  1. package/README.md +6 -5
  2. package/dist/config.d.ts +1 -0
  3. package/dist/config.js +7 -3
  4. package/dist/config.js.map +1 -1
  5. package/dist/connect-failure.d.ts +1 -0
  6. package/dist/connect-failure.js +39 -0
  7. package/dist/connect-failure.js.map +1 -0
  8. package/dist/connection.d.ts +2 -1
  9. package/dist/connection.js +19 -2
  10. package/dist/connection.js.map +1 -1
  11. package/dist/implementations/catalog/index.js +3 -6
  12. package/dist/implementations/catalog/index.js.map +1 -1
  13. package/dist/implementations/database/coerce.js +20 -20
  14. package/dist/implementations/database/coerce.js.map +1 -1
  15. package/dist/implementations/database/context.d.ts +1 -0
  16. package/dist/implementations/database/context.js +4 -0
  17. package/dist/implementations/database/context.js.map +1 -1
  18. package/dist/implementations/database/convergence.d.ts +22 -0
  19. package/dist/implementations/database/convergence.js +183 -0
  20. package/dist/implementations/database/convergence.js.map +1 -0
  21. package/dist/implementations/database/cursors.js +3 -0
  22. package/dist/implementations/database/cursors.js.map +1 -1
  23. package/dist/implementations/database/ddl.d.ts +6 -26
  24. package/dist/implementations/database/ddl.js +28 -195
  25. package/dist/implementations/database/ddl.js.map +1 -1
  26. package/dist/implementations/database/duplicate-key.d.ts +2 -0
  27. package/dist/implementations/database/duplicate-key.js +49 -0
  28. package/dist/implementations/database/duplicate-key.js.map +1 -0
  29. package/dist/implementations/database/external-column-profile.js +6 -1
  30. package/dist/implementations/database/external-column-profile.js.map +1 -1
  31. package/dist/implementations/database/external-discovery.js +5 -5
  32. package/dist/implementations/database/external-discovery.js.map +1 -1
  33. package/dist/implementations/database/external-measures.js.map +1 -1
  34. package/dist/implementations/database/external-payload.d.ts +2 -2
  35. package/dist/implementations/database/external-payload.js +23 -13
  36. package/dist/implementations/database/external-payload.js.map +1 -1
  37. package/dist/implementations/database/external-schema.d.ts +2 -2
  38. package/dist/implementations/database/external-schema.js +3 -3
  39. package/dist/implementations/database/external-schema.js.map +1 -1
  40. package/dist/implementations/database/external-types.js +23 -16
  41. package/dist/implementations/database/external-types.js.map +1 -1
  42. package/dist/implementations/database/external-writes.d.ts +7 -1
  43. package/dist/implementations/database/external-writes.js +22 -21
  44. package/dist/implementations/database/external-writes.js.map +1 -1
  45. package/dist/implementations/database/feed-pipeline.js +3 -2
  46. package/dist/implementations/database/feed-pipeline.js.map +1 -1
  47. package/dist/implementations/database/feeds.d.ts +1 -1
  48. package/dist/implementations/database/feeds.js +36 -45
  49. package/dist/implementations/database/feeds.js.map +1 -1
  50. package/dist/implementations/database/fields.d.ts +9 -13
  51. package/dist/implementations/database/fields.js +25 -21
  52. package/dist/implementations/database/fields.js.map +1 -1
  53. package/dist/implementations/database/guards.d.ts +5 -0
  54. package/dist/implementations/database/guards.js +23 -0
  55. package/dist/implementations/database/guards.js.map +1 -0
  56. package/dist/implementations/database/introspect.d.ts +1 -1
  57. package/dist/implementations/database/listener.js +9 -3
  58. package/dist/implementations/database/listener.js.map +1 -1
  59. package/dist/implementations/database/migrate.d.ts +2 -2
  60. package/dist/implementations/database/migrate.js +10 -10
  61. package/dist/implementations/database/migrate.js.map +1 -1
  62. package/dist/implementations/database/payload.d.ts +3 -3
  63. package/dist/implementations/database/payload.js +4 -4
  64. package/dist/implementations/database/pipeline.d.ts +6 -2
  65. package/dist/implementations/database/pipeline.js +4 -1
  66. package/dist/implementations/database/pipeline.js.map +1 -1
  67. package/dist/implementations/database/query.js +27 -12
  68. package/dist/implementations/database/query.js.map +1 -1
  69. package/dist/implementations/database/reaper.js +6 -4
  70. package/dist/implementations/database/reaper.js.map +1 -1
  71. package/dist/implementations/database/relation.d.ts +2 -12
  72. package/dist/implementations/database/relation.js +5 -141
  73. package/dist/implementations/database/relation.js.map +1 -1
  74. package/dist/implementations/database/render.d.ts +11 -0
  75. package/dist/implementations/database/render.js +147 -0
  76. package/dist/implementations/database/render.js.map +1 -0
  77. package/dist/implementations/database/result.d.ts +2 -2
  78. package/dist/implementations/database/result.js +18 -19
  79. package/dist/implementations/database/result.js.map +1 -1
  80. package/dist/implementations/database/row-source.d.ts +10 -10
  81. package/dist/implementations/database/row-source.js +22 -19
  82. package/dist/implementations/database/row-source.js.map +1 -1
  83. package/dist/implementations/database/schema.d.ts +3 -2
  84. package/dist/implementations/database/schema.js +35 -19
  85. package/dist/implementations/database/schema.js.map +1 -1
  86. package/dist/implementations/database/selection.js +13 -7
  87. package/dist/implementations/database/selection.js.map +1 -1
  88. package/dist/implementations/database/sql.d.ts +7 -3
  89. package/dist/implementations/database/sql.js.map +1 -1
  90. package/dist/implementations/database/stage.js +3 -2
  91. package/dist/implementations/database/stage.js.map +1 -1
  92. package/dist/implementations/database/stages-aggregate.js +7 -5
  93. package/dist/implementations/database/stages-aggregate.js.map +1 -1
  94. package/dist/implementations/database/stages-array.js.map +1 -1
  95. package/dist/implementations/database/stages-core.js +2 -1
  96. package/dist/implementations/database/stages-core.js.map +1 -1
  97. package/dist/implementations/database/stages-date.js +2 -1
  98. package/dist/implementations/database/stages-date.js.map +1 -1
  99. package/dist/implementations/database/stages-group.js +11 -6
  100. package/dist/implementations/database/stages-group.js.map +1 -1
  101. package/dist/implementations/database/stages-join.js +13 -11
  102. package/dist/implementations/database/stages-join.js.map +1 -1
  103. package/dist/implementations/database/stages-numeric.js.map +1 -1
  104. package/dist/implementations/database/stages-object.js +1 -1
  105. package/dist/implementations/database/stages-object.js.map +1 -1
  106. package/dist/implementations/database/stages-projection.js +9 -8
  107. package/dist/implementations/database/stages-projection.js.map +1 -1
  108. package/dist/implementations/database/stages-rows.js +10 -8
  109. package/dist/implementations/database/stages-rows.js.map +1 -1
  110. package/dist/implementations/database/stages-selection.js +6 -4
  111. package/dist/implementations/database/stages-selection.js.map +1 -1
  112. package/dist/implementations/database/stages-string.js +7 -6
  113. package/dist/implementations/database/stages-string.js.map +1 -1
  114. package/dist/implementations/database/subquery.d.ts +1 -1
  115. package/dist/implementations/database/subquery.js +7 -5
  116. package/dist/implementations/database/subquery.js.map +1 -1
  117. package/dist/implementations/database/types.d.ts +5 -5
  118. package/dist/implementations/database/types.js +11 -11
  119. package/dist/implementations/database/types.js.map +1 -1
  120. package/dist/implementations/database/utils.js +2 -1
  121. package/dist/implementations/database/utils.js.map +1 -1
  122. package/dist/implementations/database/value.d.ts +1 -1
  123. package/dist/implementations/database/value.js +34 -33
  124. package/dist/implementations/database/value.js.map +1 -1
  125. package/dist/implementations/database/writes-atomic.js +6 -5
  126. package/dist/implementations/database/writes-atomic.js.map +1 -1
  127. package/dist/implementations/database/writes-identity.js +18 -19
  128. package/dist/implementations/database/writes-identity.js.map +1 -1
  129. package/dist/implementations/database/writes-insert.js +16 -22
  130. package/dist/implementations/database/writes-insert.js.map +1 -1
  131. package/dist/implementations/database/writes-shared.d.ts +1 -1
  132. package/dist/implementations/database/writes-shared.js +11 -7
  133. package/dist/implementations/database/writes-shared.js.map +1 -1
  134. package/dist/implementations/database/writes.d.ts +22 -1
  135. package/dist/implementations/database/writes.js +6 -3
  136. package/dist/implementations/database/writes.js.map +1 -1
  137. package/dist/test/catalog-owned.test.js +2 -0
  138. package/dist/test/catalog-owned.test.js.map +1 -1
  139. package/dist/test/contention.test.js.map +1 -1
  140. package/dist/test/duplicate-key.test.d.ts +1 -0
  141. package/dist/test/duplicate-key.test.js +103 -0
  142. package/dist/test/duplicate-key.test.js.map +1 -0
  143. package/dist/test/indexes.test.js +7 -7
  144. package/dist/test/indexes.test.js.map +1 -1
  145. package/dist/test/unit/coerce.spec.js +7 -7
  146. package/dist/test/unit/coerce.spec.js.map +1 -1
  147. package/dist/test/unit/config.spec.js +3 -1
  148. package/dist/test/unit/config.spec.js.map +1 -1
  149. package/dist/test/unit/connect-failure.spec.d.ts +1 -0
  150. package/dist/test/unit/connect-failure.spec.js +50 -0
  151. package/dist/test/unit/connect-failure.spec.js.map +1 -0
  152. package/dist/test/unit/connection.spec.js +16 -18
  153. package/dist/test/unit/connection.spec.js.map +1 -1
  154. package/dist/test/unit/convergence.spec.d.ts +1 -0
  155. package/dist/test/unit/convergence.spec.js +347 -0
  156. package/dist/test/unit/convergence.spec.js.map +1 -0
  157. package/dist/test/unit/cursors-fixture.d.ts +79 -0
  158. package/dist/test/unit/cursors-fixture.js +245 -0
  159. package/dist/test/unit/cursors-fixture.js.map +1 -0
  160. package/dist/test/unit/cursors.spec.js +138 -718
  161. package/dist/test/unit/cursors.spec.js.map +1 -1
  162. package/dist/test/unit/cursors.teardown.spec.d.ts +1 -0
  163. package/dist/test/unit/cursors.teardown.spec.js +322 -0
  164. package/dist/test/unit/cursors.teardown.spec.js.map +1 -0
  165. package/dist/test/unit/cursors.window.spec.d.ts +1 -0
  166. package/dist/test/unit/cursors.window.spec.js +78 -0
  167. package/dist/test/unit/cursors.window.spec.js.map +1 -0
  168. package/dist/test/unit/ddl-fixture.d.ts +5 -0
  169. package/dist/test/unit/ddl-fixture.js +19 -0
  170. package/dist/test/unit/ddl-fixture.js.map +1 -0
  171. package/dist/test/unit/ddl.spec.js +64 -366
  172. package/dist/test/unit/ddl.spec.js.map +1 -1
  173. package/dist/test/unit/expression-array-fixture.d.ts +17 -0
  174. package/dist/test/unit/expression-array-fixture.js +63 -0
  175. package/dist/test/unit/expression-array-fixture.js.map +1 -0
  176. package/dist/test/unit/expression-array-walk.spec.d.ts +1 -0
  177. package/dist/test/unit/expression-array-walk.spec.js +235 -0
  178. package/dist/test/unit/expression-array-walk.spec.js.map +1 -0
  179. package/dist/test/unit/expression-array.spec.js +48 -322
  180. package/dist/test/unit/expression-array.spec.js.map +1 -1
  181. package/dist/test/unit/expression-date.spec.js +4 -3
  182. package/dist/test/unit/expression-date.spec.js.map +1 -1
  183. package/dist/test/unit/expression-fixture.d.ts +15 -0
  184. package/dist/test/unit/expression-fixture.js +40 -0
  185. package/dist/test/unit/expression-fixture.js.map +1 -0
  186. package/dist/test/unit/expression-numeric.spec.js +10 -8
  187. package/dist/test/unit/expression-numeric.spec.js.map +1 -1
  188. package/dist/test/unit/expression-object.spec.js +3 -4
  189. package/dist/test/unit/expression-object.spec.js.map +1 -1
  190. package/dist/test/unit/expression-predicate.spec.d.ts +1 -0
  191. package/dist/test/unit/expression-predicate.spec.js +231 -0
  192. package/dist/test/unit/expression-predicate.spec.js.map +1 -0
  193. package/dist/test/unit/expression-stages.spec.js +0 -5
  194. package/dist/test/unit/expression-stages.spec.js.map +1 -1
  195. package/dist/test/unit/expression-string.spec.js +2 -5
  196. package/dist/test/unit/expression-string.spec.js.map +1 -1
  197. package/dist/test/unit/expression.spec.js +44 -292
  198. package/dist/test/unit/expression.spec.js.map +1 -1
  199. package/dist/test/unit/external-comparisons.spec.js +5 -5
  200. package/dist/test/unit/external-comparisons.spec.js.map +1 -1
  201. package/dist/test/unit/external-types.spec.js +2 -3
  202. package/dist/test/unit/external-types.spec.js.map +1 -1
  203. package/dist/test/unit/feeds.spec.js +40 -23
  204. package/dist/test/unit/feeds.spec.js.map +1 -1
  205. package/dist/test/unit/fields.spec.js +15 -9
  206. package/dist/test/unit/fields.spec.js.map +1 -1
  207. package/dist/test/unit/invalid-fixture.d.ts +3 -0
  208. package/dist/test/unit/invalid-fixture.js +11 -0
  209. package/dist/test/unit/invalid-fixture.js.map +1 -0
  210. package/dist/test/unit/payload.spec.js.map +1 -1
  211. package/dist/test/unit/pipeline-aggregate.spec.js +14 -14
  212. package/dist/test/unit/pipeline-aggregate.spec.js.map +1 -1
  213. package/dist/test/unit/pipeline-fixture.d.ts +25 -6
  214. package/dist/test/unit/pipeline-fixture.js +21 -11
  215. package/dist/test/unit/pipeline-fixture.js.map +1 -1
  216. package/dist/test/unit/pipeline-group-fixture.d.ts +2 -0
  217. package/dist/test/unit/pipeline-group-fixture.js +6 -0
  218. package/dist/test/unit/pipeline-group-fixture.js.map +1 -0
  219. package/dist/test/unit/pipeline-group.spec.js +15 -248
  220. package/dist/test/unit/pipeline-group.spec.js.map +1 -1
  221. package/dist/test/unit/pipeline-lookup.spec.js +13 -10
  222. package/dist/test/unit/pipeline-lookup.spec.js.map +1 -1
  223. package/dist/test/unit/pipeline-projection.spec.js +12 -13
  224. package/dist/test/unit/pipeline-projection.spec.js.map +1 -1
  225. package/dist/test/unit/pipeline-rows.spec.js +21 -18
  226. package/dist/test/unit/pipeline-rows.spec.js.map +1 -1
  227. package/dist/test/unit/pipeline-selection.spec.js +6 -4
  228. package/dist/test/unit/pipeline-selection.spec.js.map +1 -1
  229. package/dist/test/unit/pipeline-stages.spec.js +23 -35
  230. package/dist/test/unit/pipeline-stages.spec.js.map +1 -1
  231. package/dist/test/unit/pipeline-substream.spec.d.ts +1 -0
  232. package/dist/test/unit/pipeline-substream.spec.js +246 -0
  233. package/dist/test/unit/pipeline-substream.spec.js.map +1 -0
  234. package/dist/test/unit/pipeline.spec.js +1 -1
  235. package/dist/test/unit/query.spec.js +6 -2
  236. package/dist/test/unit/query.spec.js.map +1 -1
  237. package/dist/test/unit/reaper.spec.js +4 -3
  238. package/dist/test/unit/reaper.spec.js.map +1 -1
  239. package/dist/test/unit/relation.spec.js +37 -36
  240. package/dist/test/unit/relation.spec.js.map +1 -1
  241. package/dist/test/unit/result.spec.js +13 -11
  242. package/dist/test/unit/result.spec.js.map +1 -1
  243. package/dist/test/unit/row-source.spec.js +1 -1
  244. package/dist/test/unit/row-source.spec.js.map +1 -1
  245. package/dist/test/unit/schema.spec.js +5 -2
  246. package/dist/test/unit/schema.spec.js.map +1 -1
  247. package/dist/test/unit/selection.spec.js +7 -3
  248. package/dist/test/unit/selection.spec.js.map +1 -1
  249. package/dist/test/unit/types.spec.js +6 -6
  250. package/dist/test/unit/types.spec.js.map +1 -1
  251. package/dist/test/unit/writes-atomic.spec.js +2 -2
  252. package/dist/test/unit/writes-atomic.spec.js.map +1 -1
  253. package/dist/test/unit/writes-insert.spec.js +5 -4
  254. package/dist/test/unit/writes-insert.spec.js.map +1 -1
  255. package/dist/test/unit/writes-replace.spec.js +6 -6
  256. package/dist/test/unit/writes-replace.spec.js.map +1 -1
  257. package/dist/test/unit/writes-target.spec.js +3 -3
  258. package/dist/test/unit/writes-target.spec.js.map +1 -1
  259. package/dist/test/unit/writes-update-fixture.d.ts +9 -0
  260. package/dist/test/unit/writes-update-fixture.js +20 -0
  261. package/dist/test/unit/writes-update-fixture.js.map +1 -0
  262. package/dist/test/unit/writes-update-mapper.spec.d.ts +1 -0
  263. package/dist/test/unit/writes-update-mapper.spec.js +123 -0
  264. package/dist/test/unit/writes-update-mapper.spec.js.map +1 -0
  265. package/dist/test/unit/writes-update.spec.js +42 -171
  266. package/dist/test/unit/writes-update.spec.js.map +1 -1
  267. package/dist/test-external/catalog.test.js +11 -1
  268. package/dist/test-external/catalog.test.js.map +1 -1
  269. package/dist/test-external/native.test.js +8 -6
  270. package/dist/test-external/native.test.js.map +1 -1
  271. package/dist/test-external/reads.test.js +20 -22
  272. package/dist/test-external/reads.test.js.map +1 -1
  273. package/dist/test-external/refusals.test.js +45 -24
  274. package/dist/test-external/refusals.test.js.map +1 -1
  275. package/dist/test-external/registration.test.js +4 -2
  276. package/dist/test-external/registration.test.js.map +1 -1
  277. package/dist/test-external/sales.d.ts +9 -2
  278. package/dist/test-external/sales.js.map +1 -1
  279. package/dist/test-external/unreachable.test.d.ts +1 -0
  280. package/dist/test-external/unreachable.test.js +83 -0
  281. package/dist/test-external/unreachable.test.js.map +1 -0
  282. package/dist/test-external/writes.test.js +71 -37
  283. package/dist/test-external/writes.test.js.map +1 -1
  284. package/package.json +19 -6
@@ -4,58 +4,28 @@ const chai_1 = require("chai");
4
4
  const interface_database_1 = require("@antelopejs/interface-database");
5
5
  const common_1 = require("@antelopejs/interface-database/common");
6
6
  const spec_fixture_1 = require("./spec-fixture");
7
- const jsonb_1 = require("../../implementations/database/jsonb");
8
7
  const context_1 = require("../../implementations/database/context");
9
8
  const expression_1 = require("../../implementations/database/expression");
10
- const readings_1 = require("../../implementations/database/readings");
11
- const stage_1 = require("../../implementations/database/stage");
12
9
  const row_source_1 = require("../../implementations/database/row-source");
13
10
  const types_1 = require("../../implementations/database/types");
14
- const LAMBDA_ID_FLOOR = 0;
15
- const ROW_ID = LAMBDA_ID_FLOOR - 1;
16
- const VALUE_ID = LAMBDA_ID_FLOOR - 2;
17
- const SUBQUERY_ID = LAMBDA_ID_FLOOR - 3;
18
- const users = {
19
- fields: {
20
- age: { column: "age", type: types_1.FLOAT },
21
- name: { column: "name", type: types_1.TEXT },
22
- createdAt: { column: "createdAt", type: types_1.TIMESTAMP },
23
- metadata: { column: "metadata", type: (0, types_1.JsonOf)({ level: types_1.FLOAT }) },
24
- },
25
- };
26
- const FALSEHOOD = `<> ALL (array['null', 'false', '0', '""']::jsonb[])`;
27
- const ELEMENT = { sql: 'e."value"', type: types_1.TEXT };
28
- const SUBQUERY = { sql: "(SELECT 1)", type: types_1.FLOAT };
29
- function NewContext() {
30
- const context = new context_1.DecodingContext({
31
- ...(0, spec_fixture_1.RefusingCompilers)(),
32
- expression: expression_1.CompileExpression,
33
- });
34
- context.bind(ROW_ID, new row_source_1.ColumnRowSource((0, row_source_1.AliasedColumns)("t"), users));
35
- context.bind(VALUE_ID, ELEMENT);
36
- context.bind(SUBQUERY_ID, () => SUBQUERY);
37
- return context;
38
- }
39
- function Compile(build) {
40
- return (0, expression_1.CompileExpression)(build(interface_database_1.ValueProxy.arg(ROW_ID)).build(), NewContext());
41
- }
11
+ const expression_fixture_1 = require("./expression-fixture");
42
12
  describe("CompileExpression dispatch", () => {
43
13
  it("rejects a stage it does not know", () => {
44
- (0, chai_1.expect)(() => (0, expression_1.CompileExpression)([(0, common_1.QueryStage)("not_a_stage")], NewContext())).to.throw(/Unsupported expression stage 'not_a_stage'/);
14
+ (0, chai_1.expect)(() => (0, expression_1.CompileExpression)([(0, common_1.QueryStage)("not_a_stage")], (0, expression_fixture_1.NewContext)())).to.throw(/Unsupported expression stage 'not_a_stage'/);
45
15
  });
46
16
  it("does not dispatch a stage name inherited from Object.prototype", () => {
47
- (0, chai_1.expect)(() => (0, expression_1.CompileExpression)([(0, common_1.QueryStage)("constructor")], NewContext())).to.throw(/Unsupported expression stage 'constructor'/);
48
- (0, chai_1.expect)(() => (0, expression_1.CompileExpression)([(0, common_1.QueryStage)("__proto__")], NewContext())).to.throw(/Unsupported expression stage '__proto__'/);
17
+ (0, chai_1.expect)(() => (0, expression_1.CompileExpression)([(0, common_1.QueryStage)("constructor")], (0, expression_fixture_1.NewContext)())).to.throw(/Unsupported expression stage 'constructor'/);
18
+ (0, chai_1.expect)(() => (0, expression_1.CompileExpression)([(0, common_1.QueryStage)("__proto__")], (0, expression_fixture_1.NewContext)())).to.throw(/Unsupported expression stage '__proto__'/);
49
19
  });
50
20
  it("rejects an expression that never produced a value", () => {
51
- (0, chai_1.expect)(() => (0, expression_1.CompileExpression)([], NewContext())).to.throw(/Expression has no value/);
21
+ (0, chai_1.expect)(() => (0, expression_1.CompileExpression)([], (0, expression_fixture_1.NewContext)())).to.throw(/Expression has no value/);
52
22
  });
53
23
  it("starts from the source it was handed", () => {
54
24
  const context = new context_1.DecodingContext({
55
25
  ...(0, spec_fixture_1.RefusingCompilers)(),
56
26
  expression: expression_1.CompileExpression,
57
27
  });
58
- const out = (0, expression_1.CompileExpression)(interface_database_1.ValueProxy.constant(1).build(), context, new row_source_1.ColumnRowSource((0, row_source_1.AliasedColumns)("t"), users));
28
+ const out = (0, expression_1.CompileExpression)(interface_database_1.ValueProxy.constant(1).build(), context, new row_source_1.ColumnRowSource((0, row_source_1.AliasedColumns)("t"), expression_fixture_1.users));
59
29
  (0, chai_1.expect)(out.sql).to.equal("($1::double precision)");
60
30
  });
61
31
  it("exposes every core stage it can dispatch", () => {
@@ -77,7 +47,7 @@ describe("CompileExpression dispatch", () => {
77
47
  });
78
48
  describe("arg", () => {
79
49
  it("keeps a bound row a row until a value is demanded", () => {
80
- const out = (0, expression_1.CompileExpression)(interface_database_1.ValueProxy.arg(ROW_ID).build(), NewContext());
50
+ const out = (0, expression_1.CompileExpression)(interface_database_1.ValueProxy.arg(expression_fixture_1.ROW_ID).build(), (0, expression_fixture_1.NewContext)());
81
51
  (0, chai_1.expect)(out.sql).to.contain(`jsonb_strip_nulls(jsonb_build_object('_id'`);
82
52
  (0, chai_1.expect)(out.type).to.deep.equal((0, types_1.JsonOf)({
83
53
  _id: types_1.TEXT,
@@ -89,91 +59,91 @@ describe("arg", () => {
89
59
  }));
90
60
  });
91
61
  it("accepts a plain value binding", () => {
92
- const context = NewContext();
93
- const out = (0, expression_1.CompileExpression)(interface_database_1.ValueProxy.arg(VALUE_ID).eq("x").build(), context);
62
+ const context = (0, expression_fixture_1.NewContext)();
63
+ const out = (0, expression_1.CompileExpression)(interface_database_1.ValueProxy.arg(expression_fixture_1.VALUE_ID).eq("x").build(), context);
94
64
  (0, chai_1.expect)(out.sql).to.equal(`(e."value" = ($1::text))`);
95
65
  (0, chai_1.expect)(out.type).to.equal(types_1.BOOL);
96
66
  });
97
67
  it("invokes a subquery provider binding", () => {
98
- const out = (0, expression_1.CompileExpression)(interface_database_1.ValueProxy.arg(SUBQUERY_ID).build(), NewContext());
99
- (0, chai_1.expect)(out).to.equal(SUBQUERY);
68
+ const out = (0, expression_1.CompileExpression)(interface_database_1.ValueProxy.arg(expression_fixture_1.SUBQUERY_ID).build(), (0, expression_fixture_1.NewContext)());
69
+ (0, chai_1.expect)(out).to.equal(expression_fixture_1.SUBQUERY);
100
70
  });
101
71
  it("rejects an unbound parameter", () => {
102
- (0, chai_1.expect)(() => (0, expression_1.CompileExpression)(interface_database_1.ValueProxy.arg(99).build(), NewContext())).to.throw(/Unbound lambda parameter 99/);
72
+ (0, chai_1.expect)(() => (0, expression_1.CompileExpression)(interface_database_1.ValueProxy.arg(99).build(), (0, expression_fixture_1.NewContext)())).to.throw(/Unbound lambda parameter 99/);
103
73
  });
104
74
  it("does not resolve a binding inherited from Object.prototype", () => {
105
75
  for (const key of ["valueOf", "constructor", "__proto__", "toString"]) {
106
- (0, chai_1.expect)(() => (0, expression_1.CompileExpression)(interface_database_1.ValueProxy.arg(key).build(), NewContext())).to.throw(`Unbound lambda parameter ${key}`);
76
+ (0, chai_1.expect)(() => (0, expression_1.CompileExpression)(interface_database_1.ValueProxy.arg(key).build(), (0, expression_fixture_1.NewContext)())).to.throw(`Unbound lambda parameter ${key}`);
107
77
  }
108
78
  });
109
79
  it("clears a pending timezone", () => {
110
- const out = expression_1.STAGES.arg({ timezone: "'UTC'" }, (0, common_1.QueryStage)("arg", undefined, VALUE_ID), NewContext());
80
+ const out = expression_1.STAGES.arg({ timezone: "'UTC'" }, (0, common_1.QueryStage)("arg", undefined, expression_fixture_1.VALUE_ID), (0, expression_fixture_1.NewContext)());
111
81
  (0, chai_1.expect)(out.timezone).to.equal(undefined);
112
- (0, chai_1.expect)(out.current).to.equal(ELEMENT);
82
+ (0, chai_1.expect)(out.current).to.equal(expression_fixture_1.ELEMENT);
113
83
  });
114
84
  });
115
85
  describe("constant", () => {
116
86
  it("decodes an array through the shared value decoder", () => {
117
- const out = (0, expression_1.CompileExpression)(interface_database_1.ValueProxy.constant([1, 2]).build(), NewContext());
87
+ const out = (0, expression_1.CompileExpression)(interface_database_1.ValueProxy.constant([1, 2]).build(), (0, expression_fixture_1.NewContext)());
118
88
  (0, chai_1.expect)(out.sql).to.equal("($1::jsonb)");
119
89
  (0, chai_1.expect)(out.type).to.deep.equal((0, types_1.ArrayOf)(types_1.FLOAT));
120
90
  });
121
91
  it("names the stage when the value is absent", () => {
122
- (0, chai_1.expect)(() => (0, expression_1.CompileExpression)(interface_database_1.ValueProxy.constant(undefined).build(), NewContext())).to.throw(/'constant'/);
92
+ (0, chai_1.expect)(() => (0, expression_1.CompileExpression)(interface_database_1.ValueProxy.constant(undefined).build(), (0, expression_fixture_1.NewContext)())).to.throw(/'constant'/);
123
93
  });
124
94
  it("clears a pending timezone", () => {
125
- const out = expression_1.STAGES.constant({ timezone: "'UTC'" }, (0, common_1.QueryStage)("constant", undefined, 1), NewContext());
95
+ const out = expression_1.STAGES.constant({ timezone: "'UTC'" }, (0, common_1.QueryStage)("constant", undefined, 1), (0, expression_fixture_1.NewContext)());
126
96
  (0, chai_1.expect)(out.timezone).to.equal(undefined);
127
97
  });
128
98
  });
129
99
  describe("obj_index", () => {
130
100
  it("reaches a native column from a literal key", () => {
131
- const out = Compile((doc) => doc.key("age"));
101
+ const out = (0, expression_fixture_1.Compile)((doc) => doc.key("age"));
132
102
  (0, chai_1.expect)(out.sql).to.equal(`"t"."age"`);
133
103
  (0, chai_1.expect)(out.type).to.equal(types_1.FLOAT);
134
104
  });
135
105
  it("falls to a dynamic lookup when the key is a value proxy", () => {
136
- const out = Compile((doc) => doc.key("metadata").key(interface_database_1.ValueProxy.constant("level")));
106
+ const out = (0, expression_fixture_1.Compile)((doc) => doc.key("metadata").key(interface_database_1.ValueProxy.constant("level")));
137
107
  (0, chai_1.expect)(out.sql).to.equal(`("t"."metadata" -> ($1::text))`);
138
108
  (0, chai_1.expect)(out.type).to.equal(types_1.OPAQUE);
139
109
  });
140
110
  it("materializes the whole row for a dynamic key over a column source", () => {
141
- const out = Compile((doc) => doc.key(interface_database_1.ValueProxy.constant("age")));
111
+ const out = (0, expression_fixture_1.Compile)((doc) => doc.key(interface_database_1.ValueProxy.constant("age")));
142
112
  (0, chai_1.expect)(out.sql).to.contain("jsonb_strip_nulls(jsonb_build_object('_id'");
143
113
  (0, chai_1.expect)(out.sql).to.contain(`-> ($1::text))`);
144
114
  (0, chai_1.expect)(out.type).to.equal(types_1.OPAQUE);
145
115
  });
146
116
  it("applies a default to a dynamic key", () => {
147
- const out = Compile((doc) => doc.key("metadata").key(interface_database_1.ValueProxy.constant("level"), 0));
117
+ const out = (0, expression_fixture_1.Compile)((doc) => doc.key("metadata").key(interface_database_1.ValueProxy.constant("level"), 0));
148
118
  (0, chai_1.expect)(out.sql).to.equal(`COALESCE(NULLIF(("t"."metadata" -> ($2::text)), 'null'::jsonb), to_jsonb(($1::double precision)))`);
149
119
  (0, chai_1.expect)(out.type).to.equal(types_1.OPAQUE);
150
120
  });
151
121
  it("clears a pending timezone", () => {
152
122
  const out = expression_1.STAGES.obj_index({
153
- current: new row_source_1.ColumnRowSource((0, row_source_1.AliasedColumns)("t"), users),
123
+ current: new row_source_1.ColumnRowSource((0, row_source_1.AliasedColumns)("t"), expression_fixture_1.users),
154
124
  timezone: "'UTC'",
155
- }, (0, common_1.QueryStage)("obj_index", undefined, "age"), NewContext());
125
+ }, (0, common_1.QueryStage)("obj_index", undefined, "age"), (0, expression_fixture_1.NewContext)());
156
126
  (0, chai_1.expect)(out.timezone).to.equal(undefined);
157
127
  });
158
128
  });
159
129
  describe("default", () => {
160
130
  it("coalesces a declared column against its fallback", () => {
161
- const out = Compile((doc) => doc.key("age").default(0));
131
+ const out = (0, expression_fixture_1.Compile)((doc) => doc.key("age").default(0));
162
132
  (0, chai_1.expect)(out.sql).to.equal(`COALESCE("t"."age", ($1::double precision))`);
163
133
  (0, chai_1.expect)(out.type).to.equal(types_1.FLOAT);
164
134
  });
165
135
  it("fires on an undeclared key holding a stored json null", () => {
166
- const out = Compile((doc) => doc.key("meta").default({}));
136
+ const out = (0, expression_fixture_1.Compile)((doc) => doc.key("meta").default({}));
167
137
  (0, chai_1.expect)(out.sql).to.equal(`COALESCE(NULLIF(("t"."_extra" -> 'meta'), 'null'::jsonb), jsonb_build_object())`);
168
- (0, chai_1.expect)(out.type).to.deep.equal({ kind: "json", shape: {} });
138
+ (0, chai_1.expect)(out.type).to.deep.equal({ kind: "json", keys: {} });
169
139
  });
170
140
  it("unifies a mismatched default with the value, rather than reading it as its type", () => {
171
- const out = Compile((doc) => doc.key("age").default("30"));
141
+ const out = (0, expression_fixture_1.Compile)((doc) => doc.key("age").default("30"));
172
142
  (0, chai_1.expect)(out.sql).to.contain("to_jsonb");
173
143
  (0, chai_1.expect)(out.type).to.equal(types_1.OPAQUE);
174
144
  });
175
145
  it("reads a two-argument key's default as the column's type, leaving the column alone", () => {
176
- const out = Compile((doc) => doc.key("age", "30"));
146
+ const out = (0, expression_fixture_1.Compile)((doc) => doc.key("age", "30"));
177
147
  (0, chai_1.expect)(out.sql).to.contain(`COALESCE("t"."age",`);
178
148
  (0, chai_1.expect)(out.sql).to.not.contain("to_jsonb");
179
149
  (0, chai_1.expect)(out.type).to.equal(types_1.FLOAT);
@@ -181,269 +151,51 @@ describe("default", () => {
181
151
  });
182
152
  describe("boolean stages", () => {
183
153
  it("joins two predicates with AND", () => {
184
- const out = Compile((doc) => doc.key("age").gt(25).and(doc.key("age").lt(40)));
154
+ const out = (0, expression_fixture_1.Compile)((doc) => doc.key("age").gt(25).and(doc.key("age").lt(40)));
185
155
  (0, chai_1.expect)(out.sql).to.equal(`(("t"."age" > ($1::double precision)) AND ("t"."age" < ($2::double precision)))`);
186
156
  (0, chai_1.expect)(out.type).to.equal(types_1.BOOL);
187
157
  });
188
158
  it("joins two predicates with OR", () => {
189
- const out = Compile((doc) => doc.key("age").gt(25).or(doc.key("age").lt(40)));
159
+ const out = (0, expression_fixture_1.Compile)((doc) => doc.key("age").gt(25).or(doc.key("age").lt(40)));
190
160
  (0, chai_1.expect)(out.sql).to.equal(`(("t"."age" > ($1::double precision)) OR ("t"."age" < ($2::double precision)))`);
191
161
  });
192
162
  it("reads a numeric operand as javascript truthiness", () => {
193
- const out = Compile((doc) => doc.key("age").and(true));
163
+ const out = (0, expression_fixture_1.Compile)((doc) => doc.key("age").and(true));
194
164
  (0, chai_1.expect)(out.sql).to.equal(`(("t"."age" <> 0) AND ($1::boolean))`);
195
165
  (0, chai_1.expect)(out.type).to.equal(types_1.BOOL);
196
166
  });
197
167
  it("reads a text operand as javascript truthiness", () => {
198
- (0, chai_1.expect)(Compile((doc) => doc.key("name").not()).sql).to.equal(`(("t"."name" <> '') IS NOT TRUE)`);
168
+ (0, chai_1.expect)((0, expression_fixture_1.Compile)((doc) => doc.key("name").not()).sql).to.equal(`(("t"."name" <> '') IS NOT TRUE)`);
199
169
  });
200
170
  it("reads a timestamp operand as present or absent", () => {
201
- (0, chai_1.expect)(Compile((doc) => doc.key("createdAt").not()).sql).to.equal(`(("t"."createdAt" IS NOT NULL) IS NOT TRUE)`);
171
+ (0, chai_1.expect)((0, expression_fixture_1.Compile)((doc) => doc.key("createdAt").not()).sql).to.equal(`(("t"."createdAt" IS NOT NULL) IS NOT TRUE)`);
202
172
  });
203
173
  it("reads a jsonb operand as javascript truthiness", () => {
204
- const out = Compile((doc) => doc.key("flagged").not());
205
- (0, chai_1.expect)(out.sql).to.equal(`((("t"."_extra" -> 'flagged') ${FALSEHOOD}) IS NOT TRUE)`);
174
+ const out = (0, expression_fixture_1.Compile)((doc) => doc.key("flagged").not());
175
+ (0, chai_1.expect)(out.sql).to.equal(`((("t"."_extra" -> 'flagged') ${expression_fixture_1.FALSEHOOD}) IS NOT TRUE)`);
206
176
  (0, chai_1.expect)(out.type).to.equal(types_1.BOOL);
207
177
  });
208
178
  it("does not assert a truthy jsonb operand into a negation", () => {
209
- const out = Compile((doc) => doc.key("flagged").not());
179
+ const out = (0, expression_fixture_1.Compile)((doc) => doc.key("flagged").not());
210
180
  (0, chai_1.expect)(out.sql).to.not.contain("jsonb_typeof");
211
181
  (0, chai_1.expect)(out.sql).to.not.contain("#>>");
212
182
  });
213
183
  it("answers true for an operand that is null, where NOT answers null", () => {
214
- const truthy = `(("t"."_extra" -> 'missing') ${FALSEHOOD})`;
215
- const out = Compile((doc) => doc.key("missing").not());
184
+ const truthy = `(("t"."_extra" -> 'missing') ${expression_fixture_1.FALSEHOOD})`;
185
+ const out = (0, expression_fixture_1.Compile)((doc) => doc.key("missing").not());
216
186
  (0, chai_1.expect)(out.sql).to.equal(`(${truthy} IS NOT TRUE)`);
217
187
  (0, chai_1.expect)(out.sql).to.not.contain("(NOT ");
218
188
  });
219
189
  it("negates a declared column through the same three-valued test", () => {
220
- (0, chai_1.expect)(Compile((doc) => doc.key("age").not()).sql).to.equal(`(("t"."age" <> 0) IS NOT TRUE)`);
190
+ (0, chai_1.expect)((0, expression_fixture_1.Compile)((doc) => doc.key("age").not()).sql).to.equal(`(("t"."age" <> 0) IS NOT TRUE)`);
221
191
  });
222
192
  it("rejects a missing operand naming the stage", () => {
223
- (0, chai_1.expect)(() => (0, expression_1.CompileExpression)([(0, common_1.QueryStage)("arg", undefined, ROW_ID), (0, common_1.QueryStage)("and")], NewContext())).to.throw(/'and'/);
193
+ (0, chai_1.expect)(() => (0, expression_1.CompileExpression)([(0, common_1.QueryStage)("arg", undefined, expression_fixture_1.ROW_ID), (0, common_1.QueryStage)("and")], (0, expression_fixture_1.NewContext)())).to.throw(/'and'/);
224
194
  });
225
195
  it("leaves a null operand null rather than reading it as false", () => {
226
- const truthy = `(("t"."_extra" -> 'missing') ${FALSEHOOD})`;
227
- (0, chai_1.expect)(Compile((doc) => doc.key("missing").and(true)).sql).to.equal(`(${truthy} AND ($1::boolean))`);
228
- (0, chai_1.expect)(Compile((doc) => doc.key("missing").or(true)).sql).to.equal(`(${truthy} OR ($1::boolean))`);
229
- });
230
- });
231
- describe("Predicate", () => {
232
- it("reads a boolean unchanged", () => {
233
- (0, chai_1.expect)((0, readings_1.Predicate)({ sql: "v", type: types_1.BOOL })).to.deep.equal({
234
- sql: "v",
235
- type: types_1.BOOL,
236
- });
237
- });
238
- it("compares a number against zero", () => {
239
- (0, chai_1.expect)((0, readings_1.Predicate)({ sql: "v", type: types_1.FLOAT }).sql).to.equal("(v <> 0)");
240
- });
241
- it("compares text against the empty string", () => {
242
- (0, chai_1.expect)((0, readings_1.Predicate)({ sql: "v", type: types_1.TEXT }).sql).to.equal("(v <> '')");
243
- });
244
- it("reads a timestamp as present or absent", () => {
245
- (0, chai_1.expect)((0, readings_1.Predicate)({ sql: "v", type: types_1.TIMESTAMP }).sql).to.equal("(v IS NOT NULL)");
246
- });
247
- it("counts a json null, false, zero and the empty string as falsy", () => {
248
- const truthy = `(v ${FALSEHOOD})`;
249
- (0, chai_1.expect)((0, readings_1.Predicate)({ sql: "v", type: types_1.OPAQUE }).sql).to.equal(truthy);
250
- (0, chai_1.expect)((0, readings_1.Predicate)({ sql: "v", type: (0, types_1.JsonOf)({ level: types_1.FLOAT }) }).sql).to.equal(truthy);
251
- (0, chai_1.expect)((0, readings_1.Predicate)({ sql: "v", type: (0, types_1.ArrayOf)(types_1.TEXT) }).sql).to.equal(truthy);
252
- });
253
- it("counts nothing else falsy, so an empty container is true", () => {
254
- const sql = (0, readings_1.Predicate)({ sql: "v", type: types_1.OPAQUE }).sql;
255
- (0, chai_1.expect)(sql.match(/'[^']*'/g)).to.deep.equal([
256
- "'null'",
257
- "'false'",
258
- "'0'",
259
- `'""'`,
260
- ]);
261
- });
262
- it("spells a jsonb operand once", () => {
263
- const sql = (0, readings_1.Predicate)({ sql: "v", type: types_1.OPAQUE }).sql;
264
- (0, chai_1.expect)(sql.split("v")).to.have.lengthOf(2);
265
- (0, chai_1.expect)(sql).to.not.contain("CASE");
266
- });
267
- it("types every reading as boolean", () => {
268
- for (const type of [types_1.BOOL, types_1.FLOAT, types_1.TEXT, types_1.TIMESTAMP, types_1.OPAQUE, (0, types_1.ArrayOf)(types_1.TEXT)]) {
269
- (0, chai_1.expect)((0, readings_1.Predicate)({ sql: "v", type }).type).to.equal(types_1.BOOL);
270
- }
271
- });
272
- });
273
- describe("StoredAs", () => {
274
- const KEY_GUARD = "(CASE WHEN jsonb_typeof(v) = 'boolean' THEN ((v #>> '{}')::boolean) END)";
275
- const JSON_KEY = { sql: "v", type: types_1.OPAQUE };
276
- it("projects a jsonb key into a boolean column rather than reading it as truthiness", () => {
277
- (0, chai_1.expect)((0, readings_1.StoredAs)(JSON_KEY, types_1.BOOL).sql).to.equal(KEY_GUARD);
278
- });
279
- it("projects a jsonb key into every other scalar column under the same guard", () => {
280
- (0, chai_1.expect)((0, readings_1.StoredAs)(JSON_KEY, types_1.TEXT).sql).to.contain("jsonb_typeof(v) = 'string'");
281
- (0, chai_1.expect)((0, readings_1.StoredAs)(JSON_KEY, types_1.FLOAT).sql).to.contain("jsonb_typeof(v) = 'number'");
282
- (0, chai_1.expect)((0, readings_1.StoredAs)(JSON_KEY, types_1.TIMESTAMP).sql).to.contain("jsonb_typeof(v) = 'string'");
283
- });
284
- it("reads a scalar key through the reading the expression compiler applies", () => {
285
- (0, chai_1.expect)((0, readings_1.StoredAs)({ sql: "v", type: types_1.TEXT }, types_1.BOOL).sql).to.equal("(v <> '')");
286
- (0, chai_1.expect)((0, readings_1.StoredAs)({ sql: "v", type: types_1.FLOAT }, types_1.BOOL).sql).to.equal("(v <> 0)");
287
- (0, chai_1.expect)((0, readings_1.StoredAs)({ sql: "v", type: types_1.TEXT }, types_1.FLOAT).sql).to.contain("CASE WHEN");
288
- });
289
- });
290
- const NUMERIC_TEXT_PATTERN = "'^\\s*[+-]?([0-9]+(\\.[0-9]*)?|\\.[0-9]+)([eE][+-]?[0-9]+)?\\s*$'";
291
- describe("Numeric", () => {
292
- it("reads a number unchanged", () => {
293
- (0, chai_1.expect)((0, readings_1.Numeric)({ sql: "v", type: types_1.FLOAT })).to.deep.equal({
294
- sql: "v",
295
- type: types_1.FLOAT,
296
- });
297
- });
298
- it("reads a boolean as one or zero, which is Number(true)", () => {
299
- (0, chai_1.expect)((0, readings_1.Numeric)({ sql: "v", type: types_1.BOOL }).sql).to.equal("((v)::int::double precision)");
300
- });
301
- it("reads a timestamp as epoch milliseconds, which is Number(date)", () => {
302
- (0, chai_1.expect)((0, readings_1.Numeric)({ sql: "v", type: types_1.TIMESTAMP }).sql).to.equal("((EXTRACT(EPOCH FROM v) * 1000)::double precision)");
303
- });
304
- it("guards the text cast with a regex, since Number('abc') is not an error", () => {
305
- (0, chai_1.expect)((0, readings_1.Numeric)({ sql: "v", type: types_1.TEXT }).sql).to.equal(`(CASE WHEN v ~ ${NUMERIC_TEXT_PATTERN} THEN ((v)::double precision) END)`);
306
- });
307
- it("projects a json operand under the number guard", () => {
308
- const guarded = "(CASE WHEN jsonb_typeof(v) = 'number' THEN ((v #>> '{}')::double precision) END)";
309
- (0, chai_1.expect)((0, readings_1.Numeric)({ sql: "v", type: types_1.OPAQUE }).sql).to.equal(guarded);
310
- (0, chai_1.expect)((0, readings_1.Numeric)({ sql: "v", type: (0, types_1.ArrayOf)(types_1.TEXT) }).sql).to.equal(guarded);
311
- });
312
- it("never emits a cast postgresql rejects at plan time", () => {
313
- for (const type of [types_1.BOOL, types_1.TIMESTAMP]) {
314
- (0, chai_1.expect)((0, readings_1.Numeric)({ sql: "v", type }).sql).to.not.contain("(v)::double precision");
315
- }
316
- });
317
- it("types every reading as float", () => {
318
- for (const type of [types_1.BOOL, types_1.FLOAT, types_1.TEXT, types_1.TIMESTAMP, types_1.OPAQUE]) {
319
- (0, chai_1.expect)((0, readings_1.Numeric)({ sql: "v", type }).type).to.equal(types_1.FLOAT);
320
- }
321
- });
322
- });
323
- describe("comparison stages", () => {
324
- it("compares a declared column without materializing the row", () => {
325
- const out = Compile((doc) => doc.key("age").gt(25));
326
- (0, chai_1.expect)(out.sql).to.equal(`("t"."age" > ($1::double precision))`);
327
- (0, chai_1.expect)(out.type).to.equal(types_1.BOOL);
328
- (0, chai_1.expect)(out.sql).to.not.contain("jsonb_build_object");
329
- (0, chai_1.expect)(out.sql).to.not.contain("jsonb");
330
- });
331
- it("maps each operator onto its SQL spelling", () => {
332
- (0, chai_1.expect)(Compile((doc) => doc.key("age").eq(1)).sql).to.contain(`"t"."age" =`);
333
- (0, chai_1.expect)(Compile((doc) => doc.key("age").ne(1)).sql).to.contain(`"t"."age" IS DISTINCT FROM`);
334
- (0, chai_1.expect)(Compile((doc) => doc.key("age").gt(1)).sql).to.contain(`"t"."age" >`);
335
- (0, chai_1.expect)(Compile((doc) => doc.key("age").ge(1)).sql).to.contain(`"t"."age" >=`);
336
- (0, chai_1.expect)(Compile((doc) => doc.key("age").lt(1)).sql).to.contain(`"t"."age" <`);
337
- (0, chai_1.expect)(Compile((doc) => doc.key("age").le(1)).sql).to.contain(`"t"."age" <=`);
338
- });
339
- it("pulls an undeclared key toward the concrete operand", () => {
340
- const out = Compile((doc) => doc.key("nope").eq("x"));
341
- (0, chai_1.expect)(out.sql).to.equal(`((CASE WHEN jsonb_typeof(("t"."_extra" -> 'nope')) = 'string' THEN (("t"."_extra" -> 'nope') #>> '{}') END) = ($1::text))`);
342
- (0, chai_1.expect)(out.type).to.equal(types_1.BOOL);
343
- });
344
- it("guards an undeclared key compared against a number", () => {
345
- const out = Compile((doc) => doc.key("nope").eq(3));
346
- (0, chai_1.expect)(out.sql).to.equal(`((CASE WHEN jsonb_typeof(("t"."_extra" -> 'nope')) = 'number' THEN ((("t"."_extra" -> 'nope') #>> '{}')::double precision) END) = ($1::double precision))`);
347
- });
348
- it("keeps a timestamp column native", () => {
349
- const out = Compile((doc) => doc.key("createdAt").lt(new Date("2023-01-15T00:00:00Z")));
350
- (0, chai_1.expect)(out.sql).to.equal(`("t"."createdAt" < ($1::timestamptz))`);
351
- });
352
- it("keeps a row whose declared column is null out of ne's blind spot", () => {
353
- const out = Compile((doc) => doc.key("age").ne(1));
354
- (0, chai_1.expect)(out.sql).to.equal(`("t"."age" IS DISTINCT FROM ($1::double precision))`);
355
- (0, chai_1.expect)(out.type).to.equal(types_1.BOOL);
356
- });
357
- it("compares ne in jsonb when exactly one side is bottom-typed", () => {
358
- const out = Compile((doc) => doc.key("k").ne(5));
359
- (0, chai_1.expect)(out.sql).to.equal(`(("t"."_extra" -> 'k') IS DISTINCT FROM to_jsonb(($1::double precision)))`);
360
- });
361
- it("leaves two bottom-typed operands in jsonb", () => {
362
- const out = Compile((doc) => doc.key("k").ne(doc.key("j")));
363
- (0, chai_1.expect)(out.sql).to.equal(`(("t"."_extra" -> 'k') IS DISTINCT FROM ("t"."_extra" -> 'j'))`);
364
- });
365
- it("drops a row whose compared field is missing", () => {
366
- const out = Compile((doc) => doc.key("missing").eq("x"));
367
- (0, chai_1.expect)(out.sql).to.equal(`((CASE WHEN jsonb_typeof(("t"."_extra" -> 'missing')) = 'string' THEN (("t"."_extra" -> 'missing') #>> '{}') END) = ($1::text))`);
368
- });
369
- it("keeps a nested shape through a chained key", () => {
370
- const out = Compile((doc) => doc.key("metadata").key("level").ge(3));
371
- (0, chai_1.expect)(out.sql).to.equal(`((CASE WHEN jsonb_typeof(("t"."metadata" -> 'level')) = 'number' THEN ((("t"."metadata" -> 'level') #>> '{}')::double precision) END) >= ($1::double precision))`);
372
- (0, chai_1.expect)(out.sql).to.not.contain("jsonb_build_object");
373
- });
374
- });
375
- describe("null comparisons", () => {
376
- it("tests a declared column for SQL NULL", () => {
377
- const out = Compile((doc) => doc.key("age").eq(null));
378
- (0, chai_1.expect)(out.sql).to.equal(`("t"."age" IS NULL)`);
379
- (0, chai_1.expect)(out.type).to.equal(types_1.BOOL);
380
- });
381
- it("negates the same test for ne", () => {
382
- (0, chai_1.expect)(Compile((doc) => doc.key("age").ne(null)).sql).to.equal(`(NOT ("t"."age" IS NULL))`);
383
- });
384
- it("matches a stored json null as well as a missing key", () => {
385
- const key = `("t"."_extra" -> 'nope')`;
386
- (0, chai_1.expect)(Compile((doc) => doc.key("nope").eq(null)).sql).to.equal(`((${key} IS NULL) OR (${key} = 'null'::jsonb))`);
387
- (0, chai_1.expect)(Compile((doc) => doc.key("nope").ne(null)).sql).to.equal(`(NOT ((${key} IS NULL) OR (${key} = 'null'::jsonb)))`);
388
- });
389
- it("recognises the null on either side", () => {
390
- const out = (0, expression_1.CompileExpression)(interface_database_1.ValueProxy.constant(null)
391
- .eq(interface_database_1.ValueProxy.arg(ROW_ID).key("age"))
392
- .build(), NewContext());
393
- (0, chai_1.expect)(out.sql).to.equal(`("t"."age" IS NULL)`);
394
- });
395
- it("leaves the ordering operators comparing against the json null", () => {
396
- (0, chai_1.expect)(Compile((doc) => doc.key("age").gt(null)).sql).to.equal(`("t"."age" > (CASE WHEN jsonb_typeof('null'::jsonb) = 'number' THEN (('null'::jsonb #>> '{}')::double precision) END))`);
397
- });
398
- });
399
- describe("stage helpers", () => {
400
- it("materializes a row only when a value is required", () => {
401
- const source = new row_source_1.ColumnRowSource((0, row_source_1.AliasedColumns)("t"), users);
402
- (0, chai_1.expect)((0, stage_1.AsValue)({ current: source }).sql).to.equal(source.toJson().sql);
403
- (0, chai_1.expect)((0, stage_1.AsSource)({ current: source })).to.equal(source);
404
- });
405
- it("wraps a value in a json row source", () => {
406
- const value = { sql: "v", type: (0, types_1.JsonOf)({ level: types_1.FLOAT }) };
407
- const source = (0, stage_1.AsSource)({ current: value });
408
- (0, chai_1.expect)(source).to.be.instanceOf(row_source_1.JsonRowSource);
409
- (0, chai_1.expect)((0, stage_1.AsValue)({ current: value })).to.equal(value);
410
- });
411
- it("refuses to materialize an empty accumulator", () => {
412
- (0, chai_1.expect)(() => (0, stage_1.AsValue)({})).to.throw(/Expression has no value/);
413
- (0, chai_1.expect)(() => (0, stage_1.AsSource)({})).to.throw(/Expression has no value/);
414
- });
415
- it("clears a pending timezone once a value stage runs", () => {
416
- const handler = (0, stage_1.Lift)((value) => value);
417
- const out = handler({ current: { sql: "v", type: types_1.TEXT }, timezone: "'UTC'" }, (0, common_1.QueryStage)("noop"), NewContext());
418
- (0, chai_1.expect)(out.timezone).to.equal(undefined);
419
- (0, chai_1.expect)(out.current).to.deep.equal({ sql: "v", type: types_1.TEXT });
420
- });
421
- it("hands a lifted handler the decoding context", () => {
422
- const handler = (0, stage_1.Lift)((_value, _args, _stage, context) => ({
423
- sql: context.nextAlias(),
424
- type: types_1.TEXT,
425
- }));
426
- const out = handler({ current: { sql: "v", type: types_1.TEXT } }, (0, common_1.QueryStage)("noop"), NewContext());
427
- (0, chai_1.expect)(out.current).to.deep.equal({ sql: "t0", type: types_1.TEXT });
428
- });
429
- it("decodes every argument of a lifted stage", () => {
430
- const context = NewContext();
431
- (0, stage_1.Lift)((value) => value)({ current: { sql: "v", type: types_1.TEXT } }, (0, common_1.QueryStage)("noop", undefined, "a", "b"), context);
432
- (0, chai_1.expect)(context.params.all()).to.deep.equal(["a", "b"]);
433
- });
434
- it("leaves the arguments of a raw stage undecoded", () => {
435
- const context = NewContext();
436
- const handler = (0, stage_1.LiftRaw)((value, stage, inner) => ({
437
- sql: `${value.sql}:${stage.args.join(",")}:${inner.nextAlias()}`,
438
- type: types_1.TEXT,
439
- }));
440
- const out = handler({ current: { sql: "v", type: types_1.TEXT }, timezone: "'UTC'" }, (0, common_1.QueryStage)("noop", undefined, "a", "b"), context);
441
- (0, chai_1.expect)(out.current).to.deep.equal({ sql: "v:a,b:t0", type: types_1.TEXT });
442
- (0, chai_1.expect)(out.timezone).to.equal(undefined);
443
- (0, chai_1.expect)(context.params.all()).to.deep.equal([]);
444
- });
445
- it("guards a container operation on the json type", () => {
446
- (0, chai_1.expect)((0, jsonb_1.GuardJson)({ sql: "v", type: types_1.OPAQUE }, "array", "body")).to.equal("(CASE WHEN jsonb_typeof(v) = 'array' THEN body END)");
196
+ const truthy = `(("t"."_extra" -> 'missing') ${expression_fixture_1.FALSEHOOD})`;
197
+ (0, chai_1.expect)((0, expression_fixture_1.Compile)((doc) => doc.key("missing").and(true)).sql).to.equal(`(${truthy} AND ($1::boolean))`);
198
+ (0, chai_1.expect)((0, expression_fixture_1.Compile)((doc) => doc.key("missing").or(true)).sql).to.equal(`(${truthy} OR ($1::boolean))`);
447
199
  });
448
200
  });
449
201
  //# sourceMappingURL=expression.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"expression.spec.js","sourceRoot":"","sources":["../../../src/test/unit/expression.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"expression.spec.js","sourceRoot":"","sources":["../../../src/test/unit/expression.spec.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const chai_1 = require("chai");
4
4
  const interface_database_1 = require("@antelopejs/interface-database");
5
5
  const common_1 = require("@antelopejs/interface-database/common");
6
- const relation_1 = require("../../implementations/database/relation");
6
+ const render_1 = require("../../implementations/database/render");
7
7
  const selection_1 = require("../../implementations/database/selection");
8
8
  const context_1 = require("../../implementations/database/context");
9
9
  const subquery_1 = require("../../implementations/database/subquery");
@@ -37,7 +37,7 @@ function Field({ column, declared }) {
37
37
  };
38
38
  }
39
39
  function Key(columns) {
40
- return columns.map((column) => (0, external_types_1.DescribeKey)(Catalog(column)));
40
+ return columns.flatMap((column) => (0, external_types_1.DescribeKey)(Catalog(column)) ?? []);
41
41
  }
42
42
  const ID = { name: "id", typname: "int8", castType: "bigint" };
43
43
  const SCORE = {
@@ -62,7 +62,7 @@ const LINE_NO = {
62
62
  typname: "int4",
63
63
  castType: "integer",
64
64
  };
65
- const SHAPES = {
65
+ const MODELS = {
66
66
  accounts: {
67
67
  fields: {
68
68
  id: Field({ column: ID, declared: "string" }),
@@ -97,11 +97,11 @@ function Sql(query) {
97
97
  }, (schemaId, tableId) => ({
98
98
  schemaId,
99
99
  tableId,
100
- shape: SHAPES[tableId],
100
+ model: MODELS[tableId],
101
101
  index: (name) => [name],
102
102
  }));
103
103
  const root = (0, selection_1.BuildRoot)(query.build(), context);
104
- return (0, relation_1.Render)((0, pipeline_1.ApplyStages)(root.relation, root.rest, context));
104
+ return (0, render_1.Render)((0, pipeline_1.ApplyStages)(root.relation, root.rest, context));
105
105
  }
106
106
  const ROUNDING = [
107
107
  [">", "gt", "floor"],