sqlew 3.7.3 → 3.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (786) hide show
  1. package/CHANGELOG.md +427 -1
  2. package/README.md +71 -2
  3. package/assets/kanban-visualizer.png +0 -0
  4. package/assets/sample-agents/sqlew-scrum-master.md +4 -4
  5. package/dist/adapters/postgresql-adapter.d.ts +197 -5
  6. package/dist/adapters/postgresql-adapter.d.ts.map +1 -1
  7. package/dist/adapters/postgresql-adapter.js +300 -36
  8. package/dist/adapters/postgresql-adapter.js.map +1 -1
  9. package/dist/cli/db-export.d.ts +29 -0
  10. package/dist/cli/db-export.d.ts.map +1 -0
  11. package/dist/cli/db-export.js +251 -0
  12. package/dist/cli/db-export.js.map +1 -0
  13. package/dist/cli/db-import.d.ts +31 -0
  14. package/dist/cli/db-import.d.ts.map +1 -0
  15. package/dist/cli/db-import.js +258 -0
  16. package/dist/cli/db-import.js.map +1 -0
  17. package/dist/cli.d.ts +1 -1
  18. package/dist/cli.js +32 -73
  19. package/dist/cli.js.map +1 -1
  20. package/dist/config/knex/bootstrap/20251025021416_seed_master_data.d.ts.map +1 -1
  21. package/dist/config/knex/bootstrap/20251025021416_seed_master_data.js +158 -45
  22. package/dist/config/knex/bootstrap/20251025021416_seed_master_data.js.map +1 -1
  23. package/dist/config/knex/bootstrap/20251025070349_create_views.d.ts.map +1 -1
  24. package/dist/config/knex/bootstrap/20251025070349_create_views.js +60 -8
  25. package/dist/config/knex/bootstrap/20251025070349_create_views.js.map +1 -1
  26. package/dist/config/knex/enhancements/20251025100000_seed_help_metadata.js +1 -1
  27. package/dist/config/knex/enhancements/20251025100100_seed_remaining_use_cases.js +5 -5
  28. package/dist/config/knex/enhancements/20251028000000_simplify_agent_system.d.ts.map +1 -1
  29. package/dist/config/knex/enhancements/20251028000000_simplify_agent_system.js +9 -1
  30. package/dist/config/knex/enhancements/20251028000000_simplify_agent_system.js.map +1 -1
  31. package/dist/config/knex/enhancements/20251105000000_add_token_usage_table.d.ts.map +1 -1
  32. package/dist/config/knex/enhancements/20251105000000_add_token_usage_table.js +8 -1
  33. package/dist/config/knex/enhancements/20251105000000_add_token_usage_table.js.map +1 -1
  34. package/dist/config/knex/enhancements/20251108000000_add_planning_layers_v3_8_0.d.ts +21 -0
  35. package/dist/config/knex/enhancements/20251108000000_add_planning_layers_v3_8_0.d.ts.map +1 -0
  36. package/dist/config/knex/enhancements/20251108000000_add_planning_layers_v3_8_0.js +73 -0
  37. package/dist/config/knex/enhancements/20251108000000_add_planning_layers_v3_8_0.js.map +1 -0
  38. package/dist/config/knex/enhancements/20251109000000_fix_task_file_links_unique_constraint_v3_8_0.d.ts +19 -0
  39. package/dist/config/knex/enhancements/20251109000000_fix_task_file_links_unique_constraint_v3_8_0.d.ts.map +1 -0
  40. package/dist/config/knex/enhancements/20251109000000_fix_task_file_links_unique_constraint_v3_8_0.js +88 -0
  41. package/dist/config/knex/enhancements/20251109000000_fix_task_file_links_unique_constraint_v3_8_0.js.map +1 -0
  42. package/dist/config/knex/enhancements/20251109000003_token_usage_cross_db_compat_v3_7_5.d.ts +24 -0
  43. package/dist/config/knex/enhancements/20251109000003_token_usage_cross_db_compat_v3_7_5.d.ts.map +1 -0
  44. package/dist/config/knex/enhancements/20251109000003_token_usage_cross_db_compat_v3_7_5.js +79 -0
  45. package/dist/config/knex/enhancements/20251109000003_token_usage_cross_db_compat_v3_7_5.js.map +1 -0
  46. package/dist/config/knex/enhancements/20251109010000_tool_cleanup_v3_8_0.d.ts +27 -0
  47. package/dist/config/knex/enhancements/20251109010000_tool_cleanup_v3_8_0.d.ts.map +1 -0
  48. package/dist/config/knex/enhancements/20251109010000_tool_cleanup_v3_8_0.js +347 -0
  49. package/dist/config/knex/enhancements/20251109010000_tool_cleanup_v3_8_0.js.map +1 -0
  50. package/dist/config/knex/enhancements/20251109020000_fix_missing_help_actions_v3_8_0.d.ts +30 -0
  51. package/dist/config/knex/enhancements/20251109020000_fix_missing_help_actions_v3_8_0.d.ts.map +1 -0
  52. package/dist/config/knex/enhancements/20251109020000_fix_missing_help_actions_v3_8_0.js +232 -0
  53. package/dist/config/knex/enhancements/20251109020000_fix_missing_help_actions_v3_8_0.js.map +1 -0
  54. package/dist/config/knex/upgrades/20251104000000_add_multi_project_v3_7_0.d.ts.map +1 -1
  55. package/dist/config/knex/upgrades/20251104000000_add_multi_project_v3_7_0.js +9 -0
  56. package/dist/config/knex/upgrades/20251104000000_add_multi_project_v3_7_0.js.map +1 -1
  57. package/dist/config/knex/upgrades/20251108000000_hotfix_v_tagged_constraints_project_id.d.ts +14 -0
  58. package/dist/config/knex/upgrades/20251108000000_hotfix_v_tagged_constraints_project_id.d.ts.map +1 -0
  59. package/dist/config/knex/upgrades/20251108000000_hotfix_v_tagged_constraints_project_id.js +97 -0
  60. package/dist/config/knex/upgrades/20251108000000_hotfix_v_tagged_constraints_project_id.js.map +1 -0
  61. package/dist/config/knex/upgrades/20251109000002_multi_project_cross_db_compat_v3_7_5.d.ts +24 -0
  62. package/dist/config/knex/upgrades/20251109000002_multi_project_cross_db_compat_v3_7_5.d.ts.map +1 -0
  63. package/dist/config/knex/upgrades/20251109000002_multi_project_cross_db_compat_v3_7_5.js +303 -0
  64. package/dist/config/knex/upgrades/20251109000002_multi_project_cross_db_compat_v3_7_5.js.map +1 -0
  65. package/dist/constants.d.ts +14 -2
  66. package/dist/constants.d.ts.map +1 -1
  67. package/dist/constants.js +28 -1
  68. package/dist/constants.js.map +1 -1
  69. package/dist/database/config/adapter-factory.d.ts +13 -0
  70. package/dist/database/config/adapter-factory.d.ts.map +1 -0
  71. package/dist/database/config/adapter-factory.js +21 -0
  72. package/dist/database/config/adapter-factory.js.map +1 -0
  73. package/dist/database/config/config-ops.d.ts +34 -0
  74. package/dist/database/config/config-ops.d.ts.map +1 -0
  75. package/dist/database/config/config-ops.js +76 -0
  76. package/dist/database/config/config-ops.js.map +1 -0
  77. package/dist/database/index.d.ts +21 -0
  78. package/dist/database/index.d.ts.map +1 -0
  79. package/dist/database/index.js +31 -0
  80. package/dist/database/index.js.map +1 -0
  81. package/dist/database/initialization/cleanup.d.ts +8 -0
  82. package/dist/database/initialization/cleanup.d.ts.map +1 -0
  83. package/dist/database/initialization/cleanup.js +17 -0
  84. package/dist/database/initialization/cleanup.js.map +1 -0
  85. package/dist/database/initialization/init.d.ts +21 -0
  86. package/dist/database/initialization/init.d.ts.map +1 -0
  87. package/dist/database/initialization/init.js +83 -0
  88. package/dist/database/initialization/init.js.map +1 -0
  89. package/dist/database/operations/deletes.d.ts +10 -0
  90. package/dist/database/operations/deletes.d.ts.map +1 -0
  91. package/dist/database/operations/deletes.js +14 -0
  92. package/dist/database/operations/deletes.js.map +1 -0
  93. package/dist/database/operations/inserts.d.ts +40 -0
  94. package/dist/database/operations/inserts.d.ts.map +1 -0
  95. package/dist/database/operations/inserts.js +202 -0
  96. package/dist/database/operations/inserts.js.map +1 -0
  97. package/dist/database/operations/queries.d.ts +57 -0
  98. package/dist/database/operations/queries.d.ts.map +1 -0
  99. package/dist/database/operations/queries.js +77 -0
  100. package/dist/database/operations/queries.js.map +1 -0
  101. package/dist/database/operations/updates.d.ts +10 -0
  102. package/dist/database/operations/updates.d.ts.map +1 -0
  103. package/dist/database/operations/updates.js +14 -0
  104. package/dist/database/operations/updates.js.map +1 -0
  105. package/dist/database/types.d.ts +5 -0
  106. package/dist/database/types.d.ts.map +1 -0
  107. package/dist/database/types.js +5 -0
  108. package/dist/database/types.js.map +1 -0
  109. package/dist/database.d.ts +4 -144
  110. package/dist/database.d.ts.map +1 -1
  111. package/dist/database.js +5 -461
  112. package/dist/database.js.map +1 -1
  113. package/dist/index.js +29 -777
  114. package/dist/index.js.map +1 -1
  115. package/dist/server/arg-parser.d.ts +40 -0
  116. package/dist/server/arg-parser.d.ts.map +1 -0
  117. package/dist/server/arg-parser.js +137 -0
  118. package/dist/server/arg-parser.js.map +1 -0
  119. package/dist/server/setup.d.ts +31 -0
  120. package/dist/server/setup.d.ts.map +1 -0
  121. package/dist/server/setup.js +186 -0
  122. package/dist/server/setup.js.map +1 -0
  123. package/dist/server/shutdown.d.ts +15 -0
  124. package/dist/server/shutdown.d.ts.map +1 -0
  125. package/dist/server/shutdown.js +42 -0
  126. package/dist/server/shutdown.js.map +1 -0
  127. package/dist/server/tool-handlers.d.ts +10 -0
  128. package/dist/server/tool-handlers.d.ts.map +1 -0
  129. package/dist/server/tool-handlers.js +478 -0
  130. package/dist/server/tool-handlers.js.map +1 -0
  131. package/dist/server/tool-registry.d.ts +11 -0
  132. package/dist/server/tool-registry.d.ts.map +1 -0
  133. package/dist/server/tool-registry.js +225 -0
  134. package/dist/server/tool-registry.js.map +1 -0
  135. package/dist/tests/all-features.test.js +6 -38
  136. package/dist/tests/all-features.test.js.map +1 -1
  137. package/dist/tests/batch-validation-comprehensive.test.d.ts +12 -0
  138. package/dist/tests/batch-validation-comprehensive.test.d.ts.map +1 -0
  139. package/dist/tests/batch-validation-comprehensive.test.js +472 -0
  140. package/dist/tests/batch-validation-comprehensive.test.js.map +1 -0
  141. package/dist/tests/batch-validation-integration.test.d.ts +6 -0
  142. package/dist/tests/batch-validation-integration.test.d.ts.map +1 -0
  143. package/dist/tests/batch-validation-integration.test.js +193 -0
  144. package/dist/tests/batch-validation-integration.test.js.map +1 -0
  145. package/dist/tests/batch-validation.test.d.ts +6 -0
  146. package/dist/tests/batch-validation.test.d.ts.map +1 -0
  147. package/dist/tests/batch-validation.test.js +298 -0
  148. package/dist/tests/batch-validation.test.js.map +1 -0
  149. package/dist/tests/context-modular.test.d.ts +7 -0
  150. package/dist/tests/context-modular.test.d.ts.map +1 -0
  151. package/dist/tests/context-modular.test.js +271 -0
  152. package/dist/tests/context-modular.test.js.map +1 -0
  153. package/dist/tests/decision-batch-validation.test.d.ts +6 -0
  154. package/dist/tests/decision-batch-validation.test.d.ts.map +1 -0
  155. package/dist/tests/decision-batch-validation.test.js +253 -0
  156. package/dist/tests/decision-batch-validation.test.js.map +1 -0
  157. package/dist/tests/help-system.test.js +1 -1
  158. package/dist/tests/help-system.test.js.map +1 -1
  159. package/dist/tests/migrations/test-all-versions-real.js +3 -2
  160. package/dist/tests/migrations/test-all-versions-real.js.map +1 -1
  161. package/dist/tests/multi-project.test.js +2 -2
  162. package/dist/tests/multi-project.test.js.map +1 -1
  163. package/dist/tests/parameter-validation.test.js +2 -16
  164. package/dist/tests/parameter-validation.test.js.map +1 -1
  165. package/dist/tests/tasks.auto-pruning-decision-link.test.js +1 -1
  166. package/dist/tests/tasks.auto-pruning-decision-link.test.js.map +1 -1
  167. package/dist/tests/tasks.file-actions-integration.test.d.ts +10 -0
  168. package/dist/tests/tasks.file-actions-integration.test.d.ts.map +1 -0
  169. package/dist/tests/tasks.file-actions-integration.test.js +162 -0
  170. package/dist/tests/tasks.file-actions-integration.test.js.map +1 -0
  171. package/dist/tests/tasks.file-actions-validation.test.d.ts +6 -0
  172. package/dist/tests/tasks.file-actions-validation.test.d.ts.map +1 -0
  173. package/dist/tests/tasks.file-actions-validation.test.js +221 -0
  174. package/dist/tests/tasks.file-actions-validation.test.js.map +1 -0
  175. package/dist/tools/constraints/actions/add.d.ts +15 -0
  176. package/dist/tools/constraints/actions/add.d.ts.map +1 -0
  177. package/dist/tools/constraints/actions/add.js +101 -0
  178. package/dist/tools/constraints/actions/add.js.map +1 -0
  179. package/dist/tools/constraints/actions/deactivate.d.ts +16 -0
  180. package/dist/tools/constraints/actions/deactivate.d.ts.map +1 -0
  181. package/dist/tools/constraints/actions/deactivate.js +49 -0
  182. package/dist/tools/constraints/actions/deactivate.js.map +1 -0
  183. package/dist/tools/constraints/actions/get.d.ts +16 -0
  184. package/dist/tools/constraints/actions/get.d.ts.map +1 -0
  185. package/dist/tools/constraints/actions/get.js +76 -0
  186. package/dist/tools/constraints/actions/get.js.map +1 -0
  187. package/dist/tools/constraints/help/example.d.ts +9 -0
  188. package/dist/tools/constraints/help/example.d.ts.map +1 -0
  189. package/dist/tools/constraints/help/example.js +144 -0
  190. package/dist/tools/constraints/help/example.js.map +1 -0
  191. package/dist/tools/constraints/help/help.d.ts +9 -0
  192. package/dist/tools/constraints/help/help.d.ts.map +1 -0
  193. package/dist/tools/constraints/help/help.js +31 -0
  194. package/dist/tools/constraints/help/help.js.map +1 -0
  195. package/dist/tools/constraints/index.d.ts +12 -0
  196. package/dist/tools/constraints/index.d.ts.map +1 -0
  197. package/dist/tools/constraints/index.js +13 -0
  198. package/dist/tools/constraints/index.js.map +1 -0
  199. package/dist/tools/constraints/internal/validation.d.ts +11 -0
  200. package/dist/tools/constraints/internal/validation.d.ts.map +1 -0
  201. package/dist/tools/constraints/internal/validation.js +17 -0
  202. package/dist/tools/constraints/internal/validation.js.map +1 -0
  203. package/dist/tools/constraints/types.d.ts +6 -0
  204. package/dist/tools/constraints/types.d.ts.map +1 -0
  205. package/dist/tools/constraints/types.js +6 -0
  206. package/dist/tools/constraints/types.js.map +1 -0
  207. package/dist/tools/context/actions/add-context.d.ts +14 -0
  208. package/dist/tools/context/actions/add-context.d.ts.map +1 -0
  209. package/dist/tools/context/actions/add-context.js +62 -0
  210. package/dist/tools/context/actions/add-context.js.map +1 -0
  211. package/dist/tools/context/actions/batch-set.d.ts +16 -0
  212. package/dist/tools/context/actions/batch-set.d.ts.map +1 -0
  213. package/dist/tools/context/actions/batch-set.js +126 -0
  214. package/dist/tools/context/actions/batch-set.js.map +1 -0
  215. package/dist/tools/context/actions/create-template.d.ts +15 -0
  216. package/dist/tools/context/actions/create-template.d.ts.map +1 -0
  217. package/dist/tools/context/actions/create-template.js +68 -0
  218. package/dist/tools/context/actions/create-template.js.map +1 -0
  219. package/dist/tools/context/actions/get.d.ts +18 -0
  220. package/dist/tools/context/actions/get.d.ts.map +1 -0
  221. package/dist/tools/context/actions/get.js +80 -0
  222. package/dist/tools/context/actions/get.js.map +1 -0
  223. package/dist/tools/context/actions/hard-delete.d.ts +18 -0
  224. package/dist/tools/context/actions/hard-delete.d.ts.map +1 -0
  225. package/dist/tools/context/actions/hard-delete.js +85 -0
  226. package/dist/tools/context/actions/hard-delete.js.map +1 -0
  227. package/dist/tools/context/actions/has-updates.d.ts +16 -0
  228. package/dist/tools/context/actions/has-updates.d.ts.map +1 -0
  229. package/dist/tools/context/actions/has-updates.js +83 -0
  230. package/dist/tools/context/actions/has-updates.js.map +1 -0
  231. package/dist/tools/context/actions/list-contexts.d.ts +14 -0
  232. package/dist/tools/context/actions/list-contexts.d.ts.map +1 -0
  233. package/dist/tools/context/actions/list-contexts.js +43 -0
  234. package/dist/tools/context/actions/list-contexts.js.map +1 -0
  235. package/dist/tools/context/actions/list-templates.d.ts +15 -0
  236. package/dist/tools/context/actions/list-templates.d.ts.map +1 -0
  237. package/dist/tools/context/actions/list-templates.js +47 -0
  238. package/dist/tools/context/actions/list-templates.js.map +1 -0
  239. package/dist/tools/context/actions/list.d.ts +16 -0
  240. package/dist/tools/context/actions/list.d.ts.map +1 -0
  241. package/dist/tools/context/actions/list.js +100 -0
  242. package/dist/tools/context/actions/list.js.map +1 -0
  243. package/dist/tools/context/actions/quick-set.d.ts +21 -0
  244. package/dist/tools/context/actions/quick-set.d.ts.map +1 -0
  245. package/dist/tools/context/actions/quick-set.js +104 -0
  246. package/dist/tools/context/actions/quick-set.js.map +1 -0
  247. package/dist/tools/context/actions/search-advanced.d.ts +15 -0
  248. package/dist/tools/context/actions/search-advanced.d.ts.map +1 -0
  249. package/dist/tools/context/actions/search-advanced.js +140 -0
  250. package/dist/tools/context/actions/search-advanced.js.map +1 -0
  251. package/dist/tools/context/actions/search-layer.d.ts +15 -0
  252. package/dist/tools/context/actions/search-layer.d.ts.map +1 -0
  253. package/dist/tools/context/actions/search-layer.js +106 -0
  254. package/dist/tools/context/actions/search-layer.js.map +1 -0
  255. package/dist/tools/context/actions/search-tags.d.ts +15 -0
  256. package/dist/tools/context/actions/search-tags.d.ts.map +1 -0
  257. package/dist/tools/context/actions/search-tags.js +85 -0
  258. package/dist/tools/context/actions/search-tags.js.map +1 -0
  259. package/dist/tools/context/actions/set-from-template.d.ts +16 -0
  260. package/dist/tools/context/actions/set-from-template.d.ts.map +1 -0
  261. package/dist/tools/context/actions/set-from-template.js +83 -0
  262. package/dist/tools/context/actions/set-from-template.js.map +1 -0
  263. package/dist/tools/context/actions/set.d.ts +16 -0
  264. package/dist/tools/context/actions/set.d.ts.map +1 -0
  265. package/dist/tools/context/actions/set.js +56 -0
  266. package/dist/tools/context/actions/set.js.map +1 -0
  267. package/dist/tools/context/actions/versions.d.ts +15 -0
  268. package/dist/tools/context/actions/versions.d.ts.map +1 -0
  269. package/dist/tools/context/actions/versions.js +69 -0
  270. package/dist/tools/context/actions/versions.js.map +1 -0
  271. package/dist/tools/context/help/example.d.ts +5 -0
  272. package/dist/tools/context/help/example.d.ts.map +1 -0
  273. package/dist/tools/context/help/example.js +96 -0
  274. package/dist/tools/context/help/example.js.map +1 -0
  275. package/dist/tools/context/help/help.d.ts +5 -0
  276. package/dist/tools/context/help/help.d.ts.map +1 -0
  277. package/dist/tools/context/help/help.js +65 -0
  278. package/dist/tools/context/help/help.js.map +1 -0
  279. package/dist/tools/context/index.d.ts +25 -0
  280. package/dist/tools/context/index.d.ts.map +1 -0
  281. package/dist/tools/context/index.js +26 -0
  282. package/dist/tools/context/index.js.map +1 -0
  283. package/dist/tools/context/internal/queries.d.ts +18 -0
  284. package/dist/tools/context/internal/queries.d.ts.map +1 -0
  285. package/dist/tools/context/internal/queries.js +160 -0
  286. package/dist/tools/context/internal/queries.js.map +1 -0
  287. package/dist/tools/context/internal/validation.d.ts +39 -0
  288. package/dist/tools/context/internal/validation.d.ts.map +1 -0
  289. package/dist/tools/context/internal/validation.js +125 -0
  290. package/dist/tools/context/internal/validation.js.map +1 -0
  291. package/dist/tools/context/types.d.ts +6 -0
  292. package/dist/tools/context/types.d.ts.map +1 -0
  293. package/dist/tools/context/types.js +6 -0
  294. package/dist/tools/context/types.js.map +1 -0
  295. package/dist/tools/example/actions/get.d.ts +14 -0
  296. package/dist/tools/example/actions/get.d.ts.map +1 -0
  297. package/dist/tools/example/actions/get.js +40 -0
  298. package/dist/tools/example/actions/get.js.map +1 -0
  299. package/dist/tools/example/actions/list-all.d.ts +13 -0
  300. package/dist/tools/example/actions/list-all.d.ts.map +1 -0
  301. package/dist/tools/example/actions/list-all.js +39 -0
  302. package/dist/tools/example/actions/list-all.js.map +1 -0
  303. package/dist/tools/example/actions/search.d.ts +14 -0
  304. package/dist/tools/example/actions/search.d.ts.map +1 -0
  305. package/dist/tools/example/actions/search.js +52 -0
  306. package/dist/tools/example/actions/search.js.map +1 -0
  307. package/dist/tools/example/help/example.d.ts +6 -0
  308. package/dist/tools/example/help/example.d.ts.map +1 -0
  309. package/dist/tools/example/help/example.js +69 -0
  310. package/dist/tools/example/help/example.js.map +1 -0
  311. package/dist/tools/example/help/help.d.ts +6 -0
  312. package/dist/tools/example/help/help.d.ts.map +1 -0
  313. package/dist/tools/example/help/help.js +133 -0
  314. package/dist/tools/example/help/help.js.map +1 -0
  315. package/dist/tools/example/index.d.ts +11 -0
  316. package/dist/tools/example/index.d.ts.map +1 -0
  317. package/dist/tools/example/index.js +12 -0
  318. package/dist/tools/example/index.js.map +1 -0
  319. package/dist/tools/example/types.d.ts +59 -0
  320. package/dist/tools/example/types.d.ts.map +1 -0
  321. package/dist/tools/example/types.js +6 -0
  322. package/dist/tools/example/types.js.map +1 -0
  323. package/dist/tools/files/actions/check-lock.d.ts +16 -0
  324. package/dist/tools/files/actions/check-lock.d.ts.map +1 -0
  325. package/dist/tools/files/actions/check-lock.js +70 -0
  326. package/dist/tools/files/actions/check-lock.js.map +1 -0
  327. package/dist/tools/files/actions/get.d.ts +16 -0
  328. package/dist/tools/files/actions/get.d.ts.map +1 -0
  329. package/dist/tools/files/actions/get.js +113 -0
  330. package/dist/tools/files/actions/get.js.map +1 -0
  331. package/dist/tools/files/actions/record-batch.d.ts +18 -0
  332. package/dist/tools/files/actions/record-batch.d.ts.map +1 -0
  333. package/dist/tools/files/actions/record-batch.js +114 -0
  334. package/dist/tools/files/actions/record-batch.js.map +1 -0
  335. package/dist/tools/files/actions/record.d.ts +16 -0
  336. package/dist/tools/files/actions/record.d.ts.map +1 -0
  337. package/dist/tools/files/actions/record.js +37 -0
  338. package/dist/tools/files/actions/record.js.map +1 -0
  339. package/dist/tools/files/actions/sqlite-flush.d.ts +27 -0
  340. package/dist/tools/files/actions/sqlite-flush.d.ts.map +1 -0
  341. package/dist/tools/files/actions/sqlite-flush.js +66 -0
  342. package/dist/tools/files/actions/sqlite-flush.js.map +1 -0
  343. package/dist/tools/files/help/example.d.ts +5 -0
  344. package/dist/tools/files/help/example.d.ts.map +1 -0
  345. package/dist/tools/files/help/example.js +98 -0
  346. package/dist/tools/files/help/example.js.map +1 -0
  347. package/dist/tools/files/help/help.d.ts +5 -0
  348. package/dist/tools/files/help/help.d.ts.map +1 -0
  349. package/dist/tools/files/help/help.js +29 -0
  350. package/dist/tools/files/help/help.js.map +1 -0
  351. package/dist/tools/files/index.d.ts +14 -0
  352. package/dist/tools/files/index.d.ts.map +1 -0
  353. package/dist/tools/files/index.js +15 -0
  354. package/dist/tools/files/index.js.map +1 -0
  355. package/dist/tools/files/internal/queries.d.ts +18 -0
  356. package/dist/tools/files/internal/queries.d.ts.map +1 -0
  357. package/dist/tools/files/internal/queries.js +63 -0
  358. package/dist/tools/files/internal/queries.js.map +1 -0
  359. package/dist/tools/files/internal/validation.d.ts +18 -0
  360. package/dist/tools/files/internal/validation.d.ts.map +1 -0
  361. package/dist/tools/files/internal/validation.js +40 -0
  362. package/dist/tools/files/internal/validation.js.map +1 -0
  363. package/dist/tools/files/types.d.ts +6 -0
  364. package/dist/tools/files/types.d.ts.map +1 -0
  365. package/dist/tools/files/types.js +6 -0
  366. package/dist/tools/files/types.js.map +1 -0
  367. package/dist/tools/help/actions/batch-guide.d.ts +14 -0
  368. package/dist/tools/help/actions/batch-guide.d.ts.map +1 -0
  369. package/dist/tools/help/actions/batch-guide.js +59 -0
  370. package/dist/tools/help/actions/batch-guide.js.map +1 -0
  371. package/dist/tools/help/actions/error-recovery.d.ts +12 -0
  372. package/dist/tools/help/actions/error-recovery.d.ts.map +1 -0
  373. package/dist/tools/help/actions/error-recovery.js +107 -0
  374. package/dist/tools/help/actions/error-recovery.js.map +1 -0
  375. package/dist/tools/help/actions/query-action.d.ts +15 -0
  376. package/dist/tools/help/actions/query-action.d.ts.map +1 -0
  377. package/dist/tools/help/actions/query-action.js +15 -0
  378. package/dist/tools/help/actions/query-action.js.map +1 -0
  379. package/dist/tools/help/actions/query-params.d.ts +15 -0
  380. package/dist/tools/help/actions/query-params.d.ts.map +1 -0
  381. package/dist/tools/help/actions/query-params.js +15 -0
  382. package/dist/tools/help/actions/query-params.js.map +1 -0
  383. package/dist/tools/help/actions/query-tool.d.ts +15 -0
  384. package/dist/tools/help/actions/query-tool.d.ts.map +1 -0
  385. package/dist/tools/help/actions/query-tool.js +15 -0
  386. package/dist/tools/help/actions/query-tool.js.map +1 -0
  387. package/dist/tools/help/actions/workflow-hints.d.ts +14 -0
  388. package/dist/tools/help/actions/workflow-hints.d.ts.map +1 -0
  389. package/dist/tools/help/actions/workflow-hints.js +15 -0
  390. package/dist/tools/help/actions/workflow-hints.js.map +1 -0
  391. package/dist/tools/help/help/example.d.ts +6 -0
  392. package/dist/tools/help/help/example.d.ts.map +1 -0
  393. package/dist/tools/help/help/example.js +70 -0
  394. package/dist/tools/help/help/example.js.map +1 -0
  395. package/dist/tools/help/help/help.d.ts +6 -0
  396. package/dist/tools/help/help/help.d.ts.map +1 -0
  397. package/dist/tools/help/help/help.js +67 -0
  398. package/dist/tools/help/help/help.js.map +1 -0
  399. package/dist/tools/help/index.d.ts +14 -0
  400. package/dist/tools/help/index.d.ts.map +1 -0
  401. package/dist/tools/help/index.js +15 -0
  402. package/dist/tools/help/index.js.map +1 -0
  403. package/dist/tools/help/types.d.ts +92 -0
  404. package/dist/tools/help/types.d.ts.map +1 -0
  405. package/dist/tools/help/types.js +6 -0
  406. package/dist/tools/help/types.js.map +1 -0
  407. package/dist/tools/help-queries.d.ts.map +1 -1
  408. package/dist/tools/help-queries.js +1 -0
  409. package/dist/tools/help-queries.js.map +1 -1
  410. package/dist/tools/tasks/actions/add-dependency.d.ts +12 -0
  411. package/dist/tools/tasks/actions/add-dependency.d.ts.map +1 -0
  412. package/dist/tools/tasks/actions/add-dependency.js +124 -0
  413. package/dist/tools/tasks/actions/add-dependency.js.map +1 -0
  414. package/dist/tools/tasks/actions/archive.d.ts +11 -0
  415. package/dist/tools/tasks/actions/archive.d.ts.map +1 -0
  416. package/dist/tools/tasks/actions/archive.js +67 -0
  417. package/dist/tools/tasks/actions/archive.js.map +1 -0
  418. package/dist/tools/tasks/actions/create-batch.d.ts +19 -0
  419. package/dist/tools/tasks/actions/create-batch.d.ts.map +1 -0
  420. package/dist/tools/tasks/actions/create-batch.js +103 -0
  421. package/dist/tools/tasks/actions/create-batch.js.map +1 -0
  422. package/dist/tools/tasks/actions/create.d.ts +16 -0
  423. package/dist/tools/tasks/actions/create.d.ts.map +1 -0
  424. package/dist/tools/tasks/actions/create.js +180 -0
  425. package/dist/tools/tasks/actions/create.js.map +1 -0
  426. package/dist/tools/tasks/actions/get-dependencies.d.ts +12 -0
  427. package/dist/tools/tasks/actions/get-dependencies.d.ts.map +1 -0
  428. package/dist/tools/tasks/actions/get-dependencies.js +41 -0
  429. package/dist/tools/tasks/actions/get-dependencies.js.map +1 -0
  430. package/dist/tools/tasks/actions/get-pruned-files.d.ts +13 -0
  431. package/dist/tools/tasks/actions/get-pruned-files.d.ts.map +1 -0
  432. package/dist/tools/tasks/actions/get-pruned-files.js +45 -0
  433. package/dist/tools/tasks/actions/get-pruned-files.js.map +1 -0
  434. package/dist/tools/tasks/actions/get.d.ts +12 -0
  435. package/dist/tools/tasks/actions/get.d.ts.map +1 -0
  436. package/dist/tools/tasks/actions/get.js +88 -0
  437. package/dist/tools/tasks/actions/get.js.map +1 -0
  438. package/dist/tools/tasks/actions/link-pruned-file.d.ts +13 -0
  439. package/dist/tools/tasks/actions/link-pruned-file.d.ts.map +1 -0
  440. package/dist/tools/tasks/actions/link-pruned-file.js +63 -0
  441. package/dist/tools/tasks/actions/link-pruned-file.js.map +1 -0
  442. package/dist/tools/tasks/actions/link.d.ts +14 -0
  443. package/dist/tools/tasks/actions/link.d.ts.map +1 -0
  444. package/dist/tools/tasks/actions/link.js +118 -0
  445. package/dist/tools/tasks/actions/link.js.map +1 -0
  446. package/dist/tools/tasks/actions/list.d.ts +17 -0
  447. package/dist/tools/tasks/actions/list.d.ts.map +1 -0
  448. package/dist/tools/tasks/actions/list.js +98 -0
  449. package/dist/tools/tasks/actions/list.js.map +1 -0
  450. package/dist/tools/tasks/actions/move.d.ts +12 -0
  451. package/dist/tools/tasks/actions/move.d.ts.map +1 -0
  452. package/dist/tools/tasks/actions/move.js +91 -0
  453. package/dist/tools/tasks/actions/move.js.map +1 -0
  454. package/dist/tools/tasks/actions/remove-dependency.d.ts +12 -0
  455. package/dist/tools/tasks/actions/remove-dependency.d.ts.map +1 -0
  456. package/dist/tools/tasks/actions/remove-dependency.js +36 -0
  457. package/dist/tools/tasks/actions/remove-dependency.js.map +1 -0
  458. package/dist/tools/tasks/actions/update.d.ts +10 -0
  459. package/dist/tools/tasks/actions/update.d.ts.map +1 -0
  460. package/dist/tools/tasks/actions/update.js +186 -0
  461. package/dist/tools/tasks/actions/update.js.map +1 -0
  462. package/dist/tools/tasks/actions/watch-files.d.ts +14 -0
  463. package/dist/tools/tasks/actions/watch-files.d.ts.map +1 -0
  464. package/dist/tools/tasks/actions/watch-files.js +127 -0
  465. package/dist/tools/tasks/actions/watch-files.js.map +1 -0
  466. package/dist/tools/tasks/help/example.d.ts +8 -0
  467. package/dist/tools/tasks/help/example.d.ts.map +1 -0
  468. package/dist/tools/tasks/help/example.js +215 -0
  469. package/dist/tools/tasks/help/example.js.map +1 -0
  470. package/dist/tools/tasks/help/help.d.ts +8 -0
  471. package/dist/tools/tasks/help/help.d.ts.map +1 -0
  472. package/dist/tools/tasks/help/help.js +293 -0
  473. package/dist/tools/tasks/help/help.js.map +1 -0
  474. package/dist/tools/tasks/help/use-case.d.ts +11 -0
  475. package/dist/tools/tasks/help/use-case.d.ts.map +1 -0
  476. package/dist/tools/tasks/help/use-case.js +768 -0
  477. package/dist/tools/tasks/help/use-case.js.map +1 -0
  478. package/dist/tools/tasks/index.d.ts +28 -0
  479. package/dist/tools/tasks/index.d.ts.map +1 -0
  480. package/dist/tools/tasks/index.js +33 -0
  481. package/dist/tools/tasks/index.js.map +1 -0
  482. package/dist/tools/tasks/internal/state-machine.d.ts +16 -0
  483. package/dist/tools/tasks/internal/state-machine.d.ts.map +1 -0
  484. package/dist/tools/tasks/internal/state-machine.js +36 -0
  485. package/dist/tools/tasks/internal/state-machine.js.map +1 -0
  486. package/dist/tools/tasks/internal/task-queries.d.ts +12 -0
  487. package/dist/tools/tasks/internal/task-queries.d.ts.map +1 -0
  488. package/dist/tools/tasks/internal/task-queries.js +61 -0
  489. package/dist/tools/tasks/internal/task-queries.js.map +1 -0
  490. package/dist/tools/tasks/internal/validation.d.ts +47 -0
  491. package/dist/tools/tasks/internal/validation.d.ts.map +1 -0
  492. package/dist/tools/tasks/internal/validation.js +261 -0
  493. package/dist/tools/tasks/internal/validation.js.map +1 -0
  494. package/dist/tools/tasks/types.d.ts +68 -0
  495. package/dist/tools/tasks/types.d.ts.map +1 -0
  496. package/dist/tools/tasks/types.js +45 -0
  497. package/dist/tools/tasks/types.js.map +1 -0
  498. package/dist/tools/tasks/watcher/status.d.ts +9 -0
  499. package/dist/tools/tasks/watcher/status.d.ts.map +1 -0
  500. package/dist/tools/tasks/watcher/status.js +126 -0
  501. package/dist/tools/tasks/watcher/status.js.map +1 -0
  502. package/dist/tools/tasks.d.ts +12 -148
  503. package/dist/tools/tasks.d.ts.map +1 -1
  504. package/dist/tools/tasks.js +12 -2037
  505. package/dist/tools/tasks.js.map +1 -1
  506. package/dist/tools/use_case/actions/get.d.ts +14 -0
  507. package/dist/tools/use_case/actions/get.d.ts.map +1 -0
  508. package/dist/tools/use_case/actions/get.js +15 -0
  509. package/dist/tools/use_case/actions/get.js.map +1 -0
  510. package/dist/tools/use_case/actions/list-all.d.ts +15 -0
  511. package/dist/tools/use_case/actions/list-all.d.ts.map +1 -0
  512. package/dist/tools/use_case/actions/list-all.js +20 -0
  513. package/dist/tools/use_case/actions/list-all.js.map +1 -0
  514. package/dist/tools/use_case/actions/search.d.ts +14 -0
  515. package/dist/tools/use_case/actions/search.d.ts.map +1 -0
  516. package/dist/tools/use_case/actions/search.js +87 -0
  517. package/dist/tools/use_case/actions/search.js.map +1 -0
  518. package/dist/tools/use_case/help/example.d.ts +105 -0
  519. package/dist/tools/use_case/help/example.d.ts.map +1 -0
  520. package/dist/tools/use_case/help/example.js +138 -0
  521. package/dist/tools/use_case/help/example.js.map +1 -0
  522. package/dist/tools/use_case/help/help.d.ts +33 -0
  523. package/dist/tools/use_case/help/help.d.ts.map +1 -0
  524. package/dist/tools/use_case/help/help.js +109 -0
  525. package/dist/tools/use_case/help/help.js.map +1 -0
  526. package/dist/tools/use_case/index.d.ts +11 -0
  527. package/dist/tools/use_case/index.d.ts.map +1 -0
  528. package/dist/tools/use_case/index.js +12 -0
  529. package/dist/tools/use_case/index.js.map +1 -0
  530. package/dist/tools/use_case/types.d.ts +58 -0
  531. package/dist/tools/use_case/types.d.ts.map +1 -0
  532. package/dist/tools/use_case/types.js +6 -0
  533. package/dist/tools/use_case/types.js.map +1 -0
  534. package/dist/types/actions.d.ts +37 -0
  535. package/dist/types/actions.d.ts.map +1 -0
  536. package/dist/types/actions.js +6 -0
  537. package/dist/types/actions.js.map +1 -0
  538. package/dist/types/constraint/params.d.ts +2 -0
  539. package/dist/types/constraint/params.d.ts.map +1 -0
  540. package/dist/types/constraint/params.js +2 -0
  541. package/dist/types/constraint/params.js.map +1 -0
  542. package/dist/types/constraint/responses.d.ts +2 -0
  543. package/dist/types/constraint/responses.d.ts.map +1 -0
  544. package/dist/types/constraint/responses.js +2 -0
  545. package/dist/types/constraint/responses.js.map +1 -0
  546. package/dist/types/decision/batch.d.ts +24 -0
  547. package/dist/types/decision/batch.d.ts.map +1 -0
  548. package/dist/types/decision/batch.js +5 -0
  549. package/dist/types/decision/batch.js.map +1 -0
  550. package/dist/types/decision/params.d.ts +73 -0
  551. package/dist/types/decision/params.d.ts.map +1 -0
  552. package/dist/types/decision/params.js +5 -0
  553. package/dist/types/decision/params.js.map +1 -0
  554. package/dist/types/decision/responses.d.ts +79 -0
  555. package/dist/types/decision/responses.d.ts.map +1 -0
  556. package/dist/types/decision/responses.js +5 -0
  557. package/dist/types/decision/responses.js.map +1 -0
  558. package/dist/types/decision/templates.d.ts +74 -0
  559. package/dist/types/decision/templates.d.ts.map +1 -0
  560. package/dist/types/decision/templates.js +5 -0
  561. package/dist/types/decision/templates.js.map +1 -0
  562. package/dist/types/enums.d.ts +43 -0
  563. package/dist/types/enums.d.ts.map +1 -0
  564. package/dist/types/enums.js +47 -0
  565. package/dist/types/enums.js.map +1 -0
  566. package/dist/types/file/params.d.ts +40 -0
  567. package/dist/types/file/params.d.ts.map +1 -0
  568. package/dist/types/file/params.js +6 -0
  569. package/dist/types/file/params.js.map +1 -0
  570. package/dist/types/file/responses.d.ts +2 -0
  571. package/dist/types/file/responses.d.ts.map +1 -0
  572. package/dist/types/file/responses.js +2 -0
  573. package/dist/types/file/responses.js.map +1 -0
  574. package/dist/types/import-export.d.ts +126 -0
  575. package/dist/types/import-export.d.ts.map +1 -0
  576. package/dist/types/import-export.js +6 -0
  577. package/dist/types/import-export.js.map +1 -0
  578. package/dist/types/index.d.ts +25 -0
  579. package/dist/types/index.d.ts.map +1 -0
  580. package/dist/types/index.js +35 -0
  581. package/dist/types/index.js.map +1 -0
  582. package/dist/types/master-entities.d.ts +33 -0
  583. package/dist/types/master-entities.d.ts.map +1 -0
  584. package/dist/types/master-entities.js +6 -0
  585. package/dist/types/master-entities.js.map +1 -0
  586. package/dist/types/task/params.d.ts +172 -0
  587. package/dist/types/task/params.d.ts.map +1 -0
  588. package/dist/types/task/params.js +8 -0
  589. package/dist/types/task/params.js.map +1 -0
  590. package/dist/types/task/responses.d.ts +334 -0
  591. package/dist/types/task/responses.d.ts.map +1 -0
  592. package/dist/types/task/responses.js +8 -0
  593. package/dist/types/task/responses.js.map +1 -0
  594. package/dist/types/transaction-entities.d.ts +89 -0
  595. package/dist/types/transaction-entities.d.ts.map +1 -0
  596. package/dist/types/transaction-entities.js +5 -0
  597. package/dist/types/transaction-entities.js.map +1 -0
  598. package/dist/types/validation.d.ts +44 -0
  599. package/dist/types/validation.d.ts.map +1 -0
  600. package/dist/types/validation.js +6 -0
  601. package/dist/types/validation.js.map +1 -0
  602. package/dist/types/view-entities.d.ts +61 -0
  603. package/dist/types/view-entities.d.ts.map +1 -0
  604. package/dist/types/view-entities.js +5 -0
  605. package/dist/types/view-entities.js.map +1 -0
  606. package/dist/types.d.ts +133 -10
  607. package/dist/types.d.ts.map +1 -1
  608. package/dist/utils/action-specs/config-specs.d.ts +10 -0
  609. package/dist/utils/action-specs/config-specs.d.ts.map +1 -0
  610. package/dist/utils/action-specs/config-specs.js +12 -0
  611. package/dist/utils/action-specs/config-specs.js.map +1 -0
  612. package/dist/utils/action-specs/constraint-specs.d.ts +9 -0
  613. package/dist/utils/action-specs/constraint-specs.d.ts.map +1 -0
  614. package/dist/utils/action-specs/constraint-specs.js +42 -0
  615. package/dist/utils/action-specs/constraint-specs.js.map +1 -0
  616. package/dist/utils/action-specs/decision-specs.d.ts +9 -0
  617. package/dist/utils/action-specs/decision-specs.d.ts.map +1 -0
  618. package/dist/utils/action-specs/decision-specs.js +194 -0
  619. package/dist/utils/action-specs/decision-specs.js.map +1 -0
  620. package/dist/utils/action-specs/file-specs.d.ts +9 -0
  621. package/dist/utils/action-specs/file-specs.d.ts.map +1 -0
  622. package/dist/utils/action-specs/file-specs.js +56 -0
  623. package/dist/utils/action-specs/file-specs.js.map +1 -0
  624. package/dist/utils/action-specs/index.d.ts +38 -0
  625. package/dist/utils/action-specs/index.d.ts.map +1 -0
  626. package/dist/utils/action-specs/index.js +63 -0
  627. package/dist/utils/action-specs/index.js.map +1 -0
  628. package/dist/utils/action-specs/task-specs.d.ts +9 -0
  629. package/dist/utils/action-specs/task-specs.d.ts.map +1 -0
  630. package/dist/utils/action-specs/task-specs.js +143 -0
  631. package/dist/utils/action-specs/task-specs.js.map +1 -0
  632. package/dist/utils/action-specs/types.d.ts +14 -0
  633. package/dist/utils/action-specs/types.d.ts.map +1 -0
  634. package/dist/utils/action-specs/types.js +9 -0
  635. package/dist/utils/action-specs/types.js.map +1 -0
  636. package/dist/utils/batch-validation.d.ts +156 -0
  637. package/dist/utils/batch-validation.d.ts.map +1 -0
  638. package/dist/utils/batch-validation.example.d.ts +48 -0
  639. package/dist/utils/batch-validation.example.d.ts.map +1 -0
  640. package/dist/utils/batch-validation.example.js +180 -0
  641. package/dist/utils/batch-validation.example.js.map +1 -0
  642. package/dist/utils/batch-validation.js +345 -0
  643. package/dist/utils/batch-validation.js.map +1 -0
  644. package/dist/utils/exporter/export.d.ts +100 -0
  645. package/dist/utils/exporter/export.d.ts.map +1 -0
  646. package/dist/utils/exporter/export.js +363 -0
  647. package/dist/utils/exporter/export.js.map +1 -0
  648. package/dist/utils/importer/import.d.ts +29 -0
  649. package/dist/utils/importer/import.d.ts.map +1 -0
  650. package/dist/utils/importer/import.js +514 -0
  651. package/dist/utils/importer/import.js.map +1 -0
  652. package/dist/utils/importer/master-tables.d.ts +18 -0
  653. package/dist/utils/importer/master-tables.d.ts.map +1 -0
  654. package/dist/utils/importer/master-tables.js +255 -0
  655. package/dist/utils/importer/master-tables.js.map +1 -0
  656. package/dist/utils/importer/topological-sort.d.ts +61 -0
  657. package/dist/utils/importer/topological-sort.d.ts.map +1 -0
  658. package/dist/utils/importer/topological-sort.js +143 -0
  659. package/dist/utils/importer/topological-sort.js.map +1 -0
  660. package/dist/utils/levenshtein.d.ts +18 -0
  661. package/dist/utils/levenshtein.d.ts.map +1 -0
  662. package/dist/utils/levenshtein.js +46 -0
  663. package/dist/utils/levenshtein.js.map +1 -0
  664. package/dist/utils/parameter-validator.d.ts +3 -3
  665. package/dist/utils/parameter-validator.d.ts.map +1 -1
  666. package/dist/utils/parameter-validator.js +3 -39
  667. package/dist/utils/parameter-validator.js.map +1 -1
  668. package/dist/utils/sql-dump/core/dependency-sort.d.ts +16 -0
  669. package/dist/utils/sql-dump/core/dependency-sort.d.ts.map +1 -0
  670. package/dist/utils/sql-dump/core/dependency-sort.js +105 -0
  671. package/dist/utils/sql-dump/core/dependency-sort.js.map +1 -0
  672. package/dist/utils/sql-dump/core/generate-dump.d.ts +13 -0
  673. package/dist/utils/sql-dump/core/generate-dump.d.ts.map +1 -0
  674. package/dist/utils/sql-dump/core/generate-dump.js +181 -0
  675. package/dist/utils/sql-dump/core/generate-dump.js.map +1 -0
  676. package/dist/utils/sql-dump/core/index-export.d.ts +9 -0
  677. package/dist/utils/sql-dump/core/index-export.d.ts.map +1 -0
  678. package/dist/utils/sql-dump/core/index-export.js +173 -0
  679. package/dist/utils/sql-dump/core/index-export.js.map +1 -0
  680. package/dist/utils/sql-dump/core/sequence-reset.d.ts +6 -0
  681. package/dist/utils/sql-dump/core/sequence-reset.d.ts.map +1 -0
  682. package/dist/utils/sql-dump/core/sequence-reset.js +28 -0
  683. package/dist/utils/sql-dump/core/sequence-reset.js.map +1 -0
  684. package/dist/utils/sql-dump/core/table-export.d.ts +2 -0
  685. package/dist/utils/sql-dump/core/table-export.d.ts.map +1 -0
  686. package/dist/utils/sql-dump/core/table-export.js +4 -0
  687. package/dist/utils/sql-dump/core/table-export.js.map +1 -0
  688. package/dist/utils/sql-dump/core/view-export.d.ts +2 -0
  689. package/dist/utils/sql-dump/core/view-export.d.ts.map +1 -0
  690. package/dist/utils/sql-dump/core/view-export.js +4 -0
  691. package/dist/utils/sql-dump/core/view-export.js.map +1 -0
  692. package/dist/utils/sql-dump/formatters/bulk-insert.d.ts +14 -0
  693. package/dist/utils/sql-dump/formatters/bulk-insert.d.ts.map +1 -0
  694. package/dist/utils/sql-dump/formatters/bulk-insert.js +177 -0
  695. package/dist/utils/sql-dump/formatters/bulk-insert.js.map +1 -0
  696. package/dist/utils/sql-dump/formatters/identifiers.d.ts +6 -0
  697. package/dist/utils/sql-dump/formatters/identifiers.d.ts.map +1 -0
  698. package/dist/utils/sql-dump/formatters/identifiers.js +16 -0
  699. package/dist/utils/sql-dump/formatters/identifiers.js.map +1 -0
  700. package/dist/utils/sql-dump/formatters/value-formatter.d.ts +14 -0
  701. package/dist/utils/sql-dump/formatters/value-formatter.d.ts.map +1 -0
  702. package/dist/utils/sql-dump/formatters/value-formatter.js +281 -0
  703. package/dist/utils/sql-dump/formatters/value-formatter.js.map +1 -0
  704. package/dist/utils/sql-dump/generators/controls.d.ts +10 -0
  705. package/dist/utils/sql-dump/generators/controls.d.ts.map +1 -0
  706. package/dist/utils/sql-dump/generators/controls.js +36 -0
  707. package/dist/utils/sql-dump/generators/controls.js.map +1 -0
  708. package/dist/utils/sql-dump/generators/headers.d.ts +6 -0
  709. package/dist/utils/sql-dump/generators/headers.d.ts.map +1 -0
  710. package/dist/utils/sql-dump/generators/headers.js +19 -0
  711. package/dist/utils/sql-dump/generators/headers.js.map +1 -0
  712. package/dist/utils/sql-dump/index.d.ts +14 -0
  713. package/dist/utils/sql-dump/index.d.ts.map +1 -0
  714. package/dist/utils/sql-dump/index.js +16 -0
  715. package/dist/utils/sql-dump/index.js.map +1 -0
  716. package/dist/utils/sql-dump/schema/indexes.d.ts +6 -0
  717. package/dist/utils/sql-dump/schema/indexes.d.ts.map +1 -0
  718. package/dist/utils/sql-dump/schema/indexes.js +42 -0
  719. package/dist/utils/sql-dump/schema/indexes.js.map +1 -0
  720. package/dist/utils/sql-dump/schema/primary-keys.d.ts +6 -0
  721. package/dist/utils/sql-dump/schema/primary-keys.d.ts.map +1 -0
  722. package/dist/utils/sql-dump/schema/primary-keys.js +41 -0
  723. package/dist/utils/sql-dump/schema/primary-keys.js.map +1 -0
  724. package/dist/utils/sql-dump/schema/tables.d.ts +12 -0
  725. package/dist/utils/sql-dump/schema/tables.d.ts.map +1 -0
  726. package/dist/utils/sql-dump/schema/tables.js +370 -0
  727. package/dist/utils/sql-dump/schema/tables.js.map +1 -0
  728. package/dist/utils/sql-dump/schema/views.d.ts +11 -0
  729. package/dist/utils/sql-dump/schema/views.d.ts.map +1 -0
  730. package/dist/utils/sql-dump/schema/views.js +110 -0
  731. package/dist/utils/sql-dump/schema/views.js.map +1 -0
  732. package/dist/utils/sql-dump/types.d.ts +10 -0
  733. package/dist/utils/sql-dump/types.d.ts.map +1 -0
  734. package/dist/utils/sql-dump/types.js +3 -0
  735. package/dist/utils/sql-dump/types.js.map +1 -0
  736. package/docs/AI_AGENT_GUIDE.md +2 -2
  737. package/docs/AUTO_FILE_TRACKING.md +0 -1
  738. package/docs/BATCH_VALIDATION.md +617 -0
  739. package/docs/DATABASE_AUTH.md +1 -2
  740. package/docs/DECISION_TO_TASK_MIGRATION_GUIDE.md +2 -2
  741. package/docs/SHARED_CONCEPTS.md +2 -2
  742. package/docs/SPECIALIZED_AGENTS.md +1 -1
  743. package/docs/TASK_ACTIONS.md +7 -7
  744. package/docs/TASK_MIGRATION.md +5 -5
  745. package/docs/TASK_SYSTEM.md +5 -5
  746. package/docs/TOOL_REFERENCE.md +1 -3
  747. package/docs/WORKFLOWS.md +1 -1
  748. package/docs/{DATABASE_MIGRATION.md → cli/DATABASE_MIGRATION.md} +71 -32
  749. package/docs/cli/DATA_EXPORT_IMPORT.md +400 -0
  750. package/docs/cli/README.md +227 -0
  751. package/package.json +7 -4
  752. package/dist/tools/config.d.ts +0 -58
  753. package/dist/tools/config.d.ts.map +0 -1
  754. package/dist/tools/config.js +0 -281
  755. package/dist/tools/config.js.map +0 -1
  756. package/dist/tools/constraints.d.ts +0 -49
  757. package/dist/tools/constraints.d.ts.map +0 -1
  758. package/dist/tools/constraints.js +0 -378
  759. package/dist/tools/constraints.js.map +0 -1
  760. package/dist/tools/context.d.ts +0 -208
  761. package/dist/tools/context.d.ts.map +0 -1
  762. package/dist/tools/context.js +0 -1661
  763. package/dist/tools/context.js.map +0 -1
  764. package/dist/tools/files.d.ts +0 -54
  765. package/dist/tools/files.d.ts.map +0 -1
  766. package/dist/tools/files.js +0 -478
  767. package/dist/tools/files.js.map +0 -1
  768. package/dist/tools/messaging.d.ts +0 -71
  769. package/dist/tools/messaging.d.ts.map +0 -1
  770. package/dist/tools/messaging.js +0 -483
  771. package/dist/tools/messaging.js.map +0 -1
  772. package/dist/tools/utils.d.ts +0 -70
  773. package/dist/tools/utils.d.ts.map +0 -1
  774. package/dist/tools/utils.js +0 -483
  775. package/dist/tools/utils.js.map +0 -1
  776. package/dist/utils/action-specs.d.ts +0 -46
  777. package/dist/utils/action-specs.d.ts.map +0 -1
  778. package/dist/utils/action-specs.js +0 -527
  779. package/dist/utils/action-specs.js.map +0 -1
  780. package/docs/BASEADAPTER_IMPLEMENTATION.md +0 -399
  781. package/docs/HELP_PREVIEW_COMPARISON.md +0 -259
  782. package/docs/MIGRATION_CHAIN.md +0 -293
  783. package/docs/MIGRATION_v2.md +0 -538
  784. package/docs/MIGRATION_v3.3.md +0 -602
  785. package/docs/MIGRATION_v3.6.0.md +0 -170
  786. package/docs/MULTI_PROJECT_ARCHITECTURE.md +0 -497
@@ -0,0 +1,36 @@
1
+ // generators/controls.ts - Foreign key and transaction control statements
2
+ /**
3
+ * Generate foreign key disable/enable statements
4
+ */
5
+ export function generateForeignKeyControls(format, enable) {
6
+ if (format === 'mysql') {
7
+ return enable
8
+ ? 'SET FOREIGN_KEY_CHECKS=1;'
9
+ : 'SET FOREIGN_KEY_CHECKS=0;';
10
+ }
11
+ else if (format === 'postgresql') {
12
+ return enable
13
+ ? 'SET session_replication_role = DEFAULT;'
14
+ : 'SET session_replication_role = replica;';
15
+ }
16
+ else {
17
+ // SQLite
18
+ return enable
19
+ ? 'PRAGMA foreign_keys = ON;'
20
+ : 'PRAGMA foreign_keys = OFF;';
21
+ }
22
+ }
23
+ /**
24
+ * Generate transaction control statements
25
+ */
26
+ export function generateTransactionControl(format, isStart) {
27
+ if (isStart) {
28
+ return format === 'mysql' ? 'START TRANSACTION;'
29
+ : format === 'postgresql' ? 'BEGIN;'
30
+ : 'BEGIN TRANSACTION;';
31
+ }
32
+ else {
33
+ return 'COMMIT;';
34
+ }
35
+ }
36
+ //# sourceMappingURL=controls.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"controls.js","sourceRoot":"","sources":["../../../../src/utils/sql-dump/generators/controls.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAI1E;;GAEG;AACH,MAAM,UAAU,0BAA0B,CAAC,MAAsB,EAAE,MAAe;IAChF,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;QACvB,OAAO,MAAM;YACX,CAAC,CAAC,2BAA2B;YAC7B,CAAC,CAAC,2BAA2B,CAAC;IAClC,CAAC;SAAM,IAAI,MAAM,KAAK,YAAY,EAAE,CAAC;QACnC,OAAO,MAAM;YACX,CAAC,CAAC,yCAAyC;YAC3C,CAAC,CAAC,yCAAyC,CAAC;IAChD,CAAC;SAAM,CAAC;QACN,SAAS;QACT,OAAO,MAAM;YACX,CAAC,CAAC,2BAA2B;YAC7B,CAAC,CAAC,4BAA4B,CAAC;IACnC,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,0BAA0B,CAAC,MAAsB,EAAE,OAAgB;IACjF,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,oBAAoB;YAC3C,CAAC,CAAC,MAAM,KAAK,YAAY,CAAC,CAAC,CAAC,QAAQ;gBACpC,CAAC,CAAC,oBAAoB,CAAC;IAC9B,CAAC;SAAM,CAAC;QACN,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { DatabaseFormat } from '../types.js';
2
+ /**
3
+ * Generate header comments for SQL dump
4
+ */
5
+ export declare function generateHeader(format: DatabaseFormat): string;
6
+ //# sourceMappingURL=headers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"headers.d.ts","sourceRoot":"","sources":["../../../../src/utils/sql-dump/generators/headers.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAa7D"}
@@ -0,0 +1,19 @@
1
+ // generators/headers.ts - SQL dump header generation
2
+ /**
3
+ * Generate header comments for SQL dump
4
+ */
5
+ export function generateHeader(format) {
6
+ const timestamp = new Date().toISOString();
7
+ return `-- SQL Dump generated by sqlew
8
+ -- Date: ${timestamp}
9
+ -- Target: ${format.toUpperCase()}
10
+ --
11
+ -- This dump is wrapped in a transaction.
12
+ -- On error, all changes will be rolled back automatically.
13
+ --
14
+ -- Usage (empty database):
15
+ -- ${format === 'mysql' ? 'mysql mydb < dump.sql' : format === 'postgresql' ? 'psql -d mydb -f dump.sql' : 'sqlite3 mydb.db < dump.sql'}
16
+
17
+ `;
18
+ }
19
+ //# sourceMappingURL=headers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"headers.js","sourceRoot":"","sources":["../../../../src/utils/sql-dump/generators/headers.ts"],"names":[],"mappings":"AAAA,qDAAqD;AAIrD;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,MAAsB;IACnD,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC3C,OAAO;WACE,SAAS;aACP,MAAM,CAAC,WAAW,EAAE;;;;;;OAM1B,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,MAAM,KAAK,YAAY,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,4BAA4B;;CAExI,CAAC;AACF,CAAC"}
@@ -0,0 +1,14 @@
1
+ export type { DatabaseFormat, ConflictMode } from './types.js';
2
+ export { generateSqlDump } from './core/generate-dump.js';
3
+ export { quoteIdentifier } from './formatters/identifiers.js';
4
+ export { formatValue, convertValueWithType } from './formatters/value-formatter.js';
5
+ export { generateBulkInsert } from './formatters/bulk-insert.js';
6
+ export { generateHeader } from './generators/headers.js';
7
+ export { generateForeignKeyControls, generateTransactionControl } from './generators/controls.js';
8
+ export { getAllTables, getCreateTableStatement } from './core/table-export.js';
9
+ export { getAllViews, getCreateViewStatement } from './core/view-export.js';
10
+ export { getAllIndexes, getCreateIndexStatement } from './core/index-export.js';
11
+ export { generateSequenceResets } from './core/sequence-reset.js';
12
+ export { getTableDependencies, topologicalSort } from './core/dependency-sort.js';
13
+ export { getPrimaryKeyColumns } from './schema/primary-keys.js';
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/sql-dump/index.ts"],"names":[],"mappings":"AAGA,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG/D,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAG1D,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AACpF,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,0BAA0B,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAClG,OAAO,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAC/E,OAAO,EAAE,WAAW,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAChF,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAClF,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1,16 @@
1
+ // index.ts - Main export point for sql-dump utilities
2
+ // Export main function
3
+ export { generateSqlDump } from './core/generate-dump.js';
4
+ // Export utilities (for testing and advanced usage)
5
+ export { quoteIdentifier } from './formatters/identifiers.js';
6
+ export { formatValue, convertValueWithType } from './formatters/value-formatter.js';
7
+ export { generateBulkInsert } from './formatters/bulk-insert.js';
8
+ export { generateHeader } from './generators/headers.js';
9
+ export { generateForeignKeyControls, generateTransactionControl } from './generators/controls.js';
10
+ export { getAllTables, getCreateTableStatement } from './core/table-export.js';
11
+ export { getAllViews, getCreateViewStatement } from './core/view-export.js';
12
+ export { getAllIndexes, getCreateIndexStatement } from './core/index-export.js';
13
+ export { generateSequenceResets } from './core/sequence-reset.js';
14
+ export { getTableDependencies, topologicalSort } from './core/dependency-sort.js';
15
+ export { getPrimaryKeyColumns } from './schema/primary-keys.js';
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/sql-dump/index.ts"],"names":[],"mappings":"AAAA,sDAAsD;AAKtD,uBAAuB;AACvB,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE1D,oDAAoD;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AACpF,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,0BAA0B,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAClG,OAAO,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAC/E,OAAO,EAAE,WAAW,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAChF,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAClF,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { Knex } from 'knex';
2
+ /**
3
+ * Get all indexes for a table
4
+ */
5
+ export declare function getAllIndexes(knex: Knex, table: string): Promise<string[]>;
6
+ //# sourceMappingURL=indexes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"indexes.d.ts","sourceRoot":"","sources":["../../../../src/utils/sql-dump/schema/indexes.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAEjC;;GAEG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAqChF"}
@@ -0,0 +1,42 @@
1
+ // schema/indexes.ts - Index detection utilities
2
+ /**
3
+ * Get all indexes for a table
4
+ */
5
+ export async function getAllIndexes(knex, table) {
6
+ const client = knex.client.config.client;
7
+ if (client === 'better-sqlite3' || client === 'sqlite3') {
8
+ const result = await knex.raw(`
9
+ SELECT name FROM sqlite_master
10
+ WHERE type='index'
11
+ AND tbl_name=?
12
+ AND sql IS NOT NULL
13
+ ORDER BY name
14
+ `, [table]);
15
+ return result.map((row) => row.name);
16
+ }
17
+ else if (client === 'mysql' || client === 'mysql2') {
18
+ const result = await knex.raw(`
19
+ SHOW INDEXES FROM ?? WHERE Key_name != 'PRIMARY'
20
+ `, [table]);
21
+ // Group by index name (indexes can span multiple columns)
22
+ const indexNames = new Set();
23
+ for (const row of result[0]) {
24
+ indexNames.add(row.Key_name);
25
+ }
26
+ return Array.from(indexNames).sort();
27
+ }
28
+ else if (client === 'pg') {
29
+ const result = await knex.raw(`
30
+ SELECT indexname
31
+ FROM pg_indexes
32
+ WHERE schemaname = 'public'
33
+ AND tablename = ?
34
+ AND indexname NOT LIKE '%_pkey'
35
+ ORDER BY indexname
36
+ `, [table]);
37
+ return result.rows.map((row) => row.indexname);
38
+ }
39
+ // For other database clients
40
+ return [];
41
+ }
42
+ //# sourceMappingURL=indexes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"indexes.js","sourceRoot":"","sources":["../../../../src/utils/sql-dump/schema/indexes.ts"],"names":[],"mappings":"AAAA,gDAAgD;AAIhD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAU,EAAE,KAAa;IAC3D,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;IAEzC,IAAI,MAAM,KAAK,gBAAgB,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACxD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC;;;;;;KAM7B,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;QACZ,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC;SAAM,IAAI,MAAM,KAAK,OAAO,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;QACrD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC;;KAE7B,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;QAEZ,0DAA0D;QAC1D,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;QACrC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5B,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC/B,CAAC;QACD,OAAO,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC;IACvC,CAAC;SAAM,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC;;;;;;;KAO7B,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;QACZ,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACtD,CAAC;IAED,6BAA6B;IAC7B,OAAO,EAAE,CAAC;AACZ,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { Knex } from 'knex';
2
+ /**
3
+ * Get primary key columns for a table
4
+ */
5
+ export declare function getPrimaryKeyColumns(knex: Knex, table: string): Promise<string[]>;
6
+ //# sourceMappingURL=primary-keys.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"primary-keys.d.ts","sourceRoot":"","sources":["../../../../src/utils/sql-dump/schema/primary-keys.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAEjC;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAmCvF"}
@@ -0,0 +1,41 @@
1
+ // schema/primary-keys.ts - Primary key detection utilities
2
+ /**
3
+ * Get primary key columns for a table
4
+ */
5
+ export async function getPrimaryKeyColumns(knex, table) {
6
+ const client = knex.client.config.client;
7
+ if (client === 'better-sqlite3' || client === 'sqlite3') {
8
+ // SQLite: Use PRAGMA table_info
9
+ const result = await knex.raw(`PRAGMA table_info(${table})`);
10
+ return result
11
+ .filter((col) => col.pk > 0)
12
+ .sort((a, b) => a.pk - b.pk)
13
+ .map((col) => col.name);
14
+ }
15
+ else if (client === 'mysql' || client === 'mysql2') {
16
+ // MySQL: Query information_schema
17
+ const result = await knex.raw(`
18
+ SELECT COLUMN_NAME
19
+ FROM information_schema.KEY_COLUMN_USAGE
20
+ WHERE TABLE_SCHEMA = DATABASE()
21
+ AND TABLE_NAME = ?
22
+ AND CONSTRAINT_NAME = 'PRIMARY'
23
+ ORDER BY ORDINAL_POSITION
24
+ `, [table]);
25
+ return result[0].map((row) => row.COLUMN_NAME);
26
+ }
27
+ else if (client === 'pg') {
28
+ // PostgreSQL: Query information_schema
29
+ const result = await knex.raw(`
30
+ SELECT a.attname AS column_name
31
+ FROM pg_index i
32
+ JOIN pg_attribute a ON a.attrelid = i.indrelid AND a.attnum = ANY(i.indkey)
33
+ WHERE i.indrelid = ?::regclass
34
+ AND i.indisprimary
35
+ ORDER BY a.attnum
36
+ `, [table]);
37
+ return result.rows.map((row) => row.column_name);
38
+ }
39
+ throw new Error(`Unsupported database client: ${client}`);
40
+ }
41
+ //# sourceMappingURL=primary-keys.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"primary-keys.js","sourceRoot":"","sources":["../../../../src/utils/sql-dump/schema/primary-keys.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAI3D;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,IAAU,EAAE,KAAa;IAClE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;IAEzC,IAAI,MAAM,KAAK,gBAAgB,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACxD,gCAAgC;QAChC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,qBAAqB,KAAK,GAAG,CAAC,CAAC;QAC7D,OAAO,MAAM;aACV,MAAM,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;aAChC,IAAI,CAAC,CAAC,CAAM,EAAE,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;aACrC,GAAG,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;SAAM,IAAI,MAAM,KAAK,OAAO,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;QACrD,kCAAkC;QAClC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC;;;;;;;KAO7B,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;QACZ,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACtD,CAAC;SAAM,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QAC3B,uCAAuC;QACvC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC;;;;;;;KAO7B,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;QACZ,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACxD,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,gCAAgC,MAAM,EAAE,CAAC,CAAC;AAC5D,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { Knex } from 'knex';
2
+ import type { DatabaseFormat } from '../types.js';
3
+ /**
4
+ * Get all table names from the database (excluding system tables)
5
+ */
6
+ export declare function getAllTables(knex: Knex, includeKnexTables?: boolean): Promise<string[]>;
7
+ /**
8
+ * Get CREATE TABLE statement for a table using knex-schema-inspector
9
+ * Replaces regex-based SQL conversion with metadata-driven approach
10
+ */
11
+ export declare function getCreateTableStatement(knex: Knex, table: string, targetFormat: DatabaseFormat): Promise<string>;
12
+ //# sourceMappingURL=tables.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tables.d.ts","sourceRoot":"","sources":["../../../../src/utils/sql-dump/schema/tables.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAIjC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAwPlD;;GAEG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,iBAAiB,UAAQ,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CA8B3F;AAED;;;GAGG;AACH,wBAAsB,uBAAuB,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAsHtH"}
@@ -0,0 +1,370 @@
1
+ // schema/tables.ts - Table detection and CREATE TABLE statement generation
2
+ import { SchemaInspector } from 'knex-schema-inspector';
3
+ import { quoteIdentifier } from '../formatters/identifiers.js';
4
+ import { debugLog } from '../../debug-logger.js';
5
+ /**
6
+ * Convert data type from source format to target format using metadata
7
+ */
8
+ function convertDataType(columnType, targetFormat, maxLength) {
9
+ const upperType = columnType.toUpperCase();
10
+ if (targetFormat === 'mysql') {
11
+ // MySQL-specific conversions
12
+ if (upperType.includes('SERIAL') || upperType.includes('BIGSERIAL')) {
13
+ return 'BIGINT AUTO_INCREMENT';
14
+ }
15
+ if (upperType.includes('TEXT')) {
16
+ return 'TEXT';
17
+ }
18
+ if (upperType.includes('VARCHAR')) {
19
+ // Use maxLength from metadata
20
+ const length = maxLength && maxLength <= 191 ? maxLength : 191;
21
+ return `VARCHAR(${length})`;
22
+ }
23
+ if (upperType.includes('TIMESTAMP') || upperType.includes('TIMESTAMPTZ')) {
24
+ return 'DATETIME';
25
+ }
26
+ if (upperType.includes('BOOLEAN') || upperType === 'BOOL') {
27
+ return 'TINYINT(1)';
28
+ }
29
+ if (upperType === 'INTEGER' || upperType === 'INT') {
30
+ return 'INT';
31
+ }
32
+ if (upperType.includes('BIGINT')) {
33
+ return 'BIGINT';
34
+ }
35
+ }
36
+ else if (targetFormat === 'postgresql') {
37
+ // PostgreSQL-specific conversions
38
+ if (upperType.includes('AUTOINCREMENT') || upperType.includes('AUTO_INCREMENT')) {
39
+ return 'SERIAL';
40
+ }
41
+ if (upperType.includes('DATETIME')) {
42
+ return 'TIMESTAMP';
43
+ }
44
+ if (upperType.includes('TINYINT') || upperType === 'BIT') {
45
+ return 'BOOLEAN';
46
+ }
47
+ if (upperType.includes('TEXT')) {
48
+ return 'TEXT';
49
+ }
50
+ if (upperType.includes('VARCHAR')) {
51
+ const length = maxLength || 255;
52
+ return `VARCHAR(${length})`;
53
+ }
54
+ }
55
+ else if (targetFormat === 'sqlite') {
56
+ // SQLite-specific conversions
57
+ if (upperType.includes('SERIAL') || upperType.includes('AUTO_INCREMENT') || upperType.includes('AUTOINCREMENT')) {
58
+ return 'INTEGER';
59
+ }
60
+ if (upperType.includes('VARCHAR') || upperType.includes('TEXT')) {
61
+ return 'TEXT';
62
+ }
63
+ if (upperType.includes('TINYINT') || upperType.includes('BOOLEAN')) {
64
+ return 'INTEGER';
65
+ }
66
+ if (upperType.includes('DATETIME') || upperType.includes('TIMESTAMP')) {
67
+ return 'INTEGER'; // SQLite stores as Unix timestamp
68
+ }
69
+ }
70
+ // Default: return as-is
71
+ return columnType;
72
+ }
73
+ /**
74
+ * Convert default value from SQLite functions to target format
75
+ * Handles: unixepoch() → UNIX_TIMESTAMP() / EXTRACT(epoch FROM NOW())
76
+ * strftime() → DATE_FORMAT() / TO_CHAR()
77
+ */
78
+ function convertDefaultValue(defaultValue, targetFormat) {
79
+ if (!defaultValue) {
80
+ return null;
81
+ }
82
+ const lower = defaultValue.toLowerCase().trim();
83
+ // SQLite unixepoch() conversions
84
+ if (lower.includes('unixepoch()') || lower === 'unixepoch()') {
85
+ if (targetFormat === 'mysql') {
86
+ // MySQL 8.0+: Use CAST to explicitly convert UNIX_TIMESTAMP() to SIGNED INTEGER
87
+ // Wrapped in parentheses for expression syntax
88
+ return '(CAST(UNIX_TIMESTAMP() AS SIGNED))';
89
+ }
90
+ else if (targetFormat === 'postgresql') {
91
+ return 'EXTRACT(epoch FROM NOW())::INTEGER';
92
+ }
93
+ return null; // Remove for SQLite
94
+ }
95
+ // SQLite strftime('%s', 'now') - Unix timestamp (INTEGER)
96
+ // Must check BEFORE generic strftime to handle this specific case
97
+ if (lower.includes("strftime('%s'") || lower.includes('strftime("%s"')) {
98
+ if (targetFormat === 'mysql') {
99
+ // MySQL 8.0+: Use CAST to explicitly convert UNIX_TIMESTAMP() to SIGNED INTEGER
100
+ // Wrapped in parentheses for expression syntax
101
+ return '(CAST(UNIX_TIMESTAMP() AS SIGNED))';
102
+ }
103
+ else if (targetFormat === 'postgresql') {
104
+ return 'EXTRACT(epoch FROM NOW())::INTEGER';
105
+ }
106
+ return null;
107
+ }
108
+ // MySQL UNIX_TIMESTAMP() - already MySQL syntax, needs CAST wrapping
109
+ // Match both "unix_timestamp()" and "UNIX_TIMESTAMP()" case-insensitively
110
+ if (lower.includes('unix_timestamp')) {
111
+ if (targetFormat === 'mysql') {
112
+ // MySQL 8.0+: Wrap UNIX_TIMESTAMP() with CAST for type safety
113
+ return '(CAST(UNIX_TIMESTAMP() AS SIGNED))';
114
+ }
115
+ else if (targetFormat === 'postgresql') {
116
+ return 'EXTRACT(epoch FROM NOW())::INTEGER';
117
+ }
118
+ else if (targetFormat === 'sqlite') {
119
+ return 'unixepoch()';
120
+ }
121
+ return null;
122
+ }
123
+ // SQLite strftime conversions (datetime formats)
124
+ if (lower.includes('strftime')) {
125
+ if (targetFormat === 'mysql') {
126
+ // strftime('%Y-%m-%d %H:%M:%S', 'now') → NOW()
127
+ return 'NOW()';
128
+ }
129
+ else if (targetFormat === 'postgresql') {
130
+ return 'NOW()';
131
+ }
132
+ return null;
133
+ }
134
+ // Remove parentheses for simple values
135
+ let cleanValue = defaultValue;
136
+ if (lower.startsWith('(') && lower.endsWith(')')) {
137
+ cleanValue = defaultValue.substring(1, defaultValue.length - 1);
138
+ }
139
+ // For numeric defaults, normalize floating point values
140
+ // Remove trailing .0 (e.g., 1.0 → 1) to avoid type mismatches
141
+ const trimmed = cleanValue.trim();
142
+ if (/^\d+\.0+$/.test(trimmed)) {
143
+ return trimmed.replace(/\.0+$/, '');
144
+ }
145
+ // Quote string literals if not already quoted and not a number
146
+ if (!/^['"]/.test(trimmed) && !/^-?\d+(\.\d+)?$/.test(trimmed) && !/^(true|false|null|current_timestamp|now\(\)|unix_timestamp\(\))$/i.test(trimmed)) {
147
+ return `'${trimmed}'`;
148
+ }
149
+ return trimmed;
150
+ }
151
+ /**
152
+ * Build column definition from Column metadata
153
+ */
154
+ function buildColumnDefinition(col, targetFormat) {
155
+ const quotedName = quoteIdentifier(col.name, targetFormat);
156
+ let dataType = convertDataType(col.data_type, targetFormat, col.max_length);
157
+ // MySQL: TEXT columns cannot be used in UNIQUE/PRIMARY KEY constraints without prefix length
158
+ // Convert TEXT to VARCHAR(191) for utf8mb4 compatibility (768 bytes ÷ 4 bytes/char = 191)
159
+ if (targetFormat === 'mysql' && dataType.toUpperCase() === 'TEXT') {
160
+ if (col.is_unique || col.is_primary_key || col.foreign_key_table || col.in_composite_unique) {
161
+ dataType = 'VARCHAR(191)';
162
+ }
163
+ }
164
+ let def = `${quotedName} ${dataType}`;
165
+ // Handle NOT NULL constraint
166
+ if (col.is_nullable === false) {
167
+ def += ' NOT NULL';
168
+ }
169
+ // Handle DEFAULT value
170
+ if (col.default_value !== null && col.default_value !== undefined) {
171
+ let convertedDefault = convertDefaultValue(String(col.default_value), targetFormat);
172
+ if (convertedDefault !== null && convertedDefault !== '') {
173
+ // MySQL restrictions for DEFAULT values
174
+ const isTextColumn = dataType.toUpperCase().includes('TEXT') || dataType.toUpperCase().includes('BLOB');
175
+ const isFunctionCall = convertedDefault.includes('(') && convertedDefault.includes(')');
176
+ const isIntegerColumn = dataType.toUpperCase().includes('INT');
177
+ const isBooleanColumn = dataType.toUpperCase().includes('BOOLEAN');
178
+ // PostgreSQL: Convert integer defaults to boolean for BOOLEAN columns
179
+ if (targetFormat === 'postgresql' && isBooleanColumn && /^[01]$/.test(convertedDefault)) {
180
+ convertedDefault = convertedDefault === '1' ? 'TRUE' : 'FALSE';
181
+ }
182
+ if (targetFormat === 'mysql') {
183
+ // MySQL doesn't allow DEFAULT on TEXT/BLOB columns
184
+ if (isTextColumn) {
185
+ // Skip DEFAULT - application must handle at runtime
186
+ }
187
+ // MySQL DOES support certain function calls as DEFAULT for INTEGER columns
188
+ // (e.g., UNIX_TIMESTAMP(), CURRENT_TIMESTAMP)
189
+ // Only skip if conversion returned null (meaning function not supported)
190
+ else {
191
+ def += ` DEFAULT ${convertedDefault}`;
192
+ }
193
+ }
194
+ else {
195
+ def += ` DEFAULT ${convertedDefault}`;
196
+ }
197
+ }
198
+ }
199
+ // Handle AUTO_INCREMENT for MySQL
200
+ if (targetFormat === 'mysql' && col.is_generated && col.generation_expression === null) {
201
+ if (!def.includes('AUTO_INCREMENT')) {
202
+ def += ' AUTO_INCREMENT';
203
+ }
204
+ }
205
+ // Handle UNIQUE constraint (skip if already PRIMARY KEY)
206
+ if (col.is_unique && !col.is_primary_key) {
207
+ def += ' UNIQUE';
208
+ }
209
+ return def;
210
+ }
211
+ /**
212
+ * Build FOREIGN KEY definition from ForeignKey metadata
213
+ */
214
+ function buildForeignKeyDefinition(fk, targetFormat) {
215
+ const quotedColumn = quoteIdentifier(fk.column, targetFormat);
216
+ const quotedForeignTable = quoteIdentifier(fk.foreign_key_table, targetFormat);
217
+ const quotedForeignColumn = quoteIdentifier(fk.foreign_key_column, targetFormat);
218
+ let fkDef = `FOREIGN KEY (${quotedColumn}) REFERENCES ${quotedForeignTable}(${quotedForeignColumn})`;
219
+ // Add ON DELETE clause
220
+ if (fk.on_delete && fk.on_delete !== 'NO ACTION') {
221
+ fkDef += ` ON DELETE ${fk.on_delete}`;
222
+ }
223
+ // Add ON UPDATE clause
224
+ if (fk.on_update && fk.on_update !== 'NO ACTION') {
225
+ fkDef += ` ON UPDATE ${fk.on_update}`;
226
+ }
227
+ return fkDef;
228
+ }
229
+ /**
230
+ * Get all table names from the database (excluding system tables)
231
+ */
232
+ export async function getAllTables(knex, includeKnexTables = false) {
233
+ const client = knex.client.config.client;
234
+ if (client === 'better-sqlite3' || client === 'sqlite3') {
235
+ const knexFilter = includeKnexTables ? '' : "AND name NOT LIKE 'knex_%'";
236
+ const result = await knex.raw(`
237
+ SELECT name FROM sqlite_master
238
+ WHERE type='table'
239
+ AND name NOT LIKE 'sqlite_%'
240
+ ${knexFilter}
241
+ ORDER BY name
242
+ `);
243
+ return result.map((row) => row.name);
244
+ }
245
+ else if (client === 'mysql' || client === 'mysql2') {
246
+ const result = await knex.raw('SHOW TABLES');
247
+ const tableKey = Object.keys(result[0][0])[0];
248
+ const tables = result[0].map((row) => row[tableKey]);
249
+ return includeKnexTables ? tables : tables.filter((t) => !t.startsWith('knex_'));
250
+ }
251
+ else if (client === 'pg') {
252
+ const knexFilter = includeKnexTables ? '' : "AND tablename NOT LIKE 'knex_%'";
253
+ const result = await knex.raw(`
254
+ SELECT tablename FROM pg_tables
255
+ WHERE schemaname = 'public'
256
+ ${knexFilter}
257
+ ORDER BY tablename
258
+ `);
259
+ return result.rows.map((row) => row.tablename);
260
+ }
261
+ throw new Error(`Unsupported database client: ${client}`);
262
+ }
263
+ /**
264
+ * Get CREATE TABLE statement for a table using knex-schema-inspector
265
+ * Replaces regex-based SQL conversion with metadata-driven approach
266
+ */
267
+ export async function getCreateTableStatement(knex, table, targetFormat) {
268
+ const client = knex.client.config.client;
269
+ // Initialize schema inspector (database-agnostic)
270
+ const inspector = SchemaInspector(knex);
271
+ // Get column metadata
272
+ const columns = await inspector.columnInfo(table);
273
+ if (columns.length === 0) {
274
+ throw new Error(`Table ${table} not found or has no columns`);
275
+ }
276
+ // Fix: knex-schema-inspector doesn't detect composite PRIMARY KEYs and UNIQUE constraints from SQLite properly
277
+ // Manually detect them using PRAGMA index_list
278
+ const compositeUniqueConstraints = []; // Track composite UNIQUE constraints
279
+ let compositePrimaryKey = null; // Track composite PRIMARY KEY
280
+ if (client === 'better-sqlite3' || client === 'sqlite3') {
281
+ const indexResult = await knex.raw(`PRAGMA index_list(${table})`);
282
+ // Knex raw() returns an array directly for SQLite
283
+ const indexes = Array.isArray(indexResult) ? indexResult : [];
284
+ for (const index of indexes) {
285
+ // Check for PRIMARY KEY index
286
+ if (index.origin === 'pk' && index.unique === 1) {
287
+ const indexInfoResult = await knex.raw(`PRAGMA index_info(${index.name})`);
288
+ const indexInfo = Array.isArray(indexInfoResult) ? indexInfoResult : [];
289
+ const columnNames = indexInfo.map((idxCol) => idxCol.name);
290
+ if (columnNames.length > 1) {
291
+ // Composite PRIMARY KEY detected
292
+ compositePrimaryKey = columnNames;
293
+ debugLog('DEBUG', `Found composite PRIMARY KEY on ${table}(${columnNames.join(', ')}) from ${index.name}`);
294
+ }
295
+ }
296
+ // Check if this is a UNIQUE index (skip PRIMARY KEY indexes)
297
+ else if (index.unique === 1 && index.origin !== 'pk') {
298
+ // Get columns in this index
299
+ const indexInfoResult = await knex.raw(`PRAGMA index_info(${index.name})`);
300
+ const indexInfo = Array.isArray(indexInfoResult) ? indexInfoResult : [];
301
+ const columnNames = indexInfo.map((idxCol) => idxCol.name);
302
+ if (columnNames.length === 1) {
303
+ // Single-column UNIQUE - mark column as unique
304
+ const col = columns.find(c => c.name === columnNames[0]);
305
+ if (col && !col.is_primary_key) {
306
+ col.is_unique = true;
307
+ debugLog('DEBUG', `Marked ${table}.${col.name} as UNIQUE (single-column from ${index.name})`);
308
+ }
309
+ }
310
+ else if (columnNames.length > 1) {
311
+ // Composite UNIQUE - add to table-level constraints
312
+ compositeUniqueConstraints.push(columnNames);
313
+ debugLog('DEBUG', `Found composite UNIQUE on ${table}(${columnNames.join(', ')}) from ${index.name}`);
314
+ // For MySQL: Convert TEXT to VARCHAR(191) for columns in composite UNIQUE
315
+ if (targetFormat === 'mysql') {
316
+ for (const colName of columnNames) {
317
+ const col = columns.find(c => c.name === colName);
318
+ if (col && !col.is_primary_key) {
319
+ // Mark as part of composite unique (will be converted to VARCHAR later)
320
+ col.in_composite_unique = true;
321
+ }
322
+ }
323
+ }
324
+ }
325
+ }
326
+ }
327
+ }
328
+ // Build column definitions using buildColumnDefinition()
329
+ const columnDefs = columns.map(col => buildColumnDefinition(col, targetFormat));
330
+ // Add PRIMARY KEY constraint (with MySQL prefix length handling)
331
+ // Use composite PRIMARY KEY if detected, otherwise fall back to column metadata
332
+ const pkColumns = compositePrimaryKey || columns.filter(col => col.is_primary_key).map(col => col.name);
333
+ if (pkColumns.length > 0) {
334
+ // For MySQL: Apply (191) prefix to TEXT/long VARCHAR columns
335
+ if (targetFormat === 'mysql') {
336
+ const processedPkCols = pkColumns.map((colName) => {
337
+ const col = columns.find(c => c.name === colName);
338
+ if (col && (col.data_type.toUpperCase() === 'TEXT' ||
339
+ (col.data_type.toUpperCase().includes('VARCHAR') && col.max_length && col.max_length > 191))) {
340
+ return `${quoteIdentifier(colName, targetFormat)}(191)`;
341
+ }
342
+ return quoteIdentifier(colName, targetFormat);
343
+ }).join(', ');
344
+ columnDefs.push(`PRIMARY KEY (${processedPkCols})`);
345
+ }
346
+ else {
347
+ const quotedPkColumns = pkColumns.map(col => quoteIdentifier(col, targetFormat));
348
+ columnDefs.push(`PRIMARY KEY (${quotedPkColumns.join(', ')})`);
349
+ }
350
+ }
351
+ // Add FOREIGN KEY constraints using buildForeignKeyDefinition()
352
+ const foreignKeys = await inspector.foreignKeys(table);
353
+ for (const fk of foreignKeys) {
354
+ columnDefs.push(buildForeignKeyDefinition(fk, targetFormat));
355
+ }
356
+ // Add composite UNIQUE constraints (from SQLite multi-column UNIQUE indexes)
357
+ for (const uniqueCols of compositeUniqueConstraints) {
358
+ const quotedCols = uniqueCols.map(col => quoteIdentifier(col, targetFormat)).join(', ');
359
+ columnDefs.push(`UNIQUE (${quotedCols})`);
360
+ }
361
+ // Build CREATE TABLE statement with IF NOT EXISTS for idempotency
362
+ const quotedTable = quoteIdentifier(table, targetFormat);
363
+ const createSql = `CREATE TABLE IF NOT EXISTS ${quotedTable} (\n ${columnDefs.join(',\n ')}\n)`;
364
+ // Add database-specific table options
365
+ if (targetFormat === 'mysql') {
366
+ return createSql + ' ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;';
367
+ }
368
+ return createSql + ';';
369
+ }
370
+ //# sourceMappingURL=tables.js.map