@zyno-io/dk-server-foundation 26.216.430

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 (663) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +458 -0
  3. package/dist/devconsole/assets/index-CKF3C3kv.css +1 -0
  4. package/dist/devconsole/assets/index-CsHdomhM.js +27 -0
  5. package/dist/devconsole/index.html +13 -0
  6. package/dist/resources/proto/generated/devconsole/devconsole.d.ts +320 -0
  7. package/dist/resources/proto/generated/devconsole/devconsole.d.ts.map +1 -0
  8. package/dist/resources/proto/generated/devconsole/devconsole.js +3751 -0
  9. package/dist/resources/proto/generated/devconsole/devconsole.js.map +1 -0
  10. package/dist/src/app/base.d.ts +36 -0
  11. package/dist/src/app/base.d.ts.map +1 -0
  12. package/dist/src/app/base.js +240 -0
  13. package/dist/src/app/base.js.map +1 -0
  14. package/dist/src/app/config.d.ts +90 -0
  15. package/dist/src/app/config.d.ts.map +1 -0
  16. package/dist/src/app/config.js +33 -0
  17. package/dist/src/app/config.js.map +1 -0
  18. package/dist/src/app/config.loader.d.ts +14 -0
  19. package/dist/src/app/config.loader.d.ts.map +1 -0
  20. package/dist/src/app/config.loader.js +67 -0
  21. package/dist/src/app/config.loader.js.map +1 -0
  22. package/dist/src/app/const.d.ts +3 -0
  23. package/dist/src/app/const.d.ts.map +1 -0
  24. package/dist/src/app/const.js +6 -0
  25. package/dist/src/app/const.js.map +1 -0
  26. package/dist/src/app/dev.d.ts +7 -0
  27. package/dist/src/app/dev.d.ts.map +1 -0
  28. package/dist/src/app/dev.js +105 -0
  29. package/dist/src/app/dev.js.map +1 -0
  30. package/dist/src/app/index.d.ts +7 -0
  31. package/dist/src/app/index.d.ts.map +1 -0
  32. package/dist/src/app/index.js +12 -0
  33. package/dist/src/app/index.js.map +1 -0
  34. package/dist/src/app/openapi.d.ts +4 -0
  35. package/dist/src/app/openapi.d.ts.map +1 -0
  36. package/dist/src/app/openapi.js +6 -0
  37. package/dist/src/app/openapi.js.map +1 -0
  38. package/dist/src/app/resolver.d.ts +11 -0
  39. package/dist/src/app/resolver.d.ts.map +1 -0
  40. package/dist/src/app/resolver.js +60 -0
  41. package/dist/src/app/resolver.js.map +1 -0
  42. package/dist/src/app/shutdown.d.ts +12 -0
  43. package/dist/src/app/shutdown.d.ts.map +1 -0
  44. package/dist/src/app/shutdown.js +63 -0
  45. package/dist/src/app/shutdown.js.map +1 -0
  46. package/dist/src/app/state.d.ts +16 -0
  47. package/dist/src/app/state.d.ts.map +1 -0
  48. package/dist/src/app/state.js +12 -0
  49. package/dist/src/app/state.js.map +1 -0
  50. package/dist/src/auth/index.d.ts +3 -0
  51. package/dist/src/auth/index.d.ts.map +1 -0
  52. package/dist/src/auth/index.js +6 -0
  53. package/dist/src/auth/index.js.map +1 -0
  54. package/dist/src/auth/jwt.d.ts +76 -0
  55. package/dist/src/auth/jwt.d.ts.map +1 -0
  56. package/dist/src/auth/jwt.js +218 -0
  57. package/dist/src/auth/jwt.js.map +1 -0
  58. package/dist/src/auth/provider.d.ts +15 -0
  59. package/dist/src/auth/provider.d.ts.map +1 -0
  60. package/dist/src/auth/provider.js +50 -0
  61. package/dist/src/auth/provider.js.map +1 -0
  62. package/dist/src/cli/dksf-dev.d.ts +3 -0
  63. package/dist/src/cli/dksf-dev.d.ts.map +1 -0
  64. package/dist/src/cli/dksf-dev.js +408 -0
  65. package/dist/src/cli/dksf-dev.js.map +1 -0
  66. package/dist/src/cli/dksf-gen-proto.d.ts +3 -0
  67. package/dist/src/cli/dksf-gen-proto.d.ts.map +1 -0
  68. package/dist/src/cli/dksf-gen-proto.js +164 -0
  69. package/dist/src/cli/dksf-gen-proto.js.map +1 -0
  70. package/dist/src/cli/dksf-install.d.ts +3 -0
  71. package/dist/src/cli/dksf-install.d.ts.map +1 -0
  72. package/dist/src/cli/dksf-install.js +10 -0
  73. package/dist/src/cli/dksf-install.js.map +1 -0
  74. package/dist/src/cli/dksf-test.d.ts +3 -0
  75. package/dist/src/cli/dksf-test.d.ts.map +1 -0
  76. package/dist/src/cli/dksf-test.js +78 -0
  77. package/dist/src/cli/dksf-test.js.map +1 -0
  78. package/dist/src/cli/dksf-update.d.ts +3 -0
  79. package/dist/src/cli/dksf-update.d.ts.map +1 -0
  80. package/dist/src/cli/dksf-update.js +86 -0
  81. package/dist/src/cli/dksf-update.js.map +1 -0
  82. package/dist/src/database/common.d.ts +84 -0
  83. package/dist/src/database/common.d.ts.map +1 -0
  84. package/dist/src/database/common.js +380 -0
  85. package/dist/src/database/common.js.map +1 -0
  86. package/dist/src/database/dialect.d.ts +10 -0
  87. package/dist/src/database/dialect.d.ts.map +1 -0
  88. package/dist/src/database/dialect.js +56 -0
  89. package/dist/src/database/dialect.js.map +1 -0
  90. package/dist/src/database/entity.d.ts +62 -0
  91. package/dist/src/database/entity.d.ts.map +1 -0
  92. package/dist/src/database/entity.js +198 -0
  93. package/dist/src/database/entity.js.map +1 -0
  94. package/dist/src/database/index.d.ts +8 -0
  95. package/dist/src/database/index.d.ts.map +1 -0
  96. package/dist/src/database/index.js +15 -0
  97. package/dist/src/database/index.js.map +1 -0
  98. package/dist/src/database/migration/MigrationResetCommand.d.ts +9 -0
  99. package/dist/src/database/migration/MigrationResetCommand.d.ts.map +1 -0
  100. package/dist/src/database/migration/MigrationResetCommand.js +75 -0
  101. package/dist/src/database/migration/MigrationResetCommand.js.map +1 -0
  102. package/dist/src/database/migration/MigrationRunCommand.d.ts +11 -0
  103. package/dist/src/database/migration/MigrationRunCommand.d.ts.map +1 -0
  104. package/dist/src/database/migration/MigrationRunCommand.js +118 -0
  105. package/dist/src/database/migration/MigrationRunCommand.js.map +1 -0
  106. package/dist/src/database/migration/characters.d.ts +14 -0
  107. package/dist/src/database/migration/characters.d.ts.map +1 -0
  108. package/dist/src/database/migration/characters.js +56 -0
  109. package/dist/src/database/migration/characters.js.map +1 -0
  110. package/dist/src/database/migration/create/MigrationCreateCommand.d.ts +11 -0
  111. package/dist/src/database/migration/create/MigrationCreateCommand.d.ts.map +1 -0
  112. package/dist/src/database/migration/create/MigrationCreateCommand.js +106 -0
  113. package/dist/src/database/migration/create/MigrationCreateCommand.js.map +1 -0
  114. package/dist/src/database/migration/create/comparator.d.ts +3 -0
  115. package/dist/src/database/migration/create/comparator.d.ts.map +1 -0
  116. package/dist/src/database/migration/create/comparator.js +408 -0
  117. package/dist/src/database/migration/create/comparator.js.map +1 -0
  118. package/dist/src/database/migration/create/db-reader.d.ts +5 -0
  119. package/dist/src/database/migration/create/db-reader.d.ts.map +1 -0
  120. package/dist/src/database/migration/create/db-reader.js +473 -0
  121. package/dist/src/database/migration/create/db-reader.js.map +1 -0
  122. package/dist/src/database/migration/create/ddl-generator.d.ts +3 -0
  123. package/dist/src/database/migration/create/ddl-generator.d.ts.map +1 -0
  124. package/dist/src/database/migration/create/ddl-generator.js +725 -0
  125. package/dist/src/database/migration/create/ddl-generator.js.map +1 -0
  126. package/dist/src/database/migration/create/entity-reader.d.ts +4 -0
  127. package/dist/src/database/migration/create/entity-reader.d.ts.map +1 -0
  128. package/dist/src/database/migration/create/entity-reader.js +417 -0
  129. package/dist/src/database/migration/create/entity-reader.js.map +1 -0
  130. package/dist/src/database/migration/create/file-generator.d.ts +3 -0
  131. package/dist/src/database/migration/create/file-generator.d.ts.map +1 -0
  132. package/dist/src/database/migration/create/file-generator.js +62 -0
  133. package/dist/src/database/migration/create/file-generator.js.map +1 -0
  134. package/dist/src/database/migration/create/prompt.d.ts +4 -0
  135. package/dist/src/database/migration/create/prompt.d.ts.map +1 -0
  136. package/dist/src/database/migration/create/prompt.js +55 -0
  137. package/dist/src/database/migration/create/prompt.js.map +1 -0
  138. package/dist/src/database/migration/create/schema-model.d.ts +109 -0
  139. package/dist/src/database/migration/create/schema-model.d.ts.map +1 -0
  140. package/dist/src/database/migration/create/schema-model.js +24 -0
  141. package/dist/src/database/migration/create/schema-model.js.map +1 -0
  142. package/dist/src/database/migration/helpers.d.ts +3 -0
  143. package/dist/src/database/migration/helpers.d.ts.map +1 -0
  144. package/dist/src/database/migration/helpers.js +13 -0
  145. package/dist/src/database/migration/helpers.js.map +1 -0
  146. package/dist/src/database/migration/index.d.ts +9 -0
  147. package/dist/src/database/migration/index.d.ts.map +1 -0
  148. package/dist/src/database/migration/index.js +43 -0
  149. package/dist/src/database/migration/index.js.map +1 -0
  150. package/dist/src/database/migration/migration.entity.d.ts +8 -0
  151. package/dist/src/database/migration/migration.entity.d.ts.map +1 -0
  152. package/dist/src/database/migration/migration.entity.js +16 -0
  153. package/dist/src/database/migration/migration.entity.js.map +1 -0
  154. package/dist/src/database/mysql.d.ts +16 -0
  155. package/dist/src/database/mysql.d.ts.map +1 -0
  156. package/dist/src/database/mysql.js +140 -0
  157. package/dist/src/database/mysql.js.map +1 -0
  158. package/dist/src/database/postgres.d.ts +16 -0
  159. package/dist/src/database/postgres.d.ts.map +1 -0
  160. package/dist/src/database/postgres.js +91 -0
  161. package/dist/src/database/postgres.js.map +1 -0
  162. package/dist/src/database/types.d.ts +21 -0
  163. package/dist/src/database/types.d.ts.map +1 -0
  164. package/dist/src/database/types.js +27 -0
  165. package/dist/src/database/types.js.map +1 -0
  166. package/dist/src/devconsole/devconsole.controller.d.ts +7 -0
  167. package/dist/src/devconsole/devconsole.controller.d.ts.map +1 -0
  168. package/dist/src/devconsole/devconsole.controller.js +82 -0
  169. package/dist/src/devconsole/devconsole.controller.js.map +1 -0
  170. package/dist/src/devconsole/devconsole.middleware.d.ts +12 -0
  171. package/dist/src/devconsole/devconsole.middleware.d.ts.map +1 -0
  172. package/dist/src/devconsole/devconsole.middleware.js +28 -0
  173. package/dist/src/devconsole/devconsole.middleware.js.map +1 -0
  174. package/dist/src/devconsole/devconsole.srpc.d.ts +14 -0
  175. package/dist/src/devconsole/devconsole.srpc.d.ts.map +1 -0
  176. package/dist/src/devconsole/devconsole.srpc.js +94 -0
  177. package/dist/src/devconsole/devconsole.srpc.js.map +1 -0
  178. package/dist/src/devconsole/devconsole.store.d.ts +101 -0
  179. package/dist/src/devconsole/devconsole.store.d.ts.map +1 -0
  180. package/dist/src/devconsole/devconsole.store.js +125 -0
  181. package/dist/src/devconsole/devconsole.store.js.map +1 -0
  182. package/dist/src/devconsole/devconsole.ws.d.ts +18 -0
  183. package/dist/src/devconsole/devconsole.ws.d.ts.map +1 -0
  184. package/dist/src/devconsole/devconsole.ws.js +470 -0
  185. package/dist/src/devconsole/devconsole.ws.js.map +1 -0
  186. package/dist/src/devconsole/index.d.ts +2 -0
  187. package/dist/src/devconsole/index.d.ts.map +1 -0
  188. package/dist/src/devconsole/index.js +6 -0
  189. package/dist/src/devconsole/index.js.map +1 -0
  190. package/dist/src/devconsole/patches.d.ts +6 -0
  191. package/dist/src/devconsole/patches.d.ts.map +1 -0
  192. package/dist/src/devconsole/patches.js +397 -0
  193. package/dist/src/devconsole/patches.js.map +1 -0
  194. package/dist/src/health/health.module.d.ts +6 -0
  195. package/dist/src/health/health.module.d.ts.map +1 -0
  196. package/dist/src/health/health.module.js +32 -0
  197. package/dist/src/health/health.module.js.map +1 -0
  198. package/dist/src/health/healthcheck.controller.d.ts +10 -0
  199. package/dist/src/health/healthcheck.controller.d.ts.map +1 -0
  200. package/dist/src/health/healthcheck.controller.js +30 -0
  201. package/dist/src/health/healthcheck.controller.js.map +1 -0
  202. package/dist/src/health/healthcheck.service.d.ts +13 -0
  203. package/dist/src/health/healthcheck.service.d.ts.map +1 -0
  204. package/dist/src/health/healthcheck.service.js +33 -0
  205. package/dist/src/health/healthcheck.service.js.map +1 -0
  206. package/dist/src/health/index.d.ts +3 -0
  207. package/dist/src/health/index.d.ts.map +1 -0
  208. package/dist/src/health/index.js +6 -0
  209. package/dist/src/health/index.js.map +1 -0
  210. package/dist/src/helpers/async/context.d.ts +11 -0
  211. package/dist/src/helpers/async/context.d.ts.map +1 -0
  212. package/dist/src/helpers/async/context.js +75 -0
  213. package/dist/src/helpers/async/context.js.map +1 -0
  214. package/dist/src/helpers/async/process.d.ts +16 -0
  215. package/dist/src/helpers/async/process.d.ts.map +1 -0
  216. package/dist/src/helpers/async/process.js +44 -0
  217. package/dist/src/helpers/async/process.js.map +1 -0
  218. package/dist/src/helpers/async/promise.d.ts +5 -0
  219. package/dist/src/helpers/async/promise.d.ts.map +1 -0
  220. package/dist/src/helpers/async/promise.js +27 -0
  221. package/dist/src/helpers/async/promise.js.map +1 -0
  222. package/dist/src/helpers/data/array.d.ts +3 -0
  223. package/dist/src/helpers/data/array.d.ts.map +1 -0
  224. package/dist/src/helpers/data/array.js +17 -0
  225. package/dist/src/helpers/data/array.js.map +1 -0
  226. package/dist/src/helpers/data/objects.d.ts +12 -0
  227. package/dist/src/helpers/data/objects.d.ts.map +1 -0
  228. package/dist/src/helpers/data/objects.js +75 -0
  229. package/dist/src/helpers/data/objects.js.map +1 -0
  230. package/dist/src/helpers/data/serialization.d.ts +4 -0
  231. package/dist/src/helpers/data/serialization.d.ts.map +1 -0
  232. package/dist/src/helpers/data/serialization.js +15 -0
  233. package/dist/src/helpers/data/serialization.js.map +1 -0
  234. package/dist/src/helpers/data/transformer.d.ts +13 -0
  235. package/dist/src/helpers/data/transformer.d.ts.map +1 -0
  236. package/dist/src/helpers/data/transformer.js +55 -0
  237. package/dist/src/helpers/data/transformer.js.map +1 -0
  238. package/dist/src/helpers/framework/decorators.d.ts +5 -0
  239. package/dist/src/helpers/framework/decorators.d.ts.map +1 -0
  240. package/dist/src/helpers/framework/decorators.js +39 -0
  241. package/dist/src/helpers/framework/decorators.js.map +1 -0
  242. package/dist/src/helpers/framework/event.d.ts +3 -0
  243. package/dist/src/helpers/framework/event.d.ts.map +1 -0
  244. package/dist/src/helpers/framework/event.js +20 -0
  245. package/dist/src/helpers/framework/event.js.map +1 -0
  246. package/dist/src/helpers/framework/injection.d.ts +7 -0
  247. package/dist/src/helpers/framework/injection.d.ts.map +1 -0
  248. package/dist/src/helpers/framework/injection.js +52 -0
  249. package/dist/src/helpers/framework/injection.js.map +1 -0
  250. package/dist/src/helpers/index.d.ts +22 -0
  251. package/dist/src/helpers/index.d.ts.map +1 -0
  252. package/dist/src/helpers/index.js +32 -0
  253. package/dist/src/helpers/index.js.map +1 -0
  254. package/dist/src/helpers/io/package.d.ts +5 -0
  255. package/dist/src/helpers/io/package.d.ts.map +1 -0
  256. package/dist/src/helpers/io/package.js +31 -0
  257. package/dist/src/helpers/io/package.js.map +1 -0
  258. package/dist/src/helpers/io/stream.d.ts +18 -0
  259. package/dist/src/helpers/io/stream.d.ts.map +1 -0
  260. package/dist/src/helpers/io/stream.js +91 -0
  261. package/dist/src/helpers/io/stream.js.map +1 -0
  262. package/dist/src/helpers/redis/broadcast.d.ts +13 -0
  263. package/dist/src/helpers/redis/broadcast.d.ts.map +1 -0
  264. package/dist/src/helpers/redis/broadcast.js +100 -0
  265. package/dist/src/helpers/redis/broadcast.js.map +1 -0
  266. package/dist/src/helpers/redis/cache.d.ts +7 -0
  267. package/dist/src/helpers/redis/cache.d.ts.map +1 -0
  268. package/dist/src/helpers/redis/cache.js +28 -0
  269. package/dist/src/helpers/redis/cache.js.map +1 -0
  270. package/dist/src/helpers/redis/mutex.d.ts +24 -0
  271. package/dist/src/helpers/redis/mutex.d.ts.map +1 -0
  272. package/dist/src/helpers/redis/mutex.js +240 -0
  273. package/dist/src/helpers/redis/mutex.js.map +1 -0
  274. package/dist/src/helpers/redis/redis.d.ts +11 -0
  275. package/dist/src/helpers/redis/redis.d.ts.map +1 -0
  276. package/dist/src/helpers/redis/redis.js +59 -0
  277. package/dist/src/helpers/redis/redis.js.map +1 -0
  278. package/dist/src/helpers/security/crypto.d.ts +26 -0
  279. package/dist/src/helpers/security/crypto.d.ts.map +1 -0
  280. package/dist/src/helpers/security/crypto.js +121 -0
  281. package/dist/src/helpers/security/crypto.js.map +1 -0
  282. package/dist/src/helpers/security/validation.d.ts +4 -0
  283. package/dist/src/helpers/security/validation.d.ts.map +1 -0
  284. package/dist/src/helpers/security/validation.js +25 -0
  285. package/dist/src/helpers/security/validation.js.map +1 -0
  286. package/dist/src/helpers/utils/date.d.ts +4 -0
  287. package/dist/src/helpers/utils/date.d.ts.map +1 -0
  288. package/dist/src/helpers/utils/date.js +23 -0
  289. package/dist/src/helpers/utils/date.js.map +1 -0
  290. package/dist/src/helpers/utils/error.d.ts +24 -0
  291. package/dist/src/helpers/utils/error.d.ts.map +1 -0
  292. package/dist/src/helpers/utils/error.js +168 -0
  293. package/dist/src/helpers/utils/error.js.map +1 -0
  294. package/dist/src/helpers/utils/jsx.d.ts +3 -0
  295. package/dist/src/helpers/utils/jsx.d.ts.map +1 -0
  296. package/dist/src/helpers/utils/jsx.js +13 -0
  297. package/dist/src/helpers/utils/jsx.js.map +1 -0
  298. package/dist/src/helpers/utils/uuid.d.ts +3 -0
  299. package/dist/src/helpers/utils/uuid.d.ts.map +1 -0
  300. package/dist/src/helpers/utils/uuid.js +14 -0
  301. package/dist/src/helpers/utils/uuid.js.map +1 -0
  302. package/dist/src/http/auth.d.ts +46 -0
  303. package/dist/src/http/auth.d.ts.map +1 -0
  304. package/dist/src/http/auth.js +162 -0
  305. package/dist/src/http/auth.js.map +1 -0
  306. package/dist/src/http/context.d.ts +5 -0
  307. package/dist/src/http/context.d.ts.map +1 -0
  308. package/dist/src/http/context.js +22 -0
  309. package/dist/src/http/context.js.map +1 -0
  310. package/dist/src/http/cors.d.ts +36 -0
  311. package/dist/src/http/cors.d.ts.map +1 -0
  312. package/dist/src/http/cors.js +171 -0
  313. package/dist/src/http/cors.js.map +1 -0
  314. package/dist/src/http/errors.d.ts +3 -0
  315. package/dist/src/http/errors.d.ts.map +1 -0
  316. package/dist/src/http/errors.js +10 -0
  317. package/dist/src/http/errors.js.map +1 -0
  318. package/dist/src/http/index.d.ts +24 -0
  319. package/dist/src/http/index.d.ts.map +1 -0
  320. package/dist/src/http/index.js +25 -0
  321. package/dist/src/http/index.js.map +1 -0
  322. package/dist/src/http/kernel.d.ts +17 -0
  323. package/dist/src/http/kernel.d.ts.map +1 -0
  324. package/dist/src/http/kernel.js +133 -0
  325. package/dist/src/http/kernel.js.map +1 -0
  326. package/dist/src/http/middleware.d.ts +12 -0
  327. package/dist/src/http/middleware.d.ts.map +1 -0
  328. package/dist/src/http/middleware.js +61 -0
  329. package/dist/src/http/middleware.js.map +1 -0
  330. package/dist/src/http/overrides.d.ts +2 -0
  331. package/dist/src/http/overrides.d.ts.map +1 -0
  332. package/dist/src/http/overrides.js +19 -0
  333. package/dist/src/http/overrides.js.map +1 -0
  334. package/dist/src/http/store.d.ts +33 -0
  335. package/dist/src/http/store.d.ts.map +1 -0
  336. package/dist/src/http/store.js +102 -0
  337. package/dist/src/http/store.js.map +1 -0
  338. package/dist/src/http/uploads.d.ts +7 -0
  339. package/dist/src/http/uploads.d.ts.map +1 -0
  340. package/dist/src/http/uploads.js +8 -0
  341. package/dist/src/http/uploads.js.map +1 -0
  342. package/dist/src/http/workflow.d.ts +18 -0
  343. package/dist/src/http/workflow.d.ts.map +1 -0
  344. package/dist/src/http/workflow.js +181 -0
  345. package/dist/src/http/workflow.js.map +1 -0
  346. package/dist/src/index.d.ts +13 -0
  347. package/dist/src/index.d.ts.map +1 -0
  348. package/dist/src/index.js +25 -0
  349. package/dist/src/index.js.map +1 -0
  350. package/dist/src/services/cli/invoke.d.ts +5 -0
  351. package/dist/src/services/cli/invoke.d.ts.map +1 -0
  352. package/dist/src/services/cli/invoke.js +45 -0
  353. package/dist/src/services/cli/invoke.js.map +1 -0
  354. package/dist/src/services/cli/repl-context.d.ts +13 -0
  355. package/dist/src/services/cli/repl-context.d.ts.map +1 -0
  356. package/dist/src/services/cli/repl-context.js +60 -0
  357. package/dist/src/services/cli/repl-context.js.map +1 -0
  358. package/dist/src/services/cli/repl.d.ts +5 -0
  359. package/dist/src/services/cli/repl.d.ts.map +1 -0
  360. package/dist/src/services/cli/repl.js +32 -0
  361. package/dist/src/services/cli/repl.js.map +1 -0
  362. package/dist/src/services/cli.d.ts +12 -0
  363. package/dist/src/services/cli.d.ts.map +1 -0
  364. package/dist/src/services/cli.js +76 -0
  365. package/dist/src/services/cli.js.map +1 -0
  366. package/dist/src/services/index.d.ts +7 -0
  367. package/dist/src/services/index.d.ts.map +1 -0
  368. package/dist/src/services/index.js +10 -0
  369. package/dist/src/services/index.js.map +1 -0
  370. package/dist/src/services/leader.d.ts +32 -0
  371. package/dist/src/services/leader.d.ts.map +1 -0
  372. package/dist/src/services/leader.js +174 -0
  373. package/dist/src/services/leader.js.map +1 -0
  374. package/dist/src/services/logger.d.ts +35 -0
  375. package/dist/src/services/logger.d.ts.map +1 -0
  376. package/dist/src/services/logger.js +245 -0
  377. package/dist/src/services/logger.js.map +1 -0
  378. package/dist/src/services/mail/index.d.ts +61 -0
  379. package/dist/src/services/mail/index.d.ts.map +1 -0
  380. package/dist/src/services/mail/index.js +90 -0
  381. package/dist/src/services/mail/index.js.map +1 -0
  382. package/dist/src/services/mail/postmark.d.ts +11 -0
  383. package/dist/src/services/mail/postmark.d.ts.map +1 -0
  384. package/dist/src/services/mail/postmark.js +42 -0
  385. package/dist/src/services/mail/postmark.js.map +1 -0
  386. package/dist/src/services/mail/smtp.d.ts +11 -0
  387. package/dist/src/services/mail/smtp.d.ts.map +1 -0
  388. package/dist/src/services/mail/smtp.js +61 -0
  389. package/dist/src/services/mail/smtp.js.map +1 -0
  390. package/dist/src/services/mesh.d.ts +65 -0
  391. package/dist/src/services/mesh.d.ts.map +1 -0
  392. package/dist/src/services/mesh.js +422 -0
  393. package/dist/src/services/mesh.js.map +1 -0
  394. package/dist/src/services/worker/bootstrap.d.ts +3 -0
  395. package/dist/src/services/worker/bootstrap.d.ts.map +1 -0
  396. package/dist/src/services/worker/bootstrap.js +64 -0
  397. package/dist/src/services/worker/bootstrap.js.map +1 -0
  398. package/dist/src/services/worker/cli.d.ts +11 -0
  399. package/dist/src/services/worker/cli.d.ts.map +1 -0
  400. package/dist/src/services/worker/cli.js +43 -0
  401. package/dist/src/services/worker/cli.js.map +1 -0
  402. package/dist/src/services/worker/entity.d.ts +18 -0
  403. package/dist/src/services/worker/entity.d.ts.map +1 -0
  404. package/dist/src/services/worker/entity.js +16 -0
  405. package/dist/src/services/worker/entity.js.map +1 -0
  406. package/dist/src/services/worker/index.d.ts +9 -0
  407. package/dist/src/services/worker/index.d.ts.map +1 -0
  408. package/dist/src/services/worker/index.js +40 -0
  409. package/dist/src/services/worker/index.js.map +1 -0
  410. package/dist/src/services/worker/queue.d.ts +8 -0
  411. package/dist/src/services/worker/queue.d.ts.map +1 -0
  412. package/dist/src/services/worker/queue.js +32 -0
  413. package/dist/src/services/worker/queue.js.map +1 -0
  414. package/dist/src/services/worker/recorder.d.ts +16 -0
  415. package/dist/src/services/worker/recorder.d.ts.map +1 -0
  416. package/dist/src/services/worker/recorder.js +168 -0
  417. package/dist/src/services/worker/recorder.js.map +1 -0
  418. package/dist/src/services/worker/runner.d.ts +21 -0
  419. package/dist/src/services/worker/runner.d.ts.map +1 -0
  420. package/dist/src/services/worker/runner.js +156 -0
  421. package/dist/src/services/worker/runner.js.map +1 -0
  422. package/dist/src/services/worker/types.d.ts +26 -0
  423. package/dist/src/services/worker/types.d.ts.map +1 -0
  424. package/dist/src/services/worker/types.js +29 -0
  425. package/dist/src/services/worker/types.js.map +1 -0
  426. package/dist/src/srpc/SrpcByteStream.d.ts +67 -0
  427. package/dist/src/srpc/SrpcByteStream.d.ts.map +1 -0
  428. package/dist/src/srpc/SrpcByteStream.js +319 -0
  429. package/dist/src/srpc/SrpcByteStream.js.map +1 -0
  430. package/dist/src/srpc/SrpcClient.d.ts +75 -0
  431. package/dist/src/srpc/SrpcClient.d.ts.map +1 -0
  432. package/dist/src/srpc/SrpcClient.js +445 -0
  433. package/dist/src/srpc/SrpcClient.js.map +1 -0
  434. package/dist/src/srpc/SrpcServer.d.ts +80 -0
  435. package/dist/src/srpc/SrpcServer.d.ts.map +1 -0
  436. package/dist/src/srpc/SrpcServer.js +561 -0
  437. package/dist/src/srpc/SrpcServer.js.map +1 -0
  438. package/dist/src/srpc/index.d.ts +7 -0
  439. package/dist/src/srpc/index.d.ts.map +1 -0
  440. package/dist/src/srpc/index.js +12 -0
  441. package/dist/src/srpc/index.js.map +1 -0
  442. package/dist/src/srpc/types.d.ts +131 -0
  443. package/dist/src/srpc/types.d.ts.map +1 -0
  444. package/dist/src/srpc/types.js +65 -0
  445. package/dist/src/srpc/types.js.map +1 -0
  446. package/dist/src/telemetry/index.d.ts +2 -0
  447. package/dist/src/telemetry/index.d.ts.map +1 -0
  448. package/dist/src/telemetry/index.js +5 -0
  449. package/dist/src/telemetry/index.js.map +1 -0
  450. package/dist/src/telemetry/otel/MariaDBInstrumentation.d.ts +22 -0
  451. package/dist/src/telemetry/otel/MariaDBInstrumentation.d.ts.map +1 -0
  452. package/dist/src/telemetry/otel/MariaDBInstrumentation.js +248 -0
  453. package/dist/src/telemetry/otel/MariaDBInstrumentation.js.map +1 -0
  454. package/dist/src/telemetry/otel/helpers.d.ts +27 -0
  455. package/dist/src/telemetry/otel/helpers.d.ts.map +1 -0
  456. package/dist/src/telemetry/otel/helpers.js +126 -0
  457. package/dist/src/telemetry/otel/helpers.js.map +1 -0
  458. package/dist/src/telemetry/otel/index.d.ts +14 -0
  459. package/dist/src/telemetry/otel/index.d.ts.map +1 -0
  460. package/dist/src/telemetry/otel/index.js +132 -0
  461. package/dist/src/telemetry/otel/index.js.map +1 -0
  462. package/dist/src/telemetry/otel/metrics.controller.d.ts +6 -0
  463. package/dist/src/telemetry/otel/metrics.controller.d.ts.map +1 -0
  464. package/dist/src/telemetry/otel/metrics.controller.js +63 -0
  465. package/dist/src/telemetry/otel/metrics.controller.js.map +1 -0
  466. package/dist/src/telemetry/sentry.d.ts +9 -0
  467. package/dist/src/telemetry/sentry.d.ts.map +1 -0
  468. package/dist/src/telemetry/sentry.js +62 -0
  469. package/dist/src/telemetry/sentry.js.map +1 -0
  470. package/dist/src/testing/expect.d.ts +25 -0
  471. package/dist/src/testing/expect.d.ts.map +1 -0
  472. package/dist/src/testing/expect.js +151 -0
  473. package/dist/src/testing/expect.js.map +1 -0
  474. package/dist/src/testing/fixtures.d.ts +19 -0
  475. package/dist/src/testing/fixtures.d.ts.map +1 -0
  476. package/dist/src/testing/fixtures.js +69 -0
  477. package/dist/src/testing/fixtures.js.map +1 -0
  478. package/dist/src/testing/index.d.ts +260 -0
  479. package/dist/src/testing/index.d.ts.map +1 -0
  480. package/dist/src/testing/index.js +345 -0
  481. package/dist/src/testing/index.js.map +1 -0
  482. package/dist/src/testing/requests.d.ts +10 -0
  483. package/dist/src/testing/requests.d.ts.map +1 -0
  484. package/dist/src/testing/requests.js +56 -0
  485. package/dist/src/testing/requests.js.map +1 -0
  486. package/dist/src/testing/sql.d.ts +11 -0
  487. package/dist/src/testing/sql.d.ts.map +1 -0
  488. package/dist/src/testing/sql.js +55 -0
  489. package/dist/src/testing/sql.js.map +1 -0
  490. package/dist/src/types/index.d.ts +57 -0
  491. package/dist/src/types/index.d.ts.map +1 -0
  492. package/dist/src/types/index.js +73 -0
  493. package/dist/src/types/index.js.map +1 -0
  494. package/dist/src/types/phone.d.ts +11 -0
  495. package/dist/src/types/phone.d.ts.map +1 -0
  496. package/dist/src/types/phone.js +73 -0
  497. package/dist/src/types/phone.js.map +1 -0
  498. package/docs/.vitepress/config.mts +79 -0
  499. package/docs/.yarnrc.yml +1 -0
  500. package/docs/content/CONTRIBUTING.md +140 -0
  501. package/docs/content/README-DEV.md +142 -0
  502. package/docs/content/README.md +39 -0
  503. package/docs/content/authentication.md +215 -0
  504. package/docs/content/cli.md +335 -0
  505. package/docs/content/configuration.md +175 -0
  506. package/docs/content/database.md +422 -0
  507. package/docs/content/devconsole.md +123 -0
  508. package/docs/content/getting-started.md +154 -0
  509. package/docs/content/guides/test-migration-guide.md +351 -0
  510. package/docs/content/health.md +54 -0
  511. package/docs/content/helpers.md +322 -0
  512. package/docs/content/http.md +253 -0
  513. package/docs/content/index.md +147 -0
  514. package/docs/content/leader-service.md +98 -0
  515. package/docs/content/logging.md +150 -0
  516. package/docs/content/mail.md +161 -0
  517. package/docs/content/mesh-service.md +204 -0
  518. package/docs/content/public/images/devconsole/01-dashboard.png +0 -0
  519. package/docs/content/public/images/devconsole/02-routes.png +0 -0
  520. package/docs/content/public/images/devconsole/03-openapi.png +0 -0
  521. package/docs/content/public/images/devconsole/04-requests.png +0 -0
  522. package/docs/content/public/images/devconsole/05-srpc.png +0 -0
  523. package/docs/content/public/images/devconsole/06-database.png +0 -0
  524. package/docs/content/public/images/devconsole/07-health.png +0 -0
  525. package/docs/content/public/images/devconsole/08-mutex.png +0 -0
  526. package/docs/content/public/images/devconsole/09-repl.png +0 -0
  527. package/docs/content/public/images/devconsole/10-workers.png +0 -0
  528. package/docs/content/redis.md +168 -0
  529. package/docs/content/srpc.md +261 -0
  530. package/docs/content/telemetry.md +166 -0
  531. package/docs/content/testing.md +222 -0
  532. package/docs/content/types.md +215 -0
  533. package/docs/content/worker.md +177 -0
  534. package/docs/package.json +16 -0
  535. package/docs/scripts/README-SCREENSHOTS.md +145 -0
  536. package/docs/scripts/capture-devconsole-screenshots.js +184 -0
  537. package/docs/yarn.lock +2408 -0
  538. package/package.json +144 -0
  539. package/patches/@deepkit+type+1.0.19.patch +38 -0
  540. package/patches/deepkit-openapi-core+0.0.9.patch +62 -0
  541. package/src/app/base.ts +253 -0
  542. package/src/app/config.loader.ts +66 -0
  543. package/src/app/config.ts +119 -0
  544. package/src/app/const.ts +4 -0
  545. package/src/app/dev.ts +92 -0
  546. package/src/app/index.ts +6 -0
  547. package/src/app/openapi.ts +3 -0
  548. package/src/app/resolver.ts +49 -0
  549. package/src/app/shutdown.ts +55 -0
  550. package/src/app/state.ts +19 -0
  551. package/src/auth/index.ts +2 -0
  552. package/src/auth/jwt.ts +275 -0
  553. package/src/auth/provider.ts +57 -0
  554. package/src/cli/dksf-dev.ts +416 -0
  555. package/src/cli/dksf-gen-proto.ts +176 -0
  556. package/src/cli/dksf-install.ts +11 -0
  557. package/src/cli/dksf-test.ts +84 -0
  558. package/src/cli/dksf-update.ts +101 -0
  559. package/src/database/common.ts +385 -0
  560. package/src/database/dialect.ts +43 -0
  561. package/src/database/entity.ts +285 -0
  562. package/src/database/index.ts +7 -0
  563. package/src/database/migration/MigrationResetCommand.ts +72 -0
  564. package/src/database/migration/MigrationRunCommand.ts +118 -0
  565. package/src/database/migration/characters.ts +53 -0
  566. package/src/database/migration/create/MigrationCreateCommand.ts +96 -0
  567. package/src/database/migration/create/comparator.ts +467 -0
  568. package/src/database/migration/create/db-reader.ts +510 -0
  569. package/src/database/migration/create/ddl-generator.ts +755 -0
  570. package/src/database/migration/create/entity-reader.ts +471 -0
  571. package/src/database/migration/create/file-generator.ts +57 -0
  572. package/src/database/migration/create/prompt.ts +49 -0
  573. package/src/database/migration/create/schema-model.ts +102 -0
  574. package/src/database/migration/helpers.ts +7 -0
  575. package/src/database/migration/index.ts +35 -0
  576. package/src/database/migration/migration.entity.ts +10 -0
  577. package/src/database/mysql.ts +140 -0
  578. package/src/database/postgres.ts +97 -0
  579. package/src/database/types.ts +18 -0
  580. package/src/devconsole/devconsole.controller.ts +59 -0
  581. package/src/devconsole/devconsole.middleware.ts +23 -0
  582. package/src/devconsole/devconsole.srpc.ts +94 -0
  583. package/src/devconsole/devconsole.store.ts +190 -0
  584. package/src/devconsole/devconsole.ws.ts +491 -0
  585. package/src/devconsole/index.ts +1 -0
  586. package/src/devconsole/patches.ts +428 -0
  587. package/src/health/health.module.ts +30 -0
  588. package/src/health/healthcheck.controller.ts +17 -0
  589. package/src/health/healthcheck.service.ts +28 -0
  590. package/src/health/index.ts +2 -0
  591. package/src/helpers/async/context.ts +67 -0
  592. package/src/helpers/async/process.ts +49 -0
  593. package/src/helpers/async/promise.ts +16 -0
  594. package/src/helpers/data/array.ts +11 -0
  595. package/src/helpers/data/objects.ts +64 -0
  596. package/src/helpers/data/serialization.ts +11 -0
  597. package/src/helpers/data/transformer.ts +54 -0
  598. package/src/helpers/framework/decorators.ts +27 -0
  599. package/src/helpers/framework/event.ts +11 -0
  600. package/src/helpers/framework/injection.ts +47 -0
  601. package/src/helpers/index.ts +34 -0
  602. package/src/helpers/io/package.ts +26 -0
  603. package/src/helpers/io/stream.ts +79 -0
  604. package/src/helpers/redis/broadcast.ts +96 -0
  605. package/src/helpers/redis/cache.ts +28 -0
  606. package/src/helpers/redis/mutex.ts +260 -0
  607. package/src/helpers/redis/redis.ts +60 -0
  608. package/src/helpers/security/crypto.ts +133 -0
  609. package/src/helpers/security/validation.ts +16 -0
  610. package/src/helpers/utils/date.ts +13 -0
  611. package/src/helpers/utils/error.ts +155 -0
  612. package/src/helpers/utils/jsx.ts +8 -0
  613. package/src/helpers/utils/uuid.ts +8 -0
  614. package/src/http/auth.ts +156 -0
  615. package/src/http/context.ts +15 -0
  616. package/src/http/cors.ts +159 -0
  617. package/src/http/errors.ts +9 -0
  618. package/src/http/index.ts +19 -0
  619. package/src/http/kernel.ts +138 -0
  620. package/src/http/middleware.ts +59 -0
  621. package/src/http/overrides.ts +20 -0
  622. package/src/http/store.ts +86 -0
  623. package/src/http/uploads.ts +6 -0
  624. package/src/http/workflow.ts +167 -0
  625. package/src/index.ts +19 -0
  626. package/src/services/cli/invoke.ts +39 -0
  627. package/src/services/cli/repl-context.ts +63 -0
  628. package/src/services/cli/repl.ts +22 -0
  629. package/src/services/cli.ts +74 -0
  630. package/src/services/index.ts +6 -0
  631. package/src/services/leader.ts +201 -0
  632. package/src/services/logger.ts +258 -0
  633. package/src/services/mail/index.ts +117 -0
  634. package/src/services/mail/postmark.ts +37 -0
  635. package/src/services/mail/smtp.ts +46 -0
  636. package/src/services/mesh.ts +508 -0
  637. package/src/services/worker/bootstrap.ts +53 -0
  638. package/src/services/worker/cli.ts +32 -0
  639. package/src/services/worker/entity.ts +22 -0
  640. package/src/services/worker/index.ts +30 -0
  641. package/src/services/worker/queue.ts +35 -0
  642. package/src/services/worker/recorder.ts +172 -0
  643. package/src/services/worker/runner.ts +179 -0
  644. package/src/services/worker/types.ts +32 -0
  645. package/src/srpc/SrpcByteStream.ts +382 -0
  646. package/src/srpc/SrpcClient.ts +512 -0
  647. package/src/srpc/SrpcServer.ts +681 -0
  648. package/src/srpc/index.ts +15 -0
  649. package/src/srpc/types.ts +146 -0
  650. package/src/telemetry/index.ts +1 -0
  651. package/src/telemetry/otel/MariaDBInstrumentation.ts +297 -0
  652. package/src/telemetry/otel/helpers.ts +117 -0
  653. package/src/telemetry/otel/index.ts +150 -0
  654. package/src/telemetry/otel/metrics.controller.ts +50 -0
  655. package/src/telemetry/sentry.ts +58 -0
  656. package/src/testing/expect.ts +148 -0
  657. package/src/testing/fixtures.ts +62 -0
  658. package/src/testing/index.ts +355 -0
  659. package/src/testing/requests.ts +68 -0
  660. package/src/testing/sql.ts +50 -0
  661. package/src/types/index.ts +64 -0
  662. package/src/types/phone.ts +64 -0
  663. package/types.d.ts +20 -0
@@ -0,0 +1,725 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateDDL = generateDDL;
4
+ function __assignType(fn, args) {
5
+ fn.__type = args;
6
+ return fn;
7
+ }
8
+ const dialect_1 = require("../../dialect");
9
+ /*@ts-ignore*/
10
+ var { __ΩSchemaDiff, __ΩTableDiff, __ΩDialect, __ΩTableSchema, __ΩIndexSchema, __ΩForeignKeySchema, __ΩColumnSchema } = require('./schema-model');
11
+ const VALID_FK_ACTIONS = new Set(['RESTRICT', 'CASCADE', 'SET NULL', 'SET DEFAULT', 'NO ACTION']);
12
+ function generateDDL(diff) {
13
+ const statements = [];
14
+ const { dialect, pgSchema } = diff;
15
+ // Global enum type dedup set (PG only)
16
+ const globalEnumTypes = (Set.Ω = [['&']], new Set());
17
+ // Collect new-table FKs to emit after all tables are created (handles cross-table dependencies)
18
+ const deferredFKs = [];
19
+ // New tables
20
+ for (const table of diff.addedTables) {
21
+ if (dialect === 'postgres') {
22
+ // Create enum types first for PG, deduplicating globally
23
+ for (const col of table.columns) {
24
+ if (col.type === 'enum' && col.enumTypeName && col.enumValues) {
25
+ if (!globalEnumTypes.has(col.enumTypeName)) {
26
+ globalEnumTypes.add(col.enumTypeName);
27
+ statements.push(createEnumType(col.enumTypeName, col.enumValues, pgSchema));
28
+ }
29
+ }
30
+ }
31
+ }
32
+ statements.push(createTable(table, dialect, pgSchema));
33
+ // Create indexes for new tables
34
+ for (const idx of table.indexes) {
35
+ statements.push(createIndex(table.name, idx, dialect, pgSchema));
36
+ }
37
+ // Defer FK creation until after all tables exist
38
+ for (const fk of table.foreignKeys) {
39
+ deferredFKs.push({ tableName: table.name, fk });
40
+ }
41
+ }
42
+ // Enum type modifications (PG only) — deduplicated across all tables
43
+ // Phase 1: RENAME + CREATE for recreations, ADD VALUE for additions (before table DDL)
44
+ // Phase 2: table DDL handles ALTER COLUMN TYPE casts for modified columns
45
+ // Phase 3: DROP old types after table DDL
46
+ const deferredEnumDrops = [];
47
+ if (dialect === 'postgres') {
48
+ const seenEnumMods = (Map.Ω = [['&'], ['typeName', 'added', 'removed', 'newValues', 'P&4!&F4"&F4#&F4$M']], new Map());
49
+ for (const tableDiff of diff.modifiedTables) {
50
+ for (const enumMod of tableDiff.modifiedEnumTypes) {
51
+ if (!seenEnumMods.has(enumMod.typeName)) {
52
+ seenEnumMods.set(enumMod.typeName, {
53
+ typeName: enumMod.typeName,
54
+ added: enumMod.added,
55
+ removed: enumMod.removed,
56
+ newValues: enumMod.newValues
57
+ });
58
+ }
59
+ }
60
+ }
61
+ for (const [, enumMod] of seenEnumMods) {
62
+ if (enumMod.removed.length > 0) {
63
+ // Recreation: RENAME old + CREATE new before table DDL; DROP old after.
64
+ // Drop any pre-existing _old type first to avoid collision.
65
+ const oldName = `${enumMod.typeName}_old`;
66
+ const vals = enumMod.newValues.map(__assignType(v => `'${escapeStr(v)}'`, ['v', '', 'P"2!"/"'])).join(', ');
67
+ const typeRef = qType(enumMod.typeName, pgSchema);
68
+ const oldTypeRef = qType(oldName, pgSchema);
69
+ statements.push(`DROP TYPE IF EXISTS ${oldTypeRef}`);
70
+ statements.push(`ALTER TYPE ${typeRef} RENAME TO ${q('postgres', oldName)}`);
71
+ statements.push(`CREATE TYPE ${typeRef} AS ENUM (${vals})`);
72
+ // Per-table DDL handles ALTER COLUMN TYPE with USING cast (via modifiedColumns)
73
+ deferredEnumDrops.push(`DROP TYPE IF EXISTS ${oldTypeRef}`);
74
+ }
75
+ else {
76
+ for (const val of enumMod.added) {
77
+ statements.push(`ALTER TYPE ${qType(enumMod.typeName, pgSchema)} ADD VALUE '${escapeStr(val)}'`);
78
+ }
79
+ }
80
+ }
81
+ }
82
+ // Modified tables
83
+ for (const tableDiff of diff.modifiedTables) {
84
+ statements.push(...generateTableDDL(tableDiff, dialect, pgSchema, globalEnumTypes));
85
+ }
86
+ // Emit deferred FKs for new tables (after all tables and modifications are done)
87
+ for (const { tableName, fk } of deferredFKs) {
88
+ statements.push(addForeignKey(tableName, fk, dialect, pgSchema));
89
+ }
90
+ // Removed tables — drop FKs first to handle dependencies, then drop tables
91
+ if (diff.removedTables.length > 0) {
92
+ for (const table of diff.removedTables) {
93
+ for (const fk of table.foreignKeys) {
94
+ if (dialect === 'mysql') {
95
+ statements.push(`ALTER TABLE ${qTable(dialect, table.name, pgSchema)} DROP FOREIGN KEY ${q(dialect, fk.name)}`);
96
+ }
97
+ else {
98
+ statements.push(`ALTER TABLE ${qTable(dialect, table.name, pgSchema)} DROP CONSTRAINT ${q(dialect, fk.name)}`);
99
+ }
100
+ }
101
+ }
102
+ for (const table of diff.removedTables) {
103
+ statements.push(`DROP TABLE ${qTable(dialect, table.name, pgSchema)}`);
104
+ }
105
+ }
106
+ // Drop orphaned enum types (from type-name changes, removed columns, or enum→non-enum changes)
107
+ if (dialect === 'postgres') {
108
+ const seenDrops = new Set(deferredEnumDrops.map(__assignType(s => s, ['s', '', 'P"2!"/"']))); // already-scheduled drops
109
+ for (const tableDiff of diff.modifiedTables) {
110
+ for (const typeName of tableDiff.removedEnumTypes) {
111
+ const dropStmt = `DROP TYPE IF EXISTS ${qType(typeName, pgSchema)}`;
112
+ if (!seenDrops.has(dropStmt)) {
113
+ seenDrops.add(dropStmt);
114
+ deferredEnumDrops.push(dropStmt);
115
+ }
116
+ }
117
+ }
118
+ // Also drop enum types from removed tables
119
+ for (const table of diff.removedTables) {
120
+ for (const col of table.columns) {
121
+ if (col.type === 'enum' && col.enumTypeName) {
122
+ const dropStmt = `DROP TYPE IF EXISTS ${qType(col.enumTypeName, pgSchema)}`;
123
+ if (!seenDrops.has(dropStmt)) {
124
+ seenDrops.add(dropStmt);
125
+ deferredEnumDrops.push(dropStmt);
126
+ }
127
+ }
128
+ }
129
+ }
130
+ // Filter out enum types that are still in use by any entity table
131
+ const enumTypesInUse = diff.entityEnumTypes ?? (Set.Ω = [['&']], new Set());
132
+ // Filter: only drop types not still in use
133
+ const filteredDrops = deferredEnumDrops.filter(__assignType(stmt => {
134
+ for (const typeName of enumTypesInUse) {
135
+ const dropStmt = `DROP TYPE IF EXISTS ${qType(typeName, pgSchema)}`;
136
+ if (stmt === dropStmt)
137
+ return false;
138
+ }
139
+ return true;
140
+ }, ['stmt', '', 'P"2!"/"']));
141
+ statements.push(...filteredDrops);
142
+ }
143
+ return statements;
144
+ }
145
+ generateDDL.__type = [() => __ΩSchemaDiff, 'diff', 'generateDDL', 'Pn!2"&F/#'];
146
+ function generateTableDDL(diff, dialect, pgSchema, globalEnumTypes) {
147
+ if (dialect === 'mysql') {
148
+ return generateMySQLTableDDL(diff);
149
+ }
150
+ return generatePostgresTableDDL(diff, pgSchema, globalEnumTypes);
151
+ }
152
+ generateTableDDL.__type = [() => __ΩTableDiff, 'diff', () => __ΩDialect, 'dialect', 'pgSchema', 'globalEnumTypes', 'generateTableDDL', 'Pn!2"n#2$&2%8&D2&8&F/\''];
153
+ // --- MySQL DDL ---
154
+ function generateMySQLTableDDL(diff) {
155
+ const stmts = [];
156
+ const t = q('mysql', diff.tableName);
157
+ // 1. Drop FKs
158
+ for (const fk of diff.removedForeignKeys) {
159
+ stmts.push(`ALTER TABLE ${t} DROP FOREIGN KEY ${q('mysql', fk.name)}`);
160
+ }
161
+ // 2. Drop indexes
162
+ for (const idx of diff.removedIndexes) {
163
+ stmts.push(`ALTER TABLE ${t} DROP INDEX ${q('mysql', idx.name)}`);
164
+ }
165
+ // 3. Drop PK if changed (only if there was an existing PK to drop)
166
+ // Track columns that had AUTO_INCREMENT temporarily stripped so we can restore it after ADD PK
167
+ const autoIncStrippedForPKDrop = [];
168
+ if (diff.primaryKeyChanged && diff.oldPrimaryKey && diff.oldPrimaryKey.length > 0) {
169
+ // MySQL requires AUTO_INCREMENT columns to be part of a KEY. Before dropping the PK,
170
+ // we must strip AUTO_INCREMENT from ALL old PK columns that currently have it.
171
+ // This covers: columns being modified, columns being removed, and columns whose PK
172
+ // membership changes even though autoIncrement itself doesn't change.
173
+ //
174
+ // oldPrimaryKey contains the raw DB column names (before renames).
175
+ // We need to MODIFY using the current DB names since renames haven't happened yet.
176
+ const oldPKSet = new Set(diff.oldPrimaryKey);
177
+ const alreadyHandled = (Set.Ω = [['&']], new Set());
178
+ // Map old DB name → new entity name for renamed columns
179
+ const renameOldToNew = new Map(diff.renamedColumns.map(__assignType(r => [r.from, r.to], ['r', '', 'P"2!"/"'])));
180
+ // Check modified columns (mod.name is the entity/new name; mod.oldColumn has the DB name)
181
+ for (const mod of diff.modifiedColumns) {
182
+ const dbName = mod.oldColumn.name;
183
+ if (oldPKSet.has(dbName) && mod.oldColumn.autoIncrement) {
184
+ const tempCol = { ...mod.oldColumn, autoIncrement: false };
185
+ stmts.push(`ALTER TABLE ${t} MODIFY COLUMN ${mysqlColumnDef(tempCol)}`);
186
+ alreadyHandled.add(dbName);
187
+ }
188
+ }
189
+ // Check removed columns (already using DB names)
190
+ for (const col of diff.removedColumns) {
191
+ if (oldPKSet.has(col.name) && col.autoIncrement) {
192
+ const tempCol = { ...col, autoIncrement: false };
193
+ stmts.push(`ALTER TABLE ${t} MODIFY COLUMN ${mysqlColumnDef(tempCol)}`);
194
+ alreadyHandled.add(col.name);
195
+ }
196
+ }
197
+ // Check remaining old PK columns (e.g., PK shape change where column stays auto-increment)
198
+ if (diff.entityColumns) {
199
+ for (const dbColName of oldPKSet) {
200
+ if (alreadyHandled.has(dbColName))
201
+ continue;
202
+ // The entity column may have been renamed; find it by the new name if applicable
203
+ const entityName = renameOldToNew.get(dbColName) ?? dbColName;
204
+ const entityCol = diff.entityColumns.find(__assignType(c => c.name === entityName, ['c', '', 'P"2!"/"']));
205
+ if (entityCol && entityCol.autoIncrement) {
206
+ // Emit MODIFY using the current DB name (rename hasn't happened yet)
207
+ const tempCol = { ...entityCol, name: dbColName, autoIncrement: false };
208
+ stmts.push(`ALTER TABLE ${t} MODIFY COLUMN ${mysqlColumnDef(tempCol)}`);
209
+ autoIncStrippedForPKDrop.push(entityCol);
210
+ }
211
+ }
212
+ }
213
+ stmts.push(`ALTER TABLE ${t} DROP PRIMARY KEY`);
214
+ }
215
+ // 4. Column drops
216
+ for (const col of diff.removedColumns) {
217
+ stmts.push(`ALTER TABLE ${t} DROP COLUMN ${q('mysql', col.name)}`);
218
+ }
219
+ // 5. Column renames (CHANGE COLUMN includes full definition + AFTER)
220
+ // Exclude added columns from AFTER clause — they don't exist yet at this step
221
+ // If PK is being changed and the renamed column has AUTO_INCREMENT, strip it now and
222
+ // defer the full definition to after ADD PK (MySQL requires AI columns to be keyed).
223
+ const addedNames = new Set(diff.addedColumns.map(__assignType(c => c.name, ['c', '', 'P"2!"/"'])));
224
+ const deferredAutoIncrementRenames = [];
225
+ for (const rename of diff.renamedColumns) {
226
+ const after = findAfterClause(rename.column, diff, 'mysql', addedNames);
227
+ if (rename.column.autoIncrement && diff.primaryKeyChanged) {
228
+ const tempCol = { ...rename.column, autoIncrement: false };
229
+ stmts.push(`ALTER TABLE ${t} CHANGE COLUMN ${q('mysql', rename.from)} ${mysqlColumnDef(tempCol)}${after}`);
230
+ deferredAutoIncrementRenames.push({ from: rename.column.name, column: rename.column, after });
231
+ }
232
+ else {
233
+ stmts.push(`ALTER TABLE ${t} CHANGE COLUMN ${q('mysql', rename.from)} ${mysqlColumnDef(rename.column)}${after}`);
234
+ }
235
+ }
236
+ // 6. Column modifications (skip renamed columns — CHANGE COLUMN in step 5 handles them)
237
+ // Defer modifications where the new column has AUTO_INCREMENT AND the PK is being changed,
238
+ // since MySQL requires AUTO_INCREMENT columns to already be part of a KEY. This covers both:
239
+ // (a) autoIncrementChanged (adding AI) and (b) AI unchanged but PK being dropped and re-added.
240
+ const renamedNames = new Set(diff.renamedColumns.map(__assignType(r => r.to, ['r', '', 'P"2!"/"'])));
241
+ const deferredAutoIncrementMods = [];
242
+ for (const mod of diff.modifiedColumns) {
243
+ if (renamedNames.has(mod.name))
244
+ continue;
245
+ if (mod.newColumn.autoIncrement && (mod.autoIncrementChanged || diff.primaryKeyChanged)) {
246
+ deferredAutoIncrementMods.push(mod);
247
+ continue;
248
+ }
249
+ const after = findAfterClauseForExisting(mod.name, diff, 'mysql');
250
+ stmts.push(`ALTER TABLE ${t} MODIFY COLUMN ${mysqlColumnDef(mod.newColumn)}${after}`);
251
+ }
252
+ // 7. Column adds
253
+ // For added columns with AUTO_INCREMENT, add without AUTO_INCREMENT first,
254
+ // then apply AUTO_INCREMENT after ADD PRIMARY KEY (MySQL requires the column to be keyed first)
255
+ const deferredAutoIncrementAdds = [];
256
+ for (const col of diff.addedColumns) {
257
+ const after = findAfterClause(col, diff, 'mysql');
258
+ if (col.autoIncrement) {
259
+ const tempCol = { ...col, autoIncrement: false };
260
+ stmts.push(`ALTER TABLE ${t} ADD COLUMN ${mysqlColumnDef(tempCol)}${after}`);
261
+ deferredAutoIncrementAdds.push(col);
262
+ }
263
+ else {
264
+ stmts.push(`ALTER TABLE ${t} ADD COLUMN ${mysqlColumnDef(col)}${after}`);
265
+ }
266
+ }
267
+ // 8. Column reorders (only those not already handled by rename/modify/add)
268
+ const handled = new Set([...diff.renamedColumns.map(__assignType(r => r.to, ['r', '', 'P"2!"/"'])), ...diff.modifiedColumns.map(__assignType(m => m.name, ['m', '', 'P"2!"/"'])), ...diff.addedColumns.map(__assignType(c => c.name, ['c', '', 'P"2!"/"']))]);
269
+ for (const reorder of diff.reorderedColumns) {
270
+ if (handled.has(reorder.name))
271
+ continue;
272
+ const col = diff.entityColumns?.find(__assignType(c => c.name === reorder.name, ['c', '', 'P"2!"/"']));
273
+ if (!col)
274
+ continue;
275
+ const after = reorder.after === null ? ' FIRST' : ` AFTER ${q('mysql', reorder.after)}`;
276
+ stmts.push(`ALTER TABLE ${t} MODIFY COLUMN ${mysqlColumnDef(col)}${after}`);
277
+ }
278
+ // 9. Add PK
279
+ if (diff.primaryKeyChanged && diff.newPrimaryKey && diff.newPrimaryKey.length > 0) {
280
+ const pkCols = diff.newPrimaryKey.map(__assignType(c => q('mysql', c), ['c', '', 'P"2!"/"'])).join(', ');
281
+ stmts.push(`ALTER TABLE ${t} ADD PRIMARY KEY (${pkCols})`);
282
+ }
283
+ // 9b. Apply deferred AUTO_INCREMENT additions (requires column to be part of a KEY)
284
+ for (const mod of deferredAutoIncrementMods) {
285
+ const after = findAfterClauseForExisting(mod.name, diff, 'mysql');
286
+ stmts.push(`ALTER TABLE ${t} MODIFY COLUMN ${mysqlColumnDef(mod.newColumn)}${after}`);
287
+ }
288
+ for (const col of deferredAutoIncrementAdds) {
289
+ stmts.push(`ALTER TABLE ${t} MODIFY COLUMN ${mysqlColumnDef(col)}`);
290
+ }
291
+ // Re-apply AUTO_INCREMENT for renamed columns that had it stripped before PK drop
292
+ for (const deferred of deferredAutoIncrementRenames) {
293
+ stmts.push(`ALTER TABLE ${t} MODIFY COLUMN ${mysqlColumnDef(deferred.column)}`);
294
+ }
295
+ // Restore AUTO_INCREMENT for columns that were temporarily stripped for PK drop
296
+ for (const col of autoIncStrippedForPKDrop) {
297
+ stmts.push(`ALTER TABLE ${t} MODIFY COLUMN ${mysqlColumnDef(col)}`);
298
+ }
299
+ // 10. Add indexes
300
+ for (const idx of diff.addedIndexes) {
301
+ stmts.push(createIndex(diff.tableName, idx, 'mysql'));
302
+ }
303
+ // 11. Add FKs
304
+ for (const fk of diff.addedForeignKeys) {
305
+ stmts.push(addForeignKey(diff.tableName, fk, 'mysql'));
306
+ }
307
+ return stmts;
308
+ }
309
+ generateMySQLTableDDL.__type = [() => __ΩTableDiff, 'diff', 'generateMySQLTableDDL', 'Pn!2"&F/#'];
310
+ // --- PostgreSQL DDL ---
311
+ function generatePostgresTableDDL(diff, pgSchema, globalEnumTypes) {
312
+ const stmts = [];
313
+ const t = qTable('postgres', diff.tableName, pgSchema);
314
+ // 1. Create new enum types (deduplicated globally)
315
+ for (const enumType of diff.addedEnumTypes) {
316
+ if (globalEnumTypes && globalEnumTypes.has(enumType.typeName))
317
+ continue;
318
+ globalEnumTypes?.add(enumType.typeName);
319
+ stmts.push(createEnumType(enumType.typeName, enumType.values, pgSchema));
320
+ }
321
+ // 2. Enum modifications are handled globally in generateDDL() to deduplicate across tables
322
+ // 3. Drop FKs
323
+ for (const fk of diff.removedForeignKeys) {
324
+ stmts.push(`ALTER TABLE ${t} DROP CONSTRAINT ${q('postgres', fk.name)}`);
325
+ }
326
+ // 4. Drop indexes (schema-qualified for non-public schemas)
327
+ for (const idx of diff.removedIndexes) {
328
+ stmts.push(`DROP INDEX ${qTable('postgres', idx.name, pgSchema)}`);
329
+ }
330
+ // 5. Drop PK if changed (only if there was an existing PK to drop)
331
+ if (diff.primaryKeyChanged && diff.oldPrimaryKey && diff.oldPrimaryKey.length > 0) {
332
+ const constraintName = diff.oldPrimaryKeyConstraintName ?? `${diff.tableName}_pkey`;
333
+ stmts.push(`ALTER TABLE ${t} DROP CONSTRAINT ${q('postgres', constraintName)}`);
334
+ }
335
+ // 6. Column drops
336
+ for (const col of diff.removedColumns) {
337
+ stmts.push(`ALTER TABLE ${t} DROP COLUMN ${q('postgres', col.name)}`);
338
+ }
339
+ // 7. Column renames
340
+ for (const rename of diff.renamedColumns) {
341
+ stmts.push(`ALTER TABLE ${t} RENAME COLUMN ${q('postgres', rename.from)} TO ${q('postgres', rename.to)}`);
342
+ }
343
+ // 8. Column type changes
344
+ // For enum type changes, drop default before TYPE change and restore after,
345
+ // since the default may be typed as the old enum and block the cast.
346
+ const enumDefaultsToRestore = [];
347
+ for (const mod of diff.modifiedColumns) {
348
+ if (mod.typeChanged) {
349
+ const typeDef = pgTypeDef(mod.newColumn, pgSchema);
350
+ if (mod.newColumn.type === 'enum' && mod.newColumn.enumTypeName) {
351
+ // Drop existing default if the old column had one (it may reference the old enum type)
352
+ if (mod.oldColumn.defaultExpression || mod.oldColumn.defaultValue !== undefined) {
353
+ stmts.push(`ALTER TABLE ${t} ALTER COLUMN ${q('postgres', mod.name)} DROP DEFAULT`);
354
+ // Queue restore: use new column's default if available, else old column's
355
+ const restoreExpr = mod.newColumn.defaultExpression ?? mod.oldColumn.defaultExpression;
356
+ const restoreVal = mod.newColumn.defaultValue !== undefined ? mod.newColumn.defaultValue : mod.oldColumn.defaultValue;
357
+ if (restoreExpr) {
358
+ enumDefaultsToRestore.push({ colName: mod.name, defaultExpr: restoreExpr });
359
+ }
360
+ else if (restoreVal !== undefined) {
361
+ enumDefaultsToRestore.push({
362
+ colName: mod.name,
363
+ defaultExpr: `'${escapeStr(String(restoreVal))}'`
364
+ });
365
+ }
366
+ }
367
+ // Enum type changes need USING cast
368
+ stmts.push(`ALTER TABLE ${t} ALTER COLUMN ${q('postgres', mod.name)} TYPE ${typeDef} USING ${q('postgres', mod.name)}::text::${typeDef}`);
369
+ }
370
+ else {
371
+ stmts.push(`ALTER TABLE ${t} ALTER COLUMN ${q('postgres', mod.name)} TYPE ${typeDef}`);
372
+ }
373
+ }
374
+ }
375
+ // Restore defaults that were dropped for enum type changes
376
+ for (const restore of enumDefaultsToRestore) {
377
+ stmts.push(`ALTER TABLE ${t} ALTER COLUMN ${q('postgres', restore.colName)} SET DEFAULT ${restore.defaultExpr}`);
378
+ }
379
+ // 9. Column nullable changes
380
+ for (const mod of diff.modifiedColumns) {
381
+ if (mod.nullableChanged) {
382
+ if (mod.newColumn.nullable) {
383
+ stmts.push(`ALTER TABLE ${t} ALTER COLUMN ${q('postgres', mod.name)} DROP NOT NULL`);
384
+ }
385
+ else {
386
+ stmts.push(`ALTER TABLE ${t} ALTER COLUMN ${q('postgres', mod.name)} SET NOT NULL`);
387
+ }
388
+ }
389
+ }
390
+ // 10. Column default changes
391
+ for (const mod of diff.modifiedColumns) {
392
+ if (mod.defaultChanged) {
393
+ if (mod.newColumn.defaultExpression) {
394
+ stmts.push(`ALTER TABLE ${t} ALTER COLUMN ${q('postgres', mod.name)} SET DEFAULT ${mod.newColumn.defaultExpression}`);
395
+ }
396
+ else if (mod.newColumn.defaultValue !== undefined) {
397
+ stmts.push(`ALTER TABLE ${t} ALTER COLUMN ${q('postgres', mod.name)} SET DEFAULT '${escapeStr(String(mod.newColumn.defaultValue))}'`);
398
+ }
399
+ else {
400
+ stmts.push(`ALTER TABLE ${t} ALTER COLUMN ${q('postgres', mod.name)} DROP DEFAULT`);
401
+ }
402
+ }
403
+ }
404
+ // 11. Auto-increment changes (sequence management)
405
+ for (const mod of diff.modifiedColumns) {
406
+ if (mod.autoIncrementChanged) {
407
+ const seqName = `${diff.tableName}_${mod.name}_seq`;
408
+ if (mod.newColumn.autoIncrement) {
409
+ // Adding auto-increment: create sequence, set default, sync to existing data
410
+ const seqRef = qTable('postgres', seqName, pgSchema);
411
+ stmts.push(`CREATE SEQUENCE ${seqRef} OWNED BY ${t}.${q('postgres', mod.name)}`);
412
+ const nextvalArg = escapeStr(pgRegclass(seqName, pgSchema));
413
+ stmts.push(`ALTER TABLE ${t} ALTER COLUMN ${q('postgres', mod.name)} SET DEFAULT nextval('${nextvalArg}')`);
414
+ stmts.push(`SELECT setval('${nextvalArg}', COALESCE((SELECT MAX(${q('postgres', mod.name)}) FROM ${t}), 1), ` +
415
+ `(SELECT MAX(${q('postgres', mod.name)}) FROM ${t}) IS NOT NULL)`);
416
+ }
417
+ else {
418
+ // Removing auto-increment
419
+ if (mod.oldColumn.isIdentity) {
420
+ // Identity columns use DROP IDENTITY
421
+ stmts.push(`ALTER TABLE ${t} ALTER COLUMN ${q('postgres', mod.name)} DROP IDENTITY`);
422
+ }
423
+ else {
424
+ // Sequence-backed columns: drop default and sequence
425
+ stmts.push(`ALTER TABLE ${t} ALTER COLUMN ${q('postgres', mod.name)} DROP DEFAULT`);
426
+ // Use actual sequence name from DB if available, otherwise fall back to conventional name
427
+ const actualSeqName = mod.oldColumn.sequenceName;
428
+ if (actualSeqName) {
429
+ stmts.push(`DROP SEQUENCE IF EXISTS ${actualSeqName}`);
430
+ }
431
+ else {
432
+ stmts.push(`DROP SEQUENCE IF EXISTS ${qTable('postgres', seqName, pgSchema)}`);
433
+ }
434
+ }
435
+ }
436
+ }
437
+ }
438
+ // 12. Column adds
439
+ for (const col of diff.addedColumns) {
440
+ stmts.push(`ALTER TABLE ${t} ADD COLUMN ${pgColumnDef(col, pgSchema)}`);
441
+ }
442
+ // 13. Add PK
443
+ if (diff.primaryKeyChanged && diff.newPrimaryKey && diff.newPrimaryKey.length > 0) {
444
+ const pkCols = diff.newPrimaryKey.map(__assignType(c => q('postgres', c), ['c', '', 'P"2!"/"'])).join(', ');
445
+ stmts.push(`ALTER TABLE ${t} ADD PRIMARY KEY (${pkCols})`);
446
+ }
447
+ // 14. Add indexes
448
+ for (const idx of diff.addedIndexes) {
449
+ stmts.push(createIndex(diff.tableName, idx, 'postgres', pgSchema));
450
+ }
451
+ // 15. Add FKs
452
+ for (const fk of diff.addedForeignKeys) {
453
+ stmts.push(addForeignKey(diff.tableName, fk, 'postgres', pgSchema));
454
+ }
455
+ return stmts;
456
+ }
457
+ generatePostgresTableDDL.__type = [() => __ΩTableDiff, 'diff', 'pgSchema', 'globalEnumTypes', 'generatePostgresTableDDL', 'Pn!2"&2#8&D2$8&F/%'];
458
+ // --- Shared helpers ---
459
+ function createTable(table, dialect, pgSchema) {
460
+ const lines = [];
461
+ const pkCols = table.columns.filter(__assignType(c => c.isPrimaryKey, ['c', '', 'P"2!"/"'])).map(__assignType(c => c.name, ['c', '', 'P"2!"/"']));
462
+ for (const col of table.columns) {
463
+ if (dialect === 'mysql') {
464
+ lines.push(` ${mysqlColumnDef(col)}`);
465
+ }
466
+ else {
467
+ lines.push(` ${pgColumnDef(col, pgSchema)}`);
468
+ }
469
+ }
470
+ if (pkCols.length > 0) {
471
+ const quoted = pkCols.map(__assignType(c => q(dialect, c), ['c', '', 'P"2!"/"'])).join(', ');
472
+ lines.push(` PRIMARY KEY (${quoted})`);
473
+ }
474
+ return `CREATE TABLE ${qTable(dialect, table.name, pgSchema)} (\n${lines.join(',\n')}\n)`;
475
+ }
476
+ createTable.__type = [() => __ΩTableSchema, 'table', () => __ΩDialect, 'dialect', 'pgSchema', 'createTable', 'Pn!2"n#2$&2%8&/&'];
477
+ function createIndex(tableName, idx, dialect, pgSchema) {
478
+ const unique = idx.unique ? 'UNIQUE ' : '';
479
+ const spatial = idx.spatial && dialect === 'mysql' ? 'SPATIAL ' : '';
480
+ const cols = idx.columns.map(__assignType(c => q(dialect, c), ['c', '', 'P"2!"/"'])).join(', ');
481
+ return `CREATE ${spatial}${unique}INDEX ${q(dialect, idx.name)} ON ${qTable(dialect, tableName, pgSchema)} (${cols})`;
482
+ }
483
+ createIndex.__type = ['tableName', () => __ΩIndexSchema, 'idx', () => __ΩDialect, 'dialect', 'pgSchema', 'createIndex', 'P&2!n"2#n$2%&2&8&/\''];
484
+ function addForeignKey(tableName, fk, dialect, pgSchema) {
485
+ const cols = fk.columns.map(__assignType(c => q(dialect, c), ['c', '', 'P"2!"/"'])).join(', ');
486
+ const refCols = fk.referencedColumns.map(__assignType(c => q(dialect, c), ['c', '', 'P"2!"/"'])).join(', ');
487
+ const onDelete = validateFkAction(fk.onDelete, dialect);
488
+ const onUpdate = validateFkAction(fk.onUpdate, dialect);
489
+ return (`ALTER TABLE ${qTable(dialect, tableName, pgSchema)} ADD CONSTRAINT ${q(dialect, fk.name)} ` +
490
+ `FOREIGN KEY (${cols}) REFERENCES ${qTable(dialect, fk.referencedTable, pgSchema)} (${refCols}) ` +
491
+ `ON DELETE ${onDelete} ON UPDATE ${onUpdate}`);
492
+ }
493
+ addForeignKey.__type = ['tableName', () => __ΩForeignKeySchema, 'fk', () => __ΩDialect, 'dialect', 'pgSchema', 'addForeignKey', 'P&2!n"2#n$2%&2&8&/\''];
494
+ function validateFkAction(action, dialect) {
495
+ const upper = action.toUpperCase();
496
+ if (!VALID_FK_ACTIONS.has(upper)) {
497
+ throw new Error(`Invalid foreign key action: '${action}'`);
498
+ }
499
+ if (upper === 'SET DEFAULT' && dialect === 'mysql') {
500
+ throw new Error(`Foreign key action 'SET DEFAULT' is not supported by MySQL/InnoDB`);
501
+ }
502
+ return upper;
503
+ }
504
+ validateFkAction.__type = ['action', () => __ΩDialect, 'dialect', 'validateFkAction', 'P&2!n"2#&/$'];
505
+ function createEnumType(typeName, values, pgSchema) {
506
+ const qualifiedName = qType(typeName, pgSchema);
507
+ const vals = values.map(__assignType(v => `'${escapeStr(v)}'`, ['v', '', 'P"2!"/"'])).join(', ');
508
+ const schemaFilter = pgSchema && pgSchema !== 'public' ? ` AND typnamespace = (SELECT oid FROM pg_namespace WHERE nspname = '${escapeStr(pgSchema)}')` : '';
509
+ return `DO $$ BEGIN IF NOT EXISTS (SELECT 1 FROM pg_type WHERE typname = '${escapeStr(typeName)}'${schemaFilter}) THEN CREATE TYPE ${qualifiedName} AS ENUM (${vals}); END IF; END $$`;
510
+ }
511
+ createEnumType.__type = ['typeName', 'values', 'pgSchema', 'createEnumType', 'P&2!&F2"&2#8&/$'];
512
+ // --- MySQL column definition ---
513
+ function mysqlColumnDef(col) {
514
+ let def = `${q('mysql', col.name)} ${mysqlTypeDef(col)}`;
515
+ if (col.unsigned)
516
+ def += ' UNSIGNED';
517
+ if (!col.nullable)
518
+ def += ' NOT NULL';
519
+ if (col.autoIncrement)
520
+ def += ' AUTO_INCREMENT';
521
+ if (col.defaultExpression) {
522
+ def += ` DEFAULT ${col.defaultExpression}`;
523
+ }
524
+ else if (col.defaultValue !== undefined) {
525
+ def += ` DEFAULT '${escapeStr(String(col.defaultValue), 'mysql')}'`;
526
+ }
527
+ if (col.onUpdateExpression) {
528
+ def += ` ON UPDATE ${col.onUpdateExpression}`;
529
+ }
530
+ return def;
531
+ }
532
+ mysqlColumnDef.__type = [() => __ΩColumnSchema, 'col', 'mysqlColumnDef', 'Pn!2"&/#'];
533
+ function mysqlTypeDef(col) {
534
+ switch (col.type) {
535
+ case 'varchar':
536
+ return `VARCHAR(${col.size || 255})`;
537
+ case 'char':
538
+ return `CHAR(${col.size || 1})`;
539
+ case 'tinyint':
540
+ return col.size === 1 ? 'TINYINT(1)' : 'TINYINT';
541
+ case 'smallint':
542
+ return 'SMALLINT';
543
+ case 'int':
544
+ return 'INT';
545
+ case 'bigint':
546
+ return 'BIGINT';
547
+ case 'float':
548
+ return 'FLOAT';
549
+ case 'double':
550
+ return 'DOUBLE';
551
+ case 'decimal':
552
+ if (col.size === undefined)
553
+ return 'DECIMAL';
554
+ return col.scale !== undefined ? `DECIMAL(${col.size},${col.scale})` : `DECIMAL(${col.size})`;
555
+ case 'boolean':
556
+ return 'TINYINT(1)';
557
+ case 'date':
558
+ return 'DATE';
559
+ case 'datetime':
560
+ return 'DATETIME';
561
+ case 'timestamp':
562
+ return 'TIMESTAMP';
563
+ case 'text':
564
+ return 'TEXT';
565
+ case 'blob':
566
+ return 'BLOB';
567
+ case 'json':
568
+ return 'JSON';
569
+ case 'point':
570
+ return 'POINT';
571
+ case 'enum':
572
+ if (col.enumValues) {
573
+ const vals = col.enumValues.map(__assignType(v => `'${escapeStr(v, 'mysql')}'`, ['v', '', 'P"2!"/"'])).join(',');
574
+ return `ENUM(${vals})`;
575
+ }
576
+ return 'VARCHAR(255)';
577
+ default:
578
+ return col.type.toUpperCase();
579
+ }
580
+ }
581
+ mysqlTypeDef.__type = [() => __ΩColumnSchema, 'col', 'mysqlTypeDef', 'Pn!2"&/#'];
582
+ // --- PostgreSQL column definition ---
583
+ function pgColumnDef(col, pgSchema) {
584
+ let typeDef;
585
+ if (col.autoIncrement) {
586
+ // Use SERIAL/BIGSERIAL for auto-increment
587
+ typeDef = col.type === 'bigint' ? 'BIGSERIAL' : 'SERIAL';
588
+ }
589
+ else {
590
+ typeDef = pgTypeDef(col, pgSchema);
591
+ }
592
+ let def = `${q('postgres', col.name)} ${typeDef}`;
593
+ if (!col.nullable && !col.autoIncrement)
594
+ def += ' NOT NULL';
595
+ if (!col.autoIncrement) {
596
+ if (col.defaultExpression) {
597
+ def += ` DEFAULT ${col.defaultExpression}`;
598
+ }
599
+ else if (col.defaultValue !== undefined) {
600
+ def += ` DEFAULT '${escapeStr(String(col.defaultValue))}'`;
601
+ }
602
+ }
603
+ return def;
604
+ }
605
+ pgColumnDef.__type = [() => __ΩColumnSchema, 'col', 'pgSchema', 'pgColumnDef', 'Pn!2"&2#8&/$'];
606
+ function pgTypeDef(col, pgSchema) {
607
+ switch (col.type) {
608
+ case 'varchar':
609
+ return col.size ? `VARCHAR(${col.size})` : 'VARCHAR';
610
+ case 'char':
611
+ return `CHAR(${col.size || 1})`;
612
+ case 'smallint':
613
+ return 'SMALLINT';
614
+ case 'int':
615
+ case 'integer':
616
+ return 'INTEGER';
617
+ case 'bigint':
618
+ return 'BIGINT';
619
+ case 'real':
620
+ case 'float':
621
+ return 'REAL';
622
+ case 'double precision':
623
+ case 'double':
624
+ return 'DOUBLE PRECISION';
625
+ case 'decimal':
626
+ case 'numeric':
627
+ if (col.size === undefined)
628
+ return 'NUMERIC';
629
+ return col.scale !== undefined ? `NUMERIC(${col.size},${col.scale})` : `NUMERIC(${col.size})`;
630
+ case 'boolean':
631
+ return 'BOOLEAN';
632
+ case 'date':
633
+ return 'DATE';
634
+ case 'timestamp':
635
+ return 'TIMESTAMP';
636
+ case 'timestamptz':
637
+ return 'TIMESTAMPTZ';
638
+ case 'text':
639
+ return 'TEXT';
640
+ case 'bytea':
641
+ return 'BYTEA';
642
+ case 'json':
643
+ return 'JSON';
644
+ case 'jsonb':
645
+ return 'JSONB';
646
+ case 'uuid':
647
+ return 'UUID';
648
+ case 'enum':
649
+ return col.enumTypeName ? qType(col.enumTypeName, pgSchema) : 'TEXT';
650
+ default:
651
+ return col.type.toUpperCase();
652
+ }
653
+ }
654
+ pgTypeDef.__type = [() => __ΩColumnSchema, 'col', 'pgSchema', 'pgTypeDef', 'Pn!2"&2#8&/$'];
655
+ // --- AFTER clause helpers (MySQL) ---
656
+ function findAfterClause(col, diff, dialect, excludeNames) {
657
+ if (dialect !== 'mysql')
658
+ return '';
659
+ // Look up the preceding column from the entity column list, skipping any excluded names
660
+ // (e.g., not-yet-added columns when computing AFTER for a rename step)
661
+ if (diff.entityColumns) {
662
+ const idx = diff.entityColumns.findIndex(__assignType(c => c.name === col.name, ['c', '', 'P"2!"/"']));
663
+ if (idx >= 0) {
664
+ // Walk backwards to find the nearest preceding column that is not excluded
665
+ for (let i = idx - 1; i >= 0; i--) {
666
+ const prev = diff.entityColumns[i];
667
+ if (!excludeNames || !excludeNames.has(prev.name)) {
668
+ return ` AFTER ${q('mysql', prev.name)}`;
669
+ }
670
+ }
671
+ return ' FIRST';
672
+ }
673
+ }
674
+ // Fallback for ordinalPosition
675
+ if (col.ordinalPosition === 1)
676
+ return ' FIRST';
677
+ return '';
678
+ }
679
+ findAfterClause.__type = [() => __ΩColumnSchema, 'col', () => __ΩTableDiff, 'diff', () => __ΩDialect, 'dialect', 'excludeNames', 'findAfterClause', 'Pn!2"n#2$n%2&&D2\'8&/('];
680
+ function findAfterClauseForExisting(colName, diff, dialect) {
681
+ if (dialect !== 'mysql')
682
+ return '';
683
+ // Check if this column needs reordering
684
+ const reorder = diff.reorderedColumns.find(__assignType(r => r.name === colName, ['r', '', 'P"2!"/"']));
685
+ if (reorder) {
686
+ return reorder.after === null ? ' FIRST' : ` AFTER ${q('mysql', reorder.after)}`;
687
+ }
688
+ return '';
689
+ }
690
+ findAfterClauseForExisting.__type = ['colName', () => __ΩTableDiff, 'diff', () => __ΩDialect, 'dialect', 'findAfterClauseForExisting', 'P&2!n"2#n$2%&/&'];
691
+ function q(dialect, name) {
692
+ return (0, dialect_1.quoteId)(dialect, name);
693
+ }
694
+ q.__type = [() => __ΩDialect, 'dialect', 'name', 'q', 'Pn!2"&2#&/$'];
695
+ function qTable(dialect, name, pgSchema) {
696
+ if (dialect === 'postgres' && pgSchema && pgSchema !== 'public') {
697
+ return `${(0, dialect_1.quoteId)(dialect, pgSchema)}.${(0, dialect_1.quoteId)(dialect, name)}`;
698
+ }
699
+ return (0, dialect_1.quoteId)(dialect, name);
700
+ }
701
+ qTable.__type = [() => __ΩDialect, 'dialect', 'name', 'pgSchema', 'qTable', 'Pn!2"&2#&2$8&/%'];
702
+ function qType(typeName, pgSchema) {
703
+ if (pgSchema && pgSchema !== 'public') {
704
+ return `${(0, dialect_1.quoteId)('postgres', pgSchema)}.${(0, dialect_1.quoteId)('postgres', typeName)}`;
705
+ }
706
+ return (0, dialect_1.quoteId)('postgres', typeName);
707
+ }
708
+ qType.__type = ['typeName', 'pgSchema', 'qType', 'P&2!&2"8&/#'];
709
+ function pgRegclass(name, pgSchema) {
710
+ // Build a regclass-compatible identifier string with proper quoting for use inside SQL string literals
711
+ if (pgSchema && pgSchema !== 'public') {
712
+ return `${(0, dialect_1.quoteId)('postgres', pgSchema)}.${(0, dialect_1.quoteId)('postgres', name)}`;
713
+ }
714
+ return (0, dialect_1.quoteId)('postgres', name);
715
+ }
716
+ pgRegclass.__type = ['name', 'pgSchema', 'pgRegclass', 'P&2!&2"8&/#'];
717
+ function escapeStr(s, dialect) {
718
+ // MySQL also treats backslashes as escape characters in string literals
719
+ if (dialect === 'mysql') {
720
+ s = s.replace(/\\/g, '\\\\');
721
+ }
722
+ return s.replace(/'/g, "''");
723
+ }
724
+ escapeStr.__type = ['s', () => __ΩDialect, 'dialect', 'escapeStr', 'P&2!n"2#8&/$'];
725
+ //# sourceMappingURL=ddl-generator.js.map