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,220 +1,223 @@
1
- import chalk from "chalk";
2
- import { Sonamu } from "../api/sonamu.js";
3
- import { EntityManager } from "../entity/entity-manager.js";
4
- import { betterAuthV1 } from "./better-auth-entities.js";
1
+ import { betterAuthV1, init_better_auth_entities } from "./better-auth-entities.js";
2
+ import { Sonamu, init_sonamu } from "../api/sonamu.js";
3
+ import { EntityManager, init_entity_manager } from "../entity/entity-manager.js";
5
4
  import { ENTITY_DEFINITIONS, isValidPluginId } from "./plugins/entity-definitions/index.js";
5
+ import chalk from "chalk";
6
+
7
+ //#region src/auth/auth-generator.ts
8
+ init_sonamu();
9
+ init_entity_manager();
10
+ init_better_auth_entities();
6
11
  /**
7
- * ėˆ„ė½ėœ props 찾기
8
- */ function findMissingProps(existingProps, requiredProps) {
9
- const existingNames = new Set(existingProps.map((p)=>p.name));
10
- return requiredProps.filter((p)=>!existingNames.has(p.name));
12
+ * ėˆ„ė½ėœ props 찾기
13
+ */
14
+ function findMissingProps(existingProps, requiredProps) {
15
+ const existingNames = new Set(existingProps.map((p) => p.name));
16
+ return requiredProps.filter((p) => !existingNames.has(p.name));
11
17
  }
12
18
  /**
13
- * ķƒ€ģž…ģ“ ė³€ź²½ėœ props 찾기 (ė™ģ¼ name, 다넸 type)
14
- * @returns [기씓 prop index, 새 prop][]
15
- */ function findPropsToUpdate(existingProps, requiredProps) {
16
- const result = [];
17
- for (const requiredProp of requiredProps){
18
- const existingIndex = existingProps.findIndex((p)=>p.name === requiredProp.name);
19
- if (existingIndex === -1) continue;
20
- const existingProp = existingProps[existingIndex];
21
- // typeģ“ ė‹¤ė„“ź±°ė‚˜ cone.fixtureStrategyź°€ 다넓멓 ģ—…ė°ģ“ķŠø ėŒ€ģƒ
22
- const coneChanged = requiredProp.cone?.fixtureStrategy !== existingProp?.cone?.fixtureStrategy;
23
- if (existingProp?.type !== requiredProp.type || coneChanged) {
24
- result.push({
25
- index: existingIndex,
26
- newProp: requiredProp
27
- });
28
- }
29
- }
30
- return result;
19
+ * ķƒ€ģž…ģ“ ė³€ź²½ėœ props 찾기 (ė™ģ¼ name, 다넸 type)
20
+ * @returns [기씓 prop index, 새 prop][]
21
+ */
22
+ function findPropsToUpdate(existingProps, requiredProps) {
23
+ const result = [];
24
+ for (const requiredProp of requiredProps) {
25
+ const existingIndex = existingProps.findIndex((p) => p.name === requiredProp.name);
26
+ if (existingIndex === -1) continue;
27
+ const existingProp = existingProps[existingIndex];
28
+ const coneChanged = requiredProp.cone?.fixtureStrategy !== existingProp?.cone?.fixtureStrategy;
29
+ if (existingProp?.type !== requiredProp.type || coneChanged) {
30
+ result.push({
31
+ index: existingIndex,
32
+ newProp: requiredProp
33
+ });
34
+ }
35
+ }
36
+ return result;
31
37
  }
32
38
  /**
33
- * ėˆ„ė½ėœ indexes 찾기
34
- */ function findMissingIndexes(existingIndexes, requiredIndexes) {
35
- const existingNames = new Set(existingIndexes.map((i)=>i.name));
36
- return requiredIndexes.filter((i)=>!existingNames.has(i.name));
39
+ * ėˆ„ė½ėœ indexes 찾기
40
+ */
41
+ function findMissingIndexes(existingIndexes, requiredIndexes) {
42
+ const existingNames = new Set(existingIndexes.map((i) => i.name));
43
+ return requiredIndexes.filter((i) => !existingNames.has(i.name));
37
44
  }
38
45
  /**
39
- * ėˆ„ė½ėœ subsets 찾기
40
- */ function findMissingSubsets(existingSubsets, requiredSubsets) {
41
- const missing = {};
42
- for (const [key, fields] of Object.entries(requiredSubsets)){
43
- if (!existingSubsets[key]) {
44
- missing[key] = fields;
45
- }
46
- }
47
- return missing;
46
+ * ėˆ„ė½ėœ subsets 찾기
47
+ */
48
+ function findMissingSubsets(existingSubsets, requiredSubsets) {
49
+ const missing = {};
50
+ for (const [key, fields] of Object.entries(requiredSubsets)) {
51
+ if (!existingSubsets[key]) {
52
+ missing[key] = fields;
53
+ }
54
+ }
55
+ return missing;
48
56
  }
49
57
  /**
50
- * 엔티티넼 ģƒģ„±ķ•˜ź±°ė‚˜ ģ—…ė°ģ“ķŠøķ•©ė‹ˆė‹¤.
51
- */ async function createOrUpdateEntity(entityJson) {
52
- const exists = EntityManager.exists(entityJson.id);
53
- if (!exists) {
54
- // 새 엔티티 ģƒģ„±
55
- await Sonamu.syncer.createEntity({
56
- entityId: entityJson.id,
57
- table: entityJson.table,
58
- title: entityJson.title ?? entityJson.id,
59
- props: entityJson.props ?? [],
60
- indexes: entityJson.indexes ?? [],
61
- subsets: entityJson.subsets ?? {},
62
- enums: entityJson.enums ?? {}
63
- });
64
- const entity = EntityManager.get(entityJson.id);
65
- await entity.save();
66
- console.log(chalk.green(`[CREATED] ${entityJson.id}`));
67
- return;
68
- }
69
- // 기씓 엔티티 ģ—…ė°ģ“ķŠø
70
- const entity = EntityManager.get(entityJson.id);
71
- let hasChanges = false;
72
- // ėˆ„ė½ėœ props 추가
73
- const missingProps = findMissingProps(entity.props, entityJson.props ?? []);
74
- for (const prop of missingProps){
75
- await entity.createProp(prop);
76
- console.log(chalk.green(`[ADD PROP] ${entityJson.id}.${prop.name}`));
77
- hasChanges = true;
78
- }
79
- // ķƒ€ģž…ģ“ ė³€ź²½ėœ props ģ—…ė°ģ“ķŠø
80
- const propsToUpdate = findPropsToUpdate(entity.props, entityJson.props ?? []);
81
- for (const { index, newProp } of propsToUpdate){
82
- const oldType = entity.props[index]?.type;
83
- await entity.modifyProp(newProp, index);
84
- console.log(chalk.yellow(`[UPDATE PROP] ${entityJson.id}.${newProp.name}: ${oldType} → ${newProp.type}`));
85
- hasChanges = true;
86
- }
87
- // ėˆ„ė½ėœ indexes 추가
88
- const missingIndexes = findMissingIndexes(entity.indexes, entityJson.indexes ?? []);
89
- for (const index of missingIndexes){
90
- entity.indexes.push(index);
91
- console.log(chalk.green(`[ADD INDEX] ${entityJson.id}.${index.name}`));
92
- hasChanges = true;
93
- }
94
- // ėˆ„ė½ėœ subsets 추가
95
- const missingSubsets = findMissingSubsets(entity.subsets, entityJson.subsets ?? {});
96
- for (const [key, fields] of Object.entries(missingSubsets)){
97
- entity.subsets[key] = fields;
98
- console.log(chalk.green(`[ADD SUBSET] ${entityJson.id}.${key}`));
99
- hasChanges = true;
100
- }
101
- // 변경사항 ģ €ģž„
102
- if (hasChanges) {
103
- await entity.save();
104
- console.log(chalk.blue(`[UPDATED] ${entityJson.id}`));
105
- } else {
106
- console.log(chalk.dim(`[SKIP] ${entityJson.id} - no changes`));
107
- }
58
+ * 엔티티넼 ģƒģ„±ķ•˜ź±°ė‚˜ ģ—…ė°ģ“ķŠøķ•©ė‹ˆė‹¤.
59
+ */
60
+ async function createOrUpdateEntity(entityJson) {
61
+ const exists = EntityManager.exists(entityJson.id);
62
+ if (!exists) {
63
+ await Sonamu.syncer.createEntity({
64
+ entityId: entityJson.id,
65
+ table: entityJson.table,
66
+ title: entityJson.title ?? entityJson.id,
67
+ props: entityJson.props ?? [],
68
+ indexes: entityJson.indexes ?? [],
69
+ subsets: entityJson.subsets ?? {},
70
+ enums: entityJson.enums ?? {}
71
+ });
72
+ const entity$1 = EntityManager.get(entityJson.id);
73
+ await entity$1.save();
74
+ console.log(chalk.green(`[CREATED] ${entityJson.id}`));
75
+ return;
76
+ }
77
+ const entity = EntityManager.get(entityJson.id);
78
+ let hasChanges = false;
79
+ const missingProps = findMissingProps(entity.props, entityJson.props ?? []);
80
+ for (const prop of missingProps) {
81
+ await entity.createProp(prop);
82
+ console.log(chalk.green(`[ADD PROP] ${entityJson.id}.${prop.name}`));
83
+ hasChanges = true;
84
+ }
85
+ const propsToUpdate = findPropsToUpdate(entity.props, entityJson.props ?? []);
86
+ for (const { index, newProp } of propsToUpdate) {
87
+ const oldType = entity.props[index]?.type;
88
+ await entity.modifyProp(newProp, index);
89
+ console.log(chalk.yellow(`[UPDATE PROP] ${entityJson.id}.${newProp.name}: ${oldType} → ${newProp.type}`));
90
+ hasChanges = true;
91
+ }
92
+ const missingIndexes = findMissingIndexes(entity.indexes, entityJson.indexes ?? []);
93
+ for (const index of missingIndexes) {
94
+ entity.indexes.push(index);
95
+ console.log(chalk.green(`[ADD INDEX] ${entityJson.id}.${index.name}`));
96
+ hasChanges = true;
97
+ }
98
+ const missingSubsets = findMissingSubsets(entity.subsets, entityJson.subsets ?? {});
99
+ for (const [key, fields] of Object.entries(missingSubsets)) {
100
+ entity.subsets[key] = fields;
101
+ console.log(chalk.green(`[ADD SUBSET] ${entityJson.id}.${key}`));
102
+ hasChanges = true;
103
+ }
104
+ if (hasChanges) {
105
+ await entity.save();
106
+ console.log(chalk.blue(`[UPDATED] ${entityJson.id}`));
107
+ } else {
108
+ console.log(chalk.dim(`[SKIP] ${entityJson.id} - no changes`));
109
+ }
108
110
  }
109
111
  /**
110
- * 기씓 엔티티에 props넼 ģ¶”ź°€ķ•©ė‹ˆė‹¤.
111
- */ async function addPropsToEntity(entityId, props) {
112
- if (!EntityManager.exists(entityId)) {
113
- console.log(chalk.yellow(`[SKIP] ${entityId} - entity not found, cannot add props`));
114
- return;
115
- }
116
- const entity = EntityManager.get(entityId);
117
- let hasChanges = false;
118
- const missingProps = findMissingProps(entity.props, props);
119
- for (const prop of missingProps){
120
- await entity.createProp(prop);
121
- console.log(chalk.green(`[ADD PROP] ${entityId}.${prop.name}`));
122
- hasChanges = true;
123
- }
124
- if (hasChanges) {
125
- await entity.save();
126
- }
112
+ * 기씓 엔티티에 props넼 ģ¶”ź°€ķ•©ė‹ˆė‹¤.
113
+ */
114
+ async function addPropsToEntity(entityId, props) {
115
+ if (!EntityManager.exists(entityId)) {
116
+ console.log(chalk.yellow(`[SKIP] ${entityId} - entity not found, cannot add props`));
117
+ return;
118
+ }
119
+ const entity = EntityManager.get(entityId);
120
+ let hasChanges = false;
121
+ const missingProps = findMissingProps(entity.props, props);
122
+ for (const prop of missingProps) {
123
+ await entity.createProp(prop);
124
+ console.log(chalk.green(`[ADD PROP] ${entityId}.${prop.name}`));
125
+ hasChanges = true;
126
+ }
127
+ if (hasChanges) {
128
+ await entity.save();
129
+ }
127
130
  }
128
131
  /**
129
- * 기씓 엔티티에 indexes넼 ģ¶”ź°€ķ•©ė‹ˆė‹¤.
130
- */ async function addIndexesToEntity(entityId, indexes) {
131
- if (!EntityManager.exists(entityId)) {
132
- console.log(chalk.yellow(`[SKIP] ${entityId} - entity not found, cannot add indexes`));
133
- return;
134
- }
135
- const entity = EntityManager.get(entityId);
136
- let hasChanges = false;
137
- const missingIndexes = findMissingIndexes(entity.indexes, indexes);
138
- for (const index of missingIndexes){
139
- entity.indexes.push(index);
140
- console.log(chalk.green(`[ADD INDEX] ${entityId}.${index.name}`));
141
- hasChanges = true;
142
- }
143
- if (hasChanges) {
144
- await entity.save();
145
- }
132
+ * 기씓 엔티티에 indexes넼 ģ¶”ź°€ķ•©ė‹ˆė‹¤.
133
+ */
134
+ async function addIndexesToEntity(entityId, indexes) {
135
+ if (!EntityManager.exists(entityId)) {
136
+ console.log(chalk.yellow(`[SKIP] ${entityId} - entity not found, cannot add indexes`));
137
+ return;
138
+ }
139
+ const entity = EntityManager.get(entityId);
140
+ let hasChanges = false;
141
+ const missingIndexes = findMissingIndexes(entity.indexes, indexes);
142
+ for (const index of missingIndexes) {
143
+ entity.indexes.push(index);
144
+ console.log(chalk.green(`[ADD INDEX] ${entityId}.${index.name}`));
145
+ hasChanges = true;
146
+ }
147
+ if (hasChanges) {
148
+ await entity.save();
149
+ }
146
150
  }
147
151
  /**
148
- * 기씓 ķ”„ė”œģ ķŠøģ˜ entity.json에 fixtureCompanions넼 ģ†Œźø‰ ģ¶”ź°€ķ•©ė‹ˆė‹¤.
149
- *
150
- * betterAuthV1 źø°ģ¤€ģœ¼ė”œ fixtureCompanionsź°€ ģ •ģ˜ėœ entity넼 찾아
151
- * ķ”„ė”œģ ķŠø ė‚“ entity.json에 핓당 propģ˜ cone에 fixtureCompanionsź°€
152
- * ģ—†ģ„ ė•Œė§Œ ģ¶”ź°€ķ•©ė‹ˆė‹¤. ģ“ėÆø ģžˆģœ¼ė©“ ģŠ¤ķ‚µķ•©ė‹ˆė‹¤.
153
- */ export async function addCompanionsToEntities() {
154
- for (const entityJson of betterAuthV1){
155
- const idProp = entityJson.props?.find((p)=>p.name === "id");
156
- if (!idProp?.cone?.fixtureCompanions) continue;
157
- if (!EntityManager.exists(entityJson.id)) {
158
- console.log(chalk.yellow(`[SKIP] ${entityJson.id} - not found`));
159
- continue;
160
- }
161
- const entity = EntityManager.get(entityJson.id);
162
- const existingIdProp = entity.props.find((p)=>p.name === "id");
163
- if (!existingIdProp) {
164
- console.log(chalk.yellow(`[SKIP] ${entityJson.id}.id - prop not found`));
165
- continue;
166
- }
167
- if (existingIdProp.cone?.fixtureCompanions) {
168
- console.log(chalk.dim(`[SKIP] ${entityJson.id}.id - fixtureCompanions already exists`));
169
- continue;
170
- }
171
- existingIdProp.cone = {
172
- ...existingIdProp.cone,
173
- fixtureCompanions: idProp.cone.fixtureCompanions
174
- };
175
- await entity.save();
176
- console.log(chalk.green(`[UPDATED] ${entityJson.id}.id - fixtureCompanions added`));
177
- }
152
+ * 기씓 ķ”„ė”œģ ķŠøģ˜ entity.json에 fixtureCompanions넼 ģ†Œźø‰ ģ¶”ź°€ķ•©ė‹ˆė‹¤.
153
+ *
154
+ * betterAuthV1 źø°ģ¤€ģœ¼ė”œ fixtureCompanionsź°€ ģ •ģ˜ėœ entity넼 찾아
155
+ * ķ”„ė”œģ ķŠø ė‚“ entity.json에 핓당 propģ˜ cone에 fixtureCompanionsź°€
156
+ * ģ—†ģ„ ė•Œė§Œ ģ¶”ź°€ķ•©ė‹ˆė‹¤. ģ“ėÆø ģžˆģœ¼ė©“ ģŠ¤ķ‚µķ•©ė‹ˆė‹¤.
157
+ */
158
+ async function addCompanionsToEntities() {
159
+ for (const entityJson of betterAuthV1) {
160
+ const idProp = entityJson.props?.find((p) => p.name === "id");
161
+ if (!idProp?.cone?.fixtureCompanions) continue;
162
+ if (!EntityManager.exists(entityJson.id)) {
163
+ console.log(chalk.yellow(`[SKIP] ${entityJson.id} - not found`));
164
+ continue;
165
+ }
166
+ const entity = EntityManager.get(entityJson.id);
167
+ const existingIdProp = entity.props.find((p) => p.name === "id");
168
+ if (!existingIdProp) {
169
+ console.log(chalk.yellow(`[SKIP] ${entityJson.id}.id - prop not found`));
170
+ continue;
171
+ }
172
+ if (existingIdProp.cone?.fixtureCompanions) {
173
+ console.log(chalk.dim(`[SKIP] ${entityJson.id}.id - fixtureCompanions already exists`));
174
+ continue;
175
+ }
176
+ existingIdProp.cone = {
177
+ ...existingIdProp.cone,
178
+ fixtureCompanions: idProp.cone.fixtureCompanions
179
+ };
180
+ await entity.save();
181
+ console.log(chalk.green(`[UPDATED] ${entityJson.id}.id - fixtureCompanions added`));
182
+ }
178
183
  }
179
184
  /**
180
- * better-auth ģ—”ķ‹°ķ‹°ė“¤ģ„ Sonamu에 ģƒģ„±/ģ—…ė°ģ“ķŠø
181
- *
182
- * @param options ģƒģ„± ģ˜µģ…˜
183
- * @param options.plugins ķ™œģ„±ķ™”ķ•  ķ”ŒėŸ¬ź·øģø ID ėŖ©ė”
184
- */ export async function generateBetterAuthEntities(options = {}) {
185
- const { plugins = [] } = options;
186
- // 1. źø°ė³ø 엔티티 ģƒģ„±/ģ—…ė°ģ“ķŠø
187
- console.log(chalk.cyan("\nšŸ“¦ Processing core entities...\n"));
188
- for (const entityJson of betterAuthV1){
189
- await createOrUpdateEntity(entityJson);
190
- }
191
- // 2. ķ”ŒėŸ¬ź·øģø 처리
192
- if (plugins.length > 0) {
193
- console.log(chalk.cyan("\nšŸ”Œ Processing plugins...\n"));
194
- for (const pluginId of plugins){
195
- if (!isValidPluginId(pluginId)) {
196
- console.log(chalk.red(`[ERROR] Unknown plugin: ${pluginId}`));
197
- continue;
198
- }
199
- const entityDef = ENTITY_DEFINITIONS[pluginId];
200
- console.log(chalk.magenta(`[PLUGIN] ${entityDef.name}`));
201
- // ķ”ŒėŸ¬ź·øģøģ˜ 새 엔티티 ģƒģ„±
202
- for (const entityJson of entityDef.entities){
203
- await createOrUpdateEntity(entityJson);
204
- }
205
- // 기씓 엔티티에 ķ•„ė“œ 추가
206
- for (const [entityId, props] of Object.entries(entityDef.additionalProps)){
207
- await addPropsToEntity(entityId, props);
208
- }
209
- // 기씓 엔티티에 ģøė±ģŠ¤ 추가
210
- if (entityDef.additionalIndexes) {
211
- for (const [entityId, indexes] of Object.entries(entityDef.additionalIndexes)){
212
- await addIndexesToEntity(entityId, indexes);
213
- }
214
- }
215
- }
216
- }
217
- console.log(chalk.bold("\nāœ… Done! better-auth entities generated."));
185
+ * better-auth ģ—”ķ‹°ķ‹°ė“¤ģ„ Sonamu에 ģƒģ„±/ģ—…ė°ģ“ķŠø
186
+ *
187
+ * @param options ģƒģ„± ģ˜µģ…˜
188
+ * @param options.plugins ķ™œģ„±ķ™”ķ•  ķ”ŒėŸ¬ź·øģø ID ėŖ©ė”
189
+ */
190
+ async function generateBetterAuthEntities(options = {}) {
191
+ const { plugins = [] } = options;
192
+ console.log(chalk.cyan("\nšŸ“¦ Processing core entities...\n"));
193
+ for (const entityJson of betterAuthV1) {
194
+ await createOrUpdateEntity(entityJson);
195
+ }
196
+ if (plugins.length > 0) {
197
+ console.log(chalk.cyan("\nšŸ”Œ Processing plugins...\n"));
198
+ for (const pluginId of plugins) {
199
+ if (!isValidPluginId(pluginId)) {
200
+ console.log(chalk.red(`[ERROR] Unknown plugin: ${pluginId}`));
201
+ continue;
202
+ }
203
+ const entityDef = ENTITY_DEFINITIONS[pluginId];
204
+ console.log(chalk.magenta(`[PLUGIN] ${entityDef.name}`));
205
+ for (const entityJson of entityDef.entities) {
206
+ await createOrUpdateEntity(entityJson);
207
+ }
208
+ for (const [entityId, props] of Object.entries(entityDef.additionalProps)) {
209
+ await addPropsToEntity(entityId, props);
210
+ }
211
+ if (entityDef.additionalIndexes) {
212
+ for (const [entityId, indexes] of Object.entries(entityDef.additionalIndexes)) {
213
+ await addIndexesToEntity(entityId, indexes);
214
+ }
215
+ }
216
+ }
217
+ }
218
+ console.log(chalk.bold("\nāœ… Done! better-auth entities generated."));
218
219
  }
219
220
 
220
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hdXRoL2F1dGgtZ2VuZXJhdG9yLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjaGFsayBmcm9tIFwiY2hhbGtcIjtcbmltcG9ydCB7IFNvbmFtdSB9IGZyb20gXCIuLi9hcGkvc29uYW11XCI7XG5pbXBvcnQgeyBFbnRpdHlNYW5hZ2VyIH0gZnJvbSBcIi4uL2VudGl0eS9lbnRpdHktbWFuYWdlclwiO1xuaW1wb3J0IHR5cGUgeyBFbnRpdHlJbmRleCwgRW50aXR5SnNvbiwgRW50aXR5UHJvcCB9IGZyb20gXCIuLi90eXBlcy90eXBlc1wiO1xuaW1wb3J0IHsgYmV0dGVyQXV0aFYxIH0gZnJvbSBcIi4vYmV0dGVyLWF1dGgtZW50aXRpZXNcIjtcbmltcG9ydCB7XG4gIHR5cGUgQmV0dGVyQXV0aFBsdWdpbklkLFxuICBFTlRJVFlfREVGSU5JVElPTlMsXG4gIGlzVmFsaWRQbHVnaW5JZCxcbn0gZnJvbSBcIi4vcGx1Z2lucy9lbnRpdHktZGVmaW5pdGlvbnNcIjtcblxuLyoqXG4gKiDriITrnb3rkJwgcHJvcHMg7LC+6riwXG4gKi9cbmZ1bmN0aW9uIGZpbmRNaXNzaW5nUHJvcHMoZXhpc3RpbmdQcm9wczogRW50aXR5UHJvcFtdLCByZXF1aXJlZFByb3BzOiBFbnRpdHlQcm9wW10pOiBFbnRpdHlQcm9wW10ge1xuICBjb25zdCBleGlzdGluZ05hbWVzID0gbmV3IFNldChleGlzdGluZ1Byb3BzLm1hcCgocCkgPT4gcC5uYW1lKSk7XG4gIHJldHVybiByZXF1aXJlZFByb3BzLmZpbHRlcigocCkgPT4gIWV4aXN0aW5nTmFtZXMuaGFzKHAubmFtZSkpO1xufVxuXG4vKipcbiAqIO2DgOyeheydtCDrs4Dqsr3rkJwgcHJvcHMg7LC+6riwICjrj5nsnbwgbmFtZSwg64uk66W4IHR5cGUpXG4gKiBAcmV0dXJucyBb6riw7KG0IHByb3AgaW5kZXgsIOyDiCBwcm9wXVtdXG4gKi9cbmZ1bmN0aW9uIGZpbmRQcm9wc1RvVXBkYXRlKFxuICBleGlzdGluZ1Byb3BzOiBFbnRpdHlQcm9wW10sXG4gIHJlcXVpcmVkUHJvcHM6IEVudGl0eVByb3BbXSxcbik6IHsgaW5kZXg6IG51bWJlcjsgbmV3UHJvcDogRW50aXR5UHJvcCB9W10ge1xuICBjb25zdCByZXN1bHQ6IHsgaW5kZXg6IG51bWJlcjsgbmV3UHJvcDogRW50aXR5UHJvcCB9W10gPSBbXTtcblxuICBmb3IgKGNvbnN0IHJlcXVpcmVkUHJvcCBvZiByZXF1aXJlZFByb3BzKSB7XG4gICAgY29uc3QgZXhpc3RpbmdJbmRleCA9IGV4aXN0aW5nUHJvcHMuZmluZEluZGV4KChwKSA9PiBwLm5hbWUgPT09IHJlcXVpcmVkUHJvcC5uYW1lKTtcbiAgICBpZiAoZXhpc3RpbmdJbmRleCA9PT0gLTEpIGNvbnRpbnVlO1xuXG4gICAgY29uc3QgZXhpc3RpbmdQcm9wID0gZXhpc3RpbmdQcm9wc1tleGlzdGluZ0luZGV4XTtcbiAgICAvLyB0eXBl7J20IOuLpOultOqxsOuCmCBjb25lLmZpeHR1cmVTdHJhdGVneeqwgCDri6TrpbTrqbQg7JeF642w7J207Yq4IOuMgOyDgVxuICAgIGNvbnN0IGNvbmVDaGFuZ2VkID0gcmVxdWlyZWRQcm9wLmNvbmU/LmZpeHR1cmVTdHJhdGVneSAhPT0gZXhpc3RpbmdQcm9wPy5jb25lPy5maXh0dXJlU3RyYXRlZ3k7XG4gICAgaWYgKGV4aXN0aW5nUHJvcD8udHlwZSAhPT0gcmVxdWlyZWRQcm9wLnR5cGUgfHwgY29uZUNoYW5nZWQpIHtcbiAgICAgIHJlc3VsdC5wdXNoKHsgaW5kZXg6IGV4aXN0aW5nSW5kZXgsIG5ld1Byb3A6IHJlcXVpcmVkUHJvcCB9KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIOuIhOudveuQnCBpbmRleGVzIOywvuq4sFxuICovXG5mdW5jdGlvbiBmaW5kTWlzc2luZ0luZGV4ZXMoXG4gIGV4aXN0aW5nSW5kZXhlczogRW50aXR5SW5kZXhbXSxcbiAgcmVxdWlyZWRJbmRleGVzOiBFbnRpdHlJbmRleFtdLFxuKTogRW50aXR5SW5kZXhbXSB7XG4gIGNvbnN0IGV4aXN0aW5nTmFtZXMgPSBuZXcgU2V0KGV4aXN0aW5nSW5kZXhlcy5tYXAoKGkpID0+IGkubmFtZSkpO1xuICByZXR1cm4gcmVxdWlyZWRJbmRleGVzLmZpbHRlcigoaSkgPT4gIWV4aXN0aW5nTmFtZXMuaGFzKGkubmFtZSkpO1xufVxuXG4vKipcbiAqIOuIhOudveuQnCBzdWJzZXRzIOywvuq4sFxuICovXG5mdW5jdGlvbiBmaW5kTWlzc2luZ1N1YnNldHMoXG4gIGV4aXN0aW5nU3Vic2V0czogeyBba2V5OiBzdHJpbmddOiBzdHJpbmdbXSB9LFxuICByZXF1aXJlZFN1YnNldHM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nW10gfSxcbik6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nW10gfSB7XG4gIGNvbnN0IG1pc3Npbmc6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nW10gfSA9IHt9O1xuICBmb3IgKGNvbnN0IFtrZXksIGZpZWxkc10gb2YgT2JqZWN0LmVudHJpZXMocmVxdWlyZWRTdWJzZXRzKSkge1xuICAgIGlmICghZXhpc3RpbmdTdWJzZXRzW2tleV0pIHtcbiAgICAgIG1pc3Npbmdba2V5XSA9IGZpZWxkcztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG1pc3Npbmc7XG59XG5cbi8qKlxuICog7JeU7Yuw7Yuw66W8IOyDneyEse2VmOqxsOuCmCDsl4XrjbDsnbTtirjtlanri4jri6QuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGNyZWF0ZU9yVXBkYXRlRW50aXR5KGVudGl0eUpzb246IEVudGl0eUpzb24pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgZXhpc3RzID0gRW50aXR5TWFuYWdlci5leGlzdHMoZW50aXR5SnNvbi5pZCk7XG5cbiAgaWYgKCFleGlzdHMpIHtcbiAgICAvLyDsg4gg7JeU7Yuw7YuwIOyDneyEsVxuICAgIGF3YWl0IFNvbmFtdS5zeW5jZXIuY3JlYXRlRW50aXR5KHtcbiAgICAgIGVudGl0eUlkOiBlbnRpdHlKc29uLmlkLFxuICAgICAgdGFibGU6IGVudGl0eUpzb24udGFibGUsXG4gICAgICB0aXRsZTogZW50aXR5SnNvbi50aXRsZSA/PyBlbnRpdHlKc29uLmlkLFxuICAgICAgcHJvcHM6IGVudGl0eUpzb24ucHJvcHMgPz8gW10sXG4gICAgICBpbmRleGVzOiBlbnRpdHlKc29uLmluZGV4ZXMgPz8gW10sXG4gICAgICBzdWJzZXRzOiBlbnRpdHlKc29uLnN1YnNldHMgPz8ge30sXG4gICAgICBlbnVtczogZW50aXR5SnNvbi5lbnVtcyA/PyB7fSxcbiAgICB9KTtcblxuICAgIGNvbnN0IGVudGl0eSA9IEVudGl0eU1hbmFnZXIuZ2V0KGVudGl0eUpzb24uaWQpO1xuICAgIGF3YWl0IGVudGl0eS5zYXZlKCk7XG4gICAgY29uc29sZS5sb2coY2hhbGsuZ3JlZW4oYFtDUkVBVEVEXSAke2VudGl0eUpzb24uaWR9YCkpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIOq4sOyhtCDsl5Tti7Dti7Ag7JeF642w7J207Yq4XG4gIGNvbnN0IGVudGl0eSA9IEVudGl0eU1hbmFnZXIuZ2V0KGVudGl0eUpzb24uaWQpO1xuICBsZXQgaGFzQ2hhbmdlcyA9IGZhbHNlO1xuXG4gIC8vIOuIhOudveuQnCBwcm9wcyDstpTqsIBcbiAgY29uc3QgbWlzc2luZ1Byb3BzID0gZmluZE1pc3NpbmdQcm9wcyhlbnRpdHkucHJvcHMsIGVudGl0eUpzb24ucHJvcHMgPz8gW10pO1xuICBmb3IgKGNvbnN0IHByb3Agb2YgbWlzc2luZ1Byb3BzKSB7XG4gICAgYXdhaXQgZW50aXR5LmNyZWF0ZVByb3AocHJvcCk7XG4gICAgY29uc29sZS5sb2coY2hhbGsuZ3JlZW4oYFtBREQgUFJPUF0gJHtlbnRpdHlKc29uLmlkfS4ke3Byb3AubmFtZX1gKSk7XG4gICAgaGFzQ2hhbmdlcyA9IHRydWU7XG4gIH1cblxuICAvLyDtg4DsnoXsnbQg67OA6rK965CcIHByb3BzIOyXheuNsOydtO2KuFxuICBjb25zdCBwcm9wc1RvVXBkYXRlID0gZmluZFByb3BzVG9VcGRhdGUoZW50aXR5LnByb3BzLCBlbnRpdHlKc29uLnByb3BzID8/IFtdKTtcbiAgZm9yIChjb25zdCB7IGluZGV4LCBuZXdQcm9wIH0gb2YgcHJvcHNUb1VwZGF0ZSkge1xuICAgIGNvbnN0IG9sZFR5cGUgPSBlbnRpdHkucHJvcHNbaW5kZXhdPy50eXBlO1xuICAgIGF3YWl0IGVudGl0eS5tb2RpZnlQcm9wKG5ld1Byb3AsIGluZGV4KTtcbiAgICBjb25zb2xlLmxvZyhcbiAgICAgIGNoYWxrLnllbGxvdyhgW1VQREFURSBQUk9QXSAke2VudGl0eUpzb24uaWR9LiR7bmV3UHJvcC5uYW1lfTogJHtvbGRUeXBlfSDihpIgJHtuZXdQcm9wLnR5cGV9YCksXG4gICAgKTtcbiAgICBoYXNDaGFuZ2VzID0gdHJ1ZTtcbiAgfVxuXG4gIC8vIOuIhOudveuQnCBpbmRleGVzIOy2lOqwgFxuICBjb25zdCBtaXNzaW5nSW5kZXhlcyA9IGZpbmRNaXNzaW5nSW5kZXhlcyhlbnRpdHkuaW5kZXhlcywgZW50aXR5SnNvbi5pbmRleGVzID8/IFtdKTtcbiAgZm9yIChjb25zdCBpbmRleCBvZiBtaXNzaW5nSW5kZXhlcykge1xuICAgIGVudGl0eS5pbmRleGVzLnB1c2goaW5kZXgpO1xuICAgIGNvbnNvbGUubG9nKGNoYWxrLmdyZWVuKGBbQUREIElOREVYXSAke2VudGl0eUpzb24uaWR9LiR7aW5kZXgubmFtZX1gKSk7XG4gICAgaGFzQ2hhbmdlcyA9IHRydWU7XG4gIH1cblxuICAvLyDriITrnb3rkJwgc3Vic2V0cyDstpTqsIBcbiAgY29uc3QgbWlzc2luZ1N1YnNldHMgPSBmaW5kTWlzc2luZ1N1YnNldHMoXG4gICAgZW50aXR5LnN1YnNldHMsXG4gICAgKGVudGl0eUpzb24uc3Vic2V0cyA/PyB7fSkgYXMgeyBba2V5OiBzdHJpbmddOiBzdHJpbmdbXSB9LFxuICApO1xuICBmb3IgKGNvbnN0IFtrZXksIGZpZWxkc10gb2YgT2JqZWN0LmVudHJpZXMobWlzc2luZ1N1YnNldHMpKSB7XG4gICAgZW50aXR5LnN1YnNldHNba2V5XSA9IGZpZWxkcztcbiAgICBjb25zb2xlLmxvZyhjaGFsay5ncmVlbihgW0FERCBTVUJTRVRdICR7ZW50aXR5SnNvbi5pZH0uJHtrZXl9YCkpO1xuICAgIGhhc0NoYW5nZXMgPSB0cnVlO1xuICB9XG5cbiAgLy8g67OA6rK97IKs7ZWtIOyggOyepVxuICBpZiAoaGFzQ2hhbmdlcykge1xuICAgIGF3YWl0IGVudGl0eS5zYXZlKCk7XG4gICAgY29uc29sZS5sb2coY2hhbGsuYmx1ZShgW1VQREFURURdICR7ZW50aXR5SnNvbi5pZH1gKSk7XG4gIH0gZWxzZSB7XG4gICAgY29uc29sZS5sb2coY2hhbGsuZGltKGBbU0tJUF0gJHtlbnRpdHlKc29uLmlkfSAtIG5vIGNoYW5nZXNgKSk7XG4gIH1cbn1cblxuLyoqXG4gKiDquLDsobQg7JeU7Yuw7Yuw7JeQIHByb3Bz66W8IOy2lOqwgO2VqeuLiOuLpC5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gYWRkUHJvcHNUb0VudGl0eShlbnRpdHlJZDogc3RyaW5nLCBwcm9wczogRW50aXR5UHJvcFtdKTogUHJvbWlzZTx2b2lkPiB7XG4gIGlmICghRW50aXR5TWFuYWdlci5leGlzdHMoZW50aXR5SWQpKSB7XG4gICAgY29uc29sZS5sb2coY2hhbGsueWVsbG93KGBbU0tJUF0gJHtlbnRpdHlJZH0gLSBlbnRpdHkgbm90IGZvdW5kLCBjYW5ub3QgYWRkIHByb3BzYCkpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IGVudGl0eSA9IEVudGl0eU1hbmFnZXIuZ2V0KGVudGl0eUlkKTtcbiAgbGV0IGhhc0NoYW5nZXMgPSBmYWxzZTtcblxuICBjb25zdCBtaXNzaW5nUHJvcHMgPSBmaW5kTWlzc2luZ1Byb3BzKGVudGl0eS5wcm9wcywgcHJvcHMpO1xuICBmb3IgKGNvbnN0IHByb3Agb2YgbWlzc2luZ1Byb3BzKSB7XG4gICAgYXdhaXQgZW50aXR5LmNyZWF0ZVByb3AocHJvcCk7XG4gICAgY29uc29sZS5sb2coY2hhbGsuZ3JlZW4oYFtBREQgUFJPUF0gJHtlbnRpdHlJZH0uJHtwcm9wLm5hbWV9YCkpO1xuICAgIGhhc0NoYW5nZXMgPSB0cnVlO1xuICB9XG5cbiAgaWYgKGhhc0NoYW5nZXMpIHtcbiAgICBhd2FpdCBlbnRpdHkuc2F2ZSgpO1xuICB9XG59XG5cbi8qKlxuICog6riw7KG0IOyXlO2LsO2LsOyXkCBpbmRleGVz66W8IOy2lOqwgO2VqeuLiOuLpC5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gYWRkSW5kZXhlc1RvRW50aXR5KGVudGl0eUlkOiBzdHJpbmcsIGluZGV4ZXM6IEVudGl0eUluZGV4W10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgaWYgKCFFbnRpdHlNYW5hZ2VyLmV4aXN0cyhlbnRpdHlJZCkpIHtcbiAgICBjb25zb2xlLmxvZyhjaGFsay55ZWxsb3coYFtTS0lQXSAke2VudGl0eUlkfSAtIGVudGl0eSBub3QgZm91bmQsIGNhbm5vdCBhZGQgaW5kZXhlc2ApKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBlbnRpdHkgPSBFbnRpdHlNYW5hZ2VyLmdldChlbnRpdHlJZCk7XG4gIGxldCBoYXNDaGFuZ2VzID0gZmFsc2U7XG5cbiAgY29uc3QgbWlzc2luZ0luZGV4ZXMgPSBmaW5kTWlzc2luZ0luZGV4ZXMoZW50aXR5LmluZGV4ZXMsIGluZGV4ZXMpO1xuICBmb3IgKGNvbnN0IGluZGV4IG9mIG1pc3NpbmdJbmRleGVzKSB7XG4gICAgZW50aXR5LmluZGV4ZXMucHVzaChpbmRleCk7XG4gICAgY29uc29sZS5sb2coY2hhbGsuZ3JlZW4oYFtBREQgSU5ERVhdICR7ZW50aXR5SWR9LiR7aW5kZXgubmFtZX1gKSk7XG4gICAgaGFzQ2hhbmdlcyA9IHRydWU7XG4gIH1cblxuICBpZiAoaGFzQ2hhbmdlcykge1xuICAgIGF3YWl0IGVudGl0eS5zYXZlKCk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBHZW5lcmF0ZUJldHRlckF1dGhFbnRpdGllc09wdGlvbnMge1xuICAvKipcbiAgICog7Zmc7ISx7ZmU7ZWgIO2UjOufrOq3uOyduCBJRCDrqqnroZ1cbiAgICog7JiIOiBbXCJwaG9uZS1udW1iZXJcIiwgXCIyZmFcIl1cbiAgICovXG4gIHBsdWdpbnM/OiBCZXR0ZXJBdXRoUGx1Z2luSWRbXTtcbn1cblxuLyoqXG4gKiDquLDsobQg7ZSE66Gc7KCd7Yq47J2YIGVudGl0eS5qc29u7JeQIGZpeHR1cmVDb21wYW5pb25z66W8IOyGjOq4iSDstpTqsIDtlanri4jri6QuXG4gKlxuICogYmV0dGVyQXV0aFYxIOq4sOykgOycvOuhnCBmaXh0dXJlQ29tcGFuaW9uc+qwgCDsoJXsnZjrkJwgZW50aXR566W8IOywvuyVhFxuICog7ZSE66Gc7KCd7Yq4IOuCtCBlbnRpdHkuanNvbuyXkCDtlbTri7kgcHJvcOydmCBjb25l7JeQIGZpeHR1cmVDb21wYW5pb25z6rCAXG4gKiDsl4bsnYQg65WM66eMIOy2lOqwgO2VqeuLiOuLpC4g7J2066+4IOyeiOycvOuptCDsiqTtgrXtlanri4jri6QuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhZGRDb21wYW5pb25zVG9FbnRpdGllcygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgZm9yIChjb25zdCBlbnRpdHlKc29uIG9mIGJldHRlckF1dGhWMSkge1xuICAgIGNvbnN0IGlkUHJvcCA9IGVudGl0eUpzb24ucHJvcHM/LmZpbmQoKHApID0+IHAubmFtZSA9PT0gXCJpZFwiKTtcbiAgICBpZiAoIWlkUHJvcD8uY29uZT8uZml4dHVyZUNvbXBhbmlvbnMpIGNvbnRpbnVlO1xuXG4gICAgaWYgKCFFbnRpdHlNYW5hZ2VyLmV4aXN0cyhlbnRpdHlKc29uLmlkKSkge1xuICAgICAgY29uc29sZS5sb2coY2hhbGsueWVsbG93KGBbU0tJUF0gJHtlbnRpdHlKc29uLmlkfSAtIG5vdCBmb3VuZGApKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGNvbnN0IGVudGl0eSA9IEVudGl0eU1hbmFnZXIuZ2V0KGVudGl0eUpzb24uaWQpO1xuICAgIGNvbnN0IGV4aXN0aW5nSWRQcm9wID0gZW50aXR5LnByb3BzLmZpbmQoKHApID0+IHAubmFtZSA9PT0gXCJpZFwiKTtcbiAgICBpZiAoIWV4aXN0aW5nSWRQcm9wKSB7XG4gICAgICBjb25zb2xlLmxvZyhjaGFsay55ZWxsb3coYFtTS0lQXSAke2VudGl0eUpzb24uaWR9LmlkIC0gcHJvcCBub3QgZm91bmRgKSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAoZXhpc3RpbmdJZFByb3AuY29uZT8uZml4dHVyZUNvbXBhbmlvbnMpIHtcbiAgICAgIGNvbnNvbGUubG9nKGNoYWxrLmRpbShgW1NLSVBdICR7ZW50aXR5SnNvbi5pZH0uaWQgLSBmaXh0dXJlQ29tcGFuaW9ucyBhbHJlYWR5IGV4aXN0c2ApKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGV4aXN0aW5nSWRQcm9wLmNvbmUgPSB7XG4gICAgICAuLi5leGlzdGluZ0lkUHJvcC5jb25lLFxuICAgICAgZml4dHVyZUNvbXBhbmlvbnM6IGlkUHJvcC5jb25lLmZpeHR1cmVDb21wYW5pb25zLFxuICAgIH07XG4gICAgYXdhaXQgZW50aXR5LnNhdmUoKTtcbiAgICBjb25zb2xlLmxvZyhjaGFsay5ncmVlbihgW1VQREFURURdICR7ZW50aXR5SnNvbi5pZH0uaWQgLSBmaXh0dXJlQ29tcGFuaW9ucyBhZGRlZGApKTtcbiAgfVxufVxuXG4vKipcbiAqIGJldHRlci1hdXRoIOyXlO2LsO2LsOuTpOydhCBTb25hbXXsl5Ag7IOd7ISxL+yXheuNsOydtO2KuFxuICpcbiAqIEBwYXJhbSBvcHRpb25zIOyDneyEsSDsmLXshZhcbiAqIEBwYXJhbSBvcHRpb25zLnBsdWdpbnMg7Zmc7ISx7ZmU7ZWgIO2UjOufrOq3uOyduCBJRCDrqqnroZ1cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdlbmVyYXRlQmV0dGVyQXV0aEVudGl0aWVzKFxuICBvcHRpb25zOiBHZW5lcmF0ZUJldHRlckF1dGhFbnRpdGllc09wdGlvbnMgPSB7fSxcbik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCB7IHBsdWdpbnMgPSBbXSB9ID0gb3B0aW9ucztcblxuICAvLyAxLiDquLDrs7gg7JeU7Yuw7YuwIOyDneyEsS/sl4XrjbDsnbTtirhcbiAgY29uc29sZS5sb2coY2hhbGsuY3lhbihcIlxcbvCfk6YgUHJvY2Vzc2luZyBjb3JlIGVudGl0aWVzLi4uXFxuXCIpKTtcbiAgZm9yIChjb25zdCBlbnRpdHlKc29uIG9mIGJldHRlckF1dGhWMSkge1xuICAgIGF3YWl0IGNyZWF0ZU9yVXBkYXRlRW50aXR5KGVudGl0eUpzb24pO1xuICB9XG5cbiAgLy8gMi4g7ZSM65+s6re47J24IOyymOumrFxuICBpZiAocGx1Z2lucy5sZW5ndGggPiAwKSB7XG4gICAgY29uc29sZS5sb2coY2hhbGsuY3lhbihcIlxcbvCflIwgUHJvY2Vzc2luZyBwbHVnaW5zLi4uXFxuXCIpKTtcblxuICAgIGZvciAoY29uc3QgcGx1Z2luSWQgb2YgcGx1Z2lucykge1xuICAgICAgaWYgKCFpc1ZhbGlkUGx1Z2luSWQocGx1Z2luSWQpKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGNoYWxrLnJlZChgW0VSUk9SXSBVbmtub3duIHBsdWdpbjogJHtwbHVnaW5JZH1gKSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBlbnRpdHlEZWYgPSBFTlRJVFlfREVGSU5JVElPTlNbcGx1Z2luSWRdO1xuICAgICAgY29uc29sZS5sb2coY2hhbGsubWFnZW50YShgW1BMVUdJTl0gJHtlbnRpdHlEZWYubmFtZX1gKSk7XG5cbiAgICAgIC8vIO2UjOufrOq3uOyduOydmCDsg4gg7JeU7Yuw7YuwIOyDneyEsVxuICAgICAgZm9yIChjb25zdCBlbnRpdHlKc29uIG9mIGVudGl0eURlZi5lbnRpdGllcykge1xuICAgICAgICBhd2FpdCBjcmVhdGVPclVwZGF0ZUVudGl0eShlbnRpdHlKc29uKTtcbiAgICAgIH1cblxuICAgICAgLy8g6riw7KG0IOyXlO2LsO2LsOyXkCDtlYTrk5wg7LaU6rCAXG4gICAgICBmb3IgKGNvbnN0IFtlbnRpdHlJZCwgcHJvcHNdIG9mIE9iamVjdC5lbnRyaWVzKGVudGl0eURlZi5hZGRpdGlvbmFsUHJvcHMpKSB7XG4gICAgICAgIGF3YWl0IGFkZFByb3BzVG9FbnRpdHkoZW50aXR5SWQsIHByb3BzKTtcbiAgICAgIH1cblxuICAgICAgLy8g6riw7KG0IOyXlO2LsO2LsOyXkCDsnbjrjbHsiqQg7LaU6rCAXG4gICAgICBpZiAoZW50aXR5RGVmLmFkZGl0aW9uYWxJbmRleGVzKSB7XG4gICAgICAgIGZvciAoY29uc3QgW2VudGl0eUlkLCBpbmRleGVzXSBvZiBPYmplY3QuZW50cmllcyhlbnRpdHlEZWYuYWRkaXRpb25hbEluZGV4ZXMpKSB7XG4gICAgICAgICAgYXdhaXQgYWRkSW5kZXhlc1RvRW50aXR5KGVudGl0eUlkLCBpbmRleGVzKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnNvbGUubG9nKGNoYWxrLmJvbGQoXCJcXG7inIUgRG9uZSEgYmV0dGVyLWF1dGggZW50aXRpZXMgZ2VuZXJhdGVkLlwiKSk7XG59XG4iXSwibmFtZXMiOlsiY2hhbGsiLCJTb25hbXUiLCJFbnRpdHlNYW5hZ2VyIiwiYmV0dGVyQXV0aFYxIiwiRU5USVRZX0RFRklOSVRJT05TIiwiaXNWYWxpZFBsdWdpbklkIiwiZmluZE1pc3NpbmdQcm9wcyIsImV4aXN0aW5nUHJvcHMiLCJyZXF1aXJlZFByb3BzIiwiZXhpc3RpbmdOYW1lcyIsIlNldCIsIm1hcCIsInAiLCJuYW1lIiwiZmlsdGVyIiwiaGFzIiwiZmluZFByb3BzVG9VcGRhdGUiLCJyZXN1bHQiLCJyZXF1aXJlZFByb3AiLCJleGlzdGluZ0luZGV4IiwiZmluZEluZGV4IiwiZXhpc3RpbmdQcm9wIiwiY29uZUNoYW5nZWQiLCJjb25lIiwiZml4dHVyZVN0cmF0ZWd5IiwidHlwZSIsInB1c2giLCJpbmRleCIsIm5ld1Byb3AiLCJmaW5kTWlzc2luZ0luZGV4ZXMiLCJleGlzdGluZ0luZGV4ZXMiLCJyZXF1aXJlZEluZGV4ZXMiLCJpIiwiZmluZE1pc3NpbmdTdWJzZXRzIiwiZXhpc3RpbmdTdWJzZXRzIiwicmVxdWlyZWRTdWJzZXRzIiwibWlzc2luZyIsImtleSIsImZpZWxkcyIsIk9iamVjdCIsImVudHJpZXMiLCJjcmVhdGVPclVwZGF0ZUVudGl0eSIsImVudGl0eUpzb24iLCJleGlzdHMiLCJpZCIsInN5bmNlciIsImNyZWF0ZUVudGl0eSIsImVudGl0eUlkIiwidGFibGUiLCJ0aXRsZSIsInByb3BzIiwiaW5kZXhlcyIsInN1YnNldHMiLCJlbnVtcyIsImVudGl0eSIsImdldCIsInNhdmUiLCJjb25zb2xlIiwibG9nIiwiZ3JlZW4iLCJoYXNDaGFuZ2VzIiwibWlzc2luZ1Byb3BzIiwicHJvcCIsImNyZWF0ZVByb3AiLCJwcm9wc1RvVXBkYXRlIiwib2xkVHlwZSIsIm1vZGlmeVByb3AiLCJ5ZWxsb3ciLCJtaXNzaW5nSW5kZXhlcyIsIm1pc3NpbmdTdWJzZXRzIiwiYmx1ZSIsImRpbSIsImFkZFByb3BzVG9FbnRpdHkiLCJhZGRJbmRleGVzVG9FbnRpdHkiLCJhZGRDb21wYW5pb25zVG9FbnRpdGllcyIsImlkUHJvcCIsImZpbmQiLCJmaXh0dXJlQ29tcGFuaW9ucyIsImV4aXN0aW5nSWRQcm9wIiwiZ2VuZXJhdGVCZXR0ZXJBdXRoRW50aXRpZXMiLCJvcHRpb25zIiwicGx1Z2lucyIsImN5YW4iLCJsZW5ndGgiLCJwbHVnaW5JZCIsInJlZCIsImVudGl0eURlZiIsIm1hZ2VudGEiLCJlbnRpdGllcyIsImFkZGl0aW9uYWxQcm9wcyIsImFkZGl0aW9uYWxJbmRleGVzIiwiYm9sZCJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBT0EsV0FBVyxRQUFRO0FBQzFCLFNBQVNDLE1BQU0sUUFBUSxtQkFBZ0I7QUFDdkMsU0FBU0MsYUFBYSxRQUFRLDhCQUEyQjtBQUV6RCxTQUFTQyxZQUFZLFFBQVEsNEJBQXlCO0FBQ3RELFNBRUVDLGtCQUFrQixFQUNsQkMsZUFBZSxRQUNWLHdDQUErQjtBQUV0Qzs7Q0FFQyxHQUNE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
221
+ //#endregion
222
+ export { addCompanionsToEntities, generateBetterAuthEntities };
223
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1nZW5lcmF0b3IuanMiLCJuYW1lcyI6WyJyZXN1bHQ6IHsgaW5kZXg6IG51bWJlcjsgbmV3UHJvcDogRW50aXR5UHJvcCB9W10iLCJtaXNzaW5nOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZ1tdIH0iLCJlbnRpdHkiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvYXV0aC9hdXRoLWdlbmVyYXRvci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY2hhbGsgZnJvbSBcImNoYWxrXCI7XG5cbmltcG9ydCB7IFNvbmFtdSB9IGZyb20gXCIuLi9hcGkvc29uYW11XCI7XG5pbXBvcnQgeyBFbnRpdHlNYW5hZ2VyIH0gZnJvbSBcIi4uL2VudGl0eS9lbnRpdHktbWFuYWdlclwiO1xuaW1wb3J0IHsgdHlwZSBFbnRpdHlJbmRleCwgdHlwZSBFbnRpdHlKc29uLCB0eXBlIEVudGl0eVByb3AgfSBmcm9tIFwiLi4vdHlwZXMvdHlwZXNcIjtcbmltcG9ydCB7IGJldHRlckF1dGhWMSB9IGZyb20gXCIuL2JldHRlci1hdXRoLWVudGl0aWVzXCI7XG5pbXBvcnQgeyBFTlRJVFlfREVGSU5JVElPTlMsIGlzVmFsaWRQbHVnaW5JZCB9IGZyb20gXCIuL3BsdWdpbnMvZW50aXR5LWRlZmluaXRpb25zXCI7XG5pbXBvcnQgeyB0eXBlIEJldHRlckF1dGhQbHVnaW5JZCB9IGZyb20gXCIuL3BsdWdpbnMvZW50aXR5LWRlZmluaXRpb25zXCI7XG5cbi8qKlxuICog64iE652965CcIHByb3BzIOywvuq4sFxuICovXG5mdW5jdGlvbiBmaW5kTWlzc2luZ1Byb3BzKGV4aXN0aW5nUHJvcHM6IEVudGl0eVByb3BbXSwgcmVxdWlyZWRQcm9wczogRW50aXR5UHJvcFtdKTogRW50aXR5UHJvcFtdIHtcbiAgY29uc3QgZXhpc3RpbmdOYW1lcyA9IG5ldyBTZXQoZXhpc3RpbmdQcm9wcy5tYXAoKHApID0+IHAubmFtZSkpO1xuICByZXR1cm4gcmVxdWlyZWRQcm9wcy5maWx0ZXIoKHApID0+ICFleGlzdGluZ05hbWVzLmhhcyhwLm5hbWUpKTtcbn1cblxuLyoqXG4gKiDtg4DsnoXsnbQg67OA6rK965CcIHByb3BzIOywvuq4sCAo64+Z7J28IG5hbWUsIOuLpOuluCB0eXBlKVxuICogQHJldHVybnMgW+q4sOyhtCBwcm9wIGluZGV4LCDsg4ggcHJvcF1bXVxuICovXG5mdW5jdGlvbiBmaW5kUHJvcHNUb1VwZGF0ZShcbiAgZXhpc3RpbmdQcm9wczogRW50aXR5UHJvcFtdLFxuICByZXF1aXJlZFByb3BzOiBFbnRpdHlQcm9wW10sXG4pOiB7IGluZGV4OiBudW1iZXI7IG5ld1Byb3A6IEVudGl0eVByb3AgfVtdIHtcbiAgY29uc3QgcmVzdWx0OiB7IGluZGV4OiBudW1iZXI7IG5ld1Byb3A6IEVudGl0eVByb3AgfVtdID0gW107XG5cbiAgZm9yIChjb25zdCByZXF1aXJlZFByb3Agb2YgcmVxdWlyZWRQcm9wcykge1xuICAgIGNvbnN0IGV4aXN0aW5nSW5kZXggPSBleGlzdGluZ1Byb3BzLmZpbmRJbmRleCgocCkgPT4gcC5uYW1lID09PSByZXF1aXJlZFByb3AubmFtZSk7XG4gICAgaWYgKGV4aXN0aW5nSW5kZXggPT09IC0xKSBjb250aW51ZTtcblxuICAgIGNvbnN0IGV4aXN0aW5nUHJvcCA9IGV4aXN0aW5nUHJvcHNbZXhpc3RpbmdJbmRleF07XG4gICAgLy8gdHlwZeydtCDri6TrpbTqsbDrgpggY29uZS5maXh0dXJlU3RyYXRlZ3nqsIAg64uk66W066m0IOyXheuNsOydtO2KuCDrjIDsg4FcbiAgICBjb25zdCBjb25lQ2hhbmdlZCA9IHJlcXVpcmVkUHJvcC5jb25lPy5maXh0dXJlU3RyYXRlZ3kgIT09IGV4aXN0aW5nUHJvcD8uY29uZT8uZml4dHVyZVN0cmF0ZWd5O1xuICAgIGlmIChleGlzdGluZ1Byb3A/LnR5cGUgIT09IHJlcXVpcmVkUHJvcC50eXBlIHx8IGNvbmVDaGFuZ2VkKSB7XG4gICAgICByZXN1bHQucHVzaCh7IGluZGV4OiBleGlzdGluZ0luZGV4LCBuZXdQcm9wOiByZXF1aXJlZFByb3AgfSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqXG4gKiDriITrnb3rkJwgaW5kZXhlcyDssL7quLBcbiAqL1xuZnVuY3Rpb24gZmluZE1pc3NpbmdJbmRleGVzKFxuICBleGlzdGluZ0luZGV4ZXM6IEVudGl0eUluZGV4W10sXG4gIHJlcXVpcmVkSW5kZXhlczogRW50aXR5SW5kZXhbXSxcbik6IEVudGl0eUluZGV4W10ge1xuICBjb25zdCBleGlzdGluZ05hbWVzID0gbmV3IFNldChleGlzdGluZ0luZGV4ZXMubWFwKChpKSA9PiBpLm5hbWUpKTtcbiAgcmV0dXJuIHJlcXVpcmVkSW5kZXhlcy5maWx0ZXIoKGkpID0+ICFleGlzdGluZ05hbWVzLmhhcyhpLm5hbWUpKTtcbn1cblxuLyoqXG4gKiDriITrnb3rkJwgc3Vic2V0cyDssL7quLBcbiAqL1xuZnVuY3Rpb24gZmluZE1pc3NpbmdTdWJzZXRzKFxuICBleGlzdGluZ1N1YnNldHM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nW10gfSxcbiAgcmVxdWlyZWRTdWJzZXRzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZ1tdIH0sXG4pOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZ1tdIH0ge1xuICBjb25zdCBtaXNzaW5nOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZ1tdIH0gPSB7fTtcbiAgZm9yIChjb25zdCBba2V5LCBmaWVsZHNdIG9mIE9iamVjdC5lbnRyaWVzKHJlcXVpcmVkU3Vic2V0cykpIHtcbiAgICBpZiAoIWV4aXN0aW5nU3Vic2V0c1trZXldKSB7XG4gICAgICBtaXNzaW5nW2tleV0gPSBmaWVsZHM7XG4gICAgfVxuICB9XG4gIHJldHVybiBtaXNzaW5nO1xufVxuXG4vKipcbiAqIOyXlO2LsO2LsOulvCDsg53shLHtlZjqsbDrgpgg7JeF642w7J207Yq47ZWp64uI64ukLlxuICovXG5hc3luYyBmdW5jdGlvbiBjcmVhdGVPclVwZGF0ZUVudGl0eShlbnRpdHlKc29uOiBFbnRpdHlKc29uKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IGV4aXN0cyA9IEVudGl0eU1hbmFnZXIuZXhpc3RzKGVudGl0eUpzb24uaWQpO1xuXG4gIGlmICghZXhpc3RzKSB7XG4gICAgLy8g7IOIIOyXlO2LsO2LsCDsg53shLFcbiAgICBhd2FpdCBTb25hbXUuc3luY2VyLmNyZWF0ZUVudGl0eSh7XG4gICAgICBlbnRpdHlJZDogZW50aXR5SnNvbi5pZCxcbiAgICAgIHRhYmxlOiBlbnRpdHlKc29uLnRhYmxlLFxuICAgICAgdGl0bGU6IGVudGl0eUpzb24udGl0bGUgPz8gZW50aXR5SnNvbi5pZCxcbiAgICAgIHByb3BzOiBlbnRpdHlKc29uLnByb3BzID8/IFtdLFxuICAgICAgaW5kZXhlczogZW50aXR5SnNvbi5pbmRleGVzID8/IFtdLFxuICAgICAgc3Vic2V0czogZW50aXR5SnNvbi5zdWJzZXRzID8/IHt9LFxuICAgICAgZW51bXM6IGVudGl0eUpzb24uZW51bXMgPz8ge30sXG4gICAgfSk7XG5cbiAgICBjb25zdCBlbnRpdHkgPSBFbnRpdHlNYW5hZ2VyLmdldChlbnRpdHlKc29uLmlkKTtcbiAgICBhd2FpdCBlbnRpdHkuc2F2ZSgpO1xuICAgIGNvbnNvbGUubG9nKGNoYWxrLmdyZWVuKGBbQ1JFQVRFRF0gJHtlbnRpdHlKc29uLmlkfWApKTtcbiAgICByZXR1cm47XG4gIH1cblxuICAvLyDquLDsobQg7JeU7Yuw7YuwIOyXheuNsOydtO2KuFxuICBjb25zdCBlbnRpdHkgPSBFbnRpdHlNYW5hZ2VyLmdldChlbnRpdHlKc29uLmlkKTtcbiAgbGV0IGhhc0NoYW5nZXMgPSBmYWxzZTtcblxuICAvLyDriITrnb3rkJwgcHJvcHMg7LaU6rCAXG4gIGNvbnN0IG1pc3NpbmdQcm9wcyA9IGZpbmRNaXNzaW5nUHJvcHMoZW50aXR5LnByb3BzLCBlbnRpdHlKc29uLnByb3BzID8/IFtdKTtcbiAgZm9yIChjb25zdCBwcm9wIG9mIG1pc3NpbmdQcm9wcykge1xuICAgIGF3YWl0IGVudGl0eS5jcmVhdGVQcm9wKHByb3ApO1xuICAgIGNvbnNvbGUubG9nKGNoYWxrLmdyZWVuKGBbQUREIFBST1BdICR7ZW50aXR5SnNvbi5pZH0uJHtwcm9wLm5hbWV9YCkpO1xuICAgIGhhc0NoYW5nZXMgPSB0cnVlO1xuICB9XG5cbiAgLy8g7YOA7J6F7J20IOuzgOqyveuQnCBwcm9wcyDsl4XrjbDsnbTtirhcbiAgY29uc3QgcHJvcHNUb1VwZGF0ZSA9IGZpbmRQcm9wc1RvVXBkYXRlKGVudGl0eS5wcm9wcywgZW50aXR5SnNvbi5wcm9wcyA/PyBbXSk7XG4gIGZvciAoY29uc3QgeyBpbmRleCwgbmV3UHJvcCB9IG9mIHByb3BzVG9VcGRhdGUpIHtcbiAgICBjb25zdCBvbGRUeXBlID0gZW50aXR5LnByb3BzW2luZGV4XT8udHlwZTtcbiAgICBhd2FpdCBlbnRpdHkubW9kaWZ5UHJvcChuZXdQcm9wLCBpbmRleCk7XG4gICAgY29uc29sZS5sb2coXG4gICAgICBjaGFsay55ZWxsb3coYFtVUERBVEUgUFJPUF0gJHtlbnRpdHlKc29uLmlkfS4ke25ld1Byb3AubmFtZX06ICR7b2xkVHlwZX0g4oaSICR7bmV3UHJvcC50eXBlfWApLFxuICAgICk7XG4gICAgaGFzQ2hhbmdlcyA9IHRydWU7XG4gIH1cblxuICAvLyDriITrnb3rkJwgaW5kZXhlcyDstpTqsIBcbiAgY29uc3QgbWlzc2luZ0luZGV4ZXMgPSBmaW5kTWlzc2luZ0luZGV4ZXMoZW50aXR5LmluZGV4ZXMsIGVudGl0eUpzb24uaW5kZXhlcyA/PyBbXSk7XG4gIGZvciAoY29uc3QgaW5kZXggb2YgbWlzc2luZ0luZGV4ZXMpIHtcbiAgICBlbnRpdHkuaW5kZXhlcy5wdXNoKGluZGV4KTtcbiAgICBjb25zb2xlLmxvZyhjaGFsay5ncmVlbihgW0FERCBJTkRFWF0gJHtlbnRpdHlKc29uLmlkfS4ke2luZGV4Lm5hbWV9YCkpO1xuICAgIGhhc0NoYW5nZXMgPSB0cnVlO1xuICB9XG5cbiAgLy8g64iE652965CcIHN1YnNldHMg7LaU6rCAXG4gIGNvbnN0IG1pc3NpbmdTdWJzZXRzID0gZmluZE1pc3NpbmdTdWJzZXRzKFxuICAgIGVudGl0eS5zdWJzZXRzLFxuICAgIChlbnRpdHlKc29uLnN1YnNldHMgPz8ge30pIGFzIHsgW2tleTogc3RyaW5nXTogc3RyaW5nW10gfSxcbiAgKTtcbiAgZm9yIChjb25zdCBba2V5LCBmaWVsZHNdIG9mIE9iamVjdC5lbnRyaWVzKG1pc3NpbmdTdWJzZXRzKSkge1xuICAgIGVudGl0eS5zdWJzZXRzW2tleV0gPSBmaWVsZHM7XG4gICAgY29uc29sZS5sb2coY2hhbGsuZ3JlZW4oYFtBREQgU1VCU0VUXSAke2VudGl0eUpzb24uaWR9LiR7a2V5fWApKTtcbiAgICBoYXNDaGFuZ2VzID0gdHJ1ZTtcbiAgfVxuXG4gIC8vIOuzgOqyveyCrO2VrSDsoIDsnqVcbiAgaWYgKGhhc0NoYW5nZXMpIHtcbiAgICBhd2FpdCBlbnRpdHkuc2F2ZSgpO1xuICAgIGNvbnNvbGUubG9nKGNoYWxrLmJsdWUoYFtVUERBVEVEXSAke2VudGl0eUpzb24uaWR9YCkpO1xuICB9IGVsc2Uge1xuICAgIGNvbnNvbGUubG9nKGNoYWxrLmRpbShgW1NLSVBdICR7ZW50aXR5SnNvbi5pZH0gLSBubyBjaGFuZ2VzYCkpO1xuICB9XG59XG5cbi8qKlxuICog6riw7KG0IOyXlO2LsO2LsOyXkCBwcm9wc+ulvCDstpTqsIDtlanri4jri6QuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGFkZFByb3BzVG9FbnRpdHkoZW50aXR5SWQ6IHN0cmluZywgcHJvcHM6IEVudGl0eVByb3BbXSk6IFByb21pc2U8dm9pZD4ge1xuICBpZiAoIUVudGl0eU1hbmFnZXIuZXhpc3RzKGVudGl0eUlkKSkge1xuICAgIGNvbnNvbGUubG9nKGNoYWxrLnllbGxvdyhgW1NLSVBdICR7ZW50aXR5SWR9IC0gZW50aXR5IG5vdCBmb3VuZCwgY2Fubm90IGFkZCBwcm9wc2ApKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBlbnRpdHkgPSBFbnRpdHlNYW5hZ2VyLmdldChlbnRpdHlJZCk7XG4gIGxldCBoYXNDaGFuZ2VzID0gZmFsc2U7XG5cbiAgY29uc3QgbWlzc2luZ1Byb3BzID0gZmluZE1pc3NpbmdQcm9wcyhlbnRpdHkucHJvcHMsIHByb3BzKTtcbiAgZm9yIChjb25zdCBwcm9wIG9mIG1pc3NpbmdQcm9wcykge1xuICAgIGF3YWl0IGVudGl0eS5jcmVhdGVQcm9wKHByb3ApO1xuICAgIGNvbnNvbGUubG9nKGNoYWxrLmdyZWVuKGBbQUREIFBST1BdICR7ZW50aXR5SWR9LiR7cHJvcC5uYW1lfWApKTtcbiAgICBoYXNDaGFuZ2VzID0gdHJ1ZTtcbiAgfVxuXG4gIGlmIChoYXNDaGFuZ2VzKSB7XG4gICAgYXdhaXQgZW50aXR5LnNhdmUoKTtcbiAgfVxufVxuXG4vKipcbiAqIOq4sOyhtCDsl5Tti7Dti7Dsl5AgaW5kZXhlc+ulvCDstpTqsIDtlanri4jri6QuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGFkZEluZGV4ZXNUb0VudGl0eShlbnRpdHlJZDogc3RyaW5nLCBpbmRleGVzOiBFbnRpdHlJbmRleFtdKTogUHJvbWlzZTx2b2lkPiB7XG4gIGlmICghRW50aXR5TWFuYWdlci5leGlzdHMoZW50aXR5SWQpKSB7XG4gICAgY29uc29sZS5sb2coY2hhbGsueWVsbG93KGBbU0tJUF0gJHtlbnRpdHlJZH0gLSBlbnRpdHkgbm90IGZvdW5kLCBjYW5ub3QgYWRkIGluZGV4ZXNgKSk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgZW50aXR5ID0gRW50aXR5TWFuYWdlci5nZXQoZW50aXR5SWQpO1xuICBsZXQgaGFzQ2hhbmdlcyA9IGZhbHNlO1xuXG4gIGNvbnN0IG1pc3NpbmdJbmRleGVzID0gZmluZE1pc3NpbmdJbmRleGVzKGVudGl0eS5pbmRleGVzLCBpbmRleGVzKTtcbiAgZm9yIChjb25zdCBpbmRleCBvZiBtaXNzaW5nSW5kZXhlcykge1xuICAgIGVudGl0eS5pbmRleGVzLnB1c2goaW5kZXgpO1xuICAgIGNvbnNvbGUubG9nKGNoYWxrLmdyZWVuKGBbQUREIElOREVYXSAke2VudGl0eUlkfS4ke2luZGV4Lm5hbWV9YCkpO1xuICAgIGhhc0NoYW5nZXMgPSB0cnVlO1xuICB9XG5cbiAgaWYgKGhhc0NoYW5nZXMpIHtcbiAgICBhd2FpdCBlbnRpdHkuc2F2ZSgpO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2VuZXJhdGVCZXR0ZXJBdXRoRW50aXRpZXNPcHRpb25zIHtcbiAgLyoqXG4gICAqIO2ZnOyEse2ZlO2VoCDtlIzrn6zqt7jsnbggSUQg66qp66GdXG4gICAqIOyYiDogW1wicGhvbmUtbnVtYmVyXCIsIFwiMmZhXCJdXG4gICAqL1xuICBwbHVnaW5zPzogQmV0dGVyQXV0aFBsdWdpbklkW107XG59XG5cbi8qKlxuICog6riw7KG0IO2UhOuhnOygne2KuOydmCBlbnRpdHkuanNvbuyXkCBmaXh0dXJlQ29tcGFuaW9uc+ulvCDshozquIkg7LaU6rCA7ZWp64uI64ukLlxuICpcbiAqIGJldHRlckF1dGhWMSDquLDspIDsnLzroZwgZml4dHVyZUNvbXBhbmlvbnPqsIAg7KCV7J2Y65CcIGVudGl0eeulvCDssL7slYRcbiAqIO2UhOuhnOygne2KuCDrgrQgZW50aXR5Lmpzb27sl5Ag7ZW064u5IHByb3DsnZggY29uZeyXkCBmaXh0dXJlQ29tcGFuaW9uc+qwgFxuICog7JeG7J2EIOuVjOunjCDstpTqsIDtlanri4jri6QuIOydtOuvuCDsnojsnLzrqbQg7Iqk7YK17ZWp64uI64ukLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYWRkQ29tcGFuaW9uc1RvRW50aXRpZXMoKTogUHJvbWlzZTx2b2lkPiB7XG4gIGZvciAoY29uc3QgZW50aXR5SnNvbiBvZiBiZXR0ZXJBdXRoVjEpIHtcbiAgICBjb25zdCBpZFByb3AgPSBlbnRpdHlKc29uLnByb3BzPy5maW5kKChwKSA9PiBwLm5hbWUgPT09IFwiaWRcIik7XG4gICAgaWYgKCFpZFByb3A/LmNvbmU/LmZpeHR1cmVDb21wYW5pb25zKSBjb250aW51ZTtcblxuICAgIGlmICghRW50aXR5TWFuYWdlci5leGlzdHMoZW50aXR5SnNvbi5pZCkpIHtcbiAgICAgIGNvbnNvbGUubG9nKGNoYWxrLnllbGxvdyhgW1NLSVBdICR7ZW50aXR5SnNvbi5pZH0gLSBub3QgZm91bmRgKSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBjb25zdCBlbnRpdHkgPSBFbnRpdHlNYW5hZ2VyLmdldChlbnRpdHlKc29uLmlkKTtcbiAgICBjb25zdCBleGlzdGluZ0lkUHJvcCA9IGVudGl0eS5wcm9wcy5maW5kKChwKSA9PiBwLm5hbWUgPT09IFwiaWRcIik7XG4gICAgaWYgKCFleGlzdGluZ0lkUHJvcCkge1xuICAgICAgY29uc29sZS5sb2coY2hhbGsueWVsbG93KGBbU0tJUF0gJHtlbnRpdHlKc29uLmlkfS5pZCAtIHByb3Agbm90IGZvdW5kYCkpO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKGV4aXN0aW5nSWRQcm9wLmNvbmU/LmZpeHR1cmVDb21wYW5pb25zKSB7XG4gICAgICBjb25zb2xlLmxvZyhjaGFsay5kaW0oYFtTS0lQXSAke2VudGl0eUpzb24uaWR9LmlkIC0gZml4dHVyZUNvbXBhbmlvbnMgYWxyZWFkeSBleGlzdHNgKSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBleGlzdGluZ0lkUHJvcC5jb25lID0ge1xuICAgICAgLi4uZXhpc3RpbmdJZFByb3AuY29uZSxcbiAgICAgIGZpeHR1cmVDb21wYW5pb25zOiBpZFByb3AuY29uZS5maXh0dXJlQ29tcGFuaW9ucyxcbiAgICB9O1xuICAgIGF3YWl0IGVudGl0eS5zYXZlKCk7XG4gICAgY29uc29sZS5sb2coY2hhbGsuZ3JlZW4oYFtVUERBVEVEXSAke2VudGl0eUpzb24uaWR9LmlkIC0gZml4dHVyZUNvbXBhbmlvbnMgYWRkZWRgKSk7XG4gIH1cbn1cblxuLyoqXG4gKiBiZXR0ZXItYXV0aCDsl5Tti7Dti7Drk6TsnYQgU29uYW117JeQIOyDneyEsS/sl4XrjbDsnbTtirhcbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyDsg53shLEg7Ji17IWYXG4gKiBAcGFyYW0gb3B0aW9ucy5wbHVnaW5zIO2ZnOyEse2ZlO2VoCDtlIzrn6zqt7jsnbggSUQg66qp66GdXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZW5lcmF0ZUJldHRlckF1dGhFbnRpdGllcyhcbiAgb3B0aW9uczogR2VuZXJhdGVCZXR0ZXJBdXRoRW50aXRpZXNPcHRpb25zID0ge30sXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgeyBwbHVnaW5zID0gW10gfSA9IG9wdGlvbnM7XG5cbiAgLy8gMS4g6riw67O4IOyXlO2LsO2LsCDsg53shLEv7JeF642w7J207Yq4XG4gIGNvbnNvbGUubG9nKGNoYWxrLmN5YW4oXCJcXG7wn5OmIFByb2Nlc3NpbmcgY29yZSBlbnRpdGllcy4uLlxcblwiKSk7XG4gIGZvciAoY29uc3QgZW50aXR5SnNvbiBvZiBiZXR0ZXJBdXRoVjEpIHtcbiAgICBhd2FpdCBjcmVhdGVPclVwZGF0ZUVudGl0eShlbnRpdHlKc29uKTtcbiAgfVxuXG4gIC8vIDIuIO2UjOufrOq3uOyduCDsspjrpqxcbiAgaWYgKHBsdWdpbnMubGVuZ3RoID4gMCkge1xuICAgIGNvbnNvbGUubG9nKGNoYWxrLmN5YW4oXCJcXG7wn5SMIFByb2Nlc3NpbmcgcGx1Z2lucy4uLlxcblwiKSk7XG5cbiAgICBmb3IgKGNvbnN0IHBsdWdpbklkIG9mIHBsdWdpbnMpIHtcbiAgICAgIGlmICghaXNWYWxpZFBsdWdpbklkKHBsdWdpbklkKSkge1xuICAgICAgICBjb25zb2xlLmxvZyhjaGFsay5yZWQoYFtFUlJPUl0gVW5rbm93biBwbHVnaW46ICR7cGx1Z2luSWR9YCkpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZW50aXR5RGVmID0gRU5USVRZX0RFRklOSVRJT05TW3BsdWdpbklkXTtcbiAgICAgIGNvbnNvbGUubG9nKGNoYWxrLm1hZ2VudGEoYFtQTFVHSU5dICR7ZW50aXR5RGVmLm5hbWV9YCkpO1xuXG4gICAgICAvLyDtlIzrn6zqt7jsnbjsnZgg7IOIIOyXlO2LsO2LsCDsg53shLFcbiAgICAgIGZvciAoY29uc3QgZW50aXR5SnNvbiBvZiBlbnRpdHlEZWYuZW50aXRpZXMpIHtcbiAgICAgICAgYXdhaXQgY3JlYXRlT3JVcGRhdGVFbnRpdHkoZW50aXR5SnNvbik7XG4gICAgICB9XG5cbiAgICAgIC8vIOq4sOyhtCDsl5Tti7Dti7Dsl5Ag7ZWE65OcIOy2lOqwgFxuICAgICAgZm9yIChjb25zdCBbZW50aXR5SWQsIHByb3BzXSBvZiBPYmplY3QuZW50cmllcyhlbnRpdHlEZWYuYWRkaXRpb25hbFByb3BzKSkge1xuICAgICAgICBhd2FpdCBhZGRQcm9wc1RvRW50aXR5KGVudGl0eUlkLCBwcm9wcyk7XG4gICAgICB9XG5cbiAgICAgIC8vIOq4sOyhtCDsl5Tti7Dti7Dsl5Ag7J24642x7IqkIOy2lOqwgFxuICAgICAgaWYgKGVudGl0eURlZi5hZGRpdGlvbmFsSW5kZXhlcykge1xuICAgICAgICBmb3IgKGNvbnN0IFtlbnRpdHlJZCwgaW5kZXhlc10gb2YgT2JqZWN0LmVudHJpZXMoZW50aXR5RGVmLmFkZGl0aW9uYWxJbmRleGVzKSkge1xuICAgICAgICAgIGF3YWl0IGFkZEluZGV4ZXNUb0VudGl0eShlbnRpdHlJZCwgaW5kZXhlcyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zb2xlLmxvZyhjaGFsay5ib2xkKFwiXFxu4pyFIERvbmUhIGJldHRlci1hdXRoIGVudGl0aWVzIGdlbmVyYXRlZC5cIikpO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O2FBRXVDO3FCQUNrQjsyQkFFSDs7OztBQU90RCxTQUFTLGlCQUFpQixlQUE2QixlQUEyQztDQUNoRyxNQUFNLGdCQUFnQixJQUFJLElBQUksY0FBYyxLQUFLLE1BQU0sRUFBRSxLQUFLLENBQUM7QUFDL0QsUUFBTyxjQUFjLFFBQVEsTUFBTSxDQUFDLGNBQWMsSUFBSSxFQUFFLEtBQUssQ0FBQzs7Ozs7O0FBT2hFLFNBQVMsa0JBQ1AsZUFDQSxlQUMwQztD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
@@ -1,5 +1,5 @@
1
- import type { BetterAuthOptions } from "better-auth";
2
- import type { EntityJson } from "../types/types";
1
+ import { type BetterAuthOptions } from "better-auth";
2
+ import { type EntityJson } from "../types/types";
3
3
  /**
4
4
  * better-auth v1 엔티티 ģ •ģ˜
5
5
  * https://www.better-auth.com/
@@ -1 +1 @@
1
- {"version":3,"file":"better-auth-entities.d.ts","sourceRoot":"","sources":["../../src/auth/better-auth-entities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjD;;;;;;;GAOG;AACH,eAAO,MAAM,YAAY,EAAE,UAAU,EAkKpC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,mBAAmB,EAAE,iBA2CjC,CAAC"}
1
+ {"version":3,"file":"better-auth-entities.d.ts","sourceRoot":"","sources":["../../src/auth/better-auth-entities.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAErD,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjD;;;;;;;GAOG;AACH,eAAO,MAAM,YAAY,EAAE,UAAU,EAkKpC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,mBAAmB,EAAE,iBA2CjC,CAAC"}