@antelopejs/postgres 0.0.1-stage → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (390) hide show
  1. package/LICENSE +190 -0
  2. package/README.md +152 -0
  3. package/dist/config.d.ts +38 -0
  4. package/dist/config.js +91 -0
  5. package/dist/config.js.map +1 -0
  6. package/dist/connection.d.ts +14 -0
  7. package/dist/connection.js +128 -0
  8. package/dist/connection.js.map +1 -0
  9. package/dist/implementations/catalog/index.d.ts +7 -0
  10. package/dist/implementations/catalog/index.js +60 -0
  11. package/dist/implementations/catalog/index.js.map +1 -0
  12. package/dist/implementations/database/changes.d.ts +19 -0
  13. package/dist/implementations/database/changes.js +100 -0
  14. package/dist/implementations/database/changes.js.map +1 -0
  15. package/dist/implementations/database/coerce.d.ts +15 -0
  16. package/dist/implementations/database/coerce.js +195 -0
  17. package/dist/implementations/database/coerce.js.map +1 -0
  18. package/dist/implementations/database/context.d.ts +32 -0
  19. package/dist/implementations/database/context.js +50 -0
  20. package/dist/implementations/database/context.js.map +1 -0
  21. package/dist/implementations/database/cursors.d.ts +16 -0
  22. package/dist/implementations/database/cursors.js +269 -0
  23. package/dist/implementations/database/cursors.js.map +1 -0
  24. package/dist/implementations/database/ddl.d.ts +62 -0
  25. package/dist/implementations/database/ddl.js +355 -0
  26. package/dist/implementations/database/ddl.js.map +1 -0
  27. package/dist/implementations/database/expression.d.ts +7 -0
  28. package/dist/implementations/database/expression.js +30 -0
  29. package/dist/implementations/database/expression.js.map +1 -0
  30. package/dist/implementations/database/external-catalog.d.ts +37 -0
  31. package/dist/implementations/database/external-catalog.js +96 -0
  32. package/dist/implementations/database/external-catalog.js.map +1 -0
  33. package/dist/implementations/database/external-column-profile.d.ts +18 -0
  34. package/dist/implementations/database/external-column-profile.js +223 -0
  35. package/dist/implementations/database/external-column-profile.js.map +1 -0
  36. package/dist/implementations/database/external-declarations.d.ts +9 -0
  37. package/dist/implementations/database/external-declarations.js +67 -0
  38. package/dist/implementations/database/external-declarations.js.map +1 -0
  39. package/dist/implementations/database/external-discovery.d.ts +39 -0
  40. package/dist/implementations/database/external-discovery.js +219 -0
  41. package/dist/implementations/database/external-discovery.js.map +1 -0
  42. package/dist/implementations/database/external-errors.d.ts +20 -0
  43. package/dist/implementations/database/external-errors.js +67 -0
  44. package/dist/implementations/database/external-errors.js.map +1 -0
  45. package/dist/implementations/database/external-measures.d.ts +11 -0
  46. package/dist/implementations/database/external-measures.js +82 -0
  47. package/dist/implementations/database/external-measures.js.map +1 -0
  48. package/dist/implementations/database/external-payload.d.ts +32 -0
  49. package/dist/implementations/database/external-payload.js +206 -0
  50. package/dist/implementations/database/external-payload.js.map +1 -0
  51. package/dist/implementations/database/external-profile.d.ts +4 -0
  52. package/dist/implementations/database/external-profile.js +129 -0
  53. package/dist/implementations/database/external-profile.js.map +1 -0
  54. package/dist/implementations/database/external-reference.d.ts +2 -0
  55. package/dist/implementations/database/external-reference.js +49 -0
  56. package/dist/implementations/database/external-reference.js.map +1 -0
  57. package/dist/implementations/database/external-refusals.d.ts +5 -0
  58. package/dist/implementations/database/external-refusals.js +23 -0
  59. package/dist/implementations/database/external-refusals.js.map +1 -0
  60. package/dist/implementations/database/external-rows.d.ts +2 -0
  61. package/dist/implementations/database/external-rows.js +81 -0
  62. package/dist/implementations/database/external-rows.js.map +1 -0
  63. package/dist/implementations/database/external-sample.d.ts +9 -0
  64. package/dist/implementations/database/external-sample.js +29 -0
  65. package/dist/implementations/database/external-sample.js.map +1 -0
  66. package/dist/implementations/database/external-schema.d.ts +3 -0
  67. package/dist/implementations/database/external-schema.js +111 -0
  68. package/dist/implementations/database/external-schema.js.map +1 -0
  69. package/dist/implementations/database/external-types.d.ts +37 -0
  70. package/dist/implementations/database/external-types.js +387 -0
  71. package/dist/implementations/database/external-types.js.map +1 -0
  72. package/dist/implementations/database/external-writes.d.ts +3 -0
  73. package/dist/implementations/database/external-writes.js +298 -0
  74. package/dist/implementations/database/external-writes.js.map +1 -0
  75. package/dist/implementations/database/feed-pipeline.d.ts +12 -0
  76. package/dist/implementations/database/feed-pipeline.js +92 -0
  77. package/dist/implementations/database/feed-pipeline.js.map +1 -0
  78. package/dist/implementations/database/feeds.d.ts +34 -0
  79. package/dist/implementations/database/feeds.js +338 -0
  80. package/dist/implementations/database/feeds.js.map +1 -0
  81. package/dist/implementations/database/fields.d.ts +37 -0
  82. package/dist/implementations/database/fields.js +114 -0
  83. package/dist/implementations/database/fields.js.map +1 -0
  84. package/dist/implementations/database/identifier.d.ts +8 -0
  85. package/dist/implementations/database/identifier.js +62 -0
  86. package/dist/implementations/database/identifier.js.map +1 -0
  87. package/dist/implementations/database/instances.d.ts +4 -0
  88. package/dist/implementations/database/instances.js +57 -0
  89. package/dist/implementations/database/instances.js.map +1 -0
  90. package/dist/implementations/database/introspect.d.ts +3 -0
  91. package/dist/implementations/database/introspect.js +36 -0
  92. package/dist/implementations/database/introspect.js.map +1 -0
  93. package/dist/implementations/database/jsonb.d.ts +29 -0
  94. package/dist/implementations/database/jsonb.js +54 -0
  95. package/dist/implementations/database/jsonb.js.map +1 -0
  96. package/dist/implementations/database/listener.d.ts +3 -0
  97. package/dist/implementations/database/listener.js +93 -0
  98. package/dist/implementations/database/listener.js.map +1 -0
  99. package/dist/implementations/database/migrate.d.ts +6 -0
  100. package/dist/implementations/database/migrate.js +282 -0
  101. package/dist/implementations/database/migrate.js.map +1 -0
  102. package/dist/implementations/database/payload.d.ts +24 -0
  103. package/dist/implementations/database/payload.js +113 -0
  104. package/dist/implementations/database/payload.js.map +1 -0
  105. package/dist/implementations/database/pipeline.d.ts +10 -0
  106. package/dist/implementations/database/pipeline.js +56 -0
  107. package/dist/implementations/database/pipeline.js.map +1 -0
  108. package/dist/implementations/database/query.d.ts +11 -0
  109. package/dist/implementations/database/query.js +189 -0
  110. package/dist/implementations/database/query.js.map +1 -0
  111. package/dist/implementations/database/readings.d.ts +17 -0
  112. package/dist/implementations/database/readings.js +133 -0
  113. package/dist/implementations/database/readings.js.map +1 -0
  114. package/dist/implementations/database/reaper.d.ts +6 -0
  115. package/dist/implementations/database/reaper.js +121 -0
  116. package/dist/implementations/database/reaper.js.map +1 -0
  117. package/dist/implementations/database/relation.d.ts +65 -0
  118. package/dist/implementations/database/relation.js +237 -0
  119. package/dist/implementations/database/relation.js.map +1 -0
  120. package/dist/implementations/database/result.d.ts +4 -0
  121. package/dist/implementations/database/result.js +70 -0
  122. package/dist/implementations/database/result.js.map +1 -0
  123. package/dist/implementations/database/row-source.d.ts +64 -0
  124. package/dist/implementations/database/row-source.js +279 -0
  125. package/dist/implementations/database/row-source.js.map +1 -0
  126. package/dist/implementations/database/schema.d.ts +15 -0
  127. package/dist/implementations/database/schema.js +143 -0
  128. package/dist/implementations/database/schema.js.map +1 -0
  129. package/dist/implementations/database/selection.d.ts +18 -0
  130. package/dist/implementations/database/selection.js +129 -0
  131. package/dist/implementations/database/selection.js.map +1 -0
  132. package/dist/implementations/database/sql.d.ts +24 -0
  133. package/dist/implementations/database/sql.js +48 -0
  134. package/dist/implementations/database/sql.js.map +1 -0
  135. package/dist/implementations/database/stage.d.ts +22 -0
  136. package/dist/implementations/database/stage.js +76 -0
  137. package/dist/implementations/database/stage.js.map +1 -0
  138. package/dist/implementations/database/stages-aggregate.d.ts +11 -0
  139. package/dist/implementations/database/stages-aggregate.js +112 -0
  140. package/dist/implementations/database/stages-aggregate.js.map +1 -0
  141. package/dist/implementations/database/stages-array.d.ts +2 -0
  142. package/dist/implementations/database/stages-array.js +162 -0
  143. package/dist/implementations/database/stages-array.js.map +1 -0
  144. package/dist/implementations/database/stages-core.d.ts +2 -0
  145. package/dist/implementations/database/stages-core.js +107 -0
  146. package/dist/implementations/database/stages-core.js.map +1 -0
  147. package/dist/implementations/database/stages-date.d.ts +2 -0
  148. package/dist/implementations/database/stages-date.js +65 -0
  149. package/dist/implementations/database/stages-date.js.map +1 -0
  150. package/dist/implementations/database/stages-group.d.ts +5 -0
  151. package/dist/implementations/database/stages-group.js +151 -0
  152. package/dist/implementations/database/stages-group.js.map +1 -0
  153. package/dist/implementations/database/stages-join.d.ts +2 -0
  154. package/dist/implementations/database/stages-join.js +162 -0
  155. package/dist/implementations/database/stages-join.js.map +1 -0
  156. package/dist/implementations/database/stages-numeric.d.ts +2 -0
  157. package/dist/implementations/database/stages-numeric.js +152 -0
  158. package/dist/implementations/database/stages-numeric.js.map +1 -0
  159. package/dist/implementations/database/stages-object.d.ts +2 -0
  160. package/dist/implementations/database/stages-object.js +81 -0
  161. package/dist/implementations/database/stages-object.js.map +1 -0
  162. package/dist/implementations/database/stages-projection.d.ts +2 -0
  163. package/dist/implementations/database/stages-projection.js +75 -0
  164. package/dist/implementations/database/stages-projection.js.map +1 -0
  165. package/dist/implementations/database/stages-rows.d.ts +2 -0
  166. package/dist/implementations/database/stages-rows.js +101 -0
  167. package/dist/implementations/database/stages-rows.js.map +1 -0
  168. package/dist/implementations/database/stages-selection.d.ts +2 -0
  169. package/dist/implementations/database/stages-selection.js +146 -0
  170. package/dist/implementations/database/stages-selection.js.map +1 -0
  171. package/dist/implementations/database/stages-string.d.ts +2 -0
  172. package/dist/implementations/database/stages-string.js +101 -0
  173. package/dist/implementations/database/stages-string.js.map +1 -0
  174. package/dist/implementations/database/subquery.d.ts +4 -0
  175. package/dist/implementations/database/subquery.js +49 -0
  176. package/dist/implementations/database/subquery.js.map +1 -0
  177. package/dist/implementations/database/types.d.ts +37 -0
  178. package/dist/implementations/database/types.js +57 -0
  179. package/dist/implementations/database/types.js.map +1 -0
  180. package/dist/implementations/database/utils.d.ts +16 -0
  181. package/dist/implementations/database/utils.js +38 -0
  182. package/dist/implementations/database/utils.js.map +1 -0
  183. package/dist/implementations/database/value.d.ts +10 -0
  184. package/dist/implementations/database/value.js +153 -0
  185. package/dist/implementations/database/value.js.map +1 -0
  186. package/dist/implementations/database/writes-atomic.d.ts +6 -0
  187. package/dist/implementations/database/writes-atomic.js +93 -0
  188. package/dist/implementations/database/writes-atomic.js.map +1 -0
  189. package/dist/implementations/database/writes-identity.d.ts +4 -0
  190. package/dist/implementations/database/writes-identity.js +181 -0
  191. package/dist/implementations/database/writes-identity.js.map +1 -0
  192. package/dist/implementations/database/writes-insert.d.ts +2 -0
  193. package/dist/implementations/database/writes-insert.js +136 -0
  194. package/dist/implementations/database/writes-insert.js.map +1 -0
  195. package/dist/implementations/database/writes-shared.d.ts +36 -0
  196. package/dist/implementations/database/writes-shared.js +64 -0
  197. package/dist/implementations/database/writes-shared.js.map +1 -0
  198. package/dist/implementations/database/writes.d.ts +16 -0
  199. package/dist/implementations/database/writes.js +52 -0
  200. package/dist/implementations/database/writes.js.map +1 -0
  201. package/dist/index.d.ts +4 -0
  202. package/dist/index.js +53 -0
  203. package/dist/index.js.map +1 -0
  204. package/dist/logger.d.ts +2 -0
  205. package/dist/logger.js +6 -0
  206. package/dist/logger.js.map +1 -0
  207. package/dist/test/antelope.test.d.ts +2 -0
  208. package/dist/test/antelope.test.js +89 -0
  209. package/dist/test/antelope.test.js.map +1 -0
  210. package/dist/test/atomic.test.d.ts +1 -0
  211. package/dist/test/atomic.test.js +132 -0
  212. package/dist/test/atomic.test.js.map +1 -0
  213. package/dist/test/catalog-owned.test.d.ts +1 -0
  214. package/dist/test/catalog-owned.test.js +17 -0
  215. package/dist/test/catalog-owned.test.js.map +1 -0
  216. package/dist/test/contention.test.d.ts +1 -0
  217. package/dist/test/contention.test.js +183 -0
  218. package/dist/test/contention.test.js.map +1 -0
  219. package/dist/test/indexes.test.d.ts +1 -0
  220. package/dist/test/indexes.test.js +311 -0
  221. package/dist/test/indexes.test.js.map +1 -0
  222. package/dist/test/unit/changes.spec.d.ts +1 -0
  223. package/dist/test/unit/changes.spec.js +103 -0
  224. package/dist/test/unit/changes.spec.js.map +1 -0
  225. package/dist/test/unit/coerce.spec.d.ts +1 -0
  226. package/dist/test/unit/coerce.spec.js +162 -0
  227. package/dist/test/unit/coerce.spec.js.map +1 -0
  228. package/dist/test/unit/config.spec.d.ts +1 -0
  229. package/dist/test/unit/config.spec.js +123 -0
  230. package/dist/test/unit/config.spec.js.map +1 -0
  231. package/dist/test/unit/connection.spec.d.ts +1 -0
  232. package/dist/test/unit/connection.spec.js +171 -0
  233. package/dist/test/unit/connection.spec.js.map +1 -0
  234. package/dist/test/unit/cursors.spec.d.ts +1 -0
  235. package/dist/test/unit/cursors.spec.js +823 -0
  236. package/dist/test/unit/cursors.spec.js.map +1 -0
  237. package/dist/test/unit/ddl.spec.d.ts +1 -0
  238. package/dist/test/unit/ddl.spec.js +571 -0
  239. package/dist/test/unit/ddl.spec.js.map +1 -0
  240. package/dist/test/unit/expression-array.spec.d.ts +1 -0
  241. package/dist/test/unit/expression-array.spec.js +488 -0
  242. package/dist/test/unit/expression-array.spec.js.map +1 -0
  243. package/dist/test/unit/expression-date.spec.d.ts +1 -0
  244. package/dist/test/unit/expression-date.spec.js +329 -0
  245. package/dist/test/unit/expression-date.spec.js.map +1 -0
  246. package/dist/test/unit/expression-numeric.spec.d.ts +1 -0
  247. package/dist/test/unit/expression-numeric.spec.js +362 -0
  248. package/dist/test/unit/expression-numeric.spec.js.map +1 -0
  249. package/dist/test/unit/expression-object.spec.d.ts +1 -0
  250. package/dist/test/unit/expression-object.spec.js +230 -0
  251. package/dist/test/unit/expression-object.spec.js.map +1 -0
  252. package/dist/test/unit/expression-stages.spec.d.ts +1 -0
  253. package/dist/test/unit/expression-stages.spec.js +82 -0
  254. package/dist/test/unit/expression-stages.spec.js.map +1 -0
  255. package/dist/test/unit/expression-string.spec.d.ts +1 -0
  256. package/dist/test/unit/expression-string.spec.js +249 -0
  257. package/dist/test/unit/expression-string.spec.js.map +1 -0
  258. package/dist/test/unit/expression.spec.d.ts +1 -0
  259. package/dist/test/unit/expression.spec.js +449 -0
  260. package/dist/test/unit/expression.spec.js.map +1 -0
  261. package/dist/test/unit/external-comparisons.spec.d.ts +1 -0
  262. package/dist/test/unit/external-comparisons.spec.js +147 -0
  263. package/dist/test/unit/external-comparisons.spec.js.map +1 -0
  264. package/dist/test/unit/external-types.spec.d.ts +1 -0
  265. package/dist/test/unit/external-types.spec.js +228 -0
  266. package/dist/test/unit/external-types.spec.js.map +1 -0
  267. package/dist/test/unit/feeds.spec.d.ts +1 -0
  268. package/dist/test/unit/feeds.spec.js +374 -0
  269. package/dist/test/unit/feeds.spec.js.map +1 -0
  270. package/dist/test/unit/fields.spec.d.ts +1 -0
  271. package/dist/test/unit/fields.spec.js +79 -0
  272. package/dist/test/unit/fields.spec.js.map +1 -0
  273. package/dist/test/unit/identifier.spec.d.ts +1 -0
  274. package/dist/test/unit/identifier.spec.js +50 -0
  275. package/dist/test/unit/identifier.spec.js.map +1 -0
  276. package/dist/test/unit/payload.spec.d.ts +1 -0
  277. package/dist/test/unit/payload.spec.js +278 -0
  278. package/dist/test/unit/payload.spec.js.map +1 -0
  279. package/dist/test/unit/pipeline-aggregate.spec.d.ts +1 -0
  280. package/dist/test/unit/pipeline-aggregate.spec.js +199 -0
  281. package/dist/test/unit/pipeline-aggregate.spec.js.map +1 -0
  282. package/dist/test/unit/pipeline-fixture.d.ts +79 -0
  283. package/dist/test/unit/pipeline-fixture.js +277 -0
  284. package/dist/test/unit/pipeline-fixture.js.map +1 -0
  285. package/dist/test/unit/pipeline-group.spec.d.ts +1 -0
  286. package/dist/test/unit/pipeline-group.spec.js +390 -0
  287. package/dist/test/unit/pipeline-group.spec.js.map +1 -0
  288. package/dist/test/unit/pipeline-join.spec.d.ts +1 -0
  289. package/dist/test/unit/pipeline-join.spec.js +165 -0
  290. package/dist/test/unit/pipeline-join.spec.js.map +1 -0
  291. package/dist/test/unit/pipeline-lookup.spec.d.ts +1 -0
  292. package/dist/test/unit/pipeline-lookup.spec.js +268 -0
  293. package/dist/test/unit/pipeline-lookup.spec.js.map +1 -0
  294. package/dist/test/unit/pipeline-projection.spec.d.ts +1 -0
  295. package/dist/test/unit/pipeline-projection.spec.js +183 -0
  296. package/dist/test/unit/pipeline-projection.spec.js.map +1 -0
  297. package/dist/test/unit/pipeline-rows.spec.d.ts +1 -0
  298. package/dist/test/unit/pipeline-rows.spec.js +321 -0
  299. package/dist/test/unit/pipeline-rows.spec.js.map +1 -0
  300. package/dist/test/unit/pipeline-selection.spec.d.ts +1 -0
  301. package/dist/test/unit/pipeline-selection.spec.js +257 -0
  302. package/dist/test/unit/pipeline-selection.spec.js.map +1 -0
  303. package/dist/test/unit/pipeline-stages.spec.d.ts +1 -0
  304. package/dist/test/unit/pipeline-stages.spec.js +226 -0
  305. package/dist/test/unit/pipeline-stages.spec.js.map +1 -0
  306. package/dist/test/unit/pipeline.spec.d.ts +1 -0
  307. package/dist/test/unit/pipeline.spec.js +72 -0
  308. package/dist/test/unit/pipeline.spec.js.map +1 -0
  309. package/dist/test/unit/query.spec.d.ts +1 -0
  310. package/dist/test/unit/query.spec.js +212 -0
  311. package/dist/test/unit/query.spec.js.map +1 -0
  312. package/dist/test/unit/reaper.spec.d.ts +1 -0
  313. package/dist/test/unit/reaper.spec.js +122 -0
  314. package/dist/test/unit/reaper.spec.js.map +1 -0
  315. package/dist/test/unit/relation.spec.d.ts +1 -0
  316. package/dist/test/unit/relation.spec.js +348 -0
  317. package/dist/test/unit/relation.spec.js.map +1 -0
  318. package/dist/test/unit/result.spec.d.ts +1 -0
  319. package/dist/test/unit/result.spec.js +128 -0
  320. package/dist/test/unit/result.spec.js.map +1 -0
  321. package/dist/test/unit/row-source.spec.d.ts +1 -0
  322. package/dist/test/unit/row-source.spec.js +141 -0
  323. package/dist/test/unit/row-source.spec.js.map +1 -0
  324. package/dist/test/unit/schema.spec.d.ts +1 -0
  325. package/dist/test/unit/schema.spec.js +44 -0
  326. package/dist/test/unit/schema.spec.js.map +1 -0
  327. package/dist/test/unit/selection.spec.d.ts +1 -0
  328. package/dist/test/unit/selection.spec.js +182 -0
  329. package/dist/test/unit/selection.spec.js.map +1 -0
  330. package/dist/test/unit/spec-fixture.d.ts +11 -0
  331. package/dist/test/unit/spec-fixture.js +71 -0
  332. package/dist/test/unit/spec-fixture.js.map +1 -0
  333. package/dist/test/unit/sql.spec.d.ts +1 -0
  334. package/dist/test/unit/sql.spec.js +38 -0
  335. package/dist/test/unit/sql.spec.js.map +1 -0
  336. package/dist/test/unit/subquery.spec.d.ts +1 -0
  337. package/dist/test/unit/subquery.spec.js +154 -0
  338. package/dist/test/unit/subquery.spec.js.map +1 -0
  339. package/dist/test/unit/types.spec.d.ts +1 -0
  340. package/dist/test/unit/types.spec.js +39 -0
  341. package/dist/test/unit/types.spec.js.map +1 -0
  342. package/dist/test/unit/utils.spec.d.ts +1 -0
  343. package/dist/test/unit/utils.spec.js +22 -0
  344. package/dist/test/unit/utils.spec.js.map +1 -0
  345. package/dist/test/unit/value.spec.d.ts +1 -0
  346. package/dist/test/unit/value.spec.js +195 -0
  347. package/dist/test/unit/value.spec.js.map +1 -0
  348. package/dist/test/unit/writes-atomic.spec.d.ts +1 -0
  349. package/dist/test/unit/writes-atomic.spec.js +66 -0
  350. package/dist/test/unit/writes-atomic.spec.js.map +1 -0
  351. package/dist/test/unit/writes-insert.spec.d.ts +1 -0
  352. package/dist/test/unit/writes-insert.spec.js +270 -0
  353. package/dist/test/unit/writes-insert.spec.js.map +1 -0
  354. package/dist/test/unit/writes-replace.spec.d.ts +1 -0
  355. package/dist/test/unit/writes-replace.spec.js +100 -0
  356. package/dist/test/unit/writes-replace.spec.js.map +1 -0
  357. package/dist/test/unit/writes-target.spec.d.ts +1 -0
  358. package/dist/test/unit/writes-target.spec.js +118 -0
  359. package/dist/test/unit/writes-target.spec.js.map +1 -0
  360. package/dist/test/unit/writes-update.spec.d.ts +1 -0
  361. package/dist/test/unit/writes-update.spec.js +297 -0
  362. package/dist/test/unit/writes-update.spec.js.map +1 -0
  363. package/dist/test-external/catalog.test.d.ts +1 -0
  364. package/dist/test-external/catalog.test.js +348 -0
  365. package/dist/test-external/catalog.test.js.map +1 -0
  366. package/dist/test-external/fixture.d.ts +7 -0
  367. package/dist/test-external/fixture.js +163 -0
  368. package/dist/test-external/fixture.js.map +1 -0
  369. package/dist/test-external/native.test.d.ts +1 -0
  370. package/dist/test-external/native.test.js +132 -0
  371. package/dist/test-external/native.test.js.map +1 -0
  372. package/dist/test-external/reads.test.d.ts +1 -0
  373. package/dist/test-external/reads.test.js +232 -0
  374. package/dist/test-external/reads.test.js.map +1 -0
  375. package/dist/test-external/refusals.test.d.ts +1 -0
  376. package/dist/test-external/refusals.test.js +93 -0
  377. package/dist/test-external/refusals.test.js.map +1 -0
  378. package/dist/test-external/registration.test.d.ts +1 -0
  379. package/dist/test-external/registration.test.js +127 -0
  380. package/dist/test-external/registration.test.js.map +1 -0
  381. package/dist/test-external/sales.d.ts +5 -0
  382. package/dist/test-external/sales.js +126 -0
  383. package/dist/test-external/sales.js.map +1 -0
  384. package/dist/test-external/startup.test.d.ts +1 -0
  385. package/dist/test-external/startup.test.js +15 -0
  386. package/dist/test-external/startup.test.js.map +1 -0
  387. package/dist/test-external/writes.test.d.ts +1 -0
  388. package/dist/test-external/writes.test.js +315 -0
  389. package/dist/test-external/writes.test.js.map +1 -0
  390. package/package.json +77 -7
@@ -0,0 +1,113 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.ID_AS_ASSERTION = exports.ID_AS_KEY = void 0;
7
+ exports.MembersByColumn = MembersByColumn;
8
+ exports.NoIdSupplied = NoIdSupplied;
9
+ exports.SplitPayload = SplitPayload;
10
+ const node_assert_1 = __importDefault(require("node:assert"));
11
+ const value_1 = require("./value");
12
+ const readings_1 = require("./readings");
13
+ const types_1 = require("./types");
14
+ const writes_shared_1 = require("./writes-shared");
15
+ const utils_1 = require("./utils");
16
+ function MembersByColumn(split) {
17
+ return new Map(split.members.map((member) => [member.column, member.value]));
18
+ }
19
+ const ID_AS_KEY = (split, value) => {
20
+ split.members.push({ column: utils_1.ID_COLUMN, value });
21
+ };
22
+ exports.ID_AS_KEY = ID_AS_KEY;
23
+ const ID_AS_ASSERTION = (split, value) => {
24
+ split.identity = value;
25
+ };
26
+ exports.ID_AS_ASSERTION = ID_AS_ASSERTION;
27
+ const ADAPTER_OWNED = "is a column this adapter owns and no payload may write it";
28
+ function Refusal(name) {
29
+ return new Error(`Payload key '${name}' ${ADAPTER_OWNED}`);
30
+ }
31
+ function Decoded(walk, value) {
32
+ const compiled = (0, value_1.DecodeValue)(value, walk.context);
33
+ (0, node_assert_1.default)(compiled, "A supplied payload value always decodes");
34
+ return compiled;
35
+ }
36
+ function Collect(walk, name, value) {
37
+ Object.defineProperty(walk.added, name, {
38
+ value,
39
+ enumerable: true,
40
+ writable: true,
41
+ configurable: true,
42
+ });
43
+ }
44
+ function NoIdSupplied(value) {
45
+ return value === undefined || value === null;
46
+ }
47
+ function KeySubject(name) {
48
+ return `Payload key '${name}'`;
49
+ }
50
+ function TakeReserved(walk, name, value) {
51
+ if (name === utils_1.INSTANCE_COLUMN) {
52
+ return;
53
+ }
54
+ if (name !== utils_1.ID_COLUMN) {
55
+ throw Refusal(name);
56
+ }
57
+ if (NoIdSupplied(value)) {
58
+ return;
59
+ }
60
+ walk.options.id(walk.split, (0, readings_1.WrittenAs)(Decoded(walk, value), types_1.TEXT, KeySubject(name)));
61
+ }
62
+ function TakeDeclared(walk, name, spec, value) {
63
+ if (value === undefined) {
64
+ walk.split.cleared.push(spec.column);
65
+ return;
66
+ }
67
+ if (value === null && (0, types_1.IsJsonBacked)(spec.type)) {
68
+ walk.split.members.push({
69
+ column: spec.column,
70
+ value: { sql: writes_shared_1.NULL_VALUE, type: spec.type },
71
+ });
72
+ return;
73
+ }
74
+ walk.split.members.push({
75
+ column: spec.column,
76
+ value: (0, readings_1.WrittenAs)(Decoded(walk, value), spec.type, KeySubject(name)),
77
+ });
78
+ }
79
+ function TakeUndeclared(walk, name, value) {
80
+ if (value === undefined) {
81
+ walk.split.removed.push(name);
82
+ return;
83
+ }
84
+ Collect(walk, name, value);
85
+ }
86
+ function TakeKey(walk, name, value) {
87
+ if (utils_1.RESERVED_COLUMNS.includes(name)) {
88
+ TakeReserved(walk, name, value);
89
+ return;
90
+ }
91
+ if (Object.hasOwn(walk.shape.fields, name)) {
92
+ TakeDeclared(walk, name, walk.shape.fields[name], value);
93
+ return;
94
+ }
95
+ TakeUndeclared(walk, name, value);
96
+ }
97
+ function SplitPayload(document, shape, context, options) {
98
+ const walk = {
99
+ split: { members: [], cleared: [], removed: [] },
100
+ added: {},
101
+ shape,
102
+ context,
103
+ options,
104
+ };
105
+ for (const [name, value] of Object.entries(document)) {
106
+ TakeKey(walk, name, value);
107
+ }
108
+ if (Object.keys(walk.added).length > 0) {
109
+ walk.split.extra = (0, value_1.DecodeValue)(walk.added, context);
110
+ }
111
+ return walk.split;
112
+ }
113
+ //# sourceMappingURL=payload.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payload.js","sourceRoot":"","sources":["../../../src/implementations/database/payload.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { QueryStage } from "./utils";
2
+ import type { Relation } from "./relation";
3
+ import type { DecodingContext } from "./context";
4
+ export type PipelineStage = (relation: Relation, stage: QueryStage, context: DecodingContext) => Relation;
5
+ export type PipelineStageMap = Record<string, PipelineStage>;
6
+ export declare const PIPELINE_STAGES: PipelineStageMap;
7
+ export declare const DEFERRED_STAGES: Record<string, string>;
8
+ export declare const REJECTED_STAGES: Record<string, string>;
9
+ export declare function ApplyStages(relation: Relation, stages: QueryStage[], context: DecodingContext): Relation;
10
+ export declare function CompileRelation(stages: QueryStage[], context: DecodingContext): Relation;
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.REJECTED_STAGES = exports.DEFERRED_STAGES = exports.PIPELINE_STAGES = void 0;
4
+ exports.ApplyStages = ApplyStages;
5
+ exports.CompileRelation = CompileRelation;
6
+ const writes_1 = require("./writes");
7
+ const selection_1 = require("./selection");
8
+ const changes_1 = require("./changes");
9
+ const stages_rows_1 = require("./stages-rows");
10
+ const stages_join_1 = require("./stages-join");
11
+ const stages_group_1 = require("./stages-group");
12
+ const stages_aggregate_1 = require("./stages-aggregate");
13
+ const stages_selection_1 = require("./stages-selection");
14
+ const stages_projection_1 = require("./stages-projection");
15
+ exports.PIPELINE_STAGES = {
16
+ ...stages_rows_1.ROW_STAGES,
17
+ ...stages_selection_1.SELECTION_STAGES,
18
+ ...stages_projection_1.PROJECTION_STAGES,
19
+ ...stages_aggregate_1.AGGREGATE_STAGES,
20
+ ...stages_join_1.JOIN_STAGES,
21
+ ...stages_group_1.GROUP_STAGES,
22
+ };
23
+ exports.DEFERRED_STAGES = {};
24
+ exports.REJECTED_STAGES = {
25
+ [changes_1.CHANGES_STAGE]: "A 'changes' feed must be the last stage of a query and must be iterated rather than awaited",
26
+ };
27
+ function StageError(name) {
28
+ if (Object.hasOwn(exports.REJECTED_STAGES, name)) {
29
+ return new Error(exports.REJECTED_STAGES[name]);
30
+ }
31
+ if (Object.hasOwn(exports.DEFERRED_STAGES, name)) {
32
+ return new Error(`${exports.DEFERRED_STAGES[name]} (stage '${name}')`);
33
+ }
34
+ return new Error(`Unsupported query stage '${name}'`);
35
+ }
36
+ function ApplyStage(relation, stage, context) {
37
+ if (!Object.hasOwn(exports.PIPELINE_STAGES, stage.stage)) {
38
+ throw StageError(stage.stage);
39
+ }
40
+ return exports.PIPELINE_STAGES[stage.stage](relation, stage, context);
41
+ }
42
+ function ApplyStages(relation, stages, context) {
43
+ return stages.reduce((current, stage) => ApplyStage(current, stage, context), relation);
44
+ }
45
+ function RefuseNestedWrite(write) {
46
+ throw new Error(`The '${write.stage}' stage writes, so it cannot be nested inside another query`);
47
+ }
48
+ function CompileRelation(stages, context) {
49
+ const root = (0, selection_1.BuildRoot)(stages, context);
50
+ const split = (0, writes_1.SplitWrite)(root.rest);
51
+ if (split.write) {
52
+ RefuseNestedWrite(split.write);
53
+ }
54
+ return ApplyStages(root.relation, split.pipeline, context);
55
+ }
56
+ //# sourceMappingURL=pipeline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../../src/implementations/database/pipeline.ts"],"names":[],"mappings":";;;AA8FA,kCASC;AA4BD,0CAUC;AA7ID,qCAAsC;AACtC,2CAAwC;AACxC,uCAA0C;AAG1C,+CAA2C;AAC3C,+CAA4C;AAC5C,iDAA8C;AAE9C,yDAAsD;AACtD,yDAAsD;AACtD,2DAAwD;AA2B3C,QAAA,eAAe,GAAqB;IAC/C,GAAG,wBAAU;IACb,GAAG,mCAAgB;IACnB,GAAG,qCAAiB;IACpB,GAAG,mCAAgB;IACnB,GAAG,yBAAW;IACd,GAAG,2BAAY;CAChB,CAAC;AAWW,QAAA,eAAe,GAA2B,EAAE,CAAC;AAW7C,QAAA,eAAe,GAA2B;IACrD,CAAC,uBAAa,CAAC,EACb,6FAA6F;CAChG,CAAC;AAEF,SAAS,UAAU,CAAC,IAAY;IAC9B,IAAI,MAAM,CAAC,MAAM,CAAC,uBAAe,EAAE,IAAI,CAAC,EAAE,CAAC;QACzC,OAAO,IAAI,KAAK,CAAC,uBAAe,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1C,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,CAAC,uBAAe,EAAE,IAAI,CAAC,EAAE,CAAC;QACzC,OAAO,IAAI,KAAK,CAAC,GAAG,uBAAe,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,CAAC;IACjE,CAAC;IACD,OAAO,IAAI,KAAK,CAAC,4BAA4B,IAAI,GAAG,CAAC,CAAC;AACxD,CAAC;AAED,SAAS,UAAU,CACjB,QAAkB,EAClB,KAAiB,EACjB,OAAwB;IAExB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,uBAAe,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;QACjD,MAAM,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IACD,OAAO,uBAAe,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;AAChE,CAAC;AAGD,SAAgB,WAAW,CACzB,QAAkB,EAClB,MAAoB,EACpB,OAAwB;IAExB,OAAO,MAAM,CAAC,MAAM,CAClB,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,EACvD,QAAQ,CACT,CAAC;AACJ,CAAC;AAMD,SAAS,iBAAiB,CAAC,KAAiB;IAC1C,MAAM,IAAI,KAAK,CACb,QAAQ,KAAK,CAAC,KAAK,6DAA6D,CACjF,CAAC;AACJ,CAAC;AAkBD,SAAgB,eAAe,CAC7B,MAAoB,EACpB,OAAwB;IAExB,MAAM,IAAI,GAAG,IAAA,qBAAS,EAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,MAAM,KAAK,GAAG,IAAA,mBAAU,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpC,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAChB,iBAAiB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IACD,OAAO,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AAC7D,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { DecodingContext } from "./context";
2
+ import { type QueryStage } from "./utils";
3
+ import { type CursorRequest } from "./cursors";
4
+ import { type Relation } from "./relation";
5
+ export type ResultRow = Record<string, unknown>;
6
+ export declare function DecodeRows(relation: Relation, rows: ResultRow[]): unknown[];
7
+ export declare function DecodeResult(relation: Relation, rows: ResultRow[]): unknown;
8
+ export declare function RunQuery(stages: QueryStage[]): Promise<any>;
9
+ export declare function CompileCursor(stages: QueryStage[], context: DecodingContext): Promise<CursorRequest>;
10
+ export declare function ReadCursor(reqId: number, stages: QueryStage[]): Promise<IteratorResult<any, void>>;
11
+ export declare function CloseCursor(reqId: number): Promise<void>;
@@ -0,0 +1,189 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.DecodeRows = DecodeRows;
7
+ exports.DecodeResult = DecodeResult;
8
+ exports.RunQuery = RunQuery;
9
+ exports.CompileCursor = CompileCursor;
10
+ exports.ReadCursor = ReadCursor;
11
+ exports.CloseCursor = CloseCursor;
12
+ const node_assert_1 = __importDefault(require("node:assert"));
13
+ const atomic_1 = require("@antelopejs/interface-database/atomic");
14
+ const connection_1 = require("../../connection");
15
+ const config_1 = require("../../config");
16
+ const external_refusals_1 = require("./external-refusals");
17
+ const changes_1 = require("./changes");
18
+ const external_errors_1 = require("./external-errors");
19
+ const context_1 = require("./context");
20
+ const subquery_1 = require("./subquery");
21
+ const expression_1 = require("./expression");
22
+ const result_1 = require("./result");
23
+ const pipeline_1 = require("./pipeline");
24
+ const schema_1 = require("./schema");
25
+ const writes_shared_1 = require("./writes-shared");
26
+ const writes_1 = require("./writes");
27
+ const writes_atomic_1 = require("./writes-atomic");
28
+ const feeds_1 = require("./feeds");
29
+ const instances_1 = require("./instances");
30
+ const utils_1 = require("./utils");
31
+ const cursors_1 = require("./cursors");
32
+ const relation_1 = require("./relation");
33
+ const selection_1 = require("./selection");
34
+ const MISSING_SCHEMA_ID = "Lifecycle query is missing its schema id";
35
+ const LIFECYCLE_STAGE_COUNT = 2;
36
+ const NO_ROWS = 0;
37
+ const LIFECYCLE_HANDLERS = {
38
+ [utils_1.CREATE_INSTANCE]: (schemaId, stage) => (0, instances_1.CreateInstance)(schemaId, stage.options?.id),
39
+ [utils_1.DESTROY_INSTANCE]: (schemaId, stage) => (0, instances_1.DestroyInstance)(schemaId, (0, schema_1.GetTableNames)(schemaId), stage.options?.id),
40
+ listInstances: instances_1.ListInstances,
41
+ };
42
+ const EXTERNAL_LIFECYCLE = {
43
+ [utils_1.CREATE_INSTANCE]: (_schemaId, stage) => Promise.reject((0, external_refusals_1.ExternalInstanceRefusal)(stage.stage)),
44
+ [utils_1.DESTROY_INSTANCE]: (_schemaId, stage) => Promise.reject((0, external_refusals_1.ExternalInstanceRefusal)(stage.stage)),
45
+ listInstances: () => Promise.resolve([]),
46
+ };
47
+ function Lifecycle(stages) {
48
+ if (stages.length !== LIFECYCLE_STAGE_COUNT ||
49
+ stages[0].stage !== selection_1.SCHEMA_STAGE) {
50
+ return undefined;
51
+ }
52
+ const stage = stages[1];
53
+ if (!Object.hasOwn(LIFECYCLE_HANDLERS, stage.stage)) {
54
+ return undefined;
55
+ }
56
+ const handler = ((0, config_1.IsExternal)() ? EXTERNAL_LIFECYCLE : LIFECYCLE_HANDLERS)[stage.stage];
57
+ const schemaId = stages[0].options?.id;
58
+ (0, node_assert_1.default)(typeof schemaId === "string", MISSING_SCHEMA_ID);
59
+ return (0, schema_1.WaitForSchemaReady)(schemaId).then(() => handler(schemaId, stage));
60
+ }
61
+ function DecodeRows(relation, rows) {
62
+ const projection = relation.projection;
63
+ if (projection) {
64
+ return rows.map((row) => (0, result_1.ReviveValue)(row[relation_1.OUTPUT_COLUMN], projection.type));
65
+ }
66
+ const shape = (0, relation_1.RequireOrigin)(relation).shape;
67
+ return rows.map((row) => (0, result_1.DecodeRow)(row, shape));
68
+ }
69
+ function DecodeResult(relation, rows) {
70
+ const decoded = DecodeRows(relation, rows);
71
+ if (!relation.single) {
72
+ return decoded;
73
+ }
74
+ return decoded.length > 0 ? decoded[0] : relation.absent;
75
+ }
76
+ async function RunRead(relation, context) {
77
+ const result = await (0, connection_1.Query)((0, relation_1.Render)(relation), context.params.all());
78
+ return DecodeResult(relation, result.rows);
79
+ }
80
+ async function RunWrite(target, stage, context) {
81
+ const statement = (0, writes_1.CompileWrite)(target, stage, context);
82
+ if (!statement.sql) {
83
+ return statement.ids ?? NO_ROWS;
84
+ }
85
+ if (stage.stage === writes_atomic_1.ATOMIC_MUTATION) {
86
+ return (0, writes_atomic_1.ExecuteAtomicWrite)(statement.sql, context.params.all());
87
+ }
88
+ const external = target.origin.shape.external;
89
+ if (!external) {
90
+ const result = await (0, connection_1.Query)(statement.sql, context.params.all());
91
+ return statement.ids ?? result.rowCount ?? NO_ROWS;
92
+ }
93
+ return RunExternalWrite(statement, external, context);
94
+ }
95
+ async function Validate(validation) {
96
+ if (!validation) {
97
+ return;
98
+ }
99
+ const result = await (0, connection_1.Query)(validation.sql, validation.params);
100
+ const row = result.rows[0] ?? {};
101
+ const failed = validation.failures.filter((_, index) => row[`c${index}`] !== true);
102
+ if (failed.length > 0) {
103
+ throw (0, external_errors_1.InvalidValues)(failed);
104
+ }
105
+ }
106
+ async function RunExternalWrite(statement, external, context) {
107
+ await Validate(statement.validation);
108
+ try {
109
+ const result = await (0, connection_1.Query)(statement.sql, context.params.all());
110
+ if (statement.returnsIds) {
111
+ return result.rows.map((row) => row[utils_1.ID_COLUMN]);
112
+ }
113
+ return result.rowCount ?? NO_ROWS;
114
+ }
115
+ catch (err) {
116
+ throw (0, external_errors_1.ExternalWriteFailure)(err, external);
117
+ }
118
+ }
119
+ function QueryContext() {
120
+ return new context_1.DecodingContext({
121
+ expression: expression_1.CompileExpression,
122
+ subquery: subquery_1.CompileSubquery,
123
+ relation: pipeline_1.CompileRelation,
124
+ });
125
+ }
126
+ function CompileQuery(stages, context) {
127
+ if (stages.at(-1)?.stage === writes_atomic_1.ATOMIC_MUTATION) {
128
+ (0, atomic_1.ValidateAtomicMutationTable)(stages.slice(0, -1));
129
+ }
130
+ const root = (0, selection_1.BuildRoot)(stages, context);
131
+ const split = (0, writes_1.SplitWrite)(root.rest);
132
+ const relation = (0, pipeline_1.ApplyStages)(root.relation, split.pipeline, context);
133
+ return { context, root, split, relation };
134
+ }
135
+ async function ReadyQuery(stages, context) {
136
+ await Promise.all((0, selection_1.CollectSchemaIds)(stages).map(schema_1.WaitForSchemaReady));
137
+ return CompileQuery(stages, context);
138
+ }
139
+ async function RunQuery(stages) {
140
+ const lifecycle = Lifecycle(stages);
141
+ if (lifecycle) {
142
+ return lifecycle;
143
+ }
144
+ const compiled = await ReadyQuery(stages, QueryContext());
145
+ if (!compiled.split.write) {
146
+ return RunRead(compiled.relation, compiled.context);
147
+ }
148
+ if (compiled.root.external &&
149
+ compiled.split.write.stage === writes_atomic_1.ATOMIC_MUTATION) {
150
+ throw (0, external_refusals_1.ExternalWriteRefusal)(compiled.root.external, compiled.split.write.stage);
151
+ }
152
+ return RunWrite((0, writes_shared_1.WriteTargetOf)(compiled.root, compiled.relation), compiled.split.write, compiled.context);
153
+ }
154
+ function RefuseCursorWrite(write) {
155
+ throw new Error(`The '${write.stage}' stage writes, so it cannot be read through a cursor`);
156
+ }
157
+ async function CompileCursor(stages, context) {
158
+ const compiled = await ReadyQuery(stages, context);
159
+ if (compiled.split.write) {
160
+ RefuseCursorWrite(compiled.split.write);
161
+ }
162
+ const relation = compiled.relation;
163
+ return {
164
+ sql: (0, relation_1.Render)(relation),
165
+ params: context.params.all(),
166
+ decode: (rows) => DecodeRows(relation, rows),
167
+ };
168
+ }
169
+ function IsFeed(stages) {
170
+ return stages[stages.length - 1]?.stage === changes_1.CHANGES_STAGE;
171
+ }
172
+ function ReadCursor(reqId, stages) {
173
+ try {
174
+ if (IsFeed(stages) || (0, feeds_1.IsRegisteredFeed)(reqId)) {
175
+ return (0, feeds_1.ReadFeedEvent)(reqId, stages);
176
+ }
177
+ return (0, cursors_1.ReadCursorRow)(reqId, () => CompileCursor(stages, QueryContext()));
178
+ }
179
+ catch (err) {
180
+ return Promise.reject(err);
181
+ }
182
+ }
183
+ function CloseCursor(reqId) {
184
+ if ((0, feeds_1.IsRegisteredFeed)(reqId)) {
185
+ return (0, feeds_1.CloseOneFeed)(reqId);
186
+ }
187
+ return (0, cursors_1.CloseOneCursor)(reqId).then(() => (0, feeds_1.CloseOneFeed)(reqId));
188
+ }
189
+ //# sourceMappingURL=query.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query.js","sourceRoot":"","sources":["../../../src/implementations/database/query.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { type Compiled } from "./sql";
2
+ import { type SqlType } from "./types";
3
+ export declare const FLOAT_CAST = "::double precision";
4
+ export declare const INT4_MIN = -2147483648;
5
+ export declare const INT4_MAX = 2147483647;
6
+ export declare function ClampToRange(sql: string, lowest: number, highest: number): string;
7
+ export declare function AsFloat(sql: string): Compiled;
8
+ export declare const UTC_ZONE: string;
9
+ export declare function Text(value: Compiled): Compiled;
10
+ export declare const ORDERED_KINDS: Partial<Record<SqlType["kind"], SqlType>>;
11
+ export declare function Numeric(value: Compiled): Compiled;
12
+ export declare function Moment(value: Compiled): Compiled;
13
+ export declare function Predicate(value: Compiled): Compiled;
14
+ export declare function StoredAs(value: Compiled, target: SqlType): Compiled;
15
+ export declare function WrittenAs(value: Compiled, target: SqlType, subject: string): Compiled;
16
+ export declare function Defaulted(value: Compiled, def: Compiled | undefined, subject: string): Compiled;
17
+ export declare function AsJson(value: Compiled): Compiled;
@@ -0,0 +1,133 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ORDERED_KINDS = exports.UTC_ZONE = exports.INT4_MAX = exports.INT4_MIN = exports.FLOAT_CAST = void 0;
4
+ exports.ClampToRange = ClampToRange;
5
+ exports.AsFloat = AsFloat;
6
+ exports.Text = Text;
7
+ exports.Numeric = Numeric;
8
+ exports.Moment = Moment;
9
+ exports.Predicate = Predicate;
10
+ exports.StoredAs = StoredAs;
11
+ exports.WrittenAs = WrittenAs;
12
+ exports.Defaulted = Defaulted;
13
+ exports.AsJson = AsJson;
14
+ const sql_1 = require("./sql");
15
+ const coerce_1 = require("./coerce");
16
+ const types_1 = require("./types");
17
+ exports.FLOAT_CAST = "::double precision";
18
+ exports.INT4_MIN = -2147483648;
19
+ exports.INT4_MAX = 2147483647;
20
+ function ClampToRange(sql, lowest, highest) {
21
+ return `LEAST(GREATEST(trunc(${sql}), ${lowest}), ${highest})`;
22
+ }
23
+ function AsFloat(sql) {
24
+ return { sql: `((${sql})${exports.FLOAT_CAST})`, type: types_1.FLOAT };
25
+ }
26
+ exports.UTC_ZONE = (0, sql_1.QuoteLiteral)("UTC");
27
+ const ISO_8601_UTC = (0, sql_1.QuoteLiteral)('YYYY-MM-DD"T"HH24:MI:SS.MS"Z"');
28
+ const RENDERING = {
29
+ timestamp: (sql) => `(to_char(${sql} AT TIME ZONE ${exports.UTC_ZONE}, ${ISO_8601_UTC}))`,
30
+ };
31
+ function Text(value) {
32
+ const rendering = RENDERING[value.type.kind];
33
+ if (!rendering) {
34
+ return (0, coerce_1.Cast)(value, types_1.TEXT);
35
+ }
36
+ return { sql: rendering(value.sql), type: types_1.TEXT };
37
+ }
38
+ exports.ORDERED_KINDS = {
39
+ text: types_1.TEXT,
40
+ float: types_1.FLOAT,
41
+ timestamp: types_1.TIMESTAMP,
42
+ };
43
+ const MILLISECONDS_PER_SECOND = "1000";
44
+ const NUMERIC_TEXT = "'^\\s*[+-]?([0-9]+(\\.[0-9]*)?|\\.[0-9]+)([eE][+-]?[0-9]+)?\\s*$'";
45
+ const NUMERATION = {
46
+ bool: (sql) => `((${sql})::int::double precision)`,
47
+ timestamp: (sql) => `((EXTRACT(EPOCH FROM ${sql}) * ${MILLISECONDS_PER_SECOND})::double precision)`,
48
+ text: (sql) => `(CASE WHEN ${sql} ~ ${NUMERIC_TEXT} THEN ((${sql})::double precision) END)`,
49
+ };
50
+ function Numeric(value) {
51
+ const numeration = NUMERATION[value.type.kind];
52
+ if (!numeration) {
53
+ return (0, coerce_1.Cast)(value, types_1.FLOAT);
54
+ }
55
+ return { sql: numeration(value.sql), type: types_1.FLOAT };
56
+ }
57
+ const EARLIEST_EPOCH_MILLISECONDS = "-210866803200000";
58
+ const LATEST_EPOCH_MILLISECONDS = "8640000000000000";
59
+ const FromEpoch = (value) => {
60
+ const millis = Numeric(value).sql;
61
+ const bounded = `(CASE WHEN ${millis} BETWEEN ${EARLIEST_EPOCH_MILLISECONDS} AND ${LATEST_EPOCH_MILLISECONDS} THEN ${millis} END)`;
62
+ return `(to_timestamp(${bounded} / ${MILLISECONDS_PER_SECOND}))`;
63
+ };
64
+ const FromParsedText = (value) => `(CASE WHEN ${(0, coerce_1.ParsesAs)(value.sql, types_1.TIMESTAMP)} THEN ${(0, coerce_1.Cast)(value, types_1.TIMESTAMP).sql} END)`;
65
+ const INSTANT = {
66
+ float: FromEpoch,
67
+ bool: FromEpoch,
68
+ text: FromParsedText,
69
+ };
70
+ function Moment(value) {
71
+ const instant = INSTANT[value.type.kind];
72
+ if (!instant) {
73
+ return (0, coerce_1.Cast)(value, types_1.TIMESTAMP);
74
+ }
75
+ return { sql: instant(value), type: types_1.TIMESTAMP };
76
+ }
77
+ const FALSY_JSON = ["null", "false", "0", '""'];
78
+ const FALSEHOOD = `array[${FALSY_JSON.map(sql_1.QuoteLiteral).join(", ")}]::${(0, types_1.PhysicalType)(types_1.OPAQUE)}[]`;
79
+ const JsonTruthiness = (sql) => `(${sql} <> ALL (${FALSEHOOD}))`;
80
+ const TRUTHINESS = {
81
+ bool: (sql) => sql,
82
+ float: (sql) => `(${sql} <> 0)`,
83
+ text: (sql) => `(${sql} <> '')`,
84
+ timestamp: (sql) => `(${sql} IS NOT NULL)`,
85
+ json: JsonTruthiness,
86
+ array: JsonTruthiness,
87
+ };
88
+ function Predicate(value) {
89
+ return { sql: TRUTHINESS[value.type.kind](value.sql), type: types_1.BOOL };
90
+ }
91
+ const STORED_READINGS = {
92
+ float: Numeric,
93
+ text: Text,
94
+ bool: Predicate,
95
+ timestamp: Moment,
96
+ };
97
+ function StoredAs(value, target) {
98
+ if ((0, types_1.IsJsonBacked)(target) || (0, types_1.IsJsonBacked)(value.type)) {
99
+ return (0, coerce_1.Cast)(value, target);
100
+ }
101
+ return STORED_READINGS[target.kind](value);
102
+ }
103
+ const BOOLEAN_ONLY = `takes a ${(0, types_1.PhysicalType)(types_1.BOOL)} or a json ${(0, types_1.PhysicalType)(types_1.BOOL)}` +
104
+ ` for a ${(0, types_1.PhysicalType)(types_1.BOOL)} column`;
105
+ const StoredBoolean = (value, subject) => {
106
+ if (value.type.kind === "bool") {
107
+ return value;
108
+ }
109
+ if ((0, types_1.IsJsonBacked)(value.type)) {
110
+ return (0, coerce_1.Cast)(value, types_1.BOOL);
111
+ }
112
+ throw new Error(`${subject} ${BOOLEAN_ONLY}, received ${(0, types_1.PhysicalType)(value.type)}`);
113
+ };
114
+ const WRITTEN_READINGS = {
115
+ bool: StoredBoolean,
116
+ };
117
+ function WrittenAs(value, target, subject) {
118
+ const narrowed = WRITTEN_READINGS[target.kind];
119
+ if (!narrowed) {
120
+ return StoredAs(value, target);
121
+ }
122
+ return narrowed(value, subject);
123
+ }
124
+ function Defaulted(value, def, subject) {
125
+ if (!def) {
126
+ return value;
127
+ }
128
+ return (0, coerce_1.WithDefault)(value, WrittenAs(def, value.type, subject));
129
+ }
130
+ function AsJson(value) {
131
+ return (0, coerce_1.Cast)(value, types_1.OPAQUE);
132
+ }
133
+ //# sourceMappingURL=readings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"readings.js","sourceRoot":"","sources":["../../../src/implementations/database/readings.ts"],"names":[],"mappings":";;;AAqCA,oCAMC;AAGD,0BAEC;AA+BD,oBAMC;AAiDD,0BAMC;AAmDD,wBAMC;AA6CD,8BAEC;AAkCD,4BAKC;AA0CD,8BAUC;AAuBD,8BASC;AAGD,wBAEC;AApXD,+BAAoD;AACpD,qCAAuD;AACvD,mCAWiB;AAEJ,QAAA,UAAU,GAAG,oBAAoB,CAAC;AAQlC,QAAA,QAAQ,GAAG,CAAC,UAAU,CAAC;AACvB,QAAA,QAAQ,GAAG,UAAU,CAAC;AAanC,SAAgB,YAAY,CAC1B,GAAW,EACX,MAAc,EACd,OAAe;IAEf,OAAO,wBAAwB,GAAG,MAAM,MAAM,MAAM,OAAO,GAAG,CAAC;AACjE,CAAC;AAGD,SAAgB,OAAO,CAAC,GAAW;IACjC,OAAO,EAAE,GAAG,EAAE,KAAK,GAAG,IAAI,kBAAU,GAAG,EAAE,IAAI,EAAE,aAAK,EAAE,CAAC;AACzD,CAAC;AAKY,QAAA,QAAQ,GAAG,IAAA,kBAAY,EAAC,KAAK,CAAC,CAAC;AAE5C,MAAM,YAAY,GAAG,IAAA,kBAAY,EAAC,+BAA+B,CAAC,CAAC;AAEnE,MAAM,SAAS,GAAgD;IAC7D,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CACjB,YAAY,GAAG,iBAAiB,gBAAQ,KAAK,YAAY,IAAI;CAChE,CAAC;AAmBF,SAAgB,IAAI,CAAC,KAAe;IAClC,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7C,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,IAAA,aAAI,EAAC,KAAK,EAAE,YAAI,CAAC,CAAC;IAC3B,CAAC;IACD,OAAO,EAAE,GAAG,EAAE,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,YAAI,EAAE,CAAC;AACnD,CAAC;AAYY,QAAA,aAAa,GAA8C;IACtE,IAAI,EAAE,YAAI;IACV,KAAK,EAAE,aAAK;IACZ,SAAS,EAAE,iBAAS;CACrB,CAAC;AAIF,MAAM,uBAAuB,GAAG,MAAM,CAAC;AACvC,MAAM,YAAY,GAChB,mEAAmE,CAAC;AAEtE,MAAM,UAAU,GAAiD;IAC/D,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,GAAG,2BAA2B;IAClD,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CACjB,wBAAwB,GAAG,OAAO,uBAAuB,sBAAsB;IACjF,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE,CACZ,cAAc,GAAG,MAAM,YAAY,WAAW,GAAG,2BAA2B;CAC/E,CAAC;AAmBF,SAAgB,OAAO,CAAC,KAAe;IACrC,MAAM,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/C,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,IAAA,aAAI,EAAC,KAAK,EAAE,aAAK,CAAC,CAAC;IAC5B,CAAC;IACD,OAAO,EAAE,GAAG,EAAE,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,aAAK,EAAE,CAAC;AACrD,CAAC;AAID,MAAM,2BAA2B,GAAG,kBAAkB,CAAC;AACvD,MAAM,yBAAyB,GAAG,kBAAkB,CAAC;AAErD,MAAM,SAAS,GAAY,CAAC,KAAK,EAAE,EAAE;IACnC,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC;IAClC,MAAM,OAAO,GAAG,cAAc,MAAM,YAAY,2BAA2B,QAAQ,yBAAyB,SAAS,MAAM,OAAO,CAAC;IACnI,OAAO,iBAAiB,OAAO,MAAM,uBAAuB,IAAI,CAAC;AACnE,CAAC,CAAC;AAEF,MAAM,cAAc,GAAY,CAAC,KAAK,EAAE,EAAE,CACxC,cAAc,IAAA,iBAAQ,EAAC,KAAK,CAAC,GAAG,EAAE,iBAAS,CAAC,SAAS,IAAA,aAAI,EAAC,KAAK,EAAE,iBAAS,CAAC,CAAC,GAAG,OAAO,CAAC;AAEzF,MAAM,OAAO,GAA8C;IACzD,KAAK,EAAE,SAAS;IAChB,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,cAAc;CACrB,CAAC;AA+BF,SAAgB,MAAM,CAAC,KAAe;IACpC,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,IAAA,aAAI,EAAC,KAAK,EAAE,iBAAS,CAAC,CAAC;IAChC,CAAC;IACD,OAAO,EAAE,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,iBAAS,EAAE,CAAC;AAClD,CAAC;AAQD,MAAM,UAAU,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;AAEhD,MAAM,SAAS,GAAG,SAAS,UAAU,CAAC,GAAG,CAAC,kBAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,IAAA,oBAAY,EAAC,cAAM,CAAC,IAAI,CAAC;AAEjG,MAAM,cAAc,GAAe,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,GAAG,YAAY,SAAS,IAAI,CAAC;AAE7E,MAAM,UAAU,GAAwC;IACtD,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG;IAClB,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,GAAG,QAAQ;IAC/B,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,GAAG,SAAS;IAC/B,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,GAAG,eAAe;IAC1C,IAAI,EAAE,cAAc;IACpB,KAAK,EAAE,cAAc;CACtB,CAAC;AAwBF,SAAgB,SAAS,CAAC,KAAe;IACvC,OAAO,EAAE,GAAG,EAAE,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,YAAI,EAAE,CAAC;AACrE,CAAC;AAMD,MAAM,eAAe,GAAwC;IAC3D,KAAK,EAAE,OAAO;IACd,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,SAAS;IACf,SAAS,EAAE,MAAM;CAClB,CAAC;AAuBF,SAAgB,QAAQ,CAAC,KAAe,EAAE,MAAe;IACvD,IAAI,IAAA,oBAAY,EAAC,MAAM,CAAC,IAAI,IAAA,oBAAY,EAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACrD,OAAO,IAAA,aAAI,EAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC7B,CAAC;IACD,OAAO,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC;AAC7C,CAAC;AAQD,MAAM,YAAY,GAChB,WAAW,IAAA,oBAAY,EAAC,YAAI,CAAC,cAAc,IAAA,oBAAY,EAAC,YAAI,CAAC,EAAE;IAC/D,UAAU,IAAA,oBAAY,EAAC,YAAI,CAAC,SAAS,CAAC;AAExC,MAAM,aAAa,GAAY,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IAChD,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC/B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,IAAA,oBAAY,EAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7B,OAAO,IAAA,aAAI,EAAC,KAAK,EAAE,YAAI,CAAC,CAAC;IAC3B,CAAC;IACD,MAAM,IAAI,KAAK,CACb,GAAG,OAAO,IAAI,YAAY,cAAc,IAAA,oBAAY,EAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CACnE,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAA8C;IAClE,IAAI,EAAE,aAAa;CACpB,CAAC;AAgBF,SAAgB,SAAS,CACvB,KAAe,EACf,MAAe,EACf,OAAe;IAEf,MAAM,QAAQ,GAAG,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC/C,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACjC,CAAC;IACD,OAAO,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAClC,CAAC;AAuBD,SAAgB,SAAS,CACvB,KAAe,EACf,GAAyB,EACzB,OAAe;IAEf,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,IAAA,oBAAW,EAAC,KAAK,EAAE,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;AACjE,CAAC;AAGD,SAAgB,MAAM,CAAC,KAAe;IACpC,OAAO,IAAA,aAAI,EAAC,KAAK,EAAE,cAAM,CAAC,CAAC;AAC7B,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { ClientBase } from "pg";
2
+ export declare function ReapOnce(client: ClientBase, retentionMs: number): Promise<boolean>;
3
+ export declare function ReapInterval(retentionMs: number): number;
4
+ export declare function StartReaper(): void;
5
+ export declare function StopReaper(): void;
6
+ export declare function IsReaperRunning(): boolean;