sonamu 0.10.12 → 0.10.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (513) hide show
  1. package/dist/ai/agents/agent.d.ts +1 -1
  2. package/dist/ai/agents/agent.d.ts.map +1 -1
  3. package/dist/ai/agents/agent.js +5 -6
  4. package/dist/ai/agents/types.d.ts +1 -1
  5. package/dist/ai/agents/types.d.ts.map +1 -1
  6. package/dist/ai/providers/rtzr/api.js +18 -18
  7. package/dist/ai/providers/rtzr/error.d.ts.map +1 -1
  8. package/dist/ai/providers/rtzr/error.js +17 -15
  9. package/dist/ai/providers/rtzr/model.d.ts.map +1 -1
  10. package/dist/ai/providers/rtzr/model.js +3 -2
  11. package/dist/ai/providers/rtzr/options.d.ts.map +1 -1
  12. package/dist/ai/providers/rtzr/options.js +16 -16
  13. package/dist/ai/providers/rtzr/provider.d.ts.map +1 -1
  14. package/dist/ai/providers/rtzr/provider.js +9 -9
  15. package/dist/ai/providers/rtzr/utils.d.ts.map +1 -1
  16. package/dist/ai/providers/rtzr/utils.js +1 -1
  17. package/dist/api/caster.d.ts.map +1 -1
  18. package/dist/api/caster.js +17 -17
  19. package/dist/api/code-converters.d.ts +4 -2
  20. package/dist/api/code-converters.d.ts.map +1 -1
  21. package/dist/api/code-converters.js +100 -19
  22. package/dist/api/config.d.ts +16 -1
  23. package/dist/api/config.d.ts.map +1 -1
  24. package/dist/api/config.js +28 -21
  25. package/dist/api/context.d.ts +2 -2
  26. package/dist/api/context.d.ts.map +1 -1
  27. package/dist/api/context.js +1 -1
  28. package/dist/api/decorators.d.ts.map +1 -1
  29. package/dist/api/decorators.js +18 -11
  30. package/dist/api/http-validator.d.ts +36 -0
  31. package/dist/api/http-validator.d.ts.map +1 -0
  32. package/dist/api/http-validator.js +72 -0
  33. package/dist/api/index.js +6 -4
  34. package/dist/api/sonamu.d.ts +59 -20
  35. package/dist/api/sonamu.d.ts.map +1 -1
  36. package/dist/api/sonamu.js +250 -106
  37. package/dist/api/websocket-helpers.d.ts +7 -5
  38. package/dist/api/websocket-helpers.d.ts.map +1 -1
  39. package/dist/api/websocket-helpers.js +6 -6
  40. package/dist/auth/audit-log/builders.d.ts.map +1 -1
  41. package/dist/auth/audit-log/builders.js +1 -1
  42. package/dist/auth/audit-log/client-ip.d.ts +1 -1
  43. package/dist/auth/audit-log/client-ip.d.ts.map +1 -1
  44. package/dist/auth/audit-log/client-ip.js +4 -2
  45. package/dist/auth/audit-log/events.d.ts +5 -1
  46. package/dist/auth/audit-log/events.d.ts.map +1 -1
  47. package/dist/auth/audit-log/events.js +1 -1
  48. package/dist/auth/audit-log/plugin.d.ts +0 -8
  49. package/dist/auth/audit-log/plugin.d.ts.map +1 -1
  50. package/dist/auth/audit-log/plugin.js +48 -52
  51. package/dist/auth/audit-log-ingestor.d.ts.map +1 -1
  52. package/dist/auth/audit-log-ingestor.js +16 -12
  53. package/dist/auth/auth-generator.d.ts.map +1 -1
  54. package/dist/auth/auth-generator.js +1 -1
  55. package/dist/auth/better-auth-request.d.ts.map +1 -1
  56. package/dist/auth/better-auth-request.js +6 -5
  57. package/dist/auth/knex-adapter.js +1 -1
  58. package/dist/auth/plugins/entity-definitions/index.d.ts +13 -1
  59. package/dist/auth/plugins/entity-definitions/index.d.ts.map +1 -1
  60. package/dist/auth/plugins/entity-definitions/index.js +1 -1
  61. package/dist/auth/plugins/wrappers/admin.d.ts +1 -1
  62. package/dist/bin/build-config.d.ts +25 -0
  63. package/dist/bin/build-config.d.ts.map +1 -1
  64. package/dist/bin/build-config.js +105 -2
  65. package/dist/bin/cli.js +131 -27
  66. package/dist/bin/compiler-policy.d.ts +3 -0
  67. package/dist/bin/compiler-policy.d.ts.map +1 -0
  68. package/dist/bin/compiler-policy.js +24 -0
  69. package/dist/bin/fixture.d.ts.map +1 -1
  70. package/dist/bin/fixture.js +5 -3
  71. package/dist/bin/test-command.d.ts +22 -1
  72. package/dist/bin/test-command.d.ts.map +1 -1
  73. package/dist/bin/test-command.js +18 -10
  74. package/dist/bin/ts-loader-registration.d.ts +7 -1
  75. package/dist/bin/ts-loader-registration.d.ts.map +1 -1
  76. package/dist/bin/ts-loader-registration.js +13 -4
  77. package/dist/cache/decorator.d.ts.map +1 -1
  78. package/dist/cache/decorator.js +11 -4
  79. package/dist/compress/compress.d.ts.map +1 -1
  80. package/dist/compress/compress.js +1 -1
  81. package/dist/cone/cone-generator.d.ts +14 -1
  82. package/dist/cone/cone-generator.d.ts.map +1 -1
  83. package/dist/cone/cone-generator.js +13 -9
  84. package/dist/database/_batch_update.js +1 -1
  85. package/dist/database/base-model.d.ts +22 -10
  86. package/dist/database/base-model.d.ts.map +1 -1
  87. package/dist/database/base-model.js +26 -16
  88. package/dist/database/base-model.types.d.ts +15 -3
  89. package/dist/database/base-model.types.d.ts.map +1 -1
  90. package/dist/database/db.d.ts +12 -2
  91. package/dist/database/db.d.ts.map +1 -1
  92. package/dist/database/db.js +10 -7
  93. package/dist/database/knex.d.ts.map +1 -1
  94. package/dist/database/knex.js +17 -14
  95. package/dist/database/puri.d.ts +11 -9
  96. package/dist/database/puri.d.ts.map +1 -1
  97. package/dist/database/puri.js +93 -79
  98. package/dist/database/puri.types.d.ts +21 -21
  99. package/dist/database/puri.types.d.ts.map +1 -1
  100. package/dist/database/puri.types.js +1 -1
  101. package/dist/database/upsert-builder.d.ts +12 -10
  102. package/dist/database/upsert-builder.d.ts.map +1 -1
  103. package/dist/database/upsert-builder.js +20 -12
  104. package/dist/dict/sd.d.ts.map +1 -1
  105. package/dist/dict/sd.js +1 -1
  106. package/dist/dict/sonamu-dictionary.d.ts.map +1 -1
  107. package/dist/dict/sonamu-dictionary.js +1 -1
  108. package/dist/dict/utils.d.ts.map +1 -1
  109. package/dist/dict/utils.js +7 -2
  110. package/dist/entity/entity-manager.d.ts +13 -4
  111. package/dist/entity/entity-manager.d.ts.map +1 -1
  112. package/dist/entity/entity-manager.js +19 -11
  113. package/dist/entity/entity-template-cone.d.ts +73 -5
  114. package/dist/entity/entity-template-cone.d.ts.map +1 -1
  115. package/dist/entity/entity-template-cone.js +4 -2
  116. package/dist/entity/entity.d.ts +6 -2
  117. package/dist/entity/entity.d.ts.map +1 -1
  118. package/dist/entity/entity.js +30 -28
  119. package/dist/env.d.ts +3 -1
  120. package/dist/env.d.ts.map +1 -1
  121. package/dist/env.js +1 -1
  122. package/dist/exceptions/error-handler.d.ts.map +1 -1
  123. package/dist/exceptions/error-handler.js +7 -2
  124. package/dist/exceptions/so-exceptions.d.ts +24 -20
  125. package/dist/exceptions/so-exceptions.d.ts.map +1 -1
  126. package/dist/exceptions/so-exceptions.js +4 -2
  127. package/dist/filter/utils.d.ts +7 -2
  128. package/dist/filter/utils.d.ts.map +1 -1
  129. package/dist/filter/utils.js +8 -6
  130. package/dist/index.d.ts +3 -0
  131. package/dist/index.d.ts.map +1 -1
  132. package/dist/index.js +12 -6
  133. package/dist/logger/configure.d.ts.map +1 -1
  134. package/dist/logger/configure.js +10 -10
  135. package/dist/migration/code-generation.d.ts.map +1 -1
  136. package/dist/migration/code-generation.js +50 -46
  137. package/dist/migration/index-where-predicate.d.ts.map +1 -1
  138. package/dist/migration/index-where-predicate.js +22 -8
  139. package/dist/migration/migration-set.d.ts.map +1 -1
  140. package/dist/migration/migration-set.js +1 -1
  141. package/dist/migration/migrator.d.ts +3 -2
  142. package/dist/migration/migrator.d.ts.map +1 -1
  143. package/dist/migration/migrator.js +27 -21
  144. package/dist/migration/postgresql-schema-reader.d.ts.map +1 -1
  145. package/dist/migration/postgresql-schema-reader.js +51 -36
  146. package/dist/migration/slack-confirm.d.ts.map +1 -1
  147. package/dist/migration/slack-confirm.js +1 -1
  148. package/dist/naite/naite-reporter.js +2 -2
  149. package/dist/naite/naite.d.ts +74 -15
  150. package/dist/naite/naite.d.ts.map +1 -1
  151. package/dist/naite/naite.js +5 -19
  152. package/dist/runtime-type.d.ts +6 -0
  153. package/dist/runtime-type.d.ts.map +1 -0
  154. package/dist/runtime-type.js +26 -0
  155. package/dist/ssr/hmr-opt-out.d.ts +26 -0
  156. package/dist/ssr/hmr-opt-out.d.ts.map +1 -0
  157. package/dist/ssr/hmr-opt-out.js +59 -0
  158. package/dist/ssr/renderer.d.ts.map +1 -1
  159. package/dist/ssr/renderer.js +4 -1
  160. package/dist/storage/base-file.js +14 -14
  161. package/dist/storage/buffered-file.d.ts +2 -2
  162. package/dist/storage/buffered-file.d.ts.map +1 -1
  163. package/dist/storage/buffered-file.js +12 -12
  164. package/dist/storage/s3-driver.d.ts.map +1 -1
  165. package/dist/storage/s3-driver.js +1 -1
  166. package/dist/storage/uploaded-file.d.ts +2 -2
  167. package/dist/storage/uploaded-file.d.ts.map +1 -1
  168. package/dist/storage/uploaded-file.js +8 -8
  169. package/dist/stream/sse.js +11 -11
  170. package/dist/stream/ws-core.d.ts +1 -1
  171. package/dist/stream/ws-core.d.ts.map +1 -1
  172. package/dist/stream/ws-delivery.d.ts +1 -1
  173. package/dist/stream/ws-delivery.d.ts.map +1 -1
  174. package/dist/stream/ws-delivery.js +6 -4
  175. package/dist/stream/ws-local-connection-store.d.ts.map +1 -1
  176. package/dist/stream/ws-local-connection-store.js +4 -2
  177. package/dist/stream/ws-presence-store.js +1 -1
  178. package/dist/stream/ws-registry.d.ts +4 -4
  179. package/dist/stream/ws-registry.d.ts.map +1 -1
  180. package/dist/stream/ws-registry.js +4 -2
  181. package/dist/stream/ws-telemetry.d.ts +16 -12
  182. package/dist/stream/ws-telemetry.d.ts.map +1 -1
  183. package/dist/stream/ws-telemetry.js +22 -18
  184. package/dist/stream/ws.d.ts +18 -12
  185. package/dist/stream/ws.d.ts.map +1 -1
  186. package/dist/stream/ws.js +26 -22
  187. package/dist/syncer/api-parser.js +1 -1
  188. package/dist/syncer/checksum.d.ts.map +1 -1
  189. package/dist/syncer/checksum.js +7 -8
  190. package/dist/syncer/code-generator.d.ts.map +1 -1
  191. package/dist/syncer/code-generator.js +13 -14
  192. package/dist/syncer/entity-operations.d.ts.map +1 -1
  193. package/dist/syncer/entity-operations.js +5 -6
  194. package/dist/syncer/file-copy.d.ts +5 -0
  195. package/dist/syncer/file-copy.d.ts.map +1 -0
  196. package/dist/syncer/file-copy.js +36 -0
  197. package/dist/syncer/file-patterns.d.ts +1 -0
  198. package/dist/syncer/file-patterns.d.ts.map +1 -1
  199. package/dist/syncer/file-patterns.js +5 -2
  200. package/dist/syncer/file-tracking.d.ts.map +1 -1
  201. package/dist/syncer/file-tracking.js +5 -4
  202. package/dist/syncer/filesystem-dependencies.d.ts +15 -0
  203. package/dist/syncer/filesystem-dependencies.d.ts.map +1 -0
  204. package/dist/syncer/filesystem-dependencies.js +53 -0
  205. package/dist/syncer/module-loader.d.ts +1 -1
  206. package/dist/syncer/module-loader.d.ts.map +1 -1
  207. package/dist/syncer/module-loader.js +6 -4
  208. package/dist/syncer/syncer-actions.d.ts +4 -0
  209. package/dist/syncer/syncer-actions.d.ts.map +1 -1
  210. package/dist/syncer/syncer-actions.js +34 -17
  211. package/dist/syncer/syncer.d.ts +17 -6
  212. package/dist/syncer/syncer.d.ts.map +1 -1
  213. package/dist/syncer/syncer.js +71 -29
  214. package/dist/syncer/watcher.d.ts.map +1 -1
  215. package/dist/syncer/watcher.js +3 -3
  216. package/dist/tasks/decorator.d.ts +6 -6
  217. package/dist/tasks/decorator.d.ts.map +1 -1
  218. package/dist/tasks/decorator.js +4 -4
  219. package/dist/tasks/step-wrapper.d.ts +6 -4
  220. package/dist/tasks/step-wrapper.d.ts.map +1 -1
  221. package/dist/tasks/step-wrapper.js +5 -5
  222. package/dist/tasks/workflow-manager.d.ts.map +1 -1
  223. package/dist/tasks/workflow-manager.js +13 -7
  224. package/dist/template/entity-converter.d.ts +1 -1
  225. package/dist/template/entity-converter.d.ts.map +1 -1
  226. package/dist/template/entity-converter.js +2 -2
  227. package/dist/template/helpers.d.ts +8 -6
  228. package/dist/template/helpers.d.ts.map +1 -1
  229. package/dist/template/helpers.js +1 -1
  230. package/dist/template/implementations/generated.template.d.ts.map +1 -1
  231. package/dist/template/implementations/generated.template.js +4 -4
  232. package/dist/template/implementations/generated_http.template.d.ts +7 -4
  233. package/dist/template/implementations/generated_http.template.d.ts.map +1 -1
  234. package/dist/template/implementations/generated_http.template.js +21 -21
  235. package/dist/template/implementations/generated_sso.template.d.ts.map +1 -1
  236. package/dist/template/implementations/generated_sso.template.js +6 -3
  237. package/dist/template/implementations/http_validators.template.d.ts +18 -0
  238. package/dist/template/implementations/http_validators.template.d.ts.map +1 -0
  239. package/dist/template/implementations/http_validators.template.js +127 -0
  240. package/dist/template/implementations/model.template.d.ts.map +1 -1
  241. package/dist/template/implementations/model.template.js +1 -1
  242. package/dist/template/implementations/queries.template.js +1 -1
  243. package/dist/template/implementations/sd.template.d.ts.map +1 -1
  244. package/dist/template/implementations/sd.template.js +79 -39
  245. package/dist/template/implementations/services.template.d.ts.map +1 -1
  246. package/dist/template/implementations/services.template.js +6 -4
  247. package/dist/template/implementations/view_form.template.d.ts +6 -1
  248. package/dist/template/implementations/view_form.template.d.ts.map +1 -1
  249. package/dist/template/implementations/view_form.template.js +23 -15
  250. package/dist/template/implementations/view_list.template.d.ts.map +1 -1
  251. package/dist/template/implementations/view_list.template.js +11 -6
  252. package/dist/template/template-manager.d.ts.map +1 -1
  253. package/dist/template/template-manager.js +9 -7
  254. package/dist/template/template-types.d.ts +12 -5
  255. package/dist/template/template-types.d.ts.map +1 -1
  256. package/dist/template/template-types.js +1 -1
  257. package/dist/template/template.d.ts +2 -2
  258. package/dist/template/template.d.ts.map +1 -1
  259. package/dist/template/template.js +6 -4
  260. package/dist/template/zod-converter.d.ts +0 -19
  261. package/dist/template/zod-converter.d.ts.map +1 -1
  262. package/dist/template/zod-converter.js +100 -84
  263. package/dist/testing/_relation-graph.d.ts.map +1 -1
  264. package/dist/testing/_relation-graph.js +2 -1
  265. package/dist/testing/bootstrap.d.ts.map +1 -1
  266. package/dist/testing/bootstrap.js +9 -6
  267. package/dist/testing/data-explorer.d.ts +32 -7
  268. package/dist/testing/data-explorer.d.ts.map +1 -1
  269. package/dist/testing/data-explorer.js +77 -31
  270. package/dist/testing/dev-test-routes.d.ts +8 -1
  271. package/dist/testing/dev-test-routes.d.ts.map +1 -1
  272. package/dist/testing/dev-test-routes.js +125 -108
  273. package/dist/testing/dev-vitest-manager.d.ts +54 -8
  274. package/dist/testing/dev-vitest-manager.d.ts.map +1 -1
  275. package/dist/testing/dev-vitest-manager.js +24 -9
  276. package/dist/testing/faker-mappings.d.ts +412 -1
  277. package/dist/testing/faker-mappings.d.ts.map +1 -1
  278. package/dist/testing/faker-mappings.js +1 -1
  279. package/dist/testing/filesystem.d.ts +2 -0
  280. package/dist/testing/filesystem.d.ts.map +1 -0
  281. package/dist/testing/filesystem.js +7 -0
  282. package/dist/testing/fixture-generator.d.ts +25 -8
  283. package/dist/testing/fixture-generator.d.ts.map +1 -1
  284. package/dist/testing/fixture-generator.js +132 -73
  285. package/dist/testing/fixture-loader.d.ts +3 -1
  286. package/dist/testing/fixture-loader.d.ts.map +1 -1
  287. package/dist/testing/fixture-loader.js +1 -20
  288. package/dist/testing/fixture-manager.d.ts +8 -7
  289. package/dist/testing/fixture-manager.d.ts.map +1 -1
  290. package/dist/testing/fixture-manager.js +91 -59
  291. package/dist/testing/global-setup.d.ts.map +1 -1
  292. package/dist/testing/global-setup.js +5 -2
  293. package/dist/testing/index.d.ts +2 -0
  294. package/dist/testing/index.d.ts.map +1 -1
  295. package/dist/testing/index.js +6 -3
  296. package/dist/types/types.d.ts +101 -99
  297. package/dist/types/types.d.ts.map +1 -1
  298. package/dist/types/types.js +234 -225
  299. package/dist/ui/ai-api.d.ts.map +1 -1
  300. package/dist/ui/ai-api.js +1 -1
  301. package/dist/ui/ai-client.d.ts.map +1 -1
  302. package/dist/ui/ai-client.js +28 -18
  303. package/dist/ui/api.d.ts.map +1 -1
  304. package/dist/ui/api.js +135 -128
  305. package/dist/ui/async-route.d.ts +3 -0
  306. package/dist/ui/async-route.d.ts.map +1 -0
  307. package/dist/ui/async-route.js +12 -0
  308. package/dist/ui/cdd-service.d.ts +9 -7
  309. package/dist/ui/cdd-service.d.ts.map +1 -1
  310. package/dist/ui/cdd-service.js +7 -5
  311. package/dist/ui/migrations-api.d.ts.map +1 -1
  312. package/dist/ui/migrations-api.js +17 -15
  313. package/dist/ui-web/assets/index-DV1AAq6W.js +178 -0
  314. package/dist/ui-web/index.html +1 -1
  315. package/dist/utils/formatter.d.ts.map +1 -1
  316. package/dist/utils/formatter.js +7 -5
  317. package/dist/utils/fs-utils.d.ts +3 -3
  318. package/dist/utils/fs-utils.d.ts.map +1 -1
  319. package/dist/utils/fs-utils.js +6 -6
  320. package/dist/utils/model.d.ts +3 -5
  321. package/dist/utils/model.d.ts.map +1 -1
  322. package/dist/utils/model.js +1 -1
  323. package/dist/utils/object-utils.d.ts +1 -1
  324. package/dist/utils/object-utils.d.ts.map +1 -1
  325. package/dist/utils/object-utils.js +17 -16
  326. package/dist/utils/process-utils.d.ts.map +1 -1
  327. package/dist/utils/process-utils.js +4 -2
  328. package/dist/utils/runtime-value.d.ts +13 -0
  329. package/dist/utils/runtime-value.d.ts.map +1 -0
  330. package/dist/utils/runtime-value.js +40 -0
  331. package/dist/utils/sql-parser.d.ts +8 -1
  332. package/dist/utils/sql-parser.d.ts.map +1 -1
  333. package/dist/utils/sql-parser.js +6 -3
  334. package/dist/utils/type-utils.d.ts.map +1 -1
  335. package/dist/utils/type-utils.js +10 -8
  336. package/dist/utils/utils.d.ts +2 -2
  337. package/dist/utils/utils.d.ts.map +1 -1
  338. package/dist/utils/utils.js +11 -8
  339. package/dist/utils/zod-error.d.ts.map +1 -1
  340. package/dist/utils/zod-error.js +7 -4
  341. package/dist/vector/chunking.d.ts.map +1 -1
  342. package/dist/vector/chunking.js +1 -1
  343. package/dist/vector/embedding.d.ts.map +1 -1
  344. package/dist/vector/embedding.js +1 -1
  345. package/dist/vector/types.d.ts +3 -2
  346. package/dist/vector/types.d.ts.map +1 -1
  347. package/package.json +5 -3
  348. package/src/ai/agents/agent.ts +5 -5
  349. package/src/ai/agents/types.ts +1 -1
  350. package/src/ai/providers/rtzr/__tests__/model.test.ts +2 -2
  351. package/src/ai/providers/rtzr/error.ts +5 -3
  352. package/src/ai/providers/rtzr/model.ts +3 -2
  353. package/src/ai/providers/rtzr/options.ts +10 -5
  354. package/src/ai/providers/rtzr/provider.ts +10 -10
  355. package/src/ai/providers/rtzr/utils.ts +3 -1
  356. package/src/api/__tests__/config.test.ts +11 -21
  357. package/src/api/__tests__/sonamu.http-validator.test.ts +512 -0
  358. package/src/api/__tests__/sonamu.websocket.test.ts +51 -41
  359. package/src/api/__tests__/zod-compiler-policy.test.ts +95 -0
  360. package/src/api/caster.ts +6 -8
  361. package/src/api/code-converters.ts +136 -36
  362. package/src/api/config.ts +62 -4
  363. package/src/api/context.ts +3 -3
  364. package/src/api/decorators.ts +28 -17
  365. package/src/api/http-validator.ts +149 -0
  366. package/src/api/sonamu.ts +459 -152
  367. package/src/api/websocket-helpers.ts +24 -17
  368. package/src/auth/audit-log/builders.ts +3 -2
  369. package/src/auth/audit-log/client-ip.ts +4 -2
  370. package/src/auth/audit-log/events.ts +15 -1
  371. package/src/auth/audit-log/plugin.ts +129 -200
  372. package/src/auth/audit-log-ingestor.ts +19 -15
  373. package/src/auth/auth-generator.ts +10 -5
  374. package/src/auth/better-auth-request.ts +4 -3
  375. package/src/auth/knex-adapter.ts +8 -2
  376. package/src/auth/plugins/entity-definitions/index.ts +6 -5
  377. package/src/bin/__tests__/http-validator-benchmark.test.ts +94 -0
  378. package/src/bin/__tests__/test-command.test.ts +9 -15
  379. package/src/bin/__tests__/ts-loader-register.test.ts +15 -17
  380. package/src/bin/__tests__/zod-compiler-build.test.ts +307 -0
  381. package/src/bin/build-config.ts +167 -0
  382. package/src/bin/cli.ts +153 -36
  383. package/src/bin/compiler-policy.ts +35 -0
  384. package/src/bin/fixture.ts +14 -3
  385. package/src/bin/test-command.ts +74 -29
  386. package/src/bin/ts-loader-registration.ts +22 -4
  387. package/src/cache/decorator.ts +10 -3
  388. package/src/compress/compress.ts +17 -4
  389. package/src/cone/cone-generator.ts +34 -6
  390. package/src/database/__tests__/db.test.ts +1 -0
  391. package/src/database/__tests__/puri.test.ts +16 -15
  392. package/src/database/__tests__/transaction-scope.test.ts +5 -0
  393. package/src/database/_batch_update.ts +1 -0
  394. package/src/database/base-model.ts +81 -50
  395. package/src/database/base-model.types.ts +6 -6
  396. package/src/database/db.ts +29 -19
  397. package/src/database/knex.ts +30 -17
  398. package/src/database/puri-subset.test-d.ts +17 -0
  399. package/src/database/puri.ts +181 -143
  400. package/src/database/puri.types.test-d.ts +31 -1
  401. package/src/database/puri.types.ts +23 -21
  402. package/src/database/upsert-builder.ts +75 -53
  403. package/src/dict/sd.ts +15 -5
  404. package/src/dict/sonamu-dictionary.ts +6 -6
  405. package/src/dict/utils.ts +9 -1
  406. package/src/entity/entity-manager.ts +26 -9
  407. package/src/entity/entity-template-cone.ts +5 -10
  408. package/src/entity/entity.ts +50 -34
  409. package/src/env.ts +7 -3
  410. package/src/exceptions/error-handler.ts +17 -2
  411. package/src/exceptions/so-exceptions.ts +26 -20
  412. package/src/filter/utils.ts +21 -11
  413. package/src/index.ts +3 -0
  414. package/src/logger/configure.ts +26 -18
  415. package/src/migration/__tests__/migrator.test.ts +50 -57
  416. package/src/migration/code-generation.ts +132 -104
  417. package/src/migration/index-where-predicate.ts +51 -24
  418. package/src/migration/migration-set.ts +11 -5
  419. package/src/migration/migrator.ts +68 -41
  420. package/src/migration/postgresql-schema-reader.ts +52 -47
  421. package/src/migration/slack-confirm.ts +17 -15
  422. package/src/naite/naite-reporter.ts +1 -1
  423. package/src/naite/naite.ts +97 -24
  424. package/src/runtime-type.ts +34 -0
  425. package/src/ssr/hmr-opt-out.ts +78 -0
  426. package/src/ssr/renderer.ts +6 -0
  427. package/src/storage/base-file.ts +13 -13
  428. package/src/storage/buffered-file.ts +11 -11
  429. package/src/storage/s3-driver.ts +4 -1
  430. package/src/storage/uploaded-file.ts +8 -8
  431. package/src/stream/__tests__/ws-contracts.test.ts +4 -2
  432. package/src/stream/__tests__/ws-telemetry.test.ts +1 -1
  433. package/src/stream/__tests__/ws.test.ts +30 -6
  434. package/src/stream/sse.ts +12 -11
  435. package/src/stream/ws-core.ts +1 -1
  436. package/src/stream/ws-delivery.ts +16 -7
  437. package/src/stream/ws-local-connection-store.ts +2 -3
  438. package/src/stream/ws-presence-store.ts +6 -1
  439. package/src/stream/ws-registry.ts +16 -7
  440. package/src/stream/ws-telemetry.ts +66 -43
  441. package/src/stream/ws.ts +73 -39
  442. package/src/syncer/__tests__/api-parser.websocket-type-ref.test.ts +3 -2
  443. package/src/syncer/__tests__/http-validator-registry.test.ts +137 -0
  444. package/src/syncer/api-parser.ts +67 -27
  445. package/src/syncer/checksum.ts +17 -11
  446. package/src/syncer/code-generator.ts +25 -17
  447. package/src/syncer/entity-operations.ts +3 -5
  448. package/src/syncer/file-copy.ts +46 -0
  449. package/src/syncer/file-patterns.ts +11 -8
  450. package/src/syncer/file-tracking.ts +3 -4
  451. package/src/syncer/filesystem-dependencies.ts +73 -0
  452. package/src/syncer/module-loader.ts +8 -4
  453. package/src/syncer/syncer-actions.ts +56 -18
  454. package/src/syncer/syncer.ts +116 -43
  455. package/src/syncer/watcher.ts +8 -4
  456. package/src/tasks/decorator.ts +20 -12
  457. package/src/tasks/step-wrapper.ts +19 -9
  458. package/src/tasks/workflow-manager.ts +15 -9
  459. package/src/template/__tests__/http_validators.template.test.ts +160 -0
  460. package/src/template/__tests__/services.template.mutation.test.ts +24 -23
  461. package/src/template/__tests__/services.template.websocket.test.ts +21 -25
  462. package/src/template/entity-converter.ts +5 -2
  463. package/src/template/helpers.ts +8 -9
  464. package/src/template/implementations/generated.template.ts +5 -4
  465. package/src/template/implementations/generated_http.template.ts +61 -15
  466. package/src/template/implementations/generated_sso.template.ts +15 -4
  467. package/src/template/implementations/http_validators.template.ts +175 -0
  468. package/src/template/implementations/model.template.ts +3 -1
  469. package/src/template/implementations/sd.template.ts +81 -41
  470. package/src/template/implementations/services.template.ts +2 -2
  471. package/src/template/implementations/view_form.template.ts +56 -39
  472. package/src/template/implementations/view_list.template.ts +31 -23
  473. package/src/template/template-manager.ts +15 -13
  474. package/src/template/template-types.ts +13 -5
  475. package/src/template/template.ts +4 -3
  476. package/src/template/zod-converter.ts +206 -91
  477. package/src/testing/__tests__/dev-test-routes.test.ts +85 -25
  478. package/src/testing/__tests__/dev-vitest-manager.test.ts +15 -15
  479. package/src/testing/_relation-graph.ts +4 -1
  480. package/src/testing/bootstrap.ts +12 -5
  481. package/src/testing/data-explorer.ts +102 -53
  482. package/src/testing/dev-test-routes.ts +87 -50
  483. package/src/testing/dev-vitest-manager.ts +88 -32
  484. package/src/testing/faker-mappings.ts +2 -2
  485. package/src/testing/filesystem.ts +1 -0
  486. package/src/testing/fixture-generator.ts +191 -131
  487. package/src/testing/fixture-loader.ts +5 -1
  488. package/src/testing/fixture-manager.ts +129 -90
  489. package/src/testing/global-setup.ts +7 -3
  490. package/src/testing/index.ts +5 -0
  491. package/src/types/__tests__/entity-json-schema-search-text.test.ts +9 -3
  492. package/src/types/types.ts +184 -158
  493. package/src/ui/ai-api.ts +9 -7
  494. package/src/ui/ai-client.ts +61 -56
  495. package/src/ui/api.ts +727 -616
  496. package/src/ui/async-route.ts +4 -0
  497. package/src/ui/cdd-service.ts +35 -12
  498. package/src/ui/migrations-api.ts +63 -51
  499. package/src/utils/formatter.ts +7 -3
  500. package/src/utils/fs-utils.ts +5 -5
  501. package/src/utils/model.ts +4 -5
  502. package/src/utils/object-utils.ts +32 -22
  503. package/src/utils/process-utils.ts +4 -1
  504. package/src/utils/runtime-value.ts +43 -0
  505. package/src/utils/sql-parser.ts +13 -6
  506. package/src/utils/type-utils.ts +9 -7
  507. package/src/utils/utils.ts +19 -21
  508. package/src/utils/zod-error.ts +4 -2
  509. package/src/vector/chunking.ts +6 -1
  510. package/src/vector/embedding.ts +2 -1
  511. package/src/vector/types.ts +4 -2
  512. package/tsdown.api.config.ts +5 -2
  513. package/dist/ui-web/assets/index-C0m1pk6K.js +0 -177
@@ -10,37 +10,37 @@ var init_base_file = __esmMin((() => {
10
10
  _url;
11
11
  _signedUrl;
12
12
  constructor(params) {
13
- this._filename = params.filename;
14
- this._mimetype = params.mimetype;
15
- this._size = params.size;
16
- this._url = params.url;
17
- this._signedUrl = params.signedUrl;
13
+ this["_filename"] = params.filename;
14
+ this["_mimetype"] = params.mimetype;
15
+ this["_size"] = params.size;
16
+ this["_url"] = params.url;
17
+ this["_signedUrl"] = params.signedUrl;
18
18
  }
19
19
  /** 원본 파일명 */
20
20
  get filename() {
21
- return this._filename;
21
+ return this["_filename"];
22
22
  }
23
23
  /** MIME 타입 */
24
24
  get mimetype() {
25
- return this._mimetype;
25
+ return this["_mimetype"];
26
26
  }
27
27
  /** 파일 크기 (bytes) */
28
28
  get size() {
29
- return this._size;
29
+ return this["_size"];
30
30
  }
31
31
  /** 확장자 (점 제외) */
32
32
  get extname() {
33
- return mime.extension(this._mimetype);
33
+ return mime.extension(this["_mimetype"]);
34
34
  }
35
35
  /** 저장된 URL (Unsigned) */
36
36
  get url() {
37
- if (this._url === void 0) throw new Error("url이 설정되지 않았습니다.");
38
- return this._url;
37
+ if (this["_url"] === void 0) throw new Error("url이 설정되지 않았습니다.");
38
+ return this["_url"];
39
39
  }
40
40
  /** 저장된 URL (Signed) */
41
41
  get signedUrl() {
42
- if (this._signedUrl === void 0) throw new Error("signedUrl이 설정되지 않았습니다.");
43
- return this._signedUrl;
42
+ if (this["_signedUrl"] === void 0) throw new Error("signedUrl이 설정되지 않았습니다.");
43
+ return this["_signedUrl"];
44
44
  }
45
45
  };
46
46
  }));
@@ -48,4 +48,4 @@ var init_base_file = __esmMin((() => {
48
48
  init_base_file();
49
49
  export { BaseFile, init_base_file };
50
50
 
51
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1maWxlLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdG9yYWdlL2Jhc2UtZmlsZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbWltZSBmcm9tIFwibWltZS10eXBlc1wiO1xuXG4vKipcbiAqIO2MjOydvOydmCDquLDrs7gg66mU7YOA642w7J207YSwKGZpbGVuYW1lLCBtaW1ldHlwZSwgc2l6ZSDrk7Ep7JeQIOuMgO2VnCDsoJHqt7zsnpAg7KCc6rO1XG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlRmlsZSB7XG4gIHByb3RlY3RlZCBfZmlsZW5hbWU6IHN0cmluZztcbiAgcHJvdGVjdGVkIF9taW1ldHlwZTogc3RyaW5nO1xuICBwcm90ZWN0ZWQgX3NpemU6IG51bWJlcjtcbiAgcHJvdGVjdGVkIF91cmw/OiBzdHJpbmc7XG4gIHByb3RlY3RlZCBfc2lnbmVkVXJsPzogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHBhcmFtczoge1xuICAgIGZpbGVuYW1lOiBzdHJpbmc7XG4gICAgbWltZXR5cGU6IHN0cmluZztcbiAgICBzaXplOiBudW1iZXI7XG4gICAgdXJsPzogc3RyaW5nO1xuICAgIHNpZ25lZFVybD86IHN0cmluZztcbiAgfSkge1xuICAgIHRoaXMuX2ZpbGVuYW1lID0gcGFyYW1zLmZpbGVuYW1lO1xuICAgIHRoaXMuX21pbWV0eXBlID0gcGFyYW1zLm1pbWV0eXBlO1xuICAgIHRoaXMuX3NpemUgPSBwYXJhbXMuc2l6ZTtcbiAgICB0aGlzLl91cmwgPSBwYXJhbXMudXJsO1xuICAgIHRoaXMuX3NpZ25lZFVybCA9IHBhcmFtcy5zaWduZWRVcmw7XG4gIH1cblxuICAvKiog7JuQ67O4IO2MjOydvOuqhSAqL1xuICBnZXQgZmlsZW5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fZmlsZW5hbWU7XG4gIH1cblxuICAvKiogTUlNRSDtg4DsnoUgKi9cbiAgZ2V0IG1pbWV0eXBlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX21pbWV0eXBlO1xuICB9XG5cbiAgLyoqIO2MjOydvCDtgazquLAgKGJ5dGVzKSAqL1xuICBnZXQgc2l6ZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9zaXplO1xuICB9XG5cbiAgLyoqIO2ZleyepeyekCAo7KCQIOygnOyZuCkgKi9cbiAgZ2V0IGV4dG5hbWUoKTogc3RyaW5nIHwgZmFsc2Uge1xuICAgIHJldHVybiBtaW1lLmV4dGVuc2lvbih0aGlzLl9taW1ldHlwZSk7XG4gIH1cblxuICAvKiog7KCA7J6l65CcIFVSTCAoVW5zaWduZWQpICovXG4gIGdldCB1cmwoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5fdXJsID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcInVybOydtCDshKTsoJXrkJjsp4Ag7JWK7JWY7Iq164uI64ukLlwiKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX3VybDtcbiAgfVxuXG4gIC8qKiDsoIDsnqXrkJwgVVJMIChTaWduZWQpICovXG4gIGdldCBzaWduZWRVcmwoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5fc2lnbmVkVXJsID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcInNpZ25lZFVybOydtCDshKTsoJXrkJjsp4Ag7JWK7JWY7Iq164uI64ukLlwiKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX3NpZ25lZFVybDtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7OztDQUtzQixXQUF0QixNQUErQjtFQUM3QjtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBRUEsWUFBWSxRQU1UO0dBQ0QsS0FBSyxZQUFZLE9BQU87R0FDeEIsS0FBSyxZQUFZLE9BQU87R0FDeEIsS0FBSyxRQUFRLE9BQU87R0FDcEIsS0FBSyxPQUFPLE9BQU87R0FDbkIsS0FBSyxhQUFhLE9BQU87RUFDM0I7O0VBR0EsSUFBSSxXQUFtQjtHQUNyQixPQUFPLEtBQUs7RUFDZDs7RUFHQSxJQUFJLFdBQW1CO0dBQ3JCLE9BQU8sS0FBSztFQUNkOztFQUdBLElBQUksT0FBZTtHQUNqQixPQUFPLEtBQUs7RUFDZDs7RUFHQSxJQUFJLFVBQTBCO0dBQzVCLE9BQU8sS0FBSyxVQUFVLEtBQUssU0FBUztFQUN0Qzs7RUFHQSxJQUFJLE1BQWM7R0FDaEIsSUFBSSxLQUFLLFNBQVMsUUFDaEIsTUFBTSxJQUFJLE1BQU0sa0JBQWtCO0dBRXBDLE9BQU8sS0FBSztFQUNkOztFQUdBLElBQUksWUFBb0I7R0FDdEIsSUFBSSxLQUFLLGVBQWUsUUFDdEIsTUFBTSxJQUFJLE1BQU0sd0JBQXdCO0dBRTFDLE9BQU8sS0FBSztFQUNkO0NBQ0YifQ==
51
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1maWxlLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdG9yYWdlL2Jhc2UtZmlsZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbWltZSBmcm9tIFwibWltZS10eXBlc1wiO1xuXG4vKipcbiAqIO2MjOydvOydmCDquLDrs7gg66mU7YOA642w7J207YSwKGZpbGVuYW1lLCBtaW1ldHlwZSwgc2l6ZSDrk7Ep7JeQIOuMgO2VnCDsoJHqt7zsnpAg7KCc6rO1XG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlRmlsZSB7XG4gIHByb3RlY3RlZCBfZmlsZW5hbWU6IHN0cmluZztcbiAgcHJvdGVjdGVkIF9taW1ldHlwZTogc3RyaW5nO1xuICBwcm90ZWN0ZWQgX3NpemU6IG51bWJlcjtcbiAgcHJvdGVjdGVkIF91cmw/OiBzdHJpbmc7XG4gIHByb3RlY3RlZCBfc2lnbmVkVXJsPzogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHBhcmFtczoge1xuICAgIGZpbGVuYW1lOiBzdHJpbmc7XG4gICAgbWltZXR5cGU6IHN0cmluZztcbiAgICBzaXplOiBudW1iZXI7XG4gICAgdXJsPzogc3RyaW5nO1xuICAgIHNpZ25lZFVybD86IHN0cmluZztcbiAgfSkge1xuICAgIHRoaXNbXCJfZmlsZW5hbWVcIl0gPSBwYXJhbXMuZmlsZW5hbWU7XG4gICAgdGhpc1tcIl9taW1ldHlwZVwiXSA9IHBhcmFtcy5taW1ldHlwZTtcbiAgICB0aGlzW1wiX3NpemVcIl0gPSBwYXJhbXMuc2l6ZTtcbiAgICB0aGlzW1wiX3VybFwiXSA9IHBhcmFtcy51cmw7XG4gICAgdGhpc1tcIl9zaWduZWRVcmxcIl0gPSBwYXJhbXMuc2lnbmVkVXJsO1xuICB9XG5cbiAgLyoqIOybkOuzuCDtjIzsnbzrqoUgKi9cbiAgZ2V0IGZpbGVuYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXNbXCJfZmlsZW5hbWVcIl07XG4gIH1cblxuICAvKiogTUlNRSDtg4DsnoUgKi9cbiAgZ2V0IG1pbWV0eXBlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXNbXCJfbWltZXR5cGVcIl07XG4gIH1cblxuICAvKiog7YyM7J28IO2BrOq4sCAoYnl0ZXMpICovXG4gIGdldCBzaXplKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXNbXCJfc2l6ZVwiXTtcbiAgfVxuXG4gIC8qKiDtmZXsnqXsnpAgKOygkCDsoJzsmbgpICovXG4gIGdldCBleHRuYW1lKCk6IHN0cmluZyB8IGZhbHNlIHtcbiAgICByZXR1cm4gbWltZS5leHRlbnNpb24odGhpc1tcIl9taW1ldHlwZVwiXSk7XG4gIH1cblxuICAvKiog7KCA7J6l65CcIFVSTCAoVW5zaWduZWQpICovXG4gIGdldCB1cmwoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpc1tcIl91cmxcIl0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwidXJs7J20IOyEpOygleuQmOyngCDslYrslZjsirXri4jri6QuXCIpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpc1tcIl91cmxcIl07XG4gIH1cblxuICAvKiog7KCA7J6l65CcIFVSTCAoU2lnbmVkKSAqL1xuICBnZXQgc2lnbmVkVXJsKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXNbXCJfc2lnbmVkVXJsXCJdID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcInNpZ25lZFVybOydtCDshKTsoJXrkJjsp4Ag7JWK7JWY7Iq164uI64ukLlwiKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXNbXCJfc2lnbmVkVXJsXCJdO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7O0NBS3NCLFdBQXRCLE1BQStCO0VBQzdCO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFFQSxZQUFZLFFBTVQ7R0FDRCxLQUFLLGVBQWUsT0FBTztHQUMzQixLQUFLLGVBQWUsT0FBTztHQUMzQixLQUFLLFdBQVcsT0FBTztHQUN2QixLQUFLLFVBQVUsT0FBTztHQUN0QixLQUFLLGdCQUFnQixPQUFPO0VBQzlCOztFQUdBLElBQUksV0FBbUI7R0FDckIsT0FBTyxLQUFLO0VBQ2Q7O0VBR0EsSUFBSSxXQUFtQjtHQUNyQixPQUFPLEtBQUs7RUFDZDs7RUFHQSxJQUFJLE9BQWU7R0FDakIsT0FBTyxLQUFLO0VBQ2Q7O0VBR0EsSUFBSSxVQUEwQjtHQUM1QixPQUFPLEtBQUssVUFBVSxLQUFLLFlBQVk7RUFDekM7O0VBR0EsSUFBSSxNQUFjO0dBQ2hCLElBQUksS0FBSyxZQUFZLFFBQ25CLE1BQU0sSUFBSSxNQUFNLGtCQUFrQjtHQUVwQyxPQUFPLEtBQUs7RUFDZDs7RUFHQSxJQUFJLFlBQW9CO0dBQ3RCLElBQUksS0FBSyxrQkFBa0IsUUFDekIsTUFBTSxJQUFJLE1BQU0sd0JBQXdCO0dBRTFDLE9BQU8sS0FBSztFQUNkO0NBQ0YifQ==
@@ -6,8 +6,8 @@ import { type DriverKey } from "./drivers";
6
6
  * 메모리에 로드된 상태로, md5 계산이나 이미지 처리 등 유연한 작업이 가능합니다.
7
7
  */
8
8
  export declare class BufferedFile extends BaseFile {
9
- private _file;
10
- private _buffer;
9
+ private fileValue;
10
+ private bufferValue;
11
11
  constructor(file: MultipartFile, buffer: Buffer);
12
12
  /** 파일 Buffer */
13
13
  get buffer(): Buffer;
@@ -1 +1 @@
1
- {"version":3,"file":"buffered-file.d.ts","sourceRoot":"","sources":["../../src/storage/buffered-file.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,WAAW,CAAC;AAE3C;;;GAGG;AACH,qBAAa,YAAa,SAAQ,QAAQ;IACxC,OAAO,CAAC,KAAK,CAAgB;IAC7B,OAAO,CAAC,OAAO,CAAS;gBAEZ,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM;IAU/C,gBAAgB;IAChB,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,gBAAgB;IACV,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC;IAI5B;;;;;OAKG;IACG,UAAU,CAAC,QAAQ,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAgBnE,0BAA0B;IAC1B,IAAI,GAAG,IAAI,aAAa,CAEvB;CACF"}
1
+ {"version":3,"file":"buffered-file.d.ts","sourceRoot":"","sources":["../../src/storage/buffered-file.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,WAAW,CAAC;AAE3C;;;GAGG;AACH,qBAAa,YAAa,SAAQ,QAAQ;IACxC,OAAO,CAAC,SAAS,CAAgB;IACjC,OAAO,CAAC,WAAW,CAAS;gBAEhB,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM;IAU/C,gBAAgB;IAChB,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,gBAAgB;IACV,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC;IAI5B;;;;;OAKG;IACG,UAAU,CAAC,QAAQ,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAgBnE,0BAA0B;IAC1B,IAAI,GAAG,IAAI,aAAa,CAEvB;CACF"}
@@ -6,24 +6,24 @@ var BufferedFile;
6
6
  var init_buffered_file = __esmMin((() => {
7
7
  init_base_file();
8
8
  BufferedFile = class extends BaseFile {
9
- _file;
10
- _buffer;
9
+ fileValue;
10
+ bufferValue;
11
11
  constructor(file, buffer) {
12
12
  super({
13
13
  filename: file.filename,
14
14
  mimetype: file.mimetype,
15
15
  size: buffer.length
16
16
  });
17
- this._file = file;
18
- this._buffer = buffer;
17
+ this.fileValue = file;
18
+ this.bufferValue = buffer;
19
19
  }
20
20
  /** 파일 Buffer */
21
21
  get buffer() {
22
- return this._buffer;
22
+ return this.bufferValue;
23
23
  }
24
24
  /** MD5 해시 계산 */
25
25
  async md5() {
26
- return createHash("md5").update(this._buffer).digest("hex");
26
+ return createHash("md5").update(this.bufferValue).digest("hex");
27
27
  }
28
28
  /**
29
29
  * 파일을 디스크에 저장
@@ -34,14 +34,14 @@ var init_buffered_file = __esmMin((() => {
34
34
  async saveToDisk(diskName, key) {
35
35
  const { Sonamu } = await import("../api/sonamu.js");
36
36
  const disk = Sonamu.storage.use(diskName);
37
- await disk.put(key, new Uint8Array(this._buffer), { contentType: this.mimetype });
38
- this._url = await disk.getUrl(key);
39
- this._signedUrl = await disk.getSignedUrl(key);
40
- return this._url;
37
+ await disk.put(key, new Uint8Array(this.bufferValue), { contentType: this.mimetype });
38
+ this["_url"] = await disk.getUrl(key);
39
+ this["_signedUrl"] = await disk.getSignedUrl(key);
40
+ return this["_url"];
41
41
  }
42
42
  /** 원본 MultipartFile 접근 */
43
43
  get raw() {
44
- return this._file;
44
+ return this.fileValue;
45
45
  }
46
46
  };
47
47
  }));
@@ -49,4 +49,4 @@ var init_buffered_file = __esmMin((() => {
49
49
  init_buffered_file();
50
50
  export { BufferedFile, init_buffered_file };
51
51
 
52
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVmZmVyZWQtZmlsZS5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RvcmFnZS9idWZmZXJlZC1maWxlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZUhhc2ggfSBmcm9tIFwiY3J5cHRvXCI7XG5cbmltcG9ydCB7IHR5cGUgTXVsdGlwYXJ0RmlsZSB9IGZyb20gXCJAZmFzdGlmeS9tdWx0aXBhcnRcIjtcblxuaW1wb3J0IHsgQmFzZUZpbGUgfSBmcm9tIFwiLi9iYXNlLWZpbGVcIjtcbmltcG9ydCB7IHR5cGUgRHJpdmVyS2V5IH0gZnJvbSBcIi4vZHJpdmVyc1wiO1xuXG4vKipcbiAqIEJ1ZmZlciDrqqjrk5zroZwg7JeF66Gc65Oc65CcIO2MjOydvFxuICog66mU66qo66as7JeQIOuhnOuTnOuQnCDsg4Htg5zroZwsIG1kNSDqs4TsgrDsnbTrgpgg7J2066+47KeAIOyymOumrCDrk7Eg7Jyg7Jew7ZWcIOyekeyXheydtCDqsIDriqXtlanri4jri6QuXG4gKi9cbmV4cG9ydCBjbGFzcyBCdWZmZXJlZEZpbGUgZXh0ZW5kcyBCYXNlRmlsZSB7XG4gIHByaXZhdGUgX2ZpbGU6IE11bHRpcGFydEZpbGU7XG4gIHByaXZhdGUgX2J1ZmZlcjogQnVmZmVyO1xuXG4gIGNvbnN0cnVjdG9yKGZpbGU6IE11bHRpcGFydEZpbGUsIGJ1ZmZlcjogQnVmZmVyKSB7XG4gICAgc3VwZXIoe1xuICAgICAgZmlsZW5hbWU6IGZpbGUuZmlsZW5hbWUsXG4gICAgICBtaW1ldHlwZTogZmlsZS5taW1ldHlwZSxcbiAgICAgIHNpemU6IGJ1ZmZlci5sZW5ndGgsXG4gICAgfSk7XG4gICAgdGhpcy5fZmlsZSA9IGZpbGU7XG4gICAgdGhpcy5fYnVmZmVyID0gYnVmZmVyO1xuICB9XG5cbiAgLyoqIO2MjOydvCBCdWZmZXIgKi9cbiAgZ2V0IGJ1ZmZlcigpOiBCdWZmZXIge1xuICAgIHJldHVybiB0aGlzLl9idWZmZXI7XG4gIH1cblxuICAvKiogTUQ1IO2VtOyLnCDqs4TsgrAgKi9cbiAgYXN5bmMgbWQ1KCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIGNyZWF0ZUhhc2goXCJtZDVcIikudXBkYXRlKHRoaXMuX2J1ZmZlcikuZGlnZXN0KFwiaGV4XCIpO1xuICB9XG5cbiAgLyoqXG4gICAqIO2MjOydvOydhCDrlJTsiqTtgazsl5Ag7KCA7J6lXG4gICAqIEBwYXJhbSBkaXNrTmFtZSDrlJTsiqTtgawg7J2066aEIChcImZzXCIg65iQ64qUIFwiczNcIilcbiAgICogQHBhcmFtIGtleSDsoIDsnqUg6rK966GcICjsmIg6ICd1cGxvYWRzL2F2YXRhci5wbmcnKVxuICAgKiBAcmV0dXJucyDsoIDsnqXrkJwg7YyM7J287J2YIFVSTFxuICAgKi9cbiAgYXN5bmMgc2F2ZVRvRGlzayhkaXNrTmFtZTogRHJpdmVyS2V5LCBrZXk6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgLy8g7Iic7ZmYIOydmOyhtOyEsSDrsKnsp4Drpbwg7JyE7ZW0IOuPmeyggSBpbXBvcnRcbiAgICBjb25zdCB7IFNvbmFtdSB9ID0gYXdhaXQgaW1wb3J0KFwiLi4vYXBpL3NvbmFtdVwiKTtcbiAgICBjb25zdCBkaXNrID0gU29uYW11LnN0b3JhZ2UudXNlKGRpc2tOYW1lKTtcblxuICAgIGF3YWl0IGRpc2sucHV0KGtleSwgbmV3IFVpbnQ4QXJyYXkodGhpcy5fYnVmZmVyKSwge1xuICAgICAgY29udGVudFR5cGU6IHRoaXMubWltZXR5cGUsXG4gICAgfSk7XG5cbiAgICB0aGlzLl91cmwgPSBhd2FpdCBkaXNrLmdldFVybChrZXkpO1xuICAgIHRoaXMuX3NpZ25lZFVybCA9IGF3YWl0IGRpc2suZ2V0U2lnbmVkVXJsKGtleSk7XG5cbiAgICAvLyBzaWduZWQgdXJs7J2AIOunjOujjCDsi5zqsITsnbQg7J6I6riwIOuVjOusuOyXkCwgdW5zaWduZWQgdXJs7J2EIOuwmO2ZmO2VqeuLiOuLpC5cbiAgICByZXR1cm4gdGhpcy5fdXJsO1xuICB9XG5cbiAgLyoqIOybkOuzuCBNdWx0aXBhcnRGaWxlIOygkeq3vCAqL1xuICBnZXQgcmF3KCk6IE11bHRpcGFydEZpbGUge1xuICAgIHJldHVybiB0aGlzLl9maWxlO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztnQkFJc0M7Q0FPekIsZUFBYixjQUFrQyxTQUFTO0VBQ3pDO0VBQ0E7RUFFQSxZQUFZLE1BQXFCLFFBQWdCO0dBQy9DLE1BQU07SUFDSixVQUFVLEtBQUs7SUFDZixVQUFVLEtBQUs7SUFDZixNQUFNLE9BQU87R0FDZixDQUFDO0dBQ0QsS0FBSyxRQUFRO0dBQ2IsS0FBSyxVQUFVO0VBQ2pCOztFQUdBLElBQUksU0FBaUI7R0FDbkIsT0FBTyxLQUFLO0VBQ2Q7O0VBR0EsTUFBTSxNQUF1QjtHQUMzQixPQUFPLFdBQVcsS0FBSyxDQUFDLENBQUMsT0FBTyxLQUFLLE9BQU8sQ0FBQyxDQUFDLE9BQU8sS0FBSztFQUM1RDs7Ozs7OztFQVFBLE1BQU0sV0FBVyxVQUFxQixLQUE4QjtHQUVsRSxNQUFNLEVBQUUsV0FBVyxNQUFNLE9BQU87R0FDaEMsTUFBTSxPQUFPLE9BQU8sUUFBUSxJQUFJLFFBQVE7R0FFeEMsTUFBTSxLQUFLLElBQUksS0FBSyxJQUFJLFdBQVcsS0FBSyxPQUFPLEdBQUcsRUFDaEQsYUFBYSxLQUFLLFNBQ3BCLENBQUM7R0FFRCxLQUFLLE9BQU8sTUFBTSxLQUFLLE9BQU8sR0FBRztHQUNqQyxLQUFLLGFBQWEsTUFBTSxLQUFLLGFBQWEsR0FBRztHQUc3QyxPQUFPLEtBQUs7RUFDZDs7RUFHQSxJQUFJLE1BQXFCO0dBQ3ZCLE9BQU8sS0FBSztFQUNkO0NBQ0YifQ==
52
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVmZmVyZWQtZmlsZS5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RvcmFnZS9idWZmZXJlZC1maWxlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZUhhc2ggfSBmcm9tIFwiY3J5cHRvXCI7XG5cbmltcG9ydCB7IHR5cGUgTXVsdGlwYXJ0RmlsZSB9IGZyb20gXCJAZmFzdGlmeS9tdWx0aXBhcnRcIjtcblxuaW1wb3J0IHsgQmFzZUZpbGUgfSBmcm9tIFwiLi9iYXNlLWZpbGVcIjtcbmltcG9ydCB7IHR5cGUgRHJpdmVyS2V5IH0gZnJvbSBcIi4vZHJpdmVyc1wiO1xuXG4vKipcbiAqIEJ1ZmZlciDrqqjrk5zroZwg7JeF66Gc65Oc65CcIO2MjOydvFxuICog66mU66qo66as7JeQIOuhnOuTnOuQnCDsg4Htg5zroZwsIG1kNSDqs4TsgrDsnbTrgpgg7J2066+47KeAIOyymOumrCDrk7Eg7Jyg7Jew7ZWcIOyekeyXheydtCDqsIDriqXtlanri4jri6QuXG4gKi9cbmV4cG9ydCBjbGFzcyBCdWZmZXJlZEZpbGUgZXh0ZW5kcyBCYXNlRmlsZSB7XG4gIHByaXZhdGUgZmlsZVZhbHVlOiBNdWx0aXBhcnRGaWxlO1xuICBwcml2YXRlIGJ1ZmZlclZhbHVlOiBCdWZmZXI7XG5cbiAgY29uc3RydWN0b3IoZmlsZTogTXVsdGlwYXJ0RmlsZSwgYnVmZmVyOiBCdWZmZXIpIHtcbiAgICBzdXBlcih7XG4gICAgICBmaWxlbmFtZTogZmlsZS5maWxlbmFtZSxcbiAgICAgIG1pbWV0eXBlOiBmaWxlLm1pbWV0eXBlLFxuICAgICAgc2l6ZTogYnVmZmVyLmxlbmd0aCxcbiAgICB9KTtcbiAgICB0aGlzLmZpbGVWYWx1ZSA9IGZpbGU7XG4gICAgdGhpcy5idWZmZXJWYWx1ZSA9IGJ1ZmZlcjtcbiAgfVxuXG4gIC8qKiDtjIzsnbwgQnVmZmVyICovXG4gIGdldCBidWZmZXIoKTogQnVmZmVyIHtcbiAgICByZXR1cm4gdGhpcy5idWZmZXJWYWx1ZTtcbiAgfVxuXG4gIC8qKiBNRDUg7ZW07IucIOqzhOyCsCAqL1xuICBhc3luYyBtZDUoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gY3JlYXRlSGFzaChcIm1kNVwiKS51cGRhdGUodGhpcy5idWZmZXJWYWx1ZSkuZGlnZXN0KFwiaGV4XCIpO1xuICB9XG5cbiAgLyoqXG4gICAqIO2MjOydvOydhCDrlJTsiqTtgazsl5Ag7KCA7J6lXG4gICAqIEBwYXJhbSBkaXNrTmFtZSDrlJTsiqTtgawg7J2066aEIChcImZzXCIg65iQ64qUIFwiczNcIilcbiAgICogQHBhcmFtIGtleSDsoIDsnqUg6rK966GcICjsmIg6ICd1cGxvYWRzL2F2YXRhci5wbmcnKVxuICAgKiBAcmV0dXJucyDsoIDsnqXrkJwg7YyM7J287J2YIFVSTFxuICAgKi9cbiAgYXN5bmMgc2F2ZVRvRGlzayhkaXNrTmFtZTogRHJpdmVyS2V5LCBrZXk6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgLy8g7Iic7ZmYIOydmOyhtOyEsSDrsKnsp4Drpbwg7JyE7ZW0IOuPmeyggSBpbXBvcnRcbiAgICBjb25zdCB7IFNvbmFtdSB9ID0gYXdhaXQgaW1wb3J0KFwiLi4vYXBpL3NvbmFtdVwiKTtcbiAgICBjb25zdCBkaXNrID0gU29uYW11LnN0b3JhZ2UudXNlKGRpc2tOYW1lKTtcblxuICAgIGF3YWl0IGRpc2sucHV0KGtleSwgbmV3IFVpbnQ4QXJyYXkodGhpcy5idWZmZXJWYWx1ZSksIHtcbiAgICAgIGNvbnRlbnRUeXBlOiB0aGlzLm1pbWV0eXBlLFxuICAgIH0pO1xuXG4gICAgdGhpc1tcIl91cmxcIl0gPSBhd2FpdCBkaXNrLmdldFVybChrZXkpO1xuICAgIHRoaXNbXCJfc2lnbmVkVXJsXCJdID0gYXdhaXQgZGlzay5nZXRTaWduZWRVcmwoa2V5KTtcblxuICAgIC8vIHNpZ25lZCB1cmzsnYAg66eM66OMIOyLnOqwhOydtCDsnojquLAg65WM66y47JeQLCB1bnNpZ25lZCB1cmzsnYQg67CY7ZmY7ZWp64uI64ukLlxuICAgIHJldHVybiB0aGlzW1wiX3VybFwiXTtcbiAgfVxuXG4gIC8qKiDsm5Drs7ggTXVsdGlwYXJ0RmlsZSDsoJHqt7wgKi9cbiAgZ2V0IHJhdygpOiBNdWx0aXBhcnRGaWxlIHtcbiAgICByZXR1cm4gdGhpcy5maWxlVmFsdWU7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O2dCQUlzQztDQU96QixlQUFiLGNBQWtDLFNBQVM7RUFDekM7RUFDQTtFQUVBLFlBQVksTUFBcUIsUUFBZ0I7R0FDL0MsTUFBTTtJQUNKLFVBQVUsS0FBSztJQUNmLFVBQVUsS0FBSztJQUNmLE1BQU0sT0FBTztHQUNmLENBQUM7R0FDRCxLQUFLLFlBQVk7R0FDakIsS0FBSyxjQUFjO0VBQ3JCOztFQUdBLElBQUksU0FBaUI7R0FDbkIsT0FBTyxLQUFLO0VBQ2Q7O0VBR0EsTUFBTSxNQUF1QjtHQUMzQixPQUFPLFdBQVcsS0FBSyxDQUFDLENBQUMsT0FBTyxLQUFLLFdBQVcsQ0FBQyxDQUFDLE9BQU8sS0FBSztFQUNoRTs7Ozs7OztFQVFBLE1BQU0sV0FBVyxVQUFxQixLQUE4QjtHQUVsRSxNQUFNLEVBQUUsV0FBVyxNQUFNLE9BQU87R0FDaEMsTUFBTSxPQUFPLE9BQU8sUUFBUSxJQUFJLFFBQVE7R0FFeEMsTUFBTSxLQUFLLElBQUksS0FBSyxJQUFJLFdBQVcsS0FBSyxXQUFXLEdBQUcsRUFDcEQsYUFBYSxLQUFLLFNBQ3BCLENBQUM7R0FFRCxLQUFLLFVBQVUsTUFBTSxLQUFLLE9BQU8sR0FBRztHQUNwQyxLQUFLLGdCQUFnQixNQUFNLEtBQUssYUFBYSxHQUFHO0dBR2hELE9BQU8sS0FBSztFQUNkOztFQUdBLElBQUksTUFBcUI7R0FDdkIsT0FBTyxLQUFLO0VBQ2Q7Q0FDRiJ9
@@ -1 +1 @@
1
- {"version":3,"file":"s3-driver.d.ts","sourceRoot":"","sources":["../../src/storage/s3-driver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAMvC,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAEjE;;;;;;;;;GASG;AACH,qBAAa,cAAe,SAAQ,QAAQ;IAC1C,OAAO,CAAC,YAAY,CAAW;IAC/B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,gBAAgB,CAAuB;IAC/C,OAAO,CAAC,iBAAiB,CAAU;gBAEvB,OAAO,EAAE,eAAe;IAUpC;;;;;OAKG;IACY,SAAS,CACtB,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,QAAQ,EAClB,OAAO,CAAC,EAAE;QACR,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,UAAU,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;QAClC,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC;KAC7B,GACA,OAAO,CAAC,IAAI,CAAC;CAwBjB"}
1
+ {"version":3,"file":"s3-driver.d.ts","sourceRoot":"","sources":["../../src/storage/s3-driver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAMvC,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAEjE;;;;;;;;;GASG;AACH,qBAAa,cAAe,SAAQ,QAAQ;IAC1C,OAAO,CAAC,YAAY,CAAW;IAC/B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,gBAAgB,CAAuB;IAC/C,OAAO,CAAC,iBAAiB,CAAU;gBAEvB,OAAO,EAAE,eAAe;IAUpC;;;;;OAKG;IACY,SAAS,CACtB,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,QAAQ,EAClB,OAAO,CAAC,EAAE;QACR,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,UAAU,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;QAClC,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC;KAC7B,GACA,OAAO,CAAC,IAAI,CAAC;CA2BjB"}
@@ -50,4 +50,4 @@ var SonamuS3Driver = class extends S3Driver {
50
50
  //#endregion
51
51
  export { SonamuS3Driver };
52
52
 
53
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiczMtZHJpdmVyLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdG9yYWdlL3MzLWRyaXZlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIFJlYWRhYmxlIH0gZnJvbSBcInN0cmVhbVwiO1xuXG5pbXBvcnQgeyBTM0NsaWVudCB9IGZyb20gXCJAYXdzLXNkay9jbGllbnQtczNcIjtcbmltcG9ydCB7IHR5cGUgT2JqZWN0Q2FubmVkQUNMIH0gZnJvbSBcIkBhd3Mtc2RrL2NsaWVudC1zM1wiO1xuaW1wb3J0IHsgVXBsb2FkIH0gZnJvbSBcIkBhd3Mtc2RrL2xpYi1zdG9yYWdlXCI7XG5pbXBvcnQgeyB0eXBlIE9wdGlvbnMgfSBmcm9tIFwiQGF3cy1zZGsvbGliLXN0b3JhZ2VcIjtcbmltcG9ydCB7IFMzRHJpdmVyIH0gZnJvbSBcImZseWRyaXZlL2RyaXZlcnMvczNcIjtcbmltcG9ydCB7IHR5cGUgUzNEcml2ZXJPcHRpb25zIH0gZnJvbSBcImZseWRyaXZlL2RyaXZlcnMvczMvdHlwZXNcIjtcblxuLyoqXG4gKiBTb25hbXXsmqkgUzMg65Oc65287J2067KEXG4gKlxuICogZmx5ZHJpdmXsnZggUzNEcml2ZXLrpbwg7ZmV7J6l7ZWY7JesIHB1dFN0cmVhbeyXkOyEnFxuICogQGF3cy1zZGsvbGliLXN0b3JhZ2XsnZggVXBsb2FkIO2BtOuemOyKpOulvCDsgqzsmqntlanri4jri6QuXG4gKiDsnbTrpbwg7Ya17ZW0IOyKpO2KuOumvCDtgazquLDrpbwg66qo66W064qUIOyDge2DnOyXkOyEnOuPhCDsl4XroZzrk5zqsIAg6rCA64ql7ZWp64uI64ukLlxuICpcbiAqIOq4sOyhtCBTM0RyaXZlci5wdXRTdHJlYW3snYAgUHV0T2JqZWN0Q29tbWFuZOulvCDsgqzsmqntlZjsl6wgQ29udGVudC1MZW5ndGjqsIAg7ZWE7JqU7ZaI7KeA66eMLFxuICogVXBsb2FkIO2BtOuemOyKpOuKlCBtdWx0aXBhcnQgdXBsb2Fk66W8IO2Gte2VtCDsiqTtirjrprwg7YGs6riwIOyXhuydtOuPhCDsl4XroZzrk5ztlaAg7IiYIOyeiOyKteuLiOuLpC5cbiAqL1xuZXhwb3J0IGNsYXNzIFNvbmFtdVMzRHJpdmVyIGV4dGVuZHMgUzNEcml2ZXIge1xuICBwcml2YXRlIHNvbmFtdUNsaWVudDogUzNDbGllbnQ7XG4gIHByaXZhdGUgc29uYW11QnVja2V0OiBzdHJpbmc7XG4gIHByaXZhdGUgc29uYW11VmlzaWJpbGl0eTogXCJwdWJsaWNcIiB8IFwicHJpdmF0ZVwiO1xuICBwcml2YXRlIHNvbmFtdVN1cHBvcnRzQUNMOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IFMzRHJpdmVyT3B0aW9ucykge1xuICAgIHN1cGVyKG9wdGlvbnMpO1xuXG4gICAgLy8gUzNDbGllbnQg7J247Iqk7YS07IqkIOyggOyepSAoVXBsb2FkIO2BtOuemOyKpOyXkOyEnCDsgqzsmqkpXG4gICAgdGhpcy5zb25hbXVDbGllbnQgPSBcImNsaWVudFwiIGluIG9wdGlvbnMgPyBvcHRpb25zLmNsaWVudCA6IG5ldyBTM0NsaWVudChvcHRpb25zKTtcbiAgICB0aGlzLnNvbmFtdUJ1Y2tldCA9IG9wdGlvbnMuYnVja2V0O1xuICAgIHRoaXMuc29uYW11VmlzaWJpbGl0eSA9IG9wdGlvbnMudmlzaWJpbGl0eSA/PyBcInByaXZhdGVcIjtcbiAgICB0aGlzLnNvbmFtdVN1cHBvcnRzQUNMID0gb3B0aW9ucy5zdXBwb3J0c0FDTCA/PyBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiDsiqTtirjrprzsnYQgUzPsl5Ag7JeF66Gc65Oc7ZWp64uI64ukLlxuICAgKlxuICAgKiBAYXdzLXNkay9saWItc3RvcmFnZeydmCBVcGxvYWQg7YG0656Y7Iqk66W8IOyCrOyaqe2VmOyXrFxuICAgKiBtdWx0aXBhcnQgdXBsb2Fk66GcIOyymOumrO2VqeuLiOuLpC5cbiAgICovXG4gIG92ZXJyaWRlIGFzeW5jIHB1dFN0cmVhbShcbiAgICBrZXk6IHN0cmluZyxcbiAgICBjb250ZW50czogUmVhZGFibGUsXG4gICAgb3B0aW9ucz86IHtcbiAgICAgIGNvbnRlbnRUeXBlPzogc3RyaW5nO1xuICAgICAgdmlzaWJpbGl0eT86IFwicHVibGljXCIgfCBcInByaXZhdGVcIjtcbiAgICAgIGNhY2hlQ29udHJvbD86IHN0cmluZztcbiAgICAgIGNvbnRlbnREaXNwb3NpdGlvbj86IHN0cmluZztcbiAgICB9LFxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB2aXNpYmlsaXR5ID0gb3B0aW9ucz8udmlzaWJpbGl0eSA/PyB0aGlzLnNvbmFtdVZpc2liaWxpdHk7XG5cbiAgICBjb25zdCB1cGxvYWRQYXJhbXM6IE9wdGlvbnNbXCJwYXJhbXNcIl0gPSB7XG4gICAgICBCdWNrZXQ6IHRoaXMuc29uYW11QnVja2V0LFxuICAgICAgS2V5OiBrZXksXG4gICAgICBCb2R5OiBjb250ZW50cyxcbiAgICAgIENvbnRlbnRUeXBlOiBvcHRpb25zPy5jb250ZW50VHlwZSxcbiAgICAgIENhY2hlQ29udHJvbDogb3B0aW9ucz8uY2FjaGVDb250cm9sLFxuICAgICAgQ29udGVudERpc3Bvc2l0aW9uOiBvcHRpb25zPy5jb250ZW50RGlzcG9zaXRpb24sXG4gICAgfTtcblxuICAgIC8vIEFDTCDsp4Dsm5Ag7Iuc7JeQ66eMIOyEpOyglVxuICAgIGlmICh0aGlzLnNvbmFtdVN1cHBvcnRzQUNMKSB7XG4gICAgICB1cGxvYWRQYXJhbXMuQUNMID0gKHZpc2liaWxpdHkgPT09IFwicHVibGljXCIgPyBcInB1YmxpYy1yZWFkXCIgOiBcInByaXZhdGVcIikgYXMgT2JqZWN0Q2FubmVkQUNMO1xuICAgIH1cblxuICAgIGNvbnN0IHVwbG9hZCA9IG5ldyBVcGxvYWQoe1xuICAgICAgY2xpZW50OiB0aGlzLnNvbmFtdUNsaWVudCxcbiAgICAgIHBhcmFtczogdXBsb2FkUGFyYW1zLFxuICAgIH0pO1xuXG4gICAgYXdhaXQgdXBsb2FkLmRvbmUoKTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQW1CQSxJQUFhLGlCQUFiLGNBQW9DLFNBQVM7Q0FDM0M7Q0FDQTtDQUNBO0NBQ0E7Q0FFQSxZQUFZLFNBQTBCO0VBQ3BDLE1BQU0sT0FBTztFQUdiLEtBQUssZUFBZSxZQUFZLFVBQVUsUUFBUSxTQUFTLElBQUksU0FBUyxPQUFPO0VBQy9FLEtBQUssZUFBZSxRQUFRO0VBQzVCLEtBQUssbUJBQW1CLFFBQVEsY0FBYztFQUM5QyxLQUFLLG9CQUFvQixRQUFRLGVBQWU7Q0FDbEQ7Ozs7Ozs7Q0FRQSxNQUFlLFVBQ2IsS0FDQSxVQUNBLFNBTWU7RUFDZixNQUFNLGFBQWEsU0FBUyxjQUFjLEtBQUs7RUFFL0MsTUFBTSxlQUFrQztHQUN0QyxRQUFRLEtBQUs7R0FDYixLQUFLO0dBQ0wsTUFBTTtHQUNOLGFBQWEsU0FBUztHQUN0QixjQUFjLFNBQVM7R0FDdkIsb0JBQW9CLFNBQVM7RUFDL0I7RUFHQSxJQUFJLEtBQUssbUJBQ1AsYUFBYSxNQUFPLGVBQWUsV0FBVyxnQkFBZ0I7RUFRaEUsTUFBTSxJQUxhLE9BQU87R0FDeEIsUUFBUSxLQUFLO0dBQ2IsUUFBUTtFQUNWLENBRU0sQ0FBQSxDQUFPLEtBQUs7Q0FDcEI7QUFDRiJ9
53
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiczMtZHJpdmVyLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdG9yYWdlL3MzLWRyaXZlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIFJlYWRhYmxlIH0gZnJvbSBcInN0cmVhbVwiO1xuXG5pbXBvcnQgeyBTM0NsaWVudCB9IGZyb20gXCJAYXdzLXNkay9jbGllbnQtczNcIjtcbmltcG9ydCB7IHR5cGUgT2JqZWN0Q2FubmVkQUNMIH0gZnJvbSBcIkBhd3Mtc2RrL2NsaWVudC1zM1wiO1xuaW1wb3J0IHsgVXBsb2FkIH0gZnJvbSBcIkBhd3Mtc2RrL2xpYi1zdG9yYWdlXCI7XG5pbXBvcnQgeyB0eXBlIE9wdGlvbnMgfSBmcm9tIFwiQGF3cy1zZGsvbGliLXN0b3JhZ2VcIjtcbmltcG9ydCB7IFMzRHJpdmVyIH0gZnJvbSBcImZseWRyaXZlL2RyaXZlcnMvczNcIjtcbmltcG9ydCB7IHR5cGUgUzNEcml2ZXJPcHRpb25zIH0gZnJvbSBcImZseWRyaXZlL2RyaXZlcnMvczMvdHlwZXNcIjtcblxuLyoqXG4gKiBTb25hbXXsmqkgUzMg65Oc65287J2067KEXG4gKlxuICogZmx5ZHJpdmXsnZggUzNEcml2ZXLrpbwg7ZmV7J6l7ZWY7JesIHB1dFN0cmVhbeyXkOyEnFxuICogQGF3cy1zZGsvbGliLXN0b3JhZ2XsnZggVXBsb2FkIO2BtOuemOyKpOulvCDsgqzsmqntlanri4jri6QuXG4gKiDsnbTrpbwg7Ya17ZW0IOyKpO2KuOumvCDtgazquLDrpbwg66qo66W064qUIOyDge2DnOyXkOyEnOuPhCDsl4XroZzrk5zqsIAg6rCA64ql7ZWp64uI64ukLlxuICpcbiAqIOq4sOyhtCBTM0RyaXZlci5wdXRTdHJlYW3snYAgUHV0T2JqZWN0Q29tbWFuZOulvCDsgqzsmqntlZjsl6wgQ29udGVudC1MZW5ndGjqsIAg7ZWE7JqU7ZaI7KeA66eMLFxuICogVXBsb2FkIO2BtOuemOyKpOuKlCBtdWx0aXBhcnQgdXBsb2Fk66W8IO2Gte2VtCDsiqTtirjrprwg7YGs6riwIOyXhuydtOuPhCDsl4XroZzrk5ztlaAg7IiYIOyeiOyKteuLiOuLpC5cbiAqL1xuZXhwb3J0IGNsYXNzIFNvbmFtdVMzRHJpdmVyIGV4dGVuZHMgUzNEcml2ZXIge1xuICBwcml2YXRlIHNvbmFtdUNsaWVudDogUzNDbGllbnQ7XG4gIHByaXZhdGUgc29uYW11QnVja2V0OiBzdHJpbmc7XG4gIHByaXZhdGUgc29uYW11VmlzaWJpbGl0eTogXCJwdWJsaWNcIiB8IFwicHJpdmF0ZVwiO1xuICBwcml2YXRlIHNvbmFtdVN1cHBvcnRzQUNMOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IFMzRHJpdmVyT3B0aW9ucykge1xuICAgIHN1cGVyKG9wdGlvbnMpO1xuXG4gICAgLy8gUzNDbGllbnQg7J247Iqk7YS07IqkIOyggOyepSAoVXBsb2FkIO2BtOuemOyKpOyXkOyEnCDsgqzsmqkpXG4gICAgdGhpcy5zb25hbXVDbGllbnQgPSBcImNsaWVudFwiIGluIG9wdGlvbnMgPyBvcHRpb25zLmNsaWVudCA6IG5ldyBTM0NsaWVudChvcHRpb25zKTtcbiAgICB0aGlzLnNvbmFtdUJ1Y2tldCA9IG9wdGlvbnMuYnVja2V0O1xuICAgIHRoaXMuc29uYW11VmlzaWJpbGl0eSA9IG9wdGlvbnMudmlzaWJpbGl0eSA/PyBcInByaXZhdGVcIjtcbiAgICB0aGlzLnNvbmFtdVN1cHBvcnRzQUNMID0gb3B0aW9ucy5zdXBwb3J0c0FDTCA/PyBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiDsiqTtirjrprzsnYQgUzPsl5Ag7JeF66Gc65Oc7ZWp64uI64ukLlxuICAgKlxuICAgKiBAYXdzLXNkay9saWItc3RvcmFnZeydmCBVcGxvYWQg7YG0656Y7Iqk66W8IOyCrOyaqe2VmOyXrFxuICAgKiBtdWx0aXBhcnQgdXBsb2Fk66GcIOyymOumrO2VqeuLiOuLpC5cbiAgICovXG4gIG92ZXJyaWRlIGFzeW5jIHB1dFN0cmVhbShcbiAgICBrZXk6IHN0cmluZyxcbiAgICBjb250ZW50czogUmVhZGFibGUsXG4gICAgb3B0aW9ucz86IHtcbiAgICAgIGNvbnRlbnRUeXBlPzogc3RyaW5nO1xuICAgICAgdmlzaWJpbGl0eT86IFwicHVibGljXCIgfCBcInByaXZhdGVcIjtcbiAgICAgIGNhY2hlQ29udHJvbD86IHN0cmluZztcbiAgICAgIGNvbnRlbnREaXNwb3NpdGlvbj86IHN0cmluZztcbiAgICB9LFxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB2aXNpYmlsaXR5ID0gb3B0aW9ucz8udmlzaWJpbGl0eSA/PyB0aGlzLnNvbmFtdVZpc2liaWxpdHk7XG5cbiAgICBjb25zdCB1cGxvYWRQYXJhbXM6IE9wdGlvbnNbXCJwYXJhbXNcIl0gPSB7XG4gICAgICBCdWNrZXQ6IHRoaXMuc29uYW11QnVja2V0LFxuICAgICAgS2V5OiBrZXksXG4gICAgICBCb2R5OiBjb250ZW50cyxcbiAgICAgIENvbnRlbnRUeXBlOiBvcHRpb25zPy5jb250ZW50VHlwZSxcbiAgICAgIENhY2hlQ29udHJvbDogb3B0aW9ucz8uY2FjaGVDb250cm9sLFxuICAgICAgQ29udGVudERpc3Bvc2l0aW9uOiBvcHRpb25zPy5jb250ZW50RGlzcG9zaXRpb24sXG4gICAgfTtcblxuICAgIC8vIEFDTCDsp4Dsm5Ag7Iuc7JeQ66eMIOyEpOyglVxuICAgIGlmICh0aGlzLnNvbmFtdVN1cHBvcnRzQUNMKSB7XG4gICAgICB1cGxvYWRQYXJhbXMuQUNMID1cbiAgICAgICAgLyogU0FGRVRZOiDtmLjstpwg6rK96rOE7J2YIOyEoO2WiSDqsoDspp3qs7wg7IaM7JygIO2DgOyehSDqs4Tslb3snbQg7J20IOqwkuydmCDtg4DsnoXsnYQg67O07J6l7ZWc64ukLiAqLyAoXG4gICAgICAgICAgdmlzaWJpbGl0eSA9PT0gXCJwdWJsaWNcIiA/IFwicHVibGljLXJlYWRcIiA6IFwicHJpdmF0ZVwiXG4gICAgICAgICkgYXMgT2JqZWN0Q2FubmVkQUNMO1xuICAgIH1cblxuICAgIGNvbnN0IHVwbG9hZCA9IG5ldyBVcGxvYWQoe1xuICAgICAgY2xpZW50OiB0aGlzLnNvbmFtdUNsaWVudCxcbiAgICAgIHBhcmFtczogdXBsb2FkUGFyYW1zLFxuICAgIH0pO1xuXG4gICAgYXdhaXQgdXBsb2FkLmRvbmUoKTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQW1CQSxJQUFhLGlCQUFiLGNBQW9DLFNBQVM7Q0FDM0M7Q0FDQTtDQUNBO0NBQ0E7Q0FFQSxZQUFZLFNBQTBCO0VBQ3BDLE1BQU0sT0FBTztFQUdiLEtBQUssZUFBZSxZQUFZLFVBQVUsUUFBUSxTQUFTLElBQUksU0FBUyxPQUFPO0VBQy9FLEtBQUssZUFBZSxRQUFRO0VBQzVCLEtBQUssbUJBQW1CLFFBQVEsY0FBYztFQUM5QyxLQUFLLG9CQUFvQixRQUFRLGVBQWU7Q0FDbEQ7Ozs7Ozs7Q0FRQSxNQUFlLFVBQ2IsS0FDQSxVQUNBLFNBTWU7RUFDZixNQUFNLGFBQWEsU0FBUyxjQUFjLEtBQUs7RUFFL0MsTUFBTSxlQUFrQztHQUN0QyxRQUFRLEtBQUs7R0FDYixLQUFLO0dBQ0wsTUFBTTtHQUNOLGFBQWEsU0FBUztHQUN0QixjQUFjLFNBQVM7R0FDdkIsb0JBQW9CLFNBQVM7RUFDL0I7RUFHQSxJQUFJLEtBQUssbUJBQ1AsYUFBYSxNQUVULGVBQWUsV0FBVyxnQkFBZ0I7RUFTaEQsTUFBTSxJQUxhLE9BQU87R0FDeEIsUUFBUSxLQUFLO0dBQ2IsUUFBUTtFQUNWLENBRU0sQ0FBQSxDQUFPLEtBQUs7Q0FDcEI7QUFDRiJ9
@@ -5,8 +5,8 @@ import { type DriverKey } from "./drivers";
5
5
  * 이미 저장소에 스트리밍 완료된 상태로, url/key 등 메타데이터만 접근 가능합니다.
6
6
  */
7
7
  export declare class UploadedFile extends BaseFile {
8
- private _key;
9
- private _diskName;
8
+ private keyValue;
9
+ private diskNameValue;
10
10
  constructor(params: {
11
11
  filename: string;
12
12
  mimetype: string;
@@ -1 +1 @@
1
- {"version":3,"file":"uploaded-file.d.ts","sourceRoot":"","sources":["../../src/storage/uploaded-file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,WAAW,CAAC;AAE3C;;;GAGG;AACH,qBAAa,YAAa,SAAQ,QAAQ;IACxC,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,SAAS,CAAY;gBAEjB,MAAM,EAAE;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,MAAM,CAAC;QACZ,SAAS,EAAE,MAAM,CAAC;QAClB,GAAG,EAAE,MAAM,CAAC;QACZ,QAAQ,EAAE,SAAS,CAAC;KACrB;IAYD,cAAc;IACd,IAAI,GAAG,IAAI,MAAM,CAEhB;IAED,iBAAiB;IACjB,IAAI,QAAQ,IAAI,SAAS,CAExB;IAED;;;OAGG;IACG,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC;CAOlC"}
1
+ {"version":3,"file":"uploaded-file.d.ts","sourceRoot":"","sources":["../../src/storage/uploaded-file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,WAAW,CAAC;AAE3C;;;GAGG;AACH,qBAAa,YAAa,SAAQ,QAAQ;IACxC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,aAAa,CAAY;gBAErB,MAAM,EAAE;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,MAAM,CAAC;QACZ,SAAS,EAAE,MAAM,CAAC;QAClB,GAAG,EAAE,MAAM,CAAC;QACZ,QAAQ,EAAE,SAAS,CAAC;KACrB;IAYD,cAAc;IACd,IAAI,GAAG,IAAI,MAAM,CAEhB;IAED,iBAAiB;IACjB,IAAI,QAAQ,IAAI,SAAS,CAExB;IAED;;;OAGG;IACG,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC;CAOlC"}
@@ -5,8 +5,8 @@ var UploadedFile;
5
5
  var init_uploaded_file = __esmMin((() => {
6
6
  init_base_file();
7
7
  UploadedFile = class extends BaseFile {
8
- _key;
9
- _diskName;
8
+ keyValue;
9
+ diskNameValue;
10
10
  constructor(params) {
11
11
  super({
12
12
  filename: params.filename,
@@ -15,16 +15,16 @@ var init_uploaded_file = __esmMin((() => {
15
15
  url: params.url,
16
16
  signedUrl: params.signedUrl
17
17
  });
18
- this._key = params.key;
19
- this._diskName = params.diskName;
18
+ this.keyValue = params.key;
19
+ this.diskNameValue = params.diskName;
20
20
  }
21
21
  /** 저장소 내 키 */
22
22
  get key() {
23
- return this._key;
23
+ return this.keyValue;
24
24
  }
25
25
  /** 저장된 디스크 이름 */
26
26
  get diskName() {
27
- return this._diskName;
27
+ return this.diskNameValue;
28
28
  }
29
29
  /**
30
30
  * 저장소에서 파일을 다운로드합니다.
@@ -32,7 +32,7 @@ var init_uploaded_file = __esmMin((() => {
32
32
  */
33
33
  async download() {
34
34
  const { Sonamu } = await import("../api/sonamu.js");
35
- const uint8Array = await Sonamu.storage.use(this._diskName).get(this._key);
35
+ const uint8Array = await Sonamu.storage.use(this.diskNameValue).get(this.keyValue);
36
36
  return Buffer.from(uint8Array);
37
37
  }
38
38
  };
@@ -41,4 +41,4 @@ var init_uploaded_file = __esmMin((() => {
41
41
  init_uploaded_file();
42
42
  export { UploadedFile, init_uploaded_file };
43
43
 
44
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkZWQtZmlsZS5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RvcmFnZS91cGxvYWRlZC1maWxlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VGaWxlIH0gZnJvbSBcIi4vYmFzZS1maWxlXCI7XG5pbXBvcnQgeyB0eXBlIERyaXZlcktleSB9IGZyb20gXCIuL2RyaXZlcnNcIjtcblxuLyoqXG4gKiBTdHJlYW0g66qo65Oc66GcIOyXheuhnOuTnOuQnCDtjIzsnbxcbiAqIOydtOuvuCDsoIDsnqXshozsl5Ag7Iqk7Yq466as67CNIOyZhOujjOuQnCDsg4Htg5zroZwsIHVybC9rZXkg65OxIOuplO2DgOuNsOydtO2EsOunjCDsoJHqt7wg6rCA64ql7ZWp64uI64ukLlxuICovXG5leHBvcnQgY2xhc3MgVXBsb2FkZWRGaWxlIGV4dGVuZHMgQmFzZUZpbGUge1xuICBwcml2YXRlIF9rZXk6IHN0cmluZztcbiAgcHJpdmF0ZSBfZGlza05hbWU6IERyaXZlcktleTtcblxuICBjb25zdHJ1Y3RvcihwYXJhbXM6IHtcbiAgICBmaWxlbmFtZTogc3RyaW5nO1xuICAgIG1pbWV0eXBlOiBzdHJpbmc7XG4gICAgc2l6ZTogbnVtYmVyO1xuICAgIHVybDogc3RyaW5nO1xuICAgIHNpZ25lZFVybDogc3RyaW5nO1xuICAgIGtleTogc3RyaW5nO1xuICAgIGRpc2tOYW1lOiBEcml2ZXJLZXk7XG4gIH0pIHtcbiAgICBzdXBlcih7XG4gICAgICBmaWxlbmFtZTogcGFyYW1zLmZpbGVuYW1lLFxuICAgICAgbWltZXR5cGU6IHBhcmFtcy5taW1ldHlwZSxcbiAgICAgIHNpemU6IHBhcmFtcy5zaXplLFxuICAgICAgdXJsOiBwYXJhbXMudXJsLFxuICAgICAgc2lnbmVkVXJsOiBwYXJhbXMuc2lnbmVkVXJsLFxuICAgIH0pO1xuICAgIHRoaXMuX2tleSA9IHBhcmFtcy5rZXk7XG4gICAgdGhpcy5fZGlza05hbWUgPSBwYXJhbXMuZGlza05hbWU7XG4gIH1cblxuICAvKiog7KCA7J6l7IaMIOuCtCDtgqQgKi9cbiAgZ2V0IGtleSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9rZXk7XG4gIH1cblxuICAvKiog7KCA7J6l65CcIOuUlOyKpO2BrCDsnbTrpoQgKi9cbiAgZ2V0IGRpc2tOYW1lKCk6IERyaXZlcktleSB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc2tOYW1lO1xuICB9XG5cbiAgLyoqXG4gICAqIOyggOyepeyGjOyXkOyEnCDtjIzsnbzsnYQg64uk7Jq066Gc65Oc7ZWp64uI64ukLlxuICAgKiDsiqTtirjrprwg66qo65Oc66GcIOyXheuhnOuTnOuQnCDtjIzsnbzsnYQg64KY7KSR7JeQIOyymOumrO2VtOyVvCDtlaAg65WMIOyCrOyaqe2VqeuLiOuLpC5cbiAgICovXG4gIGFzeW5jIGRvd25sb2FkKCk6IFByb21pc2U8QnVmZmVyPiB7XG4gICAgY29uc3QgeyBTb25hbXUgfSA9IGF3YWl0IGltcG9ydChcIi4uL2FwaS9zb25hbXVcIik7XG4gICAgY29uc3QgZGlzayA9IFNvbmFtdS5zdG9yYWdlLnVzZSh0aGlzLl9kaXNrTmFtZSk7XG5cbiAgICBjb25zdCB1aW50OEFycmF5ID0gYXdhaXQgZGlzay5nZXQodGhpcy5fa2V5KTtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20odWludDhBcnJheSk7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Z0JBQXNDO0NBT3pCLGVBQWIsY0FBa0MsU0FBUztFQUN6QztFQUNBO0VBRUEsWUFBWSxRQVFUO0dBQ0QsTUFBTTtJQUNKLFVBQVUsT0FBTztJQUNqQixVQUFVLE9BQU87SUFDakIsTUFBTSxPQUFPO0lBQ2IsS0FBSyxPQUFPO0lBQ1osV0FBVyxPQUFPO0dBQ3BCLENBQUM7R0FDRCxLQUFLLE9BQU8sT0FBTztHQUNuQixLQUFLLFlBQVksT0FBTztFQUMxQjs7RUFHQSxJQUFJLE1BQWM7R0FDaEIsT0FBTyxLQUFLO0VBQ2Q7O0VBR0EsSUFBSSxXQUFzQjtHQUN4QixPQUFPLEtBQUs7RUFDZDs7Ozs7RUFNQSxNQUFNLFdBQTRCO0dBQ2hDLE1BQU0sRUFBRSxXQUFXLE1BQU0sT0FBTztHQUdoQyxNQUFNLGFBQWEsTUFGTixPQUFPLFFBQVEsSUFBSSxLQUFLLFNBRVosQ0FBQSxDQUFLLElBQUksS0FBSyxJQUFJO0dBQzNDLE9BQU8sT0FBTyxLQUFLLFVBQVU7RUFDL0I7Q0FDRiJ9
44
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkZWQtZmlsZS5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RvcmFnZS91cGxvYWRlZC1maWxlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VGaWxlIH0gZnJvbSBcIi4vYmFzZS1maWxlXCI7XG5pbXBvcnQgeyB0eXBlIERyaXZlcktleSB9IGZyb20gXCIuL2RyaXZlcnNcIjtcblxuLyoqXG4gKiBTdHJlYW0g66qo65Oc66GcIOyXheuhnOuTnOuQnCDtjIzsnbxcbiAqIOydtOuvuCDsoIDsnqXshozsl5Ag7Iqk7Yq466as67CNIOyZhOujjOuQnCDsg4Htg5zroZwsIHVybC9rZXkg65OxIOuplO2DgOuNsOydtO2EsOunjCDsoJHqt7wg6rCA64ql7ZWp64uI64ukLlxuICovXG5leHBvcnQgY2xhc3MgVXBsb2FkZWRGaWxlIGV4dGVuZHMgQmFzZUZpbGUge1xuICBwcml2YXRlIGtleVZhbHVlOiBzdHJpbmc7XG4gIHByaXZhdGUgZGlza05hbWVWYWx1ZTogRHJpdmVyS2V5O1xuXG4gIGNvbnN0cnVjdG9yKHBhcmFtczoge1xuICAgIGZpbGVuYW1lOiBzdHJpbmc7XG4gICAgbWltZXR5cGU6IHN0cmluZztcbiAgICBzaXplOiBudW1iZXI7XG4gICAgdXJsOiBzdHJpbmc7XG4gICAgc2lnbmVkVXJsOiBzdHJpbmc7XG4gICAga2V5OiBzdHJpbmc7XG4gICAgZGlza05hbWU6IERyaXZlcktleTtcbiAgfSkge1xuICAgIHN1cGVyKHtcbiAgICAgIGZpbGVuYW1lOiBwYXJhbXMuZmlsZW5hbWUsXG4gICAgICBtaW1ldHlwZTogcGFyYW1zLm1pbWV0eXBlLFxuICAgICAgc2l6ZTogcGFyYW1zLnNpemUsXG4gICAgICB1cmw6IHBhcmFtcy51cmwsXG4gICAgICBzaWduZWRVcmw6IHBhcmFtcy5zaWduZWRVcmwsXG4gICAgfSk7XG4gICAgdGhpcy5rZXlWYWx1ZSA9IHBhcmFtcy5rZXk7XG4gICAgdGhpcy5kaXNrTmFtZVZhbHVlID0gcGFyYW1zLmRpc2tOYW1lO1xuICB9XG5cbiAgLyoqIOyggOyepeyGjCDrgrQg7YKkICovXG4gIGdldCBrZXkoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5rZXlWYWx1ZTtcbiAgfVxuXG4gIC8qKiDsoIDsnqXrkJwg65SU7Iqk7YGsIOydtOumhCAqL1xuICBnZXQgZGlza05hbWUoKTogRHJpdmVyS2V5IHtcbiAgICByZXR1cm4gdGhpcy5kaXNrTmFtZVZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIOyggOyepeyGjOyXkOyEnCDtjIzsnbzsnYQg64uk7Jq066Gc65Oc7ZWp64uI64ukLlxuICAgKiDsiqTtirjrprwg66qo65Oc66GcIOyXheuhnOuTnOuQnCDtjIzsnbzsnYQg64KY7KSR7JeQIOyymOumrO2VtOyVvCDtlaAg65WMIOyCrOyaqe2VqeuLiOuLpC5cbiAgICovXG4gIGFzeW5jIGRvd25sb2FkKCk6IFByb21pc2U8QnVmZmVyPiB7XG4gICAgY29uc3QgeyBTb25hbXUgfSA9IGF3YWl0IGltcG9ydChcIi4uL2FwaS9zb25hbXVcIik7XG4gICAgY29uc3QgZGlzayA9IFNvbmFtdS5zdG9yYWdlLnVzZSh0aGlzLmRpc2tOYW1lVmFsdWUpO1xuXG4gICAgY29uc3QgdWludDhBcnJheSA9IGF3YWl0IGRpc2suZ2V0KHRoaXMua2V5VmFsdWUpO1xuICAgIHJldHVybiBCdWZmZXIuZnJvbSh1aW50OEFycmF5KTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7OztnQkFBc0M7Q0FPekIsZUFBYixjQUFrQyxTQUFTO0VBQ3pDO0VBQ0E7RUFFQSxZQUFZLFFBUVQ7R0FDRCxNQUFNO0lBQ0osVUFBVSxPQUFPO0lBQ2pCLFVBQVUsT0FBTztJQUNqQixNQUFNLE9BQU87SUFDYixLQUFLLE9BQU87SUFDWixXQUFXLE9BQU87R0FDcEIsQ0FBQztHQUNELEtBQUssV0FBVyxPQUFPO0dBQ3ZCLEtBQUssZ0JBQWdCLE9BQU87RUFDOUI7O0VBR0EsSUFBSSxNQUFjO0dBQ2hCLE9BQU8sS0FBSztFQUNkOztFQUdBLElBQUksV0FBc0I7R0FDeEIsT0FBTyxLQUFLO0VBQ2Q7Ozs7O0VBTUEsTUFBTSxXQUE0QjtHQUNoQyxNQUFNLEVBQUUsV0FBVyxNQUFNLE9BQU87R0FHaEMsTUFBTSxhQUFhLE1BRk4sT0FBTyxRQUFRLElBQUksS0FBSyxhQUVaLENBQUEsQ0FBSyxJQUFJLEtBQUssUUFBUTtHQUMvQyxPQUFPLE9BQU8sS0FBSyxVQUFVO0VBQy9CO0NBQ0YifQ==
@@ -18,21 +18,21 @@ var init_sse = __esmMin((() => {
18
18
  SSEConnectionImpl = class {
19
19
  socket;
20
20
  reply;
21
- _closed = false;
22
- _closeCallbacks = [];
21
+ closedState = false;
22
+ closeCallbacks = [];
23
23
  markClosed = () => {
24
- this._closed = true;
24
+ this.closedState = true;
25
25
  this.fireCloseCallbacks();
26
26
  };
27
27
  get closed() {
28
- return this._closed;
28
+ return this.closedState;
29
29
  }
30
30
  onClose(callback) {
31
- this._closeCallbacks.push(callback);
31
+ this.closeCallbacks.push(callback);
32
32
  }
33
33
  fireCloseCallbacks() {
34
- const callbacks = this._closeCallbacks;
35
- this._closeCallbacks = [];
34
+ const callbacks = this.closeCallbacks;
35
+ this.closeCallbacks = [];
36
36
  for (const cb of callbacks) cb();
37
37
  }
38
38
  constructor(socket, reply) {
@@ -42,15 +42,15 @@ var init_sse = __esmMin((() => {
42
42
  this.socket.on("error", this.markClosed);
43
43
  }
44
44
  publish(event, data) {
45
- if (this._closed) return;
45
+ if (this.closedState) return;
46
46
  this.reply.sse({
47
47
  event,
48
48
  data: JSON.stringify(data)
49
49
  });
50
50
  }
51
51
  async end() {
52
- if (this._closed) return;
53
- this._closed = true;
52
+ if (this.closedState) return;
53
+ this.closedState = true;
54
54
  this.socket.off("close", this.markClosed);
55
55
  this.socket.off("error", this.markClosed);
56
56
  this.fireCloseCallbacks();
@@ -67,4 +67,4 @@ var init_sse = __esmMin((() => {
67
67
  init_sse();
68
68
  export { createMockSSEFactory, createSSEFactory, init_sse };
69
69
 
70
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3NlLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdHJlYW0vc3NlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgRmFzdGlmeVJlcGx5LCB0eXBlIEZhc3RpZnlSZXF1ZXN0IH0gZnJvbSBcImZhc3RpZnlcIjtcbmltcG9ydCB7IHR5cGUgeiB9IGZyb20gXCJ6b2RcIjtcblxuLy8gTk9URShIYXplLCAyNTExMDYpOiBjb250ZXh0IHByb3ZpZGVy7JeQ7IScIOyduOyekOulvCDssYTsm4zso7zrqbQgY3JlYXRlU1NFKGV2ZW50cynrp4zsnLzroZwg7IKs7JqpIOqwgOuKpVxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVNTRUZhY3Rvcnk8VCBleHRlbmRzIHouWm9kT2JqZWN0PihcbiAgc29ja2V0OiBGYXN0aWZ5UmVxdWVzdFtcInNvY2tldFwiXSxcbiAgcmVwbHk6IEZhc3RpZnlSZXBseSxcbiAgX2V2ZW50czogVCxcbik6IFNTRUNvbm5lY3Rpb248VD4ge1xuICByZXR1cm4gbmV3IFNTRUNvbm5lY3Rpb25JbXBsPFQ+KHNvY2tldCwgcmVwbHkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTW9ja1NTRUZhY3Rvcnk8VCBleHRlbmRzIHouWm9kT2JqZWN0PihfZXZlbnRzOiBUKTogU1NFQ29ubmVjdGlvbjxUPiB7XG4gIHJldHVybiB7XG4gICAgZ2V0IGNsb3NlZCgpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9LFxuICAgIG9uQ2xvc2U6IChfY2FsbGJhY2spID0+IHt9LFxuICAgIHB1Ymxpc2g6IChfZXZlbnQsIF9kYXRhKSA9PiB7fSxcbiAgICBlbmQ6ICgpID0+IFByb21pc2UucmVzb2x2ZSgpLFxuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNTRUNvbm5lY3Rpb248VCBleHRlbmRzIHouWm9kT2JqZWN0PiB7XG4gIGdldCBjbG9zZWQoKTogYm9vbGVhbjtcbiAgb25DbG9zZShjYWxsYmFjazogKCkgPT4gdm9pZCk6IHZvaWQ7XG4gIHB1Ymxpc2g8SyBleHRlbmRzIGtleW9mIHouaW5mZXI8VD4+KGV2ZW50OiBLLCBkYXRhOiB6LmluZmVyPFQ+W0tdKTogdm9pZDtcbiAgZW5kKCk6IFByb21pc2U8dm9pZD47XG59XG5cbmNsYXNzIFNTRUNvbm5lY3Rpb25JbXBsPFQgZXh0ZW5kcyB6LlpvZE9iamVjdD4gaW1wbGVtZW50cyBTU0VDb25uZWN0aW9uPFQ+IHtcbiAgcHJpdmF0ZSBfY2xvc2VkID0gZmFsc2U7XG4gIHByaXZhdGUgX2Nsb3NlQ2FsbGJhY2tzOiBBcnJheTwoKSA9PiB2b2lkPiA9IFtdO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgbWFya0Nsb3NlZCA9ICgpID0+IHtcbiAgICB0aGlzLl9jbG9zZWQgPSB0cnVlO1xuICAgIHRoaXMuZmlyZUNsb3NlQ2FsbGJhY2tzKCk7XG4gIH07XG5cbiAgZ2V0IGNsb3NlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fY2xvc2VkO1xuICB9XG5cbiAgb25DbG9zZShjYWxsYmFjazogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMuX2Nsb3NlQ2FsbGJhY2tzLnB1c2goY2FsbGJhY2spO1xuICB9XG5cbiAgLy8g7L2c67Cx7J2EIO2VnCDrsojrp4wg7Iuk7ZaJ7ZWY6rOgIOuwsOyXtOydhCDruYTsm4wg7KSR67O1IO2YuOy2nOydhCDrsKnsp4BcbiAgcHJpdmF0ZSBmaXJlQ2xvc2VDYWxsYmFja3MoKTogdm9pZCB7XG4gICAgY29uc3QgY2FsbGJhY2tzID0gdGhpcy5fY2xvc2VDYWxsYmFja3M7XG4gICAgdGhpcy5fY2xvc2VDYWxsYmFja3MgPSBbXTtcbiAgICBmb3IgKGNvbnN0IGNiIG9mIGNhbGxiYWNrcykge1xuICAgICAgY2IoKTtcbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNvY2tldDogRmFzdGlmeVJlcXVlc3RbXCJzb2NrZXRcIl0sXG4gICAgcHJpdmF0ZSByZWFkb25seSByZXBseTogRmFzdGlmeVJlcGx5LFxuICApIHtcbiAgICB0aGlzLnNvY2tldC5vbihcImNsb3NlXCIsIHRoaXMubWFya0Nsb3NlZCk7XG4gICAgdGhpcy5zb2NrZXQub24oXCJlcnJvclwiLCB0aGlzLm1hcmtDbG9zZWQpO1xuICB9XG5cbiAgcHVibGlzaDxLIGV4dGVuZHMga2V5b2Ygei5pbmZlcjxUPj4oZXZlbnQ6IEssIGRhdGE6IHouaW5mZXI8VD5bS10pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fY2xvc2VkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5yZXBseS5zc2Uoe1xuICAgICAgZXZlbnQ6IGV2ZW50IGFzIHN0cmluZyxcbiAgICAgIGRhdGE6IEpTT04uc3RyaW5naWZ5KGRhdGEpLFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgZW5kKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLl9jbG9zZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9jbG9zZWQgPSB0cnVlO1xuICAgIHRoaXMuc29ja2V0Lm9mZihcImNsb3NlXCIsIHRoaXMubWFya0Nsb3NlZCk7XG4gICAgdGhpcy5zb2NrZXQub2ZmKFwiZXJyb3JcIiwgdGhpcy5tYXJrQ2xvc2VkKTtcbiAgICB0aGlzLmZpcmVDbG9zZUNhbGxiYWNrcygpO1xuXG4gICAgdGhpcy5yZXBseS5zc2Uoe1xuICAgICAgZXZlbnQ6IFwiZW5kXCIsXG4gICAgICBkYXRhOiBcIkVORFwiLFxuICAgIH0pO1xuXG4gICAgYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgMjAwKSk7XG4gICAgdGhpcy5yZXBseS5yYXcuZW5kKCk7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7QUFJQSxTQUFnQixpQkFDZCxRQUNBLE9BQ0EsU0FDa0I7Q0FDbEIsT0FBTyxJQUFJLGtCQUFxQixRQUFRLEtBQUs7QUFDL0M7QUFFQSxTQUFnQixxQkFBNEMsU0FBOEI7Q0FDeEYsT0FBTztFQUNMLElBQUksU0FBUztHQUNYLE9BQU87RUFDVDtFQUNBLFVBQVUsY0FBYyxDQUFDO0VBQ3pCLFVBQVUsUUFBUSxVQUFVLENBQUM7RUFDN0IsV0FBVyxRQUFRLFFBQVE7Q0FDN0I7QUFDRjs7O0NBU00sb0JBQU4sTUFBMkU7RUEyQnREO0VBQ0E7RUEzQm5CLFVBQWtCO0VBQ2xCLGtCQUE2QyxDQUFDO0VBRTlDLG1CQUFvQztHQUNsQyxLQUFLLFVBQVU7R0FDZixLQUFLLG1CQUFtQjtFQUMxQjtFQUVBLElBQUksU0FBa0I7R0FDcEIsT0FBTyxLQUFLO0VBQ2Q7RUFFQSxRQUFRLFVBQTRCO0dBQ2xDLEtBQUssZ0JBQWdCLEtBQUssUUFBUTtFQUNwQztFQUdBLHFCQUFtQztHQUNqQyxNQUFNLFlBQVksS0FBSztHQUN2QixLQUFLLGtCQUFrQixDQUFDO0dBQ3hCLEtBQUssTUFBTSxNQUFNLFdBQ2YsR0FBRztFQUVQO0VBRUEsWUFDRSxRQUNBLE9BQ0E7R0FGaUIsS0FBQSxTQUFBO0dBQ0EsS0FBQSxRQUFBO0dBRWpCLEtBQUssT0FBTyxHQUFHLFNBQVMsS0FBSyxVQUFVO0dBQ3ZDLEtBQUssT0FBTyxHQUFHLFNBQVMsS0FBSyxVQUFVO0VBQ3pDO0VBRUEsUUFBb0MsT0FBVSxNQUEyQjtHQUN2RSxJQUFJLEtBQUssU0FDUDtHQUdGLEtBQUssTUFBTSxJQUFJO0lBQ047SUFDUCxNQUFNLEtBQUssVUFBVSxJQUFJO0dBQzNCLENBQUM7RUFDSDtFQUVBLE1BQU0sTUFBcUI7R0FDekIsSUFBSSxLQUFLLFNBQ1A7R0FHRixLQUFLLFVBQVU7R0FDZixLQUFLLE9BQU8sSUFBSSxTQUFTLEtBQUssVUFBVTtHQUN4QyxLQUFLLE9BQU8sSUFBSSxTQUFTLEtBQUssVUFBVTtHQUN4QyxLQUFLLG1CQUFtQjtHQUV4QixLQUFLLE1BQU0sSUFBSTtJQUNiLE9BQU87SUFDUCxNQUFNO0dBQ1IsQ0FBQztHQUVELE1BQU0sSUFBSSxTQUFTLFlBQVksV0FBVyxTQUFTLEdBQUcsQ0FBQztHQUN2RCxLQUFLLE1BQU0sSUFBSSxJQUFJO0VBQ3JCO0NBQ0YifQ==
70
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3NlLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdHJlYW0vc3NlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgRmFzdGlmeVJlcGx5LCB0eXBlIEZhc3RpZnlSZXF1ZXN0IH0gZnJvbSBcImZhc3RpZnlcIjtcbmltcG9ydCB7IHR5cGUgeiB9IGZyb20gXCJ6b2RcIjtcblxuLy8gTk9URShIYXplLCAyNTExMDYpOiBjb250ZXh0IHByb3ZpZGVy7JeQ7IScIOyduOyekOulvCDssYTsm4zso7zrqbQgY3JlYXRlU1NFKGV2ZW50cynrp4zsnLzroZwg7IKs7JqpIOqwgOuKpVxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVNTRUZhY3Rvcnk8VCBleHRlbmRzIHouWm9kT2JqZWN0PihcbiAgc29ja2V0OiBGYXN0aWZ5UmVxdWVzdFtcInNvY2tldFwiXSxcbiAgcmVwbHk6IEZhc3RpZnlSZXBseSxcbiAgX2V2ZW50czogVCxcbik6IFNTRUNvbm5lY3Rpb248VD4ge1xuICByZXR1cm4gbmV3IFNTRUNvbm5lY3Rpb25JbXBsPFQ+KHNvY2tldCwgcmVwbHkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTW9ja1NTRUZhY3Rvcnk8VCBleHRlbmRzIHouWm9kT2JqZWN0PihfZXZlbnRzOiBUKTogU1NFQ29ubmVjdGlvbjxUPiB7XG4gIHJldHVybiB7XG4gICAgZ2V0IGNsb3NlZCgpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9LFxuICAgIG9uQ2xvc2U6IChfY2FsbGJhY2spID0+IHt9LFxuICAgIHB1Ymxpc2g6IChfZXZlbnQsIF9kYXRhKSA9PiB7fSxcbiAgICBlbmQ6ICgpID0+IFByb21pc2UucmVzb2x2ZSgpLFxuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNTRUNvbm5lY3Rpb248VCBleHRlbmRzIHouWm9kT2JqZWN0PiB7XG4gIGdldCBjbG9zZWQoKTogYm9vbGVhbjtcbiAgb25DbG9zZShjYWxsYmFjazogKCkgPT4gdm9pZCk6IHZvaWQ7XG4gIHB1Ymxpc2g8SyBleHRlbmRzIGtleW9mIHouaW5mZXI8VD4+KGV2ZW50OiBLLCBkYXRhOiB6LmluZmVyPFQ+W0tdKTogdm9pZDtcbiAgZW5kKCk6IFByb21pc2U8dm9pZD47XG59XG5cbmNsYXNzIFNTRUNvbm5lY3Rpb25JbXBsPFQgZXh0ZW5kcyB6LlpvZE9iamVjdD4gaW1wbGVtZW50cyBTU0VDb25uZWN0aW9uPFQ+IHtcbiAgcHJpdmF0ZSBjbG9zZWRTdGF0ZSA9IGZhbHNlO1xuICBwcml2YXRlIGNsb3NlQ2FsbGJhY2tzOiBBcnJheTwoKSA9PiB2b2lkPiA9IFtdO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgbWFya0Nsb3NlZCA9ICgpID0+IHtcbiAgICB0aGlzLmNsb3NlZFN0YXRlID0gdHJ1ZTtcbiAgICB0aGlzLmZpcmVDbG9zZUNhbGxiYWNrcygpO1xuICB9O1xuXG4gIGdldCBjbG9zZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY2xvc2VkU3RhdGU7XG4gIH1cblxuICBvbkNsb3NlKGNhbGxiYWNrOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5jbG9zZUNhbGxiYWNrcy5wdXNoKGNhbGxiYWNrKTtcbiAgfVxuXG4gIC8vIOy9nOuwseydhCDtlZwg67KI66eMIOyLpO2Wie2VmOqzoCDrsLDsl7TsnYQg67mE7JuMIOykkeuztSDtmLjstpzsnYQg67Cp7KeAXG4gIHByaXZhdGUgZmlyZUNsb3NlQ2FsbGJhY2tzKCk6IHZvaWQge1xuICAgIGNvbnN0IGNhbGxiYWNrcyA9IHRoaXMuY2xvc2VDYWxsYmFja3M7XG4gICAgdGhpcy5jbG9zZUNhbGxiYWNrcyA9IFtdO1xuICAgIGZvciAoY29uc3QgY2Igb2YgY2FsbGJhY2tzKSB7XG4gICAgICBjYigpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgc29ja2V0OiBGYXN0aWZ5UmVxdWVzdFtcInNvY2tldFwiXSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlcGx5OiBGYXN0aWZ5UmVwbHksXG4gICkge1xuICAgIHRoaXMuc29ja2V0Lm9uKFwiY2xvc2VcIiwgdGhpcy5tYXJrQ2xvc2VkKTtcbiAgICB0aGlzLnNvY2tldC5vbihcImVycm9yXCIsIHRoaXMubWFya0Nsb3NlZCk7XG4gIH1cblxuICBwdWJsaXNoPEsgZXh0ZW5kcyBrZXlvZiB6LmluZmVyPFQ+PihldmVudDogSywgZGF0YTogei5pbmZlcjxUPltLXSk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNsb3NlZFN0YXRlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5yZXBseS5zc2Uoe1xuICAgICAgZXZlbnQ6XG4gICAgICAgIC8qIFNBRkVUWTog65Ox66Gd65CcIFdlYlNvY2tldCDsnbTrsqTtirgg7Iqk7YKk66eI6rCAIOydtCDqsJLsnZgg7YOA7J6F7J2EIOuztOyepe2VnOuLpC4gKi8gZXZlbnQgYXMgc3RyaW5nLFxuICAgICAgZGF0YTogSlNPTi5zdHJpbmdpZnkoZGF0YSksXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBlbmQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuY2xvc2VkU3RhdGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmNsb3NlZFN0YXRlID0gdHJ1ZTtcbiAgICB0aGlzLnNvY2tldC5vZmYoXCJjbG9zZVwiLCB0aGlzLm1hcmtDbG9zZWQpO1xuICAgIHRoaXMuc29ja2V0Lm9mZihcImVycm9yXCIsIHRoaXMubWFya0Nsb3NlZCk7XG4gICAgdGhpcy5maXJlQ2xvc2VDYWxsYmFja3MoKTtcblxuICAgIHRoaXMucmVwbHkuc3NlKHtcbiAgICAgIGV2ZW50OiBcImVuZFwiLFxuICAgICAgZGF0YTogXCJFTkRcIixcbiAgICB9KTtcblxuICAgIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIDIwMCkpO1xuICAgIHRoaXMucmVwbHkucmF3LmVuZCgpO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7O0FBSUEsU0FBZ0IsaUJBQ2QsUUFDQSxPQUNBLFNBQ2tCO0NBQ2xCLE9BQU8sSUFBSSxrQkFBcUIsUUFBUSxLQUFLO0FBQy9DO0FBRUEsU0FBZ0IscUJBQTRDLFNBQThCO0NBQ3hGLE9BQU87RUFDTCxJQUFJLFNBQVM7R0FDWCxPQUFPO0VBQ1Q7RUFDQSxVQUFVLGNBQWMsQ0FBQztFQUN6QixVQUFVLFFBQVEsVUFBVSxDQUFDO0VBQzdCLFdBQVcsUUFBUSxRQUFRO0NBQzdCO0FBQ0Y7OztDQVNNLG9CQUFOLE1BQTJFO0VBMkJ0RDtFQUNBO0VBM0JuQixjQUFzQjtFQUN0QixpQkFBNEMsQ0FBQztFQUU3QyxtQkFBb0M7R0FDbEMsS0FBSyxjQUFjO0dBQ25CLEtBQUssbUJBQW1CO0VBQzFCO0VBRUEsSUFBSSxTQUFrQjtHQUNwQixPQUFPLEtBQUs7RUFDZDtFQUVBLFFBQVEsVUFBNEI7R0FDbEMsS0FBSyxlQUFlLEtBQUssUUFBUTtFQUNuQztFQUdBLHFCQUFtQztHQUNqQyxNQUFNLFlBQVksS0FBSztHQUN2QixLQUFLLGlCQUFpQixDQUFDO0dBQ3ZCLEtBQUssTUFBTSxNQUFNLFdBQ2YsR0FBRztFQUVQO0VBRUEsWUFDRSxRQUNBLE9BQ0E7R0FGaUIsS0FBQSxTQUFBO0dBQ0EsS0FBQSxRQUFBO0dBRWpCLEtBQUssT0FBTyxHQUFHLFNBQVMsS0FBSyxVQUFVO0dBQ3ZDLEtBQUssT0FBTyxHQUFHLFNBQVMsS0FBSyxVQUFVO0VBQ3pDO0VBRUEsUUFBb0MsT0FBVSxNQUEyQjtHQUN2RSxJQUFJLEtBQUssYUFDUDtHQUdGLEtBQUssTUFBTSxJQUFJO0lBRXlDO0lBQ3RELE1BQU0sS0FBSyxVQUFVLElBQUk7R0FDM0IsQ0FBQztFQUNIO0VBRUEsTUFBTSxNQUFxQjtHQUN6QixJQUFJLEtBQUssYUFDUDtHQUdGLEtBQUssY0FBYztHQUNuQixLQUFLLE9BQU8sSUFBSSxTQUFTLEtBQUssVUFBVTtHQUN4QyxLQUFLLE9BQU8sSUFBSSxTQUFTLEtBQUssVUFBVTtHQUN4QyxLQUFLLG1CQUFtQjtHQUV4QixLQUFLLE1BQU0sSUFBSTtJQUNiLE9BQU87SUFDUCxNQUFNO0dBQ1IsQ0FBQztHQUVELE1BQU0sSUFBSSxTQUFTLFlBQVksV0FBVyxTQUFTLEdBQUcsQ0FBQztHQUN2RCxLQUFLLE1BQU0sSUFBSSxJQUFJO0VBQ3JCO0NBQ0YifQ==
@@ -5,7 +5,7 @@ export interface ManagedWebSocketConnection {
5
5
  namespace: string;
6
6
  closed: boolean;
7
7
  readonly userId?: string;
8
- publishUntyped(event: string, data: unknown): void;
8
+ publishUntyped<Data>(event: string, data: Data): void;
9
9
  close(code?: number, reason?: string): void;
10
10
  }
11
11
  export type WebSocketRegistryStats = {
@@ -1 +1 @@
1
- {"version":3,"file":"ws-core.d.ts","sourceRoot":"","sources":["../../src/stream/ws-core.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,MAAM,CAAC;AAC9C,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC;AAErC,MAAM,WAAW,0BAA0B;IACzC,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAEhB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IACnD,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7C;AAED,MAAM,MAAM,sBAAsB,GAAG;IACnC,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACrC,CAAC"}
1
+ {"version":3,"file":"ws-core.d.ts","sourceRoot":"","sources":["../../src/stream/ws-core.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,MAAM,CAAC;AAC9C,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC;AAErC,MAAM,WAAW,0BAA0B;IACzC,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAEhB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IACtD,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7C;AAED,MAAM,MAAM,sBAAsB,GAAG;IACnC,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACrC,CAAC"}
@@ -17,7 +17,7 @@ export declare class WebSocketDeliveryEngine {
17
17
  clusterBus: WebSocketClusterBus;
18
18
  telemetryController?: WebSocketTelemetryController;
19
19
  });
20
- publishToAudience(audience: WebSocketAudience, event: string, data: unknown): void;
20
+ publishToAudience<Data>(audience: WebSocketAudience, event: string, data: Data): void;
21
21
  shutdown(): Promise<void>;
22
22
  getTelemetrySnapshot(): {
23
23
  pendingFanOutJobs: number;
@@ -1 +1 @@
1
- {"version":3,"file":"ws-delivery.d.ts","sourceRoot":"","sources":["../../src/stream/ws-delivery.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,KAAK,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AACxE,OAAO,EAAE,KAAK,mBAAmB,EAAiC,MAAM,kBAAkB,CAAC;AAE3F,OAAO,EAAE,KAAK,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AACjF,OAAO,EAEL,KAAK,4BAA4B,EAClC,MAAM,gBAAgB,CAAC;AAKxB,qBAAa,uBAAuB;IAahC,OAAO,CAAC,QAAQ,CAAC,OAAO;IAZ1B,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAK1B;IACR,OAAO,CAAC,oBAAoB,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAa;IACzC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA+B;IACzD,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAa;gBAGjC,OAAO,EAAE;QACxB,MAAM,EAAE,MAAM,CAAC;QACf,gBAAgB,EAAE,6BAA6B,CAAC;QAChD,gBAAgB,EAAE,yBAAyB,CAAC;QAC5C,UAAU,EAAE,mBAAmB,CAAC;QAChC,mBAAmB,CAAC,EAAE,4BAA4B,CAAC;KACpD;IAWH,iBAAiB,CAAC,QAAQ,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI;IA0E5E,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAM/B,oBAAoB,IAAI;QAAE,iBAAiB,EAAE,MAAM,CAAC;QAAC,oBAAoB,EAAE,MAAM,CAAA;KAAE;IAanF,OAAO,CAAC,qBAAqB;IA+C7B,OAAO,CAAC,aAAa;IAmBrB,OAAO,CAAC,mBAAmB;IAY3B,OAAO,CAAC,eAAe;IA8CvB,OAAO,CAAC,WAAW;CAiBpB"}
1
+ {"version":3,"file":"ws-delivery.d.ts","sourceRoot":"","sources":["../../src/stream/ws-delivery.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,KAAK,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AACxE,OAAO,EAAE,KAAK,mBAAmB,EAAiC,MAAM,kBAAkB,CAAC;AAE3F,OAAO,EAAE,KAAK,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AACjF,OAAO,EAEL,KAAK,4BAA4B,EAClC,MAAM,gBAAgB,CAAC;AAKxB,qBAAa,uBAAuB;IAahC,OAAO,CAAC,QAAQ,CAAC,OAAO;IAZ1B,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAK1B;IACR,OAAO,CAAC,oBAAoB,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAa;IACzC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA+B;IACzD,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAa;gBAGjC,OAAO,EAAE;QACxB,MAAM,EAAE,MAAM,CAAC;QACf,gBAAgB,EAAE,6BAA6B,CAAC;QAChD,gBAAgB,EAAE,yBAAyB,CAAC;QAC5C,UAAU,EAAE,mBAAmB,CAAC;QAChC,mBAAmB,CAAC,EAAE,4BAA4B,CAAC;KACpD;IAWH,iBAAiB,CAAC,IAAI,EAAE,QAAQ,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI;IA0E/E,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAM/B,oBAAoB;;;;IAapB,OAAO,CAAC,qBAAqB;IA+C7B,OAAO,CAAC,aAAa;IAuBrB,OAAO,CAAC,mBAAmB;IAY3B,OAAO,CAAC,eAAe;IA8CvB,OAAO,CAAC,WAAW;CAqBpB"}
@@ -1,9 +1,11 @@
1
1
  import { __esmMin } from "../_virtual/_rolldown/runtime.js";
2
+ import { init_runtime_type, runtimeTypeOf } from "../runtime-type.js";
2
3
  import { NoopWebSocketTelemetryController, init_ws_telemetry } from "./ws-telemetry.js";
3
4
  import { randomUUID } from "node:crypto";
4
5
  //#region src/stream/ws-delivery.ts
5
6
  var FAN_OUT_BATCH_SIZE, WebSocketDeliveryEngine;
6
7
  var init_ws_delivery = __esmMin((() => {
8
+ init_runtime_type();
7
9
  init_ws_telemetry();
8
10
  FAN_OUT_BATCH_SIZE = 250;
9
11
  WebSocketDeliveryEngine = class {
@@ -71,7 +73,7 @@ var init_ws_delivery = __esmMin((() => {
71
73
  targetNodeCount: routingPlan.remoteNodeIds.length
72
74
  }
73
75
  });
74
- }).catch((error) => {
76
+ }).catch((cause) => {
75
77
  const durationMs = performance.now() - publishStartedAt;
76
78
  this.telemetry.emit({
77
79
  name: "ws.cluster.envelope.failed",
@@ -84,7 +86,7 @@ var init_ws_delivery = __esmMin((() => {
84
86
  durationMs,
85
87
  status: "error",
86
88
  attributes: { event },
87
- errorType: error instanceof Error ? error.name : typeof error
89
+ errorType: cause instanceof Error ? cause.name : runtimeTypeOf(cause)
88
90
  });
89
91
  });
90
92
  }
@@ -191,7 +193,7 @@ var init_ws_delivery = __esmMin((() => {
191
193
  }
192
194
  } catch (error) {
193
195
  status = "error";
194
- errorType = error instanceof Error ? error.name : typeof error;
196
+ errorType = error instanceof Error ? error.name : runtimeTypeOf(error);
195
197
  throw error;
196
198
  } finally {
197
199
  const durationMs = performance.now() - startedAt;
@@ -232,4 +234,4 @@ var init_ws_delivery = __esmMin((() => {
232
234
  init_ws_delivery();
233
235
  export { WebSocketDeliveryEngine, init_ws_delivery };
234
236
 
235
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3MtZGVsaXZlcnkuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N0cmVhbS93cy1kZWxpdmVyeS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByYW5kb21VVUlEIH0gZnJvbSBcIm5vZGU6Y3J5cHRvXCI7XG5cbmltcG9ydCB7IHR5cGUgV2ViU29ja2V0QXVkaWVuY2UgfSBmcm9tIFwiLi93cy1hdWRpZW5jZVwiO1xuaW1wb3J0IHsgdHlwZSBXZWJTb2NrZXRBdWRpZW5jZVJlc29sdmVyIH0gZnJvbSBcIi4vd3MtYXVkaWVuY2UtcmVzb2x2ZXJcIjtcbmltcG9ydCB7IHR5cGUgV2ViU29ja2V0Q2x1c3RlckJ1cywgdHlwZSBXZWJTb2NrZXRDbHVzdGVyRW52ZWxvcGUgfSBmcm9tIFwiLi93cy1jbHVzdGVyLWJ1c1wiO1xuaW1wb3J0IHsgdHlwZSBNYW5hZ2VkV2ViU29ja2V0Q29ubmVjdGlvbiB9IGZyb20gXCIuL3dzLWNvcmVcIjtcbmltcG9ydCB7IHR5cGUgV2ViU29ja2V0TG9jYWxDb25uZWN0aW9uU3RvcmUgfSBmcm9tIFwiLi93cy1sb2NhbC1jb25uZWN0aW9uLXN0b3JlXCI7XG5pbXBvcnQge1xuICBOb29wV2ViU29ja2V0VGVsZW1ldHJ5Q29udHJvbGxlcixcbiAgdHlwZSBXZWJTb2NrZXRUZWxlbWV0cnlDb250cm9sbGVyLFxufSBmcm9tIFwiLi93cy10ZWxlbWV0cnlcIjtcblxuLy8gZmFuLW91dOydhCBldmVudCBsb29wIHRpY2sg64uo7JyE66GcIOuCmOuIoCDtlZwg67KI7JeQIOq4tCDrj5nquLAg66Oo7ZSE66W8IOunjOuTpOyngCDslYrqsowg7ZWoXG5jb25zdCBGQU5fT1VUX0JBVENIX1NJWkUgPSAyNTA7XG5cbmV4cG9ydCBjbGFzcyBXZWJTb2NrZXREZWxpdmVyeUVuZ2luZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgcGVuZGluZ0Zhbk91dEpvYnM6IEFycmF5PHtcbiAgICB0YXJnZXRzOiBNYW5hZ2VkV2ViU29ja2V0Q29ubmVjdGlvbltdO1xuICAgIGV2ZW50OiBzdHJpbmc7XG4gICAgZGF0YTogdW5rbm93bjtcbiAgICBjdXJzb3I6IG51bWJlcjtcbiAgfT4gPSBbXTtcbiAgcHJpdmF0ZSBmYW5PdXRGbHVzaFNjaGVkdWxlZCA9IGZhbHNlO1xuICBwcml2YXRlIHJlYWRvbmx5IHVuc3Vic2NyaWJlOiAoKSA9PiB2b2lkO1xuICBwcml2YXRlIHJlYWRvbmx5IHRlbGVtZXRyeTogV2ViU29ja2V0VGVsZW1ldHJ5Q29udHJvbGxlcjtcbiAgcHJpdmF0ZSByZWFkb25seSB1bnJlZ2lzdGVyTWV0cmljU291cmNlOiAoKSA9PiB2b2lkO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgb3B0aW9uczoge1xuICAgICAgbm9kZUlkOiBzdHJpbmc7XG4gICAgICBsb2NhbENvbm5lY3Rpb25zOiBXZWJTb2NrZXRMb2NhbENvbm5lY3Rpb25TdG9yZTtcbiAgICAgIGF1ZGllbmNlUmVzb2x2ZXI6IFdlYlNvY2tldEF1ZGllbmNlUmVzb2x2ZXI7XG4gICAgICBjbHVzdGVyQnVzOiBXZWJTb2NrZXRDbHVzdGVyQnVzO1xuICAgICAgdGVsZW1ldHJ5Q29udHJvbGxlcj86IFdlYlNvY2tldFRlbGVtZXRyeUNvbnRyb2xsZXI7XG4gICAgfSxcbiAgKSB7XG4gICAgdGhpcy50ZWxlbWV0cnkgPSB0aGlzLm9wdGlvbnMudGVsZW1ldHJ5Q29udHJvbGxlciA/PyBuZXcgTm9vcFdlYlNvY2tldFRlbGVtZXRyeUNvbnRyb2xsZXIoKTtcbiAgICB0aGlzLnVuc3Vic2NyaWJlID0gdGhpcy5vcHRpb25zLmNsdXN0ZXJCdXMuc3Vic2NyaWJlKChlbnZlbG9wZSkgPT4ge1xuICAgICAgdGhpcy5oYW5kbGVDbHVzdGVyRW52ZWxvcGUoZW52ZWxvcGUpO1xuICAgIH0pO1xuICAgIHRoaXMudW5yZWdpc3Rlck1ldHJpY1NvdXJjZSA9IHRoaXMudGVsZW1ldHJ5LnJlZ2lzdGVyTWV0cmljU291cmNlKHtcbiAgICAgIGNvbGxlY3Q6ICgpID0+IHRoaXMuZ2V0VGVsZW1ldHJ5U25hcHNob3QoKSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1Ymxpc2hUb0F1ZGllbmNlKGF1ZGllbmNlOiBXZWJTb2NrZXRBdWRpZW5jZSwgZXZlbnQ6IHN0cmluZywgZGF0YTogdW5rbm93bik6IHZvaWQge1xuICAgIGNvbnN0IHJvdXRpbmdQbGFuID0gdGhpcy5vcHRpb25zLmF1ZGllbmNlUmVzb2x2ZXIucmVzb2x2ZShhdWRpZW5jZSk7XG4gICAgY29uc3QgbG9jYWxUYXJnZXRzID0gdGhpcy5vcHRpb25zLmxvY2FsQ29ubmVjdGlvbnMuZ2V0Q29ubmVjdGlvbnMocm91dGluZ1BsYW4ubG9jYWxTZXNzaW9uSWRzKTtcblxuICAgIHRoaXMudGVsZW1ldHJ5LmVtaXQoe1xuICAgICAgbmFtZTogXCJ3cy5mYW5vdXQucmVzb2x2ZWRcIixcbiAgICAgIGxldmVsOiBcImRlYnVnXCIsXG4gICAgICBkZXRhaWw6IHtcbiAgICAgICAgbG9jYWxUYXJnZXRDb3VudDogbG9jYWxUYXJnZXRzLmxlbmd0aCxcbiAgICAgICAgcmVtb3RlTm9kZUNvdW50OiByb3V0aW5nUGxhbi5yZW1vdGVOb2RlSWRzLmxlbmd0aCxcbiAgICAgIH0sXG4gICAgfSk7XG4gICAgdGhpcy50ZWxlbWV0cnkucmVjb3JkTWV0cmljKHtcbiAgICAgIG5hbWU6IFwic29uYW11LndzLmZhbm91dC50YXJnZXRzXCIsXG4gICAgICBraW5kOiBcImhpc3RvZ3JhbVwiLFxuICAgICAgdmFsdWU6IGxvY2FsVGFyZ2V0cy5sZW5ndGggKyByb3V0aW5nUGxhbi5yZW1vdGVOb2RlSWRzLmxlbmd0aCxcbiAgICAgIHVuaXQ6IFwiMVwiLFxuICAgICAgdGFnczogeyBhdWRpZW5jZV90eXBlOiBhdWRpZW5jZS50eXBlIH0sXG4gICAgfSk7XG5cbiAgICB0aGlzLmVucXVldWVGYW5PdXQobG9jYWxUYXJnZXRzLCBldmVudCwgZGF0YSk7XG5cbiAgICBpZiAocm91dGluZ1BsYW4ucmVtb3RlTm9kZUlkcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBlbnZlbG9wZTogV2ViU29ja2V0Q2x1c3RlckVudmVsb3BlID0ge1xuICAgICAgaWQ6IHJhbmRvbVVVSUQoKSxcbiAgICAgIHNvdXJjZU5vZGVJZDogdGhpcy5vcHRpb25zLm5vZGVJZCxcbiAgICAgIHRhcmdldE5vZGVJZHM6IHJvdXRpbmdQbGFuLnJlbW90ZU5vZGVJZHMsXG4gICAgICBhdWRpZW5jZSxcbiAgICAgIGV2ZW50LFxuICAgICAgZGF0YSxcbiAgICAgIGVtaXR0ZWRBdDogRGF0ZS5ub3coKSxcbiAgICB9O1xuXG4gICAgY29uc3QgcHVibGlzaFN0YXJ0ZWRBdCA9IHBlcmZvcm1hbmNlLm5vdygpO1xuICAgIFByb21pc2UucmVzb2x2ZSh0aGlzLm9wdGlvbnMuY2x1c3RlckJ1cy5wdWJsaXNoKGVudmVsb3BlKSlcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgY29uc3QgZHVyYXRpb25NcyA9IHBlcmZvcm1hbmNlLm5vdygpIC0gcHVibGlzaFN0YXJ0ZWRBdDtcbiAgICAgICAgdGhpcy50ZWxlbWV0cnkuZW1pdCh7XG4gICAgICAgICAgbmFtZTogXCJ3cy5jbHVzdGVyLmVudmVsb3BlLnB1Ymxpc2hlZFwiLFxuICAgICAgICAgIGxldmVsOiBcImRlYnVnXCIsXG4gICAgICAgICAgZGV0YWlsOiB7IGV2ZW50LCB0YXJnZXROb2RlQ291bnQ6IHJvdXRpbmdQbGFuLnJlbW90ZU5vZGVJZHMubGVuZ3RoIH0sXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnRlbGVtZXRyeS5yZWNvcmRTcGFuKHtcbiAgICAgICAgICBvcGVyYXRpb25OYW1lOiBcIndzLmNsdXN0ZXIucHVibGlzaFwiLFxuICAgICAgICAgIGtpbmQ6IFwicHJvZHVjZXJcIixcbiAgICAgICAgICBkdXJhdGlvbk1zLFxuICAgICAgICAgIHN0YXR1czogXCJ1bnNldFwiLFxuICAgICAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICAgIGV2ZW50LFxuICAgICAgICAgICAgdGFyZ2V0Tm9kZUNvdW50OiByb3V0aW5nUGxhbi5yZW1vdGVOb2RlSWRzLmxlbmd0aCxcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGVycm9yOiB1bmtub3duKSA9PiB7XG4gICAgICAgIGNvbnN0IGR1cmF0aW9uTXMgPSBwZXJmb3JtYW5jZS5ub3coKSAtIHB1Ymxpc2hTdGFydGVkQXQ7XG4gICAgICAgIHRoaXMudGVsZW1ldHJ5LmVtaXQoe1xuICAgICAgICAgIG5hbWU6IFwid3MuY2x1c3Rlci5lbnZlbG9wZS5mYWlsZWRcIixcbiAgICAgICAgICBsZXZlbDogXCJlcnJvclwiLFxuICAgICAgICAgIGRldGFpbDogeyBldmVudCB9LFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy50ZWxlbWV0cnkucmVjb3JkU3Bhbih7XG4gICAgICAgICAgb3BlcmF0aW9uTmFtZTogXCJ3cy5jbHVzdGVyLnB1Ymxpc2hcIixcbiAgICAgICAgICBraW5kOiBcInByb2R1Y2VyXCIsXG4gICAgICAgICAgZHVyYXRpb25NcyxcbiAgICAgICAgICBzdGF0dXM6IFwiZXJyb3JcIixcbiAgICAgICAgICBhdHRyaWJ1dGVzOiB7IGV2ZW50IH0sXG4gICAgICAgICAgZXJyb3JUeXBlOiBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubmFtZSA6IHR5cGVvZiBlcnJvcixcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHNodXRkb3duKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMudW5yZWdpc3Rlck1ldHJpY1NvdXJjZSgpO1xuICAgIHRoaXMudW5zdWJzY3JpYmUoKTtcbiAgICBhd2FpdCB0aGlzLm9wdGlvbnMuY2x1c3RlckJ1cy5zaHV0ZG93bigpO1xuICB9XG5cbiAgZ2V0VGVsZW1ldHJ5U25hcHNob3QoKTogeyBwZW5kaW5nRmFuT3V0Sm9iczogbnVtYmVyOyBwZW5kaW5nRmFuT3V0VGFyZ2V0czogbnVtYmVyIH0ge1xuICAgIGxldCBwZW5kaW5nRmFuT3V0VGFyZ2V0cyA9IDA7XG5cbiAgICBmb3IgKGNvbnN0IGpvYiBvZiB0aGlzLnBlbmRpbmdGYW5PdXRKb2JzKSB7XG4gICAgICBwZW5kaW5nRmFuT3V0VGFyZ2V0cyArPSBNYXRoLm1heChqb2IudGFyZ2V0cy5sZW5ndGggLSBqb2IuY3Vyc29yLCAwKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgcGVuZGluZ0Zhbk91dEpvYnM6IHRoaXMucGVuZGluZ0Zhbk91dEpvYnMubGVuZ3RoLFxuICAgICAgcGVuZGluZ0Zhbk91dFRhcmdldHMsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlQ2x1c3RlckVudmVsb3BlKGVudmVsb3BlOiBXZWJTb2NrZXRDbHVzdGVyRW52ZWxvcGUpOiB2b2lkIHtcbiAgICBpZiAoZW52ZWxvcGUuc291cmNlTm9kZUlkID09PSB0aGlzLm9wdGlvbnMubm9kZUlkKSB7XG4gICAgICB0aGlzLnRlbGVtZXRyeS5lbWl0KHtcbiAgICAgICAgbmFtZTogXCJ3cy5jbHVzdGVyLmVudmVsb3BlLmlnbm9yZWRcIixcbiAgICAgICAgbGV2ZWw6IFwiZGVidWdcIixcbiAgICAgICAgZGV0YWlsOiB7IHJlYXNvbjogXCJzZWxmU291cmNlXCIsIGV2ZW50OiBlbnZlbG9wZS5ldmVudCB9LFxuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgZW52ZWxvcGUudGFyZ2V0Tm9kZUlkcyAmJlxuICAgICAgZW52ZWxvcGUudGFyZ2V0Tm9kZUlkcy5sZW5ndGggPiAwICYmXG4gICAgICAhZW52ZWxvcGUudGFyZ2V0Tm9kZUlkcy5pbmNsdWRlcyh0aGlzLm9wdGlvbnMubm9kZUlkKVxuICAgICkge1xuICAgICAgdGhpcy50ZWxlbWV0cnkuZW1pdCh7XG4gICAgICAgIG5hbWU6IFwid3MuY2x1c3Rlci5lbnZlbG9wZS5pZ25vcmVkXCIsXG4gICAgICAgIGxldmVsOiBcImRlYnVnXCIsXG4gICAgICAgIGRldGFpbDogeyByZWFzb246IFwidGFyZ2V0TWlzbWF0Y2hcIiwgZXZlbnQ6IGVudmVsb3BlLmV2ZW50IH0sXG4gICAgICB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBzdGFydGVkQXQgPSBwZXJmb3JtYW5jZS5ub3coKTtcbiAgICB0aGlzLnRlbGVtZXRyeS5lbWl0KHtcbiAgICAgIG5hbWU6IFwid3MuY2x1c3Rlci5lbnZlbG9wZS5yZWNlaXZlZFwiLFxuICAgICAgbGV2ZWw6IFwiZGVidWdcIixcbiAgICAgIGRldGFpbDogeyBldmVudDogZW52ZWxvcGUuZXZlbnQsIHNvdXJjZU5vZGVJZDogZW52ZWxvcGUuc291cmNlTm9kZUlkIH0sXG4gICAgfSk7XG5cbiAgICBjb25zdCByb3V0aW5nUGxhbiA9IHRoaXMub3B0aW9ucy5hdWRpZW5jZVJlc29sdmVyLnJlc29sdmUoZW52ZWxvcGUuYXVkaWVuY2UpO1xuICAgIGNvbnN0IGxvY2FsVGFyZ2V0cyA9IHRoaXMub3B0aW9ucy5sb2NhbENvbm5lY3Rpb25zLmdldENvbm5lY3Rpb25zKHJvdXRpbmdQbGFuLmxvY2FsU2Vzc2lvbklkcyk7XG4gICAgdGhpcy5lbnF1ZXVlRmFuT3V0KGxvY2FsVGFyZ2V0cywgZW52ZWxvcGUuZXZlbnQsIGVudmVsb3BlLmRhdGEpO1xuXG4gICAgdGhpcy50ZWxlbWV0cnkucmVjb3JkU3Bhbih7XG4gICAgICBvcGVyYXRpb25OYW1lOiBcIndzLmNsdXN0ZXIucmVjZWl2ZVwiLFxuICAgICAga2luZDogXCJjb25zdW1lclwiLFxuICAgICAgZHVyYXRpb25NczogcGVyZm9ybWFuY2Uubm93KCkgLSBzdGFydGVkQXQsXG4gICAgICBzdGF0dXM6IFwidW5zZXRcIixcbiAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgZXZlbnQ6IGVudmVsb3BlLmV2ZW50LFxuICAgICAgICBzb3VyY2VOb2RlSWQ6IGVudmVsb3BlLnNvdXJjZU5vZGVJZCxcbiAgICAgICAgbG9jYWxUYXJnZXRDb3VudDogbG9jYWxUYXJnZXRzLmxlbmd0aCxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGVucXVldWVGYW5PdXQodGFyZ2V0czogTWFuYWdlZFdlYlNvY2tldENvbm5lY3Rpb25bXSwgZXZlbnQ6IHN0cmluZywgZGF0YTogdW5rbm93bik6IHZvaWQge1xuICAgIGlmICh0YXJnZXRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMucGVuZGluZ0Zhbk91dEpvYnMucHVzaCh7XG4gICAgICB0YXJnZXRzLFxuICAgICAgZXZlbnQsXG4gICAgICBkYXRhLFxuICAgICAgY3Vyc29yOiAwLFxuICAgIH0pO1xuICAgIHRoaXMudGVsZW1ldHJ5LmVtaXQoe1xuICAgICAgbmFtZTogXCJ3cy5mYW5vdXQuZW5xdWV1ZWRcIixcbiAgICAgIGxldmVsOiBcImRlYnVnXCIsXG4gICAgICBkZXRhaWw6IHsgdGFyZ2V0Q291bnQ6IHRhcmdldHMubGVuZ3RoLCBldmVudCB9LFxuICAgIH0pO1xuICAgIHRoaXMuc2NoZWR1bGVGYW5PdXRGbHVzaCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzY2hlZHVsZUZhbk91dEZsdXNoKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmZhbk91dEZsdXNoU2NoZWR1bGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5mYW5PdXRGbHVzaFNjaGVkdWxlZCA9IHRydWU7XG4gICAgc2V0SW1tZWRpYXRlKCgpID0+IHtcbiAgICAgIHRoaXMuZmFuT3V0Rmx1c2hTY2hlZHVsZWQgPSBmYWxzZTtcbiAgICAgIHRoaXMuZmx1c2hGYW5PdXRKb2JzKCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGZsdXNoRmFuT3V0Sm9icygpOiB2b2lkIHtcbiAgICBjb25zdCBzdGFydGVkQXQgPSBwZXJmb3JtYW5jZS5ub3coKTtcbiAgICBsZXQgcHJvY2Vzc2VkID0gMDtcbiAgICBsZXQgc3RhdHVzOiBcInVuc2V0XCIgfCBcImVycm9yXCIgPSBcInVuc2V0XCI7XG4gICAgbGV0IGVycm9yVHlwZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gICAgdHJ5IHtcbiAgICAgIHdoaWxlICh0aGlzLnBlbmRpbmdGYW5PdXRKb2JzLmxlbmd0aCA+IDAgJiYgcHJvY2Vzc2VkIDwgRkFOX09VVF9CQVRDSF9TSVpFKSB7XG4gICAgICAgIGNvbnN0IGpvYiA9IHRoaXMucGVuZGluZ0Zhbk91dEpvYnNbMF07XG5cbiAgICAgICAgd2hpbGUgKGpvYi5jdXJzb3IgPCBqb2IudGFyZ2V0cy5sZW5ndGggJiYgcHJvY2Vzc2VkIDwgRkFOX09VVF9CQVRDSF9TSVpFKSB7XG4gICAgICAgICAgdGhpcy5zYWZlUHVibGlzaChqb2IudGFyZ2V0c1tqb2IuY3Vyc29yXSwgam9iLmV2ZW50LCBqb2IuZGF0YSk7XG4gICAgICAgICAgam9iLmN1cnNvciArPSAxO1xuICAgICAgICAgIHByb2Nlc3NlZCArPSAxO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGpvYi5jdXJzb3IgPj0gam9iLnRhcmdldHMubGVuZ3RoKSB7XG4gICAgICAgICAgdGhpcy5wZW5kaW5nRmFuT3V0Sm9icy5zaGlmdCgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHN0YXR1cyA9IFwiZXJyb3JcIjtcbiAgICAgIGVycm9yVHlwZSA9IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5uYW1lIDogdHlwZW9mIGVycm9yO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGNvbnN0IGR1cmF0aW9uTXMgPSBwZXJmb3JtYW5jZS5ub3coKSAtIHN0YXJ0ZWRBdDtcbiAgICAgIHRoaXMudGVsZW1ldHJ5LmVtaXQoe1xuICAgICAgICBuYW1lOiBcIndzLmZhbm91dC5mbHVzaGVkXCIsXG4gICAgICAgIGxldmVsOiBcImRlYnVnXCIsXG4gICAgICAgIGRldGFpbDogeyBwcm9jZXNzZWRDb3VudDogcHJvY2Vzc2VkIH0sXG4gICAgICB9KTtcbiAgICAgIHRoaXMudGVsZW1ldHJ5LnJlY29yZFNwYW4oe1xuICAgICAgICBvcGVyYXRpb25OYW1lOiBcIndzLmZhbm91dC5kaXNwYXRjaFwiLFxuICAgICAgICBraW5kOiBcImludGVybmFsXCIsXG4gICAgICAgIGR1cmF0aW9uTXMsXG4gICAgICAgIHN0YXR1cyxcbiAgICAgICAgYXR0cmlidXRlczogeyBwcm9jZXNzZWRDb3VudDogcHJvY2Vzc2VkIH0sXG4gICAgICAgIGVycm9yVHlwZSxcbiAgICAgIH0pO1xuXG4gICAgICBpZiAodGhpcy5wZW5kaW5nRmFuT3V0Sm9icy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMuc2NoZWR1bGVGYW5PdXRGbHVzaCgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2FmZVB1Ymxpc2goY29ubmVjdGlvbjogTWFuYWdlZFdlYlNvY2tldENvbm5lY3Rpb24sIGV2ZW50OiBzdHJpbmcsIGRhdGE6IHVua25vd24pOiB2b2lkIHtcbiAgICB0cnkge1xuICAgICAgaWYgKCFjb25uZWN0aW9uLmNsb3NlZCkge1xuICAgICAgICBjb25uZWN0aW9uLnB1Ymxpc2hVbnR5cGVkKGV2ZW50LCBkYXRhKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIHtcbiAgICAgIHRoaXMudGVsZW1ldHJ5LmVtaXQoe1xuICAgICAgICBuYW1lOiBcIndzLmZhbm91dC5wdWJsaXNoLmZhaWxlZFwiLFxuICAgICAgICBsZXZlbDogXCJlcnJvclwiLFxuICAgICAgICBjb25uZWN0aW9uSWQ6IGNvbm5lY3Rpb24uaWQsXG4gICAgICAgIG5hbWVzcGFjZTogY29ubmVjdGlvbi5uYW1lc3BhY2UsXG4gICAgICAgIHVzZXJJZDogY29ubmVjdGlvbi51c2VySWQsXG4gICAgICAgIGRldGFpbDogeyBldmVudCB9LFxuICAgICAgfSk7XG4gICAgICBjb25uZWN0aW9uLmNsb3NlKDEwMTEsIFwiV2ViU29ja2V0IHB1Ymxpc2ggZmFpbGVkXCIpO1xu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
237
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3MtZGVsaXZlcnkuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N0cmVhbS93cy1kZWxpdmVyeS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByYW5kb21VVUlEIH0gZnJvbSBcIm5vZGU6Y3J5cHRvXCI7XG5cbmltcG9ydCB7IHJ1bnRpbWVUeXBlT2YgfSBmcm9tIFwiLi4vcnVudGltZS10eXBlXCI7XG5pbXBvcnQgeyB0eXBlIFdlYlNvY2tldEF1ZGllbmNlIH0gZnJvbSBcIi4vd3MtYXVkaWVuY2VcIjtcbmltcG9ydCB7IHR5cGUgV2ViU29ja2V0QXVkaWVuY2VSZXNvbHZlciB9IGZyb20gXCIuL3dzLWF1ZGllbmNlLXJlc29sdmVyXCI7XG5pbXBvcnQgeyB0eXBlIFdlYlNvY2tldENsdXN0ZXJCdXMsIHR5cGUgV2ViU29ja2V0Q2x1c3RlckVudmVsb3BlIH0gZnJvbSBcIi4vd3MtY2x1c3Rlci1idXNcIjtcbmltcG9ydCB7IHR5cGUgTWFuYWdlZFdlYlNvY2tldENvbm5lY3Rpb24gfSBmcm9tIFwiLi93cy1jb3JlXCI7XG5pbXBvcnQgeyB0eXBlIFdlYlNvY2tldExvY2FsQ29ubmVjdGlvblN0b3JlIH0gZnJvbSBcIi4vd3MtbG9jYWwtY29ubmVjdGlvbi1zdG9yZVwiO1xuaW1wb3J0IHtcbiAgTm9vcFdlYlNvY2tldFRlbGVtZXRyeUNvbnRyb2xsZXIsXG4gIHR5cGUgV2ViU29ja2V0VGVsZW1ldHJ5Q29udHJvbGxlcixcbn0gZnJvbSBcIi4vd3MtdGVsZW1ldHJ5XCI7XG5cbi8vIGZhbi1vdXTsnYQgZXZlbnQgbG9vcCB0aWNrIOuLqOychOuhnCDrgpjriKAg7ZWcIOuyiOyXkCDquLQg64+Z6riwIOujqO2UhOulvCDrp4zrk6Tsp4Ag7JWK6rKMIO2VqFxuY29uc3QgRkFOX09VVF9CQVRDSF9TSVpFID0gMjUwO1xuXG5leHBvcnQgY2xhc3MgV2ViU29ja2V0RGVsaXZlcnlFbmdpbmUge1xuICBwcml2YXRlIHJlYWRvbmx5IHBlbmRpbmdGYW5PdXRKb2JzOiBBcnJheTx7XG4gICAgdGFyZ2V0czogTWFuYWdlZFdlYlNvY2tldENvbm5lY3Rpb25bXTtcbiAgICBldmVudDogc3RyaW5nO1xuICAgIGRhdGE6IHVua25vd247XG4gICAgY3Vyc29yOiBudW1iZXI7XG4gIH0+ID0gW107XG4gIHByaXZhdGUgZmFuT3V0Rmx1c2hTY2hlZHVsZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSByZWFkb25seSB1bnN1YnNjcmliZTogKCkgPT4gdm9pZDtcbiAgcHJpdmF0ZSByZWFkb25seSB0ZWxlbWV0cnk6IFdlYlNvY2tldFRlbGVtZXRyeUNvbnRyb2xsZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgdW5yZWdpc3Rlck1ldHJpY1NvdXJjZTogKCkgPT4gdm9pZDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9wdGlvbnM6IHtcbiAgICAgIG5vZGVJZDogc3RyaW5nO1xuICAgICAgbG9jYWxDb25uZWN0aW9uczogV2ViU29ja2V0TG9jYWxDb25uZWN0aW9uU3RvcmU7XG4gICAgICBhdWRpZW5jZVJlc29sdmVyOiBXZWJTb2NrZXRBdWRpZW5jZVJlc29sdmVyO1xuICAgICAgY2x1c3RlckJ1czogV2ViU29ja2V0Q2x1c3RlckJ1cztcbiAgICAgIHRlbGVtZXRyeUNvbnRyb2xsZXI/OiBXZWJTb2NrZXRUZWxlbWV0cnlDb250cm9sbGVyO1xuICAgIH0sXG4gICkge1xuICAgIHRoaXMudGVsZW1ldHJ5ID0gdGhpcy5vcHRpb25zLnRlbGVtZXRyeUNvbnRyb2xsZXIgPz8gbmV3IE5vb3BXZWJTb2NrZXRUZWxlbWV0cnlDb250cm9sbGVyKCk7XG4gICAgdGhpcy51bnN1YnNjcmliZSA9IHRoaXMub3B0aW9ucy5jbHVzdGVyQnVzLnN1YnNjcmliZSgoZW52ZWxvcGUpID0+IHtcbiAgICAgIHRoaXMuaGFuZGxlQ2x1c3RlckVudmVsb3BlKGVudmVsb3BlKTtcbiAgICB9KTtcbiAgICB0aGlzLnVucmVnaXN0ZXJNZXRyaWNTb3VyY2UgPSB0aGlzLnRlbGVtZXRyeS5yZWdpc3Rlck1ldHJpY1NvdXJjZSh7XG4gICAgICBjb2xsZWN0OiAoKSA9PiB0aGlzLmdldFRlbGVtZXRyeVNuYXBzaG90KCksXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaXNoVG9BdWRpZW5jZTxEYXRhPihhdWRpZW5jZTogV2ViU29ja2V0QXVkaWVuY2UsIGV2ZW50OiBzdHJpbmcsIGRhdGE6IERhdGEpOiB2b2lkIHtcbiAgICBjb25zdCByb3V0aW5nUGxhbiA9IHRoaXMub3B0aW9ucy5hdWRpZW5jZVJlc29sdmVyLnJlc29sdmUoYXVkaWVuY2UpO1xuICAgIGNvbnN0IGxvY2FsVGFyZ2V0cyA9IHRoaXMub3B0aW9ucy5sb2NhbENvbm5lY3Rpb25zLmdldENvbm5lY3Rpb25zKHJvdXRpbmdQbGFuLmxvY2FsU2Vzc2lvbklkcyk7XG5cbiAgICB0aGlzLnRlbGVtZXRyeS5lbWl0KHtcbiAgICAgIG5hbWU6IFwid3MuZmFub3V0LnJlc29sdmVkXCIsXG4gICAgICBsZXZlbDogXCJkZWJ1Z1wiLFxuICAgICAgZGV0YWlsOiB7XG4gICAgICAgIGxvY2FsVGFyZ2V0Q291bnQ6IGxvY2FsVGFyZ2V0cy5sZW5ndGgsXG4gICAgICAgIHJlbW90ZU5vZGVDb3VudDogcm91dGluZ1BsYW4ucmVtb3RlTm9kZUlkcy5sZW5ndGgsXG4gICAgICB9LFxuICAgIH0pO1xuICAgIHRoaXMudGVsZW1ldHJ5LnJlY29yZE1ldHJpYyh7XG4gICAgICBuYW1lOiBcInNvbmFtdS53cy5mYW5vdXQudGFyZ2V0c1wiLFxuICAgICAga2luZDogXCJoaXN0b2dyYW1cIixcbiAgICAgIHZhbHVlOiBsb2NhbFRhcmdldHMubGVuZ3RoICsgcm91dGluZ1BsYW4ucmVtb3RlTm9kZUlkcy5sZW5ndGgsXG4gICAgICB1bml0OiBcIjFcIixcbiAgICAgIHRhZ3M6IHsgYXVkaWVuY2VfdHlwZTogYXVkaWVuY2UudHlwZSB9LFxuICAgIH0pO1xuXG4gICAgdGhpcy5lbnF1ZXVlRmFuT3V0KGxvY2FsVGFyZ2V0cywgZXZlbnQsIGRhdGEpO1xuXG4gICAgaWYgKHJvdXRpbmdQbGFuLnJlbW90ZU5vZGVJZHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZW52ZWxvcGU6IFdlYlNvY2tldENsdXN0ZXJFbnZlbG9wZSA9IHtcbiAgICAgIGlkOiByYW5kb21VVUlEKCksXG4gICAgICBzb3VyY2VOb2RlSWQ6IHRoaXMub3B0aW9ucy5ub2RlSWQsXG4gICAgICB0YXJnZXROb2RlSWRzOiByb3V0aW5nUGxhbi5yZW1vdGVOb2RlSWRzLFxuICAgICAgYXVkaWVuY2UsXG4gICAgICBldmVudCxcbiAgICAgIGRhdGEsXG4gICAgICBlbWl0dGVkQXQ6IERhdGUubm93KCksXG4gICAgfTtcblxuICAgIGNvbnN0IHB1Ymxpc2hTdGFydGVkQXQgPSBwZXJmb3JtYW5jZS5ub3coKTtcbiAgICBQcm9taXNlLnJlc29sdmUodGhpcy5vcHRpb25zLmNsdXN0ZXJCdXMucHVibGlzaChlbnZlbG9wZSkpXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgIGNvbnN0IGR1cmF0aW9uTXMgPSBwZXJmb3JtYW5jZS5ub3coKSAtIHB1Ymxpc2hTdGFydGVkQXQ7XG4gICAgICAgIHRoaXMudGVsZW1ldHJ5LmVtaXQoe1xuICAgICAgICAgIG5hbWU6IFwid3MuY2x1c3Rlci5lbnZlbG9wZS5wdWJsaXNoZWRcIixcbiAgICAgICAgICBsZXZlbDogXCJkZWJ1Z1wiLFxuICAgICAgICAgIGRldGFpbDogeyBldmVudCwgdGFyZ2V0Tm9kZUNvdW50OiByb3V0aW5nUGxhbi5yZW1vdGVOb2RlSWRzLmxlbmd0aCB9LFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy50ZWxlbWV0cnkucmVjb3JkU3Bhbih7XG4gICAgICAgICAgb3BlcmF0aW9uTmFtZTogXCJ3cy5jbHVzdGVyLnB1Ymxpc2hcIixcbiAgICAgICAgICBraW5kOiBcInByb2R1Y2VyXCIsXG4gICAgICAgICAgZHVyYXRpb25NcyxcbiAgICAgICAgICBzdGF0dXM6IFwidW5zZXRcIixcbiAgICAgICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgICAgICBldmVudCxcbiAgICAgICAgICAgIHRhcmdldE5vZGVDb3VudDogcm91dGluZ1BsYW4ucmVtb3RlTm9kZUlkcy5sZW5ndGgsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChjYXVzZTogdW5rbm93bikgPT4ge1xuICAgICAgICBjb25zdCBkdXJhdGlvbk1zID0gcGVyZm9ybWFuY2Uubm93KCkgLSBwdWJsaXNoU3RhcnRlZEF0O1xuICAgICAgICB0aGlzLnRlbGVtZXRyeS5lbWl0KHtcbiAgICAgICAgICBuYW1lOiBcIndzLmNsdXN0ZXIuZW52ZWxvcGUuZmFpbGVkXCIsXG4gICAgICAgICAgbGV2ZWw6IFwiZXJyb3JcIixcbiAgICAgICAgICBkZXRhaWw6IHsgZXZlbnQgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMudGVsZW1ldHJ5LnJlY29yZFNwYW4oe1xuICAgICAgICAgIG9wZXJhdGlvbk5hbWU6IFwid3MuY2x1c3Rlci5wdWJsaXNoXCIsXG4gICAgICAgICAga2luZDogXCJwcm9kdWNlclwiLFxuICAgICAgICAgIGR1cmF0aW9uTXMsXG4gICAgICAgICAgc3RhdHVzOiBcImVycm9yXCIsXG4gICAgICAgICAgYXR0cmlidXRlczogeyBldmVudCB9LFxuICAgICAgICAgIGVycm9yVHlwZTogY2F1c2UgaW5zdGFuY2VvZiBFcnJvciA/IGNhdXNlLm5hbWUgOiBydW50aW1lVHlwZU9mKGNhdXNlKSxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHNodXRkb3duKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMudW5yZWdpc3Rlck1ldHJpY1NvdXJjZSgpO1xuICAgIHRoaXMudW5zdWJzY3JpYmUoKTtcbiAgICBhd2FpdCB0aGlzLm9wdGlvbnMuY2x1c3RlckJ1cy5zaHV0ZG93bigpO1xuICB9XG5cbiAgZ2V0VGVsZW1ldHJ5U25hcHNob3QoKSB7XG4gICAgbGV0IHBlbmRpbmdGYW5PdXRUYXJnZXRzID0gMDtcblxuICAgIGZvciAoY29uc3Qgam9iIG9mIHRoaXMucGVuZGluZ0Zhbk91dEpvYnMpIHtcbiAgICAgIHBlbmRpbmdGYW5PdXRUYXJnZXRzICs9IE1hdGgubWF4KGpvYi50YXJnZXRzLmxlbmd0aCAtIGpvYi5jdXJzb3IsIDApO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBwZW5kaW5nRmFuT3V0Sm9iczogdGhpcy5wZW5kaW5nRmFuT3V0Sm9icy5sZW5ndGgsXG4gICAgICBwZW5kaW5nRmFuT3V0VGFyZ2V0cyxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVDbHVzdGVyRW52ZWxvcGUoZW52ZWxvcGU6IFdlYlNvY2tldENsdXN0ZXJFbnZlbG9wZSk6IHZvaWQge1xuICAgIGlmIChlbnZlbG9wZS5zb3VyY2VOb2RlSWQgPT09IHRoaXMub3B0aW9ucy5ub2RlSWQpIHtcbiAgICAgIHRoaXMudGVsZW1ldHJ5LmVtaXQoe1xuICAgICAgICBuYW1lOiBcIndzLmNsdXN0ZXIuZW52ZWxvcGUuaWdub3JlZFwiLFxuICAgICAgICBsZXZlbDogXCJkZWJ1Z1wiLFxuICAgICAgICBkZXRhaWw6IHsgcmVhc29uOiBcInNlbGZTb3VyY2VcIiwgZXZlbnQ6IGVudmVsb3BlLmV2ZW50IH0sXG4gICAgICB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBlbnZlbG9wZS50YXJnZXROb2RlSWRzICYmXG4gICAgICBlbnZlbG9wZS50YXJnZXROb2RlSWRzLmxlbmd0aCA+IDAgJiZcbiAgICAgICFlbnZlbG9wZS50YXJnZXROb2RlSWRzLmluY2x1ZGVzKHRoaXMub3B0aW9ucy5ub2RlSWQpXG4gICAgKSB7XG4gICAgICB0aGlzLnRlbGVtZXRyeS5lbWl0KHtcbiAgICAgICAgbmFtZTogXCJ3cy5jbHVzdGVyLmVudmVsb3BlLmlnbm9yZWRcIixcbiAgICAgICAgbGV2ZWw6IFwiZGVidWdcIixcbiAgICAgICAgZGV0YWlsOiB7IHJlYXNvbjogXCJ0YXJnZXRNaXNtYXRjaFwiLCBldmVudDogZW52ZWxvcGUuZXZlbnQgfSxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHN0YXJ0ZWRBdCA9IHBlcmZvcm1hbmNlLm5vdygpO1xuICAgIHRoaXMudGVsZW1ldHJ5LmVtaXQoe1xuICAgICAgbmFtZTogXCJ3cy5jbHVzdGVyLmVudmVsb3BlLnJlY2VpdmVkXCIsXG4gICAgICBsZXZlbDogXCJkZWJ1Z1wiLFxuICAgICAgZGV0YWlsOiB7IGV2ZW50OiBlbnZlbG9wZS5ldmVudCwgc291cmNlTm9kZUlkOiBlbnZlbG9wZS5zb3VyY2VOb2RlSWQgfSxcbiAgICB9KTtcblxuICAgIGNvbnN0IHJvdXRpbmdQbGFuID0gdGhpcy5vcHRpb25zLmF1ZGllbmNlUmVzb2x2ZXIucmVzb2x2ZShlbnZlbG9wZS5hdWRpZW5jZSk7XG4gICAgY29uc3QgbG9jYWxUYXJnZXRzID0gdGhpcy5vcHRpb25zLmxvY2FsQ29ubmVjdGlvbnMuZ2V0Q29ubmVjdGlvbnMocm91dGluZ1BsYW4ubG9jYWxTZXNzaW9uSWRzKTtcbiAgICB0aGlzLmVucXVldWVGYW5PdXQobG9jYWxUYXJnZXRzLCBlbnZlbG9wZS5ldmVudCwgZW52ZWxvcGUuZGF0YSk7XG5cbiAgICB0aGlzLnRlbGVtZXRyeS5yZWNvcmRTcGFuKHtcbiAgICAgIG9wZXJhdGlvbk5hbWU6IFwid3MuY2x1c3Rlci5yZWNlaXZlXCIsXG4gICAgICBraW5kOiBcImNvbnN1bWVyXCIsXG4gICAgICBkdXJhdGlvbk1zOiBwZXJmb3JtYW5jZS5ub3coKSAtIHN0YXJ0ZWRBdCxcbiAgICAgIHN0YXR1czogXCJ1bnNldFwiLFxuICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICBldmVudDogZW52ZWxvcGUuZXZlbnQsXG4gICAgICAgIHNvdXJjZU5vZGVJZDogZW52ZWxvcGUuc291cmNlTm9kZUlkLFxuICAgICAgICBsb2NhbFRhcmdldENvdW50OiBsb2NhbFRhcmdldHMubGVuZ3RoLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZW5xdWV1ZUZhbk91dDxEYXRhPihcbiAgICB0YXJnZXRzOiBNYW5hZ2VkV2ViU29ja2V0Q29ubmVjdGlvbltdLFxuICAgIGV2ZW50OiBzdHJpbmcsXG4gICAgZGF0YTogRGF0YSxcbiAgKTogdm9pZCB7XG4gICAgaWYgKHRhcmdldHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5wZW5kaW5nRmFuT3V0Sm9icy5wdXNoKHtcbiAgICAgIHRhcmdldHMsXG4gICAgICBldmVudCxcbiAgICAgIGRhdGEsXG4gICAgICBjdXJzb3I6IDAsXG4gICAgfSk7XG4gICAgdGhpcy50ZWxlbWV0cnkuZW1pdCh7XG4gICAgICBuYW1lOiBcIndzLmZhbm91dC5lbnF1ZXVlZFwiLFxuICAgICAgbGV2ZWw6IFwiZGVidWdcIixcbiAgICAgIGRldGFpbDogeyB0YXJnZXRDb3VudDogdGFyZ2V0cy5sZW5ndGgsIGV2ZW50IH0sXG4gICAgfSk7XG4gICAgdGhpcy5zY2hlZHVsZUZhbk91dEZsdXNoKCk7XG4gIH1cblxuICBwcml2YXRlIHNjaGVkdWxlRmFuT3V0Rmx1c2goKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZmFuT3V0Rmx1c2hTY2hlZHVsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmZhbk91dEZsdXNoU2NoZWR1bGVkID0gdHJ1ZTtcbiAgICBzZXRJbW1lZGlhdGUoKCkgPT4ge1xuICAgICAgdGhpcy5mYW5PdXRGbHVzaFNjaGVkdWxlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5mbHVzaEZhbk91dEpvYnMoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZmx1c2hGYW5PdXRKb2JzKCk6IHZvaWQge1xuICAgIGNvbnN0IHN0YXJ0ZWRBdCA9IHBlcmZvcm1hbmNlLm5vdygpO1xuICAgIGxldCBwcm9jZXNzZWQgPSAwO1xuICAgIGxldCBzdGF0dXM6IFwidW5zZXRcIiB8IFwiZXJyb3JcIiA9IFwidW5zZXRcIjtcbiAgICBsZXQgZXJyb3JUeXBlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgICB0cnkge1xuICAgICAgd2hpbGUgKHRoaXMucGVuZGluZ0Zhbk91dEpvYnMubGVuZ3RoID4gMCAmJiBwcm9jZXNzZWQgPCBGQU5fT1VUX0JBVENIX1NJWkUpIHtcbiAgICAgICAgY29uc3Qgam9iID0gdGhpcy5wZW5kaW5nRmFuT3V0Sm9ic1swXTtcblxuICAgICAgICB3aGlsZSAoam9iLmN1cnNvciA8IGpvYi50YXJnZXRzLmxlbmd0aCAmJiBwcm9jZXNzZWQgPCBGQU5fT1VUX0JBVENIX1NJWkUpIHtcbiAgICAgICAgICB0aGlzLnNhZmVQdWJsaXNoKGpvYi50YXJnZXRzW2pvYi5jdXJzb3JdLCBqb2IuZXZlbnQsIGpvYi5kYXRhKTtcbiAgICAgICAgICBqb2IuY3Vyc29yICs9IDE7XG4gICAgICAgICAgcHJvY2Vzc2VkICs9IDE7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoam9iLmN1cnNvciA+PSBqb2IudGFyZ2V0cy5sZW5ndGgpIHtcbiAgICAgICAgICB0aGlzLnBlbmRpbmdGYW5PdXRKb2JzLnNoaWZ0KCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgc3RhdHVzID0gXCJlcnJvclwiO1xuICAgICAgZXJyb3JUeXBlID0gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm5hbWUgOiBydW50aW1lVHlwZU9mKGVycm9yKTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBjb25zdCBkdXJhdGlvbk1zID0gcGVyZm9ybWFuY2Uubm93KCkgLSBzdGFydGVkQXQ7XG4gICAgICB0aGlzLnRlbGVtZXRyeS5lbWl0KHtcbiAgICAgICAgbmFtZTogXCJ3cy5mYW5vdXQuZmx1c2hlZFwiLFxuICAgICAgICBsZXZlbDogXCJkZWJ1Z1wiLFxuICAgICAgICBkZXRhaWw6IHsgcHJvY2Vzc2VkQ291bnQ6IHByb2Nlc3NlZCB9LFxuICAgICAgfSk7XG4gICAgICB0aGlzLnRlbGVtZXRyeS5yZWNvcmRTcGFuKHtcbiAgICAgICAgb3BlcmF0aW9uTmFtZTogXCJ3cy5mYW5vdXQuZGlzcGF0Y2hcIixcbiAgICAgICAga2luZDogXCJpbnRlcm5hbFwiLFxuICAgICAgICBkdXJhdGlvbk1zLFxuICAgICAgICBzdGF0dXMsXG4gICAgICAgIGF0dHJpYnV0ZXM6IHsgcHJvY2Vzc2VkQ291bnQ6IHByb2Nlc3NlZCB9LFxuICAgICAgICBlcnJvclR5cGUsXG4gICAgICB9KTtcblxuICAgICAgaWYgKHRoaXMucGVuZGluZ0Zhbk91dEpvYnMubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLnNjaGVkdWxlRmFuT3V0Rmx1c2goKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNhZmVQdWJsaXNoPERhdGE+KFxuICAgIGNvbm5lY3Rpb246IE1hbmFnZWRXZWJTb2NrZXRDb25uZWN0aW9uLFxuICAgIGV2ZW50OiBzdHJpbmcsXG4gICAgZGF0YTogRGF0YSxcbiAgKTogdm9pZCB7XG4gICAgdHJ5IHtcbiAgICAgIGlmICghY29ubmVjdGlvbi5jbG9zZWQpIHtcbiAgICAgICAgY29ubmVjdGlvbi5wdWJsaXNoVW50eXBlZChldmVudCwgZGF0YSk7XG4gICAgICB9XG4gICAgfSBjYXRjaCB7XG4gICAgICB0aGlzLnRlbGVtZXRyeS5lbWl0KHtcbiAgICAgICAgbmFtZTogXCJ3cy5mYW5vdXQucHVibGlzaC5mYWlsZWRcIixcbiAgICAgICAgbGV2ZWw6IFwiZXJyb3JcIixcbiAgICAgICAgY29ubmVjdGlvbklkOiBjb25uZWN0aW9uLmlkLFxuICAgICAgICBuYW1lc3BhY2U6IGNvbm5lY3Rpb24ubmFtZXNwYWNlLFxuICAgICAgICB1c2VySWQ6IGNvbm5lY3Rpb24udXNlcklkLFxuICAgICAgICBkZXRhaWw6IHsgZXZlbnQgfSxcbiAgICAgIH0pO1xuICAgICAgY29ubmVjdGlvbi5jbG9zZSgxMDExLCBcIldlYlNvY2tldCBwdWJsaXNoIGZhaWxlZFwiKTtcbiAgICB9XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OzttQkFFK0M7bUJBU3hCO0NBR2pCLHFCQUFxQjtDQUVkLDBCQUFiLE1BQXFDO0VBYWhCO0VBWm5CLG9CQUtLLENBQUM7RUFDTix1QkFBK0I7RUFDL0I7RUFDQTtFQUNBO0VBRUEsWUFDRSxTQU9BO0dBUGlCLEtBQUEsVUFBQTtHQVFqQixLQUFLLFlBQVksS0FBSyxRQUFRLHVCQUF1QixJQUFJLGlDQUFpQztHQUMxRixLQUFLLGNBQWMsS0FBSyxRQUFRLFdBQVcsV0FBVyxhQUFhO0lBQ2pFLEtBQUssc0JBQXNCLFFBQVE7R0FDckMsQ0FBQztHQUNELEtBQUsseUJBQXlCLEtBQUssVUFBVSxxQkFBcUIsRUFDaEUsZUFBZSxLQUFLLHFCQUFxQixFQUMzQyxDQUFDO0VBQ0g7RUFFQSxrQkFBd0IsVUFBNkIsT0FBZSxNQUFrQjtHQUNwRixNQUFNLGNBQWMsS0FBSyxRQUFRLGlCQUFpQixRQUFRLFFBQVE7R0FDbEUsTUFBTSxlQUFlLEtBQUssUUFBUSxpQkFBaUIsZUFBZSxZQUFZLGVBQWU7R0FFN0YsS0FBSyxVQUFVLEtBQUs7SUFDbEIsTUFBTTtJQUNOLE9BQU87SUFDUCxRQUFRO0tBQ04sa0JBQWtCLGFBQWE7S0FDL0IsaUJBQWlCLFlBQVksY0FBYztJQUM3QztHQUNGLENBQUM7R0FDRCxLQUFLLFVBQVUsYUFBYTtJQUMxQixNQUFNO0lBQ04sTUFBTTtJQUNOLE9BQU8sYUFBYSxTQUFTLFlBQVksY0FBYztJQUN2RCxNQUFNO0lBQ04sTUFBTSxFQUFFLGVBQWUsU0FBUyxLQUFLO0dBQ3ZDLENBQUM7R0FFRCxLQUFLLGNBQWMsY0FBYyxPQUFPLElBQUk7R0FFNUMsSUFBSSxZQUFZLGNBQWMsV0FBVyxHQUN2QztHQUdGLE1BQU0sV0FBcUM7SUFDekMsSUFBSSxXQUFXO0lBQ2YsY0FBYyxLQUFLLFFBQVE7SUFDM0IsZUFBZSxZQUFZO0lBQzNCO0lBQ0E7SUFDQTtJQUNBLFdBQVcsS0FBSyxJQUFJO0dBQ3RCO0dBRUEsTUFBTSxtQkFBbUIsWUFBWSxJQUFJO0dBQ3pDLFFBQVEsUUFBUSxLQUFLLFFBQVEsV0FBVyxRQUFRLFFBQVEsQ0FBQyxDQUFDLENBQ3ZELFdBQVc7SUFDVixNQUFNLGFBQWEsWUFBWSxJQUFJLElBQUk7SUFDdkMsS0FBSyxVQUFVLEtBQUs7S0FDbEIsTUFBTTtLQUNOLE9BQU87S0FDUCxRQUFRO01BQUU7TUFBTyxpQkFBaUIsWUFBWSxjQUFjO0tBQU87SUFDckUsQ0FBQztJQUNELEtBQUssVUFBVSxXQUFXO0tBQ3hCLGVBQWU7S0FDZixNQUFNO0tBQ047S0FDQSxRQUFRO0tBQ1IsWUFBWTtNQUNWO01BQ0EsaUJBQWlCLFlBQVksY0FBYztLQUM3QztJQUNGLENBQUM7R0FDSCxDQUFDLENBQUMsQ0FDRCxPQUFPLFVBQW1CO0lBQ3pCLE1BQU0sYUFBYSxZQUFZLElBQUksSUFBSTtJQUN2QyxLQUFLLFVBQVUsS0FBSztLQUNsQixNQUFNO0tBQ04sT0FBTztLQUNQLFFBQVEsRUFBRSxNQUFNO0lBQ2xCLENBQUM7SUFDRCxLQUFLLFVBQVUsV0FBVztLQUN4QixlQUFlO0tBQ2YsTUFBTTtLQUNOO0tBQ0EsUUFBUTtLQUNSLFlBQVksRUFBRSxNQUFNO0tBQ3BCLFdBQVcsaUJBQWlCLFFBQVEsTUFBTSxPQUFPLGNBQWMsS0FBSztJQUN0RSxDQUFDO0dBQ0gsQ0FBQztFQUNMO0VBRUEsTUFBTSxXQUEwQjtHQUM5QixLQUFLLHVCQUF1QjtHQUM1QixLQUFLLFlBQVk7R0FDakIsTUFBTSxLQUFLLFFBQVEsV0FBVyxTQUFTO0VBQ3pDO0VBRUEsdUJBQXVCO0dBQ3JCLElBQUksdUJBQXVCO0dBRTNCLEtBQUssTUFBTSxPQUFPLEtBQUssbUJBQ3JCLHdCQUF3QixLQUFLLElBQUksSUFBSSxRQUFRLFNBQVMsSUFBSSxRQUFRLENBQUM7R0FHckUsT0FBTztJQUNMLG1CQUFtQixLQUFLLGtCQUFrQjtJQUMxQztHQUNGO0VBQ0Y7RUFFQSxzQkFBOEIsVUFBMEM7R0FDdEUsSUFBSSxTQUFTLGlCQUFpQixLQUFLLFFBQVEsUUFBUTtJQUNqRCxLQUFLLFVBQVUsS0FBSztLQUNsQixNQUFNO0tBQ04sT0FBTztLQUNQLFFBQVE7TUFBRSxRQUFRO01BQWMsT0FBTyxTQUFTO0tBQU07SUFDeEQsQ0FBQztJQUNEO0dBQ0Y7R0FFQSxJQUNFLFNBQVMsaUJBQ1QsU0FBUyxjQUFjLFNBQVMsS0FDaEMsQ0FBQyxTQUFTLGNBQWMsU0FBUyxLQUFLLFFBQVEsTUFBTSxHQUNwRDtJQUNBLEtBQUssVUFBVSxLQUFLO0tBQ2xCLE1BQU07S0FDTixPQUFPO0tBQ1AsUUFBUTtNQUFFLFFBQVE7TUFBa0IsT0FBTyxTQUFTO0tBQU07SUFDNUQsQ0FBQztJQUNEO0dBQ0Y7R0FFQSxNQUFNLFlBQVksWUFBWSxJQUFJO0dBQ2xDLEtBQUssVUFBVSxLQUFLO0lBQ2xCLE1BQU07SUFDTixPQUFPO0lBQ1AsUUFBUTtLQUFFLE9BQU8sU0FBUztLQUFPLGNBQWMsU0FBUztJQUFhO0dBQ3ZFLENBQUM7R0FFRCxNQUFNLGNBQWMsS0FBSyxRQUFRLGlCQUFpQixRQUFRLFNBQVMsUUFBUTtHQUMzRSxNQUFNLGVBQWUsS0FBSyxRQUFRLGlCQUFpQixlQUFlLFlBQVksZUFBZTtHQUM3RixLQUFLLGNBQWMsY0FBYyxTQUFTLE9BQU8sU0FBUyxJQUFJO0dBRTlELEtBQUssVUFBVSxXQUFXO0lBQ3hCLGVBQWU7SUFDZixNQUFNO0lBQ04sWUFBWSxZQUFZLElBQUksSUFBSTtJQUNoQyxRQUFRO0lBQ1IsWUFBWTtLQUNWLE9BQU8sU0FBUztLQUNoQixjQUFjLFNBQVM7S0FDdkIsa0JBQWtCLGFBQWE7SUFDakM7R0FDRixDQUFDO0VBQ0g7RUFFQSxjQUNFLFNBQ0EsT0FDQSxNQUNNO0dBQ04sSUFBSSxRQUFRLFdBQVcsR0FDckI7R0FHRixLQUFLLGtCQUFrQixLQUFLO0lBQzFCO0lBQ0E7SUFDQTtJQUNBLFFBQVE7R0FDVixDQUFDO0dBQ0QsS0FBSyxVQUFVLEtBQUs7SUFDbEIsTUFBTTtJQUNOLE9BQU87SUFDUCxRQUFRO0tBQUUsYUFBYSxRQUFRO0tBQVE7SUFBTTtHQUMvQyxDQUFDO0dBQ0QsS0FBSyxvQkFBb0I7RUFDM0I7RUFFQSxzQkFBb0M7R0FDbEMsSUFBSSxLQUFLLHNCQUNQO0dBR0YsS0FBSyx1QkFBdUI7R0FDNUIsbUJBQW1CO0lBQ2pCLEtBQUssdUJBQXVCO0lBQzVCLEtBQUssZ0JBQWdCO0dBQ3ZCLENBQUM7RUFDSDtFQUVBLGtCQUFnQztHQUM5QixNQUFNLFlBQVksWUFBWSxJQUFJO0dBQ2xDLElBQUksWUFBWTtHQUNoQixJQUFJLFNBQTRCO0dBQ2hDLElBQUk7R0FFSixJQUFJO0lBQ0YsT0FBTyxLQUFLLGtCQUFrQixTQUFTLEtBQUssWUFBWSxvQkFBb0I7S0FDMUUsTUFBTSxNQUFNLEtBQUssa0JBQWtCO0tBRW5DLE9BQU8sSUFBSSxTQUFTLElBQUksUUFBUSxVQUFVLFlBQVksb0JBQW9CO01BQ3hFLEtBQUssWUFBWSxJQUFJLFFBQVEsSUFBSSxTQUFTLElBQUksT0FBTyxJQUFJLElBQUk7TUFDN0QsSUFBSSxVQUFVO01BQ2QsYUFBYTtLQUNmO0tBRUEsSUFBSSxJQUFJLFVBQVUsSUFBSSxRQUFRLFFBQzVCLEtBQUssa0JBQWtCLE1BQU07SUFFakM7R0FDRixTQUFTLE9BQU87SUFDZCxTQUFTO0lBQ1QsWUFBWSxpQkFBaUIsUUFBUSxNQUFNLE9BQU8sY0FBYyxLQUFLO0lBQ3JFLE1BQU07R0FDUixVQUFVO0lBQ1IsTUFBTSxhQUFhLFlBQVksSUFBSSxJQUFJO0lBQ3ZDLEtBQUssVUFBVSxLQUFLO0tBQ2xCLE1BQU07S0FDTixPQUFPO0tBQ1AsUUFBUSxFQUFFLGdCQUFnQixVQUFVO0lBQ3RDLENBQUM7SUFDRCxLQUFLLFVBQVUsV0FBVztLQUN4QixlQUFlO0tBQ2YsTUFBTTtLQUNOO0tBQ0E7S0FDQSxZQUFZLEVBQUUsZ0JBQWdCLFVBQVU7S0FDeEM7SUFDRixDQUFDO0lBRUQsSUFBSSxLQUFLLGtCQUFrQixTQUFTLEdBQ2xDLEtBQUssb0JBQW9CO0dBRTdCO0VBQ0Y7RUFFQSxZQUNFLFlBQ0EsT0FDQSxNQUNNO0dBQ04sSUFBSTtJQUNGLElBQUksQ0FBQyxXQUFXLFFBQ2QsV0FBVyxlQUFlLE9BQU8sSUFBSTtHQUV6QyxRQUFRO0lBQ04sS0FBSyxVQUFVLEtBQUs7S0FDbEIsTUFBTTtLQUNOLE9BQU87S0FDUCxjQUFjLFdBQVc7S0FDekIsV0FBVyxXQUFXO0tBQ3RCLFFBQVEsV0FBVztLQUNuQixRQUFRLEVBQUUsTUFBTTtJQUNsQixDQUFDO0lBQ0QsV0FBVyxNQUFNLE1BQU0sMEJBQTBCO0dBQ25EO0VBQ0Y7Q0FDRiJ9
@@ -1 +1 @@
1
- {"version":3,"file":"ws-local-connection-store.d.ts","sourceRoot":"","sources":["../../src/stream/ws-local-connection-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,0BAA0B,EAAE,MAAM,WAAW,CAAC;AAC5D,OAAO,EACL,KAAK,oCAAoC,EAE1C,MAAM,gBAAgB,CAAC;AAExB,qBAAa,6BAA6B;IACxC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAiD;IAE7E,QAAQ,CAAC,UAAU,EAAE,0BAA0B,GAAG,IAAI;IAItD,UAAU,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;IAItC,aAAa,CAAC,YAAY,EAAE,MAAM,GAAG,0BAA0B,GAAG,SAAS;IAI3E,cAAc,CAAC,aAAa,EAAE,MAAM,EAAE,GAAG,0BAA0B,EAAE;IAqBrE,oBAAoB,IAAI,oCAAoC;IAqB5D,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;CAK/C"}
1
+ {"version":3,"file":"ws-local-connection-store.d.ts","sourceRoot":"","sources":["../../src/stream/ws-local-connection-store.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,0BAA0B,EAAE,MAAM,WAAW,CAAC;AAC5D,OAAO,EACL,KAAK,oCAAoC,EAE1C,MAAM,gBAAgB,CAAC;AAExB,qBAAa,6BAA6B;IACxC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAiD;IAE7E,QAAQ,CAAC,UAAU,EAAE,0BAA0B,GAAG,IAAI;IAItD,UAAU,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;IAItC,aAAa,CAAC,YAAY,EAAE,MAAM,GAAG,0BAA0B,GAAG,SAAS;IAI3E,cAAc,CAAC,aAAa,EAAE,MAAM,EAAE,GAAG,0BAA0B,EAAE;IAqBrE,oBAAoB,IAAI,oCAAoC;IAqB5D,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;CAK/C"}
@@ -1,10 +1,12 @@
1
1
  import { __esmMin } from "../_virtual/_rolldown/runtime.js";
2
+ import { init_runtime_value, isFunctionValue } from "../utils/runtime-value.js";
2
3
  //#region src/stream/ws-local-connection-store.ts
3
4
  function isTelemetryInspectableConnection(connection) {
4
- return "getTelemetrySnapshot" in connection && typeof connection.getTelemetrySnapshot === "function";
5
+ return "getTelemetrySnapshot" in connection && isFunctionValue(connection.getTelemetrySnapshot);
5
6
  }
6
7
  var WebSocketLocalConnectionStore;
7
8
  var init_ws_local_connection_store = __esmMin((() => {
9
+ init_runtime_value();
8
10
  WebSocketLocalConnectionStore = class {
9
11
  connections = /* @__PURE__ */ new Map();
10
12
  register(connection) {
@@ -52,4 +54,4 @@ var init_ws_local_connection_store = __esmMin((() => {
52
54
  init_ws_local_connection_store();
53
55
  export { WebSocketLocalConnectionStore, init_ws_local_connection_store };
54
56
 
55
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3MtbG9jYWwtY29ubmVjdGlvbi1zdG9yZS5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RyZWFtL3dzLWxvY2FsLWNvbm5lY3Rpb24tc3RvcmUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBNYW5hZ2VkV2ViU29ja2V0Q29ubmVjdGlvbiB9IGZyb20gXCIuL3dzLWNvcmVcIjtcbmltcG9ydCB7XG4gIHR5cGUgV2ViU29ja2V0VGVsZW1ldHJ5Q29ubmVjdGlvblNuYXBzaG90LFxuICB0eXBlIFRlbGVtZXRyeUluc3BlY3RhYmxlQ29ubmVjdGlvbixcbn0gZnJvbSBcIi4vd3MtdGVsZW1ldHJ5XCI7XG5cbmV4cG9ydCBjbGFzcyBXZWJTb2NrZXRMb2NhbENvbm5lY3Rpb25TdG9yZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgY29ubmVjdGlvbnMgPSBuZXcgTWFwPHN0cmluZywgTWFuYWdlZFdlYlNvY2tldENvbm5lY3Rpb24+KCk7XG5cbiAgcmVnaXN0ZXIoY29ubmVjdGlvbjogTWFuYWdlZFdlYlNvY2tldENvbm5lY3Rpb24pOiB2b2lkIHtcbiAgICB0aGlzLmNvbm5lY3Rpb25zLnNldChjb25uZWN0aW9uLmlkLCBjb25uZWN0aW9uKTtcbiAgfVxuXG4gIHVucmVnaXN0ZXIoY29ubmVjdGlvbklkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmNvbm5lY3Rpb25zLmRlbGV0ZShjb25uZWN0aW9uSWQpO1xuICB9XG5cbiAgZ2V0Q29ubmVjdGlvbihjb25uZWN0aW9uSWQ6IHN0cmluZyk6IE1hbmFnZWRXZWJTb2NrZXRDb25uZWN0aW9uIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5jb25uZWN0aW9ucy5nZXQoY29ubmVjdGlvbklkKTtcbiAgfVxuXG4gIGdldENvbm5lY3Rpb25zKGNvbm5lY3Rpb25JZHM6IHN0cmluZ1tdKTogTWFuYWdlZFdlYlNvY2tldENvbm5lY3Rpb25bXSB7XG4gICAgY29uc3QgdGFyZ2V0czogTWFuYWdlZFdlYlNvY2tldENvbm5lY3Rpb25bXSA9IFtdO1xuICAgIGNvbnN0IHNlZW4gPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuICAgIGZvciAoY29uc3QgY29ubmVjdGlvbklkIG9mIGNvbm5lY3Rpb25JZHMpIHtcbiAgICAgIGlmIChzZWVuLmhhcyhjb25uZWN0aW9uSWQpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgc2Vlbi5hZGQoY29ubmVjdGlvbklkKTtcblxuICAgICAgY29uc3QgY29ubmVjdGlvbiA9IHRoaXMuY29ubmVjdGlvbnMuZ2V0KGNvbm5lY3Rpb25JZCk7XG4gICAgICBpZiAoIWNvbm5lY3Rpb24gfHwgY29ubmVjdGlvbi5jbG9zZWQpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHRhcmdldHMucHVzaChjb25uZWN0aW9uKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGFyZ2V0cztcbiAgfVxuXG4gIGdldFRlbGVtZXRyeVNuYXBzaG90KCk6IFdlYlNvY2tldFRlbGVtZXRyeUNvbm5lY3Rpb25TbmFwc2hvdCB7XG4gICAgY29uc3Qgc25hcHNob3Q6IFdlYlNvY2tldFRlbGVtZXRyeUNvbm5lY3Rpb25TbmFwc2hvdCA9IHtcbiAgICAgIHBlbmRpbmdJbmJvdW5kTWVzc2FnZXM6IDAsXG4gICAgICBwZW5kaW5nT3V0Ym91bmRNZXNzYWdlczogMCxcbiAgICAgIHNvY2tldEJ1ZmZlcmVkQnl0ZXM6IDAsXG4gICAgfTtcblxuICAgIGZvciAoY29uc3QgY29ubmVjdGlvbiBvZiB0aGlzLmNvbm5lY3Rpb25zLnZhbHVlcygpKSB7XG4gICAgICBpZiAoIWlzVGVsZW1ldHJ5SW5zcGVjdGFibGVDb25uZWN0aW9uKGNvbm5lY3Rpb24pKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBjb25uZWN0aW9uU25hcHNob3QgPSBjb25uZWN0aW9uLmdldFRlbGVtZXRyeVNuYXBzaG90KCk7XG4gICAgICBzbmFwc2hvdC5wZW5kaW5nSW5ib3VuZE1lc3NhZ2VzICs9IGNvbm5lY3Rpb25TbmFwc2hvdC5wZW5kaW5nSW5ib3VuZE1lc3NhZ2VzO1xuICAgICAgc25hcHNob3QucGVuZGluZ091dGJvdW5kTWVzc2FnZXMgKz0gY29ubmVjdGlvblNuYXBzaG90LnBlbmRpbmdPdXRib3VuZE1lc3NhZ2VzO1xuICAgICAgc25hcHNob3Quc29ja2V0QnVmZmVyZWRCeXRlcyArPSBjb25uZWN0aW9uU25hcHNob3Quc29ja2V0QnVmZmVyZWRCeXRlcztcbiAgICB9XG5cbiAgICByZXR1cm4gc25hcHNob3Q7XG4gIH1cblxuICBjbG9zZUFsbChjb2RlPzogbnVtYmVyLCByZWFzb24/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IGNvbm5lY3Rpb24gb2YgdGhpcy5jb25uZWN0aW9ucy52YWx1ZXMoKSkge1xuICAgICAgY29ubmVjdGlvbi5jbG9zZShjb2RlLCByZWFzb24pO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBpc1RlbGVtZXRyeUluc3BlY3RhYmxlQ29ubmVjdGlvbihcbiAgY29ubmVjdGlvbjogTWFuYWdlZFdlYlNvY2tldENvbm5lY3Rpb24sXG4pOiBjb25uZWN0aW9uIGlzIE1hbmFnZWRXZWJTb2NrZXRDb25uZWN0aW9uICYgVGVsZW1ldHJ5SW5zcGVjdGFibGVDb25uZWN0aW9uIHtcbiAgcmV0dXJuIChcbiAgICBcImdldFRlbGVtZXRyeVNuYXBzaG90XCIgaW4gY29ubmVjdGlvbiAmJiB0eXBlb2YgY29ubmVjdGlvbi5nZXRUZWxlbWV0cnlTbmFwc2hvdCA9PT0gXCJmdW5jdGlvblwiXG4gICk7XG59XG4iXSwibWFwcGluZ3MiOiI7O0FBc0VBLFNBQVMsaUNBQ1AsWUFDMkU7Q0FDM0UsT0FDRSwwQkFBMEIsY0FBYyxPQUFPLFdBQVcseUJBQXlCO0FBRXZGOzs7Q0F0RWEsZ0NBQWIsTUFBMkM7RUFDekMsOEJBQStCLElBQUksSUFBd0M7RUFFM0UsU0FBUyxZQUE4QztHQUNyRCxLQUFLLFlBQVksSUFBSSxXQUFXLElBQUksVUFBVTtFQUNoRDtFQUVBLFdBQVcsY0FBNEI7R0FDckMsS0FBSyxZQUFZLE9BQU8sWUFBWTtFQUN0QztFQUVBLGNBQWMsY0FBOEQ7R0FDMUUsT0FBTyxLQUFLLFlBQVksSUFBSSxZQUFZO0VBQzFDO0VBRUEsZUFBZSxlQUF1RDtHQUNwRSxNQUFNLFVBQXdDLENBQUM7R0FDL0MsTUFBTSx1QkFBTyxJQUFJLElBQVk7R0FFN0IsS0FBSyxNQUFNLGdCQUFnQixlQUFlO0lBQ3hDLElBQUksS0FBSyxJQUFJLFlBQVksR0FDdkI7SUFFRixLQUFLLElBQUksWUFBWTtJQUVyQixNQUFNLGFBQWEsS0FBSyxZQUFZLElBQUksWUFBWTtJQUNwRCxJQUFJLENBQUMsY0FBYyxXQUFXLFFBQzVCO0lBR0YsUUFBUSxLQUFLLFVBQVU7R0FDekI7R0FFQSxPQUFPO0VBQ1Q7RUFFQSx1QkFBNkQ7R0FDM0QsTUFBTSxXQUFpRDtJQUNyRCx3QkFBd0I7SUFDeEIseUJBQXlCO0lBQ3pCLHFCQUFxQjtHQUN2QjtHQUVBLEtBQUssTUFBTSxjQUFjLEtBQUssWUFBWSxPQUFPLEdBQUc7SUFDbEQsSUFBSSxDQUFDLGlDQUFpQyxVQUFVLEdBQzlDO0lBR0YsTUFBTSxxQkFBcUIsV0FBVyxxQkFBcUI7SUFDM0QsU0FBUywwQkFBMEIsbUJBQW1CO0lBQ3RELFNBQVMsMkJBQTJCLG1CQUFtQjtJQUN2RCxTQUFTLHVCQUF1QixtQkFBbUI7R0FDckQ7R0FFQSxPQUFPO0VBQ1Q7RUFFQSxTQUFTLE1BQWUsUUFBdUI7R0FDN0MsS0FBSyxNQUFNLGNBQWMsS0FBSyxZQUFZLE9BQU8sR0FDL0MsV0FBVyxNQUFNLE1BQU0sTUFBTTtFQUVqQztDQUNGIn0=
57
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3MtbG9jYWwtY29ubmVjdGlvbi1zdG9yZS5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RyZWFtL3dzLWxvY2FsLWNvbm5lY3Rpb24tc3RvcmUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNGdW5jdGlvblZhbHVlIH0gZnJvbSBcIi4uL3V0aWxzL3J1bnRpbWUtdmFsdWVcIjtcbmltcG9ydCB7IHR5cGUgTWFuYWdlZFdlYlNvY2tldENvbm5lY3Rpb24gfSBmcm9tIFwiLi93cy1jb3JlXCI7XG5pbXBvcnQge1xuICB0eXBlIFdlYlNvY2tldFRlbGVtZXRyeUNvbm5lY3Rpb25TbmFwc2hvdCxcbiAgdHlwZSBUZWxlbWV0cnlJbnNwZWN0YWJsZUNvbm5lY3Rpb24sXG59IGZyb20gXCIuL3dzLXRlbGVtZXRyeVwiO1xuXG5leHBvcnQgY2xhc3MgV2ViU29ja2V0TG9jYWxDb25uZWN0aW9uU3RvcmUge1xuICBwcml2YXRlIHJlYWRvbmx5IGNvbm5lY3Rpb25zID0gbmV3IE1hcDxzdHJpbmcsIE1hbmFnZWRXZWJTb2NrZXRDb25uZWN0aW9uPigpO1xuXG4gIHJlZ2lzdGVyKGNvbm5lY3Rpb246IE1hbmFnZWRXZWJTb2NrZXRDb25uZWN0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5jb25uZWN0aW9ucy5zZXQoY29ubmVjdGlvbi5pZCwgY29ubmVjdGlvbik7XG4gIH1cblxuICB1bnJlZ2lzdGVyKGNvbm5lY3Rpb25JZDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5jb25uZWN0aW9ucy5kZWxldGUoY29ubmVjdGlvbklkKTtcbiAgfVxuXG4gIGdldENvbm5lY3Rpb24oY29ubmVjdGlvbklkOiBzdHJpbmcpOiBNYW5hZ2VkV2ViU29ja2V0Q29ubmVjdGlvbiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuY29ubmVjdGlvbnMuZ2V0KGNvbm5lY3Rpb25JZCk7XG4gIH1cblxuICBnZXRDb25uZWN0aW9ucyhjb25uZWN0aW9uSWRzOiBzdHJpbmdbXSk6IE1hbmFnZWRXZWJTb2NrZXRDb25uZWN0aW9uW10ge1xuICAgIGNvbnN0IHRhcmdldHM6IE1hbmFnZWRXZWJTb2NrZXRDb25uZWN0aW9uW10gPSBbXTtcbiAgICBjb25zdCBzZWVuID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbiAgICBmb3IgKGNvbnN0IGNvbm5lY3Rpb25JZCBvZiBjb25uZWN0aW9uSWRzKSB7XG4gICAgICBpZiAoc2Vlbi5oYXMoY29ubmVjdGlvbklkKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIHNlZW4uYWRkKGNvbm5lY3Rpb25JZCk7XG5cbiAgICAgIGNvbnN0IGNvbm5lY3Rpb24gPSB0aGlzLmNvbm5lY3Rpb25zLmdldChjb25uZWN0aW9uSWQpO1xuICAgICAgaWYgKCFjb25uZWN0aW9uIHx8IGNvbm5lY3Rpb24uY2xvc2VkKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICB0YXJnZXRzLnB1c2goY29ubmVjdGlvbik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRhcmdldHM7XG4gIH1cblxuICBnZXRUZWxlbWV0cnlTbmFwc2hvdCgpOiBXZWJTb2NrZXRUZWxlbWV0cnlDb25uZWN0aW9uU25hcHNob3Qge1xuICAgIGNvbnN0IHNuYXBzaG90OiBXZWJTb2NrZXRUZWxlbWV0cnlDb25uZWN0aW9uU25hcHNob3QgPSB7XG4gICAgICBwZW5kaW5nSW5ib3VuZE1lc3NhZ2VzOiAwLFxuICAgICAgcGVuZGluZ091dGJvdW5kTWVzc2FnZXM6IDAsXG4gICAgICBzb2NrZXRCdWZmZXJlZEJ5dGVzOiAwLFxuICAgIH07XG5cbiAgICBmb3IgKGNvbnN0IGNvbm5lY3Rpb24gb2YgdGhpcy5jb25uZWN0aW9ucy52YWx1ZXMoKSkge1xuICAgICAgaWYgKCFpc1RlbGVtZXRyeUluc3BlY3RhYmxlQ29ubmVjdGlvbihjb25uZWN0aW9uKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgY29ubmVjdGlvblNuYXBzaG90ID0gY29ubmVjdGlvbi5nZXRUZWxlbWV0cnlTbmFwc2hvdCgpO1xuICAgICAgc25hcHNob3QucGVuZGluZ0luYm91bmRNZXNzYWdlcyArPSBjb25uZWN0aW9uU25hcHNob3QucGVuZGluZ0luYm91bmRNZXNzYWdlcztcbiAgICAgIHNuYXBzaG90LnBlbmRpbmdPdXRib3VuZE1lc3NhZ2VzICs9IGNvbm5lY3Rpb25TbmFwc2hvdC5wZW5kaW5nT3V0Ym91bmRNZXNzYWdlcztcbiAgICAgIHNuYXBzaG90LnNvY2tldEJ1ZmZlcmVkQnl0ZXMgKz0gY29ubmVjdGlvblNuYXBzaG90LnNvY2tldEJ1ZmZlcmVkQnl0ZXM7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNuYXBzaG90O1xuICB9XG5cbiAgY2xvc2VBbGwoY29kZT86IG51bWJlciwgcmVhc29uPzogc3RyaW5nKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBjb25uZWN0aW9uIG9mIHRoaXMuY29ubmVjdGlvbnMudmFsdWVzKCkpIHtcbiAgICAgIGNvbm5lY3Rpb24uY2xvc2UoY29kZSwgcmVhc29uKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gaXNUZWxlbWV0cnlJbnNwZWN0YWJsZUNvbm5lY3Rpb24oXG4gIGNvbm5lY3Rpb246IE1hbmFnZWRXZWJTb2NrZXRDb25uZWN0aW9uLFxuKTogY29ubmVjdGlvbiBpcyBNYW5hZ2VkV2ViU29ja2V0Q29ubmVjdGlvbiAmIFRlbGVtZXRyeUluc3BlY3RhYmxlQ29ubmVjdGlvbiB7XG4gIHJldHVybiBcImdldFRlbGVtZXRyeVNuYXBzaG90XCIgaW4gY29ubmVjdGlvbiAmJiBpc0Z1bmN0aW9uVmFsdWUoY29ubmVjdGlvbi5nZXRUZWxlbWV0cnlTbmFwc2hvdCk7XG59XG4iXSwibWFwcGluZ3MiOiI7OztBQXVFQSxTQUFTLGlDQUNQLFlBQzJFO0NBQzNFLE9BQU8sMEJBQTBCLGNBQWMsZ0JBQWdCLFdBQVcsb0JBQW9CO0FBQ2hHOzs7b0JBM0V3RDtDQU8zQyxnQ0FBYixNQUEyQztFQUN6Qyw4QkFBK0IsSUFBSSxJQUF3QztFQUUzRSxTQUFTLFlBQThDO0dBQ3JELEtBQUssWUFBWSxJQUFJLFdBQVcsSUFBSSxVQUFVO0VBQ2hEO0VBRUEsV0FBVyxjQUE0QjtHQUNyQyxLQUFLLFlBQVksT0FBTyxZQUFZO0VBQ3RDO0VBRUEsY0FBYyxjQUE4RDtHQUMxRSxPQUFPLEtBQUssWUFBWSxJQUFJLFlBQVk7RUFDMUM7RUFFQSxlQUFlLGVBQXVEO0dBQ3BFLE1BQU0sVUFBd0MsQ0FBQztHQUMvQyxNQUFNLHVCQUFPLElBQUksSUFBWTtHQUU3QixLQUFLLE1BQU0sZ0JBQWdCLGVBQWU7SUFDeEMsSUFBSSxLQUFLLElBQUksWUFBWSxHQUN2QjtJQUVGLEtBQUssSUFBSSxZQUFZO0lBRXJCLE1BQU0sYUFBYSxLQUFLLFlBQVksSUFBSSxZQUFZO0lBQ3BELElBQUksQ0FBQyxjQUFjLFdBQVcsUUFDNUI7SUFHRixRQUFRLEtBQUssVUFBVTtHQUN6QjtHQUVBLE9BQU87RUFDVDtFQUVBLHVCQUE2RDtHQUMzRCxNQUFNLFdBQWlEO0lBQ3JELHdCQUF3QjtJQUN4Qix5QkFBeUI7SUFDekIscUJBQXFCO0dBQ3ZCO0dBRUEsS0FBSyxNQUFNLGNBQWMsS0FBSyxZQUFZLE9BQU8sR0FBRztJQUNsRCxJQUFJLENBQUMsaUNBQWlDLFVBQVUsR0FDOUM7SUFHRixNQUFNLHFCQUFxQixXQUFXLHFCQUFxQjtJQUMzRCxTQUFTLDBCQUEwQixtQkFBbUI7SUFDdEQsU0FBUywyQkFBMkIsbUJBQW1CO0lBQ3ZELFNBQVMsdUJBQXVCLG1CQUFtQjtHQUNyRDtHQUVBLE9BQU87RUFDVDtFQUVBLFNBQVMsTUFBZSxRQUF1QjtHQUM3QyxLQUFLLE1BQU0sY0FBYyxLQUFLLFlBQVksT0FBTyxHQUMvQyxXQUFXLE1BQU0sTUFBTSxNQUFNO0VBRWpDO0NBQ0YifQ==