sonamu 0.8.26 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (684) hide show
  1. package/bin/cli.js +60 -13
  2. package/dist/_virtual/rolldown_runtime.js +39 -0
  3. package/dist/ai/agents/agent.d.ts +3 -3
  4. package/dist/ai/agents/agent.d.ts.map +1 -1
  5. package/dist/ai/agents/agent.js +76 -73
  6. package/dist/ai/agents/index.js +3 -3
  7. package/dist/ai/agents/types.d.ts +3 -3
  8. package/dist/ai/agents/types.d.ts.map +1 -1
  9. package/dist/ai/agents/types.js +1 -3
  10. package/dist/ai/index.js +3 -2
  11. package/dist/ai/providers/rtzr/api.js +25 -25
  12. package/dist/ai/providers/rtzr/error.js +25 -26
  13. package/dist/ai/providers/rtzr/index.js +5 -5
  14. package/dist/ai/providers/rtzr/model.d.ts +1 -1
  15. package/dist/ai/providers/rtzr/model.d.ts.map +1 -1
  16. package/dist/ai/providers/rtzr/model.js +117 -133
  17. package/dist/ai/providers/rtzr/options.d.ts.map +1 -1
  18. package/dist/ai/providers/rtzr/options.js +35 -41
  19. package/dist/ai/providers/rtzr/provider.d.ts +1 -1
  20. package/dist/ai/providers/rtzr/provider.d.ts.map +1 -1
  21. package/dist/ai/providers/rtzr/provider.js +53 -51
  22. package/dist/ai/providers/rtzr/utils.d.ts.map +1 -1
  23. package/dist/ai/providers/rtzr/utils.js +84 -84
  24. package/dist/api/base-frame.d.ts +2 -2
  25. package/dist/api/base-frame.d.ts.map +1 -1
  26. package/dist/api/base-frame.js +29 -19
  27. package/dist/api/caster.d.ts +1 -1
  28. package/dist/api/caster.d.ts.map +1 -1
  29. package/dist/api/caster.js +51 -61
  30. package/dist/api/code-converters.d.ts +4 -3
  31. package/dist/api/code-converters.d.ts.map +1 -1
  32. package/dist/api/code-converters.js +226 -249
  33. package/dist/api/config.d.ts +17 -17
  34. package/dist/api/config.d.ts.map +1 -1
  35. package/dist/api/config.js +37 -30
  36. package/dist/api/context.d.ts +10 -10
  37. package/dist/api/context.d.ts.map +1 -1
  38. package/dist/api/context.js +8 -2
  39. package/dist/api/decorators.d.ts +8 -8
  40. package/dist/api/decorators.d.ts.map +1 -1
  41. package/dist/api/decorators.js +245 -268
  42. package/dist/api/index.js +39 -7
  43. package/dist/api/secret.js +22 -15
  44. package/dist/api/sonamu.d.ts +15 -15
  45. package/dist/api/sonamu.d.ts.map +1 -1
  46. package/dist/api/sonamu.js +1012 -1131
  47. package/dist/api/validator.js +88 -79
  48. package/dist/auth/auth-generator.d.ts.map +1 -1
  49. package/dist/auth/auth-generator.js +203 -200
  50. package/dist/auth/better-auth-entities.d.ts +2 -2
  51. package/dist/auth/better-auth-entities.d.ts.map +1 -1
  52. package/dist/auth/better-auth-entities.js +369 -429
  53. package/dist/auth/index.js +21 -6
  54. package/dist/auth/knex-adapter.d.ts +2 -2
  55. package/dist/auth/knex-adapter.d.ts.map +1 -1
  56. package/dist/auth/knex-adapter.js +153 -157
  57. package/dist/auth/plugins/entity-definitions/admin.d.ts +1 -1
  58. package/dist/auth/plugins/entity-definitions/admin.d.ts.map +1 -1
  59. package/dist/auth/plugins/entity-definitions/admin.js +58 -56
  60. package/dist/auth/plugins/entity-definitions/anonymous.d.ts +1 -1
  61. package/dist/auth/plugins/entity-definitions/anonymous.d.ts.map +1 -1
  62. package/dist/auth/plugins/entity-definitions/anonymous.js +20 -20
  63. package/dist/auth/plugins/entity-definitions/api-key.d.ts +1 -1
  64. package/dist/auth/plugins/entity-definitions/api-key.d.ts.map +1 -1
  65. package/dist/auth/plugins/entity-definitions/api-key.js +185 -196
  66. package/dist/auth/plugins/entity-definitions/index.d.ts +1 -1
  67. package/dist/auth/plugins/entity-definitions/index.d.ts.map +1 -1
  68. package/dist/auth/plugins/entity-definitions/index.js +26 -29
  69. package/dist/auth/plugins/entity-definitions/jwt.d.ts +1 -1
  70. package/dist/auth/plugins/entity-definitions/jwt.d.ts.map +1 -1
  71. package/dist/auth/plugins/entity-definitions/jwt.js +62 -64
  72. package/dist/auth/plugins/entity-definitions/organization.d.ts +1 -1
  73. package/dist/auth/plugins/entity-definitions/organization.d.ts.map +1 -1
  74. package/dist/auth/plugins/entity-definitions/organization.js +362 -421
  75. package/dist/auth/plugins/entity-definitions/passkey.d.ts +1 -1
  76. package/dist/auth/plugins/entity-definitions/passkey.d.ts.map +1 -1
  77. package/dist/auth/plugins/entity-definitions/passkey.js +115 -126
  78. package/dist/auth/plugins/entity-definitions/phone-number.d.ts +1 -1
  79. package/dist/auth/plugins/entity-definitions/phone-number.d.ts.map +1 -1
  80. package/dist/auth/plugins/entity-definitions/phone-number.js +31 -40
  81. package/dist/auth/plugins/entity-definitions/sso.d.ts +1 -1
  82. package/dist/auth/plugins/entity-definitions/sso.d.ts.map +1 -1
  83. package/dist/auth/plugins/entity-definitions/sso.js +94 -107
  84. package/dist/auth/plugins/entity-definitions/two-factor.d.ts +1 -1
  85. package/dist/auth/plugins/entity-definitions/two-factor.d.ts.map +1 -1
  86. package/dist/auth/plugins/entity-definitions/two-factor.js +78 -92
  87. package/dist/auth/plugins/entity-definitions/types.d.ts +1 -1
  88. package/dist/auth/plugins/entity-definitions/types.d.ts.map +1 -1
  89. package/dist/auth/plugins/entity-definitions/types.js +1 -10
  90. package/dist/auth/plugins/entity-definitions/username.d.ts +1 -1
  91. package/dist/auth/plugins/entity-definitions/username.d.ts.map +1 -1
  92. package/dist/auth/plugins/entity-definitions/username.js +31 -40
  93. package/dist/auth/plugins/index.js +12 -3
  94. package/dist/auth/plugins/wrappers/admin.d.ts +2 -2
  95. package/dist/auth/plugins/wrappers/admin.d.ts.map +1 -1
  96. package/dist/auth/plugins/wrappers/admin.js +28 -29
  97. package/dist/auth/plugins/wrappers/anonymous.d.ts +2 -1
  98. package/dist/auth/plugins/wrappers/anonymous.d.ts.map +1 -1
  99. package/dist/auth/plugins/wrappers/anonymous.js +23 -22
  100. package/dist/auth/plugins/wrappers/api-key.d.ts +2 -1
  101. package/dist/auth/plugins/wrappers/api-key.d.ts.map +1 -1
  102. package/dist/auth/plugins/wrappers/api-key.js +39 -34
  103. package/dist/auth/plugins/wrappers/index.js +11 -11
  104. package/dist/auth/plugins/wrappers/jwt.d.ts +2 -1
  105. package/dist/auth/plugins/wrappers/jwt.d.ts.map +1 -1
  106. package/dist/auth/plugins/wrappers/jwt.js +31 -26
  107. package/dist/auth/plugins/wrappers/organization.d.ts +2 -1
  108. package/dist/auth/plugins/wrappers/organization.d.ts.map +1 -1
  109. package/dist/auth/plugins/wrappers/organization.js +65 -62
  110. package/dist/auth/plugins/wrappers/passkey.d.ts +2 -1
  111. package/dist/auth/plugins/wrappers/passkey.d.ts.map +1 -1
  112. package/dist/auth/plugins/wrappers/passkey.js +33 -28
  113. package/dist/auth/plugins/wrappers/phone-number.d.ts.map +1 -1
  114. package/dist/auth/plugins/wrappers/phone-number.js +26 -23
  115. package/dist/auth/plugins/wrappers/sso.d.ts.map +1 -1
  116. package/dist/auth/plugins/wrappers/sso.js +37 -31
  117. package/dist/auth/plugins/wrappers/two-factor.d.ts.map +1 -1
  118. package/dist/auth/plugins/wrappers/two-factor.js +31 -28
  119. package/dist/auth/plugins/wrappers/username.d.ts.map +1 -1
  120. package/dist/auth/plugins/wrappers/username.js +23 -23
  121. package/dist/bin/build-config.js +31 -31
  122. package/dist/bin/cli.js +1063 -1204
  123. package/dist/bin/fixture.d.ts.map +1 -1
  124. package/dist/bin/fixture.js +266 -259
  125. package/dist/bin/hmr-hook-register.d.ts.map +1 -1
  126. package/dist/bin/hmr-hook-register.js +19 -18
  127. package/dist/bin/test-command.d.ts.map +1 -1
  128. package/dist/bin/test-command.js +180 -177
  129. package/dist/bin/ts-loader-register.js +13 -6
  130. package/dist/bin/ts-loader-registration.d.ts.map +1 -1
  131. package/dist/bin/ts-loader-registration.js +28 -38
  132. package/dist/cache/cache-manager.d.ts +1 -1
  133. package/dist/cache/cache-manager.d.ts.map +1 -1
  134. package/dist/cache/cache-manager.js +20 -15
  135. package/dist/cache/decorator.d.ts +1 -1
  136. package/dist/cache/decorator.d.ts.map +1 -1
  137. package/dist/cache/decorator.js +84 -76
  138. package/dist/cache/drivers.js +21 -34
  139. package/dist/cache/index.js +10 -7
  140. package/dist/cache/types.d.ts +2 -2
  141. package/dist/cache/types.d.ts.map +1 -1
  142. package/dist/cache/types.js +1 -6
  143. package/dist/cache-control/cache-control.d.ts +2 -2
  144. package/dist/cache-control/cache-control.d.ts.map +1 -1
  145. package/dist/cache-control/cache-control.js +106 -122
  146. package/dist/cache-control/types.d.ts +2 -2
  147. package/dist/cache-control/types.d.ts.map +1 -1
  148. package/dist/cache-control/types.js +1 -19
  149. package/dist/compress/compress.d.ts +1 -1
  150. package/dist/compress/compress.d.ts.map +1 -1
  151. package/dist/compress/compress.js +58 -56
  152. package/dist/compress/index.js +7 -2
  153. package/dist/compress/types.js +1 -11
  154. package/dist/cone/cone-generator.d.ts +1 -1
  155. package/dist/cone/cone-generator.d.ts.map +1 -1
  156. package/dist/cone/cone-generator.js +216 -219
  157. package/dist/database/_batch_update.d.ts +1 -1
  158. package/dist/database/_batch_update.d.ts.map +1 -1
  159. package/dist/database/_batch_update.js +107 -102
  160. package/dist/database/base-model.d.ts +8 -9
  161. package/dist/database/base-model.d.ts.map +1 -1
  162. package/dist/database/base-model.js +371 -392
  163. package/dist/database/base-model.types.d.ts +5 -5
  164. package/dist/database/base-model.types.d.ts.map +1 -1
  165. package/dist/database/base-model.types.js +1 -20
  166. package/dist/database/db.d.ts +5 -2
  167. package/dist/database/db.d.ts.map +1 -1
  168. package/dist/database/db.js +185 -171
  169. package/dist/database/knex.d.ts +1 -1
  170. package/dist/database/knex.d.ts.map +1 -1
  171. package/dist/database/knex.js +48 -42
  172. package/dist/database/puri-subset.types.d.ts +6 -7
  173. package/dist/database/puri-subset.types.d.ts.map +1 -1
  174. package/dist/database/puri-subset.types.js +1 -16
  175. package/dist/database/puri-wrapper.d.ts +6 -6
  176. package/dist/database/puri-wrapper.d.ts.map +1 -1
  177. package/dist/database/puri-wrapper.js +99 -101
  178. package/dist/database/puri.d.ts +4 -5
  179. package/dist/database/puri.d.ts.map +1 -1
  180. package/dist/database/puri.js +1021 -1227
  181. package/dist/database/puri.types.d.ts +6 -6
  182. package/dist/database/puri.types.d.ts.map +1 -1
  183. package/dist/database/puri.types.js +15 -6
  184. package/dist/database/transaction-context.d.ts +2 -2
  185. package/dist/database/transaction-context.d.ts.map +1 -1
  186. package/dist/database/transaction-context.js +22 -13
  187. package/dist/database/upsert-builder.d.ts +3 -3
  188. package/dist/database/upsert-builder.d.ts.map +1 -1
  189. package/dist/database/upsert-builder.js +405 -465
  190. package/dist/dict/en.js +72 -74
  191. package/dist/dict/index.js +13 -13
  192. package/dist/dict/ko.js +72 -74
  193. package/dist/dict/rc-keys.js +150 -168
  194. package/dist/dict/sd.d.ts +3 -1
  195. package/dist/dict/sd.d.ts.map +1 -1
  196. package/dist/dict/sd.js +54 -40
  197. package/dist/dict/sonamu-dictionary.d.ts +1 -1
  198. package/dist/dict/sonamu-dictionary.d.ts.map +1 -1
  199. package/dist/dict/sonamu-dictionary.js +887 -955
  200. package/dist/dict/types.js +1 -7
  201. package/dist/dict/utils.js +26 -24
  202. package/dist/entity/entity-manager.d.ts +9 -9
  203. package/dist/entity/entity-manager.d.ts.map +1 -1
  204. package/dist/entity/entity-manager.js +226 -223
  205. package/dist/entity/entity-template-cone.d.ts +1 -1
  206. package/dist/entity/entity-template-cone.d.ts.map +1 -1
  207. package/dist/entity/entity-template-cone.js +152 -151
  208. package/dist/entity/entity.d.ts.map +1 -1
  209. package/dist/entity/entity.js +952 -1089
  210. package/dist/exceptions/error-handler.d.ts +1 -1
  211. package/dist/exceptions/error-handler.d.ts.map +1 -1
  212. package/dist/exceptions/error-handler.js +32 -27
  213. package/dist/exceptions/so-exceptions.d.ts +1 -1
  214. package/dist/exceptions/so-exceptions.d.ts.map +1 -1
  215. package/dist/exceptions/so-exceptions.js +61 -68
  216. package/dist/filter/index.js +9 -3
  217. package/dist/filter/types.js +92 -88
  218. package/dist/filter/utils.d.ts +1 -1
  219. package/dist/filter/utils.d.ts.map +1 -1
  220. package/dist/filter/utils.js +147 -161
  221. package/dist/index.js +87 -40
  222. package/dist/logger/category.d.ts.map +1 -1
  223. package/dist/logger/category.js +30 -29
  224. package/dist/logger/configure.d.ts.map +1 -1
  225. package/dist/logger/configure.js +83 -107
  226. package/dist/migration/code-generation.d.ts +2 -2
  227. package/dist/migration/code-generation.d.ts.map +1 -1
  228. package/dist/migration/code-generation.js +1385 -1578
  229. package/dist/migration/migration-set.d.ts +1 -1
  230. package/dist/migration/migration-set.d.ts.map +1 -1
  231. package/dist/migration/migration-set.js +177 -227
  232. package/dist/migration/migrator.d.ts +4 -3
  233. package/dist/migration/migrator.d.ts.map +1 -1
  234. package/dist/migration/migrator.js +340 -345
  235. package/dist/migration/postgresql-schema-reader.d.ts +2 -2
  236. package/dist/migration/postgresql-schema-reader.d.ts.map +1 -1
  237. package/dist/migration/postgresql-schema-reader.js +506 -564
  238. package/dist/migration/slack-confirm.d.ts +2 -2
  239. package/dist/migration/slack-confirm.d.ts.map +1 -1
  240. package/dist/migration/slack-confirm.js +205 -193
  241. package/dist/migration/types.d.ts +2 -2
  242. package/dist/migration/types.d.ts.map +1 -1
  243. package/dist/migration/types.js +1 -3
  244. package/dist/naite/messaging-types.d.ts +1 -0
  245. package/dist/naite/messaging-types.d.ts.map +1 -1
  246. package/dist/naite/messaging-types.js +1 -7
  247. package/dist/naite/naite-reporter.d.ts +2 -2
  248. package/dist/naite/naite-reporter.d.ts.map +1 -1
  249. package/dist/naite/naite-reporter.js +127 -120
  250. package/dist/naite/naite.d.ts +3 -2
  251. package/dist/naite/naite.d.ts.map +1 -1
  252. package/dist/naite/naite.js +266 -300
  253. package/dist/ssr/index.d.ts +2 -2
  254. package/dist/ssr/index.d.ts.map +1 -1
  255. package/dist/ssr/index.js +13 -3
  256. package/dist/ssr/registry.d.ts +1 -1
  257. package/dist/ssr/registry.d.ts.map +1 -1
  258. package/dist/ssr/registry.js +45 -37
  259. package/dist/ssr/renderer.d.ts +4 -4
  260. package/dist/ssr/renderer.d.ts.map +1 -1
  261. package/dist/ssr/renderer.js +84 -91
  262. package/dist/ssr/types.d.ts +2 -2
  263. package/dist/ssr/types.d.ts.map +1 -1
  264. package/dist/ssr/types.js +1 -3
  265. package/dist/storage/base-file.js +54 -41
  266. package/dist/storage/buffered-file.d.ts +2 -2
  267. package/dist/storage/buffered-file.d.ts.map +1 -1
  268. package/dist/storage/buffered-file.js +51 -44
  269. package/dist/storage/drivers.d.ts +2 -2
  270. package/dist/storage/drivers.d.ts.map +1 -1
  271. package/dist/storage/drivers.js +12 -7
  272. package/dist/storage/index.js +14 -7
  273. package/dist/storage/s3-driver.d.ts +2 -2
  274. package/dist/storage/s3-driver.d.ts.map +1 -1
  275. package/dist/storage/s3-driver.js +52 -48
  276. package/dist/storage/storage-manager.d.ts +2 -2
  277. package/dist/storage/storage-manager.d.ts.map +1 -1
  278. package/dist/storage/storage-manager.js +33 -25
  279. package/dist/storage/types.d.ts +2 -2
  280. package/dist/storage/types.d.ts.map +1 -1
  281. package/dist/storage/types.js +1 -5
  282. package/dist/storage/uploaded-file.d.ts +1 -1
  283. package/dist/storage/uploaded-file.d.ts.map +1 -1
  284. package/dist/storage/uploaded-file.js +45 -35
  285. package/dist/stream/index.js +7 -2
  286. package/dist/stream/sse.d.ts +2 -2
  287. package/dist/stream/sse.d.ts.map +1 -1
  288. package/dist/stream/sse.js +72 -67
  289. package/dist/syncer/api-parser.d.ts +1 -1
  290. package/dist/syncer/api-parser.d.ts.map +1 -1
  291. package/dist/syncer/api-parser.js +224 -245
  292. package/dist/syncer/checksum.d.ts +1 -1
  293. package/dist/syncer/checksum.d.ts.map +1 -1
  294. package/dist/syncer/checksum.js +86 -72
  295. package/dist/syncer/code-generator.d.ts +2 -2
  296. package/dist/syncer/code-generator.d.ts.map +1 -1
  297. package/dist/syncer/code-generator.js +154 -160
  298. package/dist/syncer/entity-operations.d.ts +1 -1
  299. package/dist/syncer/entity-operations.d.ts.map +1 -1
  300. package/dist/syncer/entity-operations.js +63 -54
  301. package/dist/syncer/file-patterns.d.ts +1 -1
  302. package/dist/syncer/file-patterns.d.ts.map +1 -1
  303. package/dist/syncer/file-patterns.js +38 -38
  304. package/dist/syncer/index.js +19 -8
  305. package/dist/syncer/module-loader.d.ts +5 -5
  306. package/dist/syncer/module-loader.d.ts.map +1 -1
  307. package/dist/syncer/module-loader.js +83 -78
  308. package/dist/syncer/syncer-actions.d.ts +2 -2
  309. package/dist/syncer/syncer-actions.d.ts.map +1 -1
  310. package/dist/syncer/syncer-actions.js +76 -91
  311. package/dist/syncer/syncer.d.ts +7 -6
  312. package/dist/syncer/syncer.d.ts.map +1 -1
  313. package/dist/syncer/syncer.js +426 -492
  314. package/dist/tasks/decorator.d.ts +3 -3
  315. package/dist/tasks/decorator.d.ts.map +1 -1
  316. package/dist/tasks/decorator.js +32 -28
  317. package/dist/tasks/step-wrapper.d.ts +1 -1
  318. package/dist/tasks/step-wrapper.d.ts.map +1 -1
  319. package/dist/tasks/step-wrapper.js +42 -41
  320. package/dist/tasks/workflow-manager.d.ts +2 -2
  321. package/dist/tasks/workflow-manager.d.ts.map +1 -1
  322. package/dist/tasks/workflow-manager.js +192 -221
  323. package/dist/template/entity-converter.d.ts +1 -1
  324. package/dist/template/entity-converter.d.ts.map +1 -1
  325. package/dist/template/entity-converter.js +103 -103
  326. package/dist/template/helpers.d.ts.map +1 -1
  327. package/dist/template/helpers.js +163 -163
  328. package/dist/template/implementations/entity.template.d.ts +1 -1
  329. package/dist/template/implementations/entity.template.d.ts.map +1 -1
  330. package/dist/template/implementations/entity.template.js +76 -85
  331. package/dist/template/implementations/entry-server.template.d.ts +1 -1
  332. package/dist/template/implementations/entry-server.template.d.ts.map +1 -1
  333. package/dist/template/implementations/entry-server.template.js +32 -27
  334. package/dist/template/implementations/generated.template.d.ts +1 -1
  335. package/dist/template/implementations/generated.template.d.ts.map +1 -1
  336. package/dist/template/implementations/generated.template.js +254 -275
  337. package/dist/template/implementations/generated_http.template.d.ts +2 -2
  338. package/dist/template/implementations/generated_http.template.d.ts.map +1 -1
  339. package/dist/template/implementations/generated_http.template.js +114 -133
  340. package/dist/template/implementations/generated_sso.template.d.ts.map +1 -1
  341. package/dist/template/implementations/generated_sso.template.js +249 -275
  342. package/dist/template/implementations/init_types.template.d.ts +1 -1
  343. package/dist/template/implementations/init_types.template.d.ts.map +1 -1
  344. package/dist/template/implementations/init_types.template.js +40 -34
  345. package/dist/template/implementations/model.template.d.ts +1 -1
  346. package/dist/template/implementations/model.template.d.ts.map +1 -1
  347. package/dist/template/implementations/model.template.js +56 -53
  348. package/dist/template/implementations/model_test.template.d.ts +1 -1
  349. package/dist/template/implementations/model_test.template.d.ts.map +1 -1
  350. package/dist/template/implementations/model_test.template.js +32 -24
  351. package/dist/template/implementations/queries.template.d.ts +1 -1
  352. package/dist/template/implementations/queries.template.d.ts.map +1 -1
  353. package/dist/template/implementations/queries.template.js +84 -89
  354. package/dist/template/implementations/sd.template.d.ts +1 -1
  355. package/dist/template/implementations/sd.template.d.ts.map +1 -1
  356. package/dist/template/implementations/sd.template.js +137 -144
  357. package/dist/template/implementations/services.template.d.ts +1 -1
  358. package/dist/template/implementations/services.template.d.ts.map +1 -1
  359. package/dist/template/implementations/services.template.js +164 -189
  360. package/dist/template/implementations/view_form.template.d.ts +1 -1
  361. package/dist/template/implementations/view_form.template.d.ts.map +1 -1
  362. package/dist/template/implementations/view_form.template.js +258 -285
  363. package/dist/template/implementations/view_id_all_select.template.d.ts +1 -1
  364. package/dist/template/implementations/view_id_all_select.template.d.ts.map +1 -1
  365. package/dist/template/implementations/view_id_all_select.template.js +31 -25
  366. package/dist/template/implementations/view_list.template.d.ts +1 -1
  367. package/dist/template/implementations/view_list.template.d.ts.map +1 -1
  368. package/dist/template/implementations/view_list.template.js +304 -355
  369. package/dist/template/implementations/view_search_input.template.d.ts +1 -1
  370. package/dist/template/implementations/view_search_input.template.d.ts.map +1 -1
  371. package/dist/template/implementations/view_search_input.template.js +31 -27
  372. package/dist/template/index.js +21 -7
  373. package/dist/template/template-manager.d.ts +1 -1
  374. package/dist/template/template-manager.d.ts.map +1 -1
  375. package/dist/template/template-manager.js +132 -123
  376. package/dist/template/template-types.js +8 -6
  377. package/dist/template/template.d.ts +2 -2
  378. package/dist/template/template.d.ts.map +1 -1
  379. package/dist/template/template.js +73 -68
  380. package/dist/template/zod-converter.d.ts.map +1 -1
  381. package/dist/template/zod-converter.js +603 -657
  382. package/dist/testing/_relation-graph.d.ts +1 -1
  383. package/dist/testing/_relation-graph.d.ts.map +1 -1
  384. package/dist/testing/_relation-graph.js +93 -88
  385. package/dist/testing/bootstrap.d.ts +22 -13
  386. package/dist/testing/bootstrap.d.ts.map +1 -1
  387. package/dist/testing/bootstrap.js +114 -114
  388. package/dist/testing/data-explorer.d.ts +3 -3
  389. package/dist/testing/data-explorer.d.ts.map +1 -1
  390. package/dist/testing/data-explorer.js +237 -265
  391. package/dist/testing/dev-test-routes.d.ts +2 -2
  392. package/dist/testing/dev-test-routes.d.ts.map +1 -1
  393. package/dist/testing/dev-test-routes.js +258 -249
  394. package/dist/testing/dev-vitest-manager.d.ts +1 -1
  395. package/dist/testing/dev-vitest-manager.d.ts.map +1 -1
  396. package/dist/testing/dev-vitest-manager.js +514 -539
  397. package/dist/testing/faker-mappings.js +422 -420
  398. package/dist/testing/fixture-generator.d.ts +3 -3
  399. package/dist/testing/fixture-generator.d.ts.map +1 -1
  400. package/dist/testing/fixture-generator.js +1216 -1346
  401. package/dist/testing/fixture-loader.js +26 -25
  402. package/dist/testing/fixture-manager.d.ts +3 -3
  403. package/dist/testing/fixture-manager.d.ts.map +1 -1
  404. package/dist/testing/fixture-manager.js +706 -776
  405. package/dist/testing/global-setup.js +53 -49
  406. package/dist/testing/index.js +19 -11
  407. package/dist/testing/naite-vitest-reporter.js +18 -13
  408. package/dist/testing/parallel-db-manager.d.ts +1 -1
  409. package/dist/testing/parallel-db-manager.d.ts.map +1 -1
  410. package/dist/testing/parallel-db-manager.js +63 -78
  411. package/dist/testing/vitest-helpers.d.ts +1 -1
  412. package/dist/testing/vitest-helpers.d.ts.map +1 -1
  413. package/dist/testing/vitest-helpers.js +37 -33
  414. package/dist/types/types.d.ts +28 -28
  415. package/dist/types/types.d.ts.map +1 -1
  416. package/dist/types/types.js +764 -890
  417. package/dist/ui/ai-api.d.ts +1 -1
  418. package/dist/ui/ai-api.d.ts.map +1 -1
  419. package/dist/ui/ai-api.js +52 -42
  420. package/dist/ui/ai-client.d.ts +1 -2
  421. package/dist/ui/ai-client.d.ts.map +1 -1
  422. package/dist/ui/ai-client.js +353 -388
  423. package/dist/ui/api.d.ts +1 -1
  424. package/dist/ui/api.d.ts.map +1 -1
  425. package/dist/ui/api.js +903 -1145
  426. package/dist/ui/cdd-service.d.ts +1 -1
  427. package/dist/ui/cdd-service.d.ts.map +1 -1
  428. package/dist/ui/cdd-service.js +406 -407
  429. package/dist/ui/cdd-types.js +1 -3
  430. package/dist/ui-web/assets/index-C-Zz-wYg.css +1 -0
  431. package/dist/ui-web/assets/index-DejDON8K.js +238 -0
  432. package/dist/ui-web/index.html +3 -3
  433. package/dist/utils/async-utils.js +57 -45
  434. package/dist/utils/console-util.d.ts.map +1 -1
  435. package/dist/utils/console-util.js +104 -87
  436. package/dist/utils/controller.js +26 -19
  437. package/dist/utils/esm-utils.js +49 -38
  438. package/dist/utils/formatter.d.ts +1 -2
  439. package/dist/utils/formatter.d.ts.map +1 -1
  440. package/dist/utils/formatter.js +89 -115
  441. package/dist/utils/fs-utils.d.ts.map +1 -1
  442. package/dist/utils/fs-utils.js +68 -65
  443. package/dist/utils/lodash-able.js +11 -4
  444. package/dist/utils/model.d.ts +1 -1
  445. package/dist/utils/model.d.ts.map +1 -1
  446. package/dist/utils/model.js +21 -19
  447. package/dist/utils/object-utils.js +148 -186
  448. package/dist/utils/path-utils.js +67 -57
  449. package/dist/utils/process-utils.d.ts.map +1 -1
  450. package/dist/utils/process-utils.js +37 -31
  451. package/dist/utils/sql-parser.d.ts +1 -1
  452. package/dist/utils/sql-parser.d.ts.map +1 -1
  453. package/dist/utils/sql-parser.js +40 -40
  454. package/dist/utils/type-utils.js +44 -43
  455. package/dist/utils/utils.d.ts +2 -3
  456. package/dist/utils/utils.d.ts.map +1 -1
  457. package/dist/utils/utils.js +81 -93
  458. package/dist/utils/zod-error.d.ts +1 -1
  459. package/dist/utils/zod-error.d.ts.map +1 -1
  460. package/dist/utils/zod-error.js +24 -17
  461. package/dist/vector/chunking.d.ts +1 -1
  462. package/dist/vector/chunking.d.ts.map +1 -1
  463. package/dist/vector/chunking.js +100 -94
  464. package/dist/vector/config.d.ts +1 -1
  465. package/dist/vector/config.d.ts.map +1 -1
  466. package/dist/vector/config.js +76 -78
  467. package/dist/vector/embedding.d.ts +1 -1
  468. package/dist/vector/embedding.d.ts.map +1 -1
  469. package/dist/vector/embedding.js +128 -125
  470. package/dist/vector/index.js +5 -5
  471. package/dist/vector/types.js +1 -5
  472. package/package.json +31 -36
  473. package/src/ai/agents/agent.ts +12 -5
  474. package/src/ai/agents/types.ts +5 -5
  475. package/src/ai/providers/rtzr/model.ts +8 -10
  476. package/src/ai/providers/rtzr/options.ts +2 -1
  477. package/src/ai/providers/rtzr/provider.ts +5 -3
  478. package/src/ai/providers/rtzr/utils.ts +2 -7
  479. package/src/api/__tests__/config.test.ts +15 -8
  480. package/src/api/base-frame.ts +5 -3
  481. package/src/api/caster.ts +7 -6
  482. package/src/api/code-converters.ts +23 -26
  483. package/src/api/config.ts +23 -17
  484. package/src/api/context.ts +18 -11
  485. package/src/api/decorators.ts +17 -18
  486. package/src/api/sonamu.ts +44 -49
  487. package/src/auth/auth-generator.ts +4 -6
  488. package/src/auth/better-auth-entities.ts +3 -2
  489. package/src/auth/knex-adapter.ts +6 -5
  490. package/src/auth/plugins/entity-definitions/admin.ts +1 -1
  491. package/src/auth/plugins/entity-definitions/anonymous.ts +1 -1
  492. package/src/auth/plugins/entity-definitions/api-key.ts +1 -1
  493. package/src/auth/plugins/entity-definitions/index.ts +1 -1
  494. package/src/auth/plugins/entity-definitions/jwt.ts +1 -1
  495. package/src/auth/plugins/entity-definitions/organization.ts +1 -1
  496. package/src/auth/plugins/entity-definitions/passkey.ts +1 -1
  497. package/src/auth/plugins/entity-definitions/phone-number.ts +1 -1
  498. package/src/auth/plugins/entity-definitions/sso.ts +1 -1
  499. package/src/auth/plugins/entity-definitions/two-factor.ts +1 -1
  500. package/src/auth/plugins/entity-definitions/types.ts +1 -1
  501. package/src/auth/plugins/entity-definitions/username.ts +1 -1
  502. package/src/auth/plugins/wrappers/admin.ts +3 -1
  503. package/src/auth/plugins/wrappers/anonymous.ts +3 -1
  504. package/src/auth/plugins/wrappers/api-key.ts +3 -1
  505. package/src/auth/plugins/wrappers/jwt.ts +3 -1
  506. package/src/auth/plugins/wrappers/organization.ts +3 -1
  507. package/src/auth/plugins/wrappers/passkey.ts +3 -1
  508. package/src/auth/plugins/wrappers/phone-number.ts +3 -1
  509. package/src/auth/plugins/wrappers/sso.ts +2 -1
  510. package/src/auth/plugins/wrappers/two-factor.ts +3 -1
  511. package/src/auth/plugins/wrappers/username.ts +3 -1
  512. package/src/bin/__tests__/ts-loader-register.test.ts +7 -12
  513. package/src/bin/build-config.ts +3 -3
  514. package/src/bin/cli.ts +27 -25
  515. package/src/bin/fixture.ts +4 -2
  516. package/src/bin/hmr-hook-register.ts +1 -0
  517. package/src/bin/test-command.ts +4 -2
  518. package/src/bin/ts-loader-registration.ts +6 -22
  519. package/src/cache/cache-manager.ts +2 -1
  520. package/src/cache/decorator.ts +2 -2
  521. package/src/cache/types.ts +3 -3
  522. package/src/cache-control/cache-control.ts +3 -2
  523. package/src/cache-control/types.ts +2 -2
  524. package/src/compress/compress.ts +1 -1
  525. package/src/cone/cone-generator.ts +5 -3
  526. package/src/database/_batch_update.ts +1 -1
  527. package/src/database/base-model.ts +20 -14
  528. package/src/database/base-model.types.ts +12 -11
  529. package/src/database/db.ts +56 -21
  530. package/src/database/knex.ts +2 -2
  531. package/src/database/puri-subset.test-d.ts +33 -32
  532. package/src/database/puri-subset.types.ts +6 -7
  533. package/src/database/puri-wrapper.ts +29 -26
  534. package/src/database/puri.ts +36 -34
  535. package/src/database/puri.types.test-d.ts +6 -5
  536. package/src/database/puri.types.ts +9 -12
  537. package/src/database/transaction-context.ts +2 -2
  538. package/src/database/upsert-builder.ts +17 -10
  539. package/src/dict/sd.ts +17 -4
  540. package/src/dict/sonamu-dictionary.ts +23 -17
  541. package/src/entity/entity-manager.ts +9 -7
  542. package/src/entity/entity-template-cone.ts +10 -3
  543. package/src/entity/entity.ts +20 -16
  544. package/src/exceptions/error-handler.ts +2 -1
  545. package/src/exceptions/so-exceptions.ts +1 -1
  546. package/src/filter/utils.ts +3 -2
  547. package/src/logger/category.ts +1 -0
  548. package/src/logger/configure.ts +5 -5
  549. package/src/migration/__tests__/code-generation.search-text.test.ts +2 -3
  550. package/src/migration/code-generation.ts +26 -25
  551. package/src/migration/migration-set.ts +16 -18
  552. package/src/migration/migrator.ts +38 -33
  553. package/src/migration/postgresql-schema-reader.ts +12 -12
  554. package/src/migration/slack-confirm.ts +5 -4
  555. package/src/migration/types.ts +2 -2
  556. package/src/naite/messaging-types.ts +1 -1
  557. package/src/naite/naite-reporter.ts +5 -3
  558. package/src/naite/naite.ts +12 -7
  559. package/src/shared/app.shared.ts.txt +2 -2
  560. package/src/shared/web.shared.ts.txt +2 -2
  561. package/src/skills/AGENTS.md +19 -18
  562. package/src/skills/commands/sonamu-skills.md +9 -9
  563. package/src/skills/sonamu/SKILL.md +111 -104
  564. package/src/skills/sonamu/ai-agents.md +27 -26
  565. package/src/skills/sonamu/api.md +81 -69
  566. package/src/skills/sonamu/auth-migration.md +13 -27
  567. package/src/skills/sonamu/auth-plugins.md +41 -31
  568. package/src/skills/sonamu/auth.md +30 -24
  569. package/src/skills/sonamu/cdd.md +26 -17
  570. package/src/skills/sonamu/cone.md +50 -50
  571. package/src/skills/sonamu/config.md +74 -51
  572. package/src/skills/sonamu/create-sonamu.md +31 -19
  573. package/src/skills/sonamu/database.md +43 -26
  574. package/src/skills/sonamu/entity-basic.md +61 -61
  575. package/src/skills/sonamu/entity-relations.md +84 -80
  576. package/src/skills/sonamu/entity-validation-checklist.md +19 -15
  577. package/src/skills/sonamu/fixture-cli.md +52 -30
  578. package/src/skills/sonamu/framework-change.md +9 -7
  579. package/src/skills/sonamu/frontend.md +64 -82
  580. package/src/skills/sonamu/i18n.md +45 -37
  581. package/src/skills/sonamu/migration.md +54 -31
  582. package/src/skills/sonamu/model.md +98 -66
  583. package/src/skills/sonamu/naite.md +34 -32
  584. package/src/skills/sonamu/project-init.md +28 -8
  585. package/src/skills/sonamu/puri.md +82 -91
  586. package/src/skills/sonamu/scaffolding.md +44 -32
  587. package/src/skills/sonamu/skill-contribution.md +50 -45
  588. package/src/skills/sonamu/subset.md +13 -13
  589. package/src/skills/sonamu/tasks.md +73 -58
  590. package/src/skills/sonamu/testing-devrunner.md +56 -36
  591. package/src/skills/sonamu/testing.md +23 -58
  592. package/src/skills/sonamu/upsert.md +32 -31
  593. package/src/skills/sonamu/vector.md +37 -36
  594. package/src/ssr/index.ts +2 -12
  595. package/src/ssr/registry.ts +1 -1
  596. package/src/ssr/renderer.ts +7 -5
  597. package/src/ssr/types.ts +2 -2
  598. package/src/storage/buffered-file.ts +4 -2
  599. package/src/storage/drivers.ts +3 -2
  600. package/src/storage/s3-driver.ts +7 -4
  601. package/src/storage/storage-manager.ts +3 -2
  602. package/src/storage/types.ts +3 -2
  603. package/src/storage/uploaded-file.ts +1 -1
  604. package/src/stream/sse.ts +2 -2
  605. package/src/syncer/api-parser.ts +8 -5
  606. package/src/syncer/checksum.ts +9 -5
  607. package/src/syncer/code-generator.ts +16 -8
  608. package/src/syncer/entity-operations.ts +5 -3
  609. package/src/syncer/file-patterns.ts +2 -1
  610. package/src/syncer/module-loader.ts +9 -6
  611. package/src/syncer/syncer-actions.ts +5 -3
  612. package/src/syncer/syncer.ts +18 -24
  613. package/src/tasks/decorator.ts +10 -8
  614. package/src/tasks/step-wrapper.ts +1 -1
  615. package/src/tasks/workflow-manager.ts +18 -15
  616. package/src/template/__tests__/generated.template.search-text.test.ts +1 -0
  617. package/src/template/entity-converter.ts +4 -2
  618. package/src/template/generated.template.test-d.ts +2 -1
  619. package/src/template/helpers.ts +5 -2
  620. package/src/template/implementations/entity.template.ts +9 -8
  621. package/src/template/implementations/entry-server.template.ts +1 -1
  622. package/src/template/implementations/generated.template.ts +21 -29
  623. package/src/template/implementations/generated_http.template.ts +9 -6
  624. package/src/template/implementations/generated_sso.template.ts +6 -4
  625. package/src/template/implementations/init_types.template.ts +3 -2
  626. package/src/template/implementations/model.template.ts +4 -2
  627. package/src/template/implementations/model_test.template.ts +3 -2
  628. package/src/template/implementations/queries.template.ts +6 -14
  629. package/src/template/implementations/sd.template.ts +4 -2
  630. package/src/template/implementations/services.template.ts +7 -11
  631. package/src/template/implementations/view_form.template.ts +5 -3
  632. package/src/template/implementations/view_id_all_select.template.ts +3 -2
  633. package/src/template/implementations/view_list.template.ts +7 -5
  634. package/src/template/implementations/view_search_input.template.ts +3 -2
  635. package/src/template/template-manager.ts +4 -3
  636. package/src/template/template.ts +4 -3
  637. package/src/template/zod-converter.ts +10 -7
  638. package/src/testing/__tests__/dev-test-routes.test.ts +3 -2
  639. package/src/testing/__tests__/dev-vitest-manager.test.ts +1 -0
  640. package/src/testing/_relation-graph.ts +2 -2
  641. package/src/testing/bootstrap.ts +55 -27
  642. package/src/testing/data-explorer.ts +5 -4
  643. package/src/testing/dev-test-routes.ts +8 -5
  644. package/src/testing/dev-vitest-manager.ts +13 -12
  645. package/src/testing/fixture-generator.ts +11 -17
  646. package/src/testing/fixture-manager.ts +21 -17
  647. package/src/testing/parallel-db-manager.ts +2 -1
  648. package/src/testing/vitest-helpers.ts +2 -1
  649. package/src/types/__tests__/entity-json-schema-search-text.test.ts +1 -0
  650. package/src/types/types.ts +8 -8
  651. package/src/typings/knex.d.ts +4 -4
  652. package/src/ui/ai-api.ts +5 -3
  653. package/src/ui/ai-client.ts +6 -5
  654. package/src/ui/api.ts +25 -23
  655. package/src/ui/cdd-service.ts +12 -11
  656. package/src/utils/console-util.ts +3 -1
  657. package/src/utils/formatter.ts +94 -102
  658. package/src/utils/fs-utils.ts +2 -1
  659. package/src/utils/model.ts +2 -2
  660. package/src/utils/object-utils.ts +3 -3
  661. package/src/utils/process-utils.ts +2 -1
  662. package/src/utils/sql-parser.ts +10 -1
  663. package/src/utils/type-utils.ts +3 -3
  664. package/src/utils/utils.ts +9 -7
  665. package/src/utils/zod-error.ts +1 -1
  666. package/src/vector/chunking.ts +1 -1
  667. package/src/vector/config.ts +1 -1
  668. package/src/vector/embedding.ts +11 -9
  669. package/tsdown.api.config.ts +50 -0
  670. package/.swcrc.project-default +0 -18
  671. package/dist/api/__tests__/config.test.js +0 -189
  672. package/dist/bin/__tests__/test-command.test.js +0 -112
  673. package/dist/bin/__tests__/ts-loader-register.test.js +0 -45
  674. package/dist/database/puri-subset.test-d.js +0 -89
  675. package/dist/database/puri.types.test-d.js +0 -129
  676. package/dist/migration/__tests__/code-generation.search-text.test.js +0 -435
  677. package/dist/template/__tests__/generated.template.search-text.test.js +0 -99
  678. package/dist/template/generated.template.test-d.js +0 -24
  679. package/dist/testing/__tests__/dev-test-routes.test.js +0 -144
  680. package/dist/testing/__tests__/dev-vitest-manager.test.js +0 -152
  681. package/dist/types/__tests__/entity-json-schema-search-text.test.js +0 -256
  682. package/dist/typings/knex.d.js +0 -3
  683. package/dist/ui-web/assets/index-CKo0Z2Iu.css +0 -1
  684. package/dist/ui-web/assets/index-DK-2aacv.js +0 -257
@@ -1,4 +1,4 @@
1
- import type { Entity } from "../entity/entity";
1
+ import { type Entity } from "../entity/entity";
2
2
  import { type MigrationSetAndJoinTable } from "../types/types";
3
3
  /**
4
4
  * Entity를 읽어서 MigrationSetAndJoinTable을 만들어옵니다.
@@ -1 +1 @@
1
- {"version":3,"file":"migration-set.d.ts","sourceRoot":"","sources":["../../src/migration/migration-set.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAiBL,KAAK,wBAAwB,EAC9B,MAAM,gBAAgB,CAAC;AAGxB;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,MAAM,GAAG,wBAAwB,CA2LlF"}
1
+ {"version":3,"file":"migration-set.d.ts","sourceRoot":"","sources":["../../src/migration/migration-set.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAc/C,OAAO,EAOL,KAAK,wBAAwB,EAC9B,MAAM,gBAAgB,CAAC;AAGxB;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,MAAM,GAAG,wBAAwB,CAsLlF"}
@@ -1,233 +1,183 @@
1
+ import { __esmMin } from "../_virtual/rolldown_runtime.js";
2
+ import { exhaustive, init_utils } from "../utils/utils.js";
3
+ import { init_types, isBelongsToOneRelationProp, isHasManyRelationProp, isManyToManyRelationProp, isNumberProp, isNumericProp, isOneToOneRelationProp, isRelationProp, isStringProp, isVectorProp, isVirtualProp } from "../types/types.js";
4
+ import { EntityManager, init_entity_manager } from "../entity/entity-manager.js";
1
5
  import inflection from "inflection";
2
- import { EntityManager } from "../entity/entity-manager.js";
3
- import { isBelongsToOneRelationProp, isHasManyRelationProp, isManyToManyRelationProp, isNumberProp, isNumericProp, isOneToOneRelationProp, isRelationProp, isStringProp, isVectorProp, isVirtualProp } from "../types/types.js";
4
- import { exhaustive } from "../utils/utils.js";
6
+
7
+ //#region src/migration/migration-set.ts
5
8
  /**
6
- * Entity를 읽어서 MigrationSetAndJoinTable을 만들어옵니다.
7
- * @param entity Entity 객체
8
- * @returns MigrationSetAndJoinTable 객체
9
- */ export function getMigrationSetFromEntity(entity) {
10
- const migrationSet = entity.props.reduce((r, prop)=>{
11
- // virtual 필드 제외
12
- if (isVirtualProp(prop)) {
13
- return r;
14
- }
15
- // HasMany 케이스는 아무 처리도 하지 않음
16
- if (isHasManyRelationProp(prop)) {
17
- return r;
18
- }
19
- // 일반 컬럼
20
- if (!isRelationProp(prop)) {
21
- const column = {
22
- name: prop.name,
23
- type: resolveEntityPropTypeToMigrationColumnType(prop),
24
- nullable: prop.nullable === true,
25
- ...(()=>{
26
- if (prop.dbDefault !== undefined) {
27
- return {
28
- defaultTo: prop.dbDefault
29
- };
30
- }
31
- return {};
32
- })(),
33
- // String 타입에 length 있는 경우 추가
34
- ...isStringProp(prop) && prop.length !== undefined && {
35
- length: prop.length
36
- },
37
- // Number/Numeric 타입의 경우 precision, scale 추가
38
- ...(isNumberProp(prop) || isNumericProp(prop)) && {
39
- precision: prop.precision,
40
- scale: prop.scale,
41
- numberType: isNumberProp(prop) ? prop.numberType ?? "numeric" : "numeric"
42
- },
43
- // Vector 타입의 경우 dimensions 추가
44
- ...isVectorProp(prop) && {
45
- dimensions: prop.dimensions
46
- },
47
- // Generated Column 정보 추가
48
- ...prop.generated && {
49
- generated: prop.generated
50
- }
51
- };
52
- r.columns.push(column);
53
- }
54
- if (isManyToManyRelationProp(prop)) {
55
- // ManyToMany 케이스
56
- const relMd = EntityManager.get(prop.with);
57
- const table1 = entity.table;
58
- const table2 = relMd.table;
59
- // 엔티티의 PK 타입 정보 가져오기
60
- const thisPkType = entity.getPkType();
61
- const thisPkProp = entity.getPkProp();
62
- const relPkType = relMd.getPkType();
63
- const relPkProp = relMd.getPkProp();
64
- const join = {
65
- from: `${entity.table}.id`,
66
- through: {
67
- from: `${prop.joinTable}.${inflection.singularize(table1)}_id`,
68
- to: `${prop.joinTable}.${inflection.singularize(table2)}_id`,
69
- onUpdate: prop.onUpdate,
70
- onDelete: prop.onDelete
71
- },
72
- to: `${relMd.table}.id`
73
- };
74
- const through = join.through;
75
- const fields = [
76
- through.from,
77
- through.to
78
- ];
79
- r.joinTables.push({
80
- table: through.from.split(".")[0],
81
- indexes: [
82
- // 조인 테이블에 걸린 인덱스 찾아와서 연결
83
- ...entity.indexes.filter((index)=>index.columns.find((col)=>col.name.includes(`${prop.joinTable}.`))).map((index)=>({
84
- ...index,
85
- columns: index.columns.map((col)=>({
86
- name: col.name.replace(`${prop.joinTable}.`, ""),
87
- nullsFirst: col.nullsFirst,
88
- sortOrder: col.sortOrder
89
- }))
90
- }))
91
- ],
92
- columns: [
93
- {
94
- name: "id",
95
- type: "integer",
96
- nullable: false
97
- },
98
- // 현재 엔티티의 FK
99
- {
100
- name: `${inflection.singularize(table1)}_id`,
101
- type: thisPkType,
102
- nullable: false,
103
- ...thisPkType === "string" && thisPkProp.type === "string" && thisPkProp.length !== undefined && {
104
- length: thisPkProp.length
105
- }
106
- },
107
- // 참조 엔티티의 FK
108
- {
109
- name: `${inflection.singularize(table2)}_id`,
110
- type: relPkType,
111
- nullable: false,
112
- ...relPkType === "string" && relPkProp.type === "string" && relPkProp.length !== undefined && {
113
- length: relPkProp.length
114
- }
115
- }
116
- ],
117
- foreigns: fields.map((field)=>{
118
- // 현재 필드가 어떤 테이블에 속하는지 판단
119
- const col = field.split(".")[1];
120
- const to = (()=>{
121
- if (`${inflection.singularize(join.to.split(".")[0])}_id` === col) {
122
- return join.to;
123
- } else {
124
- return join.from;
125
- }
126
- })();
127
- return {
128
- columns: [
129
- col
130
- ],
131
- to,
132
- onUpdate: through.onUpdate,
133
- onDelete: through.onDelete
134
- };
135
- })
136
- });
137
- return r;
138
- } else if (isBelongsToOneRelationProp(prop) || isOneToOneRelationProp(prop) && prop.hasJoinColumn) {
139
- // -OneRelation 케이스
140
- const relEntity = EntityManager.get(prop.with);
141
- const pkType = relEntity.getPkType();
142
- const pkProp = relEntity.getPkProp();
143
- const idColumnName = `${prop.name}_id`;
144
- r.columns.push({
145
- name: idColumnName,
146
- type: pkType,
147
- nullable: prop.nullable ?? false,
148
- // string FK인 경우 length도 전달
149
- ...pkType === "string" && pkProp.type === "string" && pkProp.length !== undefined && {
150
- length: pkProp.length
151
- }
152
- });
153
- if ((prop.useConstraint ?? true) === true) {
154
- r.foreigns.push({
155
- columns: [
156
- idColumnName
157
- ],
158
- to: `${inflection.underscore(inflection.pluralize(prop.with)).toLowerCase()}.id`,
159
- onUpdate: prop.onUpdate ?? "RESTRICT",
160
- onDelete: prop.onDelete ?? "RESTRICT"
161
- });
162
- }
163
- }
164
- return r;
165
- }, {
166
- table: entity.table,
167
- columns: [],
168
- indexes: [],
169
- foreigns: [],
170
- joinTables: []
171
- });
172
- // indexes
173
- migrationSet.indexes = entity.indexes.filter((index)=>index.columns.find((col)=>col.name.includes(".") === false));
174
- return migrationSet;
9
+ * Entity를 읽어서 MigrationSetAndJoinTable을 만들어옵니다.
10
+ * @param entity Entity 객체
11
+ * @returns MigrationSetAndJoinTable 객체
12
+ */
13
+ function getMigrationSetFromEntity(entity) {
14
+ const migrationSet = entity.props.reduce((r, prop) => {
15
+ if (isVirtualProp(prop)) {
16
+ return r;
17
+ }
18
+ if (isHasManyRelationProp(prop)) {
19
+ return r;
20
+ }
21
+ if (!isRelationProp(prop)) {
22
+ const column = {
23
+ name: prop.name,
24
+ type: resolveEntityPropTypeToMigrationColumnType(prop),
25
+ nullable: prop.nullable === true,
26
+ ...(() => {
27
+ if (prop.dbDefault !== undefined) {
28
+ return { defaultTo: prop.dbDefault };
29
+ }
30
+ return {};
31
+ })(),
32
+ ...isStringProp(prop) && prop.length !== undefined && { length: prop.length },
33
+ ...(isNumberProp(prop) || isNumericProp(prop)) && {
34
+ precision: prop.precision,
35
+ scale: prop.scale,
36
+ numberType: isNumberProp(prop) ? prop.numberType ?? "numeric" : "numeric"
37
+ },
38
+ ...isVectorProp(prop) && { dimensions: prop.dimensions },
39
+ ...prop.generated && { generated: prop.generated }
40
+ };
41
+ r.columns.push(column);
42
+ }
43
+ if (isManyToManyRelationProp(prop)) {
44
+ const relMd = EntityManager.get(prop.with);
45
+ const table1 = entity.table;
46
+ const table2 = relMd.table;
47
+ const thisPkType = entity.getPkType();
48
+ const thisPkProp = entity.getPkProp();
49
+ const relPkType = relMd.getPkType();
50
+ const relPkProp = relMd.getPkProp();
51
+ const join = {
52
+ from: `${entity.table}.id`,
53
+ through: {
54
+ from: `${prop.joinTable}.${inflection.singularize(table1)}_id`,
55
+ to: `${prop.joinTable}.${inflection.singularize(table2)}_id`,
56
+ onUpdate: prop.onUpdate,
57
+ onDelete: prop.onDelete
58
+ },
59
+ to: `${relMd.table}.id`
60
+ };
61
+ const through = join.through;
62
+ const fields = [through.from, through.to];
63
+ r.joinTables.push({
64
+ table: through.from.split(".")[0],
65
+ indexes: entity.indexes.filter((index) => index.columns.find((col) => col.name.includes(`${prop.joinTable}.`))).map((index) => ({
66
+ ...index,
67
+ columns: index.columns.map((col) => ({
68
+ name: col.name.replace(`${prop.joinTable}.`, ""),
69
+ nullsFirst: col.nullsFirst,
70
+ sortOrder: col.sortOrder
71
+ }))
72
+ })),
73
+ columns: [
74
+ {
75
+ name: "id",
76
+ type: "integer",
77
+ nullable: false
78
+ },
79
+ {
80
+ name: `${inflection.singularize(table1)}_id`,
81
+ type: thisPkType,
82
+ nullable: false,
83
+ ...thisPkType === "string" && thisPkProp.type === "string" && thisPkProp.length !== undefined && { length: thisPkProp.length }
84
+ },
85
+ {
86
+ name: `${inflection.singularize(table2)}_id`,
87
+ type: relPkType,
88
+ nullable: false,
89
+ ...relPkType === "string" && relPkProp.type === "string" && relPkProp.length !== undefined && { length: relPkProp.length }
90
+ }
91
+ ],
92
+ foreigns: fields.map((field) => {
93
+ const col = field.split(".")[1];
94
+ const to = (() => {
95
+ if (`${inflection.singularize(join.to.split(".")[0])}_id` === col) {
96
+ return join.to;
97
+ } else {
98
+ return join.from;
99
+ }
100
+ })();
101
+ return {
102
+ columns: [col],
103
+ to,
104
+ onUpdate: through.onUpdate,
105
+ onDelete: through.onDelete
106
+ };
107
+ })
108
+ });
109
+ return r;
110
+ } else if (isBelongsToOneRelationProp(prop) || isOneToOneRelationProp(prop) && prop.hasJoinColumn) {
111
+ const relEntity = EntityManager.get(prop.with);
112
+ const pkType = relEntity.getPkType();
113
+ const pkProp = relEntity.getPkProp();
114
+ const idColumnName = `${prop.name}_id`;
115
+ r.columns.push({
116
+ name: idColumnName,
117
+ type: pkType,
118
+ nullable: prop.nullable ?? false,
119
+ ...pkType === "string" && pkProp.type === "string" && pkProp.length !== undefined && { length: pkProp.length }
120
+ });
121
+ if (prop.useConstraint ?? true) {
122
+ r.foreigns.push({
123
+ columns: [idColumnName],
124
+ to: `${inflection.underscore(inflection.pluralize(prop.with)).toLowerCase()}.id`,
125
+ onUpdate: prop.onUpdate ?? "RESTRICT",
126
+ onDelete: prop.onDelete ?? "RESTRICT"
127
+ });
128
+ }
129
+ }
130
+ return r;
131
+ }, {
132
+ table: entity.table,
133
+ columns: [],
134
+ indexes: [],
135
+ foreigns: [],
136
+ joinTables: []
137
+ });
138
+ migrationSet.indexes = entity.indexes.filter((index) => index.columns.find((col) => !col.name.includes(".")));
139
+ return migrationSet;
175
140
  }
176
141
  function resolveEntityPropTypeToMigrationColumnType(prop) {
177
- if (prop.type === "relation" || prop.type === "virtual") {
178
- throw new Error(`Unresolved column type: ${prop.type}`);
179
- }
180
- switch(prop.type){
181
- case "string":
182
- return "string";
183
- case "string[]":
184
- return "string[]";
185
- case "enum":
186
- return "string";
187
- case "enum[]":
188
- return "string[]";
189
- case "integer":
190
- return "integer";
191
- case "integer[]":
192
- return "integer[]";
193
- case "bigInteger":
194
- return "bigInteger";
195
- case "bigInteger[]":
196
- return "bigInteger[]";
197
- case "number":
198
- return "numberOrNumeric";
199
- case "number[]":
200
- return "numberOrNumeric[]";
201
- case "numeric":
202
- return "numberOrNumeric";
203
- case "numeric[]":
204
- return "numberOrNumeric[]";
205
- case "boolean":
206
- return "boolean";
207
- case "boolean[]":
208
- return "boolean[]";
209
- case "date":
210
- return "date";
211
- case "date[]":
212
- return "date[]";
213
- case "uuid":
214
- return "uuid";
215
- case "uuid[]":
216
- return "uuid[]";
217
- case "json":
218
- return "json";
219
- case "searchText":
220
- return "string";
221
- case "vector":
222
- return "vector";
223
- case "vector[]":
224
- return "vector[]";
225
- case "tsvector":
226
- return "tsvector";
227
- default:
228
- exhaustive(prop);
229
- throw new Error(`Unknown entity prop type: ${prop.type}`);
230
- }
142
+ if (prop.type === "relation" || prop.type === "virtual") {
143
+ throw new Error(`Unresolved column type: ${prop.type}`);
144
+ }
145
+ switch (prop.type) {
146
+ case "string": return "string";
147
+ case "string[]": return "string[]";
148
+ case "enum": return "string";
149
+ case "enum[]": return "string[]";
150
+ case "integer": return "integer";
151
+ case "integer[]": return "integer[]";
152
+ case "bigInteger": return "bigInteger";
153
+ case "bigInteger[]": return "bigInteger[]";
154
+ case "number": return "numberOrNumeric";
155
+ case "number[]": return "numberOrNumeric[]";
156
+ case "numeric": return "numberOrNumeric";
157
+ case "numeric[]": return "numberOrNumeric[]";
158
+ case "boolean": return "boolean";
159
+ case "boolean[]": return "boolean[]";
160
+ case "date": return "date";
161
+ case "date[]": return "date[]";
162
+ case "uuid": return "uuid";
163
+ case "uuid[]": return "uuid[]";
164
+ case "json": return "json";
165
+ case "searchText": return "string";
166
+ case "vector": return "vector";
167
+ case "vector[]": return "vector[]";
168
+ case "tsvector": return "tsvector";
169
+ default:
170
+ exhaustive(prop);
171
+ throw new Error(`Unknown entity prop type: ${prop.type}`);
172
+ }
231
173
  }
174
+ var init_migration_set = __esmMin((() => {
175
+ init_entity_manager();
176
+ init_types();
177
+ init_utils();
178
+ }));
232
179
 
233
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9taWdyYXRpb24vbWlncmF0aW9uLXNldC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaW5mbGVjdGlvbiBmcm9tIFwiaW5mbGVjdGlvblwiO1xuaW1wb3J0IHR5cGUgeyBFbnRpdHkgfSBmcm9tIFwiLi4vZW50aXR5L2VudGl0eVwiO1xuaW1wb3J0IHsgRW50aXR5TWFuYWdlciB9IGZyb20gXCIuLi9lbnRpdHkvZW50aXR5LW1hbmFnZXJcIjtcbmltcG9ydCB7XG4gIHR5cGUgRW50aXR5UHJvcCxcbiAgaXNCZWxvbmdzVG9PbmVSZWxhdGlvblByb3AsXG4gIGlzSGFzTWFueVJlbGF0aW9uUHJvcCxcbiAgaXNNYW55VG9NYW55UmVsYXRpb25Qcm9wLFxuICBpc051bWJlclByb3AsXG4gIGlzTnVtZXJpY1Byb3AsXG4gIGlzT25lVG9PbmVSZWxhdGlvblByb3AsXG4gIGlzUmVsYXRpb25Qcm9wLFxuICBpc1N0cmluZ1Byb3AsXG4gIGlzVmVjdG9yUHJvcCxcbiAgaXNWaXJ0dWFsUHJvcCxcbiAgdHlwZSBNaWdyYXRpb25Db2x1bW4sXG4gIHR5cGUgTWlncmF0aW9uQ29sdW1uVHlwZSxcbiAgdHlwZSBNaWdyYXRpb25Gb3JlaWduLFxuICB0eXBlIE1pZ3JhdGlvbkluZGV4LFxuICB0eXBlIE1pZ3JhdGlvbkpvaW5UYWJsZSxcbiAgdHlwZSBNaWdyYXRpb25TZXRBbmRKb2luVGFibGUsXG59IGZyb20gXCIuLi90eXBlcy90eXBlc1wiO1xuaW1wb3J0IHsgZXhoYXVzdGl2ZSB9IGZyb20gXCIuLi91dGlscy91dGlsc1wiO1xuXG4vKipcbiAqIEVudGl0eeulvCDsnb3slrTshJwgTWlncmF0aW9uU2V0QW5kSm9pblRhYmxl7J2EIOunjOuTpOyWtOyYteuLiOuLpC5cbiAqIEBwYXJhbSBlbnRpdHkgRW50aXR5IOqwneyytFxuICogQHJldHVybnMgTWlncmF0aW9uU2V0QW5kSm9pblRhYmxlIOqwneyytFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWlncmF0aW9uU2V0RnJvbUVudGl0eShlbnRpdHk6IEVudGl0eSk6IE1pZ3JhdGlvblNldEFuZEpvaW5UYWJsZSB7XG4gIGNvbnN0IG1pZ3JhdGlvblNldDogTWlncmF0aW9uU2V0QW5kSm9pblRhYmxlID0gZW50aXR5LnByb3BzLnJlZHVjZShcbiAgICAociwgcHJvcCkgPT4ge1xuICAgICAgLy8gdmlydHVhbCDtlYTrk5wg7KCc7Jm4XG4gICAgICBpZiAoaXNWaXJ0dWFsUHJvcChwcm9wKSkge1xuICAgICAgICByZXR1cm4gcjtcbiAgICAgIH1cbiAgICAgIC8vIEhhc01hbnkg7LyA7J207Iqk64qUIOyVhOustCDsspjrpqzrj4Qg7ZWY7KeAIOyViuydjFxuICAgICAgaWYgKGlzSGFzTWFueVJlbGF0aW9uUHJvcChwcm9wKSkge1xuICAgICAgICByZXR1cm4gcjtcbiAgICAgIH1cblxuICAgICAgLy8g7J2867CYIOy7rOufvFxuICAgICAgaWYgKCFpc1JlbGF0aW9uUHJvcChwcm9wKSkge1xuICAgICAgICBjb25zdCBjb2x1bW4gPSB7XG4gICAgICAgICAgbmFtZTogcHJvcC5uYW1lLFxuICAgICAgICAgIHR5cGU6IHJlc29sdmVFbnRpdHlQcm9wVHlwZVRvTWlncmF0aW9uQ29sdW1uVHlwZShwcm9wKSxcbiAgICAgICAgICBudWxsYWJsZTogcHJvcC5udWxsYWJsZSA9PT0gdHJ1ZSxcbiAgICAgICAgICAuLi4oKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHByb3AuZGJEZWZhdWx0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBkZWZhdWx0VG86IHByb3AuZGJEZWZhdWx0LFxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgICAgIH0pKCksXG4gICAgICAgICAgLy8gU3RyaW5nIO2DgOyeheyXkCBsZW5ndGgg7J6I64qUIOqyveyasCDstpTqsIBcbiAgICAgICAgICAuLi4oaXNTdHJpbmdQcm9wKHByb3ApICYmXG4gICAgICAgICAgICBwcm9wLmxlbmd0aCAhPT0gdW5kZWZpbmVkICYmIHtcbiAgICAgICAgICAgICAgbGVuZ3RoOiBwcm9wLmxlbmd0aCxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIC8vIE51bWJlci9OdW1lcmljIO2DgOyeheydmCDqsr3smrAgcHJlY2lzaW9uLCBzY2FsZSDstpTqsIBcbiAgICAgICAgICAuLi4oKGlzTnVtYmVyUHJvcChwcm9wKSB8fCBpc051bWVyaWNQcm9wKHByb3ApKSAmJiB7XG4gICAgICAgICAgICBwcmVjaXNpb246IHByb3AucHJlY2lzaW9uLFxuICAgICAgICAgICAgc2NhbGU6IHByb3Auc2NhbGUsXG4gICAgICAgICAgICBudW1iZXJUeXBlOiBpc051bWJlclByb3AocHJvcCkgPyAocHJvcC5udW1iZXJUeXBlID8/IFwibnVtZXJpY1wiKSA6IFwibnVtZXJpY1wiLFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIC8vIFZlY3RvciDtg4DsnoXsnZgg6rK97JqwIGRpbWVuc2lvbnMg7LaU6rCAXG4gICAgICAgICAgLi4uKGlzVmVjdG9yUHJvcChwcm9wKSAmJiB7XG4gICAgICAgICAgICBkaW1lbnNpb25zOiBwcm9wLmRpbWVuc2lvbnMsXG4gICAgICAgICAgfSksXG4gICAgICAgICAgLy8gR2VuZXJhdGVkIENvbHVtbiDsoJXrs7Qg7LaU6rCAXG4gICAgICAgICAgLi4uKHByb3AuZ2VuZXJhdGVkICYmIHtcbiAgICAgICAgICAgIGdlbmVyYXRlZDogcHJvcC5nZW5lcmF0ZWQsXG4gICAgICAgICAgfSksXG4gICAgICAgIH07XG5cbiAgICAgICAgci5jb2x1bW5zLnB1c2goY29sdW1uKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGlzTWFueVRvTWFueVJlbGF0aW9uUHJvcChwcm9wKSkge1xuICAgICAgICAvLyBNYW55VG9NYW55IOy8gOydtOyKpFxuICAgICAgICBjb25zdCByZWxNZCA9IEVudGl0eU1hbmFnZXIuZ2V0KHByb3Aud2l0aCk7XG4gICAgICAgIGNvbnN0IHRhYmxlMSA9IGVudGl0eS50YWJsZTtcbiAgICAgICAgY29uc3QgdGFibGUyID0gcmVsTWQudGFibGU7XG5cbiAgICAgICAgLy8g6rCBIOyXlO2LsO2LsOydmCBQSyDtg4DsnoUg7KCV67O0IOqwgOyguOyYpOq4sFxuICAgICAgICBjb25zdCB0aGlzUGtUeXBlID0gZW50aXR5LmdldFBrVHlwZSgpO1xuICAgICAgICBjb25zdCB0aGlzUGtQcm9wID0gZW50aXR5LmdldFBrUHJvcCgpO1xuICAgICAgICBjb25zdCByZWxQa1R5cGUgPSByZWxNZC5nZXRQa1R5cGUoKTtcbiAgICAgICAgY29uc3QgcmVsUGtQcm9wID0gcmVsTWQuZ2V0UGtQcm9wKCk7XG5cbiAgICAgICAgY29uc3Qgam9pbiA9IHtcbiAgICAgICAgICBmcm9tOiBgJHtlbnRpdHkudGFibGV9LmlkYCxcbiAgICAgICAgICB0aHJvdWdoOiB7XG4gICAgICAgICAgICBmcm9tOiBgJHtwcm9wLmpvaW5UYWJsZX0uJHtpbmZsZWN0aW9uLnNpbmd1bGFyaXplKHRhYmxlMSl9X2lkYCxcbiAgICAgICAgICAgIHRvOiBgJHtwcm9wLmpvaW5UYWJsZX0uJHtpbmZsZWN0aW9uLnNpbmd1bGFyaXplKHRhYmxlMil9X2lkYCxcbiAgICAgICAgICAgIG9uVXBkYXRlOiBwcm9wLm9uVXBkYXRlLFxuICAgICAgICAgICAgb25EZWxldGU6IHByb3Aub25EZWxldGUsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB0bzogYCR7cmVsTWQudGFibGV9LmlkYCxcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgdGhyb3VnaCA9IGpvaW4udGhyb3VnaDtcbiAgICAgICAgY29uc3QgZmllbGRzID0gW3Rocm91Z2guZnJvbSwgdGhyb3VnaC50b107XG4gICAgICAgIHIuam9pblRhYmxlcy5wdXNoKHtcbiAgICAgICAgICB0YWJsZTogdGhyb3VnaC5mcm9tLnNwbGl0KFwiLlwiKVswXSxcbiAgICAgICAgICBpbmRleGVzOiBbXG4gICAgICAgICAgICAvLyDsobDsnbgg7YWM7J2067iU7JeQIOqxuOumsCDsnbjrjbHsiqQg7LC+7JWE7JmA7IScIOyXsOqysFxuICAgICAgICAgICAgLi4uZW50aXR5LmluZGV4ZXNcbiAgICAgICAgICAgICAgLmZpbHRlcigoaW5kZXgpID0+XG4gICAgICAgICAgICAgICAgaW5kZXguY29sdW1ucy5maW5kKChjb2wpID0+IGNvbC5uYW1lLmluY2x1ZGVzKGAke3Byb3Auam9pblRhYmxlfS5gKSksXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgLm1hcCgoaW5kZXgpID0+ICh7XG4gICAgICAgICAgICAgICAgLi4uaW5kZXgsXG4gICAgICAgICAgICAgICAgY29sdW1uczogaW5kZXguY29sdW1ucy5tYXAoKGNvbCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgIG5hbWU6IGNvbC5uYW1lLnJlcGxhY2UoYCR7cHJvcC5qb2luVGFibGV9LmAsIFwiXCIpLFxuICAgICAgICAgICAgICAgICAgbnVsbHNGaXJzdDogY29sLm51bGxzRmlyc3QsXG4gICAgICAgICAgICAgICAgICBzb3J0T3JkZXI6IGNvbC5zb3J0T3JkZXIsXG4gICAgICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgXSxcbiAgICAgICAgICBjb2x1bW5zOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6IFwiaWRcIixcbiAgICAgICAgICAgICAgdHlwZTogXCJpbnRlZ2VyXCIsXG4gICAgICAgICAgICAgIG51bGxhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAvLyDtmITsnqwg7JeU7Yuw7Yuw7J2YIEZLXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6IGAke2luZmxlY3Rpb24uc2luZ3VsYXJpemUodGFibGUxKX1faWRgLFxuICAgICAgICAgICAgICB0eXBlOiB0aGlzUGtUeXBlLFxuICAgICAgICAgICAgICBudWxsYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgIC4uLih0aGlzUGtUeXBlID09PSBcInN0cmluZ1wiICYmXG4gICAgICAgICAgICAgICAgdGhpc1BrUHJvcC50eXBlID09PSBcInN0cmluZ1wiICYmXG4gICAgICAgICAgICAgICAgdGhpc1BrUHJvcC5sZW5ndGggIT09IHVuZGVmaW5lZCAmJiB7XG4gICAgICAgICAgICAgICAgICBsZW5ndGg6IHRoaXNQa1Byb3AubGVuZ3RoLFxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIC8vIOywuOyhsCDsl5Tti7Dti7DsnZggRktcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogYCR7aW5mbGVjdGlvbi5zaW5ndWxhcml6ZSh0YWJsZTIpfV9pZGAsXG4gICAgICAgICAgICAgIHR5cGU6IHJlbFBrVHlwZSxcbiAgICAgICAgICAgICAgbnVsbGFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAuLi4ocmVsUGtUeXBlID09PSBcInN0cmluZ1wiICYmXG4gICAgICAgICAgICAgICAgcmVsUGtQcm9wLnR5cGUgPT09IFwic3RyaW5nXCIgJiZcbiAgICAgICAgICAgICAgICByZWxQa1Byb3AubGVuZ3RoICE9PSB1bmRlZmluZWQgJiYge1xuICAgICAgICAgICAgICAgICAgbGVuZ3RoOiByZWxQa1Byb3AubGVuZ3RoLFxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIGZvcmVpZ25zOiBmaWVsZHMubWFwKChmaWVsZCkgPT4ge1xuICAgICAgICAgICAgLy8g7ZiE7J6sIO2VhOuTnOqwgCDslrTrlqQg7YWM7J2067iU7JeQIOyGje2VmOuKlOyngCDtjJDri6hcbiAgICAgICAgICAgIGNvbnN0IGNvbCA9IGZpZWxkLnNwbGl0KFwiLlwiKVsxXTtcbiAgICAgICAgICAgIGNvbnN0IHRvID0gKCgpID0+IHtcbiAgICAgICAgICAgICAgaWYgKGAke2luZmxlY3Rpb24uc2luZ3VsYXJpemUoam9pbi50by5zcGxpdChcIi5cIilbMF0pfV9pZGAgPT09IGNvbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBqb2luLnRvO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBqb2luLmZyb207XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pKCk7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICBjb2x1bW5zOiBbY29sXSxcbiAgICAgICAgICAgICAgdG8sXG4gICAgICAgICAgICAgIG9uVXBkYXRlOiB0aHJvdWdoLm9uVXBkYXRlLFxuICAgICAgICAgICAgICBvbkRlbGV0ZTogdGhyb3VnaC5vbkRlbGV0ZSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSksXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcjtcbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIGlzQmVsb25nc1RvT25lUmVsYXRpb25Qcm9wKHByb3ApIHx8XG4gICAgICAgIChpc09uZVRvT25lUmVsYXRpb25Qcm9wKHByb3ApICYmIHByb3AuaGFzSm9pbkNvbHVtbilcbiAgICAgICkge1xuICAgICAgICAvLyAtT25lUmVsYXRpb24g7LyA7J207IqkXG4gICAgICAgIGNvbnN0IHJlbEVudGl0eSA9IEVudGl0eU1hbmFnZXIuZ2V0KHByb3Aud2l0aCk7XG4gICAgICAgIGNvbnN0IHBrVHlwZSA9IHJlbEVudGl0eS5nZXRQa1R5cGUoKTtcbiAgICAgICAgY29uc3QgcGtQcm9wID0gcmVsRW50aXR5LmdldFBrUHJvcCgpO1xuXG4gICAgICAgIGNvbnN0IGlkQ29sdW1uTmFtZSA9IGAke3Byb3AubmFtZX1faWRgO1xuICAgICAgICByLmNvbHVtbnMucHVzaCh7XG4gICAgICAgICAgbmFtZTogaWRDb2x1bW5OYW1lLFxuICAgICAgICAgIHR5cGU6IHBrVHlwZSxcbiAgICAgICAgICBudWxsYWJsZTogcHJvcC5udWxsYWJsZSA/PyBmYWxzZSxcbiAgICAgICAgICAvLyBzdHJpbmcgRkvsnbgg6rK97JqwIGxlbmd0aOuPhCDsoITri6xcbiAgICAgICAgICAuLi4ocGtUeXBlID09PSBcInN0cmluZ1wiICYmXG4gICAgICAgICAgICBwa1Byb3AudHlwZSA9PT0gXCJzdHJpbmdcIiAmJlxuICAgICAgICAgICAgcGtQcm9wLmxlbmd0aCAhPT0gdW5kZWZpbmVkICYmIHtcbiAgICAgICAgICAgICAgbGVuZ3RoOiBwa1Byb3AubGVuZ3RoLFxuICAgICAgICAgICAgfSksXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoKHByb3AudXNlQ29uc3RyYWludCA/PyB0cnVlKSA9PT0gdHJ1ZSkge1xuICAgICAgICAgIHIuZm9yZWlnbnMucHVzaCh7XG4gICAgICAgICAgICBjb2x1bW5zOiBbaWRDb2x1bW5OYW1lXSxcbiAgICAgICAgICAgIHRvOiBgJHtpbmZsZWN0aW9uLnVuZGVyc2NvcmUoaW5mbGVjdGlvbi5wbHVyYWxpemUocHJvcC53aXRoKSkudG9Mb3dlckNhc2UoKX0uaWRgLFxuICAgICAgICAgICAgb25VcGRhdGU6IHByb3Aub25VcGRhdGUgPz8gXCJSRVNUUklDVFwiLFxuICAgICAgICAgICAgb25EZWxldGU6IHByb3Aub25EZWxldGUgPz8gXCJSRVNUUklDVFwiLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByO1xuICAgIH0sXG4gICAge1xuICAgICAgdGFibGU6IGVudGl0eS50YWJsZSxcbiAgICAgIGNvbHVtbnM6IFtdIGFzIE1pZ3JhdGlvbkNvbHVtbltdLFxuICAgICAgaW5kZXhlczogW10gYXMgTWlncmF0aW9uSW5kZXhbXSxcbiAgICAgIGZvcmVpZ25zOiBbXSBhcyBNaWdyYXRpb25Gb3JlaWduW10sXG4gICAgICBqb2luVGFibGVzOiBbXSBhcyBNaWdyYXRpb25Kb2luVGFibGVbXSxcbiAgICB9LFxuICApO1xuXG4gIC8vIGluZGV4ZXNcbiAgbWlncmF0aW9uU2V0LmluZGV4ZXMgPSBlbnRpdHkuaW5kZXhlcy5maWx0ZXIoKGluZGV4KSA9PlxuICAgIGluZGV4LmNvbHVtbnMuZmluZCgoY29sKSA9PiBjb2wubmFtZS5pbmNsdWRlcyhcIi5cIikgPT09IGZhbHNlKSxcbiAgKTtcblxuICByZXR1cm4gbWlncmF0aW9uU2V0O1xufVxuXG5mdW5jdGlvbiByZXNvbHZlRW50aXR5UHJvcFR5cGVUb01pZ3JhdGlvbkNvbHVtblR5cGUocHJvcDogRW50aXR5UHJvcCk6IE1pZ3JhdGlvbkNvbHVtblR5cGUge1xuICBpZiAocHJvcC50eXBlID09PSBcInJlbGF0aW9uXCIgfHwgcHJvcC50eXBlID09PSBcInZpcnR1YWxcIikge1xuICAgIHRocm93IG5ldyBFcnJvcihgVW5yZXNvbHZlZCBjb2x1bW4gdHlwZTogJHtwcm9wLnR5cGV9YCk7XG4gIH1cblxuICBzd2l0Y2ggKHByb3AudHlwZSkge1xuICAgIGNhc2UgXCJzdHJpbmdcIjpcbiAgICAgIHJldHVybiBcInN0cmluZ1wiO1xuICAgIGNhc2UgXCJzdHJpbmdbXVwiOlxuICAgICAgcmV0dXJuIFwic3RyaW5nW11cIjtcbiAgICBjYXNlIFwiZW51bVwiOlxuICAgICAgcmV0dXJuIFwic3RyaW5nXCI7XG4gICAgY2FzZSBcImVudW1bXVwiOlxuICAgICAgcmV0dXJuIFwic3RyaW5nW11cIjtcbiAgICBjYXNlIFwiaW50ZWdlclwiOlxuICAgICAgcmV0dXJuIFwiaW50ZWdlclwiO1xuICAgIGNhc2UgXCJpbnRlZ2VyW11cIjpcbiAgICAgIHJldHVybiBcImludGVnZXJbXVwiO1xuICAgIGNhc2UgXCJiaWdJbnRlZ2VyXCI6XG4gICAgICByZXR1cm4gXCJiaWdJbnRlZ2VyXCI7XG4gICAgY2FzZSBcImJpZ0ludGVnZXJbXVwiOlxuICAgICAgcmV0dXJuIFwiYmlnSW50ZWdlcltdXCI7XG4gICAgY2FzZSBcIm51bWJlclwiOlxuICAgICAgcmV0dXJuIFwibnVtYmVyT3JOdW1lcmljXCI7XG4gICAgY2FzZSBcIm51bWJlcltdXCI6XG4gICAgICByZXR1cm4gXCJudW1iZXJPck51bWVyaWNbXVwiO1xuICAgIGNhc2UgXCJudW1lcmljXCI6XG4gICAgICByZXR1cm4gXCJudW1iZXJPck51bWVyaWNcIjtcbiAgICBjYXNlIFwibnVtZXJpY1tdXCI6XG4gICAgICByZXR1cm4gXCJudW1iZXJPck51bWVyaWNbXVwiO1xuICAgIGNhc2UgXCJib29sZWFuXCI6XG4gICAgICByZXR1cm4gXCJib29sZWFuXCI7XG4gICAgY2FzZSBcImJvb2xlYW5bXVwiOlxuICAgICAgcmV0dXJuIFwiYm9vbGVhbltdXCI7XG4gICAgY2FzZSBcImRhdGVcIjpcbiAgICAgIHJldHVybiBcImRhdGVcIjtcbiAgICBjYXNlIFwiZGF0ZVtdXCI6XG4gICAgICByZXR1cm4gXCJkYXRlW11cIjtcbiAgICBjYXNlIFwidXVpZFwiOlxuICAgICAgcmV0dXJuIFwidXVpZFwiO1xuICAgIGNhc2UgXCJ1dWlkW11cIjpcbiAgICAgIHJldHVybiBcInV1aWRbXVwiO1xuICAgIGNhc2UgXCJqc29uXCI6XG4gICAgICByZXR1cm4gXCJqc29uXCI7XG4gICAgY2FzZSBcInNlYXJjaFRleHRcIjpcbiAgICAgIHJldHVybiBcInN0cmluZ1wiO1xuICAgIGNhc2UgXCJ2ZWN0b3JcIjpcbiAgICAgIHJldHVybiBcInZlY3RvclwiO1xuICAgIGNhc2UgXCJ2ZWN0b3JbXVwiOlxuICAgICAgcmV0dXJuIFwidmVjdG9yW11cIjtcbiAgICBjYXNlIFwidHN2ZWN0b3JcIjpcbiAgICAgIHJldHVybiBcInRzdmVjdG9yXCI7XG4gICAgZGVmYXVsdDpcbiAgICAgIGV4aGF1c3RpdmUocHJvcCk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gZW50aXR5IHByb3AgdHlwZTogJHsocHJvcCBhcyB7IHR5cGU6IHN0cmluZyB9KS50eXBlfWApO1xuICB9XG59XG4iXSwibmFtZXMiOlsiaW5mbGVjdGlvbiIsIkVudGl0eU1hbmFnZXIiLCJpc0JlbG9uZ3NUb09uZVJlbGF0aW9uUHJvcCIsImlzSGFzTWFueVJlbGF0aW9uUHJvcCIsImlzTWFueVRvTWFueVJlbGF0aW9uUHJvcCIsImlzTnVtYmVyUHJvcCIsImlzTnVtZXJpY1Byb3AiLCJpc09uZVRvT25lUmVsYXRpb25Qcm9wIiwiaXNSZWxhdGlvblByb3AiLCJpc1N0cmluZ1Byb3AiLCJpc1ZlY3RvclByb3AiLCJpc1ZpcnR1YWxQcm9wIiwiZXhoYXVzdGl2ZSIsImdldE1pZ3JhdGlvblNldEZyb21FbnRpdHkiLCJlbnRpdHkiLCJtaWdyYXRpb25TZXQiLCJwcm9wcyIsInJlZHVjZSIsInIiLCJwcm9wIiwiY29sdW1uIiwibmFtZSIsInR5cGUiLCJyZXNvbHZlRW50aXR5UHJvcFR5cGVUb01pZ3JhdGlvbkNvbHVtblR5cGUiLCJudWxsYWJsZSIsImRiRGVmYXVsdCIsInVuZGVmaW5lZCIsImRlZmF1bHRUbyIsImxlbmd0aCIsInByZWNpc2lvbiIsInNjYWxlIiwibnVtYmVyVHlwZSIsImRpbWVuc2lvbnMiLCJnZW5lcmF0ZWQiLCJjb2x1bW5zIiwicHVzaCIsInJlbE1kIiwiZ2V0Iiwid2l0aCIsInRhYmxlMSIsInRhYmxlIiwidGFibGUyIiwidGhpc1BrVHlwZSIsImdldFBrVHlwZSIsInRoaXNQa1Byb3AiLCJnZXRQa1Byb3AiLCJyZWxQa1R5cGUiLCJyZWxQa1Byb3AiLCJqb2luIiwiZnJvbSIsInRocm91Z2giLCJqb2luVGFibGUiLCJzaW5ndWxhcml6ZSIsInRvIiwib25VcGRhdGUiLCJvbkRlbGV0ZSIsImZpZWxkcyIsImpvaW5UYWJsZXMiLCJzcGxpdCIsImluZGV4ZXMiLCJmaWx0ZXIiLCJpbmRleCIsImZpbmQiLCJjb2wiLCJpbmNsdWRlcyIsIm1hcCIsInJlcGxhY2UiLCJudWxsc0ZpcnN0Iiwic29ydE9yZGVyIiwiZm9yZWlnbnMiLCJmaWVsZCIsImhhc0pvaW5Db2x1bW4iLCJyZWxFbnRpdHkiLCJwa1R5cGUiLCJwa1Byb3AiLCJpZENvbHVtbk5hbWUiLCJ1c2VDb25zdHJhaW50IiwidW5kZXJzY29yZSIsInBsdXJhbGl6ZSIsInRv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
180
+ //#endregion
181
+ init_migration_set();
182
+ export { getMigrationSetFromEntity, init_migration_set };
183
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlncmF0aW9uLXNldC5qcyIsIm5hbWVzIjpbIm1pZ3JhdGlvblNldDogTWlncmF0aW9uU2V0QW5kSm9pblRhYmxlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL21pZ3JhdGlvbi9taWdyYXRpb24tc2V0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBpbmZsZWN0aW9uIGZyb20gXCJpbmZsZWN0aW9uXCI7XG5cbmltcG9ydCB7IHR5cGUgRW50aXR5IH0gZnJvbSBcIi4uL2VudGl0eS9lbnRpdHlcIjtcbmltcG9ydCB7IEVudGl0eU1hbmFnZXIgfSBmcm9tIFwiLi4vZW50aXR5L2VudGl0eS1tYW5hZ2VyXCI7XG5pbXBvcnQge1xuICBpc0JlbG9uZ3NUb09uZVJlbGF0aW9uUHJvcCxcbiAgaXNIYXNNYW55UmVsYXRpb25Qcm9wLFxuICBpc01hbnlUb01hbnlSZWxhdGlvblByb3AsXG4gIGlzTnVtYmVyUHJvcCxcbiAgaXNOdW1lcmljUHJvcCxcbiAgaXNPbmVUb09uZVJlbGF0aW9uUHJvcCxcbiAgaXNSZWxhdGlvblByb3AsXG4gIGlzU3RyaW5nUHJvcCxcbiAgaXNWZWN0b3JQcm9wLFxuICBpc1ZpcnR1YWxQcm9wLFxufSBmcm9tIFwiLi4vdHlwZXMvdHlwZXNcIjtcbmltcG9ydCB7XG4gIHR5cGUgRW50aXR5UHJvcCxcbiAgdHlwZSBNaWdyYXRpb25Db2x1bW4sXG4gIHR5cGUgTWlncmF0aW9uQ29sdW1uVHlwZSxcbiAgdHlwZSBNaWdyYXRpb25Gb3JlaWduLFxuICB0eXBlIE1pZ3JhdGlvbkluZGV4LFxuICB0eXBlIE1pZ3JhdGlvbkpvaW5UYWJsZSxcbiAgdHlwZSBNaWdyYXRpb25TZXRBbmRKb2luVGFibGUsXG59IGZyb20gXCIuLi90eXBlcy90eXBlc1wiO1xuaW1wb3J0IHsgZXhoYXVzdGl2ZSB9IGZyb20gXCIuLi91dGlscy91dGlsc1wiO1xuXG4vKipcbiAqIEVudGl0eeulvCDsnb3slrTshJwgTWlncmF0aW9uU2V0QW5kSm9pblRhYmxl7J2EIOunjOuTpOyWtOyYteuLiOuLpC5cbiAqIEBwYXJhbSBlbnRpdHkgRW50aXR5IOqwneyytFxuICogQHJldHVybnMgTWlncmF0aW9uU2V0QW5kSm9pblRhYmxlIOqwneyytFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWlncmF0aW9uU2V0RnJvbUVudGl0eShlbnRpdHk6IEVudGl0eSk6IE1pZ3JhdGlvblNldEFuZEpvaW5UYWJsZSB7XG4gIGNvbnN0IG1pZ3JhdGlvblNldDogTWlncmF0aW9uU2V0QW5kSm9pblRhYmxlID0gZW50aXR5LnByb3BzLnJlZHVjZShcbiAgICAociwgcHJvcCkgPT4ge1xuICAgICAgLy8gdmlydHVhbCDtlYTrk5wg7KCc7Jm4XG4gICAgICBpZiAoaXNWaXJ0dWFsUHJvcChwcm9wKSkge1xuICAgICAgICByZXR1cm4gcjtcbiAgICAgIH1cbiAgICAgIC8vIEhhc01hbnkg7LyA7J207Iqk64qUIOyVhOustCDsspjrpqzrj4Qg7ZWY7KeAIOyViuydjFxuICAgICAgaWYgKGlzSGFzTWFueVJlbGF0aW9uUHJvcChwcm9wKSkge1xuICAgICAgICByZXR1cm4gcjtcbiAgICAgIH1cblxuICAgICAgLy8g7J2867CYIOy7rOufvFxuICAgICAgaWYgKCFpc1JlbGF0aW9uUHJvcChwcm9wKSkge1xuICAgICAgICBjb25zdCBjb2x1bW4gPSB7XG4gICAgICAgICAgbmFtZTogcHJvcC5uYW1lLFxuICAgICAgICAgIHR5cGU6IHJlc29sdmVFbnRpdHlQcm9wVHlwZVRvTWlncmF0aW9uQ29sdW1uVHlwZShwcm9wKSxcbiAgICAgICAgICBudWxsYWJsZTogcHJvcC5udWxsYWJsZSA9PT0gdHJ1ZSxcbiAgICAgICAgICAuLi4oKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHByb3AuZGJEZWZhdWx0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBkZWZhdWx0VG86IHByb3AuZGJEZWZhdWx0LFxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgICAgIH0pKCksXG4gICAgICAgICAgLy8gU3RyaW5nIO2DgOyeheyXkCBsZW5ndGgg7J6I64qUIOqyveyasCDstpTqsIBcbiAgICAgICAgICAuLi4oaXNTdHJpbmdQcm9wKHByb3ApICYmXG4gICAgICAgICAgICBwcm9wLmxlbmd0aCAhPT0gdW5kZWZpbmVkICYmIHtcbiAgICAgICAgICAgICAgbGVuZ3RoOiBwcm9wLmxlbmd0aCxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIC8vIE51bWJlci9OdW1lcmljIO2DgOyeheydmCDqsr3smrAgcHJlY2lzaW9uLCBzY2FsZSDstpTqsIBcbiAgICAgICAgICAuLi4oKGlzTnVtYmVyUHJvcChwcm9wKSB8fCBpc051bWVyaWNQcm9wKHByb3ApKSAmJiB7XG4gICAgICAgICAgICBwcmVjaXNpb246IHByb3AucHJlY2lzaW9uLFxuICAgICAgICAgICAgc2NhbGU6IHByb3Auc2NhbGUsXG4gICAgICAgICAgICBudW1iZXJUeXBlOiBpc051bWJlclByb3AocHJvcCkgPyAocHJvcC5udW1iZXJUeXBlID8/IFwibnVtZXJpY1wiKSA6IFwibnVtZXJpY1wiLFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIC8vIFZlY3RvciDtg4DsnoXsnZgg6rK97JqwIGRpbWVuc2lvbnMg7LaU6rCAXG4gICAgICAgICAgLi4uKGlzVmVjdG9yUHJvcChwcm9wKSAmJiB7XG4gICAgICAgICAgICBkaW1lbnNpb25zOiBwcm9wLmRpbWVuc2lvbnMsXG4gICAgICAgICAgfSksXG4gICAgICAgICAgLy8gR2VuZXJhdGVkIENvbHVtbiDsoJXrs7Qg7LaU6rCAXG4gICAgICAgICAgLi4uKHByb3AuZ2VuZXJhdGVkICYmIHtcbiAgICAgICAgICAgIGdlbmVyYXRlZDogcHJvcC5nZW5lcmF0ZWQsXG4gICAgICAgICAgfSksXG4gICAgICAgIH07XG5cbiAgICAgICAgci5jb2x1bW5zLnB1c2goY29sdW1uKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGlzTWFueVRvTWFueVJlbGF0aW9uUHJvcChwcm9wKSkge1xuICAgICAgICAvLyBNYW55VG9NYW55IOy8gOydtOyKpFxuICAgICAgICBjb25zdCByZWxNZCA9IEVudGl0eU1hbmFnZXIuZ2V0KHByb3Aud2l0aCk7XG4gICAgICAgIGNvbnN0IHRhYmxlMSA9IGVudGl0eS50YWJsZTtcbiAgICAgICAgY29uc3QgdGFibGUyID0gcmVsTWQudGFibGU7XG5cbiAgICAgICAgLy8g6rCBIOyXlO2LsO2LsOydmCBQSyDtg4DsnoUg7KCV67O0IOqwgOyguOyYpOq4sFxuICAgICAgICBjb25zdCB0aGlzUGtUeXBlID0gZW50aXR5LmdldFBrVHlwZSgpO1xuICAgICAgICBjb25zdCB0aGlzUGtQcm9wID0gZW50aXR5LmdldFBrUHJvcCgpO1xuICAgICAgICBjb25zdCByZWxQa1R5cGUgPSByZWxNZC5nZXRQa1R5cGUoKTtcbiAgICAgICAgY29uc3QgcmVsUGtQcm9wID0gcmVsTWQuZ2V0UGtQcm9wKCk7XG5cbiAgICAgICAgY29uc3Qgam9pbiA9IHtcbiAgICAgICAgICBmcm9tOiBgJHtlbnRpdHkudGFibGV9LmlkYCxcbiAgICAgICAgICB0aHJvdWdoOiB7XG4gICAgICAgICAgICBmcm9tOiBgJHtwcm9wLmpvaW5UYWJsZX0uJHtpbmZsZWN0aW9uLnNpbmd1bGFyaXplKHRhYmxlMSl9X2lkYCxcbiAgICAgICAgICAgIHRvOiBgJHtwcm9wLmpvaW5UYWJsZX0uJHtpbmZsZWN0aW9uLnNpbmd1bGFyaXplKHRhYmxlMil9X2lkYCxcbiAgICAgICAgICAgIG9uVXBkYXRlOiBwcm9wLm9uVXBkYXRlLFxuICAgICAgICAgICAgb25EZWxldGU6IHByb3Aub25EZWxldGUsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB0bzogYCR7cmVsTWQudGFibGV9LmlkYCxcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgdGhyb3VnaCA9IGpvaW4udGhyb3VnaDtcbiAgICAgICAgY29uc3QgZmllbGRzID0gW3Rocm91Z2guZnJvbSwgdGhyb3VnaC50b107XG4gICAgICAgIHIuam9pblRhYmxlcy5wdXNoKHtcbiAgICAgICAgICB0YWJsZTogdGhyb3VnaC5mcm9tLnNwbGl0KFwiLlwiKVswXSxcbiAgICAgICAgICBpbmRleGVzOiBlbnRpdHkuaW5kZXhlc1xuICAgICAgICAgICAgLmZpbHRlcigoaW5kZXgpID0+IGluZGV4LmNvbHVtbnMuZmluZCgoY29sKSA9PiBjb2wubmFtZS5pbmNsdWRlcyhgJHtwcm9wLmpvaW5UYWJsZX0uYCkpKVxuICAgICAgICAgICAgLm1hcCgoaW5kZXgpID0+ICh7XG4gICAgICAgICAgICAgIC4uLmluZGV4LFxuICAgICAgICAgICAgICBjb2x1bW5zOiBpbmRleC5jb2x1bW5zLm1hcCgoY29sKSA9PiAoe1xuICAgICAgICAgICAgICAgIG5hbWU6IGNvbC5uYW1lLnJlcGxhY2UoYCR7cHJvcC5qb2luVGFibGV9LmAsIFwiXCIpLFxuICAgICAgICAgICAgICAgIG51bGxzRmlyc3Q6IGNvbC5udWxsc0ZpcnN0LFxuICAgICAgICAgICAgICAgIHNvcnRPcmRlcjogY29sLnNvcnRPcmRlcixcbiAgICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgfSkpLFxuICAgICAgICAgIGNvbHVtbnM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogXCJpZFwiLFxuICAgICAgICAgICAgICB0eXBlOiBcImludGVnZXJcIixcbiAgICAgICAgICAgICAgbnVsbGFibGU6IGZhbHNlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIC8vIO2YhOyerCDsl5Tti7Dti7DsnZggRktcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogYCR7aW5mbGVjdGlvbi5zaW5ndWxhcml6ZSh0YWJsZTEpfV9pZGAsXG4gICAgICAgICAgICAgIHR5cGU6IHRoaXNQa1R5cGUsXG4gICAgICAgICAgICAgIG51bGxhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgLi4uKHRoaXNQa1R5cGUgPT09IFwic3RyaW5nXCIgJiZcbiAgICAgICAgICAgICAgICB0aGlzUGtQcm9wLnR5cGUgPT09IFwic3RyaW5nXCIgJiZcbiAgICAgICAgICAgICAgICB0aGlzUGtQcm9wLmxlbmd0aCAhPT0gdW5kZWZpbmVkICYmIHtcbiAgICAgICAgICAgICAgICAgIGxlbmd0aDogdGhpc1BrUHJvcC5sZW5ndGgsXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgLy8g7LC47KGwIOyXlO2LsO2LsOydmCBGS1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBuYW1lOiBgJHtpbmZsZWN0aW9uLnNpbmd1bGFyaXplKHRhYmxlMil9X2lkYCxcbiAgICAgICAgICAgICAgdHlwZTogcmVsUGtUeXBlLFxuICAgICAgICAgICAgICBudWxsYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgIC4uLihyZWxQa1R5cGUgPT09IFwic3RyaW5nXCIgJiZcbiAgICAgICAgICAgICAgICByZWxQa1Byb3AudHlwZSA9PT0gXCJzdHJpbmdcIiAmJlxuICAgICAgICAgICAgICAgIHJlbFBrUHJvcC5sZW5ndGggIT09IHVuZGVmaW5lZCAmJiB7XG4gICAgICAgICAgICAgICAgICBsZW5ndGg6IHJlbFBrUHJvcC5sZW5ndGgsXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgICAgZm9yZWlnbnM6IGZpZWxkcy5tYXAoKGZpZWxkKSA9PiB7XG4gICAgICAgICAgICAvLyDtmITsnqwg7ZWE65Oc6rCAIOyWtOuWpCDthYzsnbTruJTsl5Ag7IaN7ZWY64qU7KeAIO2MkOuLqFxuICAgICAgICAgICAgY29uc3QgY29sID0gZmllbGQuc3BsaXQoXCIuXCIpWzFdO1xuICAgICAgICAgICAgY29uc3QgdG8gPSAoKCkgPT4ge1xuICAgICAgICAgICAgICBpZiAoYCR7aW5mbGVjdGlvbi5zaW5ndWxhcml6ZShqb2luLnRvLnNwbGl0KFwiLlwiKVswXSl9X2lkYCA9PT0gY29sKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGpvaW4udG87XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGpvaW4uZnJvbTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSkoKTtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIGNvbHVtbnM6IFtjb2xdLFxuICAgICAgICAgICAgICB0byxcbiAgICAgICAgICAgICAgb25VcGRhdGU6IHRocm91Z2gub25VcGRhdGUsXG4gICAgICAgICAgICAgIG9uRGVsZXRlOiB0aHJvdWdoLm9uRGVsZXRlLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiByO1xuICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgaXNCZWxvbmdzVG9PbmVSZWxhdGlvblByb3AocHJvcCkgfHxcbiAgICAgICAgKGlzT25lVG9PbmVSZWxhdGlvblByb3AocHJvcCkgJiYgcHJvcC5oYXNKb2luQ29sdW1uKVxuICAgICAgKSB7XG4gICAgICAgIC8vIC1PbmVSZWxhdGlvbiDsvIDsnbTsiqRcbiAgICAgICAgY29uc3QgcmVsRW50aXR5ID0gRW50aXR5TWFuYWdlci5nZXQocHJvcC53aXRoKTtcbiAgICAgICAgY29uc3QgcGtUeXBlID0gcmVsRW50aXR5LmdldFBrVHlwZSgpO1xuICAgICAgICBjb25zdCBwa1Byb3AgPSByZWxFbnRpdHkuZ2V0UGtQcm9wKCk7XG5cbiAgICAgICAgY29uc3QgaWRDb2x1bW5OYW1lID0gYCR7cHJvcC5uYW1lfV9pZGA7XG4gICAgICAgIHIuY29sdW1ucy5wdXNoKHtcbiAgICAgICAgICBuYW1lOiBpZENvbHVtbk5hbWUsXG4gICAgICAgICAgdHlwZTogcGtUeXBlLFxuICAgICAgICAgIG51bGxhYmxlOiBwcm9wLm51bGxhYmxlID8/IGZhbHNlLFxuICAgICAgICAgIC8vIHN0cmluZyBGS+yduCDqsr3smrAgbGVuZ3Ro64+EIOyghOuLrFxuICAgICAgICAgIC4uLihwa1R5cGUgPT09IFwic3RyaW5nXCIgJiZcbiAgICAgICAgICAgIHBrUHJvcC50eXBlID09PSBcInN0cmluZ1wiICYmXG4gICAgICAgICAgICBwa1Byb3AubGVuZ3RoICE9PSB1bmRlZmluZWQgJiYge1xuICAgICAgICAgICAgICBsZW5ndGg6IHBrUHJvcC5sZW5ndGgsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChwcm9wLnVzZUNvbnN0cmFpbnQgPz8gdHJ1ZSkge1xuICAgICAgICAgIHIuZm9yZWlnbnMucHVzaCh7XG4gICAgICAgICAgICBjb2x1bW5zOiBbaWRDb2x1bW5OYW1lXSxcbiAgICAgICAgICAgIHRvOiBgJHtpbmZsZWN0aW9uLnVuZGVyc2NvcmUoaW5mbGVjdGlvbi5wbHVyYWxpemUocHJvcC53aXRoKSkudG9Mb3dlckNhc2UoKX0uaWRgLFxuICAgICAgICAgICAgb25VcGRhdGU6IHByb3Aub25VcGRhdGUgPz8gXCJSRVNUUklDVFwiLFxuICAgICAgICAgICAgb25EZWxldGU6IHByb3Aub25EZWxldGUgPz8gXCJSRVNUUklDVFwiLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByO1xuICAgIH0sXG4gICAge1xuICAgICAgdGFibGU6IGVudGl0eS50YWJsZSxcbiAgICAgIGNvbHVtbnM6IFtdIGFzIE1pZ3JhdGlvbkNvbHVtbltdLFxuICAgICAgaW5kZXhlczogW10gYXMgTWlncmF0aW9uSW5kZXhbXSxcbiAgICAgIGZvcmVpZ25zOiBbXSBhcyBNaWdyYXRpb25Gb3JlaWduW10sXG4gICAgICBqb2luVGFibGVzOiBbXSBhcyBNaWdyYXRpb25Kb2luVGFibGVbXSxcbiAgICB9LFxuICApO1xuXG4gIC8vIGluZGV4ZXNcbiAgbWlncmF0aW9uU2V0LmluZGV4ZXMgPSBlbnRpdHkuaW5kZXhlcy5maWx0ZXIoKGluZGV4KSA9PlxuICAgIGluZGV4LmNvbHVtbnMuZmluZCgoY29sKSA9PiAhY29sLm5hbWUuaW5jbHVkZXMoXCIuXCIpKSxcbiAgKTtcblxuICByZXR1cm4gbWlncmF0aW9uU2V0O1xufVxuXG5mdW5jdGlvbiByZXNvbHZlRW50aXR5UHJvcFR5cGVUb01pZ3JhdGlvbkNvbHVtblR5cGUocHJvcDogRW50aXR5UHJvcCk6IE1pZ3JhdGlvbkNvbHVtblR5cGUge1xuICBpZiAocHJvcC50eXBlID09PSBcInJlbGF0aW9uXCIgfHwgcHJvcC50eXBlID09PSBcInZpcnR1YWxcIikge1xuICAgIHRocm93IG5ldyBFcnJvcihgVW5yZXNvbHZlZCBjb2x1bW4gdHlwZTogJHtwcm9wLnR5cGV9YCk7XG4gIH1cblxuICBzd2l0Y2ggKHByb3AudHlwZSkge1xuICAgIGNhc2UgXCJzdHJpbmdcIjpcbiAgICAgIHJldHVybiBcInN0cmluZ1wiO1xuICAgIGNhc2UgXCJzdHJpbmdbXVwiOlxuICAgICAgcmV0dXJuIFwic3RyaW5nW11cIjtcbiAgICBjYXNlIFwiZW51bVwiOlxuICAgICAgcmV0dXJuIFwic3RyaW5nXCI7XG4gICAgY2FzZSBcImVudW1bXVwiOlxuICAgICAgcmV0dXJuIFwic3RyaW5nW11cIjtcbiAgICBjYXNlIFwiaW50ZWdlclwiOlxuICAgICAgcmV0dXJuIFwiaW50ZWdlclwiO1xuICAgIGNhc2UgXCJpbnRlZ2VyW11cIjpcbiAgICAgIHJldHVybiBcImludGVnZXJbXVwiO1xuICAgIGNhc2UgXCJiaWdJbnRlZ2VyXCI6XG4gICAgICByZXR1cm4gXCJiaWdJbnRlZ2VyXCI7XG4gICAgY2FzZSBcImJpZ0ludGVnZXJbXVwiOlxuICAgICAgcmV0dXJuIFwiYmlnSW50ZWdlcltdXCI7XG4gICAgY2FzZSBcIm51bWJlclwiOlxuICAgICAgcmV0dXJuIFwibnVtYmVyT3JOdW1lcmljXCI7XG4gICAgY2FzZSBcIm51bWJlcltdXCI6XG4gICAgICByZXR1cm4gXCJudW1iZXJPck51bWVyaWNbXVwiO1xuICAgIGNhc2UgXCJudW1lcmljXCI6XG4gICAgICByZXR1cm4gXCJudW1iZXJPck51bWVyaWNcIjtcbiAgICBjYXNlIFwibnVtZXJpY1tdXCI6XG4gICAgICByZXR1cm4gXCJudW1iZXJPck51bWVyaWNbXVwiO1xuICAgIGNhc2UgXCJib29sZWFuXCI6XG4gICAgICByZXR1cm4gXCJib29sZWFuXCI7XG4gICAgY2FzZSBcImJvb2xlYW5bXVwiOlxuICAgICAgcmV0dXJuIFwiYm9vbGVhbltdXCI7XG4gICAgY2FzZSBcImRhdGVcIjpcbiAgICAgIHJldHVybiBcImRhdGVcIjtcbiAgICBjYXNlIFwiZGF0ZVtdXCI6XG4gICAgICByZXR1cm4gXCJkYXRlW11cIjtcbiAgICBjYXNlIFwidXVpZFwiOlxuICAgICAgcmV0dXJuIFwidXVpZFwiO1xuICAgIGNhc2UgXCJ1dWlkW11cIjpcbiAgICAgIHJldHVybiBcInV1aWRbXVwiO1xuICAgIGNhc2UgXCJqc29uXCI6XG4gICAgICByZXR1cm4gXCJqc29uXCI7XG4gICAgY2FzZSBcInNlYXJjaFRleHRcIjpcbiAgICAgIHJldHVybiBcInN0cmluZ1wiO1xuICAgIGNhc2UgXCJ2ZWN0b3JcIjpcbiAgICAgIHJldHVybiBcInZlY3RvclwiO1xuICAgIGNhc2UgXCJ2ZWN0b3JbXVwiOlxuICAgICAgcmV0dXJuIFwidmVjdG9yW11cIjtcbiAgICBjYXNlIFwidHN2ZWN0b3JcIjpcbiAgICAgIHJldHVybiBcInRzdmVjdG9yXCI7XG4gICAgZGVmYXVsdDpcbiAgICAgIGV4aGF1c3RpdmUocHJvcCk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gZW50aXR5IHByb3AgdHlwZTogJHsocHJvcCBhcyB7IHR5cGU6IHN0cmluZyB9KS50eXBlfWApO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQWdDQSxTQUFnQiwwQkFBMEIsUUFBMEM7Q0FDbEYsTUFBTUEsZUFBeUMsT0FBTyxNQUFNLFFBQ3pELEdBQUcsU0FBUztBQUVYLE1BQUksY0FBYyxLQUFLLEVBQUU7QUFDdkIsVUFBTzs7QUFH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
@@ -1,13 +1,14 @@
1
- import type { Knex } from "knex";
1
+ import { type Knex } from "knex";
2
2
  import { type SonamuDBConfig } from "../database/db";
3
- import type { GenMigrationCode } from "../types/types";
4
- import type { MigrationStatus } from "./types";
3
+ import { type GenMigrationCode } from "../types/types";
4
+ import { type MigrationStatus } from "./types";
5
5
  export type MigrationResult = {
6
6
  connKey: string;
7
7
  batchNo: number;
8
8
  applied: string[];
9
9
  }[];
10
10
  export declare class Migrator {
11
+ private runMigrationsSequentially;
11
12
  private getMigrationCodes;
12
13
  /**
13
14
  * 타겟별 마이그레이션 상태와 코드 생성/준비 상태를 구해옵니다.
@@ -1 +1 @@
1
- {"version":3,"file":"migrator.d.ts","sourceRoot":"","sources":["../../src/migration/migrator.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAIjC,OAAO,EAAM,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAMzD,OAAO,KAAK,EAAE,gBAAgB,EAAgB,MAAM,gBAAgB,CAAC;AAMrE,OAAO,KAAK,EAA6B,eAAe,EAAE,MAAM,SAAS,CAAC;AAE1E,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB,EAAE,CAAC;AAEJ,qBAAa,QAAQ;YACL,iBAAiB;IAqB/B;;;;;;;;OAQG;IACG,SAAS,IAAI,OAAO,CAAC,eAAe,CAAC;IAiG3C;;;;;;;;;OASG;IACG,SAAS,CACb,MAAM,EAAE,OAAO,GAAG,UAAU,EAC5B,OAAO,EAAE,CAAC,MAAM,cAAc,CAAC,EAAE,GAChC,OAAO,CAAC,eAAe,CAAC;IAmE3B;;;;;;OAMG;IACH,iBAAiB,CAAC,KAAK,EAAE,eAAe,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE;;;;IAWtE;;;;;;;OAOG;IACG,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAuBpD,OAAO,CAAC,UAAU;IAalB;;;;;;OAMG;IACG,qBAAqB,IAAI,OAAO,CAAC,MAAM,CAAC;IAuBxC,iBAAiB,CAAC,SAAS,EAAE,IAAI,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAgErE;;;;;;OAMG;IACG,aAAa,IAAI,OAAO,CAAC,eAAe,CAAC;CAsEhD"}
1
+ {"version":3,"file":"migrator.d.ts","sourceRoot":"","sources":["../../src/migration/migrator.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,MAAM,CAAC;AAKjC,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAMrD,OAAO,EAAE,KAAK,gBAAgB,EAAqB,MAAM,gBAAgB,CAAC;AAM1E,OAAO,EAAuC,KAAK,eAAe,EAAE,MAAM,SAAS,CAAC;AAEpF,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB,EAAE,CAAC;AAEJ,qBAAa,QAAQ;YACL,yBAAyB;YAoBzB,iBAAiB;IAqB/B;;;;;;;;OAQG;IACG,SAAS,IAAI,OAAO,CAAC,eAAe,CAAC;IAiG3C;;;;;;;;;OASG;IACG,SAAS,CACb,MAAM,EAAE,OAAO,GAAG,UAAU,EAC5B,OAAO,EAAE,CAAC,MAAM,cAAc,CAAC,EAAE,GAChC,OAAO,CAAC,eAAe,CAAC;IAiD3B;;;;;;OAMG;IACH,iBAAiB,CAAC,KAAK,EAAE,eAAe,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE;;;;IAWtE;;;;;;;OAOG;IACG,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAuBpD,OAAO,CAAC,UAAU;IAalB;;;;;;OAMG;IACG,qBAAqB,IAAI,OAAO,CAAC,MAAM,CAAC;IAuBxC,iBAAiB,CAAC,SAAS,EAAE,IAAI,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAgErE;;;;;;OAMG;IACG,aAAa,IAAI,OAAO,CAAC,eAAe,CAAC;CAsEhD"}