sonamu 0.5.7 → 0.7.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 (529) hide show
  1. package/.swcrc.project-default +18 -0
  2. package/bin/cli.js +24 -0
  3. package/dist/ai/agents/agent.d.ts +11 -0
  4. package/dist/ai/agents/agent.d.ts.map +1 -0
  5. package/dist/ai/agents/agent.js +65 -0
  6. package/dist/ai/agents/index.d.ts +3 -0
  7. package/dist/ai/agents/index.d.ts.map +1 -0
  8. package/dist/ai/agents/index.js +4 -0
  9. package/dist/ai/agents/types.d.ts +43 -0
  10. package/dist/ai/agents/types.d.ts.map +1 -0
  11. package/dist/ai/agents/types.js +3 -0
  12. package/dist/ai/index.d.ts +2 -0
  13. package/dist/ai/index.d.ts.map +1 -0
  14. package/dist/ai/index.js +3 -0
  15. package/dist/ai/providers/rtzr/api.d.ts +22 -0
  16. package/dist/ai/providers/rtzr/api.d.ts.map +1 -0
  17. package/dist/ai/providers/rtzr/api.js +28 -0
  18. package/dist/ai/providers/rtzr/error.d.ts +18 -0
  19. package/dist/ai/providers/rtzr/error.d.ts.map +1 -0
  20. package/dist/ai/providers/rtzr/error.js +29 -0
  21. package/dist/ai/providers/rtzr/index.d.ts +5 -0
  22. package/dist/ai/providers/rtzr/index.d.ts.map +1 -0
  23. package/dist/ai/providers/rtzr/index.js +6 -0
  24. package/dist/ai/providers/rtzr/model.d.ts +52 -0
  25. package/dist/ai/providers/rtzr/model.d.ts.map +1 -0
  26. package/dist/ai/providers/rtzr/model.js +137 -0
  27. package/dist/ai/providers/rtzr/options.d.ts +7 -0
  28. package/dist/ai/providers/rtzr/options.d.ts.map +1 -0
  29. package/dist/ai/providers/rtzr/options.js +47 -0
  30. package/dist/ai/providers/rtzr/provider.d.ts +18 -0
  31. package/dist/ai/providers/rtzr/provider.d.ts.map +1 -0
  32. package/dist/ai/providers/rtzr/provider.js +54 -0
  33. package/dist/ai/providers/rtzr/utils.d.ts +19 -0
  34. package/dist/ai/providers/rtzr/utils.d.ts.map +1 -0
  35. package/dist/ai/providers/rtzr/utils.js +88 -0
  36. package/dist/api/base-frame.d.ts +2 -2
  37. package/dist/api/base-frame.d.ts.map +1 -1
  38. package/dist/api/base-frame.js +13 -2
  39. package/dist/api/caster.d.ts.map +1 -1
  40. package/dist/api/caster.js +71 -2
  41. package/dist/api/code-converters.d.ts +58 -14
  42. package/dist/api/code-converters.d.ts.map +1 -1
  43. package/dist/api/code-converters.js +258 -2
  44. package/dist/api/config.d.ts +90 -0
  45. package/dist/api/config.d.ts.map +1 -0
  46. package/dist/api/config.js +25 -0
  47. package/dist/api/context.d.ts +4 -2
  48. package/dist/api/context.d.ts.map +1 -1
  49. package/dist/api/context.js +3 -2
  50. package/dist/api/decorators.d.ts +20 -6
  51. package/dist/api/decorators.d.ts.map +1 -1
  52. package/dist/api/decorators.js +235 -2
  53. package/dist/api/index.d.ts +2 -2
  54. package/dist/api/index.d.ts.map +1 -1
  55. package/dist/api/index.js +9 -2
  56. package/dist/api/sonamu.d.ts +10 -24
  57. package/dist/api/sonamu.d.ts.map +1 -1
  58. package/dist/api/sonamu.js +514 -2
  59. package/dist/api/validator.d.ts +6 -0
  60. package/dist/api/validator.d.ts.map +1 -0
  61. package/dist/api/validator.js +81 -0
  62. package/dist/bin/build-config.d.ts +6 -1
  63. package/dist/bin/build-config.d.ts.map +1 -1
  64. package/dist/bin/build-config.js +15 -2
  65. package/dist/bin/cli.js +519 -2
  66. package/dist/bin/hot-hook-register.d.ts +11 -0
  67. package/dist/bin/hot-hook-register.d.ts.map +1 -0
  68. package/dist/bin/hot-hook-register.js +21 -0
  69. package/dist/bin/loader-register.d.ts +2 -0
  70. package/dist/bin/loader-register.d.ts.map +1 -0
  71. package/dist/bin/loader-register.js +34 -0
  72. package/dist/database/_batch_update.d.ts +5 -3
  73. package/dist/database/_batch_update.d.ts.map +1 -1
  74. package/dist/database/_batch_update.js +95 -2
  75. package/dist/database/base-model.d.ts +96 -10
  76. package/dist/database/base-model.d.ts.map +1 -1
  77. package/dist/database/base-model.js +390 -2
  78. package/dist/database/base-model.types.d.ts +93 -0
  79. package/dist/database/base-model.types.d.ts.map +1 -0
  80. package/dist/database/base-model.types.js +10 -0
  81. package/dist/database/code-generator.d.ts +1 -1
  82. package/dist/database/code-generator.d.ts.map +1 -1
  83. package/dist/database/code-generator.js +54 -2
  84. package/dist/database/db.d.ts +6 -21
  85. package/dist/database/db.d.ts.map +1 -1
  86. package/dist/database/db.js +129 -2
  87. package/dist/database/puri-subset.test-d.js +81 -0
  88. package/dist/database/puri-subset.types.d.ts +123 -0
  89. package/dist/database/puri-subset.types.d.ts.map +1 -0
  90. package/dist/database/puri-subset.types.js +16 -0
  91. package/dist/database/puri-wrapper.d.ts +13 -11
  92. package/dist/database/puri-wrapper.d.ts.map +1 -1
  93. package/dist/database/puri-wrapper.js +109 -2
  94. package/dist/database/puri.d.ts +41 -23
  95. package/dist/database/puri.d.ts.map +1 -1
  96. package/dist/database/puri.js +601 -2
  97. package/dist/database/puri.types.d.ts +25 -6
  98. package/dist/database/puri.types.d.ts.map +1 -1
  99. package/dist/database/puri.types.js +6 -2
  100. package/dist/database/transaction-context.d.ts +1 -1
  101. package/dist/database/transaction-context.d.ts.map +1 -1
  102. package/dist/database/transaction-context.js +14 -2
  103. package/dist/database/upsert-builder.d.ts +9 -3
  104. package/dist/database/upsert-builder.d.ts.map +1 -1
  105. package/dist/database/upsert-builder.js +365 -2
  106. package/dist/entity/entity-manager.d.ts +167 -2
  107. package/dist/entity/entity-manager.d.ts.map +1 -1
  108. package/dist/entity/entity-manager.js +130 -2
  109. package/dist/entity/entity.d.ts +5 -3
  110. package/dist/entity/entity.d.ts.map +1 -1
  111. package/dist/entity/entity.js +750 -2
  112. package/dist/exceptions/error-handler.d.ts +1 -1
  113. package/dist/exceptions/error-handler.d.ts.map +1 -1
  114. package/dist/exceptions/error-handler.js +29 -2
  115. package/dist/exceptions/so-exceptions.d.ts +1 -1
  116. package/dist/exceptions/so-exceptions.d.ts.map +1 -1
  117. package/dist/exceptions/so-exceptions.js +85 -2
  118. package/dist/file-storage/driver.d.ts +1 -1
  119. package/dist/file-storage/driver.d.ts.map +1 -1
  120. package/dist/file-storage/driver.js +79 -2
  121. package/dist/file-storage/file-storage.js +75 -2
  122. package/dist/index.d.ts +18 -9
  123. package/dist/index.d.ts.map +1 -1
  124. package/dist/index.js +34 -2
  125. package/dist/migration/code-generation.d.ts +1 -1
  126. package/dist/migration/code-generation.d.ts.map +1 -1
  127. package/dist/migration/code-generation.js +614 -2
  128. package/dist/migration/migration-set.d.ts +2 -10
  129. package/dist/migration/migration-set.d.ts.map +1 -1
  130. package/dist/migration/migration-set.js +213 -2
  131. package/dist/migration/migrator.d.ts +24 -82
  132. package/dist/migration/migrator.d.ts.map +1 -1
  133. package/dist/migration/migrator.js +330 -2
  134. package/dist/migration/postgresql-schema-reader.d.ts +51 -0
  135. package/dist/migration/postgresql-schema-reader.d.ts.map +1 -0
  136. package/dist/migration/postgresql-schema-reader.js +245 -0
  137. package/dist/migration/types.d.ts +6 -38
  138. package/dist/migration/types.d.ts.map +1 -1
  139. package/dist/migration/types.js +3 -2
  140. package/dist/naite/messaging-types.d.ts +43 -0
  141. package/dist/naite/messaging-types.d.ts.map +1 -0
  142. package/dist/naite/messaging-types.js +7 -0
  143. package/dist/naite/naite-reporter.d.ts +41 -0
  144. package/dist/naite/naite-reporter.d.ts.map +1 -0
  145. package/dist/naite/naite-reporter.js +102 -0
  146. package/dist/naite/naite.d.ts +95 -0
  147. package/dist/naite/naite.d.ts.map +1 -0
  148. package/dist/naite/naite.js +316 -0
  149. package/dist/stream/index.js +3 -2
  150. package/dist/stream/sse.d.ts +2 -2
  151. package/dist/stream/sse.d.ts.map +1 -1
  152. package/dist/stream/sse.js +38 -2
  153. package/dist/syncer/api-parser.d.ts +10 -0
  154. package/dist/syncer/api-parser.d.ts.map +1 -0
  155. package/dist/syncer/api-parser.js +240 -0
  156. package/dist/syncer/checksum.d.ts +21 -0
  157. package/dist/syncer/checksum.d.ts.map +1 -0
  158. package/dist/syncer/checksum.js +98 -0
  159. package/dist/syncer/code-generator.d.ts +20 -0
  160. package/dist/syncer/code-generator.d.ts.map +1 -0
  161. package/dist/syncer/code-generator.js +161 -0
  162. package/dist/syncer/entity-operations.d.ts +17 -0
  163. package/dist/syncer/entity-operations.d.ts.map +1 -0
  164. package/dist/syncer/entity-operations.js +59 -0
  165. package/dist/syncer/file-patterns.d.ts +29 -0
  166. package/dist/syncer/file-patterns.d.ts.map +1 -0
  167. package/dist/syncer/file-patterns.js +38 -0
  168. package/dist/syncer/index.d.ts +6 -0
  169. package/dist/syncer/index.d.ts.map +1 -1
  170. package/dist/syncer/index.js +9 -2
  171. package/dist/syncer/module-loader.d.ts +35 -0
  172. package/dist/syncer/module-loader.d.ts.map +1 -0
  173. package/dist/syncer/module-loader.js +87 -0
  174. package/dist/syncer/syncer.d.ts +98 -106
  175. package/dist/syncer/syncer.d.ts.map +1 -1
  176. package/dist/syncer/syncer.js +422 -2
  177. package/dist/template/entity-converter.d.ts +14 -0
  178. package/dist/template/entity-converter.d.ts.map +1 -0
  179. package/dist/template/entity-converter.js +108 -0
  180. package/dist/template/helpers.d.ts +23 -0
  181. package/dist/template/helpers.d.ts.map +1 -0
  182. package/dist/template/helpers.js +64 -0
  183. package/dist/{templates → template/implementations}/entity.template.d.ts +3 -3
  184. package/dist/template/implementations/entity.template.d.ts.map +1 -0
  185. package/dist/template/implementations/entity.template.js +86 -0
  186. package/dist/{templates → template/implementations}/generated.template.d.ts +3 -4
  187. package/dist/template/implementations/generated.template.d.ts.map +1 -0
  188. package/dist/template/implementations/generated.template.js +249 -0
  189. package/dist/{templates → template/implementations}/generated_http.template.d.ts +3 -4
  190. package/dist/template/implementations/generated_http.template.d.ts.map +1 -0
  191. package/dist/template/implementations/generated_http.template.js +131 -0
  192. package/dist/{templates → template/implementations}/generated_sso.template.d.ts +4 -5
  193. package/dist/template/implementations/generated_sso.template.d.ts.map +1 -0
  194. package/dist/template/implementations/generated_sso.template.js +134 -0
  195. package/dist/{templates → template/implementations}/init_types.template.d.ts +3 -3
  196. package/dist/template/implementations/init_types.template.d.ts.map +1 -0
  197. package/dist/template/implementations/init_types.template.js +38 -0
  198. package/dist/template/implementations/model.template.d.ts +17 -0
  199. package/dist/template/implementations/model.template.d.ts.map +1 -0
  200. package/dist/template/implementations/model.template.js +181 -0
  201. package/dist/{templates → template/implementations}/model_test.template.d.ts +3 -3
  202. package/dist/template/implementations/model_test.template.d.ts.map +1 -0
  203. package/dist/template/implementations/model_test.template.js +35 -0
  204. package/dist/{templates → template/implementations}/service.template.d.ts +6 -6
  205. package/dist/template/implementations/service.template.d.ts.map +1 -0
  206. package/dist/template/implementations/service.template.js +201 -0
  207. package/dist/{templates → template/implementations}/view_enums_buttonset.template.d.ts +3 -3
  208. package/dist/template/implementations/view_enums_buttonset.template.d.ts.map +1 -0
  209. package/dist/template/implementations/view_enums_buttonset.template.js +31 -0
  210. package/dist/{templates → template/implementations}/view_enums_dropdown.template.d.ts +3 -4
  211. package/dist/template/implementations/view_enums_dropdown.template.d.ts.map +1 -0
  212. package/dist/template/implementations/view_enums_dropdown.template.js +50 -0
  213. package/dist/{templates → template/implementations}/view_enums_select.template.d.ts +3 -3
  214. package/dist/template/implementations/view_enums_select.template.d.ts.map +1 -0
  215. package/dist/template/implementations/view_enums_select.template.js +55 -0
  216. package/dist/{templates → template/implementations}/view_form.template.d.ts +5 -5
  217. package/dist/template/implementations/view_form.template.d.ts.map +1 -0
  218. package/dist/template/implementations/view_form.template.js +337 -0
  219. package/dist/{templates → template/implementations}/view_id_all_select.template.d.ts +3 -3
  220. package/dist/template/implementations/view_id_all_select.template.d.ts.map +1 -0
  221. package/dist/template/implementations/view_id_all_select.template.js +31 -0
  222. package/dist/{templates → template/implementations}/view_id_async_select.template.d.ts +3 -3
  223. package/dist/template/implementations/view_id_async_select.template.d.ts.map +1 -0
  224. package/dist/template/implementations/view_id_async_select.template.js +105 -0
  225. package/dist/{templates → template/implementations}/view_list.template.d.ts +5 -13
  226. package/dist/template/implementations/view_list.template.d.ts.map +1 -0
  227. package/dist/template/implementations/view_list.template.js +475 -0
  228. package/dist/template/implementations/view_list_columns.template.d.ts +17 -0
  229. package/dist/template/implementations/view_list_columns.template.d.ts.map +1 -0
  230. package/dist/template/implementations/view_list_columns.template.js +49 -0
  231. package/dist/{templates → template/implementations}/view_search_input.template.d.ts +3 -3
  232. package/dist/template/implementations/view_search_input.template.d.ts.map +1 -0
  233. package/dist/template/implementations/view_search_input.template.js +64 -0
  234. package/dist/template/index.d.ts +7 -0
  235. package/dist/template/index.d.ts.map +1 -0
  236. package/dist/template/index.js +8 -0
  237. package/dist/template/template-manager.d.ts +56 -0
  238. package/dist/template/template-manager.d.ts.map +1 -0
  239. package/dist/template/template-manager.js +125 -0
  240. package/dist/template/template-types.d.ts +16 -0
  241. package/dist/template/template-types.d.ts.map +1 -0
  242. package/dist/template/template-types.js +7 -0
  243. package/dist/template/template.d.ts +49 -0
  244. package/dist/template/template.d.ts.map +1 -0
  245. package/dist/template/template.js +60 -0
  246. package/dist/template/zod-converter.d.ts +51 -0
  247. package/dist/template/zod-converter.d.ts.map +1 -0
  248. package/dist/template/zod-converter.js +449 -0
  249. package/dist/testing/_relation-graph.d.ts +1 -1
  250. package/dist/testing/_relation-graph.d.ts.map +1 -1
  251. package/dist/testing/_relation-graph.js +89 -2
  252. package/dist/testing/fixture-manager.d.ts +42 -11
  253. package/dist/testing/fixture-manager.d.ts.map +1 -1
  254. package/dist/testing/fixture-manager.js +623 -2
  255. package/dist/types/types.d.ts +747 -143
  256. package/dist/types/types.d.ts.map +1 -1
  257. package/dist/types/types.js +546 -2
  258. package/dist/typings/knex.d.js +3 -2
  259. package/dist/utils/async-utils.d.ts +7 -0
  260. package/dist/utils/async-utils.d.ts.map +1 -1
  261. package/dist/utils/async-utils.js +57 -2
  262. package/dist/utils/console-util.d.ts +2 -0
  263. package/dist/utils/console-util.d.ts.map +1 -0
  264. package/dist/utils/console-util.js +6 -0
  265. package/dist/utils/controller.d.ts +1 -0
  266. package/dist/utils/controller.d.ts.map +1 -1
  267. package/dist/utils/controller.js +29 -2
  268. package/dist/utils/esm-utils.d.ts +39 -0
  269. package/dist/utils/esm-utils.d.ts.map +1 -0
  270. package/dist/utils/esm-utils.js +49 -0
  271. package/dist/utils/formatter.d.ts +3 -0
  272. package/dist/utils/formatter.d.ts.map +1 -0
  273. package/dist/utils/formatter.js +110 -0
  274. package/dist/utils/fs-utils.d.ts +1 -1
  275. package/dist/utils/fs-utils.d.ts.map +1 -1
  276. package/dist/utils/fs-utils.js +17 -2
  277. package/dist/utils/lodash-able.d.ts.map +1 -1
  278. package/dist/utils/lodash-able.js +6 -2
  279. package/dist/utils/model.js +22 -2
  280. package/dist/utils/object-utils.d.ts +44 -0
  281. package/dist/utils/object-utils.d.ts.map +1 -0
  282. package/dist/utils/object-utils.js +191 -0
  283. package/dist/utils/path-utils.d.ts +89 -0
  284. package/dist/utils/path-utils.d.ts.map +1 -0
  285. package/dist/utils/path-utils.js +60 -0
  286. package/dist/utils/process-utils.d.ts +13 -0
  287. package/dist/utils/process-utils.d.ts.map +1 -0
  288. package/dist/utils/process-utils.js +36 -0
  289. package/dist/utils/sql-parser.d.ts +5 -1
  290. package/dist/utils/sql-parser.d.ts.map +1 -1
  291. package/dist/utils/sql-parser.js +46 -2
  292. package/dist/utils/type-utils.d.ts +23 -0
  293. package/dist/utils/type-utils.d.ts.map +1 -0
  294. package/dist/utils/type-utils.js +45 -0
  295. package/dist/utils/utils.d.ts +10 -7
  296. package/dist/utils/utils.d.ts.map +1 -1
  297. package/dist/utils/utils.js +72 -2
  298. package/dist/utils/zod-error.d.ts +1 -1
  299. package/dist/utils/zod-error.d.ts.map +1 -1
  300. package/dist/utils/zod-error.js +19 -2
  301. package/package.json +65 -27
  302. package/src/ai/agents/agent.ts +87 -0
  303. package/src/ai/agents/index.ts +2 -0
  304. package/src/ai/agents/types.ts +47 -0
  305. package/src/ai/index.ts +1 -0
  306. package/src/ai/providers/rtzr/api.ts +37 -0
  307. package/src/ai/providers/rtzr/error.ts +34 -0
  308. package/src/ai/providers/rtzr/index.ts +4 -0
  309. package/src/ai/providers/rtzr/model.ts +201 -0
  310. package/src/ai/providers/rtzr/options.ts +49 -0
  311. package/src/ai/providers/rtzr/provider.ts +91 -0
  312. package/src/ai/providers/rtzr/utils.ts +127 -0
  313. package/src/api/base-frame.ts +4 -2
  314. package/src/api/caster.ts +17 -23
  315. package/src/api/code-converters.ts +178 -535
  316. package/src/api/config.ts +125 -0
  317. package/src/api/context.ts +7 -17
  318. package/src/api/decorators.ts +176 -46
  319. package/src/api/index.ts +2 -2
  320. package/src/api/sonamu.ts +190 -167
  321. package/src/api/validator.ts +83 -0
  322. package/src/bin/build-config.ts +8 -1
  323. package/src/bin/cli.ts +258 -124
  324. package/src/bin/hot-hook-register.ts +22 -0
  325. package/src/bin/loader-register.ts +38 -0
  326. package/src/database/_batch_update.ts +46 -31
  327. package/src/database/base-model.ts +390 -182
  328. package/src/database/base-model.types.ts +155 -0
  329. package/src/database/code-generator.ts +13 -32
  330. package/src/database/db.ts +40 -96
  331. package/src/database/puri-subset.test-d.ts +471 -0
  332. package/src/database/puri-subset.types.ts +195 -0
  333. package/src/database/puri-wrapper.ts +58 -67
  334. package/src/database/puri.ts +229 -148
  335. package/src/database/puri.types.ts +76 -30
  336. package/src/database/transaction-context.ts +1 -1
  337. package/src/database/upsert-builder.ts +262 -132
  338. package/src/entity/entity-manager.ts +48 -36
  339. package/src/entity/entity.ts +330 -248
  340. package/src/exceptions/error-handler.ts +3 -3
  341. package/src/exceptions/so-exceptions.ts +11 -11
  342. package/src/file-storage/driver.ts +5 -5
  343. package/src/file-storage/file-storage.ts +2 -2
  344. package/src/index.ts +18 -10
  345. package/src/migration/code-generation.ts +185 -172
  346. package/src/migration/migration-set.ts +80 -293
  347. package/src/migration/migrator.ts +199 -571
  348. package/src/migration/mysql-schema-reader.ts.txt +272 -0
  349. package/src/migration/postgresql-schema-reader.ts +310 -0
  350. package/src/migration/types.ts +6 -39
  351. package/src/naite/messaging-types.ts +51 -0
  352. package/src/naite/naite-reporter.ts +128 -0
  353. package/src/naite/naite.ts +415 -0
  354. package/src/shared/web.shared.ts.txt +20 -24
  355. package/src/stream/sse.ts +5 -5
  356. package/src/syncer/api-parser.ts +282 -0
  357. package/src/syncer/checksum.ts +140 -0
  358. package/src/syncer/code-generator.ts +198 -0
  359. package/src/syncer/entity-operations.ts +65 -0
  360. package/src/syncer/file-patterns.ts +56 -0
  361. package/src/syncer/index.ts +6 -0
  362. package/src/syncer/module-loader.ts +128 -0
  363. package/src/syncer/syncer.ts +389 -1453
  364. package/src/template/entity-converter.ts +114 -0
  365. package/src/template/helpers.ts +81 -0
  366. package/src/{templates → template/implementations}/entity.template.ts +7 -7
  367. package/src/{templates → template/implementations}/generated.template.ts +101 -101
  368. package/src/{templates → template/implementations}/generated_http.template.ts +27 -57
  369. package/src/template/implementations/generated_sso.template.ts +151 -0
  370. package/src/{templates → template/implementations}/init_types.template.ts +5 -7
  371. package/src/{templates → template/implementations}/model.template.ts +52 -43
  372. package/src/{templates → template/implementations}/model_test.template.ts +5 -5
  373. package/src/{templates → template/implementations}/service.template.ts +66 -82
  374. package/src/{templates → template/implementations}/view_enums_buttonset.template.ts +3 -3
  375. package/src/{templates → template/implementations}/view_enums_dropdown.template.ts +4 -20
  376. package/src/{templates → template/implementations}/view_enums_select.template.ts +4 -4
  377. package/src/{templates → template/implementations}/view_form.template.ts +40 -83
  378. package/src/{templates → template/implementations}/view_id_all_select.template.ts +3 -3
  379. package/src/{templates → template/implementations}/view_id_async_select.template.ts +10 -24
  380. package/src/{templates → template/implementations}/view_list.template.ts +60 -152
  381. package/src/{templates → template/implementations}/view_list_columns.template.ts +5 -11
  382. package/src/{templates → template/implementations}/view_search_input.template.ts +3 -3
  383. package/src/template/index.ts +6 -0
  384. package/src/template/template-manager.ts +166 -0
  385. package/src/template/template-types.ts +16 -0
  386. package/src/template/template.ts +105 -0
  387. package/src/template/zod-converter.ts +525 -0
  388. package/src/testing/_relation-graph.ts +18 -11
  389. package/src/testing/fixture-manager.ts +472 -359
  390. package/src/types/types.ts +553 -308
  391. package/src/typings/knex.d.ts +7 -9
  392. package/src/utils/async-utils.ts +23 -10
  393. package/src/utils/console-util.ts +4 -0
  394. package/src/utils/controller.ts +3 -0
  395. package/src/utils/esm-utils.ts +59 -0
  396. package/src/utils/formatter.ts +109 -0
  397. package/src/utils/fs-utils.ts +1 -1
  398. package/src/utils/lodash-able.ts +1 -4
  399. package/src/utils/object-utils.ts +217 -0
  400. package/src/utils/path-utils.ts +99 -0
  401. package/src/utils/process-utils.ts +46 -0
  402. package/src/utils/sql-parser.ts +23 -5
  403. package/src/utils/type-utils.ts +83 -0
  404. package/src/utils/utils.ts +66 -43
  405. package/src/utils/zod-error.ts +3 -4
  406. package/dist/api/base-frame.js.map +0 -1
  407. package/dist/api/caster.js.map +0 -1
  408. package/dist/api/code-converters.js.map +0 -1
  409. package/dist/api/context.js.map +0 -1
  410. package/dist/api/decorators.js.map +0 -1
  411. package/dist/api/index.js.map +0 -1
  412. package/dist/api/sonamu.js.map +0 -1
  413. package/dist/bin/build-config.js.map +0 -1
  414. package/dist/bin/cli-wrapper.d.ts +0 -3
  415. package/dist/bin/cli-wrapper.d.ts.map +0 -1
  416. package/dist/bin/cli-wrapper.js +0 -3
  417. package/dist/bin/cli-wrapper.js.map +0 -1
  418. package/dist/bin/cli.js.map +0 -1
  419. package/dist/database/_batch_update.js.map +0 -1
  420. package/dist/database/base-model.js.map +0 -1
  421. package/dist/database/code-generator.js.map +0 -1
  422. package/dist/database/db.js.map +0 -1
  423. package/dist/database/knex-plugins/knex-on-duplicate-update.d.ts +0 -2
  424. package/dist/database/knex-plugins/knex-on-duplicate-update.d.ts.map +0 -1
  425. package/dist/database/knex-plugins/knex-on-duplicate-update.js +0 -2
  426. package/dist/database/knex-plugins/knex-on-duplicate-update.js.map +0 -1
  427. package/dist/database/puri-wrapper.js.map +0 -1
  428. package/dist/database/puri.js.map +0 -1
  429. package/dist/database/puri.types.js.map +0 -1
  430. package/dist/database/transaction-context.js.map +0 -1
  431. package/dist/database/upsert-builder.js.map +0 -1
  432. package/dist/entity/entity-manager.js.map +0 -1
  433. package/dist/entity/entity-utils.d.ts +0 -61
  434. package/dist/entity/entity-utils.d.ts.map +0 -1
  435. package/dist/entity/entity-utils.js +0 -2
  436. package/dist/entity/entity-utils.js.map +0 -1
  437. package/dist/entity/entity.js.map +0 -1
  438. package/dist/exceptions/error-handler.js.map +0 -1
  439. package/dist/exceptions/so-exceptions.js.map +0 -1
  440. package/dist/file-storage/driver.js.map +0 -1
  441. package/dist/file-storage/file-storage.js.map +0 -1
  442. package/dist/index.js.map +0 -1
  443. package/dist/migration/code-generation.js.map +0 -1
  444. package/dist/migration/migration-set.js.map +0 -1
  445. package/dist/migration/migrator.js.map +0 -1
  446. package/dist/migration/types.js.map +0 -1
  447. package/dist/stream/index.js.map +0 -1
  448. package/dist/stream/sse.js.map +0 -1
  449. package/dist/syncer/index.js.map +0 -1
  450. package/dist/syncer/syncer.js.map +0 -1
  451. package/dist/templates/base-template.d.ts +0 -13
  452. package/dist/templates/base-template.d.ts.map +0 -1
  453. package/dist/templates/base-template.js +0 -2
  454. package/dist/templates/base-template.js.map +0 -1
  455. package/dist/templates/entity.template.d.ts.map +0 -1
  456. package/dist/templates/entity.template.js +0 -2
  457. package/dist/templates/entity.template.js.map +0 -1
  458. package/dist/templates/generated.template.d.ts.map +0 -1
  459. package/dist/templates/generated.template.js +0 -2
  460. package/dist/templates/generated.template.js.map +0 -1
  461. package/dist/templates/generated_http.template.d.ts.map +0 -1
  462. package/dist/templates/generated_http.template.js +0 -2
  463. package/dist/templates/generated_http.template.js.map +0 -1
  464. package/dist/templates/generated_sso.template.d.ts.map +0 -1
  465. package/dist/templates/generated_sso.template.js +0 -2
  466. package/dist/templates/generated_sso.template.js.map +0 -1
  467. package/dist/templates/index.d.ts +0 -2
  468. package/dist/templates/index.d.ts.map +0 -1
  469. package/dist/templates/index.js +0 -2
  470. package/dist/templates/index.js.map +0 -1
  471. package/dist/templates/init_types.template.d.ts.map +0 -1
  472. package/dist/templates/init_types.template.js +0 -2
  473. package/dist/templates/init_types.template.js.map +0 -1
  474. package/dist/templates/model.template.d.ts +0 -17
  475. package/dist/templates/model.template.d.ts.map +0 -1
  476. package/dist/templates/model.template.js +0 -2
  477. package/dist/templates/model.template.js.map +0 -1
  478. package/dist/templates/model_test.template.d.ts.map +0 -1
  479. package/dist/templates/model_test.template.js +0 -2
  480. package/dist/templates/model_test.template.js.map +0 -1
  481. package/dist/templates/service.template.d.ts.map +0 -1
  482. package/dist/templates/service.template.js +0 -2
  483. package/dist/templates/service.template.js.map +0 -1
  484. package/dist/templates/view_enums_buttonset.template.d.ts.map +0 -1
  485. package/dist/templates/view_enums_buttonset.template.js +0 -2
  486. package/dist/templates/view_enums_buttonset.template.js.map +0 -1
  487. package/dist/templates/view_enums_dropdown.template.d.ts.map +0 -1
  488. package/dist/templates/view_enums_dropdown.template.js +0 -2
  489. package/dist/templates/view_enums_dropdown.template.js.map +0 -1
  490. package/dist/templates/view_enums_select.template.d.ts.map +0 -1
  491. package/dist/templates/view_enums_select.template.js +0 -2
  492. package/dist/templates/view_enums_select.template.js.map +0 -1
  493. package/dist/templates/view_form.template.d.ts.map +0 -1
  494. package/dist/templates/view_form.template.js +0 -2
  495. package/dist/templates/view_form.template.js.map +0 -1
  496. package/dist/templates/view_id_all_select.template.d.ts.map +0 -1
  497. package/dist/templates/view_id_all_select.template.js +0 -2
  498. package/dist/templates/view_id_all_select.template.js.map +0 -1
  499. package/dist/templates/view_id_async_select.template.d.ts.map +0 -1
  500. package/dist/templates/view_id_async_select.template.js +0 -2
  501. package/dist/templates/view_id_async_select.template.js.map +0 -1
  502. package/dist/templates/view_list.template.d.ts.map +0 -1
  503. package/dist/templates/view_list.template.js +0 -2
  504. package/dist/templates/view_list.template.js.map +0 -1
  505. package/dist/templates/view_list_columns.template.d.ts +0 -17
  506. package/dist/templates/view_list_columns.template.d.ts.map +0 -1
  507. package/dist/templates/view_list_columns.template.js +0 -2
  508. package/dist/templates/view_list_columns.template.js.map +0 -1
  509. package/dist/templates/view_search_input.template.d.ts.map +0 -1
  510. package/dist/templates/view_search_input.template.js +0 -2
  511. package/dist/templates/view_search_input.template.js.map +0 -1
  512. package/dist/testing/_relation-graph.js.map +0 -1
  513. package/dist/testing/fixture-manager.js.map +0 -1
  514. package/dist/types/types.js.map +0 -1
  515. package/dist/typings/knex.d.js.map +0 -1
  516. package/dist/utils/async-utils.js.map +0 -1
  517. package/dist/utils/controller.js.map +0 -1
  518. package/dist/utils/fs-utils.js.map +0 -1
  519. package/dist/utils/lodash-able.js.map +0 -1
  520. package/dist/utils/model.js.map +0 -1
  521. package/dist/utils/sql-parser.js.map +0 -1
  522. package/dist/utils/utils.js.map +0 -1
  523. package/dist/utils/zod-error.js.map +0 -1
  524. package/src/bin/cli-wrapper.ts +0 -75
  525. package/src/database/knex-plugins/knex-on-duplicate-update.ts +0 -45
  526. package/src/entity/entity-utils.ts +0 -291
  527. package/src/templates/base-template.ts +0 -19
  528. package/src/templates/generated_sso.template.ts +0 -138
  529. package/src/templates/index.ts +0 -1
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Puri Subset 타입 시스템
3
+ *
4
+ * SubsetQuery와 LoaderQuery를 기반으로 최종 결과 타입을 추론하는 타입 유틸리티들.
5
+ * 핵심 개념:
6
+ * - SubsetQuery: 기본 쿼리 (join, select)
7
+ * - LoaderQuery: 1:N, N:M 관계 데이터 로딩
8
+ * - Hydrate: flat한 결과를 중첩 객체로 변환 (예: user__name → { user: { name } })
9
+ */ // ============================================================================
10
+ // Clear 문
11
+ // ============================================================================
12
+ /**
13
+ * Knex QueryBuilder에서 clear 가능한 statement 목록
14
+ */ export { };
15
+
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhYmFzZS9wdXJpLXN1YnNldC50eXBlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFB1cmkgU3Vic2V0IO2DgOyehSDsi5zsiqTthZxcbiAqXG4gKiBTdWJzZXRRdWVyeeyZgCBMb2FkZXJRdWVyeeulvCDquLDrsJjsnLzroZwg7LWc7KKFIOqysOqzvCDtg4DsnoXsnYQg7LaU66Gg7ZWY64qUIO2DgOyehSDsnKDti7jrpqzti7Drk6QuXG4gKiDtlbXsi6wg6rCc64WQOlxuICogLSBTdWJzZXRRdWVyeTog6riw67O4IOy/vOumrCAoam9pbiwgc2VsZWN0KVxuICogLSBMb2FkZXJRdWVyeTogMTpOLCBOOk0g6rSA6rOEIOuNsOydtO2EsCDroZzrlKlcbiAqIC0gSHlkcmF0ZTogZmxhdO2VnCDqsrDqs7zrpbwg7KSR7LKpIOqwneyytOuhnCDrs4DtmZggKOyYiDogdXNlcl9fbmFtZSDihpIgeyB1c2VyOiB7IG5hbWUgfSB9KVxuICovXG5cbmltcG9ydCB0eXBlIHsgRGF0YWJhc2VTY2hlbWFFeHRlbmQgfSBmcm9tIFwiLi4vdHlwZXMvdHlwZXNcIjtcbmltcG9ydCB0eXBlIHsgUHVyaSB9IGZyb20gXCIuL3B1cmlcIjtcbmltcG9ydCB0eXBlIHsgRXhwYW5kIH0gZnJvbSBcIi4vcHVyaS50eXBlc1wiO1xuaW1wb3J0IHR5cGUgeyBQdXJpV3JhcHBlciB9IGZyb20gXCIuL3B1cmktd3JhcHBlclwiO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyDquLDrs7gg7YOA7J6FIOygleydmFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIFN1YnNldFF1ZXJ5IO2VqOyImCDsi5zqt7jri4jssphcbiAqIFB1cmlXcmFwcGVy66W8IOuwm+yVhCBQdXJpIOy/vOumrCDruYzrjZTrpbwg67CY7ZmYXG4gKi9cbmV4cG9ydCB0eXBlIFB1cmlTdWJzZXRGbiA9IChxYldyYXBwZXI6IFB1cmlXcmFwcGVyPERhdGFiYXNlU2NoZW1hRXh0ZW5kPikgPT4gUHVyaTxhbnksIGFueSwgYW55PjtcblxuLyoqXG4gKiBQdXJpIOyduOyKpO2EtOyKpOyXkOyEnCBUUmVzdWx0IO2DgOyehSDstpTstpxcbiAqL1xuZXhwb3J0IHR5cGUgRXh0cmFjdFB1cmlSZXN1bHQ8VD4gPSBUIGV4dGVuZHMgUHVyaTxhbnksIGFueSwgaW5mZXIgUj4gPyBSIDogbmV2ZXI7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIExvYWRlciDqtIDroKgg7YOA7J6FXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogTG9hZGVyIOy/vOumrCDruYzrjZQg7ZWo7IiYIOyLnOq3uOuLiOyymFxuICogQHBhcmFtIHFiV3JhcHBlciAtIFB1cmkg656Y7Y28XG4gKiBAcGFyYW0gZnJvbUlkcyAtIOu2gOuqqCDroIjsvZTrk5wgSUQg67Cw7Je0XG4gKi9cbmV4cG9ydCB0eXBlIFB1cmlMb2FkZXJRYkZuID0gKFxuICBxYldyYXBwZXI6IFB1cmlXcmFwcGVyPERhdGFiYXNlU2NoZW1hRXh0ZW5kPixcbiAgZnJvbUlkczogbnVtYmVyW10sXG4pID0+IFB1cmk8YW55LCBhbnksIGFueT47XG5cbi8qKlxuICog64uo7J28IExvYWRlciDsoJXsnZhcbiAqIDE6TiDrmJDripQgTjpNIOq0gOqzhCDrjbDsnbTthLDrpbwg66Gc65Oc7ZWY64qUIOyEpOyglVxuICovXG5leHBvcnQgdHlwZSBHZW5lcmljUHVyaUxvYWRlciA9IHtcbiAgLyoqIOqysOqzvCDqsJ3ssrTsl5DshJwg7IKs7Jqp7ZWgIO2VhOuTnOuqhSAqL1xuICBhczogc3RyaW5nO1xuICAvKiog67aA66qoIOugiOy9lOuTnOyZgCDsl7DqsrDtlaAg7LC47KGwIO2VhOuTnOuqhSAqL1xuICByZWZJZDogc3RyaW5nO1xuICAvKiog642w7J207YSwIOuhnOuUqSDsv7zrpqwg67mM642UICovXG4gIHFiOiBQdXJpTG9hZGVyUWJGbjtcbiAgLyoqIOykkeyyqSDroZzrjZQgKOyerOq3gOyggSDroZzrlKkg7KeA7JuQKSAqL1xuICBsb2FkZXJzPzogR2VuZXJpY1B1cmlMb2FkZXJbXTtcbn07XG5cbi8qKlxuICog66qo642467OEIExvYWRlciDsv7zrpqwg7Lus66CJ7IWYXG4gKiDqsIEgU3Vic2V0S2V57JeQIOuMgO2VtCBMb2FkZXIg67Cw7Je07J2EIOygleydmFxuICovXG5leHBvcnQgdHlwZSBQdXJpTG9hZGVyUXVlcmllczxUU3Vic2V0S2V5IGV4dGVuZHMgc3RyaW5nPiA9IFJlY29yZDxUU3Vic2V0S2V5LCBHZW5lcmljUHVyaUxvYWRlcltdPjtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gSHlkcmF0ZSDtg4DsnoUg7Iuc7Iqk7YWcXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICog6rWs67aE7J6QKF9fKSDslZ7rtoDrtoQg7LaU7LacXG4gKiBAZXhhbXBsZSBFeHRyYWN0SGVhZDxcInVzZXJfX25hbWVcIj4gPSBcInVzZXJcIlxuICovXG50eXBlIEV4dHJhY3RIZWFkPEsgZXh0ZW5kcyBzdHJpbmc+ID0gSyBleHRlbmRzIGAke2luZmVyIEhlYWR9X18ke3N0cmluZ31gID8gSGVhZCA6IG5ldmVyO1xuXG4vKipcbiAqIOq1rOu2hOyekChfXykg65K367aA67aEIOy2lOy2nFxuICogQGV4YW1wbGUgRXh0cmFjdFRhaWw8XCJ1c2VyX19wcm9maWxlX19uYW1lXCIsIFwidXNlclwiPiA9IFwicHJvZmlsZV9fbmFtZVwiXG4gKi9cbnR5cGUgRXh0cmFjdFRhaWw8SyBleHRlbmRzIHN0cmluZywgSGVhZCBleHRlbmRzIHN0cmluZz4gPSBLIGV4dGVuZHMgYCR7SGVhZH1fXyR7aW5mZXIgVGFpbH1gXG4gID8gVGFpbFxuICA6IG5ldmVyO1xuXG4vKipcbiAqIEZsYXQg6rCd7LK066W8IOykkeyyqSDqsJ3ssrTroZwg67OA7ZmYXG4gKlxuICog65+w7YOA7J6EIGh5ZHJhdGUg7ZWo7IiY7JmAIOuPmeydvO2VnCDrj5nsnpHsnYQg7YOA7J6FIOugiOuyqOyXkOyEnCDqtaztmIQuXG4gKiBgX19g66GcIOq1rOu2hOuQnCDtgqTrpbwg7KSR7LKpIOqwneyytCDqtazsobDroZwg67OA7ZmYLlxuICpcbiAqIEBleGFtcGxlXG4gKiB0eXBlIElucHV0ID0geyBpZDogbnVtYmVyOyB1c2VyX19uYW1lOiBzdHJpbmc7IHVzZXJfX3Byb2ZpbGVfX2Jpbzogc3RyaW5nIH1cbiAqIHR5cGUgT3V0cHV0ID0gSHlkcmF0ZTxJbnB1dD5cbiAqIC8vIHsgaWQ6IG51bWJlcjsgdXNlcjogeyBuYW1lOiBzdHJpbmc7IHByb2ZpbGU6IHsgYmlvOiBzdHJpbmcgfSB9IH1cbiAqL1xuZXhwb3J0IHR5cGUgSHlkcmF0ZTxUPiA9IEV4cGFuZDxIeWRyYXRlSW5uZXI8VD4+O1xudHlwZSBIeWRyYXRlSW5uZXI8VD4gPSB7XG4gIFtLIGluIGtleW9mIFQgYXMgSyBleHRlbmRzIGAke3N0cmluZ31fXyR7c3RyaW5nfWAgPyBuZXZlciA6IEtdOiBUW0tdO1xufSAmIHtcbiAgW0sgaW4gRXh0cmFjdEhlYWQ8a2V5b2YgVCAmIHN0cmluZz5dOiBFeHBhbmQ8XG4gICAgSHlkcmF0ZUlubmVyPHtcbiAgICAgIFtQIGluIGtleW9mIFQgYXMgUCBleHRlbmRzIGAke0t9X18ke3N0cmluZ31gID8gRXh0cmFjdFRhaWw8UCAmIHN0cmluZywgSz4gOiBuZXZlcl06IFRbUF07XG4gICAgfT5cbiAgPjtcbn07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIExvYWRlciDqsrDqs7wg7YOA7J6FIOy2lOuhoFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIExvYWRlciDsv7zrpqwg7ZWo7IiY7JeQ7IScIOqysOqzvCDtg4DsnoUg7LaU7LacIChyZWZJZCDsoJzsmbgsIEh5ZHJhdGUg7KCB7JqpKVxuICovXG50eXBlIEV4dHJhY3RMb2FkZXJSZXN1bHQ8VExvYWRlclFiPiA9IFRMb2FkZXJRYiBleHRlbmRzIFB1cmlMb2FkZXJRYkZuXG4gID8gRXhwYW5kPEh5ZHJhdGU8T21pdDxFeHRyYWN0UHVyaVJlc3VsdDxSZXR1cm5UeXBlPFRMb2FkZXJRYj4+LCBcInJlZklkXCI+Pj5cbiAgOiBuZXZlcjtcblxuLyoqXG4gKiBMb2FkZXIg67Cw7Je07JeQ7IScIOqysOqzvCDqsJ3ssrQg7YOA7J6FIOu5jOuTnCAo7J6s6reA7KCB7Jy866GcIOykkeyyqSBsb2FkZXIg7LKY66asKVxuICpcbiAqIEBleGFtcGxlXG4gKiB0eXBlIExvYWRlcnMgPSBbXG4gKiAgIHsgYXM6IFwiZW1wbG95ZWVzXCI7IHJlZklkOiBcImlkXCI7IHFiOiAuLi47IGxvYWRlcnM6IFt7IGFzOiBcInByb2plY3RzXCI7IC4uLiB9XSB9XG4gKiBdXG4gKiB0eXBlIFJlc3VsdCA9IExvYWRlcnNSZXN1bHQ8TG9hZGVycz5cbiAqIC8vIHsgZW1wbG95ZWVzOiBBcnJheTx7IC4uLmVtcGxveWVlIGZpZWxkczsgcHJvamVjdHM6IEFycmF5PC4uLj4gfT4gfVxuICovXG5leHBvcnQgdHlwZSBMb2FkZXJzUmVzdWx0PFRMb2FkZXJzIGV4dGVuZHMgR2VuZXJpY1B1cmlMb2FkZXJbXT4gPSBFeHBhbmQ8e1xuICBbTCBpbiBUTG9hZGVyc1tudW1iZXJdIGFzIExbXCJhc1wiXV06IFdpdGhMb2FkZXJzPEV4dHJhY3RMb2FkZXJSZXN1bHQ8TFtcInFiXCJdPiwgTFtcImxvYWRlcnNcIl0+W107XG59PjtcblxuLyoqXG4gKiDquLDrs7gg6rKw6rO87JmAIExvYWRlciDqsrDqs7wg67OR7ZWpXG4gKi9cbnR5cGUgV2l0aExvYWRlcnM8VEJhc2UsIFRMb2FkZXJzPiA9IFRMb2FkZXJzIGV4dGVuZHMgR2VuZXJpY1B1cmlMb2FkZXJbXVxuICA/IEV4cGFuZDxUQmFzZSAmIExvYWRlcnNSZXN1bHQ8VExvYWRlcnM+PlxuICA6IFRCYXNlO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTdWJzZXQg6rKw6rO8IO2DgOyehSDstpTroaBcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiDri6jsnbwgU3Vic2V0IO2VqOyImCArIExvYWRlcuyXkOyEnCDstZzsooUg6rKw6rO8IO2DgOyehSDstpTroaBcbiAqL1xudHlwZSBJbmZlclN1YnNldFdpdGhMb2FkZXJzPFxuICBUU3Vic2V0Rm4gZXh0ZW5kcyAoLi4uYXJnczogYW55KSA9PiBQdXJpPGFueSwgYW55LCBhbnk+LFxuICBUTG9hZGVycyBleHRlbmRzIEdlbmVyaWNQdXJpTG9hZGVyW10gfCB1bmRlZmluZWQgPSB1bmRlZmluZWQsXG4+ID0gRXhwYW5kPEh5ZHJhdGU8V2l0aExvYWRlcnM8RXh0cmFjdFB1cmlSZXN1bHQ8UmV0dXJuVHlwZTxUU3Vic2V0Rm4+PiwgVExvYWRlcnM+Pj47XG5cbi8qKlxuICog7KCE7LK0IFN1YnNldFF1ZXJpZXMgKyBMb2FkZXJRdWVyaWVzIOqwneyytOyXkOyEnCDsoITssrQg6rKw6rO8IOuntSDsg53shLFcbiAqXG4gKiBAdGVtcGxhdGUgVFN1YnNldE1hcCAtIFN1YnNldCDtlajsiJjrk6TsnZgg66qo7J2MIOqwneyytFxuICogQHRlbXBsYXRlIFRMb2FkZXJNYXAgLSBMb2FkZXIg67Cw7Je065Ok7J2YIOuqqOydjCDqsJ3ssrRcbiAqXG4gKiBAZXhhbXBsZVxuICogdHlwZSBSZXN1bHQgPSBJbmZlckFsbFN1YnNldHM8XG4gKiAgIHsgQTogKCkgPT4gUHVyaTwuLi4+LCBQOiAoKSA9PiBQdXJpPC4uLj4gfSxcbiAqICAgeyBBOiBbLi4ubG9hZGVyc10sIFA6IFtdIH1cbiAqID5cbiAqIC8vIHsgQTogSW5mZXJyZWRUeXBlQTsgUDogSW5mZXJyZWRUeXBlUCB9XG4gKi9cbmV4cG9ydCB0eXBlIEluZmVyQWxsU3Vic2V0czxcbiAgVFN1YnNldE1hcCBleHRlbmRzIFJlY29yZDxzdHJpbmcsICguLi5hcmdzOiBhbnkpID0+IGFueT4sXG4gIFRMb2FkZXJNYXAgZXh0ZW5kcyBQYXJ0aWFsPFJlY29yZDxzdHJpbmcsIEdlbmVyaWNQdXJpTG9hZGVyW10+Pixcbj4gPSB7XG4gIFtLIGluIGtleW9mIFRTdWJzZXRNYXBdOiBJbmZlclN1YnNldFdpdGhMb2FkZXJzPFxuICAgIFRTdWJzZXRNYXBbS10sXG4gICAgSyBleHRlbmRzIGtleW9mIFRMb2FkZXJNYXAgPyBUTG9hZGVyTWFwW0tdIDogdW5kZWZpbmVkXG4gID47XG59O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDbGVhciDrrLhcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBLbmV4IFF1ZXJ5QnVpbGRlcuyXkOyEnCBjbGVhciDqsIDriqXtlZwgc3RhdGVtZW50IOuqqeuhnVxuICovXG5leHBvcnQgdHlwZSBDbGVhclN0YXRlbWVudHMgPVxuICB8IFwid2l0aFwiXG4gIHwgXCJzZWxlY3RcIlxuICB8IFwiY29sdW1uc1wiXG4gIHwgXCJoaW50Q29tbWVudHNcIlxuICB8IFwid2hlcmVcIlxuICB8IFwidW5pb25cIlxuICB8IFwidXNpbmdcIlxuICB8IFwiam9pblwiXG4gIHwgXCJncm91cFwiXG4gIHwgXCJvcmRlclwiXG4gIHwgXCJoYXZpbmdcIlxuICB8IFwibGltaXRcIlxuICB8IFwib2Zmc2V0XCJcbiAgfCBcImNvdW50ZXJcIlxuICB8IFwiY291bnRlcnNcIjtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Q0FRQyxHQW9LRCwrRUFBK0U7QUFDL0UsVUFBVTtBQUNWLCtFQUErRTtBQUUvRTs7Q0FFQyxHQUNELFdBZWUifQ==
@@ -1,8 +1,10 @@
1
- import { Knex } from "knex";
1
+ /** biome-ignore-all lint/suspicious/noExplicitAny: PuriWrapper는 다양한 타입을 사용하고 있습니다. */
2
+ import type { Knex } from "knex";
3
+ import type { DatabaseSchemaExtend } from "../types/types";
4
+ import type { DBPreset } from "./db";
2
5
  import { Puri } from "./puri";
3
- import { UBRef, UpsertBuilder } from "./upsert-builder";
4
- import { DatabaseSchemaExtend } from "../types/types";
5
- import { DBPreset } from "./db";
6
+ import type { ColumnKeys, OmitMetadataColumns, PuriTable } from "./puri.types";
7
+ import type { UBRef, UpsertBuilder } from "./upsert-builder";
6
8
  type TableName<TSchema extends DatabaseSchemaExtend> = Extract<keyof TSchema, string>;
7
9
  export type TransactionalOptions = {
8
10
  isolation?: Exclude<Knex.IsolationLevels, "snapshot">;
@@ -14,23 +16,23 @@ export declare class PuriWrapper<TSchema extends DatabaseSchemaExtend = Database
14
16
  upsertBuilder: UpsertBuilder;
15
17
  constructor(knex: Knex, upsertBuilder: UpsertBuilder);
16
18
  raw(sql: string): Knex.Raw;
17
- from<TTable extends keyof TSchema>(tableName: TTable): Puri<TSchema, Record<TTable, TSchema[TTable]>, Omit<TSchema[TTable], "__fulltext__">>;
19
+ from<TTable extends keyof TSchema>(tableName: TTable): Puri<TSchema, Record<TTable, PuriTable<TSchema[TTable]>>, OmitMetadataColumns<PuriTable<TSchema[TTable]>>>;
18
20
  from<TTable extends keyof TSchema, TAlias extends string>(spec: {
19
21
  [K in TAlias]: TTable;
20
- }): Puri<TSchema, Record<TAlias, TSchema[TTable]>, Omit<TSchema[TTable], "__fulltext__">>;
22
+ }): Puri<TSchema, Record<TAlias, PuriTable<TSchema[TTable]>>, OmitMetadataColumns<PuriTable<TSchema[TTable]>>>;
21
23
  from<TAlias extends string, TSubResult>(spec: {
22
24
  [K in TAlias]: Puri<TSchema, any, TSubResult>;
23
- }): Puri<TSchema, Record<TAlias, TSubResult>, Omit<TSubResult, "__fulltext__">>;
24
- table<TTable extends keyof TSchema>(tableName: TTable): Puri<TSchema, Record<TTable, TSchema[TTable]>, Omit<TSchema[TTable], "__fulltext__">>;
25
+ }): Puri<TSchema, Record<TAlias, PuriTable<TSubResult>>, OmitMetadataColumns<PuriTable<TSubResult>>>;
26
+ table<TTable extends keyof TSchema>(tableName: TTable): Puri<TSchema, Record<TTable, PuriTable<TSchema[TTable]>>, OmitMetadataColumns<PuriTable<TSchema[TTable]>>>;
25
27
  table<TTable extends keyof TSchema, TAlias extends string>(spec: {
26
28
  [K in TAlias]: TTable;
27
- }): Puri<TSchema, Record<TAlias, TSchema[TTable]>, Omit<TSchema[TTable], "__fulltext__">>;
29
+ }): Puri<TSchema, Record<TAlias, PuriTable<TSchema[TTable]>>, OmitMetadataColumns<PuriTable<TSchema[TTable]>>>;
28
30
  table<TAlias extends string, TSubResult>(spec: {
29
31
  [K in TAlias]: Puri<TSchema, any, TSubResult>;
30
- }): Puri<TSchema, Record<TAlias, TSubResult>, Omit<TSubResult, "__fulltext__">>;
32
+ }): Puri<TSchema, Record<TAlias, PuriTable<TSubResult>>, OmitMetadataColumns<PuriTable<TSubResult>>>;
31
33
  transaction<T>(callback: (trx: PuriTransactionWrapper) => Promise<T>, options?: TransactionalOptions): Promise<T>;
32
34
  ubRegister<TTable extends TableName<TSchema>>(tableName: TTable, row: Partial<{
33
- [K in keyof TSchema[TTable]]: TSchema[TTable][K] | UBRef;
35
+ [K in ColumnKeys<TSchema[TTable]>]: TSchema[TTable][K] | UBRef;
34
36
  }>): UBRef;
35
37
  ubUpsert(tableName: TableName<TSchema>, chunkSize?: number): Promise<number[]>;
36
38
  ubInsertOnly(tableName: TableName<TSchema>, chunkSize?: number): Promise<number[]>;
@@ -1 +1 @@
1
- {"version":3,"file":"puri-wrapper.d.ts","sourceRoot":"","sources":["../../src/database/puri-wrapper.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"puri-wrapper.d.ts","sourceRoot":"","sources":["../../src/database/puri-wrapper.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,109 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:true});function _export(target,all){for(var name in all)Object.defineProperty(target,name,{enumerable:true,get:Object.getOwnPropertyDescriptor(all,name).get})}_export(exports,{get PuriTransactionWrapper(){return PuriTransactionWrapper},get PuriWrapper(){return PuriWrapper}});var _puri=require("./puri");var _chalk=/*#__PURE__*/_interop_require_default(require("chalk"));function _array_like_to_array(arr,len){if(len==null||len>arr.length)len=arr.length;for(var i=0,arr2=new Array(len);i<len;i++)arr2[i]=arr[i];return arr2}function _array_with_holes(arr){if(Array.isArray(arr))return arr}function _assert_this_initialized(self){if(self===void 0){throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}return self}function asyncGeneratorStep(gen,resolve,reject,_next,_throw,key,arg){try{var info=gen[key](arg);var value=info.value}catch(error){reject(error);return}if(info.done){resolve(value)}else{Promise.resolve(value).then(_next,_throw)}}function _async_to_generator(fn){return function(){var self=this,args=arguments;return new Promise(function(resolve,reject){var gen=fn.apply(self,args);function _next(value){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"next",value)}function _throw(err){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"throw",err)}_next(undefined)})}}function _call_super(_this,derived,args){derived=_get_prototype_of(derived);return _possible_constructor_return(_this,_is_native_reflect_construct()?Reflect.construct(derived,args||[],_get_prototype_of(_this).constructor):derived.apply(_this,args))}function _class_call_check(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function")}}function _defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor)}}function _create_class(Constructor,protoProps,staticProps){if(protoProps)_defineProperties(Constructor.prototype,protoProps);if(staticProps)_defineProperties(Constructor,staticProps);return Constructor}function _define_property(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}function _get_prototype_of(o){_get_prototype_of=Object.setPrototypeOf?Object.getPrototypeOf:function getPrototypeOf(o){return o.__proto__||Object.getPrototypeOf(o)};return _get_prototype_of(o)}function _inherits(subClass,superClass){if(typeof superClass!=="function"&&superClass!==null){throw new TypeError("Super expression must either be null or a function")}subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,writable:true,configurable:true}});if(superClass)_set_prototype_of(subClass,superClass)}function _interop_require_default(obj){return obj&&obj.__esModule?obj:{default:obj}}function _getRequireWildcardCache(nodeInterop){if(typeof WeakMap!=="function")return null;var cacheBabelInterop=new WeakMap;var cacheNodeInterop=new WeakMap;return(_getRequireWildcardCache=function(nodeInterop){return nodeInterop?cacheNodeInterop:cacheBabelInterop})(nodeInterop)}function _interop_require_wildcard(obj,nodeInterop){if(!nodeInterop&&obj&&obj.__esModule){return obj}if(obj===null||typeof obj!=="object"&&typeof obj!=="function"){return{default:obj}}var cache=_getRequireWildcardCache(nodeInterop);if(cache&&cache.has(obj)){return cache.get(obj)}var newObj={__proto__:null};var hasPropertyDescriptor=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var key in obj){if(key!=="default"&&Object.prototype.hasOwnProperty.call(obj,key)){var desc=hasPropertyDescriptor?Object.getOwnPropertyDescriptor(obj,key):null;if(desc&&(desc.get||desc.set)){Object.defineProperty(newObj,key,desc)}else{newObj[key]=obj[key]}}}newObj.default=obj;if(cache){cache.set(obj,newObj)}return newObj}function _iterable_to_array_limit(arr,i){var _i=arr==null?null:typeof Symbol!=="undefined"&&arr[Symbol.iterator]||arr["@@iterator"];if(_i==null)return;var _arr=[];var _n=true;var _d=false;var _s,_e;try{for(_i=_i.call(arr);!(_n=(_s=_i.next()).done);_n=true){_arr.push(_s.value);if(i&&_arr.length===i)break}}catch(err){_d=true;_e=err}finally{try{if(!_n&&_i["return"]!=null)_i["return"]()}finally{if(_d)throw _e}}return _arr}function _non_iterable_rest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _possible_constructor_return(self,call){if(call&&(_type_of(call)==="object"||typeof call==="function")){return call}return _assert_this_initialized(self)}function _set_prototype_of(o,p){_set_prototype_of=Object.setPrototypeOf||function setPrototypeOf(o,p){o.__proto__=p;return o};return _set_prototype_of(o,p)}function _sliced_to_array(arr,i){return _array_with_holes(arr)||_iterable_to_array_limit(arr,i)||_unsupported_iterable_to_array(arr,i)||_non_iterable_rest()}function _type_of(obj){"@swc/helpers - typeof";return obj&&typeof Symbol!=="undefined"&&obj.constructor===Symbol?"symbol":typeof obj}function _unsupported_iterable_to_array(o,minLen){if(!o)return;if(typeof o==="string")return _array_like_to_array(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);if(n==="Object"&&o.constructor)n=o.constructor.name;if(n==="Map"||n==="Set")return Array.from(n);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _array_like_to_array(o,minLen)}function _is_native_reflect_construct(){try{var result=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(_){}return(_is_native_reflect_construct=function(){return!!result})()}function _ts_generator(thisArg,body){var f,y,t,_={label:0,sent:function(){if(t[0]&1)throw t[1];return t[1]},trys:[],ops:[]},g=Object.create((typeof Iterator==="function"?Iterator:Object).prototype);return g.next=verb(0),g["throw"]=verb(1),g["return"]=verb(2),typeof Symbol==="function"&&(g[Symbol.iterator]=function(){return this}),g;function verb(n){return function(v){return step([n,v])}}function step(op){if(f)throw new TypeError("Generator is already executing.");while(g&&(g=0,op[0]&&(_=0)),_)try{if(f=1,y&&(t=op[0]&2?y["return"]:op[0]?y["throw"]||((t=y["return"])&&t.call(y),0):y.next)&&!(t=t.call(y,op[1])).done)return t;if(y=0,t)op=[op[0]&2,t.value];switch(op[0]){case 0:case 1:t=op;break;case 4:_.label++;return{value:op[1],done:false};case 5:_.label++;y=op[1];op=[0];continue;case 7:op=_.ops.pop();_.trys.pop();continue;default:if(!(t=_.trys,t=t.length>0&&t[t.length-1])&&(op[0]===6||op[0]===2)){_=0;continue}if(op[0]===3&&(!t||op[1]>t[0]&&op[1]<t[3])){_.label=op[1];break}if(op[0]===6&&_.label<t[1]){_.label=t[1];t=op;break}if(t&&_.label<t[2]){_.label=t[2];_.ops.push(op);break}if(t[2])_.ops.pop();_.trys.pop();continue}op=body.call(thisArg,_)}catch(e){op=[6,e];y=0}finally{f=t=0}if(op[0]&5)throw op[1];return{value:op[0]?op[1]:void 0,done:true}}}var PuriWrapper=/*#__PURE__*/function(){"use strict";function PuriWrapper(knex,upsertBuilder){_class_call_check(this,PuriWrapper);_define_property(this,"knex",void 0);_define_property(this,"upsertBuilder",void 0);this.knex=knex;this.upsertBuilder=upsertBuilder}_create_class(PuriWrapper,[{key:"raw",value:function raw(sql){return this.knex.raw(sql)}},{key:"from",value:function from(spec){return new _puri.Puri(this.knex,spec)}},{key:"table",value:function table(spec){return new _puri.Puri(this.knex,spec)}},{key:"transaction",value:function transaction(_0){return _async_to_generator(function(callback){var _this,options,isolation,readOnly,_options_dbPreset,dbPreset,DB,existingContext,startTransaction,existingTrx;var _arguments=arguments;return _ts_generator(this,function(_state){switch(_state.label){case 0:_this=this;options=_arguments.length>1&&_arguments[1]!==void 0?_arguments[1]:{};isolation=options.isolation,readOnly=options.readOnly,_options_dbPreset=options.dbPreset,dbPreset=_options_dbPreset===void 0?"w":_options_dbPreset;return[4,Promise.resolve().then(function(){return /*#__PURE__*/_interop_require_wildcard(require("./db"))})];case 1:DB=_state.sent().DB;existingContext=DB.transactionStorage.getStore();startTransaction=function(knex,upsertBuilder){return _async_to_generator(function(){return _ts_generator(this,function(_state){return[2,knex.transaction(function(trx){return _async_to_generator(function(){var trxWrapper;return _ts_generator(this,function(_state){switch(_state.label){case 0:trxWrapper=new PuriTransactionWrapper(trx,upsertBuilder);DB.getTransactionContext().setTransaction(dbPreset,trxWrapper);_state.label=1;case 1:_state.trys.push([1,,3,4]);return[4,callback(trxWrapper)];case 2:return[2,_state.sent()];case 3:DB.getTransactionContext().deleteTransaction(dbPreset);return[7];case 4:return[2]}})})()},{isolationLevel:isolation,readOnly:readOnly})]})})()};if(!existingContext){return[2,DB.runWithTransaction(function(){return startTransaction(_this.knex,_this.upsertBuilder)})]}existingTrx=existingContext.getTransaction(dbPreset);if(existingTrx){return[2,startTransaction(existingTrx.trx,existingTrx.upsertBuilder)]}else{return[2,startTransaction(this.knex,this.upsertBuilder)]}return[2]}})}).apply(this,arguments)}},{key:"ubRegister",value:function ubRegister(tableName,row){return this.upsertBuilder.register(tableName,row)}},{key:"ubUpsert",value:function ubUpsert(tableName,chunkSize){return this.upsertBuilder.upsert(this.knex,tableName,chunkSize)}},{key:"ubInsertOnly",value:function ubInsertOnly(tableName,chunkSize){return this.upsertBuilder.insertOnly(this.knex,tableName,chunkSize)}},{key:"ubUpsertOrInsert",value:function ubUpsertOrInsert(tableName,mode,chunkSize){return this.upsertBuilder.upsertOrInsert(this.knex,tableName,mode,chunkSize)}},{key:"ubUpdateBatch",value:function ubUpdateBatch(tableName,options){return this.upsertBuilder.updateBatch(this.knex,tableName,options)}},{key:"debugTransaction",value:function debugTransaction(){return _async_to_generator(function(){var info;return _ts_generator(this,function(_state){switch(_state.label){case 0:return[4,this.getTransactionInfo()];case 1:info=_state.sent();console.log("".concat(_chalk.default.cyan("[Puri Transaction]")," ").concat(_chalk.default.magenta(info)));return[2]}})}).call(this)}},{key:"getTransactionInfo",value:function getTransactionInfo(){return _async_to_generator(function(){var _ref,connectionIdRows,connectionId,_ref1,trxRows,trx;return _ts_generator(this,function(_state){switch(_state.label){case 0:return[4,this.knex.raw("SELECT CONNECTION_ID() as connection_id")];case 1:_ref=_sliced_to_array.apply(void 0,[_state.sent(),1]),connectionIdRows=_ref[0];connectionId=connectionIdRows[0].connection_id;return[4,this.knex.raw("\n SELECT STATE, ISOLATION_LEVEL, THREAD_ID, EVENT_ID\n FROM performance_schema.events_transactions_current\n WHERE THREAD_ID = \n (SELECT THREAD_ID\n FROM performance_schema.threads \n WHERE PROCESSLIST_ID = CONNECTION_ID())\n ")];case 2:_ref1=_sliced_to_array.apply(void 0,[_state.sent(),1]),trxRows=_ref1[0];if(trxRows.length>0&&trxRows[0].STATE!=="COMMITTED"){trx=trxRows[0];return[2,"In Transaction, ConnID: ".concat(connectionId,", ThreadID: ").concat(trx.THREAD_ID,", EventID: ").concat(trx.EVENT_ID,", InnoDB TRX: ").concat(trx.STATE,"(").concat(trx.ISOLATION_LEVEL,")")]}else{return[2,"Not in Transaction, ConnID: ".concat(connectionId)]}return[2]}})}).call(this)}}]);return PuriWrapper}();var PuriTransactionWrapper=/*#__PURE__*/function(PuriWrapper){"use strict";_inherits(PuriTransactionWrapper,PuriWrapper);function PuriTransactionWrapper(trx,upsertBuilder){_class_call_check(this,PuriTransactionWrapper);var _this;_this=_call_super(this,PuriTransactionWrapper,[trx,upsertBuilder]),_define_property(_this,"trx",void 0),_define_property(_this,"upsertBuilder",void 0),_this.trx=trx,_this.upsertBuilder=upsertBuilder;return _this}_create_class(PuriTransactionWrapper,[{key:"rollback",value:function rollback(){return _async_to_generator(function(){return _ts_generator(this,function(_state){switch(_state.label){case 0:return[4,this.trx.rollback()];case 1:_state.sent();return[2]}})}).call(this)}},{key:"commit",value:function commit(){return _async_to_generator(function(){return _ts_generator(this,function(_state){switch(_state.label){case 0:return[4,this.trx.commit()];case 1:_state.sent();return[2]}})}).call(this)}}]);return PuriTransactionWrapper}(PuriWrapper);
2
- //# sourceMappingURL=puri-wrapper.js.map
1
+ /** biome-ignore-all lint/suspicious/noExplicitAny: PuriWrapper는 다양한 타입을 사용하고 있습니다. */ import chalk from "chalk";
2
+ import { Puri } from "./puri.js";
3
+ export class PuriWrapper {
4
+ knex;
5
+ upsertBuilder;
6
+ constructor(knex, upsertBuilder){
7
+ this.knex = knex;
8
+ this.upsertBuilder = upsertBuilder;
9
+ }
10
+ raw(sql) {
11
+ return this.knex.raw(sql);
12
+ }
13
+ from(spec) {
14
+ return new Puri(this.knex, spec);
15
+ }
16
+ table(spec) {
17
+ return new Puri(this.knex, spec);
18
+ }
19
+ async transaction(callback, options = {}) {
20
+ const { isolation, readOnly, dbPreset = "w" } = options;
21
+ // @transactional 데코레이터와 동일한 로직: 이미 트랜잭션 컨텍스트가 있는지 확인
22
+ const { DB } = await import("./db.js");
23
+ const existingContext = DB.transactionStorage.getStore();
24
+ // AsyncLocalStorage 컨텍스트가 없거나 해당 preset의 트랜잭션이 없으면 새로 시작
25
+ const startTransaction = async (knex, upsertBuilder)=>{
26
+ return knex.transaction(async (trx)=>{
27
+ const trxWrapper = new PuriTransactionWrapper(trx, upsertBuilder);
28
+ // TransactionContext에 트랜잭션 저장
29
+ DB.getTransactionContext().setTransaction(dbPreset, trxWrapper);
30
+ try {
31
+ return await callback(trxWrapper);
32
+ } finally{
33
+ // 트랜잭션 제거
34
+ DB.getTransactionContext().deleteTransaction(dbPreset);
35
+ }
36
+ }, {
37
+ isolationLevel: isolation,
38
+ readOnly
39
+ });
40
+ };
41
+ // AsyncLocalStorage 컨텍스트가 없으면 새로 생성
42
+ if (!existingContext) {
43
+ return DB.runWithTransaction(()=>startTransaction(this.knex, this.upsertBuilder));
44
+ }
45
+ // 해당 preset의 트랜잭션이 이미 있으면 SAVEPOINT로 중첩 트랜잭션 생성
46
+ const existingTrx = existingContext.getTransaction(dbPreset);
47
+ if (existingTrx) {
48
+ return startTransaction(existingTrx.trx, existingTrx.upsertBuilder);
49
+ } else {
50
+ // 컨텍스트는 있지만 이 preset의 트랜잭션은 없는 경우 (같은 컨텍스트 내에서 실행)
51
+ return startTransaction(this.knex, this.upsertBuilder);
52
+ }
53
+ }
54
+ ubRegister(tableName, row) {
55
+ return this.upsertBuilder.register(tableName, row);
56
+ }
57
+ ubUpsert(tableName, chunkSize) {
58
+ return this.upsertBuilder.upsert(this.knex, tableName, chunkSize);
59
+ }
60
+ ubInsertOnly(tableName, chunkSize) {
61
+ return this.upsertBuilder.insertOnly(this.knex, tableName, chunkSize);
62
+ }
63
+ ubUpsertOrInsert(tableName, mode, chunkSize) {
64
+ return this.upsertBuilder.upsertOrInsert(this.knex, tableName, mode, chunkSize);
65
+ }
66
+ ubUpdateBatch(tableName, options) {
67
+ return this.upsertBuilder.updateBatch(this.knex, tableName, options);
68
+ }
69
+ // 트랜잭션 연결 테스트용
70
+ async debugTransaction() {
71
+ const info = await this.getTransactionInfo();
72
+ console.log(`${chalk.cyan("[Puri Transaction]")} ${chalk.magenta(info)}`);
73
+ }
74
+ async getTransactionInfo() {
75
+ // 연결 ID 조회
76
+ const [connectionIdRows] = await this.knex.raw(`SELECT CONNECTION_ID() as connection_id`);
77
+ const connectionId = connectionIdRows[0].connection_id;
78
+ // 트랜잭션 정보 조회
79
+ const [trxRows] = await this.knex.raw(`
80
+ SELECT STATE, ISOLATION_LEVEL, THREAD_ID, EVENT_ID
81
+ FROM performance_schema.events_transactions_current
82
+ WHERE THREAD_ID =
83
+ (SELECT THREAD_ID
84
+ FROM performance_schema.threads
85
+ WHERE PROCESSLIST_ID = CONNECTION_ID())
86
+ `);
87
+ if (trxRows.length > 0 && trxRows[0].STATE !== "COMMITTED") {
88
+ const trx = trxRows[0];
89
+ return `In Transaction, ConnID: ${connectionId}, ThreadID: ${trx.THREAD_ID}, EventID: ${trx.EVENT_ID}, InnoDB TRX: ${trx.STATE}(${trx.ISOLATION_LEVEL})`;
90
+ } else {
91
+ return `Not in Transaction, ConnID: ${connectionId}`;
92
+ }
93
+ }
94
+ }
95
+ export class PuriTransactionWrapper extends PuriWrapper {
96
+ trx;
97
+ upsertBuilder;
98
+ constructor(trx, upsertBuilder){
99
+ super(trx, upsertBuilder), this.trx = trx, this.upsertBuilder = upsertBuilder;
100
+ }
101
+ async rollback() {
102
+ await this.trx.rollback();
103
+ }
104
+ async commit() {
105
+ await this.trx.commit();
106
+ }
107
+ }
108
+
109
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhYmFzZS9wdXJpLXdyYXBwZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqIGJpb21lLWlnbm9yZS1hbGwgbGludC9zdXNwaWNpb3VzL25vRXhwbGljaXRBbnk6IFB1cmlXcmFwcGVy64qUIOuLpOyWke2VnCDtg4DsnoXsnYQg7IKs7Jqp7ZWY6rOgIOyeiOyKteuLiOuLpC4gKi9cblxuaW1wb3J0IGNoYWxrIGZyb20gXCJjaGFsa1wiO1xuaW1wb3J0IHR5cGUgeyBLbmV4IH0gZnJvbSBcImtuZXhcIjtcbmltcG9ydCB0eXBlIHsgRGF0YWJhc2VTY2hlbWFFeHRlbmQgfSBmcm9tIFwiLi4vdHlwZXMvdHlwZXNcIjtcbmltcG9ydCB0eXBlIHsgREJQcmVzZXQgfSBmcm9tIFwiLi9kYlwiO1xuaW1wb3J0IHsgUHVyaSB9IGZyb20gXCIuL3B1cmlcIjtcbmltcG9ydCB0eXBlIHsgQ29sdW1uS2V5cywgT21pdE1ldGFkYXRhQ29sdW1ucywgUHVyaVRhYmxlIH0gZnJvbSBcIi4vcHVyaS50eXBlc1wiO1xuaW1wb3J0IHR5cGUgeyBVQlJlZiwgVXBzZXJ0QnVpbGRlciB9IGZyb20gXCIuL3Vwc2VydC1idWlsZGVyXCI7XG5cbnR5cGUgVGFibGVOYW1lPFRTY2hlbWEgZXh0ZW5kcyBEYXRhYmFzZVNjaGVtYUV4dGVuZD4gPSBFeHRyYWN0PGtleW9mIFRTY2hlbWEsIHN0cmluZz47XG5cbmV4cG9ydCB0eXBlIFRyYW5zYWN0aW9uYWxPcHRpb25zID0ge1xuICBpc29sYXRpb24/OiBFeGNsdWRlPEtuZXguSXNvbGF0aW9uTGV2ZWxzLCBcInNuYXBzaG90XCI+OyAvLyBzbmFwc2hvdDogbXNzcWwgb25seVxuICBkYlByZXNldD86IERCUHJlc2V0O1xuICByZWFkT25seT86IGJvb2xlYW47XG59O1xuXG5leHBvcnQgY2xhc3MgUHVyaVdyYXBwZXI8VFNjaGVtYSBleHRlbmRzIERhdGFiYXNlU2NoZW1hRXh0ZW5kID0gRGF0YWJhc2VTY2hlbWFFeHRlbmQ+IHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGtuZXg6IEtuZXgsXG4gICAgcHVibGljIHVwc2VydEJ1aWxkZXI6IFVwc2VydEJ1aWxkZXIsXG4gICkge31cblxuICByYXcoc3FsOiBzdHJpbmcpOiBLbmV4LlJhdyB7XG4gICAgcmV0dXJuIHRoaXMua25leC5yYXcoc3FsKTtcbiAgfVxuXG4gIC8vIO2FjOydtOu4lOuqheycvOuhnCDsi5zsnpFcbiAgZnJvbTxUVGFibGUgZXh0ZW5kcyBrZXlvZiBUU2NoZW1hPihcbiAgICB0YWJsZU5hbWU6IFRUYWJsZSxcbiAgKTogUHVyaTxcbiAgICBUU2NoZW1hLFxuICAgIFJlY29yZDxUVGFibGUsIFB1cmlUYWJsZTxUU2NoZW1hW1RUYWJsZV0+PixcbiAgICBPbWl0TWV0YWRhdGFDb2x1bW5zPFB1cmlUYWJsZTxUU2NoZW1hW1RUYWJsZV0+PlxuICA+O1xuICAvLyDthYzsnbTruJTrqoUgKyBBbGlhc+uhnCDsi5zsnpFcbiAgZnJvbTxUVGFibGUgZXh0ZW5kcyBrZXlvZiBUU2NoZW1hLCBUQWxpYXMgZXh0ZW5kcyBzdHJpbmc+KFxuICAgIHNwZWM6IHtcbiAgICAgIFtLIGluIFRBbGlhc106IFRUYWJsZTtcbiAgICB9LFxuICApOiBQdXJpPFxuICAgIFRTY2hlbWEsXG4gICAgUmVjb3JkPFRBbGlhcywgUHVyaVRhYmxlPFRTY2hlbWFbVFRhYmxlXT4+LFxuICAgIE9taXRNZXRhZGF0YUNvbHVtbnM8UHVyaVRhYmxlPFRTY2hlbWFbVFRhYmxlXT4+XG4gID47XG4gIC8vIOyEnOu4jOy/vOumrOuhnCDsi5zsnpFcbiAgZnJvbTxUQWxpYXMgZXh0ZW5kcyBzdHJpbmcsIFRTdWJSZXN1bHQ+KFxuICAgIHNwZWM6IHtcbiAgICAgIFtLIGluIFRBbGlhc106IFB1cmk8VFNjaGVtYSwgYW55LCBUU3ViUmVzdWx0PjtcbiAgICB9LFxuICApOiBQdXJpPFxuICAgIFRTY2hlbWEsXG4gICAgUmVjb3JkPFRBbGlhcywgUHVyaVRhYmxlPFRTdWJSZXN1bHQ+PixcbiAgICBPbWl0TWV0YWRhdGFDb2x1bW5zPFB1cmlUYWJsZTxUU3ViUmVzdWx0Pj5cbiAgPjtcbiAgZnJvbShzcGVjOiBhbnkpOiBhbnkge1xuICAgIHJldHVybiBuZXcgUHVyaSh0aGlzLmtuZXgsIHNwZWMpO1xuICB9XG5cbiAgLy8g7YWM7J2067iU66qF7Jy866GcIOyLnOyekVxuICB0YWJsZTxUVGFibGUgZXh0ZW5kcyBrZXlvZiBUU2NoZW1hPihcbiAgICB0YWJsZU5hbWU6IFRUYWJsZSxcbiAgKTogUHVyaTxcbiAgICBUU2NoZW1hLFxuICAgIFJlY29yZDxUVGFibGUsIFB1cmlUYWJsZTxUU2NoZW1hW1RUYWJsZV0+PixcbiAgICBPbWl0TWV0YWRhdGFDb2x1bW5zPFB1cmlUYWJsZTxUU2NoZW1hW1RUYWJsZV0+PlxuICA+O1xuICAvLyDthYzsnbTruJTrqoUgKyBBbGlhc+uhnCDsi5zsnpFcbiAgdGFibGU8VFRhYmxlIGV4dGVuZHMga2V5b2YgVFNjaGVtYSwgVEFsaWFzIGV4dGVuZHMgc3RyaW5nPihcbiAgICBzcGVjOiB7XG4gICAgICBbSyBpbiBUQWxpYXNdOiBUVGFibGU7XG4gICAgfSxcbiAgKTogUHVyaTxcbiAgICBUU2NoZW1hLFxuICAgIFJlY29yZDxUQWxpYXMsIFB1cmlUYWJsZTxUU2NoZW1hW1RUYWJsZV0+PixcbiAgICBPbWl0TWV0YWRhdGFDb2x1bW5zPFB1cmlUYWJsZTxUU2NoZW1hW1RUYWJsZV0+PlxuICA+O1xuICAvLyDshJzruIzsv7zrpqzroZwg7Iuc7J6RXG4gIHRhYmxlPFRBbGlhcyBleHRlbmRzIHN0cmluZywgVFN1YlJlc3VsdD4oXG4gICAgc3BlYzoge1xuICAgICAgW0sgaW4gVEFsaWFzXTogUHVyaTxUU2NoZW1hLCBhbnksIFRTdWJSZXN1bHQ+O1xuICAgIH0sXG4gICk6IFB1cmk8XG4gICAgVFNjaGVtYSxcbiAgICBSZWNvcmQ8VEFsaWFzLCBQdXJpVGFibGU8VFN1YlJlc3VsdD4+LFxuICAgIE9taXRNZXRhZGF0YUNvbHVtbnM8UHVyaVRhYmxlPFRTdWJSZXN1bHQ+PlxuICA+O1xuICB0YWJsZShzcGVjOiBhbnkpOiBhbnkge1xuICAgIHJldHVybiBuZXcgUHVyaSh0aGlzLmtuZXgsIHNwZWMpO1xuICB9XG5cbiAgYXN5bmMgdHJhbnNhY3Rpb248VD4oXG4gICAgY2FsbGJhY2s6ICh0cng6IFB1cmlUcmFuc2FjdGlvbldyYXBwZXIpID0+IFByb21pc2U8VD4sXG4gICAgb3B0aW9uczogVHJhbnNhY3Rpb25hbE9wdGlvbnMgPSB7fSxcbiAgKTogUHJvbWlzZTxUPiB7XG4gICAgY29uc3QgeyBpc29sYXRpb24sIHJlYWRPbmx5LCBkYlByZXNldCA9IFwid1wiIH0gPSBvcHRpb25zO1xuXG4gICAgLy8gQHRyYW5zYWN0aW9uYWwg642w7L2U66CI7J207YSw7JmAIOuPmeydvO2VnCDroZzsp4E6IOydtOuvuCDtirjrnpzsnq3shZgg7Luo7YWN7Iqk7Yq46rCAIOyeiOuKlOyngCDtmZXsnbhcbiAgICBjb25zdCB7IERCIH0gPSBhd2FpdCBpbXBvcnQoXCIuL2RiXCIpO1xuICAgIGNvbnN0IGV4aXN0aW5nQ29udGV4dCA9IERCLnRyYW5zYWN0aW9uU3RvcmFnZS5nZXRTdG9yZSgpO1xuXG4gICAgLy8gQXN5bmNMb2NhbFN0b3JhZ2Ug7Luo7YWN7Iqk7Yq46rCAIOyXhuqxsOuCmCDtlbTri7kgcHJlc2V07J2YIO2KuOuenOyereyFmOydtCDsl4bsnLzrqbQg7IOI66GcIOyLnOyekVxuICAgIGNvbnN0IHN0YXJ0VHJhbnNhY3Rpb24gPSBhc3luYyAoXG4gICAgICBrbmV4OiBLbmV4IHwgS25leC5UcmFuc2FjdGlvbixcbiAgICAgIHVwc2VydEJ1aWxkZXI6IFVwc2VydEJ1aWxkZXIsXG4gICAgKSA9PiB7XG4gICAgICByZXR1cm4ga25leC50cmFuc2FjdGlvbihcbiAgICAgICAgYXN5bmMgKHRyeCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHRyeFdyYXBwZXIgPSBuZXcgUHVyaVRyYW5zYWN0aW9uV3JhcHBlcih0cngsIHVwc2VydEJ1aWxkZXIpO1xuXG4gICAgICAgICAgLy8gVHJhbnNhY3Rpb25Db250ZXh07JeQIO2KuOuenOyereyFmCDsoIDsnqVcbiAgICAgICAgICBEQi5nZXRUcmFuc2FjdGlvbkNvbnRleHQoKS5zZXRUcmFuc2FjdGlvbihkYlByZXNldCwgdHJ4V3JhcHBlcik7XG5cbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIGF3YWl0IGNhbGxiYWNrKHRyeFdyYXBwZXIpO1xuICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICAvLyDtirjrnpzsnq3shZgg7KCc6rGwXG4gICAgICAgICAgICBEQi5nZXRUcmFuc2FjdGlvbkNvbnRleHQoKS5kZWxldGVUcmFuc2FjdGlvbihkYlByZXNldCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB7IGlzb2xhdGlvbkxldmVsOiBpc29sYXRpb24sIHJlYWRPbmx5IH0sXG4gICAgICApO1xuICAgIH07XG5cbiAgICAvLyBBc3luY0xvY2FsU3RvcmFnZSDsu6jthY3siqTtirjqsIAg7JeG7Jy866m0IOyDiOuhnCDsg53shLFcbiAgICBpZiAoIWV4aXN0aW5nQ29udGV4dCkge1xuICAgICAgcmV0dXJuIERCLnJ1bldpdGhUcmFuc2FjdGlvbigoKSA9PiBzdGFydFRyYW5zYWN0aW9uKHRoaXMua25leCwgdGhpcy51cHNlcnRCdWlsZGVyKSk7XG4gICAgfVxuXG4gICAgLy8g7ZW064u5IHByZXNldOydmCDtirjrnpzsnq3shZjsnbQg7J2066+4IOyeiOycvOuptCBTQVZFUE9JTlTroZwg7KSR7LKpIO2KuOuenOyereyFmCDsg53shLFcbiAgICBjb25zdCBleGlzdGluZ1RyeCA9IGV4aXN0aW5nQ29udGV4dC5nZXRUcmFuc2FjdGlvbihkYlByZXNldCk7XG4gICAgaWYgKGV4aXN0aW5nVHJ4KSB7XG4gICAgICByZXR1cm4gc3RhcnRUcmFuc2FjdGlvbihleGlzdGluZ1RyeC50cngsIGV4aXN0aW5nVHJ4LnVwc2VydEJ1aWxkZXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyDsu6jthY3siqTtirjripQg7J6I7KeA66eMIOydtCBwcmVzZXTsnZgg7Yq4656c7J6t7IWY7J2AIOyXhuuKlCDqsr3smrAgKOqwmeydgCDsu6jthY3siqTtirgg64K07JeQ7IScIOyLpO2WiSlcbiAgICAgIHJldHVybiBzdGFydFRyYW5zYWN0aW9uKHRoaXMua25leCwgdGhpcy51cHNlcnRCdWlsZGVyKTtcbiAgICB9XG4gIH1cblxuICB1YlJlZ2lzdGVyPFRUYWJsZSBleHRlbmRzIFRhYmxlTmFtZTxUU2NoZW1hPj4oXG4gICAgdGFibGVOYW1lOiBUVGFibGUsXG4gICAgcm93OiBQYXJ0aWFsPHtcbiAgICAgIFtLIGluIENvbHVtbktleXM8VFNjaGVtYVtUVGFibGVdPl06IFRTY2hlbWFbVFRhYmxlXVtLXSB8IFVCUmVmO1xuICAgIH0+LFxuICApOiBVQlJlZiB7XG4gICAgcmV0dXJuIHRoaXMudXBzZXJ0QnVpbGRlci5yZWdpc3Rlcih0YWJsZU5hbWUsIHJvdyk7XG4gIH1cblxuICB1YlVwc2VydCh0YWJsZU5hbWU6IFRhYmxlTmFtZTxUU2NoZW1hPiwgY2h1bmtTaXplPzogbnVtYmVyKTogUHJvbWlzZTxudW1iZXJbXT4ge1xuICAgIHJldHVybiB0aGlzLnVwc2VydEJ1aWxkZXIudXBzZXJ0KHRoaXMua25leCwgdGFibGVOYW1lLCBjaHVua1NpemUpO1xuICB9XG5cbiAgdWJJbnNlcnRPbmx5KHRhYmxlTmFtZTogVGFibGVOYW1lPFRTY2hlbWE+LCBjaHVua1NpemU/OiBudW1iZXIpOiBQcm9taXNlPG51bWJlcltdPiB7XG4gICAgcmV0dXJuIHRoaXMudXBzZXJ0QnVpbGRlci5pbnNlcnRPbmx5KHRoaXMua25leCwgdGFibGVOYW1lLCBjaHVua1NpemUpO1xuICB9XG5cbiAgdWJVcHNlcnRPckluc2VydChcbiAgICB0YWJsZU5hbWU6IFRhYmxlTmFtZTxUU2NoZW1hPixcbiAgICBtb2RlOiBcInVwc2VydFwiIHwgXCJpbnNlcnRcIixcbiAgICBjaHVua1NpemU/OiBudW1iZXIsXG4gICk6IFByb21pc2U8bnVtYmVyW10+IHtcbiAgICByZXR1cm4gdGhpcy51cHNlcnRCdWlsZGVyLnVwc2VydE9ySW5zZXJ0KHRoaXMua25leCwgdGFibGVOYW1lLCBtb2RlLCBjaHVua1NpemUpO1xuICB9XG5cbiAgdWJVcGRhdGVCYXRjaChcbiAgICB0YWJsZU5hbWU6IFRhYmxlTmFtZTxUU2NoZW1hPixcbiAgICBvcHRpb25zPzogeyBjaHVua1NpemU/OiBudW1iZXI7IHdoZXJlPzogc3RyaW5nIHwgc3RyaW5nW10gfSxcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMudXBzZXJ0QnVpbGRlci51cGRhdGVCYXRjaCh0aGlzLmtuZXgsIHRhYmxlTmFtZSwgb3B0aW9ucyk7XG4gIH1cblxuICAvLyDtirjrnpzsnq3shZgg7Jew6rKwIO2FjOyKpO2KuOyaqVxuICBhc3luYyBkZWJ1Z1RyYW5zYWN0aW9uKCkge1xuICAgIGNvbnN0IGluZm8gPSBhd2FpdCB0aGlzLmdldFRyYW5zYWN0aW9uSW5mbygpO1xuICAgIGNvbnNvbGUubG9nKGAke2NoYWxrLmN5YW4oXCJbUHVyaSBUcmFuc2FjdGlvbl1cIil9ICR7Y2hhbGsubWFnZW50YShpbmZvKX1gKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2V0VHJhbnNhY3Rpb25JbmZvKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgLy8g7Jew6rKwIElEIOyhsO2ajFxuICAgIGNvbnN0IFtjb25uZWN0aW9uSWRSb3dzXSA9IGF3YWl0IHRoaXMua25leC5yYXcoYFNFTEVDVCBDT05ORUNUSU9OX0lEKCkgYXMgY29ubmVjdGlvbl9pZGApO1xuICAgIGNvbnN0IGNvbm5lY3Rpb25JZCA9IGNvbm5lY3Rpb25JZFJvd3NbMF0uY29ubmVjdGlvbl9pZDtcblxuICAgIC8vIO2KuOuenOyereyFmCDsoJXrs7Qg7KGw7ZqMXG4gICAgY29uc3QgW3RyeFJvd3NdID0gYXdhaXQgdGhpcy5rbmV4LnJhdyhgXG4gICAgICAgIFNFTEVDVCBTVEFURSwgSVNPTEFUSU9OX0xFVkVMLCBUSFJFQURfSUQsIEVWRU5UX0lEXG4gICAgICAgIEZST00gcGVyZm9ybWFuY2Vfc2NoZW1hLmV2ZW50c190cmFuc2FjdGlvbnNfY3VycmVudFxuICAgICAgICBXSEVSRSBUSFJFQURfSUQgPSBcbiAgICAgICAgICAoU0VMRUNUIFRIUkVBRF9JRFxuICAgICAgICAgIEZST00gcGVyZm9ybWFuY2Vfc2NoZW1hLnRocmVhZHMgXG4gICAgICAgICAgV0hFUkUgUFJPQ0VTU0xJU1RfSUQgPSBDT05ORUNUSU9OX0lEKCkpXG4gICAgICBgKTtcblxuICAgIGlmICh0cnhSb3dzLmxlbmd0aCA+IDAgJiYgdHJ4Um93c1swXS5TVEFURSAhPT0gXCJDT01NSVRURURcIikge1xuICAgICAgY29uc3QgdHJ4ID0gdHJ4Um93c1swXTtcbiAgICAgIHJldHVybiBgSW4gVHJhbnNhY3Rpb24sIENvbm5JRDogJHtjb25uZWN0aW9uSWR9LCBUaHJlYWRJRDogJHt0cnguVEhSRUFEX0lEfSwgRXZlbnRJRDogJHt0cnguRVZFTlRfSUR9LCBJbm5vREIgVFJYOiAke3RyeC5TVEFURX0oJHt0cnguSVNPTEFUSU9OX0xFVkVMfSlgO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gYE5vdCBpbiBUcmFuc2FjdGlvbiwgQ29ubklEOiAke2Nvbm5lY3Rpb25JZH1gO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUHVyaVRyYW5zYWN0aW9uV3JhcHBlciBleHRlbmRzIFB1cmlXcmFwcGVyIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHRyeDogS25leC5UcmFuc2FjdGlvbixcbiAgICBwdWJsaWMgdXBzZXJ0QnVpbGRlcjogVXBzZXJ0QnVpbGRlcixcbiAgKSB7XG4gICAgc3VwZXIodHJ4LCB1cHNlcnRCdWlsZGVyKTtcbiAgfVxuXG4gIGFzeW5jIHJvbGxiYWNrKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMudHJ4LnJvbGxiYWNrKCk7XG4gIH1cblxuICBhc3luYyBjb21taXQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy50cnguY29tbWl0KCk7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJjaGFsayIsIlB1cmkiLCJQdXJpV3JhcHBlciIsImtuZXgiLCJ1cHNlcnRCdWlsZGVyIiwicmF3Iiwic3FsIiwiZnJvbSIsInNwZWMiLCJ0YWJsZSIsInRyYW5zYWN0aW9uIiwiY2FsbGJhY2siLCJvcHRpb25zIiwiaXNvbGF0aW9uIiwicmVhZE9ubHkiLCJkYlByZXNldCIsIkRCIiwiZXhpc3RpbmdDb250ZXh0IiwidHJhbnNhY3Rpb25TdG9yYWdlIiwiZ2V0U3RvcmUiLCJzdGFydFRyYW5zYWN0aW9uIiwidHJ4IiwidHJ4V3JhcHBlciIsIlB1cmlUcmFuc2FjdGlvbldyYXBwZXIiLCJnZXRUcmFuc2FjdGlvbkNvbnRleHQiLCJzZXRUcmFuc2FjdGlvbiIsImRlbGV0ZVRyYW5zYWN0aW9uIiwiaXNvbGF0aW9uTGV2ZWwiLCJydW5XaXRoVHJhbnNhY3Rpb24iLCJleGlzdGluZ1RyeCIsImdldFRyYW5zYWN0aW9uIiwidWJSZWdpc3RlciIsInRhYmxlTmFtZSIsInJvdyIsInJlZ2lzdGVyIiwidWJVcHNlcnQiLCJjaHVua1NpemUiLCJ1cHNlcnQiLCJ1Ykluc2VydE9ubHkiLCJpbnNlcnRPbmx5IiwidWJVcHNlcnRPckluc2VydCIsIm1vZGUiLCJ1cHNlcnRPckluc2VydCIsInViVXBkYXRlQmF0Y2giLCJ1cGRhdGVCYXRjaCIsImRlYnVnVHJhbnNhY3Rpb24iLCJpbmZvIiwiZ2V0VHJhbnNhY3Rpb25JbmZvIiwiY29uc29sZSIsImxvZyIsImN5YW4iLCJtYWdlbnRhIiwiY29ubmVjdGlvbklkUm93cyIsImNvbm5lY3Rpb25JZCIsImNvbm5lY3Rpb25faWQiLCJ0cnhSb3dzIiwibGVuZ3RoIiwiU1RBVEUiLCJUSFJFQURfSUQiLCJFVkVOVF9JRCIsIklTT0xBVElPTl9MRVZFTCIsInJvbGxiYWNrIiwiY29tbWl0Il0sIm1hcHBpbmdzIjoiQUFBQSxvRkFBb0YsR0FFcEYsT0FBT0EsV0FB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
@@ -1,7 +1,10 @@
1
+ /** biome-ignore-all lint/suspicious/noThenProperty: Puri는 thenable 인터페이스를 구현하고 있습니다. */
2
+ /** biome-ignore-all lint/suspicious/noExplicitAny: Puri는 다양한 타입을 사용하고 있습니다. */
1
3
  import type { Knex } from "knex";
2
- import type { AvailableColumns, SelectObject, ParseSelectObject, WhereCondition, ComparisonOperator, ExtractColumnType, SqlExpression, Expand, FulltextColumns, ResultAvailableColumns, InsertData, SingleTableValue } from "./puri.types";
3
- export declare class Puri<TSchema, TTables extends Record<string, any>, TResult, TResolved = Expand<TResult>[]> {
4
- private knex;
4
+ import type { AvailableColumns, ColumnKeys, ComparisonOperator, Expand, ExtractColumnType, FulltextColumns, InsertData, InsertResult, OnConflictAction, ParseSelectObject, ResultAvailableColumns, SelectObject, SingleTableValue, SqlExpression, WhereCondition } from "./puri.types";
5
+ import type { ClearStatements } from "./puri-subset.types";
6
+ export declare class Puri<TSchema, TTables extends Record<string, any>, TResult> {
7
+ knex: Knex;
5
8
  private knexQuery;
6
9
  constructor(knex: Knex, tableName: string);
7
10
  constructor(knex: Knex, tableSpec: Record<string, string | Puri<TSchema, any, any>>);
@@ -18,16 +21,19 @@ export declare class Puri<TSchema, TTables extends Record<string, any>, TResult,
18
21
  static rawBoolean(sql: string): SqlExpression<"boolean">;
19
22
  static rawDate(sql: string): SqlExpression<"date">;
20
23
  select<TSelect extends SelectObject<TTables>>(selectObj: TSelect): Puri<TSchema, TTables, ParseSelectObject<TTables, TSelect>>;
24
+ appendSelect<TSelect extends SelectObject<TTables>>(selectObj: TSelect): Puri<TSchema, TTables, TResult & ParseSelectObject<TTables, TSelect>>;
21
25
  selectAll(): this;
26
+ clear(statement: ClearStatements): this;
27
+ clearJoin(alias: string): this;
22
28
  join<TJoinAlias extends string, TSubResult>(tableSpec: {
23
29
  [K in TJoinAlias]: Puri<TSchema, any, TSubResult>;
24
- }, left: AvailableColumns<TTables>, right: `${TJoinAlias}.${keyof TSubResult & string}`): Puri<TSchema, TTables & Record<TJoinAlias, TSubResult>, // 서브쿼리의 TResult
30
+ }, left: AvailableColumns<TTables>, right: `${TJoinAlias}.${ColumnKeys<TSubResult>}`): Puri<TSchema, TTables & Record<TJoinAlias, TSubResult>, // 서브쿼리의 TResult
25
31
  TResult>;
26
32
  join<TJoinTable extends keyof TSchema, TJoinAlias extends string>(tableSpec: {
27
33
  [K in TJoinAlias]: TJoinTable;
28
- }, left: AvailableColumns<TTables>, right: `${TJoinAlias}.${keyof TSchema[TJoinTable] & string}`): Puri<TSchema, TTables & Record<TJoinAlias, TSchema[TJoinTable]>, // TTables 확장!
34
+ }, left: AvailableColumns<TTables>, right: `${TJoinAlias}.${ColumnKeys<TSchema[TJoinTable]>}`): Puri<TSchema, TTables & Record<TJoinAlias, TSchema[TJoinTable]>, // TTables 확장!
29
35
  TResult>;
30
- join<TJoinTable extends keyof TSchema>(tableName: TJoinTable, left: AvailableColumns<TTables>, right: `${TJoinTable & string}.${keyof TSchema[TJoinTable] & string}`): Puri<TSchema, TTables & Record<TJoinTable, TSchema[TJoinTable]>, // 테이블명이 키
36
+ join<TJoinTable extends keyof TSchema>(tableName: TJoinTable, left: AvailableColumns<TTables>, right: `${TJoinTable & string}.${ColumnKeys<TSchema[TJoinTable]>}`): Puri<TSchema, TTables & Record<TJoinTable, TSchema[TJoinTable]>, // 테이블명이 키
31
37
  TResult>;
32
38
  join<TJoinAlias extends string, TSubResult>(tableSpec: {
33
39
  [K in TJoinAlias]: Puri<TSchema, any, TSubResult>;
@@ -38,13 +44,13 @@ export declare class Puri<TSchema, TTables extends Record<string, any>, TResult,
38
44
  join<TJoinTable extends keyof TSchema>(tableName: TJoinTable, callback: (j: JoinClauseGroup<TTables, Record<TJoinTable, TSchema[TJoinTable]>>) => void): Puri<TSchema, TTables & Record<TJoinTable, TSchema[TJoinTable]>, TResult>;
39
45
  leftJoin<TJoinAlias extends string, TSubResult>(tableSpec: {
40
46
  [K in TJoinAlias]: Puri<TSchema, any, TSubResult>;
41
- }, left: AvailableColumns<TTables>, right: `${TJoinAlias}.${keyof TSubResult & string}`): Puri<TSchema, TTables & Record<TJoinAlias, TSubResult>, // 서브쿼리의 TResult
47
+ }, left: AvailableColumns<TTables>, right: `${TJoinAlias}.${ColumnKeys<TSubResult>}`): Puri<TSchema, TTables & Record<TJoinAlias, TSubResult>, // 서브쿼리의 TResult
42
48
  TResult>;
43
49
  leftJoin<TJoinTable extends keyof TSchema, TJoinAlias extends string>(tableSpec: {
44
50
  [K in TJoinAlias]: TJoinTable;
45
- }, left: AvailableColumns<TTables>, right: `${TJoinAlias}.${keyof TSchema[TJoinTable] & string}`): Puri<TSchema, TTables & Record<TJoinAlias, TSchema[TJoinTable]>, // TTables 확장!
51
+ }, left: AvailableColumns<TTables>, right: `${TJoinAlias}.${ColumnKeys<TSchema[TJoinTable]>}`): Puri<TSchema, TTables & Record<TJoinAlias, TSchema[TJoinTable]>, // TTables 확장!
46
52
  TResult>;
47
- leftJoin<TJoinTable extends keyof TSchema>(tableName: TJoinTable, left: AvailableColumns<TTables>, right: `${TJoinTable & string}.${keyof TSchema[TJoinTable] & string}`): Puri<TSchema, TTables & Record<TJoinTable, TSchema[TJoinTable]>, // 테이블명이 키
53
+ leftJoin<TJoinTable extends keyof TSchema>(tableName: TJoinTable, left: AvailableColumns<TTables>, right: `${TJoinTable & string}.${ColumnKeys<TSchema[TJoinTable]>}`): Puri<TSchema, TTables & Record<TJoinTable, TSchema[TJoinTable]>, // 테이블명이 키
48
54
  TResult>;
49
55
  leftJoin<TJoinAlias extends string, TSubResult>(tableSpec: {
50
56
  [K in TJoinAlias]: Puri<TSchema, any, TSubResult>;
@@ -56,7 +62,7 @@ export declare class Puri<TSchema, TTables extends Record<string, any>, TResult,
56
62
  __commonJoin(joinType: "join" | "leftJoin", tableNameOrSpec: any, ...args: any[]): this;
57
63
  where(conditions: WhereCondition<TTables>): this;
58
64
  where<TColumn extends AvailableColumns<TTables>>(column: TColumn, value: ExtractColumnType<TTables, TColumn & string>): this;
59
- where<TColumn extends AvailableColumns<TTables>>(column: TColumn, operator: ComparisonOperator, value: ExtractColumnType<TTables, TColumn & string>): this;
65
+ where<TColumn extends AvailableColumns<TTables>>(column: TColumn, operator: ComparisonOperator | "like" | "not like", value: ExtractColumnType<TTables, TColumn & string>): this;
60
66
  whereIn<TColumn extends AvailableColumns<TTables>>(column: TColumn, values: ExtractColumnType<TTables, TColumn & string>[]): Puri<TSchema, TTables, TResult>;
61
67
  whereNotIn<TColumn extends AvailableColumns<TTables>>(column: TColumn, values: ExtractColumnType<TTables, TColumn & string>[]): Puri<TSchema, TTables, TResult>;
62
68
  whereMatch<TColumn extends FulltextColumns<TTables>>(column: TColumn, value: string): this;
@@ -68,21 +74,19 @@ export declare class Puri<TSchema, TTables extends Record<string, any>, TResult,
68
74
  groupBy<TColumns extends ResultAvailableColumns<TTables, TResult>>(...columns: TColumns[]): this;
69
75
  having(condition: string): this;
70
76
  having<TColumn extends ResultAvailableColumns<TTables, TResult>>(column: TColumn, operator: ComparisonOperator, value: any): this;
71
- then<TResult1 = TResolved, TResult2 = never>(onfulfilled?: ((value: TResolved) => TResult1 | PromiseLike<TResult1>) | null, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | null): Promise<TResult1 | TResult2>;
72
- catch<TResult2 = never>(onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | null): Promise<Expand<TResult> | TResult2>;
73
- finally(onfinally?: (() => void) | null): Promise<Expand<TResult>>;
74
- first(): Promise<Expand<TResult> | undefined>;
75
- firstOrFail(): Promise<TResult>;
76
- at(index: number): Promise<Expand<TResult> | undefined>;
77
- assertAt(index: number): Promise<Expand<TResult>>;
78
- pluck<TColumn extends ResultAvailableColumns<TTables, TResult>>(column: TColumn): Promise<ExtractColumnType<TTables, TColumn & string>[]>;
79
- insert(data: InsertData<SingleTableValue<TTables>>): Puri<TSchema, {}, number, number[]>;
80
- update(data: WhereCondition<TTables>): Puri<TSchema, {}, number, number>;
81
- increment<TColumn extends AvailableColumns<TTables>>(column: TColumn, value: number): this;
82
- decrement<TColumn extends AvailableColumns<TTables>>(column: TColumn, value: number): this;
83
- delete(): Puri<TSchema, {}, number, number>;
77
+ then<TResult1 = Expand<TResult>[], TResult2 = never>(onfulfilled?: ((value: Expand<TResult>[]) => TResult1 | PromiseLike<TResult1>) | null, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | null): Promise<TResult1 | TResult2>;
78
+ catch<TResult2 = never>(onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | null): Promise<TResult | TResult2>;
79
+ finally(onfinally?: (() => void) | null): Promise<TResult>;
80
+ first(): ResolvedPuri<Expand<TResult>, never>;
81
+ pluck<TColumn extends keyof TResult | ResultAvailableColumns<TTables, TResult>>(column: TColumn): ResolvedPuri<TColumn extends keyof TResult ? TResult[TColumn][] : ExtractColumnType<TTables, TColumn & string>[], never>;
82
+ insert(data: InsertData<SingleTableValue<TTables>>): ResolvedPuri<InsertResult, SingleTableValue<TTables>>;
83
+ update(data: WhereCondition<TTables>): ResolvedPuri<number, SingleTableValue<TTables>>;
84
+ increment<TColumn extends AvailableColumns<TTables>>(column: TColumn, value: number): ResolvedPuri<number, SingleTableValue<TTables>>;
85
+ decrement<TColumn extends AvailableColumns<TTables>>(column: TColumn, value: number): ResolvedPuri<number, SingleTableValue<TTables>>;
86
+ delete(): ResolvedPuri<number, SingleTableValue<TTables>>;
84
87
  toQuery(): string;
85
88
  debug(): this;
89
+ clone(): Puri<TSchema, TTables, TResult>;
86
90
  formatSQL(unformatted: string): string;
87
91
  raw(): Knex.QueryBuilder;
88
92
  }
@@ -108,4 +112,18 @@ export declare class JoinClauseGroup<TLeft extends Record<string, any>, TRight e
108
112
  orOn(left: AvailableColumns<TLeft>, operator: ComparisonOperator, right: AvailableColumns<TRight>): this;
109
113
  orOn(callback: (nested: JoinClauseGroup<TLeft, TRight>) => void): this;
110
114
  }
115
+ export declare class ResolvedPuri<TResolved, TReturning> {
116
+ knexQuery: Knex.QueryBuilder;
117
+ private knex;
118
+ constructor(knexQuery: Knex.QueryBuilder, knex: Knex);
119
+ toQuery(): string;
120
+ debug(): this;
121
+ then<TResult1 = TResolved, TResult2 = never>(onfulfilled?: ((value: TResolved) => TResult1 | PromiseLike<TResult1>) | null, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | null): Promise<TResult1 | TResult2>;
122
+ catch<TResult2 = never>(onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | null): Promise<TResolved | TResult2>;
123
+ finally(onfinally?: (() => void) | null): Promise<TResolved>;
124
+ onConflict<TTables extends Record<string, TReturning>>(columns: string | string[], action?: OnConflictAction<TTables>): this;
125
+ returning(column: "*"): ResolvedPuri<TReturning[], never>;
126
+ returning<TColumn extends ColumnKeys<TReturning>>(column: TColumn): ResolvedPuri<Pick<TReturning, TColumn>[], never>;
127
+ returning<TColumn extends ColumnKeys<TReturning>>(columns: TColumn[]): ResolvedPuri<Pick<TReturning, TColumn>[], never>;
128
+ }
111
129
  //# sourceMappingURL=puri.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"puri.d.ts","sourceRoot":"","sources":["../../src/database/puri.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"puri.d.ts","sourceRoot":"","sources":["../../src/database/puri.ts"],"names":[],"mappings":"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"}