okmodel 0.6.0 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (267) hide show
  1. package/README.md +100 -1131
  2. package/dist/adapters/capabilities.d.ts +35 -0
  3. package/dist/adapters/failure.d.ts +13 -2
  4. package/dist/adapters/lazy-errors.d.ts +22 -0
  5. package/dist/adapters/pg/bun-sql.d.ts +53 -0
  6. package/dist/adapters/pg/bunsql-extra.d.ts +54 -3
  7. package/dist/adapters/pg/bunsql.d.ts +15 -2
  8. package/dist/adapters/pg/cursor.d.ts +17 -0
  9. package/dist/adapters/pg/neon-extra.d.ts +18 -0
  10. package/dist/adapters/pg/neon.d.ts +104 -0
  11. package/dist/adapters/pg/no-inflight-timeout.d.ts +11 -8
  12. package/dist/adapters/pg/nodepostgres-extra.d.ts +22 -1
  13. package/dist/adapters/pg/nodepostgres.d.ts +12 -0
  14. package/dist/adapters/pg/pglite-wire.d.ts +24 -0
  15. package/dist/adapters/pg/pglite.d.ts +10 -0
  16. package/dist/adapters/pg/postgres-extra.d.ts +27 -11
  17. package/dist/adapters/pg/reserved.d.ts +42 -0
  18. package/dist/adapters/pg/session.d.ts +0 -18
  19. package/dist/contracts/connection.d.ts +7 -6
  20. package/dist/contracts/error.d.ts +1 -1
  21. package/dist/dialects/pg/floor.d.ts +68 -0
  22. package/dist/dialects/pg/fn/index.d.ts +39 -1
  23. package/dist/dialects/pg/fn/index.js +118 -26
  24. package/dist/dialects/pg/index.d.ts +8 -1
  25. package/dist/dialects/pg/index.js +435 -170
  26. package/dist/dialects/pg/introspect.d.ts +11 -0
  27. package/dist/dialects/pg/keys.d.ts +11 -8
  28. package/dist/dialects/pg/model.d.ts +40 -0
  29. package/dist/dialects/pg/morph.d.ts +43 -0
  30. package/dist/dialects/pg/operator-fit.d.ts +2 -2
  31. package/dist/dialects/pg/operators.d.ts +14 -7
  32. package/dist/dialects/pg/ops/bucket.d.ts +65 -0
  33. package/dist/dialects/pg/ops/fragment.d.ts +119 -0
  34. package/dist/dialects/pg/ops/inc.d.ts +2 -2
  35. package/dist/dialects/pg/ops/lane.d.ts +49 -0
  36. package/dist/dialects/pg/ops/matches.d.ts +9 -12
  37. package/dist/dialects/pg/ops/relevance.d.ts +13 -0
  38. package/dist/dialects/pg/ops/search-query.d.ts +22 -0
  39. package/dist/dialects/pg/ops/window.d.ts +103 -0
  40. package/dist/dialects/pg/preset.d.ts +1 -1
  41. package/dist/dialects/pg/relations.d.ts +100 -3
  42. package/dist/dialects/pg/schema.d.ts +31 -3
  43. package/dist/dialects/pg/view/client.d.ts +14 -6
  44. package/dist/dialects/pg/view/index.d.ts +73 -1
  45. package/dist/dialects/pg/view/index.js +156 -5
  46. package/dist/dialects/pg/view/scratch.d.ts +8 -5
  47. package/dist/runtime/aggregate.d.ts +8 -2
  48. package/dist/runtime/bucket-group.d.ts +70 -0
  49. package/dist/runtime/conflict.d.ts +22 -4
  50. package/dist/runtime/include.d.ts +0 -8
  51. package/dist/runtime/inflight.d.ts +1 -1
  52. package/dist/runtime/otel.d.ts +105 -0
  53. package/dist/runtime/otel.js +97 -0
  54. package/dist/runtime/page.d.ts +4 -1
  55. package/dist/runtime/pg/bun.js +12 -6
  56. package/dist/runtime/pg/neon.d.ts +38 -0
  57. package/dist/runtime/pg/neon.js +64 -0
  58. package/dist/runtime/pg/pg.js +5 -5
  59. package/dist/runtime/pg/pglite.d.ts +1 -0
  60. package/dist/runtime/pg/pglite.js +9 -9
  61. package/dist/runtime/pg/postgresjs.js +5 -5
  62. package/dist/runtime/plan.d.ts +95 -5
  63. package/dist/runtime/read-stream.d.ts +13 -16
  64. package/dist/runtime/result-name.d.ts +17 -0
  65. package/dist/runtime/server-check.d.ts +3 -3
  66. package/dist/runtime/sort-bind.d.ts +21 -0
  67. package/dist/runtime/sort.d.ts +56 -0
  68. package/dist/runtime/sql-fragment.d.ts +43 -0
  69. package/dist/runtime/sync.d.ts +70 -0
  70. package/dist/runtime/tenancy/index.js +15 -13
  71. package/dist/runtime/text-search.d.ts +20 -0
  72. package/dist/runtime/topology.d.ts +1 -1
  73. package/dist/runtime/traits/index.d.ts +80 -0
  74. package/dist/runtime/traits/index.js +184 -21
  75. package/dist/runtime/tree.d.ts +38 -0
  76. package/dist/runtime/types.d.ts +232 -22
  77. package/dist/runtime/validate/index.js +4 -4
  78. package/dist/runtime/version.d.ts +39 -0
  79. package/dist/runtime/window.d.ts +21 -0
  80. package/dist/runtime/write.d.ts +54 -2
  81. package/dist/shared/{929h19xp.js → 0wrea3jq.js} +141 -13
  82. package/dist/shared/{qq3899ht.js → 12z7aznj.js} +243 -14
  83. package/dist/shared/{1z04fa85.js → 14x60fbf.js} +12 -57
  84. package/dist/shared/{ek2wt2dz.js → 16kvjebh.js} +4 -4
  85. package/dist/shared/{wynzeggs.js → 195pzzzz.js} +8 -8
  86. package/dist/shared/1d9q9cv2.js +312 -0
  87. package/dist/shared/2c13q96h.js +18 -0
  88. package/dist/shared/{b4v57v3x.js → 2d3xq4ps.js} +2 -2
  89. package/dist/shared/{1f0xa3cb.js → 3449rcae.js} +5 -5
  90. package/dist/shared/{wkme6tep.js → 35q0n9tz.js} +8 -16
  91. package/dist/shared/3bb7wsqt.js +99 -0
  92. package/dist/shared/3t6kw83m.js +249 -0
  93. package/dist/shared/{5j36z8dn.js → 4m6hskg8.js} +39 -70
  94. package/dist/shared/{n076ydsc.js → 4vbf83xx.js} +69 -28
  95. package/dist/shared/{vmfkhszw.js → 63f4ksbz.js} +33 -26
  96. package/dist/shared/{c58secgj.js → 63qtkrca.js} +38 -4
  97. package/dist/shared/6m78c8ss.js +6 -0
  98. package/dist/shared/{x3jc53kg.js → 760ppr76.js} +15 -7
  99. package/dist/shared/7ghwamrf.js +40 -0
  100. package/dist/shared/7kms6fvj.js +20 -0
  101. package/dist/shared/7n7ddwt4.js +6 -0
  102. package/dist/shared/9a4ae4p8.js +31 -0
  103. package/dist/shared/{hazqqecq.js → 9dr2qnx7.js} +63 -34
  104. package/dist/shared/{h15jx9bc.js → 9dvh1dr6.js} +1 -1
  105. package/dist/shared/a62rb2da.js +13 -0
  106. package/dist/shared/{cgbamx3e.js → ae4j5f42.js} +23 -4
  107. package/dist/shared/agsfb86s.js +233 -0
  108. package/dist/shared/{8x72s86k.js → b6d6p0zc.js} +13 -7
  109. package/dist/shared/{ag4c7516.js → b76b8d95.js} +2 -2
  110. package/dist/shared/{j60w0dvr.js → bah9nbg3.js} +58 -38
  111. package/dist/shared/bnby0esn.js +10 -0
  112. package/dist/shared/bsek72fg.js +225 -0
  113. package/dist/shared/{2cg3wnxc.js → bxas03mq.js} +608 -141
  114. package/dist/shared/{31vm914h.js → cm3w0ywp.js} +15 -16
  115. package/dist/shared/{gwn6v667.js → cnkky55j.js} +25 -14
  116. package/dist/shared/{dk8v79p3.js → d5nmj7vv.js} +1 -1
  117. package/dist/shared/{ttmg09vd.js → dpc2r7rb.js} +8 -8
  118. package/dist/shared/dzj09cye.js +10 -0
  119. package/dist/shared/{sbdme3vy.js → e8zyaqvj.js} +60 -10
  120. package/dist/shared/{2jd1sn0e.js → ecn8mfdq.js} +6 -6
  121. package/dist/shared/exn3sd90.js +359 -0
  122. package/dist/shared/{t3g0k88x.js → f4jy1j7x.js} +39 -22
  123. package/dist/shared/{y2t3jktd.js → fjpnhqan.js} +20 -13
  124. package/dist/shared/g5yc06ka.js +272 -0
  125. package/dist/shared/ga9j92qj.js +25 -0
  126. package/dist/shared/{3fqwmr09.js → hfqmpasr.js} +6 -6
  127. package/dist/shared/{wt5rzv1h.js → hm5f8jby.js} +7 -7
  128. package/dist/shared/{ys0xzyaj.js → hqpxf4a4.js} +224 -19
  129. package/dist/shared/jebgrkeq.js +179 -0
  130. package/dist/shared/{09p049xa.js → jp36k7dp.js} +44 -16
  131. package/dist/shared/jx2m62cs.js +96 -0
  132. package/dist/shared/{r11n8grd.js → k86n8vq3.js} +7 -4
  133. package/dist/shared/{2z7wv5tj.js → kgwp4jdd.js} +56 -35
  134. package/dist/shared/{knmes2kh.js → kj9d8maq.js} +1 -1
  135. package/dist/shared/{g90m9b0g.js → m4xff2a6.js} +6 -5
  136. package/dist/shared/{r6nwkxnt.js → m7n9h2a5.js} +4 -4
  137. package/dist/shared/mfedzr74.js +145 -0
  138. package/dist/shared/{f0f1n281.js → mkrn359n.js} +60 -11
  139. package/dist/shared/{p248q79y.js → mnvjvqyp.js} +10 -10
  140. package/dist/shared/{672t5vym.js → mss6ctgv.js} +2 -2
  141. package/dist/shared/{4az561fn.js → mtw6jz76.js} +8 -23
  142. package/dist/shared/n05z9nwz.js +313 -0
  143. package/dist/shared/{pjr6xrm5.js → n0jmpgj1.js} +20 -17
  144. package/dist/shared/{p6bjzq9q.js → n41w4fbz.js} +14 -6
  145. package/dist/shared/{b3awxn7h.js → n454kcnw.js} +1 -1
  146. package/dist/shared/n7kg8mmx.js +61 -0
  147. package/dist/shared/nbw1z4yd.js +18 -0
  148. package/dist/shared/needfe47.js +66 -0
  149. package/dist/shared/{1nw1f3vs.js → njga14v4.js} +9 -9
  150. package/dist/shared/{5yv4k6a6.js → nmnsgj7x.js} +145 -3
  151. package/dist/shared/{vjpnzwjz.js → p3xbdcvt.js} +14 -18
  152. package/dist/shared/p5nh3r8q.js +622 -0
  153. package/dist/shared/{nx9hh281.js → pan0370z.js} +13 -12
  154. package/dist/shared/q0cqt2sp.js +12 -0
  155. package/dist/shared/qd9hhd8f.js +37 -0
  156. package/dist/shared/{mb2ycs1p.js → qfw14tna.js} +15 -15
  157. package/dist/shared/{9s0ypp87.js → sjk86yrx.js} +1 -1
  158. package/dist/shared/th3be82n.js +208 -0
  159. package/dist/shared/{ed0b8k4s.js → typ3vy7t.js} +1 -1
  160. package/dist/shared/{5d8t84hg.js → v1wad97q.js} +14 -14
  161. package/dist/shared/{x72jb7ad.js → v8g1vgv8.js} +1 -1
  162. package/dist/shared/{9628a9xt.js → vk7rag46.js} +1 -1
  163. package/dist/shared/{ze4hxsmy.js → w9ejzaqf.js} +1 -1
  164. package/dist/shared/{q3j1tq7a.js → wcrheftc.js} +148 -23
  165. package/dist/shared/wvdjznah.js +213 -0
  166. package/dist/shared/wz2a78mp.js +8 -0
  167. package/dist/shared/xfhe73sb.js +436 -0
  168. package/dist/shared/{r1fdd0f6.js → z581d7ny.js} +5 -2
  169. package/dist/shared/{8etn7d8w.js → z7s6fpxv.js} +1 -1
  170. package/dist/shared/{32cnm7kn.js → zbqbmmrp.js} +76 -40
  171. package/dist/shared/{n7mcc1gk.js → zchaghkf.js} +4 -3
  172. package/dist/shared/{xq0mvhts.js → zgex00fd.js} +6 -6
  173. package/dist/shared/{nsva2a6b.js → znm0bpp5.js} +3 -0
  174. package/dist/shared/zq1he88x.js +155 -0
  175. package/dist/tooling/cli.js +26 -13
  176. package/dist/tooling/driver-run.js +4971 -0
  177. package/dist/tooling/driver-test.d.ts +36 -0
  178. package/dist/tooling/migrate/commands.d.ts +2 -2
  179. package/dist/tooling/migrate/engine.d.ts +3 -2
  180. package/dist/tooling/migrate/index.js +9 -9
  181. package/dist/tooling/migrate/project.d.ts +3 -0
  182. package/dist/tooling/shared/03k6res6.js +210 -0
  183. package/dist/tooling/shared/08kemxjd.js +10 -0
  184. package/dist/tooling/shared/2revefqt.js +209 -0
  185. package/dist/tooling/shared/2wtvc7rw.js +1425 -0
  186. package/dist/tooling/shared/345tbc2k.js +16 -0
  187. package/dist/tooling/shared/3m1hkg7z.js +344 -0
  188. package/dist/tooling/shared/3rrw5w8f.js +81 -0
  189. package/dist/tooling/shared/3tq8pnb8.js +131 -0
  190. package/dist/tooling/shared/417zdsk7.js +194 -0
  191. package/dist/tooling/shared/4d2w25vw.js +40 -0
  192. package/dist/tooling/shared/54tqkxja.js +51 -0
  193. package/dist/tooling/shared/5bvw2nev.js +12 -0
  194. package/dist/tooling/shared/6nyfyw70.js +231 -0
  195. package/dist/tooling/shared/72fyg4zv.js +160 -0
  196. package/dist/tooling/shared/733a1tq3.js +38 -0
  197. package/dist/tooling/shared/7ae7rjmn.js +20 -0
  198. package/dist/tooling/shared/7kms6fvj.js +20 -0
  199. package/dist/tooling/shared/8sqrsw3s.js +49 -0
  200. package/dist/tooling/shared/96ps4g1z.js +32 -0
  201. package/dist/tooling/shared/9kazs5p6.js +195 -0
  202. package/dist/tooling/shared/9xzm7hjg.js +38 -0
  203. package/dist/tooling/shared/a6pp9d12.js +49 -0
  204. package/dist/tooling/shared/a7q7t4n3.js +22 -0
  205. package/dist/tooling/shared/aftb2mwr.js +18 -0
  206. package/dist/tooling/shared/bz2dqhab.js +311 -0
  207. package/dist/tooling/shared/cmptmb4f.js +12 -0
  208. package/dist/tooling/shared/ddjtfgnx.js +177 -0
  209. package/dist/tooling/shared/djydjpqt.js +261 -0
  210. package/dist/tooling/shared/dw08f3m8.js +9 -0
  211. package/dist/tooling/shared/dy672fz6.js +16 -0
  212. package/dist/tooling/shared/dzx85q70.js +66 -0
  213. package/dist/tooling/shared/ec71zqgt.js +270 -0
  214. package/dist/{shared/d5azex6s.js → tooling/shared/ep8zh3bk.js} +1 -1
  215. package/dist/tooling/shared/f9mphxej.js +3789 -0
  216. package/dist/tooling/shared/fb9k2qwd.js +89 -0
  217. package/dist/tooling/shared/g9ad4n80.js +211 -0
  218. package/dist/tooling/shared/gfvtj6d0.js +94 -0
  219. package/dist/tooling/shared/gmcf9cxf.js +294 -0
  220. package/dist/tooling/shared/htnaj77v.js +17 -0
  221. package/dist/tooling/shared/j9t5s12a.js +7 -0
  222. package/dist/tooling/shared/jne7b93p.js +42 -0
  223. package/dist/tooling/shared/ma2340rx.js +118 -0
  224. package/dist/tooling/shared/mtrqn2hn.js +505 -0
  225. package/dist/tooling/shared/n4jqhpqz.js +27 -0
  226. package/dist/tooling/shared/nf7jmhfa.js +20 -0
  227. package/dist/tooling/shared/p7f08ktn.js +332 -0
  228. package/dist/tooling/shared/ppnnnvj8.js +13 -0
  229. package/dist/tooling/shared/pqy21k24.js +312 -0
  230. package/dist/tooling/shared/pw8fgahx.js +69 -0
  231. package/dist/tooling/shared/pwsytxm5.js +17 -0
  232. package/dist/tooling/shared/rf83gr2d.js +94 -0
  233. package/dist/tooling/shared/rq5kk8j6.js +401 -0
  234. package/dist/tooling/shared/rs1jb051.js +12 -0
  235. package/dist/tooling/shared/smn6kz1p.js +157 -0
  236. package/dist/tooling/shared/spk1jg3r.js +1696 -0
  237. package/dist/tooling/shared/tn8gay14.js +143 -0
  238. package/dist/tooling/shared/vraj6d74.js +42 -0
  239. package/dist/tooling/shared/vs0t6qt8.js +64 -0
  240. package/dist/tooling/shared/vx86qjv8.js +150 -0
  241. package/dist/tooling/shared/w7qe8sj1.js +140 -0
  242. package/dist/tooling/shared/wt7j7nf6.js +15 -0
  243. package/dist/tooling/shared/wwnekq5n.js +6 -0
  244. package/dist/tooling/shared/xhrnjch9.js +185 -0
  245. package/dist/tooling/shared/xjs6zqtc.js +190 -0
  246. package/dist/tooling/shared/y031jct9.js +16 -0
  247. package/dist/tooling/shared/y5656f0e.js +233 -0
  248. package/dist/tooling/shared/yfr8hzhm.js +604 -0
  249. package/dist/tooling/shared/yk9mp7vb.js +250 -0
  250. package/dist/tooling/shared/yw30vnq2.js +139 -0
  251. package/dist/tooling/shared/z8d7ptht.js +618 -0
  252. package/dist/tooling/shared/zhwnfyb2.js +9 -0
  253. package/dist/tooling/shared/zvnhh1n0.js +198 -0
  254. package/dist/tooling/testing/index.js +3 -3
  255. package/package.json +17 -3
  256. package/dist/shared/3qnhc7w5.js +0 -38
  257. package/dist/shared/7m88x3e9.js +0 -45
  258. package/dist/shared/8dqhth8c.js +0 -12
  259. package/dist/shared/j3rkk835.js +0 -99
  260. package/dist/shared/k68eedmy.js +0 -85
  261. package/dist/shared/venqrjna.js +0 -216
  262. package/dist/shared/wxr8cwns.js +0 -6
  263. package/dist/shared/y34a8714.js +0 -150
  264. package/dist/shared/zm0mafk4.js +0 -92
  265. package/dist/shared/zy8r7qvz.js +0 -116
  266. package/dist/shared/{ywr8hmey.js → 606g0nbf.js} +3 -3
  267. package/dist/shared/{rpycarcr.js → gcefca6p.js} +4 -4
@@ -1,14 +1,14 @@
1
- import"./qq3899ht.js";
1
+ import"./12z7aznj.js";
2
2
  import"./n442h54c.js";
3
- import"./wkme6tep.js";
3
+ import"./35q0n9tz.js";
4
4
  import {
5
5
  projectPath,
6
6
  loadConfig
7
- } from "./t3g0k88x.js";
7
+ } from "./f4jy1j7x.js";
8
8
  import {
9
9
  listTargets
10
- } from "./ttmg09vd.js";
11
- import"./9s0ypp87.js";
10
+ } from "./dpc2r7rb.js";
11
+ import"./sjk86yrx.js";
12
12
 
13
13
  // src/tooling/migrate/dev.ts
14
14
  import { mkdirSync } from "node:fs";
@@ -20,7 +20,7 @@ async function devProject(cwd) {
20
20
  `;
21
21
  const directory = projectPath(cwd, config.out ?? ".okm", "dev-db");
22
22
  mkdirSync(directory, { recursive: true });
23
- const { open } = await import("./g90m9b0g.js");
23
+ const { open } = await import("./m4xff2a6.js");
24
24
  const pool = await open({ dataDir: directory });
25
25
  try {
26
26
  await pool.execute("select 1");
@@ -13,6 +13,9 @@ var RESERVED_PRESETS = new Set([
13
13
  "insert",
14
14
  "update",
15
15
  "delete",
16
+ "descendants",
17
+ "ancestors",
18
+ "sync",
16
19
  "archive",
17
20
  "restore",
18
21
  "withArchived",
@@ -0,0 +1,155 @@
1
+ import {
2
+ searchValue
3
+ } from "./dzj09cye.js";
4
+ import {
5
+ assertNoControl
6
+ } from "./zchaghkf.js";
7
+ import {
8
+ refuseHidden,
9
+ indexes,
10
+ list,
11
+ isRecord,
12
+ fail2
13
+ } from "./kgwp4jdd.js";
14
+ import {
15
+ isOperator,
16
+ operatorName,
17
+ operatorValue,
18
+ tag
19
+ } from "./cn0n68ft.js";
20
+ import {
21
+ throwNamed2
22
+ } from "./52szzakm.js";
23
+
24
+ // src/runtime/text-search.ts
25
+ var MATCHES = ["natural", "all-words", "phrase", "advanced"];
26
+ var SEARCH_KEYS = ["for", "in", "match", "language"];
27
+ function applyTextSearch(schema, call) {
28
+ const table = indexes(schema).get(call.table);
29
+ if (table === undefined)
30
+ fail2("OKM1120", `Table ${call.table} is not in the schema.`);
31
+ const spec = parseSearch(table, call.search);
32
+ const options = { match: spec.match, language: spec.language };
33
+ const where = withMatch(call.where, spec.column.field, spec.text, options);
34
+ const orderBy = call.op === "find" && call.orderBy === undefined ? ranked(table, spec.column.field, spec.text, options) : call.orderBy;
35
+ const { search: dropped, ...rest } = call;
36
+ return {
37
+ ...rest,
38
+ where,
39
+ ...orderBy !== undefined ? { orderBy } : {}
40
+ };
41
+ }
42
+ function parseSearch(table, search) {
43
+ if (typeof search === "string") {
44
+ return { text: textOf(search), column: columnFor(table, undefined), ...natural() };
45
+ }
46
+ if (!isRecord(search)) {
47
+ fail2("OKM1120", "search needs the text to look for, or { for, in, match, language }.", "Pass a string, or search: { for, in }.");
48
+ }
49
+ for (const key of Object.keys(search)) {
50
+ if (SEARCH_KEYS.includes(key))
51
+ continue;
52
+ fail2("OKM1120", `search does not take ${key}. Accepted: for, in, match, language.`, "Pass for, in, match, and language.");
53
+ }
54
+ if (typeof search.for !== "string") {
55
+ fail2("OKM1120", "search.for needs text to look for.", "Set for to the text you want to find.");
56
+ }
57
+ const named = search.in;
58
+ if (named !== undefined && typeof named !== "string") {
59
+ fail2("OKM1120", "search.in names the column to search.", "Set in to a column name.");
60
+ }
61
+ return {
62
+ text: textOf(search.for),
63
+ column: columnFor(table, named),
64
+ match: matchOf(search.match),
65
+ language: languageOf(search.language)
66
+ };
67
+ }
68
+ function natural() {
69
+ return { match: "natural", language: undefined };
70
+ }
71
+ function textOf(text) {
72
+ if (text.length === 0) {
73
+ fail2("OKM1120", "search needs text to look for.", "Pass the words you want to find.");
74
+ }
75
+ assertNoControl(text, "search");
76
+ return text;
77
+ }
78
+ function matchOf(value) {
79
+ if (value === undefined)
80
+ return "natural";
81
+ if (typeof value === "string" && isMatch(value))
82
+ return value;
83
+ fail2("OKM1120", "search.match must be natural, all-words, phrase, or advanced.", "Use natural, all-words, phrase, or advanced.");
84
+ }
85
+ function isMatch(value) {
86
+ return MATCHES.includes(value);
87
+ }
88
+ function languageOf(value) {
89
+ if (value === undefined)
90
+ return;
91
+ if (typeof value !== "string") {
92
+ fail2("OKM1120", "search.language must be a text search language such as english.", "Pass a language name such as english, or leave it out.");
93
+ }
94
+ return value;
95
+ }
96
+ function columnFor(table, name) {
97
+ const columns = searchable(table);
98
+ const names = columns.map((column) => column.field);
99
+ if (name === undefined) {
100
+ const only = columns[0];
101
+ if (columns.length === 1 && only !== undefined)
102
+ return only;
103
+ if (columns.length === 0) {
104
+ fail2("OKM1120", `Table ${table.model.name} has no column you can search.`, "Add a column built for search.");
105
+ }
106
+ fail2("OKM1120", `Table ${table.model.name} has more than one column you can search. Name one with search: { for, in }. Columns: ${list(names)}.`, `Set in to one of: ${list(names)}.`);
107
+ }
108
+ const column = table.columns.get(name);
109
+ if (column === undefined) {
110
+ throwNamed2("OKM1120", name, names, `Column ${name} is not on ${table.model.name}. Columns you can search: ${list(names)}.`);
111
+ }
112
+ if (column.dataType !== "tsvector") {
113
+ fail2("OKM1120", `Column ${name} cannot be searched. Columns you can search: ${list(names)}.`, names.length === 0 ? "This table has no column you can search." : `Search one of: ${list(names)}.`);
114
+ }
115
+ if (column.hidden === true)
116
+ refuseHidden(column);
117
+ return column;
118
+ }
119
+ function searchable(table) {
120
+ const found = [];
121
+ for (const column of table.model.columns) {
122
+ if (column.dataType === "tsvector" && column.hidden !== true)
123
+ found.push(column);
124
+ }
125
+ return found;
126
+ }
127
+ function withMatch(where, field, text, options) {
128
+ const filter = { [field]: tag("matches", searchValue(text, passed(options))) };
129
+ if (where === undefined)
130
+ return filter;
131
+ if (isOperator(where) && operatorName(where) === "and") {
132
+ const branches = operatorValue(where);
133
+ if (Array.isArray(branches))
134
+ return tag("and", [...branches, filter]);
135
+ }
136
+ return tag("and", [where, filter]);
137
+ }
138
+ function ranked(table, field, text, options) {
139
+ const order = {
140
+ [field]: tag("relevance", searchValue(text, passed(options)))
141
+ };
142
+ for (const key of table.model.primary) {
143
+ if (!Object.hasOwn(order, key))
144
+ order[key] = "asc";
145
+ }
146
+ return order;
147
+ }
148
+ function passed(options) {
149
+ if (options.language === undefined)
150
+ return { match: options.match };
151
+ return { match: options.match, language: options.language };
152
+ }
153
+ export {
154
+ applyTextSearch
155
+ };
@@ -1,6 +1,6 @@
1
- import"../shared/qq3899ht.js";
1
+ import"../shared/12z7aznj.js";
2
2
  import"../shared/n442h54c.js";
3
- import"../shared/wkme6tep.js";
3
+ import"../shared/35q0n9tz.js";
4
4
  import {
5
5
  formatFindings,
6
6
  hasError,
@@ -9,11 +9,11 @@ import {
9
9
  generateProject,
10
10
  planProject,
11
11
  checkProject
12
- } from "../shared/t3g0k88x.js";
12
+ } from "../shared/f4jy1j7x.js";
13
13
  import {
14
14
  sessionFailure
15
- } from "../shared/ttmg09vd.js";
16
- import"../shared/9s0ypp87.js";
15
+ } from "../shared/dpc2r7rb.js";
16
+ import"../shared/sjk86yrx.js";
17
17
  import {
18
18
  OkmError2
19
19
  } from "../shared/52szzakm.js";
@@ -73,12 +73,12 @@ async function run(argv, io) {
73
73
  return;
74
74
  }
75
75
  if (command === "dev") {
76
- const { devProject } = await import("../shared/xq0mvhts.js");
76
+ const { devProject } = await import("../shared/zgex00fd.js");
77
77
  stdout(await devProject(cwd));
78
78
  return;
79
79
  }
80
80
  if (command === "push") {
81
- const { pushProject } = await import("../shared/1nw1f3vs.js");
81
+ const { pushProject } = await import("../shared/njga14v4.js");
82
82
  stdout(await pushProject(cwd, invoke(splitFlags(rest))));
83
83
  return;
84
84
  }
@@ -97,17 +97,17 @@ async function run(argv, io) {
97
97
  return;
98
98
  }
99
99
  if (sub === "apply") {
100
- const { applyProject } = await import("../shared/1nw1f3vs.js");
100
+ const { applyProject } = await import("../shared/njga14v4.js");
101
101
  stdout(await applyProject(cwd, invoke(parsed), stdout));
102
102
  return;
103
103
  }
104
104
  if (sub === "status") {
105
- const { statusProject } = await import("../shared/wynzeggs.js");
105
+ const { statusProject } = await import("../shared/195pzzzz.js");
106
106
  stdout(await statusProject(cwd, invoke(parsed)));
107
107
  return;
108
108
  }
109
109
  if (sub === "check") {
110
- const { checkMigrations } = await import("../shared/09p049xa.js");
110
+ const { checkMigrations } = await import("../shared/jp36k7dp.js");
111
111
  const provision = parsed.flags.includes("--provision") || rest.slice(1).includes("--provision");
112
112
  stdout(await checkMigrations(cwd, invoke(parsed), { provision }));
113
113
  return;
@@ -120,16 +120,28 @@ async function run(argv, io) {
120
120
  fix: { summary: "Pass okm seed <file>." }
121
121
  });
122
122
  }
123
- const { seedProject } = await import("../shared/3fqwmr09.js");
123
+ const { seedProject } = await import("../shared/hfqmpasr.js");
124
124
  stdout(await seedProject(cwd, parsed.name, invoke(parsed)));
125
125
  return;
126
126
  }
127
127
  if (command === "doctor") {
128
128
  const parsed = splitFlags(rest);
129
- const { doctorProject } = await import("../shared/wt5rzv1h.js");
129
+ const { doctorProject } = await import("../shared/hm5f8jby.js");
130
130
  stdout(await doctorProject(cwd, parsed.name, invoke(parsed)));
131
131
  return;
132
132
  }
133
+ if (command === "driver") {
134
+ const sub = rest[0];
135
+ if (sub !== "test") {
136
+ const message = sub === undefined ? "Unknown command driver." : `Unknown command driver ${sub}.`;
137
+ throw new OkmError2("invalid", message, {
138
+ fix: { summary: "Use okm driver test <driver>." }
139
+ });
140
+ }
141
+ const { driverTest } = await import("../shared/n7kg8mmx.js");
142
+ await driverTest(rest.slice(1), stdout);
143
+ return;
144
+ }
133
145
  if (command === "ext") {
134
146
  const sub = rest[0];
135
147
  if (sub === "test" || sub === "scaffold") {
@@ -138,7 +150,7 @@ async function run(argv, io) {
138
150
  });
139
151
  }
140
152
  if (sub === "list" || sub === "check") {
141
- const { extProject } = await import("../shared/p6bjzq9q.js");
153
+ const { extProject } = await import("../shared/n41w4fbz.js");
142
154
  stdout(await extProject(cwd, sub, invoke(splitFlags(rest.slice(1)))));
143
155
  return;
144
156
  }
@@ -231,6 +243,7 @@ var COMMANDS = [
231
243
  ["check", "Lint the schema and compare it with one target."],
232
244
  ["dev", "Watch the schema and reload."],
233
245
  ["doctor [code]", "Print a target report, or one error code."],
246
+ ["driver test <driver>", "Run conformance against one driver."],
234
247
  ["ext list", "List extensions the server can install."],
235
248
  ["ext check", "Compare declared extensions with the server."],
236
249
  ["generate [name]", "Write the next migration."],