sonamu 0.8.26 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (684) hide show
  1. package/bin/cli.js +60 -13
  2. package/dist/_virtual/rolldown_runtime.js +39 -0
  3. package/dist/ai/agents/agent.d.ts +3 -3
  4. package/dist/ai/agents/agent.d.ts.map +1 -1
  5. package/dist/ai/agents/agent.js +76 -73
  6. package/dist/ai/agents/index.js +3 -3
  7. package/dist/ai/agents/types.d.ts +3 -3
  8. package/dist/ai/agents/types.d.ts.map +1 -1
  9. package/dist/ai/agents/types.js +1 -3
  10. package/dist/ai/index.js +3 -2
  11. package/dist/ai/providers/rtzr/api.js +25 -25
  12. package/dist/ai/providers/rtzr/error.js +25 -26
  13. package/dist/ai/providers/rtzr/index.js +5 -5
  14. package/dist/ai/providers/rtzr/model.d.ts +1 -1
  15. package/dist/ai/providers/rtzr/model.d.ts.map +1 -1
  16. package/dist/ai/providers/rtzr/model.js +117 -133
  17. package/dist/ai/providers/rtzr/options.d.ts.map +1 -1
  18. package/dist/ai/providers/rtzr/options.js +35 -41
  19. package/dist/ai/providers/rtzr/provider.d.ts +1 -1
  20. package/dist/ai/providers/rtzr/provider.d.ts.map +1 -1
  21. package/dist/ai/providers/rtzr/provider.js +53 -51
  22. package/dist/ai/providers/rtzr/utils.d.ts.map +1 -1
  23. package/dist/ai/providers/rtzr/utils.js +84 -84
  24. package/dist/api/base-frame.d.ts +2 -2
  25. package/dist/api/base-frame.d.ts.map +1 -1
  26. package/dist/api/base-frame.js +29 -19
  27. package/dist/api/caster.d.ts +1 -1
  28. package/dist/api/caster.d.ts.map +1 -1
  29. package/dist/api/caster.js +51 -61
  30. package/dist/api/code-converters.d.ts +4 -3
  31. package/dist/api/code-converters.d.ts.map +1 -1
  32. package/dist/api/code-converters.js +226 -249
  33. package/dist/api/config.d.ts +17 -17
  34. package/dist/api/config.d.ts.map +1 -1
  35. package/dist/api/config.js +37 -30
  36. package/dist/api/context.d.ts +10 -10
  37. package/dist/api/context.d.ts.map +1 -1
  38. package/dist/api/context.js +8 -2
  39. package/dist/api/decorators.d.ts +8 -8
  40. package/dist/api/decorators.d.ts.map +1 -1
  41. package/dist/api/decorators.js +245 -268
  42. package/dist/api/index.js +39 -7
  43. package/dist/api/secret.js +22 -15
  44. package/dist/api/sonamu.d.ts +15 -15
  45. package/dist/api/sonamu.d.ts.map +1 -1
  46. package/dist/api/sonamu.js +1012 -1131
  47. package/dist/api/validator.js +88 -79
  48. package/dist/auth/auth-generator.d.ts.map +1 -1
  49. package/dist/auth/auth-generator.js +203 -200
  50. package/dist/auth/better-auth-entities.d.ts +2 -2
  51. package/dist/auth/better-auth-entities.d.ts.map +1 -1
  52. package/dist/auth/better-auth-entities.js +369 -429
  53. package/dist/auth/index.js +21 -6
  54. package/dist/auth/knex-adapter.d.ts +2 -2
  55. package/dist/auth/knex-adapter.d.ts.map +1 -1
  56. package/dist/auth/knex-adapter.js +153 -157
  57. package/dist/auth/plugins/entity-definitions/admin.d.ts +1 -1
  58. package/dist/auth/plugins/entity-definitions/admin.d.ts.map +1 -1
  59. package/dist/auth/plugins/entity-definitions/admin.js +58 -56
  60. package/dist/auth/plugins/entity-definitions/anonymous.d.ts +1 -1
  61. package/dist/auth/plugins/entity-definitions/anonymous.d.ts.map +1 -1
  62. package/dist/auth/plugins/entity-definitions/anonymous.js +20 -20
  63. package/dist/auth/plugins/entity-definitions/api-key.d.ts +1 -1
  64. package/dist/auth/plugins/entity-definitions/api-key.d.ts.map +1 -1
  65. package/dist/auth/plugins/entity-definitions/api-key.js +185 -196
  66. package/dist/auth/plugins/entity-definitions/index.d.ts +1 -1
  67. package/dist/auth/plugins/entity-definitions/index.d.ts.map +1 -1
  68. package/dist/auth/plugins/entity-definitions/index.js +26 -29
  69. package/dist/auth/plugins/entity-definitions/jwt.d.ts +1 -1
  70. package/dist/auth/plugins/entity-definitions/jwt.d.ts.map +1 -1
  71. package/dist/auth/plugins/entity-definitions/jwt.js +62 -64
  72. package/dist/auth/plugins/entity-definitions/organization.d.ts +1 -1
  73. package/dist/auth/plugins/entity-definitions/organization.d.ts.map +1 -1
  74. package/dist/auth/plugins/entity-definitions/organization.js +362 -421
  75. package/dist/auth/plugins/entity-definitions/passkey.d.ts +1 -1
  76. package/dist/auth/plugins/entity-definitions/passkey.d.ts.map +1 -1
  77. package/dist/auth/plugins/entity-definitions/passkey.js +115 -126
  78. package/dist/auth/plugins/entity-definitions/phone-number.d.ts +1 -1
  79. package/dist/auth/plugins/entity-definitions/phone-number.d.ts.map +1 -1
  80. package/dist/auth/plugins/entity-definitions/phone-number.js +31 -40
  81. package/dist/auth/plugins/entity-definitions/sso.d.ts +1 -1
  82. package/dist/auth/plugins/entity-definitions/sso.d.ts.map +1 -1
  83. package/dist/auth/plugins/entity-definitions/sso.js +94 -107
  84. package/dist/auth/plugins/entity-definitions/two-factor.d.ts +1 -1
  85. package/dist/auth/plugins/entity-definitions/two-factor.d.ts.map +1 -1
  86. package/dist/auth/plugins/entity-definitions/two-factor.js +78 -92
  87. package/dist/auth/plugins/entity-definitions/types.d.ts +1 -1
  88. package/dist/auth/plugins/entity-definitions/types.d.ts.map +1 -1
  89. package/dist/auth/plugins/entity-definitions/types.js +1 -10
  90. package/dist/auth/plugins/entity-definitions/username.d.ts +1 -1
  91. package/dist/auth/plugins/entity-definitions/username.d.ts.map +1 -1
  92. package/dist/auth/plugins/entity-definitions/username.js +31 -40
  93. package/dist/auth/plugins/index.js +12 -3
  94. package/dist/auth/plugins/wrappers/admin.d.ts +2 -2
  95. package/dist/auth/plugins/wrappers/admin.d.ts.map +1 -1
  96. package/dist/auth/plugins/wrappers/admin.js +28 -29
  97. package/dist/auth/plugins/wrappers/anonymous.d.ts +2 -1
  98. package/dist/auth/plugins/wrappers/anonymous.d.ts.map +1 -1
  99. package/dist/auth/plugins/wrappers/anonymous.js +23 -22
  100. package/dist/auth/plugins/wrappers/api-key.d.ts +2 -1
  101. package/dist/auth/plugins/wrappers/api-key.d.ts.map +1 -1
  102. package/dist/auth/plugins/wrappers/api-key.js +39 -34
  103. package/dist/auth/plugins/wrappers/index.js +11 -11
  104. package/dist/auth/plugins/wrappers/jwt.d.ts +2 -1
  105. package/dist/auth/plugins/wrappers/jwt.d.ts.map +1 -1
  106. package/dist/auth/plugins/wrappers/jwt.js +31 -26
  107. package/dist/auth/plugins/wrappers/organization.d.ts +2 -1
  108. package/dist/auth/plugins/wrappers/organization.d.ts.map +1 -1
  109. package/dist/auth/plugins/wrappers/organization.js +65 -62
  110. package/dist/auth/plugins/wrappers/passkey.d.ts +2 -1
  111. package/dist/auth/plugins/wrappers/passkey.d.ts.map +1 -1
  112. package/dist/auth/plugins/wrappers/passkey.js +33 -28
  113. package/dist/auth/plugins/wrappers/phone-number.d.ts.map +1 -1
  114. package/dist/auth/plugins/wrappers/phone-number.js +26 -23
  115. package/dist/auth/plugins/wrappers/sso.d.ts.map +1 -1
  116. package/dist/auth/plugins/wrappers/sso.js +37 -31
  117. package/dist/auth/plugins/wrappers/two-factor.d.ts.map +1 -1
  118. package/dist/auth/plugins/wrappers/two-factor.js +31 -28
  119. package/dist/auth/plugins/wrappers/username.d.ts.map +1 -1
  120. package/dist/auth/plugins/wrappers/username.js +23 -23
  121. package/dist/bin/build-config.js +31 -31
  122. package/dist/bin/cli.js +1063 -1204
  123. package/dist/bin/fixture.d.ts.map +1 -1
  124. package/dist/bin/fixture.js +266 -259
  125. package/dist/bin/hmr-hook-register.d.ts.map +1 -1
  126. package/dist/bin/hmr-hook-register.js +19 -18
  127. package/dist/bin/test-command.d.ts.map +1 -1
  128. package/dist/bin/test-command.js +180 -177
  129. package/dist/bin/ts-loader-register.js +13 -6
  130. package/dist/bin/ts-loader-registration.d.ts.map +1 -1
  131. package/dist/bin/ts-loader-registration.js +28 -38
  132. package/dist/cache/cache-manager.d.ts +1 -1
  133. package/dist/cache/cache-manager.d.ts.map +1 -1
  134. package/dist/cache/cache-manager.js +20 -15
  135. package/dist/cache/decorator.d.ts +1 -1
  136. package/dist/cache/decorator.d.ts.map +1 -1
  137. package/dist/cache/decorator.js +84 -76
  138. package/dist/cache/drivers.js +21 -34
  139. package/dist/cache/index.js +10 -7
  140. package/dist/cache/types.d.ts +2 -2
  141. package/dist/cache/types.d.ts.map +1 -1
  142. package/dist/cache/types.js +1 -6
  143. package/dist/cache-control/cache-control.d.ts +2 -2
  144. package/dist/cache-control/cache-control.d.ts.map +1 -1
  145. package/dist/cache-control/cache-control.js +106 -122
  146. package/dist/cache-control/types.d.ts +2 -2
  147. package/dist/cache-control/types.d.ts.map +1 -1
  148. package/dist/cache-control/types.js +1 -19
  149. package/dist/compress/compress.d.ts +1 -1
  150. package/dist/compress/compress.d.ts.map +1 -1
  151. package/dist/compress/compress.js +58 -56
  152. package/dist/compress/index.js +7 -2
  153. package/dist/compress/types.js +1 -11
  154. package/dist/cone/cone-generator.d.ts +1 -1
  155. package/dist/cone/cone-generator.d.ts.map +1 -1
  156. package/dist/cone/cone-generator.js +216 -219
  157. package/dist/database/_batch_update.d.ts +1 -1
  158. package/dist/database/_batch_update.d.ts.map +1 -1
  159. package/dist/database/_batch_update.js +107 -102
  160. package/dist/database/base-model.d.ts +8 -9
  161. package/dist/database/base-model.d.ts.map +1 -1
  162. package/dist/database/base-model.js +371 -392
  163. package/dist/database/base-model.types.d.ts +5 -5
  164. package/dist/database/base-model.types.d.ts.map +1 -1
  165. package/dist/database/base-model.types.js +1 -20
  166. package/dist/database/db.d.ts +5 -2
  167. package/dist/database/db.d.ts.map +1 -1
  168. package/dist/database/db.js +185 -171
  169. package/dist/database/knex.d.ts +1 -1
  170. package/dist/database/knex.d.ts.map +1 -1
  171. package/dist/database/knex.js +48 -42
  172. package/dist/database/puri-subset.types.d.ts +6 -7
  173. package/dist/database/puri-subset.types.d.ts.map +1 -1
  174. package/dist/database/puri-subset.types.js +1 -16
  175. package/dist/database/puri-wrapper.d.ts +6 -6
  176. package/dist/database/puri-wrapper.d.ts.map +1 -1
  177. package/dist/database/puri-wrapper.js +99 -101
  178. package/dist/database/puri.d.ts +4 -5
  179. package/dist/database/puri.d.ts.map +1 -1
  180. package/dist/database/puri.js +1021 -1227
  181. package/dist/database/puri.types.d.ts +6 -6
  182. package/dist/database/puri.types.d.ts.map +1 -1
  183. package/dist/database/puri.types.js +15 -6
  184. package/dist/database/transaction-context.d.ts +2 -2
  185. package/dist/database/transaction-context.d.ts.map +1 -1
  186. package/dist/database/transaction-context.js +22 -13
  187. package/dist/database/upsert-builder.d.ts +3 -3
  188. package/dist/database/upsert-builder.d.ts.map +1 -1
  189. package/dist/database/upsert-builder.js +405 -465
  190. package/dist/dict/en.js +72 -74
  191. package/dist/dict/index.js +13 -13
  192. package/dist/dict/ko.js +72 -74
  193. package/dist/dict/rc-keys.js +150 -168
  194. package/dist/dict/sd.d.ts +3 -1
  195. package/dist/dict/sd.d.ts.map +1 -1
  196. package/dist/dict/sd.js +54 -40
  197. package/dist/dict/sonamu-dictionary.d.ts +1 -1
  198. package/dist/dict/sonamu-dictionary.d.ts.map +1 -1
  199. package/dist/dict/sonamu-dictionary.js +887 -955
  200. package/dist/dict/types.js +1 -7
  201. package/dist/dict/utils.js +26 -24
  202. package/dist/entity/entity-manager.d.ts +9 -9
  203. package/dist/entity/entity-manager.d.ts.map +1 -1
  204. package/dist/entity/entity-manager.js +226 -223
  205. package/dist/entity/entity-template-cone.d.ts +1 -1
  206. package/dist/entity/entity-template-cone.d.ts.map +1 -1
  207. package/dist/entity/entity-template-cone.js +152 -151
  208. package/dist/entity/entity.d.ts.map +1 -1
  209. package/dist/entity/entity.js +952 -1089
  210. package/dist/exceptions/error-handler.d.ts +1 -1
  211. package/dist/exceptions/error-handler.d.ts.map +1 -1
  212. package/dist/exceptions/error-handler.js +32 -27
  213. package/dist/exceptions/so-exceptions.d.ts +1 -1
  214. package/dist/exceptions/so-exceptions.d.ts.map +1 -1
  215. package/dist/exceptions/so-exceptions.js +61 -68
  216. package/dist/filter/index.js +9 -3
  217. package/dist/filter/types.js +92 -88
  218. package/dist/filter/utils.d.ts +1 -1
  219. package/dist/filter/utils.d.ts.map +1 -1
  220. package/dist/filter/utils.js +147 -161
  221. package/dist/index.js +87 -40
  222. package/dist/logger/category.d.ts.map +1 -1
  223. package/dist/logger/category.js +30 -29
  224. package/dist/logger/configure.d.ts.map +1 -1
  225. package/dist/logger/configure.js +83 -107
  226. package/dist/migration/code-generation.d.ts +2 -2
  227. package/dist/migration/code-generation.d.ts.map +1 -1
  228. package/dist/migration/code-generation.js +1385 -1578
  229. package/dist/migration/migration-set.d.ts +1 -1
  230. package/dist/migration/migration-set.d.ts.map +1 -1
  231. package/dist/migration/migration-set.js +177 -227
  232. package/dist/migration/migrator.d.ts +4 -3
  233. package/dist/migration/migrator.d.ts.map +1 -1
  234. package/dist/migration/migrator.js +340 -345
  235. package/dist/migration/postgresql-schema-reader.d.ts +2 -2
  236. package/dist/migration/postgresql-schema-reader.d.ts.map +1 -1
  237. package/dist/migration/postgresql-schema-reader.js +506 -564
  238. package/dist/migration/slack-confirm.d.ts +2 -2
  239. package/dist/migration/slack-confirm.d.ts.map +1 -1
  240. package/dist/migration/slack-confirm.js +205 -193
  241. package/dist/migration/types.d.ts +2 -2
  242. package/dist/migration/types.d.ts.map +1 -1
  243. package/dist/migration/types.js +1 -3
  244. package/dist/naite/messaging-types.d.ts +1 -0
  245. package/dist/naite/messaging-types.d.ts.map +1 -1
  246. package/dist/naite/messaging-types.js +1 -7
  247. package/dist/naite/naite-reporter.d.ts +2 -2
  248. package/dist/naite/naite-reporter.d.ts.map +1 -1
  249. package/dist/naite/naite-reporter.js +127 -120
  250. package/dist/naite/naite.d.ts +3 -2
  251. package/dist/naite/naite.d.ts.map +1 -1
  252. package/dist/naite/naite.js +266 -300
  253. package/dist/ssr/index.d.ts +2 -2
  254. package/dist/ssr/index.d.ts.map +1 -1
  255. package/dist/ssr/index.js +13 -3
  256. package/dist/ssr/registry.d.ts +1 -1
  257. package/dist/ssr/registry.d.ts.map +1 -1
  258. package/dist/ssr/registry.js +45 -37
  259. package/dist/ssr/renderer.d.ts +4 -4
  260. package/dist/ssr/renderer.d.ts.map +1 -1
  261. package/dist/ssr/renderer.js +84 -91
  262. package/dist/ssr/types.d.ts +2 -2
  263. package/dist/ssr/types.d.ts.map +1 -1
  264. package/dist/ssr/types.js +1 -3
  265. package/dist/storage/base-file.js +54 -41
  266. package/dist/storage/buffered-file.d.ts +2 -2
  267. package/dist/storage/buffered-file.d.ts.map +1 -1
  268. package/dist/storage/buffered-file.js +51 -44
  269. package/dist/storage/drivers.d.ts +2 -2
  270. package/dist/storage/drivers.d.ts.map +1 -1
  271. package/dist/storage/drivers.js +12 -7
  272. package/dist/storage/index.js +14 -7
  273. package/dist/storage/s3-driver.d.ts +2 -2
  274. package/dist/storage/s3-driver.d.ts.map +1 -1
  275. package/dist/storage/s3-driver.js +52 -48
  276. package/dist/storage/storage-manager.d.ts +2 -2
  277. package/dist/storage/storage-manager.d.ts.map +1 -1
  278. package/dist/storage/storage-manager.js +33 -25
  279. package/dist/storage/types.d.ts +2 -2
  280. package/dist/storage/types.d.ts.map +1 -1
  281. package/dist/storage/types.js +1 -5
  282. package/dist/storage/uploaded-file.d.ts +1 -1
  283. package/dist/storage/uploaded-file.d.ts.map +1 -1
  284. package/dist/storage/uploaded-file.js +45 -35
  285. package/dist/stream/index.js +7 -2
  286. package/dist/stream/sse.d.ts +2 -2
  287. package/dist/stream/sse.d.ts.map +1 -1
  288. package/dist/stream/sse.js +72 -67
  289. package/dist/syncer/api-parser.d.ts +1 -1
  290. package/dist/syncer/api-parser.d.ts.map +1 -1
  291. package/dist/syncer/api-parser.js +224 -245
  292. package/dist/syncer/checksum.d.ts +1 -1
  293. package/dist/syncer/checksum.d.ts.map +1 -1
  294. package/dist/syncer/checksum.js +86 -72
  295. package/dist/syncer/code-generator.d.ts +2 -2
  296. package/dist/syncer/code-generator.d.ts.map +1 -1
  297. package/dist/syncer/code-generator.js +154 -160
  298. package/dist/syncer/entity-operations.d.ts +1 -1
  299. package/dist/syncer/entity-operations.d.ts.map +1 -1
  300. package/dist/syncer/entity-operations.js +63 -54
  301. package/dist/syncer/file-patterns.d.ts +1 -1
  302. package/dist/syncer/file-patterns.d.ts.map +1 -1
  303. package/dist/syncer/file-patterns.js +38 -38
  304. package/dist/syncer/index.js +19 -8
  305. package/dist/syncer/module-loader.d.ts +5 -5
  306. package/dist/syncer/module-loader.d.ts.map +1 -1
  307. package/dist/syncer/module-loader.js +83 -78
  308. package/dist/syncer/syncer-actions.d.ts +2 -2
  309. package/dist/syncer/syncer-actions.d.ts.map +1 -1
  310. package/dist/syncer/syncer-actions.js +76 -91
  311. package/dist/syncer/syncer.d.ts +7 -6
  312. package/dist/syncer/syncer.d.ts.map +1 -1
  313. package/dist/syncer/syncer.js +426 -492
  314. package/dist/tasks/decorator.d.ts +3 -3
  315. package/dist/tasks/decorator.d.ts.map +1 -1
  316. package/dist/tasks/decorator.js +32 -28
  317. package/dist/tasks/step-wrapper.d.ts +1 -1
  318. package/dist/tasks/step-wrapper.d.ts.map +1 -1
  319. package/dist/tasks/step-wrapper.js +42 -41
  320. package/dist/tasks/workflow-manager.d.ts +2 -2
  321. package/dist/tasks/workflow-manager.d.ts.map +1 -1
  322. package/dist/tasks/workflow-manager.js +192 -221
  323. package/dist/template/entity-converter.d.ts +1 -1
  324. package/dist/template/entity-converter.d.ts.map +1 -1
  325. package/dist/template/entity-converter.js +103 -103
  326. package/dist/template/helpers.d.ts.map +1 -1
  327. package/dist/template/helpers.js +163 -163
  328. package/dist/template/implementations/entity.template.d.ts +1 -1
  329. package/dist/template/implementations/entity.template.d.ts.map +1 -1
  330. package/dist/template/implementations/entity.template.js +76 -85
  331. package/dist/template/implementations/entry-server.template.d.ts +1 -1
  332. package/dist/template/implementations/entry-server.template.d.ts.map +1 -1
  333. package/dist/template/implementations/entry-server.template.js +32 -27
  334. package/dist/template/implementations/generated.template.d.ts +1 -1
  335. package/dist/template/implementations/generated.template.d.ts.map +1 -1
  336. package/dist/template/implementations/generated.template.js +254 -275
  337. package/dist/template/implementations/generated_http.template.d.ts +2 -2
  338. package/dist/template/implementations/generated_http.template.d.ts.map +1 -1
  339. package/dist/template/implementations/generated_http.template.js +114 -133
  340. package/dist/template/implementations/generated_sso.template.d.ts.map +1 -1
  341. package/dist/template/implementations/generated_sso.template.js +249 -275
  342. package/dist/template/implementations/init_types.template.d.ts +1 -1
  343. package/dist/template/implementations/init_types.template.d.ts.map +1 -1
  344. package/dist/template/implementations/init_types.template.js +40 -34
  345. package/dist/template/implementations/model.template.d.ts +1 -1
  346. package/dist/template/implementations/model.template.d.ts.map +1 -1
  347. package/dist/template/implementations/model.template.js +56 -53
  348. package/dist/template/implementations/model_test.template.d.ts +1 -1
  349. package/dist/template/implementations/model_test.template.d.ts.map +1 -1
  350. package/dist/template/implementations/model_test.template.js +32 -24
  351. package/dist/template/implementations/queries.template.d.ts +1 -1
  352. package/dist/template/implementations/queries.template.d.ts.map +1 -1
  353. package/dist/template/implementations/queries.template.js +84 -89
  354. package/dist/template/implementations/sd.template.d.ts +1 -1
  355. package/dist/template/implementations/sd.template.d.ts.map +1 -1
  356. package/dist/template/implementations/sd.template.js +137 -144
  357. package/dist/template/implementations/services.template.d.ts +1 -1
  358. package/dist/template/implementations/services.template.d.ts.map +1 -1
  359. package/dist/template/implementations/services.template.js +164 -189
  360. package/dist/template/implementations/view_form.template.d.ts +1 -1
  361. package/dist/template/implementations/view_form.template.d.ts.map +1 -1
  362. package/dist/template/implementations/view_form.template.js +258 -285
  363. package/dist/template/implementations/view_id_all_select.template.d.ts +1 -1
  364. package/dist/template/implementations/view_id_all_select.template.d.ts.map +1 -1
  365. package/dist/template/implementations/view_id_all_select.template.js +31 -25
  366. package/dist/template/implementations/view_list.template.d.ts +1 -1
  367. package/dist/template/implementations/view_list.template.d.ts.map +1 -1
  368. package/dist/template/implementations/view_list.template.js +304 -355
  369. package/dist/template/implementations/view_search_input.template.d.ts +1 -1
  370. package/dist/template/implementations/view_search_input.template.d.ts.map +1 -1
  371. package/dist/template/implementations/view_search_input.template.js +31 -27
  372. package/dist/template/index.js +21 -7
  373. package/dist/template/template-manager.d.ts +1 -1
  374. package/dist/template/template-manager.d.ts.map +1 -1
  375. package/dist/template/template-manager.js +132 -123
  376. package/dist/template/template-types.js +8 -6
  377. package/dist/template/template.d.ts +2 -2
  378. package/dist/template/template.d.ts.map +1 -1
  379. package/dist/template/template.js +73 -68
  380. package/dist/template/zod-converter.d.ts.map +1 -1
  381. package/dist/template/zod-converter.js +603 -657
  382. package/dist/testing/_relation-graph.d.ts +1 -1
  383. package/dist/testing/_relation-graph.d.ts.map +1 -1
  384. package/dist/testing/_relation-graph.js +93 -88
  385. package/dist/testing/bootstrap.d.ts +22 -13
  386. package/dist/testing/bootstrap.d.ts.map +1 -1
  387. package/dist/testing/bootstrap.js +114 -114
  388. package/dist/testing/data-explorer.d.ts +3 -3
  389. package/dist/testing/data-explorer.d.ts.map +1 -1
  390. package/dist/testing/data-explorer.js +237 -265
  391. package/dist/testing/dev-test-routes.d.ts +2 -2
  392. package/dist/testing/dev-test-routes.d.ts.map +1 -1
  393. package/dist/testing/dev-test-routes.js +258 -249
  394. package/dist/testing/dev-vitest-manager.d.ts +1 -1
  395. package/dist/testing/dev-vitest-manager.d.ts.map +1 -1
  396. package/dist/testing/dev-vitest-manager.js +514 -539
  397. package/dist/testing/faker-mappings.js +422 -420
  398. package/dist/testing/fixture-generator.d.ts +3 -3
  399. package/dist/testing/fixture-generator.d.ts.map +1 -1
  400. package/dist/testing/fixture-generator.js +1216 -1346
  401. package/dist/testing/fixture-loader.js +26 -25
  402. package/dist/testing/fixture-manager.d.ts +3 -3
  403. package/dist/testing/fixture-manager.d.ts.map +1 -1
  404. package/dist/testing/fixture-manager.js +706 -776
  405. package/dist/testing/global-setup.js +53 -49
  406. package/dist/testing/index.js +19 -11
  407. package/dist/testing/naite-vitest-reporter.js +18 -13
  408. package/dist/testing/parallel-db-manager.d.ts +1 -1
  409. package/dist/testing/parallel-db-manager.d.ts.map +1 -1
  410. package/dist/testing/parallel-db-manager.js +63 -78
  411. package/dist/testing/vitest-helpers.d.ts +1 -1
  412. package/dist/testing/vitest-helpers.d.ts.map +1 -1
  413. package/dist/testing/vitest-helpers.js +37 -33
  414. package/dist/types/types.d.ts +28 -28
  415. package/dist/types/types.d.ts.map +1 -1
  416. package/dist/types/types.js +764 -890
  417. package/dist/ui/ai-api.d.ts +1 -1
  418. package/dist/ui/ai-api.d.ts.map +1 -1
  419. package/dist/ui/ai-api.js +52 -42
  420. package/dist/ui/ai-client.d.ts +1 -2
  421. package/dist/ui/ai-client.d.ts.map +1 -1
  422. package/dist/ui/ai-client.js +353 -388
  423. package/dist/ui/api.d.ts +1 -1
  424. package/dist/ui/api.d.ts.map +1 -1
  425. package/dist/ui/api.js +903 -1145
  426. package/dist/ui/cdd-service.d.ts +1 -1
  427. package/dist/ui/cdd-service.d.ts.map +1 -1
  428. package/dist/ui/cdd-service.js +406 -407
  429. package/dist/ui/cdd-types.js +1 -3
  430. package/dist/ui-web/assets/index-C-Zz-wYg.css +1 -0
  431. package/dist/ui-web/assets/index-DejDON8K.js +238 -0
  432. package/dist/ui-web/index.html +3 -3
  433. package/dist/utils/async-utils.js +57 -45
  434. package/dist/utils/console-util.d.ts.map +1 -1
  435. package/dist/utils/console-util.js +104 -87
  436. package/dist/utils/controller.js +26 -19
  437. package/dist/utils/esm-utils.js +49 -38
  438. package/dist/utils/formatter.d.ts +1 -2
  439. package/dist/utils/formatter.d.ts.map +1 -1
  440. package/dist/utils/formatter.js +89 -115
  441. package/dist/utils/fs-utils.d.ts.map +1 -1
  442. package/dist/utils/fs-utils.js +68 -65
  443. package/dist/utils/lodash-able.js +11 -4
  444. package/dist/utils/model.d.ts +1 -1
  445. package/dist/utils/model.d.ts.map +1 -1
  446. package/dist/utils/model.js +21 -19
  447. package/dist/utils/object-utils.js +148 -186
  448. package/dist/utils/path-utils.js +67 -57
  449. package/dist/utils/process-utils.d.ts.map +1 -1
  450. package/dist/utils/process-utils.js +37 -31
  451. package/dist/utils/sql-parser.d.ts +1 -1
  452. package/dist/utils/sql-parser.d.ts.map +1 -1
  453. package/dist/utils/sql-parser.js +40 -40
  454. package/dist/utils/type-utils.js +44 -43
  455. package/dist/utils/utils.d.ts +2 -3
  456. package/dist/utils/utils.d.ts.map +1 -1
  457. package/dist/utils/utils.js +81 -93
  458. package/dist/utils/zod-error.d.ts +1 -1
  459. package/dist/utils/zod-error.d.ts.map +1 -1
  460. package/dist/utils/zod-error.js +24 -17
  461. package/dist/vector/chunking.d.ts +1 -1
  462. package/dist/vector/chunking.d.ts.map +1 -1
  463. package/dist/vector/chunking.js +100 -94
  464. package/dist/vector/config.d.ts +1 -1
  465. package/dist/vector/config.d.ts.map +1 -1
  466. package/dist/vector/config.js +76 -78
  467. package/dist/vector/embedding.d.ts +1 -1
  468. package/dist/vector/embedding.d.ts.map +1 -1
  469. package/dist/vector/embedding.js +128 -125
  470. package/dist/vector/index.js +5 -5
  471. package/dist/vector/types.js +1 -5
  472. package/package.json +31 -36
  473. package/src/ai/agents/agent.ts +12 -5
  474. package/src/ai/agents/types.ts +5 -5
  475. package/src/ai/providers/rtzr/model.ts +8 -10
  476. package/src/ai/providers/rtzr/options.ts +2 -1
  477. package/src/ai/providers/rtzr/provider.ts +5 -3
  478. package/src/ai/providers/rtzr/utils.ts +2 -7
  479. package/src/api/__tests__/config.test.ts +15 -8
  480. package/src/api/base-frame.ts +5 -3
  481. package/src/api/caster.ts +7 -6
  482. package/src/api/code-converters.ts +23 -26
  483. package/src/api/config.ts +23 -17
  484. package/src/api/context.ts +18 -11
  485. package/src/api/decorators.ts +17 -18
  486. package/src/api/sonamu.ts +44 -49
  487. package/src/auth/auth-generator.ts +4 -6
  488. package/src/auth/better-auth-entities.ts +3 -2
  489. package/src/auth/knex-adapter.ts +6 -5
  490. package/src/auth/plugins/entity-definitions/admin.ts +1 -1
  491. package/src/auth/plugins/entity-definitions/anonymous.ts +1 -1
  492. package/src/auth/plugins/entity-definitions/api-key.ts +1 -1
  493. package/src/auth/plugins/entity-definitions/index.ts +1 -1
  494. package/src/auth/plugins/entity-definitions/jwt.ts +1 -1
  495. package/src/auth/plugins/entity-definitions/organization.ts +1 -1
  496. package/src/auth/plugins/entity-definitions/passkey.ts +1 -1
  497. package/src/auth/plugins/entity-definitions/phone-number.ts +1 -1
  498. package/src/auth/plugins/entity-definitions/sso.ts +1 -1
  499. package/src/auth/plugins/entity-definitions/two-factor.ts +1 -1
  500. package/src/auth/plugins/entity-definitions/types.ts +1 -1
  501. package/src/auth/plugins/entity-definitions/username.ts +1 -1
  502. package/src/auth/plugins/wrappers/admin.ts +3 -1
  503. package/src/auth/plugins/wrappers/anonymous.ts +3 -1
  504. package/src/auth/plugins/wrappers/api-key.ts +3 -1
  505. package/src/auth/plugins/wrappers/jwt.ts +3 -1
  506. package/src/auth/plugins/wrappers/organization.ts +3 -1
  507. package/src/auth/plugins/wrappers/passkey.ts +3 -1
  508. package/src/auth/plugins/wrappers/phone-number.ts +3 -1
  509. package/src/auth/plugins/wrappers/sso.ts +2 -1
  510. package/src/auth/plugins/wrappers/two-factor.ts +3 -1
  511. package/src/auth/plugins/wrappers/username.ts +3 -1
  512. package/src/bin/__tests__/ts-loader-register.test.ts +7 -12
  513. package/src/bin/build-config.ts +3 -3
  514. package/src/bin/cli.ts +27 -25
  515. package/src/bin/fixture.ts +4 -2
  516. package/src/bin/hmr-hook-register.ts +1 -0
  517. package/src/bin/test-command.ts +4 -2
  518. package/src/bin/ts-loader-registration.ts +6 -22
  519. package/src/cache/cache-manager.ts +2 -1
  520. package/src/cache/decorator.ts +2 -2
  521. package/src/cache/types.ts +3 -3
  522. package/src/cache-control/cache-control.ts +3 -2
  523. package/src/cache-control/types.ts +2 -2
  524. package/src/compress/compress.ts +1 -1
  525. package/src/cone/cone-generator.ts +5 -3
  526. package/src/database/_batch_update.ts +1 -1
  527. package/src/database/base-model.ts +20 -14
  528. package/src/database/base-model.types.ts +12 -11
  529. package/src/database/db.ts +56 -21
  530. package/src/database/knex.ts +2 -2
  531. package/src/database/puri-subset.test-d.ts +33 -32
  532. package/src/database/puri-subset.types.ts +6 -7
  533. package/src/database/puri-wrapper.ts +29 -26
  534. package/src/database/puri.ts +36 -34
  535. package/src/database/puri.types.test-d.ts +6 -5
  536. package/src/database/puri.types.ts +9 -12
  537. package/src/database/transaction-context.ts +2 -2
  538. package/src/database/upsert-builder.ts +17 -10
  539. package/src/dict/sd.ts +17 -4
  540. package/src/dict/sonamu-dictionary.ts +23 -17
  541. package/src/entity/entity-manager.ts +9 -7
  542. package/src/entity/entity-template-cone.ts +10 -3
  543. package/src/entity/entity.ts +20 -16
  544. package/src/exceptions/error-handler.ts +2 -1
  545. package/src/exceptions/so-exceptions.ts +1 -1
  546. package/src/filter/utils.ts +3 -2
  547. package/src/logger/category.ts +1 -0
  548. package/src/logger/configure.ts +5 -5
  549. package/src/migration/__tests__/code-generation.search-text.test.ts +2 -3
  550. package/src/migration/code-generation.ts +26 -25
  551. package/src/migration/migration-set.ts +16 -18
  552. package/src/migration/migrator.ts +38 -33
  553. package/src/migration/postgresql-schema-reader.ts +12 -12
  554. package/src/migration/slack-confirm.ts +5 -4
  555. package/src/migration/types.ts +2 -2
  556. package/src/naite/messaging-types.ts +1 -1
  557. package/src/naite/naite-reporter.ts +5 -3
  558. package/src/naite/naite.ts +12 -7
  559. package/src/shared/app.shared.ts.txt +2 -2
  560. package/src/shared/web.shared.ts.txt +2 -2
  561. package/src/skills/AGENTS.md +19 -18
  562. package/src/skills/commands/sonamu-skills.md +9 -9
  563. package/src/skills/sonamu/SKILL.md +111 -104
  564. package/src/skills/sonamu/ai-agents.md +27 -26
  565. package/src/skills/sonamu/api.md +81 -69
  566. package/src/skills/sonamu/auth-migration.md +13 -27
  567. package/src/skills/sonamu/auth-plugins.md +41 -31
  568. package/src/skills/sonamu/auth.md +30 -24
  569. package/src/skills/sonamu/cdd.md +26 -17
  570. package/src/skills/sonamu/cone.md +50 -50
  571. package/src/skills/sonamu/config.md +74 -51
  572. package/src/skills/sonamu/create-sonamu.md +31 -19
  573. package/src/skills/sonamu/database.md +43 -26
  574. package/src/skills/sonamu/entity-basic.md +61 -61
  575. package/src/skills/sonamu/entity-relations.md +84 -80
  576. package/src/skills/sonamu/entity-validation-checklist.md +19 -15
  577. package/src/skills/sonamu/fixture-cli.md +52 -30
  578. package/src/skills/sonamu/framework-change.md +9 -7
  579. package/src/skills/sonamu/frontend.md +64 -82
  580. package/src/skills/sonamu/i18n.md +45 -37
  581. package/src/skills/sonamu/migration.md +54 -31
  582. package/src/skills/sonamu/model.md +98 -66
  583. package/src/skills/sonamu/naite.md +34 -32
  584. package/src/skills/sonamu/project-init.md +28 -8
  585. package/src/skills/sonamu/puri.md +82 -91
  586. package/src/skills/sonamu/scaffolding.md +44 -32
  587. package/src/skills/sonamu/skill-contribution.md +50 -45
  588. package/src/skills/sonamu/subset.md +13 -13
  589. package/src/skills/sonamu/tasks.md +73 -58
  590. package/src/skills/sonamu/testing-devrunner.md +56 -36
  591. package/src/skills/sonamu/testing.md +23 -58
  592. package/src/skills/sonamu/upsert.md +32 -31
  593. package/src/skills/sonamu/vector.md +37 -36
  594. package/src/ssr/index.ts +2 -12
  595. package/src/ssr/registry.ts +1 -1
  596. package/src/ssr/renderer.ts +7 -5
  597. package/src/ssr/types.ts +2 -2
  598. package/src/storage/buffered-file.ts +4 -2
  599. package/src/storage/drivers.ts +3 -2
  600. package/src/storage/s3-driver.ts +7 -4
  601. package/src/storage/storage-manager.ts +3 -2
  602. package/src/storage/types.ts +3 -2
  603. package/src/storage/uploaded-file.ts +1 -1
  604. package/src/stream/sse.ts +2 -2
  605. package/src/syncer/api-parser.ts +8 -5
  606. package/src/syncer/checksum.ts +9 -5
  607. package/src/syncer/code-generator.ts +16 -8
  608. package/src/syncer/entity-operations.ts +5 -3
  609. package/src/syncer/file-patterns.ts +2 -1
  610. package/src/syncer/module-loader.ts +9 -6
  611. package/src/syncer/syncer-actions.ts +5 -3
  612. package/src/syncer/syncer.ts +18 -24
  613. package/src/tasks/decorator.ts +10 -8
  614. package/src/tasks/step-wrapper.ts +1 -1
  615. package/src/tasks/workflow-manager.ts +18 -15
  616. package/src/template/__tests__/generated.template.search-text.test.ts +1 -0
  617. package/src/template/entity-converter.ts +4 -2
  618. package/src/template/generated.template.test-d.ts +2 -1
  619. package/src/template/helpers.ts +5 -2
  620. package/src/template/implementations/entity.template.ts +9 -8
  621. package/src/template/implementations/entry-server.template.ts +1 -1
  622. package/src/template/implementations/generated.template.ts +21 -29
  623. package/src/template/implementations/generated_http.template.ts +9 -6
  624. package/src/template/implementations/generated_sso.template.ts +6 -4
  625. package/src/template/implementations/init_types.template.ts +3 -2
  626. package/src/template/implementations/model.template.ts +4 -2
  627. package/src/template/implementations/model_test.template.ts +3 -2
  628. package/src/template/implementations/queries.template.ts +6 -14
  629. package/src/template/implementations/sd.template.ts +4 -2
  630. package/src/template/implementations/services.template.ts +7 -11
  631. package/src/template/implementations/view_form.template.ts +5 -3
  632. package/src/template/implementations/view_id_all_select.template.ts +3 -2
  633. package/src/template/implementations/view_list.template.ts +7 -5
  634. package/src/template/implementations/view_search_input.template.ts +3 -2
  635. package/src/template/template-manager.ts +4 -3
  636. package/src/template/template.ts +4 -3
  637. package/src/template/zod-converter.ts +10 -7
  638. package/src/testing/__tests__/dev-test-routes.test.ts +3 -2
  639. package/src/testing/__tests__/dev-vitest-manager.test.ts +1 -0
  640. package/src/testing/_relation-graph.ts +2 -2
  641. package/src/testing/bootstrap.ts +55 -27
  642. package/src/testing/data-explorer.ts +5 -4
  643. package/src/testing/dev-test-routes.ts +8 -5
  644. package/src/testing/dev-vitest-manager.ts +13 -12
  645. package/src/testing/fixture-generator.ts +11 -17
  646. package/src/testing/fixture-manager.ts +21 -17
  647. package/src/testing/parallel-db-manager.ts +2 -1
  648. package/src/testing/vitest-helpers.ts +2 -1
  649. package/src/types/__tests__/entity-json-schema-search-text.test.ts +1 -0
  650. package/src/types/types.ts +8 -8
  651. package/src/typings/knex.d.ts +4 -4
  652. package/src/ui/ai-api.ts +5 -3
  653. package/src/ui/ai-client.ts +6 -5
  654. package/src/ui/api.ts +25 -23
  655. package/src/ui/cdd-service.ts +12 -11
  656. package/src/utils/console-util.ts +3 -1
  657. package/src/utils/formatter.ts +94 -102
  658. package/src/utils/fs-utils.ts +2 -1
  659. package/src/utils/model.ts +2 -2
  660. package/src/utils/object-utils.ts +3 -3
  661. package/src/utils/process-utils.ts +2 -1
  662. package/src/utils/sql-parser.ts +10 -1
  663. package/src/utils/type-utils.ts +3 -3
  664. package/src/utils/utils.ts +9 -7
  665. package/src/utils/zod-error.ts +1 -1
  666. package/src/vector/chunking.ts +1 -1
  667. package/src/vector/config.ts +1 -1
  668. package/src/vector/embedding.ts +11 -9
  669. package/tsdown.api.config.ts +50 -0
  670. package/.swcrc.project-default +0 -18
  671. package/dist/api/__tests__/config.test.js +0 -189
  672. package/dist/bin/__tests__/test-command.test.js +0 -112
  673. package/dist/bin/__tests__/ts-loader-register.test.js +0 -45
  674. package/dist/database/puri-subset.test-d.js +0 -89
  675. package/dist/database/puri.types.test-d.js +0 -129
  676. package/dist/migration/__tests__/code-generation.search-text.test.js +0 -435
  677. package/dist/template/__tests__/generated.template.search-text.test.js +0 -99
  678. package/dist/template/generated.template.test-d.js +0 -24
  679. package/dist/testing/__tests__/dev-test-routes.test.js +0 -144
  680. package/dist/testing/__tests__/dev-vitest-manager.test.js +0 -152
  681. package/dist/types/__tests__/entity-json-schema-search-text.test.js +0 -256
  682. package/dist/typings/knex.d.js +0 -3
  683. package/dist/ui-web/assets/index-CKo0Z2Iu.css +0 -1
  684. package/dist/ui-web/assets/index-DK-2aacv.js +0 -257
@@ -1,9 +1,10 @@
1
1
  import { describe, expectTypeOf, it } from "vitest";
2
- import type {
3
- AvailableColumns,
4
- ExtractColumnType,
5
- LeftJoinedMarker,
6
- ParseSelectObject,
2
+
3
+ import {
4
+ type AvailableColumns,
5
+ type ExtractColumnType,
6
+ type LeftJoinedMarker,
7
+ type ParseSelectObject,
7
8
  } from "./puri.types";
8
9
 
9
10
  // ============================================================================
@@ -1,9 +1,10 @@
1
- /** biome-ignore-all lint/suspicious/noExplicitAny: Puri.types.ts는 다양한 타입을 사용하고 있습니다. */
1
+ /* oxlint-disable @typescript-eslint/no-explicit-any */ // Puri.types.ts는 다양한 타입을 사용하고 있습니다.
2
2
 
3
- import type { QueryResult } from "pg";
4
- import type { DatabaseForeignKeys, DatabaseSchemaExtend } from "../types/types";
5
- import type { Puri } from "./puri";
6
- import type { PuriSubsetFn } from "./puri-subset.types";
3
+ import { type QueryResult } from "pg";
4
+
5
+ import { type DatabaseForeignKeys, type DatabaseSchemaExtend } from "../types/types";
6
+ import { type Puri } from "./puri";
7
+ import { type PuriSubsetFn } from "./puri-subset.types";
7
8
 
8
9
  // ============================================
9
10
  // 내부 타입 키 (메타데이터)
@@ -141,12 +142,8 @@ export type IsNullableColumn<
141
142
  // FK nullable 여부에 따른 마커 타입 결정
142
143
  // nullable FK로 leftJoin → LeftJoinedMarker (객체 자체가 null일 수 있음)
143
144
  // non-null FK로 leftJoin → 마커 없음 (부모가 있으면 자식도 반드시 있음)
144
- export type LeftJoinMarkerFor<TTables, Path extends string> = IsNullableColumn<
145
- TTables,
146
- Path
147
- > extends true
148
- ? LeftJoinedMarker
149
- : {};
145
+ export type LeftJoinMarkerFor<TTables, Path extends string> =
146
+ IsNullableColumn<TTables, Path> extends true ? LeftJoinedMarker : {};
150
147
 
151
148
  // 주어진 테이블이 FK nullable로 leftJoin 된 테이블인지 확인합니다.
152
149
  // 사실 LeftJoinMarker가 붙었는지 확인하는게 다입니다.
@@ -351,7 +348,7 @@ export type InsertData<T> = Omit<
351
348
  };
352
349
 
353
350
  // Insert Result 타입
354
- export type InsertResult = Pick<QueryResult<any>, "command" | "rowCount" | "rows" | "oid">;
351
+ export type InsertResult = Pick<QueryResult, "command" | "rowCount" | "rows" | "oid">;
355
352
 
356
353
  // SubsetQuery를 위한 타입 유틸리티
357
354
  export type ExtractTTables<T extends Puri<any, any, any>> =
@@ -1,5 +1,5 @@
1
- import type { DBPreset } from "./db";
2
- import type { PuriTransactionWrapper } from "./puri-wrapper";
1
+ import { type DBPreset } from "./db";
2
+ import { type PuriTransactionWrapper } from "./puri-wrapper";
3
3
 
4
4
  export class TransactionContext {
5
5
  private transactions: Map<DBPreset, PuriTransactionWrapper> = new Map();
@@ -1,13 +1,20 @@
1
- import { getLogger } from "@logtape/logtape";
2
1
  import { randomUUID } from "crypto";
3
- import type { Knex } from "knex";
4
- import { isArray, unique } from "radashi";
2
+
3
+ import { getLogger } from "@logtape/logtape";
4
+ import { type Knex } from "knex";
5
+ import { cluster, isArray, unique } from "radashi";
6
+
5
7
  import { EntityManager } from "../entity/entity-manager";
6
8
  import { Naite } from "../naite/naite";
7
- import type { DatabaseForeignKeys, DatabaseSchemaExtend, EntityIndex } from "../types/types";
8
- import { assertDefined, chunk, nonNullable } from "../utils/utils";
9
- import { batchUpdate, type RowWithId } from "./_batch_update";
10
- import type { ColumnKeys, ForeignKeyColumns, IdType, TableName } from "./puri.types";
9
+ import {
10
+ type DatabaseForeignKeys,
11
+ type DatabaseSchemaExtend,
12
+ type EntityIndex,
13
+ } from "../types/types";
14
+ import { assertDefined, nonNullable } from "../utils/utils";
15
+ import { batchUpdate } from "./_batch_update";
16
+ import { type RowWithId } from "./_batch_update";
17
+ import { type ColumnKeys, type ForeignKeyColumns, type IdType, type TableName } from "./puri.types";
11
18
 
12
19
  const logger = getLogger(["sonamu", "internal", "upsert-builder"]);
13
20
 
@@ -207,7 +214,7 @@ export class UpsertBuilder {
207
214
  mode: "upsert" | "insert",
208
215
  options?: UpsertOptions<TTable>,
209
216
  ): Promise<IdType<DatabaseSchemaExtend, TTable>[]> {
210
- if (this.hasTable(tableName) === false) {
217
+ if (!this.hasTable(tableName)) {
211
218
  return [];
212
219
  }
213
220
 
@@ -290,7 +297,7 @@ export class UpsertBuilder {
290
297
 
291
298
  // 현재 레벨 upsert
292
299
  const chunkSize = options?.chunkSize;
293
- const levelChunks = chunkSize ? chunk(resolvedRows, chunkSize) : [resolvedRows];
300
+ const levelChunks = chunkSize ? cluster(resolvedRows, chunkSize) : [resolvedRows];
294
301
  const selectFields = unique(["id", ...extractFields]);
295
302
 
296
303
  for (let index = 0; index < levelChunks.length; index++) {
@@ -496,7 +503,7 @@ export class UpsertBuilder {
496
503
  where: options?.where ?? "id",
497
504
  };
498
505
 
499
- if (this.hasTable(tableName) === false) {
506
+ if (!this.hasTable(tableName)) {
500
507
  return;
501
508
  }
502
509
  const table = this.tables.get(tableName);
package/src/dict/sd.ts CHANGED
@@ -3,10 +3,10 @@
3
3
  * sonamu 코어 내부에서 사용하는 i18n 함수입니다.
4
4
  */
5
5
 
6
- import { Sonamu } from "../api/sonamu";
6
+ import { type SonamuConfig } from "../api/config";
7
7
  import en from "./en";
8
8
  import ko from "./ko";
9
- import type { LocalizedString } from "./types";
9
+ import { type LocalizedString } from "./types";
10
10
 
11
11
  type SonamuDict = typeof ko;
12
12
  type DictKey = keyof SonamuDict;
@@ -20,13 +20,26 @@ const dictionaries: Record<string, MergedDictionary> = {
20
20
  ko,
21
21
  en,
22
22
  };
23
+ let currentI18nConfig: SonamuConfig["i18n"] | null = null;
23
24
 
24
25
  type SDReturnType<K extends DictKey> = SonamuDict[K] extends (...args: infer P) => string
25
26
  ? (...args: P) => LocalizedString
26
27
  : LocalizedString;
27
28
 
29
+ function getCurrentI18nConfig(): SonamuConfig["i18n"] {
30
+ if (currentI18nConfig === null) {
31
+ throw new Error("Sonamu i18n config has not been initialized");
32
+ }
33
+
34
+ return currentI18nConfig;
35
+ }
36
+
37
+ export function setSDConfig(i18nConfig: SonamuConfig["i18n"]): void {
38
+ currentI18nConfig = i18nConfig;
39
+ }
40
+
28
41
  function getDictValue<K extends DictKey>(key: K, locale: string): SDReturnType<K> {
29
- const { defaultLocale, supportedLocales } = Sonamu.config.i18n;
42
+ const { defaultLocale, supportedLocales } = getCurrentI18nConfig();
30
43
 
31
44
  // 1. 지정된 locale에서 조회
32
45
  const dict = dictionaries[locale];
@@ -61,6 +74,6 @@ function getDictValue<K extends DictKey>(key: K, locale: string): SDReturnType<K
61
74
  * SD("error.entityNotFound")("User", 1) // → "존재하지 않는 User ID 1" (LocalizedString)
62
75
  */
63
76
  export function SD<K extends DictKey>(key: K): SDReturnType<K> {
64
- const configLocale = Sonamu.config.i18n.defaultLocale;
77
+ const configLocale = getCurrentI18nConfig().defaultLocale;
65
78
  return getDictValue(key, configLocale);
66
79
  }
@@ -1,21 +1,23 @@
1
- import { Workbook } from "@sheetkit/node";
2
1
  import { execSync } from "child_process";
3
2
  import fs from "fs";
4
3
  import path from "path";
4
+
5
+ import { Workbook } from "@sheetkit/node";
5
6
  import ts from "typescript";
7
+
6
8
  import { Sonamu } from "../api/sonamu";
7
9
  import { EntityManager } from "../entity/entity-manager";
8
10
  import { BadRequestException } from "../exceptions/so-exceptions";
9
11
  import { formatCode } from "../utils/formatter";
10
12
  import { SD } from "./sd";
11
- import type {
12
- DictEntry,
13
- DictionaryResult,
14
- DictionaryRow,
15
- EntityKeyInfo,
16
- I18nConfig,
17
- ImportResult,
18
- UsageResult,
13
+ import {
14
+ type DictEntry,
15
+ type DictionaryResult,
16
+ type DictionaryRow,
17
+ type EntityKeyInfo,
18
+ type I18nConfig,
19
+ type ImportResult,
20
+ type UsageResult,
19
21
  } from "./types";
20
22
 
21
23
  /**
@@ -294,7 +296,7 @@ export class SonamuDictionary {
294
296
 
295
297
  // 파일 재생성
296
298
  const content = this.generateProjectDict(locale, existingEntries, isDefaultLocale);
297
- const formatted = formatCode(content, "typescript", filePath);
299
+ const formatted = await formatCode(content, "typescript", filePath);
298
300
  fs.writeFileSync(filePath, formatted, "utf-8");
299
301
  }
300
302
 
@@ -328,7 +330,7 @@ export class SonamuDictionary {
328
330
  */
329
331
  generateProjectDict(locale: string, entries: DictEntry[], isDefaultLocale: boolean): string {
330
332
  // key 알파벳 순 정렬
331
- const sorted = [...entries].sort((a, b) => a.key.localeCompare(b.key));
333
+ const sorted = [...entries].toSorted((a, b) => a.key.localeCompare(b.key));
332
334
 
333
335
  const lines: string[] = [];
334
336
 
@@ -408,11 +410,15 @@ export class SonamuDictionary {
408
410
  /**
409
411
  * dict 파일을 저장합니다.
410
412
  */
411
- private saveDictFile(locale: string, entries: DictEntry[], isDefaultLocale: boolean): void {
413
+ private async saveDictFile(
414
+ locale: string,
415
+ entries: DictEntry[],
416
+ isDefaultLocale: boolean,
417
+ ): Promise<void> {
412
418
  const i18nDir = this.ensureI18nDir();
413
419
  const dictPath = path.join(i18nDir, `${locale}.ts`);
414
420
  const content = this.generateProjectDict(locale, entries, isDefaultLocale);
415
- const formatted = formatCode(content, "typescript", dictPath);
421
+ const formatted = await formatCode(content, "typescript", dictPath);
416
422
  fs.writeFileSync(dictPath, formatted, "utf-8");
417
423
  }
418
424
 
@@ -834,7 +840,7 @@ export class SonamuDictionary {
834
840
  for (const locale of locales) {
835
841
  const entries = projectDictEntries[locale];
836
842
  if (entries.length > 0) {
837
- this.saveDictFile(locale, entries, locale === defaultLocale);
843
+ await this.saveDictFile(locale, entries, locale === defaultLocale);
838
844
  updatedLocales++;
839
845
  }
840
846
  }
@@ -902,7 +908,7 @@ export class SonamuDictionary {
902
908
  }
903
909
 
904
910
  // dict 파일 저장
905
- this.saveDictFile(locale, entries, locale === defaultLocale);
911
+ await this.saveDictFile(locale, entries, locale === defaultLocale);
906
912
  }
907
913
  }
908
914
 
@@ -939,7 +945,7 @@ export class SonamuDictionary {
939
945
  isFunction: this.isExpressionFunction(cellValue),
940
946
  });
941
947
 
942
- this.saveDictFile(locale, entries, locale === defaultLocale);
948
+ await this.saveDictFile(locale, entries, locale === defaultLocale);
943
949
  }
944
950
  }
945
951
 
@@ -962,7 +968,7 @@ export class SonamuDictionary {
962
968
  entries.splice(index, 1);
963
969
  deleted = true;
964
970
 
965
- this.saveDictFile(locale, entries, locale === defaultLocale);
971
+ await this.saveDictFile(locale, entries, locale === defaultLocale);
966
972
  }
967
973
  }
968
974
 
@@ -1,24 +1,25 @@
1
1
  import assert from "assert";
2
- import chalk from "chalk";
3
2
  import { glob, readFile } from "fs/promises";
4
- import inflection from "inflection";
5
3
  import path from "path";
4
+
5
+ import chalk from "chalk";
6
+ import inflection from "inflection";
6
7
  import { prettifyError, z } from "zod";
8
+
7
9
  import { Sonamu } from "../api/sonamu";
8
10
  import {
9
- type EntityIndex,
10
- type EntityJson,
11
11
  EntityJsonSchema,
12
12
  isSearchTextJsonSourceZodType,
13
13
  isSearchTextProp,
14
14
  SonamuFileArraySchema,
15
15
  SonamuFileSchema,
16
16
  } from "../types/types";
17
+ import { type EntityIndex, type EntityJson } from "../types/types";
17
18
  import { globAsync } from "../utils/async-utils";
18
19
  import { importMembers } from "../utils/esm-utils";
19
- import type { AbsolutePath } from "../utils/path-utils";
20
+ import { type AbsolutePath } from "../utils/path-utils";
20
21
  import { runtimePath } from "../utils/path-utils";
21
- import { Entity } from "./entity";
22
+ import { type Entity } from "./entity";
22
23
 
23
24
  export type EntityNamesRecord = Record<
24
25
  "fs" | "fsPlural" | "camel" | "camelPlural" | "capital" | "capitalPlural" | "upper" | "constant",
@@ -82,6 +83,7 @@ class EntityManagerClass {
82
83
  json: EntityJson,
83
84
  options: { deferSearchTextJsonSourceValidation?: boolean } = {},
84
85
  ): Promise<void> {
86
+ const { Entity } = await import("./entity");
85
87
  const entity = new Entity(json);
86
88
  await entity.registerModulePaths();
87
89
  if (!options.deferSearchTextJsonSourceValidation) {
@@ -192,7 +194,7 @@ class EntityManagerClass {
192
194
  }
193
195
 
194
196
  getAllIds(): string[] {
195
- return Array.from(EntityManager.entities.keys()).sort();
197
+ return Array.from(EntityManager.entities.keys()).toSorted();
196
198
  }
197
199
 
198
200
  getAllEntities(): Entity[] {
@@ -1,5 +1,12 @@
1
- import { type FakerMappingConfig, fakerMappings } from "../testing/faker-mappings";
2
- import type { Cone, EntityJson, EntityProp, OneToOneRelationProp, SubsetDef } from "../types/types";
1
+ import { fakerMappings } from "../testing/faker-mappings";
2
+ import { type FakerMappingConfig } from "../testing/faker-mappings";
3
+ import {
4
+ type Cone,
5
+ type EntityJson,
6
+ type EntityProp,
7
+ type OneToOneRelationProp,
8
+ type SubsetDef,
9
+ } from "../types/types";
3
10
  import {
4
11
  isBelongsToOneRelationProp,
5
12
  isEnumDefWithCone,
@@ -181,7 +188,7 @@ function shouldHaveDataSource(prop: EntityProp): boolean {
181
188
 
182
189
  // OneToOne은 hasJoinColumn: true인 경우에만 dataSource 필요
183
190
  if (isOneToOneRelationProp(prop)) {
184
- return (prop as OneToOneRelationProp).hasJoinColumn === true;
191
+ return (prop as OneToOneRelationProp).hasJoinColumn;
185
192
  }
186
193
 
187
194
  return false;
@@ -1,17 +1,13 @@
1
1
  import assert from "assert";
2
2
  import { writeFile } from "fs/promises";
3
- import inflection from "inflection";
4
3
  import path from "path";
4
+
5
+ import inflection from "inflection";
5
6
  import { group, unique } from "radashi";
6
7
  import { z } from "zod";
8
+
7
9
  import { Sonamu } from "../api/sonamu";
8
10
  import {
9
- type Cone,
10
- type EntityIndex,
11
- type EntityJson,
12
- type EntityProp,
13
- type EntityPropNode,
14
- type EntitySubsetRow,
15
11
  getEnumDefValues,
16
12
  getSubsetFields,
17
13
  isBelongsToOneRelationProp,
@@ -24,6 +20,14 @@ import {
24
20
  isVirtualCodeProp,
25
21
  isVirtualProp,
26
22
  normalizeSubsetField,
23
+ } from "../types/types";
24
+ import {
25
+ type Cone,
26
+ type EntityIndex,
27
+ type EntityJson,
28
+ type EntityProp,
29
+ type EntityPropNode,
30
+ type EntitySubsetRow,
27
31
  type RelationProp,
28
32
  type SubsetField,
29
33
  type SubsetQuery,
@@ -209,7 +213,7 @@ export class Entity {
209
213
  */
210
214
  private buildNestedSelectObject(
211
215
  selectItems: string[],
212
- // biome-ignore lint/suspicious/noExplicitAny: 반환 오브젝트의 값은 string일 수도 있고 또다른 오브젝트일 수도 있는데, 이를 재귀 타입으로 나타낼 수 없어 any로 처리합니다.
216
+ // oxlint-disable-next-line @typescript-eslint/no-explicit-any -- 반환 오브젝트의 값은 string일 수도 있고 또다른 오브젝트일 수도 있는데, 이를 재귀 타입으로 나타낼 수 없어 any로 처리합니다.
213
217
  ): Record<string, any> {
214
218
  const result: ReturnType<typeof this.buildNestedSelectObject> = {};
215
219
 
@@ -275,7 +279,7 @@ export class Entity {
275
279
  * @param withBraces true면 중괄호 포함, false면 내용만 반환
276
280
  */
277
281
  private stringifyNestedSelectObject(
278
- // biome-ignore lint/suspicious/noExplicitAny: 중첩 오브젝트의 값은 string일 수도 있고 또다른 오브젝트일 수도 있는데, 이를 재귀 타입으로 나타낼 수 없어 any로 처리합니다.
282
+ // oxlint-disable-next-line @typescript-eslint/no-explicit-any -- 중첩 오브젝트의 값은 string일 수도 있고 또다른 오브젝트일 수도 있는데, 이를 재귀 타입으로 나타낼 수 없어 any로 처리합니다.
279
283
  obj: Record<string, any>,
280
284
  indent: number = 0,
281
285
  withBraces: boolean = true,
@@ -498,7 +502,7 @@ export class Entity {
498
502
  }
499
503
 
500
504
  if (isOneToOneRelationProp(relation)) {
501
- if (relation.hasJoinColumn === true && (relation.nullable ?? false) === false) {
505
+ if (relation.hasJoinColumn && !(relation.nullable ?? false)) {
502
506
  return "inner";
503
507
  } else {
504
508
  return "outer";
@@ -736,7 +740,7 @@ export class Entity {
736
740
  }
737
741
  return propName;
738
742
  })
739
- .filter((f) => f !== null) as string[];
743
+ .filter((f) => f !== null);
740
744
  }
741
745
 
742
746
  /**
@@ -746,7 +750,7 @@ export class Entity {
746
750
  private hasForeignKey(prop: RelationProp): boolean {
747
751
  return (
748
752
  prop.relationType === "BelongsToOne" ||
749
- (prop.relationType === "OneToOne" && prop.hasJoinColumn === true)
753
+ (prop.relationType === "OneToOne" && prop.hasJoinColumn)
750
754
  );
751
755
  }
752
756
 
@@ -939,7 +943,7 @@ export class Entity {
939
943
  `src/application/${this.names.parentFs}/${this.names.fs}.entity.json`,
940
944
  );
941
945
  const json = this.toJson();
942
- await writeFile(jsonPath, formatCode(JSON.stringify(json), "json", jsonPath));
946
+ await writeFile(jsonPath, await formatCode(JSON.stringify(json), "json", jsonPath));
943
947
 
944
948
  // reload
945
949
  await EntityManager.register(json);
@@ -1093,12 +1097,12 @@ export class Entity {
1093
1097
  isOpen: children.length > 0,
1094
1098
  has: Object.fromEntries(
1095
1099
  subsetKeys.map((subsetKey) => {
1096
- return [subsetKey, children.every((child) => child.has[subsetKey] === true)];
1100
+ return [subsetKey, children.every((child) => child.has[subsetKey])];
1097
1101
  }),
1098
1102
  ),
1099
1103
  isInternal: Object.fromEntries(
1100
1104
  subsetKeys.map((subsetKey) => {
1101
- return [subsetKey, children.every((child) => child.isInternal[subsetKey] === true)];
1105
+ return [subsetKey, children.every((child) => child.isInternal[subsetKey])];
1102
1106
  }),
1103
1107
  ),
1104
1108
  };
@@ -1281,7 +1285,7 @@ export class Entity {
1281
1285
  }
1282
1286
 
1283
1287
  getEntityIdFromSubsetField(subsetField: string): string {
1284
- if (subsetField.includes(".") === false) {
1288
+ if (!subsetField.includes(".")) {
1285
1289
  return this.id;
1286
1290
  }
1287
1291
 
@@ -1,5 +1,6 @@
1
- import type { FastifyInstance } from "fastify";
1
+ import { type FastifyInstance } from "fastify";
2
2
  import type z from "zod";
3
+
3
4
  import { isSoException } from "./so-exceptions";
4
5
 
5
6
  export function setupErrorHandler(server: FastifyInstance) {
@@ -1,4 +1,4 @@
1
- import type { LocalizedString } from "../dict/types";
1
+ import { type LocalizedString } from "../dict/types";
2
2
 
3
3
  export abstract class SoException extends Error {
4
4
  constructor(
@@ -1,6 +1,7 @@
1
- import type { Entity } from "../entity/entity";
1
+ import { type Entity } from "../entity/entity";
2
2
  import { isEnumProp } from "../types/types";
3
- import { type FilterOperator, type FilterQuery, operatorsByPropType } from "./types";
3
+ import { operatorsByPropType } from "./types";
4
+ import { type FilterOperator, type FilterQuery } from "./types";
4
5
 
5
6
  // ============================================================
6
7
  // Query Normalization
@@ -1,5 +1,6 @@
1
1
  // NOTE: import * as inflection 혹은 import { underscore } 사용 시 오류 발생.
2
2
  import inflection from "inflection";
3
+
3
4
  import { asArray } from "../utils/model";
4
5
 
5
6
  // 두 카테고리가 동일한지 확인
@@ -1,15 +1,15 @@
1
+ import { configure, getConsoleSink } from "@logtape/logtape";
1
2
  import {
2
- configure,
3
3
  type Filter,
4
4
  type FilterLike,
5
- getConsoleSink,
6
5
  type LoggerConfig,
7
6
  type LogRecord,
8
7
  type Sink,
9
8
  type TextFormatter,
10
9
  } from "@logtape/logtape";
11
10
  import { getPrettyFormatter } from "@logtape/pretty";
12
- import type { FastifyReply, FastifyRequest } from "fastify";
11
+ import { type FastifyReply, type FastifyRequest } from "fastify";
12
+
13
13
  import { isSameCategory } from "./category";
14
14
 
15
15
  export type SonamuLoggingOptions<TSinkId extends string, TFilterId extends string> = {
@@ -102,12 +102,12 @@ export async function configureLogTape<TSinkId extends string, TFilterId extends
102
102
 
103
103
  const sinks = {
104
104
  "fastify-console": defaultFastifySink(fastifyCategory),
105
- ...(options.sinks ?? {}),
105
+ ...options.sinks,
106
106
  } as Record<TSinkId | "fastify-console", Sink>;
107
107
 
108
108
  const filters = {
109
109
  "fastify-console": defaultFastifyFilter(fastifyCategory),
110
- ...(options.filters ?? {}),
110
+ ...options.filters,
111
111
  } as Record<TFilterId | "fastify-console", FilterLike>;
112
112
 
113
113
  const loggers: Set<LoggerConfig<TSinkId | "fastify-console", TFilterId | "fastify-console">> =
@@ -1,9 +1,9 @@
1
1
  import { describe, expect, test } from "vitest";
2
+
2
3
  import { Sonamu } from "../../api";
3
4
  import { Entity } from "../../entity/entity";
4
5
  import { EntityManager } from "../../entity/entity-manager";
5
- import type { MigrationSet } from "../../types/types";
6
- import { setupBiome } from "../../utils/formatter";
6
+ import { type MigrationSet } from "../../types/types";
7
7
  import {
8
8
  generateAlterCode,
9
9
  generateCreateCode,
@@ -13,7 +13,6 @@ import { getMigrationSetFromEntity } from "../migration-set";
13
13
 
14
14
  const TEST_API_ROOT = "/Users/Nebuleto/Workspace/sonamu/modules/sonamu";
15
15
 
16
- setupBiome(TEST_API_ROOT);
17
16
  Sonamu.apiRootPath = TEST_API_ROOT;
18
17
 
19
18
  let entitySeq = 0;