okmodel 0.8.0 → 0.9.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 (202) hide show
  1. package/README.md +14 -0
  2. package/dist/dialects/pg/ext/btree-gin.d.ts +26 -0
  3. package/dist/dialects/pg/ext/btree-gin.js +20 -0
  4. package/dist/dialects/pg/ext/btree-gist.d.ts +26 -0
  5. package/dist/dialects/pg/ext/btree-gist.js +20 -0
  6. package/dist/dialects/pg/ext/call.d.ts +53 -0
  7. package/dist/dialects/pg/ext/citext.js +1 -1
  8. package/dist/dialects/pg/ext/feature.d.ts +26 -0
  9. package/dist/dialects/pg/ext/fuzzystrmatch.d.ts +34 -0
  10. package/dist/dialects/pg/ext/fuzzystrmatch.js +33 -0
  11. package/dist/dialects/pg/ext/hstore.d.ts +41 -0
  12. package/dist/dialects/pg/ext/hstore.js +29 -0
  13. package/dist/dialects/pg/ext/index.d.ts +56 -0
  14. package/dist/dialects/pg/ext/index.js +1 -1
  15. package/dist/dialects/pg/ext/ltree.d.ts +41 -0
  16. package/dist/dialects/pg/ext/ltree.js +29 -0
  17. package/dist/dialects/pg/ext/pg-trgm.js +4 -13
  18. package/dist/dialects/pg/ext/pgcrypto.d.ts +33 -0
  19. package/dist/dialects/pg/ext/pgcrypto.js +33 -0
  20. package/dist/dialects/pg/ext/unaccent.d.ts +26 -0
  21. package/dist/dialects/pg/ext/unaccent.js +21 -0
  22. package/dist/dialects/pg/ext/using.d.ts +23 -0
  23. package/dist/dialects/pg/ext/versions.d.ts +36 -0
  24. package/dist/dialects/pg/external.d.ts +19 -0
  25. package/dist/dialects/pg/fn/index.js +4 -4
  26. package/dist/dialects/pg/index.d.ts +1 -0
  27. package/dist/dialects/pg/index.js +16 -11
  28. package/dist/dialects/pg/view/index.js +5 -5
  29. package/dist/dialects/pg/view/scratch.d.ts +4 -1
  30. package/dist/runtime/artifact-file.d.ts +22 -0
  31. package/dist/runtime/client.d.ts +10 -0
  32. package/dist/runtime/drift-detail.d.ts +2 -1
  33. package/dist/runtime/drift.d.ts +3 -10
  34. package/dist/runtime/pg/bun.js +4 -4
  35. package/dist/runtime/pg/neon.js +4 -4
  36. package/dist/runtime/pg/pg.js +4 -4
  37. package/dist/runtime/pg/pglite.js +4 -4
  38. package/dist/runtime/pg/postgresjs.js +4 -4
  39. package/dist/runtime/server-check.d.ts +36 -6
  40. package/dist/runtime/traits/index.js +5 -5
  41. package/dist/runtime/validate/index.js +1 -1
  42. package/dist/shared/{4m6hskg8.js → 0j6qe91y.js} +4 -4
  43. package/dist/shared/{14x60fbf.js → 1mxm04fy.js} +5 -5
  44. package/dist/shared/{b6d6p0zc.js → 2szgv6yj.js} +5 -5
  45. package/dist/shared/{f4jy1j7x.js → 2zdxkt7b.js} +909 -100
  46. package/dist/shared/{mnvjvqyp.js → 3456242y.js} +17 -17
  47. package/dist/shared/3t6kw83m.js +1 -1
  48. package/dist/shared/{6m78c8ss.js → 5kyb3tqx.js} +1 -1
  49. package/dist/shared/61bmrmhr.js +35 -0
  50. package/dist/shared/{zbqbmmrp.js → 62b603gr.js} +8 -8
  51. package/dist/shared/{jgqj11w4.js → 6f0z3hzh.js} +4 -0
  52. package/dist/shared/{dpc2r7rb.js → 6nae0spm.js} +150 -89
  53. package/dist/shared/{0wrea3jq.js → 71n0jmhc.js} +1 -1
  54. package/dist/shared/7ba5h6pb.js +17 -0
  55. package/dist/shared/{k86n8vq3.js → 8jesqsrk.js} +1 -1
  56. package/dist/shared/{qd9hhd8f.js → 8n688yjg.js} +1 -1
  57. package/dist/shared/{zgex00fd.js → 8qzkd9f3.js} +5 -5
  58. package/dist/shared/{mkrn359n.js → 90sg0w5a.js} +159 -31
  59. package/dist/shared/{7ghwamrf.js → 99qp9vtg.js} +1 -1
  60. package/dist/shared/{bxas03mq.js → 9dtgn1z2.js} +1 -1
  61. package/dist/shared/{p5nh3r8q.js → aksb89mn.js} +2 -2
  62. package/dist/shared/{wcrheftc.js → bphrgwz9.js} +2 -2
  63. package/dist/shared/{wz2a78mp.js → c3mvnq7a.js} +1 -1
  64. package/dist/shared/{pan0370z.js → ccsmhv9r.js} +24 -6
  65. package/dist/shared/{n0jmpgj1.js → cexb7z6b.js} +1 -1
  66. package/dist/shared/{wvdjznah.js → cf8zdz5p.js} +5 -5
  67. package/dist/shared/{3449rcae.js → ckz05z15.js} +4 -4
  68. package/dist/shared/{35q0n9tz.js → dd5pmnky.js} +7 -7
  69. package/dist/shared/{e8zyaqvj.js → ds229x4r.js} +1 -1
  70. package/dist/{tooling/shared/yw30vnq2.js → shared/e275q7sd.js} +1 -1
  71. package/dist/shared/{mfedzr74.js → ebhz8vh6.js} +4 -4
  72. package/dist/shared/{z581d7ny.js → fdsz3w80.js} +2 -2
  73. package/dist/shared/{sjk86yrx.js → fk9vef30.js} +84 -73
  74. package/dist/shared/{needfe47.js → g89fmz5s.js} +1 -1
  75. package/dist/shared/{m4xff2a6.js → ghqzdp94.js} +2 -2
  76. package/dist/shared/h9811jjm.js +17 -0
  77. package/dist/shared/{kj9d8maq.js → jpybhf98.js} +1 -1
  78. package/dist/shared/kzgrnckd.js +29 -0
  79. package/dist/shared/{agsfb86s.js → mazpbcdj.js} +4 -4
  80. package/dist/shared/{195pzzzz.js → mgaq2sd3.js} +10 -7
  81. package/dist/shared/{5mtf6cj3.js → mvmm3xpb.js} +5 -2
  82. package/dist/shared/{p3xbdcvt.js → myk8fswx.js} +55 -6
  83. package/dist/shared/{njga14v4.js → n306gqkd.js} +8 -8
  84. package/dist/shared/n5whk3mt.js +665 -0
  85. package/dist/shared/{bah9nbg3.js → npdftanb.js} +12 -20
  86. package/dist/shared/{16kvjebh.js → pg4ezgyf.js} +7 -26
  87. package/dist/{tooling/shared/08kemxjd.js → shared/pgsak1yw.js} +1 -1
  88. package/dist/shared/{jp36k7dp.js → qvwwp1mp.js} +61 -40
  89. package/dist/shared/rbxt795q.js +1766 -0
  90. package/dist/shared/{g5yc06ka.js → s7he5e5d.js} +1 -1
  91. package/dist/shared/{hfqmpasr.js → ss2kv2rs.js} +5 -5
  92. package/dist/shared/stfa9xcw.js +450 -0
  93. package/dist/{tooling/shared/rs1jb051.js → shared/tr64w5p0.js} +1 -1
  94. package/dist/shared/{jebgrkeq.js → tw1nvvfj.js} +2 -2
  95. package/dist/shared/{v1wad97q.js → wvtjg5m3.js} +1 -1
  96. package/dist/shared/xqacq37x.js +61 -0
  97. package/dist/shared/{n05z9nwz.js → xtsydxjg.js} +1 -1
  98. package/dist/shared/{jx2m62cs.js → xv8qj97g.js} +5 -5
  99. package/dist/shared/{63f4ksbz.js → xwhdcrm4.js} +1 -1
  100. package/dist/shared/{hm5f8jby.js → yvabyg9k.js} +6 -6
  101. package/dist/shared/yybhre6n.js +136 -0
  102. package/dist/shared/zdqf8k5d.js +8 -0
  103. package/dist/tooling/cli.js +94 -22
  104. package/dist/tooling/driver-run.js +15 -332
  105. package/dist/tooling/github/comment.d.ts +50 -0
  106. package/dist/tooling/github/post-comment.d.ts +17 -0
  107. package/dist/tooling/migrate/commands.d.ts +2 -1
  108. package/dist/tooling/migrate/config.d.ts +13 -0
  109. package/dist/tooling/migrate/export.d.ts +165 -0
  110. package/dist/tooling/migrate/ext-surface.d.ts +80 -0
  111. package/dist/tooling/migrate/ext.d.ts +31 -4
  112. package/dist/tooling/migrate/import-drizzle.d.ts +40 -0
  113. package/dist/tooling/migrate/index.d.ts +3 -0
  114. package/dist/tooling/migrate/index.js +55 -10
  115. package/dist/tooling/migrate/lint-rules.d.ts +18 -1
  116. package/dist/tooling/migrate/lint.d.ts +14 -1
  117. package/dist/tooling/migrate/place.d.ts +18 -0
  118. package/dist/tooling/migrate/plan-json.d.ts +65 -0
  119. package/dist/tooling/migrate/project.d.ts +10 -1
  120. package/dist/tooling/migrate/pull-emit.d.ts +98 -0
  121. package/dist/tooling/migrate/pull-routines.d.ts +126 -0
  122. package/dist/tooling/migrate/pull-verify.d.ts +26 -0
  123. package/dist/tooling/migrate/pull.d.ts +62 -0
  124. package/dist/tooling/migrate/reprint.d.ts +32 -0
  125. package/dist/tooling/migrate/sandbox.d.ts +8 -2
  126. package/dist/tooling/migrate/schema-api.d.ts +43 -0
  127. package/dist/tooling/migrate/sql-lex.d.ts +18 -0
  128. package/dist/tooling/shared/{3m1hkg7z.js → 04svnxxj.js} +4 -4
  129. package/dist/tooling/shared/{ppnnnvj8.js → 0j0jtse1.js} +1 -1
  130. package/dist/tooling/shared/{z8d7ptht.js → 0r05zhyq.js} +5 -5
  131. package/dist/tooling/shared/{a6pp9d12.js → 1800eymw.js} +3 -3
  132. package/dist/tooling/shared/{cmptmb4f.js → 35zemrmf.js} +1 -1
  133. package/dist/tooling/shared/{w7qe8sj1.js → 3rmaz3pq.js} +1 -1
  134. package/dist/{shared/q0cqt2sp.js → tooling/shared/3yn79q5m.js} +1 -1
  135. package/dist/tooling/shared/{2revefqt.js → 57btdkgm.js} +2 -2
  136. package/dist/tooling/shared/{ma2340rx.js → 5bmksndh.js} +2 -2
  137. package/dist/tooling/shared/{9xzm7hjg.js → 5p8km5jb.js} +3 -3
  138. package/dist/tooling/shared/{xhrnjch9.js → 5x3pf400.js} +3 -3
  139. package/dist/tooling/shared/{wwnekq5n.js → 5zrzffnk.js} +1 -1
  140. package/dist/tooling/shared/{p7f08ktn.js → 62fxpc1p.js} +7 -7
  141. package/dist/tooling/shared/{7ae7rjmn.js → 68tf18v4.js} +2 -2
  142. package/dist/tooling/shared/{rf83gr2d.js → 6vk28rjp.js} +7 -3
  143. package/dist/tooling/shared/76pv6qff.js +9 -0
  144. package/dist/tooling/shared/{bz2dqhab.js → 7aews1zg.js} +3 -3
  145. package/dist/tooling/shared/{9kazs5p6.js → 7b3xp9gc.js} +3 -3
  146. package/dist/tooling/shared/{4d2w25vw.js → 7pxncnzs.js} +2 -2
  147. package/dist/tooling/shared/{zvnhh1n0.js → 829fjxyw.js} +2 -2
  148. package/dist/tooling/shared/{dzx85q70.js → 8m5znpdt.js} +1 -1
  149. package/dist/tooling/shared/{g9ad4n80.js → 8yr7ges1.js} +7 -7
  150. package/dist/tooling/shared/{tn8gay14.js → 9qr9rkbh.js} +6 -6
  151. package/dist/tooling/shared/{8sqrsw3s.js → 9sfbtwsk.js} +3 -3
  152. package/dist/{shared/bnby0esn.js → tooling/shared/9wsnsvbf.js} +1 -1
  153. package/dist/tooling/shared/{aftb2mwr.js → a2xe04bm.js} +1 -1
  154. package/dist/tooling/shared/{nf7jmhfa.js → a4pzghha.js} +2 -2
  155. package/dist/tooling/shared/{y5656f0e.js → am04v8na.js} +5 -5
  156. package/dist/tooling/shared/{417zdsk7.js → asgr07mp.js} +5 -5
  157. package/dist/tooling/shared/{pqy21k24.js → c0xevn1h.js} +4 -4
  158. package/dist/tooling/shared/dhatassp.js +134 -0
  159. package/dist/tooling/shared/{spk1jg3r.js → ezqn88nj.js} +8 -8
  160. package/dist/tooling/shared/{6nyfyw70.js → f77nnfqy.js} +2 -2
  161. package/dist/tooling/shared/{wt7j7nf6.js → fh07z1dt.js} +1 -1
  162. package/dist/tooling/shared/{3rrw5w8f.js → gqwevek4.js} +1 -1
  163. package/dist/tooling/shared/{f9mphxej.js → hfq3n3bd.js} +346 -19
  164. package/dist/tooling/shared/{vs0t6qt8.js → j664qjrt.js} +2 -2
  165. package/dist/tooling/shared/{733a1tq3.js → jpgmjsx3.js} +3 -3
  166. package/dist/tooling/shared/{mtrqn2hn.js → jr2nmr81.js} +22 -30
  167. package/dist/{shared/mtw6jz76.js → tooling/shared/jsjjz875.js} +1 -1
  168. package/dist/tooling/shared/{2wtvc7rw.js → kbqnrs1x.js} +2 -2
  169. package/dist/tooling/shared/{gfvtj6d0.js → kz715295.js} +7 -7
  170. package/dist/tooling/shared/{a7q7t4n3.js → m3xt8b1h.js} +2 -2
  171. package/dist/tooling/shared/{dw08f3m8.js → m4hhb8aa.js} +2 -2
  172. package/dist/tooling/shared/{y031jct9.js → mw5npye0.js} +2 -2
  173. package/dist/tooling/shared/{vraj6d74.js → nxq95eb6.js} +3 -3
  174. package/dist/tooling/shared/{fb9k2qwd.js → qartgazh.js} +11 -30
  175. package/dist/tooling/shared/{xjs6zqtc.js → rcywj2w8.js} +9 -9
  176. package/dist/tooling/shared/{dy672fz6.js → s6qha57m.js} +2 -2
  177. package/dist/tooling/shared/{vx86qjv8.js → shjs0379.js} +3 -3
  178. package/dist/tooling/shared/{345tbc2k.js → sjwkt1pg.js} +1 -1
  179. package/dist/tooling/shared/{rq5kk8j6.js → stebqyyd.js} +3 -3
  180. package/dist/tooling/shared/{yk9mp7vb.js → t4xveemq.js} +4 -4
  181. package/dist/tooling/shared/{djydjpqt.js → t6zjeake.js} +5 -5
  182. package/dist/tooling/shared/{zhwnfyb2.js → tcwpjvxe.js} +1 -1
  183. package/dist/tooling/shared/{72fyg4zv.js → tpssp7ac.js} +1 -1
  184. package/dist/tooling/shared/{jne7b93p.js → v6j1ep6w.js} +3 -3
  185. package/dist/tooling/shared/{ec71zqgt.js → vwr2y833.js} +2 -2
  186. package/dist/tooling/shared/{j9t5s12a.js → w17sj05d.js} +2 -2
  187. package/dist/tooling/shared/{3tq8pnb8.js → w5d89rb4.js} +1 -1
  188. package/dist/tooling/shared/{smn6kz1p.js → wbwq1jsa.js} +2 -2
  189. package/dist/tooling/shared/{pwsytxm5.js → wezxf3h8.js} +1 -1
  190. package/dist/tooling/shared/{5bvw2nev.js → yb4kd19s.js} +1 -1
  191. package/dist/tooling/shared/{gmcf9cxf.js → ybdew6j7.js} +2 -2
  192. package/dist/tooling/shared/{ep8zh3bk.js → yfedr1zb.js} +1 -1
  193. package/dist/tooling/shared/{ddjtfgnx.js → yhp829bx.js} +3 -3
  194. package/dist/tooling/shared/{yfr8hzhm.js → ytk1tjs0.js} +1 -1
  195. package/dist/tooling/shared/{03k6res6.js → zs9aymcp.js} +1 -1
  196. package/dist/tooling/shared/zx3v9phv.js +8 -0
  197. package/dist/tooling/testing/index.js +2 -2
  198. package/package.json +38 -9
  199. package/dist/shared/fjpnhqan.js +0 -71
  200. package/dist/shared/n41w4fbz.js +0 -113
  201. package/dist/tooling/shared/pw8fgahx.js +0 -69
  202. /package/dist/shared/{ae4j5f42.js → mfvx6kjx.js} +0 -0
@@ -15,49 +15,49 @@ import {
15
15
  } from "./nfzc5z0w.js";
16
16
 
17
17
  // src/dialects/pg/ddl.ts
18
- function quoteIdent(name) {
18
+ function quoteIdent2(name) {
19
19
  return `"${name.replaceAll('"', '""')}"`;
20
20
  }
21
- function renderCatalog(source, schema) {
21
+ function renderCatalog2(source, schema) {
22
22
  const folded = foldedKeys(source);
23
23
  const statements = [];
24
24
  const ordered = creationOrder2(source);
25
- const created = uniqueBeforeForeignKey(ordered);
25
+ const created = uniqueBeforeForeignKey2(ordered);
26
26
  for (const object of ordered) {
27
27
  if (object.kind !== "type" || object.owner === "ignored")
28
28
  continue;
29
- const sql = createObjectSql(object, schema);
29
+ const sql = createObjectSql2(object, schema);
30
30
  if (sql !== undefined)
31
31
  statements.push(sql);
32
32
  }
33
33
  for (const object of created) {
34
- if (object.kind === "type" || object.kind === "function" || object.kind === "trigger" || object.kind === "view" || object.kind === "materializedView" || object.kind === "policy" || ownedByView(object)) {
34
+ if (object.kind === "type" || object.kind === "function" || object.kind === "trigger" || object.kind === "view" || object.kind === "materializedView" || object.kind === "policy" || ownedByView2(object)) {
35
35
  continue;
36
36
  }
37
37
  if (object.owner === "ignored")
38
38
  continue;
39
39
  const key = identityKey2(object.identity);
40
40
  if (object.kind === "table") {
41
- statements.push(createTableSql(object, source, schema));
41
+ statements.push(createTableSql2(object, source, schema));
42
42
  continue;
43
43
  }
44
44
  if (folded.has(key))
45
45
  continue;
46
- const sql = createObjectSql(object, schema);
46
+ const sql = createObjectSql2(object, schema);
47
47
  if (sql !== undefined)
48
48
  statements.push(sql);
49
49
  }
50
50
  for (const object of created) {
51
51
  if (object.kind !== "policy" || object.owner === "ignored")
52
52
  continue;
53
- for (const step of policyCreatePlan(object, schema))
53
+ for (const step of policyCreatePlan2(object, schema))
54
54
  statements.push(step.sql);
55
55
  }
56
56
  for (const kind of ["function", "trigger"]) {
57
57
  for (const object of ordered) {
58
58
  if (object.kind !== kind || object.owner === "ignored")
59
59
  continue;
60
- const sql = createObjectSql(object, schema);
60
+ const sql = createObjectSql2(object, schema);
61
61
  if (sql !== undefined)
62
62
  statements.push(sql);
63
63
  }
@@ -66,21 +66,21 @@ function renderCatalog(source, schema) {
66
66
  for (const object of ordered) {
67
67
  if (object.kind !== kind || object.owner === "ignored")
68
68
  continue;
69
- const sql = createObjectSql(object, schema);
69
+ const sql = createObjectSql2(object, schema);
70
70
  if (sql !== undefined)
71
71
  statements.push(sql);
72
72
  }
73
73
  }
74
74
  for (const object of ordered) {
75
- if (!ownedByView(object) || object.owner === "ignored")
75
+ if (!ownedByView2(object) || object.owner === "ignored")
76
76
  continue;
77
- const sql = createObjectSql(object, schema);
77
+ const sql = createObjectSql2(object, schema);
78
78
  if (sql !== undefined)
79
79
  statements.push(sql);
80
80
  }
81
81
  return statements;
82
82
  }
83
- function uniqueBeforeForeignKey(objects) {
83
+ function uniqueBeforeForeignKey2(objects) {
84
84
  const uniques = objects.filter((object) => object.kind === "constraint" && object.definition.constraintKind === "unique");
85
85
  if (uniques.length === 0)
86
86
  return objects;
@@ -122,49 +122,49 @@ function sameRef(left, right) {
122
122
  }
123
123
  return left.namespace.form === "template" && right.namespace.form === "template" ? left.namespace.pattern === right.namespace.pattern : false;
124
124
  }
125
- function ownedByView(object) {
125
+ function ownedByView2(object) {
126
126
  if (object.kind !== "index")
127
127
  return false;
128
128
  return object.dependencies.some((edge) => edge.target.kind === "view" || edge.target.kind === "materializedView");
129
129
  }
130
- function dropObjectSql(object, schema) {
130
+ function dropObjectSql2(object, schema) {
131
131
  if (object.owner === "ignored")
132
132
  return;
133
133
  switch (object.kind) {
134
134
  case "table":
135
- return `drop table ${qualify(schema, object.identity.name)}`;
135
+ return `drop table ${qualify2(schema, object.identity.name)}`;
136
136
  case "column":
137
- return `alter table ${qualify(schema, object.identity.parent.name)} drop column ${quoteIdent(object.identity.name)}`;
137
+ return `alter table ${qualify2(schema, object.identity.parent.name)} drop column ${quoteIdent2(object.identity.name)}`;
138
138
  case "index":
139
- return `drop index ${qualify(schema, object.identity.name)}`;
139
+ return `drop index ${qualify2(schema, object.identity.name)}`;
140
140
  case "constraint":
141
- return `alter table ${qualify(schema, object.identity.parent.name)} drop constraint ${quoteIdent(object.identity.name)}`;
141
+ return `alter table ${qualify2(schema, object.identity.parent.name)} drop constraint ${quoteIdent2(object.identity.name)}`;
142
142
  case "sequence":
143
- return `drop sequence ${qualify(schema, object.identity.name)}`;
143
+ return `drop sequence ${qualify2(schema, object.identity.name)}`;
144
144
  case "type":
145
- return `drop type ${qualify(schema, object.identity.name)}`;
145
+ return `drop type ${qualify2(schema, object.identity.name)}`;
146
146
  case "extension":
147
- return `drop extension ${quoteIdent(object.identity.name)}`;
147
+ return `drop extension ${quoteIdent2(object.identity.name)}`;
148
148
  case "function":
149
- return `drop function ${qualify(schema, object.identity.name)}(${object.identity.argTypes.join(", ")})`;
149
+ return `drop function ${qualify2(schema, object.identity.name)}(${object.identity.argTypes.join(", ")})`;
150
150
  case "trigger":
151
- return `drop trigger ${quoteIdent(object.identity.name)} on ${qualify(schema, object.identity.parent.name)}`;
151
+ return `drop trigger ${quoteIdent2(object.identity.name)} on ${qualify2(schema, object.identity.parent.name)}`;
152
152
  case "view":
153
- return `drop view ${qualify(schema, object.identity.name)}`;
153
+ return `drop view ${qualify2(schema, object.identity.name)}`;
154
154
  case "materializedView":
155
- return `drop materialized view ${qualify(schema, object.identity.name)}`;
155
+ return `drop materialized view ${qualify2(schema, object.identity.name)}`;
156
156
  default:
157
157
  return;
158
158
  }
159
159
  }
160
- function createObjectSql(object, schema) {
160
+ function createObjectSql2(object, schema) {
161
161
  switch (object.kind) {
162
162
  case "column":
163
- return `alter table ${qualify(schema, object.identity.parent.name)} add column ${columnSql(object)}`;
163
+ return `alter table ${qualify2(schema, object.identity.parent.name)} add column ${columnSql(object)}`;
164
164
  case "index":
165
165
  return createIndexSql(object, schema);
166
166
  case "constraint":
167
- return `alter table ${qualify(schema, object.identity.parent.name)} add constraint ${quoteIdent(object.identity.name)} ${constraintBody(object, schema)}`;
167
+ return `alter table ${qualify2(schema, object.identity.parent.name)} add constraint ${quoteIdent2(object.identity.name)} ${constraintBody(object, schema)}`;
168
168
  case "sequence":
169
169
  return createSequenceSql(object, schema);
170
170
  case "type":
@@ -172,11 +172,11 @@ function createObjectSql(object, schema) {
172
172
  case "extension":
173
173
  return createExtensionSql(object);
174
174
  case "function":
175
- return functionSql(object, schema, false);
175
+ return functionSql2(object, schema, false);
176
176
  case "trigger":
177
177
  return triggerSql(object, schema);
178
178
  case "view":
179
- return viewSql(object, schema, false);
179
+ return viewSql2(object, schema, false);
180
180
  case "materializedView":
181
181
  return materializedViewSql(object, schema);
182
182
  case "table":
@@ -185,10 +185,10 @@ function createObjectSql(object, schema) {
185
185
  return;
186
186
  }
187
187
  }
188
- function functionSql(object, schema, replace) {
188
+ function functionSql2(object, schema, replace) {
189
189
  const definition = object.definition;
190
- const args = definition.arguments.map((argument) => `${quoteIdent(argument.name)} ${argument.type}`).join(", ");
191
- const head = `${replace ? "create or replace" : "create"} function ${qualify(schema, object.identity.name)}(${args})`;
190
+ const args = definition.arguments.map((argument) => `${quoteIdent2(argument.name)} ${argument.type}`).join(", ");
191
+ const head = `${replace ? "create or replace" : "create"} function ${qualify2(schema, object.identity.name)}(${args})`;
192
192
  const security = ` security ${definition.security}`;
193
193
  const path = definition.searchPath === undefined ? "" : ` set search_path to ${definition.searchPath}`;
194
194
  const tail = `returns ${definition.returns} language ${definition.language} ${definition.volatility}${security}${path}`;
@@ -196,14 +196,14 @@ function functionSql(object, schema, replace) {
196
196
  return `${head} ${tail} ${definition.body}`;
197
197
  return `${head} ${tail} as ${dollarQuote(definition.body)}`;
198
198
  }
199
- function viewSql(object, schema, replace) {
199
+ function viewSql2(object, schema, replace) {
200
200
  const verb = replace ? "create or replace view" : "create view";
201
201
  const invoker = object.definition.securityInvoker === true ? " with (security_invoker = true)" : "";
202
- return `${verb} ${qualify(schema, object.identity.name)}${invoker} as ${object.definition.query}`;
202
+ return `${verb} ${qualify2(schema, object.identity.name)}${invoker} as ${object.definition.query}`;
203
203
  }
204
- function policyCreatePlan(object, schema) {
205
- const table = qualify(schema, object.identity.parent.name);
206
- const name = quoteIdent(object.identity.name);
204
+ function policyCreatePlan2(object, schema) {
205
+ const table = qualify2(schema, object.identity.parent.name);
206
+ const name = quoteIdent2(object.identity.name);
207
207
  const command = object.definition.command === "all" ? "all" : "select";
208
208
  const check = object.definition.command === "all" ? ` with check ${object.definition.expression}` : "";
209
209
  const create = {
@@ -218,10 +218,10 @@ function policyCreatePlan(object, schema) {
218
218
  create
219
219
  ];
220
220
  }
221
- function policyDropPlan(object, schema) {
222
- const table = qualify(schema, object.identity.parent.name);
221
+ function policyDropPlan2(object, schema) {
222
+ const table = qualify2(schema, object.identity.parent.name);
223
223
  const drop = {
224
- sql: `drop policy ${quoteIdent(object.identity.name)} on ${table}`,
224
+ sql: `drop policy ${quoteIdent2(object.identity.name)} on ${table}`,
225
225
  kind: "drop-policy"
226
226
  };
227
227
  if (object.definition.command !== "all")
@@ -233,11 +233,11 @@ function policyDropPlan(object, schema) {
233
233
  ];
234
234
  }
235
235
  function materializedViewSql(object, schema) {
236
- return `create materialized view ${qualify(schema, object.identity.name)} as ${object.definition.query} with no data`;
236
+ return `create materialized view ${qualify2(schema, object.identity.name)} as ${object.definition.query} with no data`;
237
237
  }
238
- function refreshMaterializedViewSql(object, schema, populated = false) {
238
+ function refreshMaterializedViewSql2(object, schema, populated = false) {
239
239
  const concurrently = populated && object.definition.refresh === "concurrently" ? " concurrently" : "";
240
- return `refresh materialized view${concurrently} ${qualify(schema, object.identity.name)}`;
240
+ return `refresh materialized view${concurrently} ${qualify2(schema, object.identity.name)}`;
241
241
  }
242
242
  function triggerSql(object, schema) {
243
243
  const definition = object.definition;
@@ -245,12 +245,12 @@ function triggerSql(object, schema) {
245
245
  const events = definition.events.map((event) => {
246
246
  if (event !== "update" || definition.updateOf === undefined)
247
247
  return event;
248
- return `update of ${definition.updateOf.map((column) => quoteIdent(column)).join(", ")}`;
248
+ return `update of ${definition.updateOf.map((column) => quoteIdent2(column)).join(", ")}`;
249
249
  }).join(" or ");
250
250
  const when = definition.when === undefined ? "" : ` when (${definition.when})`;
251
251
  const args = definition.calls.argTypes.join(", ");
252
- const fn = `${qualify(schema, definition.calls.name)}(${args})`;
253
- return `create trigger ${quoteIdent(object.identity.name)} ${timing} ${events} on ${qualify(schema, object.identity.parent.name)} for each ${definition.level}${when} execute function ${fn}`;
252
+ const fn = `${qualify2(schema, definition.calls.name)}(${args})`;
253
+ return `create trigger ${quoteIdent2(object.identity.name)} ${timing} ${events} on ${qualify2(schema, object.identity.parent.name)} for each ${definition.level}${when} execute function ${fn}`;
254
254
  }
255
255
  function dollarQuote(body) {
256
256
  let tag = "okm";
@@ -258,10 +258,10 @@ function dollarQuote(body) {
258
258
  tag = `${tag}_`;
259
259
  return `$${tag}$${body}$${tag}$`;
260
260
  }
261
- function alterColumnSql(before, after, schema) {
261
+ function alterColumnSql2(before, after, schema) {
262
262
  const statements = [];
263
- const table = qualify(schema, after.identity.parent.name);
264
- const name = quoteIdent(after.identity.name);
263
+ const table = qualify2(schema, after.identity.parent.name);
264
+ const name = quoteIdent2(after.identity.name);
265
265
  const typeChanged = before.definition.dataType !== after.definition.dataType;
266
266
  const collationChanged = before.definition.collation !== after.definition.collation;
267
267
  if (typeChanged || collationChanged) {
@@ -276,7 +276,7 @@ function alterColumnSql(before, after, schema) {
276
276
  }
277
277
  return statements;
278
278
  }
279
- function identitySequence(sequence, source) {
279
+ function identitySequence2(sequence, source) {
280
280
  const key = identityKey2(sequence.identity);
281
281
  return source.objects.some((object) => {
282
282
  if (object.kind !== "column" || object.definition.identity === undefined)
@@ -292,24 +292,24 @@ function foldedKeys(source) {
292
292
  if (object.kind === "constraint" && object.definition.constraintKind === "primaryKey") {
293
293
  keys.add(identityKey2(object.identity));
294
294
  }
295
- if (object.kind === "sequence" && identitySequence(object, source)) {
295
+ if (object.kind === "sequence" && identitySequence2(object, source)) {
296
296
  keys.add(identityKey2(object.identity));
297
297
  }
298
298
  }
299
299
  return keys;
300
300
  }
301
- function createTableSql(tableObject, source, schema) {
301
+ function createTableSql2(tableObject, source, schema) {
302
302
  const parent = tableObject.identity.name;
303
303
  const columns = source.objects.filter((object) => object.kind === "column" && object.identity.parent.name === parent);
304
304
  const primary = source.objects.find((object) => object.kind === "constraint" && object.definition.constraintKind === "primaryKey" && object.identity.parent.name === parent);
305
305
  const lines = columns.map((column) => columnSql(column));
306
306
  if (primary !== undefined) {
307
- const cols = primary.definition.columns.map((name) => quoteIdent(name)).join(", ");
308
- lines.push(`constraint ${quoteIdent(primary.identity.name)} primary key (${cols})`);
307
+ const cols = primary.definition.columns.map((name) => quoteIdent2(name)).join(", ");
308
+ lines.push(`constraint ${quoteIdent2(primary.identity.name)} primary key (${cols})`);
309
309
  }
310
310
  const partition = tableObject.definition.partition;
311
- const tail = partition === undefined ? "" : ` partition by ${partition.method} (${partition.columns.map((name) => quoteIdent(name)).join(", ")})`;
312
- return `create table ${qualify(schema, parent)} (
311
+ const tail = partition === undefined ? "" : ` partition by ${partition.method} (${partition.columns.map((name) => quoteIdent2(name)).join(", ")})`;
312
+ return `create table ${qualify2(schema, parent)} (
313
313
  ${lines.join(`,
314
314
  `)}
315
315
  )${tail}`;
@@ -317,20 +317,20 @@ function createTableSql(tableObject, source, schema) {
317
317
  function collateSql(collation) {
318
318
  if (collation === undefined)
319
319
  return "";
320
- return ` collate ${quoteIdent(collation)}`;
320
+ return ` collate ${quoteIdent2(collation)}`;
321
321
  }
322
322
  function createTypeSql(object, schema) {
323
323
  if (isDomain(object.definition)) {
324
324
  const name = object.identity.name;
325
- const constraint = quoteIdent(fitIdentifier2(`${name}_check`));
326
- return `create domain ${qualify(schema, name)} as ${object.definition.base} constraint ${constraint} check (${object.definition.check})`;
325
+ const constraint = quoteIdent2(fitIdentifier2(`${name}_check`));
326
+ return `create domain ${qualify2(schema, name)} as ${object.definition.base} constraint ${constraint} check (${object.definition.check})`;
327
327
  }
328
328
  const labels = object.definition.labels.map((label) => quoteLiteral(label)).join(", ");
329
- return `create type ${qualify(schema, object.identity.name)} as enum (${labels})`;
329
+ return `create type ${qualify2(schema, object.identity.name)} as enum (${labels})`;
330
330
  }
331
331
  function columnSql(column) {
332
332
  const definition = column.definition;
333
- let sql = `${quoteIdent(column.identity.name)} ${definition.dataType}${collateSql(definition.collation)}`;
333
+ let sql = `${quoteIdent2(column.identity.name)} ${definition.dataType}${collateSql(definition.collation)}`;
334
334
  if (definition.identity !== undefined) {
335
335
  sql += definition.identity.always ? " generated always as identity" : " generated by default as identity";
336
336
  } else if (definition.generated !== undefined) {
@@ -346,27 +346,38 @@ function createIndexSql(object, schema) {
346
346
  const unique = object.definition.unique ? "unique " : "";
347
347
  const where = object.definition.predicate === undefined ? "" : ` where ${object.definition.predicate}`;
348
348
  const expression = object.definition.expression;
349
- const name = quoteIdent(object.identity.name);
350
- const on = qualify(schema, object.identity.parent.name);
349
+ const name = quoteIdent2(object.identity.name);
350
+ const on = qualify2(schema, object.identity.parent.name);
351
351
  if (expression !== undefined && expression.startsWith("using ")) {
352
352
  return `create ${unique}index ${name} on ${on} ${expression}${where}`;
353
353
  }
354
- const target = expression !== undefined ? `(${expression})` : object.definition.columns.map((column) => quoteIdent(column)).join(", ");
354
+ const target = expression !== undefined ? `(${expression})` : object.definition.columns.map((column) => quoteIdent2(column)).join(", ");
355
355
  return `create ${unique}index ${name} on ${on} (${target})${where}`;
356
356
  }
357
357
  function createExtensionSql(object) {
358
358
  const version = object.definition.version;
359
359
  const pinned = version !== undefined && /^\d+(?:\.\d+)*$/.test(version) ? ` version ${quoteLiteral(version)}` : "";
360
- return `create extension ${quoteIdent(object.identity.name)} schema ${quoteIdent(object.definition.schema)}${pinned}`;
360
+ return `create extension ${quoteIdent2(object.identity.name)} schema ${quoteIdent2(object.definition.schema)}${pinned}`;
361
361
  }
362
362
  function createSequenceSql(object, schema) {
363
363
  const definition = object.definition;
364
364
  const cycle = definition.cycle ? " cycle" : "";
365
- return `create sequence ${qualify(schema, object.identity.name)} as ${definition.dataType} start ${definition.start} increment ${definition.increment}${cycle}`;
365
+ return `create sequence ${qualify2(schema, object.identity.name)} as ${definition.dataType} start ${definition.start} increment ${definition.increment}${cycle}`;
366
+ }
367
+ function referenceSchema(object, schema) {
368
+ const references = object.definition.references;
369
+ if (references === undefined)
370
+ return schema;
371
+ const target = references.parent.namespace;
372
+ const parent = object.identity.parent.namespace;
373
+ if (target.form === "static" && parent.form === "static" && target.name !== parent.name) {
374
+ return target.name;
375
+ }
376
+ return schema;
366
377
  }
367
378
  function constraintBody(object, schema) {
368
379
  const definition = object.definition;
369
- const columns = definition.columns.map((name) => quoteIdent(name)).join(", ");
380
+ const columns = definition.columns.map((name) => quoteIdent2(name)).join(", ");
370
381
  switch (definition.constraintKind) {
371
382
  case "primaryKey":
372
383
  return `primary key (${columns})`;
@@ -378,7 +389,7 @@ function constraintBody(object, schema) {
378
389
  return `check (${definition.expression ?? "true"})${deferClause(definition)}`;
379
390
  case "foreignKey": {
380
391
  const references = definition.references;
381
- const target = references === undefined ? "" : ` references ${qualify(schema, references.parent.name)} (${references.columns.map((name) => quoteIdent(name)).join(", ")})`;
392
+ const target = references === undefined ? "" : ` references ${qualify2(referenceSchema(object, schema), references.parent.name)} (${references.columns.map((name) => quoteIdent2(name)).join(", ")})`;
382
393
  const onDelete = references?.onDelete === undefined ? "" : ` on delete ${references.onDelete}`;
383
394
  const onUpdate = references?.onUpdate === undefined ? "" : ` on update ${references.onUpdate}`;
384
395
  return `foreign key (${columns})${target}${onDelete}${onUpdate}${deferClause(definition)}`;
@@ -392,8 +403,8 @@ function deferClause(definition) {
392
403
  return "";
393
404
  return ` deferrable initially ${definition.initially}`;
394
405
  }
395
- function qualify(schema, name) {
396
- return `${quoteIdent(schema)}.${quoteIdent(name)}`;
406
+ function qualify2(schema, name) {
407
+ return `${quoteIdent2(schema)}.${quoteIdent2(name)}`;
397
408
  }
398
409
 
399
- export { quoteIdent, renderCatalog, uniqueBeforeForeignKey, ownedByView, dropObjectSql, createObjectSql, functionSql, viewSql, policyCreatePlan, policyDropPlan, refreshMaterializedViewSql, alterColumnSql, identitySequence, createTableSql, qualify };
410
+ export { quoteIdent2, renderCatalog2, uniqueBeforeForeignKey2, ownedByView2, dropObjectSql2, createObjectSql2, functionSql2, viewSql2, policyCreatePlan2, policyDropPlan2, refreshMaterializedViewSql2, alterColumnSql2, identitySequence2, createTableSql2, qualify2 };
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  mapFailure
3
- } from "./ae4j5f42.js";
3
+ } from "./mfvx6kjx.js";
4
4
 
5
5
  // src/adapters/pg/pglite-wire.ts
6
6
  var OIDS = [
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  open3,
3
3
  seal2
4
- } from "./4m6hskg8.js";
4
+ } from "./0j6qe91y.js";
5
5
  import {
6
6
  PGLITE_CAPABILITIES,
7
7
  readCapability2,
8
8
  hasCapability2
9
- } from "./ae4j5f42.js";
9
+ } from "./mfvx6kjx.js";
10
10
  export {
11
11
  PGLITE_CAPABILITIES as capabilities,
12
12
  hasCapability2 as hasCapability,
@@ -0,0 +1,17 @@
1
+ // src/dialects/pg/ext/using.ts
2
+ function quotedIdent(name) {
3
+ return `"${name.replaceAll('"', '""')}"`;
4
+ }
5
+ function usingIndex(column, method, opclass) {
6
+ const call = {
7
+ columns: [column],
8
+ isUnique: false,
9
+ expression: `using ${method} (${quotedIdent(column)} ${opclass})`,
10
+ unique() {
11
+ return call;
12
+ }
13
+ };
14
+ return call;
15
+ }
16
+
17
+ export { quotedIdent, usingIndex };
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  FUNCTION_ARG_TYPES
3
- } from "./p3xbdcvt.js";
3
+ } from "./myk8fswx.js";
4
4
  import {
5
5
  OkmError2
6
6
  } from "./52szzakm.js";
@@ -0,0 +1,29 @@
1
+ import {
2
+ isExactVersion,
3
+ compareExtensionVersions
4
+ } from "./r3j8s5y0.js";
5
+ import {
6
+ OkmError2
7
+ } from "./52szzakm.js";
8
+
9
+ // src/dialects/pg/ext/feature.ts
10
+ function assertExtFeature(declared, feature, need) {
11
+ if (declared === undefined)
12
+ return;
13
+ if (pinAllows(declared, need.extension))
14
+ return;
15
+ throw new OkmError2("OKM1812", `${feature} needs ${need.name} ${need.extension} or higher and PostgreSQL ${String(need.postgres)}. minPostgres: ${String(need.postgres)}. The declaration allows ${declared}.`, {
16
+ fix: {
17
+ summary: `Raise the ${need.name} pin to ${need.extension} or higher, and set minPostgres to ${String(need.postgres)}.`
18
+ }
19
+ });
20
+ }
21
+ function pinAllows(declared, minimum) {
22
+ const floor = /^>=(\d+(?:\.\d+)*)$/.exec(declared);
23
+ const pinned = floor?.[1] ?? declared;
24
+ if (!isExactVersion(pinned))
25
+ return false;
26
+ return compareExtensionVersions(pinned, minimum) >= 0;
27
+ }
28
+
29
+ export { assertExtFeature };
@@ -3,11 +3,11 @@ import {
3
3
  } from "./cm3w0ywp.js";
4
4
  import {
5
5
  noTimeout
6
- } from "./q0cqt2sp.js";
6
+ } from "./tr64w5p0.js";
7
7
  import {
8
8
  noticeBuffer,
9
9
  WireSession
10
- } from "./mtw6jz76.js";
10
+ } from "./e275q7sd.js";
11
11
  import {
12
12
  NEON_WEBSOCKET_CAPABILITIES,
13
13
  NEON_HTTP_CAPABILITIES,
@@ -17,7 +17,7 @@ import {
17
17
  runCall,
18
18
  EMPTY_NOTICES,
19
19
  resultFrom
20
- } from "./ae4j5f42.js";
20
+ } from "./mfvx6kjx.js";
21
21
 
22
22
  // src/adapters/pg/neon.ts
23
23
  import {
@@ -117,7 +117,7 @@ async function openWebSocket(config) {
117
117
  counters.busy = Math.max(0, counters.busy - 1);
118
118
  });
119
119
  const held = { pool, acquireMs, counters, notices, named, isClosed };
120
- const checkout = () => closed ? rejectClosed() : import("./jx2m62cs.js").then((mod) => mod.checkout(held));
120
+ const checkout = () => closed ? rejectClosed() : import("./xv8qj97g.js").then((mod) => mod.checkout(held));
121
121
  return {
122
122
  capabilities: NEON_WEBSOCKET_CAPABILITIES,
123
123
  execute(text, params, options) {
@@ -1,7 +1,8 @@
1
1
  import {
2
2
  open2
3
- } from "./35q0n9tz.js";
3
+ } from "./dd5pmnky.js";
4
4
  import"./12z7aznj.js";
5
+ import"./fk9vef30.js";
5
6
  import"./n442h54c.js";
6
7
  import {
7
8
  CURRENT,
@@ -14,21 +15,21 @@ import {
14
15
  import {
15
16
  expandProvisioned,
16
17
  provisionHistoryIsKnown
17
- } from "./mnvjvqyp.js";
18
- import"./kj9d8maq.js";
19
- import"./p3xbdcvt.js";
18
+ } from "./3456242y.js";
19
+ import"./jpybhf98.js";
20
+ import"./myk8fswx.js";
20
21
  import {
21
22
  projectPath,
23
+ catalogNamespace,
22
24
  loadMigrations,
23
25
  loadConfig
24
- } from "./f4jy1j7x.js";
26
+ } from "./2zdxkt7b.js";
25
27
  import {
26
28
  sessionFailure,
27
29
  finishQuiet,
28
30
  assertTargetPolicy,
29
31
  listTargets
30
- } from "./dpc2r7rb.js";
31
- import"./sjk86yrx.js";
32
+ } from "./6nae0spm.js";
32
33
  import {
33
34
  OkmError2
34
35
  } from "./52szzakm.js";
@@ -109,6 +110,7 @@ async function readTargetStatus(input) {
109
110
  }
110
111
  async function statusProject(cwd, flags) {
111
112
  const config = await loadConfig(cwd);
113
+ const namespace = catalogNamespace(config);
112
114
  const targets = chosen(listTargets(config), flags.target);
113
115
  const migrations = loadMigrations(projectPath(cwd, config.migrations ?? "migrations"));
114
116
  const rows = [];
@@ -117,6 +119,7 @@ async function statusProject(cwd, flags) {
117
119
  url: target.url,
118
120
  target: target.name,
119
121
  protected: target.protected,
122
+ ...namespace === "public" ? {} : { searchPath: namespace },
120
123
  migrations
121
124
  }));
122
125
  }
@@ -1,3 +1,6 @@
1
+ import {
2
+ historySql2
3
+ } from "./yybhre6n.js";
1
4
  import {
2
5
  BEHIND_EXPAND,
3
6
  BEHIND_CONTRACT,
@@ -37,10 +40,10 @@ function driftVerdict(codeHash, recordedHash, migrations) {
37
40
  const last = migrations.at(-1);
38
41
  return { state: "behind", migrationId: last?.id ?? "" };
39
42
  }
40
- async function assertDrift(pool, codeHash, recordedHash, options) {
43
+ async function assertDrift(pool, codeHash, recordedHash, options, namespace = "public") {
41
44
  let rows;
42
45
  try {
43
- const result = await pool.execute("select migration_id, class, catalog_hash from okm_history order by migration_id, step_index", undefined, options);
46
+ const result = await pool.execute(await historySql2(namespace), undefined, options);
44
47
  rows = result.rows;
45
48
  } catch (error) {
46
49
  throw gapError({ state: "behind", migrationId: "" }, error);