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
@@ -18,16 +18,15 @@
18
18
  * - resolveRenderType
19
19
  */
20
20
 
21
- import inflection from "inflection";
22
21
  import path from "path";
22
+
23
+ import inflection from "inflection";
23
24
  import { z } from "zod";
24
- import type { $ZodLooseShape } from "zod/v4/core";
25
+
25
26
  import { Sonamu } from "../api/sonamu";
26
27
  import { EntityManager } from "../entity/entity-manager";
27
28
  import {
28
29
  BUILT_IN_TYPE_IDS,
29
- type EntityProp,
30
- type EntityPropNode,
31
30
  isBelongsToOneRelationProp,
32
31
  isBigIntegerArrayProp,
33
32
  isBigIntegerSingleProp,
@@ -55,9 +54,13 @@ import {
55
54
  isVectorArrayProp,
56
55
  isVectorSingleProp,
57
56
  isVirtualProp,
58
- type RenderingNode,
59
57
  SonamuFileArraySchema,
60
58
  SonamuFileSchema,
59
+ } from "../types/types";
60
+ import {
61
+ type EntityProp,
62
+ type EntityPropNode,
63
+ type RenderingNode,
61
64
  type ZodStringFormat,
62
65
  } from "../types/types";
63
66
  import { createImportUrl } from "../utils/esm-utils";
@@ -65,13 +68,13 @@ import { runtimePath } from "../utils/path-utils";
65
68
 
66
69
  // <any>를 자제하고, Zod에서 제약하는 기본적인 Generic Type Parameter를 사용함.
67
70
  type AnyZodRecord = z.ZodRecord<z.ZodString | z.ZodNumber | z.ZodSymbol, z.ZodType>;
68
- type AnyZodObject = z.ZodObject<$ZodLooseShape>;
71
+ type AnyZodObject = z.ZodObject;
69
72
  type AnyZodNullable = z.ZodNullable<z.ZodType>;
70
73
  type AnyZodDefault = z.ZodDefault<z.ZodType>;
71
74
  type AnyZodUnion = z.ZodUnion<z.ZodType[]>;
72
75
  type AnyZodArray = z.ZodArray<z.ZodType>;
73
76
  type AnyZodOptional = z.ZodOptional<z.ZodType>;
74
- type AnyZodTemplateLiteral = z.ZodTemplateLiteral<string>;
77
+ type AnyZodTemplateLiteral = z.ZodTemplateLiteral;
75
78
 
76
79
  /**
77
80
  * 내장 타입 정의 (Zod 스키마 + UI 렌더링 타입)
@@ -1,6 +1,7 @@
1
1
  import Fastify from "fastify";
2
2
  import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
3
- import type { ManagerStatus, RunResult } from "../dev-vitest-manager";
3
+
4
+ import { type ManagerStatus, type RunResult } from "../dev-vitest-manager";
4
5
 
5
6
  // vi.hoisted를 사용하여 mock 객체를 vi.mock 호이스팅 이전에 초기화
6
7
  const mockManager = vi.hoisted(() => ({
@@ -12,7 +13,7 @@ const mockManager = vi.hoisted(() => ({
12
13
 
13
14
  // DevVitestManager를 모킹하여 new DevVitestManager()가 mockManager 인스턴스를 반환하도록 설정
14
15
  vi.mock("../dev-vitest-manager", () => {
15
- // biome-ignore lint/complexity/useArrowFunction: vi.fn 생성자 모킹에는 function 키워드가 필요
16
+ // oxlint-disable-next-line prefer-arrow-callback -- vi.fn 생성자 모킹에는 function 키워드가 필요
16
17
  const MockDevVitestManager = vi.fn(function () {
17
18
  return mockManager;
18
19
  });
@@ -2,6 +2,7 @@ import { beforeEach, describe, expect, it, vi } from "vitest";
2
2
 
3
3
  // vitest/node 모킹 - createVitest가 mock Vitest 인스턴스를 반환하도록 설정
4
4
  const mockVitest = {
5
+ standalone: vi.fn().mockResolvedValue(undefined),
5
6
  onFilterWatchedSpecification: vi.fn(),
6
7
  setGlobalTestNamePattern: vi.fn(),
7
8
  resetGlobalTestNamePattern: vi.fn(),
@@ -1,5 +1,5 @@
1
1
  import { EntityManager } from "../entity/entity-manager";
2
- import type { EntityProp, FixtureRecord, RelationNode } from "../types/types";
2
+ import { type FixtureRecord, type RelationNode } from "../types/types";
3
3
  import {
4
4
  isBelongsToOneRelationProp,
5
5
  isManyToManyRelationProp,
@@ -31,7 +31,7 @@ export class RelationGraph {
31
31
  }
32
32
 
33
33
  for (const [, column] of Object.entries(fixture.columns)) {
34
- const prop = column.prop as EntityProp;
34
+ const prop = column.prop;
35
35
 
36
36
  if (isRelationProp(prop)) {
37
37
  if (
@@ -1,17 +1,11 @@
1
- import {
2
- afterAll,
3
- afterEach,
4
- beforeAll,
5
- beforeEach,
6
- type TestFunction,
7
- type TestOptions,
8
- type VitestUtils,
9
- test as vitestTest,
10
- } from "vitest";
11
- import type { Context } from "../api/context";
1
+ import { afterAll, afterEach, beforeAll, beforeEach, test as vitestTest } from "vitest";
2
+ import { type TestFunction, type TestOptions, type VitestUtils } from "vitest";
3
+
4
+ import { type Context } from "../api/context";
12
5
  import { Sonamu } from "../api/sonamu";
13
6
  import { DB } from "../database/db";
14
- import { Naite, type SerializedTrace } from "../naite/naite";
7
+ import { Naite } from "../naite/naite";
8
+ import { type SerializedTrace } from "../naite/naite";
15
9
  import { NaiteReporter } from "../naite/naite-reporter";
16
10
 
17
11
  export interface BootstrapOptions {
@@ -64,14 +58,10 @@ export function bootstrap(vi: VitestUtils, options?: BootstrapOptions) {
64
58
 
65
59
  function getMockContext(): Context {
66
60
  return {
67
- ip: "127.0.0.1",
68
- session: {},
61
+ session: null,
69
62
  user: null,
70
- passport: {
71
- login: async () => {},
72
- logout: () => {},
73
- },
74
63
  naiteStore: Naite.createStore(),
64
+ locale: "",
75
65
  } as unknown as Context;
76
66
  }
77
67
 
@@ -84,14 +74,52 @@ export async function runWithMockContext(fn: () => Promise<void>) {
84
74
  await runWithContext(getMockContext(), fn);
85
75
  }
86
76
 
77
+ type TestResult = Promise<ReturnType<typeof vitestTest>>;
78
+ type TestCallbackResult = void | Promise<void>;
79
+ type TestEach = <TArgs extends readonly unknown[]>(
80
+ cases: readonly TArgs[],
81
+ ) => (title: string, fn: (...args: TArgs) => TestCallbackResult) => void;
82
+
83
+ type TestWrapper = {
84
+ (title: string, fn: TestFunction, options?: TestOptions): TestResult;
85
+ skip: (title: string, fn: TestFunction, options?: TestOptions) => TestResult;
86
+ only: (title: string, fn: TestFunction, options?: TestOptions) => TestResult;
87
+ todo: (title: string) => void;
88
+ each: TestEach;
89
+ };
90
+
91
+ type TestAsWrapper = {
92
+ <User extends Context["user"]>(
93
+ user: User,
94
+ title: string,
95
+ fn: TestFunction,
96
+ options?: TestOptions,
97
+ ): TestResult;
98
+ skip: <User extends Context["user"]>(
99
+ user: User,
100
+ title: string,
101
+ fn: TestFunction,
102
+ options?: TestOptions,
103
+ ) => TestResult;
104
+ only: <User extends Context["user"]>(
105
+ user: User,
106
+ title: string,
107
+ fn: TestFunction,
108
+ options?: TestOptions,
109
+ ) => TestResult;
110
+ todo: (title: string) => void;
111
+ };
112
+
113
+ const each: TestEach = vitestTest.each.bind(vitestTest);
114
+
87
115
  declare module "vitest" {
88
116
  interface TaskMeta {
89
117
  traces: SerializedTrace[];
90
118
  }
91
119
  }
92
120
 
93
- export const test = Object.assign(
94
- async (title: string, fn: TestFunction<object>, options?: TestOptions) => {
121
+ export const test: TestWrapper = Object.assign(
122
+ async (title: string, fn: TestFunction, options?: TestOptions) => {
95
123
  return vitestTest(title, options, async (context) => {
96
124
  await runWithMockContext(async () => {
97
125
  try {
@@ -105,9 +133,9 @@ export const test = Object.assign(
105
133
  });
106
134
  },
107
135
  {
108
- skip: async (title: string, fn: TestFunction<object>, options?: TestOptions) =>
136
+ skip: async (title: string, fn: TestFunction, options?: TestOptions) =>
109
137
  vitestTest.skip(title, options, fn),
110
- only: async (title: string, fn: TestFunction<object>, options?: TestOptions) => {
138
+ only: async (title: string, fn: TestFunction, options?: TestOptions) => {
111
139
  return vitestTest.only(title, options, async (context) => {
112
140
  await runWithMockContext(async () => {
113
141
  try {
@@ -121,15 +149,15 @@ export const test = Object.assign(
121
149
  });
122
150
  },
123
151
  todo: (title: string) => vitestTest.todo(title),
124
- each: vitestTest.each.bind(vitestTest) as typeof vitestTest.each,
152
+ each,
125
153
  },
126
154
  );
127
155
 
128
- export const testAs = Object.assign(
156
+ export const testAs: TestAsWrapper = Object.assign(
129
157
  async <User extends Context["user"]>(
130
158
  user: User,
131
159
  title: string,
132
- fn: TestFunction<object>,
160
+ fn: TestFunction,
133
161
  options?: TestOptions,
134
162
  ) => {
135
163
  return vitestTest(title, options, async (context) => {
@@ -154,13 +182,13 @@ export const testAs = Object.assign(
154
182
  skip: async <User extends Context["user"]>(
155
183
  _user: User,
156
184
  title: string,
157
- fn: TestFunction<object>,
185
+ fn: TestFunction,
158
186
  options?: TestOptions,
159
187
  ) => vitestTest.skip(title, options, fn),
160
188
  only: async <User extends Context["user"]>(
161
189
  user: User,
162
190
  title: string,
163
- fn: TestFunction<object>,
191
+ fn: TestFunction,
164
192
  options?: TestOptions,
165
193
  ) => {
166
194
  return vitestTest.only(title, options, async (context) => {
@@ -1,7 +1,8 @@
1
- import type { Knex } from "knex";
2
- import type { CacheManager } from "../cache/types";
3
- import type { Entity } from "../entity/entity";
4
- import type { EntityManager } from "../entity/entity-manager";
1
+ import { type Knex } from "knex";
2
+
3
+ import { type CacheManager } from "../cache/types";
4
+ import { type Entity } from "../entity/entity";
5
+ import { type EntityManager } from "../entity/entity-manager";
5
6
  import { isBelongsToOneRelationProp, isOneToOneRelationProp, isRelationProp } from "../types/types";
6
7
 
7
8
  export type DataExplorerStrategy = "sample" | "ids" | "query" | "file" | "recent" | "random";
@@ -1,11 +1,14 @@
1
1
  import { randomUUID } from "crypto";
2
- import type { FastifyInstance } from "fastify";
2
+
3
+ import { type FastifyInstance } from "fastify";
3
4
  import { z } from "zod";
4
- import type { SonamuDevRunnerConfig } from "../api/config";
5
+
6
+ import { type SonamuDevRunnerConfig } from "../api/config";
5
7
  import { Sonamu } from "../api/sonamu";
6
- import type { SerializedTrace } from "../naite/naite";
7
- import { createSSEFactory, type SSEConnection } from "../stream/sse";
8
- import type { ManagerStatus, RunResult, TestCaseResult } from "./dev-vitest-manager";
8
+ import { type SerializedTrace } from "../naite/naite";
9
+ import { createSSEFactory } from "../stream/sse";
10
+ import { type SSEConnection } from "../stream/sse";
11
+ import { type ManagerStatus, type RunResult, type TestCaseResult } from "./dev-vitest-manager";
9
12
  import { DevVitestManager } from "./dev-vitest-manager";
10
13
 
11
14
  const SCHEMA_VERSION = 1;
@@ -1,15 +1,16 @@
1
- import type { UserConfig as ViteUserConfig } from "vite";
2
- import type {
3
- CliOptions,
4
- Reporter,
5
- TestCase,
6
- TestModule,
7
- TestRunResult,
8
- TestSpecification,
9
- TestSuite,
10
- Vitest,
1
+ import { type UserConfig as ViteUserConfig } from "vite";
2
+ import {
3
+ type CliOptions,
4
+ type Reporter,
5
+ type TestCase,
6
+ type TestModule,
7
+ type TestRunResult,
8
+ type TestSpecification,
9
+ type TestSuite,
10
+ type Vitest,
11
11
  } from "vitest/node";
12
- import type { SerializedTrace } from "../naite/naite";
12
+
13
+ import { type SerializedTrace } from "../naite/naite";
13
14
 
14
15
  // 테스트 한 건의 trace 모음
15
16
  export type TestNodeKind = "file" | "suite" | "test";
@@ -122,7 +123,7 @@ export class DevVitestManager {
122
123
 
123
124
  const vitest = await createVitest("test", cliOptions, viteOverrides);
124
125
  try {
125
- await vitest.init();
126
+ await vitest.standalone();
126
127
  } catch (err) {
127
128
  await vitest.close();
128
129
  throw err;
@@ -1,16 +1,15 @@
1
1
  import chalk from "chalk";
2
- import type { Knex } from "knex";
3
- import type { Entity } from "../entity/entity";
4
- import type { EntityManager } from "../entity/entity-manager";
5
- import type { EntityProp, FixtureImportResult, FixtureRecord } from "../types/types";
2
+ import { type Knex } from "knex";
3
+
4
+ import { type Entity } from "../entity/entity";
5
+ import { type EntityManager } from "../entity/entity-manager";
6
+ import { type EntityProp, type FixtureImportResult, type FixtureRecord } from "../types/types";
6
7
  import { isBelongsToOneRelationProp, isOneToOneRelationProp, isRelationProp } from "../types/types";
7
8
  import { isTest } from "../utils/controller";
8
- import {
9
- DataExplorer,
10
- type ExploreWithRelationsOptions,
11
- type ExploreWithRelationsResult,
12
- } from "./data-explorer";
13
- import { type FakerMappings, fakerMappings } from "./faker-mappings";
9
+ import { DataExplorer } from "./data-explorer";
10
+ import { type ExploreWithRelationsOptions, type ExploreWithRelationsResult } from "./data-explorer";
11
+ import { fakerMappings } from "./faker-mappings";
12
+ import { type FakerMappings } from "./faker-mappings";
14
13
  import { FixtureManager } from "./fixture-manager";
15
14
 
16
15
  export type Locale = "ko" | "en" | "ja";
@@ -173,11 +172,7 @@ export class FixtureGenerator {
173
172
 
174
173
  // 3. fixtureGenerator 사용
175
174
  if (cone?.fixtureGenerator) {
176
- fixture[prop.name] = await this.executeGenerator(
177
- cone.fixtureGenerator as string,
178
- prop,
179
- entity,
180
- );
175
+ fixture[prop.name] = await this.executeGenerator(cone.fixtureGenerator, prop, entity);
181
176
  continue;
182
177
  }
183
178
 
@@ -1475,8 +1470,7 @@ Rules:
1475
1470
  // parentId 엔티티: DB에서 서브타입 행이 없는 부모 id를 조회하여 사용
1476
1471
  // (새 부모 생성 대신 기존 데이터 재활용)
1477
1472
  const idProp = specEntity.props.find((p) => p.name === "id");
1478
- const parentOverrides =
1479
- (idProp?.cone?.fixtureParentOverrides as Record<string, unknown> | undefined) ?? {};
1473
+ const parentOverrides = idProp?.cone?.fixtureParentOverrides ?? {};
1480
1474
  const parentEntity = this.entityManager.get(specEntity.parentId);
1481
1475
 
1482
1476
  // 부모 테이블에서 서브타입 테이블에 없는 id를 조회
@@ -1,32 +1,36 @@
1
1
  import assert from "assert";
2
- import chalk from "chalk";
3
2
  import { execSync } from "child_process";
4
3
  import { readFileSync, writeFileSync } from "fs";
4
+ import { inspect } from "util";
5
+
6
+ import chalk from "chalk";
5
7
  import inflection from "inflection";
6
- import type { Knex } from "knex";
8
+ import { type Knex } from "knex";
7
9
  import { unique } from "radashi";
8
- import { inspect } from "util";
9
- import { Sonamu } from "../api";
10
+
11
+ import { Sonamu } from "../api/sonamu";
10
12
  import { BaseModel } from "../database/base-model";
11
- import type { SonamuDBConfig } from "../database/db";
13
+ import { type SonamuDBConfig } from "../database/db";
12
14
  import { createKnexInstance } from "../database/knex";
13
- import { type UBRef, UpsertBuilder } from "../database/upsert-builder";
14
- import type { Entity } from "../entity/entity";
15
+ import { UpsertBuilder } from "../database/upsert-builder";
16
+ import { type UBRef } from "../database/upsert-builder";
17
+ import { type Entity } from "../entity/entity";
15
18
  import { EntityManager } from "../entity/entity-manager";
16
19
  import {
17
- type BelongsToOneRelationProp,
18
- type DatabaseSchemaExtend,
19
- type EntityProp,
20
- type FixtureImportResult,
21
- type FixtureRecord,
22
- type FixtureSearchOptions,
23
20
  isBelongsToOneRelationProp,
24
21
  isHasManyRelationProp,
25
22
  isManyToManyRelationProp,
26
23
  isOneToOneRelationProp,
27
24
  isRelationProp,
28
25
  isVirtualProp,
29
- type ManyToManyRelationProp,
26
+ } from "../types/types";
27
+ import {
28
+ type BelongsToOneRelationProp,
29
+ type DatabaseSchemaExtend,
30
+ type EntityProp,
31
+ type FixtureImportResult,
32
+ type FixtureRecord,
33
+ type FixtureSearchOptions,
30
34
  type OneToOneRelationProp,
31
35
  } from "../types/types";
32
36
  import { isTest } from "../utils/controller";
@@ -275,7 +279,7 @@ export class FixtureManagerClass {
275
279
  }),
276
280
  );
277
281
 
278
- return [...unique(relQueries.reverse().flat()), selfQuery];
282
+ return [...unique(relQueries.toReversed().flat()), selfQuery];
279
283
  }
280
284
 
281
285
  async destroy() {
@@ -869,12 +873,12 @@ export class FixtureManagerClass {
869
873
  if (isManyToManyRelationProp(prop) && Array.isArray(column.value)) {
870
874
  // 선택되지 않은 ManyToMany 관계는 저장하지 않음
871
875
  const targetTable = EntityManager.get(prop.with);
872
- if (this.builder.hasTable(targetTable.table) === false) continue;
876
+ if (!this.builder.hasTable(targetTable.table)) continue;
873
877
 
874
878
  const relatedIds = column.value as number[];
875
879
  if (relatedIds.length === 0) continue;
876
880
 
877
- const joinTable = (prop as ManyToManyRelationProp).joinTable;
881
+ const joinTable = prop.joinTable;
878
882
  const relatedEntity = EntityManager.get(prop.with);
879
883
 
880
884
  const sourceColumn = `${inflection.singularize(entity.table)}_id`;
@@ -1,4 +1,5 @@
1
- import type { Knex } from "knex";
1
+ import { type Knex } from "knex";
2
+
2
3
  import { createKnexInstance } from "../database/knex";
3
4
 
4
5
  /**
@@ -1,4 +1,5 @@
1
- import type { ViteUserConfig } from "vitest/config";
1
+ import { type ViteUserConfig } from "vitest/config";
2
+
2
3
  import { loadConfig } from "../api/config";
3
4
 
4
5
  type VitestConfig = ViteUserConfig["test"];
@@ -1,5 +1,6 @@
1
1
  import { describe, expect, test } from "vitest";
2
2
  import { z } from "zod";
3
+
3
4
  import { EntityJsonSchema, isSearchTextJsonSourceZodType, TemplateOptions } from "../types";
4
5
 
5
6
  function createBaseEntity() {
@@ -1,8 +1,9 @@
1
- import type { FastifyReply, FastifyRequest } from "fastify";
1
+ import { type FastifyReply, type FastifyRequest } from "fastify";
2
2
  import { z } from "zod";
3
- import type { ApiDecoratorOptions, Context } from "../api";
4
- import type { GuardKey } from "./../api/decorators";
5
- import type { CacheControlHandler } from "../cache-control/types";
3
+
4
+ import { type ApiDecoratorOptions, type Context } from "../api";
5
+ import { type CacheControlHandler } from "../cache-control/types";
6
+ import { type GuardKey } from "./../api/decorators";
6
7
 
7
8
  /*
8
9
  Utility Types
@@ -10,7 +11,7 @@ import type { CacheControlHandler } from "../cache-control/types";
10
11
  export function zArrayable<T extends z.ZodTypeAny>(shape: T): z.ZodUnion<[T, z.ZodArray<T>]> {
11
12
  return z.union([shape, shape.array()]);
12
13
  }
13
- // biome-ignore lint/suspicious/noExplicitAny: any is used to make the type distributive
14
+ // oxlint-disable-next-line @typescript-eslint/no-explicit-any -- any is used to make the type distributive
14
15
  export type DistributiveOmit<T, K extends keyof any> = T extends any ? Omit<T, K> : never;
15
16
 
16
17
  /*
@@ -296,7 +297,6 @@ export type EntityProp =
296
297
  | NumberArrayProp
297
298
  | NumericProp
298
299
  | NumericArrayProp
299
- | NumericProp
300
300
  | BooleanProp
301
301
  | BooleanArrayProp
302
302
  | DateProp
@@ -1750,9 +1750,9 @@ export type RelationNode = {
1750
1750
  related: Set<string>;
1751
1751
  };
1752
1752
 
1753
- // biome-ignore lint/suspicious/noEmptyInterface: sonamu.generated.sso 에서 확장을 위해 준비된 빈 인터페이스
1753
+ // oxlint-disable-next-line @typescript-eslint/no-empty-interface -- sonamu.generated.sso 에서 확장을 위해 준비된 빈 인터페이스
1754
1754
  export interface DatabaseSchemaExtend {}
1755
- // biome-ignore lint/suspicious/noEmptyInterface: sonamu.generated.sso 에서 확장을 위해 준비된 빈 인터페이스
1755
+ // oxlint-disable-next-line @typescript-eslint/no-empty-interface -- sonamu.generated.sso 에서 확장을 위해 준비된 빈 인터페이스
1756
1756
  export interface DatabaseForeignKeys {}
1757
1757
  export type ManyToManyBaseSchema<
1758
1758
  FromIdKey extends string,
@@ -1,8 +1,8 @@
1
- /** biome-ignore-all lint/correctness/noUnusedImports: d.ts */
2
- /** biome-ignore-all lint/suspicious/noExplicitAny: d.ts */
3
- /** biome-ignore-all lint/correctness/noUnusedVariables: d.ts */
1
+ /* oxlint-disable @typescript-eslint/no-unused-vars */ // d.ts
2
+ /* oxlint-disable @typescript-eslint/no-explicit-any */ // d.ts
3
+ /* oxlint-disable @typescript-eslint/no-unused-vars */ // d.ts
4
4
 
5
- import type { Knex } from "knex";
5
+ import { type Knex } from "knex";
6
6
 
7
7
  declare module "knex" {
8
8
  namespace Knex {
package/src/ui/ai-api.ts CHANGED
@@ -1,8 +1,10 @@
1
- import { convertToModelMessages, type UIMessage } from "ai";
2
- import type { FastifyInstance } from "fastify";
1
+ import { convertToModelMessages } from "ai";
2
+ import { type UIMessage } from "ai";
3
+ import { type FastifyInstance } from "fastify";
4
+
3
5
  import { SD } from "../dict/sd";
4
6
  import { BadRequestException } from "../exceptions/so-exceptions";
5
- import type { FixtureRecord } from "../types/types";
7
+ import { type FixtureRecord } from "../types/types";
6
8
  import { aiClient } from "./ai-client";
7
9
 
8
10
  export async function setAiApi(server: FastifyInstance) {
@@ -1,19 +1,20 @@
1
- /** biome-ignore-all lint/suspicious/noExplicitAny: AI SDK의 타입이 명확하지 않아 any를 허용함 */
2
- import type { LanguageModel, ModelMessage, StreamTextResult } from "ai";
3
1
  import assert from "assert";
4
2
  import fs from "fs";
5
3
  import path from "path";
4
+
5
+ /* oxlint-disable @typescript-eslint/no-explicit-any */ // AI SDK의 타입이 명확하지 않아 any를 허용함
6
+ import { type LanguageModel, type ModelMessage, type StreamTextResult } from "ai";
6
7
  import { z } from "zod";
7
- import { Sonamu } from "../api";
8
+
9
+ import { Sonamu } from "../api/sonamu";
8
10
  import { EntityManager } from "../entity/entity-manager";
9
11
  import {
10
- type EntityProp,
11
- type FixtureRecord,
12
12
  getEnumDefValues,
13
13
  isInternalSubsetField,
14
14
  normalizeSubsetField,
15
15
  TemplateOptions,
16
16
  } from "../types/types";
17
+ import { type EntityProp, type FixtureRecord } from "../types/types";
17
18
  import { nonNullable } from "../utils/utils";
18
19
 
19
20
  type ValidationError = {
package/src/ui/api.ts CHANGED
@@ -1,30 +1,35 @@
1
1
  import { execSync } from "child_process";
2
- import type { FastifyInstance } from "fastify";
3
2
  import fs from "fs";
4
- import inflection from "inflection";
5
- import type { AddressInfo } from "net";
6
3
  import path from "path";
4
+
5
+ import { type FastifyInstance } from "fastify";
6
+ import inflection from "inflection";
7
7
  import { range } from "radashi";
8
+
8
9
  import { Sonamu } from "../api/sonamu";
9
- import { DB, type SonamuDBConfig } from "../database/db";
10
+ import { DB } from "../database/db";
11
+ import { type SonamuDBConfig } from "../database/db";
10
12
  import { createKnexInstance } from "../database/knex";
11
13
  import { SD } from "../dict/sd";
12
14
  import { sonamuDictionary } from "../dict/sonamu-dictionary";
13
- import type { Entity } from "../entity/entity";
15
+ import { type Entity } from "../entity/entity";
14
16
  import { EntityManager } from "../entity/entity-manager";
15
17
  import {
16
18
  BadRequestException,
17
19
  isSoException,
18
20
  ServiceUnavailableException,
19
21
  } from "../exceptions/so-exceptions";
20
- import { type MigrationResult, Migrator } from "../migration/migrator";
21
- import { SlackConfirm, type SlackConfirmPendingResult } from "../migration/slack-confirm";
22
+ import { Migrator } from "../migration/migrator";
23
+ import { type MigrationResult } from "../migration/migrator";
24
+ import { SlackConfirm } from "../migration/slack-confirm";
25
+ import { type SlackConfirmPendingResult } from "../migration/slack-confirm";
22
26
  import { TemplateManager } from "../template/template-manager";
23
27
  import { DataExplorer } from "../testing/data-explorer";
24
28
  import { FixtureGenerator } from "../testing/fixture-generator";
25
- import { type DuplicateCheckOptions, FixtureManager } from "../testing/fixture-manager";
29
+ import { FixtureManager } from "../testing/fixture-manager";
30
+ import { type DuplicateCheckOptions } from "../testing/fixture-manager";
31
+ import { BUILT_IN_TYPE_IDS, TemplateKey } from "../types/types";
26
32
  import {
27
- BUILT_IN_TYPE_IDS,
28
33
  type Cone,
29
34
  type EntityIndex,
30
35
  type EntityProp,
@@ -33,11 +38,10 @@ import {
33
38
  type FixtureSearchOptions,
34
39
  type FlattenSubsetRow,
35
40
  type PathAndCode,
36
- TemplateKey,
37
41
  } from "../types/types";
38
42
  import { nonNullable } from "../utils/utils";
39
43
  import { setAiApi } from "./ai-api";
40
- import type { CddAddRuleRequest } from "./cdd-service";
44
+ import { type CddAddRuleRequest } from "./cdd-service";
41
45
  import {
42
46
  addRule,
43
47
  editContent,
@@ -522,16 +526,14 @@ export async function sonamuUIApiPlugin(fastify: FastifyInstance) {
522
526
  throw new Error(`이미 존재하는 enumId입니다: ${newEnumId}`);
523
527
  }
524
528
 
525
- entity.enumLabels[newEnumId] = {
526
- ...(newEnumId.endsWith("Status")
527
- ? {
528
- active: "노출",
529
- hidden: "숨김",
530
- }
531
- : {
532
- "": "",
533
- }),
534
- };
529
+ entity.enumLabels[newEnumId] = newEnumId.endsWith("Status")
530
+ ? {
531
+ active: "노출",
532
+ hidden: "숨김",
533
+ }
534
+ : {
535
+ "": "",
536
+ };
535
537
  await entity.save();
536
538
 
537
539
  return 1;
@@ -752,7 +754,7 @@ export async function sonamuUIApiPlugin(fastify: FastifyInstance) {
752
754
  const pendingMigrations = [
753
755
  ...new Set(
754
756
  conns
755
- .filter((conn) => targets.includes(conn.connKey as keyof SonamuDBConfig))
757
+ .filter((conn) => targets.includes(conn.connKey))
756
758
  .flatMap((conn) => conn.pending),
757
759
  ),
758
760
  ];
@@ -1192,7 +1194,7 @@ export async function sonamuUIApiPlugin(fastify: FastifyInstance) {
1192
1194
  */
1193
1195
  server.get("/api/sonamu/health", async (request) => {
1194
1196
  const address = request.server.server.address();
1195
- const port = address && typeof address === "object" ? (address as AddressInfo).port : 0;
1197
+ const port = address && typeof address === "object" ? address.port : 0;
1196
1198
 
1197
1199
  return {
1198
1200
  ok: true,