sonamu 0.8.26 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (684) hide show
  1. package/bin/cli.js +60 -13
  2. package/dist/_virtual/rolldown_runtime.js +39 -0
  3. package/dist/ai/agents/agent.d.ts +3 -3
  4. package/dist/ai/agents/agent.d.ts.map +1 -1
  5. package/dist/ai/agents/agent.js +76 -73
  6. package/dist/ai/agents/index.js +3 -3
  7. package/dist/ai/agents/types.d.ts +3 -3
  8. package/dist/ai/agents/types.d.ts.map +1 -1
  9. package/dist/ai/agents/types.js +1 -3
  10. package/dist/ai/index.js +3 -2
  11. package/dist/ai/providers/rtzr/api.js +25 -25
  12. package/dist/ai/providers/rtzr/error.js +25 -26
  13. package/dist/ai/providers/rtzr/index.js +5 -5
  14. package/dist/ai/providers/rtzr/model.d.ts +1 -1
  15. package/dist/ai/providers/rtzr/model.d.ts.map +1 -1
  16. package/dist/ai/providers/rtzr/model.js +117 -133
  17. package/dist/ai/providers/rtzr/options.d.ts.map +1 -1
  18. package/dist/ai/providers/rtzr/options.js +35 -41
  19. package/dist/ai/providers/rtzr/provider.d.ts +1 -1
  20. package/dist/ai/providers/rtzr/provider.d.ts.map +1 -1
  21. package/dist/ai/providers/rtzr/provider.js +53 -51
  22. package/dist/ai/providers/rtzr/utils.d.ts.map +1 -1
  23. package/dist/ai/providers/rtzr/utils.js +84 -84
  24. package/dist/api/base-frame.d.ts +2 -2
  25. package/dist/api/base-frame.d.ts.map +1 -1
  26. package/dist/api/base-frame.js +29 -19
  27. package/dist/api/caster.d.ts +1 -1
  28. package/dist/api/caster.d.ts.map +1 -1
  29. package/dist/api/caster.js +51 -61
  30. package/dist/api/code-converters.d.ts +4 -3
  31. package/dist/api/code-converters.d.ts.map +1 -1
  32. package/dist/api/code-converters.js +226 -249
  33. package/dist/api/config.d.ts +17 -17
  34. package/dist/api/config.d.ts.map +1 -1
  35. package/dist/api/config.js +37 -30
  36. package/dist/api/context.d.ts +10 -10
  37. package/dist/api/context.d.ts.map +1 -1
  38. package/dist/api/context.js +8 -2
  39. package/dist/api/decorators.d.ts +8 -8
  40. package/dist/api/decorators.d.ts.map +1 -1
  41. package/dist/api/decorators.js +245 -268
  42. package/dist/api/index.js +39 -7
  43. package/dist/api/secret.js +22 -15
  44. package/dist/api/sonamu.d.ts +15 -15
  45. package/dist/api/sonamu.d.ts.map +1 -1
  46. package/dist/api/sonamu.js +1012 -1131
  47. package/dist/api/validator.js +88 -79
  48. package/dist/auth/auth-generator.d.ts.map +1 -1
  49. package/dist/auth/auth-generator.js +203 -200
  50. package/dist/auth/better-auth-entities.d.ts +2 -2
  51. package/dist/auth/better-auth-entities.d.ts.map +1 -1
  52. package/dist/auth/better-auth-entities.js +369 -429
  53. package/dist/auth/index.js +21 -6
  54. package/dist/auth/knex-adapter.d.ts +2 -2
  55. package/dist/auth/knex-adapter.d.ts.map +1 -1
  56. package/dist/auth/knex-adapter.js +153 -157
  57. package/dist/auth/plugins/entity-definitions/admin.d.ts +1 -1
  58. package/dist/auth/plugins/entity-definitions/admin.d.ts.map +1 -1
  59. package/dist/auth/plugins/entity-definitions/admin.js +58 -56
  60. package/dist/auth/plugins/entity-definitions/anonymous.d.ts +1 -1
  61. package/dist/auth/plugins/entity-definitions/anonymous.d.ts.map +1 -1
  62. package/dist/auth/plugins/entity-definitions/anonymous.js +20 -20
  63. package/dist/auth/plugins/entity-definitions/api-key.d.ts +1 -1
  64. package/dist/auth/plugins/entity-definitions/api-key.d.ts.map +1 -1
  65. package/dist/auth/plugins/entity-definitions/api-key.js +185 -196
  66. package/dist/auth/plugins/entity-definitions/index.d.ts +1 -1
  67. package/dist/auth/plugins/entity-definitions/index.d.ts.map +1 -1
  68. package/dist/auth/plugins/entity-definitions/index.js +26 -29
  69. package/dist/auth/plugins/entity-definitions/jwt.d.ts +1 -1
  70. package/dist/auth/plugins/entity-definitions/jwt.d.ts.map +1 -1
  71. package/dist/auth/plugins/entity-definitions/jwt.js +62 -64
  72. package/dist/auth/plugins/entity-definitions/organization.d.ts +1 -1
  73. package/dist/auth/plugins/entity-definitions/organization.d.ts.map +1 -1
  74. package/dist/auth/plugins/entity-definitions/organization.js +362 -421
  75. package/dist/auth/plugins/entity-definitions/passkey.d.ts +1 -1
  76. package/dist/auth/plugins/entity-definitions/passkey.d.ts.map +1 -1
  77. package/dist/auth/plugins/entity-definitions/passkey.js +115 -126
  78. package/dist/auth/plugins/entity-definitions/phone-number.d.ts +1 -1
  79. package/dist/auth/plugins/entity-definitions/phone-number.d.ts.map +1 -1
  80. package/dist/auth/plugins/entity-definitions/phone-number.js +31 -40
  81. package/dist/auth/plugins/entity-definitions/sso.d.ts +1 -1
  82. package/dist/auth/plugins/entity-definitions/sso.d.ts.map +1 -1
  83. package/dist/auth/plugins/entity-definitions/sso.js +94 -107
  84. package/dist/auth/plugins/entity-definitions/two-factor.d.ts +1 -1
  85. package/dist/auth/plugins/entity-definitions/two-factor.d.ts.map +1 -1
  86. package/dist/auth/plugins/entity-definitions/two-factor.js +78 -92
  87. package/dist/auth/plugins/entity-definitions/types.d.ts +1 -1
  88. package/dist/auth/plugins/entity-definitions/types.d.ts.map +1 -1
  89. package/dist/auth/plugins/entity-definitions/types.js +1 -10
  90. package/dist/auth/plugins/entity-definitions/username.d.ts +1 -1
  91. package/dist/auth/plugins/entity-definitions/username.d.ts.map +1 -1
  92. package/dist/auth/plugins/entity-definitions/username.js +31 -40
  93. package/dist/auth/plugins/index.js +12 -3
  94. package/dist/auth/plugins/wrappers/admin.d.ts +2 -2
  95. package/dist/auth/plugins/wrappers/admin.d.ts.map +1 -1
  96. package/dist/auth/plugins/wrappers/admin.js +28 -29
  97. package/dist/auth/plugins/wrappers/anonymous.d.ts +2 -1
  98. package/dist/auth/plugins/wrappers/anonymous.d.ts.map +1 -1
  99. package/dist/auth/plugins/wrappers/anonymous.js +23 -22
  100. package/dist/auth/plugins/wrappers/api-key.d.ts +2 -1
  101. package/dist/auth/plugins/wrappers/api-key.d.ts.map +1 -1
  102. package/dist/auth/plugins/wrappers/api-key.js +39 -34
  103. package/dist/auth/plugins/wrappers/index.js +11 -11
  104. package/dist/auth/plugins/wrappers/jwt.d.ts +2 -1
  105. package/dist/auth/plugins/wrappers/jwt.d.ts.map +1 -1
  106. package/dist/auth/plugins/wrappers/jwt.js +31 -26
  107. package/dist/auth/plugins/wrappers/organization.d.ts +2 -1
  108. package/dist/auth/plugins/wrappers/organization.d.ts.map +1 -1
  109. package/dist/auth/plugins/wrappers/organization.js +65 -62
  110. package/dist/auth/plugins/wrappers/passkey.d.ts +2 -1
  111. package/dist/auth/plugins/wrappers/passkey.d.ts.map +1 -1
  112. package/dist/auth/plugins/wrappers/passkey.js +33 -28
  113. package/dist/auth/plugins/wrappers/phone-number.d.ts.map +1 -1
  114. package/dist/auth/plugins/wrappers/phone-number.js +26 -23
  115. package/dist/auth/plugins/wrappers/sso.d.ts.map +1 -1
  116. package/dist/auth/plugins/wrappers/sso.js +37 -31
  117. package/dist/auth/plugins/wrappers/two-factor.d.ts.map +1 -1
  118. package/dist/auth/plugins/wrappers/two-factor.js +31 -28
  119. package/dist/auth/plugins/wrappers/username.d.ts.map +1 -1
  120. package/dist/auth/plugins/wrappers/username.js +23 -23
  121. package/dist/bin/build-config.js +31 -31
  122. package/dist/bin/cli.js +1063 -1204
  123. package/dist/bin/fixture.d.ts.map +1 -1
  124. package/dist/bin/fixture.js +266 -259
  125. package/dist/bin/hmr-hook-register.d.ts.map +1 -1
  126. package/dist/bin/hmr-hook-register.js +19 -18
  127. package/dist/bin/test-command.d.ts.map +1 -1
  128. package/dist/bin/test-command.js +180 -177
  129. package/dist/bin/ts-loader-register.js +13 -6
  130. package/dist/bin/ts-loader-registration.d.ts.map +1 -1
  131. package/dist/bin/ts-loader-registration.js +28 -38
  132. package/dist/cache/cache-manager.d.ts +1 -1
  133. package/dist/cache/cache-manager.d.ts.map +1 -1
  134. package/dist/cache/cache-manager.js +20 -15
  135. package/dist/cache/decorator.d.ts +1 -1
  136. package/dist/cache/decorator.d.ts.map +1 -1
  137. package/dist/cache/decorator.js +84 -76
  138. package/dist/cache/drivers.js +21 -34
  139. package/dist/cache/index.js +10 -7
  140. package/dist/cache/types.d.ts +2 -2
  141. package/dist/cache/types.d.ts.map +1 -1
  142. package/dist/cache/types.js +1 -6
  143. package/dist/cache-control/cache-control.d.ts +2 -2
  144. package/dist/cache-control/cache-control.d.ts.map +1 -1
  145. package/dist/cache-control/cache-control.js +106 -122
  146. package/dist/cache-control/types.d.ts +2 -2
  147. package/dist/cache-control/types.d.ts.map +1 -1
  148. package/dist/cache-control/types.js +1 -19
  149. package/dist/compress/compress.d.ts +1 -1
  150. package/dist/compress/compress.d.ts.map +1 -1
  151. package/dist/compress/compress.js +58 -56
  152. package/dist/compress/index.js +7 -2
  153. package/dist/compress/types.js +1 -11
  154. package/dist/cone/cone-generator.d.ts +1 -1
  155. package/dist/cone/cone-generator.d.ts.map +1 -1
  156. package/dist/cone/cone-generator.js +216 -219
  157. package/dist/database/_batch_update.d.ts +1 -1
  158. package/dist/database/_batch_update.d.ts.map +1 -1
  159. package/dist/database/_batch_update.js +107 -102
  160. package/dist/database/base-model.d.ts +8 -9
  161. package/dist/database/base-model.d.ts.map +1 -1
  162. package/dist/database/base-model.js +371 -392
  163. package/dist/database/base-model.types.d.ts +5 -5
  164. package/dist/database/base-model.types.d.ts.map +1 -1
  165. package/dist/database/base-model.types.js +1 -20
  166. package/dist/database/db.d.ts +5 -2
  167. package/dist/database/db.d.ts.map +1 -1
  168. package/dist/database/db.js +185 -171
  169. package/dist/database/knex.d.ts +1 -1
  170. package/dist/database/knex.d.ts.map +1 -1
  171. package/dist/database/knex.js +48 -42
  172. package/dist/database/puri-subset.types.d.ts +6 -7
  173. package/dist/database/puri-subset.types.d.ts.map +1 -1
  174. package/dist/database/puri-subset.types.js +1 -16
  175. package/dist/database/puri-wrapper.d.ts +6 -6
  176. package/dist/database/puri-wrapper.d.ts.map +1 -1
  177. package/dist/database/puri-wrapper.js +99 -101
  178. package/dist/database/puri.d.ts +4 -5
  179. package/dist/database/puri.d.ts.map +1 -1
  180. package/dist/database/puri.js +1021 -1227
  181. package/dist/database/puri.types.d.ts +6 -6
  182. package/dist/database/puri.types.d.ts.map +1 -1
  183. package/dist/database/puri.types.js +15 -6
  184. package/dist/database/transaction-context.d.ts +2 -2
  185. package/dist/database/transaction-context.d.ts.map +1 -1
  186. package/dist/database/transaction-context.js +22 -13
  187. package/dist/database/upsert-builder.d.ts +3 -3
  188. package/dist/database/upsert-builder.d.ts.map +1 -1
  189. package/dist/database/upsert-builder.js +405 -465
  190. package/dist/dict/en.js +72 -74
  191. package/dist/dict/index.js +13 -13
  192. package/dist/dict/ko.js +72 -74
  193. package/dist/dict/rc-keys.js +150 -168
  194. package/dist/dict/sd.d.ts +3 -1
  195. package/dist/dict/sd.d.ts.map +1 -1
  196. package/dist/dict/sd.js +54 -40
  197. package/dist/dict/sonamu-dictionary.d.ts +1 -1
  198. package/dist/dict/sonamu-dictionary.d.ts.map +1 -1
  199. package/dist/dict/sonamu-dictionary.js +887 -955
  200. package/dist/dict/types.js +1 -7
  201. package/dist/dict/utils.js +26 -24
  202. package/dist/entity/entity-manager.d.ts +9 -9
  203. package/dist/entity/entity-manager.d.ts.map +1 -1
  204. package/dist/entity/entity-manager.js +226 -223
  205. package/dist/entity/entity-template-cone.d.ts +1 -1
  206. package/dist/entity/entity-template-cone.d.ts.map +1 -1
  207. package/dist/entity/entity-template-cone.js +152 -151
  208. package/dist/entity/entity.d.ts.map +1 -1
  209. package/dist/entity/entity.js +952 -1089
  210. package/dist/exceptions/error-handler.d.ts +1 -1
  211. package/dist/exceptions/error-handler.d.ts.map +1 -1
  212. package/dist/exceptions/error-handler.js +32 -27
  213. package/dist/exceptions/so-exceptions.d.ts +1 -1
  214. package/dist/exceptions/so-exceptions.d.ts.map +1 -1
  215. package/dist/exceptions/so-exceptions.js +61 -68
  216. package/dist/filter/index.js +9 -3
  217. package/dist/filter/types.js +92 -88
  218. package/dist/filter/utils.d.ts +1 -1
  219. package/dist/filter/utils.d.ts.map +1 -1
  220. package/dist/filter/utils.js +147 -161
  221. package/dist/index.js +87 -40
  222. package/dist/logger/category.d.ts.map +1 -1
  223. package/dist/logger/category.js +30 -29
  224. package/dist/logger/configure.d.ts.map +1 -1
  225. package/dist/logger/configure.js +83 -107
  226. package/dist/migration/code-generation.d.ts +2 -2
  227. package/dist/migration/code-generation.d.ts.map +1 -1
  228. package/dist/migration/code-generation.js +1385 -1578
  229. package/dist/migration/migration-set.d.ts +1 -1
  230. package/dist/migration/migration-set.d.ts.map +1 -1
  231. package/dist/migration/migration-set.js +177 -227
  232. package/dist/migration/migrator.d.ts +4 -3
  233. package/dist/migration/migrator.d.ts.map +1 -1
  234. package/dist/migration/migrator.js +340 -345
  235. package/dist/migration/postgresql-schema-reader.d.ts +2 -2
  236. package/dist/migration/postgresql-schema-reader.d.ts.map +1 -1
  237. package/dist/migration/postgresql-schema-reader.js +506 -564
  238. package/dist/migration/slack-confirm.d.ts +2 -2
  239. package/dist/migration/slack-confirm.d.ts.map +1 -1
  240. package/dist/migration/slack-confirm.js +205 -193
  241. package/dist/migration/types.d.ts +2 -2
  242. package/dist/migration/types.d.ts.map +1 -1
  243. package/dist/migration/types.js +1 -3
  244. package/dist/naite/messaging-types.d.ts +1 -0
  245. package/dist/naite/messaging-types.d.ts.map +1 -1
  246. package/dist/naite/messaging-types.js +1 -7
  247. package/dist/naite/naite-reporter.d.ts +2 -2
  248. package/dist/naite/naite-reporter.d.ts.map +1 -1
  249. package/dist/naite/naite-reporter.js +127 -120
  250. package/dist/naite/naite.d.ts +3 -2
  251. package/dist/naite/naite.d.ts.map +1 -1
  252. package/dist/naite/naite.js +266 -300
  253. package/dist/ssr/index.d.ts +2 -2
  254. package/dist/ssr/index.d.ts.map +1 -1
  255. package/dist/ssr/index.js +13 -3
  256. package/dist/ssr/registry.d.ts +1 -1
  257. package/dist/ssr/registry.d.ts.map +1 -1
  258. package/dist/ssr/registry.js +45 -37
  259. package/dist/ssr/renderer.d.ts +4 -4
  260. package/dist/ssr/renderer.d.ts.map +1 -1
  261. package/dist/ssr/renderer.js +84 -91
  262. package/dist/ssr/types.d.ts +2 -2
  263. package/dist/ssr/types.d.ts.map +1 -1
  264. package/dist/ssr/types.js +1 -3
  265. package/dist/storage/base-file.js +54 -41
  266. package/dist/storage/buffered-file.d.ts +2 -2
  267. package/dist/storage/buffered-file.d.ts.map +1 -1
  268. package/dist/storage/buffered-file.js +51 -44
  269. package/dist/storage/drivers.d.ts +2 -2
  270. package/dist/storage/drivers.d.ts.map +1 -1
  271. package/dist/storage/drivers.js +12 -7
  272. package/dist/storage/index.js +14 -7
  273. package/dist/storage/s3-driver.d.ts +2 -2
  274. package/dist/storage/s3-driver.d.ts.map +1 -1
  275. package/dist/storage/s3-driver.js +52 -48
  276. package/dist/storage/storage-manager.d.ts +2 -2
  277. package/dist/storage/storage-manager.d.ts.map +1 -1
  278. package/dist/storage/storage-manager.js +33 -25
  279. package/dist/storage/types.d.ts +2 -2
  280. package/dist/storage/types.d.ts.map +1 -1
  281. package/dist/storage/types.js +1 -5
  282. package/dist/storage/uploaded-file.d.ts +1 -1
  283. package/dist/storage/uploaded-file.d.ts.map +1 -1
  284. package/dist/storage/uploaded-file.js +45 -35
  285. package/dist/stream/index.js +7 -2
  286. package/dist/stream/sse.d.ts +2 -2
  287. package/dist/stream/sse.d.ts.map +1 -1
  288. package/dist/stream/sse.js +72 -67
  289. package/dist/syncer/api-parser.d.ts +1 -1
  290. package/dist/syncer/api-parser.d.ts.map +1 -1
  291. package/dist/syncer/api-parser.js +224 -245
  292. package/dist/syncer/checksum.d.ts +1 -1
  293. package/dist/syncer/checksum.d.ts.map +1 -1
  294. package/dist/syncer/checksum.js +86 -72
  295. package/dist/syncer/code-generator.d.ts +2 -2
  296. package/dist/syncer/code-generator.d.ts.map +1 -1
  297. package/dist/syncer/code-generator.js +154 -160
  298. package/dist/syncer/entity-operations.d.ts +1 -1
  299. package/dist/syncer/entity-operations.d.ts.map +1 -1
  300. package/dist/syncer/entity-operations.js +63 -54
  301. package/dist/syncer/file-patterns.d.ts +1 -1
  302. package/dist/syncer/file-patterns.d.ts.map +1 -1
  303. package/dist/syncer/file-patterns.js +38 -38
  304. package/dist/syncer/index.js +19 -8
  305. package/dist/syncer/module-loader.d.ts +5 -5
  306. package/dist/syncer/module-loader.d.ts.map +1 -1
  307. package/dist/syncer/module-loader.js +83 -78
  308. package/dist/syncer/syncer-actions.d.ts +2 -2
  309. package/dist/syncer/syncer-actions.d.ts.map +1 -1
  310. package/dist/syncer/syncer-actions.js +76 -91
  311. package/dist/syncer/syncer.d.ts +7 -6
  312. package/dist/syncer/syncer.d.ts.map +1 -1
  313. package/dist/syncer/syncer.js +426 -492
  314. package/dist/tasks/decorator.d.ts +3 -3
  315. package/dist/tasks/decorator.d.ts.map +1 -1
  316. package/dist/tasks/decorator.js +32 -28
  317. package/dist/tasks/step-wrapper.d.ts +1 -1
  318. package/dist/tasks/step-wrapper.d.ts.map +1 -1
  319. package/dist/tasks/step-wrapper.js +42 -41
  320. package/dist/tasks/workflow-manager.d.ts +2 -2
  321. package/dist/tasks/workflow-manager.d.ts.map +1 -1
  322. package/dist/tasks/workflow-manager.js +192 -221
  323. package/dist/template/entity-converter.d.ts +1 -1
  324. package/dist/template/entity-converter.d.ts.map +1 -1
  325. package/dist/template/entity-converter.js +103 -103
  326. package/dist/template/helpers.d.ts.map +1 -1
  327. package/dist/template/helpers.js +163 -163
  328. package/dist/template/implementations/entity.template.d.ts +1 -1
  329. package/dist/template/implementations/entity.template.d.ts.map +1 -1
  330. package/dist/template/implementations/entity.template.js +76 -85
  331. package/dist/template/implementations/entry-server.template.d.ts +1 -1
  332. package/dist/template/implementations/entry-server.template.d.ts.map +1 -1
  333. package/dist/template/implementations/entry-server.template.js +32 -27
  334. package/dist/template/implementations/generated.template.d.ts +1 -1
  335. package/dist/template/implementations/generated.template.d.ts.map +1 -1
  336. package/dist/template/implementations/generated.template.js +254 -275
  337. package/dist/template/implementations/generated_http.template.d.ts +2 -2
  338. package/dist/template/implementations/generated_http.template.d.ts.map +1 -1
  339. package/dist/template/implementations/generated_http.template.js +114 -133
  340. package/dist/template/implementations/generated_sso.template.d.ts.map +1 -1
  341. package/dist/template/implementations/generated_sso.template.js +249 -275
  342. package/dist/template/implementations/init_types.template.d.ts +1 -1
  343. package/dist/template/implementations/init_types.template.d.ts.map +1 -1
  344. package/dist/template/implementations/init_types.template.js +40 -34
  345. package/dist/template/implementations/model.template.d.ts +1 -1
  346. package/dist/template/implementations/model.template.d.ts.map +1 -1
  347. package/dist/template/implementations/model.template.js +56 -53
  348. package/dist/template/implementations/model_test.template.d.ts +1 -1
  349. package/dist/template/implementations/model_test.template.d.ts.map +1 -1
  350. package/dist/template/implementations/model_test.template.js +32 -24
  351. package/dist/template/implementations/queries.template.d.ts +1 -1
  352. package/dist/template/implementations/queries.template.d.ts.map +1 -1
  353. package/dist/template/implementations/queries.template.js +84 -89
  354. package/dist/template/implementations/sd.template.d.ts +1 -1
  355. package/dist/template/implementations/sd.template.d.ts.map +1 -1
  356. package/dist/template/implementations/sd.template.js +137 -144
  357. package/dist/template/implementations/services.template.d.ts +1 -1
  358. package/dist/template/implementations/services.template.d.ts.map +1 -1
  359. package/dist/template/implementations/services.template.js +164 -189
  360. package/dist/template/implementations/view_form.template.d.ts +1 -1
  361. package/dist/template/implementations/view_form.template.d.ts.map +1 -1
  362. package/dist/template/implementations/view_form.template.js +258 -285
  363. package/dist/template/implementations/view_id_all_select.template.d.ts +1 -1
  364. package/dist/template/implementations/view_id_all_select.template.d.ts.map +1 -1
  365. package/dist/template/implementations/view_id_all_select.template.js +31 -25
  366. package/dist/template/implementations/view_list.template.d.ts +1 -1
  367. package/dist/template/implementations/view_list.template.d.ts.map +1 -1
  368. package/dist/template/implementations/view_list.template.js +304 -355
  369. package/dist/template/implementations/view_search_input.template.d.ts +1 -1
  370. package/dist/template/implementations/view_search_input.template.d.ts.map +1 -1
  371. package/dist/template/implementations/view_search_input.template.js +31 -27
  372. package/dist/template/index.js +21 -7
  373. package/dist/template/template-manager.d.ts +1 -1
  374. package/dist/template/template-manager.d.ts.map +1 -1
  375. package/dist/template/template-manager.js +132 -123
  376. package/dist/template/template-types.js +8 -6
  377. package/dist/template/template.d.ts +2 -2
  378. package/dist/template/template.d.ts.map +1 -1
  379. package/dist/template/template.js +73 -68
  380. package/dist/template/zod-converter.d.ts.map +1 -1
  381. package/dist/template/zod-converter.js +603 -657
  382. package/dist/testing/_relation-graph.d.ts +1 -1
  383. package/dist/testing/_relation-graph.d.ts.map +1 -1
  384. package/dist/testing/_relation-graph.js +93 -88
  385. package/dist/testing/bootstrap.d.ts +22 -13
  386. package/dist/testing/bootstrap.d.ts.map +1 -1
  387. package/dist/testing/bootstrap.js +114 -114
  388. package/dist/testing/data-explorer.d.ts +3 -3
  389. package/dist/testing/data-explorer.d.ts.map +1 -1
  390. package/dist/testing/data-explorer.js +237 -265
  391. package/dist/testing/dev-test-routes.d.ts +2 -2
  392. package/dist/testing/dev-test-routes.d.ts.map +1 -1
  393. package/dist/testing/dev-test-routes.js +258 -249
  394. package/dist/testing/dev-vitest-manager.d.ts +1 -1
  395. package/dist/testing/dev-vitest-manager.d.ts.map +1 -1
  396. package/dist/testing/dev-vitest-manager.js +514 -539
  397. package/dist/testing/faker-mappings.js +422 -420
  398. package/dist/testing/fixture-generator.d.ts +3 -3
  399. package/dist/testing/fixture-generator.d.ts.map +1 -1
  400. package/dist/testing/fixture-generator.js +1216 -1346
  401. package/dist/testing/fixture-loader.js +26 -25
  402. package/dist/testing/fixture-manager.d.ts +3 -3
  403. package/dist/testing/fixture-manager.d.ts.map +1 -1
  404. package/dist/testing/fixture-manager.js +706 -776
  405. package/dist/testing/global-setup.js +53 -49
  406. package/dist/testing/index.js +19 -11
  407. package/dist/testing/naite-vitest-reporter.js +18 -13
  408. package/dist/testing/parallel-db-manager.d.ts +1 -1
  409. package/dist/testing/parallel-db-manager.d.ts.map +1 -1
  410. package/dist/testing/parallel-db-manager.js +63 -78
  411. package/dist/testing/vitest-helpers.d.ts +1 -1
  412. package/dist/testing/vitest-helpers.d.ts.map +1 -1
  413. package/dist/testing/vitest-helpers.js +37 -33
  414. package/dist/types/types.d.ts +28 -28
  415. package/dist/types/types.d.ts.map +1 -1
  416. package/dist/types/types.js +764 -890
  417. package/dist/ui/ai-api.d.ts +1 -1
  418. package/dist/ui/ai-api.d.ts.map +1 -1
  419. package/dist/ui/ai-api.js +52 -42
  420. package/dist/ui/ai-client.d.ts +1 -2
  421. package/dist/ui/ai-client.d.ts.map +1 -1
  422. package/dist/ui/ai-client.js +353 -388
  423. package/dist/ui/api.d.ts +1 -1
  424. package/dist/ui/api.d.ts.map +1 -1
  425. package/dist/ui/api.js +903 -1145
  426. package/dist/ui/cdd-service.d.ts +1 -1
  427. package/dist/ui/cdd-service.d.ts.map +1 -1
  428. package/dist/ui/cdd-service.js +406 -407
  429. package/dist/ui/cdd-types.js +1 -3
  430. package/dist/ui-web/assets/index-C-Zz-wYg.css +1 -0
  431. package/dist/ui-web/assets/index-DejDON8K.js +238 -0
  432. package/dist/ui-web/index.html +3 -3
  433. package/dist/utils/async-utils.js +57 -45
  434. package/dist/utils/console-util.d.ts.map +1 -1
  435. package/dist/utils/console-util.js +104 -87
  436. package/dist/utils/controller.js +26 -19
  437. package/dist/utils/esm-utils.js +49 -38
  438. package/dist/utils/formatter.d.ts +1 -2
  439. package/dist/utils/formatter.d.ts.map +1 -1
  440. package/dist/utils/formatter.js +89 -115
  441. package/dist/utils/fs-utils.d.ts.map +1 -1
  442. package/dist/utils/fs-utils.js +68 -65
  443. package/dist/utils/lodash-able.js +11 -4
  444. package/dist/utils/model.d.ts +1 -1
  445. package/dist/utils/model.d.ts.map +1 -1
  446. package/dist/utils/model.js +21 -19
  447. package/dist/utils/object-utils.js +148 -186
  448. package/dist/utils/path-utils.js +67 -57
  449. package/dist/utils/process-utils.d.ts.map +1 -1
  450. package/dist/utils/process-utils.js +37 -31
  451. package/dist/utils/sql-parser.d.ts +1 -1
  452. package/dist/utils/sql-parser.d.ts.map +1 -1
  453. package/dist/utils/sql-parser.js +40 -40
  454. package/dist/utils/type-utils.js +44 -43
  455. package/dist/utils/utils.d.ts +2 -3
  456. package/dist/utils/utils.d.ts.map +1 -1
  457. package/dist/utils/utils.js +81 -93
  458. package/dist/utils/zod-error.d.ts +1 -1
  459. package/dist/utils/zod-error.d.ts.map +1 -1
  460. package/dist/utils/zod-error.js +24 -17
  461. package/dist/vector/chunking.d.ts +1 -1
  462. package/dist/vector/chunking.d.ts.map +1 -1
  463. package/dist/vector/chunking.js +100 -94
  464. package/dist/vector/config.d.ts +1 -1
  465. package/dist/vector/config.d.ts.map +1 -1
  466. package/dist/vector/config.js +76 -78
  467. package/dist/vector/embedding.d.ts +1 -1
  468. package/dist/vector/embedding.d.ts.map +1 -1
  469. package/dist/vector/embedding.js +128 -125
  470. package/dist/vector/index.js +5 -5
  471. package/dist/vector/types.js +1 -5
  472. package/package.json +31 -36
  473. package/src/ai/agents/agent.ts +12 -5
  474. package/src/ai/agents/types.ts +5 -5
  475. package/src/ai/providers/rtzr/model.ts +8 -10
  476. package/src/ai/providers/rtzr/options.ts +2 -1
  477. package/src/ai/providers/rtzr/provider.ts +5 -3
  478. package/src/ai/providers/rtzr/utils.ts +2 -7
  479. package/src/api/__tests__/config.test.ts +15 -8
  480. package/src/api/base-frame.ts +5 -3
  481. package/src/api/caster.ts +7 -6
  482. package/src/api/code-converters.ts +23 -26
  483. package/src/api/config.ts +23 -17
  484. package/src/api/context.ts +18 -11
  485. package/src/api/decorators.ts +17 -18
  486. package/src/api/sonamu.ts +44 -49
  487. package/src/auth/auth-generator.ts +4 -6
  488. package/src/auth/better-auth-entities.ts +3 -2
  489. package/src/auth/knex-adapter.ts +6 -5
  490. package/src/auth/plugins/entity-definitions/admin.ts +1 -1
  491. package/src/auth/plugins/entity-definitions/anonymous.ts +1 -1
  492. package/src/auth/plugins/entity-definitions/api-key.ts +1 -1
  493. package/src/auth/plugins/entity-definitions/index.ts +1 -1
  494. package/src/auth/plugins/entity-definitions/jwt.ts +1 -1
  495. package/src/auth/plugins/entity-definitions/organization.ts +1 -1
  496. package/src/auth/plugins/entity-definitions/passkey.ts +1 -1
  497. package/src/auth/plugins/entity-definitions/phone-number.ts +1 -1
  498. package/src/auth/plugins/entity-definitions/sso.ts +1 -1
  499. package/src/auth/plugins/entity-definitions/two-factor.ts +1 -1
  500. package/src/auth/plugins/entity-definitions/types.ts +1 -1
  501. package/src/auth/plugins/entity-definitions/username.ts +1 -1
  502. package/src/auth/plugins/wrappers/admin.ts +3 -1
  503. package/src/auth/plugins/wrappers/anonymous.ts +3 -1
  504. package/src/auth/plugins/wrappers/api-key.ts +3 -1
  505. package/src/auth/plugins/wrappers/jwt.ts +3 -1
  506. package/src/auth/plugins/wrappers/organization.ts +3 -1
  507. package/src/auth/plugins/wrappers/passkey.ts +3 -1
  508. package/src/auth/plugins/wrappers/phone-number.ts +3 -1
  509. package/src/auth/plugins/wrappers/sso.ts +2 -1
  510. package/src/auth/plugins/wrappers/two-factor.ts +3 -1
  511. package/src/auth/plugins/wrappers/username.ts +3 -1
  512. package/src/bin/__tests__/ts-loader-register.test.ts +7 -12
  513. package/src/bin/build-config.ts +3 -3
  514. package/src/bin/cli.ts +27 -25
  515. package/src/bin/fixture.ts +4 -2
  516. package/src/bin/hmr-hook-register.ts +1 -0
  517. package/src/bin/test-command.ts +4 -2
  518. package/src/bin/ts-loader-registration.ts +6 -22
  519. package/src/cache/cache-manager.ts +2 -1
  520. package/src/cache/decorator.ts +2 -2
  521. package/src/cache/types.ts +3 -3
  522. package/src/cache-control/cache-control.ts +3 -2
  523. package/src/cache-control/types.ts +2 -2
  524. package/src/compress/compress.ts +1 -1
  525. package/src/cone/cone-generator.ts +5 -3
  526. package/src/database/_batch_update.ts +1 -1
  527. package/src/database/base-model.ts +20 -14
  528. package/src/database/base-model.types.ts +12 -11
  529. package/src/database/db.ts +56 -21
  530. package/src/database/knex.ts +2 -2
  531. package/src/database/puri-subset.test-d.ts +33 -32
  532. package/src/database/puri-subset.types.ts +6 -7
  533. package/src/database/puri-wrapper.ts +29 -26
  534. package/src/database/puri.ts +36 -34
  535. package/src/database/puri.types.test-d.ts +6 -5
  536. package/src/database/puri.types.ts +9 -12
  537. package/src/database/transaction-context.ts +2 -2
  538. package/src/database/upsert-builder.ts +17 -10
  539. package/src/dict/sd.ts +17 -4
  540. package/src/dict/sonamu-dictionary.ts +23 -17
  541. package/src/entity/entity-manager.ts +9 -7
  542. package/src/entity/entity-template-cone.ts +10 -3
  543. package/src/entity/entity.ts +20 -16
  544. package/src/exceptions/error-handler.ts +2 -1
  545. package/src/exceptions/so-exceptions.ts +1 -1
  546. package/src/filter/utils.ts +3 -2
  547. package/src/logger/category.ts +1 -0
  548. package/src/logger/configure.ts +5 -5
  549. package/src/migration/__tests__/code-generation.search-text.test.ts +2 -3
  550. package/src/migration/code-generation.ts +26 -25
  551. package/src/migration/migration-set.ts +16 -18
  552. package/src/migration/migrator.ts +38 -33
  553. package/src/migration/postgresql-schema-reader.ts +12 -12
  554. package/src/migration/slack-confirm.ts +5 -4
  555. package/src/migration/types.ts +2 -2
  556. package/src/naite/messaging-types.ts +1 -1
  557. package/src/naite/naite-reporter.ts +5 -3
  558. package/src/naite/naite.ts +12 -7
  559. package/src/shared/app.shared.ts.txt +2 -2
  560. package/src/shared/web.shared.ts.txt +2 -2
  561. package/src/skills/AGENTS.md +19 -18
  562. package/src/skills/commands/sonamu-skills.md +9 -9
  563. package/src/skills/sonamu/SKILL.md +111 -104
  564. package/src/skills/sonamu/ai-agents.md +27 -26
  565. package/src/skills/sonamu/api.md +81 -69
  566. package/src/skills/sonamu/auth-migration.md +13 -27
  567. package/src/skills/sonamu/auth-plugins.md +41 -31
  568. package/src/skills/sonamu/auth.md +30 -24
  569. package/src/skills/sonamu/cdd.md +26 -17
  570. package/src/skills/sonamu/cone.md +50 -50
  571. package/src/skills/sonamu/config.md +74 -51
  572. package/src/skills/sonamu/create-sonamu.md +31 -19
  573. package/src/skills/sonamu/database.md +43 -26
  574. package/src/skills/sonamu/entity-basic.md +61 -61
  575. package/src/skills/sonamu/entity-relations.md +84 -80
  576. package/src/skills/sonamu/entity-validation-checklist.md +19 -15
  577. package/src/skills/sonamu/fixture-cli.md +52 -30
  578. package/src/skills/sonamu/framework-change.md +9 -7
  579. package/src/skills/sonamu/frontend.md +64 -82
  580. package/src/skills/sonamu/i18n.md +45 -37
  581. package/src/skills/sonamu/migration.md +54 -31
  582. package/src/skills/sonamu/model.md +98 -66
  583. package/src/skills/sonamu/naite.md +34 -32
  584. package/src/skills/sonamu/project-init.md +28 -8
  585. package/src/skills/sonamu/puri.md +82 -91
  586. package/src/skills/sonamu/scaffolding.md +44 -32
  587. package/src/skills/sonamu/skill-contribution.md +50 -45
  588. package/src/skills/sonamu/subset.md +13 -13
  589. package/src/skills/sonamu/tasks.md +73 -58
  590. package/src/skills/sonamu/testing-devrunner.md +56 -36
  591. package/src/skills/sonamu/testing.md +23 -58
  592. package/src/skills/sonamu/upsert.md +32 -31
  593. package/src/skills/sonamu/vector.md +37 -36
  594. package/src/ssr/index.ts +2 -12
  595. package/src/ssr/registry.ts +1 -1
  596. package/src/ssr/renderer.ts +7 -5
  597. package/src/ssr/types.ts +2 -2
  598. package/src/storage/buffered-file.ts +4 -2
  599. package/src/storage/drivers.ts +3 -2
  600. package/src/storage/s3-driver.ts +7 -4
  601. package/src/storage/storage-manager.ts +3 -2
  602. package/src/storage/types.ts +3 -2
  603. package/src/storage/uploaded-file.ts +1 -1
  604. package/src/stream/sse.ts +2 -2
  605. package/src/syncer/api-parser.ts +8 -5
  606. package/src/syncer/checksum.ts +9 -5
  607. package/src/syncer/code-generator.ts +16 -8
  608. package/src/syncer/entity-operations.ts +5 -3
  609. package/src/syncer/file-patterns.ts +2 -1
  610. package/src/syncer/module-loader.ts +9 -6
  611. package/src/syncer/syncer-actions.ts +5 -3
  612. package/src/syncer/syncer.ts +18 -24
  613. package/src/tasks/decorator.ts +10 -8
  614. package/src/tasks/step-wrapper.ts +1 -1
  615. package/src/tasks/workflow-manager.ts +18 -15
  616. package/src/template/__tests__/generated.template.search-text.test.ts +1 -0
  617. package/src/template/entity-converter.ts +4 -2
  618. package/src/template/generated.template.test-d.ts +2 -1
  619. package/src/template/helpers.ts +5 -2
  620. package/src/template/implementations/entity.template.ts +9 -8
  621. package/src/template/implementations/entry-server.template.ts +1 -1
  622. package/src/template/implementations/generated.template.ts +21 -29
  623. package/src/template/implementations/generated_http.template.ts +9 -6
  624. package/src/template/implementations/generated_sso.template.ts +6 -4
  625. package/src/template/implementations/init_types.template.ts +3 -2
  626. package/src/template/implementations/model.template.ts +4 -2
  627. package/src/template/implementations/model_test.template.ts +3 -2
  628. package/src/template/implementations/queries.template.ts +6 -14
  629. package/src/template/implementations/sd.template.ts +4 -2
  630. package/src/template/implementations/services.template.ts +7 -11
  631. package/src/template/implementations/view_form.template.ts +5 -3
  632. package/src/template/implementations/view_id_all_select.template.ts +3 -2
  633. package/src/template/implementations/view_list.template.ts +7 -5
  634. package/src/template/implementations/view_search_input.template.ts +3 -2
  635. package/src/template/template-manager.ts +4 -3
  636. package/src/template/template.ts +4 -3
  637. package/src/template/zod-converter.ts +10 -7
  638. package/src/testing/__tests__/dev-test-routes.test.ts +3 -2
  639. package/src/testing/__tests__/dev-vitest-manager.test.ts +1 -0
  640. package/src/testing/_relation-graph.ts +2 -2
  641. package/src/testing/bootstrap.ts +55 -27
  642. package/src/testing/data-explorer.ts +5 -4
  643. package/src/testing/dev-test-routes.ts +8 -5
  644. package/src/testing/dev-vitest-manager.ts +13 -12
  645. package/src/testing/fixture-generator.ts +11 -17
  646. package/src/testing/fixture-manager.ts +21 -17
  647. package/src/testing/parallel-db-manager.ts +2 -1
  648. package/src/testing/vitest-helpers.ts +2 -1
  649. package/src/types/__tests__/entity-json-schema-search-text.test.ts +1 -0
  650. package/src/types/types.ts +8 -8
  651. package/src/typings/knex.d.ts +4 -4
  652. package/src/ui/ai-api.ts +5 -3
  653. package/src/ui/ai-client.ts +6 -5
  654. package/src/ui/api.ts +25 -23
  655. package/src/ui/cdd-service.ts +12 -11
  656. package/src/utils/console-util.ts +3 -1
  657. package/src/utils/formatter.ts +94 -102
  658. package/src/utils/fs-utils.ts +2 -1
  659. package/src/utils/model.ts +2 -2
  660. package/src/utils/object-utils.ts +3 -3
  661. package/src/utils/process-utils.ts +2 -1
  662. package/src/utils/sql-parser.ts +10 -1
  663. package/src/utils/type-utils.ts +3 -3
  664. package/src/utils/utils.ts +9 -7
  665. package/src/utils/zod-error.ts +1 -1
  666. package/src/vector/chunking.ts +1 -1
  667. package/src/vector/config.ts +1 -1
  668. package/src/vector/embedding.ts +11 -9
  669. package/tsdown.api.config.ts +50 -0
  670. package/.swcrc.project-default +0 -18
  671. package/dist/api/__tests__/config.test.js +0 -189
  672. package/dist/bin/__tests__/test-command.test.js +0 -112
  673. package/dist/bin/__tests__/ts-loader-register.test.js +0 -45
  674. package/dist/database/puri-subset.test-d.js +0 -89
  675. package/dist/database/puri.types.test-d.js +0 -129
  676. package/dist/migration/__tests__/code-generation.search-text.test.js +0 -435
  677. package/dist/template/__tests__/generated.template.search-text.test.js +0 -99
  678. package/dist/template/generated.template.test-d.js +0 -24
  679. package/dist/testing/__tests__/dev-test-routes.test.js +0 -144
  680. package/dist/testing/__tests__/dev-vitest-manager.test.js +0 -152
  681. package/dist/types/__tests__/entity-json-schema-search-text.test.js +0 -256
  682. package/dist/typings/knex.d.js +0 -3
  683. package/dist/ui-web/assets/index-CKo0Z2Iu.css +0 -1
  684. package/dist/ui-web/assets/index-DK-2aacv.js +0 -257
@@ -1,4 +1,4 @@
1
- import type { FixtureRecord } from "../types/types";
1
+ import { type FixtureRecord } from "../types/types";
2
2
  export declare class RelationGraph {
3
3
  private graph;
4
4
  buildGraph(fixtures: FixtureRecord[]): void;
@@ -1 +1 @@
1
- {"version":3,"file":"_relation-graph.d.ts","sourceRoot":"","sources":["../../src/testing/_relation-graph.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAc,aAAa,EAAgB,MAAM,gBAAgB,CAAC;AAS9E,qBAAa,aAAa;IACxB,OAAO,CAAC,KAAK,CAAwC;IAErD,UAAU,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,IAAI;IA+C3C,iBAAiB,IAAI,MAAM,EAAE;CAyD9B"}
1
+ {"version":3,"file":"_relation-graph.d.ts","sourceRoot":"","sources":["../../src/testing/_relation-graph.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,aAAa,EAAqB,MAAM,gBAAgB,CAAC;AASvE,qBAAa,aAAa;IACxB,OAAO,CAAC,KAAK,CAAwC;IAErD,UAAU,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,IAAI;IA+C3C,iBAAiB,IAAI,MAAM,EAAE;CAyD9B"}
@@ -1,89 +1,94 @@
1
- import { EntityManager } from "../entity/entity-manager.js";
2
- import { isBelongsToOneRelationProp, isManyToManyRelationProp, isOneToOneRelationProp, isRelationProp } from "../types/types.js";
3
- // 관계 그래프 처리를 별도 클래스로 분리
4
- export class RelationGraph {
5
- graph = new Map();
6
- buildGraph(fixtures) {
7
- this.graph.clear();
8
- // 1. 노드 추가
9
- for (const fixture of fixtures){
10
- this.graph.set(fixture.fixtureId, {
11
- fixtureId: fixture.fixtureId,
12
- entityId: fixture.entityId,
13
- related: new Set()
14
- });
15
- }
16
- // 2. 의존성 추가
17
- for (const fixture of fixtures){
18
- const node = this.graph.get(fixture.fixtureId);
19
- if (node === undefined) {
20
- throw new Error(`Node not found for fixture ${fixture.fixtureId}`);
21
- }
22
- for (const [, column] of Object.entries(fixture.columns)){
23
- const prop = column.prop;
24
- if (isRelationProp(prop)) {
25
- if (isBelongsToOneRelationProp(prop) || isOneToOneRelationProp(prop) && prop.hasJoinColumn) {
26
- const relatedFixtureId = `${prop.with}#${column.value}`;
27
- if (this.graph.has(relatedFixtureId)) {
28
- node.related.add(relatedFixtureId);
29
- }
30
- } else if (isManyToManyRelationProp(prop)) {
31
- // ManyToMany 관계의 경우 양방향 의존성 추가
32
- const relatedIds = column.value;
33
- for (const relatedId of relatedIds){
34
- const relatedFixtureId = `${prop.with}#${relatedId}`;
35
- if (this.graph.has(relatedFixtureId)) {
36
- node.related.add(relatedFixtureId);
37
- this.graph.get(relatedFixtureId)?.related.add(fixture.fixtureId);
38
- }
39
- }
40
- }
41
- }
42
- }
43
- }
44
- }
45
- getInsertionOrder() {
46
- const visited = new Set();
47
- const order = [];
48
- const tempVisited = new Set();
49
- const visit = (fixtureId)=>{
50
- if (visited.has(fixtureId)) return;
51
- if (tempVisited.has(fixtureId)) {
52
- console.warn(`Circular dependency detected involving: ${fixtureId}`);
53
- return;
54
- }
55
- tempVisited.add(fixtureId);
56
- const node = this.graph.get(fixtureId);
57
- if (node === undefined) {
58
- throw new Error(`Node not found for fixture ${fixtureId}`);
59
- }
60
- const entity = EntityManager.get(node.entityId);
61
- for (const depId of node.related){
62
- const depNode = this.graph.get(depId);
63
- if (depNode === undefined) {
64
- throw new Error(`Node not found for fixture ${depId}`);
65
- }
66
- // BelongsToOne 관계이면서 nullable이 아닌 경우 먼저 방문
67
- const relationProp = entity.props.find((prop)=>isRelationProp(prop) && (isBelongsToOneRelationProp(prop) || isOneToOneRelationProp(prop) && prop.hasJoinColumn) && prop.with === depNode.entityId);
68
- if (relationProp && !relationProp.nullable) {
69
- visit(depId);
70
- }
71
- }
72
- tempVisited.delete(fixtureId);
73
- visited.add(fixtureId);
74
- order.push(fixtureId);
75
- };
76
- for (const fixtureId of this.graph.keys()){
77
- visit(fixtureId);
78
- }
79
- // circular dependency로 인해 방문되지 않은 fixtureId 추가
80
- for (const fixtureId of this.graph.keys()){
81
- if (!visited.has(fixtureId)) {
82
- order.push(fixtureId);
83
- }
84
- }
85
- return order;
86
- }
87
- }
1
+ import { __esmMin } from "../_virtual/rolldown_runtime.js";
2
+ import { init_types, isBelongsToOneRelationProp, isManyToManyRelationProp, isOneToOneRelationProp, isRelationProp } from "../types/types.js";
3
+ import { EntityManager, init_entity_manager } from "../entity/entity-manager.js";
88
4
 
89
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZXN0aW5nL19yZWxhdGlvbi1ncmFwaC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbnRpdHlNYW5hZ2VyIH0gZnJvbSBcIi4uL2VudGl0eS9lbnRpdHktbWFuYWdlclwiO1xuaW1wb3J0IHR5cGUgeyBFbnRpdHlQcm9wLCBGaXh0dXJlUmVjb3JkLCBSZWxhdGlvbk5vZGUgfSBmcm9tIFwiLi4vdHlwZXMvdHlwZXNcIjtcbmltcG9ydCB7XG4gIGlzQmVsb25nc1RvT25lUmVsYXRpb25Qcm9wLFxuICBpc01hbnlUb01hbnlSZWxhdGlvblByb3AsXG4gIGlzT25lVG9PbmVSZWxhdGlvblByb3AsXG4gIGlzUmVsYXRpb25Qcm9wLFxufSBmcm9tIFwiLi4vdHlwZXMvdHlwZXNcIjtcblxuLy8g6rSA6rOEIOq3uOuemO2UhCDsspjrpqzrpbwg67OE64+EIO2BtOuemOyKpOuhnCDrtoTrpqxcbmV4cG9ydCBjbGFzcyBSZWxhdGlvbkdyYXBoIHtcbiAgcHJpdmF0ZSBncmFwaDogTWFwPHN0cmluZywgUmVsYXRpb25Ob2RlPiA9IG5ldyBNYXAoKTtcblxuICBidWlsZEdyYXBoKGZpeHR1cmVzOiBGaXh0dXJlUmVjb3JkW10pOiB2b2lkIHtcbiAgICB0aGlzLmdyYXBoLmNsZWFyKCk7XG5cbiAgICAvLyAxLiDrhbjrk5wg7LaU6rCAXG4gICAgZm9yIChjb25zdCBmaXh0dXJlIG9mIGZpeHR1cmVzKSB7XG4gICAgICB0aGlzLmdyYXBoLnNldChmaXh0dXJlLmZpeHR1cmVJZCwge1xuICAgICAgICBmaXh0dXJlSWQ6IGZpeHR1cmUuZml4dHVyZUlkLFxuICAgICAgICBlbnRpdHlJZDogZml4dHVyZS5lbnRpdHlJZCxcbiAgICAgICAgcmVsYXRlZDogbmV3IFNldCgpLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gMi4g7J2Y7KG07ISxIOy2lOqwgFxuICAgIGZvciAoY29uc3QgZml4dHVyZSBvZiBmaXh0dXJlcykge1xuICAgICAgY29uc3Qgbm9kZSA9IHRoaXMuZ3JhcGguZ2V0KGZpeHR1cmUuZml4dHVyZUlkKTtcbiAgICAgIGlmIChub2RlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBOb2RlIG5vdCBmb3VuZCBmb3IgZml4dHVyZSAke2ZpeHR1cmUuZml4dHVyZUlkfWApO1xuICAgICAgfVxuXG4gICAgICBmb3IgKGNvbnN0IFssIGNvbHVtbl0gb2YgT2JqZWN0LmVudHJpZXMoZml4dHVyZS5jb2x1bW5zKSkge1xuICAgICAgICBjb25zdCBwcm9wID0gY29sdW1uLnByb3AgYXMgRW50aXR5UHJvcDtcblxuICAgICAgICBpZiAoaXNSZWxhdGlvblByb3AocHJvcCkpIHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBpc0JlbG9uZ3NUb09uZVJlbGF0aW9uUHJvcChwcm9wKSB8fFxuICAgICAgICAgICAgKGlzT25lVG9PbmVSZWxhdGlvblByb3AocHJvcCkgJiYgcHJvcC5oYXNKb2luQ29sdW1uKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgY29uc3QgcmVsYXRlZEZpeHR1cmVJZCA9IGAke3Byb3Aud2l0aH0jJHtjb2x1bW4udmFsdWV9YDtcbiAgICAgICAgICAgIGlmICh0aGlzLmdyYXBoLmhhcyhyZWxhdGVkRml4dHVyZUlkKSkge1xuICAgICAgICAgICAgICBub2RlLnJlbGF0ZWQuYWRkKHJlbGF0ZWRGaXh0dXJlSWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSBpZiAoaXNNYW55VG9NYW55UmVsYXRpb25Qcm9wKHByb3ApKSB7XG4gICAgICAgICAgICAvLyBNYW55VG9NYW55IOq0gOqzhOydmCDqsr3smrAg7JaR67Cp7ZalIOydmOyhtOyEsSDstpTqsIBcbiAgICAgICAgICAgIGNvbnN0IHJlbGF0ZWRJZHMgPSBjb2x1bW4udmFsdWUgYXMgdW5rbm93biBhcyAobnVtYmVyIHwgc3RyaW5nKVtdO1xuICAgICAgICAgICAgZm9yIChjb25zdCByZWxhdGVkSWQgb2YgcmVsYXRlZElkcykge1xuICAgICAgICAgICAgICBjb25zdCByZWxhdGVkRml4dHVyZUlkID0gYCR7cHJvcC53aXRofSMke3JlbGF0ZWRJZH1gO1xuICAgICAgICAgICAgICBpZiAodGhpcy5ncmFwaC5oYXMocmVsYXRlZEZpeHR1cmVJZCkpIHtcbiAgICAgICAgICAgICAgICBub2RlLnJlbGF0ZWQuYWRkKHJlbGF0ZWRGaXh0dXJlSWQpO1xuICAgICAgICAgICAgICAgIHRoaXMuZ3JhcGguZ2V0KHJlbGF0ZWRGaXh0dXJlSWQpPy5yZWxhdGVkLmFkZChmaXh0dXJlLmZpeHR1cmVJZCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXRJbnNlcnRpb25PcmRlcigpOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgdmlzaXRlZCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgIGNvbnN0IG9yZGVyOiBzdHJpbmdbXSA9IFtdO1xuICAgIGNvbnN0IHRlbXBWaXNpdGVkID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbiAgICBjb25zdCB2aXNpdCA9IChmaXh0dXJlSWQ6IHN0cmluZykgPT4ge1xuICAgICAgaWYgKHZpc2l0ZWQuaGFzKGZpeHR1cmVJZCkpIHJldHVybjtcbiAgICAgIGlmICh0ZW1wVmlzaXRlZC5oYXMoZml4dHVyZUlkKSkge1xuICAgICAgICBjb25zb2xlLndhcm4oYENpcmN1bGFyIGRlcGVuZGVuY3kgZGV0ZWN0ZWQgaW52b2x2aW5nOiAke2ZpeHR1cmVJZH1gKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0ZW1wVmlzaXRlZC5hZGQoZml4dHVyZUlkKTtcblxuICAgICAgY29uc3Qgbm9kZSA9IHRoaXMuZ3JhcGguZ2V0KGZpeHR1cmVJZCk7XG4gICAgICBpZiAobm9kZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgTm9kZSBub3QgZm91bmQgZm9yIGZpeHR1cmUgJHtmaXh0dXJlSWR9YCk7XG4gICAgICB9XG4gICAgICBjb25zdCBlbnRpdHkgPSBFbnRpdHlNYW5hZ2VyLmdldChub2RlLmVudGl0eUlkKTtcblxuICAgICAgZm9yIChjb25zdCBkZXBJZCBvZiBub2RlLnJlbGF0ZWQpIHtcbiAgICAgICAgY29uc3QgZGVwTm9kZSA9IHRoaXMuZ3JhcGguZ2V0KGRlcElkKTtcbiAgICAgICAgaWYgKGRlcE5vZGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgTm9kZSBub3QgZm91bmQgZm9yIGZpeHR1cmUgJHtkZXBJZH1gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEJlbG9uZ3NUb09uZSDqtIDqs4TsnbTrqbTshJwgbnVsbGFibGXsnbQg7JWE64uMIOqyveyasCDrqLzsoIAg67Cp66y4XG4gICAgICAgIGNvbnN0IHJlbGF0aW9uUHJvcCA9IGVudGl0eS5wcm9wcy5maW5kKFxuICAgICAgICAgIChwcm9wKSA9PlxuICAgICAgICAgICAgaXNSZWxhdGlvblByb3AocHJvcCkgJiZcbiAgICAgICAgICAgIChpc0JlbG9uZ3NUb09uZVJlbGF0aW9uUHJvcChwcm9wKSB8fFxuICAgICAgICAgICAgICAoaXNPbmVUb09uZVJlbGF0aW9uUHJvcChwcm9wKSAmJiBwcm9wLmhhc0pvaW5Db2x1bW4pKSAmJlxuICAgICAgICAgICAgcHJvcC53aXRoID09PSBkZXBOb2RlLmVudGl0eUlkLFxuICAgICAgICApO1xuICAgICAgICBpZiAocmVsYXRpb25Qcm9wICYmICFyZWxhdGlvblByb3AubnVsbGFibGUpIHtcbiAgICAgICAgICB2aXNpdChkZXBJZCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdGVtcFZpc2l0ZWQuZGVsZXRlKGZpeHR1cmVJZCk7XG4gICAgICB2aXNpdGVkLmFkZChmaXh0dXJlSWQpO1xuICAgICAgb3JkZXIucHVzaChmaXh0dXJlSWQpO1xuICAgIH07XG5cbiAgICBmb3IgKGNvbnN0IGZpeHR1cmVJZCBvZiB0aGlzLmdyYXBoLmtleXMoKSkge1xuICAgICAgdmlzaXQoZml4dHVyZUlkKTtcbiAgICB9XG5cbiAgICAvLyBjaXJjdWxhciBkZXBlbmRlbmN566GcIOyduO2VtCDrsKnrrLjrkJjsp4Ag7JWK7J2AIGZpeHR1cmVJZCDstpTqsIBcbiAgICBmb3IgKGNvbnN0IGZpeHR1cmVJZCBvZiB0aGlzLmdyYXBoLmtleXMoKSkge1xuICAgICAgaWYgKCF2aXNpdGVkLmhhcyhmaXh0dXJlSWQpKSB7XG4gICAgICAgIG9yZGVyLnB1c2goZml4dHVyZUlkKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gb3JkZXI7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJFbnRpdHlNYW5hZ2VyIiwiaXNCZWxvbmdzVG9PbmVSZWxhdGlvblByb3AiLCJpc01hbnlUb01hbnlSZWxhdGlvblByb3AiLCJpc09uZVRvT25lUmVsYXRpb25Qcm9wIiwiaXNSZWxhdGlvblByb3AiLCJSZWxhdGlvbkdyYXBoIiwiZ3JhcGgiLCJNYXAiLCJidWlsZEdyYXBoIiwiZml4dHVyZXMiLCJjbGVhciIsImZpeHR1cmUiLCJzZXQiLCJmaXh0dXJlSWQiLCJlbnRpdHlJZCIsInJlbGF0ZWQiLCJTZXQiLCJub2RlIiwiZ2V0IiwidW5kZWZpbmVkIiwiRXJyb3IiLCJjb2x1bW4iLCJPYmplY3QiLCJlbnRyaWVzIiwiY29sdW1ucyIsInByb3AiLCJoYXNKb2luQ29sdW1uIiwicmVsYXRlZEZpeHR1cmVJZCIsIndpdGgiLCJ2YWx1ZSIsImhhcyIsImFkZCIsInJlbGF0ZWRJZHMiLCJyZWxhdGVkSWQiLCJnZXRJbnNlcnRpb25PcmRlciIsInZpc2l0ZWQiLCJvcmRlciIsInRlbXBWaXNpdGVkIiwidmlzaXQiLCJjb25zb2xlIiwid2FybiIsImVudGl0eSIsImRlcElkIiwiZGVwTm9kZSIsInJlbGF0aW9uUHJvcCIsInByb3BzIiwiZmluZCIsIm51bGxhYmxlIiwiZGVsZXRlIiwicHVzaCIsImtleXMiXSwibWFwcGluZ3MiOiJB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
5
+ //#region src/testing/_relation-graph.ts
6
+ var RelationGraph;
7
+ var init__relation_graph = __esmMin((() => {
8
+ init_entity_manager();
9
+ init_types();
10
+ RelationGraph = class {
11
+ graph = new Map();
12
+ buildGraph(fixtures) {
13
+ this.graph.clear();
14
+ for (const fixture of fixtures) {
15
+ this.graph.set(fixture.fixtureId, {
16
+ fixtureId: fixture.fixtureId,
17
+ entityId: fixture.entityId,
18
+ related: new Set()
19
+ });
20
+ }
21
+ for (const fixture of fixtures) {
22
+ const node = this.graph.get(fixture.fixtureId);
23
+ if (node === undefined) {
24
+ throw new Error(`Node not found for fixture ${fixture.fixtureId}`);
25
+ }
26
+ for (const [, column] of Object.entries(fixture.columns)) {
27
+ const prop = column.prop;
28
+ if (isRelationProp(prop)) {
29
+ if (isBelongsToOneRelationProp(prop) || isOneToOneRelationProp(prop) && prop.hasJoinColumn) {
30
+ const relatedFixtureId = `${prop.with}#${column.value}`;
31
+ if (this.graph.has(relatedFixtureId)) {
32
+ node.related.add(relatedFixtureId);
33
+ }
34
+ } else if (isManyToManyRelationProp(prop)) {
35
+ const relatedIds = column.value;
36
+ for (const relatedId of relatedIds) {
37
+ const relatedFixtureId = `${prop.with}#${relatedId}`;
38
+ if (this.graph.has(relatedFixtureId)) {
39
+ node.related.add(relatedFixtureId);
40
+ this.graph.get(relatedFixtureId)?.related.add(fixture.fixtureId);
41
+ }
42
+ }
43
+ }
44
+ }
45
+ }
46
+ }
47
+ }
48
+ getInsertionOrder() {
49
+ const visited = new Set();
50
+ const order = [];
51
+ const tempVisited = new Set();
52
+ const visit = (fixtureId) => {
53
+ if (visited.has(fixtureId)) return;
54
+ if (tempVisited.has(fixtureId)) {
55
+ console.warn(`Circular dependency detected involving: ${fixtureId}`);
56
+ return;
57
+ }
58
+ tempVisited.add(fixtureId);
59
+ const node = this.graph.get(fixtureId);
60
+ if (node === undefined) {
61
+ throw new Error(`Node not found for fixture ${fixtureId}`);
62
+ }
63
+ const entity = EntityManager.get(node.entityId);
64
+ for (const depId of node.related) {
65
+ const depNode = this.graph.get(depId);
66
+ if (depNode === undefined) {
67
+ throw new Error(`Node not found for fixture ${depId}`);
68
+ }
69
+ const relationProp = entity.props.find((prop) => isRelationProp(prop) && (isBelongsToOneRelationProp(prop) || isOneToOneRelationProp(prop) && prop.hasJoinColumn) && prop.with === depNode.entityId);
70
+ if (relationProp && !relationProp.nullable) {
71
+ visit(depId);
72
+ }
73
+ }
74
+ tempVisited.delete(fixtureId);
75
+ visited.add(fixtureId);
76
+ order.push(fixtureId);
77
+ };
78
+ for (const fixtureId of this.graph.keys()) {
79
+ visit(fixtureId);
80
+ }
81
+ for (const fixtureId of this.graph.keys()) {
82
+ if (!visited.has(fixtureId)) {
83
+ order.push(fixtureId);
84
+ }
85
+ }
86
+ return order;
87
+ }
88
+ };
89
+ }));
90
+
91
+ //#endregion
92
+ init__relation_graph();
93
+ export { RelationGraph, init__relation_graph };
94
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiX3JlbGF0aW9uLWdyYXBoLmpzIiwibmFtZXMiOlsib3JkZXI6IHN0cmluZ1tdIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rlc3RpbmcvX3JlbGF0aW9uLWdyYXBoLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVudGl0eU1hbmFnZXIgfSBmcm9tIFwiLi4vZW50aXR5L2VudGl0eS1tYW5hZ2VyXCI7XG5pbXBvcnQgeyB0eXBlIEZpeHR1cmVSZWNvcmQsIHR5cGUgUmVsYXRpb25Ob2RlIH0gZnJvbSBcIi4uL3R5cGVzL3R5cGVzXCI7XG5pbXBvcnQge1xuICBpc0JlbG9uZ3NUb09uZVJlbGF0aW9uUHJvcCxcbiAgaXNNYW55VG9NYW55UmVsYXRpb25Qcm9wLFxuICBpc09uZVRvT25lUmVsYXRpb25Qcm9wLFxuICBpc1JlbGF0aW9uUHJvcCxcbn0gZnJvbSBcIi4uL3R5cGVzL3R5cGVzXCI7XG5cbi8vIOq0gOqzhCDqt7jrnpjtlIQg7LKY66as66W8IOuzhOuPhCDtgbTrnpjsiqTroZwg67aE66asXG5leHBvcnQgY2xhc3MgUmVsYXRpb25HcmFwaCB7XG4gIHByaXZhdGUgZ3JhcGg6IE1hcDxzdHJpbmcsIFJlbGF0aW9uTm9kZT4gPSBuZXcgTWFwKCk7XG5cbiAgYnVpbGRHcmFwaChmaXh0dXJlczogRml4dHVyZVJlY29yZFtdKTogdm9pZCB7XG4gICAgdGhpcy5ncmFwaC5jbGVhcigpO1xuXG4gICAgLy8gMS4g64W465OcIOy2lOqwgFxuICAgIGZvciAoY29uc3QgZml4dHVyZSBvZiBmaXh0dXJlcykge1xuICAgICAgdGhpcy5ncmFwaC5zZXQoZml4dHVyZS5maXh0dXJlSWQsIHtcbiAgICAgICAgZml4dHVyZUlkOiBmaXh0dXJlLmZpeHR1cmVJZCxcbiAgICAgICAgZW50aXR5SWQ6IGZpeHR1cmUuZW50aXR5SWQsXG4gICAgICAgIHJlbGF0ZWQ6IG5ldyBTZXQoKSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIDIuIOydmOyhtOyEsSDstpTqsIBcbiAgICBmb3IgKGNvbnN0IGZpeHR1cmUgb2YgZml4dHVyZXMpIHtcbiAgICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdyYXBoLmdldChmaXh0dXJlLmZpeHR1cmVJZCk7XG4gICAgICBpZiAobm9kZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgTm9kZSBub3QgZm91bmQgZm9yIGZpeHR1cmUgJHtmaXh0dXJlLmZpeHR1cmVJZH1gKTtcbiAgICAgIH1cblxuICAgICAgZm9yIChjb25zdCBbLCBjb2x1bW5dIG9mIE9iamVjdC5lbnRyaWVzKGZpeHR1cmUuY29sdW1ucykpIHtcbiAgICAgICAgY29uc3QgcHJvcCA9IGNvbHVtbi5wcm9wO1xuXG4gICAgICAgIGlmIChpc1JlbGF0aW9uUHJvcChwcm9wKSkge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGlzQmVsb25nc1RvT25lUmVsYXRpb25Qcm9wKHByb3ApIHx8XG4gICAgICAgICAgICAoaXNPbmVUb09uZVJlbGF0aW9uUHJvcChwcm9wKSAmJiBwcm9wLmhhc0pvaW5Db2x1bW4pXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBjb25zdCByZWxhdGVkRml4dHVyZUlkID0gYCR7cHJvcC53aXRofSMke2NvbHVtbi52YWx1ZX1gO1xuICAgICAgICAgICAgaWYgKHRoaXMuZ3JhcGguaGFzKHJlbGF0ZWRGaXh0dXJlSWQpKSB7XG4gICAgICAgICAgICAgIG5vZGUucmVsYXRlZC5hZGQocmVsYXRlZEZpeHR1cmVJZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIGlmIChpc01hbnlUb01hbnlSZWxhdGlvblByb3AocHJvcCkpIHtcbiAgICAgICAgICAgIC8vIE1hbnlUb01hbnkg6rSA6rOE7J2YIOqyveyasCDslpHrsKntlqUg7J2Y7KG07ISxIOy2lOqwgFxuICAgICAgICAgICAgY29uc3QgcmVsYXRlZElkcyA9IGNvbHVtbi52YWx1ZSBhcyB1bmtub3duIGFzIChudW1iZXIgfCBzdHJpbmcpW107XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHJlbGF0ZWRJZCBvZiByZWxhdGVkSWRzKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHJlbGF0ZWRGaXh0dXJlSWQgPSBgJHtwcm9wLndpdGh9IyR7cmVsYXRlZElkfWA7XG4gICAgICAgICAgICAgIGlmICh0aGlzLmdyYXBoLmhhcyhyZWxhdGVkRml4dHVyZUlkKSkge1xuICAgICAgICAgICAgICAgIG5vZGUucmVsYXRlZC5hZGQocmVsYXRlZEZpeHR1cmVJZCk7XG4gICAgICAgICAgICAgICAgdGhpcy5ncmFwaC5nZXQocmVsYXRlZEZpeHR1cmVJZCk/LnJlbGF0ZWQuYWRkKGZpeHR1cmUuZml4dHVyZUlkKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdldEluc2VydGlvbk9yZGVyKCk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCB2aXNpdGVkID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgY29uc3Qgb3JkZXI6IHN0cmluZ1tdID0gW107XG4gICAgY29uc3QgdGVtcFZpc2l0ZWQgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuICAgIGNvbnN0IHZpc2l0ID0gKGZpeHR1cmVJZDogc3RyaW5nKSA9PiB7XG4gICAgICBpZiAodmlzaXRlZC5oYXMoZml4dHVyZUlkKSkgcmV0dXJuO1xuICAgICAgaWYgKHRlbXBWaXNpdGVkLmhhcyhmaXh0dXJlSWQpKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihgQ2lyY3VsYXIgZGVwZW5kZW5jeSBkZXRlY3RlZCBpbnZvbHZpbmc6ICR7Zml4dHVyZUlkfWApO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRlbXBWaXNpdGVkLmFkZChmaXh0dXJlSWQpO1xuXG4gICAgICBjb25zdCBub2RlID0gdGhpcy5ncmFwaC5nZXQoZml4dHVyZUlkKTtcbiAgICAgIGlmIChub2RlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBOb2RlIG5vdCBmb3VuZCBmb3IgZml4dHVyZSAke2ZpeHR1cmVJZH1gKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGVudGl0eSA9IEVudGl0eU1hbmFnZXIuZ2V0KG5vZGUuZW50aXR5SWQpO1xuXG4gICAgICBmb3IgKGNvbnN0IGRlcElkIG9mIG5vZGUucmVsYXRlZCkge1xuICAgICAgICBjb25zdCBkZXBOb2RlID0gdGhpcy5ncmFwaC5nZXQoZGVwSWQpO1xuICAgICAgICBpZiAoZGVwTm9kZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBOb2RlIG5vdCBmb3VuZCBmb3IgZml4dHVyZSAke2RlcElkfWApO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQmVsb25nc1RvT25lIOq0gOqzhOydtOuptOyEnCBudWxsYWJsZeydtCDslYTri4wg6rK97JqwIOuovOyggCDrsKnrrLhcbiAgICAgICAgY29uc3QgcmVsYXRpb25Qcm9wID0gZW50aXR5LnByb3BzLmZpbmQoXG4gICAgICAgICAgKHByb3ApID0+XG4gICAgICAgICAgICBpc1JlbGF0aW9uUHJvcChwcm9wKSAmJlxuICAgICAgICAgICAgKGlzQmVsb25nc1RvT25lUmVsYXRpb25Qcm9wKHByb3ApIHx8XG4gICAgICAgICAgICAgIChpc09uZVRvT25lUmVsYXRpb25Qcm9wKHByb3ApICYmIHByb3AuaGFzSm9pbkNvbHVtbikpICYmXG4gICAgICAgICAgICBwcm9wLndpdGggPT09IGRlcE5vZGUuZW50aXR5SWQsXG4gICAgICAgICk7XG4gICAgICAgIGlmIChyZWxhdGlvblByb3AgJiYgIXJlbGF0aW9uUHJvcC5udWxsYWJsZSkge1xuICAgICAgICAgIHZpc2l0KGRlcElkKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0ZW1wVmlzaXRlZC5kZWxldGUoZml4dHVyZUlkKTtcbiAgICAgIHZpc2l0ZWQuYWRkKGZpeHR1cmVJZCk7XG4gICAgICBvcmRlci5wdXNoKGZpeHR1cmVJZCk7XG4gICAgfTtcblxuICAgIGZvciAoY29uc3QgZml4dHVyZUlkIG9mIHRoaXMuZ3JhcGgua2V5cygpKSB7XG4gICAgICB2aXNpdChmaXh0dXJlSWQpO1xuICAgIH1cblxuICAgIC8vIGNpcmN1bGFyIGRlcGVuZGVuY3nroZwg7J247ZW0IOuwqeusuOuQmOyngCDslYrsnYAgZml4dHVyZUlkIOy2lOqwgFxuICAgIGZvciAoY29uc3QgZml4dHVyZUlkIG9mIHRoaXMuZ3JhcGgua2V5cygpKSB7XG4gICAgICBpZiAoIXZpc2l0ZWQuaGFzKGZpeHR1cmVJZCkpIHtcbiAgICAgICAgb3JkZXIucHVzaChmaXh0dXJlSWQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBvcmRlcjtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O3NCQUF5RDthQU9qQztDQUdYLGdCQUFiLE1BQTJCO0VBQ3pCLEFBQVEsUUFBbUMsSUFBSSxLQUFLO0VBRXBELFdBQVcsVUFBaUM7QUFDMUMsUUFBSyxNQUFNLE9BQU87QUFHbEIsUUFBSyxNQUFNLFdBQVcsVUFBVTtBQUM5QixTQUFLLE1BQU0sSUFBSSxRQUFRLFdBQVc7S0FDaEMsV0FBVyxRQUFRO0tBQ25CLFVBQVUsUUFBUTtLQUNsQixTQUFTLElBQUksS0FBSztLQUNuQixDQUFDOztBQUlKLFFBQUssTUFBTSxXQUFXLFVBQVU7SUFDOUIsTUFBTSxPQUFPLEtBQUssTUFBTSxJQUFJLFFBQVEsVUFBVTtBQUM5QyxRQUFJLFNBQVMsV0FBVztBQUN0QixXQUFNLElBQUksTUFBTSw4QkFBOEIsUUFBUSxZQUFZOztBQUdwRSxTQUFLLE1BQU0sR0FBRyxXQUFXLE9BQU8sUUFBUSxRQUFRLFFBQVEsRUFBRTtLQUN4RCxNQUFNLE9BQU8sT0FBTztBQUVwQixTQUFJLGVBQWUsS0FBSyxFQUFFO0FBQ3hCLFVBQ0UsMkJBQTJCLEtBQUssSUFDL0IsdUJBQXVCLEtBQUssSUFBSSxLQUFLLGVBQ3RDO09BQ0EsTUFBTSxtQkFBbUIsR0FBRyxLQUFLLEtBQUssR0FBRyxPQUFPO0FBQ2hELFdBQUksS0FBSyxNQUFNLElBQUksaUJBQWlCLEVBQUU7QUFDcEMsYUFBSyxRQUFRLElBQUksaUJBQWlCOztpQkFFM0IseUJBQXlCLEtBQUssRUFBRTtPQUV6QyxNQUFNLGFBQWEsT0FBTztBQUMxQixZQUFLLE1BQU0sYUFBYSxZQUFZO1FBQ2xDLE1BQU0sbUJBQW1CLEdBQUcsS0FBSyxLQUFLLEdBQUc7QUFDekMsWUFBSSxLQUFLLE1BQU0sSUFBSSxpQkFBaUIsRUFBRTtBQUNwQyxjQUFLLFFBQVEsSUFBSSxpQkFBaUI7QUFDbEMsY0FBSyxNQUFNLElBQUksaUJBQWlCLEVBQUUsUUFBUSxJQUFJLFFBQVEsVUFBVTs7Ozs7Ozs7RUFTOUUsb0JBQThCO0dBQzVCLE1BQU0sVUFBVSxJQUFJLEtBQWE7R0FDakMsTUFBTUEsUUFBa0IsRUFBRTtHQUMxQixNQUFNLGNBQWMsSUFBSSxLQUFhO0dBRXJDLE1BQU0sU0FBUyxjQUFzQjtBQUNuQyxRQUFJLFFBQVEsSUFBSSxVQUFVLENBQUU7QUFDNUIsUUFBSSxZQUFZLElBQUksVUFBVSxFQUFFO0FBQzlCLGFBQVEsS0FBSywyQ0FBMkMsWUFBWTtBQUNwRTs7QUFHRixnQkFBWSxJQUFJLFVBQVU7SUFFMUIsTUFBTSxPQUFPLEtBQUssTUFBTSxJQUFJLFVBQVU7QUFDdEMsUUFBSSxTQUFTLFdBQVc7QUFDdEIsV0FBTSxJQUFJLE1BQU0sOEJBQThCLFlBQVk7O0lBRTVELE1BQU0sU0FBUyxjQUFjLElBQUksS0FBSyxTQUFTO0FBRS9DLFNBQUssTUFBTSxTQUFTLEtBQUssU0FBUztLQUNoQyxNQUFNLFVBQVUsS0FBSyxNQUFNLElBQUksTUFBTTtBQUNyQyxTQUFJLFlBQVksV0FBVztBQUN6QixZQUFNLElBQUksTUFBTSw4QkFBOEIsUUFBUTs7S0FJeEQsTUFBTSxlQUFlLE9BQU8sTUFBTSxNQUMvQixTQUNDLGVBQWUsS0FBSyxLQUNuQiwyQkFBMkIsS0FBSyxJQUM5Qix1QkFBdUIsS0FBSyxJQUFJLEtBQUssa0JBQ3hDLEtBQUssU0FBUyxRQUFRLFNBQ3pCO0FBQ0QsU0FBSSxnQkFBZ0IsQ0FBQyxhQUFhLFVBQVU7QUFDMUMsWUFBTSxNQUFNOzs7QUFJaEIsZ0JBQVksT0FBTyxVQUFVO0FBQzdCLFlBQVEsSUFBSSxVQUFVO0FBQ3RCLFVBQU0sS0FBSyxVQUFVOztBQUd2QixRQUFLLE1BQU0sYUFBYSxLQUFLLE1BQU0sTUFBTSxFQUFFO0FBQ3pDLFVBQU0sVUFBVTs7QUFJbEIsUUFBSyxNQUFNLGFBQWEsS0FBSyxNQUFNLE1BQU0sRUFBRTtBQUN6QyxRQUFJLENBQUMsUUFBUSxJQUFJLFVBQVUsRUFBRTtBQUMzQixXQUFNLEtBQUssVUFBVTs7O0FBSXpCLFVBQU8ifQ==
@@ -1,5 +1,6 @@
1
- import { type TestFunction, type TestOptions, type VitestUtils, test as vitestTest } from "vitest";
2
- import type { Context } from "../api/context";
1
+ import { test as vitestTest } from "vitest";
2
+ import { type TestFunction, type TestOptions, type VitestUtils } from "vitest";
3
+ import { type Context } from "../api/context";
3
4
  import { type SerializedTrace } from "../naite/naite";
4
5
  export interface BootstrapOptions {
5
6
  /**
@@ -14,20 +15,28 @@ export interface BootstrapOptions {
14
15
  export declare function bootstrap(vi: VitestUtils, options?: BootstrapOptions): void;
15
16
  export declare function runWithContext(context: Context | null, fn: () => Promise<void>): Promise<void>;
16
17
  export declare function runWithMockContext(fn: () => Promise<void>): Promise<void>;
18
+ type TestResult = Promise<ReturnType<typeof vitestTest>>;
19
+ type TestCallbackResult = void | Promise<void>;
20
+ type TestEach = <TArgs extends readonly unknown[]>(cases: readonly TArgs[]) => (title: string, fn: (...args: TArgs) => TestCallbackResult) => void;
21
+ type TestWrapper = {
22
+ (title: string, fn: TestFunction, options?: TestOptions): TestResult;
23
+ skip: (title: string, fn: TestFunction, options?: TestOptions) => TestResult;
24
+ only: (title: string, fn: TestFunction, options?: TestOptions) => TestResult;
25
+ todo: (title: string) => void;
26
+ each: TestEach;
27
+ };
28
+ type TestAsWrapper = {
29
+ <User extends Context["user"]>(user: User, title: string, fn: TestFunction, options?: TestOptions): TestResult;
30
+ skip: <User extends Context["user"]>(user: User, title: string, fn: TestFunction, options?: TestOptions) => TestResult;
31
+ only: <User extends Context["user"]>(user: User, title: string, fn: TestFunction, options?: TestOptions) => TestResult;
32
+ todo: (title: string) => void;
33
+ };
17
34
  declare module "vitest" {
18
35
  interface TaskMeta {
19
36
  traces: SerializedTrace[];
20
37
  }
21
38
  }
22
- export declare const test: ((title: string, fn: TestFunction<object>, options?: TestOptions) => Promise<void>) & {
23
- skip: (title: string, fn: TestFunction<object>, options?: TestOptions) => Promise<void>;
24
- only: (title: string, fn: TestFunction<object>, options?: TestOptions) => Promise<void>;
25
- todo: (title: string) => void;
26
- each: typeof vitestTest.each;
27
- };
28
- export declare const testAs: (<User extends Context["user"]>(user: User, title: string, fn: TestFunction<object>, options?: TestOptions) => Promise<void>) & {
29
- skip: <User extends Context["user"]>(_user: User, title: string, fn: TestFunction<object>, options?: TestOptions) => Promise<void>;
30
- only: <User extends Context["user"]>(user: User, title: string, fn: TestFunction<object>, options?: TestOptions) => Promise<void>;
31
- todo: (title: string) => void;
32
- };
39
+ export declare const test: TestWrapper;
40
+ export declare const testAs: TestAsWrapper;
41
+ export {};
33
42
  //# sourceMappingURL=bootstrap.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../src/testing/bootstrap.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,IAAI,IAAI,UAAU,EACnB,MAAM,QAAQ,CAAC;AAChB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAG9C,OAAO,EAAS,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAG7D,MAAM,WAAW,gBAAgB;IAC/B;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,wBAAgB,SAAS,CAAC,EAAE,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,gBAAgB,QAmCpE;AAeD,wBAAsB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,iBAGpF;AAED,wBAAsB,kBAAkB,CAAC,EAAE,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,iBAE/D;AAED,OAAO,QAAQ,QAAQ,CAAC;IACtB,UAAU,QAAQ;QAChB,MAAM,EAAE,eAAe,EAAE,CAAC;KAC3B;CACF;AAED,eAAO,MAAM,IAAI,WACD,MAAM,MAAM,YAAY,CAAC,MAAM,CAAC,YAAY,WAAW;kBAc/C,MAAM,MAAM,YAAY,CAAC,MAAM,CAAC,YAAY,WAAW;kBAEvD,MAAM,MAAM,YAAY,CAAC,MAAM,CAAC,YAAY,WAAW;kBAa7D,MAAM;UACsB,OAAO,UAAU,CAAC,IAAI;CAEnE,CAAC;AAEF,eAAO,MAAM,MAAM,IACV,IAAI,SAAS,OAAO,CAAC,MAAM,CAAC,QAC3B,IAAI,SACH,MAAM,MACT,YAAY,CAAC,MAAM,CAAC,YACd,WAAW;WAqBR,IAAI,SAAS,OAAO,CAAC,MAAM,CAAC,SAChC,IAAI,SACJ,MAAM,MACT,YAAY,CAAC,MAAM,CAAC,YACd,WAAW;WAEV,IAAI,SAAS,OAAO,CAAC,MAAM,CAAC,QACjC,IAAI,SACH,MAAM,MACT,YAAY,CAAC,MAAM,CAAC,YACd,WAAW;kBAoBT,MAAM;CAEvB,CAAC"}
1
+ {"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../src/testing/bootstrap.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8C,IAAI,IAAI,UAAU,EAAE,MAAM,QAAQ,CAAC;AACxF,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,QAAQ,CAAC;AAE/E,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAI9C,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAGtD,MAAM,WAAW,gBAAgB;IAC/B;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,wBAAgB,SAAS,CAAC,EAAE,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,gBAAgB,QAmCpE;AAWD,wBAAsB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,iBAGpF;AAED,wBAAsB,kBAAkB,CAAC,EAAE,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,iBAE/D;AAED,KAAK,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC,CAAC;AACzD,KAAK,kBAAkB,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAC/C,KAAK,QAAQ,GAAG,CAAC,KAAK,SAAS,SAAS,OAAO,EAAE,EAC/C,KAAK,EAAE,SAAS,KAAK,EAAE,KACpB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,KAAK,kBAAkB,KAAK,IAAI,CAAC;AAEzE,KAAK,WAAW,GAAG;IACjB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,UAAU,CAAC;IACrE,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,WAAW,KAAK,UAAU,CAAC;IAC7E,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,WAAW,KAAK,UAAU,CAAC;IAC7E,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B,IAAI,EAAE,QAAQ,CAAC;CAChB,CAAC;AAEF,KAAK,aAAa,GAAG;IACnB,CAAC,IAAI,SAAS,OAAO,CAAC,MAAM,CAAC,EAC3B,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,MAAM,EACb,EAAE,EAAE,YAAY,EAChB,OAAO,CAAC,EAAE,WAAW,GACpB,UAAU,CAAC;IACd,IAAI,EAAE,CAAC,IAAI,SAAS,OAAO,CAAC,MAAM,CAAC,EACjC,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,MAAM,EACb,EAAE,EAAE,YAAY,EAChB,OAAO,CAAC,EAAE,WAAW,KAClB,UAAU,CAAC;IAChB,IAAI,EAAE,CAAC,IAAI,SAAS,OAAO,CAAC,MAAM,CAAC,EACjC,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,MAAM,EACb,EAAE,EAAE,YAAY,EAChB,OAAO,CAAC,EAAE,WAAW,KAClB,UAAU,CAAC;IAChB,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CAC/B,CAAC;AAIF,OAAO,QAAQ,QAAQ,CAAC;IACtB,UAAU,QAAQ;QAChB,MAAM,EAAE,eAAe,EAAE,CAAC;KAC3B;CACF;AAED,eAAO,MAAM,IAAI,EAAE,WAiClB,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,aA0DpB,CAAC"}
@@ -1,125 +1,125 @@
1
- import { afterAll, afterEach, beforeAll, beforeEach, test as vitestTest } from "vitest";
2
- import { Sonamu } from "../api/sonamu.js";
3
- import { DB } from "../database/db.js";
4
- import { Naite } from "../naite/naite.js";
1
+ import { DB, init_db } from "../database/db.js";
2
+ import { Sonamu, init_sonamu } from "../api/sonamu.js";
3
+ import { Naite, init_naite } from "../naite/naite.js";
5
4
  import { NaiteReporter } from "../naite/naite-reporter.js";
6
- export function bootstrap(vi, options) {
7
- const forTesting = options?.forTesting ?? true;
8
- beforeAll(async ()=>{
9
- if (!forTesting) {
10
- // forTesting: false인 경우 재초기화가 필요하므로 플래그 해제
11
- Sonamu.isInitialized = false;
12
- }
13
- await Sonamu.init(true, false, undefined, forTesting);
14
- });
15
- beforeEach(async ()=>{
16
- await DB.createTestTransaction();
17
- });
18
- afterEach(async ({ task })=>{
19
- vi.useRealTimers();
20
- await DB.clearTestTransaction();
21
- await NaiteReporter.reportTestResult({
22
- suiteName: task.suite?.name ?? "(no suite)",
23
- suiteFilePath: task.file?.filepath,
24
- testName: task.name,
25
- testFilePath: task.file?.filepath ?? "",
26
- testLine: task.location?.line ?? 0,
27
- status: task.result?.state ?? "pass",
28
- duration: task.result?.duration ?? 0,
29
- error: task.result?.errors?.[0] ? {
30
- message: task.result.errors[0].message,
31
- stack: task.result.errors[0].stack
32
- } : undefined,
33
- traces: task.meta?.traces ?? []
34
- });
35
- });
36
- afterAll(()=>{});
5
+ import { afterAll, afterEach, beforeAll, beforeEach, test as test$1 } from "vitest";
6
+
7
+ //#region src/testing/bootstrap.ts
8
+ init_sonamu();
9
+ init_db();
10
+ init_naite();
11
+ function bootstrap(vi, options) {
12
+ const forTesting = options?.forTesting ?? true;
13
+ beforeAll(async () => {
14
+ if (!forTesting) {
15
+ Sonamu.isInitialized = false;
16
+ }
17
+ await Sonamu.init(true, false, undefined, forTesting);
18
+ });
19
+ beforeEach(async () => {
20
+ await DB.createTestTransaction();
21
+ });
22
+ afterEach(async ({ task }) => {
23
+ vi.useRealTimers();
24
+ await DB.clearTestTransaction();
25
+ await NaiteReporter.reportTestResult({
26
+ suiteName: task.suite?.name ?? "(no suite)",
27
+ suiteFilePath: task.file?.filepath,
28
+ testName: task.name,
29
+ testFilePath: task.file?.filepath ?? "",
30
+ testLine: task.location?.line ?? 0,
31
+ status: task.result?.state ?? "pass",
32
+ duration: task.result?.duration ?? 0,
33
+ error: task.result?.errors?.[0] ? {
34
+ message: task.result.errors[0].message,
35
+ stack: task.result.errors[0].stack
36
+ } : undefined,
37
+ traces: task.meta?.traces ?? []
38
+ });
39
+ });
40
+ afterAll(() => {});
37
41
  }
38
42
  function getMockContext() {
39
- return {
40
- ip: "127.0.0.1",
41
- session: {},
42
- user: null,
43
- passport: {
44
- login: async ()=>{},
45
- logout: ()=>{}
46
- },
47
- naiteStore: Naite.createStore()
48
- };
43
+ return {
44
+ session: null,
45
+ user: null,
46
+ naiteStore: Naite.createStore(),
47
+ locale: ""
48
+ };
49
49
  }
50
- export async function runWithContext(context, fn) {
51
- // Sonamu.asyncLocalStorage.run으로 context 설정
52
- await Sonamu.asyncLocalStorage.run({
53
- context: context ?? getMockContext()
54
- }, fn);
50
+ async function runWithContext(context, fn) {
51
+ await Sonamu.asyncLocalStorage.run({ context: context ?? getMockContext() }, fn);
55
52
  }
56
- export async function runWithMockContext(fn) {
57
- await runWithContext(getMockContext(), fn);
53
+ async function runWithMockContext(fn) {
54
+ await runWithContext(getMockContext(), fn);
58
55
  }
59
- export const test = Object.assign(async (title, fn, options)=>{
60
- return vitestTest(title, options, async (context)=>{
61
- await runWithMockContext(async ()=>{
62
- try {
63
- await fn(context);
64
- context.task.meta.traces = Naite.getAllTraces();
65
- } catch (e) {
66
- context.task.meta.traces = Naite.getAllTraces();
67
- throw e;
68
- }
69
- });
70
- });
56
+ const each = test$1.each.bind(test$1);
57
+ const test = Object.assign(async (title, fn, options) => {
58
+ return test$1(title, options, async (context) => {
59
+ await runWithMockContext(async () => {
60
+ try {
61
+ await fn(context);
62
+ context.task.meta.traces = Naite.getAllTraces();
63
+ } catch (e) {
64
+ context.task.meta.traces = Naite.getAllTraces();
65
+ throw e;
66
+ }
67
+ });
68
+ });
71
69
  }, {
72
- skip: async (title, fn, options)=>vitestTest.skip(title, options, fn),
73
- only: async (title, fn, options)=>{
74
- return vitestTest.only(title, options, async (context)=>{
75
- await runWithMockContext(async ()=>{
76
- try {
77
- await fn(context);
78
- context.task.meta.traces = Naite.getAllTraces();
79
- } catch (e) {
80
- context.task.meta.traces = Naite.getAllTraces();
81
- throw e;
82
- }
83
- });
84
- });
85
- },
86
- todo: (title)=>vitestTest.todo(title),
87
- each: vitestTest.each.bind(vitestTest)
70
+ skip: async (title, fn, options) => test$1.skip(title, options, fn),
71
+ only: async (title, fn, options) => {
72
+ return test$1.only(title, options, async (context) => {
73
+ await runWithMockContext(async () => {
74
+ try {
75
+ await fn(context);
76
+ context.task.meta.traces = Naite.getAllTraces();
77
+ } catch (e) {
78
+ context.task.meta.traces = Naite.getAllTraces();
79
+ throw e;
80
+ }
81
+ });
82
+ });
83
+ },
84
+ todo: (title) => test$1.todo(title),
85
+ each
88
86
  });
89
- export const testAs = Object.assign(async (user, title, fn, options)=>{
90
- return vitestTest(title, options, async (context)=>{
91
- await runWithContext({
92
- ...getMockContext(),
93
- user
94
- }, async ()=>{
95
- try {
96
- await fn(context);
97
- context.task.meta.traces = Naite.getAllTraces();
98
- } catch (e) {
99
- context.task.meta.traces = Naite.getAllTraces();
100
- throw e;
101
- }
102
- });
103
- });
87
+ const testAs = Object.assign(async (user, title, fn, options) => {
88
+ return test$1(title, options, async (context) => {
89
+ await runWithContext({
90
+ ...getMockContext(),
91
+ user
92
+ }, async () => {
93
+ try {
94
+ await fn(context);
95
+ context.task.meta.traces = Naite.getAllTraces();
96
+ } catch (e) {
97
+ context.task.meta.traces = Naite.getAllTraces();
98
+ throw e;
99
+ }
100
+ });
101
+ });
104
102
  }, {
105
- skip: async (_user, title, fn, options)=>vitestTest.skip(title, options, fn),
106
- only: async (user, title, fn, options)=>{
107
- return vitestTest.only(title, options, async (context)=>{
108
- await runWithContext({
109
- ...getMockContext(),
110
- user
111
- }, async ()=>{
112
- try {
113
- await fn(context);
114
- context.task.meta.traces = Naite.getAllTraces();
115
- } catch (e) {
116
- context.task.meta.traces = Naite.getAllTraces();
117
- throw e;
118
- }
119
- });
120
- });
121
- },
122
- todo: (title)=>vitestTest.todo(title)
103
+ skip: async (_user, title, fn, options) => test$1.skip(title, options, fn),
104
+ only: async (user, title, fn, options) => {
105
+ return test$1.only(title, options, async (context) => {
106
+ await runWithContext({
107
+ ...getMockContext(),
108
+ user
109
+ }, async () => {
110
+ try {
111
+ await fn(context);
112
+ context.task.meta.traces = Naite.getAllTraces();
113
+ } catch (e) {
114
+ context.task.meta.traces = Naite.getAllTraces();
115
+ throw e;
116
+ }
117
+ });
118
+ });
119
+ },
120
+ todo: (title) => test$1.todo(title)
123
121
  });
124
122
 
125
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZXN0aW5nL2Jvb3RzdHJhcC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBhZnRlckFsbCxcbiAgYWZ0ZXJFYWNoLFxuICBiZWZvcmVBbGwsXG4gIGJlZm9yZUVhY2gsXG4gIHR5cGUgVGVzdEZ1bmN0aW9uLFxuICB0eXBlIFRlc3RPcHRpb25zLFxuICB0eXBlIFZpdGVzdFV0aWxzLFxuICB0ZXN0IGFzIHZpdGVzdFRlc3QsXG59IGZyb20gXCJ2aXRlc3RcIjtcbmltcG9ydCB0eXBlIHsgQ29udGV4dCB9IGZyb20gXCIuLi9hcGkvY29udGV4dFwiO1xuaW1wb3J0IHsgU29uYW11IH0gZnJvbSBcIi4uL2FwaS9zb25hbXVcIjtcbmltcG9ydCB7IERCIH0gZnJvbSBcIi4uL2RhdGFiYXNlL2RiXCI7XG5pbXBvcnQgeyBOYWl0ZSwgdHlwZSBTZXJpYWxpemVkVHJhY2UgfSBmcm9tIFwiLi4vbmFpdGUvbmFpdGVcIjtcbmltcG9ydCB7IE5haXRlUmVwb3J0ZXIgfSBmcm9tIFwiLi4vbmFpdGUvbmFpdGUtcmVwb3J0ZXJcIjtcblxuZXhwb3J0IGludGVyZmFjZSBCb290c3RyYXBPcHRpb25zIHtcbiAgLyoqXG4gICAqIFNvbmFtdSDstIjquLDtmZQg66qo65Oc66W8IOyngOygle2VqeuLiOuLpC5cbiAgICogLSB0cnVlICjquLDrs7jqsJIpOiDthYzsiqTtjIUg66qo65Oc66GcIOy0iOq4sO2ZlCAo67mg66aELCBTeW5jZXIvVGFzayDsg53rnrUpXG4gICAqIC0gZmFsc2U6IOyghOyytCDstIjquLDtmZQgKFN5bmNlciwgVGFzaywgRW50aXR5TWFuYWdlciDrk7Eg66qo65GQIOuhnOuTnClcbiAgICpcbiAgICogbWlncmF0b3IsIHN5bmNlciwgdGVtcGxhdGUg65Ox7J2YIO2FjOyKpO2KuOyXkOyEnOuKlCBmYWxzZeulvCDsgqzsmqntlanri4jri6QuXG4gICAqL1xuICBmb3JUZXN0aW5nPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJvb3RzdHJhcCh2aTogVml0ZXN0VXRpbHMsIG9wdGlvbnM/OiBCb290c3RyYXBPcHRpb25zKSB7XG4gIGNvbnN0IGZvclRlc3RpbmcgPSBvcHRpb25zPy5mb3JUZXN0aW5nID8/IHRydWU7XG5cbiAgYmVmb3JlQWxsKGFzeW5jICgpID0+IHtcbiAgICBpZiAoIWZvclRlc3RpbmcpIHtcbiAgICAgIC8vIGZvclRlc3Rpbmc6IGZhbHNl7J24IOqyveyasCDsnqzstIjquLDtmZTqsIAg7ZWE7JqU7ZWY66+A66GcIO2UjOuemOq3uCDtlbTsoJxcbiAgICAgIFNvbmFtdS5pc0luaXRpYWxpemVkID0gZmFsc2U7XG4gICAgfVxuICAgIGF3YWl0IFNvbmFtdS5pbml0KHRydWUsIGZhbHNlLCB1bmRlZmluZWQsIGZvclRlc3RpbmcpO1xuICB9KTtcbiAgYmVmb3JlRWFjaChhc3luYyAoKSA9PiB7XG4gICAgYXdhaXQgREIuY3JlYXRlVGVzdFRyYW5zYWN0aW9uKCk7XG4gIH0pO1xuICBhZnRlckVhY2goYXN5bmMgKHsgdGFzayB9KSA9PiB7XG4gICAgdmkudXNlUmVhbFRpbWVycygpO1xuICAgIGF3YWl0IERCLmNsZWFyVGVzdFRyYW5zYWN0aW9uKCk7XG5cbiAgICBhd2FpdCBOYWl0ZVJlcG9ydGVyLnJlcG9ydFRlc3RSZXN1bHQoe1xuICAgICAgc3VpdGVOYW1lOiB0YXNrLnN1aXRlPy5uYW1lID8/IFwiKG5vIHN1aXRlKVwiLFxuICAgICAgc3VpdGVGaWxlUGF0aDogdGFzay5maWxlPy5maWxlcGF0aCxcbiAgICAgIHRlc3ROYW1lOiB0YXNrLm5hbWUsXG4gICAgICB0ZXN0RmlsZVBhdGg6IHRhc2suZmlsZT8uZmlsZXBhdGggPz8gXCJcIixcbiAgICAgIHRlc3RMaW5lOiB0YXNrLmxvY2F0aW9uPy5saW5lID8/IDAsXG4gICAgICBzdGF0dXM6IHRhc2sucmVzdWx0Py5zdGF0ZSA/PyBcInBhc3NcIixcbiAgICAgIGR1cmF0aW9uOiB0YXNrLnJlc3VsdD8uZHVyYXRpb24gPz8gMCxcbiAgICAgIGVycm9yOiB0YXNrLnJlc3VsdD8uZXJyb3JzPy5bMF1cbiAgICAgICAgPyB7XG4gICAgICAgICAgICBtZXNzYWdlOiB0YXNrLnJlc3VsdC5lcnJvcnNbMF0ubWVzc2FnZSxcbiAgICAgICAgICAgIHN0YWNrOiB0YXNrLnJlc3VsdC5lcnJvcnNbMF0uc3RhY2ssXG4gICAgICAgICAgfVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIHRyYWNlczogdGFzay5tZXRhPy50cmFjZXMgPz8gW10sXG4gICAgfSk7XG4gIH0pO1xuICBhZnRlckFsbCgoKSA9PiB7fSk7XG59XG5cbmZ1bmN0aW9uIGdldE1vY2tDb250ZXh0KCk6IENvbnRleHQge1xuICByZXR1cm4ge1xuICAgIGlwOiBcIjEyNy4wLjAuMVwiLFxuICAgIHNlc3Npb246IHt9LFxuICAgIHVzZXI6IG51bGwsXG4gICAgcGFzc3BvcnQ6IHtcbiAgICAgIGxvZ2luOiBhc3luYyAoKSA9PiB7fSxcbiAgICAgIGxvZ291dDogKCkgPT4ge30sXG4gICAgfSxcbiAgICBuYWl0ZVN0b3JlOiBOYWl0ZS5jcmVhdGVTdG9yZSgpLFxuICB9IGFzIHVua25vd24gYXMgQ29udGV4dDtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1bldpdGhDb250ZXh0KGNvbnRleHQ6IENvbnRleHQgfCBudWxsLCBmbjogKCkgPT4gUHJvbWlzZTx2b2lkPikge1xuICAvLyBTb25hbXUuYXN5bmNMb2NhbFN0b3JhZ2UucnVu7Jy866GcIGNvbnRleHQg7ISk7KCVXG4gIGF3YWl0IFNvbmFtdS5hc3luY0xvY2FsU3RvcmFnZS5ydW4oeyBjb250ZXh0OiBjb250ZXh0ID8/IGdldE1vY2tDb250ZXh0KCkgfSwgZm4pO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuV2l0aE1vY2tDb250ZXh0KGZuOiAoKSA9PiBQcm9taXNlPHZvaWQ+KSB7XG4gIGF3YWl0IHJ1bldpdGhDb250ZXh0KGdldE1vY2tDb250ZXh0KCksIGZuKTtcbn1cblxuZGVjbGFyZSBtb2R1bGUgXCJ2aXRlc3RcIiB7XG4gIGludGVyZmFjZSBUYXNrTWV0YSB7XG4gICAgdHJhY2VzOiBTZXJpYWxpemVkVHJhY2VbXTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgdGVzdCA9IE9iamVjdC5hc3NpZ24oXG4gIGFzeW5jICh0aXRsZTogc3RyaW5nLCBmbjogVGVzdEZ1bmN0aW9uPG9iamVjdD4sIG9wdGlvbnM/OiBUZXN0T3B0aW9ucykgPT4ge1xuICAgIHJldHVybiB2aXRlc3RUZXN0KHRpdGxlLCBvcHRpb25zLCBhc3luYyAoY29udGV4dCkgPT4ge1xuICAgICAgYXdhaXQgcnVuV2l0aE1vY2tDb250ZXh0KGFzeW5jICgpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBhd2FpdCBmbihjb250ZXh0KTtcbiAgICAgICAgICBjb250ZXh0LnRhc2subWV0YS50cmFjZXMgPSBOYWl0ZS5nZXRBbGxUcmFjZXMoKTtcbiAgICAgICAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgICAgICAgIGNvbnRleHQudGFzay5tZXRhLnRyYWNlcyA9IE5haXRlLmdldEFsbFRyYWNlcygpO1xuICAgICAgICAgIHRocm93IGU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9LFxuICB7XG4gICAgc2tpcDogYXN5bmMgKHRpdGxlOiBzdHJpbmcsIGZuOiBUZXN0RnVuY3Rpb248b2JqZWN0Piwgb3B0aW9ucz86IFRlc3RPcHRpb25zKSA9PlxuICAgICAgdml0ZXN0VGVzdC5za2lwKHRpdGxlLCBvcHRpb25zLCBmbiksXG4gICAgb25seTogYXN5bmMgKHRpdGxlOiBzdHJpbmcsIGZuOiBUZXN0RnVuY3Rpb248b2JqZWN0Piwgb3B0aW9ucz86IFRlc3RPcHRpb25zKSA9PiB7XG4gICAgICByZXR1cm4gdml0ZXN0VGVzdC5vbmx5KHRpdGxlLCBvcHRpb25zLCBhc3luYyAoY29udGV4dCkgPT4ge1xuICAgICAgICBhd2FpdCBydW5XaXRoTW9ja0NvbnRleHQoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBhd2FpdCBmbihjb250ZXh0KTtcbiAgICAgICAgICAgIGNvbnRleHQudGFzay5tZXRhLnRyYWNlcyA9IE5haXRlLmdldEFsbFRyYWNlcygpO1xuICAgICAgICAgIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICAgICAgICAgIGNvbnRleHQudGFzay5tZXRhLnRyYWNlcyA9IE5haXRlLmdldEFsbFRyYWNlcygpO1xuICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSxcbiAgICB0b2RvOiAodGl0bGU6IHN0cmluZykgPT4gdml0ZXN0VGVzdC50b2RvKHRpdGxlKSxcbiAgICBlYWNoOiB2aXRlc3RUZXN0LmVhY2guYmluZCh2aXRlc3RUZXN0KSBhcyB0eXBlb2Ygdml0ZXN0VGVzdC5lYWNoLFxuICB9LFxuKTtcblxuZXhwb3J0IGNvbnN0IHRlc3RBcyA9IE9iamVjdC5hc3NpZ24oXG4gIGFzeW5jIDxVc2VyIGV4dGVuZHMgQ29udGV4dFtcInVzZXJcIl0+KFxuICAgIHVzZXI6IFVzZXIsXG4gICAgdGl0bGU6IHN0cmluZyxcbiAgICBmbjogVGVzdEZ1bmN0aW9uPG9iamVjdD4sXG4gICAgb3B0aW9ucz86IFRlc3RPcHRpb25zLFxuICApID0+IHtcbiAgICByZXR1cm4gdml0ZXN0VGVzdCh0aXRsZSwgb3B0aW9ucywgYXN5bmMgKGNvbnRleHQpID0+IHtcbiAgICAgIGF3YWl0IHJ1bldpdGhDb250ZXh0KFxuICAgICAgICB7XG4gICAgICAgICAgLi4uZ2V0TW9ja0NvbnRleHQoKSxcbiAgICAgICAgICB1c2VyLFxuICAgICAgICB9LFxuICAgICAgICBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGF3YWl0IGZuKGNvbnRleHQpO1xuICAgICAgICAgICAgY29udGV4dC50YXNrLm1ldGEudHJhY2VzID0gTmFpdGUuZ2V0QWxsVHJhY2VzKCk7XG4gICAgICAgICAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgICAgICAgICAgY29udGV4dC50YXNrLm1ldGEudHJhY2VzID0gTmFpdGUuZ2V0QWxsVHJhY2VzKCk7XG4gICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICk7XG4gICAgfSk7XG4gIH0sXG4gIHtcbiAgICBza2lwOiBhc3luYyA8VXNlciBleHRlbmRzIENvbnRleHRbXCJ1c2VyXCJdPihcbiAgICAgIF91c2VyOiBVc2VyLFxuICAgICAgdGl0bGU6IHN0cmluZyxcbiAgICAgIGZuOiBUZXN0RnVuY3Rpb248b2JqZWN0PixcbiAgICAgIG9wdGlvbnM/OiBUZXN0T3B0aW9ucyxcbiAgICApID0+IHZpdGVzdFRlc3Quc2tpcCh0aXRsZSwgb3B0aW9ucywgZm4pLFxuICAgIG9ubHk6IGFzeW5jIDxVc2VyIGV4dGVuZHMgQ29udGV4dFtcInVzZXJcIl0+KFxuICAgICAgdXNlcjogVXNlcixcbiAgICAgIHRpdGxlOiBzdHJpbmcsXG4gICAgICBmbjogVGVzdEZ1bmN0aW9uPG9iamVjdD4sXG4gICAgICBvcHRpb25zPzogVGVzdE9wdGlvbnMsXG4gICAgKSA9PiB7XG4gICAgICByZXR1cm4gdml0ZXN0VGVzdC5vbmx5KHRpdGxlLCBvcHRpb25zLCBhc3luYyAoY29udGV4dCkgPT4ge1xuICAgICAgICBhd2FpdCBydW5XaXRoQ29udGV4dChcbiAgICAgICAgICB7XG4gICAgICAgICAgICAuLi5nZXRNb2NrQ29udGV4dCgpLFxuICAgICAgICAgICAgdXNlcixcbiAgICAgICAgICB9LFxuICAgICAgICAgIGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGF3YWl0IGZuKGNvbnRleHQpO1xuICAgICAgICAgICAgICBjb250ZXh0LnRhc2subWV0YS50cmFjZXMgPSBOYWl0ZS5nZXRBbGxUcmFjZXMoKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICAgICAgICAgICAgY29udGV4dC50YXNrLm1ldGEudHJhY2VzID0gTmFpdGUuZ2V0QWxsVHJhY2VzKCk7XG4gICAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgdG9kbzogKHRpdGxlOiBzdHJpbmcpID0+IHZpdGVzdFRlc3QudG9kbyh0aXRsZSksXG4gIH0sXG4pO1xuIl0sIm5hbWVzIjpbImFmdGVyQWxsIiwiYWZ0ZXJFYWNoIiwiYmVmb3JlQWxsIiwiYmVmb3JlRWFjaCIsInRlc3QiLCJ2aXRlc3RUZXN0IiwiU29uYW11IiwiREIiLCJOYWl0ZSIsIk5haXRlUmVwb3J0ZXIiLCJib290c3RyYXAiLCJ2aSIsIm9wdGlvbnMiLCJmb3JUZXN0aW5nIiwiaXNJbml0aWFsaXplZCIsImluaXQiLCJ1bmRlZmluZWQiLCJjcmVhdGVUZXN0VHJhbnNhY3Rpb24iLCJ0YXNrIiwidXNlUmVhbFRpbWVycyIsImNsZWFyVGVzdFRyYW5zYWN0aW9uIiwicmVwb3J0VGVzdFJlc3VsdCIsInN1aXRlTmFtZSIsInN1aXRlIiwibmFtZSIsInN1aXRlRmlsZVBhdGgiLCJmaWxlIiwiZmlsZXBhdGgiLCJ0ZXN0TmFtZSIsInRlc3RGaWxlUGF0aCIsInRlc3RMaW5lIiwibG9jYXRpb24iLCJsaW5lIiwic3RhdHVzIiwicmVzdWx0Iiwic3RhdGUiLCJkdXJhdGlvbiIsImVycm9yIiwiZXJyb3JzIiwibWVzc2FnZSIsInN0YWNrIiwidHJhY2VzIiwibWV0YSIsImdldE1vY2tDb250ZXh0IiwiaXAiLCJzZXNzaW9uIiwidXNlciIsInBhc3Nwb3J0IiwibG9naW4iLCJsb2dvdXQiLCJuYWl0ZVN0b3JlIiwiY3JlYXRlU3RvcmUiLCJydW5XaXRoQ29udGV4dCIsImNvbnRleHQiLCJmbiIsImFzeW5jTG9jYWxTdG9yYWdlIiwicnVuIiwicnVuV2l0aE1vY2tDb250ZXh0IiwiT2JqZWN0IiwiYXNzaWduIiwidGl0bGUiLCJnZXRBbGxUcmFjZXMi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
123
+ //#endregion
124
+ export { bootstrap, runWithContext, runWithMockContext, test, testAs };
125
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9vdHN0cmFwLmpzIiwibmFtZXMiOlsiZWFjaDogVGVzdEVhY2giLCJ2aXRlc3RUZXN0IiwidGVzdDogVGVzdFdyYXBwZXIiLCJlOiB1bmtub3duIiwidGVzdEFzOiBUZXN0QXNXcmFwcGVyIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rlc3RpbmcvYm9vdHN0cmFwLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFmdGVyQWxsLCBhZnRlckVhY2gsIGJlZm9yZUFsbCwgYmVmb3JlRWFjaCwgdGVzdCBhcyB2aXRlc3RUZXN0IH0gZnJvbSBcInZpdGVzdFwiO1xuaW1wb3J0IHsgdHlwZSBUZXN0RnVuY3Rpb24sIHR5cGUgVGVzdE9wdGlvbnMsIHR5cGUgVml0ZXN0VXRpbHMgfSBmcm9tIFwidml0ZXN0XCI7XG5cbmltcG9ydCB7IHR5cGUgQ29udGV4dCB9IGZyb20gXCIuLi9hcGkvY29udGV4dFwiO1xuaW1wb3J0IHsgU29uYW11IH0gZnJvbSBcIi4uL2FwaS9zb25hbXVcIjtcbmltcG9ydCB7IERCIH0gZnJvbSBcIi4uL2RhdGFiYXNlL2RiXCI7XG5pbXBvcnQgeyBOYWl0ZSB9IGZyb20gXCIuLi9uYWl0ZS9uYWl0ZVwiO1xuaW1wb3J0IHsgdHlwZSBTZXJpYWxpemVkVHJhY2UgfSBmcm9tIFwiLi4vbmFpdGUvbmFpdGVcIjtcbmltcG9ydCB7IE5haXRlUmVwb3J0ZXIgfSBmcm9tIFwiLi4vbmFpdGUvbmFpdGUtcmVwb3J0ZXJcIjtcblxuZXhwb3J0IGludGVyZmFjZSBCb290c3RyYXBPcHRpb25zIHtcbiAgLyoqXG4gICAqIFNvbmFtdSDstIjquLDtmZQg66qo65Oc66W8IOyngOygle2VqeuLiOuLpC5cbiAgICogLSB0cnVlICjquLDrs7jqsJIpOiDthYzsiqTtjIUg66qo65Oc66GcIOy0iOq4sO2ZlCAo67mg66aELCBTeW5jZXIvVGFzayDsg53rnrUpXG4gICAqIC0gZmFsc2U6IOyghOyytCDstIjquLDtmZQgKFN5bmNlciwgVGFzaywgRW50aXR5TWFuYWdlciDrk7Eg66qo65GQIOuhnOuTnClcbiAgICpcbiAgICogbWlncmF0b3IsIHN5bmNlciwgdGVtcGxhdGUg65Ox7J2YIO2FjOyKpO2KuOyXkOyEnOuKlCBmYWxzZeulvCDsgqzsmqntlanri4jri6QuXG4gICAqL1xuICBmb3JUZXN0aW5nPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJvb3RzdHJhcCh2aTogVml0ZXN0VXRpbHMsIG9wdGlvbnM/OiBCb290c3RyYXBPcHRpb25zKSB7XG4gIGNvbnN0IGZvclRlc3RpbmcgPSBvcHRpb25zPy5mb3JUZXN0aW5nID8/IHRydWU7XG5cbiAgYmVmb3JlQWxsKGFzeW5jICgpID0+IHtcbiAgICBpZiAoIWZvclRlc3RpbmcpIHtcbiAgICAgIC8vIGZvclRlc3Rpbmc6IGZhbHNl7J24IOqyveyasCDsnqzstIjquLDtmZTqsIAg7ZWE7JqU7ZWY66+A66GcIO2UjOuemOq3uCDtlbTsoJxcbiAgICAgIFNvbmFtdS5pc0luaXRpYWxpemVkID0gZmFsc2U7XG4gICAgfVxuICAgIGF3YWl0IFNvbmFtdS5pbml0KHRydWUsIGZhbHNlLCB1bmRlZmluZWQsIGZvclRlc3RpbmcpO1xuICB9KTtcbiAgYmVmb3JlRWFjaChhc3luYyAoKSA9PiB7XG4gICAgYXdhaXQgREIuY3JlYXRlVGVzdFRyYW5zYWN0aW9uKCk7XG4gIH0pO1xuICBhZnRlckVhY2goYXN5bmMgKHsgdGFzayB9KSA9PiB7XG4gICAgdmkudXNlUmVhbFRpbWVycygpO1xuICAgIGF3YWl0IERCLmNsZWFyVGVzdFRyYW5zYWN0aW9uKCk7XG5cbiAgICBhd2FpdCBOYWl0ZVJlcG9ydGVyLnJlcG9ydFRlc3RSZXN1bHQoe1xuICAgICAgc3VpdGVOYW1lOiB0YXNrLnN1aXRlPy5uYW1lID8/IFwiKG5vIHN1aXRlKVwiLFxuICAgICAgc3VpdGVGaWxlUGF0aDogdGFzay5maWxlPy5maWxlcGF0aCxcbiAgICAgIHRlc3ROYW1lOiB0YXNrLm5hbWUsXG4gICAgICB0ZXN0RmlsZVBhdGg6IHRhc2suZmlsZT8uZmlsZXBhdGggPz8gXCJcIixcbiAgICAgIHRlc3RMaW5lOiB0YXNrLmxvY2F0aW9uPy5saW5lID8/IDAsXG4gICAgICBzdGF0dXM6IHRhc2sucmVzdWx0Py5zdGF0ZSA/PyBcInBhc3NcIixcbiAgICAgIGR1cmF0aW9uOiB0YXNrLnJlc3VsdD8uZHVyYXRpb24gPz8gMCxcbiAgICAgIGVycm9yOiB0YXNrLnJlc3VsdD8uZXJyb3JzPy5bMF1cbiAgICAgICAgPyB7XG4gICAgICAgICAgICBtZXNzYWdlOiB0YXNrLnJlc3VsdC5lcnJvcnNbMF0ubWVzc2FnZSxcbiAgICAgICAgICAgIHN0YWNrOiB0YXNrLnJlc3VsdC5lcnJvcnNbMF0uc3RhY2ssXG4gICAgICAgICAgfVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIHRyYWNlczogdGFzay5tZXRhPy50cmFjZXMgPz8gW10sXG4gICAgfSk7XG4gIH0pO1xuICBhZnRlckFsbCgoKSA9PiB7fSk7XG59XG5cbmZ1bmN0aW9uIGdldE1vY2tDb250ZXh0KCk6IENvbnRleHQge1xuICByZXR1cm4ge1xuICAgIHNlc3Npb246IG51bGwsXG4gICAgdXNlcjogbnVsbCxcbiAgICBuYWl0ZVN0b3JlOiBOYWl0ZS5jcmVhdGVTdG9yZSgpLFxuICAgIGxvY2FsZTogXCJcIixcbiAgfSBhcyB1bmtub3duIGFzIENvbnRleHQ7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBydW5XaXRoQ29udGV4dChjb250ZXh0OiBDb250ZXh0IHwgbnVsbCwgZm46ICgpID0+IFByb21pc2U8dm9pZD4pIHtcbiAgLy8gU29uYW11LmFzeW5jTG9jYWxTdG9yYWdlLnJ1buycvOuhnCBjb250ZXh0IOyEpOyglVxuICBhd2FpdCBTb25hbXUuYXN5bmNMb2NhbFN0b3JhZ2UucnVuKHsgY29udGV4dDogY29udGV4dCA/PyBnZXRNb2NrQ29udGV4dCgpIH0sIGZuKTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJ1bldpdGhNb2NrQ29udGV4dChmbjogKCkgPT4gUHJvbWlzZTx2b2lkPikge1xuICBhd2FpdCBydW5XaXRoQ29udGV4dChnZXRNb2NrQ29udGV4dCgpLCBmbik7XG59XG5cbnR5cGUgVGVzdFJlc3VsdCA9IFByb21pc2U8UmV0dXJuVHlwZTx0eXBlb2Ygdml0ZXN0VGVzdD4+O1xudHlwZSBUZXN0Q2FsbGJhY2tSZXN1bHQgPSB2b2lkIHwgUHJvbWlzZTx2b2lkPjtcbnR5cGUgVGVzdEVhY2ggPSA8VEFyZ3MgZXh0ZW5kcyByZWFkb25seSB1bmtub3duW10+KFxuICBjYXNlczogcmVhZG9ubHkgVEFyZ3NbXSxcbikgPT4gKHRpdGxlOiBzdHJpbmcsIGZuOiAoLi4uYXJnczogVEFyZ3MpID0+IFRlc3RDYWxsYmFja1Jlc3VsdCkgPT4gdm9pZDtcblxudHlwZSBUZXN0V3JhcHBlciA9IHtcbiAgKHRpdGxlOiBzdHJpbmcsIGZuOiBUZXN0RnVuY3Rpb24sIG9wdGlvbnM/OiBUZXN0T3B0aW9ucyk6IFRlc3RSZXN1bHQ7XG4gIHNraXA6ICh0aXRsZTogc3RyaW5nLCBmbjogVGVzdEZ1bmN0aW9uLCBvcHRpb25zPzogVGVzdE9wdGlvbnMpID0+IFRlc3RSZXN1bHQ7XG4gIG9ubHk6ICh0aXRsZTogc3RyaW5nLCBmbjogVGVzdEZ1bmN0aW9uLCBvcHRpb25zPzogVGVzdE9wdGlvbnMpID0+IFRlc3RSZXN1bHQ7XG4gIHRvZG86ICh0aXRsZTogc3RyaW5nKSA9PiB2b2lkO1xuICBlYWNoOiBUZXN0RWFjaDtcbn07XG5cbnR5cGUgVGVzdEFzV3JhcHBlciA9IHtcbiAgPFVzZXIgZXh0ZW5kcyBDb250ZXh0W1widXNlclwiXT4oXG4gICAgdXNlcjogVXNlcixcbiAgICB0aXRsZTogc3RyaW5nLFxuICAgIGZuOiBUZXN0RnVuY3Rpb24sXG4gICAgb3B0aW9ucz86IFRlc3RPcHRpb25zLFxuICApOiBUZXN0UmVzdWx0O1xuICBza2lwOiA8VXNlciBleHRlbmRzIENvbnRleHRbXCJ1c2VyXCJdPihcbiAgICB1c2VyOiBVc2VyLFxuICAgIHRpdGxlOiBzdHJpbmcsXG4gICAgZm46IFRlc3RGdW5jdGlvbixcbiAgICBvcHRpb25zPzogVGVzdE9wdGlvbnMsXG4gICkgPT4gVGVzdFJlc3VsdDtcbiAgb25seTogPFVzZXIgZXh0ZW5kcyBDb250ZXh0W1widXNlclwiXT4oXG4gICAgdXNlcjogVXNlcixcbiAgICB0aXRsZTogc3RyaW5nLFxuICAgIGZuOiBUZXN0RnVuY3Rpb24sXG4gICAgb3B0aW9ucz86IFRlc3RPcHRpb25zLFxuICApID0+IFRlc3RSZXN1bHQ7XG4gIHRvZG86ICh0aXRsZTogc3RyaW5nKSA9PiB2b2lkO1xufTtcblxuY29uc3QgZWFjaDogVGVzdEVhY2ggPSB2aXRlc3RUZXN0LmVhY2guYmluZCh2aXRlc3RUZXN0KTtcblxuZGVjbGFyZSBtb2R1bGUgXCJ2aXRlc3RcIiB7XG4gIGludGVyZmFjZSBUYXNrTWV0YSB7XG4gICAgdHJhY2VzOiBTZXJpYWxpemVkVHJhY2VbXTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgdGVzdDogVGVzdFdyYXBwZXIgPSBPYmplY3QuYXNzaWduKFxuICBhc3luYyAodGl0bGU6IHN0cmluZywgZm46IFRlc3RGdW5jdGlvbiwgb3B0aW9ucz86IFRlc3RPcHRpb25zKSA9PiB7XG4gICAgcmV0dXJuIHZpdGVzdFRlc3QodGl0bGUsIG9wdGlvbnMsIGFzeW5jIChjb250ZXh0KSA9PiB7XG4gICAgICBhd2FpdCBydW5XaXRoTW9ja0NvbnRleHQoYXN5bmMgKCkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGF3YWl0IGZuKGNvbnRleHQpO1xuICAgICAgICAgIGNvbnRleHQudGFzay5tZXRhLnRyYWNlcyA9IE5haXRlLmdldEFsbFRyYWNlcygpO1xuICAgICAgICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgICAgICAgY29udGV4dC50YXNrLm1ldGEudHJhY2VzID0gTmFpdGUuZ2V0QWxsVHJhY2VzKCk7XG4gICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH0sXG4gIHtcbiAgICBza2lwOiBhc3luYyAodGl0bGU6IHN0cmluZywgZm46IFRlc3RGdW5jdGlvbiwgb3B0aW9ucz86IFRlc3RPcHRpb25zKSA9PlxuICAgICAgdml0ZXN0VGVzdC5za2lwKHRpdGxlLCBvcHRpb25zLCBmbiksXG4gICAgb25seTogYXN5bmMgKHRpdGxlOiBzdHJpbmcsIGZuOiBUZXN0RnVuY3Rpb24sIG9wdGlvbnM/OiBUZXN0T3B0aW9ucykgPT4ge1xuICAgICAgcmV0dXJuIHZpdGVzdFRlc3Qub25seSh0aXRsZSwgb3B0aW9ucywgYXN5bmMgKGNvbnRleHQpID0+IHtcbiAgICAgICAgYXdhaXQgcnVuV2l0aE1vY2tDb250ZXh0KGFzeW5jICgpID0+IHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgYXdhaXQgZm4oY29udGV4dCk7XG4gICAgICAgICAgICBjb250ZXh0LnRhc2subWV0YS50cmFjZXMgPSBOYWl0ZS5nZXRBbGxUcmFjZXMoKTtcbiAgICAgICAgICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgICAgICAgICBjb250ZXh0LnRhc2subWV0YS50cmFjZXMgPSBOYWl0ZS5nZXRBbGxUcmFjZXMoKTtcbiAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgdG9kbzogKHRpdGxlOiBzdHJpbmcpID0+IHZpdGVzdFRlc3QudG9kbyh0aXRsZSksXG4gICAgZWFjaCxcbiAgfSxcbik7XG5cbmV4cG9ydCBjb25zdCB0ZXN0QXM6IFRlc3RBc1dyYXBwZXIgPSBPYmplY3QuYXNzaWduKFxuICBhc3luYyA8VXNlciBleHRlbmRzIENvbnRleHRbXCJ1c2VyXCJdPihcbiAgICB1c2VyOiBVc2VyLFxuICAgIHRpdGxlOiBzdHJpbmcsXG4gICAgZm46IFRlc3RGdW5jdGlvbixcbiAgICBvcHRpb25zPzogVGVzdE9wdGlvbnMsXG4gICkgPT4ge1xuICAgIHJldHVybiB2aXRlc3RUZXN0KHRpdGxlLCBvcHRpb25zLCBhc3luYyAoY29udGV4dCkgPT4ge1xuICAgICAgYXdhaXQgcnVuV2l0aENvbnRleHQoXG4gICAgICAgIHtcbiAgICAgICAgICAuLi5nZXRNb2NrQ29udGV4dCgpLFxuICAgICAgICAgIHVzZXIsXG4gICAgICAgIH0sXG4gICAgICAgIGFzeW5jICgpID0+IHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgYXdhaXQgZm4oY29udGV4dCk7XG4gICAgICAgICAgICBjb250ZXh0LnRhc2subWV0YS50cmFjZXMgPSBOYWl0ZS5nZXRBbGxUcmFjZXMoKTtcbiAgICAgICAgICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgICAgICAgICBjb250ZXh0LnRhc2subWV0YS50cmFjZXMgPSBOYWl0ZS5nZXRBbGxUcmFjZXMoKTtcbiAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgKTtcbiAgICB9KTtcbiAgfSxcbiAge1xuICAgIHNraXA6IGFzeW5jIDxVc2VyIGV4dGVuZHMgQ29udGV4dFtcInVzZXJcIl0+KFxuICAgICAgX3VzZXI6IFVzZXIsXG4gICAgICB0aXRsZTogc3RyaW5nLFxuICAgICAgZm46IFRlc3RGdW5jdGlvbixcbiAgICAgIG9wdGlvbnM/OiBUZXN0T3B0aW9ucyxcbiAgICApID0+IHZpdGVzdFRlc3Quc2tpcCh0aXRsZSwgb3B0aW9ucywgZm4pLFxuICAgIG9ubHk6IGFzeW5jIDxVc2VyIGV4dGVuZHMgQ29udGV4dFtcInVzZXJcIl0+KFxuICAgICAgdXNlcjogVXNlcixcbiAgICAgIHRpdGxlOiBzdHJpbmcsXG4gICAgICBmbjogVGVzdEZ1bmN0aW9uLFxuICAgICAgb3B0aW9ucz86IFRlc3RPcHRpb25zLFxuICAgICkgPT4ge1xuICAgICAgcmV0dXJuIHZpdGVzdFRlc3Qub25seSh0aXRsZSwgb3B0aW9ucywgYXN5bmMgKGNvbnRleHQpID0+IHtcbiAgICAgICAgYXdhaXQgcnVuV2l0aENvbnRleHQoXG4gICAgICAgICAge1xuICAgICAgICAgICAgLi4uZ2V0TW9ja0NvbnRleHQoKSxcbiAgICAgICAgICAgIHVzZXIsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBhd2FpdCBmbihjb250ZXh0KTtcbiAgICAgICAgICAgICAgY29udGV4dC50YXNrLm1ldGEudHJhY2VzID0gTmFpdGUuZ2V0QWxsVHJhY2VzKCk7XG4gICAgICAgICAgICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgICAgICAgICAgIGNvbnRleHQudGFzay5tZXRhLnRyYWNlcyA9IE5haXRlLmdldEFsbFRyYWNlcygpO1xuICAgICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICk7XG4gICAgICB9KTtcbiAgICB9LFxuICAgIHRvZG86ICh0aXRsZTogc3RyaW5nKSA9PiB2aXRlc3RUZXN0LnRvZG8odGl0bGUpLFxuICB9LFxuKTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OzthQUl1QztTQUNIO1lBQ0c7QUFldkMsU0FBZ0IsVUFBVSxJQUFpQixTQUE0QjtDQUNyRSxNQUFNLGFBQWEsU0FBUyxjQUFjO0FBRTFDLFdBQVUsWUFBWTtBQUNwQixNQUFJLENBQUMsWUFBWTtBQUVmLFVBQU8sZ0JBQWdCOztBQUV6QixRQUFNLE9BQU8sS0FBSyxNQUFNLE9BQU8sV0FBVyxXQUFXO0dBQ3JEO0FBQ0YsWUFBVyxZQUFZO0FBQ3JCLFFBQU0sR0FBRyx1QkFBdUI7R0FDaEM7QUFDRixXQUFVLE9BQU8sRUFBRSxXQUFXO0FBQzVCLEtBQUcsZUFBZTtBQUNsQixRQUFNLEdBQUcsc0JBQXNCO0FBRS9CLFFBQU0sY0FBYyxpQkFBaUI7R0FDbkMsV0FBVyxLQUFLLE9BQU8sUUFBUTtHQUMvQixlQUFlLEtBQUssTUFBTTtHQUMxQixVQUFVLEtBQUs7R0FDZixjQUFjLEtBQUssTUFBTSxZQUFZO0dBQ3JDLFVBQVUsS0FBSyxVQUFVLFFBQVE7R0FDakMsUUFBUSxL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
@@ -1,6 +1,6 @@
1
- import type { Knex } from "knex";
2
- import type { CacheManager } from "../cache/types";
3
- import type { EntityManager } from "../entity/entity-manager";
1
+ import { type Knex } from "knex";
2
+ import { type CacheManager } from "../cache/types";
3
+ import { type EntityManager } from "../entity/entity-manager";
4
4
  export type DataExplorerStrategy = "sample" | "ids" | "query" | "file" | "recent" | "random";
5
5
  /** WHERE 조건 타입 (객체 또는 Knex QueryBuilder 함수) */
6
6
  export type WhereCondition = Record<string, unknown> | ((queryBuilder: Knex.QueryBuilder) => void);
@@ -1 +1 @@
1
- {"version":3,"file":"data-explorer.d.ts","sourceRoot":"","sources":["../../src/testing/data-explorer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEnD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAG9D,MAAM,MAAM,oBAAoB,GAAG,QAAQ,GAAG,KAAK,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE7F,+CAA+C;AAC/C,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,CAAC;AAEnG,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4BAA4B;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,8BAA8B;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG,mBAAmB,GAAG;IAC9D,+BAA+B;IAC/B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,2BAA2B;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG;IACvC,oBAAoB;IACpB,IAAI,EAAE;QACJ,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;KACpC,CAAC;IACF,0CAA0C;IAC1C,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;CACjD,CAAC;AAGF,qBAAa,YAAY;IAIrB,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,aAAa;IAJvB,OAAO,CAAC,KAAK,CAAC,CAAe;gBAGnB,EAAE,EAAE,IAAI,EACR,aAAa,EAAE,OAAO,aAAa,EAC3C,YAAY,CAAC,EAAE,YAAY;IAKvB,OAAO,CACX,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;YAmBvB,eAAe;YAsDf,UAAU;YAqCV,YAAY;IAO1B,OAAO,CAAC,mBAAmB;YAKb,YAAY;IA8BpB,eAAe,CACnB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,GACrC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAuBrC;;OAEG;IACG,gBAAgB,CACpB,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,EAAE,EACvB,OAAO,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,GACrC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;IAWrD,OAAO,CAAC,gBAAgB;IAoBxB;;;OAGG;IACG,oBAAoB,CACxB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,2BAA2B,GACnC,OAAO,CAAC,0BAA0B,CAAC;IA6BtC;;OAEG;YACW,kBAAkB;CAkHjC"}
1
+ {"version":3,"file":"data-explorer.d.ts","sourceRoot":"","sources":["../../src/testing/data-explorer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,MAAM,CAAC;AAEjC,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEnD,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAG9D,MAAM,MAAM,oBAAoB,GAAG,QAAQ,GAAG,KAAK,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE7F,+CAA+C;AAC/C,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,CAAC;AAEnG,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4BAA4B;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,8BAA8B;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG,mBAAmB,GAAG;IAC9D,+BAA+B;IAC/B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,2BAA2B;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG;IACvC,oBAAoB;IACpB,IAAI,EAAE;QACJ,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;KACpC,CAAC;IACF,0CAA0C;IAC1C,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;CACjD,CAAC;AAGF,qBAAa,YAAY;IAIrB,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,aAAa;IAJvB,OAAO,CAAC,KAAK,CAAC,CAAe;gBAGnB,EAAE,EAAE,IAAI,EACR,aAAa,EAAE,OAAO,aAAa,EAC3C,YAAY,CAAC,EAAE,YAAY;IAKvB,OAAO,CACX,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;YAmBvB,eAAe;YAsDf,UAAU;YAqCV,YAAY;IAO1B,OAAO,CAAC,mBAAmB;YAKb,YAAY;IA8BpB,eAAe,CACnB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,GACrC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAuBrC;;OAEG;IACG,gBAAgB,CACpB,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,EAAE,EACvB,OAAO,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,GACrC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;IAWrD,OAAO,CAAC,gBAAgB;IAoBxB;;;OAGG;IACG,oBAAoB,CACxB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,2BAA2B,GACnC,OAAO,CAAC,0BAA0B,CAAC;IA6BtC;;OAEG;YACW,kBAAkB;CAkHjC"}