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 @@
1
+ {"version":3,"sources":["../../src/api/sonamu.ts"],"sourcesContent":["import path from \"path\";\nimport { readFile } from \"fs/promises\";\nimport { exists } from \"../utils/fs-utils\";\nimport { AsyncLocalStorage } from \"async_hooks\";\nimport chalk from \"chalk\";\nimport fastify from \"fastify\";\n\nimport { ZodError } from \"zod\";\nimport { getZodObjectFromApi } from \"./code-converters\";\nimport {\n BadRequestException,\n NotFoundException,\n} from \"../exceptions/so-exceptions\";\nimport { humanizeZodError } from \"../utils/zod-error\";\nimport { fastifyCaster } from \"./caster\";\nimport {\n ApiParamType,\n SonamuFastifyConfig,\n SonamuServerOptions,\n} from \"../types/types\";\nimport { isLocal, isTest } from \"../utils/controller\";\nimport { findApiRootPath } from \"../utils/utils\";\nimport { DB, SonamuDBConfig } from \"../database/db\";\nimport { attachOnDuplicateUpdate } from \"../database/knex-plugins/knex-on-duplicate-update\";\nimport type { ExtendedApi } from \"./decorators\";\nimport type { FastifyInstance, FastifyReply, FastifyRequest } from \"fastify\";\nimport type { IncomingMessage, Server, ServerResponse } from \"http\";\nimport type { Context, UploadContext } from \"./context\";\nimport type { Syncer } from \"../syncer/syncer\";\nimport type { FSWatcher } from \"chokidar\";\nimport { formatInTimeZone } from \"date-fns-tz\";\nimport type { Driver } from \"../file-storage/driver\";\n\nexport type SonamuConfig = {\n projectName?: string;\n api: {\n dir: string;\n };\n sync: {\n targets: string[];\n };\n route: {\n prefix: string;\n };\n timezone?: string;\n ui?: {\n port: number;\n };\n};\nexport type SonamuSecrets = {\n [key: string]: string;\n};\nclass SonamuClass {\n public isInitialized: boolean = false;\n public asyncLocalStorage: AsyncLocalStorage<{\n context: Context;\n }> = new AsyncLocalStorage();\n\n public uploadStorage: AsyncLocalStorage<{\n uploadContext: UploadContext;\n }> = new AsyncLocalStorage();\n\n public getContext(): Context {\n const store = this.asyncLocalStorage.getStore();\n if (store?.context) {\n return store.context;\n }\n throw new Error(\"Sonamu cannot find context\");\n }\n\n public getUploadContext(): UploadContext {\n const store = this.uploadStorage.getStore();\n if (store?.uploadContext) {\n return store.uploadContext;\n }\n throw new Error(\n \"Sonamu cannot find upload context. Did you use @upload decorator?\"\n );\n }\n\n private _apiRootPath: string | null = null;\n set apiRootPath(apiRootPath: string) {\n this._apiRootPath = apiRootPath;\n }\n get apiRootPath(): string {\n if (this._apiRootPath === null) {\n throw new Error(\"Sonamu has not been initialized\");\n }\n return this._apiRootPath!;\n }\n get appRootPath(): string {\n return this.apiRootPath.split(path.sep).slice(0, -1).join(path.sep);\n }\n\n private _dbConfig: SonamuDBConfig | null = null;\n set dbConfig(dbConfig: SonamuDBConfig) {\n this._dbConfig = dbConfig;\n }\n get dbConfig(): SonamuDBConfig {\n if (this._dbConfig === null) {\n throw new Error(\"Sonamu has not been initialized\");\n }\n return this._dbConfig!;\n }\n\n private _syncer: Syncer | null = null;\n set syncer(syncer: Syncer) {\n this._syncer = syncer;\n }\n get syncer(): Syncer {\n if (this._syncer === null) {\n throw new Error(\"Sonamu has not been initialized\");\n }\n return this._syncer!;\n }\n\n private _config: SonamuConfig | null = null;\n set config(config: SonamuConfig) {\n this._config = config;\n }\n get config(): SonamuConfig {\n if (this._config === null) {\n throw new Error(\"Sonamu has not been initialized\");\n }\n return this._config;\n }\n\n private _secrets: SonamuSecrets | null = null;\n set secrets(secrets: SonamuSecrets) {\n this._secrets = secrets;\n }\n get secrets(): SonamuSecrets | null {\n return this._secrets;\n }\n\n private _storage: Driver | null = null;\n set storage(storage: Driver) {\n this._storage = storage;\n }\n get storage(): Driver | null {\n return this._storage;\n }\n\n // HMR 처리\n public watcher: FSWatcher | null = null;\n private pendingFiles: string[] = [];\n private hmrStartTime: number = 0;\n\n public server: FastifyInstance | null = null;\n\n async initForTesting() {\n await this.init(true, false, undefined, true);\n }\n\n async init(\n doSilent: boolean = false,\n enableSync: boolean = true,\n apiRootPath?: string,\n forTesting: boolean = false\n ) {\n if (this.isInitialized) {\n return;\n }\n !doSilent &&\n console.time(\n chalk.cyan(`Sonamu.init${forTesting ? \" for testing\" : \"\"}`)\n );\n\n // API 루트 패스\n this.apiRootPath = apiRootPath ?? findApiRootPath();\n const configPath = path.join(this.apiRootPath, \"sonamu.config.json\");\n const secretsPath = path.join(this.apiRootPath, \"sonamu.secrets.json\");\n if (!(await exists(configPath))) {\n throw new Error(`Cannot find sonamu.config.json in ${configPath}`);\n }\n this.config = JSON.parse(\n (await readFile(configPath)).toString()\n ) as SonamuConfig;\n if (await exists(secretsPath)) {\n this.secrets = JSON.parse(\n (await readFile(secretsPath)).toString()\n ) as SonamuSecrets;\n }\n\n // DB 로드\n this.dbConfig = await DB.readKnexfile();\n !doSilent && console.log(chalk.green(\"DB Config Loaded!\"));\n attachOnDuplicateUpdate();\n\n // 테스팅인 경우 엔티티 로드 & 싱크 없이 중단\n if (forTesting) {\n this.isInitialized = true;\n return;\n }\n\n // Entity 로드\n const { EntityManager } = await import(\"../entity/entity-manager\");\n await EntityManager.autoload(doSilent);\n\n // Syncer\n const { Syncer } = await import(\"../syncer/syncer\");\n this.syncer = new Syncer();\n\n // Autoload: Models / Types / APIs\n await this.syncer.autoloadModels();\n await this.syncer.autoloadTypes();\n await this.syncer.autoloadApis();\n\n if (isLocal() && !isTest() && enableSync) {\n await this.syncer.sync();\n\n // FIXME: hmr 설정된 경우만 워처 시작\n this.startWatcher();\n\n this.syncer.syncUI();\n }\n\n this.isInitialized = true;\n !doSilent && console.timeEnd(chalk.cyan(\"Sonamu.init\"));\n }\n\n async createServer(\n options: SonamuServerOptions,\n initOptions?: {\n enableSync?: boolean;\n doSilent?: boolean;\n }\n ) {\n const server = fastify(options.fastify);\n this.server = server;\n\n // Storage 설정 저장\n if (options.storage) {\n this.storage = options.storage;\n }\n\n // 플러그인 등록\n if (options.plugins) {\n this.registerPlugins(server, options.plugins);\n }\n\n // API 라우팅 설정\n await this.withFastify(server, options.apiConfig, {\n enableSync: initOptions?.enableSync,\n doSilent: initOptions?.doSilent,\n });\n\n // 서버 시작\n await this.boot(server, options);\n\n return server;\n }\n\n async withFastify(\n server: FastifyInstance<Server, IncomingMessage, ServerResponse>,\n config: SonamuFastifyConfig,\n options?: {\n enableSync?: boolean;\n doSilent?: boolean;\n }\n ) {\n if (this.isInitialized === false) {\n await this.init(options?.doSilent, options?.enableSync);\n }\n\n this.server = server;\n\n // timezone 설정\n const timezone = this.config.timezone;\n if (timezone) {\n const DATE_FORMAT = \"yyyy-MM-dd'T'HH:mm:ssXXX\";\n // ISO 8601 날짜 형식 정규식 (예: 2024-01-15T09:30:00.000Z)\n const ISO_DATE_REGEX = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d{3})?Z$/;\n\n server.setReplySerializer((payload) => {\n return JSON.stringify(payload, (_key, value) => {\n if (typeof value === \"string\" && ISO_DATE_REGEX.test(value)) {\n return formatInTimeZone(new Date(value), timezone, DATE_FORMAT);\n }\n return value;\n });\n });\n !options?.doSilent &&\n console.log(chalk.green(`Timezone set to ${timezone}`));\n }\n\n // 전체 라우팅 리스트\n server.get(\n `${this.config.route.prefix}/routes`,\n async (_request, _reply): Promise<any> => {\n return this.syncer.apis;\n }\n );\n\n // Healthcheck API\n server.get(\n `${this.config.route.prefix}/healthcheck`,\n async (_request, _reply): Promise<string> => {\n return \"ok\";\n }\n );\n\n // API 라우팅 (로컬HMR 상태와 구분)\n if (isLocal()) {\n server.all(\"*\", (request, reply) => {\n const found = this.syncer.apis.find(\n (api) =>\n this.config.route.prefix + api.path === request.url.split(\"?\")[0] &&\n (api.options.httpMethod ?? \"GET\") === request.method.toUpperCase()\n );\n if (found) {\n return this.getApiHandler(found, config)(request, reply);\n }\n throw new NotFoundException(\"존재하지 않는 API 접근입니다.\");\n });\n } else {\n this.syncer.apis.map((api) => {\n // model\n if (this.syncer.models[api.modelName] === undefined) {\n throw new Error(`정의되지 않은 모델에 접근 ${api.modelName}`);\n }\n\n // route\n server.route({\n method: api.options.httpMethod!,\n url: this.config.route.prefix + api.path,\n handler: this.getApiHandler(api, config),\n }); // END server.route\n });\n }\n }\n\n getApiHandler(api: ExtendedApi, config: SonamuFastifyConfig) {\n return async (\n request: FastifyRequest,\n reply: FastifyReply\n ): Promise<unknown> => {\n (api.options.guards ?? []).every((guard) =>\n config.guardHandler(guard, request, api)\n );\n\n // 파라미터 정보로 zod 스키마 빌드\n const ReqType = getZodObjectFromApi(api, this.syncer.types);\n\n // request 파싱\n const which = api.options.httpMethod === \"GET\" ? \"query\" : \"body\";\n let reqBody: {\n [key: string]: unknown;\n };\n try {\n reqBody = fastifyCaster(ReqType).parse(request[which] ?? {});\n } catch (e) {\n if (e instanceof ZodError) {\n const messages = humanizeZodError(e)\n .map((issue) => issue.message)\n .join(\" \");\n throw new BadRequestException(messages, {\n zodError: e,\n });\n } else {\n throw e;\n }\n }\n\n // Content-Type\n reply.type(api.options.contentType ?? \"application/json\");\n\n // 캐시\n const { cacheKey, cacheTtl, cachedData } = await (async () => {\n if (config.cache) {\n try {\n const cacheKeyRes = config.cache.resolveKey(api.path, reqBody);\n if (cacheKeyRes.cache === false) {\n return { cacheKey: null, cachedData: null };\n }\n\n const cacheKey = cacheKeyRes.key;\n const cacheTtl = cacheKeyRes.ttl;\n const cachedData = await config.cache.get(cacheKey);\n return { cacheKey, cacheTtl, cachedData };\n } catch (e) {\n console.error(e);\n }\n return { cacheKey: null, cachedData: null };\n }\n return { cacheKey: null, cachedData: null };\n })();\n if (cachedData !== null) {\n return cachedData;\n }\n\n // 결과 (AsyncLocalStorage 적용)\n const context = config.contextProvider(\n {\n request,\n reply,\n headers: request.headers,\n },\n request,\n reply\n );\n const model = this.syncer.models[api.modelName];\n return this.asyncLocalStorage.run({ context }, async () => {\n const result = await (model as any)[api.methodName].apply(\n model,\n api.parameters.map((param) => {\n // Context 인젝션\n if (ApiParamType.isContext(param.type)) {\n return context;\n } else {\n return reqBody[param.name];\n }\n })\n );\n reply.type(api.options.contentType ?? \"application/json\");\n\n // 캐시 키 있는 경우 갱신 후 저장\n if (config.cache && cacheKey) {\n await config.cache.put(cacheKey, result, cacheTtl);\n }\n return result;\n });\n };\n }\n\n startWatcher(): void {\n const watchPath = path.join(this.apiRootPath, \"src\");\n const chokidar = require(\"chokidar\") as typeof import(\"chokidar\");\n this.watcher = chokidar.watch(watchPath, {\n ignored: (path, stats) =>\n (!!stats?.isFile() &&\n !path.endsWith(\".ts\") &&\n !path.endsWith(\".json\")) ||\n path.endsWith(\"src/index.ts\"),\n persistent: true,\n ignoreInitial: true,\n });\n this.watcher.on(\"all\", async (event: string, filePath: string) => {\n if (event !== \"change\" && event !== \"add\") {\n return;\n }\n\n await this.handleFileChange(event, filePath);\n });\n }\n\n private registerPlugins(\n server: FastifyInstance,\n plugins: SonamuServerOptions[\"plugins\"]\n ) {\n if (!plugins) {\n return;\n }\n\n const pluginsModules = {\n formbody: \"@fastify/formbody\",\n qs: \"fastify-qs\",\n cors: \"@fastify/cors\",\n multipart: \"@fastify/multipart\",\n } as const;\n\n const registerPlugin = <K extends keyof NonNullable<typeof plugins>>(\n key: K,\n pluginName: string\n ) => {\n const option = plugins[key];\n if (!option) return;\n\n if (option === true) {\n server.register(import(pluginName));\n } else {\n server.register(import(pluginName), option);\n }\n };\n\n Object.entries(pluginsModules).forEach(([key, pluginName]) => {\n registerPlugin(key as keyof typeof plugins, pluginName);\n });\n\n if (plugins.custom) {\n plugins.custom(server);\n }\n }\n\n private async boot(server: FastifyInstance, options: SonamuServerOptions) {\n const port = options.listen?.port ?? 3000;\n const host = options.listen?.host ?? \"localhost\";\n\n server.addHook(\"onClose\", async () => {\n await options.lifecycle?.onShutdown?.(server);\n await this.destroy();\n });\n\n const shutdown = async () => {\n try {\n await server.close();\n process.exit(0);\n } catch (err) {\n console.error(\"Error during shutdown:\", err);\n process.exit(1);\n }\n };\n\n process.on(\"SIGINT\", shutdown);\n process.on(\"SIGTERM\", shutdown);\n\n if (options.lifecycle?.onError) {\n server.setErrorHandler(options.lifecycle?.onError);\n }\n\n server\n .listen({ port, host })\n .then(async () => {\n await options.lifecycle?.onStart?.(server);\n })\n .catch(async (err) => {\n console.error(chalk.red(\"Failed to start server:\", err));\n await shutdown();\n });\n }\n\n private async handleFileChange(\n event: string,\n filePath: string\n ): Promise<void> {\n // 첫 번째 파일이면 HMR 시작 시간 기록\n if (this.pendingFiles.length === 0) {\n this.hmrStartTime = Date.now();\n }\n\n this.pendingFiles.push(filePath);\n\n const relativePath = filePath.replace(this.apiRootPath, \"api\");\n console.log(chalk.bold(`Detected(${event}): ${chalk.blue(relativePath)}`));\n\n await this.syncer.syncFromWatcher([filePath]);\n\n // 처리 완료된 파일을 대기 목록에서 제거\n this.pendingFiles = this.pendingFiles.slice(1);\n\n // 모든 파일 처리가 완료되면 최종 메시지 출력\n if (this.pendingFiles.length === 0) {\n await this.finishHMR();\n }\n }\n\n private async finishHMR(): Promise<void> {\n await this.syncer.saveChecksums(await this.syncer.getCurrentChecksums());\n\n const endTime = Date.now();\n const totalTime = endTime - this.hmrStartTime;\n const msg = `HMR Done! ${chalk.bold.white(`${totalTime}ms`)}`;\n const margin = Math.max(0, (process.stdout.columns - msg.length) / 2);\n\n console.log(\n chalk.black.bgGreen(\" \".repeat(margin) + msg + \" \".repeat(margin))\n );\n }\n\n async destroy(): Promise<void> {\n const { BaseModel } = require(\"../database/base-model\");\n await BaseModel.destroy();\n await this.watcher?.close();\n }\n}\nexport const Sonamu = new SonamuClass();\n"],"names":["Sonamu","SonamuClass","isInitialized","asyncLocalStorage","AsyncLocalStorage","uploadStorage","_apiRootPath","_dbConfig","_syncer","_config","_secrets","_storage","watcher","pendingFiles","hmrStartTime","server","getContext","store","getStore","context","Error","getUploadContext","uploadContext","apiRootPath","appRootPath","split","path","sep","slice","join","dbConfig","syncer","config","secrets","storage","initForTesting","init","undefined","doSilent","enableSync","forTesting","configPath","secretsPath","EntityManager","Syncer","console","time","chalk","cyan","findApiRootPath","exists","JSON","parse","readFile","toString","DB","readKnexfile","log","green","attachOnDuplicateUpdate","autoload","autoloadModels","autoloadTypes","autoloadApis","isLocal","isTest","sync","startWatcher","syncUI","timeEnd","createServer","options","initOptions","fastify","plugins","registerPlugins","withFastify","apiConfig","boot","timezone","DATE_FORMAT","ISO_DATE_REGEX","setReplySerializer","payload","stringify","_key","value","test","formatInTimeZone","Date","get","route","prefix","_request","_reply","apis","all","request","reply","found","find","api","url","httpMethod","method","toUpperCase","getApiHandler","NotFoundException","map","models","modelName","handler","ReqType","which","reqBody","messages","cacheKey","cacheTtl","cachedData","model","guards","every","guard","guardHandler","getZodObjectFromApi","types","fastifyCaster","e","ZodError","humanizeZodError","issue","message","BadRequestException","zodError","type","contentType","cacheKeyRes","cache","resolveKey","key","ttl","error","contextProvider","headers","run","result","methodName","apply","parameters","param","ApiParamType","isContext","name","put","watchPath","chokidar","require","watch","ignored","stats","isFile","endsWith","persistent","ignoreInitial","on","event","filePath","handleFileChange","pluginsModules","formbody","qs","cors","multipart","registerPlugin","pluginName","option","register","Object","entries","forEach","custom","port","host","shutdown","listen","addHook","lifecycle","onShutdown","destroy","err","close","process","exit","onError","setErrorHandler","then","onStart","catch","red","relativePath","length","now","push","replace","bold","blue","syncFromWatcher","finishHMR","endTime","totalTime","msg","margin","saveChecksums","getCurrentChecksums","white","Math","max","stdout","columns","black","bgGreen","repeat","BaseModel"],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import type { FastifyReply, FastifyRequest } from "fastify";
2
+ import type { Context } from "./context";
3
+ import type { ApiParamType, ApiParam } from "../types/types";
4
+ import type { ApiDecoratorOptions } from "./decorators";
5
+ export type SonamuFastifyConfig = {
6
+ contextProvider: (defaultContext: Pick<Context, "headers" | "reply">, request: FastifyRequest, reply: FastifyReply) => Context;
7
+ guardHandler: (guard: string, request: FastifyRequest, api: {
8
+ typeParameters: ApiParamType.TypeParam[];
9
+ parameters: ApiParam[];
10
+ returnType: ApiParamType;
11
+ modelName: string;
12
+ methodName: string;
13
+ path: string;
14
+ options: ApiDecoratorOptions;
15
+ }) => void;
16
+ cache?: {
17
+ get: (key: string) => Promise<unknown | null>;
18
+ put: (key: string, value: unknown, ttl?: number) => Promise<void>;
19
+ resolveKey: (path: string, reqBody: {
20
+ [key: string]: unknown;
21
+ }) => {
22
+ cache: false;
23
+ } | {
24
+ cache: true;
25
+ key: string;
26
+ ttl?: number;
27
+ };
28
+ };
29
+ };
30
+ //# sourceMappingURL=sonamu.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sonamu.types.d.ts","sourceRoot":"","sources":["../../src/api/sonamu.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC5D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAExD,MAAM,MAAM,mBAAmB,GAAG;IAChC,eAAe,EAAE,CACf,cAAc,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,GAAG,OAAO,CAAC,EAClD,OAAO,EAAE,cAAc,EACvB,KAAK,EAAE,YAAY,KAChB,OAAO,CAAC;IACb,YAAY,EAAE,CACZ,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,cAAc,EACvB,GAAG,EAAE;QACH,cAAc,EAAE,YAAY,CAAC,SAAS,EAAE,CAAC;QACzC,UAAU,EAAE,QAAQ,EAAE,CAAC;QACvB,UAAU,EAAE,YAAY,CAAC;QACzB,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,mBAAmB,CAAC;KAC9B,KACE,IAAI,CAAC;IACV,KAAK,CAAC,EAAE;QACN,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;QAC9C,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;QAClE,UAAU,EAAE,CACV,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE;YACP,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;SACxB,KAEC;YACE,KAAK,EAAE,KAAK,CAAC;SACd,GACD;YACE,KAAK,EAAE,IAAI,CAAC;YACZ,GAAG,EAAE,MAAM,CAAC;YACZ,GAAG,CAAC,EAAE,MAAM,CAAC;SACd,CAAC;KACP,CAAC;CACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});
2
+ //# sourceMappingURL=sonamu.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/api/sonamu.types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * SWC 빌드 명령어
3
+ */
4
+ export declare const SWC_BUILD_COMMAND = "swc src -d dist --strip-leading-paths --source-maps -C module.type=commonjs -C jsc.parser.syntax=typescript -C jsc.parser.decorators=true -C jsc.target=es5";
5
+ //# sourceMappingURL=build-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-config.d.ts","sourceRoot":"","sources":["../../src/bin/build-config.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,iBAAiB,gKACiI,CAAC"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"SWC_BUILD_COMMAND",{enumerable:true,get:function(){return SWC_BUILD_COMMAND}});var SWC_BUILD_COMMAND="swc src -d dist --strip-leading-paths --source-maps -C module.type=commonjs -C jsc.parser.syntax=typescript -C jsc.parser.decorators=true -C jsc.target=es5";
2
+ //# sourceMappingURL=build-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/bin/build-config.ts"],"sourcesContent":["/**\n * SWC 빌드 명령어\n */\nexport const SWC_BUILD_COMMAND =\n \"swc src -d dist --strip-leading-paths --source-maps -C module.type=commonjs -C jsc.parser.syntax=typescript -C jsc.parser.decorators=true -C jsc.target=es5\";\n"],"names":["SWC_BUILD_COMMAND"],"mappings":"oGAGaA,2DAAAA,qBAAN,IAAMA,kBACX"}
@@ -1 +1,3 @@
1
1
  #!/usr/bin/env ts-node
2
+ export {};
3
+ //# sourceMappingURL=cli-wrapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-wrapper.d.ts","sourceRoot":"","sources":["../../src/bin/cli-wrapper.ts"],"names":[],"mappings":""}
@@ -1,40 +1,3 @@
1
1
  #!/usr/bin/env ts-node
2
- "use strict"; function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }
3
- // src/bin/cli-wrapper.ts
4
- var _child_process = require('child_process');
5
- var _path = require('path');
6
- var _fs = require('fs');
7
- var cjsPath = _path.resolve.call(void 0, __dirname, "bin/cli.js");
8
- var esmPath = _path.resolve.call(void 0, __dirname, "bin/cli.mjs");
9
- var isESM = () => {
10
- const packageJsonPath = _path.resolve.call(void 0, process.cwd(), "package.json");
11
- const packageJson = JSON.parse(_fs.readFileSync.call(void 0, packageJsonPath, "utf-8"));
12
- if (packageJson.type === "module") {
13
- return true;
14
- }
15
- if (process.env.USE_ESM === "true") {
16
- return true;
17
- }
18
- if (_fs.existsSync.call(void 0, packageJsonPath)) {
19
- const packageJson2 = JSON.parse(_fs.readFileSync.call(void 0, packageJsonPath, "utf-8"));
20
- return packageJson2.type === "module";
21
- }
22
- if (packageJson.main && _path.extname.call(void 0, packageJson.main) === ".mjs") {
23
- return true;
24
- }
25
- return false;
26
- };
27
- var scriptPath = isESM() ? esmPath : cjsPath;
28
- if (!_fs.existsSync.call(void 0, scriptPath)) {
29
- console.error(`Error: Script not found at ${scriptPath}`);
30
- process.exit(1);
31
- }
32
- var result = _child_process.spawnSync.call(void 0,
33
- process.execPath,
34
- [scriptPath, ...process.argv.slice(2)],
35
- {
36
- stdio: "inherit"
37
- }
38
- );
39
- process.exit(_nullishCoalesce(result.status, () => ( 1)));
2
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});var _child_process=require("child_process");var _path=require("path");var _fs=require("fs");var _chalk=/*#__PURE__*/_interop_require_default(require("chalk"));var _buildconfig=require("./build-config");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_without_holes(arr){if(Array.isArray(arr))return _array_like_to_array(arr)}function _interop_require_default(obj){return obj&&obj.__esModule?obj:{default:obj}}function _iterable_to_array(iter){if(typeof Symbol!=="undefined"&&iter[Symbol.iterator]!=null||iter["@@iterator"]!=null)return Array.from(iter)}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 _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 scriptPath=(0,_path.resolve)(__dirname,"cli.js");var args=process.argv.slice(2);function build(){try{(0,_child_process.execSync)(_buildconfig.SWC_BUILD_COMMAND,{cwd:process.cwd(),stdio:"inherit"})}catch(error){console.error(_chalk.default.red("Build failed."),error);process.exit(1)}}if(args[0]==="build"){console.log(_chalk.default.blue("Building the project..."));build();console.log(_chalk.default.green("Build completed successfully."));process.exit(0)}if(args[0]==="dev:serve"){build()}if(!(0,_fs.existsSync)(scriptPath)){console.error("Error: Script not found at ".concat(scriptPath));process.exit(1)}var result=(0,_child_process.spawnSync)(process.execPath,[scriptPath].concat(_to_consumable_array(args)),{stdio:"inherit"});var _result_status;process.exit((_result_status=result.status)!==null&&_result_status!==void 0?_result_status:1);
40
3
  //# sourceMappingURL=cli-wrapper.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/bin/cli-wrapper.ts"],"names":["packageJson"],"mappings":";;;AAEA,SAAS,iBAAiB;AAC1B,SAAS,SAAS,eAAe;AACjC,SAAS,YAAY,oBAAoB;AAEzC,IAAM,UAAU,QAAQ,WAAW,YAAY;AAC/C,IAAM,UAAU,QAAQ,WAAW,aAAa;AAEhD,IAAM,QAAQ,MAAM;AAClB,QAAM,kBAAkB,QAAQ,QAAQ,IAAI,GAAG,cAAc;AAC7D,QAAM,cAAc,KAAK,MAAM,aAAa,iBAAiB,OAAO,CAAC;AAGrE,MAAI,YAAY,SAAS,UAAU;AACjC,WAAO;AAAA,EACT;AAGA,MAAI,QAAQ,IAAI,YAAY,QAAQ;AAClC,WAAO;AAAA,EACT;AAGA,MAAI,WAAW,eAAe,GAAG;AAC/B,UAAMA,eAAc,KAAK,MAAM,aAAa,iBAAiB,OAAO,CAAC;AACrE,WAAOA,aAAY,SAAS;AAAA,EAC9B;AAGA,MAAI,YAAY,QAAQ,QAAQ,YAAY,IAAI,MAAM,QAAQ;AAC5D,WAAO;AAAA,EACT;AAEA,SAAO;AACT;AAEA,IAAM,aAAa,MAAM,IAAI,UAAU;AAEvC,IAAI,CAAC,WAAW,UAAU,GAAG;AAC3B,UAAQ,MAAM,8BAA8B,UAAU,EAAE;AACxD,UAAQ,KAAK,CAAC;AAChB;AAEA,IAAM,SAAS;AAAA,EACb,QAAQ;AAAA,EACR,CAAC,YAAY,GAAG,QAAQ,KAAK,MAAM,CAAC,CAAC;AAAA,EACrC;AAAA,IACE,OAAO;AAAA,EACT;AACF;AAEA,QAAQ,KAAK,OAAO,UAAU,CAAC","sourcesContent":["#!/usr/bin/env ts-node\n\nimport { spawnSync } from \"child_process\";\nimport { extname, resolve } from \"path\";\nimport { existsSync, readFileSync } from \"fs\";\n\nconst cjsPath = resolve(__dirname, \"bin/cli.js\");\nconst esmPath = resolve(__dirname, \"bin/cli.mjs\");\n\nconst isESM = () => {\n const packageJsonPath = resolve(process.cwd(), \"package.json\");\n const packageJson = JSON.parse(readFileSync(packageJsonPath, \"utf-8\"));\n\n // package.json에 \"type\": \"module\" 설정 확인\n if (packageJson.type === \"module\") {\n return true;\n }\n\n // 환경 변수에서 ESM 여부 확인\n if (process.env.USE_ESM === \"true\") {\n return true;\n }\n\n // package.json에 \"type\": \"module\" 설정\n if (existsSync(packageJsonPath)) {\n const packageJson = JSON.parse(readFileSync(packageJsonPath, \"utf-8\"));\n return packageJson.type === \"module\";\n }\n\n // main 필드가 .mjs로 끝나는지 확인\n if (packageJson.main && extname(packageJson.main) === \".mjs\") {\n return true;\n }\n\n return false;\n};\n\nconst scriptPath = isESM() ? esmPath : cjsPath;\n\nif (!existsSync(scriptPath)) {\n console.error(`Error: Script not found at ${scriptPath}`);\n process.exit(1);\n}\n\nconst result = spawnSync(\n process.execPath,\n [scriptPath, ...process.argv.slice(2)],\n {\n stdio: \"inherit\",\n }\n);\n\nprocess.exit(result.status ?? 1);\n"]}
1
+ {"version":3,"sources":["../../src/bin/cli-wrapper.ts"],"sourcesContent":["#!/usr/bin/env ts-node\n\nimport { spawnSync, execSync } from \"child_process\";\nimport { resolve } from \"path\";\nimport { existsSync } from \"fs\";\nimport chalk from \"chalk\";\nimport { SWC_BUILD_COMMAND } from \"./build-config\";\n\nconst scriptPath = resolve(__dirname, \"cli.js\");\nconst args = process.argv.slice(2);\n\n// build 명령어는 dist 없이도 실행 가능하도록 cli.ts 외부에서 처리(Sonamu.init에서 dist 필요)\nfunction build() {\n try {\n execSync(SWC_BUILD_COMMAND, { cwd: process.cwd(), stdio: \"inherit\" });\n } catch (error) {\n console.error(chalk.red(\"Build failed.\"), error);\n process.exit(1);\n }\n}\n\nif (args[0] === \"build\") {\n console.log(chalk.blue(\"Building the project...\"));\n build();\n console.log(chalk.green(\"Build completed successfully.\"));\n process.exit(0);\n}\n\nif (args[0] === \"dev:serve\") {\n build();\n}\n\nif (!existsSync(scriptPath)) {\n console.error(`Error: Script not found at ${scriptPath}`);\n process.exit(1);\n}\n\nconst result = spawnSync(process.execPath, [scriptPath, ...args], {\n stdio: \"inherit\",\n});\n\nprocess.exit(result.status ?? 1);\n"],"names":["scriptPath","resolve","__dirname","args","process","argv","slice","build","execSync","SWC_BUILD_COMMAND","cwd","stdio","error","console","chalk","red","exit","log","blue","green","existsSync","result","spawnSync","execPath","status"],"mappings":";iGAEoC,mCACZ,wBACG,+DACT,mCACgB,6rCAElC,IAAMA,WAAaC,GAAAA,aAAO,EAACC,UAAW,UACtC,IAAMC,KAAOC,QAAQC,IAAI,CAACC,KAAK,CAAC,GAGhC,SAASC,QACP,GAAI,CACFC,GAAAA,uBAAQ,EAACC,8BAAiB,CAAE,CAAEC,IAAKN,QAAQM,GAAG,GAAIC,MAAO,SAAU,EACrE,CAAE,MAAOC,MAAO,CACdC,QAAQD,KAAK,CAACE,cAAK,CAACC,GAAG,CAAC,iBAAkBH,OAC1CR,QAAQY,IAAI,CAAC,EACf,CACF,CAEA,GAAIb,IAAI,CAAC,EAAE,GAAK,QAAS,CACvBU,QAAQI,GAAG,CAACH,cAAK,CAACI,IAAI,CAAC,4BACvBX,QACAM,QAAQI,GAAG,CAACH,cAAK,CAACK,KAAK,CAAC,kCACxBf,QAAQY,IAAI,CAAC,EACf,CAEA,GAAIb,IAAI,CAAC,EAAE,GAAK,YAAa,CAC3BI,OACF,CAEA,GAAI,CAACa,GAAAA,cAAU,EAACpB,YAAa,CAC3Ba,QAAQD,KAAK,CAAC,AAAC,8BAAwC,OAAXZ,aAC5CI,QAAQY,IAAI,CAAC,EACf,CAEA,IAAMK,OAASC,GAAAA,wBAAS,EAAClB,QAAQmB,QAAQ,CAAE,CAACvB,WAAoB,CAArB,OAAa,qBAAGG,OAAO,CAChEQ,MAAO,SACT,OAEaU,eAAbjB,QAAQY,IAAI,CAACK,CAAAA,eAAAA,OAAOG,MAAM,UAAbH,wBAAAA,eAAiB"}
package/dist/bin/cli.d.ts CHANGED
@@ -1,2 +1,2 @@
1
-
2
- export { }
1
+ export {};
2
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/bin/cli.ts"],"names":[],"mappings":""}