sonamu 0.5.7 → 0.6.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 (358) hide show
  1. package/dist/api/base-frame.js +12 -2
  2. package/dist/api/caster.js +66 -2
  3. package/dist/api/code-converters.js +489 -2
  4. package/dist/api/config.d.ts +76 -0
  5. package/dist/api/config.d.ts.map +1 -0
  6. package/dist/api/config.js +32 -0
  7. package/dist/api/context.d.ts +1 -0
  8. package/dist/api/context.d.ts.map +1 -1
  9. package/dist/api/context.js +3 -2
  10. package/dist/api/decorators.d.ts.map +1 -1
  11. package/dist/api/decorators.js +142 -2
  12. package/dist/api/index.js +9 -2
  13. package/dist/api/sonamu.d.ts +8 -22
  14. package/dist/api/sonamu.d.ts.map +1 -1
  15. package/dist/api/sonamu.js +482 -2
  16. package/dist/bin/build-config.d.ts +2 -1
  17. package/dist/bin/build-config.d.ts.map +1 -1
  18. package/dist/bin/build-config.js +12 -2
  19. package/dist/bin/cli-wrapper.js +71 -2
  20. package/dist/bin/cli.js +418 -2
  21. package/dist/bin/hot-hook-register.d.ts +11 -0
  22. package/dist/bin/hot-hook-register.d.ts.map +1 -0
  23. package/dist/bin/hot-hook-register.js +21 -0
  24. package/dist/database/_batch_update.js +78 -2
  25. package/dist/database/base-model.js +247 -2
  26. package/dist/database/code-generator.js +53 -2
  27. package/dist/database/db.d.ts +2 -16
  28. package/dist/database/db.d.ts.map +1 -1
  29. package/dist/database/db.js +132 -2
  30. package/dist/database/knex-plugins/knex-on-duplicate-update.js +39 -2
  31. package/dist/database/puri-wrapper.js +109 -2
  32. package/dist/database/puri.d.ts +23 -16
  33. package/dist/database/puri.d.ts.map +1 -1
  34. package/dist/database/puri.js +539 -2
  35. package/dist/database/puri.types.d.ts +8 -3
  36. package/dist/database/puri.types.d.ts.map +1 -1
  37. package/dist/database/puri.types.js +3 -2
  38. package/dist/database/transaction-context.js +14 -2
  39. package/dist/database/upsert-builder.js +215 -2
  40. package/dist/entity/entity-manager.d.ts +3 -1
  41. package/dist/entity/entity-manager.d.ts.map +1 -1
  42. package/dist/entity/entity-manager.js +114 -2
  43. package/dist/entity/entity-utils.js +210 -2
  44. package/dist/entity/entity.d.ts.map +1 -1
  45. package/dist/entity/entity.js +651 -2
  46. package/dist/exceptions/error-handler.js +29 -2
  47. package/dist/exceptions/so-exceptions.js +85 -2
  48. package/dist/file-storage/driver.js +79 -2
  49. package/dist/file-storage/file-storage.js +75 -2
  50. package/dist/index.d.ts +2 -0
  51. package/dist/index.d.ts.map +1 -1
  52. package/dist/index.js +28 -2
  53. package/dist/migration/code-generation.js +558 -2
  54. package/dist/migration/migration-set.js +364 -2
  55. package/dist/migration/migrator.d.ts +0 -9
  56. package/dist/migration/migrator.d.ts.map +1 -1
  57. package/dist/migration/migrator.js +510 -2
  58. package/dist/migration/types.js +3 -2
  59. package/dist/naite/naite.d.ts +12 -0
  60. package/dist/naite/naite.d.ts.map +1 -0
  61. package/dist/naite/naite.js +72 -0
  62. package/dist/stream/index.js +3 -2
  63. package/dist/stream/sse.js +38 -2
  64. package/dist/syncer/api-parser.d.ts +20 -0
  65. package/dist/syncer/api-parser.d.ts.map +1 -0
  66. package/dist/syncer/api-parser.js +229 -0
  67. package/dist/syncer/checksum.d.ts +21 -0
  68. package/dist/syncer/checksum.d.ts.map +1 -0
  69. package/dist/syncer/checksum.js +98 -0
  70. package/dist/syncer/code-generator.d.ts +20 -0
  71. package/dist/syncer/code-generator.d.ts.map +1 -0
  72. package/dist/syncer/code-generator.js +141 -0
  73. package/dist/syncer/entity-operations.d.ts +17 -0
  74. package/dist/syncer/entity-operations.d.ts.map +1 -0
  75. package/dist/syncer/entity-operations.js +58 -0
  76. package/dist/syncer/file-patterns.d.ts +29 -0
  77. package/dist/syncer/file-patterns.d.ts.map +1 -0
  78. package/dist/syncer/file-patterns.js +38 -0
  79. package/dist/syncer/index.d.ts +6 -0
  80. package/dist/syncer/index.d.ts.map +1 -1
  81. package/dist/syncer/index.js +9 -2
  82. package/dist/syncer/module-loader.d.ts +35 -0
  83. package/dist/syncer/module-loader.d.ts.map +1 -0
  84. package/dist/syncer/module-loader.js +82 -0
  85. package/dist/syncer/syncer.d.ts +93 -108
  86. package/dist/syncer/syncer.d.ts.map +1 -1
  87. package/dist/syncer/syncer.js +375 -2
  88. package/dist/template/entity-converter.d.ts +14 -0
  89. package/dist/template/entity-converter.d.ts.map +1 -0
  90. package/dist/template/entity-converter.js +101 -0
  91. package/dist/template/helpers.d.ts +23 -0
  92. package/dist/template/helpers.d.ts.map +1 -0
  93. package/dist/template/helpers.js +64 -0
  94. package/dist/{templates → template/implementations}/entity.template.d.ts +3 -3
  95. package/dist/template/implementations/entity.template.d.ts.map +1 -0
  96. package/dist/template/implementations/entity.template.js +87 -0
  97. package/dist/{templates → template/implementations}/generated.template.d.ts +3 -3
  98. package/dist/template/implementations/generated.template.d.ts.map +1 -0
  99. package/dist/template/implementations/generated.template.js +232 -0
  100. package/dist/{templates → template/implementations}/generated_http.template.d.ts +3 -3
  101. package/dist/template/implementations/generated_http.template.d.ts.map +1 -0
  102. package/dist/template/implementations/generated_http.template.js +131 -0
  103. package/dist/{templates → template/implementations}/generated_sso.template.d.ts +3 -3
  104. package/dist/template/implementations/generated_sso.template.d.ts.map +1 -0
  105. package/dist/template/implementations/generated_sso.template.js +105 -0
  106. package/dist/{templates → template/implementations}/init_types.template.d.ts +3 -3
  107. package/dist/template/implementations/init_types.template.d.ts.map +1 -0
  108. package/dist/template/implementations/init_types.template.js +38 -0
  109. package/dist/template/implementations/model.template.d.ts +17 -0
  110. package/dist/template/implementations/model.template.d.ts.map +1 -0
  111. package/dist/template/implementations/model.template.js +171 -0
  112. package/dist/{templates → template/implementations}/model_test.template.d.ts +3 -3
  113. package/dist/template/implementations/model_test.template.d.ts.map +1 -0
  114. package/dist/template/implementations/model_test.template.js +35 -0
  115. package/dist/{templates → template/implementations}/service.template.d.ts +6 -6
  116. package/dist/template/implementations/service.template.d.ts.map +1 -0
  117. package/dist/template/implementations/service.template.js +193 -0
  118. package/dist/{templates → template/implementations}/view_enums_buttonset.template.d.ts +3 -3
  119. package/dist/template/implementations/view_enums_buttonset.template.d.ts.map +1 -0
  120. package/dist/template/implementations/view_enums_buttonset.template.js +31 -0
  121. package/dist/{templates → template/implementations}/view_enums_dropdown.template.d.ts +3 -4
  122. package/dist/template/implementations/view_enums_dropdown.template.d.ts.map +1 -0
  123. package/dist/template/implementations/view_enums_dropdown.template.js +50 -0
  124. package/dist/{templates → template/implementations}/view_enums_select.template.d.ts +3 -3
  125. package/dist/template/implementations/view_enums_select.template.d.ts.map +1 -0
  126. package/dist/template/implementations/view_enums_select.template.js +55 -0
  127. package/dist/{templates → template/implementations}/view_form.template.d.ts +5 -5
  128. package/dist/template/implementations/view_form.template.d.ts.map +1 -0
  129. package/dist/template/implementations/view_form.template.js +337 -0
  130. package/dist/{templates → template/implementations}/view_id_all_select.template.d.ts +3 -3
  131. package/dist/template/implementations/view_id_all_select.template.d.ts.map +1 -0
  132. package/dist/template/implementations/view_id_all_select.template.js +31 -0
  133. package/dist/{templates → template/implementations}/view_id_async_select.template.d.ts +3 -3
  134. package/dist/template/implementations/view_id_async_select.template.d.ts.map +1 -0
  135. package/dist/template/implementations/view_id_async_select.template.js +105 -0
  136. package/dist/{templates → template/implementations}/view_list.template.d.ts +5 -13
  137. package/dist/template/implementations/view_list.template.d.ts.map +1 -0
  138. package/dist/template/implementations/view_list.template.js +465 -0
  139. package/dist/{templates → template/implementations}/view_list_columns.template.d.ts +3 -3
  140. package/dist/template/implementations/view_list_columns.template.d.ts.map +1 -0
  141. package/dist/template/implementations/view_list_columns.template.js +49 -0
  142. package/dist/{templates → template/implementations}/view_search_input.template.d.ts +3 -3
  143. package/dist/template/implementations/view_search_input.template.d.ts.map +1 -0
  144. package/dist/template/implementations/view_search_input.template.js +64 -0
  145. package/dist/template/index.d.ts +5 -0
  146. package/dist/template/index.d.ts.map +1 -0
  147. package/dist/template/index.js +6 -0
  148. package/dist/template/template.d.ts +39 -0
  149. package/dist/template/template.d.ts.map +1 -0
  150. package/dist/template/template.js +47 -0
  151. package/dist/template/zod-converter.d.ts +18 -0
  152. package/dist/template/zod-converter.d.ts.map +1 -0
  153. package/dist/template/zod-converter.js +166 -0
  154. package/dist/testing/_relation-graph.js +80 -2
  155. package/dist/testing/fixture-manager.d.ts.map +1 -1
  156. package/dist/testing/fixture-manager.js +521 -2
  157. package/dist/types/types.d.ts +39 -40
  158. package/dist/types/types.d.ts.map +1 -1
  159. package/dist/types/types.js +289 -2
  160. package/dist/typings/knex.d.js +3 -2
  161. package/dist/utils/async-utils.d.ts +7 -0
  162. package/dist/utils/async-utils.d.ts.map +1 -1
  163. package/dist/utils/async-utils.js +57 -2
  164. package/dist/utils/console-util.d.ts +2 -0
  165. package/dist/utils/console-util.d.ts.map +1 -0
  166. package/dist/utils/console-util.js +6 -0
  167. package/dist/utils/controller.js +26 -2
  168. package/dist/utils/esm-utils.d.ts +45 -0
  169. package/dist/utils/esm-utils.d.ts.map +1 -0
  170. package/dist/utils/esm-utils.js +56 -0
  171. package/dist/utils/fs-utils.js +17 -2
  172. package/dist/utils/lodash-able.js +6 -2
  173. package/dist/utils/model.js +22 -2
  174. package/dist/utils/path-utils.d.ts +89 -0
  175. package/dist/utils/path-utils.d.ts.map +1 -0
  176. package/dist/utils/path-utils.js +60 -0
  177. package/dist/utils/process-utils.d.ts +13 -0
  178. package/dist/utils/process-utils.d.ts.map +1 -0
  179. package/dist/utils/process-utils.js +36 -0
  180. package/dist/utils/sql-parser.js +35 -2
  181. package/dist/utils/utils.d.ts +4 -7
  182. package/dist/utils/utils.d.ts.map +1 -1
  183. package/dist/utils/utils.js +33 -2
  184. package/dist/utils/zod-error.d.ts.map +1 -1
  185. package/dist/utils/zod-error.js +19 -2
  186. package/package.json +21 -8
  187. package/src/api/code-converters.ts +2 -2
  188. package/src/api/config.ts +142 -0
  189. package/src/api/context.ts +1 -0
  190. package/src/api/decorators.ts +1 -0
  191. package/src/api/sonamu.ts +81 -67
  192. package/src/bin/build-config.ts +2 -1
  193. package/src/bin/cli-wrapper.ts +10 -3
  194. package/src/bin/cli.ts +108 -56
  195. package/src/bin/hot-hook-register.ts +22 -0
  196. package/src/database/base-model.ts +1 -1
  197. package/src/database/code-generator.ts +1 -1
  198. package/src/database/db.ts +10 -52
  199. package/src/database/puri.ts +78 -53
  200. package/src/database/puri.types.ts +18 -5
  201. package/src/database/upsert-builder.ts +1 -1
  202. package/src/entity/entity-manager.ts +19 -15
  203. package/src/entity/entity.ts +4 -3
  204. package/src/index.ts +2 -0
  205. package/src/migration/code-generation.ts +1 -1
  206. package/src/migration/migration-set.ts +1 -1
  207. package/src/migration/migrator.ts +23 -152
  208. package/src/naite/naite.ts +70 -0
  209. package/src/syncer/api-parser.ts +299 -0
  210. package/src/syncer/checksum.ts +152 -0
  211. package/src/syncer/code-generator.ts +202 -0
  212. package/src/syncer/entity-operations.ts +68 -0
  213. package/src/syncer/file-patterns.ts +56 -0
  214. package/src/syncer/index.ts +6 -0
  215. package/src/syncer/module-loader.ts +125 -0
  216. package/src/syncer/syncer.ts +363 -1420
  217. package/src/template/entity-converter.ts +123 -0
  218. package/src/template/helpers.ts +84 -0
  219. package/src/{templates → template/implementations}/entity.template.ts +4 -4
  220. package/src/{templates → template/implementations}/generated.template.ts +9 -9
  221. package/src/{templates → template/implementations}/generated_http.template.ts +9 -6
  222. package/src/{templates → template/implementations}/generated_sso.template.ts +7 -7
  223. package/src/{templates → template/implementations}/init_types.template.ts +4 -4
  224. package/src/{templates → template/implementations}/model.template.ts +9 -9
  225. package/src/{templates → template/implementations}/model_test.template.ts +5 -5
  226. package/src/{templates → template/implementations}/service.template.ts +19 -11
  227. package/src/{templates → template/implementations}/view_enums_buttonset.template.ts +3 -3
  228. package/src/{templates → template/implementations}/view_enums_dropdown.template.ts +5 -21
  229. package/src/{templates → template/implementations}/view_enums_select.template.ts +4 -4
  230. package/src/{templates → template/implementations}/view_form.template.ts +11 -13
  231. package/src/{templates → template/implementations}/view_id_all_select.template.ts +3 -3
  232. package/src/{templates → template/implementations}/view_id_async_select.template.ts +3 -3
  233. package/src/{templates → template/implementations}/view_list.template.ts +13 -64
  234. package/src/{templates → template/implementations}/view_list_columns.template.ts +3 -3
  235. package/src/{templates → template/implementations}/view_search_input.template.ts +3 -3
  236. package/src/template/index.ts +4 -0
  237. package/src/template/template.ts +86 -0
  238. package/src/template/zod-converter.ts +219 -0
  239. package/src/testing/fixture-manager.ts +8 -1
  240. package/src/types/types.ts +38 -61
  241. package/src/utils/async-utils.ts +17 -0
  242. package/src/utils/console-util.ts +4 -0
  243. package/src/utils/esm-utils.ts +69 -0
  244. package/src/utils/path-utils.ts +102 -0
  245. package/src/utils/process-utils.ts +46 -0
  246. package/src/utils/sql-parser.ts +1 -1
  247. package/src/utils/utils.ts +14 -40
  248. package/src/utils/zod-error.ts +0 -1
  249. package/dist/api/base-frame.js.map +0 -1
  250. package/dist/api/caster.js.map +0 -1
  251. package/dist/api/code-converters.js.map +0 -1
  252. package/dist/api/context.js.map +0 -1
  253. package/dist/api/decorators.js.map +0 -1
  254. package/dist/api/index.js.map +0 -1
  255. package/dist/api/sonamu.js.map +0 -1
  256. package/dist/bin/build-config.js.map +0 -1
  257. package/dist/bin/cli-wrapper.js.map +0 -1
  258. package/dist/bin/cli.js.map +0 -1
  259. package/dist/database/_batch_update.js.map +0 -1
  260. package/dist/database/base-model.js.map +0 -1
  261. package/dist/database/code-generator.js.map +0 -1
  262. package/dist/database/db.js.map +0 -1
  263. package/dist/database/knex-plugins/knex-on-duplicate-update.js.map +0 -1
  264. package/dist/database/puri-wrapper.js.map +0 -1
  265. package/dist/database/puri.js.map +0 -1
  266. package/dist/database/puri.types.js.map +0 -1
  267. package/dist/database/transaction-context.js.map +0 -1
  268. package/dist/database/upsert-builder.js.map +0 -1
  269. package/dist/entity/entity-manager.js.map +0 -1
  270. package/dist/entity/entity-utils.js.map +0 -1
  271. package/dist/entity/entity.js.map +0 -1
  272. package/dist/exceptions/error-handler.js.map +0 -1
  273. package/dist/exceptions/so-exceptions.js.map +0 -1
  274. package/dist/file-storage/driver.js.map +0 -1
  275. package/dist/file-storage/file-storage.js.map +0 -1
  276. package/dist/index.js.map +0 -1
  277. package/dist/migration/code-generation.js.map +0 -1
  278. package/dist/migration/migration-set.js.map +0 -1
  279. package/dist/migration/migrator.js.map +0 -1
  280. package/dist/migration/types.js.map +0 -1
  281. package/dist/stream/index.js.map +0 -1
  282. package/dist/stream/sse.js.map +0 -1
  283. package/dist/syncer/index.js.map +0 -1
  284. package/dist/syncer/syncer.js.map +0 -1
  285. package/dist/templates/base-template.d.ts +0 -13
  286. package/dist/templates/base-template.d.ts.map +0 -1
  287. package/dist/templates/base-template.js +0 -2
  288. package/dist/templates/base-template.js.map +0 -1
  289. package/dist/templates/entity.template.d.ts.map +0 -1
  290. package/dist/templates/entity.template.js +0 -2
  291. package/dist/templates/entity.template.js.map +0 -1
  292. package/dist/templates/generated.template.d.ts.map +0 -1
  293. package/dist/templates/generated.template.js +0 -2
  294. package/dist/templates/generated.template.js.map +0 -1
  295. package/dist/templates/generated_http.template.d.ts.map +0 -1
  296. package/dist/templates/generated_http.template.js +0 -2
  297. package/dist/templates/generated_http.template.js.map +0 -1
  298. package/dist/templates/generated_sso.template.d.ts.map +0 -1
  299. package/dist/templates/generated_sso.template.js +0 -2
  300. package/dist/templates/generated_sso.template.js.map +0 -1
  301. package/dist/templates/index.d.ts +0 -2
  302. package/dist/templates/index.d.ts.map +0 -1
  303. package/dist/templates/index.js +0 -2
  304. package/dist/templates/index.js.map +0 -1
  305. package/dist/templates/init_types.template.d.ts.map +0 -1
  306. package/dist/templates/init_types.template.js +0 -2
  307. package/dist/templates/init_types.template.js.map +0 -1
  308. package/dist/templates/model.template.d.ts +0 -17
  309. package/dist/templates/model.template.d.ts.map +0 -1
  310. package/dist/templates/model.template.js +0 -2
  311. package/dist/templates/model.template.js.map +0 -1
  312. package/dist/templates/model_test.template.d.ts.map +0 -1
  313. package/dist/templates/model_test.template.js +0 -2
  314. package/dist/templates/model_test.template.js.map +0 -1
  315. package/dist/templates/service.template.d.ts.map +0 -1
  316. package/dist/templates/service.template.js +0 -2
  317. package/dist/templates/service.template.js.map +0 -1
  318. package/dist/templates/view_enums_buttonset.template.d.ts.map +0 -1
  319. package/dist/templates/view_enums_buttonset.template.js +0 -2
  320. package/dist/templates/view_enums_buttonset.template.js.map +0 -1
  321. package/dist/templates/view_enums_dropdown.template.d.ts.map +0 -1
  322. package/dist/templates/view_enums_dropdown.template.js +0 -2
  323. package/dist/templates/view_enums_dropdown.template.js.map +0 -1
  324. package/dist/templates/view_enums_select.template.d.ts.map +0 -1
  325. package/dist/templates/view_enums_select.template.js +0 -2
  326. package/dist/templates/view_enums_select.template.js.map +0 -1
  327. package/dist/templates/view_form.template.d.ts.map +0 -1
  328. package/dist/templates/view_form.template.js +0 -2
  329. package/dist/templates/view_form.template.js.map +0 -1
  330. package/dist/templates/view_id_all_select.template.d.ts.map +0 -1
  331. package/dist/templates/view_id_all_select.template.js +0 -2
  332. package/dist/templates/view_id_all_select.template.js.map +0 -1
  333. package/dist/templates/view_id_async_select.template.d.ts.map +0 -1
  334. package/dist/templates/view_id_async_select.template.js +0 -2
  335. package/dist/templates/view_id_async_select.template.js.map +0 -1
  336. package/dist/templates/view_list.template.d.ts.map +0 -1
  337. package/dist/templates/view_list.template.js +0 -2
  338. package/dist/templates/view_list.template.js.map +0 -1
  339. package/dist/templates/view_list_columns.template.d.ts.map +0 -1
  340. package/dist/templates/view_list_columns.template.js +0 -2
  341. package/dist/templates/view_list_columns.template.js.map +0 -1
  342. package/dist/templates/view_search_input.template.d.ts.map +0 -1
  343. package/dist/templates/view_search_input.template.js +0 -2
  344. package/dist/templates/view_search_input.template.js.map +0 -1
  345. package/dist/testing/_relation-graph.js.map +0 -1
  346. package/dist/testing/fixture-manager.js.map +0 -1
  347. package/dist/types/types.js.map +0 -1
  348. package/dist/typings/knex.d.js.map +0 -1
  349. package/dist/utils/async-utils.js.map +0 -1
  350. package/dist/utils/controller.js.map +0 -1
  351. package/dist/utils/fs-utils.js.map +0 -1
  352. package/dist/utils/lodash-able.js.map +0 -1
  353. package/dist/utils/model.js.map +0 -1
  354. package/dist/utils/sql-parser.js.map +0 -1
  355. package/dist/utils/utils.js.map +0 -1
  356. package/dist/utils/zod-error.js.map +0 -1
  357. package/src/templates/base-template.ts +0 -19
  358. package/src/templates/index.ts +0 -1
@@ -0,0 +1,131 @@
1
+ import qs from "qs";
2
+ import { z } from "zod";
3
+ import { getZodObjectFromApi } from "../../api/code-converters.js";
4
+ import { Template } from "../template.js";
5
+ import prettier from "prettier";
6
+ import { Sonamu } from "../../api/sonamu.js";
7
+ export class Template__generated_http extends Template {
8
+ constructor(){
9
+ super("generated_http");
10
+ }
11
+ getTargetAndPath() {
12
+ const { dir } = Sonamu.config.api;
13
+ return {
14
+ target: `${dir}/src/application`,
15
+ path: `sonamu.generated.http`
16
+ };
17
+ }
18
+ async render({}) {
19
+ const { syncer: { types, apis }, config: { api: { route: { prefix } } } } = Sonamu;
20
+ const lines = await Promise.all(apis.map(async (api)=>{
21
+ const reqObject = this.resolveApiParams(api, types);
22
+ const dataLines = await (async ()=>{
23
+ if ((api.options.httpMethod ?? "GET") === "GET") {
24
+ return {
25
+ querystring: [
26
+ qs.stringify(reqObject, {
27
+ encode: false
28
+ }).split("&").join("\n\t&")
29
+ ],
30
+ body: []
31
+ };
32
+ } else {
33
+ return {
34
+ querystring: [],
35
+ body: [
36
+ "",
37
+ await prettier.format(JSON.stringify(reqObject), {
38
+ parser: "json"
39
+ })
40
+ ]
41
+ };
42
+ }
43
+ })();
44
+ return [
45
+ [
46
+ `${api.options.httpMethod ?? "GET"} {{baseUrl}}${prefix}${api.path}`,
47
+ ...dataLines.querystring
48
+ ].join("\n\t?"),
49
+ `Content-Type: ${api.options.contentType ?? "application/json"}`,
50
+ ...dataLines.body
51
+ ].join("\n");
52
+ }));
53
+ return {
54
+ ...this.getTargetAndPath(),
55
+ body: lines.join("\n\n###\n\n"),
56
+ importKeys: []
57
+ };
58
+ }
59
+ zodTypeToReqDefault(zodType, name) {
60
+ if (zodType instanceof z.ZodObject) {
61
+ return Object.fromEntries(Object.keys(zodType.shape).map((key)=>[
62
+ key,
63
+ this.zodTypeToReqDefault(zodType.shape[key], key)
64
+ ]));
65
+ } else if (zodType instanceof z.ZodArray) {
66
+ return [
67
+ this.zodTypeToReqDefault(zodType.element, name)
68
+ ];
69
+ } else if (zodType instanceof z.ZodString) {
70
+ if (name.endsWith("_at") || name.endsWith("_date") || name === "range") {
71
+ return "2000-01-01";
72
+ } else {
73
+ return name.toUpperCase();
74
+ }
75
+ } else if (zodType instanceof z.ZodNumber) {
76
+ if (name === "num") {
77
+ return 24;
78
+ }
79
+ const minValue = zodType.minValue ?? 0;
80
+ return minValue > Number.MIN_SAFE_INTEGER ? minValue : 0;
81
+ } else if (zodType instanceof z.ZodBoolean) {
82
+ return false;
83
+ } else if (zodType instanceof z.ZodEnum) {
84
+ return zodType.options[0];
85
+ } else if (zodType instanceof z.ZodOptional) {
86
+ return this.zodTypeToReqDefault(zodType.def.innerType, name);
87
+ } else if (zodType instanceof z.ZodNullable) {
88
+ return null;
89
+ } else if (zodType instanceof z.ZodUnion) {
90
+ return this.zodTypeToReqDefault(zodType.def.options[0], name);
91
+ } else if (zodType instanceof z.ZodUnknown) {
92
+ return "unknown";
93
+ } else if (zodType instanceof z.ZodTuple) {
94
+ return zodType.def.items.map((item)=>this.zodTypeToReqDefault(item, name));
95
+ } else if (zodType instanceof z.ZodDate) {
96
+ return "2000-01-01";
97
+ } else if (zodType instanceof z.ZodLiteral) {
98
+ return zodType.value;
99
+ } else if (zodType instanceof z.ZodRecord || zodType instanceof z.ZodMap) {
100
+ const kvDef = zodType.def;
101
+ const key = this.zodTypeToReqDefault(kvDef.keyType, name);
102
+ const value = this.zodTypeToReqDefault(kvDef.valueType, name);
103
+ return {
104
+ [key]: value
105
+ };
106
+ } else if (zodType instanceof z.ZodSet) {
107
+ return [
108
+ this.zodTypeToReqDefault(zodType.def.valueType, name)
109
+ ];
110
+ } else if (zodType instanceof z.ZodIntersection) {
111
+ return this.zodTypeToReqDefault(zodType.def.right, name);
112
+ } else if (zodType instanceof z.ZodDefault) {
113
+ return this.zodTypeToReqDefault(zodType.def.innerType, name);
114
+ } else {
115
+ // console.log(zodType);
116
+ return `unknown-${zodType.type}`;
117
+ }
118
+ }
119
+ resolveApiParams(api, references) {
120
+ const reqType = getZodObjectFromApi(api, references);
121
+ try {
122
+ const def = this.zodTypeToReqDefault(reqType, "unknownName");
123
+ return def;
124
+ } catch (error) {
125
+ console.error(error);
126
+ throw new Error(`Invalid zod type detected on ${api.modelName}:${api.methodName}`);
127
+ }
128
+ }
129
+ }
130
+
131
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZW1wbGF0ZS9pbXBsZW1lbnRhdGlvbnMvZ2VuZXJhdGVkX2h0dHAudGVtcGxhdGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHFzIGZyb20gXCJxc1wiO1xuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIjtcbmltcG9ydCB7IFRlbXBsYXRlT3B0aW9ucyB9IGZyb20gXCIuLi8uLi90eXBlcy90eXBlc1wiO1xuaW1wb3J0IHsgZ2V0Wm9kT2JqZWN0RnJvbUFwaSB9IGZyb20gXCIuLi8uLi9hcGkvY29kZS1jb252ZXJ0ZXJzXCI7XG5pbXBvcnQgeyBFeHRlbmRlZEFwaSB9IGZyb20gXCIuLi8uLi9hcGkvZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgVGVtcGxhdGUgfSBmcm9tIFwiLi4vdGVtcGxhdGVcIjtcbmltcG9ydCBwcmV0dGllciBmcm9tIFwicHJldHRpZXJcIjtcbmltcG9ydCB7IFNvbmFtdSB9IGZyb20gXCIuLi8uLi9hcGkvc29uYW11XCI7XG5cbmV4cG9ydCBjbGFzcyBUZW1wbGF0ZV9fZ2VuZXJhdGVkX2h0dHAgZXh0ZW5kcyBUZW1wbGF0ZSB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKFwiZ2VuZXJhdGVkX2h0dHBcIik7XG4gIH1cblxuICBnZXRUYXJnZXRBbmRQYXRoKCkge1xuICAgIGNvbnN0IHsgZGlyIH0gPSBTb25hbXUuY29uZmlnLmFwaTtcblxuICAgIHJldHVybiB7XG4gICAgICB0YXJnZXQ6IGAke2Rpcn0vc3JjL2FwcGxpY2F0aW9uYCxcbiAgICAgIHBhdGg6IGBzb25hbXUuZ2VuZXJhdGVkLmh0dHBgLFxuICAgIH07XG4gIH1cblxuICBhc3luYyByZW5kZXIoe306IFRlbXBsYXRlT3B0aW9uc1tcImdlbmVyYXRlZF9odHRwXCJdKSB7XG4gICAgY29uc3Qge1xuICAgICAgc3luY2VyOiB7IHR5cGVzLCBhcGlzIH0sXG4gICAgICBjb25maWc6IHtcbiAgICAgICAgYXBpOiB7XG4gICAgICAgICAgcm91dGU6IHsgcHJlZml4IH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0gPSBTb25hbXU7XG5cbiAgICBjb25zdCBsaW5lcyA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgYXBpcy5tYXAoYXN5bmMgKGFwaSkgPT4ge1xuICAgICAgICBjb25zdCByZXFPYmplY3QgPSB0aGlzLnJlc29sdmVBcGlQYXJhbXMoYXBpLCB0eXBlcyk7XG5cbiAgICAgICAgY29uc3QgZGF0YUxpbmVzID0gYXdhaXQgKGFzeW5jICgpID0+IHtcbiAgICAgICAgICBpZiAoKGFwaS5vcHRpb25zLmh0dHBNZXRob2QgPz8gXCJHRVRcIikgPT09IFwiR0VUXCIpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIHF1ZXJ5c3RyaW5nOiBbXG4gICAgICAgICAgICAgICAgcXNcbiAgICAgICAgICAgICAgICAgIC5zdHJpbmdpZnkocmVxT2JqZWN0LCB7IGVuY29kZTogZmFsc2UgfSlcbiAgICAgICAgICAgICAgICAgIC5zcGxpdChcIiZcIilcbiAgICAgICAgICAgICAgICAgIC5qb2luKFwiXFxuXFx0JlwiKSxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgYm9keTogW10sXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICBxdWVyeXN0cmluZzogW10sXG4gICAgICAgICAgICAgIGJvZHk6IFtcbiAgICAgICAgICAgICAgICBcIlwiLFxuICAgICAgICAgICAgICAgIGF3YWl0IHByZXR0aWVyLmZvcm1hdChKU09OLnN0cmluZ2lmeShyZXFPYmplY3QpLCB7XG4gICAgICAgICAgICAgICAgICBwYXJzZXI6IFwianNvblwiLFxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pKCk7XG5cbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICBbXG4gICAgICAgICAgICBgJHthcGkub3B0aW9ucy5odHRwTWV0aG9kID8/IFwiR0VUXCJ9IHt7YmFzZVVybH19JHtwcmVmaXh9JHthcGkucGF0aH1gLFxuICAgICAgICAgICAgLi4uZGF0YUxpbmVzLnF1ZXJ5c3RyaW5nLFxuICAgICAgICAgIF0uam9pbihcIlxcblxcdD9cIiksXG4gICAgICAgICAgYENvbnRlbnQtVHlwZTogJHthcGkub3B0aW9ucy5jb250ZW50VHlwZSA/PyBcImFwcGxpY2F0aW9uL2pzb25cIn1gLFxuICAgICAgICAgIC4uLmRhdGFMaW5lcy5ib2R5LFxuICAgICAgICBdLmpvaW4oXCJcXG5cIik7XG4gICAgICB9KVxuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4udGhpcy5nZXRUYXJnZXRBbmRQYXRoKCksXG4gICAgICBib2R5OiBsaW5lcy5qb2luKFwiXFxuXFxuIyMjXFxuXFxuXCIpLFxuICAgICAgaW1wb3J0S2V5czogW10sXG4gICAgfTtcbiAgfVxuXG4gIHpvZFR5cGVUb1JlcURlZmF1bHQoem9kVHlwZTogei5ab2RUeXBlPHVua25vd24+LCBuYW1lOiBzdHJpbmcpOiB1bmtub3duIHtcbiAgICBpZiAoem9kVHlwZSBpbnN0YW5jZW9mIHouWm9kT2JqZWN0KSB7XG4gICAgICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgICAgICBPYmplY3Qua2V5cyh6b2RUeXBlLnNoYXBlKS5tYXAoKGtleSkgPT4gW1xuICAgICAgICAgIGtleSxcbiAgICAgICAgICB0aGlzLnpvZFR5cGVUb1JlcURlZmF1bHQoem9kVHlwZS5zaGFwZVtrZXldLCBrZXkpLFxuICAgICAgICBdKVxuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKHpvZFR5cGUgaW5zdGFuY2VvZiB6LlpvZEFycmF5KSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICB0aGlzLnpvZFR5cGVUb1JlcURlZmF1bHQoXG4gICAgICAgICAgKHpvZFR5cGUgYXMgei5ab2RBcnJheTx6LlpvZFR5cGU+KS5lbGVtZW50LFxuICAgICAgICAgIG5hbWVcbiAgICAgICAgKSxcbiAgICAgIF07XG4gICAgfSBlbHNlIGlmICh6b2RUeXBlIGluc3RhbmNlb2Ygei5ab2RTdHJpbmcpIHtcbiAgICAgIGlmIChuYW1lLmVuZHNXaXRoKFwiX2F0XCIpIHx8IG5hbWUuZW5kc1dpdGgoXCJfZGF0ZVwiKSB8fCBuYW1lID09PSBcInJhbmdlXCIpIHtcbiAgICAgICAgcmV0dXJuIFwiMjAwMC0wMS0wMVwiO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG5hbWUudG9VcHBlckNhc2UoKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHpvZFR5cGUgaW5zdGFuY2VvZiB6LlpvZE51bWJlcikge1xuICAgICAgaWYgKG5hbWUgPT09IFwibnVtXCIpIHtcbiAgICAgICAgcmV0dXJuIDI0O1xuICAgICAgfVxuXG4gICAgICBjb25zdCBtaW5WYWx1ZSA9IHpvZFR5cGUubWluVmFsdWUgPz8gMDtcbiAgICAgIHJldHVybiBtaW5WYWx1ZSA+IE51bWJlci5NSU5fU0FGRV9JTlRFR0VSID8gbWluVmFsdWUgOiAwO1xuICAgIH0gZWxzZSBpZiAoem9kVHlwZSBpbnN0YW5jZW9mIHouWm9kQm9vbGVhbikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gZWxzZSBpZiAoem9kVHlwZSBpbnN0YW5jZW9mIHouWm9kRW51bSkge1xuICAgICAgcmV0dXJuIHpvZFR5cGUub3B0aW9uc1swXTtcbiAgICB9IGVsc2UgaWYgKHpvZFR5cGUgaW5zdGFuY2VvZiB6LlpvZE9wdGlvbmFsKSB7XG4gICAgICByZXR1cm4gdGhpcy56b2RUeXBlVG9SZXFEZWZhdWx0KFxuICAgICAgICAoem9kVHlwZSBhcyB6LlpvZE9wdGlvbmFsPHouWm9kVHlwZT4pLmRlZi5pbm5lclR5cGUsXG4gICAgICAgIG5hbWVcbiAgICAgICk7XG4gICAgfSBlbHNlIGlmICh6b2RUeXBlIGluc3RhbmNlb2Ygei5ab2ROdWxsYWJsZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfSBlbHNlIGlmICh6b2RUeXBlIGluc3RhbmNlb2Ygei5ab2RVbmlvbikge1xuICAgICAgcmV0dXJuIHRoaXMuem9kVHlwZVRvUmVxRGVmYXVsdChcbiAgICAgICAgKHpvZFR5cGUgYXMgei5ab2RVbmlvbjx6LlpvZFR5cGVbXT4pLmRlZi5vcHRpb25zWzBdLFxuICAgICAgICBuYW1lXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAoem9kVHlwZSBpbnN0YW5jZW9mIHouWm9kVW5rbm93bikge1xuICAgICAgcmV0dXJuIFwidW5rbm93blwiO1xuICAgIH0gZWxzZSBpZiAoem9kVHlwZSBpbnN0YW5jZW9mIHouWm9kVHVwbGUpIHtcbiAgICAgIHJldHVybiB6b2RUeXBlLmRlZi5pdGVtcy5tYXAoKGl0ZW06IGFueSkgPT5cbiAgICAgICAgdGhpcy56b2RUeXBlVG9SZXFEZWZhdWx0KGl0ZW0sIG5hbWUpXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAoem9kVHlwZSBpbnN0YW5jZW9mIHouWm9kRGF0ZSkge1xuICAgICAgcmV0dXJuIFwiMjAwMC0wMS0wMVwiO1xuICAgIH0gZWxzZSBpZiAoem9kVHlwZSBpbnN0YW5jZW9mIHouWm9kTGl0ZXJhbCkge1xuICAgICAgcmV0dXJuIHpvZFR5cGUudmFsdWU7XG4gICAgfSBlbHNlIGlmICh6b2RUeXBlIGluc3RhbmNlb2Ygei5ab2RSZWNvcmQgfHwgem9kVHlwZSBpbnN0YW5jZW9mIHouWm9kTWFwKSB7XG4gICAgICBjb25zdCBrdkRlZiA9IChcbiAgICAgICAgem9kVHlwZSBhcyB6LlpvZFJlY29yZDxhbnksIHouWm9kVHlwZT4gfCB6LlpvZE1hcDx6LlpvZFR5cGUsIHouWm9kVHlwZT5cbiAgICAgICkuZGVmO1xuICAgICAgY29uc3Qga2V5ID0gdGhpcy56b2RUeXBlVG9SZXFEZWZhdWx0KGt2RGVmLmtleVR5cGUsIG5hbWUpIGFzIGFueTtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy56b2RUeXBlVG9SZXFEZWZhdWx0KGt2RGVmLnZhbHVlVHlwZSwgbmFtZSk7XG4gICAgICByZXR1cm4geyBba2V5XTogdmFsdWUgfTtcbiAgICB9IGVsc2UgaWYgKHpvZFR5cGUgaW5zdGFuY2VvZiB6LlpvZFNldCkge1xuICAgICAgcmV0dXJuIFtcbiAgICAgICAgdGhpcy56b2RUeXBlVG9SZXFEZWZhdWx0KFxuICAgICAgICAgICh6b2RUeXBlIGFzIHouWm9kU2V0PHouWm9kVHlwZT4pLmRlZi52YWx1ZVR5cGUsXG4gICAgICAgICAgbmFtZVxuICAgICAgICApLFxuICAgICAgXTtcbiAgICB9IGVsc2UgaWYgKHpvZFR5cGUgaW5zdGFuY2VvZiB6LlpvZEludGVyc2VjdGlvbikge1xuICAgICAgcmV0dXJuIHRoaXMuem9kVHlwZVRvUmVxRGVmYXVsdChcbiAgICAgICAgKHpvZFR5cGUgYXMgei5ab2RJbnRlcnNlY3Rpb248ei5ab2RUeXBlLCB6LlpvZFR5cGU+KS5kZWYucmlnaHQsXG4gICAgICAgIG5hbWVcbiAgICAgICk7XG4gICAgfSBlbHNlIGlmICh6b2RUeXBlIGluc3RhbmNlb2Ygei5ab2REZWZhdWx0KSB7XG4gICAgICByZXR1cm4gdGhpcy56b2RUeXBlVG9SZXFEZWZhdWx0KFxuICAgICAgICAoem9kVHlwZSBhcyB6LlpvZERlZmF1bHQ8ei5ab2RUeXBlPikuZGVmLmlubmVyVHlwZSxcbiAgICAgICAgbmFtZVxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gY29uc29sZS5sb2coem9kVHlwZSk7XG4gICAgICByZXR1cm4gYHVua25vd24tJHt6b2RUeXBlLnR5cGV9YDtcbiAgICB9XG4gIH1cblxuICByZXNvbHZlQXBpUGFyYW1zKFxuICAgIGFwaTogRXh0ZW5kZWRBcGksXG4gICAgcmVmZXJlbmNlczogeyBbdHlwZU5hbWU6IHN0cmluZ106IHouWm9kT2JqZWN0PGFueT4gfVxuICApOiB7IFtrZXk6IHN0cmluZ106IHVua25vd24gfSB7XG4gICAgY29uc3QgcmVxVHlwZSA9IGdldFpvZE9iamVjdEZyb21BcGkoYXBpLCByZWZlcmVuY2VzKTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgZGVmID0gdGhpcy56b2RUeXBlVG9SZXFEZWZhdWx0KHJlcVR5cGUsIFwidW5rbm93bk5hbWVcIikgYXMge1xuICAgICAgICBba2V5OiBzdHJpbmddOiB1bmtub3duO1xuICAgICAgfTtcbiAgICAgIHJldHVybiBkZWY7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgSW52YWxpZCB6b2QgdHlwZSBkZXRlY3RlZCBvbiAke2FwaS5tb2RlbE5hbWV9OiR7YXBpLm1ldGhvZE5hbWV9YFxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJxcyIsInoiLCJnZXRab2RPYmplY3RGcm9tQXBpIiwiVGVtcGxhdGUiLCJwcmV0dGllciIsIlNvbmFtdSIsIlRlbXBsYXRlX19nZW5lcmF0ZWRfaHR0cCIsImdldFRhcmdldEFuZFBhdGgiLCJkaXIiLCJjb25maWciLCJhcGkiLCJ0YXJnZXQiLCJwYXRoIiwicmVuZGVyIiwic3luY2VyIiwidHlwZXMiLCJhcGlzIiwicm91dGUiLCJwcmVmaXgiLCJsaW5lcyIsIlByb21pc2UiLCJhbGwiLCJtYXAiLCJyZXFPYmplY3QiLCJyZXNvbHZlQXBpUGFyYW1zIiwiZGF0YUxpbmVzIiwib3B0aW9ucyIsImh0dHBNZXRob2QiLCJxdWVyeXN0cmluZyIsInN0cmluZ2lmeSIsImVuY29kZSIsInNwbGl0Iiwiam9pbiIsImJvZHkiLCJmb3JtYXQiLCJKU09OIiwicGFyc2VyIiwiY29udGVudFR5cGUiLCJpbXBvcnRLZXlzIiwiem9kVHlwZVRvUmVxRGVmYXVsdCIsInpvZFR5cGUiLCJuYW1lIiwiWm9kT2JqZWN0IiwiT2JqZWN0IiwiZnJvbUVudHJpZXMiLCJrZXlzIiwic2hhcGUiLCJrZXkiLCJab2RBcnJheSIsImVsZW1lbnQiLCJab2RTdHJpbmciLCJlbmRzV2l0aCIsInRvVXBwZXJDYXNlIiwiWm9kTnVtYmVyIiwibWluVmFsdWUiLCJOdW1iZXIiLCJNSU5fU0FGRV9JTlRFR0VSIiwiWm9kQm9vbGVhbiIsIlpvZEVudW0iLCJab2RPcHRpb25hbCIsImRlZiIsImlubmVyVHlwZSIsIlpvZE51bGxhYmxlIiwiWm9kVW5pb24iLCJab2RVbmtub3duIiwiWm9kVHVwbGUiLCJpdGVtcyIsIml0ZW0iLCJab2REYXRlIiwiWm9kTGl0ZXJhbCIsInZhbHVlIiwiWm9kUmVjb3JkIiwiWm9kTWFwIiwia3ZEZWYiLCJrZXlUeXBlIiwidmFsdWVUeXBlIiwiWm9kU2V0IiwiWm9kSW50ZXJzZWN0aW9uIiwicmlnaHQiLCJab2REZWZhdWx0IiwidHlwZSIsInJlZmVyZW5jZXMiLCJyZXFUeXBlIiwiZXJyb3IiLCJjb25zb2xlIiwiRXJyb3IiLCJtb2RlbE5hbWUiLCJtZXRob2ROYW1lIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPQSxRQUFRLEtBQUs7QUFDcEIsU0FBU0MsQ0FBQyxRQUFRLE1BQU07QUFFeEIsU0FBU0MsbUJBQW1CLFFBQVEsK0JBQTRCO0FBRWhFLFNBQVNDLFFBQVEsUUFBUSxpQkFBYztBQUN2QyxPQUFPQyxjQUFjLFdBQVc7QUFDaEMsU0FBU0MsTUFBTSxRQUFRLHNCQUFtQjtBQUUxQyxPQUFPLE1BQU1DLGlDQUFpQ0g7SUFDNUMsYUFBYztRQUNaLEtBQUssQ0FBQztJQUNSO0lBRUFJLG1CQUFtQjtRQUNqQixNQUFNLEVBQUVDLEdBQUcsRUFBRSxHQUFHSCxPQUFPSSxNQUFNLENBQUNDLEdBQUc7UUFFakMsT0FBTztZQUNMQyxRQUFRLEdBQUdILElBQUksZ0JBQWdCLENBQUM7WUFDaENJLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQztRQUMvQjtJQUNGO0lBRUEsTUFBTUMsT0FBTyxFQUFxQyxFQUFFO1FBQ2xELE1BQU0sRUFDSkMsUUFBUSxFQUFFQyxLQUFLLEVBQUVDLElBQUksRUFBRSxFQUN2QlAsUUFBUSxFQUNOQyxLQUFLLEVBQ0hPLE9BQU8sRUFBRUMsTUFBTSxFQUFFLEVB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
@@ -1,7 +1,7 @@
1
- import { TemplateOptions } from "../types/types";
2
- import { Template } from "./base-template";
1
+ import { TemplateOptions } from "../../types/types";
2
+ import { Template } from "../template";
3
3
  import { SourceCode } from "./generated.template";
4
- import { Entity } from "../entity/entity";
4
+ import { Entity } from "../../entity/entity";
5
5
  export declare class Template__generated_sso extends Template {
6
6
  constructor();
7
7
  getTargetAndPath(): {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generated_sso.template.d.ts","sourceRoot":"","sources":["../../../src/template/implementations/generated_sso.template.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,eAAe,EAChB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAIlD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C,qBAAa,uBAAwB,SAAQ,QAAQ;;IAKnD,gBAAgB;;;;IAShB,MAAM,CAAC,EAAE,EAAE,eAAe,CAAC,eAAe,CAAC;;;;;;;IA2E3C,2BAA2B,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,UAAU,GAAG,IAAI;CAkCnE"}
@@ -0,0 +1,105 @@
1
+ import { isManyToManyRelationProp } from "../../types/types.js";
2
+ import { EntityManager } from "../../entity/entity-manager.js";
3
+ import { Template } from "../template.js";
4
+ import inflection from "inflection";
5
+ import * as _ from "lodash-es";
6
+ import { nonNullable } from "../../utils/utils.js";
7
+ import { Sonamu } from "../../api/index.js";
8
+ export class Template__generated_sso extends Template {
9
+ constructor(){
10
+ super("generated_sso");
11
+ }
12
+ getTargetAndPath() {
13
+ const { dir } = Sonamu.config.api;
14
+ return {
15
+ target: `${dir}/src/application`,
16
+ path: `sonamu.generated.sso.ts`
17
+ };
18
+ }
19
+ render({}) {
20
+ const entityIds = EntityManager.getAllIds();
21
+ const entities = entityIds.map((id)=>EntityManager.get(id));
22
+ const sourceCodes = entities.map((entity)=>{
23
+ if (entity.parentId !== undefined || Object.keys(entity.subsets).length === 0) {
24
+ return null;
25
+ }
26
+ const subsetKeys = Object.keys(entity.subsets);
27
+ const subsetQueryObject = subsetKeys.reduce((r, subsetKey)=>{
28
+ const subsetQuery = entity.getSubsetQuery(subsetKey);
29
+ r[subsetKey] = subsetQuery;
30
+ return r;
31
+ }, {});
32
+ const subsetKeyTypeName = `${entity.names.module}SubsetKey`;
33
+ return {
34
+ label: `SubsetQuery: ${entity.id}`,
35
+ lines: [
36
+ `export const ${inflection.camelize(entity.id, true)}SubsetQueries:{ [key in ${subsetKeyTypeName}]: SubsetQuery} = ${JSON.stringify(subsetQueryObject)};`,
37
+ ""
38
+ ],
39
+ importKeys: [
40
+ subsetKeyTypeName
41
+ ]
42
+ };
43
+ }).filter(nonNullable);
44
+ // DatabaseSchema 생성
45
+ const dbSchemaSourceCode = this.getDatabaseSchemaSourceCode(entities);
46
+ if (dbSchemaSourceCode) {
47
+ sourceCodes.push(dbSchemaSourceCode);
48
+ }
49
+ const sourceCode = sourceCodes.reduce((result, ts)=>{
50
+ if (ts === null) {
51
+ return result;
52
+ }
53
+ return {
54
+ lines: [
55
+ ...result.lines,
56
+ `// ${ts.label}`,
57
+ ...ts.lines,
58
+ ""
59
+ ],
60
+ importKeys: _.uniq([
61
+ ...result.importKeys,
62
+ ...ts.importKeys
63
+ ])
64
+ };
65
+ }, {
66
+ lines: [],
67
+ importKeys: []
68
+ });
69
+ const body = sourceCode.lines.join("\n");
70
+ const isUsingManyToManyBaseSchema = body.includes("ManyToManyBaseSchema");
71
+ return {
72
+ ...this.getTargetAndPath(),
73
+ body: sourceCode.lines.join("\n"),
74
+ importKeys: sourceCode.importKeys,
75
+ customHeaders: [
76
+ `import { SubsetQuery, ${isUsingManyToManyBaseSchema ? "ManyToManyBaseSchema" : ""} } from "sonamu";`
77
+ ]
78
+ };
79
+ }
80
+ getDatabaseSchemaSourceCode(entities) {
81
+ if (entities.length === 0) {
82
+ return null;
83
+ }
84
+ const entitySchemaLines = entities.map((entity)=>`${entity.table}: ${entity.id}BaseSchema;`);
85
+ const joinTableSchemaLines = _.uniq(entities.flatMap((entity)=>entity.props.filter(isManyToManyRelationProp).map((prop)=>{
86
+ const fromTableKey = inflection.singularize(entity.table);
87
+ const toTableKey = inflection.singularize(EntityManager.get(prop.with).table);
88
+ return `${prop.joinTable}: ManyToManyBaseSchema<"${fromTableKey}", "${toTableKey}">;`;
89
+ })));
90
+ return {
91
+ label: `DatabaseSchema`,
92
+ lines: [
93
+ `declare module "sonamu" {`,
94
+ ` export interface DatabaseSchemaExtend {`,
95
+ ...entitySchemaLines,
96
+ ...joinTableSchemaLines,
97
+ ` }`,
98
+ `}`
99
+ ],
100
+ importKeys: entities.map((entity)=>`${entity.id}BaseSchema`)
101
+ };
102
+ }
103
+ }
104
+
105
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZW1wbGF0ZS9pbXBsZW1lbnRhdGlvbnMvZ2VuZXJhdGVkX3Nzby50ZW1wbGF0ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBpc01hbnlUb01hbnlSZWxhdGlvblByb3AsXG4gIFN1YnNldFF1ZXJ5LFxuICBUZW1wbGF0ZU9wdGlvbnMsXG59IGZyb20gXCIuLi8uLi90eXBlcy90eXBlc1wiO1xuaW1wb3J0IHsgRW50aXR5TWFuYWdlciB9IGZyb20gXCIuLi8uLi9lbnRpdHkvZW50aXR5LW1hbmFnZXJcIjtcbmltcG9ydCB7IFRlbXBsYXRlIH0gZnJvbSBcIi4uL3RlbXBsYXRlXCI7XG5pbXBvcnQgaW5mbGVjdGlvbiBmcm9tIFwiaW5mbGVjdGlvblwiO1xuaW1wb3J0IHsgU291cmNlQ29kZSB9IGZyb20gXCIuL2dlbmVyYXRlZC50ZW1wbGF0ZVwiO1xuaW1wb3J0ICogYXMgXyBmcm9tIFwibG9kYXNoLWVzXCI7XG5pbXBvcnQgeyBub25OdWxsYWJsZSB9IGZyb20gXCIuLi8uLi91dGlscy91dGlsc1wiO1xuaW1wb3J0IHsgU29uYW11IH0gZnJvbSBcIi4uLy4uL2FwaVwiO1xuaW1wb3J0IHsgRW50aXR5IH0gZnJvbSBcIi4uLy4uL2VudGl0eS9lbnRpdHlcIjtcblxuZXhwb3J0IGNsYXNzIFRlbXBsYXRlX19nZW5lcmF0ZWRfc3NvIGV4dGVuZHMgVGVtcGxhdGUge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihcImdlbmVyYXRlZF9zc29cIik7XG4gIH1cblxuICBnZXRUYXJnZXRBbmRQYXRoKCkge1xuICAgIGNvbnN0IHsgZGlyIH0gPSBTb25hbXUuY29uZmlnLmFwaTtcblxuICAgIHJldHVybiB7XG4gICAgICB0YXJnZXQ6IGAke2Rpcn0vc3JjL2FwcGxpY2F0aW9uYCxcbiAgICAgIHBhdGg6IGBzb25hbXUuZ2VuZXJhdGVkLnNzby50c2AsXG4gICAgfTtcbiAgfVxuXG4gIHJlbmRlcih7fTogVGVtcGxhdGVPcHRpb25zW1wiZ2VuZXJhdGVkX3Nzb1wiXSkge1xuICAgIGNvbnN0IGVudGl0eUlkcyA9IEVudGl0eU1hbmFnZXIuZ2V0QWxsSWRzKCk7XG4gICAgY29uc3QgZW50aXRpZXMgPSBlbnRpdHlJZHMubWFwKChpZCkgPT4gRW50aXR5TWFuYWdlci5nZXQoaWQpKTtcblxuICAgIGNvbnN0IHNvdXJjZUNvZGVzOiBTb3VyY2VDb2RlW10gPSBlbnRpdGllc1xuICAgICAgLm1hcCgoZW50aXR5KSA9PiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBlbnRpdHkucGFyZW50SWQgIT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgIE9iamVjdC5rZXlzKGVudGl0eS5zdWJzZXRzKS5sZW5ndGggPT09IDBcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc3Vic2V0S2V5cyA9IE9iamVjdC5rZXlzKGVudGl0eS5zdWJzZXRzKTtcbiAgICAgICAgY29uc3Qgc3Vic2V0UXVlcnlPYmplY3QgPSBzdWJzZXRLZXlzLnJlZHVjZShcbiAgICAgICAgICAociwgc3Vic2V0S2V5KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzdWJzZXRRdWVyeSA9IGVudGl0eS5nZXRTdWJzZXRRdWVyeShzdWJzZXRLZXkpO1xuICAgICAgICAgICAgcltzdWJzZXRLZXldID0gc3Vic2V0UXVlcnk7XG4gICAgICAgICAgICByZXR1cm4gcjtcbiAgICAgICAgICB9LFxuICAgICAgICAgIHt9IGFzIHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IFN1YnNldFF1ZXJ5O1xuICAgICAgICAgIH1cbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBzdWJzZXRLZXlUeXBlTmFtZSA9IGAke2VudGl0eS5uYW1lcy5tb2R1bGV9U3Vic2V0S2V5YDtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBsYWJlbDogYFN1YnNldFF1ZXJ5OiAke2VudGl0eS5pZH1gLFxuICAgICAgICAgIGxpbmVzOiBbXG4gICAgICAgICAgICBgZXhwb3J0IGNvbnN0ICR7aW5mbGVjdGlvbi5jYW1lbGl6ZShcbiAgICAgICAgICAgICAgZW50aXR5LmlkLFxuICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICApfVN1YnNldFF1ZXJpZXM6eyBba2V5IGluICR7c3Vic2V0S2V5VHlwZU5hbWV9XTogU3Vic2V0UXVlcnl9ID0gJHtKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICAgICAgc3Vic2V0UXVlcnlPYmplY3RcbiAgICAgICAgICAgICl9O2AsXG4gICAgICAgICAgICBcIlwiLFxuICAgICAgICAgIF0sXG4gICAgICAgICAgaW1wb3J0S2V5czogW3N1YnNldEtleVR5cGVOYW1lXSxcbiAgICAgICAgfTtcbiAgICAgIH0pXG4gICAgICAuZmlsdGVyKG5vbk51bGxhYmxlKTtcblxuICAgIC8vIERhdGFiYXNlU2NoZW1hIOyDneyEsVxuICAgIGNvbnN0IGRiU2NoZW1hU291cmNlQ29kZSA9IHRoaXMuZ2V0RGF0YWJhc2VTY2hlbWFTb3VyY2VDb2RlKGVudGl0aWVzKTtcbiAgICBpZiAoZGJTY2hlbWFTb3VyY2VDb2RlKSB7XG4gICAgICBzb3VyY2VDb2Rlcy5wdXNoKGRiU2NoZW1hU291cmNlQ29kZSk7XG4gICAgfVxuXG4gICAgY29uc3Qgc291cmNlQ29kZSA9IHNvdXJjZUNvZGVzLnJlZHVjZShcbiAgICAgIChyZXN1bHQsIHRzKSA9PiB7XG4gICAgICAgIGlmICh0cyA9PT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBsaW5lczogWy4uLnJlc3VsdCEubGluZXMsIGAvLyAke3RzLmxhYmVsfWAsIC4uLnRzLmxpbmVzLCBcIlwiXSxcbiAgICAgICAgICBpbXBvcnRLZXlzOiBfLnVuaXEoWy4uLnJlc3VsdCEuaW1wb3J0S2V5cywgLi4udHMuaW1wb3J0S2V5c10pLFxuICAgICAgICB9O1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbGluZXM6IFtdLFxuICAgICAgICBpbXBvcnRLZXlzOiBbXSxcbiAgICAgIH0gYXMgT21pdDxTb3VyY2VDb2RlLCBcImxhYmVsXCI+XG4gICAgKTtcblxuICAgIGNvbnN0IGJvZHkgPSBzb3VyY2VDb2RlLmxpbmVzLmpvaW4oXCJcXG5cIik7XG4gICAgY29uc3QgaXNVc2luZ01hbnlUb01hbnlCYXNlU2NoZW1hID0gYm9keS5pbmNsdWRlcyhcIk1hbnlUb01hbnlCYXNlU2NoZW1hXCIpO1xuICAgIHJldHVybiB7XG4gICAgICAuLi50aGlzLmdldFRhcmdldEFuZFBhdGgoKSxcbiAgICAgIGJvZHk6IHNvdXJjZUNvZGUubGluZXMuam9pbihcIlxcblwiKSxcbiAgICAgIGltcG9ydEtleXM6IHNvdXJjZUNvZGUuaW1wb3J0S2V5cyxcbiAgICAgIGN1c3RvbUhlYWRlcnM6IFtcbiAgICAgICAgYGltcG9ydCB7IFN1YnNldFF1ZXJ5LCAke2lzVXNpbmdNYW55VG9NYW55QmFzZVNjaGVtYSA/IFwiTWFueVRvTWFueUJhc2VTY2hlbWFcIiA6IFwiXCJ9IH0gZnJvbSBcInNvbmFtdVwiO2AsXG4gICAgICBdLFxuICAgIH07XG4gIH1cblxuICBnZXREYXRhYmFzZVNjaGVtYVNvdXJjZUNvZGUoZW50aXRpZXM6IEVudGl0eVtdKTogU291cmNlQ29kZSB8IG51bGwge1xuICAgIGlmIChlbnRpdGllcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IGVudGl0eVNjaGVtYUxpbmVzID0gZW50aXRpZXMubWFwKFxuICAgICAgKGVudGl0eSkgPT4gYCR7ZW50aXR5LnRhYmxlfTogJHtlbnRpdHkuaWR9QmFzZVNjaGVtYTtgXG4gICAgKTtcblxuICAgIGNvbnN0IGpvaW5UYWJsZVNjaGVtYUxpbmVzID0gXy51bmlxKFxuICAgICAgZW50aXRpZXMuZmxhdE1hcCgoZW50aXR5KSA9PlxuICAgICAgICBlbnRpdHkucHJvcHMuZmlsdGVyKGlzTWFueVRvTWFueVJlbGF0aW9uUHJvcCkubWFwKChwcm9wKSA9PiB7XG4gICAgICAgICAgY29uc3QgZnJvbVRhYmxlS2V5ID0gaW5mbGVjdGlvbi5zaW5ndWxhcml6ZShlbnRpdHkudGFibGUpO1xuICAgICAgICAgIGNvbnN0IHRvVGFibGVLZXkgPSBpbmZsZWN0aW9uLnNpbmd1bGFyaXplKFxuICAgICAgICAgICAgRW50aXR5TWFuYWdlci5nZXQocHJvcC53aXRoKS50YWJsZVxuICAgICAgICAgICk7XG4gICAgICAgICAgcmV0dXJuIGAke3Byb3Auam9pblRhYmxlfTogTWFueVRvTWFueUJhc2VTY2hlbWE8XCIke2Zyb21UYWJsZUtleX1cIiwgXCIke3RvVGFibGVLZXl9XCI+O2A7XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgKTtcblxuICAgIHJldHVybiB7XG4gICAgICBsYWJlbDogYERhdGFiYXNlU2NoZW1hYCxcbiAgICAgIGxpbmVzOiBbXG4gICAgICAgIGBkZWNsYXJlIG1vZHVsZSBcInNvbmFtdVwiIHtgLFxuICAgICAgICBgICBleHBvcnQgaW50ZXJmYWNlIERhdGFiYXNlU2NoZW1hRXh0ZW5kIHtgLFxuICAgICAgICAuLi5lbnRpdHlTY2hlbWFMaW5lcyxcbiAgICAgICAgLi4uam9pblRhYmxlU2NoZW1hTGluZXMsXG4gICAgICAgIGAgIH1gLFxuICAgICAgICBgfWAsXG4gICAgICBdLFxuICAgICAgaW1wb3J0S2V5czogZW50aXRpZXMubWFwKChlbnRpdHkpID0+IGAke2VudGl0eS5pZH1CYXNlU2NoZW1hYCksXG4gICAgfTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbImlzTWFueVRvTWFueVJlbGF0aW9uUHJvcCIsIkVudGl0eU1hbmFnZXIiLCJUZW1wbGF0ZSIsImluZmxlY3Rpb24iLCJfIiwibm9uTnVsbGFibGUiLCJTb25hbXUiLCJUZW1wbGF0ZV9fZ2VuZXJhdGVkX3NzbyIsImdldFRhcmdldEFuZFBhdGgiLCJkaXIiLCJjb25maWciLCJhcGkiLCJ0YXJnZXQiLCJwYXRoIiwicmVuZGVyIiwiZW50aXR5SWRzIiwiZ2V0QWxsSWRzIiwiZW50aXRpZXMiLCJtYXAiLCJpZCIsImdldCIsInNvdXJjZUNvZGVzIiwiZW50aXR5IiwicGFyZW50SWQiLCJ1bmRlZmluZWQiLCJPYmplY3QiLCJrZXlzIiwic3Vic2V0cyIsImxlbmd0aCIsInN1YnNldEtleXMiLCJzdWJzZXRRdWVyeU9iamVjdCIsInJlZHVjZSIsInIiLCJzdWJzZXRLZXkiLCJzdWJzZXRRdWVyeSIsImdldFN1YnNldFF1ZXJ5Iiwic3Vic2V0S2V5VHlwZU5hbWUiLCJuYW1lcyIsIm1vZHVsZSIsImxhYmVsIiwibGluZXMiLCJjYW1lbGl6ZSIsIkpTT04iLCJzdHJpbmdpZnkiLCJpbXBvcnRLZXlzIiwiZmlsdGVyIiwiZGJTY2hlbWFTb3VyY2VDb2RlIiwiZ2V0RGF0YWJhc2VTY2hlbWFTb3VyY2VDb2RlIiwicHVzaCIsInNvdXJjZUNvZGUiLCJyZXN1bHQiLCJ0cyIsInVuaXEiLCJib2R5Iiwiam9pbiIsImlzVXNpbmdNYW55VG9NYW55QmFzZVNjaGVtYSIsImluY2x1ZGVzIiwiY3VzdG9tSGVhZGVycyIsImVudGl0eVNjaGVtYUxpbmVzIiwidGFibGUiLCJqb2luVGFibGVTY2hlbWFMaW5lcyIsImZsYXRNYXAiLCJwcm9wcyIsInByb3AiLCJmcm9tVGFibGVLZXkiLCJzaW5ndWxhcml6ZSIsInRvVGFibGVLZXkiLCJ3aXRoIiwiam9pblRhYmxlIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUNFQSx3QkFBd0IsUUFHbkIsdUJBQW9CO0FBQzNCLFNBQVNDLGFBQWEsUUFBUSxpQ0FBOEI7QUFDNUQsU0FBU0MsUUFBUSxRQUFRLGlCQUFjO0FBQ3ZDLE9BQU9DLGdCQUFnQixhQUFhO0FBRXBDLFlBQVlDLE9BQU8sWUFBWTtBQUMvQixTQUFTQyxXQUFXLFFBQVEsdUJBQW9CO0FBQ2hELFNBQVNDLE1BQU0sUUFBUSxxQkFBWTtBQUduQyxPQUFPLE1BQU1DLGdDQUFnQ0w7SUFDM0MsYUFBYztRQUNaLEtBQUssQ0FBQztJQUNSO0lBRUFN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
@@ -1,6 +1,6 @@
1
- import { TemplateOptions } from "../types/types";
2
- import { EntityNamesRecord } from "../entity/entity-manager";
3
- import { Template } from "./base-template";
1
+ import { TemplateOptions } from "../../types/types";
2
+ import { EntityNamesRecord } from "../../entity/entity-manager";
3
+ import { Template } from "../template";
4
4
  export declare class Template__init_types extends Template {
5
5
  constructor();
6
6
  getTargetAndPath(names: EntityNamesRecord): {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init_types.template.d.ts","sourceRoot":"","sources":["../../../src/template/implementations/init_types.template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAiB,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAC/E,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAGvC,qBAAa,oBAAqB,SAAQ,QAAQ;;IAKhD,gBAAgB,CAAC,KAAK,EAAE,iBAAiB;;;;IASzC,MAAM,CAAC,EAAE,QAAQ,EAAE,EAAE,eAAe,CAAC,YAAY,CAAC;;;;;;CA4BnD"}
@@ -0,0 +1,38 @@
1
+ import { EntityManager } from "../../entity/entity-manager.js";
2
+ import { Template } from "../template.js";
3
+ import { Sonamu } from "../../api/index.js";
4
+ export class Template__init_types extends Template {
5
+ constructor(){
6
+ super("init_types");
7
+ }
8
+ getTargetAndPath(names) {
9
+ const { dir } = Sonamu.config.api;
10
+ return {
11
+ target: `${dir}/src/application`,
12
+ path: `${names.fs}/${names.fs}.types.ts`
13
+ };
14
+ }
15
+ render({ entityId }) {
16
+ const names = EntityManager.getNamesFromId(entityId);
17
+ const hasCreatedAt = EntityManager.get(entityId).props.find((prop)=>prop.name === "created_at") !== undefined;
18
+ return {
19
+ ...this.getTargetAndPath(names),
20
+ body: `
21
+ import { z } from "zod";
22
+ import { ${entityId}BaseSchema, ${entityId}BaseListParams } from "../sonamu.generated";
23
+
24
+ // ${entityId} - ListParams
25
+ export const ${entityId}ListParams = ${entityId}BaseListParams;
26
+ export type ${entityId}ListParams = z.infer<typeof ${entityId}ListParams>;
27
+
28
+ // ${entityId} - SaveParams
29
+ export const ${entityId}SaveParams = ${entityId}BaseSchema.partial({ id: true${hasCreatedAt ? ", created_at: true" : ""} });
30
+ export type ${entityId}SaveParams = z.infer<typeof ${entityId}SaveParams>;
31
+
32
+ `.trim(),
33
+ importKeys: []
34
+ };
35
+ }
36
+ }
37
+
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZW1wbGF0ZS9pbXBsZW1lbnRhdGlvbnMvaW5pdF90eXBlcy50ZW1wbGF0ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUZW1wbGF0ZU9wdGlvbnMgfSBmcm9tIFwiLi4vLi4vdHlwZXMvdHlwZXNcIjtcbmltcG9ydCB7IEVudGl0eU1hbmFnZXIsIEVudGl0eU5hbWVzUmVjb3JkIH0gZnJvbSBcIi4uLy4uL2VudGl0eS9lbnRpdHktbWFuYWdlclwiO1xuaW1wb3J0IHsgVGVtcGxhdGUgfSBmcm9tIFwiLi4vdGVtcGxhdGVcIjtcbmltcG9ydCB7IFNvbmFtdSB9IGZyb20gXCIuLi8uLi9hcGlcIjtcblxuZXhwb3J0IGNsYXNzIFRlbXBsYXRlX19pbml0X3R5cGVzIGV4dGVuZHMgVGVtcGxhdGUge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihcImluaXRfdHlwZXNcIik7XG4gIH1cblxuICBnZXRUYXJnZXRBbmRQYXRoKG5hbWVzOiBFbnRpdHlOYW1lc1JlY29yZCkge1xuICAgIGNvbnN0IHsgZGlyIH0gPSBTb25hbXUuY29uZmlnLmFwaTtcblxuICAgIHJldHVybiB7XG4gICAgICB0YXJnZXQ6IGAke2Rpcn0vc3JjL2FwcGxpY2F0aW9uYCxcbiAgICAgIHBhdGg6IGAke25hbWVzLmZzfS8ke25hbWVzLmZzfS50eXBlcy50c2AsXG4gICAgfTtcbiAgfVxuXG4gIHJlbmRlcih7IGVudGl0eUlkIH06IFRlbXBsYXRlT3B0aW9uc1tcImluaXRfdHlwZXNcIl0pIHtcbiAgICBjb25zdCBuYW1lcyA9IEVudGl0eU1hbmFnZXIuZ2V0TmFtZXNGcm9tSWQoZW50aXR5SWQpO1xuXG4gICAgY29uc3QgaGFzQ3JlYXRlZEF0ID1cbiAgICAgIEVudGl0eU1hbmFnZXIuZ2V0KGVudGl0eUlkKS5wcm9wcy5maW5kKFxuICAgICAgICAocHJvcCkgPT4gcHJvcC5uYW1lID09PSBcImNyZWF0ZWRfYXRcIlxuICAgICAgKSAhPT0gdW5kZWZpbmVkO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnRoaXMuZ2V0VGFyZ2V0QW5kUGF0aChuYW1lcyksXG4gICAgICBib2R5OiBgXG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiO1xuaW1wb3J0IHsgJHtlbnRpdHlJZH1CYXNlU2NoZW1hLCAke2VudGl0eUlkfUJhc2VMaXN0UGFyYW1zIH0gZnJvbSBcIi4uL3NvbmFtdS5nZW5lcmF0ZWRcIjtcblxuLy8gJHtlbnRpdHlJZH0gLSBMaXN0UGFyYW1zXG5leHBvcnQgY29uc3QgJHtlbnRpdHlJZH1MaXN0UGFyYW1zID0gJHtlbnRpdHlJZH1CYXNlTGlzdFBhcmFtcztcbmV4cG9ydCB0eXBlICR7ZW50aXR5SWR9TGlzdFBhcmFtcyA9IHouaW5mZXI8dHlwZW9mICR7ZW50aXR5SWR9TGlzdFBhcmFtcz47XG5cbi8vICR7ZW50aXR5SWR9IC0gU2F2ZVBhcmFtc1xuZXhwb3J0IGNvbnN0ICR7ZW50aXR5SWR9U2F2ZVBhcmFtcyA9ICR7ZW50aXR5SWR9QmFzZVNjaGVtYS5wYXJ0aWFsKHsgaWQ6IHRydWUke1xuICAgICAgICBoYXNDcmVhdGVkQXQgPyBcIiwgY3JlYXRlZF9hdDogdHJ1ZVwiIDogXCJcIlxuICAgICAgfSB9KTtcbmV4cG9ydCB0eXBlICR7ZW50aXR5SWR9U2F2ZVBhcmFtcyA9IHouaW5mZXI8dHlwZW9mICR7ZW50aXR5SWR9U2F2ZVBhcmFtcz47XG5cbiAgICAgIGAudHJpbSgpLFxuICAgICAgaW1wb3J0S2V5czogW10sXG4gICAgfTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbIkVudGl0eU1hbmFnZXIiLCJUZW1wbGF0ZSIsIlNvbmFtdSIsIlRlbXBsYXRlX19pbml0X3R5cGVzIiwiZ2V0VGFyZ2V0QW5kUGF0aCIsIm5hbWVzIiwiZGlyIiwiY29uZmlnIiwiYXBpIiwidGFyZ2V0IiwicGF0aCIsImZzIiwicmVuZGVyIiwiZW50aXR5SWQiLCJnZXROYW1lc0Zyb21JZCIsImhhc0NyZWF0ZWRBdCIsImdldCIsInByb3BzIiwiZmluZCIsInByb3AiLCJuYW1lIiwidW5kZWZpbmVkIiwiYm9keSIsInRyaW0iLCJpbXBvcnRLZXlzIl0sIm1hcHBpbmdzIjoiQUFDQSxTQUFTQSxhQUFhLFFBQTJCLGlDQUE4QjtBQUMvRSxTQUFTQyxRQUFRLFFBQVEsaUJBQWM7QUFDdkMsU0FBU0MsTUFBTSxRQUFRLHFCQUFZO0FBRW5DLE9BQU8sTUFBTUMsNkJBQTZCRjtJQUN4QyxhQUFjO1FBQ1osS0FBSyxDQUFDO0lBQ1I7SUFFQUcsaUJBQWlCQyxLQUF3QixFQUFFO1FBQ3pDLE1BQU0sRUFBRUMsR0FBRyxFQUFFLEdBQUdKLE9BQU9LLE1BQU0sQ0FBQ0MsR0FBRztRQUVqQyxPQUFPO1lBQ0xDLFFBQVEsR0FBR0gsSUFBSSxnQkFBZ0IsQ0FBQztZQUNoQ0ksTUFBTSxHQUFHTCxNQUFNTSxFQUFFLENBQUMsQ0FBQyxFQUFFTixNQUFNTSxFQUFFLENBQUMsU0FBUyxDQUFDO1FBQzFDO0lBQ0Y7SUFFQUMsT0FBTyxFQUFFQyxRQUFRLEVBQWlDLEVBQUU7UUFDbEQsTUFBTVIsUUFBUUwsY0FBY2MsY0FBYyxDQUFDRDtRQUUzQyxNQUFNRSxlQUNKZixjQUFjZ0IsR0FBRyxDQUFDSCxVQUFVSSxLQUFLLENBQUNDLElBQUksQ0FDcEMsQ0FBQ0MsT0FBU0EsS0FBS0MsSUFBSSxLQUFLLGtCQUNwQkM7UUFFUixPQUFPO1lBQ0wsR0FBRyxJQUFJLENBQUNqQixnQkFBZ0IsQ0FBQ0MsTUFBTTtZQUMvQmlCLE1BQU0sQ0FBQzs7U0FFSixFQUFFVCxTQUFTLFlBQVksRUFBRUEsU0FBUzs7R0FFeEMsRUFBRUEsU0FBUzthQUNELEVBQUVBLFNBQVMsYUFBYSxFQUFFQSxTQUFTO1lBQ3BDLEVBQUVBLFNBQVMsNEJBQTRCLEVBQUVBLFNBQVM7O0dBRTNELEVBQUVBLFNBQVM7YUFDRCxFQUFFQSxTQUFTLGFBQWEsRUFBRUEsU0FBUyw2QkFBNkIsRUFDckVFLGVBQWUsdUJBQXVCLEdBQ3ZDO1lBQ0ssRUFBRUYsU0FBUyw0QkFBNEIsRUFBRUEsU0FBUzs7TUFFeEQsQ0FBQyxDQUFDVSxJQUFJO1lBQ05DLFlBQVksRUFBRTtRQUNoQjtJQUNGO0FBQ0YifQ==
@@ -0,0 +1,17 @@
1
+ import { TemplateOptions } from "../../types/types";
2
+ import { EntityNamesRecord } from "../../entity/entity-manager";
3
+ import { Template } from "../template";
4
+ export declare class Template__model extends Template {
5
+ constructor();
6
+ getTargetAndPath(names: EntityNamesRecord): {
7
+ target: string;
8
+ path: string;
9
+ };
10
+ render({ entityId }: TemplateOptions["model"]): Promise<{
11
+ body: string;
12
+ importKeys: never[];
13
+ target: string;
14
+ path: string;
15
+ }>;
16
+ }
17
+ //# sourceMappingURL=model.template.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model.template.d.ts","sourceRoot":"","sources":["../../../src/template/implementations/model.template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAiB,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAC/E,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAKvC,qBAAa,eAAgB,SAAQ,QAAQ;;IAK3C,gBAAgB,CAAC,KAAK,EAAE,iBAAiB;;;;IASnC,MAAM,CAAC,EAAE,QAAQ,EAAE,EAAE,eAAe,CAAC,OAAO,CAAC;;;;;;CA2JpD"}
@@ -0,0 +1,171 @@
1
+ import { EntityManager } from "../../entity/entity-manager.js";
2
+ import { Template } from "../template.js";
3
+ import { Template__view_list } from "./view_list.template.js";
4
+ import { Sonamu } from "../../api/index.js";
5
+ import { getZodTypeById, zodTypeToRenderingNode } from "../zod-converter.js";
6
+ export class Template__model extends Template {
7
+ constructor(){
8
+ super("model");
9
+ }
10
+ getTargetAndPath(names) {
11
+ const { dir } = Sonamu.config.api;
12
+ return {
13
+ target: `${dir}/src/application`,
14
+ path: `${names.fs}/${names.fs}.model.ts`
15
+ };
16
+ }
17
+ async render({ entityId }) {
18
+ const listParamsZodType = await getZodTypeById(`${entityId}ListParams`);
19
+ const listParamsNode = zodTypeToRenderingNode(listParamsZodType);
20
+ const names = EntityManager.getNamesFromId(entityId);
21
+ const entity = EntityManager.get(entityId);
22
+ const vlTpl = new Template__view_list();
23
+ if (listParamsNode?.children === undefined) {
24
+ throw new Error(`listParamsNode가 없습니다. ${entityId}`);
25
+ }
26
+ const def = vlTpl.getDefault(listParamsNode.children);
27
+ return {
28
+ ...this.getTargetAndPath(names),
29
+ body: `
30
+ import { BaseModelClass, ListResult, asArray, NotFoundException, BadRequestException, api } from 'sonamu';
31
+ import {
32
+ ${entityId}SubsetKey,
33
+ ${entityId}SubsetMapping,
34
+ } from "../sonamu.generated";
35
+ import {
36
+ ${names.camel}SubsetQueries,
37
+ } from "../sonamu.generated.sso";
38
+ import { ${entityId}ListParams, ${entityId}SaveParams } from "./${names.fs}.types";
39
+
40
+ /*
41
+ ${entityId} Model
42
+ */
43
+ class ${entityId}ModelClass extends BaseModelClass {
44
+ modelName = "${entityId}";
45
+
46
+ @api({ httpMethod: "GET", clients: ["axios", "swr"], resourceName: "${entityId}" })
47
+ async findById<T extends ${entityId}SubsetKey>(
48
+ subset: T,
49
+ id: number
50
+ ): Promise<${entityId}SubsetMapping[T]> {
51
+ const { rows } = await this.findMany(subset, {
52
+ id,
53
+ num: 1,
54
+ page: 1,
55
+ });
56
+ if (!rows[0]) {
57
+ throw new NotFoundException(\`존재하지 않는 ${names.capital} ID \${id}\`);
58
+ }
59
+
60
+ return rows[0];
61
+ }
62
+
63
+ async findOne<T extends ${entityId}SubsetKey>(
64
+ subset: T,
65
+ listParams: ${entityId}ListParams
66
+ ): Promise<${entityId}SubsetMapping[T] | null> {
67
+ const { rows } = await this.findMany(subset, {
68
+ ...listParams,
69
+ num: 1,
70
+ page: 1,
71
+ });
72
+
73
+ return rows[0] ?? null;
74
+ }
75
+
76
+ @api({ httpMethod: "GET", clients: ["axios", "swr"], resourceName: "${names.capitalPlural}" })
77
+ async findMany<T extends ${entityId}SubsetKey>(
78
+ subset: T,
79
+ params: ${entityId}ListParams = {}
80
+ ): Promise<ListResult<${entityId}SubsetMapping[T]>> {
81
+ // params with defaults
82
+ params = {
83
+ num: 24,
84
+ page: 1,
85
+ search: "${def.search}",
86
+ orderBy: "${def.orderBy}",
87
+ ...params,
88
+ };
89
+
90
+ // build queries
91
+ let { rows, total } = await this.runSubsetQuery({
92
+ subset,
93
+ params,
94
+ subsetQuery: ${names.camel}SubsetQueries[subset],
95
+ build: ({ qb }) => {
96
+ // id
97
+ if (params.id) {
98
+ qb.whereIn("${entity.table}.id", asArray(params.id));
99
+ }
100
+
101
+ // search-keyword
102
+ if (params.search && params.keyword && params.keyword.length > 0) {
103
+ if (params.search === "id") {
104
+ qb.where("${entity.table}.id", params.keyword);
105
+ // } else if (params.search === "field") {
106
+ // qb.where("${entity.table}.field", "like", \`%\${params.keyword}%\`);
107
+ } else {
108
+ throw new BadRequestException(
109
+ \`구현되지 않은 검색 필드 \${params.search}\`
110
+ );
111
+ }
112
+ }
113
+
114
+ // orderBy
115
+ if (params.orderBy) {
116
+ // default orderBy
117
+ const [orderByField, orderByDirec] = params.orderBy.split("-");
118
+ qb.orderBy("${entity.table}." + orderByField, orderByDirec);
119
+ }
120
+
121
+ return qb;
122
+ },
123
+ debug: false,
124
+ });
125
+
126
+ return {
127
+ rows,
128
+ total,
129
+ };
130
+ }
131
+
132
+ @api({ httpMethod: "POST" })
133
+ async save(
134
+ spa: ${entityId}SaveParams[]
135
+ ): Promise<number[]> {
136
+ const wdb = this.getPuri("w");
137
+
138
+ // register
139
+ spa.map((sp) => {
140
+ wdb.ubRegister("${entity.table}", sp);
141
+ });
142
+
143
+ // transaction
144
+ return wdb.transaction(async (trx) => {
145
+ const ids = await trx.ubUpsert("${entity.table}");
146
+
147
+ return ids;
148
+ });
149
+ }
150
+
151
+ @api({ httpMethod: "POST", guards: [ "admin" ] })
152
+ async del(ids: number[]): Promise<number> {
153
+ const wdb = this.getPuri("w");
154
+
155
+ // transaction
156
+ await wdb.transaction(async (trx) => {
157
+ return trx.table("${entity.table}").whereIn("${entity.table}.id", ids).delete();
158
+ });
159
+
160
+ return ids.length;
161
+ }
162
+ }
163
+
164
+ export const ${entityId}Model = new ${entityId}ModelClass();
165
+ `.trim(),
166
+ importKeys: []
167
+ };
168
+ }
169
+ }
170
+
171
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZW1wbGF0ZS9pbXBsZW1lbnRhdGlvbnMvbW9kZWwudGVtcGxhdGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGVtcGxhdGVPcHRpb25zIH0gZnJvbSBcIi4uLy4uL3R5cGVzL3R5cGVzXCI7XG5pbXBvcnQgeyBFbnRpdHlNYW5hZ2VyLCBFbnRpdHlOYW1lc1JlY29yZCB9IGZyb20gXCIuLi8uLi9lbnRpdHkvZW50aXR5LW1hbmFnZXJcIjtcbmltcG9ydCB7IFRlbXBsYXRlIH0gZnJvbSBcIi4uL3RlbXBsYXRlXCI7XG5pbXBvcnQgeyBUZW1wbGF0ZV9fdmlld19saXN0IH0gZnJvbSBcIi4vdmlld19saXN0LnRlbXBsYXRlXCI7XG5pbXBvcnQgeyBTb25hbXUgfSBmcm9tIFwiLi4vLi4vYXBpXCI7XG5pbXBvcnQgeyBnZXRab2RUeXBlQnlJZCwgem9kVHlwZVRvUmVuZGVyaW5nTm9kZSB9IGZyb20gXCIuLi96b2QtY29udmVydGVyXCI7XG5cbmV4cG9ydCBjbGFzcyBUZW1wbGF0ZV9fbW9kZWwgZXh0ZW5kcyBUZW1wbGF0ZSB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKFwibW9kZWxcIik7XG4gIH1cblxuICBnZXRUYXJnZXRBbmRQYXRoKG5hbWVzOiBFbnRpdHlOYW1lc1JlY29yZCkge1xuICAgIGNvbnN0IHsgZGlyIH0gPSBTb25hbXUuY29uZmlnLmFwaTtcblxuICAgIHJldHVybiB7XG4gICAgICB0YXJnZXQ6IGAke2Rpcn0vc3JjL2FwcGxpY2F0aW9uYCxcbiAgICAgIHBhdGg6IGAke25hbWVzLmZzfS8ke25hbWVzLmZzfS5tb2RlbC50c2AsXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIHJlbmRlcih7IGVudGl0eUlkIH06IFRlbXBsYXRlT3B0aW9uc1tcIm1vZGVsXCJdKSB7XG4gICAgY29uc3QgbGlzdFBhcmFtc1pvZFR5cGUgPSBhd2FpdCBnZXRab2RUeXBlQnlJZChgJHtlbnRpdHlJZH1MaXN0UGFyYW1zYCk7XG4gICAgY29uc3QgbGlzdFBhcmFtc05vZGUgPSB6b2RUeXBlVG9SZW5kZXJpbmdOb2RlKGxpc3RQYXJhbXNab2RUeXBlKTtcblxuICAgIGNvbnN0IG5hbWVzID0gRW50aXR5TWFuYWdlci5nZXROYW1lc0Zyb21JZChlbnRpdHlJZCk7XG4gICAgY29uc3QgZW50aXR5ID0gRW50aXR5TWFuYWdlci5nZXQoZW50aXR5SWQpO1xuXG4gICAgY29uc3QgdmxUcGwgPSBuZXcgVGVtcGxhdGVfX3ZpZXdfbGlzdCgpO1xuICAgIGlmIChsaXN0UGFyYW1zTm9kZT8uY2hpbGRyZW4gPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBsaXN0UGFyYW1zTm9kZeqwgCDsl4bsirXri4jri6QuICR7ZW50aXR5SWR9YCk7XG4gICAgfVxuICAgIGNvbnN0IGRlZiA9IHZsVHBsLmdldERlZmF1bHQobGlzdFBhcmFtc05vZGUuY2hpbGRyZW4pO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnRoaXMuZ2V0VGFyZ2V0QW5kUGF0aChuYW1lcyksXG4gICAgICBib2R5OiBgXG5pbXBvcnQgeyBCYXNlTW9kZWxDbGFzcywgTGlzdFJlc3VsdCwgYXNBcnJheSwgTm90Rm91bmRFeGNlcHRpb24sIEJhZFJlcXVlc3RFeGNlcHRpb24sIGFwaSB9IGZyb20gJ3NvbmFtdSc7XG5pbXBvcnQge1xuICAke2VudGl0eUlkfVN1YnNldEtleSxcbiAgJHtlbnRpdHlJZH1TdWJzZXRNYXBwaW5nLFxufSBmcm9tIFwiLi4vc29uYW11LmdlbmVyYXRlZFwiO1xuaW1wb3J0IHtcbiAgJHtuYW1lcy5jYW1lbH1TdWJzZXRRdWVyaWVzLFxufSBmcm9tIFwiLi4vc29uYW11LmdlbmVyYXRlZC5zc29cIjtcbmltcG9ydCB7ICR7ZW50aXR5SWR9TGlzdFBhcmFtcywgJHtlbnRpdHlJZH1TYXZlUGFyYW1zIH0gZnJvbSBcIi4vJHtuYW1lcy5mc30udHlwZXNcIjtcblxuLypcbiAgJHtlbnRpdHlJZH0gTW9kZWxcbiovXG5jbGFzcyAke2VudGl0eUlkfU1vZGVsQ2xhc3MgZXh0ZW5kcyBCYXNlTW9kZWxDbGFzcyB7XG4gIG1vZGVsTmFtZSA9IFwiJHtlbnRpdHlJZH1cIjtcblxuICBAYXBpKHsgaHR0cE1ldGhvZDogXCJHRVRcIiwgY2xpZW50czogW1wiYXhpb3NcIiwgXCJzd3JcIl0sIHJlc291cmNlTmFtZTogXCIke2VudGl0eUlkfVwiIH0pXG4gIGFzeW5jIGZpbmRCeUlkPFQgZXh0ZW5kcyAke2VudGl0eUlkfVN1YnNldEtleT4oXG4gICAgc3Vic2V0OiBULFxuICAgIGlkOiBudW1iZXJcbiAgKTogUHJvbWlzZTwke2VudGl0eUlkfVN1YnNldE1hcHBpbmdbVF0+IHtcbiAgICBjb25zdCB7IHJvd3MgfSA9IGF3YWl0IHRoaXMuZmluZE1hbnkoc3Vic2V0LCB7XG4gICAgICBpZCxcbiAgICAgIG51bTogMSxcbiAgICAgIHBhZ2U6IDEsXG4gICAgfSk7XG4gICAgaWYgKCFyb3dzWzBdKSB7XG4gICAgICB0aHJvdyBuZXcgTm90Rm91bmRFeGNlcHRpb24oXFxg7KG07J6s7ZWY7KeAIOyViuuKlCAke25hbWVzLmNhcGl0YWx9IElEIFxcJHtpZH1cXGApO1xuICAgIH1cblxuICAgIHJldHVybiByb3dzWzBdO1xuICB9XG5cbiAgYXN5bmMgZmluZE9uZTxUIGV4dGVuZHMgJHtlbnRpdHlJZH1TdWJzZXRLZXk+KFxuICAgIHN1YnNldDogVCxcbiAgICBsaXN0UGFyYW1zOiAke2VudGl0eUlkfUxpc3RQYXJhbXNcbiAgKTogUHJvbWlzZTwke2VudGl0eUlkfVN1YnNldE1hcHBpbmdbVF0gfCBudWxsPiB7XG4gICAgY29uc3QgeyByb3dzIH0gPSBhd2FpdCB0aGlzLmZpbmRNYW55KHN1YnNldCwge1xuICAgICAgLi4ubGlzdFBhcmFtcyxcbiAgICAgIG51bTogMSxcbiAgICAgIHBhZ2U6IDEsXG4gICAgfSk7XG5cbiAgICByZXR1cm4gcm93c1swXSA/PyBudWxsO1xuICB9XG5cbiAgQGFwaSh7IGh0dHBNZXRob2Q6IFwiR0VUXCIsIGNsaWVudHM6IFtcImF4aW9zXCIsIFwic3dyXCJdLCByZXNvdXJjZU5hbWU6IFwiJHtuYW1lcy5jYXBpdGFsUGx1cmFsfVwiIH0pXG4gIGFzeW5jIGZpbmRNYW55PFQgZXh0ZW5kcyAke2VudGl0eUlkfVN1YnNldEtleT4oXG4gICAgc3Vic2V0OiBULFxuICAgIHBhcmFtczogJHtlbnRpdHlJZH1MaXN0UGFyYW1zID0ge31cbiAgKTogUHJvbWlzZTxMaXN0UmVzdWx0PCR7ZW50aXR5SWR9U3Vic2V0TWFwcGluZ1tUXT4+IHtcbiAgICAvLyBwYXJhbXMgd2l0aCBkZWZhdWx0c1xuICAgIHBhcmFtcyA9IHtcbiAgICAgIG51bTogMjQsXG4gICAgICBwYWdlOiAxLFxuICAgICAgc2VhcmNoOiBcIiR7ZGVmLnNlYXJjaH1cIixcbiAgICAgIG9yZGVyQnk6IFwiJHtkZWYub3JkZXJCeX1cIixcbiAgICAgIC4uLnBhcmFtcyxcbiAgICB9O1xuXG4gICAgLy8gYnVpbGQgcXVlcmllc1xuICAgIGxldCB7IHJvd3MsIHRvdGFsIH0gPSBhd2FpdCB0aGlzLnJ1blN1YnNldFF1ZXJ5KHtcbiAgICAgIHN1YnNldCxcbiAgICAgIHBhcmFtcyxcbiAgICAgIHN1YnNldFF1ZXJ5OiAke25hbWVzLmNhbWVsfVN1YnNldFF1ZXJpZXNbc3Vic2V0XSxcbiAgICAgIGJ1aWxkOiAoeyBxYiB9KSA9PiB7XG4gICAgICAgIC8vIGlkXG4gICAgICAgIGlmIChwYXJhbXMuaWQpIHtcbiAgICAgICAgICBxYi53aGVyZUluKFwiJHtlbnRpdHkudGFibGV9LmlkXCIsIGFzQXJyYXkocGFyYW1zLmlkKSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBzZWFyY2gta2V5d29yZFxuICAgICAgICBpZiAocGFyYW1zLnNlYXJjaCAmJiBwYXJhbXMua2V5d29yZCAmJiBwYXJhbXMua2V5d29yZC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgaWYgKHBhcmFtcy5zZWFyY2ggPT09IFwiaWRcIikge1xuICAgICAgICAgICAgcWIud2hlcmUoXCIke2VudGl0eS50YWJsZX0uaWRcIiwgcGFyYW1zLmtleXdvcmQpO1xuICAgICAgICAgIC8vIH0gZWxzZSBpZiAocGFyYW1zLnNlYXJjaCA9PT0gXCJmaWVsZFwiKSB7XG4gICAgICAgICAgLy8gICBxYi53aGVyZShcIiR7ZW50aXR5LnRhYmxlfS5maWVsZFwiLCBcImxpa2VcIiwgXFxgJVxcJHtwYXJhbXMua2V5d29yZH0lXFxgKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEJhZFJlcXVlc3RFeGNlcHRpb24oXG4gICAgICAgICAgICAgIFxcYOq1rO2YhOuQmOyngCDslYrsnYAg6rKA7IOJIO2VhOuTnCBcXCR7cGFyYW1zLnNlYXJjaH1cXGBcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gb3JkZXJCeVxuICAgICAgICBpZiAocGFyYW1zLm9yZGVyQnkpIHtcbiAgICAgICAgICAvLyBkZWZhdWx0IG9yZGVyQnlcbiAgICAgICAgICBjb25zdCBbb3JkZXJCeUZpZWxkLCBvcmRlckJ5RGlyZWNdID0gcGFyYW1zLm9yZGVyQnkuc3BsaXQoXCItXCIpO1xuICAgICAgICAgIHFiLm9yZGVyQnkoXCIke2VudGl0eS50YWJsZX0uXCIgKyBvcmRlckJ5RmllbGQsIG9yZGVyQnlEaXJlYyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcWI7XG4gICAgICB9LFxuICAgICAgZGVidWc6IGZhbHNlLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHJvd3MsXG4gICAgICB0b3RhbCxcbiAgICB9O1xuICB9XG5cbiAgQGFwaSh7IGh0dHBNZXRob2Q6IFwiUE9TVFwiIH0pXG4gIGFzeW5jIHNhdmUoXG4gICAgc3BhOiAke2VudGl0eUlkfVNhdmVQYXJhbXNbXVxuICApOiBQcm9taXNlPG51bWJlcltdPiB7XG4gICAgY29uc3Qgd2RiID0gdGhpcy5nZXRQdXJpKFwid1wiKTtcblxuICAgIC8vIHJlZ2lzdGVyXG4gICAgc3BhLm1hcCgoc3ApID0+IHtcbiAgICAgIHdkYi51YlJlZ2lzdGVyKFwiJHtlbnRpdHkudGFibGV9XCIsIHNwKTtcbiAgICB9KTtcblxuICAgIC8vIHRyYW5zYWN0aW9uXG4gICAgcmV0dXJuIHdkYi50cmFuc2FjdGlvbihhc3luYyAodHJ4KSA9PiB7XG4gICAgICBjb25zdCBpZHMgPSBhd2FpdCB0cngudWJVcHNlcnQoXCIke2VudGl0eS50YWJsZX1cIik7XG5cbiAgICAgIHJldHVybiBpZHM7XG4gICAgfSk7XG4gIH1cblxuICBAYXBpKHsgaHR0cE1ldGhvZDogXCJQT1NUXCIsIGd1YXJkczogWyBcImFkbWluXCIgXSB9KVxuICBhc3luYyBkZWwoaWRzOiBudW1iZXJbXSk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgY29uc3Qgd2RiID0gdGhpcy5nZXRQdXJpKFwid1wiKTtcblxuICAgIC8vIHRyYW5zYWN0aW9uXG4gICAgYXdhaXQgd2RiLnRyYW5zYWN0aW9uKGFzeW5jICh0cngpID0+IHtcbiAgICAgIHJldHVybiB0cngudGFibGUoXCIke2VudGl0eS50YWJsZX1cIikud2hlcmVJbihcIiR7ZW50aXR5LnRhYmxlfS5pZFwiLCBpZHMpLmRlbGV0ZSgpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIGlkcy5sZW5ndGg7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0ICR7ZW50aXR5SWR9TW9kZWwgPSBuZXcgJHtlbnRpdHlJZH1Nb2RlbENsYXNzKCk7XG4gICAgICBgLnRyaW0oKSxcbiAgICAgIGltcG9ydEtleXM6IFtdLFxuICAgIH07XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJFbnRpdHlNYW5hZ2VyIiwiVGVtcGxhdGUiLCJUZW1wbGF0ZV9fdmlld19saXN0IiwiU29uYW11IiwiZ2V0Wm9kVHlwZUJ5SWQiLCJ6b2RUeXBlVG9SZW5kZXJpbmdOb2RlIiwiVGVtcGxhdGVfX21vZGVsIiwiZ2V0VGFyZ2V0QW5kUGF0aCIsIm5hbWVzIiwiZGlyIiwiY29uZmlnIiwiYXBpIiwidGFyZ2V0IiwicGF0aCIsImZzIiwicmVuZGVyIiwiZW50aXR5SWQiLCJsaXN0UGFyYW1zWm9kVHlwZSIsImxpc3RQYXJhbXNOb2RlIiwiZ2V0TmFtZXNGcm9tSWQiLCJlbnRpdHkiLCJnZXQiLCJ2bFRwbCIsImNoaWxkcmVuIiwidW5kZWZpbmVkIiwiRXJyb3IiLCJkZWYiLCJnZXREZWZhdWx0IiwiYm9keSIsImNhbWVsIiwiY2FwaXRhbCIsImNhcGl0YWxQbHVyYWwiLCJzZWFyY2giLCJvcmRlckJ5IiwidGFibGUiLCJ0cmltIiwiaW1wb3J0S2V5cyJdLCJtYXBwaW5ncyI6IkFBQ0EsU0FBU0EsYUFBYSxRQUEyQixpQ0FBOEI7QUFDL0UsU0FBU0MsUUFBUSxRQUFRLGlCQUFjO0FBQ3ZDLFNBQVNDLG1CQUFtQixRQUFRLDBCQUF1QjtBQUMzRCxTQUFTQyxNQUFNLFFBQVEscUJBQVk7QUFDbkMsU0FBU0MsY0FBYyxFQUFFQyxzQkFBc0IsUUFBUSxzQkFBbUI7QUFFMUUsT0FBTyxNQUFNQyx3QkFBd0JMO0lBQ25DLGFBQWM7UUFDWixLQUFLLENBQUM7SUFDUjtJQUVBTSxpQkFBaUJDLEtBQXdCLEVBQUU7UUFDekMsTUFBTSxFQUFFQyxHQUFHLEVBQUUsR0FBR04sT0FBT08sTUFBTSxDQUFDQyxHQUFHO1FBRWpDLE9BQU87WUFDTEMsUUFBUSxHQUFHSCxJQUFJLGdCQUFnQixDQUFDO1lBQ2hDSSxNQUFNLEdBQUdMLE1BQU1NLEVBQUUsQ0FBQyxDQUFDLEVBQUVOLE1BQU1NLEVBQUUsQ0FBQyxTQUFTLENBQUM7UUFDMUM7SUFDRjtJQUVBLE1BQU1DLE9BQU8sRUFBRUMsUUFBUSxFQUE0QixFQUFFO1FBQ25ELE1BQU1DLG9CQUFvQixNQUFNYixlQUFlLEdBQUdZLFNBQVMsVUFBVSxDQUFDO1FBQ3RFLE1BQU1FLGlCQUFpQmIsdUJBQXVCWTtRQUU5QyxNQUFNVCxRQUFRUixjQUFjbUIsY0FBYyxDQUFDSDtRQUMzQyxNQUFNSSxTQUFTcEIsY0FBY3FCLEdBQUcsQ0FBQ0w7UUFFakMsTUFBTU0sUUFBUSxJQUFJcEI7UUFDbEIsSUFBSWdCLGdCQUFnQkssYUFBYUMsV0FBVztZQUMxQyxNQUFNLElBQUlDLE1BQU0sQ0FBQyxzQkFBc0IsRUFBRVQsVUFBVTtRQUNyRDtRQUNBLE1BQU1VLE1BQU1KLE1BQU1LLFVBQVUsQ0FBQ1QsZUFBZUssUUFBUTtRQUVwRCxPQUFPO1lBQ0wsR0FBRyxJQUFJLENBQUNoQixnQkFBZ0IsQ0FBQ0MsTUFBTTtZQUMvQm9CLE1BQU0sQ0FBQzs7O0VBR1gsRUFBRVosU0FBUztFQUNYLEVBQUVBLFNBQVM7OztFQUdYLEVBQUVSLE1BQU1xQixLQUFLLENBQUM7O1NBRVAsRUFBRWIsU0FBUyxZQUFZLEVBQUVBLFNBQVMscUJBQXFCLEVBQUVSLE1BQU1NLEVBQUUsQ0FBQzs7O0VBR3pFLEVBQUVFLFNBQVM7O01BRVAsRUFBRUEsU0FBUztlQUNGLEVBQUVBLFNBQVM7O3NFQUU0QyxFQUFFQSxTQUFTOzJCQUN0RCxFQUFFQSxTQUFTOzs7YUFHekIsRUFBRUEsU0FBUzs7Ozs7Ozs0Q0FPb0IsRUFBRVIsTUFBTXNCLE9BQU8sQ0FBQzs7Ozs7OzBCQU1sQyxFQUFFZCxTQUFTOztnQkFFckIsRUFBRUEsU0FBUzthQUNkLEVBQUVBLFNBQVM7Ozs7Ozs7Ozs7c0VBVThDLEVBQUVSLE1BQU11QixhQUFhLENBQUM7MkJBQ2pFLEVBQUVmLFNBQVM7O1lBRTFCLEVBQUVBLFNBQVM7d0JBQ0MsRUFBRUEsU0FBUzs7Ozs7ZUFLcEIsRUFBRVUsSUFBSU0sTUFBTSxDQUFDO2dCQUNaLEVBQUVOLElBQUlPLE9BQU8sQ0FBQzs7Ozs7Ozs7bUJBUVgsRUFBRXpCLE1BQU1xQixLQUFLLENBQUM7Ozs7c0JBSVgsRUFBRVQsT0FBT2MsS0FBSyxDQUFDOzs7Ozs7c0JBTWYsRUFBRWQsT0FBT2MsS0FBSyxDQUFDOzt5QkFFWixFQUFFZCxPQUFPYyxLQUFLLENBQUM7Ozs7Ozs7Ozs7OztzQkFZbEIsRUFBRWQsT0FBT2MsS0FBSyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7O1NBZ0I1QixFQUFFbEIsU0FBUzs7Ozs7O3NCQU1FLEVBQUVJLE9BQU9jLEtBQUssQ0FBQzs7Ozs7c0NBS0MsRUFBRWQsT0FBT2MsS0FBSyxDQUFDOzs7Ozs7Ozs7Ozs7d0JBWTdCLEVBQUVkLE9BQU9jLEtBQUssQ0FBQyxZQUFZLEVBQUVkLE9BQU9jLEtBQUssQ0FBQzs7Ozs7OzthQU9yRCxFQUFFbEIsU0FBUyxZQUFZLEVBQUVBLFNBQVM7TUFDekMsQ0FBQyxDQUFDbUIsSUFBSTtZQUNOQyxZQUFZLEVBQUU7UUFDaEI7SUFDRjtBQUNGIn0=
@@ -1,6 +1,6 @@
1
- import { TemplateOptions } from "../types/types";
2
- import { EntityNamesRecord } from "../entity/entity-manager";
3
- import { Template } from "./base-template";
1
+ import { TemplateOptions } from "../../types/types";
2
+ import { EntityNamesRecord } from "../../entity/entity-manager";
3
+ import { Template } from "../template";
4
4
  export declare class Template__model_test extends Template {
5
5
  constructor();
6
6
  getTargetAndPath(names: EntityNamesRecord): {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model_test.template.d.ts","sourceRoot":"","sources":["../../../src/template/implementations/model_test.template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAiB,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAC/E,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAGvC,qBAAa,oBAAqB,SAAQ,QAAQ;;IAKhD,gBAAgB,CAAC,KAAK,EAAE,iBAAiB;;;;IASzC,MAAM,CAAC,EAAE,QAAQ,EAAE,EAAE,eAAe,CAAC,YAAY,CAAC;;;;;;CAmBnD"}
@@ -0,0 +1,35 @@
1
+ import { EntityManager } from "../../entity/entity-manager.js";
2
+ import { Template } from "../template.js";
3
+ import { Sonamu } from "../../api/index.js";
4
+ export class Template__model_test extends Template {
5
+ constructor(){
6
+ super("model_test");
7
+ }
8
+ getTargetAndPath(names) {
9
+ const { dir } = Sonamu.config.api;
10
+ return {
11
+ target: `${dir}/src/application`,
12
+ path: `${names.fs}/${names.fs}.model.test.ts`
13
+ };
14
+ }
15
+ render({ entityId }) {
16
+ const names = EntityManager.getNamesFromId(entityId);
17
+ return {
18
+ ...this.getTargetAndPath(names),
19
+ body: `
20
+ import { describe, test, expect } from "vitest";
21
+ import { bootstrap } from '../../testing/bootstrap';
22
+
23
+ bootstrap();
24
+ describe.skip("${entityId}ModelTest", () => {
25
+ test("Query", async () => {
26
+ expect(true).toBe(true);
27
+ });
28
+ });
29
+ `.trim(),
30
+ importKeys: []
31
+ };
32
+ }
33
+ }
34
+
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZW1wbGF0ZS9pbXBsZW1lbnRhdGlvbnMvbW9kZWxfdGVzdC50ZW1wbGF0ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUZW1wbGF0ZU9wdGlvbnMgfSBmcm9tIFwiLi4vLi4vdHlwZXMvdHlwZXNcIjtcbmltcG9ydCB7IEVudGl0eU1hbmFnZXIsIEVudGl0eU5hbWVzUmVjb3JkIH0gZnJvbSBcIi4uLy4uL2VudGl0eS9lbnRpdHktbWFuYWdlclwiO1xuaW1wb3J0IHsgVGVtcGxhdGUgfSBmcm9tIFwiLi4vdGVtcGxhdGVcIjtcbmltcG9ydCB7IFNvbmFtdSB9IGZyb20gXCIuLi8uLi9hcGlcIjtcblxuZXhwb3J0IGNsYXNzIFRlbXBsYXRlX19tb2RlbF90ZXN0IGV4dGVuZHMgVGVtcGxhdGUge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihcIm1vZGVsX3Rlc3RcIik7XG4gIH1cblxuICBnZXRUYXJnZXRBbmRQYXRoKG5hbWVzOiBFbnRpdHlOYW1lc1JlY29yZCkge1xuICAgIGNvbnN0IHsgZGlyIH0gPSBTb25hbXUuY29uZmlnLmFwaTtcblxuICAgIHJldHVybiB7XG4gICAgICB0YXJnZXQ6IGAke2Rpcn0vc3JjL2FwcGxpY2F0aW9uYCxcbiAgICAgIHBhdGg6IGAke25hbWVzLmZzfS8ke25hbWVzLmZzfS5tb2RlbC50ZXN0LnRzYCxcbiAgICB9O1xuICB9XG5cbiAgcmVuZGVyKHsgZW50aXR5SWQgfTogVGVtcGxhdGVPcHRpb25zW1wibW9kZWxfdGVzdFwiXSkge1xuICAgIGNvbnN0IG5hbWVzID0gRW50aXR5TWFuYWdlci5nZXROYW1lc0Zyb21JZChlbnRpdHlJZCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4udGhpcy5nZXRUYXJnZXRBbmRQYXRoKG5hbWVzKSxcbiAgICAgIGJvZHk6IGBcbmltcG9ydCB7IGRlc2NyaWJlLCB0ZXN0LCBleHBlY3QgfSBmcm9tIFwidml0ZXN0XCI7XG5pbXBvcnQgeyBib290c3RyYXAgfSBmcm9tICcuLi8uLi90ZXN0aW5nL2Jvb3RzdHJhcCc7XG5cbmJvb3RzdHJhcCgpO1xuZGVzY3JpYmUuc2tpcChcIiR7ZW50aXR5SWR9TW9kZWxUZXN0XCIsICgpID0+IHtcbiAgdGVzdChcIlF1ZXJ5XCIsIGFzeW5jICgpID0+IHtcbiAgICBleHBlY3QodHJ1ZSkudG9CZSh0cnVlKTtcbiAgfSk7XG59KTtcbiAgICAgIGAudHJpbSgpLFxuICAgICAgaW1wb3J0S2V5czogW10sXG4gICAgfTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbIkVudGl0eU1hbmFnZXIiLCJUZW1wbGF0ZSIsIlNvbmFtdSIsIlRlbXBsYXRlX19tb2RlbF90ZXN0IiwiZ2V0VGFyZ2V0QW5kUGF0aCIsIm5hbWVzIiwiZGlyIiwiY29uZmlnIiwiYXBpIiwidGFyZ2V0IiwicGF0aCIsImZzIiwicmVuZGVyIiwiZW50aXR5SWQiLCJnZXROYW1lc0Zyb21JZCIsImJvZHkiLCJ0cmltIiwiaW1wb3J0S2V5cyJdLCJtYXBwaW5ncyI6IkFBQ0EsU0FBU0EsYUFBYSxRQUEyQixpQ0FBOEI7QUFDL0UsU0FBU0MsUUFBUSxRQUFRLGlCQUFjO0FBQ3ZDLFNBQVNDLE1BQU0sUUFBUSxxQkFBWTtBQUVuQyxPQUFPLE1BQU1DLDZCQUE2QkY7SUFDeEMsYUFBYztRQUNaLEtBQUssQ0FBQztJQUNSO0lBRUFHLGlCQUFpQkMsS0FBd0IsRUFBRTtRQUN6QyxNQUFNLEVBQUVDLEdBQUcsRUFBRSxHQUFHSixPQUFPSyxNQUFNLENBQUNDLEdBQUc7UUFFakMsT0FBTztZQUNMQyxRQUFRLEdBQUdILElBQUksZ0JBQWdCLENBQUM7WUFDaENJLE1BQU0sR0FBR0wsTUFBTU0sRUFBRSxDQUFDLENBQUMsRUFBRU4sTUFBTU0sRUFBRSxDQUFDLGNBQWMsQ0FBQztRQUMvQztJQUNGO0lBRUFDLE9BQU8sRUFBRUMsUUFBUSxFQUFpQyxFQUFFO1FBQ2xELE1BQU1SLFFBQVFMLGNBQWNjLGNBQWMsQ0FBQ0Q7UUFFM0MsT0FBTztZQUNMLEdBQUcsSUFBSSxDQUFDVCxnQkFBZ0IsQ0FBQ0MsTUFBTTtZQUMvQlUsTUFBTSxDQUFDOzs7OztlQUtFLEVBQUVGLFNBQVM7Ozs7O01BS3BCLENBQUMsQ0FBQ0csSUFBSTtZQUNOQyxZQUFZLEVBQUU7UUFDaEI7SUFDRjtBQUNGIn0=
@@ -1,15 +1,15 @@
1
- import { TemplateOptions } from "../types/types";
2
- import { EntityNamesRecord } from "../entity/entity-manager";
3
- import { ApiParam } from "../types/types";
4
- import { ExtendedApi } from "../api/decorators";
5
- import { Template } from "./base-template";
1
+ import { TemplateOptions } from "../../types/types";
2
+ import { EntityNamesRecord } from "../../entity/entity-manager";
3
+ import { ApiParam } from "../../types/types";
4
+ import { ExtendedApi } from "../../api/decorators";
5
+ import { Template } from "../template";
6
6
  export declare class Template__service extends Template {
7
7
  constructor();
8
8
  getTargetAndPath(names: EntityNamesRecord): {
9
9
  target: string;
10
10
  path: string;
11
11
  };
12
- render({ namesRecord }: TemplateOptions["service"], apis: ExtendedApi[]): {
12
+ render({ namesRecord }: TemplateOptions["service"]): {
13
13
  body: string;
14
14
  importKeys: string[];
15
15
  customHeaders: string[];