sonamu 0.10.11 → 0.10.13

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 (519) hide show
  1. package/dist/ai/agents/agent.d.ts +1 -1
  2. package/dist/ai/agents/agent.d.ts.map +1 -1
  3. package/dist/ai/agents/agent.js +5 -6
  4. package/dist/ai/agents/types.d.ts +1 -1
  5. package/dist/ai/agents/types.d.ts.map +1 -1
  6. package/dist/ai/providers/rtzr/api.js +18 -18
  7. package/dist/ai/providers/rtzr/error.d.ts.map +1 -1
  8. package/dist/ai/providers/rtzr/error.js +17 -15
  9. package/dist/ai/providers/rtzr/model.d.ts.map +1 -1
  10. package/dist/ai/providers/rtzr/model.js +3 -2
  11. package/dist/ai/providers/rtzr/options.d.ts.map +1 -1
  12. package/dist/ai/providers/rtzr/options.js +16 -16
  13. package/dist/ai/providers/rtzr/provider.d.ts.map +1 -1
  14. package/dist/ai/providers/rtzr/provider.js +9 -9
  15. package/dist/ai/providers/rtzr/utils.d.ts.map +1 -1
  16. package/dist/ai/providers/rtzr/utils.js +1 -1
  17. package/dist/api/caster.d.ts.map +1 -1
  18. package/dist/api/caster.js +17 -17
  19. package/dist/api/code-converters.d.ts +4 -2
  20. package/dist/api/code-converters.d.ts.map +1 -1
  21. package/dist/api/code-converters.js +100 -19
  22. package/dist/api/config.d.ts +16 -1
  23. package/dist/api/config.d.ts.map +1 -1
  24. package/dist/api/config.js +28 -21
  25. package/dist/api/context.d.ts +2 -2
  26. package/dist/api/context.d.ts.map +1 -1
  27. package/dist/api/context.js +1 -1
  28. package/dist/api/decorators.d.ts.map +1 -1
  29. package/dist/api/decorators.js +18 -11
  30. package/dist/api/http-validator.d.ts +36 -0
  31. package/dist/api/http-validator.d.ts.map +1 -0
  32. package/dist/api/http-validator.js +72 -0
  33. package/dist/api/index.js +6 -4
  34. package/dist/api/sonamu.d.ts +59 -20
  35. package/dist/api/sonamu.d.ts.map +1 -1
  36. package/dist/api/sonamu.js +250 -106
  37. package/dist/api/websocket-helpers.d.ts +7 -5
  38. package/dist/api/websocket-helpers.d.ts.map +1 -1
  39. package/dist/api/websocket-helpers.js +6 -6
  40. package/dist/auth/audit-log/builders.d.ts.map +1 -1
  41. package/dist/auth/audit-log/builders.js +1 -1
  42. package/dist/auth/audit-log/client-ip.d.ts +1 -1
  43. package/dist/auth/audit-log/client-ip.d.ts.map +1 -1
  44. package/dist/auth/audit-log/client-ip.js +4 -2
  45. package/dist/auth/audit-log/events.d.ts +5 -1
  46. package/dist/auth/audit-log/events.d.ts.map +1 -1
  47. package/dist/auth/audit-log/events.js +1 -1
  48. package/dist/auth/audit-log/plugin.d.ts +0 -8
  49. package/dist/auth/audit-log/plugin.d.ts.map +1 -1
  50. package/dist/auth/audit-log/plugin.js +48 -52
  51. package/dist/auth/audit-log-ingestor.d.ts.map +1 -1
  52. package/dist/auth/audit-log-ingestor.js +16 -12
  53. package/dist/auth/auth-generator.d.ts.map +1 -1
  54. package/dist/auth/auth-generator.js +1 -1
  55. package/dist/auth/better-auth-request.d.ts.map +1 -1
  56. package/dist/auth/better-auth-request.js +6 -5
  57. package/dist/auth/knex-adapter.js +1 -1
  58. package/dist/auth/plugins/entity-definitions/index.d.ts +13 -1
  59. package/dist/auth/plugins/entity-definitions/index.d.ts.map +1 -1
  60. package/dist/auth/plugins/entity-definitions/index.js +1 -1
  61. package/dist/auth/plugins/wrappers/admin.d.ts +1 -1
  62. package/dist/bin/build-config.d.ts +25 -0
  63. package/dist/bin/build-config.d.ts.map +1 -1
  64. package/dist/bin/build-config.js +105 -2
  65. package/dist/bin/cli.js +133 -29
  66. package/dist/bin/compiler-policy.d.ts +3 -0
  67. package/dist/bin/compiler-policy.d.ts.map +1 -0
  68. package/dist/bin/compiler-policy.js +24 -0
  69. package/dist/bin/fixture.d.ts.map +1 -1
  70. package/dist/bin/fixture.js +5 -3
  71. package/dist/bin/test-command.d.ts +22 -1
  72. package/dist/bin/test-command.d.ts.map +1 -1
  73. package/dist/bin/test-command.js +18 -10
  74. package/dist/bin/ts-loader-registration.d.ts +7 -1
  75. package/dist/bin/ts-loader-registration.d.ts.map +1 -1
  76. package/dist/bin/ts-loader-registration.js +13 -4
  77. package/dist/cache/decorator.d.ts.map +1 -1
  78. package/dist/cache/decorator.js +11 -4
  79. package/dist/compress/compress.d.ts.map +1 -1
  80. package/dist/compress/compress.js +1 -1
  81. package/dist/cone/cone-generator.d.ts +14 -1
  82. package/dist/cone/cone-generator.d.ts.map +1 -1
  83. package/dist/cone/cone-generator.js +13 -9
  84. package/dist/database/_batch_update.js +1 -1
  85. package/dist/database/base-model.d.ts +22 -10
  86. package/dist/database/base-model.d.ts.map +1 -1
  87. package/dist/database/base-model.js +26 -16
  88. package/dist/database/base-model.types.d.ts +15 -3
  89. package/dist/database/base-model.types.d.ts.map +1 -1
  90. package/dist/database/db.d.ts +12 -2
  91. package/dist/database/db.d.ts.map +1 -1
  92. package/dist/database/db.js +10 -7
  93. package/dist/database/knex.d.ts.map +1 -1
  94. package/dist/database/knex.js +17 -14
  95. package/dist/database/puri.d.ts +11 -9
  96. package/dist/database/puri.d.ts.map +1 -1
  97. package/dist/database/puri.js +93 -79
  98. package/dist/database/puri.types.d.ts +21 -21
  99. package/dist/database/puri.types.d.ts.map +1 -1
  100. package/dist/database/puri.types.js +1 -1
  101. package/dist/database/upsert-builder.d.ts +12 -10
  102. package/dist/database/upsert-builder.d.ts.map +1 -1
  103. package/dist/database/upsert-builder.js +20 -12
  104. package/dist/dict/sd.d.ts.map +1 -1
  105. package/dist/dict/sd.js +1 -1
  106. package/dist/dict/sonamu-dictionary.d.ts.map +1 -1
  107. package/dist/dict/sonamu-dictionary.js +1 -1
  108. package/dist/dict/utils.d.ts.map +1 -1
  109. package/dist/dict/utils.js +7 -2
  110. package/dist/entity/entity-manager.d.ts +13 -4
  111. package/dist/entity/entity-manager.d.ts.map +1 -1
  112. package/dist/entity/entity-manager.js +19 -11
  113. package/dist/entity/entity-template-cone.d.ts +73 -5
  114. package/dist/entity/entity-template-cone.d.ts.map +1 -1
  115. package/dist/entity/entity-template-cone.js +4 -2
  116. package/dist/entity/entity.d.ts +6 -2
  117. package/dist/entity/entity.d.ts.map +1 -1
  118. package/dist/entity/entity.js +30 -28
  119. package/dist/env.d.ts +3 -1
  120. package/dist/env.d.ts.map +1 -1
  121. package/dist/env.js +1 -1
  122. package/dist/exceptions/error-handler.d.ts.map +1 -1
  123. package/dist/exceptions/error-handler.js +7 -2
  124. package/dist/exceptions/so-exceptions.d.ts +24 -20
  125. package/dist/exceptions/so-exceptions.d.ts.map +1 -1
  126. package/dist/exceptions/so-exceptions.js +4 -2
  127. package/dist/filter/utils.d.ts +7 -2
  128. package/dist/filter/utils.d.ts.map +1 -1
  129. package/dist/filter/utils.js +8 -6
  130. package/dist/index.d.ts +3 -0
  131. package/dist/index.d.ts.map +1 -1
  132. package/dist/index.js +13 -7
  133. package/dist/logger/configure.d.ts.map +1 -1
  134. package/dist/logger/configure.js +10 -10
  135. package/dist/migration/code-generation.d.ts.map +1 -1
  136. package/dist/migration/code-generation.js +50 -46
  137. package/dist/migration/index-where-predicate.d.ts.map +1 -1
  138. package/dist/migration/index-where-predicate.js +22 -8
  139. package/dist/migration/migration-set.d.ts.map +1 -1
  140. package/dist/migration/migration-set.js +1 -1
  141. package/dist/migration/migrator.d.ts +61 -36
  142. package/dist/migration/migrator.d.ts.map +1 -1
  143. package/dist/migration/migrator.js +276 -167
  144. package/dist/migration/postgresql-schema-reader.d.ts.map +1 -1
  145. package/dist/migration/postgresql-schema-reader.js +51 -36
  146. package/dist/migration/slack-confirm.d.ts.map +1 -1
  147. package/dist/migration/slack-confirm.js +1 -1
  148. package/dist/migration/types.d.ts +54 -0
  149. package/dist/migration/types.d.ts.map +1 -1
  150. package/dist/naite/naite-reporter.js +2 -2
  151. package/dist/naite/naite.d.ts +74 -15
  152. package/dist/naite/naite.d.ts.map +1 -1
  153. package/dist/naite/naite.js +5 -19
  154. package/dist/runtime-type.d.ts +6 -0
  155. package/dist/runtime-type.d.ts.map +1 -0
  156. package/dist/runtime-type.js +26 -0
  157. package/dist/ssr/hmr-opt-out.d.ts +26 -0
  158. package/dist/ssr/hmr-opt-out.d.ts.map +1 -0
  159. package/dist/ssr/hmr-opt-out.js +59 -0
  160. package/dist/ssr/renderer.d.ts.map +1 -1
  161. package/dist/ssr/renderer.js +4 -1
  162. package/dist/storage/base-file.js +14 -14
  163. package/dist/storage/buffered-file.d.ts +2 -2
  164. package/dist/storage/buffered-file.d.ts.map +1 -1
  165. package/dist/storage/buffered-file.js +12 -12
  166. package/dist/storage/s3-driver.d.ts.map +1 -1
  167. package/dist/storage/s3-driver.js +1 -1
  168. package/dist/storage/uploaded-file.d.ts +2 -2
  169. package/dist/storage/uploaded-file.d.ts.map +1 -1
  170. package/dist/storage/uploaded-file.js +8 -8
  171. package/dist/stream/sse.js +11 -11
  172. package/dist/stream/ws-core.d.ts +1 -1
  173. package/dist/stream/ws-core.d.ts.map +1 -1
  174. package/dist/stream/ws-delivery.d.ts +1 -1
  175. package/dist/stream/ws-delivery.d.ts.map +1 -1
  176. package/dist/stream/ws-delivery.js +6 -4
  177. package/dist/stream/ws-local-connection-store.d.ts.map +1 -1
  178. package/dist/stream/ws-local-connection-store.js +4 -2
  179. package/dist/stream/ws-presence-store.js +1 -1
  180. package/dist/stream/ws-registry.d.ts +4 -4
  181. package/dist/stream/ws-registry.d.ts.map +1 -1
  182. package/dist/stream/ws-registry.js +4 -2
  183. package/dist/stream/ws-telemetry.d.ts +16 -12
  184. package/dist/stream/ws-telemetry.d.ts.map +1 -1
  185. package/dist/stream/ws-telemetry.js +22 -18
  186. package/dist/stream/ws.d.ts +18 -12
  187. package/dist/stream/ws.d.ts.map +1 -1
  188. package/dist/stream/ws.js +26 -22
  189. package/dist/syncer/api-parser.js +1 -1
  190. package/dist/syncer/checksum.d.ts.map +1 -1
  191. package/dist/syncer/checksum.js +7 -8
  192. package/dist/syncer/code-generator.d.ts.map +1 -1
  193. package/dist/syncer/code-generator.js +13 -14
  194. package/dist/syncer/entity-operations.d.ts.map +1 -1
  195. package/dist/syncer/entity-operations.js +5 -6
  196. package/dist/syncer/file-copy.d.ts +5 -0
  197. package/dist/syncer/file-copy.d.ts.map +1 -0
  198. package/dist/syncer/file-copy.js +36 -0
  199. package/dist/syncer/file-patterns.d.ts +1 -0
  200. package/dist/syncer/file-patterns.d.ts.map +1 -1
  201. package/dist/syncer/file-patterns.js +5 -2
  202. package/dist/syncer/file-tracking.d.ts.map +1 -1
  203. package/dist/syncer/file-tracking.js +5 -4
  204. package/dist/syncer/filesystem-dependencies.d.ts +15 -0
  205. package/dist/syncer/filesystem-dependencies.d.ts.map +1 -0
  206. package/dist/syncer/filesystem-dependencies.js +53 -0
  207. package/dist/syncer/module-loader.d.ts +1 -1
  208. package/dist/syncer/module-loader.d.ts.map +1 -1
  209. package/dist/syncer/module-loader.js +6 -4
  210. package/dist/syncer/syncer-actions.d.ts +4 -0
  211. package/dist/syncer/syncer-actions.d.ts.map +1 -1
  212. package/dist/syncer/syncer-actions.js +34 -17
  213. package/dist/syncer/syncer.d.ts +17 -6
  214. package/dist/syncer/syncer.d.ts.map +1 -1
  215. package/dist/syncer/syncer.js +71 -29
  216. package/dist/syncer/watcher.d.ts.map +1 -1
  217. package/dist/syncer/watcher.js +3 -3
  218. package/dist/tasks/decorator.d.ts +6 -6
  219. package/dist/tasks/decorator.d.ts.map +1 -1
  220. package/dist/tasks/decorator.js +4 -4
  221. package/dist/tasks/step-wrapper.d.ts +6 -4
  222. package/dist/tasks/step-wrapper.d.ts.map +1 -1
  223. package/dist/tasks/step-wrapper.js +5 -5
  224. package/dist/tasks/workflow-manager.d.ts.map +1 -1
  225. package/dist/tasks/workflow-manager.js +13 -7
  226. package/dist/template/entity-converter.d.ts +1 -1
  227. package/dist/template/entity-converter.d.ts.map +1 -1
  228. package/dist/template/entity-converter.js +2 -2
  229. package/dist/template/helpers.d.ts +8 -6
  230. package/dist/template/helpers.d.ts.map +1 -1
  231. package/dist/template/helpers.js +1 -1
  232. package/dist/template/implementations/generated.template.d.ts.map +1 -1
  233. package/dist/template/implementations/generated.template.js +4 -4
  234. package/dist/template/implementations/generated_http.template.d.ts +7 -4
  235. package/dist/template/implementations/generated_http.template.d.ts.map +1 -1
  236. package/dist/template/implementations/generated_http.template.js +21 -21
  237. package/dist/template/implementations/generated_sso.template.d.ts.map +1 -1
  238. package/dist/template/implementations/generated_sso.template.js +6 -3
  239. package/dist/template/implementations/http_validators.template.d.ts +18 -0
  240. package/dist/template/implementations/http_validators.template.d.ts.map +1 -0
  241. package/dist/template/implementations/http_validators.template.js +127 -0
  242. package/dist/template/implementations/model.template.d.ts.map +1 -1
  243. package/dist/template/implementations/model.template.js +1 -1
  244. package/dist/template/implementations/queries.template.js +1 -1
  245. package/dist/template/implementations/sd.template.d.ts.map +1 -1
  246. package/dist/template/implementations/sd.template.js +79 -39
  247. package/dist/template/implementations/services.template.d.ts.map +1 -1
  248. package/dist/template/implementations/services.template.js +6 -4
  249. package/dist/template/implementations/view_form.template.d.ts +6 -1
  250. package/dist/template/implementations/view_form.template.d.ts.map +1 -1
  251. package/dist/template/implementations/view_form.template.js +23 -15
  252. package/dist/template/implementations/view_list.template.d.ts.map +1 -1
  253. package/dist/template/implementations/view_list.template.js +11 -6
  254. package/dist/template/template-manager.d.ts.map +1 -1
  255. package/dist/template/template-manager.js +9 -7
  256. package/dist/template/template-types.d.ts +12 -5
  257. package/dist/template/template-types.d.ts.map +1 -1
  258. package/dist/template/template-types.js +1 -1
  259. package/dist/template/template.d.ts +2 -2
  260. package/dist/template/template.d.ts.map +1 -1
  261. package/dist/template/template.js +6 -4
  262. package/dist/template/zod-converter.d.ts +0 -19
  263. package/dist/template/zod-converter.d.ts.map +1 -1
  264. package/dist/template/zod-converter.js +100 -84
  265. package/dist/testing/_relation-graph.d.ts.map +1 -1
  266. package/dist/testing/_relation-graph.js +2 -1
  267. package/dist/testing/bootstrap.d.ts.map +1 -1
  268. package/dist/testing/bootstrap.js +9 -6
  269. package/dist/testing/data-explorer.d.ts +32 -7
  270. package/dist/testing/data-explorer.d.ts.map +1 -1
  271. package/dist/testing/data-explorer.js +77 -31
  272. package/dist/testing/dev-test-routes.d.ts +8 -1
  273. package/dist/testing/dev-test-routes.d.ts.map +1 -1
  274. package/dist/testing/dev-test-routes.js +125 -108
  275. package/dist/testing/dev-vitest-manager.d.ts +54 -8
  276. package/dist/testing/dev-vitest-manager.d.ts.map +1 -1
  277. package/dist/testing/dev-vitest-manager.js +24 -9
  278. package/dist/testing/faker-mappings.d.ts +412 -1
  279. package/dist/testing/faker-mappings.d.ts.map +1 -1
  280. package/dist/testing/faker-mappings.js +1 -1
  281. package/dist/testing/filesystem.d.ts +2 -0
  282. package/dist/testing/filesystem.d.ts.map +1 -0
  283. package/dist/testing/filesystem.js +7 -0
  284. package/dist/testing/fixture-generator.d.ts +25 -8
  285. package/dist/testing/fixture-generator.d.ts.map +1 -1
  286. package/dist/testing/fixture-generator.js +132 -73
  287. package/dist/testing/fixture-loader.d.ts +3 -1
  288. package/dist/testing/fixture-loader.d.ts.map +1 -1
  289. package/dist/testing/fixture-loader.js +1 -20
  290. package/dist/testing/fixture-manager.d.ts +8 -7
  291. package/dist/testing/fixture-manager.d.ts.map +1 -1
  292. package/dist/testing/fixture-manager.js +91 -59
  293. package/dist/testing/global-setup.d.ts.map +1 -1
  294. package/dist/testing/global-setup.js +5 -2
  295. package/dist/testing/index.d.ts +2 -0
  296. package/dist/testing/index.d.ts.map +1 -1
  297. package/dist/testing/index.js +6 -3
  298. package/dist/types/types.d.ts +101 -99
  299. package/dist/types/types.d.ts.map +1 -1
  300. package/dist/types/types.js +234 -225
  301. package/dist/ui/ai-api.d.ts.map +1 -1
  302. package/dist/ui/ai-api.js +1 -1
  303. package/dist/ui/ai-client.d.ts.map +1 -1
  304. package/dist/ui/ai-client.js +28 -18
  305. package/dist/ui/api.d.ts.map +1 -1
  306. package/dist/ui/api.js +146 -210
  307. package/dist/ui/async-route.d.ts +3 -0
  308. package/dist/ui/async-route.d.ts.map +1 -0
  309. package/dist/ui/async-route.js +12 -0
  310. package/dist/ui/cdd-service.d.ts +9 -7
  311. package/dist/ui/cdd-service.d.ts.map +1 -1
  312. package/dist/ui/cdd-service.js +7 -5
  313. package/dist/ui/migrations-api.d.ts +3 -0
  314. package/dist/ui/migrations-api.d.ts.map +1 -0
  315. package/dist/ui/migrations-api.js +215 -0
  316. package/dist/ui-web/assets/index-D3QNH-Dv.css +1 -0
  317. package/dist/ui-web/assets/index-DV1AAq6W.js +178 -0
  318. package/dist/ui-web/index.html +2 -2
  319. package/dist/utils/formatter.d.ts.map +1 -1
  320. package/dist/utils/formatter.js +7 -5
  321. package/dist/utils/fs-utils.d.ts +3 -3
  322. package/dist/utils/fs-utils.d.ts.map +1 -1
  323. package/dist/utils/fs-utils.js +6 -6
  324. package/dist/utils/model.d.ts +3 -5
  325. package/dist/utils/model.d.ts.map +1 -1
  326. package/dist/utils/model.js +1 -1
  327. package/dist/utils/object-utils.d.ts +1 -1
  328. package/dist/utils/object-utils.d.ts.map +1 -1
  329. package/dist/utils/object-utils.js +17 -16
  330. package/dist/utils/process-utils.d.ts.map +1 -1
  331. package/dist/utils/process-utils.js +4 -2
  332. package/dist/utils/runtime-value.d.ts +13 -0
  333. package/dist/utils/runtime-value.d.ts.map +1 -0
  334. package/dist/utils/runtime-value.js +40 -0
  335. package/dist/utils/sql-parser.d.ts +8 -1
  336. package/dist/utils/sql-parser.d.ts.map +1 -1
  337. package/dist/utils/sql-parser.js +6 -3
  338. package/dist/utils/type-utils.d.ts.map +1 -1
  339. package/dist/utils/type-utils.js +10 -8
  340. package/dist/utils/utils.d.ts +2 -2
  341. package/dist/utils/utils.d.ts.map +1 -1
  342. package/dist/utils/utils.js +11 -8
  343. package/dist/utils/zod-error.d.ts.map +1 -1
  344. package/dist/utils/zod-error.js +7 -4
  345. package/dist/vector/chunking.d.ts.map +1 -1
  346. package/dist/vector/chunking.js +1 -1
  347. package/dist/vector/embedding.d.ts.map +1 -1
  348. package/dist/vector/embedding.js +1 -1
  349. package/dist/vector/types.d.ts +3 -2
  350. package/dist/vector/types.d.ts.map +1 -1
  351. package/package.json +11 -7
  352. package/src/ai/agents/agent.ts +5 -5
  353. package/src/ai/agents/types.ts +1 -1
  354. package/src/ai/providers/rtzr/__tests__/model.test.ts +2 -2
  355. package/src/ai/providers/rtzr/error.ts +5 -3
  356. package/src/ai/providers/rtzr/model.ts +3 -2
  357. package/src/ai/providers/rtzr/options.ts +10 -5
  358. package/src/ai/providers/rtzr/provider.ts +10 -10
  359. package/src/ai/providers/rtzr/utils.ts +3 -1
  360. package/src/api/__tests__/config.test.ts +11 -21
  361. package/src/api/__tests__/sonamu.http-validator.test.ts +512 -0
  362. package/src/api/__tests__/sonamu.websocket.test.ts +51 -41
  363. package/src/api/__tests__/zod-compiler-policy.test.ts +95 -0
  364. package/src/api/caster.ts +6 -8
  365. package/src/api/code-converters.ts +136 -36
  366. package/src/api/config.ts +62 -4
  367. package/src/api/context.ts +3 -3
  368. package/src/api/decorators.ts +28 -17
  369. package/src/api/http-validator.ts +149 -0
  370. package/src/api/sonamu.ts +459 -152
  371. package/src/api/websocket-helpers.ts +24 -17
  372. package/src/auth/audit-log/builders.ts +3 -2
  373. package/src/auth/audit-log/client-ip.ts +4 -2
  374. package/src/auth/audit-log/events.ts +15 -1
  375. package/src/auth/audit-log/plugin.ts +129 -200
  376. package/src/auth/audit-log-ingestor.ts +19 -15
  377. package/src/auth/auth-generator.ts +10 -5
  378. package/src/auth/better-auth-request.ts +4 -3
  379. package/src/auth/knex-adapter.ts +8 -2
  380. package/src/auth/plugins/entity-definitions/index.ts +6 -5
  381. package/src/bin/__tests__/http-validator-benchmark.test.ts +94 -0
  382. package/src/bin/__tests__/test-command.test.ts +9 -15
  383. package/src/bin/__tests__/ts-loader-register.test.ts +15 -17
  384. package/src/bin/__tests__/zod-compiler-build.test.ts +307 -0
  385. package/src/bin/build-config.ts +167 -0
  386. package/src/bin/cli.ts +155 -38
  387. package/src/bin/compiler-policy.ts +35 -0
  388. package/src/bin/fixture.ts +14 -3
  389. package/src/bin/test-command.ts +74 -29
  390. package/src/bin/ts-loader-registration.ts +22 -4
  391. package/src/cache/decorator.ts +10 -3
  392. package/src/compress/compress.ts +17 -4
  393. package/src/cone/cone-generator.ts +34 -6
  394. package/src/database/__tests__/db.test.ts +1 -0
  395. package/src/database/__tests__/puri.test.ts +16 -15
  396. package/src/database/__tests__/transaction-scope.test.ts +5 -0
  397. package/src/database/_batch_update.ts +1 -0
  398. package/src/database/base-model.ts +81 -50
  399. package/src/database/base-model.types.ts +6 -6
  400. package/src/database/db.ts +29 -19
  401. package/src/database/knex.ts +30 -17
  402. package/src/database/puri-subset.test-d.ts +17 -0
  403. package/src/database/puri.ts +181 -143
  404. package/src/database/puri.types.test-d.ts +31 -1
  405. package/src/database/puri.types.ts +23 -21
  406. package/src/database/upsert-builder.ts +75 -53
  407. package/src/dict/sd.ts +15 -5
  408. package/src/dict/sonamu-dictionary.ts +6 -6
  409. package/src/dict/utils.ts +9 -1
  410. package/src/entity/entity-manager.ts +26 -9
  411. package/src/entity/entity-template-cone.ts +5 -10
  412. package/src/entity/entity.ts +50 -34
  413. package/src/env.ts +7 -3
  414. package/src/exceptions/error-handler.ts +17 -2
  415. package/src/exceptions/so-exceptions.ts +26 -20
  416. package/src/filter/utils.ts +21 -11
  417. package/src/index.ts +3 -0
  418. package/src/logger/configure.ts +26 -18
  419. package/src/migration/__tests__/migrator.test.ts +50 -57
  420. package/src/migration/code-generation.ts +132 -104
  421. package/src/migration/index-where-predicate.ts +51 -24
  422. package/src/migration/migration-set.ts +11 -5
  423. package/src/migration/migrator.ts +392 -244
  424. package/src/migration/postgresql-schema-reader.ts +52 -47
  425. package/src/migration/slack-confirm.ts +17 -15
  426. package/src/migration/types.ts +57 -0
  427. package/src/naite/naite-reporter.ts +1 -1
  428. package/src/naite/naite.ts +97 -24
  429. package/src/runtime-type.ts +34 -0
  430. package/src/ssr/hmr-opt-out.ts +78 -0
  431. package/src/ssr/renderer.ts +6 -0
  432. package/src/storage/base-file.ts +13 -13
  433. package/src/storage/buffered-file.ts +11 -11
  434. package/src/storage/s3-driver.ts +4 -1
  435. package/src/storage/uploaded-file.ts +8 -8
  436. package/src/stream/__tests__/ws-contracts.test.ts +4 -2
  437. package/src/stream/__tests__/ws-telemetry.test.ts +1 -1
  438. package/src/stream/__tests__/ws.test.ts +30 -6
  439. package/src/stream/sse.ts +12 -11
  440. package/src/stream/ws-core.ts +1 -1
  441. package/src/stream/ws-delivery.ts +16 -7
  442. package/src/stream/ws-local-connection-store.ts +2 -3
  443. package/src/stream/ws-presence-store.ts +6 -1
  444. package/src/stream/ws-registry.ts +16 -7
  445. package/src/stream/ws-telemetry.ts +66 -43
  446. package/src/stream/ws.ts +73 -39
  447. package/src/syncer/__tests__/api-parser.websocket-type-ref.test.ts +3 -2
  448. package/src/syncer/__tests__/http-validator-registry.test.ts +137 -0
  449. package/src/syncer/api-parser.ts +67 -27
  450. package/src/syncer/checksum.ts +17 -11
  451. package/src/syncer/code-generator.ts +25 -17
  452. package/src/syncer/entity-operations.ts +3 -5
  453. package/src/syncer/file-copy.ts +46 -0
  454. package/src/syncer/file-patterns.ts +11 -8
  455. package/src/syncer/file-tracking.ts +3 -4
  456. package/src/syncer/filesystem-dependencies.ts +73 -0
  457. package/src/syncer/module-loader.ts +8 -4
  458. package/src/syncer/syncer-actions.ts +56 -18
  459. package/src/syncer/syncer.ts +116 -43
  460. package/src/syncer/watcher.ts +8 -4
  461. package/src/tasks/decorator.ts +20 -12
  462. package/src/tasks/step-wrapper.ts +19 -9
  463. package/src/tasks/workflow-manager.ts +15 -9
  464. package/src/template/__tests__/http_validators.template.test.ts +160 -0
  465. package/src/template/__tests__/services.template.mutation.test.ts +24 -23
  466. package/src/template/__tests__/services.template.websocket.test.ts +21 -25
  467. package/src/template/entity-converter.ts +5 -2
  468. package/src/template/helpers.ts +8 -9
  469. package/src/template/implementations/generated.template.ts +5 -4
  470. package/src/template/implementations/generated_http.template.ts +61 -15
  471. package/src/template/implementations/generated_sso.template.ts +15 -4
  472. package/src/template/implementations/http_validators.template.ts +175 -0
  473. package/src/template/implementations/model.template.ts +3 -1
  474. package/src/template/implementations/sd.template.ts +81 -41
  475. package/src/template/implementations/services.template.ts +2 -2
  476. package/src/template/implementations/view_form.template.ts +56 -39
  477. package/src/template/implementations/view_list.template.ts +31 -23
  478. package/src/template/template-manager.ts +15 -13
  479. package/src/template/template-types.ts +13 -5
  480. package/src/template/template.ts +4 -3
  481. package/src/template/zod-converter.ts +206 -91
  482. package/src/testing/__tests__/dev-test-routes.test.ts +85 -25
  483. package/src/testing/__tests__/dev-vitest-manager.test.ts +15 -15
  484. package/src/testing/_relation-graph.ts +4 -1
  485. package/src/testing/bootstrap.ts +12 -5
  486. package/src/testing/data-explorer.ts +102 -53
  487. package/src/testing/dev-test-routes.ts +87 -50
  488. package/src/testing/dev-vitest-manager.ts +88 -32
  489. package/src/testing/faker-mappings.ts +2 -2
  490. package/src/testing/filesystem.ts +1 -0
  491. package/src/testing/fixture-generator.ts +191 -131
  492. package/src/testing/fixture-loader.ts +5 -1
  493. package/src/testing/fixture-manager.ts +129 -90
  494. package/src/testing/global-setup.ts +7 -3
  495. package/src/testing/index.ts +5 -0
  496. package/src/types/__tests__/entity-json-schema-search-text.test.ts +9 -3
  497. package/src/types/types.ts +184 -158
  498. package/src/ui/ai-api.ts +9 -7
  499. package/src/ui/ai-client.ts +61 -56
  500. package/src/ui/api.ts +726 -770
  501. package/src/ui/async-route.ts +4 -0
  502. package/src/ui/cdd-service.ts +35 -12
  503. package/src/ui/migrations-api.ts +381 -0
  504. package/src/utils/formatter.ts +7 -3
  505. package/src/utils/fs-utils.ts +5 -5
  506. package/src/utils/model.ts +4 -5
  507. package/src/utils/object-utils.ts +32 -22
  508. package/src/utils/process-utils.ts +4 -1
  509. package/src/utils/runtime-value.ts +43 -0
  510. package/src/utils/sql-parser.ts +13 -6
  511. package/src/utils/type-utils.ts +9 -7
  512. package/src/utils/utils.ts +19 -21
  513. package/src/utils/zod-error.ts +4 -2
  514. package/src/vector/chunking.ts +6 -1
  515. package/src/vector/embedding.ts +2 -1
  516. package/src/vector/types.ts +4 -2
  517. package/tsdown.api.config.ts +5 -2
  518. package/dist/ui-web/assets/index-CJf8uJYf.js +0 -176
  519. package/dist/ui-web/assets/index-GMMIVGja.css +0 -1
@@ -71,6 +71,7 @@ describe("ExtractColumnType", () => {
71
71
  type Tables = { users: MockSchema["users"] };
72
72
  type Result = ExtractColumnType<Tables, "users.id">;
73
73
 
74
+ // SAFETY: 테스트 입력은 선언된 타입 검증 시나리오에 맞게 고정됩니다.
74
75
  const result = {} as Result;
75
76
  expectTypeOf(result).toEqualTypeOf<number>();
76
77
  });
@@ -79,6 +80,7 @@ describe("ExtractColumnType", () => {
79
80
  type Tables = { users: MockSchema["users"] };
80
81
  type Result = ExtractColumnType<Tables, "users.department_id">;
81
82
 
83
+ // SAFETY: 테스트 입력은 선언된 타입 검증 시나리오에 맞게 고정됩니다.
82
84
  const result = {} as Result;
83
85
  expectTypeOf(result).toEqualTypeOf<number | null>();
84
86
  });
@@ -87,6 +89,7 @@ describe("ExtractColumnType", () => {
87
89
  type Tables = { users: MockSchema["users"] };
88
90
  type Result = ExtractColumnType<Tables, "id">;
89
91
 
92
+ // SAFETY: 테스트 입력은 선언된 타입 검증 시나리오에 맞게 고정됩니다.
90
93
  const result = {} as Result;
91
94
  expectTypeOf(result).toEqualTypeOf<number>();
92
95
  });
@@ -100,6 +103,7 @@ describe("ExtractColumnType", () => {
100
103
  };
101
104
  type Result = ExtractColumnType<Tables, "department.id">;
102
105
 
106
+ // SAFETY: 테스트 입력은 선언된 타입 검증 시나리오에 맞게 고정됩니다.
103
107
  const result = {} as Result;
104
108
  expectTypeOf(result).toEqualTypeOf<number>();
105
109
  });
@@ -113,6 +117,7 @@ describe("ExtractColumnType", () => {
113
117
  };
114
118
  type Result = ExtractColumnType<Tables, "department.id">;
115
119
 
120
+ // SAFETY: 테스트 입력은 선언된 타입 검증 시나리오에 맞게 고정됩니다.
116
121
  const result = {} as Result;
117
122
  expectTypeOf(result).toEqualTypeOf<number | null>();
118
123
  });
@@ -124,6 +129,7 @@ describe("ExtractColumnType", () => {
124
129
  };
125
130
  type Result = ExtractColumnType<Tables, "employee.salary">;
126
131
 
132
+ // SAFETY: 테스트 입력은 선언된 타입 검증 시나리오에 맞게 고정됩니다.
127
133
  const result = {} as Result;
128
134
  expectTypeOf(result).toEqualTypeOf<string | null>();
129
135
  });
@@ -138,6 +144,7 @@ describe("ExtractColumnType", () => {
138
144
  };
139
145
  type Result = ExtractColumnType<Tables, "company.id">;
140
146
 
147
+ // SAFETY: 테스트 입력은 선언된 타입 검증 시나리오에 맞게 고정됩니다.
141
148
  const result = {} as Result;
142
149
  expectTypeOf(result).toEqualTypeOf<number>();
143
150
  });
@@ -158,6 +165,7 @@ describe("ParseSelectObject", () => {
158
165
  };
159
166
  type Result = ParseSelectObject<Tables, Select>;
160
167
 
168
+ // SAFETY: 테스트 입력은 선언된 타입 검증 시나리오에 맞게 고정됩니다.
161
169
  const result = {} as Result;
162
170
  expectTypeOf(result).toEqualTypeOf<{
163
171
  id: number;
@@ -173,6 +181,7 @@ describe("ParseSelectObject", () => {
173
181
  };
174
182
  type Result = ParseSelectObject<Tables, Select>;
175
183
 
184
+ // SAFETY: 테스트 입력은 선언된 타입 검증 시나리오에 맞게 고정됩니다.
176
185
  const result = {} as Result;
177
186
  expectTypeOf(result).toEqualTypeOf<{
178
187
  id: number;
@@ -194,6 +203,7 @@ describe("ParseSelectObject", () => {
194
203
  };
195
204
  type Result = ParseSelectObject<Tables, Select>;
196
205
 
206
+ // SAFETY: 테스트 입력은 선언된 타입 검증 시나리오에 맞게 고정됩니다.
197
207
  const result = {} as Result;
198
208
  expectTypeOf(result).toEqualTypeOf<{
199
209
  id: number;
@@ -216,6 +226,7 @@ describe("ParseSelectObject", () => {
216
226
  };
217
227
  type Result = ParseSelectObject<Tables, Select>;
218
228
 
229
+ // SAFETY: 테스트 입력은 선언된 타입 검증 시나리오에 맞게 고정됩니다.
219
230
  const result = {} as Result;
220
231
  expectTypeOf(result).toEqualTypeOf<{
221
232
  id: number;
@@ -244,6 +255,7 @@ describe("ParseSelectObject", () => {
244
255
  };
245
256
  type Result = ParseSelectObject<Tables, Select>;
246
257
 
258
+ // SAFETY: 테스트 입력은 선언된 타입 검증 시나리오에 맞게 고정됩니다.
247
259
  const result = {} as Result;
248
260
  expectTypeOf(result).toEqualTypeOf<{
249
261
  id: number;
@@ -270,6 +282,7 @@ describe("ParseSelectObject", () => {
270
282
  };
271
283
  type Result = ParseSelectObject<Tables, Select>;
272
284
 
285
+ // SAFETY: 테스트 입력은 선언된 타입 검증 시나리오에 맞게 고정됩니다.
273
286
  const result = {} as Result;
274
287
  expectTypeOf(result).toEqualTypeOf<{
275
288
  id: number;
@@ -294,6 +307,7 @@ describe("ParseSelectObject", () => {
294
307
  };
295
308
  type Result = ParseSelectObject<Tables, Select>;
296
309
 
310
+ // SAFETY: 테스트 입력은 선언된 타입 검증 시나리오에 맞게 고정됩니다.
297
311
  const result = {} as Result;
298
312
  // employee 객체가 null이 아닐 때만 접근하므로, salary의 원래 nullability 유지
299
313
  expectTypeOf(result).toEqualTypeOf<{
@@ -325,6 +339,7 @@ describe("ParseSelectObject", () => {
325
339
  };
326
340
  type Result = ParseSelectObject<Tables, Select>;
327
341
 
342
+ // SAFETY: 테스트 입력은 선언된 타입 검증 시나리오에 맞게 고정됩니다.
328
343
  const result = {} as Result;
329
344
  expectTypeOf(result).toEqualTypeOf<{
330
345
  id: number;
@@ -359,6 +374,7 @@ describe("ParseSelectObject", () => {
359
374
  };
360
375
  type Result = ParseSelectObject<Tables, Select>;
361
376
 
377
+ // SAFETY: 테스트 입력은 선언된 타입 검증 시나리오에 맞게 고정됩니다.
362
378
  const result = {} as Result;
363
379
  expectTypeOf(result).toEqualTypeOf<{
364
380
  id: number;
@@ -404,6 +420,7 @@ describe("ParseSelectObject", () => {
404
420
  };
405
421
  type Result = ParseSelectObject<Tables, Select>;
406
422
 
423
+ // SAFETY: 테스트 입력은 선언된 타입 검증 시나리오에 맞게 고정됩니다.
407
424
  const result = {} as Result;
408
425
  expectTypeOf(result).toEqualTypeOf<{
409
426
  id: number;
@@ -440,6 +457,7 @@ describe("ParseSelectObject", () => {
440
457
  };
441
458
  type Result = ParseSelectObject<Tables, Select>;
442
459
 
460
+ // SAFETY: 테스트 입력은 선언된 타입 검증 시나리오에 맞게 고정됩니다.
443
461
  const result = {} as Result;
444
462
  expectTypeOf(result).toEqualTypeOf<{
445
463
  id: number;
@@ -524,7 +542,7 @@ describe("JsonColumns and JsonSupersetValue", () => {
524
542
  // @ts-expect-error undefined cannot be serialized as a JSONB containment value.
525
543
  const undefinedRoot: PreferencesValue = undefined;
526
544
 
527
- const unknownValue: unknown = { notifications: { email: true } };
545
+ const unknownValue: unknown = structuredClone({ notifications: { email: true } });
528
546
  // @ts-expect-error unknown must be narrowed before it can be used as a containment value.
529
547
  const unknownRoot: PreferencesValue = unknownValue;
530
548
 
@@ -536,6 +554,7 @@ describe("JsonColumns and JsonSupersetValue", () => {
536
554
  expectTypeOf(unknownRoot).toExtend<PreferencesValue>();
537
555
 
538
556
  type Query = Puri<MockSchema, Tables, MockSchema["users"]>;
557
+ // SAFETY: 테스트 입력은 선언된 타입 검증 시나리오에 맞게 고정됩니다.
539
558
  const query = {} as Query;
540
559
 
541
560
  expectTypeOf(
@@ -575,6 +594,7 @@ describe("JsonColumns and JsonSupersetValue", () => {
575
594
  describe("Puri locking methods", () => {
576
595
  it("forUpdate 체이닝 후 first 결과 타입을 유지한다", () => {
577
596
  type Query = Puri<MockSchema, { users: MockSchema["users"] }, MockSchema["users"]>;
597
+ // SAFETY: 테스트 입력은 선언된 타입 검증 시나리오에 맞게 고정됩니다.
578
598
  const query = {} as Query;
579
599
 
580
600
  const result = query.where("id", 1).forUpdate().first();
@@ -584,6 +604,7 @@ describe("Puri locking methods", () => {
584
604
 
585
605
  it("forShare 체이닝 후 first 결과 타입을 유지한다", () => {
586
606
  type Query = Puri<MockSchema, { users: MockSchema["users"] }, MockSchema["users"]>;
607
+ // SAFETY: 테스트 입력은 선언된 타입 검증 시나리오에 맞게 고정됩니다.
587
608
  const query = {} as Query;
588
609
 
589
610
  const result = query.where("id", 1).forShare().first();
@@ -595,6 +616,7 @@ describe("Puri locking methods", () => {
595
616
  describe("Puri orderBy methods", () => {
596
617
  it("단일 컬럼 null ordering과 체이닝 타입을 지원한다", () => {
597
618
  type Query = Puri<MockSchema, { users: MockSchema["users"] }, MockSchema["users"]>;
619
+ // SAFETY: 테스트 입력은 선언된 타입 검증 시나리오에 맞게 고정됩니다.
598
620
  const query = {} as Query;
599
621
 
600
622
  expectTypeOf(query.orderBy("id")).toEqualTypeOf<Query>();
@@ -605,6 +627,7 @@ describe("Puri orderBy methods", () => {
605
627
 
606
628
  it("여러 컬럼 orderBy item 배열을 지원한다", () => {
607
629
  type Query = Puri<MockSchema, { users: MockSchema["users"] }, MockSchema["users"]>;
630
+ // SAFETY: 테스트 입력은 선언된 타입 검증 시나리오에 맞게 고정됩니다.
608
631
  const query = {} as Query;
609
632
 
610
633
  expectTypeOf(query.orderBy(["name", "email"])).toEqualTypeOf<Query>();
@@ -620,6 +643,7 @@ describe("Puri orderBy methods", () => {
620
643
  it("select 결과 컬럼을 orderBy에 사용할 수 있다", () => {
621
644
  type Result = { post_count: number };
622
645
  type Query = Puri<MockSchema, { users: MockSchema["users"] }, Result>;
646
+ // SAFETY: 테스트 입력은 선언된 타입 검증 시나리오에 맞게 고정됩니다.
623
647
  const query = {} as Query;
624
648
 
625
649
  expectTypeOf(query.orderBy("post_count", "desc", "last")).toEqualTypeOf<Query>();
@@ -631,6 +655,7 @@ describe("Puri orderBy methods", () => {
631
655
 
632
656
  it("SqlExpression orderBy를 지원한다", () => {
633
657
  type Query = Puri<MockSchema, { users: MockSchema["users"] }, MockSchema["users"]>;
658
+ // SAFETY: 테스트 입력은 선언된 타입 검증 시나리오에 맞게 고정됩니다.
634
659
  const query = {} as Query;
635
660
  const expression = Puri.rawNumber("COUNT(*)");
636
661
 
@@ -643,6 +668,7 @@ describe("Puri orderBy methods", () => {
643
668
 
644
669
  it("잘못된 direction, nulls, column은 거부한다", () => {
645
670
  type Query = Puri<MockSchema, { users: MockSchema["users"] }, MockSchema["users"]>;
671
+ // SAFETY: 테스트 입력은 선언된 타입 검증 시나리오에 맞게 고정됩니다.
646
672
  const query = {} as Query;
647
673
 
648
674
  // @ts-expect-error direction은 asc/desc만 허용한다.
@@ -665,6 +691,7 @@ describe("Puri orderBy methods", () => {
665
691
  describe("Puri ensureJoin methods", () => {
666
692
  it("ensureJoin 이후 alias 컬럼을 타입 안전하게 사용할 수 있다", () => {
667
693
  type Query = Puri<MockSchema, { users: MockSchema["users"] }, MockSchema["users"]>;
694
+ // SAFETY: 테스트 입력은 선언된 타입 검증 시나리오에 맞게 고정됩니다.
668
695
  const query = {} as Query;
669
696
 
670
697
  const joined = query.ensureJoin(
@@ -681,6 +708,7 @@ describe("Puri ensureJoin methods", () => {
681
708
 
682
709
  it("ensureLeftJoin은 nullable FK의 객체 타입을 유지한다", () => {
683
710
  type Query = Puri<MockSchema, { users: MockSchema["users"] }, MockSchema["users"]>;
711
+ // SAFETY: 테스트 입력은 선언된 타입 검증 시나리오에 맞게 고정됩니다.
684
712
  const query = {} as Query;
685
713
 
686
714
  const result = query
@@ -695,6 +723,7 @@ describe("Puri ensureJoin methods", () => {
695
723
 
696
724
  it("ensureLeftJoin은 non-null FK의 객체를 non-null로 추론한다", () => {
697
725
  type Query = Puri<MockSchema, { employees: MockSchema["employees"] }, MockSchema["employees"]>;
726
+ // SAFETY: 테스트 입력은 선언된 타입 검증 시나리오에 맞게 고정됩니다.
698
727
  const query = {} as Query;
699
728
 
700
729
  const result = query
@@ -709,6 +738,7 @@ describe("Puri ensureJoin methods", () => {
709
738
 
710
739
  it("ensureJoin은 callback 형식을 허용하지 않는다", () => {
711
740
  type Query = Puri<MockSchema, { users: MockSchema["users"] }, MockSchema["users"]>;
741
+ // SAFETY: 테스트 입력은 선언된 타입 검증 시나리오에 맞게 고정됩니다.
712
742
  const query = {} as Query;
713
743
 
714
744
  // @ts-expect-error callback JOIN은 동일성을 판정할 수 없으므로 지원하지 않는다.
@@ -38,7 +38,7 @@ type VectorColumnKeys<T> = T extends { [K in VectorKey]: readonly (infer V)[] }
38
38
  ? V & string
39
39
  : never;
40
40
 
41
- export type VectorColumns<TTables extends Record<string, any>> =
41
+ export type VectorColumns<TTables extends object> =
42
42
  | {
43
43
  [TAlias in keyof TTables]: `${TAlias & string}.${VectorColumnKeys<TTables[TAlias]>}`;
44
44
  }[keyof TTables]
@@ -47,7 +47,7 @@ export type VectorColumns<TTables extends Record<string, any>> =
47
47
  // __json__ 메타데이터에서 JSON 컬럼 추출
48
48
  type JsonColumnKeys<T> = T extends { [K in JsonKey]: readonly (infer J)[] } ? J & string : never;
49
49
 
50
- export type JsonColumns<TTables extends Record<string, any>> =
50
+ export type JsonColumns<TTables extends object> =
51
51
  | {
52
52
  [TAlias in keyof TTables]: `${TAlias & string}.${JsonColumnKeys<TTables[TAlias]>}`;
53
53
  }[keyof TTables]
@@ -93,13 +93,15 @@ export type PuriTable<T> = Omit<StripVirtual<T>, VirtualKey>;
93
93
  export type OmitInternalTypeKeys<T> = Omit<T, InternalTypeKeys>;
94
94
 
95
95
  // TTables의 모든 테이블에서 사용 가능한 컬럼 경로
96
- export type AvailableColumns<TTables extends Record<string, any>> =
96
+ export type AvailableColumns<TTables extends object> = (
97
97
  | {
98
98
  [TAlias in keyof TTables]: `${TAlias & string}.${ColumnKeys<TTables[TAlias]>}`;
99
99
  }[keyof TTables]
100
100
  | (IsSingleKey<TTables> extends true
101
101
  ? ColumnKeys<TTables[keyof TTables]> // 단일 테이블이면 컬럼명만도 허용
102
- : never);
102
+ : never)
103
+ ) &
104
+ string;
103
105
 
104
106
  // 숫자 타입 컬럼만 추출하는 유틸리티 타입
105
107
  type NumericColumnKeys<T> = {
@@ -108,7 +110,7 @@ type NumericColumnKeys<T> = {
108
110
  string;
109
111
 
110
112
  // TTables의 모든 테이블에서 숫자 타입 컬럼만 추출
111
- export type NumericColumns<TTables extends Record<string, any>> =
113
+ export type NumericColumns<TTables extends object> =
112
114
  | {
113
115
  [TAlias in keyof TTables]: `${TAlias & string}.${NumericColumnKeys<TTables[TAlias]>}`;
114
116
  }[keyof TTables]
@@ -117,30 +119,30 @@ export type NumericColumns<TTables extends Record<string, any>> =
117
119
  : never);
118
120
 
119
121
  // Group By, Order By, Having 등에서 선택 가능한 컬럼
120
- export type ResultAvailableColumns<TTables extends Record<string, any>, TResult = any> =
122
+ export type ResultAvailableColumns<TTables extends object, TResult = any> =
121
123
  | AvailableColumns<TTables>
122
124
  | `${keyof TResult & string}`;
123
125
 
124
126
  // Select 값 타입 확장 (단일 컬럼 또는 SQL 표현식)
125
- export type SelectValue<TTables extends Record<string, any>> =
127
+ export type SelectValue<TTables extends object> =
126
128
  | AvailableColumns<TTables>
127
129
  | SqlExpression<"string" | "number" | "boolean" | "date" | "string[]">;
128
130
 
129
131
  // 중첩 Select 객체 타입 (재귀적)
130
132
  // 예: { parent: { id: "parent.id", name: "parent.name" } }
131
- export type NestedSelectObject<TTables extends Record<string, any>> = {
133
+ export type NestedSelectObject<TTables extends object> = {
132
134
  [key: string]: SelectValue<TTables> | NestedSelectObject<TTables>;
133
135
  };
134
136
 
135
137
  // Select 객체 타입 (flat 또는 중첩 허용)
136
- export type SelectObject<TTables extends Record<string, any>> = NestedSelectObject<TTables>;
138
+ export type SelectObject<TTables extends object> = NestedSelectObject<TTables>;
137
139
 
138
140
  // 값이 중첩 객체인지 판별하는 헬퍼 타입
139
141
  type IsNestedObject<T> = T extends string
140
142
  ? false
141
143
  : T extends SqlExpression<any>
142
144
  ? false
143
- : T extends Record<string, any>
145
+ : T extends object
144
146
  ? true
145
147
  : false;
146
148
 
@@ -201,13 +203,13 @@ type JoinPath<Prefix extends string, Key extends string> = Prefix extends ""
201
203
  // }
202
204
  // })
203
205
  export type ParseSelectObject<
204
- TTables extends Record<string, any>,
206
+ TTables extends object,
205
207
  TSelect extends SelectObject<TTables>,
206
208
  > = ParseSelectObjectWithPath<TTables, TSelect, "">;
207
209
 
208
210
  // 경로를 추적하면서 Select 결과 타입을 추론합니다.
209
211
  type ParseSelectObjectWithPath<
210
- TTables extends Record<string, any>,
212
+ TTables extends object,
211
213
  TSelect extends SelectObject<TTables>,
212
214
  Prefix extends string,
213
215
  > = Expand<{
@@ -236,7 +238,7 @@ type ParseSelectObjectWithPath<
236
238
  // ParseSelectObjectWithPath와 거의 동일하나, 마지막에 ExtractColumnType 대신 ExtractColumnTypeRaw를 사용하여
237
239
  // 필드 레벨에서 중복으로 | null이 추가되는 것을 방지합니다.
238
240
  type ParseSelectObjectInner<
239
- TTables extends Record<string, any>,
241
+ TTables extends object,
240
242
  TSelect extends SelectObject<TTables>,
241
243
  Prefix extends string,
242
244
  > = Expand<{
@@ -264,7 +266,7 @@ type ParseSelectObjectInner<
264
266
  // 컬럼 경로에서 타입을 추출합니다. LeftJoinedMarker가 있으면 | null을 추가합니다.
265
267
  // 최상위 select 필드에서 사용됩니다.
266
268
  export type ExtractColumnType<
267
- TTables extends Record<string, any>,
269
+ TTables extends object,
268
270
  Path extends string,
269
271
  > = Path extends `${infer TAlias}.${infer TColumn}`
270
272
  ? TAlias extends keyof TTables
@@ -283,7 +285,7 @@ export type ExtractColumnType<
283
285
  // 컬럼 경로에서 타입을 추출합니다. leftJoin 여부와 관계없이 원본 타입을 반환합니다.
284
286
  // 중첩 객체 내부 필드에서 사용됩니다. (객체 레벨에서 이미 | null 처리가 완료되었으므로)
285
287
  type ExtractColumnTypeRaw<
286
- TTables extends Record<string, any>,
288
+ TTables extends object,
287
289
  Path extends string,
288
290
  > = Path extends `${infer TAlias}.${infer TColumn}`
289
291
  ? TAlias extends keyof TTables
@@ -299,12 +301,12 @@ type ExtractColumnTypeRaw<
299
301
 
300
302
  // Where 조건 객체 타입
301
303
  // 예: { "u.id": 1, "u.status": "active" }
302
- export type WhereCondition<TTables extends Record<string, any>> = {
304
+ export type WhereCondition<TTables extends object> = {
303
305
  [key in AvailableColumns<TTables>]?: ExtractColumnType<TTables, key & string>;
304
306
  };
305
307
 
306
308
  // Fulltext index 컬럼 추출 타입
307
- export type FulltextColumns<TTables extends Record<string, any>> = {
309
+ export type FulltextColumns<TTables extends object> = {
308
310
  [TAlias in keyof TTables]: TTables[TAlias] extends {
309
311
  [K in FulltextKey]: readonly (infer Col)[];
310
312
  }
@@ -338,7 +340,7 @@ export type Expand<T> = T extends any[]
338
340
  ? { [K in keyof T]: T[K] }
339
341
  : T;
340
342
 
341
- type IsSingleKey<TTables extends Record<string, any>> = keyof TTables extends infer K
343
+ type IsSingleKey<TTables extends object> = keyof TTables extends infer K
342
344
  ? K extends keyof TTables
343
345
  ? keyof TTables extends K // 역방향 체크로 단일 키 확인
344
346
  ? true
@@ -346,7 +348,7 @@ type IsSingleKey<TTables extends Record<string, any>> = keyof TTables extends in
346
348
  : false
347
349
  : false;
348
350
 
349
- export type SingleTableValue<TTables extends Record<string, any>> =
351
+ export type SingleTableValue<TTables extends object> =
350
352
  IsSingleKey<TTables> extends true ? TTables[keyof TTables] : never;
351
353
 
352
354
  // __hasDefault__에 포함된 키들을 PuriTable<T>의 키로 제한
@@ -393,7 +395,7 @@ export type OnConflictTarget = string | string[];
393
395
  // ON CONFLICT 액션 타입
394
396
  // - "nothing": DO NOTHING
395
397
  // - { update: [...] }: DO UPDATE
396
- export type OnConflictAction<TTables extends Record<string, unknown>> =
398
+ export type OnConflictAction<TTables extends object> =
397
399
  | "nothing"
398
400
  | {
399
401
  update:
@@ -411,7 +413,7 @@ type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (
411
413
  : never;
412
414
 
413
415
  // SelectAll 시 모든 조인된 테이블의 컬럼 포함
414
- export type SelectAllResult<TTables extends Record<string, any>> = UnionToIntersection<
416
+ export type SelectAllResult<TTables extends object> = UnionToIntersection<
415
417
  {
416
418
  [K in keyof TTables]: TTables[K] extends infer T
417
419
  ? T extends LeftJoinedMarker