callman-core 1.28.1 → 1.30.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 (402) hide show
  1. package/dist/ai/index.d.ts +1 -1
  2. package/dist/ai/index.d.ts.map +1 -1
  3. package/dist/ai/index.js.map +1 -1
  4. package/dist/ai/outputSchemas.d.ts +3 -0
  5. package/dist/ai/outputSchemas.d.ts.map +1 -1
  6. package/dist/ai/outputSchemas.js +1 -0
  7. package/dist/ai/outputSchemas.js.map +1 -1
  8. package/dist/ai/parse/diagram.d.ts.map +1 -1
  9. package/dist/ai/parse/diagram.js +6 -3
  10. package/dist/ai/parse/diagram.js.map +1 -1
  11. package/dist/ai/prompts/diagram.d.ts +7 -3
  12. package/dist/ai/prompts/diagram.d.ts.map +1 -1
  13. package/dist/ai/prompts/diagram.js +61 -5
  14. package/dist/ai/prompts/diagram.js.map +1 -1
  15. package/dist/ai/types.d.ts +6 -0
  16. package/dist/ai/types.d.ts.map +1 -1
  17. package/dist/diagram/bpmn/derive.d.ts +74 -0
  18. package/dist/diagram/bpmn/derive.d.ts.map +1 -0
  19. package/dist/diagram/bpmn/derive.js +392 -0
  20. package/dist/diagram/bpmn/derive.js.map +1 -0
  21. package/dist/diagram/bpmn/index.d.ts +7 -0
  22. package/dist/diagram/bpmn/index.d.ts.map +1 -0
  23. package/dist/diagram/bpmn/index.js +12 -0
  24. package/dist/diagram/bpmn/index.js.map +1 -0
  25. package/dist/diagram/bpmn/patch.d.ts +14 -0
  26. package/dist/diagram/bpmn/patch.d.ts.map +1 -0
  27. package/dist/diagram/bpmn/patch.js +770 -0
  28. package/dist/diagram/bpmn/patch.js.map +1 -0
  29. package/dist/diagram/bpmn/place.d.ts +4 -0
  30. package/dist/diagram/bpmn/place.d.ts.map +1 -0
  31. package/dist/diagram/bpmn/place.js +65 -0
  32. package/dist/diagram/bpmn/place.js.map +1 -0
  33. package/dist/diagram/bpmn/serialize.d.ts +12 -0
  34. package/dist/diagram/bpmn/serialize.d.ts.map +1 -0
  35. package/dist/diagram/bpmn/serialize.js +292 -0
  36. package/dist/diagram/bpmn/serialize.js.map +1 -0
  37. package/dist/diagram/bpmn/types.d.ts +42 -0
  38. package/dist/diagram/bpmn/types.d.ts.map +1 -0
  39. package/dist/diagram/bpmn/types.js +84 -0
  40. package/dist/diagram/bpmn/types.js.map +1 -0
  41. package/dist/diagram/bpmn/xml.d.ts +60 -0
  42. package/dist/diagram/bpmn/xml.d.ts.map +1 -0
  43. package/dist/diagram/bpmn/xml.js +342 -0
  44. package/dist/diagram/bpmn/xml.js.map +1 -0
  45. package/dist/diagram/componentCatalog.d.ts +3 -0
  46. package/dist/diagram/componentCatalog.d.ts.map +1 -1
  47. package/dist/diagram/componentCatalog.js +5 -1
  48. package/dist/diagram/componentCatalog.js.map +1 -1
  49. package/dist/diagram/database/derive.d.ts +14 -0
  50. package/dist/diagram/database/derive.d.ts.map +1 -0
  51. package/dist/diagram/database/derive.js +114 -0
  52. package/dist/diagram/database/derive.js.map +1 -0
  53. package/dist/diagram/database/diff.d.ts +48 -0
  54. package/dist/diagram/database/diff.d.ts.map +1 -0
  55. package/dist/diagram/database/diff.js +109 -0
  56. package/dist/diagram/database/diff.js.map +1 -0
  57. package/dist/diagram/database/edit.d.ts +113 -0
  58. package/dist/diagram/database/edit.d.ts.map +1 -0
  59. package/dist/diagram/database/edit.js +359 -0
  60. package/dist/diagram/database/edit.js.map +1 -0
  61. package/dist/diagram/database/fromSchema.d.ts +12 -0
  62. package/dist/diagram/database/fromSchema.d.ts.map +1 -0
  63. package/dist/diagram/database/fromSchema.js +182 -0
  64. package/dist/diagram/database/fromSchema.js.map +1 -0
  65. package/dist/diagram/database/index.d.ts +9 -0
  66. package/dist/diagram/database/index.d.ts.map +1 -0
  67. package/dist/diagram/database/index.js +14 -0
  68. package/dist/diagram/database/index.js.map +1 -0
  69. package/dist/diagram/database/model.d.ts +93 -0
  70. package/dist/diagram/database/model.d.ts.map +1 -0
  71. package/dist/diagram/database/model.js +294 -0
  72. package/dist/diagram/database/model.js.map +1 -0
  73. package/dist/diagram/database/patch.d.ts +14 -0
  74. package/dist/diagram/database/patch.d.ts.map +1 -0
  75. package/dist/diagram/database/patch.js +186 -0
  76. package/dist/diagram/database/patch.js.map +1 -0
  77. package/dist/diagram/database/place.d.ts +4 -0
  78. package/dist/diagram/database/place.d.ts.map +1 -0
  79. package/dist/diagram/database/place.js +22 -0
  80. package/dist/diagram/database/place.js.map +1 -0
  81. package/dist/diagram/database/types.d.ts +50 -0
  82. package/dist/diagram/database/types.d.ts.map +1 -0
  83. package/dist/diagram/database/types.js +106 -0
  84. package/dist/diagram/database/types.js.map +1 -0
  85. package/dist/diagram/elkGraph.d.ts +1 -3
  86. package/dist/diagram/elkGraph.d.ts.map +1 -1
  87. package/dist/diagram/elkGraph.js +1 -0
  88. package/dist/diagram/elkGraph.js.map +1 -1
  89. package/dist/diagram/fixtures.d.ts +10 -0
  90. package/dist/diagram/fixtures.d.ts.map +1 -0
  91. package/dist/diagram/fixtures.js +113 -0
  92. package/dist/diagram/fixtures.js.map +1 -0
  93. package/dist/diagram/geometry.d.ts +27 -0
  94. package/dist/diagram/geometry.d.ts.map +1 -0
  95. package/dist/diagram/geometry.js +122 -0
  96. package/dist/diagram/geometry.js.map +1 -0
  97. package/dist/diagram/history.d.ts +36 -0
  98. package/dist/diagram/history.d.ts.map +1 -0
  99. package/dist/diagram/history.js +54 -0
  100. package/dist/diagram/history.js.map +1 -0
  101. package/dist/diagram/ids.d.ts +5 -0
  102. package/dist/diagram/ids.d.ts.map +1 -0
  103. package/dist/diagram/ids.js +52 -0
  104. package/dist/diagram/ids.js.map +1 -0
  105. package/dist/diagram/index.d.ts +15 -2
  106. package/dist/diagram/index.d.ts.map +1 -1
  107. package/dist/diagram/index.js +21 -8
  108. package/dist/diagram/index.js.map +1 -1
  109. package/dist/diagram/layout.d.ts +108 -0
  110. package/dist/diagram/layout.d.ts.map +1 -0
  111. package/dist/diagram/layout.js +357 -0
  112. package/dist/diagram/layout.js.map +1 -0
  113. package/dist/diagram/mermaid/derive.d.ts +55 -0
  114. package/dist/diagram/mermaid/derive.d.ts.map +1 -0
  115. package/dist/diagram/mermaid/derive.js +343 -0
  116. package/dist/diagram/mermaid/derive.js.map +1 -0
  117. package/dist/diagram/mermaid/index.d.ts +8 -0
  118. package/dist/diagram/mermaid/index.d.ts.map +1 -0
  119. package/dist/diagram/mermaid/index.js +24 -0
  120. package/dist/diagram/mermaid/index.js.map +1 -0
  121. package/dist/diagram/mermaid/parse.d.ts +96 -0
  122. package/dist/diagram/mermaid/parse.d.ts.map +1 -0
  123. package/dist/diagram/mermaid/parse.js +672 -0
  124. package/dist/diagram/mermaid/parse.js.map +1 -0
  125. package/dist/diagram/mermaid/patch.d.ts +16 -0
  126. package/dist/diagram/mermaid/patch.d.ts.map +1 -0
  127. package/dist/diagram/mermaid/patch.js +463 -0
  128. package/dist/diagram/mermaid/patch.js.map +1 -0
  129. package/dist/diagram/mermaid/serialize.d.ts +14 -0
  130. package/dist/diagram/mermaid/serialize.d.ts.map +1 -0
  131. package/dist/diagram/mermaid/serialize.js +125 -0
  132. package/dist/diagram/mermaid/serialize.js.map +1 -0
  133. package/dist/diagram/mermaid/shapes.d.ts +11 -0
  134. package/dist/diagram/mermaid/shapes.d.ts.map +1 -0
  135. package/dist/diagram/mermaid/shapes.js +320 -0
  136. package/dist/diagram/mermaid/shapes.js.map +1 -0
  137. package/dist/diagram/migrations.d.ts +1 -0
  138. package/dist/diagram/migrations.d.ts.map +1 -1
  139. package/dist/diagram/migrations.js +7 -2
  140. package/dist/diagram/migrations.js.map +1 -1
  141. package/dist/diagram/normalize.d.ts +9 -1
  142. package/dist/diagram/normalize.d.ts.map +1 -1
  143. package/dist/diagram/normalize.js +194 -0
  144. package/dist/diagram/normalize.js.map +1 -1
  145. package/dist/diagram/ops.d.ts +146 -0
  146. package/dist/diagram/ops.d.ts.map +1 -0
  147. package/dist/diagram/ops.js +865 -0
  148. package/dist/diagram/ops.js.map +1 -0
  149. package/dist/diagram/opsReference.d.ts +3 -0
  150. package/dist/diagram/opsReference.d.ts.map +1 -0
  151. package/dist/diagram/opsReference.js +60 -0
  152. package/dist/diagram/opsReference.js.map +1 -0
  153. package/dist/diagram/patchInput.d.ts +257 -0
  154. package/dist/diagram/patchInput.d.ts.map +1 -0
  155. package/dist/diagram/patchInput.js +1024 -0
  156. package/dist/diagram/patchInput.js.map +1 -0
  157. package/dist/diagram/routing/batch.d.ts +45 -0
  158. package/dist/diagram/routing/batch.d.ts.map +1 -0
  159. package/dist/diagram/routing/batch.js +136 -0
  160. package/dist/diagram/routing/batch.js.map +1 -0
  161. package/dist/diagram/routing/curves.d.ts +7 -0
  162. package/dist/diagram/routing/curves.d.ts.map +1 -0
  163. package/dist/diagram/routing/curves.js +120 -0
  164. package/dist/diagram/routing/curves.js.map +1 -0
  165. package/dist/diagram/routing/grid.d.ts +15 -0
  166. package/dist/diagram/routing/grid.d.ts.map +1 -0
  167. package/dist/diagram/routing/grid.js +245 -0
  168. package/dist/diagram/routing/grid.js.map +1 -0
  169. package/dist/diagram/routing/index.d.ts +10 -0
  170. package/dist/diagram/routing/index.d.ts.map +1 -0
  171. package/dist/diagram/routing/index.js +10 -0
  172. package/dist/diagram/routing/index.js.map +1 -0
  173. package/dist/diagram/routing/legacy.d.ts +6 -0
  174. package/dist/diagram/routing/legacy.d.ts.map +1 -0
  175. package/dist/diagram/routing/legacy.js +27 -0
  176. package/dist/diagram/routing/legacy.js.map +1 -0
  177. package/dist/diagram/routing/nudge.d.ts +4 -0
  178. package/dist/diagram/routing/nudge.d.ts.map +1 -0
  179. package/dist/diagram/routing/nudge.js +96 -0
  180. package/dist/diagram/routing/nudge.js.map +1 -0
  181. package/dist/diagram/routing/orthogonal.d.ts +6 -0
  182. package/dist/diagram/routing/orthogonal.d.ts.map +1 -0
  183. package/dist/diagram/routing/orthogonal.js +56 -0
  184. package/dist/diagram/routing/orthogonal.js.map +1 -0
  185. package/dist/diagram/routing/path.d.ts +16 -0
  186. package/dist/diagram/routing/path.d.ts.map +1 -0
  187. package/dist/diagram/routing/path.js +128 -0
  188. package/dist/diagram/routing/path.js.map +1 -0
  189. package/dist/diagram/routing/sides.d.ts +22 -0
  190. package/dist/diagram/routing/sides.d.ts.map +1 -0
  191. package/dist/diagram/routing/sides.js +74 -0
  192. package/dist/diagram/routing/sides.js.map +1 -0
  193. package/dist/diagram/routing/types.d.ts +46 -0
  194. package/dist/diagram/routing/types.d.ts.map +1 -0
  195. package/dist/diagram/routing/types.js +11 -0
  196. package/dist/diagram/routing/types.js.map +1 -0
  197. package/dist/diagram/schema.d.ts +71 -38
  198. package/dist/diagram/schema.d.ts.map +1 -1
  199. package/dist/diagram/schema.js +62 -8
  200. package/dist/diagram/schema.js.map +1 -1
  201. package/dist/diagram/styleInput.d.ts +41 -0
  202. package/dist/diagram/styleInput.d.ts.map +1 -0
  203. package/dist/diagram/styleInput.js +105 -0
  204. package/dist/diagram/styleInput.js.map +1 -0
  205. package/dist/diagram/views.d.ts +22 -0
  206. package/dist/diagram/views.d.ts.map +1 -0
  207. package/dist/diagram/views.js +91 -0
  208. package/dist/diagram/views.js.map +1 -0
  209. package/dist/host/db/introspection/index.d.ts +9 -0
  210. package/dist/host/db/introspection/index.d.ts.map +1 -0
  211. package/dist/host/db/introspection/index.js +35 -0
  212. package/dist/host/db/introspection/index.js.map +1 -0
  213. package/dist/host/db/introspection/mongo.d.ts +7 -0
  214. package/dist/host/db/introspection/mongo.d.ts.map +1 -0
  215. package/dist/host/db/introspection/mongo.js +183 -0
  216. package/dist/host/db/introspection/mongo.js.map +1 -0
  217. package/dist/host/db/introspection/mssql.d.ts +6 -0
  218. package/dist/host/db/introspection/mssql.d.ts.map +1 -0
  219. package/dist/host/db/introspection/mssql.js +211 -0
  220. package/dist/host/db/introspection/mssql.js.map +1 -0
  221. package/dist/host/db/introspection/mysql.d.ts +5 -0
  222. package/dist/host/db/introspection/mysql.d.ts.map +1 -0
  223. package/dist/host/db/introspection/mysql.js +163 -0
  224. package/dist/host/db/introspection/mysql.js.map +1 -0
  225. package/dist/host/db/introspection/oracle.d.ts +12 -0
  226. package/dist/host/db/introspection/oracle.d.ts.map +1 -0
  227. package/dist/host/db/introspection/oracle.js +225 -0
  228. package/dist/host/db/introspection/oracle.js.map +1 -0
  229. package/dist/host/db/introspection/postgres.d.ts +5 -0
  230. package/dist/host/db/introspection/postgres.d.ts.map +1 -0
  231. package/dist/host/db/introspection/postgres.js +172 -0
  232. package/dist/host/db/introspection/postgres.js.map +1 -0
  233. package/dist/host/db/introspection/shared.d.ts +29 -0
  234. package/dist/host/db/introspection/shared.d.ts.map +1 -0
  235. package/dist/host/db/introspection/shared.js +119 -0
  236. package/dist/host/db/introspection/shared.js.map +1 -0
  237. package/dist/host/db/introspection/types.d.ts +58 -0
  238. package/dist/host/db/introspection/types.d.ts.map +1 -0
  239. package/dist/host/db/introspection/types.js +6 -0
  240. package/dist/host/db/introspection/types.js.map +1 -0
  241. package/dist/host/db/mongoAdapter.d.ts +1 -0
  242. package/dist/host/db/mongoAdapter.d.ts.map +1 -1
  243. package/dist/host/db/mongoAdapter.js +13 -0
  244. package/dist/host/db/mongoAdapter.js.map +1 -1
  245. package/dist/host/db/mssqlAdapter.d.ts +1 -0
  246. package/dist/host/db/mssqlAdapter.d.ts.map +1 -1
  247. package/dist/host/db/mssqlAdapter.js +3 -1
  248. package/dist/host/db/mssqlAdapter.js.map +1 -1
  249. package/dist/host/db/mysqlAdapter.d.ts +1 -0
  250. package/dist/host/db/mysqlAdapter.d.ts.map +1 -1
  251. package/dist/host/db/mysqlAdapter.js +11 -0
  252. package/dist/host/db/mysqlAdapter.js.map +1 -1
  253. package/dist/host/db/oracleAdapter.d.ts +1 -0
  254. package/dist/host/db/oracleAdapter.d.ts.map +1 -1
  255. package/dist/host/db/oracleAdapter.js +22 -0
  256. package/dist/host/db/oracleAdapter.js.map +1 -1
  257. package/dist/host/db/postgresAdapter.d.ts +1 -0
  258. package/dist/host/db/postgresAdapter.d.ts.map +1 -1
  259. package/dist/host/db/postgresAdapter.js +13 -0
  260. package/dist/host/db/postgresAdapter.js.map +1 -1
  261. package/dist/host/db/queryExecutor.d.ts +2 -1
  262. package/dist/host/db/queryExecutor.d.ts.map +1 -1
  263. package/dist/host/db/queryExecutor.js +1 -1
  264. package/dist/host/db/queryExecutor.js.map +1 -1
  265. package/dist/host/index.d.ts +7 -0
  266. package/dist/host/index.d.ts.map +1 -1
  267. package/dist/host/index.js +9 -0
  268. package/dist/host/index.js.map +1 -1
  269. package/dist-cjs/ai/index.js.map +1 -1
  270. package/dist-cjs/ai/outputSchemas.js +1 -0
  271. package/dist-cjs/ai/outputSchemas.js.map +1 -1
  272. package/dist-cjs/ai/parse/diagram.js +6 -3
  273. package/dist-cjs/ai/parse/diagram.js.map +1 -1
  274. package/dist-cjs/ai/prompts/diagram.js +61 -5
  275. package/dist-cjs/ai/prompts/diagram.js.map +1 -1
  276. package/dist-cjs/diagram/bpmn/derive.js +398 -0
  277. package/dist-cjs/diagram/bpmn/derive.js.map +1 -0
  278. package/dist-cjs/diagram/bpmn/index.js +31 -0
  279. package/dist-cjs/diagram/bpmn/index.js.map +1 -0
  280. package/dist-cjs/diagram/bpmn/patch.js +774 -0
  281. package/dist-cjs/diagram/bpmn/patch.js.map +1 -0
  282. package/dist-cjs/diagram/bpmn/place.js +69 -0
  283. package/dist-cjs/diagram/bpmn/place.js.map +1 -0
  284. package/dist-cjs/diagram/bpmn/serialize.js +299 -0
  285. package/dist-cjs/diagram/bpmn/serialize.js.map +1 -0
  286. package/dist-cjs/diagram/bpmn/types.js +99 -0
  287. package/dist-cjs/diagram/bpmn/types.js.map +1 -0
  288. package/dist-cjs/diagram/bpmn/xml.js +367 -0
  289. package/dist-cjs/diagram/bpmn/xml.js.map +1 -0
  290. package/dist-cjs/diagram/componentCatalog.js +5 -1
  291. package/dist-cjs/diagram/componentCatalog.js.map +1 -1
  292. package/dist-cjs/diagram/database/derive.js +119 -0
  293. package/dist-cjs/diagram/database/derive.js.map +1 -0
  294. package/dist-cjs/diagram/database/diff.js +115 -0
  295. package/dist-cjs/diagram/database/diff.js.map +1 -0
  296. package/dist-cjs/diagram/database/edit.js +366 -0
  297. package/dist-cjs/diagram/database/edit.js.map +1 -0
  298. package/dist-cjs/diagram/database/fromSchema.js +188 -0
  299. package/dist-cjs/diagram/database/fromSchema.js.map +1 -0
  300. package/dist-cjs/diagram/database/index.js +32 -0
  301. package/dist-cjs/diagram/database/index.js.map +1 -0
  302. package/dist-cjs/diagram/database/model.js +311 -0
  303. package/dist-cjs/diagram/database/model.js.map +1 -0
  304. package/dist-cjs/diagram/database/patch.js +190 -0
  305. package/dist-cjs/diagram/database/patch.js.map +1 -0
  306. package/dist-cjs/diagram/database/place.js +26 -0
  307. package/dist-cjs/diagram/database/place.js.map +1 -0
  308. package/dist-cjs/diagram/database/types.js +122 -0
  309. package/dist-cjs/diagram/database/types.js.map +1 -0
  310. package/dist-cjs/diagram/elkGraph.js +1 -0
  311. package/dist-cjs/diagram/elkGraph.js.map +1 -1
  312. package/dist-cjs/diagram/fixtures.js +117 -0
  313. package/dist-cjs/diagram/fixtures.js.map +1 -0
  314. package/dist-cjs/diagram/geometry.js +143 -0
  315. package/dist-cjs/diagram/geometry.js.map +1 -0
  316. package/dist-cjs/diagram/history.js +65 -0
  317. package/dist-cjs/diagram/history.js.map +1 -0
  318. package/dist-cjs/diagram/ids.js +58 -0
  319. package/dist-cjs/diagram/ids.js.map +1 -0
  320. package/dist-cjs/diagram/index.js +24 -8
  321. package/dist-cjs/diagram/index.js.map +1 -1
  322. package/dist-cjs/diagram/layout.js +365 -0
  323. package/dist-cjs/diagram/layout.js.map +1 -0
  324. package/dist-cjs/diagram/mermaid/derive.js +353 -0
  325. package/dist-cjs/diagram/mermaid/derive.js.map +1 -0
  326. package/dist-cjs/diagram/mermaid/index.js +44 -0
  327. package/dist-cjs/diagram/mermaid/index.js.map +1 -0
  328. package/dist-cjs/diagram/mermaid/parse.js +681 -0
  329. package/dist-cjs/diagram/mermaid/parse.js.map +1 -0
  330. package/dist-cjs/diagram/mermaid/patch.js +468 -0
  331. package/dist-cjs/diagram/mermaid/patch.js.map +1 -0
  332. package/dist-cjs/diagram/mermaid/serialize.js +133 -0
  333. package/dist-cjs/diagram/mermaid/serialize.js.map +1 -0
  334. package/dist-cjs/diagram/mermaid/shapes.js +327 -0
  335. package/dist-cjs/diagram/mermaid/shapes.js.map +1 -0
  336. package/dist-cjs/diagram/migrations.js +9 -3
  337. package/dist-cjs/diagram/migrations.js.map +1 -1
  338. package/dist-cjs/diagram/normalize.js +198 -1
  339. package/dist-cjs/diagram/normalize.js.map +1 -1
  340. package/dist-cjs/diagram/ops.js +871 -0
  341. package/dist-cjs/diagram/ops.js.map +1 -0
  342. package/dist-cjs/diagram/opsReference.js +64 -0
  343. package/dist-cjs/diagram/opsReference.js.map +1 -0
  344. package/dist-cjs/diagram/patchInput.js +1039 -0
  345. package/dist-cjs/diagram/patchInput.js.map +1 -0
  346. package/dist-cjs/diagram/routing/batch.js +142 -0
  347. package/dist-cjs/diagram/routing/batch.js.map +1 -0
  348. package/dist-cjs/diagram/routing/curves.js +127 -0
  349. package/dist-cjs/diagram/routing/curves.js.map +1 -0
  350. package/dist-cjs/diagram/routing/grid.js +250 -0
  351. package/dist-cjs/diagram/routing/grid.js.map +1 -0
  352. package/dist-cjs/diagram/routing/index.js +29 -0
  353. package/dist-cjs/diagram/routing/index.js.map +1 -0
  354. package/dist-cjs/diagram/routing/legacy.js +32 -0
  355. package/dist-cjs/diagram/routing/legacy.js.map +1 -0
  356. package/dist-cjs/diagram/routing/nudge.js +100 -0
  357. package/dist-cjs/diagram/routing/nudge.js.map +1 -0
  358. package/dist-cjs/diagram/routing/orthogonal.js +62 -0
  359. package/dist-cjs/diagram/routing/orthogonal.js.map +1 -0
  360. package/dist-cjs/diagram/routing/path.js +137 -0
  361. package/dist-cjs/diagram/routing/path.js.map +1 -0
  362. package/dist-cjs/diagram/routing/sides.js +82 -0
  363. package/dist-cjs/diagram/routing/sides.js.map +1 -0
  364. package/dist-cjs/diagram/routing/types.js +15 -0
  365. package/dist-cjs/diagram/routing/types.js.map +1 -0
  366. package/dist-cjs/diagram/schema.js +64 -9
  367. package/dist-cjs/diagram/schema.js.map +1 -1
  368. package/dist-cjs/diagram/styleInput.js +113 -0
  369. package/dist-cjs/diagram/styleInput.js.map +1 -0
  370. package/dist-cjs/diagram/views.js +96 -0
  371. package/dist-cjs/diagram/views.js.map +1 -0
  372. package/dist-cjs/host/db/introspection/index.js +59 -0
  373. package/dist-cjs/host/db/introspection/index.js.map +1 -0
  374. package/dist-cjs/host/db/introspection/mongo.js +189 -0
  375. package/dist-cjs/host/db/introspection/mongo.js.map +1 -0
  376. package/dist-cjs/host/db/introspection/mssql.js +216 -0
  377. package/dist-cjs/host/db/introspection/mssql.js.map +1 -0
  378. package/dist-cjs/host/db/introspection/mysql.js +167 -0
  379. package/dist-cjs/host/db/introspection/mysql.js.map +1 -0
  380. package/dist-cjs/host/db/introspection/oracle.js +230 -0
  381. package/dist-cjs/host/db/introspection/oracle.js.map +1 -0
  382. package/dist-cjs/host/db/introspection/postgres.js +176 -0
  383. package/dist-cjs/host/db/introspection/postgres.js.map +1 -0
  384. package/dist-cjs/host/db/introspection/shared.js +133 -0
  385. package/dist-cjs/host/db/introspection/shared.js.map +1 -0
  386. package/dist-cjs/host/db/introspection/types.js +7 -0
  387. package/dist-cjs/host/db/introspection/types.js.map +1 -0
  388. package/dist-cjs/host/db/mongoAdapter.js +15 -1
  389. package/dist-cjs/host/db/mongoAdapter.js.map +1 -1
  390. package/dist-cjs/host/db/mssqlAdapter.js +5 -2
  391. package/dist-cjs/host/db/mssqlAdapter.js.map +1 -1
  392. package/dist-cjs/host/db/mysqlAdapter.js +13 -1
  393. package/dist-cjs/host/db/mysqlAdapter.js.map +1 -1
  394. package/dist-cjs/host/db/oracleAdapter.js +24 -1
  395. package/dist-cjs/host/db/oracleAdapter.js.map +1 -1
  396. package/dist-cjs/host/db/postgresAdapter.js +15 -1
  397. package/dist-cjs/host/db/postgresAdapter.js.map +1 -1
  398. package/dist-cjs/host/db/queryExecutor.js +5 -4
  399. package/dist-cjs/host/db/queryExecutor.js.map +1 -1
  400. package/dist-cjs/host/index.js +24 -1
  401. package/dist-cjs/host/index.js.map +1 -1
  402. package/package.json +1 -1
@@ -0,0 +1,167 @@
1
+ "use strict";
2
+ // MySQL / MariaDB schema introspection over information_schema (one
3
+ // connection, five queries). A MySQL "schema" is a database; the connection's
4
+ // own database is read unless schemas are named.
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.introspectMysql = void 0;
7
+ const mysqlAdapter_js_1 = require("../mysqlAdapter.js");
8
+ const shared_js_1 = require("./shared.js");
9
+ const SYSTEM_SCHEMAS = ["mysql", "information_schema", "performance_schema", "sys"];
10
+ const SCHEMAS_SQL = `
11
+ SELECT SCHEMA_NAME AS sch FROM information_schema.SCHEMATA
12
+ WHERE SCHEMA_NAME NOT IN ('mysql', 'information_schema', 'performance_schema', 'sys')
13
+ ORDER BY 1`;
14
+ const TABLES_SQL = `
15
+ SELECT TABLE_SCHEMA AS sch, TABLE_NAME AS tbl, TABLE_TYPE AS kind, TABLE_COMMENT AS comment, TABLE_ROWS AS estimate
16
+ FROM information_schema.TABLES
17
+ WHERE TABLE_SCHEMA IN (?)
18
+ ORDER BY 1, 2`;
19
+ const COLUMNS_SQL = `
20
+ SELECT TABLE_SCHEMA AS sch, TABLE_NAME AS tbl, COLUMN_NAME AS col, ORDINAL_POSITION AS ordinal, COLUMN_TYPE AS data_type,
21
+ IS_NULLABLE AS nullable, COLUMN_DEFAULT AS default_value, EXTRA AS extra, COLUMN_COMMENT AS comment
22
+ FROM information_schema.COLUMNS
23
+ WHERE TABLE_SCHEMA IN (?)
24
+ ORDER BY 1, 2, 4`;
25
+ const CONSTRAINTS_SQL = `
26
+ SELECT tc.CONSTRAINT_NAME AS cname, tc.CONSTRAINT_TYPE AS ctype, tc.TABLE_SCHEMA AS sch, tc.TABLE_NAME AS tbl,
27
+ kcu.COLUMN_NAME AS col, kcu.ORDINAL_POSITION AS pos,
28
+ kcu.REFERENCED_TABLE_SCHEMA AS ref_sch, kcu.REFERENCED_TABLE_NAME AS ref_tbl, kcu.REFERENCED_COLUMN_NAME AS ref_col,
29
+ rc.DELETE_RULE AS on_delete, rc.UPDATE_RULE AS on_update
30
+ FROM information_schema.TABLE_CONSTRAINTS tc
31
+ JOIN information_schema.KEY_COLUMN_USAGE kcu
32
+ ON kcu.CONSTRAINT_SCHEMA = tc.CONSTRAINT_SCHEMA AND kcu.CONSTRAINT_NAME = tc.CONSTRAINT_NAME AND kcu.TABLE_NAME = tc.TABLE_NAME
33
+ LEFT JOIN information_schema.REFERENTIAL_CONSTRAINTS rc
34
+ ON rc.CONSTRAINT_SCHEMA = tc.CONSTRAINT_SCHEMA AND rc.CONSTRAINT_NAME = tc.CONSTRAINT_NAME AND rc.TABLE_NAME = tc.TABLE_NAME
35
+ WHERE tc.TABLE_SCHEMA IN (?) AND tc.CONSTRAINT_TYPE IN ('PRIMARY KEY', 'UNIQUE', 'FOREIGN KEY')
36
+ ORDER BY tc.TABLE_SCHEMA, tc.TABLE_NAME, tc.CONSTRAINT_NAME, kcu.ORDINAL_POSITION`;
37
+ const INDEXES_SQL = `
38
+ SELECT TABLE_SCHEMA AS sch, TABLE_NAME AS tbl, INDEX_NAME AS name, NON_UNIQUE AS non_unique, SEQ_IN_INDEX AS pos, COLUMN_NAME AS col
39
+ FROM information_schema.STATISTICS
40
+ WHERE TABLE_SCHEMA IN (?)
41
+ ORDER BY 1, 2, 3, 5`;
42
+ const introspectMysql = (connection, options) => (0, mysqlAdapter_js_1.withMysqlConnection)(connection, async (conn) => {
43
+ const query = async (sql, params = []) => {
44
+ const [rows] = await conn.query(sql, params);
45
+ return Array.isArray(rows) ? rows : [];
46
+ };
47
+ const warnings = [];
48
+ const schemas = (await query(SCHEMAS_SQL)).map((row) => String(row.sch));
49
+ const own = connection.database?.trim();
50
+ const wanted = options.schemas
51
+ ? options.schemas.filter((name) => schemas.includes(name) && !SYSTEM_SCHEMAS.includes(name))
52
+ : own && schemas.includes(own)
53
+ ? [own]
54
+ : schemas;
55
+ for (const name of options.schemas ?? [])
56
+ if (!schemas.includes(name))
57
+ warnings.push(`Database "${name}" is not visible to this connection.`);
58
+ const tableRows = wanted.length > 0 ? await query(TABLES_SQL, [wanted]) : [];
59
+ const candidates = tableRows.map((row) => ({
60
+ schema: String(row.sch),
61
+ name: String(row.tbl),
62
+ kind: /VIEW/i.test(String(row.kind)) ? "view" : "table",
63
+ comment: (0, shared_js_1.asString)(row.comment),
64
+ estimate: (0, shared_js_1.asNumber)(row.estimate),
65
+ }));
66
+ const { selected, truncated } = (0, shared_js_1.selectTables)(candidates, options);
67
+ const tables = new Map();
68
+ for (const candidate of selected) {
69
+ tables.set((0, shared_js_1.tableKey)(candidate.schema, candidate.name), (0, shared_js_1.emptyTable)(candidate, {
70
+ ...(candidate.comment ? { comment: candidate.comment } : {}),
71
+ ...(candidate.estimate !== undefined && candidate.kind === "table" ? { rowCountEstimate: candidate.estimate } : {}),
72
+ }));
73
+ }
74
+ if (!options.objectsOnly && tables.size > 0) {
75
+ const detailSchemas = [...new Set(selected.map((candidate) => candidate.schema))];
76
+ for (const row of await query(COLUMNS_SQL, [detailSchemas])) {
77
+ const table = tables.get((0, shared_js_1.tableKey)(String(row.sch), String(row.tbl)));
78
+ if (!table)
79
+ continue;
80
+ const defaultValue = (0, shared_js_1.asString)(row.default_value);
81
+ const extra = String(row.extra ?? "").toLowerCase();
82
+ table.columns.push({
83
+ name: String(row.col),
84
+ dataType: String(row.data_type),
85
+ ordinal: (0, shared_js_1.asNumber)(row.ordinal) ?? table.columns.length + 1,
86
+ nullable: /^yes$/i.test(String(row.nullable ?? "")),
87
+ primaryKey: false,
88
+ ...(defaultValue !== undefined ? { defaultValue } : {}),
89
+ ...(extra.includes("auto_increment") ? { autoIncrement: true } : {}),
90
+ ...((0, shared_js_1.asString)(row.comment) ? { comment: (0, shared_js_1.asString)(row.comment) } : {}),
91
+ });
92
+ }
93
+ const groups = new Map();
94
+ for (const row of await query(CONSTRAINTS_SQL, [detailSchemas])) {
95
+ const table = tables.get((0, shared_js_1.tableKey)(String(row.sch), String(row.tbl)));
96
+ if (!table)
97
+ continue;
98
+ const key = `${row.sch}.${row.tbl}.${row.cname}`;
99
+ let group = groups.get(key);
100
+ if (!group) {
101
+ group = {
102
+ type: String(row.ctype),
103
+ table,
104
+ columns: [],
105
+ refColumns: [],
106
+ ...((0, shared_js_1.asString)(row.ref_sch) ? { refSchema: String(row.ref_sch) } : {}),
107
+ ...((0, shared_js_1.asString)(row.ref_tbl) ? { refTable: String(row.ref_tbl) } : {}),
108
+ ...((0, shared_js_1.referentialAction)(row.on_delete) ? { onDelete: (0, shared_js_1.referentialAction)(row.on_delete) } : {}),
109
+ ...((0, shared_js_1.referentialAction)(row.on_update) ? { onUpdate: (0, shared_js_1.referentialAction)(row.on_update) } : {}),
110
+ };
111
+ groups.set(key, group);
112
+ }
113
+ group.columns.push(String(row.col));
114
+ if ((0, shared_js_1.asString)(row.ref_col))
115
+ group.refColumns.push(String(row.ref_col));
116
+ }
117
+ for (const [key, group] of groups) {
118
+ const name = key.split(".").slice(2).join(".");
119
+ if (group.type === "PRIMARY KEY")
120
+ group.table.primaryKey = group.columns;
121
+ else if (group.type === "UNIQUE")
122
+ group.table.indexes.push({ name, columns: group.columns, unique: true });
123
+ else if (group.type === "FOREIGN KEY" && group.refTable) {
124
+ group.table.foreignKeys.push({
125
+ name,
126
+ columns: group.columns,
127
+ ...(group.refSchema ? { refSchema: group.refSchema } : {}),
128
+ refTable: group.refTable,
129
+ refColumns: group.refColumns,
130
+ ...(group.onDelete ? { onDelete: group.onDelete } : {}),
131
+ ...(group.onUpdate ? { onUpdate: group.onUpdate } : {}),
132
+ });
133
+ }
134
+ }
135
+ const indexGroups = new Map();
136
+ for (const row of await query(INDEXES_SQL, [detailSchemas])) {
137
+ const table = tables.get((0, shared_js_1.tableKey)(String(row.sch), String(row.tbl)));
138
+ if (!table)
139
+ continue;
140
+ const key = `${row.sch}.${row.tbl}.${row.name}`;
141
+ let group = indexGroups.get(key);
142
+ if (!group) {
143
+ group = { table, name: String(row.name), unique: !Number(row.non_unique), columns: [] };
144
+ indexGroups.set(key, group);
145
+ }
146
+ group.columns.push(String(row.col));
147
+ }
148
+ for (const group of indexGroups.values()) {
149
+ if (group.table.indexes.some((index) => index.name === group.name))
150
+ continue;
151
+ group.table.indexes.push({ name: group.name, columns: group.columns, unique: group.unique, ...(group.name === "PRIMARY" ? { primary: true } : {}) });
152
+ }
153
+ for (const table of tables.values())
154
+ (0, shared_js_1.finishTable)(table);
155
+ }
156
+ return {
157
+ dialect: "mysql",
158
+ ...(own ? { database: own } : {}),
159
+ schemas,
160
+ tables: [...tables.values()],
161
+ capturedAt: new Date().toISOString(),
162
+ warnings,
163
+ ...(truncated ? { truncated: true } : {}),
164
+ };
165
+ });
166
+ exports.introspectMysql = introspectMysql;
167
+ //# sourceMappingURL=mysql.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mysql.js","sourceRoot":"","sources":["../../../../src/host/db/introspection/mysql.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,230 @@
1
+ "use strict";
2
+ // Oracle schema introspection over the ALL_* data dictionary views (one
3
+ // connection, a handful of queries per schema/owner). The current schema is
4
+ // read unless owners are named; Oracle-maintained accounts are never listed.
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.introspectOracle = exports.formatOracleType = void 0;
7
+ const oracleAdapter_js_1 = require("../oracleAdapter.js");
8
+ const shared_js_1 = require("./shared.js");
9
+ const CURRENT_SCHEMA_SQL = "SELECT SYS_CONTEXT('USERENV', 'CURRENT_SCHEMA') AS SCH FROM DUAL";
10
+ const DB_NAME_SQL = "SELECT SYS_CONTEXT('USERENV', 'DB_NAME') AS DB FROM DUAL";
11
+ const SCHEMAS_SQL = "SELECT USERNAME AS SCH FROM ALL_USERS WHERE ORACLE_MAINTAINED = 'N' ORDER BY 1";
12
+ const SCHEMAS_FALLBACK_SQL = `
13
+ SELECT USERNAME AS SCH FROM ALL_USERS
14
+ WHERE USERNAME NOT IN ('SYS', 'SYSTEM', 'OUTLN', 'XDB', 'CTXSYS', 'MDSYS', 'ORDSYS', 'ORDDATA', 'WMSYS', 'DBSNMP', 'APPQOSSYS', 'AUDSYS',
15
+ 'GSMADMIN_INTERNAL', 'DVSYS', 'LBACSYS', 'OJVMSYS', 'OLAPSYS', 'ORACLE_OCM', 'REMOTE_SCHEDULER_AGENT', 'SYSBACKUP', 'SYSDG', 'SYSKM', 'SYSRAC',
16
+ 'SYS$UMF', 'DBSFWUSER', 'GGSYS', 'ANONYMOUS', 'XS$NULL', 'DIP', 'APEX_PUBLIC_USER', 'FLOWS_FILES', 'MDDATA', 'SI_INFORMTN_SCHEMA', 'ORDPLUGINS',
17
+ 'SPATIAL_CSW_ADMIN_USR', 'WKSYS', 'WKPROXY', 'WK_TEST', 'EXFSYS', 'DMSYS', 'TSMSYS', 'OWBSYS', 'OWBSYS_AUDIT', 'SCOTT', 'HR', 'OE', 'PM', 'IX', 'SH', 'BI')
18
+ ORDER BY 1`;
19
+ const TABLES_SQL = `
20
+ SELECT t.OWNER AS SCH, t.TABLE_NAME AS TBL, 'table' AS KIND, c.COMMENTS AS TABLE_COMMENT, t.NUM_ROWS AS ESTIMATE
21
+ FROM ALL_TABLES t
22
+ LEFT JOIN ALL_TAB_COMMENTS c ON c.OWNER = t.OWNER AND c.TABLE_NAME = t.TABLE_NAME
23
+ WHERE t.OWNER = :owner AND t.TABLE_NAME NOT LIKE 'BIN$%'
24
+ UNION ALL
25
+ SELECT v.OWNER, v.VIEW_NAME, 'view', c.COMMENTS, NULL
26
+ FROM ALL_VIEWS v
27
+ LEFT JOIN ALL_TAB_COMMENTS c ON c.OWNER = v.OWNER AND c.TABLE_NAME = v.VIEW_NAME
28
+ WHERE v.OWNER = :owner
29
+ ORDER BY 1, 2`;
30
+ const COLUMNS_SQL = `
31
+ SELECT c.TABLE_NAME AS TBL, c.COLUMN_NAME AS COL, c.COLUMN_ID AS ORDINAL, c.DATA_TYPE, c.DATA_LENGTH, c.CHAR_LENGTH,
32
+ c.DATA_PRECISION, c.DATA_SCALE, c.NULLABLE, c.DATA_DEFAULT, cc.COMMENTS AS COL_COMMENT
33
+ FROM ALL_TAB_COLUMNS c
34
+ LEFT JOIN ALL_COL_COMMENTS cc ON cc.OWNER = c.OWNER AND cc.TABLE_NAME = c.TABLE_NAME AND cc.COLUMN_NAME = c.COLUMN_NAME
35
+ WHERE c.OWNER = :owner
36
+ ORDER BY 1, 3`;
37
+ const CONSTRAINTS_SQL = `
38
+ SELECT c.TABLE_NAME AS TBL, c.CONSTRAINT_NAME AS CNAME, c.CONSTRAINT_TYPE AS CTYPE, cc.COLUMN_NAME AS COL, cc.POSITION AS POS,
39
+ c.R_OWNER AS REF_OWNER, c.R_CONSTRAINT_NAME AS REF_CNAME, c.DELETE_RULE AS ON_DELETE
40
+ FROM ALL_CONSTRAINTS c
41
+ JOIN ALL_CONS_COLUMNS cc ON cc.OWNER = c.OWNER AND cc.CONSTRAINT_NAME = c.CONSTRAINT_NAME AND cc.TABLE_NAME = c.TABLE_NAME
42
+ WHERE c.OWNER = :owner AND c.CONSTRAINT_TYPE IN ('P', 'U', 'R')
43
+ ORDER BY 1, 2, 5`;
44
+ const KEY_COLUMNS_SQL = `
45
+ SELECT cc.CONSTRAINT_NAME AS CNAME, cc.TABLE_NAME AS TBL, cc.COLUMN_NAME AS COL, cc.POSITION AS POS
46
+ FROM ALL_CONS_COLUMNS cc
47
+ JOIN ALL_CONSTRAINTS c ON c.OWNER = cc.OWNER AND c.CONSTRAINT_NAME = cc.CONSTRAINT_NAME
48
+ WHERE cc.OWNER = :owner AND c.CONSTRAINT_TYPE IN ('P', 'U')
49
+ ORDER BY 1, 4`;
50
+ const INDEXES_SQL = `
51
+ SELECT i.TABLE_NAME AS TBL, i.INDEX_NAME AS NAME, i.UNIQUENESS AS UNIQ, ic.COLUMN_NAME AS COL, ic.COLUMN_POSITION AS POS
52
+ FROM ALL_INDEXES i
53
+ JOIN ALL_IND_COLUMNS ic ON ic.INDEX_OWNER = i.OWNER AND ic.INDEX_NAME = i.INDEX_NAME
54
+ WHERE i.TABLE_OWNER = :owner
55
+ ORDER BY 1, 2, 5`;
56
+ // The type the way SQL Developer prints it: VARCHAR2(120), NUMBER(10,2), DATE.
57
+ const formatOracleType = (row) => {
58
+ const type = String(row.DATA_TYPE ?? "").toUpperCase();
59
+ const charLength = (0, shared_js_1.asNumber)(row.CHAR_LENGTH);
60
+ const dataLength = (0, shared_js_1.asNumber)(row.DATA_LENGTH);
61
+ const precision = (0, shared_js_1.asNumber)(row.DATA_PRECISION);
62
+ const scale = (0, shared_js_1.asNumber)(row.DATA_SCALE);
63
+ if (["VARCHAR2", "NVARCHAR2", "CHAR", "NCHAR"].includes(type))
64
+ return `${type}(${charLength && charLength > 0 ? charLength : dataLength ?? ""})`.replace("()", "");
65
+ if (type === "RAW")
66
+ return dataLength !== undefined ? `RAW(${dataLength})` : type;
67
+ if (type === "NUMBER") {
68
+ if (precision !== undefined)
69
+ return scale ? `NUMBER(${precision},${scale})` : `NUMBER(${precision})`;
70
+ return "NUMBER";
71
+ }
72
+ if (type === "FLOAT")
73
+ return precision !== undefined ? `FLOAT(${precision})` : type;
74
+ return type;
75
+ };
76
+ exports.formatOracleType = formatOracleType;
77
+ const introspectOracle = (connection, options) => (0, oracleAdapter_js_1.withOracleConnection)(connection, async (client, oracledb) => {
78
+ const query = async (sql, binds = {}) => {
79
+ const result = await client.execute(sql, binds, { outFormat: oracledb.OUT_FORMAT_OBJECT });
80
+ return Array.isArray(result?.rows) ? result.rows : [];
81
+ };
82
+ const warnings = [];
83
+ const current = String((await query(CURRENT_SCHEMA_SQL))[0]?.SCH ?? connection.username).toUpperCase();
84
+ let database;
85
+ try {
86
+ database = (0, shared_js_1.asString)((await query(DB_NAME_SQL))[0]?.DB);
87
+ }
88
+ catch {
89
+ database = connection.serviceName?.trim() || connection.database?.trim() || undefined;
90
+ }
91
+ let schemas;
92
+ try {
93
+ schemas = (await query(SCHEMAS_SQL)).map((row) => String(row.SCH));
94
+ }
95
+ catch {
96
+ // ORACLE_MAINTAINED arrived in 12c; older servers get the static list.
97
+ schemas = (await query(SCHEMAS_FALLBACK_SQL)).map((row) => String(row.SCH));
98
+ }
99
+ if (!schemas.includes(current))
100
+ schemas.unshift(current);
101
+ const wanted = options.schemas ? options.schemas.map((name) => name.toUpperCase()) : [current];
102
+ const candidates = [];
103
+ for (const owner of wanted) {
104
+ for (const row of await query(TABLES_SQL, { owner })) {
105
+ candidates.push({
106
+ schema: String(row.SCH),
107
+ name: String(row.TBL),
108
+ kind: String(row.KIND) === "view" ? "view" : "table",
109
+ ...((0, shared_js_1.asString)(row.TABLE_COMMENT) ? { comment: String(row.TABLE_COMMENT) } : {}),
110
+ ...((0, shared_js_1.asNumber)(row.ESTIMATE) !== undefined ? { estimate: (0, shared_js_1.asNumber)(row.ESTIMATE) } : {}),
111
+ });
112
+ }
113
+ }
114
+ const { selected, truncated } = (0, shared_js_1.selectTables)(candidates, options);
115
+ const tables = new Map();
116
+ for (const candidate of selected) {
117
+ tables.set((0, shared_js_1.tableKey)(candidate.schema, candidate.name), (0, shared_js_1.emptyTable)(candidate, {
118
+ ...(candidate.comment ? { comment: candidate.comment } : {}),
119
+ ...(candidate.estimate !== undefined ? { rowCountEstimate: candidate.estimate } : {}),
120
+ }));
121
+ }
122
+ if (!options.objectsOnly && tables.size > 0) {
123
+ const detailOwners = [...new Set(selected.map((candidate) => candidate.schema))];
124
+ // Referenced key constraints, by owner + constraint name, for the FK ends.
125
+ const keyColumns = new Map();
126
+ const loadKeyColumns = async (owner) => {
127
+ for (const row of await query(KEY_COLUMNS_SQL, { owner })) {
128
+ const key = `${owner}.${row.CNAME}`;
129
+ const entry = keyColumns.get(key) ?? { table: String(row.TBL), columns: [] };
130
+ entry.columns.push(String(row.COL));
131
+ keyColumns.set(key, entry);
132
+ }
133
+ };
134
+ for (const owner of detailOwners) {
135
+ for (const row of await query(COLUMNS_SQL, { owner })) {
136
+ const table = tables.get((0, shared_js_1.tableKey)(owner, String(row.TBL)));
137
+ if (!table)
138
+ continue;
139
+ const defaultValue = (0, shared_js_1.asString)(row.DATA_DEFAULT)?.trim();
140
+ table.columns.push({
141
+ name: String(row.COL),
142
+ dataType: (0, exports.formatOracleType)(row),
143
+ ordinal: (0, shared_js_1.asNumber)(row.ORDINAL) ?? table.columns.length + 1,
144
+ nullable: String(row.NULLABLE ?? "Y").toUpperCase() === "Y",
145
+ primaryKey: false,
146
+ ...(defaultValue ? { defaultValue } : {}),
147
+ ...(defaultValue && /\.NEXTVAL$/i.test(defaultValue) ? { autoIncrement: true } : {}),
148
+ ...((0, shared_js_1.asString)(row.COL_COMMENT) ? { comment: String(row.COL_COMMENT) } : {}),
149
+ });
150
+ }
151
+ await loadKeyColumns(owner);
152
+ const groups = new Map();
153
+ for (const row of await query(CONSTRAINTS_SQL, { owner })) {
154
+ const table = tables.get((0, shared_js_1.tableKey)(owner, String(row.TBL)));
155
+ if (!table)
156
+ continue;
157
+ const key = `${row.TBL}.${row.CNAME}`;
158
+ let group = groups.get(key);
159
+ if (!group) {
160
+ group = {
161
+ table,
162
+ name: String(row.CNAME),
163
+ type: String(row.CTYPE),
164
+ columns: [],
165
+ ...((0, shared_js_1.asString)(row.REF_OWNER) ? { refOwner: String(row.REF_OWNER) } : {}),
166
+ ...((0, shared_js_1.asString)(row.REF_CNAME) ? { refName: String(row.REF_CNAME) } : {}),
167
+ ...((0, shared_js_1.referentialAction)(row.ON_DELETE) ? { onDelete: (0, shared_js_1.referentialAction)(row.ON_DELETE) } : {}),
168
+ };
169
+ groups.set(key, group);
170
+ }
171
+ group.columns.push(String(row.COL));
172
+ }
173
+ for (const group of groups.values()) {
174
+ if (group.type === "P")
175
+ group.table.primaryKey = group.columns;
176
+ else if (group.type === "U")
177
+ group.table.indexes.push({ name: group.name, columns: group.columns, unique: true });
178
+ else if (group.type === "R" && group.refOwner && group.refName) {
179
+ if (!detailOwners.includes(group.refOwner) && ![...keyColumns.keys()].some((key) => key.startsWith(`${group.refOwner}.`)))
180
+ await loadKeyColumns(group.refOwner);
181
+ const referenced = keyColumns.get(`${group.refOwner}.${group.refName}`);
182
+ if (!referenced) {
183
+ warnings.push(`Foreign key ${group.name} on ${owner}.${group.table.name} references a key this connection cannot read.`);
184
+ continue;
185
+ }
186
+ group.table.foreignKeys.push({
187
+ name: group.name,
188
+ columns: group.columns,
189
+ refSchema: group.refOwner,
190
+ refTable: referenced.table,
191
+ refColumns: referenced.columns,
192
+ ...(group.onDelete ? { onDelete: group.onDelete } : {}),
193
+ });
194
+ }
195
+ }
196
+ const indexGroups = new Map();
197
+ for (const row of await query(INDEXES_SQL, { owner })) {
198
+ const table = tables.get((0, shared_js_1.tableKey)(owner, String(row.TBL)));
199
+ if (!table)
200
+ continue;
201
+ const key = `${row.TBL}.${row.NAME}`;
202
+ let group = indexGroups.get(key);
203
+ if (!group) {
204
+ group = { table, name: String(row.NAME), unique: String(row.UNIQ ?? "").toUpperCase() === "UNIQUE", columns: [] };
205
+ indexGroups.set(key, group);
206
+ }
207
+ group.columns.push(String(row.COL));
208
+ }
209
+ for (const group of indexGroups.values()) {
210
+ if (group.table.indexes.some((index) => index.name === group.name))
211
+ continue;
212
+ const primary = group.unique && group.table.primaryKey.length > 0 && group.columns.join(",") === group.table.primaryKey.join(",");
213
+ group.table.indexes.push({ name: group.name, columns: group.columns, unique: group.unique, ...(primary ? { primary: true } : {}) });
214
+ }
215
+ }
216
+ for (const table of tables.values())
217
+ (0, shared_js_1.finishTable)(table);
218
+ }
219
+ return {
220
+ dialect: "oracle",
221
+ ...(database ? { database } : {}),
222
+ schemas,
223
+ tables: [...tables.values()],
224
+ capturedAt: new Date().toISOString(),
225
+ warnings,
226
+ ...(truncated ? { truncated: true } : {}),
227
+ };
228
+ });
229
+ exports.introspectOracle = introspectOracle;
230
+ //# sourceMappingURL=oracle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oracle.js","sourceRoot":"","sources":["../../../../src/host/db/introspection/oracle.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,176 @@
1
+ "use strict";
2
+ // PostgreSQL schema introspection over pg_catalog (one client, five catalog
3
+ // queries). information_schema is avoided on purpose: it hides objects the
4
+ // role does not own and formats types less faithfully than format_type().
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.introspectPostgres = void 0;
7
+ const postgresAdapter_js_1 = require("../postgresAdapter.js");
8
+ const shared_js_1 = require("./shared.js");
9
+ const SCHEMAS_SQL = `
10
+ SELECT n.nspname AS sch
11
+ FROM pg_namespace n
12
+ WHERE n.nspname NOT IN ('pg_catalog', 'information_schema', 'pg_toast')
13
+ AND n.nspname NOT LIKE 'pg\\_temp\\_%'
14
+ AND n.nspname NOT LIKE 'pg\\_toast\\_temp\\_%'
15
+ ORDER BY 1`;
16
+ const TABLES_SQL = `
17
+ SELECT n.nspname AS sch, c.relname AS tbl, c.relkind::text AS kind,
18
+ obj_description(c.oid, 'pg_class') AS comment,
19
+ GREATEST(c.reltuples, 0)::bigint AS estimate
20
+ FROM pg_class c
21
+ JOIN pg_namespace n ON n.oid = c.relnamespace
22
+ WHERE n.nspname = ANY($1::text[]) AND c.relkind::text = ANY($2::text[])
23
+ ORDER BY 1, 2`;
24
+ const COLUMNS_SQL = `
25
+ SELECT n.nspname AS sch, c.relname AS tbl, a.attname AS col, a.attnum AS ordinal,
26
+ format_type(a.atttypid, a.atttypmod) AS data_type,
27
+ NOT a.attnotnull AS nullable,
28
+ pg_get_expr(d.adbin, d.adrelid) AS default_value,
29
+ col_description(c.oid, a.attnum) AS comment,
30
+ (a.attidentity <> '') AS identity
31
+ FROM pg_attribute a
32
+ JOIN pg_class c ON c.oid = a.attrelid
33
+ JOIN pg_namespace n ON n.oid = c.relnamespace
34
+ LEFT JOIN pg_attrdef d ON d.adrelid = a.attrelid AND d.adnum = a.attnum
35
+ WHERE a.attnum > 0 AND NOT a.attisdropped
36
+ AND n.nspname = ANY($1::text[]) AND c.relkind::text = ANY($2::text[])
37
+ ORDER BY 1, 2, 4`;
38
+ const CONSTRAINTS_SQL = `
39
+ SELECT con.conname AS cname, con.contype::text AS ctype, n.nspname AS sch, c.relname AS tbl,
40
+ (SELECT array_agg(a.attname ORDER BY k.ord)
41
+ FROM unnest(con.conkey) WITH ORDINALITY AS k(attnum, ord)
42
+ JOIN pg_attribute a ON a.attrelid = con.conrelid AND a.attnum = k.attnum) AS cols,
43
+ fn.nspname AS ref_sch, fc.relname AS ref_tbl,
44
+ (SELECT array_agg(a.attname ORDER BY k.ord)
45
+ FROM unnest(con.confkey) WITH ORDINALITY AS k(attnum, ord)
46
+ JOIN pg_attribute a ON a.attrelid = con.confrelid AND a.attnum = k.attnum) AS ref_cols,
47
+ con.confdeltype::text AS on_delete, con.confupdtype::text AS on_update
48
+ FROM pg_constraint con
49
+ JOIN pg_class c ON c.oid = con.conrelid
50
+ JOIN pg_namespace n ON n.oid = c.relnamespace
51
+ LEFT JOIN pg_class fc ON fc.oid = con.confrelid
52
+ LEFT JOIN pg_namespace fn ON fn.oid = fc.relnamespace
53
+ WHERE con.contype IN ('p', 'u', 'f') AND n.nspname = ANY($1::text[])
54
+ ORDER BY 3, 4, 1`;
55
+ const INDEXES_SQL = `
56
+ SELECT n.nspname AS sch, t.relname AS tbl, i.relname AS name,
57
+ ix.indisunique AS is_unique, ix.indisprimary AS is_primary,
58
+ (SELECT array_agg(a.attname ORDER BY k.ord)
59
+ FROM unnest(ix.indkey::int2[]) WITH ORDINALITY AS k(attnum, ord)
60
+ JOIN pg_attribute a ON a.attrelid = ix.indrelid AND a.attnum = k.attnum
61
+ WHERE k.attnum > 0) AS cols
62
+ FROM pg_index ix
63
+ JOIN pg_class t ON t.oid = ix.indrelid
64
+ JOIN pg_class i ON i.oid = ix.indexrelid
65
+ JOIN pg_namespace n ON n.oid = t.relnamespace
66
+ WHERE n.nspname = ANY($1::text[])
67
+ ORDER BY 1, 2, 3`;
68
+ const asList = (value) => {
69
+ if (Array.isArray(value))
70
+ return value.map(String);
71
+ if (typeof value === "string") {
72
+ // pg returns text[] as arrays, but a driver without type parsing may hand
73
+ // back the "{a,b}" literal.
74
+ const inner = value.replace(/^\{|\}$/g, "");
75
+ return inner ? inner.split(",").map((item) => item.replace(/^"|"$/g, "")) : [];
76
+ }
77
+ return [];
78
+ };
79
+ const kindOf = (relkind) => (relkind === "v" || relkind === "m" ? "view" : "table");
80
+ const introspectPostgres = (connection, options) => (0, postgresAdapter_js_1.withPostgresClient)(connection, async (client) => {
81
+ const query = async (sql, params = []) => {
82
+ const result = await client.query(sql, params);
83
+ return Array.isArray(result?.rows) ? result.rows : [];
84
+ };
85
+ const warnings = [];
86
+ const databaseRow = (await query("SELECT current_database() AS db"))[0];
87
+ const schemas = (await query(SCHEMAS_SQL)).map((row) => String(row.sch));
88
+ const wanted = options.schemas ? options.schemas.filter((name) => schemas.includes(name)) : schemas;
89
+ for (const name of options.schemas ?? [])
90
+ if (!schemas.includes(name))
91
+ warnings.push(`Schema "${name}" is not visible to this connection.`);
92
+ const kinds = options.includeViews ? ["r", "p", "f", "v", "m"] : ["r", "p", "f"];
93
+ const tableRows = wanted.length > 0 ? await query(TABLES_SQL, [wanted, kinds]) : [];
94
+ const candidates = tableRows.map((row) => ({
95
+ schema: String(row.sch),
96
+ name: String(row.tbl),
97
+ kind: kindOf(String(row.kind)),
98
+ comment: (0, shared_js_1.asString)(row.comment),
99
+ estimate: (0, shared_js_1.asNumber)(row.estimate),
100
+ }));
101
+ const { selected, truncated } = (0, shared_js_1.selectTables)(candidates, options);
102
+ const tables = new Map();
103
+ for (const candidate of selected) {
104
+ tables.set((0, shared_js_1.tableKey)(candidate.schema, candidate.name), (0, shared_js_1.emptyTable)(candidate, {
105
+ ...(candidate.comment ? { comment: candidate.comment } : {}),
106
+ ...(candidate.estimate !== undefined ? { rowCountEstimate: candidate.estimate } : {}),
107
+ }));
108
+ }
109
+ if (!options.objectsOnly && tables.size > 0) {
110
+ const detailSchemas = [...new Set(selected.map((candidate) => candidate.schema))];
111
+ for (const row of await query(COLUMNS_SQL, [detailSchemas, kinds])) {
112
+ const table = tables.get((0, shared_js_1.tableKey)(String(row.sch), String(row.tbl)));
113
+ if (!table)
114
+ continue;
115
+ const defaultValue = (0, shared_js_1.asString)(row.default_value);
116
+ table.columns.push({
117
+ name: String(row.col),
118
+ dataType: String(row.data_type),
119
+ ordinal: (0, shared_js_1.asNumber)(row.ordinal) ?? table.columns.length + 1,
120
+ nullable: (0, shared_js_1.asBoolean)(row.nullable),
121
+ primaryKey: false,
122
+ ...(defaultValue !== undefined ? { defaultValue } : {}),
123
+ ...((0, shared_js_1.asBoolean)(row.identity) || /^nextval\(/i.test(defaultValue ?? "") ? { autoIncrement: true } : {}),
124
+ ...((0, shared_js_1.asString)(row.comment) ? { comment: (0, shared_js_1.asString)(row.comment) } : {}),
125
+ });
126
+ }
127
+ for (const row of await query(CONSTRAINTS_SQL, [detailSchemas])) {
128
+ const table = tables.get((0, shared_js_1.tableKey)(String(row.sch), String(row.tbl)));
129
+ if (!table)
130
+ continue;
131
+ const columns = asList(row.cols);
132
+ const type = String(row.ctype);
133
+ if (type === "p")
134
+ table.primaryKey = columns;
135
+ else if (type === "u") {
136
+ table.indexes.push({ name: String(row.cname), columns, unique: true });
137
+ }
138
+ else if (type === "f") {
139
+ table.foreignKeys.push({
140
+ name: String(row.cname),
141
+ columns,
142
+ ...((0, shared_js_1.asString)(row.ref_sch) ? { refSchema: String(row.ref_sch) } : {}),
143
+ refTable: String(row.ref_tbl ?? ""),
144
+ refColumns: asList(row.ref_cols),
145
+ ...((0, shared_js_1.referentialAction)(row.on_delete) ? { onDelete: (0, shared_js_1.referentialAction)(row.on_delete) } : {}),
146
+ ...((0, shared_js_1.referentialAction)(row.on_update) ? { onUpdate: (0, shared_js_1.referentialAction)(row.on_update) } : {}),
147
+ });
148
+ }
149
+ }
150
+ for (const row of await query(INDEXES_SQL, [detailSchemas])) {
151
+ const table = tables.get((0, shared_js_1.tableKey)(String(row.sch), String(row.tbl)));
152
+ if (!table)
153
+ continue;
154
+ const name = String(row.name);
155
+ if (table.indexes.some((index) => index.name === name))
156
+ continue; // the unique constraint already listed it
157
+ const columns = asList(row.cols);
158
+ if (columns.length === 0)
159
+ continue; // expression index
160
+ table.indexes.push({ name, columns, unique: (0, shared_js_1.asBoolean)(row.is_unique), ...((0, shared_js_1.asBoolean)(row.is_primary) ? { primary: true } : {}) });
161
+ }
162
+ for (const table of tables.values())
163
+ (0, shared_js_1.finishTable)(table);
164
+ }
165
+ return {
166
+ dialect: "postgres",
167
+ ...((0, shared_js_1.asString)(databaseRow?.db) ? { database: String(databaseRow.db) } : {}),
168
+ schemas,
169
+ tables: [...tables.values()],
170
+ capturedAt: new Date().toISOString(),
171
+ warnings,
172
+ ...(truncated ? { truncated: true } : {}),
173
+ };
174
+ });
175
+ exports.introspectPostgres = introspectPostgres;
176
+ //# sourceMappingURL=postgres.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postgres.js","sourceRoot":"","sources":["../../../../src/host/db/introspection/postgres.ts"],"names":[],"mappings":"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"}