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
@@ -25,19 +25,19 @@ production/development master (live DB)
25
25
 
26
26
  ### Role of Each DB
27
27
 
28
- | DB | Purpose | Data origin |
29
- |----|---------|-------------|
30
- | `project` | Production/development live DB | Real user data |
28
+ | DB | Purpose | Data origin |
29
+ | ----------------- | -------------------------------- | --------------------------------------- |
30
+ | `project` | Production/development live DB | Real user data |
31
31
  | `project_fixture` | Reference data store for testing | Imported via fetch or generated via gen |
32
- | `project_test` | Test execution environment | Synced from fixture |
32
+ | `project_test` | Test execution environment | Synced from fixture |
33
33
 
34
34
  ### Which DB Each Command Uses
35
35
 
36
- | Command | sourceDb | targetDb | Description |
37
- |---------|----------|----------|-------------|
38
- | `fixture gen` | fixture DB | fixture DB | Resolves and generates relations within the fixture DB |
39
- | `fixture fetch` | production master | fixture DB | Imports from live DB → fixture DB |
40
- | `fixture sync` | fixture DB | test DB | Synchronizes fixture DB → test DB (existing behavior) |
36
+ | Command | sourceDb | targetDb | Description |
37
+ | --------------- | ----------------- | ---------- | ------------------------------------------------------ |
38
+ | `fixture gen` | fixture DB | fixture DB | Resolves and generates relations within the fixture DB |
39
+ | `fixture fetch` | production master | fixture DB | Imports from live DB → fixture DB |
40
+ | `fixture sync` | fixture DB | test DB | Synchronizes fixture DB → test DB (existing behavior) |
41
41
 
42
42
  **CRITICAL**: Incorrect sourceDb or targetDb settings will cause FK reference errors.
43
43
 
@@ -125,13 +125,14 @@ pnpm sonamu fixture fetch --all --strategy recent --limit 3
125
125
 
126
126
  #### Strategies
127
127
 
128
- | Strategy | Description | Example |
129
- |----------|-------------|---------|
128
+ | Strategy | Description | Example |
129
+ | -------- | -------------------------------- | ------------------------------ |
130
130
  | `recent` | Most recent data (by created_at) | `--strategy recent --limit 10` |
131
- | `sample` | Uniform sampling | `--strategy sample --limit 10` |
132
- | `random` | Random sampling | `--strategy random --limit 10` |
131
+ | `sample` | Uniform sampling | `--strategy sample --limit 10` |
132
+ | `random` | Random sampling | `--strategy random --limit 10` |
133
133
 
134
134
  **CRITICAL**: fetch retrieves related data **recursively** (maxDepth: 2)
135
+
135
136
  - Fetching User → also imports User's department and institution
136
137
  - Fetching Post → also imports Post's author (User)
137
138
 
@@ -229,10 +230,12 @@ pnpm sonamu fixture sync
229
230
  FixtureGenerator automatically generates Korean data for specific field names:
230
231
 
231
232
  **Fields with automatic Korean generation**:
233
+
232
234
  - `name`, `username`: Korean full name (`fakerKO.person.fullName()`)
233
235
  - Entity is `Department` and prop is `name`: Korean department name
234
236
 
235
237
  **Example output**:
238
+
236
239
  ```typescript
237
240
  // User
238
241
  { name: "김민준", username: "이서연" }
@@ -242,6 +245,7 @@ FixtureGenerator automatically generates Korean data for specific field names:
242
245
  ```
243
246
 
244
247
  **Customization**:
248
+
245
249
  ```typescript
246
250
  // Edit in fixture-generator.ts
247
251
  if (entity?.id === "Department" && prop.name === "name") {
@@ -255,21 +259,23 @@ if (entity?.id === "Department" && prop.name === "name") {
255
259
  Fields with unique constraints require a deduplication strategy.
256
260
 
257
261
  **Problem**:
262
+
258
263
  ```sql
259
264
  -- departments table
260
265
  UNIQUE (company_id, name)
261
266
  ```
262
267
 
263
268
  **Solution: Automatic variation**
269
+
264
270
  ```typescript
265
271
  // Prevents "개발팀" from being generated multiple times under the same company_id
266
272
  // Automatically adds prefix/suffix with 70% probability
267
273
 
268
274
  // Result:
269
- "개발팀" // 30%
270
- "개발팀 1팀" // 20%
271
- "개발팀 본부" // 20%
272
- "글로벌 개발팀" // 30%
275
+ "개발팀"; // 30%
276
+ "개발팀 1팀"; // 20%
277
+ "개발팀 본부"; // 20%
278
+ "글로벌 개발팀"; // 30%
273
279
  ```
274
280
 
275
281
  **Implementation location**: `generateDefaultValue()` in `fixture-generator.ts`
@@ -279,6 +285,7 @@ UNIQUE (company_id, name)
279
285
  BelongsToOne relations auto-generate a `{name}_id` column, so code must use the `_id` suffix.
280
286
 
281
287
  **Entity definition**:
288
+
282
289
  ```json
283
290
  {
284
291
  "type": "relation",
@@ -289,15 +296,17 @@ BelongsToOne relations auto-generate a `{name}_id` column, so code must use the
289
296
  ```
290
297
 
291
298
  **Inside FixtureGenerator**:
299
+
292
300
  ```typescript
293
301
  // ✓ CORRECT
294
- fixture[`${prop.name}_id`] = relationValue; // company_id
302
+ fixture[`${prop.name}_id`] = relationValue; // company_id
295
303
 
296
304
  // ✗ WRONG
297
- fixture[prop.name] = relationValue; // company (FK saved as NULL!)
305
+ fixture[prop.name] = relationValue; // company (FK saved as NULL!)
298
306
  ```
299
307
 
300
308
  **Easy to get wrong because**:
309
+
301
310
  - Entity JSON defines `name: "company"`
302
311
  - DB column is auto-created as `company_id`
303
312
  - Code must use `company_id`
@@ -307,6 +316,7 @@ fixture[prop.name] = relationValue; // company (FK saved as NULL!)
307
316
  fixture gen **automatically sorts by dependency order** (uses FixtureManager's RelationGraph).
308
317
 
309
318
  **Example**:
319
+
310
320
  ```bash
311
321
  # Department references Company, but no need to worry about order
312
322
  pnpm sonamu fixture gen --include Department,Company --count 5
@@ -327,6 +337,7 @@ pnpm sonamu fixture gen --include Department,Company --count 5
327
337
  After generating fixtures, ID sequences may be out of sync.
328
338
 
329
339
  **Check**:
340
+
330
341
  ```bash
331
342
  PGPASSWORD=1234 psql -h 0.0.0.0 -U postgres -d project_fixture -c "
332
343
  SELECT sequencename, last_value
@@ -337,6 +348,7 @@ ORDER BY sequencename;
337
348
  ```
338
349
 
339
350
  **Reset**:
351
+
340
352
  ```sql
341
353
  -- Per table
342
354
  SELECT setval('departments_id_seq', (SELECT MAX(id) FROM departments), true);
@@ -344,6 +356,7 @@ SELECT setval('companies_id_seq', (SELECT MAX(id) FROM companies), true);
344
356
  ```
345
357
 
346
358
  **Automated**:
359
+
347
360
  ```bash
348
361
  # Reset all sequences script
349
362
  PGPASSWORD=1234 psql -h 0.0.0.0 -U postgres -d project_fixture -c "
@@ -371,6 +384,7 @@ git commit -m "Add user fixtures for testing"
371
384
  ```
372
385
 
373
386
  **When to use**:
387
+
374
388
  - Consistent test data needed in CI/CD environments
375
389
  - Reproducing specific scenarios
376
390
  - Sharing test data across team members
@@ -404,6 +418,7 @@ Adding `cone` metadata to Entity JSON gives you finer control over fixture gener
404
418
  ```
405
419
 
406
420
  **Supported strategies**:
421
+
407
422
  - `sample`: Uniform sampling
408
423
  - `recent`: Most recent data (by created_at)
409
424
  - `random`: Random sampling
@@ -450,10 +465,12 @@ Adding `cone` metadata to Entity JSON gives you finer control over fixture gener
450
465
  ```
451
466
 
452
467
  **How it works**:
468
+
453
469
  - Without `--use-llm`: serves only as a reference description for developers/LLMs (used by cone-generator when generating metadata)
454
470
  - With `--use-llm`: fixture gen calls the Claude API and generates actual values based on the note content
455
471
 
456
472
  **Use cases**:
473
+
457
474
  - Contextual text that is hard to express with simple faker.js (self-introductions, descriptions, etc.)
458
475
  - Explaining the field's meaning and generation pattern to developers
459
476
  - No length limit (short patterns or long descriptions are both fine)
@@ -511,11 +528,11 @@ export default defineConfig({
511
528
 
512
529
  #### When to choose note vs fixtureGenerator
513
530
 
514
- | Situation | Recommended |
515
- |-----------|-------------|
516
- | Simple values such as email, name, number | `fixtureGenerator` (faker.js) |
517
- | Contextual text such as self-introductions or descriptions | `cone.note` + `--use-llm` (LLM) |
518
- | Selecting from a specific list of values | `fixtureGenerator` (arrayElement) |
531
+ | Situation | Recommended |
532
+ | ---------------------------------------------------------- | --------------------------------- |
533
+ | Simple values such as email, name, number | `fixtureGenerator` (faker.js) |
534
+ | Contextual text such as self-introductions or descriptions | `cone.note` + `--use-llm` (LLM) |
535
+ | Selecting from a specific list of values | `fixtureGenerator` (arrayElement) |
519
536
 
520
537
  ---
521
538
 
@@ -523,12 +540,12 @@ export default defineConfig({
523
540
 
524
541
  **Source:** `modules/sonamu/src/testing/fixture-generator.ts`
525
542
 
526
- | Option | Type | Default | Description |
527
- |--------|------|---------|-------------|
528
- | `locale` | `"ko"` \| `"en"` \| `"ja"` | `"ko"` | Locale for generated data |
529
- | `useLLM` | boolean | `false` | LLM-based data generation (`--use-llm`) |
530
- | `enableLLMCache` | boolean | `true` | Cache LLM results (disable with `--no-cache`) |
531
- | `llmModel` | string | `"claude-sonnet-4-5"` | LLM model to use |
543
+ | Option | Type | Default | Description |
544
+ | ---------------- | -------------------------- | --------------------- | --------------------------------------------- |
545
+ | `locale` | `"ko"` \| `"en"` \| `"ja"` | `"ko"` | Locale for generated data |
546
+ | `useLLM` | boolean | `false` | LLM-based data generation (`--use-llm`) |
547
+ | `enableLLMCache` | boolean | `true` | Cache LLM results (disable with `--no-cache`) |
548
+ | `llmModel` | string | `"claude-sonnet-4-5"` | LLM model to use |
532
549
 
533
550
  ---
534
551
 
@@ -539,6 +556,7 @@ export default defineConfig({
539
556
  **Cause**: BelongsToOne relation is non-nullable but there is no data to reference
540
557
 
541
558
  **Solution**:
559
+
542
560
  ```bash
543
561
  # Generate the referenced Entity first
544
562
  pnpm sonamu fixture gen --include Company --count 5
@@ -548,6 +566,7 @@ pnpm sonamu fixture gen --include Department --count 10
548
566
  ```
549
567
 
550
568
  Or:
569
+
551
570
  ```bash
552
571
  # Generate together (auto-sorted by dependency order)
553
572
  pnpm sonamu fixture gen --include Company,Department --count 5
@@ -558,6 +577,7 @@ pnpm sonamu fixture gen --include Company,Department --count 5
558
577
  **Cause**: Duplicate values generated for a field with a unique constraint
559
578
 
560
579
  **Solution**:
580
+
561
581
  1. Modify the per-field generation logic for that Entity in `fixture-generator.ts`
562
582
  2. Add prefix/suffix or use UUID
563
583
  3. Reduce count
@@ -567,6 +587,7 @@ pnpm sonamu fixture gen --include Company,Department --count 5
567
587
  **Cause**: Incorrect sourceDb/targetDb configuration
568
588
 
569
589
  **Check**:
590
+
570
591
  ```typescript
571
592
  // Verify in fixture.ts
572
593
  const fixtureDb = createKnexInstance(Sonamu.dbConfig.fixture);
@@ -574,6 +595,7 @@ const generator = new FixtureGenerator(fixtureDb, fixtureDb, "fixture", EntityMa
574
595
  ```
575
596
 
576
597
  **Correct configuration**:
598
+
577
599
  - `fixture gen`: sourceDb = fixtureDb, targetDb = fixtureDb
578
600
  - `fixture fetch`: sourceDb = production, targetDb = fixtureDb
579
601
 
@@ -13,12 +13,12 @@ Criteria for deciding whether to directly modify the framework or apply a projec
13
13
 
14
14
  Evaluate along the following 4 axes:
15
15
 
16
- | Axis | Project workaround | Framework fix |
17
- |----|-------------|----------------|
18
- | **Reproduction scope** | Only occurs in specific usage patterns | Occurs regardless of usage pattern |
19
- | **Workaround cost** | Resolved by modifying one place in the project | Workaround must be propagated to all projects |
20
- | **Impact scope** | Uncertain ripple effects on other projects if framework is changed | Change scope is isolated and side effects are clear |
21
- | **Ownership** | The code has a known author and discussion is needed | Bug is clear and a review path is available |
16
+ | Axis | Project workaround | Framework fix |
17
+ | ---------------------- | ------------------------------------------------------------------ | --------------------------------------------------- |
18
+ | **Reproduction scope** | Only occurs in specific usage patterns | Occurs regardless of usage pattern |
19
+ | **Workaround cost** | Resolved by modifying one place in the project | Workaround must be propagated to all projects |
20
+ | **Impact scope** | Uncertain ripple effects on other projects if framework is changed | Change scope is isolated and side effects are clear |
21
+ | **Ownership** | The code has a known author and discussion is needed | Bug is clear and a review path is available |
22
22
 
23
23
  **Criteria for choosing project workaround**: If 2 or more of the 4 axes lean toward "project workaround", apply the workaround first.
24
24
 
@@ -62,6 +62,7 @@ async upload(entity_type: string, entity_id: number, file_type: string)
62
62
  ```
63
63
 
64
64
  Generated result:
65
+
65
66
  ```typescript
66
67
  // mutationFn only passes params.params and params.files (entity_id and file_type are missing)
67
68
  mutationFn: (params: { params: string; ... }) => upload(params.params, params.files)
@@ -77,11 +78,12 @@ async upload(params: { entity_type: string; entity_id: number; file_type: string
77
78
  The Sonamu backend automatically deserializes nested formData in the form `params[entity_type]` using `qs`, so this has no effect on runtime behavior.
78
79
 
79
80
  Call-site pattern:
81
+
80
82
  ```typescript
81
83
  uploadMutation.mutate({
82
84
  params: { entity_type, entity_id, file_type },
83
85
  files,
84
- })
86
+ });
85
87
  ```
86
88
 
87
89
  **Rule**: If an `@upload` method requires 2 or more parameters, always wrap them in a single object.
@@ -9,56 +9,56 @@ description: Sonamu frontend integration. Auto-generated Service, TanStack Query
9
9
 
10
10
  ### Hooks
11
11
 
12
- | Hook | Purpose | Key Return Values |
13
- | --------------- | ------------------------------------ | -------------------------------------------------------- |
14
- | `useTypeForm` | Form state management (Zod-based) | form, setForm, register, submit, addError, reset |
15
- | `useListParams` | URL-synced list parameters | listParams, setListParams, register |
16
- | `useSelection` | Checkbox multi-selection | selectedKeys, toggle, selectAll, deselectAll |
17
- | `useModal` | Modal state management | open, modal |
18
- | `useToast` | Toast notifications | toast |
12
+ | Hook | Purpose | Key Return Values |
13
+ | --------------- | --------------------------------- | ------------------------------------------------ |
14
+ | `useTypeForm` | Form state management (Zod-based) | form, setForm, register, submit, addError, reset |
15
+ | `useListParams` | URL-synced list parameters | listParams, setListParams, register |
16
+ | `useSelection` | Checkbox multi-selection | selectedKeys, toggle, selectAll, deselectAll |
17
+ | `useModal` | Modal state management | open, modal |
18
+ | `useToast` | Toast notifications | toast |
19
19
 
20
20
  ### Components
21
21
 
22
- | Component | Purpose | Key Props |
23
- | ------------- | -------------------- | --------------------------------------------------- |
24
- | `Input` | Text input | value, onValueChange |
25
- | `Textarea` | Multi-line input | value, onValueChange |
26
- | `Checkbox` | Checkbox | value (boolean), onValueChange, label |
27
- | `Select` | Single select | items, value, onValueChange, placeholder, clearable |
28
- | `MultiSelect` | Multi-select | options, value (array), onValueChange, maxCount |
29
- | `EnumSelect` | Enum select | enum, labels, value, onValueChange |
30
- | `FileInput` | File upload | uploadMode, viewMode, multiple, maxFiles |
22
+ | Component | Purpose | Key Props |
23
+ | ------------- | ---------------- | --------------------------------------------------- |
24
+ | `Input` | Text input | value, onValueChange |
25
+ | `Textarea` | Multi-line input | value, onValueChange |
26
+ | `Checkbox` | Checkbox | value (boolean), onValueChange, label |
27
+ | `Select` | Single select | items, value, onValueChange, placeholder, clearable |
28
+ | `MultiSelect` | Multi-select | options, value (array), onValueChange, maxCount |
29
+ | `EnumSelect` | Enum select | enum, labels, value, onValueChange |
30
+ | `FileInput` | File upload | uploadMode, viewMode, multiple, maxFiles |
31
31
 
32
32
  ### Service (Auto-generated)
33
33
 
34
- | Method | Purpose | Example |
35
- | ----------------- | ------------------------ | -------------------------------------- |
36
- | `get{Entity}` | Fetch single record | `UserService.getUser("A", 123)` |
37
- | `get{Entities}` | Fetch list | `UserService.getUsers("P", params)` |
38
- | `save` | Save (create/update) | `UserService.save([data])` |
39
- | `del` | Delete | `UserService.del([1, 2, 3])` |
40
- | `use{Entity}` | Single fetch hook | `UserService.useUser("A", id)` |
41
- | `use{Entities}` | List fetch hook | `UserService.useUsers("P", params)` |
42
- | `useSaveMutation` | Save mutation | `UserService.useSaveMutation()` |
34
+ | Method | Purpose | Example |
35
+ | ----------------- | -------------------- | ----------------------------------- |
36
+ | `get{Entity}` | Fetch single record | `UserService.getUser("A", 123)` |
37
+ | `get{Entities}` | Fetch list | `UserService.getUsers("P", params)` |
38
+ | `save` | Save (create/update) | `UserService.save([data])` |
39
+ | `del` | Delete | `UserService.del([1, 2, 3])` |
40
+ | `use{Entity}` | Single fetch hook | `UserService.useUser("A", id)` |
41
+ | `use{Entities}` | List fetch hook | `UserService.useUsers("P", params)` |
42
+ | `useSaveMutation` | Save mutation | `UserService.useSaveMutation()` |
43
43
 
44
44
  ### Utilities
45
45
 
46
- | Function | Purpose | Example |
47
- | ------------------ | ---------------------------- | ---------------------------------------------------- |
48
- | `dateF` | Date formatting | `dateF(new Date())` → `"2024-01-15"` |
49
- | `datetimeF` | Datetime formatting | `datetimeF(new Date())` → `"2024-01-15 10:30:00"` |
50
- | `numF` | Number formatting | `numF(1234567)` → `"1,234,567"` |
51
- | `hidden` | Conditional hidden class | `hidden(true)` → `"hidden"` |
52
- | `arrayableToArray` | Convert to array | `arrayableToArray("a")` → `["a"]` |
46
+ | Function | Purpose | Example |
47
+ | ------------------ | ------------------------ | ------------------------------------------------- |
48
+ | `dateF` | Date formatting | `dateF(new Date())` → `"2024-01-15"` |
49
+ | `datetimeF` | Datetime formatting | `datetimeF(new Date())` → `"2024-01-15 10:30:00"` |
50
+ | `numF` | Number formatting | `numF(1234567)` → `"1,234,567"` |
51
+ | `hidden` | Conditional hidden class | `hidden(true)` → `"hidden"` |
52
+ | `arrayableToArray` | Convert to array | `arrayableToArray("a")` → `["a"]` |
53
53
 
54
54
  ### Configuration
55
55
 
56
- | Item | Description | Required |
57
- | ---------------- | ------------------------------------------------ | ----------------------------------------- |
56
+ | Item | Description | Required |
57
+ | ---------------- | -------------------------------------------------- | ------------------------------------------ |
58
58
  | `SonamuProvider` | Global configuration Provider (uploader, auth, SD) | Required (uploader required for FileInput) |
59
- | `uploader` | File upload function | Required when using FileInput |
60
- | `auth` | Authentication state and functions | Optional |
61
- | `SD` | Internationalization function | Optional |
59
+ | `uploader` | File upload function | Required when using FileInput |
60
+ | `auth` | Authentication state and functions | Optional |
61
+ | `SD` | Internationalization function | Optional |
62
62
 
63
63
  ---
64
64
 
@@ -76,9 +76,7 @@ const user = await UserService.getUser("A", 123);
76
76
  const { rows, total } = await UserService.getUsers("P", { num: 20, page: 1 });
77
77
 
78
78
  // Save
79
- const [userId] = await UserService.save([
80
- { email: "new@test.com", username: "newuser" },
81
- ]);
79
+ const [userId] = await UserService.save([{ email: "new@test.com", username: "newuser" }]);
82
80
 
83
81
  // Delete
84
82
  const count = await UserService.del([1, 2, 3]);
@@ -139,28 +137,22 @@ Type-safe form management based on Zod schemas (react-components v0.1.8+)
139
137
  ### Return Values
140
138
 
141
139
  ```typescript
142
- const {
143
- form,
144
- setForm,
145
- register,
146
- submit,
147
- addError,
148
- removeError,
149
- clearError,
150
- reset,
151
- } = useTypeForm(Schema, defaultValue);
140
+ const { form, setForm, register, submit, addError, removeError, clearError, reset } = useTypeForm(
141
+ Schema,
142
+ defaultValue,
143
+ );
152
144
  ```
153
145
 
154
- | Return Value | Type | Description |
155
- | ------------- | --------------------------------------------------- | ---------------------------------------- |
156
- | `form` | `z.infer<Schema>` | Current form data |
157
- | `setForm` | `React.Dispatch<SetStateAction<...>>` | Form state update function |
158
- | `register` | `(field: string) => RegisterReturn` | Field registration function |
159
- | `submit` | `(callback) => () => Promise<R>` | Submit handler factory |
160
- | `addError` | `(path: string, error: string \| ErrorObj) => void` | Manually add an error |
161
- | `removeError` | `(path: string) => void` | Remove error for a specific field |
162
- | `clearError` | `() => void` | Clear all errors |
163
- | `reset` | `() => void` | Reset form to defaultValue |
146
+ | Return Value | Type | Description |
147
+ | ------------- | --------------------------------------------------- | --------------------------------- |
148
+ | `form` | `z.infer<Schema>` | Current form data |
149
+ | `setForm` | `React.Dispatch<SetStateAction<...>>` | Form state update function |
150
+ | `register` | `(field: string) => RegisterReturn` | Field registration function |
151
+ | `submit` | `(callback) => () => Promise<R>` | Submit handler factory |
152
+ | `addError` | `(path: string, error: string \| ErrorObj) => void` | Manually add an error |
153
+ | `removeError` | `(path: string) => void` | Remove error for a specific field |
154
+ | `clearError` | `() => void` | Clear all errors |
155
+ | `reset` | `() => void` | Reset form to defaultValue |
164
156
 
165
157
  ### register Return Object
166
158
 
@@ -197,9 +189,7 @@ function RegisterForm() {
197
189
  return (
198
190
  <form>
199
191
  <Input {...emailProps} />
200
- {emailProps.error && (
201
- <span className="error">{emailProps.error.content}</span>
202
- )}
192
+ {emailProps.error && <span className="error">{emailProps.error.content}</span>}
203
193
 
204
194
  {/* Method 2: inline (for short cases) */}
205
195
  <Input {...register("username")} />
@@ -258,14 +248,14 @@ import { Input, Checkbox, Select, Textarea } from "@sonamu-kit/react-components/
258
248
 
259
249
  Fields defined as required in SaveParams **must be included** in the form initial values:
260
250
 
261
- | Type | Initial Value |
262
- | ----------------- | ---------------------- |
263
- | string (required) | `""` |
264
- | number (required) | `0` |
265
- | Date (required) | `new Date()` |
251
+ | Type | Initial Value |
252
+ | ----------------- | ------------------------------ |
253
+ | string (required) | `""` |
254
+ | number (required) | `0` |
255
+ | Date (required) | `new Date()` |
266
256
  | enum (required) | Default value (e.g. `"draft"`) |
267
- | FK (required) | `0` |
268
- | nullable | `null` |
257
+ | FK (required) | `0` |
258
+ | nullable | `null` |
269
259
 
270
260
  ```typescript
271
261
  const { form, setForm, register } = useTypeForm(TaskSaveParams, {
@@ -286,14 +276,7 @@ If a scaffolded form accesses relation objects like `row.collection?.id`, that r
286
276
 
287
277
  ```json
288
278
  // question.entity.json > subsets > A
289
- [
290
- "id",
291
- "content",
292
- "collection.id",
293
- "collection.title",
294
- "parent.id",
295
- "answer_group.id"
296
- ]
279
+ ["id", "content", "collection.id", "collection.title", "parent.id", "answer_group.id"]
297
280
  ```
298
281
 
299
282
  **Alternative**: If the FK is already on `row`, using `...row` alone is sufficient without accessing the relation (no subset modification needed)
@@ -542,11 +525,13 @@ function UserForm() {
542
525
  ```
543
526
 
544
527
  **Notes**:
528
+
545
529
  - You must explicitly reset lower values to `null` when a higher-level value changes. IdAsyncSelect does not reset automatically.
546
530
  - Using the `disabled` prop to disable lower levels when the parent is not selected improves UX.
547
531
  - If `baseListParams` is `undefined`, IdAsyncSelect stays in enabled=false state and does not fetch.
548
532
 
549
533
  **Items to specify in Spec** (recommended to add to acceptanceCriteria in spec.json when cascade is present):
534
+
550
535
  ```json
551
536
  "acceptanceCriteria": [
552
537
  "When a department is selected, only divisions belonging to that department appear in the dropdown",
@@ -850,10 +835,7 @@ import { registerSSR } from "sonamu/ssr";
850
835
 
851
836
  registerSSR({
852
837
  path: "/companies/:companyId",
853
- preload: (params) => [
854
- UserService.me(),
855
- CompanyService.findById("A", Number(params.companyId)),
856
- ],
838
+ preload: (params) => [UserService.me(), CompanyService.findById("A", Number(params.companyId))],
857
839
  });
858
840
  ```
859
841