sonamu 0.4.13 → 0.5.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 (371) hide show
  1. package/.swcrc +15 -0
  2. package/dist/api/base-frame.d.ts +8 -0
  3. package/dist/api/base-frame.d.ts.map +1 -0
  4. package/dist/api/base-frame.js +2 -0
  5. package/dist/api/base-frame.js.map +1 -0
  6. package/dist/api/caster.d.ts +5 -0
  7. package/dist/api/caster.d.ts.map +1 -0
  8. package/dist/api/caster.js +2 -0
  9. package/dist/api/caster.js.map +1 -0
  10. package/dist/api/code-converters.d.ts +23 -0
  11. package/dist/api/code-converters.d.ts.map +1 -0
  12. package/dist/api/code-converters.js +2 -0
  13. package/dist/api/code-converters.js.map +1 -0
  14. package/dist/api/context.d.ts +16 -0
  15. package/dist/api/context.d.ts.map +1 -0
  16. package/dist/api/context.js +2 -0
  17. package/dist/api/context.js.map +1 -0
  18. package/dist/api/decorators.d.ts +50 -0
  19. package/dist/api/decorators.d.ts.map +1 -0
  20. package/dist/api/decorators.js +2 -0
  21. package/dist/api/decorators.js.map +1 -0
  22. package/dist/api/index.d.ts +8 -0
  23. package/dist/api/index.d.ts.map +1 -0
  24. package/dist/api/index.js +2 -0
  25. package/dist/api/index.js.map +1 -0
  26. package/dist/api/sonamu.d.ts +83 -0
  27. package/dist/api/sonamu.d.ts.map +1 -0
  28. package/dist/api/sonamu.js +2 -0
  29. package/dist/api/sonamu.js.map +1 -0
  30. package/dist/api/sonamu.types.d.ts +30 -0
  31. package/dist/api/sonamu.types.d.ts.map +1 -0
  32. package/dist/api/sonamu.types.js +2 -0
  33. package/dist/api/sonamu.types.js.map +1 -0
  34. package/dist/bin/build-config.d.ts +5 -0
  35. package/dist/bin/build-config.d.ts.map +1 -0
  36. package/dist/bin/build-config.js +2 -0
  37. package/dist/bin/build-config.js.map +1 -0
  38. package/dist/bin/cli-wrapper.d.ts +2 -0
  39. package/dist/bin/cli-wrapper.d.ts.map +1 -0
  40. package/dist/bin/cli-wrapper.js +1 -38
  41. package/dist/bin/cli-wrapper.js.map +1 -1
  42. package/dist/bin/cli.d.ts +2 -2
  43. package/dist/bin/cli.d.ts.map +1 -0
  44. package/dist/bin/cli.js +1 -903
  45. package/dist/bin/cli.js.map +1 -1
  46. package/dist/bin/cli.mjs +2 -2
  47. package/dist/{chunk-DMJSNO2L.js → chunk-2WAC2GER.js} +44 -44
  48. package/dist/{chunk-DMJSNO2L.js.map → chunk-2WAC2GER.js.map} +1 -1
  49. package/dist/{chunk-NI37CY4T.mjs → chunk-C3IPIF6O.mjs} +2 -2
  50. package/dist/{chunk-DYFCACHD.js → chunk-EXHKSVTE.js} +7 -7
  51. package/dist/{chunk-QJFHDCBN.mjs → chunk-FCERKIIF.mjs} +2 -2
  52. package/dist/chunk-FCERKIIF.mjs.map +1 -0
  53. package/dist/{chunk-DDJ7T4MA.mjs → chunk-HGIBJYOU.mjs} +2 -2
  54. package/dist/{chunk-NIFOTHBW.mjs → chunk-JKSOJRQA.mjs} +2 -2
  55. package/dist/{chunk-CXAVBVKC.js → chunk-OTKKFP3Y.js} +100 -100
  56. package/dist/{chunk-J6S43O7G.js → chunk-UZ2IY5VE.js} +4 -4
  57. package/dist/database/_batch_update.d.ts +15 -0
  58. package/dist/database/_batch_update.d.ts.map +1 -0
  59. package/dist/database/_batch_update.js +2 -0
  60. package/dist/database/_batch_update.js.map +1 -0
  61. package/dist/database/base-model.d.ts +41 -0
  62. package/dist/database/base-model.d.ts.map +1 -0
  63. package/dist/database/base-model.js +2 -0
  64. package/dist/database/base-model.js.map +1 -0
  65. package/dist/database/code-generator.d.ts +13 -0
  66. package/dist/database/code-generator.d.ts.map +1 -0
  67. package/dist/database/code-generator.js +2 -0
  68. package/dist/database/code-generator.js.map +1 -0
  69. package/dist/database/db.d.ts +40 -0
  70. package/dist/database/db.d.ts.map +1 -0
  71. package/dist/database/db.js +2 -0
  72. package/dist/database/db.js.map +1 -0
  73. package/dist/database/drivers/knex/base-model.js +8 -8
  74. package/dist/database/drivers/knex/base-model.mjs +3 -3
  75. package/dist/database/drivers/kysely/base-model.js +9 -9
  76. package/dist/database/drivers/kysely/base-model.mjs +3 -3
  77. package/dist/database/knex-plugins/knex-on-duplicate-update.d.ts +2 -0
  78. package/dist/database/knex-plugins/knex-on-duplicate-update.d.ts.map +1 -0
  79. package/dist/database/knex-plugins/knex-on-duplicate-update.js +2 -0
  80. package/dist/database/knex-plugins/knex-on-duplicate-update.js.map +1 -0
  81. package/dist/database/puri-wrapper.d.ts +34 -0
  82. package/dist/database/puri-wrapper.d.ts.map +1 -0
  83. package/dist/database/puri-wrapper.js +2 -0
  84. package/dist/database/puri-wrapper.js.map +1 -0
  85. package/dist/database/puri.d.ts +83 -0
  86. package/dist/database/puri.d.ts.map +1 -0
  87. package/dist/database/puri.js +2 -0
  88. package/dist/database/puri.js.map +1 -0
  89. package/dist/database/puri.types.d.ts +60 -0
  90. package/dist/database/puri.types.d.ts.map +1 -0
  91. package/dist/database/puri.types.js +2 -0
  92. package/dist/database/puri.types.js.map +1 -0
  93. package/dist/database/transaction-context.d.ts +9 -0
  94. package/dist/database/transaction-context.d.ts.map +1 -0
  95. package/dist/database/transaction-context.js +2 -0
  96. package/dist/database/transaction-context.js.map +1 -0
  97. package/dist/database/types.d.ts +39 -0
  98. package/dist/database/types.d.ts.map +1 -0
  99. package/dist/database/types.js +2 -0
  100. package/dist/database/types.js.map +1 -0
  101. package/dist/database/upsert-builder.d.ts +34 -0
  102. package/dist/database/upsert-builder.d.ts.map +1 -0
  103. package/dist/database/upsert-builder.js +2 -0
  104. package/dist/database/upsert-builder.js.map +1 -0
  105. package/dist/entity/entity-manager.d.ts +32 -0
  106. package/dist/entity/entity-manager.d.ts.map +1 -0
  107. package/dist/entity/entity-manager.js +2 -0
  108. package/dist/entity/entity-manager.js.map +1 -0
  109. package/dist/entity/entity-utils.d.ts +61 -0
  110. package/dist/entity/entity-utils.d.ts.map +1 -0
  111. package/dist/entity/entity-utils.js +2 -0
  112. package/dist/entity/entity-utils.js.map +1 -0
  113. package/dist/entity/entity.d.ts +62 -0
  114. package/dist/entity/entity.d.ts.map +1 -0
  115. package/dist/entity/entity.js +2 -0
  116. package/dist/entity/entity.js.map +1 -0
  117. package/dist/entity/migrator.d.ts +135 -0
  118. package/dist/entity/migrator.d.ts.map +1 -0
  119. package/dist/entity/migrator.js +2 -0
  120. package/dist/entity/migrator.js.map +1 -0
  121. package/dist/exceptions/error-handler.d.ts +3 -0
  122. package/dist/exceptions/error-handler.d.ts.map +1 -0
  123. package/dist/exceptions/error-handler.js +2 -0
  124. package/dist/exceptions/error-handler.js.map +1 -0
  125. package/dist/exceptions/so-exceptions.d.ts +48 -0
  126. package/dist/exceptions/so-exceptions.d.ts.map +1 -0
  127. package/dist/exceptions/so-exceptions.js +2 -0
  128. package/dist/exceptions/so-exceptions.js.map +1 -0
  129. package/dist/file-storage/driver.d.ts +45 -0
  130. package/dist/file-storage/driver.d.ts.map +1 -0
  131. package/dist/file-storage/driver.js +2 -0
  132. package/dist/file-storage/driver.js.map +1 -0
  133. package/dist/file-storage/file-storage.d.ts +50 -0
  134. package/dist/file-storage/file-storage.d.ts.map +1 -0
  135. package/dist/file-storage/file-storage.js +2 -0
  136. package/dist/file-storage/file-storage.js.map +1 -0
  137. package/dist/index.d.ts +22 -813
  138. package/dist/index.d.ts.map +1 -0
  139. package/dist/index.js +1 -433
  140. package/dist/index.js.map +1 -1
  141. package/dist/index.mjs +3 -3
  142. package/dist/migration/code-generation.d.ts +15 -0
  143. package/dist/migration/code-generation.d.ts.map +1 -0
  144. package/dist/migration/code-generation.js +2 -0
  145. package/dist/migration/code-generation.js.map +1 -0
  146. package/dist/migration/migration-set.d.ts +17 -0
  147. package/dist/migration/migration-set.d.ts.map +1 -0
  148. package/dist/migration/migration-set.js +2 -0
  149. package/dist/migration/migration-set.js.map +1 -0
  150. package/dist/migration/migrator.d.ts +130 -0
  151. package/dist/migration/migrator.d.ts.map +1 -0
  152. package/dist/migration/migrator.js +2 -0
  153. package/dist/migration/migrator.js.map +1 -0
  154. package/dist/migration/types.d.ts +52 -0
  155. package/dist/migration/types.d.ts.map +1 -0
  156. package/dist/migration/types.js +2 -0
  157. package/dist/migration/types.js.map +1 -0
  158. package/dist/smd/smd-manager.d.ts +28 -0
  159. package/dist/smd/smd-manager.d.ts.map +1 -0
  160. package/dist/smd/smd-manager.js +2 -0
  161. package/dist/smd/smd-manager.js.map +1 -0
  162. package/dist/smd/smd.d.ts +40 -0
  163. package/dist/smd/smd.d.ts.map +1 -0
  164. package/dist/smd/smd.js +2 -0
  165. package/dist/smd/smd.js.map +1 -0
  166. package/dist/syncer/index.d.ts +2 -0
  167. package/dist/syncer/index.d.ts.map +1 -0
  168. package/dist/syncer/index.js +2 -0
  169. package/dist/syncer/index.js.map +1 -0
  170. package/dist/syncer/syncer.d.ts +127 -0
  171. package/dist/syncer/syncer.d.ts.map +1 -0
  172. package/dist/syncer/syncer.js +2 -0
  173. package/dist/syncer/syncer.js.map +1 -0
  174. package/dist/templates/base-template.d.ts +13 -0
  175. package/dist/templates/base-template.d.ts.map +1 -0
  176. package/dist/templates/base-template.js +2 -0
  177. package/dist/templates/base-template.js.map +1 -0
  178. package/dist/templates/entity.template.d.ts +17 -0
  179. package/dist/templates/entity.template.d.ts.map +1 -0
  180. package/dist/templates/entity.template.js +2 -0
  181. package/dist/templates/entity.template.js.map +1 -0
  182. package/dist/templates/generated.template.d.ts +27 -0
  183. package/dist/templates/generated.template.d.ts.map +1 -0
  184. package/dist/templates/generated.template.js +2 -0
  185. package/dist/templates/generated.template.js.map +1 -0
  186. package/dist/templates/generated_http.template.d.ts +24 -0
  187. package/dist/templates/generated_http.template.d.ts.map +1 -0
  188. package/dist/templates/generated_http.template.js +2 -0
  189. package/dist/templates/generated_http.template.js.map +1 -0
  190. package/dist/templates/generated_sso.template.d.ts +20 -0
  191. package/dist/templates/generated_sso.template.d.ts.map +1 -0
  192. package/dist/templates/generated_sso.template.js +2 -0
  193. package/dist/templates/generated_sso.template.js.map +1 -0
  194. package/dist/templates/index.d.ts +2 -0
  195. package/dist/templates/index.d.ts.map +1 -0
  196. package/dist/templates/index.js +2 -0
  197. package/dist/templates/index.js.map +1 -0
  198. package/dist/templates/init_types.template.d.ts +17 -0
  199. package/dist/templates/init_types.template.d.ts.map +1 -0
  200. package/dist/templates/init_types.template.js +2 -0
  201. package/dist/templates/init_types.template.js.map +1 -0
  202. package/dist/templates/model.template.d.ts +17 -0
  203. package/dist/templates/model.template.d.ts.map +1 -0
  204. package/dist/templates/model.template.js +2 -0
  205. package/dist/templates/model.template.js.map +1 -0
  206. package/dist/templates/model_test.template.d.ts +17 -0
  207. package/dist/templates/model_test.template.d.ts.map +1 -0
  208. package/dist/templates/model_test.template.js +2 -0
  209. package/dist/templates/model_test.template.js.map +1 -0
  210. package/dist/templates/service.template.d.ts +29 -0
  211. package/dist/templates/service.template.d.ts.map +1 -0
  212. package/dist/templates/service.template.js +2 -0
  213. package/dist/templates/service.template.js.map +1 -0
  214. package/dist/templates/view_enums_buttonset.template.d.ts +17 -0
  215. package/dist/templates/view_enums_buttonset.template.d.ts.map +1 -0
  216. package/dist/templates/view_enums_buttonset.template.js +2 -0
  217. package/dist/templates/view_enums_buttonset.template.js.map +1 -0
  218. package/dist/templates/view_enums_dropdown.template.d.ts +18 -0
  219. package/dist/templates/view_enums_dropdown.template.d.ts.map +1 -0
  220. package/dist/templates/view_enums_dropdown.template.js +2 -0
  221. package/dist/templates/view_enums_dropdown.template.js.map +1 -0
  222. package/dist/templates/view_enums_select.template.d.ts +17 -0
  223. package/dist/templates/view_enums_select.template.d.ts.map +1 -0
  224. package/dist/templates/view_enums_select.template.js +2 -0
  225. package/dist/templates/view_enums_select.template.js.map +1 -0
  226. package/dist/templates/view_form.template.d.ts +26 -0
  227. package/dist/templates/view_form.template.d.ts.map +1 -0
  228. package/dist/templates/view_form.template.js +2 -0
  229. package/dist/templates/view_form.template.js.map +1 -0
  230. package/dist/templates/view_id_all_select.template.d.ts +17 -0
  231. package/dist/templates/view_id_all_select.template.d.ts.map +1 -0
  232. package/dist/templates/view_id_all_select.template.js +2 -0
  233. package/dist/templates/view_id_all_select.template.js.map +1 -0
  234. package/dist/templates/view_id_async_select.template.d.ts +17 -0
  235. package/dist/templates/view_id_async_select.template.d.ts.map +1 -0
  236. package/dist/templates/view_id_async_select.template.js +2 -0
  237. package/dist/templates/view_id_async_select.template.js.map +1 -0
  238. package/dist/templates/view_list.template.d.ts +38 -0
  239. package/dist/templates/view_list.template.d.ts.map +1 -0
  240. package/dist/templates/view_list.template.js +2 -0
  241. package/dist/templates/view_list.template.js.map +1 -0
  242. package/dist/templates/view_list_columns.template.d.ts +17 -0
  243. package/dist/templates/view_list_columns.template.d.ts.map +1 -0
  244. package/dist/templates/view_list_columns.template.js +2 -0
  245. package/dist/templates/view_list_columns.template.js.map +1 -0
  246. package/dist/templates/view_search_input.template.d.ts +17 -0
  247. package/dist/templates/view_search_input.template.d.ts.map +1 -0
  248. package/dist/templates/view_search_input.template.js +2 -0
  249. package/dist/templates/view_search_input.template.js.map +1 -0
  250. package/dist/testing/_relation-graph.d.ts +7 -0
  251. package/dist/testing/_relation-graph.d.ts.map +1 -0
  252. package/dist/testing/_relation-graph.js +2 -0
  253. package/dist/testing/_relation-graph.js.map +1 -0
  254. package/dist/testing/fixture-manager.d.ts +35 -0
  255. package/dist/testing/fixture-manager.d.ts.map +1 -0
  256. package/dist/testing/fixture-manager.js +2 -0
  257. package/dist/testing/fixture-manager.js.map +1 -0
  258. package/dist/types/types.d.ts +609 -0
  259. package/dist/types/types.d.ts.map +1 -0
  260. package/dist/types/types.js +2 -0
  261. package/dist/types/types.js.map +1 -0
  262. package/dist/typings/knex.d.js +2 -0
  263. package/dist/typings/knex.d.js.map +1 -0
  264. package/dist/utils/async-utils.d.ts +25 -0
  265. package/dist/utils/async-utils.d.ts.map +1 -0
  266. package/dist/utils/async-utils.js +2 -0
  267. package/dist/utils/async-utils.js.map +1 -0
  268. package/dist/utils/controller.d.ts +9 -0
  269. package/dist/utils/controller.d.ts.map +1 -0
  270. package/dist/utils/controller.js +2 -0
  271. package/dist/utils/controller.js.map +1 -0
  272. package/dist/utils/fs-utils.d.ts +9 -0
  273. package/dist/utils/fs-utils.d.ts.map +1 -0
  274. package/dist/utils/fs-utils.js +2 -0
  275. package/dist/utils/fs-utils.js.map +1 -0
  276. package/dist/utils/lodash-able.d.ts +2 -0
  277. package/dist/utils/lodash-able.d.ts.map +1 -0
  278. package/dist/utils/lodash-able.js +2 -0
  279. package/dist/utils/lodash-able.js.map +1 -0
  280. package/dist/utils/model.d.ts +17 -0
  281. package/dist/utils/model.d.ts.map +1 -0
  282. package/dist/utils/model.js +2 -0
  283. package/dist/utils/model.js.map +1 -0
  284. package/dist/utils/sql-parser.d.ts +4 -0
  285. package/dist/utils/sql-parser.d.ts.map +1 -0
  286. package/dist/utils/sql-parser.js +2 -0
  287. package/dist/utils/sql-parser.js.map +1 -0
  288. package/dist/utils/utils.d.ts +9 -0
  289. package/dist/utils/utils.d.ts.map +1 -0
  290. package/dist/utils/utils.js +2 -0
  291. package/dist/utils/utils.js.map +1 -0
  292. package/dist/utils/zod-error.d.ts +8 -0
  293. package/dist/utils/zod-error.d.ts.map +1 -0
  294. package/dist/utils/zod-error.js +2 -0
  295. package/dist/utils/zod-error.js.map +1 -0
  296. package/nodemon.json +6 -0
  297. package/package.json +29 -44
  298. package/src/api/base-frame.ts +3 -4
  299. package/src/api/caster.ts +22 -23
  300. package/src/api/code-converters.ts +170 -134
  301. package/src/api/context.ts +13 -6
  302. package/src/api/decorators.ts +146 -20
  303. package/src/api/index.ts +2 -0
  304. package/src/api/sonamu.ts +374 -165
  305. package/src/bin/build-config.ts +5 -0
  306. package/src/bin/cli-wrapper.ts +29 -40
  307. package/src/bin/cli.ts +132 -190
  308. package/src/database/_batch_update.ts +10 -15
  309. package/src/database/base-model.ts +300 -216
  310. package/src/database/db.ts +191 -21
  311. package/src/database/{drivers/knex/plugins → knex-plugins}/knex-on-duplicate-update.ts +1 -1
  312. package/src/database/puri-wrapper.ts +129 -0
  313. package/src/database/puri.ts +808 -0
  314. package/src/database/puri.types.ts +222 -0
  315. package/src/database/transaction-context.ts +18 -0
  316. package/src/database/upsert-builder.ts +32 -35
  317. package/src/entity/entity-manager.ts +7 -15
  318. package/src/entity/entity.ts +9 -31
  319. package/src/entity/migrator-/354/235/264/354/202/254/352/260/224/354/226/264/354/232/224.md +1 -0
  320. package/src/file-storage/driver.ts +121 -0
  321. package/src/file-storage/file-storage.ts +100 -0
  322. package/src/index.ts +14 -11
  323. package/src/migration/code-generation.ts +777 -0
  324. package/src/migration/migration-set.ts +453 -0
  325. package/src/migration/migrator.ts +823 -0
  326. package/src/migration/types.ts +53 -0
  327. package/src/shared/web.shared.ts.txt +33 -2
  328. package/src/syncer/syncer.ts +294 -127
  329. package/src/templates/generated.template.ts +13 -1
  330. package/src/templates/generated_http.template.ts +15 -12
  331. package/src/templates/generated_sso.template.ts +50 -2
  332. package/src/templates/model.template.ts +138 -2
  333. package/src/templates/service.template.ts +0 -1
  334. package/src/templates/view_form.template.ts +11 -7
  335. package/src/templates/view_list.template.ts +12 -4
  336. package/src/testing/fixture-manager.ts +229 -174
  337. package/src/types/types.ts +102 -14
  338. package/src/utils/async-utils.ts +64 -0
  339. package/src/utils/fs-utils.ts +17 -0
  340. package/src/utils/model.ts +0 -2
  341. package/src/utils/utils.ts +14 -58
  342. package/src/utils/zod-error.ts +12 -176
  343. package/tsconfig.json +2 -0
  344. package/tsup.config.js +4 -2
  345. package/.pnp.cjs +0 -14363
  346. package/.pnp.loader.mjs +0 -2047
  347. package/.vscode/extensions.json +0 -6
  348. package/.vscode/settings.json +0 -9
  349. package/.yarnrc.yml +0 -5
  350. package/dist/chunk-QJFHDCBN.mjs.map +0 -1
  351. package/src/database/base-model.abstract.ts +0 -97
  352. package/src/database/db.abstract.ts +0 -75
  353. package/src/database/drivers/knex/base-model.ts +0 -55
  354. package/src/database/drivers/knex/client.ts +0 -209
  355. package/src/database/drivers/knex/db.ts +0 -232
  356. package/src/database/drivers/knex/generator.ts +0 -659
  357. package/src/database/drivers/kysely/base-model.ts +0 -89
  358. package/src/database/drivers/kysely/client.ts +0 -309
  359. package/src/database/drivers/kysely/db.ts +0 -238
  360. package/src/database/drivers/kysely/generator.ts +0 -714
  361. package/src/database/types.ts +0 -118
  362. package/src/entity/migrator.ts +0 -1400
  363. package/src/smd/smd-manager.ts +0 -139
  364. package/src/smd/smd.ts +0 -571
  365. package/src/templates/kysely_types.template.ts +0 -205
  366. /package/dist/{chunk-NI37CY4T.mjs.map → chunk-C3IPIF6O.mjs.map} +0 -0
  367. /package/dist/{chunk-DYFCACHD.js.map → chunk-EXHKSVTE.js.map} +0 -0
  368. /package/dist/{chunk-DDJ7T4MA.mjs.map → chunk-HGIBJYOU.mjs.map} +0 -0
  369. /package/dist/{chunk-NIFOTHBW.mjs.map → chunk-JKSOJRQA.mjs.map} +0 -0
  370. /package/dist/{chunk-CXAVBVKC.js.map → chunk-OTKKFP3Y.js.map} +0 -0
  371. /package/dist/{chunk-J6S43O7G.js.map → chunk-UZ2IY5VE.js.map} +0 -0
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/migration/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,28 @@
1
+ import { SMD } from "./smd";
2
+ import { SMDInput } from "../types/types";
3
+ import { EntityNamesRecord } from "../entity/entity-manager";
4
+ type TableSpec = {
5
+ name: string;
6
+ uniqueColumns: string[];
7
+ };
8
+ declare class SMDManagerClass {
9
+ private SMDs;
10
+ modulePaths: Map<string, string>;
11
+ private tableSpecs;
12
+ isAutoloaded: boolean;
13
+ autoload(doSilent?: boolean): Promise<unknown>;
14
+ register(smdInput: SMDInput<string>): void;
15
+ get(smdId: string): SMD;
16
+ exists(smdId: string): boolean;
17
+ getAllIds(): string[];
18
+ getAllParentIds(): string[];
19
+ getChildrenIds(parentId: string): string[];
20
+ setModulePath(key: string, modulePath: string): void;
21
+ getModulePath(key: string): string;
22
+ setTableSpec(tableSpec: TableSpec): void;
23
+ getTableSpec(key: string): TableSpec;
24
+ getNamesFromId(smdId: string): EntityNamesRecord;
25
+ }
26
+ export declare const SMDManager: SMDManagerClass;
27
+ export {};
28
+ //# sourceMappingURL=smd-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"smd-manager.d.ts","sourceRoot":"","sources":["../../src/smd/smd-manager.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D,KAAK,SAAS,GAAG;IACf,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB,CAAC;AACF,cAAM,eAAe;IACnB,OAAO,CAAC,IAAI,CAA+B;IACpC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAa;IACpD,OAAO,CAAC,UAAU,CAAqC;IAChD,YAAY,EAAE,OAAO,CAAS;IAG/B,QAAQ,CAAC,QAAQ,GAAE,OAAe;IA+BxC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,IAAI;IAK1C,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG;IASvB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAK9B,SAAS,IAAI,MAAM,EAAE;IAIrB,eAAe,IAAI,MAAM,EAAE;IAO3B,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE;IAO1C,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAKpD,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IASlC,YAAY,CAAC,SAAS,EAAE,SAAS;IAIjC,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS;IASpC,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,iBAAiB;CAoBjD;AAED,eAAO,MAAM,UAAU,iBAAwB,CAAC"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"SMDManager",{enumerable:true,get:function(){return SMDManager}});var _chalk=/*#__PURE__*/_interop_require_default(require("chalk"));var _glob=/*#__PURE__*/_interop_require_default(require("glob"));var _inflection=/*#__PURE__*/_interop_require_default(require("inflection"));var _path=/*#__PURE__*/_interop_require_default(require("path"));var _smd=require("./smd");var _sonamu=require("../api/sonamu");function asyncGeneratorStep(gen,resolve,reject,_next,_throw,key,arg){try{var info=gen[key](arg);var value=info.value}catch(error){reject(error);return}if(info.done){resolve(value)}else{Promise.resolve(value).then(_next,_throw)}}function _async_to_generator(fn){return function(){var self=this,args=arguments;return new Promise(function(resolve,reject){var gen=fn.apply(self,args);function _next(value){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"next",value)}function _throw(err){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"throw",err)}_next(undefined)})}}function _class_call_check(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function")}}function _defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor)}}function _create_class(Constructor,protoProps,staticProps){if(protoProps)_defineProperties(Constructor.prototype,protoProps);if(staticProps)_defineProperties(Constructor,staticProps);return Constructor}function _define_property(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}function _interop_require_default(obj){return obj&&obj.__esModule?obj:{default:obj}}function _getRequireWildcardCache(nodeInterop){if(typeof WeakMap!=="function")return null;var cacheBabelInterop=new WeakMap;var cacheNodeInterop=new WeakMap;return(_getRequireWildcardCache=function(nodeInterop){return nodeInterop?cacheNodeInterop:cacheBabelInterop})(nodeInterop)}function _interop_require_wildcard(obj,nodeInterop){if(!nodeInterop&&obj&&obj.__esModule){return obj}if(obj===null||typeof obj!=="object"&&typeof obj!=="function"){return{default:obj}}var cache=_getRequireWildcardCache(nodeInterop);if(cache&&cache.has(obj)){return cache.get(obj)}var newObj={__proto__:null};var hasPropertyDescriptor=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var key in obj){if(key!=="default"&&Object.prototype.hasOwnProperty.call(obj,key)){var desc=hasPropertyDescriptor?Object.getOwnPropertyDescriptor(obj,key):null;if(desc&&(desc.get||desc.set)){Object.defineProperty(newObj,key,desc)}else{newObj[key]=obj[key]}}}newObj.default=obj;if(cache){cache.set(obj,newObj)}return newObj}function _ts_generator(thisArg,body){var f,y,t,_={label:0,sent:function(){if(t[0]&1)throw t[1];return t[1]},trys:[],ops:[]},g=Object.create((typeof Iterator==="function"?Iterator:Object).prototype);return g.next=verb(0),g["throw"]=verb(1),g["return"]=verb(2),typeof Symbol==="function"&&(g[Symbol.iterator]=function(){return this}),g;function verb(n){return function(v){return step([n,v])}}function step(op){if(f)throw new TypeError("Generator is already executing.");while(g&&(g=0,op[0]&&(_=0)),_)try{if(f=1,y&&(t=op[0]&2?y["return"]:op[0]?y["throw"]||((t=y["return"])&&t.call(y),0):y.next)&&!(t=t.call(y,op[1])).done)return t;if(y=0,t)op=[op[0]&2,t.value];switch(op[0]){case 0:case 1:t=op;break;case 4:_.label++;return{value:op[1],done:false};case 5:_.label++;y=op[1];op=[0];continue;case 7:op=_.ops.pop();_.trys.pop();continue;default:if(!(t=_.trys,t=t.length>0&&t[t.length-1])&&(op[0]===6||op[0]===2)){_=0;continue}if(op[0]===3&&(!t||op[1]>t[0]&&op[1]<t[3])){_.label=op[1];break}if(op[0]===6&&_.label<t[1]){_.label=t[1];t=op;break}if(t&&_.label<t[2]){_.label=t[2];_.ops.push(op);break}if(t[2])_.ops.pop();_.trys.pop();continue}op=body.call(thisArg,_)}catch(e){op=[6,e];y=0}finally{f=t=0}if(op[0]&5)throw op[1];return{value:op[0]?op[1]:void 0,done:true}}}var SMDManagerClass=/*#__PURE__*/function(){"use strict";function SMDManagerClass(){_class_call_check(this,SMDManagerClass);_define_property(this,"SMDs",new Map);_define_property(this,"modulePaths",new Map);_define_property(this,"tableSpecs",new Map);_define_property(this,"isAutoloaded",false)}_create_class(SMDManagerClass,[{key:"autoload",value:function autoload(){var doSilent=arguments.length>0&&arguments[0]!==void 0?arguments[0]:false;return _async_to_generator(function(){var _this,pathPattern;return _ts_generator(this,function(_state){_this=this;if(this.isAutoloaded){return[2]}pathPattern=_path.default.join(_sonamu.Sonamu.apiRootPath,"/dist/application/**/*.smd.js");!doSilent&&console.log(_chalk.default.yellow("autoload ".concat(pathPattern)));return[2,new Promise(function(resolve){_glob.default.glob(_path.default.resolve(pathPattern),function(_err,files){var importPaths=files.map(function(filePath){return _path.default.relative(__dirname,filePath)});Promise.all(importPaths.map(function(importPath){return _async_to_generator(function(){var _this,imported;return _ts_generator(this,function(_state){switch(_state.label){case 0:_this=this;return[4,Promise.resolve(importPath).then(function(p){return /*#__PURE__*/_interop_require_wildcard(require(p))})];case 1:imported=_state.sent();Object.values(imported).map(function(smdInput){return _this.register(smdInput)});return[2,imported]}})}).call(_this)})).then(function(){resolve("ok");_this.isAutoloaded=true})})})]})}).call(this)}},{key:"register",value:function register(smdInput){var smd=new _smd.SMD(smdInput);this.SMDs.set(smdInput.id,smd)}},{key:"get",value:function get(smdId){var smd=this.SMDs.get(smdId);if(smd===undefined){throw new Error("존재하지 않는 SMD 요청 ".concat(smdId))}return smd}},{key:"exists",value:function exists(smdId){var smd=this.SMDs.get(smdId);return smd!==undefined}},{key:"getAllIds",value:function getAllIds(){return Array.from(SMDManager.SMDs.keys())}},{key:"getAllParentIds",value:function getAllParentIds(){var _this=this;return this.getAllIds().filter(function(smdId){var smd=_this.get(smdId);return smd.parentId===undefined})}},{key:"getChildrenIds",value:function getChildrenIds(parentId){var _this=this;return this.getAllIds().filter(function(smdId){var smd=_this.get(smdId);return smd.parentId===parentId})}},{key:"setModulePath",value:function setModulePath(key,modulePath){this.modulePaths.set(key,modulePath)}},{key:"getModulePath",value:function getModulePath(key){var modulePath=this.modulePaths.get(key);if(modulePath===undefined){throw new Error("존재하지 않는 모듈 패스 요청 ".concat(key))}return modulePath}},{key:"setTableSpec",value:function setTableSpec(tableSpec){this.tableSpecs.set(tableSpec.name,tableSpec)}},{key:"getTableSpec",value:function getTableSpec(key){var tableSpec=this.tableSpecs.get(key);if(tableSpec===undefined){throw new Error("존재하지 않는 테이블 스펙 요청 ".concat(key))}return tableSpec}},{key:"getNamesFromId",value:function getNamesFromId(smdId){var pluralized=_inflection.default.pluralize(smdId)===smdId?"".concat(smdId,"List"):_inflection.default.pluralize(smdId);return{fs:_inflection.default.dasherize(_inflection.default.underscore(smdId)).toLowerCase(),fsPlural:_inflection.default.dasherize(_inflection.default.underscore(pluralized)).toLowerCase(),camel:_inflection.default.camelize(smdId,true),camelPlural:_inflection.default.camelize(pluralized,true),capital:smdId,capitalPlural:pluralized,upper:smdId.toUpperCase(),constant:_inflection.default.underscore(smdId).toUpperCase()}}}]);return SMDManagerClass}();var SMDManager=new SMDManagerClass;
2
+ //# sourceMappingURL=smd-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/smd/smd-manager.ts"],"sourcesContent":["import chalk from \"chalk\";\nimport glob from \"glob\";\nimport inflection from \"inflection\";\nimport _ from \"lodash\";\nimport path from \"path\";\nimport { SMD } from \"./smd\";\nimport { SMDInput } from \"../types/types\";\nimport { Sonamu } from \"../api/sonamu\";\nimport { EntityNamesRecord } from \"../entity/entity-manager\";\n\ntype TableSpec = {\n name: string;\n uniqueColumns: string[];\n};\nclass SMDManagerClass {\n private SMDs: Map<string, SMD> = new Map();\n public modulePaths: Map<string, string> = new Map();\n private tableSpecs: Map<string, TableSpec> = new Map();\n public isAutoloaded: boolean = false;\n\n // 경로 전달받아 모든 SMD 파일 로드\n async autoload(doSilent: boolean = false) {\n if (this.isAutoloaded) {\n return;\n }\n const pathPattern = path.join(\n Sonamu.apiRootPath,\n \"/dist/application/**/*.smd.js\"\n );\n !doSilent && console.log(chalk.yellow(`autoload ${pathPattern}`));\n\n return new Promise((resolve) => {\n glob.glob(path.resolve(pathPattern!), (_err, files) => {\n const importPaths = files.map((filePath) =>\n path.relative(__dirname, filePath)\n );\n Promise.all(\n importPaths.map(async (importPath) => {\n const imported = await import(importPath);\n Object.values(imported).map((smdInput) =>\n this.register(smdInput as SMDInput<string>)\n );\n return imported;\n })\n ).then(() => {\n resolve(\"ok\");\n this.isAutoloaded = true;\n });\n });\n });\n }\n\n register(smdInput: SMDInput<string>): void {\n const smd = new SMD(smdInput);\n this.SMDs.set(smdInput.id, smd);\n }\n\n get(smdId: string): SMD {\n const smd = this.SMDs.get(smdId);\n if (smd === undefined) {\n throw new Error(`존재하지 않는 SMD 요청 ${smdId}`);\n }\n\n return smd;\n }\n\n exists(smdId: string): boolean {\n const smd = this.SMDs.get(smdId);\n return smd !== undefined;\n }\n\n getAllIds(): string[] {\n return Array.from(SMDManager.SMDs.keys());\n }\n\n getAllParentIds(): string[] {\n return this.getAllIds().filter((smdId) => {\n const smd = this.get(smdId);\n return smd.parentId === undefined;\n });\n }\n\n getChildrenIds(parentId: string): string[] {\n return this.getAllIds().filter((smdId) => {\n const smd = this.get(smdId);\n return smd.parentId === parentId;\n });\n }\n\n setModulePath(key: string, modulePath: string): void {\n // console.debug(chalk.cyan(`setModulePath :: ${key} :: ${modulePath}`));\n this.modulePaths.set(key, modulePath);\n }\n\n getModulePath(key: string): string {\n const modulePath = this.modulePaths.get(key);\n if (modulePath === undefined) {\n throw new Error(`존재하지 않는 모듈 패스 요청 ${key}`);\n }\n\n return modulePath;\n }\n\n setTableSpec(tableSpec: TableSpec) {\n this.tableSpecs.set(tableSpec.name, tableSpec);\n }\n\n getTableSpec(key: string): TableSpec {\n const tableSpec = this.tableSpecs.get(key);\n if (tableSpec === undefined) {\n throw new Error(`존재하지 않는 테이블 스펙 요청 ${key}`);\n }\n\n return tableSpec;\n }\n\n getNamesFromId(smdId: string): EntityNamesRecord {\n // entityId가 단복수 동형 단어인 경우 List 붙여서 생성\n const pluralized =\n inflection.pluralize(smdId) === smdId\n ? `${smdId}List`\n : inflection.pluralize(smdId);\n\n return {\n fs: inflection.dasherize(inflection.underscore(smdId)).toLowerCase(),\n fsPlural: inflection\n .dasherize(inflection.underscore(pluralized))\n .toLowerCase(),\n camel: inflection.camelize(smdId, true),\n camelPlural: inflection.camelize(pluralized, true),\n capital: smdId,\n capitalPlural: pluralized,\n upper: smdId.toUpperCase(),\n constant: inflection.underscore(smdId).toUpperCase(),\n };\n }\n}\n\nexport const SMDManager = new SMDManagerClass();\n"],"names":["SMDManager","SMDManagerClass","SMDs","Map","modulePaths","tableSpecs","isAutoloaded","autoload","doSilent","pathPattern","path","join","Sonamu","apiRootPath","console","log","chalk","yellow","Promise","resolve","glob","_err","files","importPaths","map","filePath","relative","__dirname","all","importPath","imported","Object","values","smdInput","register","then","smd","SMD","set","id","get","smdId","undefined","Error","exists","getAllIds","Array","from","keys","getAllParentIds","filter","parentId","getChildrenIds","setModulePath","key","modulePath","getModulePath","setTableSpec","tableSpec","name","getTableSpec","getNamesFromId","pluralized","inflection","pluralize","fs","dasherize","underscore","toLowerCase","fsPlural","camel","camelize","camelPlural","capital","capitalPlural","upper","toUpperCase","constant"],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ import { EntityProp, RelationProp, SubsetQuery, EntityPropNode, EntityIndex, EnumsLabelKo, SMDInput } from "../types/types";
2
+ import { z } from "zod";
3
+ export declare class SMD {
4
+ id: string;
5
+ parentId?: string;
6
+ table: string;
7
+ title: string;
8
+ names: {
9
+ fs: string;
10
+ module: string;
11
+ };
12
+ props: EntityProp[];
13
+ propsDict: {
14
+ [key: string]: EntityProp;
15
+ };
16
+ relations: {
17
+ [key: string]: RelationProp;
18
+ };
19
+ indexes: EntityIndex[];
20
+ subsets: {
21
+ [key: string]: string[];
22
+ };
23
+ types: {
24
+ [name: string]: z.ZodTypeAny;
25
+ };
26
+ enums: {
27
+ [name: string]: z.ZodEnum<any>;
28
+ };
29
+ enumLabels: {
30
+ [name: string]: EnumsLabelKo<string>;
31
+ };
32
+ constructor({ id, parentId, table, title, props, indexes, subsets, }: SMDInput<any>);
33
+ getSubsetQuery(subsetKey: string): SubsetQuery;
34
+ resolveSubsetQuery(prefix: string, fields: string[], isAlreadyOuterJoined?: boolean): SubsetQuery;
35
+ fieldExprsToPropNodes(fieldExprs: string[], smd?: SMD): EntityPropNode[];
36
+ getFieldExprs(prefix?: string, maxDepth?: number, froms?: string[]): string[];
37
+ registerModulePaths(): void;
38
+ registerTableSpecs(): void;
39
+ }
40
+ //# sourceMappingURL=smd.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"smd.d.ts","sourceRoot":"","sources":["../../src/smd/smd.ts"],"names":[],"mappings":"AACA,OAAO,EACL,UAAU,EACV,YAAY,EAEZ,WAAW,EAMX,cAAc,EAGd,WAAW,EACX,YAAY,EACZ,QAAQ,EACT,MAAM,gBAAgB,CAAC;AAIxB,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,qBAAa,GAAG;IACd,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE;QACL,EAAE,EAAE,MAAM,CAAC;QACX,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,SAAS,EAAE;QACT,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAAC;KAC3B,CAAC;IACF,SAAS,EAAE;QACT,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,CAAC;KAC7B,CAAC;IACF,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,OAAO,EAAE;QACP,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;KACzB,CAAC;IACF,KAAK,EAAE;QACL,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,CAAC,UAAU,CAAC;KAC9B,CAAM;IACP,KAAK,EAAE;QACL,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;KAChC,CAAM;IACP,UAAU,EAAE;QACV,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;KACtC,CAAM;gBAEK,EACV,EAAE,EACF,QAAQ,EACR,KAAK,EACL,KAAK,EACL,KAAK,EACL,OAAO,EACP,OAAO,GACR,EAAE,QAAQ,CAAC,GAAG,CAAC;IA6DhB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW;IAS9C,kBAAkB,CAChB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EAAE,EAChB,oBAAoB,GAAE,OAAe,GACpC,WAAW;IA2Nd,qBAAqB,CACnB,UAAU,EAAE,MAAM,EAAE,EACpB,GAAG,GAAE,GAAU,GACd,cAAc,EAAE;IA8FnB,aAAa,CACX,MAAM,SAAK,EACX,QAAQ,GAAE,MAAU,EACpB,KAAK,GAAE,MAAM,EAAO,GACnB,MAAM,EAAE;IA4BX,mBAAmB;IAwEnB,kBAAkB,IAAI,IAAI;CAa3B"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"SMD",{enumerable:true,get:function(){return SMD}});var _lodash=/*#__PURE__*/_interop_require_default(require("lodash"));var _types=require("../types/types");var _inflection=/*#__PURE__*/_interop_require_default(require("inflection"));var _path=/*#__PURE__*/_interop_require_default(require("path"));var _fs=/*#__PURE__*/_interop_require_default(require("fs"));var _sonamu=require("../api/sonamu");var _smdmanager=require("./smd-manager");function _array_like_to_array(arr,len){if(len==null||len>arr.length)len=arr.length;for(var i=0,arr2=new Array(len);i<len;i++)arr2[i]=arr[i];return arr2}function _array_with_holes(arr){if(Array.isArray(arr))return arr}function _array_without_holes(arr){if(Array.isArray(arr))return _array_like_to_array(arr)}function _class_call_check(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function")}}function _defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor)}}function _create_class(Constructor,protoProps,staticProps){if(protoProps)_defineProperties(Constructor.prototype,protoProps);if(staticProps)_defineProperties(Constructor,staticProps);return Constructor}function _define_property(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}function _interop_require_default(obj){return obj&&obj.__esModule?obj:{default:obj}}function _getRequireWildcardCache(nodeInterop){if(typeof WeakMap!=="function")return null;var cacheBabelInterop=new WeakMap;var cacheNodeInterop=new WeakMap;return(_getRequireWildcardCache=function(nodeInterop){return nodeInterop?cacheNodeInterop:cacheBabelInterop})(nodeInterop)}function _interop_require_wildcard(obj,nodeInterop){if(!nodeInterop&&obj&&obj.__esModule){return obj}if(obj===null||typeof obj!=="object"&&typeof obj!=="function"){return{default:obj}}var cache=_getRequireWildcardCache(nodeInterop);if(cache&&cache.has(obj)){return cache.get(obj)}var newObj={__proto__:null};var hasPropertyDescriptor=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var key in obj){if(key!=="default"&&Object.prototype.hasOwnProperty.call(obj,key)){var desc=hasPropertyDescriptor?Object.getOwnPropertyDescriptor(obj,key):null;if(desc&&(desc.get||desc.set)){Object.defineProperty(newObj,key,desc)}else{newObj[key]=obj[key]}}}newObj.default=obj;if(cache){cache.set(obj,newObj)}return newObj}function _iterable_to_array(iter){if(typeof Symbol!=="undefined"&&iter[Symbol.iterator]!=null||iter["@@iterator"]!=null)return Array.from(iter)}function _iterable_to_array_limit(arr,i){var _i=arr==null?null:typeof Symbol!=="undefined"&&arr[Symbol.iterator]||arr["@@iterator"];if(_i==null)return;var _arr=[];var _n=true;var _d=false;var _s,_e;try{for(_i=_i.call(arr);!(_n=(_s=_i.next()).done);_n=true){_arr.push(_s.value);if(i&&_arr.length===i)break}}catch(err){_d=true;_e=err}finally{try{if(!_n&&_i["return"]!=null)_i["return"]()}finally{if(_d)throw _e}}return _arr}function _non_iterable_rest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _non_iterable_spread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _object_spread(target){for(var i=1;i<arguments.length;i++){var source=arguments[i]!=null?arguments[i]:{};var ownKeys=Object.keys(source);if(typeof Object.getOwnPropertySymbols==="function"){ownKeys=ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym){return Object.getOwnPropertyDescriptor(source,sym).enumerable}))}ownKeys.forEach(function(key){_define_property(target,key,source[key])})}return target}function ownKeys(object,enumerableOnly){var keys=Object.keys(object);if(Object.getOwnPropertySymbols){var symbols=Object.getOwnPropertySymbols(object);if(enumerableOnly){symbols=symbols.filter(function(sym){return Object.getOwnPropertyDescriptor(object,sym).enumerable})}keys.push.apply(keys,symbols)}return keys}function _object_spread_props(target,source){source=source!=null?source:{};if(Object.getOwnPropertyDescriptors){Object.defineProperties(target,Object.getOwnPropertyDescriptors(source))}else{ownKeys(Object(source)).forEach(function(key){Object.defineProperty(target,key,Object.getOwnPropertyDescriptor(source,key))})}return target}function _sliced_to_array(arr,i){return _array_with_holes(arr)||_iterable_to_array_limit(arr,i)||_unsupported_iterable_to_array(arr,i)||_non_iterable_rest()}function _to_array(arr){return _array_with_holes(arr)||_iterable_to_array(arr)||_unsupported_iterable_to_array(arr)||_non_iterable_rest()}function _to_consumable_array(arr){return _array_without_holes(arr)||_iterable_to_array(arr)||_unsupported_iterable_to_array(arr)||_non_iterable_spread()}function _unsupported_iterable_to_array(o,minLen){if(!o)return;if(typeof o==="string")return _array_like_to_array(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);if(n==="Object"&&o.constructor)n=o.constructor.name;if(n==="Map"||n==="Set")return Array.from(n);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _array_like_to_array(o,minLen)}var SMD=/*#__PURE__*/function(){"use strict";function SMD(param){var id=param.id,parentId=param.parentId,table=param.table,title=param.title,props=param.props,indexes=param.indexes,subsets=param.subsets;_class_call_check(this,SMD);_define_property(this,"id",void 0);_define_property(this,"parentId",void 0);_define_property(this,"table",void 0);_define_property(this,"title",void 0);_define_property(this,"names",void 0);_define_property(this,"props",void 0);_define_property(this,"propsDict",void 0);_define_property(this,"relations",void 0);_define_property(this,"indexes",void 0);_define_property(this,"subsets",void 0);_define_property(this,"types",{});_define_property(this,"enums",{});_define_property(this,"enumLabels",{});this.id=id;this.parentId=parentId;this.title=title!==null&&title!==void 0?title:this.id;this.table=table!==null&&table!==void 0?table:_inflection.default.underscore(_inflection.default.pluralize(id));if(props){this.props=props.map(function(prop){if((0,_types.isEnumProp)(prop)){if(prop.id.includes("$Model")){prop.id=prop.id.replace("$Model",id)}}return prop});this.propsDict=props.reduce(function(result,prop){return _object_spread_props(_object_spread({},result),_define_property({},prop.name,prop))},{});this.relations=props.filter(function(prop){return(0,_types.isRelationProp)(prop)}).reduce(function(result,prop){return _object_spread_props(_object_spread({},result),_define_property({},prop.name,prop))},{})}else{this.props=[];this.propsDict={};this.relations={}}this.indexes=indexes!==null&&indexes!==void 0?indexes:[];this.subsets=subsets!==null&&subsets!==void 0?subsets:{};this.names={fs:parentId===undefined?_inflection.default.dasherize(_inflection.default.underscore(id)).toLowerCase():_inflection.default.dasherize(parentId).toLowerCase(),module:id};this.registerModulePaths();this.registerTableSpecs()}_create_class(SMD,[{key:"getSubsetQuery",value:function getSubsetQuery(subsetKey){var subset=this.subsets[subsetKey];var result=this.resolveSubsetQuery("",subset);return result}},{key:"resolveSubsetQuery",value:function resolveSubsetQuery(prefix,fields){var _this=this;var isAlreadyOuterJoined=arguments.length>2&&arguments[2]!==void 0?arguments[2]:false;prefix=prefix.replace(/\./g,"__");var subsetGroup=_lodash.default.groupBy(fields,function(field){if(field.includes(".")){var _field_split=_sliced_to_array(field.split("."),1),rel=_field_split[0];return rel}else{return""}});var result=Object.keys(subsetGroup).reduce(function(r,groupKey){var _$fields=subsetGroup[groupKey];if(groupKey===""){var realFields=_$fields.filter(function(field){return!(0,_types.isVirtualProp)(_this.propsDict[field])});var virtualFields=_$fields.filter(function(field){return(0,_types.isVirtualProp)(_this.propsDict[field])});if(prefix===""){r.select=r.select.concat(realFields.map(function(field){return"".concat(_this.table,".").concat(field)}));r.virtual=r.virtual.concat(virtualFields)}else{r.select=r.select.concat(realFields.map(function(field){return"".concat(prefix,".").concat(field," as ").concat(prefix,"__").concat(field)}))}return r}var relation=_this.relations[groupKey];if(relation===undefined){throw new Error("존재하지 않는 relation 참조 ".concat(groupKey))}var relSMD=_smdmanager.SMDManager.get(relation.with);if((0,_types.isOneToOneRelationProp)(relation)||(0,_types.isBelongsToOneRelationProp)(relation)){var relFields=_$fields.map(function(field){return field.split(".").slice(1).join(".")});if(relFields.length===1&&relFields[0]==="id"){if(prefix===""){r.select=r.select.concat("".concat(_this.table,".").concat(groupKey,"_id"))}else{r.select=r.select.concat("".concat(prefix,".").concat(groupKey,"_id as ").concat(prefix,"__").concat(groupKey,"_id"))}return r}var innerOrOuter=function(){if(isAlreadyOuterJoined){return"outer"}if((0,_types.isOneToOneRelationProp)(relation)){var _relation_nullable;if(relation.hasJoinColumn===true&&((_relation_nullable=relation.nullable)!==null&&_relation_nullable!==void 0?_relation_nullable:false)===false){return"inner"}else{return"outer"}}else{if(relation.nullable){return"outer"}else{return"inner"}}}();var relSubsetQuery=relSMD.resolveSubsetQuery("".concat(prefix!==""?prefix+".":"").concat(groupKey),relFields,innerOrOuter==="outer");r.select=r.select.concat(relSubsetQuery.select);r.virtual=r.virtual.concat(relSubsetQuery.virtual);var joinAs=prefix===""?groupKey:prefix+"__"+groupKey;var fromTable=prefix===""?_this.table:prefix;var joinClause;if(relation.customJoinClause){joinClause={custom:relation.customJoinClause}}else{var from,to;if((0,_types.isOneToOneRelationProp)(relation)){if(relation.hasJoinColumn){from="".concat(fromTable,".").concat(relation.name,"_id");to="".concat(joinAs,".id")}else{from="".concat(fromTable,".id");to="".concat(joinAs,".").concat(_inflection.default.underscore(_this.names.fs.replace(/\-/g,"_")),"_id")}}else{from="".concat(fromTable,".").concat(relation.name,"_id");to="".concat(joinAs,".id")}joinClause={from:from,to:to}}r.joins.push(_object_spread({as:joinAs,join:innerOrOuter,table:relSMD.table},joinClause));if(relSubsetQuery.loaders.length>0){var convertedLoaders=relSubsetQuery.loaders.map(function(loader){var newAs=[groupKey,loader.as].join("__");return{as:newAs,table:loader.table,manyJoin:loader.manyJoin,oneJoins:loader.oneJoins,select:loader.select}});r.loaders=_to_consumable_array(r.loaders).concat(_to_consumable_array(convertedLoaders))}r.joins=r.joins.concat(relSubsetQuery.joins)}else if((0,_types.isHasManyRelationProp)(relation)||(0,_types.isManyToManyRelationProp)(relation)){var relFields1=_$fields.map(function(field){return field.split(".").slice(1).join(".")});var relSubsetQuery1=relSMD.resolveSubsetQuery("",relFields1);var manyJoin;if((0,_types.isHasManyRelationProp)(relation)){manyJoin={fromTable:_this.table,fromCol:"id",idField:prefix===""?"id":"".concat(prefix,"__id"),toTable:relSMD.table,toCol:relation.joinColumn}}else if((0,_types.isManyToManyRelationProp)(relation)){var _relation_joinTable_split=_sliced_to_array(relation.joinTable.split("__"),2),table1=_relation_joinTable_split[0],table2=_relation_joinTable_split[1];manyJoin={fromTable:_this.table,fromCol:"id",idField:prefix===""?"id":"".concat(prefix,"__id"),through:{table:relation.joinTable,fromCol:"".concat(_inflection.default.singularize(table1),"_id"),toCol:"".concat(_inflection.default.singularize(table2),"_id")},toTable:relSMD.table,toCol:"id"}}else{throw new Error}r.loaders.push({as:groupKey,table:relSMD.table,manyJoin:manyJoin,oneJoins:relSubsetQuery1.joins,select:relSubsetQuery1.select,loaders:relSubsetQuery1.loaders})}return r},{select:[],virtual:[],joins:[],loaders:[]});return result}},{key:"fieldExprsToPropNodes",value:function fieldExprsToPropNodes(fieldExprs){var _this=this;var smd=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this;var groups=fieldExprs.reduce(function(result,fieldExpr){var key,value,elseExpr;if(fieldExpr.includes(".")){var ref;ref=_to_array(fieldExpr.split(".")),key=ref[0],elseExpr=ref.slice(1),ref;value=elseExpr.join(".")}else{key="";value=fieldExpr}var _result_key;result[key]=((_result_key=result[key])!==null&&_result_key!==void 0?_result_key:[]).concat(value);return result},{});return Object.keys(groups).map(function(key){var group=groups[key];if(key===""){return group.map(function(propName){if(propName==="uuid"){return{nodeType:"plain",prop:{type:"string",name:"uuid",length:128},children:[]}}var prop=smd.propsDict[propName];if(prop===undefined){throw new Error("".concat(_this.id," -- 잘못된 FieldExpr ").concat(propName))}return{nodeType:"plain",prop:prop,children:[]}})}var prop=smd.propsDict[key];if(!(0,_types.isRelationProp)(prop)){throw new Error("잘못된 FieldExpr ".concat(key,".").concat(group[0]))}var relSMD=_smdmanager.SMDManager.get(prop.with);if((0,_types.isBelongsToOneRelationProp)(prop)||(0,_types.isOneToOneRelationProp)(prop)){if(group.length==1&&(group[0]==="id"||group[0]=="id?")){var idProp=relSMD.propsDict.id;return{nodeType:"plain",prop:_object_spread_props(_object_spread({},idProp),{name:key+"_id",nullable:prop.nullable}),children:[]}}}var children=_this.fieldExprsToPropNodes(group,relSMD);var nodeType=(0,_types.isBelongsToOneRelationProp)(prop)||(0,_types.isOneToOneRelationProp)(prop)?"object":"array";return{prop:prop,children:children,nodeType:nodeType}}).flat()}},{key:"getFieldExprs",value:function getFieldExprs(){var _this=this;var prefix=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"",maxDepth=arguments.length>1&&arguments[1]!==void 0?arguments[1]:3,froms=arguments.length>2&&arguments[2]!==void 0?arguments[2]:[];return this.props.map(function(prop){var propName=[prefix,prop.name].filter(function(v){return v!==""}).join(".");if(propName===prefix){return null}if((0,_types.isRelationProp)(prop)){if(maxDepth<0){return null}if(froms.includes(prop.with)){return null}var relMd=_smdmanager.SMDManager.get(prop.with);return relMd.getFieldExprs(propName,maxDepth-1,_to_consumable_array(froms).concat([_this.id]))}return propName}).flat().filter(function(f){return f!==null})}},{key:"registerModulePaths",value:function registerModulePaths(){var _this=this;var basePath="".concat(this.names.fs);_smdmanager.SMDManager.setModulePath("".concat(this.id,"BaseSchema"),"".concat(basePath,"/").concat(this.names.fs,".generated"));if(Object.keys(this.subsets).length>0){_smdmanager.SMDManager.setModulePath("".concat(this.id,"SubsetKey"),"".concat(basePath,"/").concat(this.names.fs,".generated"));_smdmanager.SMDManager.setModulePath("".concat(this.id,"SubsetMapping"),"".concat(basePath,"/").concat(this.names.fs,".generated"));Object.keys(this.subsets).map(function(subsetKey){_smdmanager.SMDManager.setModulePath("".concat(_this.id,"Subset").concat(subsetKey.toUpperCase()),"".concat(basePath,"/").concat(_this.names.fs,".generated"))})}var typesModulePath="".concat(basePath,"/").concat(this.names.fs,".types");var typesFileDistPath=_path.default.join(_sonamu.Sonamu.apiRootPath,"dist/application/".concat(typesModulePath,".js"));if(_fs.default.existsSync(typesFileDistPath)){var importPath=_path.default.relative(__dirname,typesFileDistPath);Promise.resolve(importPath).then(function(p){return /*#__PURE__*/_interop_require_wildcard(require(p))}).then(function(t){_this.types=Object.keys(t).reduce(function(result,key){_smdmanager.SMDManager.setModulePath(key,typesModulePath);return _object_spread_props(_object_spread({},result),_define_property({},key,t[key]))},{})})}var enumsModulePath="".concat(basePath,"/").concat(this.names.fs,".enums");var enumsFileDistPath=_path.default.join(_sonamu.Sonamu.apiRootPath,"/dist/application/".concat(enumsModulePath,".js"));if(_fs.default.existsSync(enumsFileDistPath)){var importPath1=_path.default.relative(__dirname,enumsFileDistPath);Promise.resolve(importPath1).then(function(p){return /*#__PURE__*/_interop_require_wildcard(require(p))}).then(function(t){_this.enums=Object.keys(t).reduce(function(result,key){_smdmanager.SMDManager.setModulePath(key,enumsModulePath);if(key===_inflection.default.underscore(_this.id).toUpperCase()){_this.enumLabels=t[key]}return _object_spread_props(_object_spread({},result),_define_property({},key,t[key]))},{})})}}},{key:"registerTableSpecs",value:function registerTableSpecs(){var uniqueColumns=_lodash.default.uniq(this.indexes.filter(function(idx){return idx.type==="unique"}).map(function(idx){return idx.columns}).flat());_smdmanager.SMDManager.setTableSpec({name:this.table,uniqueColumns:uniqueColumns})}}]);return SMD}();
2
+ //# sourceMappingURL=smd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/smd/smd.ts"],"sourcesContent":["import _ from \"lodash\";\nimport {\n EntityProp,\n RelationProp,\n isRelationProp,\n SubsetQuery,\n isVirtualProp,\n isBelongsToOneRelationProp,\n isOneToOneRelationProp,\n isHasManyRelationProp,\n isManyToManyRelationProp,\n EntityPropNode,\n isEnumProp,\n StringProp,\n EntityIndex,\n EnumsLabelKo,\n SMDInput,\n} from \"../types/types\";\nimport inflection from \"inflection\";\nimport path from \"path\";\nimport fs from \"fs\";\nimport { z } from \"zod\";\nimport { Sonamu } from \"../api/sonamu\";\nimport { SMDManager } from \"./smd-manager\";\n\nexport class SMD {\n id: string;\n parentId?: string;\n table: string;\n title: string;\n names: {\n fs: string;\n module: string;\n };\n props: EntityProp[];\n propsDict: {\n [key: string]: EntityProp;\n };\n relations: {\n [key: string]: RelationProp;\n };\n indexes: EntityIndex[];\n subsets: {\n [key: string]: string[];\n };\n types: {\n [name: string]: z.ZodTypeAny;\n } = {};\n enums: {\n [name: string]: z.ZodEnum<any>;\n } = {};\n enumLabels: {\n [name: string]: EnumsLabelKo<string>;\n } = {};\n\n constructor({\n id,\n parentId,\n table,\n title,\n props,\n indexes,\n subsets,\n }: SMDInput<any>) {\n // id\n this.id = id;\n this.parentId = parentId;\n this.title = title ?? this.id;\n this.table = table ?? inflection.underscore(inflection.pluralize(id));\n\n // props\n if (props) {\n this.props = props.map((prop) => {\n if (isEnumProp(prop)) {\n if (prop.id.includes(\"$Model\")) {\n prop.id = prop.id.replace(\"$Model\", id);\n }\n }\n return prop;\n });\n this.propsDict = props.reduce((result, prop) => {\n return {\n ...result,\n [prop.name]: prop,\n };\n }, {});\n\n // relations\n this.relations = props\n .filter((prop) => isRelationProp(prop))\n .reduce((result, prop) => {\n return {\n ...result,\n [prop.name]: prop,\n };\n }, {});\n } else {\n this.props = [];\n this.propsDict = {};\n this.relations = {};\n }\n\n // indexes\n this.indexes = indexes ?? [];\n\n // subsets\n this.subsets = subsets ?? {};\n\n // names\n this.names = {\n fs:\n parentId === undefined\n ? inflection.dasherize(inflection.underscore(id)).toLowerCase()\n : inflection.dasherize(parentId).toLowerCase(),\n module: id,\n };\n\n this.registerModulePaths();\n this.registerTableSpecs();\n }\n\n /*\n subset SELECT/JOIN/LOADER 결과 리턴\n */\n getSubsetQuery(subsetKey: string): SubsetQuery {\n const subset = this.subsets[subsetKey];\n\n const result: SubsetQuery = this.resolveSubsetQuery(\"\", subset);\n return result;\n }\n\n /*\n */\n resolveSubsetQuery(\n prefix: string,\n fields: string[],\n isAlreadyOuterJoined: boolean = false\n ): SubsetQuery {\n // prefix 치환 (prefix는 ToOneRelation이 복수로 붙은 경우 모두 __로 변경됨)\n prefix = prefix.replace(/\\./g, \"__\");\n\n // 서브셋을 1뎁스만 분리하여 그룹핑\n const subsetGroup = _.groupBy(fields, (field) => {\n if (field.includes(\".\")) {\n const [rel] = field.split(\".\");\n return rel;\n } else {\n return \"\";\n }\n });\n\n const result = Object.keys(subsetGroup).reduce(\n (r, groupKey) => {\n const fields = subsetGroup[groupKey];\n // 현재 테이블 필드셋은 select, virtual에 추가하고 리턴\n if (groupKey === \"\") {\n const realFields = fields.filter(\n (field) => !isVirtualProp(this.propsDict[field])\n );\n const virtualFields = fields.filter((field) =>\n isVirtualProp(this.propsDict[field])\n );\n\n if (prefix === \"\") {\n // 현재 테이블인 경우\n r.select = r.select.concat(\n realFields.map((field) => `${this.table}.${field}`)\n );\n r.virtual = r.virtual.concat(virtualFields);\n } else {\n // 넘어온 테이블인 경우\n r.select = r.select.concat(\n realFields.map(\n (field) => `${prefix}.${field} as ${prefix}__${field}`\n )\n );\n }\n\n return r;\n }\n\n const relation = this.relations[groupKey];\n if (relation === undefined) {\n throw new Error(`존재하지 않는 relation 참조 ${groupKey}`);\n }\n const relSMD = SMDManager.get(relation.with);\n\n if (\n isOneToOneRelationProp(relation) ||\n isBelongsToOneRelationProp(relation)\n ) {\n // -One Relation: JOIN 으로 처리\n const relFields = fields.map((field) =>\n field.split(\".\").slice(1).join(\".\")\n );\n\n // -One Relation에서 id 필드만 참조하는 경우 릴레이션 넘기지 않고 리턴\n if (relFields.length === 1 && relFields[0] === \"id\") {\n if (prefix === \"\") {\n r.select = r.select.concat(`${this.table}.${groupKey}_id`);\n } else {\n r.select = r.select.concat(\n `${prefix}.${groupKey}_id as ${prefix}__${groupKey}_id`\n );\n }\n return r;\n }\n\n // innerOrOuter\n const innerOrOuter = (() => {\n if (isAlreadyOuterJoined) {\n return \"outer\";\n }\n\n if (isOneToOneRelationProp(relation)) {\n if (\n relation.hasJoinColumn === true &&\n (relation.nullable ?? false) === false\n ) {\n return \"inner\";\n } else {\n return \"outer\";\n }\n } else {\n if (relation.nullable) {\n return \"outer\";\n } else {\n return \"inner\";\n }\n }\n })();\n const relSubsetQuery = relSMD.resolveSubsetQuery(\n `${prefix !== \"\" ? prefix + \".\" : \"\"}${groupKey}`,\n relFields,\n innerOrOuter === \"outer\"\n );\n r.select = r.select.concat(relSubsetQuery.select);\n r.virtual = r.virtual.concat(relSubsetQuery.virtual);\n\n const joinAs = prefix === \"\" ? groupKey : prefix + \"__\" + groupKey;\n const fromTable = prefix === \"\" ? this.table : prefix;\n\n let joinClause;\n if (relation.customJoinClause) {\n joinClause = {\n custom: relation.customJoinClause,\n };\n } else {\n let from, to;\n if (isOneToOneRelationProp(relation)) {\n if (relation.hasJoinColumn) {\n from = `${fromTable}.${relation.name}_id`;\n to = `${joinAs}.id`;\n } else {\n from = `${fromTable}.id`;\n to = `${joinAs}.${inflection.underscore(\n this.names.fs.replace(/\\-/g, \"_\")\n )}_id`;\n }\n } else {\n from = `${fromTable}.${relation.name}_id`;\n to = `${joinAs}.id`;\n }\n joinClause = {\n from,\n to,\n };\n }\n\n r.joins.push({\n as: joinAs,\n join: innerOrOuter,\n table: relSMD.table,\n ...joinClause,\n });\n\n // BelongsToOne 밑에 HasMany가 붙은 경우\n if (relSubsetQuery.loaders.length > 0) {\n const convertedLoaders = relSubsetQuery.loaders.map((loader) => {\n const newAs = [groupKey, loader.as].join(\"__\");\n return {\n as: newAs,\n table: loader.table,\n manyJoin: loader.manyJoin,\n oneJoins: loader.oneJoins,\n select: loader.select,\n };\n });\n\n r.loaders = [...r.loaders, ...convertedLoaders];\n }\n\n r.joins = r.joins.concat(relSubsetQuery.joins);\n } else if (\n isHasManyRelationProp(relation) ||\n isManyToManyRelationProp(relation)\n ) {\n // -Many Relation: Loader 로 처리\n const relFields = fields.map((field) =>\n field.split(\".\").slice(1).join(\".\")\n );\n const relSubsetQuery = relSMD.resolveSubsetQuery(\"\", relFields);\n\n let manyJoin: SubsetQuery[\"loaders\"][number][\"manyJoin\"];\n if (isHasManyRelationProp(relation)) {\n manyJoin = {\n fromTable: this.table,\n fromCol: \"id\",\n idField: prefix === \"\" ? `id` : `${prefix}__id`,\n toTable: relSMD.table,\n toCol: relation.joinColumn,\n };\n } else if (isManyToManyRelationProp(relation)) {\n const [table1, table2] = relation.joinTable.split(\"__\");\n\n manyJoin = {\n fromTable: this.table,\n fromCol: \"id\",\n idField: prefix === \"\" ? `id` : `${prefix}__id`,\n through: {\n table: relation.joinTable,\n fromCol: `${inflection.singularize(table1)}_id`,\n toCol: `${inflection.singularize(table2)}_id`,\n },\n toTable: relSMD.table,\n toCol: \"id\",\n };\n } else {\n throw new Error();\n }\n\n r.loaders.push({\n as: groupKey,\n table: relSMD.table,\n manyJoin,\n oneJoins: relSubsetQuery.joins,\n select: relSubsetQuery.select,\n loaders: relSubsetQuery.loaders,\n });\n }\n\n return r;\n },\n {\n select: [],\n virtual: [],\n joins: [],\n loaders: [],\n } as SubsetQuery\n );\n return result;\n }\n\n /*\n FieldExpr[] 을 SMDPropNode[] 로 변환\n */\n fieldExprsToPropNodes(\n fieldExprs: string[],\n smd: SMD = this\n ): EntityPropNode[] {\n const groups = fieldExprs.reduce(\n (result, fieldExpr) => {\n let key, value, elseExpr;\n if (fieldExpr.includes(\".\")) {\n [key, ...elseExpr] = fieldExpr.split(\".\");\n value = elseExpr.join(\".\");\n } else {\n key = \"\";\n value = fieldExpr;\n }\n result[key] = (result[key] ?? []).concat(value);\n\n return result;\n },\n {} as {\n [k: string]: string[];\n }\n );\n\n return Object.keys(groups)\n .map((key) => {\n const group = groups[key];\n\n // 일반 prop 처리\n if (key === \"\") {\n return group.map((propName) => {\n // uuid 개별 처리\n if (propName === \"uuid\") {\n return {\n nodeType: \"plain\" as const,\n prop: {\n type: \"string\",\n name: \"uuid\",\n length: 128,\n } as StringProp,\n children: [],\n };\n }\n\n const prop = smd.propsDict[propName];\n if (prop === undefined) {\n throw new Error(`${this.id} -- 잘못된 FieldExpr ${propName}`);\n }\n return {\n nodeType: \"plain\" as const,\n prop,\n children: [],\n };\n });\n }\n\n // relation prop 처리\n const prop = smd.propsDict[key];\n if (!isRelationProp(prop)) {\n throw new Error(`잘못된 FieldExpr ${key}.${group[0]}`);\n }\n const relSMD = SMDManager.get(prop.with);\n\n // relation -One 에 id 필드 하나인 경우\n if (isBelongsToOneRelationProp(prop) || isOneToOneRelationProp(prop)) {\n if (group.length == 1 && (group[0] === \"id\" || group[0] == \"id?\")) {\n // id 하나만 있는지 체크해서, 하나만 있으면 상위 prop으로 id를 리턴\n const idProp = relSMD.propsDict.id;\n return {\n nodeType: \"plain\" as const,\n prop: {\n ...idProp,\n name: key + \"_id\",\n nullable: prop.nullable,\n },\n children: [],\n };\n }\n }\n\n // -One 그외의 경우 object로 리턴\n // -Many의 경우 array로 리턴\n // Recursive 로 뎁스 처리\n const children = this.fieldExprsToPropNodes(group, relSMD);\n const nodeType =\n isBelongsToOneRelationProp(prop) || isOneToOneRelationProp(prop)\n ? (\"object\" as const)\n : (\"array\" as const);\n\n return {\n prop,\n children,\n nodeType,\n };\n })\n .flat();\n }\n\n getFieldExprs(\n prefix = \"\",\n maxDepth: number = 3,\n froms: string[] = []\n ): string[] {\n return this.props\n .map((prop) => {\n const propName = [prefix, prop.name].filter((v) => v !== \"\").join(\".\");\n if (propName === prefix) {\n return null;\n }\n if (isRelationProp(prop)) {\n if (maxDepth < 0) {\n return null;\n }\n if (froms.includes(prop.with)) {\n // 역방향 relation인 경우 제외\n return null;\n }\n // 정방향 relation인 경우 recursive 콜\n const relMd = SMDManager.get(prop.with);\n return relMd.getFieldExprs(propName, maxDepth - 1, [\n ...froms,\n this.id,\n ]);\n }\n return propName;\n })\n .flat()\n .filter((f) => f !== null) as string[];\n }\n\n registerModulePaths() {\n const basePath = `${this.names.fs}`;\n\n // base-scheme\n SMDManager.setModulePath(\n `${this.id}BaseSchema`,\n `${basePath}/${this.names.fs}.generated`\n );\n\n // subset\n if (Object.keys(this.subsets).length > 0) {\n SMDManager.setModulePath(\n `${this.id}SubsetKey`,\n `${basePath}/${this.names.fs}.generated`\n );\n SMDManager.setModulePath(\n `${this.id}SubsetMapping`,\n `${basePath}/${this.names.fs}.generated`\n );\n Object.keys(this.subsets).map((subsetKey) => {\n SMDManager.setModulePath(\n `${this.id}Subset${subsetKey.toUpperCase()}`,\n `${basePath}/${this.names.fs}.generated`\n );\n });\n }\n\n // types\n const typesModulePath = `${basePath}/${this.names.fs}.types`;\n const typesFileDistPath = path.join(\n Sonamu.apiRootPath,\n `dist/application/${typesModulePath}.js`\n );\n\n if (fs.existsSync(typesFileDistPath)) {\n const importPath = path.relative(__dirname, typesFileDistPath);\n import(importPath).then((t) => {\n this.types = Object.keys(t).reduce((result, key) => {\n SMDManager.setModulePath(key, typesModulePath);\n return {\n ...result,\n [key]: t[key],\n };\n }, {});\n });\n }\n\n // enums\n const enumsModulePath = `${basePath}/${this.names.fs}.enums`;\n const enumsFileDistPath = path.join(\n Sonamu.apiRootPath,\n `/dist/application/${enumsModulePath}.js`\n );\n if (fs.existsSync(enumsFileDistPath)) {\n const importPath = path.relative(__dirname, enumsFileDistPath);\n import(importPath).then((t) => {\n this.enums = Object.keys(t).reduce((result, key) => {\n SMDManager.setModulePath(key, enumsModulePath);\n\n // Enum Labels 별도 처리\n if (key === inflection.underscore(this.id).toUpperCase()) {\n this.enumLabels = t[key];\n }\n return {\n ...result,\n [key]: t[key],\n };\n }, {});\n });\n }\n }\n\n registerTableSpecs(): void {\n const uniqueColumns = _.uniq(\n this.indexes\n .filter((idx) => idx.type === \"unique\")\n .map((idx) => idx.columns)\n .flat()\n );\n\n SMDManager.setTableSpec({\n name: this.table,\n uniqueColumns,\n });\n }\n}\n"],"names":["SMD","id","parentId","table","title","props","indexes","subsets","names","propsDict","relations","types","enums","enumLabels","inflection","underscore","pluralize","map","prop","isEnumProp","includes","replace","reduce","result","name","filter","isRelationProp","fs","undefined","dasherize","toLowerCase","module","registerModulePaths","registerTableSpecs","getSubsetQuery","subsetKey","subset","resolveSubsetQuery","prefix","fields","isAlreadyOuterJoined","subsetGroup","_","groupBy","field","split","rel","Object","keys","r","groupKey","realFields","isVirtualProp","virtualFields","select","concat","virtual","relation","Error","relSMD","SMDManager","get","with","isOneToOneRelationProp","isBelongsToOneRelationProp","relFields","slice","join","length","innerOrOuter","hasJoinColumn","nullable","relSubsetQuery","joinAs","fromTable","joinClause","customJoinClause","custom","from","to","joins","push","as","loaders","convertedLoaders","loader","newAs","manyJoin","oneJoins","isHasManyRelationProp","isManyToManyRelationProp","fromCol","idField","toTable","toCol","joinColumn","joinTable","table1","table2","through","singularize","fieldExprsToPropNodes","fieldExprs","smd","groups","fieldExpr","key","value","elseExpr","group","propName","nodeType","type","children","idProp","flat","getFieldExprs","maxDepth","froms","v","relMd","f","basePath","setModulePath","toUpperCase","typesModulePath","typesFileDistPath","path","Sonamu","apiRootPath","existsSync","importPath","relative","__dirname","then","t","enumsModulePath","enumsFileDistPath","uniqueColumns","uniq","idx","columns","setTableSpec"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from "./syncer";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/syncer/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});_export_star(require("./syncer"),exports);function _export_star(from,to){Object.keys(from).forEach(function(k){if(k!=="default"&&!Object.prototype.hasOwnProperty.call(to,k)){Object.defineProperty(to,k,{enumerable:true,get:function(){return from[k]}})}});return from}
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/syncer/index.ts"],"sourcesContent":["export * from \"./syncer\";\n"],"names":[],"mappings":"2FAAc"}
@@ -0,0 +1,127 @@
1
+ import { EntityNamesRecord } from "../entity/entity-manager";
2
+ import ts from "typescript";
3
+ import { ApiParam, ApiParamType, EntityProp, EntityPropNode } from "../types/types";
4
+ import { ApiDecoratorOptions } from "../api/decorators";
5
+ import { z } from "zod";
6
+ import { TemplateKey, PathAndCode, TemplateOptions, GenerateOptions, RenderingNode } from "../types/types";
7
+ import { Template } from "../templates/base-template";
8
+ type FileType = "model" | "types" | "functions" | "generated" | "entity" | "frame";
9
+ type GlobPattern = {
10
+ [key in FileType]: string;
11
+ };
12
+ type PathAndChecksum = {
13
+ path: string;
14
+ checksum: string;
15
+ };
16
+ export type RenderedTemplate = {
17
+ target: string;
18
+ path: string;
19
+ body: string;
20
+ importKeys: string[];
21
+ customHeaders?: string[];
22
+ preTemplates?: {
23
+ key: TemplateKey;
24
+ options: TemplateOptions[TemplateKey];
25
+ }[];
26
+ };
27
+ export declare class Syncer {
28
+ apis: {
29
+ typeParameters: ApiParamType.TypeParam[];
30
+ parameters: ApiParam[];
31
+ returnType: ApiParamType;
32
+ modelName: string;
33
+ methodName: string;
34
+ path: string;
35
+ options: ApiDecoratorOptions;
36
+ }[];
37
+ types: {
38
+ [typeName: string]: z.ZodObject<any>;
39
+ };
40
+ models: {
41
+ [modelName: string]: unknown;
42
+ };
43
+ isSyncing: boolean;
44
+ checksumPatternGroup: GlobPattern;
45
+ get checksumsPath(): string;
46
+ constructor();
47
+ sync(): Promise<void>;
48
+ doSyncActions(diffFiles: string[], currentChecksums?: PathAndChecksum[]): Promise<{
49
+ diffTypes: string[];
50
+ changedChecksums?: PathAndChecksum[];
51
+ }>;
52
+ syncFromWatcher(diffFiles: string[]): Promise<void>;
53
+ getEntityIdFromPath(filePaths: string[]): string[];
54
+ actionGenerateSchemas(): Promise<string[]>;
55
+ actionGenerateServices(paramsArray: {
56
+ namesRecord: EntityNamesRecord;
57
+ modelTsPath: string;
58
+ }[]): Promise<string[]>;
59
+ actionGenerateHttps(): Promise<string[]>;
60
+ copyFileWithReplaceCoreToShared(fromPath: string, toPath: string): Promise<void>;
61
+ actionSyncFilesToTargets(tsPaths: string[]): Promise<string[]>;
62
+ getCurrentChecksums(): Promise<PathAndChecksum[]>;
63
+ getPreviousChecksums(): Promise<PathAndChecksum[]>;
64
+ saveChecksums(checksums: PathAndChecksum[]): Promise<void>;
65
+ getChecksumOfFile(filePath: string): Promise<string>;
66
+ readApisFromFile(filePath: string): Promise<{
67
+ typeParameters: ApiParamType.TypeParam[];
68
+ parameters: ApiParam[];
69
+ returnType: ApiParamType;
70
+ modelName: string;
71
+ methodName: string;
72
+ path: string;
73
+ options: ApiDecoratorOptions;
74
+ streamOptions?: import("../api/decorators").StreamDecoratorOptions;
75
+ }[]>;
76
+ resolveTypeNode(typeNode: ts.TypeNode): ApiParamType;
77
+ resolveParamDec: (paramDec: {
78
+ name: ts.BindingName;
79
+ type: ts.TypeNode;
80
+ optional?: boolean;
81
+ defaultDef?: string;
82
+ }, index?: number) => ApiParam;
83
+ printNode(node: ts.Node | undefined, sourceFile: ts.SourceFile): string | undefined;
84
+ autoloadApis(): Promise<{
85
+ typeParameters: ApiParamType.TypeParam[];
86
+ parameters: ApiParam[];
87
+ returnType: ApiParamType;
88
+ modelName: string;
89
+ methodName: string;
90
+ path: string;
91
+ options: ApiDecoratorOptions;
92
+ }[]>;
93
+ autoloadModels(): Promise<{
94
+ [modelName: string]: unknown;
95
+ }>;
96
+ autoloadTypes(doRefresh?: boolean): Promise<{
97
+ [typeName: string]: z.ZodObject<any>;
98
+ }>;
99
+ getTemplate(key: TemplateKey): Template;
100
+ renderTemplate<T extends keyof TemplateOptions>(key: T, options: TemplateOptions[T]): Promise<PathAndCode[]>;
101
+ resolveRenderedTemplate(key: TemplateKey, result: RenderedTemplate): Promise<PathAndCode>;
102
+ writeCodeToPath(pathAndCode: PathAndCode): Promise<string[]>;
103
+ generateTemplate(key: TemplateKey, templateOptions: any, _generateOptions?: GenerateOptions): Promise<string[][]>;
104
+ checkExistsGenCode(entityId: string, templateKey: TemplateKey, enumId?: string): Promise<{
105
+ subPath: string;
106
+ fullPath: string;
107
+ isExists: boolean;
108
+ }>;
109
+ checkExists(entityId: string, enums: {
110
+ [name: string]: z.ZodEnum<any>;
111
+ }): Promise<Record<`${TemplateKey}${string}`, boolean>>;
112
+ getZodTypeById(zodTypeId: string): Promise<z.ZodTypeAny>;
113
+ propNodeToZodType(propNode: EntityPropNode): Promise<z.ZodTypeAny>;
114
+ propToZodType(prop: EntityProp): Promise<z.ZodTypeAny>;
115
+ resolveRenderType(key: string, zodType: z.ZodTypeAny): RenderingNode["renderType"];
116
+ zodTypeToRenderingNode(zodType: z.ZodType<any>, baseKey?: string): RenderingNode;
117
+ getColumnsNode(entityId: string, subsetKey: string): Promise<RenderingNode>;
118
+ createEntity(form: Omit<TemplateOptions["entity"], "title"> & {
119
+ title?: string;
120
+ }): Promise<void>;
121
+ delEntity(entityId: string): Promise<{
122
+ delPaths: string[];
123
+ }>;
124
+ syncUI(): void;
125
+ }
126
+ export {};
127
+ //# sourceMappingURL=syncer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"syncer.d.ts","sourceRoot":"","sources":["../../src/syncer/syncer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"Syncer",{enumerable:true,get:function(){return Syncer}});var _path=/*#__PURE__*/_interop_require_wildcard(require("path"));var _utils=require("../utils/utils");var _fs=require("fs");var _promises=require("fs/promises");var _fsutils=require("../utils/fs-utils");var _crypto=/*#__PURE__*/_interop_require_default(require("crypto"));var _fastdeepequal=/*#__PURE__*/_interop_require_default(require("fast-deep-equal"));var _lodash=/*#__PURE__*/_interop_require_wildcard(require("lodash"));var _inflection=/*#__PURE__*/_interop_require_default(require("inflection"));var _entitymanager=require("../entity/entity-manager");var _typescript=/*#__PURE__*/_interop_require_default(require("typescript"));var _types=require("../types/types");var _decorators=require("../api/decorators");var _zod=require("zod");var _chalk=/*#__PURE__*/_interop_require_default(require("chalk"));var _soexceptions=require("../exceptions/so-exceptions");var _lodashable=require("../utils/lodash-able");var _codeconverters=require("../api/code-converters");var _generatedtemplate=require("../templates/generated.template");var _init_typestemplate=require("../templates/init_types.template");var _entitytemplate=require("../templates/entity.template");var _modeltemplate=require("../templates/model.template");var _model_testtemplate=require("../templates/model_test.template");var _servicetemplate=require("../templates/service.template");var _view_formtemplate=require("../templates/view_form.template");var _view_listtemplate=require("../templates/view_list.template");var _prettier=/*#__PURE__*/_interop_require_default(require("prettier"));var _view_id_all_selecttemplate=require("../templates/view_id_all_select.template");var _view_id_async_selecttemplate=require("../templates/view_id_async_select.template");var _view_enums_dropdowntemplate=require("../templates/view_enums_dropdown.template");var _view_enums_selecttemplate=require("../templates/view_enums_select.template");var _view_enums_buttonsettemplate=require("../templates/view_enums_buttonset.template");var _view_search_inputtemplate=require("../templates/view_search_input.template");var _view_list_columnstemplate=require("../templates/view_list_columns.template");var _generated_httptemplate=require("../templates/generated_http.template");var _sonamu=require("../api/sonamu");var _generated_ssotemplate=require("../templates/generated_sso.template");var _promises1=require("timers/promises");var _assert=/*#__PURE__*/_interop_require_default(require("assert"));var _core=/*#__PURE__*/_interop_require_wildcard(require("@swc/core"));var _minimatch=require("minimatch");var _asyncutils=require("../utils/async-utils");function _array_like_to_array(arr,len){if(len==null||len>arr.length)len=arr.length;for(var i=0,arr2=new Array(len);i<len;i++)arr2[i]=arr[i];return arr2}function _array_with_holes(arr){if(Array.isArray(arr))return arr}function _array_without_holes(arr){if(Array.isArray(arr))return _array_like_to_array(arr)}function _async_iterator(iterable){var method,async,sync,retry=2;for("undefined"!=typeof Symbol&&(async=Symbol.asyncIterator,sync=Symbol.iterator);retry--;){if(async&&null!=(method=iterable[async]))return method.call(iterable);if(sync&&null!=(method=iterable[sync]))return new AsyncFromSyncIterator(method.call(iterable));async="@@asyncIterator",sync="@@iterator"}throw new TypeError("Object is not async iterable")}function AsyncFromSyncIterator(s){function AsyncFromSyncIteratorContinuation(r){if(Object(r)!==r)return Promise.reject(new TypeError(r+" is not an object."));var done=r.done;return Promise.resolve(r.value).then(function(value){return{value:value,done:done}})}return AsyncFromSyncIterator=function(s){this.s=s,this.n=s.next},AsyncFromSyncIterator.prototype={s:null,n:null,next:function(){return AsyncFromSyncIteratorContinuation(this.n.apply(this.s,arguments))},return:function(value){var ret=this.s.return;return void 0===ret?Promise.resolve({value:value,done:!0}):AsyncFromSyncIteratorContinuation(ret.apply(this.s,arguments))},throw:function(value){var thr=this.s.return;return void 0===thr?Promise.reject(value):AsyncFromSyncIteratorContinuation(thr.apply(this.s,arguments))}},new AsyncFromSyncIterator(s)}function asyncGeneratorStep(gen,resolve,reject,_next,_throw,key,arg){try{var info=gen[key](arg);var value=info.value}catch(error){reject(error);return}if(info.done){resolve(value)}else{Promise.resolve(value).then(_next,_throw)}}function _async_to_generator(fn){return function(){var self=this,args=arguments;return new Promise(function(resolve,reject){var gen=fn.apply(self,args);function _next(value){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"next",value)}function _throw(err){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"throw",err)}_next(undefined)})}}function _class_call_check(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function")}}function _defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor)}}function _create_class(Constructor,protoProps,staticProps){if(protoProps)_defineProperties(Constructor.prototype,protoProps);if(staticProps)_defineProperties(Constructor,staticProps);return Constructor}function _define_property(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}function _instanceof(left,right){if(right!=null&&typeof Symbol!=="undefined"&&right[Symbol.hasInstance]){return!!right[Symbol.hasInstance](left)}else{return left instanceof right}}function _interop_require_default(obj){return obj&&obj.__esModule?obj:{default:obj}}function _getRequireWildcardCache(nodeInterop){if(typeof WeakMap!=="function")return null;var cacheBabelInterop=new WeakMap;var cacheNodeInterop=new WeakMap;return(_getRequireWildcardCache=function(nodeInterop){return nodeInterop?cacheNodeInterop:cacheBabelInterop})(nodeInterop)}function _interop_require_wildcard(obj,nodeInterop){if(!nodeInterop&&obj&&obj.__esModule){return obj}if(obj===null||typeof obj!=="object"&&typeof obj!=="function"){return{default:obj}}var cache=_getRequireWildcardCache(nodeInterop);if(cache&&cache.has(obj)){return cache.get(obj)}var newObj={__proto__:null};var hasPropertyDescriptor=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var key in obj){if(key!=="default"&&Object.prototype.hasOwnProperty.call(obj,key)){var desc=hasPropertyDescriptor?Object.getOwnPropertyDescriptor(obj,key):null;if(desc&&(desc.get||desc.set)){Object.defineProperty(newObj,key,desc)}else{newObj[key]=obj[key]}}}newObj.default=obj;if(cache){cache.set(obj,newObj)}return newObj}function _iterable_to_array(iter){if(typeof Symbol!=="undefined"&&iter[Symbol.iterator]!=null||iter["@@iterator"]!=null)return Array.from(iter)}function _iterable_to_array_limit(arr,i){var _i=arr==null?null:typeof Symbol!=="undefined"&&arr[Symbol.iterator]||arr["@@iterator"];if(_i==null)return;var _arr=[];var _n=true;var _d=false;var _s,_e;try{for(_i=_i.call(arr);!(_n=(_s=_i.next()).done);_n=true){_arr.push(_s.value);if(i&&_arr.length===i)break}}catch(err){_d=true;_e=err}finally{try{if(!_n&&_i["return"]!=null)_i["return"]()}finally{if(_d)throw _e}}return _arr}function _non_iterable_rest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _non_iterable_spread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _object_spread(target){for(var i=1;i<arguments.length;i++){var source=arguments[i]!=null?arguments[i]:{};var ownKeys=Object.keys(source);if(typeof Object.getOwnPropertySymbols==="function"){ownKeys=ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym){return Object.getOwnPropertyDescriptor(source,sym).enumerable}))}ownKeys.forEach(function(key){_define_property(target,key,source[key])})}return target}function ownKeys(object,enumerableOnly){var keys=Object.keys(object);if(Object.getOwnPropertySymbols){var symbols=Object.getOwnPropertySymbols(object);if(enumerableOnly){symbols=symbols.filter(function(sym){return Object.getOwnPropertyDescriptor(object,sym).enumerable})}keys.push.apply(keys,symbols)}return keys}function _object_spread_props(target,source){source=source!=null?source:{};if(Object.getOwnPropertyDescriptors){Object.defineProperties(target,Object.getOwnPropertyDescriptors(source))}else{ownKeys(Object(source)).forEach(function(key){Object.defineProperty(target,key,Object.getOwnPropertyDescriptor(source,key))})}return target}function _sliced_to_array(arr,i){return _array_with_holes(arr)||_iterable_to_array_limit(arr,i)||_unsupported_iterable_to_array(arr,i)||_non_iterable_rest()}function _to_consumable_array(arr){return _array_without_holes(arr)||_iterable_to_array(arr)||_unsupported_iterable_to_array(arr)||_non_iterable_spread()}function _unsupported_iterable_to_array(o,minLen){if(!o)return;if(typeof o==="string")return _array_like_to_array(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);if(n==="Object"&&o.constructor)n=o.constructor.name;if(n==="Map"||n==="Set")return Array.from(n);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _array_like_to_array(o,minLen)}function _ts_generator(thisArg,body){var f,y,t,_={label:0,sent:function(){if(t[0]&1)throw t[1];return t[1]},trys:[],ops:[]},g=Object.create((typeof Iterator==="function"?Iterator:Object).prototype);return g.next=verb(0),g["throw"]=verb(1),g["return"]=verb(2),typeof Symbol==="function"&&(g[Symbol.iterator]=function(){return this}),g;function verb(n){return function(v){return step([n,v])}}function step(op){if(f)throw new TypeError("Generator is already executing.");while(g&&(g=0,op[0]&&(_=0)),_)try{if(f=1,y&&(t=op[0]&2?y["return"]:op[0]?y["throw"]||((t=y["return"])&&t.call(y),0):y.next)&&!(t=t.call(y,op[1])).done)return t;if(y=0,t)op=[op[0]&2,t.value];switch(op[0]){case 0:case 1:t=op;break;case 4:_.label++;return{value:op[1],done:false};case 5:_.label++;y=op[1];op=[0];continue;case 7:op=_.ops.pop();_.trys.pop();continue;default:if(!(t=_.trys,t=t.length>0&&t[t.length-1])&&(op[0]===6||op[0]===2)){_=0;continue}if(op[0]===3&&(!t||op[1]>t[0]&&op[1]<t[3])){_.label=op[1];break}if(op[0]===6&&_.label<t[1]){_.label=t[1];t=op;break}if(t&&_.label<t[2]){_.label=t[2];_.ops.push(op);break}if(t[2])_.ops.pop();_.trys.pop();continue}op=body.call(thisArg,_)}catch(e){op=[6,e];y=0}finally{f=t=0}if(op[0]&5)throw op[1];return{value:op[0]?op[1]:void 0,done:true}}}var Syncer=/*#__PURE__*/function(){"use strict";function Syncer(){var _this=this;_class_call_check(this,Syncer);_define_property(this,"apis",[]);_define_property(this,"types",{});_define_property(this,"models",{});_define_property(this,"isSyncing",false);_define_property(this,"checksumPatternGroup",{entity:_sonamu.Sonamu.apiRootPath+"/src/application/**/*.entity.json",types:_sonamu.Sonamu.apiRootPath+"/src/application/**/*.types.ts",generated:_sonamu.Sonamu.apiRootPath+"/src/application/sonamu.generated.ts",functions:_sonamu.Sonamu.apiRootPath+"/src/application/**/*.functions.ts",model:_sonamu.Sonamu.apiRootPath+"/dist/application/**/*.model.js",frame:_sonamu.Sonamu.apiRootPath+"/dist/application/**/*.frame.js"});_define_property(this,"resolveParamDec",function(paramDec){var index=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;var name=paramDec.name;var type=_this.resolveTypeNode(paramDec.type);if(name===undefined){console.debug({name:name,type:type,paramDec:paramDec})}var result={name:name.escapedText?name.escapedText.toString():"nonameAt".concat(index),type:type,optional:paramDec.optional===true,defaultDef:paramDec===null||paramDec===void 0?void 0:paramDec.defaultDef};if(_typescript.default.isObjectBindingPattern(name)&&_typescript.default.isTypeReferenceNode(paramDec.type)&&_typescript.default.isIdentifier(paramDec.type.typeName)){result.name=_inflection.default.camelize(paramDec.type.typeName.text,true)}return result})}_create_class(Syncer,[{key:"checksumsPath",get:function get(){return _path.default.join(_sonamu.Sonamu.apiRootPath,"/sonamu.lock")}},{key:"sync",value:function sync(){return _async_to_generator(function(){var _this,targets,currentDirname,currentChecksums,previousChecksums,isSame,msg,margin,abc,onSIGUSR2,diff,diffFiles,changedChecksums;return _ts_generator(this,function(_state){switch(_state.label){case 0:_this=this;targets=_sonamu.Sonamu.config.sync.targets;currentDirname=__dirname.endsWith("/syncer")?__dirname:_path.default.join(__dirname,"./syncer");return[4,Promise.all(targets.map(function(target){return _async_to_generator(function(){var _this,srcCodePath,dstCodePath,srcChecksum,dstChecksum,_tmp;return _ts_generator(this,function(_state){switch(_state.label){case 0:_this=this;srcCodePath=_path.default.join(currentDirname,"../shared/".concat(target,".shared.ts.txt")).replace("/dist/","/src/");return[4,(0,_fsutils.exists)(srcCodePath)];case 1:if(!_state.sent()){return[2]}dstCodePath=_path.default.join(_sonamu.Sonamu.appRootPath,target,"src/services/sonamu.shared.ts");return[4,this.getChecksumOfFile(srcCodePath)];case 2:srcChecksum=_state.sent();return[4,function(){return _async_to_generator(function(){return _ts_generator(this,function(_state){switch(_state.label){case 0:return[4,(0,_fsutils.exists)(dstCodePath)];case 1:if(!_state.sent()){return[2,""]}return[2,this.getChecksumOfFile(dstCodePath)]}})}).call(_this)}()];case 3:dstChecksum=_state.sent();if(srcChecksum===dstChecksum){return[2]}_tmp=[dstCodePath];return[4,(0,_promises.readFile)(srcCodePath)];case 4:return[4,_promises.writeFile.apply(void 0,_tmp.concat([_state.sent()]))];case 5:_state.sent();console.log(_chalk.default.blue("shared.ts is synced"));return[2]}})}).call(_this)}))];case 1:_state.sent();return[4,this.getCurrentChecksums()];case 2:currentChecksums=_state.sent();return[4,this.getPreviousChecksums()];case 3:previousChecksums=_state.sent();isSame=(0,_fastdeepequal.default)(currentChecksums,previousChecksums);if(isSame){msg="All files are synced!";margin=(process.stdout.columns-msg.length)/2;console.log(_chalk.default.black.bgGreen(" ".repeat(margin)+msg+" ".repeat(margin)));return[2]}abc=new AbortController;this.isSyncing=true;onSIGUSR2=function(){return _async_to_generator(function(){var e;return _ts_generator(this,function(_state){switch(_state.label){case 0:if(this.isSyncing===false){process.exit(0)}console.log(_chalk.default.magentaBright("wait for syncing done...."));_state.label=1;case 1:_state.trys.push([1,3,,4]);return[4,(0,_promises1.setTimeout)(2e4,"waiting-sync",{signal:abc.signal})];case 2:_state.sent();return[3,4];case 3:e=_state.sent();return[3,4];case 4:console.log(_chalk.default.magentaBright("Syncing DONE!"));process.exit(0);return[2]}})}).call(_this)};process.on("SIGUSR2",onSIGUSR2);diff=_lodash.default.differenceWith(currentChecksums,previousChecksums,_lodash.default.isEqual);diffFiles=diff.map(function(r){return r.path});console.log("Changed Files: ",diffFiles);return[4,this.doSyncActions(diffFiles,currentChecksums)];case 4:changedChecksums=_state.sent().changedChecksums;currentChecksums=changedChecksums!==null&&changedChecksums!==void 0?changedChecksums:currentChecksums;return[4,this.saveChecksums(currentChecksums)];case 5:_state.sent();this.isSyncing=false;abc.abort();process.off("SIGUSR2",onSIGUSR2);return[2]}})}).call(this)}},{key:"doSyncActions",value:function doSyncActions(diffFiles,currentChecksums){return _async_to_generator(function(){var _this,diffGroups,diffTypes,_diffGroups_entity,entityId,entity,typeFilePath,_tmp,_diffGroups_generated,_diffGroups_types,_diffGroups_functions,_diffGroups_generated1,tsPaths,_diffGroups_model,_diffGroups_frame,mergedGroup,params;return _ts_generator(this,function(_state){switch(_state.label){case 0:_this=this;diffGroups=_lodash.default.groupBy(diffFiles,function(r){var matched=r.match(/\.(model|types|functions|entity|generated|frame)\.[tj]s/);var _matched_;return(_matched_=matched===null||matched===void 0?void 0:matched[1])!==null&&_matched_!==void 0?_matched_:"unknown"});diffTypes=Object.keys(diffGroups);if(!(diffTypes.includes("entity")||diffTypes.includes("types")))return[3,8];return[4,_entitymanager.EntityManager.reload()];case 1:_state.sent();return[4,this.actionGenerateSchemas()];case 2:_state.sent();entityId=this.getEntityIdFromPath(_to_consumable_array((_diffGroups_entity=diffGroups["entity"])!==null&&_diffGroups_entity!==void 0?_diffGroups_entity:[]))[0];if(!entityId)return[3,6];entity=_entitymanager.EntityManager.get(entityId);typeFilePath=_path.default.join(_sonamu.Sonamu.apiRootPath,"src/application/".concat(entity.names.fs,"/").concat(entity.names.fs,".types.ts"));_tmp=entity.parentId===undefined;if(!_tmp)return[3,4];return[4,(0,_fsutils.exists)(typeFilePath)];case 3:_tmp=!_state.sent();_state.label=4;case 4:if(!_tmp)return[3,6];return[4,this.generateTemplate("init_types",{entityId:entityId})];case 5:_state.sent();_state.label=6;case 6:diffGroups["generated"]=_lodash.default.uniq(_to_consumable_array((_diffGroups_generated=diffGroups["generated"])!==null&&_diffGroups_generated!==void 0?_diffGroups_generated:[]).concat(["/src/application/sonamu.generated.ts"]));diffTypes.push("generated");if(!currentChecksums)return[3,8];return[4,this.getCurrentChecksums()];case 7:currentChecksums=_state.sent();_state.label=8;case 8:if(!(diffTypes.includes("types")||diffTypes.includes("functions")||diffTypes.includes("generated")))return[3,10];tsPaths=_lodash.default.uniq(_to_consumable_array((_diffGroups_types=diffGroups["types"])!==null&&_diffGroups_types!==void 0?_diffGroups_types:[]).concat(_to_consumable_array((_diffGroups_functions=diffGroups["functions"])!==null&&_diffGroups_functions!==void 0?_diffGroups_functions:[]),_to_consumable_array((_diffGroups_generated1=diffGroups["generated"])!==null&&_diffGroups_generated1!==void 0?_diffGroups_generated1:[])).map(function(p){return p.replace("/dist/","/src/").replace(".js",".ts")}));return[4,this.actionSyncFilesToTargets(tsPaths)];case 9:_state.sent();_state.label=10;case 10:if(!(diffTypes.includes("model")||diffTypes.includes("frame")))return[3,15];mergedGroup=_to_consumable_array((_diffGroups_model=diffGroups["model"])!==null&&_diffGroups_model!==void 0?_diffGroups_model:[]).concat(_to_consumable_array((_diffGroups_frame=diffGroups["frame"])!==null&&_diffGroups_frame!==void 0?_diffGroups_frame:[]));return[4,this.autoloadModels()];case 11:_state.sent();return[4,this.autoloadApis()];case 12:_state.sent();params=mergedGroup.map(function(modelPath){if(modelPath.endsWith(".model.js")){var entityId=_this.getEntityIdFromPath([modelPath])[0];(0,_assert.default)(entityId);return{namesRecord:_entitymanager.EntityManager.getNamesFromId(entityId),modelTsPath:_path.default.join(_sonamu.Sonamu.apiRootPath,modelPath.replace("/dist/","/src/").replace(".model.js",".model.ts"))}}if(modelPath.endsWith("frame.js")){var _modelPath_match;var _ref=_sliced_to_array((_modelPath_match=modelPath.match(/.+\/(.+)\.frame.js$/))!==null&&_modelPath_match!==void 0?_modelPath_match:[],2),frameName=_ref[1];(0,_assert.default)(frameName);return{namesRecord:_entitymanager.EntityManager.getNamesFromId(frameName),modelTsPath:_path.default.join(_sonamu.Sonamu.apiRootPath,modelPath.replace("/dist/","/src/").replace(".frame.js",".frame.ts"))}}throw new Error("not reachable")});return[4,this.actionGenerateServices(params)];case 13:_state.sent();return[4,this.actionGenerateHttps()];case 14:_state.sent();_state.label=15;case 15:return[2,{diffTypes:diffTypes,changedChecksums:currentChecksums}]}})}).call(this)}},{key:"syncFromWatcher",value:function syncFromWatcher(diffFiles){return _async_to_generator(function(){var _this,tsFiles,jsonFiles,chunks,transpiledFilePaths,_iteratorNormalCompletion,_didIteratorError,_iteratorError,_iterator,_step,_$chunk,_transpiledFilePaths,_transpiledFilePaths1,err,allFilePaths,targetFilePaths;function clearModuleAndDependents(filePath){var resolved=require.resolve(filePath);var toDelete=new Set([resolved]);Object.keys(require.cache).forEach(function(key){var _mod_children;var mod=require.cache[key];if(mod===null||mod===void 0?void 0:(_mod_children=mod.children)===null||_mod_children===void 0?void 0:_mod_children.some(function(child){return child.id===resolved})){toDelete.add(key)}});toDelete.forEach(function(key){if(key.includes("dist/index.js")){process.kill(process.pid,"SIGUSR2")}delete require.cache[key]})}return _ts_generator(this,function(_state){switch(_state.label){case 0:_this=this;tsFiles=diffFiles.filter(function(file){return file.endsWith(".ts")});jsonFiles=diffFiles.filter(function(file){return file.endsWith(".json")});chunks=(0,_lodash.chunk)(tsFiles,5);transpiledFilePaths=[];_iteratorNormalCompletion=true,_didIteratorError=false,_iteratorError=undefined;_state.label=1;case 1:_state.trys.push([1,6,7,8]);_iterator=chunks[Symbol.iterator]();_state.label=2;case 2:if(!!(_iteratorNormalCompletion=(_step=_iterator.next()).done))return[3,5];_$chunk=_step.value;return[4,Promise.all(_$chunk.map(function(diffFile){return _async_to_generator(function(){var _ref,code,map,jsPath,mapPath,sourceMapComment;return _ts_generator(this,function(_state){switch(_state.label){case 0:return[4,_core.transformFile(diffFile,{module:{type:"commonjs"},jsc:{parser:{syntax:"typescript",decorators:true},target:"es5"},sourceMaps:true})];case 1:_ref=_state.sent(),code=_ref.code,map=_ref.map;jsPath=diffFile.replace("/src/","/dist/").replace(".ts",".js");return[4,(0,_promises.mkdir)(_path.default.dirname(jsPath),{recursive:true})];case 2:_state.sent();return[4,(0,_promises.writeFile)(jsPath,code)];case 3:_state.sent();if(!map)return[3,7];mapPath=jsPath+".map";return[4,(0,_promises.mkdir)(_path.default.dirname(mapPath),{recursive:true})];case 4:_state.sent();return[4,(0,_promises.writeFile)(mapPath,map)];case 5:_state.sent();sourceMapComment="\n//# sourceMappingURL="+_path.default.basename(mapPath);return[4,(0,_promises.writeFile)(jsPath,sourceMapComment,{flag:"a"})];case 6:_state.sent();_state.label=7;case 7:console.log(_chalk.default.bold("Transpiled: ")+_chalk.default.blue("".concat(jsPath.replace(_sonamu.Sonamu.apiRootPath,"api"))));return[2,jsPath]}})})()}))];case 3:_transpiledFilePaths1=_state.sent();(_transpiledFilePaths=transpiledFilePaths).push.apply(_transpiledFilePaths,_to_consumable_array(_transpiledFilePaths1));_state.label=4;case 4:_iteratorNormalCompletion=true;return[3,2];case 5:return[3,8];case 6:err=_state.sent();_didIteratorError=true;_iteratorError=err;return[3,8];case 7:try{if(!_iteratorNormalCompletion&&_iterator.return!=null){_iterator.return()}}finally{if(_didIteratorError){throw _iteratorError}}return[7];case 8:transpiledFilePaths.map(function(filePath){clearModuleAndDependents(filePath)});allFilePaths=_to_consumable_array(tsFiles).concat(_to_consumable_array(transpiledFilePaths),_to_consumable_array(jsonFiles));targetFilePaths=allFilePaths.filter(function(filePath){return Object.values(_this.checksumPatternGroup).some(function(pattern){return(0,_minimatch.minimatch)(filePath,pattern)})}).map(function(filePath){return"/"+_path.default.relative(_sonamu.Sonamu.apiRootPath,filePath)});return[4,this.doSyncActions(targetFilePaths)];case 9:_state.sent();this.apis=[];this.types={};this.models={};return[4,this.autoloadTypes()];case 10:_state.sent();return[4,this.autoloadModels()];case 11:_state.sent();return[4,this.autoloadApis()];case 12:_state.sent();this.syncUI();return[2]}})}).call(this)}},{key:"getEntityIdFromPath",value:function getEntityIdFromPath(filePaths){return _lodash.default.uniq(filePaths.map(function(p){var matched=p.match(/application\/(.+)\//);(0,_assert.default)(matched&&matched[1]);return _inflection.default.camelize(matched[1].replace(/\-/g,"_"))}))}},{key:"actionGenerateSchemas",value:function actionGenerateSchemas(){return _async_to_generator(function(){return _ts_generator(this,function(_state){switch(_state.label){case 0:return[4,Promise.all([this.generateTemplate("generated_sso",{},{overwrite:true}),this.generateTemplate("generated",{},{overwrite:true})])];case 1:return[2,_state.sent().flat().flat()]}})}).call(this)}},{key:"actionGenerateServices",value:function actionGenerateServices(paramsArray){return _async_to_generator(function(){var _this;return _ts_generator(this,function(_state){switch(_state.label){case 0:_this=this;return[4,Promise.all(paramsArray.map(function(params){return _async_to_generator(function(){return _ts_generator(this,function(_state){return[2,this.generateTemplate("service",params,{overwrite:true})]})}).call(_this)}))];case 1:return[2,_state.sent().flat().flat()]}})}).call(this)}},{key:"actionGenerateHttps",value:function actionGenerateHttps(){return _async_to_generator(function(){var _ref,res;return _ts_generator(this,function(_state){switch(_state.label){case 0:return[4,this.generateTemplate("generated_http",{},{overwrite:true})];case 1:_ref=_sliced_to_array.apply(void 0,[_state.sent(),1]),res=_ref[0];(0,_assert.default)(res);return[2,res]}})}).call(this)}},{key:"copyFileWithReplaceCoreToShared",value:function copyFileWithReplaceCoreToShared(fromPath,toPath){return _async_to_generator(function(){var oldFileContent,newFileContent;return _ts_generator(this,function(_state){switch(_state.label){case 0:return[4,(0,_fsutils.exists)(fromPath)];case 1:if(!_state.sent()){return[2]}return[4,(0,_promises.readFile)(fromPath)];case 2:oldFileContent=_state.sent().toString();newFileContent=function(){var nfc=oldFileContent.replace(/from "sonamu"/g,'from "src/services/sonamu.shared"');if(toPath.includes("/web/")){return nfc.replace(/from "lodash";/g,'from "lodash-es";')}else{return nfc}}();return[2,(0,_promises.writeFile)(toPath,newFileContent)]}})})()}},{key:"actionSyncFilesToTargets",value:function actionSyncFilesToTargets(tsPaths){return _async_to_generator(function(){var _this,targets,_Sonamu_config_api,apiDir;return _ts_generator(this,function(_state){switch(_state.label){case 0:_this=this;targets=_sonamu.Sonamu.config.sync.targets;_Sonamu_config_api=_sonamu.Sonamu.config.api,apiDir=_Sonamu_config_api.dir;return[4,Promise.all(targets.map(function(target){return _async_to_generator(function(){var _this;return _ts_generator(this,function(_state){_this=this;return[2,Promise.all(tsPaths.map(function(src){return _async_to_generator(function(){var realSrc,dst,dir;return _ts_generator(this,function(_state){switch(_state.label){case 0:realSrc=_sonamu.Sonamu.apiRootPath+src;dst=realSrc.replace("/".concat(apiDir,"/"),"/".concat(target,"/")).replace("/application/","/services/");dir=(0,_path.dirname)(dst);return[4,(0,_fsutils.exists)(dir)];case 1:if(!!_state.sent())return[3,3];return[4,(0,_promises.mkdir)(dir,{recursive:true})];case 2:_state.sent();_state.label=3;case 3:console.log(_chalk.default.bold("Copied: ")+_chalk.default.blue("Copied: ".concat(dst.replace(_sonamu.Sonamu.appRootPath+"/",""))));return[4,this.copyFileWithReplaceCoreToShared(realSrc,dst)];case 4:_state.sent();return[2,dst]}})}).call(_this)}))]})}).call(_this)}))];case 1:return[2,_state.sent().flat()]}})}).call(this)}},{key:"getCurrentChecksums",value:function getCurrentChecksums(){return _async_to_generator(function(){var _this,filePaths,fileChecksums;return _ts_generator(this,function(_state){switch(_state.label){case 0:_this=this;return[4,Promise.all(Object.entries(this.checksumPatternGroup).map(function(param){var _param=_sliced_to_array(param,2),_fileType=_param[0],pattern=_param[1];return _async_to_generator(function(){return _ts_generator(this,function(_state){return[2,(0,_utils.globAsync)(pattern)]})})()}))];case 1:filePaths=_state.sent().flat().sort();return[4,Promise.all(filePaths.map(function(filePath){return _async_to_generator(function(){var _tmp;return _ts_generator(this,function(_state){switch(_state.label){case 0:_tmp={path:filePath.substring(_sonamu.Sonamu.apiRootPath.length)};return[4,this.getChecksumOfFile(filePath)];case 1:return[2,(_tmp.checksum=_state.sent(),_tmp)]}})}).call(_this)}))];case 2:fileChecksums=_state.sent();return[2,fileChecksums]}})}).call(this)}},{key:"getPreviousChecksums",value:function getPreviousChecksums(){return _async_to_generator(function(){var previousChecksums,_;return _ts_generator(this,function(_state){switch(_state.label){case 0:return[4,(0,_fsutils.exists)(this.checksumsPath)];case 1:if(!_state.sent()){return[2,[]]}_=JSON.parse;return[4,(0,_promises.readFile)(this.checksumsPath,"utf-8")];case 2:previousChecksums=_.apply(JSON,[_state.sent()]);return[2,previousChecksums]}})}).call(this)}},{key:"saveChecksums",value:function saveChecksums(checksums){return _async_to_generator(function(){return _ts_generator(this,function(_state){switch(_state.label){case 0:return[4,(0,_promises.writeFile)(this.checksumsPath,JSON.stringify(checksums,null,2),"utf-8")];case 1:_state.sent();console.log("checksum saved",this.checksumsPath);return[2]}})}).call(this)}},{key:"getChecksumOfFile",value:function getChecksumOfFile(filePath){return _async_to_generator(function(){return _ts_generator(this,function(_state){return[2,new Promise(function(resolve,reject){var hash=_crypto.default.createHash("sha1");var input=(0,_fs.createReadStream)(filePath);input.on("error",reject);input.on("data",function(chunk){hash.update(chunk)});input.on("close",function(){resolve(hash.digest("hex"))})})]})})()}},{key:"readApisFromFile",value:function readApisFromFile(filePath){return _async_to_generator(function(){var _this,sourceFile,_,_tmp,methods,modelName,methodName,visitor,currentModelApis,extendedApis;return _ts_generator(this,function(_state){switch(_state.label){case 0:_this=this;_=_typescript.default.createSourceFile;_tmp=[filePath];return[4,(0,_promises.readFile)(filePath)];case 1:sourceFile=_.apply(_typescript.default,_tmp.concat([_state.sent().toString(),_typescript.default.ScriptTarget.Latest]));methods=[];modelName="UnknownModel";methodName="unknownMethod";visitor=function(node){if(_typescript.default.isClassDeclaration(node)){if(node.name&&_typescript.default.isIdentifier(node.name)){modelName=node.name.escapedText.toString().replace(/Class$/,"")}}if(_typescript.default.isMethodDeclaration(node)){if(_typescript.default.isIdentifier(node.name)){methodName=node.name.escapedText.toString()}var _node_typeParameters;var typeParameters=((_node_typeParameters=node.typeParameters)!==null&&_node_typeParameters!==void 0?_node_typeParameters:[]).map(function(typeParam){var tp=typeParam;return{t:"type-param",id:tp.name.escapedText.toString(),constraint:tp.constraint?_this.resolveTypeNode(tp.constraint):undefined}});var parameters=node.parameters.map(function(paramDec,index){var defaultDef=_this.printNode(paramDec.initializer,sourceFile);return _this.resolveParamDec({name:paramDec.name,type:paramDec.type,optional:paramDec.questionToken!==undefined||paramDec.initializer!==undefined,defaultDef:defaultDef},index)});if(node.type===undefined){throw new Error("리턴 타입이 기재되지 않은 메소드 ".concat(modelName,".").concat(methodName))}var returnType=_this.resolveTypeNode(node.type);methods.push({modelName:modelName,methodName:methodName,typeParameters:typeParameters,parameters:parameters,returnType:returnType})}_typescript.default.forEachChild(node,visitor)};visitor(sourceFile);if(methods.length===0){return[2,[]]}currentModelApis=_decorators.registeredApis.filter(function(api){return methods.find(function(method){return method.modelName===api.modelName&&method.methodName===api.methodName})});if(currentModelApis.length===0){throw new Error("현재 파일에 사전 등록된 API가 없습니다. ".concat(filePath))}extendedApis=currentModelApis.map(function(api){var foundMethod=methods.find(function(method){return method.modelName===api.modelName&&method.methodName===api.methodName});return _object_spread_props(_object_spread({},api),{typeParameters:foundMethod.typeParameters,parameters:foundMethod.parameters,returnType:foundMethod.returnType})});return[2,extendedApis]}})}).call(this)}},{key:"resolveTypeNode",value:function resolveTypeNode(typeNode){var _this=this;switch(typeNode===null||typeNode===void 0?void 0:typeNode.kind){case _typescript.default.SyntaxKind.AnyKeyword:return"any";case _typescript.default.SyntaxKind.UnknownKeyword:return"unknown";case _typescript.default.SyntaxKind.StringKeyword:return"string";case _typescript.default.SyntaxKind.NumberKeyword:return"number";case _typescript.default.SyntaxKind.BooleanKeyword:return"boolean";case _typescript.default.SyntaxKind.UndefinedKeyword:return"undefined";case _typescript.default.SyntaxKind.NullKeyword:return"null";case _typescript.default.SyntaxKind.VoidKeyword:return"void";case _typescript.default.SyntaxKind.LiteralType:var literal=typeNode.literal;if(_typescript.default.isStringLiteral(literal)){return{t:"string-literal",value:literal.text}}else if(_typescript.default.isNumericLiteral(literal)){return{t:"numeric-literal",value:Number(literal.text)}}else{if(literal.kind===_typescript.default.SyntaxKind.NullKeyword){return"null"}else if(literal.kind===_typescript.default.SyntaxKind.UndefinedKeyword){return"undefined"}else if(literal.kind===_typescript.default.SyntaxKind.TrueKeyword){return"true"}else if(literal.kind===_typescript.default.SyntaxKind.FalseKeyword){return"false"}throw new Error("알 수 없는 리터럴")}case _typescript.default.SyntaxKind.ArrayType:var arrNode=typeNode;return{t:"array",elementsType:this.resolveTypeNode(arrNode.elementType)};case _typescript.default.SyntaxKind.TypeLiteral:var literalNode=typeNode;return{t:"object",props:literalNode.members.map(function(member){if(_typescript.default.isIndexSignatureDeclaration(member)){(0,_assert.default)(member.parameters[0]);var res=_this.resolveParamDec({name:member.parameters[0].name,type:member.parameters[0].type});return _this.resolveParamDec({name:{escapedText:"[".concat(res.name).concat(res.optional?"?":"",": ").concat(res.type,"]")},type:member.type})}else{return _this.resolveParamDec({name:member.name,type:member.type,optional:member.questionToken!==undefined})}})};case _typescript.default.SyntaxKind.TypeReference:var _typeNode_typeArguments;return{t:"ref",id:typeNode.typeName.escapedText.toString(),args:(_typeNode_typeArguments=typeNode.typeArguments)===null||_typeNode_typeArguments===void 0?void 0:_typeNode_typeArguments.map(function(typeArg){return _this.resolveTypeNode(typeArg)})};case _typescript.default.SyntaxKind.UnionType:return{t:"union",types:typeNode.types.map(function(type){return _this.resolveTypeNode(type)})};case _typescript.default.SyntaxKind.IntersectionType:return{t:"intersection",types:typeNode.types.map(function(type){return _this.resolveTypeNode(type)})};case _typescript.default.SyntaxKind.IndexedAccessType:return{t:"indexed-access",object:this.resolveTypeNode(typeNode.objectType),index:this.resolveTypeNode(typeNode.indexType)};case _typescript.default.SyntaxKind.TupleType:if(_typescript.default.isTupleTypeNode(typeNode)){return{t:"tuple-type",elements:typeNode.elements.map(function(elem){return _this.resolveTypeNode(elem)})}}break;case undefined:throw new Error("typeNode undefined")}console.debug(typeNode);throw new Error("알 수 없는 SyntaxKind ".concat(typeNode.kind))}},{key:"printNode",value:function printNode(node,sourceFile){if(node===undefined){return undefined}var printer=_typescript.default.createPrinter({newLine:_typescript.default.NewLineKind.LineFeed});return printer.printNode(_typescript.default.EmitHint.Unspecified,node,sourceFile)}},{key:"autoloadApis",value:function autoloadApis(){return _async_to_generator(function(){var _this,pathPattern,filePaths,result;return _ts_generator(this,function(_state){switch(_state.label){case 0:_this=this;pathPattern=_path.default.join(_sonamu.Sonamu.apiRootPath,"/src/application/**/*.{model,frame}.ts");return[4,(0,_utils.globAsync)(pathPattern)];case 1:filePaths=_state.sent();return[4,Promise.all(filePaths.map(function(filePath){return _this.readApisFromFile(filePath)}))];case 2:result=_state.sent();this.apis=result.flat();return[2,this.apis]}})}).call(this)}},{key:"autoloadModels",value:function autoloadModels(){return _async_to_generator(function(){var pathPattern,filePaths,modules,functions;return _ts_generator(this,function(_state){switch(_state.label){case 0:pathPattern=_path.default.join(_sonamu.Sonamu.apiRootPath,"dist/application/**/*.{model,frame}.js");return[4,(0,_utils.globAsync)(pathPattern)];case 1:return[4,_asyncutils.filterAsync.apply(void 0,[_state.sent(),function(path){return _async_to_generator(function(){var srcPath;return _ts_generator(this,function(_state){switch(_state.label){case 0:srcPath=path.replace("/dist/","/src/").replace(".js",".ts");return[4,(0,_fsutils.exists)(srcPath)];case 1:return[2,_state.sent()]}})})()}])];case 2:filePaths=_state.sent();return[4,(0,_utils.importMultiple)(filePaths)];case 3:modules=_state.sent();functions=modules.map(function(param){var imported=param.imported;return Object.entries(imported)}).flat();this.models=Object.fromEntries(functions.filter(function(param){var _param=_sliced_to_array(param,1),name=_param[0];return name.endsWith("Model")||name.endsWith("Frame")}));return[2,this.models]}})}).call(this)}},{key:"autoloadTypes",value:function autoloadTypes(){var doRefresh=arguments.length>0&&arguments[0]!==void 0?arguments[0]:false;return _async_to_generator(function(){var pathPatterns,filePaths,modules,functions;return _ts_generator(this,function(_state){switch(_state.label){case 0:if(!doRefresh&&Object.keys(this.types).length>0){return[2,this.types]}pathPatterns=[_path.default.join(_sonamu.Sonamu.apiRootPath,"/dist/application/**/*.types.js"),_path.default.join(_sonamu.Sonamu.apiRootPath,"/dist/application/**/*.generated.js")];return[4,(0,_asyncutils.mapAsync)(pathPatterns,_utils.globAsync)];case 1:return[4,_asyncutils.filterAsync.apply(void 0,[_state.sent().flat(),function(path){return _async_to_generator(function(){var srcPath;return _ts_generator(this,function(_state){switch(_state.label){case 0:srcPath=path.replace("/dist/","/src/").replace(".js",".ts");return[4,(0,_fsutils.exists)(srcPath)];case 1:return[2,_state.sent()]}})})()}])];case 2:filePaths=_state.sent();return[4,(0,_utils.importMultiple)(filePaths,doRefresh)];case 3:modules=_state.sent();functions=modules.map(function(param){var imported=param.imported;return Object.entries(imported)}).flat();this.types=Object.fromEntries(functions.filter(function(param){var _param=_sliced_to_array(param,2),f=_param[1];return _instanceof(f,_zod.z.ZodType)}));return[2,this.types]}})}).call(this)}},{key:"getTemplate",value:function getTemplate(key){if(key==="entity"){return new _entitytemplate.Template__entity}else if(key==="init_types"){return new _init_typestemplate.Template__init_types}else if(key==="generated"){return new _generatedtemplate.Template__generated}else if(key==="generated_sso"){return new _generated_ssotemplate.Template__generated_sso}else if(key==="generated_http"){return new _generated_httptemplate.Template__generated_http}else if(key==="model"){return new _modeltemplate.Template__model}else if(key==="model_test"){return new _model_testtemplate.Template__model_test}else if(key==="service"){return new _servicetemplate.Template__service}else if(key==="view_list"){return new _view_listtemplate.Template__view_list}else if(key==="view_list_columns"){return new _view_list_columnstemplate.Template__view_list_columns}else if(key==="view_search_input"){return new _view_search_inputtemplate.Template__view_search_input}else if(key==="view_form"){return new _view_formtemplate.Template__view_form}else if(key==="view_id_all_select"){return new _view_id_all_selecttemplate.Template__view_id_all_select}else if(key==="view_id_async_select"){return new _view_id_async_selecttemplate.Template__view_id_async_select}else if(key==="view_enums_select"){return new _view_enums_selecttemplate.Template__view_enums_select}else if(key==="view_enums_dropdown"){return new _view_enums_dropdowntemplate.Template__view_enums_dropdown}else if(key==="view_enums_buttonset"){return new _view_enums_buttonsettemplate.Template__view_enums_buttonset}else{throw new _soexceptions.BadRequestException("잘못된 템플릿 키 ".concat(key))}}},{key:"renderTemplate",value:function renderTemplate(key,options){return _async_to_generator(function(){var _this,_template,template,extra,modelTsPath,entityId,columnsNode,listParamsZodType,listParamsNode,saveParamsZodType,saveParamsNode,rendered,resolved,preTemplateResolved;return _ts_generator(this,function(_state){switch(_state.label){case 0:_this=this;template=this.getTemplate(key);extra=[];if(!(key==="service"))return[3,2];modelTsPath=options.modelTsPath;return[4,this.readApisFromFile(modelTsPath)];case 1:extra=[_state.sent()];return[3,7];case 2:if(!["model","view_list","view_form"].includes(key))return[3,7];entityId=options.entityId;if(!(key==="view_list"||key==="model"))return[3,5];return[4,this.getColumnsNode(entityId,"A")];case 3:columnsNode=_state.sent();return[4,this.getZodTypeById("".concat(entityId,"ListParams"))];case 4:listParamsZodType=_state.sent();listParamsNode=this.zodTypeToRenderingNode(listParamsZodType);extra=[columnsNode,listParamsNode];return[3,7];case 5:if(!(key==="view_form"))return[3,7];return[4,this.getZodTypeById("".concat(entityId,"SaveParams"))];case 6:saveParamsZodType=_state.sent();saveParamsNode=this.zodTypeToRenderingNode(saveParamsZodType);extra=[saveParamsNode];_state.label=7;case 7:return[4,(_template=template).render.apply(_template,[options].concat(_to_consumable_array(extra)))];case 8:rendered=_state.sent();return[4,this.resolveRenderedTemplate(key,rendered)];case 9:resolved=_state.sent();preTemplateResolved=[];if(!rendered.preTemplates)return[3,11];return[4,Promise.all(rendered.preTemplates.map(function(param){var _$key=param.key,_$options=param.options;return _this.renderTemplate(_$key,_$options)}))];case 10:preTemplateResolved=_state.sent().flat();_state.label=11;case 11:return[2,[resolved].concat(_to_consumable_array(preTemplateResolved))]}})}).call(this)}},{key:"resolveRenderedTemplate",value:function resolveRenderedTemplate(key,result){return _async_to_generator(function(){var target,filePath,body,importKeys,customHeaders,importDefs,header,formatted;return _ts_generator(this,function(_state){switch(_state.label){case 0:target=result.target,filePath=result.path,body=result.body,importKeys=result.importKeys,customHeaders=result.customHeaders;importDefs=importKeys.reduce(function(r,importKey){var modulePath=_entitymanager.EntityManager.getModulePath(importKey);var importPath=modulePath;if(modulePath.includes("/")||modulePath.includes(".")){importPath=(0,_lodashable.wrapIf)(_path.default.relative(_path.default.dirname(filePath),modulePath),function(p){return[p.startsWith(".")===false,"./"+p]})}var existsOne=r.find(function(importDef){return importDef.from===importPath});if(existsOne){existsOne.keys=_lodash.default.uniq(existsOne.keys.concat(importKey))}else{r.push({keys:[importKey],from:importPath})}return r},[]).filter(function(importDef){return filePath.endsWith(importDef.from.replace("./","")+".ts")===false});header=_to_consumable_array(customHeaders!==null&&customHeaders!==void 0?customHeaders:[]).concat(_to_consumable_array(importDefs.map(function(importDef){return"import { ".concat(importDef.keys.join(", ")," } from '").concat(importDef.from,"'")}))).join("\n");return[4,function(){return _async_to_generator(function(){return _ts_generator(this,function(_state){if(key==="generated_http"){return[2,[header,body].join("\n\n")]}else{return[2,_prettier.default.format([header,body].join("\n\n"),{parser:key==="entity"?"json":"typescript"})]}return[2]})})()}()];case 1:formatted=_state.sent();return[2,{path:target+"/"+filePath,code:formatted}]}})})()}},{key:"writeCodeToPath",value:function writeCodeToPath(pathAndCode){return _async_to_generator(function(){var targets,appRootPath,filePath,dstFilePaths;return _ts_generator(this,function(_state){switch(_state.label){case 0:targets=_sonamu.Sonamu.config.sync.targets;appRootPath=_sonamu.Sonamu.appRootPath;filePath="".concat(_sonamu.Sonamu.appRootPath,"/").concat(pathAndCode.path);dstFilePaths=_lodash.default.uniq(targets.map(function(target){return filePath.replace("/:target/","/".concat(target,"/"))}));return[4,Promise.all(dstFilePaths.map(function(dstFilePath){return _async_to_generator(function(){var dir;return _ts_generator(this,function(_state){switch(_state.label){case 0:dir=_path.default.dirname(dstFilePath);return[4,(0,_fsutils.exists)(dir)];case 1:if(!!_state.sent())return[3,3];return[4,(0,_promises.mkdir)(dir,{recursive:true})];case 2:_state.sent();_state.label=3;case 3:return[4,(0,_promises.writeFile)(dstFilePath,pathAndCode.code)];case 4:_state.sent();console.log(_chalk.default.bold("Generated: ")+_chalk.default.blue("".concat(dstFilePath.replace(appRootPath+"/",""))));return[2,dstFilePath]}})})()}))];case 1:return[2,_state.sent()]}})})()}},{key:"generateTemplate",value:function generateTemplate(key,templateOptions,_generateOptions){return _async_to_generator(function(){var _this,generateOptions,keys,pathAndCodes,filteredPathAndCodes;return _ts_generator(this,function(_state){switch(_state.label){case 0:_this=this;generateOptions=_object_spread({overwrite:false},_generateOptions);keys=[key];return[4,Promise.all(keys.map(function(key){return _async_to_generator(function(){return _ts_generator(this,function(_state){switch(_state.label){case 0:return[4,this.renderTemplate(key,templateOptions)];case 1:return[2,_state.sent()]}})}).call(_this)}))];case 1:pathAndCodes=_state.sent().flat();return[4,function(){return _async_to_generator(function(){return _ts_generator(this,function(_state){switch(_state.label){case 0:if(!(generateOptions.overwrite===true))return[3,1];return[2,pathAndCodes];case 1:return[4,(0,_asyncutils.filterAsync)(pathAndCodes,function(pathAndCode){return _async_to_generator(function(){var targets,filePath,dstFilePaths;return _ts_generator(this,function(_state){switch(_state.label){case 0:targets=_sonamu.Sonamu.config.sync.targets;filePath="".concat(_sonamu.Sonamu.appRootPath,"/").concat(pathAndCode.path);dstFilePaths=targets.map(function(target){return filePath.replace("/:target/","/".concat(target,"/"))});return[4,(0,_asyncutils.everyAsync)(dstFilePaths,function(dstPath){return _async_to_generator(function(){return _ts_generator(this,function(_state){switch(_state.label){case 0:return[4,(0,_fsutils.exists)(dstPath)];case 1:return[2,!_state.sent()]}})})()})];case 1:return[2,_state.sent()]}})})()})];case 2:return[2,_state.sent()];case 3:return[2]}})})()}()];case 2:filteredPathAndCodes=_state.sent();if(filteredPathAndCodes.length===0){throw new _soexceptions.AlreadyProcessedException("이미 경로에 모든 파일이 존재합니다.")}return[2,Promise.all(filteredPathAndCodes.map(function(pathAndCode){return _this.writeCodeToPath(pathAndCode)}))]}})}).call(this)}},{key:"checkExistsGenCode",value:function checkExistsGenCode(entityId,templateKey,enumId){return _async_to_generator(function(){var _this_getTemplate_getTargetAndPath,target,genPath,fullPath,subPath,_tmp;return _ts_generator(this,function(_state){switch(_state.label){case 0:_this_getTemplate_getTargetAndPath=this.getTemplate(templateKey).getTargetAndPath(_entitymanager.EntityManager.getNamesFromId(entityId),enumId),target=_this_getTemplate_getTargetAndPath.target,genPath=_this_getTemplate_getTargetAndPath.path;fullPath=_path.default.join(_sonamu.Sonamu.appRootPath,target,genPath);subPath=_path.default.join(target,genPath);_tmp={subPath:subPath,fullPath:fullPath};return[4,(0,_fsutils.exists)(fullPath)];case 1:return[2,(_tmp.isExists=_state.sent(),_tmp)]}})}).call(this)}},{key:"checkExists",value:function checkExists(entityId,enums){return _async_to_generator(function(){var _this,keys,names,enumsKeys;return _ts_generator(this,function(_state){switch(_state.label){case 0:_this=this;keys=_types.TemplateKey.options;names=_entitymanager.EntityManager.getNamesFromId(entityId);enumsKeys=Object.keys(enums).filter(function(name){return name!==names.constant});return[4,(0,_asyncutils.reduceAsync)(keys,function(result,key){return _async_to_generator(function(){var tpl,_tpl_getTargetAndPath,target,p,targets;return _ts_generator(this,function(_state){switch(_state.label){case 0:tpl=this.getTemplate(key);if(!key.startsWith("view_enums"))return[3,2];return[4,(0,_asyncutils.mapAsync)(enumsKeys,function(componentId){return _async_to_generator(function(){var _tpl_getTargetAndPath,target,p,_;return _ts_generator(this,function(_state){switch(_state.label){case 0:_tpl_getTargetAndPath=tpl.getTargetAndPath(names,componentId),target=_tpl_getTargetAndPath.target,p=_tpl_getTargetAndPath.path;_="".concat(key,"__").concat(componentId);return[4,(0,_fsutils.exists)(_path.default.join(_sonamu.Sonamu.appRootPath,target,p))];case 1:result[_]=_state.sent();return[2]}})})()})];case 1:_state.sent();return[2,result];case 2:_tpl_getTargetAndPath=tpl.getTargetAndPath(names),target=_tpl_getTargetAndPath.target,p=_tpl_getTargetAndPath.path;targets=_sonamu.Sonamu.config.sync.targets;if(!target.includes(":target"))return[3,4];return[4,(0,_asyncutils.mapAsync)(targets,function(t){return _async_to_generator(function(){var _;return _ts_generator(this,function(_state){switch(_state.label){case 0:_="".concat(key,"__").concat(t);return[4,(0,_fsutils.exists)(_path.default.join(_sonamu.Sonamu.appRootPath,target.replace(":target",t),p))];case 1:result[_]=_state.sent();return[2]}})})()})];case 3:_state.sent();return[3,6];case 4:return[4,(0,_fsutils.exists)(_path.default.join(_sonamu.Sonamu.appRootPath,target,p))];case 5:result[key]=_state.sent();_state.label=6;case 6:return[2,result]}})}).call(_this)},{})];case 1:return[2,_state.sent()]}})}).call(this)}},{key:"getZodTypeById",value:function getZodTypeById(zodTypeId){return _async_to_generator(function(){var modulePath,moduleAbsPath,importPath,imported;return _ts_generator(this,function(_state){switch(_state.label){case 0:modulePath=_entitymanager.EntityManager.getModulePath(zodTypeId);moduleAbsPath=_path.default.join(_sonamu.Sonamu.apiRootPath,"dist","application",modulePath+".js");importPath="./"+_path.default.relative(__dirname,moduleAbsPath);return[4,Promise.resolve(importPath).then(function(p){return /*#__PURE__*/_interop_require_wildcard(require(p))})];case 1:imported=_state.sent();if(!imported[zodTypeId]){throw new Error("존재하지 않는 zodTypeId ".concat(zodTypeId))}return[2,imported[zodTypeId].describe(zodTypeId)]}})})()}},{key:"propNodeToZodType",value:function propNodeToZodType(propNode){return _async_to_generator(function(){var _this,innerType,_propNode_prop,obj;return _ts_generator(this,function(_state){switch(_state.label){case 0:_this=this;if(!(propNode.nodeType==="plain"))return[3,1];return[2,this.propToZodType(propNode.prop)];case 1:if(!(propNode.nodeType==="array"))return[3,7];if(!(propNode.prop===undefined))return[3,2];throw new Error;case 2:if(!(propNode.children.length>0))return[3,4];return[4,this.propNodeToZodType(_object_spread_props(_object_spread({},propNode),{nodeType:"object"}))];case 3:return[2,_state.sent().array()];case 4:return[4,this.propToZodType(propNode.prop)];case 5:innerType=_state.sent();if(propNode.prop.nullable===true){return[2,_zod.z.array(innerType).nullable()]}else{return[2,_zod.z.array(innerType)]}_state.label=6;case 6:return[3,10];case 7:if(!(propNode.nodeType==="object"))return[3,9];return[4,propNode.children.reduce(function(promise,childPropNode){return _async_to_generator(function(){var result,_;return _ts_generator(this,function(_state){switch(_state.label){case 0:return[4,promise];case 1:result=_state.sent();_=childPropNode.prop.name;return[4,this.propNodeToZodType(childPropNode)];case 2:result[_]=_state.sent();return[2,result]}})}).call(_this)},{})];case 8:obj=_state.sent();if(((_propNode_prop=propNode.prop)===null||_propNode_prop===void 0?void 0:_propNode_prop.nullable)===true){return[2,_zod.z.object(obj).nullable()]}else{return[2,_zod.z.object(obj)]}return[3,10];case 9:throw Error;case 10:return[2]}})}).call(this)}},{key:"propToZodType",value:function propToZodType(prop){return _async_to_generator(function(){var zodType;return _ts_generator(this,function(_state){switch(_state.label){case 0:zodType=_zod.z.unknown();if(!(0,_types.isIntegerProp)(prop))return[3,1];zodType=_zod.z.number().int();return[3,19];case 1:if(!(0,_types.isBigIntegerProp)(prop))return[3,2];zodType=_zod.z.bigint();return[3,19];case 2:if(!(0,_types.isTextProp)(prop))return[3,3];zodType=_zod.z.string().max((0,_codeconverters.getTextTypeLength)(prop.textType));return[3,19];case 3:if(!(0,_types.isEnumProp)(prop))return[3,5];return[4,this.getZodTypeById(prop.id)];case 4:zodType=_state.sent();return[3,19];case 5:if(!(0,_types.isStringProp)(prop))return[3,6];zodType=_zod.z.string().max(prop.length);return[3,19];case 6:if(!((0,_types.isFloatProp)(prop)||(0,_types.isDoubleProp)(prop)))return[3,7];zodType=_zod.z.number();return[3,19];case 7:if(!(0,_types.isDecimalProp)(prop))return[3,8];zodType=_zod.z.string();return[3,19];case 8:if(!(0,_types.isBooleanProp)(prop))return[3,9];zodType=_zod.z.boolean();return[3,19];case 9:if(!(0,_types.isDateProp)(prop))return[3,10];zodType=_zod.z.string().length(10);return[3,19];case 10:if(!(0,_types.isTimeProp)(prop))return[3,11];zodType=_zod.z.string().length(8);return[3,19];case 11:if(!(0,_types.isDateTimeProp)(prop))return[3,12];zodType=_zod.z.date();return[3,19];case 12:if(!(0,_types.isTimestampProp)(prop))return[3,13];zodType=_zod.z.date();return[3,19];case 13:if(!(0,_types.isJsonProp)(prop))return[3,15];return[4,this.getZodTypeById(prop.id)];case 14:zodType=_state.sent();return[3,19];case 15:if(!(0,_types.isUuidProp)(prop))return[3,16];zodType=_zod.z.uuid();return[3,19];case 16:if(!(0,_types.isVirtualProp)(prop))return[3,18];return[4,this.getZodTypeById(prop.id)];case 17:zodType=_state.sent();return[3,19];case 18:if((0,_types.isRelationProp)(prop)){if((0,_types.isBelongsToOneRelationProp)(prop)||(0,_types.isOneToOneRelationProp)(prop)&&prop.hasJoinColumn){zodType=_zod.z.number().int()}}else{throw new Error("prop을 zodType으로 변환하는데 실패 ".concat(prop,"}"))}_state.label=19;case 19:if(prop.unsigned){zodType=zodType.nonnegative()}if(prop.nullable){zodType=zodType.nullable()}return[2,zodType]}})}).call(this)}},{key:"resolveRenderType",value:function resolveRenderType(key,zodType){if(_instanceof(zodType,_zod.z.ZodDate)){return"datetime"}else if(_instanceof(zodType,_zod.z.ZodString)){if(key.includes("img")||key.includes("image")){return"string-image"}else if(zodType.description==="SQLDateTimeString"){return"string-datetime"}else if(key.endsWith("date")){return"string-date"}else{return"string-plain"}}else if(_instanceof(zodType,_zod.z.ZodNumber)){if(key==="id"){return"number-id"}else if(key.endsWith("_id")){return"number-fk_id"}else{return"number-plain"}}else if(_instanceof(zodType,_zod.z.ZodBoolean)){return"boolean"}else if(_instanceof(zodType,_zod.z.ZodEnum)){return"enums"}else if(_instanceof(zodType,_zod.z.ZodRecord)){return"record"}else if(_instanceof(zodType,_zod.z.ZodAny)||_instanceof(zodType,_zod.z.ZodUnknown)){return"string-plain"}else if(_instanceof(zodType,_zod.z.ZodUnion)){return"string-plain"}else if(_instanceof(zodType,_zod.z.ZodLiteral)){return"string-plain"}else{throw new Error("타입 파싱 불가 ".concat(key," ").concat(zodType.def.type))}}},{key:"zodTypeToRenderingNode",value:function zodTypeToRenderingNode(zodType){var _this=this;var baseKey=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"root";var def={name:baseKey,label:_inflection.default.camelize(baseKey,false),zodType:zodType};if(_instanceof(zodType,_zod.z.ZodObject)){var columnKeys=Object.keys(zodType.shape);var children=columnKeys.map(function(key){var innerType=zodType.shape[key];return _this.zodTypeToRenderingNode(innerType,key)});return _object_spread_props(_object_spread({},def),{renderType:"object",children:children})}else if(_instanceof(zodType,_zod.z.ZodArray)){var innerType=zodType.def.element;if(_instanceof(innerType,_zod.z.ZodString)&&baseKey.includes("images")){return _object_spread_props(_object_spread({},def),{renderType:"array-images"})}return _object_spread_props(_object_spread({},def),{renderType:"array",element:this.zodTypeToRenderingNode(innerType,baseKey)})}else if(_instanceof(zodType,_zod.z.ZodUnion)){var optionNodes=zodType.def.options.map(function(opt){return _this.zodTypeToRenderingNode(opt,baseKey)});return optionNodes[0]}else if(_instanceof(zodType,_zod.z.ZodOptional)){return _object_spread_props(_object_spread({},this.zodTypeToRenderingNode(zodType.def.innerType,baseKey)),{optional:true})}else if(_instanceof(zodType,_zod.z.ZodNullable)){return _object_spread_props(_object_spread({},this.zodTypeToRenderingNode(zodType.def.innerType,baseKey)),{nullable:true})}else{return _object_spread_props(_object_spread({},def),{renderType:this.resolveRenderType(baseKey,zodType)})}}},{key:"getColumnsNode",value:function getColumnsNode(entityId,subsetKey){return _async_to_generator(function(){var entity,subsetA,propNodes,rootPropNode,columnsZodType,columnsNode;return _ts_generator(this,function(_state){switch(_state.label){case 0:entity=_entitymanager.EntityManager.get(entityId);subsetA=entity.subsets[subsetKey];if(subsetA===undefined){throw new _soexceptions.ServiceUnavailableException("SubsetA 가 없습니다.")}propNodes=entity.fieldExprsToPropNodes(subsetA);rootPropNode={nodeType:"object",children:propNodes};return[4,this.propNodeToZodType(rootPropNode)];case 1:columnsZodType=_state.sent();columnsNode=this.zodTypeToRenderingNode(columnsZodType);columnsNode.children=columnsNode.children.map(function(child){if(child.renderType==="object"){var pickedCol=child.children.find(function(cc){return["title","name"].includes(cc.name)});if(pickedCol){return _object_spread_props(_object_spread({},child),{renderType:"object-pick",config:{picked:pickedCol.name}})}else{return child}}else if(child.renderType==="array"&&child.element&&child.element.renderType==="object"){var pickedCol1=child.element.children.find(function(cc){return["title","name"].includes(cc.name)});if(pickedCol1){return _object_spread_props(_object_spread({},child),{element:_object_spread_props(_object_spread({},child.element),{renderType:"object-pick",config:{picked:pickedCol1.name}})})}else{return child}}return child});return[2,columnsNode]}})}).call(this)}},{key:"createEntity",value:function createEntity(form){return _async_to_generator(function(){return _ts_generator(this,function(_state){switch(_state.label){case 0:if(!/^[A-Z][a-zA-Z0-9]*$/.test(form.entityId)){throw new _soexceptions.BadRequestException("entityId는 CamelCase 형식이어야 합니다.")}return[4,this.generateTemplate("entity",form)];case 1:_state.sent();return[4,_entitymanager.EntityManager.reload()];case 2:_state.sent();return[2]}})}).call(this)}},{key:"delEntity",value:function delEntity(entityId){return _async_to_generator(function(){var entity,delPaths,_iteratorAbruptCompletion,_didIteratorError,_iteratorError,_iterator,_step,_value,delPath,err;return _ts_generator(this,function(_state){switch(_state.label){case 0:entity=_entitymanager.EntityManager.get(entityId);delPaths=function(){if(entity.parentId){return["".concat(_sonamu.Sonamu.apiRootPath,"/src/application/").concat(entity.names.parentFs,"/").concat(entity.names.fs,".entity.json")]}else{return["".concat(_sonamu.Sonamu.apiRootPath,"/src/application/").concat(entity.names.fs),"".concat(_sonamu.Sonamu.apiRootPath,"/dist/application/").concat(entity.names.fs)].concat(_to_consumable_array(_sonamu.Sonamu.config.sync.targets.map(function(target){return["".concat(_sonamu.Sonamu.appRootPath,"/").concat(target,"/src/services/").concat(entity.names.fs)]}).flat()))}}();_iteratorAbruptCompletion=false,_didIteratorError=false;_state.label=1;case 1:_state.trys.push([1,9,10,15]);_iterator=_async_iterator(delPaths);_state.label=2;case 2:return[4,_iterator.next()];case 3:if(!(_iteratorAbruptCompletion=!(_step=_state.sent()).done))return[3,8];_value=_step.value;delPath=_value;return[4,(0,_fsutils.exists)(delPath)];case 4:if(!_state.sent())return[3,6];console.log(_chalk.default.red("DELETE ".concat(delPath)));return[4,(0,_promises.rm)(delPath,{recursive:true,force:true})];case 5:_state.sent();return[3,7];case 6:console.log(_chalk.default.yellow("NOT_EXISTS ".concat(delPath)));_state.label=7;case 7:_iteratorAbruptCompletion=false;return[3,2];case 8:return[3,15];case 9:err=_state.sent();_didIteratorError=true;_iteratorError=err;return[3,15];case 10:_state.trys.push([10,,13,14]);if(!(_iteratorAbruptCompletion&&_iterator.return!=null))return[3,12];return[4,_iterator.return()];case 11:_state.sent();_state.label=12;case 12:return[3,14];case 13:if(_didIteratorError){throw _iteratorError}return[7];case 14:return[7];case 15:return[4,_entitymanager.EntityManager.reload()];case 16:_state.sent();return[2,{delPaths:delPaths}]}})})()}},{key:"syncUI",value:function syncUI(){var _Sonamu_config_ui;var _Sonamu_config_ui_port;var uiPort=(_Sonamu_config_ui_port=(_Sonamu_config_ui=_sonamu.Sonamu.config.ui)===null||_Sonamu_config_ui===void 0?void 0:_Sonamu_config_ui.port)!==null&&_Sonamu_config_ui_port!==void 0?_Sonamu_config_ui_port:57e3;fetch("http://127.0.0.1:".concat(uiPort,"/api/reload"),{method:"GET"}).catch(function(e){return console.log(_chalk.default.dim("Failed to reload Sonamu UI: ".concat(e.message)))})}}]);return Syncer}();
2
+ //# sourceMappingURL=syncer.js.map