sonamu 0.9.19 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_virtual/_rolldown/runtime.js +36 -0
- package/dist/ai/agents/agent.js +5 -7
- package/dist/ai/agents/index.js +1 -2
- package/dist/ai/agents/types.js +1 -1
- package/dist/ai/index.js +1 -2
- package/dist/ai/providers/rtzr/api.js +2 -3
- package/dist/ai/providers/rtzr/error.js +14 -29
- package/dist/ai/providers/rtzr/index.js +1 -2
- package/dist/ai/providers/rtzr/model.js +13 -20
- package/dist/ai/providers/rtzr/options.js +2 -3
- package/dist/ai/providers/rtzr/provider.js +2 -3
- package/dist/ai/providers/rtzr/utils.js +12 -21
- package/dist/api/base-frame.js +4 -4
- package/dist/api/caster.js +21 -38
- package/dist/api/code-converters.js +41 -98
- package/dist/api/config.d.ts +1 -10
- package/dist/api/config.d.ts.map +1 -1
- package/dist/api/config.js +9 -8
- package/dist/api/context.js +2 -3
- package/dist/api/decorators.js +80 -116
- package/dist/api/index.js +2 -3
- package/dist/api/secret.js +6 -10
- package/dist/api/sonamu.d.ts.map +1 -1
- package/dist/api/sonamu.js +200 -387
- package/dist/api/validator.js +5 -8
- package/dist/api/websocket-helpers.js +21 -32
- package/dist/auth/audit-log/builders.js +2 -3
- package/dist/auth/audit-log/events.js +2 -2
- package/dist/auth/audit-log/plugin.js +30 -61
- package/dist/auth/audit-log-ingestor.js +19 -41
- package/dist/auth/auth-generator.js +16 -41
- package/dist/auth/better-auth-entities.js +3 -4
- package/dist/auth/index.js +2 -3
- package/dist/auth/knex-adapter.js +18 -45
- package/dist/auth/plugins/entity-definitions/admin.js +2 -2
- package/dist/auth/plugins/entity-definitions/anonymous.js +2 -2
- package/dist/auth/plugins/entity-definitions/api-key.js +2 -2
- package/dist/auth/plugins/entity-definitions/audit-log.js +2 -2
- package/dist/auth/plugins/entity-definitions/index.js +2 -3
- package/dist/auth/plugins/entity-definitions/jwt.js +2 -2
- package/dist/auth/plugins/entity-definitions/organization.js +2 -2
- package/dist/auth/plugins/entity-definitions/passkey.js +2 -2
- package/dist/auth/plugins/entity-definitions/phone-number.js +2 -2
- package/dist/auth/plugins/entity-definitions/sso.js +2 -2
- package/dist/auth/plugins/entity-definitions/two-factor.js +2 -2
- package/dist/auth/plugins/entity-definitions/types.js +1 -1
- package/dist/auth/plugins/entity-definitions/username.js +2 -2
- package/dist/auth/plugins/index.js +1 -2
- package/dist/auth/plugins/wrappers/admin.js +2 -3
- package/dist/auth/plugins/wrappers/anonymous.js +2 -3
- package/dist/auth/plugins/wrappers/api-key.js +2 -3
- package/dist/auth/plugins/wrappers/index.js +1 -2
- package/dist/auth/plugins/wrappers/jwt.js +2 -3
- package/dist/auth/plugins/wrappers/organization.js +2 -3
- package/dist/auth/plugins/wrappers/passkey.js +2 -3
- package/dist/auth/plugins/wrappers/phone-number.js +2 -3
- package/dist/auth/plugins/wrappers/sso.js +2 -3
- package/dist/auth/plugins/wrappers/two-factor.js +2 -3
- package/dist/auth/plugins/wrappers/username.js +2 -3
- package/dist/bin/build-config.js +2 -2
- package/dist/bin/cli.js +151 -258
- package/dist/bin/fixture.d.ts.map +1 -1
- package/dist/bin/fixture.js +55 -97
- package/dist/bin/hmr-hook-register.js +3 -3
- package/dist/bin/migrate-targets.d.ts +3 -0
- package/dist/bin/migrate-targets.d.ts.map +1 -0
- package/dist/bin/migrate-targets.js +11 -0
- package/dist/bin/test-command.js +25 -55
- package/dist/bin/ts-loader-register.js +5 -6
- package/dist/bin/ts-loader-registration.js +6 -13
- package/dist/cache/cache-manager.js +3 -4
- package/dist/cache/decorator.js +11 -21
- package/dist/cache/drivers.js +2 -3
- package/dist/cache/index.js +2 -3
- package/dist/cache/types.js +1 -1
- package/dist/cache-control/cache-control.js +21 -34
- package/dist/cache-control/types.js +1 -1
- package/dist/compress/compress.js +10 -10
- package/dist/compress/index.js +1 -2
- package/dist/compress/types.js +1 -1
- package/dist/cone/cone-generator.js +25 -63
- package/dist/database/_batch_update.js +26 -46
- package/dist/database/base-model.js +44 -97
- package/dist/database/base-model.types.js +1 -1
- package/dist/database/db.d.ts +8 -14
- package/dist/database/db.d.ts.map +1 -1
- package/dist/database/db.js +127 -72
- package/dist/database/knex.js +5 -8
- package/dist/database/puri-subset.types.js +1 -1
- package/dist/database/puri-wrapper.js +11 -15
- package/dist/database/puri.js +117 -234
- package/dist/database/puri.types.js +3 -4
- package/dist/database/transaction-context.js +4 -5
- package/dist/database/upsert-builder.js +109 -176
- package/dist/dict/en.d.ts +1 -0
- package/dist/dict/en.d.ts.map +1 -1
- package/dist/dict/en.js +4 -4
- package/dist/dict/index.js +2 -3
- package/dist/dict/ko.d.ts +1 -0
- package/dist/dict/ko.d.ts.map +1 -1
- package/dist/dict/ko.js +4 -4
- package/dist/dict/rc-keys.js +3 -4
- package/dist/dict/sd.js +8 -19
- package/dist/dict/sonamu-dictionary.js +141 -284
- package/dist/dict/types.js +1 -1
- package/dist/dict/utils.js +4 -5
- package/dist/entity/entity-manager.d.ts +2 -2
- package/dist/entity/entity-manager.js +34 -82
- package/dist/entity/entity-template-cone.js +33 -66
- package/dist/entity/entity.js +156 -310
- package/dist/env.d.ts +14 -0
- package/dist/env.d.ts.map +1 -0
- package/dist/env.js +75 -0
- package/dist/exceptions/error-handler.js +2 -3
- package/dist/exceptions/so-exceptions.js +7 -5
- package/dist/filter/index.js +1 -2
- package/dist/filter/types.js +3 -4
- package/dist/filter/utils.js +21 -54
- package/dist/index.js +8 -7
- package/dist/logger/category.js +6 -12
- package/dist/logger/configure.js +23 -34
- package/dist/migration/code-generation.js +146 -314
- package/dist/migration/index-where-predicate.js +52 -144
- package/dist/migration/migration-set.js +19 -33
- package/dist/migration/migrator.d.ts +2 -0
- package/dist/migration/migrator.d.ts.map +1 -1
- package/dist/migration/migrator.js +69 -53
- package/dist/migration/postgresql-schema-reader.js +126 -225
- package/dist/migration/slack-confirm.d.ts +1 -0
- package/dist/migration/slack-confirm.d.ts.map +1 -1
- package/dist/migration/slack-confirm.js +28 -38
- package/dist/migration/types.js +1 -1
- package/dist/naite/messaging-types.js +1 -1
- package/dist/naite/naite-reporter.js +15 -32
- package/dist/naite/naite.js +43 -76
- package/dist/ssr/index.js +6 -9
- package/dist/ssr/registry.js +10 -18
- package/dist/ssr/renderer.js +10 -21
- package/dist/ssr/types.js +1 -1
- package/dist/storage/base-file.js +5 -10
- package/dist/storage/buffered-file.js +3 -4
- package/dist/storage/drivers.js +2 -3
- package/dist/storage/index.js +2 -3
- package/dist/storage/s3-driver.js +5 -9
- package/dist/storage/storage-manager.js +5 -5
- package/dist/storage/types.js +1 -1
- package/dist/storage/uploaded-file.js +4 -6
- package/dist/stream/index.js +1 -2
- package/dist/stream/sse.js +8 -13
- package/dist/stream/ws-audience-resolver.js +5 -5
- package/dist/stream/ws-audience.js +3 -4
- package/dist/stream/ws-cluster-bus.js +3 -4
- package/dist/stream/ws-core.js +1 -1
- package/dist/stream/ws-delivery.js +11 -25
- package/dist/stream/ws-local-connection-store.js +9 -18
- package/dist/stream/ws-presence-store.js +43 -97
- package/dist/stream/ws-registry.js +17 -22
- package/dist/stream/ws-telemetry-memory.js +38 -45
- package/dist/stream/ws-telemetry-trace.js +4 -6
- package/dist/stream/ws-telemetry.js +82 -135
- package/dist/stream/ws.js +47 -91
- package/dist/syncer/api-parser.js +81 -147
- package/dist/syncer/checksum.js +9 -20
- package/dist/syncer/code-generator.js +29 -47
- package/dist/syncer/entity-operations.js +17 -27
- package/dist/syncer/event-batcher.js +8 -15
- package/dist/syncer/file-patterns.js +3 -4
- package/dist/syncer/file-tracking.js +6 -10
- package/dist/syncer/index.js +1 -2
- package/dist/syncer/module-loader.js +10 -26
- package/dist/syncer/syncer-actions.js +19 -37
- package/dist/syncer/syncer.js +46 -98
- package/dist/syncer/watcher.js +12 -26
- package/dist/tasks/decorator.js +7 -11
- package/dist/tasks/step-wrapper.js +7 -8
- package/dist/tasks/workflow-manager.js +18 -25
- package/dist/template/entity-converter.js +40 -64
- package/dist/template/helpers.js +32 -63
- package/dist/template/implementations/entity.template.js +7 -11
- package/dist/template/implementations/entry-server.template.js +2 -3
- package/dist/template/implementations/generated.template.js +25 -51
- package/dist/template/implementations/generated_http.template.js +31 -58
- package/dist/template/implementations/generated_sso.template.js +45 -85
- package/dist/template/implementations/init_types.template.js +4 -7
- package/dist/template/implementations/model.template.js +5 -10
- package/dist/template/implementations/model_test.template.js +2 -3
- package/dist/template/implementations/queries.template.js +4 -7
- package/dist/template/implementations/sd.template.js +17 -35
- package/dist/template/implementations/services.template.js +18 -30
- package/dist/template/implementations/view_form.template.js +72 -125
- package/dist/template/implementations/view_id_all_select.template.js +2 -3
- package/dist/template/implementations/view_list.template.js +86 -143
- package/dist/template/implementations/view_search_input.template.js +2 -3
- package/dist/template/index.js +5 -8
- package/dist/template/template-manager.js +13 -26
- package/dist/template/template-types.js +2 -3
- package/dist/template/template.js +7 -11
- package/dist/template/zod-converter.js +173 -348
- package/dist/testing/_relation-graph.js +18 -37
- package/dist/testing/bootstrap.js +5 -8
- package/dist/testing/data-explorer.js +34 -78
- package/dist/testing/dev-test-routes.js +54 -60
- package/dist/testing/dev-vitest-manager.js +33 -84
- package/dist/testing/faker-mappings.js +3 -4
- package/dist/testing/fixture-generator.d.ts +2 -1
- package/dist/testing/fixture-generator.d.ts.map +1 -1
- package/dist/testing/fixture-generator.js +159 -321
- package/dist/testing/fixture-loader.js +2 -2
- package/dist/testing/fixture-manager.d.ts.map +1 -1
- package/dist/testing/fixture-manager.js +124 -227
- package/dist/testing/global-setup.d.ts.map +1 -1
- package/dist/testing/global-setup.js +29 -17
- package/dist/testing/index.js +1 -2
- package/dist/testing/naite-vitest-reporter.js +2 -3
- package/dist/testing/parallel-db-manager.js +5 -3
- package/dist/testing/vitest-helpers.d.ts.map +1 -1
- package/dist/testing/vitest-helpers.js +15 -12
- package/dist/types/types.d.ts +14 -14
- package/dist/types/types.js +27 -50
- package/dist/ui/ai-api.js +6 -11
- package/dist/ui/ai-client.js +86 -134
- package/dist/ui/api.js +99 -195
- package/dist/ui/cdd-service.js +78 -130
- package/dist/ui/cdd-types.js +1 -1
- package/dist/ui-web/assets/{index-Df8q-fhb.js → index-DFStGyd0.js} +49 -49
- package/dist/ui-web/assets/index-Dx4ap5i4.css +1 -0
- package/dist/ui-web/index.html +2 -2
- package/dist/utils/async-utils.js +13 -25
- package/dist/utils/class-name.js +3 -4
- package/dist/utils/console-util.js +11 -26
- package/dist/utils/controller.d.ts.map +1 -1
- package/dist/utils/controller.js +14 -12
- package/dist/utils/esm-utils.js +5 -8
- package/dist/utils/formatter.js +10 -22
- package/dist/utils/fs-utils.js +14 -25
- package/dist/utils/lodash-able.js +3 -4
- package/dist/utils/model.js +7 -14
- package/dist/utils/object-utils.js +41 -73
- package/dist/utils/path-utils.js +5 -9
- package/dist/utils/process-utils.js +4 -7
- package/dist/utils/sql-parser.js +6 -13
- package/dist/utils/type-utils.js +16 -26
- package/dist/utils/utils.js +18 -40
- package/dist/utils/zod-error.js +9 -16
- package/dist/vector/chunking.js +24 -37
- package/dist/vector/config.js +2 -2
- package/dist/vector/embedding.js +8 -19
- package/dist/vector/index.js +1 -2
- package/dist/vector/types.js +1 -1
- package/package.json +7 -7
- package/src/__tests__/env.test.ts +127 -0
- package/src/api/__tests__/config.test.ts +10 -1
- package/src/api/config.ts +4 -12
- package/src/api/sonamu.ts +14 -4
- package/src/bin/__tests__/migrate-targets.test.ts +28 -0
- package/src/bin/__tests__/test-command.test.ts +82 -1
- package/src/bin/cli.ts +9 -18
- package/src/bin/fixture.ts +5 -4
- package/src/bin/migrate-targets.ts +7 -0
- package/src/bin/test-command.ts +2 -2
- package/src/database/__tests__/db.test.ts +175 -0
- package/src/database/db.ts +193 -71
- package/src/dict/en.ts +2 -0
- package/src/dict/ko.ts +2 -0
- package/src/env.ts +123 -0
- package/src/migration/__tests__/migrator.test.ts +149 -0
- package/src/migration/migrator.ts +74 -17
- package/src/migration/slack-confirm.ts +21 -0
- package/src/skills/sonamu/database.md +1 -1
- package/src/skills/sonamu/entity-basic.md +31 -0
- package/src/skills/sonamu/puri.md +22 -0
- package/src/skills/sonamu/testing-devrunner.md +1 -1
- package/src/skills/sonamu/upsert.md +53 -6
- package/src/stream/ws-telemetry-memory.ts +2 -2
- package/src/testing/fixture-generator.ts +2 -1
- package/src/testing/fixture-manager.ts +3 -4
- package/src/testing/global-setup.ts +42 -18
- package/src/testing/vitest-helpers.ts +14 -0
- package/src/utils/controller.ts +14 -7
- package/tsdown.api.config.ts +6 -0
- package/dist/_virtual/rolldown_runtime.js +0 -39
- package/dist/ui-web/assets/index-D4rYm-Xz.css +0 -1
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import { __esmMin } from "../_virtual/
|
|
1
|
+
import { __esmMin } from "../_virtual/_rolldown/runtime.js";
|
|
2
2
|
import { BaseFile, init_base_file } from "./base-file.js";
|
|
3
3
|
import { createHash } from "crypto";
|
|
4
|
-
|
|
5
4
|
//#region src/storage/buffered-file.ts
|
|
6
5
|
var BufferedFile;
|
|
7
6
|
var init_buffered_file = __esmMin((() => {
|
|
@@ -46,8 +45,8 @@ var init_buffered_file = __esmMin((() => {
|
|
|
46
45
|
}
|
|
47
46
|
};
|
|
48
47
|
}));
|
|
49
|
-
|
|
50
48
|
//#endregion
|
|
51
49
|
init_buffered_file();
|
|
52
50
|
export { BufferedFile, init_buffered_file };
|
|
53
|
-
|
|
51
|
+
|
|
52
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVmZmVyZWQtZmlsZS5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RvcmFnZS9idWZmZXJlZC1maWxlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZUhhc2ggfSBmcm9tIFwiY3J5cHRvXCI7XG5cbmltcG9ydCB7IHR5cGUgTXVsdGlwYXJ0RmlsZSB9IGZyb20gXCJAZmFzdGlmeS9tdWx0aXBhcnRcIjtcblxuaW1wb3J0IHsgQmFzZUZpbGUgfSBmcm9tIFwiLi9iYXNlLWZpbGVcIjtcbmltcG9ydCB7IHR5cGUgRHJpdmVyS2V5IH0gZnJvbSBcIi4vZHJpdmVyc1wiO1xuXG4vKipcbiAqIEJ1ZmZlciDrqqjrk5zroZwg7JeF66Gc65Oc65CcIO2MjOydvFxuICog66mU66qo66as7JeQIOuhnOuTnOuQnCDsg4Htg5zroZwsIG1kNSDqs4TsgrDsnbTrgpgg7J2066+47KeAIOyymOumrCDrk7Eg7Jyg7Jew7ZWcIOyekeyXheydtCDqsIDriqXtlanri4jri6QuXG4gKi9cbmV4cG9ydCBjbGFzcyBCdWZmZXJlZEZpbGUgZXh0ZW5kcyBCYXNlRmlsZSB7XG4gIHByaXZhdGUgX2ZpbGU6IE11bHRpcGFydEZpbGU7XG4gIHByaXZhdGUgX2J1ZmZlcjogQnVmZmVyO1xuXG4gIGNvbnN0cnVjdG9yKGZpbGU6IE11bHRpcGFydEZpbGUsIGJ1ZmZlcjogQnVmZmVyKSB7XG4gICAgc3VwZXIoe1xuICAgICAgZmlsZW5hbWU6IGZpbGUuZmlsZW5hbWUsXG4gICAgICBtaW1ldHlwZTogZmlsZS5taW1ldHlwZSxcbiAgICAgIHNpemU6IGJ1ZmZlci5sZW5ndGgsXG4gICAgfSk7XG4gICAgdGhpcy5fZmlsZSA9IGZpbGU7XG4gICAgdGhpcy5fYnVmZmVyID0gYnVmZmVyO1xuICB9XG5cbiAgLyoqIO2MjOydvCBCdWZmZXIgKi9cbiAgZ2V0IGJ1ZmZlcigpOiBCdWZmZXIge1xuICAgIHJldHVybiB0aGlzLl9idWZmZXI7XG4gIH1cblxuICAvKiogTUQ1IO2VtOyLnCDqs4TsgrAgKi9cbiAgYXN5bmMgbWQ1KCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIGNyZWF0ZUhhc2goXCJtZDVcIikudXBkYXRlKHRoaXMuX2J1ZmZlcikuZGlnZXN0KFwiaGV4XCIpO1xuICB9XG5cbiAgLyoqXG4gICAqIO2MjOydvOydhCDrlJTsiqTtgazsl5Ag7KCA7J6lXG4gICAqIEBwYXJhbSBkaXNrTmFtZSDrlJTsiqTtgawg7J2066aEIChcImZzXCIg65iQ64qUIFwiczNcIilcbiAgICogQHBhcmFtIGtleSDsoIDsnqUg6rK966GcICjsmIg6ICd1cGxvYWRzL2F2YXRhci5wbmcnKVxuICAgKiBAcmV0dXJucyDsoIDsnqXrkJwg7YyM7J287J2YIFVSTFxuICAgKi9cbiAgYXN5bmMgc2F2ZVRvRGlzayhkaXNrTmFtZTogRHJpdmVyS2V5LCBrZXk6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgLy8g7Iic7ZmYIOydmOyhtOyEsSDrsKnsp4Drpbwg7JyE7ZW0IOuPmeyggSBpbXBvcnRcbiAgICBjb25zdCB7IFNvbmFtdSB9ID0gYXdhaXQgaW1wb3J0KFwiLi4vYXBpL3NvbmFtdVwiKTtcbiAgICBjb25zdCBkaXNrID0gU29uYW11LnN0b3JhZ2UudXNlKGRpc2tOYW1lKTtcblxuICAgIGF3YWl0IGRpc2sucHV0KGtleSwgbmV3IFVpbnQ4QXJyYXkodGhpcy5fYnVmZmVyKSwge1xuICAgICAgY29udGVudFR5cGU6IHRoaXMubWltZXR5cGUsXG4gICAgfSk7XG5cbiAgICB0aGlzLl91cmwgPSBhd2FpdCBkaXNrLmdldFVybChrZXkpO1xuICAgIHRoaXMuX3NpZ25lZFVybCA9IGF3YWl0IGRpc2suZ2V0U2lnbmVkVXJsKGtleSk7XG5cbiAgICAvLyBzaWduZWQgdXJs7J2AIOunjOujjCDsi5zqsITsnbQg7J6I6riwIOuVjOusuOyXkCwgdW5zaWduZWQgdXJs7J2EIOuwmO2ZmO2VqeuLiOuLpC5cbiAgICByZXR1cm4gdGhpcy5fdXJsO1xuICB9XG5cbiAgLyoqIOybkOuzuCBNdWx0aXBhcnRGaWxlIOygkeq3vCAqL1xuICBnZXQgcmF3KCk6IE11bHRpcGFydEZpbGUge1xuICAgIHJldHVybiB0aGlzLl9maWxlO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztnQkFJc0M7Q0FPekIsZUFBYixjQUFrQyxTQUFTO0VBQ3pDO0VBQ0E7RUFFQSxZQUFZLE1BQXFCLFFBQWdCO0dBQy9DLE1BQU07SUFDSixVQUFVLEtBQUs7SUFDZixVQUFVLEtBQUs7SUFDZixNQUFNLE9BQU87R0FDZixDQUFDO0dBQ0QsS0FBSyxRQUFRO0dBQ2IsS0FBSyxVQUFVO0VBQ2pCOztFQUdBLElBQUksU0FBaUI7R0FDbkIsT0FBTyxLQUFLO0VBQ2Q7O0VBR0EsTUFBTSxNQUF1QjtHQUMzQixPQUFPLFdBQVcsS0FBSyxDQUFDLENBQUMsT0FBTyxLQUFLLE9BQU8sQ0FBQyxDQUFDLE9BQU8sS0FBSztFQUM1RDs7Ozs7OztFQVFBLE1BQU0sV0FBVyxVQUFxQixLQUE4QjtHQUVsRSxNQUFNLEVBQUUsV0FBVyxNQUFNLE9BQU87R0FDaEMsTUFBTSxPQUFPLE9BQU8sUUFBUSxJQUFJLFFBQVE7R0FFeEMsTUFBTSxLQUFLLElBQUksS0FBSyxJQUFJLFdBQVcsS0FBSyxPQUFPLEdBQUcsRUFDaEQsYUFBYSxLQUFLLFNBQ3BCLENBQUM7R0FFRCxLQUFLLE9BQU8sTUFBTSxLQUFLLE9BQU8sR0FBRztHQUNqQyxLQUFLLGFBQWEsTUFBTSxLQUFLLGFBQWEsR0FBRztHQUc3QyxPQUFPLEtBQUs7RUFDZDs7RUFHQSxJQUFJLE1BQXFCO0dBQ3ZCLE9BQU8sS0FBSztFQUNkO0NBQ0YifQ==
|
package/dist/storage/drivers.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { SonamuS3Driver } from "./s3-driver.js";
|
|
2
2
|
import { FSDriver } from "flydrive/drivers/fs";
|
|
3
|
-
|
|
4
3
|
//#region src/storage/drivers.ts
|
|
5
4
|
/**
|
|
6
5
|
* 드라이버 팩토리 함수
|
|
@@ -10,7 +9,7 @@ const drivers = {
|
|
|
10
9
|
fs: (config) => () => new FSDriver(config),
|
|
11
10
|
s3: (config) => () => new SonamuS3Driver(config)
|
|
12
11
|
};
|
|
13
|
-
|
|
14
12
|
//#endregion
|
|
15
13
|
export { drivers };
|
|
16
|
-
|
|
14
|
+
|
|
15
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJpdmVycy5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RvcmFnZS9kcml2ZXJzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZTRHJpdmVyIH0gZnJvbSBcImZseWRyaXZlL2RyaXZlcnMvZnNcIjtcbmltcG9ydCB7IHR5cGUgRlNEcml2ZXJPcHRpb25zIH0gZnJvbSBcImZseWRyaXZlL2RyaXZlcnMvZnMvdHlwZXNcIjtcbmltcG9ydCB7IHR5cGUgUzNEcml2ZXJPcHRpb25zIH0gZnJvbSBcImZseWRyaXZlL2RyaXZlcnMvczMvdHlwZXNcIjtcblxuaW1wb3J0IHsgU29uYW11UzNEcml2ZXIgfSBmcm9tIFwiLi9zMy1kcml2ZXJcIjtcblxuLyoqXG4gKiDrk5zrnbzsnbTrsoQg7Yyp7Yag66asIO2VqOyImFxuICog7ISk7KCVIOKGkiDrk5zrnbzsnbTrsoQg7J247Iqk7YS07IqkIOyDneyEsSDtlajsiJgg67OA7ZmYXG4gKi9cbmV4cG9ydCBjb25zdCBkcml2ZXJzID0ge1xuICBmczogKGNvbmZpZzogRlNEcml2ZXJPcHRpb25zKSA9PiAoKSA9PiBuZXcgRlNEcml2ZXIoY29uZmlnKSxcbiAgczM6IChjb25maWc6IFMzRHJpdmVyT3B0aW9ucykgPT4gKCkgPT4gbmV3IFNvbmFtdVMzRHJpdmVyKGNvbmZpZyksXG59O1xuXG5leHBvcnQgdHlwZSBEcml2ZXJLZXkgPSBrZXlvZiB0eXBlb2YgZHJpdmVycztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQVVBLE1BQWEsVUFBVTtDQUNyQixLQUFLLGlCQUFrQyxJQUFJLFNBQVMsTUFBTTtDQUMxRCxLQUFLLGlCQUFrQyxJQUFJLGVBQWUsTUFBTTtBQUNsRSJ9
|
package/dist/storage/index.js
CHANGED
|
@@ -3,13 +3,12 @@ import { BufferedFile, init_buffered_file } from "./buffered-file.js";
|
|
|
3
3
|
import { UploadedFile, init_uploaded_file } from "./uploaded-file.js";
|
|
4
4
|
import { drivers } from "./drivers.js";
|
|
5
5
|
import { StorageManager, init_storage_manager } from "./storage-manager.js";
|
|
6
|
-
|
|
7
6
|
//#region src/storage/index.ts
|
|
8
7
|
init_base_file();
|
|
9
8
|
init_buffered_file();
|
|
10
9
|
init_storage_manager();
|
|
11
10
|
init_uploaded_file();
|
|
12
|
-
|
|
13
11
|
//#endregion
|
|
14
12
|
export { BaseFile, BufferedFile, StorageManager, UploadedFile as StreamedFile, drivers };
|
|
15
|
-
|
|
13
|
+
|
|
14
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N0b3JhZ2UvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU3RvcmFnZSDshJzruIzrqqjrk4ggZXhwb3J0c1xuZXhwb3J0IHsgQmFzZUZpbGUgfSBmcm9tIFwiLi9iYXNlLWZpbGVcIjtcbmV4cG9ydCB7IEJ1ZmZlcmVkRmlsZSB9IGZyb20gXCIuL2J1ZmZlcmVkLWZpbGVcIjtcbmV4cG9ydCB7IHR5cGUgRHJpdmVyS2V5LCBkcml2ZXJzIH0gZnJvbSBcIi4vZHJpdmVyc1wiO1xuZXhwb3J0IHsgU3RvcmFnZU1hbmFnZXIgfSBmcm9tIFwiLi9zdG9yYWdlLW1hbmFnZXJcIjtcbmV4cG9ydCB0eXBlIHsgS2V5R2VuZXJhdG9yLCBTdG9yYWdlQ29uZmlnIH0gZnJvbSBcIi4vdHlwZXNcIjtcbmV4cG9ydCB7IFVwbG9hZGVkRmlsZSBhcyBTdHJlYW1lZEZpbGUgfSBmcm9tIFwiLi91cGxvYWRlZC1maWxlXCI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztlQUNzQzttQkFDUTtxQkFFSTttQkFFWSJ9
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { S3Client } from "@aws-sdk/client-s3";
|
|
2
2
|
import { Upload } from "@aws-sdk/lib-storage";
|
|
3
3
|
import { S3Driver } from "flydrive/drivers/s3";
|
|
4
|
-
|
|
5
4
|
//#region src/storage/s3-driver.ts
|
|
6
5
|
/**
|
|
7
6
|
* Sonamu용 S3 드라이버
|
|
@@ -41,17 +40,14 @@ var SonamuS3Driver = class extends S3Driver {
|
|
|
41
40
|
CacheControl: options?.cacheControl,
|
|
42
41
|
ContentDisposition: options?.contentDisposition
|
|
43
42
|
};
|
|
44
|
-
if (this.sonamuSupportsACL)
|
|
45
|
-
|
|
46
|
-
}
|
|
47
|
-
const upload = new Upload({
|
|
43
|
+
if (this.sonamuSupportsACL) uploadParams.ACL = visibility === "public" ? "public-read" : "private";
|
|
44
|
+
await new Upload({
|
|
48
45
|
client: this.sonamuClient,
|
|
49
46
|
params: uploadParams
|
|
50
|
-
});
|
|
51
|
-
await upload.done();
|
|
47
|
+
}).done();
|
|
52
48
|
}
|
|
53
49
|
};
|
|
54
|
-
|
|
55
50
|
//#endregion
|
|
56
51
|
export { SonamuS3Driver };
|
|
57
|
-
|
|
52
|
+
|
|
53
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiczMtZHJpdmVyLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdG9yYWdlL3MzLWRyaXZlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIFJlYWRhYmxlIH0gZnJvbSBcInN0cmVhbVwiO1xuXG5pbXBvcnQgeyBTM0NsaWVudCB9IGZyb20gXCJAYXdzLXNkay9jbGllbnQtczNcIjtcbmltcG9ydCB7IHR5cGUgT2JqZWN0Q2FubmVkQUNMIH0gZnJvbSBcIkBhd3Mtc2RrL2NsaWVudC1zM1wiO1xuaW1wb3J0IHsgVXBsb2FkIH0gZnJvbSBcIkBhd3Mtc2RrL2xpYi1zdG9yYWdlXCI7XG5pbXBvcnQgeyB0eXBlIE9wdGlvbnMgfSBmcm9tIFwiQGF3cy1zZGsvbGliLXN0b3JhZ2VcIjtcbmltcG9ydCB7IFMzRHJpdmVyIH0gZnJvbSBcImZseWRyaXZlL2RyaXZlcnMvczNcIjtcbmltcG9ydCB7IHR5cGUgUzNEcml2ZXJPcHRpb25zIH0gZnJvbSBcImZseWRyaXZlL2RyaXZlcnMvczMvdHlwZXNcIjtcblxuLyoqXG4gKiBTb25hbXXsmqkgUzMg65Oc65287J2067KEXG4gKlxuICogZmx5ZHJpdmXsnZggUzNEcml2ZXLrpbwg7ZmV7J6l7ZWY7JesIHB1dFN0cmVhbeyXkOyEnFxuICogQGF3cy1zZGsvbGliLXN0b3JhZ2XsnZggVXBsb2FkIO2BtOuemOyKpOulvCDsgqzsmqntlanri4jri6QuXG4gKiDsnbTrpbwg7Ya17ZW0IOyKpO2KuOumvCDtgazquLDrpbwg66qo66W064qUIOyDge2DnOyXkOyEnOuPhCDsl4XroZzrk5zqsIAg6rCA64ql7ZWp64uI64ukLlxuICpcbiAqIOq4sOyhtCBTM0RyaXZlci5wdXRTdHJlYW3snYAgUHV0T2JqZWN0Q29tbWFuZOulvCDsgqzsmqntlZjsl6wgQ29udGVudC1MZW5ndGjqsIAg7ZWE7JqU7ZaI7KeA66eMLFxuICogVXBsb2FkIO2BtOuemOyKpOuKlCBtdWx0aXBhcnQgdXBsb2Fk66W8IO2Gte2VtCDsiqTtirjrprwg7YGs6riwIOyXhuydtOuPhCDsl4XroZzrk5ztlaAg7IiYIOyeiOyKteuLiOuLpC5cbiAqL1xuZXhwb3J0IGNsYXNzIFNvbmFtdVMzRHJpdmVyIGV4dGVuZHMgUzNEcml2ZXIge1xuICBwcml2YXRlIHNvbmFtdUNsaWVudDogUzNDbGllbnQ7XG4gIHByaXZhdGUgc29uYW11QnVja2V0OiBzdHJpbmc7XG4gIHByaXZhdGUgc29uYW11VmlzaWJpbGl0eTogXCJwdWJsaWNcIiB8IFwicHJpdmF0ZVwiO1xuICBwcml2YXRlIHNvbmFtdVN1cHBvcnRzQUNMOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IFMzRHJpdmVyT3B0aW9ucykge1xuICAgIHN1cGVyKG9wdGlvbnMpO1xuXG4gICAgLy8gUzNDbGllbnQg7J247Iqk7YS07IqkIOyggOyepSAoVXBsb2FkIO2BtOuemOyKpOyXkOyEnCDsgqzsmqkpXG4gICAgdGhpcy5zb25hbXVDbGllbnQgPSBcImNsaWVudFwiIGluIG9wdGlvbnMgPyBvcHRpb25zLmNsaWVudCA6IG5ldyBTM0NsaWVudChvcHRpb25zKTtcbiAgICB0aGlzLnNvbmFtdUJ1Y2tldCA9IG9wdGlvbnMuYnVja2V0O1xuICAgIHRoaXMuc29uYW11VmlzaWJpbGl0eSA9IG9wdGlvbnMudmlzaWJpbGl0eSA/PyBcInByaXZhdGVcIjtcbiAgICB0aGlzLnNvbmFtdVN1cHBvcnRzQUNMID0gb3B0aW9ucy5zdXBwb3J0c0FDTCA/PyBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiDsiqTtirjrprzsnYQgUzPsl5Ag7JeF66Gc65Oc7ZWp64uI64ukLlxuICAgKlxuICAgKiBAYXdzLXNkay9saWItc3RvcmFnZeydmCBVcGxvYWQg7YG0656Y7Iqk66W8IOyCrOyaqe2VmOyXrFxuICAgKiBtdWx0aXBhcnQgdXBsb2Fk66GcIOyymOumrO2VqeuLiOuLpC5cbiAgICovXG4gIG92ZXJyaWRlIGFzeW5jIHB1dFN0cmVhbShcbiAgICBrZXk6IHN0cmluZyxcbiAgICBjb250ZW50czogUmVhZGFibGUsXG4gICAgb3B0aW9ucz86IHtcbiAgICAgIGNvbnRlbnRUeXBlPzogc3RyaW5nO1xuICAgICAgdmlzaWJpbGl0eT86IFwicHVibGljXCIgfCBcInByaXZhdGVcIjtcbiAgICAgIGNhY2hlQ29udHJvbD86IHN0cmluZztcbiAgICAgIGNvbnRlbnREaXNwb3NpdGlvbj86IHN0cmluZztcbiAgICB9LFxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB2aXNpYmlsaXR5ID0gb3B0aW9ucz8udmlzaWJpbGl0eSA/PyB0aGlzLnNvbmFtdVZpc2liaWxpdHk7XG5cbiAgICBjb25zdCB1cGxvYWRQYXJhbXM6IE9wdGlvbnNbXCJwYXJhbXNcIl0gPSB7XG4gICAgICBCdWNrZXQ6IHRoaXMuc29uYW11QnVja2V0LFxuICAgICAgS2V5OiBrZXksXG4gICAgICBCb2R5OiBjb250ZW50cyxcbiAgICAgIENvbnRlbnRUeXBlOiBvcHRpb25zPy5jb250ZW50VHlwZSxcbiAgICAgIENhY2hlQ29udHJvbDogb3B0aW9ucz8uY2FjaGVDb250cm9sLFxuICAgICAgQ29udGVudERpc3Bvc2l0aW9uOiBvcHRpb25zPy5jb250ZW50RGlzcG9zaXRpb24sXG4gICAgfTtcblxuICAgIC8vIEFDTCDsp4Dsm5Ag7Iuc7JeQ66eMIOyEpOyglVxuICAgIGlmICh0aGlzLnNvbmFtdVN1cHBvcnRzQUNMKSB7XG4gICAgICB1cGxvYWRQYXJhbXMuQUNMID0gKHZpc2liaWxpdHkgPT09IFwicHVibGljXCIgPyBcInB1YmxpYy1yZWFkXCIgOiBcInByaXZhdGVcIikgYXMgT2JqZWN0Q2FubmVkQUNMO1xuICAgIH1cblxuICAgIGNvbnN0IHVwbG9hZCA9IG5ldyBVcGxvYWQoe1xuICAgICAgY2xpZW50OiB0aGlzLnNvbmFtdUNsaWVudCxcbiAgICAgIHBhcmFtczogdXBsb2FkUGFyYW1zLFxuICAgIH0pO1xuXG4gICAgYXdhaXQgdXBsb2FkLmRvbmUoKTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQW1CQSxJQUFhLGlCQUFiLGNBQW9DLFNBQVM7Q0FDM0M7Q0FDQTtDQUNBO0NBQ0E7Q0FFQSxZQUFZLFNBQTBCO0VBQ3BDLE1BQU0sT0FBTztFQUdiLEtBQUssZUFBZSxZQUFZLFVBQVUsUUFBUSxTQUFTLElBQUksU0FBUyxPQUFPO0VBQy9FLEtBQUssZUFBZSxRQUFRO0VBQzVCLEtBQUssbUJBQW1CLFFBQVEsY0FBYztFQUM5QyxLQUFLLG9CQUFvQixRQUFRLGVBQWU7Q0FDbEQ7Ozs7Ozs7Q0FRQSxNQUFlLFVBQ2IsS0FDQSxVQUNBLFNBTWU7RUFDZixNQUFNLGFBQWEsU0FBUyxjQUFjLEtBQUs7RUFFL0MsTUFBTSxlQUFrQztHQUN0QyxRQUFRLEtBQUs7R0FDYixLQUFLO0dBQ0wsTUFBTTtHQUNOLGFBQWEsU0FBUztHQUN0QixjQUFjLFNBQVM7R0FDdkIsb0JBQW9CLFNBQVM7RUFDL0I7RUFHQSxJQUFJLEtBQUssbUJBQ1AsYUFBYSxNQUFPLGVBQWUsV0FBVyxnQkFBZ0I7RUFRaEUsTUFBTSxJQUxhLE9BQU87R0FDeEIsUUFBUSxLQUFLO0dBQ2IsUUFBUTtFQUNWLENBRU0sQ0FBQSxDQUFPLEtBQUs7Q0FDcEI7QUFDRiJ9
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { __esmMin } from "../_virtual/
|
|
1
|
+
import { __esmMin } from "../_virtual/_rolldown/runtime.js";
|
|
2
2
|
import { assertDefined, init_utils } from "../utils/utils.js";
|
|
3
3
|
import { Disk } from "flydrive";
|
|
4
|
-
|
|
5
4
|
//#region src/storage/storage-manager.ts
|
|
6
5
|
var StorageManager;
|
|
7
6
|
var init_storage_manager = __esmMin((() => {
|
|
8
7
|
init_utils();
|
|
9
8
|
StorageManager = class {
|
|
10
|
-
|
|
9
|
+
config;
|
|
10
|
+
disks = /* @__PURE__ */ new Map();
|
|
11
11
|
constructor(config) {
|
|
12
12
|
this.config = config;
|
|
13
13
|
}
|
|
@@ -28,8 +28,8 @@ var init_storage_manager = __esmMin((() => {
|
|
|
28
28
|
}
|
|
29
29
|
};
|
|
30
30
|
}));
|
|
31
|
-
|
|
32
31
|
//#endregion
|
|
33
32
|
init_storage_manager();
|
|
34
33
|
export { StorageManager, init_storage_manager };
|
|
35
|
-
|
|
34
|
+
|
|
35
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS1tYW5hZ2VyLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdG9yYWdlL3N0b3JhZ2UtbWFuYWdlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXNrIH0gZnJvbSBcImZseWRyaXZlXCI7XG5cbmltcG9ydCB7IGFzc2VydERlZmluZWQgfSBmcm9tIFwiLi4vdXRpbHMvdXRpbHNcIjtcbmltcG9ydCB7IHR5cGUgRHJpdmVyS2V5IH0gZnJvbSBcIi4vZHJpdmVyc1wiO1xuaW1wb3J0IHsgdHlwZSBTdG9yYWdlQ29uZmlnIH0gZnJvbSBcIi4vdHlwZXNcIjtcblxuLyoqXG4gKiDsl6zrn6wg65SU7Iqk7YGs66W8IOq0gOumrO2VmOuKlCDrp6Tri4jsoIBcbiAqL1xuZXhwb3J0IGNsYXNzIFN0b3JhZ2VNYW5hZ2VyIHtcbiAgcHJpdmF0ZSBkaXNrczogTWFwPERyaXZlcktleSwgRGlzaz4gPSBuZXcgTWFwKCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjb25maWc6IFN0b3JhZ2VDb25maWcpIHt9XG5cbiAgLyoqXG4gICAqIOuUlOyKpO2BrCDsnbjsiqTthLTsiqQg67CY7ZmYIChsYXp5IGluaXRpYWxpemF0aW9uKVxuICAgKiBAcGFyYW0gZGlza05hbWUg65SU7Iqk7YGsIOydtOumhCAo7JeG7Jy866m0IGRlZmF1bHQpXG4gICAqL1xuICB1c2UoZGlza05hbWU6IERyaXZlcktleSk6IERpc2sge1xuICAgIGlmICghdGhpcy5kaXNrcy5oYXMoZGlza05hbWUpKSB7XG4gICAgICBjb25zdCBmYWN0b3J5ID0gdGhpcy5jb25maWcuZHJpdmVyc1tkaXNrTmFtZV07XG4gICAgICBpZiAoIWZhY3RvcnkpIHtcbiAgICAgICAgY29uc3QgYXZhaWxhYmxlID0gT2JqZWN0LmtleXModGhpcy5jb25maWcuZHJpdmVycykuam9pbihcIiwgXCIpO1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gZGlzazogXCIke2Rpc2tOYW1lfVwiLiBBdmFpbGFibGU6ICR7YXZhaWxhYmxlfWApO1xuICAgICAgfVxuICAgICAgdGhpcy5kaXNrcy5zZXQoZGlza05hbWUsIG5ldyBEaXNrKGZhY3RvcnkoKSkpO1xuICAgIH1cblxuICAgIHJldHVybiBhc3NlcnREZWZpbmVkKHRoaXMuZGlza3MuZ2V0KGRpc2tOYW1lKSwgYERpc2sgJHtkaXNrTmFtZX0gbm90IGZvdW5kYCk7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O1lBRThDO0NBT2pDLGlCQUFiLE1BQTRCO0VBR047RUFGcEIsd0JBQXNDLElBQUksSUFBSTtFQUU5QyxZQUFZLFFBQStCO0dBQXZCLEtBQUEsU0FBQTtFQUF3Qjs7Ozs7RUFNNUMsSUFBSSxVQUEyQjtHQUM3QixJQUFJLENBQUMsS0FBSyxNQUFNLElBQUksUUFBUSxHQUFHO0lBQzdCLE1BQU0sVUFBVSxLQUFLLE9BQU8sUUFBUTtJQUNwQyxJQUFJLENBQUMsU0FBUztLQUNaLE1BQU0sWUFBWSxPQUFPLEtBQUssS0FBSyxPQUFPLE9BQU8sQ0FBQyxDQUFDLEtBQUssSUFBSTtLQUM1RCxNQUFNLElBQUksTUFBTSxrQkFBa0IsU0FBUyxnQkFBZ0IsV0FBVztJQUN4RTtJQUNBLEtBQUssTUFBTSxJQUFJLFVBQVUsSUFBSSxLQUFLLFFBQVEsQ0FBQyxDQUFDO0dBQzlDO0dBRUEsT0FBTyxjQUFjLEtBQUssTUFBTSxJQUFJLFFBQVEsR0FBRyxRQUFRLFNBQVMsV0FBVztFQUM3RTtDQUNGIn0=
|
package/dist/storage/types.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export {};
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { __esmMin } from "../_virtual/
|
|
1
|
+
import { __esmMin } from "../_virtual/_rolldown/runtime.js";
|
|
2
2
|
import { BaseFile, init_base_file } from "./base-file.js";
|
|
3
|
-
|
|
4
3
|
//#region src/storage/uploaded-file.ts
|
|
5
4
|
var UploadedFile;
|
|
6
5
|
var init_uploaded_file = __esmMin((() => {
|
|
@@ -33,14 +32,13 @@ var init_uploaded_file = __esmMin((() => {
|
|
|
33
32
|
*/
|
|
34
33
|
async download() {
|
|
35
34
|
const { Sonamu } = await import("../api/sonamu.js");
|
|
36
|
-
const
|
|
37
|
-
const uint8Array = await disk.get(this._key);
|
|
35
|
+
const uint8Array = await Sonamu.storage.use(this._diskName).get(this._key);
|
|
38
36
|
return Buffer.from(uint8Array);
|
|
39
37
|
}
|
|
40
38
|
};
|
|
41
39
|
}));
|
|
42
|
-
|
|
43
40
|
//#endregion
|
|
44
41
|
init_uploaded_file();
|
|
45
42
|
export { UploadedFile, init_uploaded_file };
|
|
46
|
-
|
|
43
|
+
|
|
44
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkZWQtZmlsZS5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RvcmFnZS91cGxvYWRlZC1maWxlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VGaWxlIH0gZnJvbSBcIi4vYmFzZS1maWxlXCI7XG5pbXBvcnQgeyB0eXBlIERyaXZlcktleSB9IGZyb20gXCIuL2RyaXZlcnNcIjtcblxuLyoqXG4gKiBTdHJlYW0g66qo65Oc66GcIOyXheuhnOuTnOuQnCDtjIzsnbxcbiAqIOydtOuvuCDsoIDsnqXshozsl5Ag7Iqk7Yq466as67CNIOyZhOujjOuQnCDsg4Htg5zroZwsIHVybC9rZXkg65OxIOuplO2DgOuNsOydtO2EsOunjCDsoJHqt7wg6rCA64ql7ZWp64uI64ukLlxuICovXG5leHBvcnQgY2xhc3MgVXBsb2FkZWRGaWxlIGV4dGVuZHMgQmFzZUZpbGUge1xuICBwcml2YXRlIF9rZXk6IHN0cmluZztcbiAgcHJpdmF0ZSBfZGlza05hbWU6IERyaXZlcktleTtcblxuICBjb25zdHJ1Y3RvcihwYXJhbXM6IHtcbiAgICBmaWxlbmFtZTogc3RyaW5nO1xuICAgIG1pbWV0eXBlOiBzdHJpbmc7XG4gICAgc2l6ZTogbnVtYmVyO1xuICAgIHVybDogc3RyaW5nO1xuICAgIHNpZ25lZFVybDogc3RyaW5nO1xuICAgIGtleTogc3RyaW5nO1xuICAgIGRpc2tOYW1lOiBEcml2ZXJLZXk7XG4gIH0pIHtcbiAgICBzdXBlcih7XG4gICAgICBmaWxlbmFtZTogcGFyYW1zLmZpbGVuYW1lLFxuICAgICAgbWltZXR5cGU6IHBhcmFtcy5taW1ldHlwZSxcbiAgICAgIHNpemU6IHBhcmFtcy5zaXplLFxuICAgICAgdXJsOiBwYXJhbXMudXJsLFxuICAgICAgc2lnbmVkVXJsOiBwYXJhbXMuc2lnbmVkVXJsLFxuICAgIH0pO1xuICAgIHRoaXMuX2tleSA9IHBhcmFtcy5rZXk7XG4gICAgdGhpcy5fZGlza05hbWUgPSBwYXJhbXMuZGlza05hbWU7XG4gIH1cblxuICAvKiog7KCA7J6l7IaMIOuCtCDtgqQgKi9cbiAgZ2V0IGtleSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9rZXk7XG4gIH1cblxuICAvKiog7KCA7J6l65CcIOuUlOyKpO2BrCDsnbTrpoQgKi9cbiAgZ2V0IGRpc2tOYW1lKCk6IERyaXZlcktleSB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc2tOYW1lO1xuICB9XG5cbiAgLyoqXG4gICAqIOyggOyepeyGjOyXkOyEnCDtjIzsnbzsnYQg64uk7Jq066Gc65Oc7ZWp64uI64ukLlxuICAgKiDsiqTtirjrprwg66qo65Oc66GcIOyXheuhnOuTnOuQnCDtjIzsnbzsnYQg64KY7KSR7JeQIOyymOumrO2VtOyVvCDtlaAg65WMIOyCrOyaqe2VqeuLiOuLpC5cbiAgICovXG4gIGFzeW5jIGRvd25sb2FkKCk6IFByb21pc2U8QnVmZmVyPiB7XG4gICAgY29uc3QgeyBTb25hbXUgfSA9IGF3YWl0IGltcG9ydChcIi4uL2FwaS9zb25hbXVcIik7XG4gICAgY29uc3QgZGlzayA9IFNvbmFtdS5zdG9yYWdlLnVzZSh0aGlzLl9kaXNrTmFtZSk7XG5cbiAgICBjb25zdCB1aW50OEFycmF5ID0gYXdhaXQgZGlzay5nZXQodGhpcy5fa2V5KTtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20odWludDhBcnJheSk7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Z0JBQXNDO0NBT3pCLGVBQWIsY0FBa0MsU0FBUztFQUN6QztFQUNBO0VBRUEsWUFBWSxRQVFUO0dBQ0QsTUFBTTtJQUNKLFVBQVUsT0FBTztJQUNqQixVQUFVLE9BQU87SUFDakIsTUFBTSxPQUFPO0lBQ2IsS0FBSyxPQUFPO0lBQ1osV0FBVyxPQUFPO0dBQ3BCLENBQUM7R0FDRCxLQUFLLE9BQU8sT0FBTztHQUNuQixLQUFLLFlBQVksT0FBTztFQUMxQjs7RUFHQSxJQUFJLE1BQWM7R0FDaEIsT0FBTyxLQUFLO0VBQ2Q7O0VBR0EsSUFBSSxXQUFzQjtHQUN4QixPQUFPLEtBQUs7RUFDZDs7Ozs7RUFNQSxNQUFNLFdBQTRCO0dBQ2hDLE1BQU0sRUFBRSxXQUFXLE1BQU0sT0FBTztHQUdoQyxNQUFNLGFBQWEsTUFGTixPQUFPLFFBQVEsSUFBSSxLQUFLLFNBRVosQ0FBQSxDQUFLLElBQUksS0FBSyxJQUFJO0dBQzNDLE9BQU8sT0FBTyxLQUFLLFVBQVU7RUFDL0I7Q0FDRiJ9
|
package/dist/stream/index.js
CHANGED
|
@@ -8,7 +8,6 @@ import { InMemoryWebSocketPresenceStore, init_ws_presence_store } from "./ws-pre
|
|
|
8
8
|
import { WebSocketRegistry, init_ws_registry } from "./ws-registry.js";
|
|
9
9
|
import { WebSocketRuntime, createWebSocketRuntime, init_ws } from "./ws.js";
|
|
10
10
|
import "./ws-core.js";
|
|
11
|
-
|
|
12
11
|
//#region src/stream/index.ts
|
|
13
12
|
init_sse();
|
|
14
13
|
init_ws_audience();
|
|
@@ -19,7 +18,7 @@ init_ws_telemetry_memory();
|
|
|
19
18
|
init_ws_telemetry_trace();
|
|
20
19
|
init_ws();
|
|
21
20
|
init_ws_registry();
|
|
22
|
-
|
|
23
21
|
//#endregion
|
|
24
22
|
export { DEFAULT_TRACE_OPTIONS, EMPTY_METRICS_SNAPSHOT, InMemoryEventStore, InMemoryMetricStore, InMemorySpanStore, InMemoryWebSocketPresenceStore, NoopWebSocketClusterBus, NoopWebSocketTelemetryController, WebSocketAudience, WebSocketRegistry, WebSocketRuntime, WebSocketTelemetryControllerImpl, createMockSSEFactory, createSSEFactory, createWebSocketRuntime, createWebSocketTelemetryController, formatTraceParent, generateSpanId, generateTraceId, isPromiseLike, parseTraceParent };
|
|
23
|
+
|
|
25
24
|
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N0cmVhbS9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9zc2VcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3dzLWF1ZGllbmNlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi93cy1jbHVzdGVyLWJ1c1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vd3MtY29yZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vd3MtcHJlc2VuY2Utc3RvcmVcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3dzLXRlbGVtZXRyeVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vd3MtdGVsZW1ldHJ5LW1lbW9yeVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vd3MtdGVsZW1ldHJ5LXRyYWNlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi93c1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vd3MtcmVnaXN0cnlcIjtcbiJdLCJtYXBwaW5ncyI6IiJ9
|
package/dist/stream/sse.js
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { __esmMin } from "../_virtual/
|
|
2
|
-
|
|
1
|
+
import { __esmMin } from "../_virtual/_rolldown/runtime.js";
|
|
3
2
|
//#region src/stream/sse.ts
|
|
4
3
|
function createSSEFactory(socket, reply, _events) {
|
|
5
4
|
return new SSEConnectionImpl(socket, reply);
|
|
@@ -17,6 +16,8 @@ function createMockSSEFactory(_events) {
|
|
|
17
16
|
var SSEConnectionImpl;
|
|
18
17
|
var init_sse = __esmMin((() => {
|
|
19
18
|
SSEConnectionImpl = class {
|
|
19
|
+
socket;
|
|
20
|
+
reply;
|
|
20
21
|
_closed = false;
|
|
21
22
|
_closeCallbacks = [];
|
|
22
23
|
markClosed = () => {
|
|
@@ -32,9 +33,7 @@ var init_sse = __esmMin((() => {
|
|
|
32
33
|
fireCloseCallbacks() {
|
|
33
34
|
const callbacks = this._closeCallbacks;
|
|
34
35
|
this._closeCallbacks = [];
|
|
35
|
-
for (const cb of callbacks)
|
|
36
|
-
cb();
|
|
37
|
-
}
|
|
36
|
+
for (const cb of callbacks) cb();
|
|
38
37
|
}
|
|
39
38
|
constructor(socket, reply) {
|
|
40
39
|
this.socket = socket;
|
|
@@ -43,18 +42,14 @@ var init_sse = __esmMin((() => {
|
|
|
43
42
|
this.socket.on("error", this.markClosed);
|
|
44
43
|
}
|
|
45
44
|
publish(event, data) {
|
|
46
|
-
if (this._closed)
|
|
47
|
-
return;
|
|
48
|
-
}
|
|
45
|
+
if (this._closed) return;
|
|
49
46
|
this.reply.sse({
|
|
50
47
|
event,
|
|
51
48
|
data: JSON.stringify(data)
|
|
52
49
|
});
|
|
53
50
|
}
|
|
54
51
|
async end() {
|
|
55
|
-
if (this._closed)
|
|
56
|
-
return;
|
|
57
|
-
}
|
|
52
|
+
if (this._closed) return;
|
|
58
53
|
this._closed = true;
|
|
59
54
|
this.socket.off("close", this.markClosed);
|
|
60
55
|
this.socket.off("error", this.markClosed);
|
|
@@ -68,8 +63,8 @@ var init_sse = __esmMin((() => {
|
|
|
68
63
|
}
|
|
69
64
|
};
|
|
70
65
|
}));
|
|
71
|
-
|
|
72
66
|
//#endregion
|
|
73
67
|
init_sse();
|
|
74
68
|
export { createMockSSEFactory, createSSEFactory, init_sse };
|
|
75
|
-
|
|
69
|
+
|
|
70
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3NlLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdHJlYW0vc3NlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgRmFzdGlmeVJlcGx5LCB0eXBlIEZhc3RpZnlSZXF1ZXN0IH0gZnJvbSBcImZhc3RpZnlcIjtcbmltcG9ydCB7IHR5cGUgeiB9IGZyb20gXCJ6b2RcIjtcblxuLy8gTk9URShIYXplLCAyNTExMDYpOiBjb250ZXh0IHByb3ZpZGVy7JeQ7IScIOyduOyekOulvCDssYTsm4zso7zrqbQgY3JlYXRlU1NFKGV2ZW50cynrp4zsnLzroZwg7IKs7JqpIOqwgOuKpVxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVNTRUZhY3Rvcnk8VCBleHRlbmRzIHouWm9kT2JqZWN0PihcbiAgc29ja2V0OiBGYXN0aWZ5UmVxdWVzdFtcInNvY2tldFwiXSxcbiAgcmVwbHk6IEZhc3RpZnlSZXBseSxcbiAgX2V2ZW50czogVCxcbik6IFNTRUNvbm5lY3Rpb248VD4ge1xuICByZXR1cm4gbmV3IFNTRUNvbm5lY3Rpb25JbXBsPFQ+KHNvY2tldCwgcmVwbHkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTW9ja1NTRUZhY3Rvcnk8VCBleHRlbmRzIHouWm9kT2JqZWN0PihfZXZlbnRzOiBUKTogU1NFQ29ubmVjdGlvbjxUPiB7XG4gIHJldHVybiB7XG4gICAgZ2V0IGNsb3NlZCgpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9LFxuICAgIG9uQ2xvc2U6IChfY2FsbGJhY2spID0+IHt9LFxuICAgIHB1Ymxpc2g6IChfZXZlbnQsIF9kYXRhKSA9PiB7fSxcbiAgICBlbmQ6ICgpID0+IFByb21pc2UucmVzb2x2ZSgpLFxuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNTRUNvbm5lY3Rpb248VCBleHRlbmRzIHouWm9kT2JqZWN0PiB7XG4gIGdldCBjbG9zZWQoKTogYm9vbGVhbjtcbiAgb25DbG9zZShjYWxsYmFjazogKCkgPT4gdm9pZCk6IHZvaWQ7XG4gIHB1Ymxpc2g8SyBleHRlbmRzIGtleW9mIHouaW5mZXI8VD4+KGV2ZW50OiBLLCBkYXRhOiB6LmluZmVyPFQ+W0tdKTogdm9pZDtcbiAgZW5kKCk6IFByb21pc2U8dm9pZD47XG59XG5cbmNsYXNzIFNTRUNvbm5lY3Rpb25JbXBsPFQgZXh0ZW5kcyB6LlpvZE9iamVjdD4gaW1wbGVtZW50cyBTU0VDb25uZWN0aW9uPFQ+IHtcbiAgcHJpdmF0ZSBfY2xvc2VkID0gZmFsc2U7XG4gIHByaXZhdGUgX2Nsb3NlQ2FsbGJhY2tzOiBBcnJheTwoKSA9PiB2b2lkPiA9IFtdO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgbWFya0Nsb3NlZCA9ICgpID0+IHtcbiAgICB0aGlzLl9jbG9zZWQgPSB0cnVlO1xuICAgIHRoaXMuZmlyZUNsb3NlQ2FsbGJhY2tzKCk7XG4gIH07XG5cbiAgZ2V0IGNsb3NlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fY2xvc2VkO1xuICB9XG5cbiAgb25DbG9zZShjYWxsYmFjazogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMuX2Nsb3NlQ2FsbGJhY2tzLnB1c2goY2FsbGJhY2spO1xuICB9XG5cbiAgLy8g7L2c67Cx7J2EIO2VnCDrsojrp4wg7Iuk7ZaJ7ZWY6rOgIOuwsOyXtOydhCDruYTsm4wg7KSR67O1IO2YuOy2nOydhCDrsKnsp4BcbiAgcHJpdmF0ZSBmaXJlQ2xvc2VDYWxsYmFja3MoKTogdm9pZCB7XG4gICAgY29uc3QgY2FsbGJhY2tzID0gdGhpcy5fY2xvc2VDYWxsYmFja3M7XG4gICAgdGhpcy5fY2xvc2VDYWxsYmFja3MgPSBbXTtcbiAgICBmb3IgKGNvbnN0IGNiIG9mIGNhbGxiYWNrcykge1xuICAgICAgY2IoKTtcbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNvY2tldDogRmFzdGlmeVJlcXVlc3RbXCJzb2NrZXRcIl0sXG4gICAgcHJpdmF0ZSByZWFkb25seSByZXBseTogRmFzdGlmeVJlcGx5LFxuICApIHtcbiAgICB0aGlzLnNvY2tldC5vbihcImNsb3NlXCIsIHRoaXMubWFya0Nsb3NlZCk7XG4gICAgdGhpcy5zb2NrZXQub24oXCJlcnJvclwiLCB0aGlzLm1hcmtDbG9zZWQpO1xuICB9XG5cbiAgcHVibGlzaDxLIGV4dGVuZHMga2V5b2Ygei5pbmZlcjxUPj4oZXZlbnQ6IEssIGRhdGE6IHouaW5mZXI8VD5bS10pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fY2xvc2VkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5yZXBseS5zc2Uoe1xuICAgICAgZXZlbnQ6IGV2ZW50IGFzIHN0cmluZyxcbiAgICAgIGRhdGE6IEpTT04uc3RyaW5naWZ5KGRhdGEpLFxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgZW5kKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLl9jbG9zZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9jbG9zZWQgPSB0cnVlO1xuICAgIHRoaXMuc29ja2V0Lm9mZihcImNsb3NlXCIsIHRoaXMubWFya0Nsb3NlZCk7XG4gICAgdGhpcy5zb2NrZXQub2ZmKFwiZXJyb3JcIiwgdGhpcy5tYXJrQ2xvc2VkKTtcbiAgICB0aGlzLmZpcmVDbG9zZUNhbGxiYWNrcygpO1xuXG4gICAgdGhpcy5yZXBseS5zc2Uoe1xuICAgICAgZXZlbnQ6IFwiZW5kXCIsXG4gICAgICBkYXRhOiBcIkVORFwiLFxuICAgIH0pO1xuXG4gICAgYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgMjAwKSk7XG4gICAgdGhpcy5yZXBseS5yYXcuZW5kKCk7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7QUFJQSxTQUFnQixpQkFDZCxRQUNBLE9BQ0EsU0FDa0I7Q0FDbEIsT0FBTyxJQUFJLGtCQUFxQixRQUFRLEtBQUs7QUFDL0M7QUFFQSxTQUFnQixxQkFBNEMsU0FBOEI7Q0FDeEYsT0FBTztFQUNMLElBQUksU0FBUztHQUNYLE9BQU87RUFDVDtFQUNBLFVBQVUsY0FBYyxDQUFDO0VBQ3pCLFVBQVUsUUFBUSxVQUFVLENBQUM7RUFDN0IsV0FBVyxRQUFRLFFBQVE7Q0FDN0I7QUFDRjs7O0NBU00sb0JBQU4sTUFBMkU7RUEyQnREO0VBQ0E7RUEzQm5CLFVBQWtCO0VBQ2xCLGtCQUE2QyxDQUFDO0VBRTlDLG1CQUFvQztHQUNsQyxLQUFLLFVBQVU7R0FDZixLQUFLLG1CQUFtQjtFQUMxQjtFQUVBLElBQUksU0FBa0I7R0FDcEIsT0FBTyxLQUFLO0VBQ2Q7RUFFQSxRQUFRLFVBQTRCO0dBQ2xDLEtBQUssZ0JBQWdCLEtBQUssUUFBUTtFQUNwQztFQUdBLHFCQUFtQztHQUNqQyxNQUFNLFlBQVksS0FBSztHQUN2QixLQUFLLGtCQUFrQixDQUFDO0dBQ3hCLEtBQUssTUFBTSxNQUFNLFdBQ2YsR0FBRztFQUVQO0VBRUEsWUFDRSxRQUNBLE9BQ0E7R0FGaUIsS0FBQSxTQUFBO0dBQ0EsS0FBQSxRQUFBO0dBRWpCLEtBQUssT0FBTyxHQUFHLFNBQVMsS0FBSyxVQUFVO0dBQ3ZDLEtBQUssT0FBTyxHQUFHLFNBQVMsS0FBSyxVQUFVO0VBQ3pDO0VBRUEsUUFBb0MsT0FBVSxNQUEyQjtHQUN2RSxJQUFJLEtBQUssU0FDUDtHQUdGLEtBQUssTUFBTSxJQUFJO0lBQ047SUFDUCxNQUFNLEtBQUssVUFBVSxJQUFJO0dBQzNCLENBQUM7RUFDSDtFQUVBLE1BQU0sTUFBcUI7R0FDekIsSUFBSSxLQUFLLFNBQ1A7R0FHRixLQUFLLFVBQVU7R0FDZixLQUFLLE9BQU8sSUFBSSxTQUFTLEtBQUssVUFBVTtHQUN4QyxLQUFLLE9BQU8sSUFBSSxTQUFTLEtBQUssVUFBVTtHQUN4QyxLQUFLLG1CQUFtQjtHQUV4QixLQUFLLE1BQU0sSUFBSTtJQUNiLE9BQU87SUFDUCxNQUFNO0dBQ1IsQ0FBQztHQUVELE1BQU0sSUFBSSxTQUFTLFlBQVksV0FBVyxTQUFTLEdBQUcsQ0FBQztHQUN2RCxLQUFLLE1BQU0sSUFBSSxJQUFJO0VBQ3JCO0NBQ0YifQ==
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import { __esmMin } from "../_virtual/
|
|
2
|
-
|
|
1
|
+
import { __esmMin } from "../_virtual/_rolldown/runtime.js";
|
|
3
2
|
//#region src/stream/ws-audience-resolver.ts
|
|
4
3
|
var WebSocketAudienceResolver;
|
|
5
4
|
var init_ws_audience_resolver = __esmMin((() => {
|
|
6
5
|
WebSocketAudienceResolver = class {
|
|
6
|
+
options;
|
|
7
7
|
constructor(options) {
|
|
8
8
|
this.options = options;
|
|
9
9
|
}
|
|
10
10
|
resolve(audience) {
|
|
11
11
|
const localSessionIds = [];
|
|
12
|
-
const remoteNodeIds = new Set();
|
|
12
|
+
const remoteNodeIds = /* @__PURE__ */ new Set();
|
|
13
13
|
for (const meta of this.options.presenceStore.queryAudience(audience)) {
|
|
14
14
|
if (meta.nodeId === this.options.nodeId) {
|
|
15
15
|
localSessionIds.push(meta.sessionId);
|
|
@@ -24,8 +24,8 @@ var init_ws_audience_resolver = __esmMin((() => {
|
|
|
24
24
|
}
|
|
25
25
|
};
|
|
26
26
|
}));
|
|
27
|
-
|
|
28
27
|
//#endregion
|
|
29
28
|
init_ws_audience_resolver();
|
|
30
29
|
export { WebSocketAudienceResolver, init_ws_audience_resolver };
|
|
31
|
-
|
|
30
|
+
|
|
31
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3MtYXVkaWVuY2UtcmVzb2x2ZXIuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N0cmVhbS93cy1hdWRpZW5jZS1yZXNvbHZlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIFdlYlNvY2tldEF1ZGllbmNlIH0gZnJvbSBcIi4vd3MtYXVkaWVuY2VcIjtcbmltcG9ydCB7IHR5cGUgV2ViU29ja2V0UHJlc2VuY2VTdG9yZSB9IGZyb20gXCIuL3dzLXByZXNlbmNlLXN0b3JlXCI7XG5cbmV4cG9ydCB0eXBlIFdlYlNvY2tldFJvdXRpbmdQbGFuID0ge1xuICBsb2NhbFNlc3Npb25JZHM6IHN0cmluZ1tdO1xuICByZW1vdGVOb2RlSWRzOiBzdHJpbmdbXTtcbn07XG5cbmV4cG9ydCBjbGFzcyBXZWJTb2NrZXRBdWRpZW5jZVJlc29sdmVyIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBvcHRpb25zOiB7XG4gICAgICBub2RlSWQ6IHN0cmluZztcbiAgICAgIHByZXNlbmNlU3RvcmU6IFdlYlNvY2tldFByZXNlbmNlU3RvcmU7XG4gICAgfSxcbiAgKSB7fVxuXG4gIHJlc29sdmUoYXVkaWVuY2U6IFdlYlNvY2tldEF1ZGllbmNlKTogV2ViU29ja2V0Um91dGluZ1BsYW4ge1xuICAgIGNvbnN0IGxvY2FsU2Vzc2lvbklkczogc3RyaW5nW10gPSBbXTtcbiAgICBjb25zdCByZW1vdGVOb2RlSWRzID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbiAgICBmb3IgKGNvbnN0IG1ldGEgb2YgdGhpcy5vcHRpb25zLnByZXNlbmNlU3RvcmUucXVlcnlBdWRpZW5jZShhdWRpZW5jZSkpIHtcbiAgICAgIGlmIChtZXRhLm5vZGVJZCA9PT0gdGhpcy5vcHRpb25zLm5vZGVJZCkge1xuICAgICAgICBsb2NhbFNlc3Npb25JZHMucHVzaChtZXRhLnNlc3Npb25JZCk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICByZW1vdGVOb2RlSWRzLmFkZChtZXRhLm5vZGVJZCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGxvY2FsU2Vzc2lvbklkcyxcbiAgICAgIHJlbW90ZU5vZGVJZHM6IFsuLi5yZW1vdGVOb2RlSWRzXSxcbiAgICB9O1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Q0FRYSw0QkFBYixNQUF1QztFQUVsQjtFQURuQixZQUNFLFNBSUE7R0FKaUIsS0FBQSxVQUFBO0VBSWhCO0VBRUgsUUFBUSxVQUFtRDtHQUN6RCxNQUFNLGtCQUE0QixDQUFDO0dBQ25DLE1BQU0sZ0NBQWdCLElBQUksSUFBWTtHQUV0QyxLQUFLLE1BQU0sUUFBUSxLQUFLLFFBQVEsY0FBYyxjQUFjLFFBQVEsR0FBRztJQUNyRSxJQUFJLEtBQUssV0FBVyxLQUFLLFFBQVEsUUFBUTtLQUN2QyxnQkFBZ0IsS0FBSyxLQUFLLFNBQVM7S0FDbkM7SUFDRjtJQUVBLGNBQWMsSUFBSSxLQUFLLE1BQU07R0FDL0I7R0FFQSxPQUFPO0lBQ0w7SUFDQSxlQUFlLENBQUMsR0FBRyxhQUFhO0dBQ2xDO0VBQ0Y7Q0FDRiJ9
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { __esmMin } from "../_virtual/
|
|
2
|
-
|
|
1
|
+
import { __esmMin } from "../_virtual/_rolldown/runtime.js";
|
|
3
2
|
//#region src/stream/ws-audience.ts
|
|
4
3
|
var WebSocketAudience;
|
|
5
4
|
var init_ws_audience = __esmMin((() => {
|
|
@@ -39,8 +38,8 @@ var init_ws_audience = __esmMin((() => {
|
|
|
39
38
|
}
|
|
40
39
|
};
|
|
41
40
|
}));
|
|
42
|
-
|
|
43
41
|
//#endregion
|
|
44
42
|
init_ws_audience();
|
|
45
43
|
export { WebSocketAudience, init_ws_audience };
|
|
46
|
-
|
|
44
|
+
|
|
45
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3MtYXVkaWVuY2UuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N0cmVhbS93cy1hdWRpZW5jZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIFdlYlNvY2tldFJvb21JZCwgdHlwZSBXZWJTb2NrZXRVc2VySWQgfSBmcm9tIFwiLi93cy1jb3JlXCI7XG5cbmV4cG9ydCB0eXBlIFdlYlNvY2tldEF1ZGllbmNlID1cbiAgfCB7XG4gICAgICB0eXBlOiBcImFsbFwiO1xuICAgICAgbmFtZXNwYWNlPzogc3RyaW5nO1xuICAgIH1cbiAgfCB7XG4gICAgICB0eXBlOiBcInJvb21cIjtcbiAgICAgIHJvb21JZDogV2ViU29ja2V0Um9vbUlkO1xuICAgICAgbmFtZXNwYWNlPzogc3RyaW5nO1xuICAgIH1cbiAgfCB7XG4gICAgICB0eXBlOiBcInVzZXJcIjtcbiAgICAgIHVzZXJJZDogV2ViU29ja2V0VXNlcklkO1xuICAgICAgbmFtZXNwYWNlPzogc3RyaW5nO1xuICAgIH1cbiAgfCB7XG4gICAgICB0eXBlOiBcImNvbm5lY3Rpb25zXCI7XG4gICAgICBjb25uZWN0aW9uSWRzOiBzdHJpbmdbXTtcbiAgICAgIG5hbWVzcGFjZT86IHN0cmluZztcbiAgICB9XG4gIHwge1xuICAgICAgdHlwZTogXCJ1bmlvblwiO1xuICAgICAgYXVkaWVuY2VzOiBXZWJTb2NrZXRBdWRpZW5jZVtdO1xuICAgIH07XG5cbmV4cG9ydCBjb25zdCBXZWJTb2NrZXRBdWRpZW5jZSA9IHtcbiAgYWxsKG5hbWVzcGFjZT86IHN0cmluZyk6IFdlYlNvY2tldEF1ZGllbmNlIHtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJhbGxcIixcbiAgICAgIG5hbWVzcGFjZSxcbiAgICB9O1xuICB9LFxuICByb29tKHJvb21JZDogV2ViU29ja2V0Um9vbUlkLCBuYW1lc3BhY2U/OiBzdHJpbmcpOiBXZWJTb2NrZXRBdWRpZW5jZSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwicm9vbVwiLFxuICAgICAgcm9vbUlkLFxuICAgICAgbmFtZXNwYWNlLFxuICAgIH07XG4gIH0sXG4gIHVzZXIodXNlcklkOiBXZWJTb2NrZXRVc2VySWQsIG5hbWVzcGFjZT86IHN0cmluZyk6IFdlYlNvY2tldEF1ZGllbmNlIHtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJ1c2VyXCIsXG4gICAgICB1c2VySWQsXG4gICAgICBuYW1lc3BhY2UsXG4gICAgfTtcbiAgfSxcbiAgY29ubmVjdGlvbnMoY29ubmVjdGlvbklkczogc3RyaW5nW10sIG5hbWVzcGFjZT86IHN0cmluZyk6IFdlYlNvY2tldEF1ZGllbmNlIHtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogXCJjb25uZWN0aW9uc1wiLFxuICAgICAgY29ubmVjdGlvbklkcyxcbiAgICAgIG5hbWVzcGFjZSxcbiAgICB9O1xuICB9LFxuICB1bmlvbiguLi5hdWRpZW5jZXM6IFdlYlNvY2tldEF1ZGllbmNlW10pOiBXZWJTb2NrZXRBdWRpZW5jZSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwidW5pb25cIixcbiAgICAgIGF1ZGllbmNlcyxcbiAgICB9O1xuICB9LFxufTtcbiJdLCJtYXBwaW5ncyI6Ijs7OztDQTJCYSxvQkFBb0I7RUFDL0IsSUFBSSxXQUF1QztHQUN6QyxPQUFPO0lBQ0wsTUFBTTtJQUNOO0dBQ0Y7RUFDRjtFQUNBLEtBQUssUUFBeUIsV0FBdUM7R0FDbkUsT0FBTztJQUNMLE1BQU07SUFDTjtJQUNBO0dBQ0Y7RUFDRjtFQUNBLEtBQUssUUFBeUIsV0FBdUM7R0FDbkUsT0FBTztJQUNMLE1BQU07SUFDTjtJQUNBO0dBQ0Y7RUFDRjtFQUNBLFlBQVksZUFBeUIsV0FBdUM7R0FDMUUsT0FBTztJQUNMLE1BQU07SUFDTjtJQUNBO0dBQ0Y7RUFDRjtFQUNBLE1BQU0sR0FBRyxXQUFtRDtHQUMxRCxPQUFPO0lBQ0wsTUFBTTtJQUNOO0dBQ0Y7RUFDRjtDQUNGIn0=
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { __esmMin } from "../_virtual/
|
|
2
|
-
|
|
1
|
+
import { __esmMin } from "../_virtual/_rolldown/runtime.js";
|
|
3
2
|
//#region src/stream/ws-cluster-bus.ts
|
|
4
3
|
var NoopWebSocketClusterBus;
|
|
5
4
|
var init_ws_cluster_bus = __esmMin((() => {
|
|
@@ -11,8 +10,8 @@ var init_ws_cluster_bus = __esmMin((() => {
|
|
|
11
10
|
shutdown() {}
|
|
12
11
|
};
|
|
13
12
|
}));
|
|
14
|
-
|
|
15
13
|
//#endregion
|
|
16
14
|
init_ws_cluster_bus();
|
|
17
15
|
export { NoopWebSocketClusterBus, init_ws_cluster_bus };
|
|
18
|
-
|
|
16
|
+
|
|
17
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3MtY2x1c3Rlci1idXMuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N0cmVhbS93cy1jbHVzdGVyLWJ1cy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIFdlYlNvY2tldEF1ZGllbmNlIH0gZnJvbSBcIi4vd3MtYXVkaWVuY2VcIjtcblxuZXhwb3J0IHR5cGUgV2ViU29ja2V0Q2x1c3RlckVudmVsb3BlID0ge1xuICBpZDogc3RyaW5nO1xuICBzb3VyY2VOb2RlSWQ6IHN0cmluZztcbiAgdGFyZ2V0Tm9kZUlkcz86IHN0cmluZ1tdO1xuICBuYW1lc3BhY2U/OiBzdHJpbmc7XG4gIGF1ZGllbmNlOiBXZWJTb2NrZXRBdWRpZW5jZTtcbiAgZXZlbnQ6IHN0cmluZztcbiAgZGF0YTogdW5rbm93bjtcbiAgZW1pdHRlZEF0OiBudW1iZXI7XG59O1xuXG5leHBvcnQgdHlwZSBXZWJTb2NrZXRDbHVzdGVyRW52ZWxvcGVIYW5kbGVyID0gKFxuICBlbnZlbG9wZTogV2ViU29ja2V0Q2x1c3RlckVudmVsb3BlLFxuKSA9PiB2b2lkIHwgUHJvbWlzZTx2b2lkPjtcblxuZXhwb3J0IGludGVyZmFjZSBXZWJTb2NrZXRDbHVzdGVyQnVzIHtcbiAgcHVibGlzaChlbnZlbG9wZTogV2ViU29ja2V0Q2x1c3RlckVudmVsb3BlKTogdm9pZCB8IFByb21pc2U8dm9pZD47XG4gIHN1YnNjcmliZShoYW5kbGVyOiBXZWJTb2NrZXRDbHVzdGVyRW52ZWxvcGVIYW5kbGVyKTogKCkgPT4gdm9pZDtcbiAgc2h1dGRvd24oKTogdm9pZCB8IFByb21pc2U8dm9pZD47XG59XG5cbmV4cG9ydCBjbGFzcyBOb29wV2ViU29ja2V0Q2x1c3RlckJ1cyBpbXBsZW1lbnRzIFdlYlNvY2tldENsdXN0ZXJCdXMge1xuICBwdWJsaXNoKF9lbnZlbG9wZTogV2ViU29ja2V0Q2x1c3RlckVudmVsb3BlKTogdm9pZCB7fVxuXG4gIHN1YnNjcmliZShfaGFuZGxlcjogV2ViU29ja2V0Q2x1c3RlckVudmVsb3BlSGFuZGxlcik6ICgpID0+IHZvaWQge1xuICAgIHJldHVybiAoKSA9PiB7fTtcbiAgfVxuXG4gIHNodXRkb3duKCk6IHZvaWQge31cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7OztDQXVCYSwwQkFBYixNQUFvRTtFQUNsRSxRQUFRLFdBQTJDLENBQUM7RUFFcEQsVUFBVSxVQUF1RDtHQUMvRCxhQUFhLENBQUM7RUFDaEI7RUFFQSxXQUFpQixDQUFDO0NBQ3BCIn0=
|
package/dist/stream/ws-core.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export {};
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { __esmMin } from "../_virtual/
|
|
1
|
+
import { __esmMin } from "../_virtual/_rolldown/runtime.js";
|
|
2
2
|
import { NoopWebSocketTelemetryController, init_ws_telemetry } from "./ws-telemetry.js";
|
|
3
3
|
import { randomUUID } from "node:crypto";
|
|
4
|
-
|
|
5
4
|
//#region src/stream/ws-delivery.ts
|
|
6
5
|
var FAN_OUT_BATCH_SIZE, WebSocketDeliveryEngine;
|
|
7
6
|
var init_ws_delivery = __esmMin((() => {
|
|
8
7
|
init_ws_telemetry();
|
|
9
8
|
FAN_OUT_BATCH_SIZE = 250;
|
|
10
9
|
WebSocketDeliveryEngine = class {
|
|
10
|
+
options;
|
|
11
11
|
pendingFanOutJobs = [];
|
|
12
12
|
fanOutFlushScheduled = false;
|
|
13
13
|
unsubscribe;
|
|
@@ -40,9 +40,7 @@ var init_ws_delivery = __esmMin((() => {
|
|
|
40
40
|
tags: { audience_type: audience.type }
|
|
41
41
|
});
|
|
42
42
|
this.enqueueFanOut(localTargets, event, data);
|
|
43
|
-
if (routingPlan.remoteNodeIds.length === 0)
|
|
44
|
-
return;
|
|
45
|
-
}
|
|
43
|
+
if (routingPlan.remoteNodeIds.length === 0) return;
|
|
46
44
|
const envelope = {
|
|
47
45
|
id: randomUUID(),
|
|
48
46
|
sourceNodeId: this.options.nodeId,
|
|
@@ -97,9 +95,7 @@ var init_ws_delivery = __esmMin((() => {
|
|
|
97
95
|
}
|
|
98
96
|
getTelemetrySnapshot() {
|
|
99
97
|
let pendingFanOutTargets = 0;
|
|
100
|
-
for (const job of this.pendingFanOutJobs)
|
|
101
|
-
pendingFanOutTargets += Math.max(job.targets.length - job.cursor, 0);
|
|
102
|
-
}
|
|
98
|
+
for (const job of this.pendingFanOutJobs) pendingFanOutTargets += Math.max(job.targets.length - job.cursor, 0);
|
|
103
99
|
return {
|
|
104
100
|
pendingFanOutJobs: this.pendingFanOutJobs.length,
|
|
105
101
|
pendingFanOutTargets
|
|
@@ -153,9 +149,7 @@ var init_ws_delivery = __esmMin((() => {
|
|
|
153
149
|
});
|
|
154
150
|
}
|
|
155
151
|
enqueueFanOut(targets, event, data) {
|
|
156
|
-
if (targets.length === 0)
|
|
157
|
-
return;
|
|
158
|
-
}
|
|
152
|
+
if (targets.length === 0) return;
|
|
159
153
|
this.pendingFanOutJobs.push({
|
|
160
154
|
targets,
|
|
161
155
|
event,
|
|
@@ -173,9 +167,7 @@ var init_ws_delivery = __esmMin((() => {
|
|
|
173
167
|
this.scheduleFanOutFlush();
|
|
174
168
|
}
|
|
175
169
|
scheduleFanOutFlush() {
|
|
176
|
-
if (this.fanOutFlushScheduled)
|
|
177
|
-
return;
|
|
178
|
-
}
|
|
170
|
+
if (this.fanOutFlushScheduled) return;
|
|
179
171
|
this.fanOutFlushScheduled = true;
|
|
180
172
|
setImmediate(() => {
|
|
181
173
|
this.fanOutFlushScheduled = false;
|
|
@@ -195,9 +187,7 @@ var init_ws_delivery = __esmMin((() => {
|
|
|
195
187
|
job.cursor += 1;
|
|
196
188
|
processed += 1;
|
|
197
189
|
}
|
|
198
|
-
if (job.cursor >= job.targets.length)
|
|
199
|
-
this.pendingFanOutJobs.shift();
|
|
200
|
-
}
|
|
190
|
+
if (job.cursor >= job.targets.length) this.pendingFanOutJobs.shift();
|
|
201
191
|
}
|
|
202
192
|
} catch (error) {
|
|
203
193
|
status = "error";
|
|
@@ -218,16 +208,12 @@ var init_ws_delivery = __esmMin((() => {
|
|
|
218
208
|
attributes: { processedCount: processed },
|
|
219
209
|
errorType
|
|
220
210
|
});
|
|
221
|
-
if (this.pendingFanOutJobs.length > 0)
|
|
222
|
-
this.scheduleFanOutFlush();
|
|
223
|
-
}
|
|
211
|
+
if (this.pendingFanOutJobs.length > 0) this.scheduleFanOutFlush();
|
|
224
212
|
}
|
|
225
213
|
}
|
|
226
214
|
safePublish(connection, event, data) {
|
|
227
215
|
try {
|
|
228
|
-
if (!connection.closed)
|
|
229
|
-
connection.publishUntyped(event, data);
|
|
230
|
-
}
|
|
216
|
+
if (!connection.closed) connection.publishUntyped(event, data);
|
|
231
217
|
} catch {
|
|
232
218
|
this.telemetry.emit({
|
|
233
219
|
name: "ws.fanout.publish.failed",
|
|
@@ -242,8 +228,8 @@ var init_ws_delivery = __esmMin((() => {
|
|
|
242
228
|
}
|
|
243
229
|
};
|
|
244
230
|
}));
|
|
245
|
-
|
|
246
231
|
//#endregion
|
|
247
232
|
init_ws_delivery();
|
|
248
233
|
export { WebSocketDeliveryEngine, init_ws_delivery };
|
|
249
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3MtZGVsaXZlcnkuanMiLCJuYW1lcyI6WyJvcHRpb25zOiB7XG4gICAgICBub2RlSWQ6IHN0cmluZztcbiAgICAgIGxvY2FsQ29ubmVjdGlvbnM6IFdlYlNvY2tldExvY2FsQ29ubmVjdGlvblN0b3JlO1xuICAgICAgYXVkaWVuY2VSZXNvbHZlcjogV2ViU29ja2V0QXVkaWVuY2VSZXNvbHZlcjtcbiAgICAgIGNsdXN0ZXJCdXM6IFdlYlNvY2tldENsdXN0ZXJCdXM7XG4gICAgICB0ZWxlbWV0cnlDb250cm9sbGVyPzogV2ViU29ja2V0VGVsZW1ldHJ5Q29udHJvbGxlcjtcbiAgICB9IiwiZW52ZWxvcGU6IFdlYlNvY2tldENsdXN0ZXJFbnZlbG9wZSIsInN0YXR1czogXCJ1bnNldFwiIHwgXCJlcnJvclwiIiwiZXJyb3JUeXBlOiBzdHJpbmcgfCB1bmRlZmluZWQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RyZWFtL3dzLWRlbGl2ZXJ5LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJhbmRvbVVVSUQgfSBmcm9tIFwibm9kZTpjcnlwdG9cIjtcblxuaW1wb3J0IHsgdHlwZSBXZWJTb2NrZXRBdWRpZW5jZSB9IGZyb20gXCIuL3dzLWF1ZGllbmNlXCI7XG5pbXBvcnQgeyB0eXBlIFdlYlNvY2tldEF1ZGllbmNlUmVzb2x2ZXIgfSBmcm9tIFwiLi93cy1hdWRpZW5jZS1yZXNvbHZlclwiO1xuaW1wb3J0IHsgdHlwZSBXZWJTb2NrZXRDbHVzdGVyQnVzLCB0eXBlIFdlYlNvY2tldENsdXN0ZXJFbnZlbG9wZSB9IGZyb20gXCIuL3dzLWNsdXN0ZXItYnVzXCI7XG5pbXBvcnQgeyB0eXBlIE1hbmFnZWRXZWJTb2NrZXRDb25uZWN0aW9uIH0gZnJvbSBcIi4vd3MtY29yZVwiO1xuaW1wb3J0IHsgdHlwZSBXZWJTb2NrZXRMb2NhbENvbm5lY3Rpb25TdG9yZSB9IGZyb20gXCIuL3dzLWxvY2FsLWNvbm5lY3Rpb24tc3RvcmVcIjtcbmltcG9ydCB7XG4gIE5vb3BXZWJTb2NrZXRUZWxlbWV0cnlDb250cm9sbGVyLFxuICB0eXBlIFdlYlNvY2tldFRlbGVtZXRyeUNvbnRyb2xsZXIsXG59IGZyb20gXCIuL3dzLXRlbGVtZXRyeVwiO1xuXG4vLyBmYW4tb3V07J2EIGV2ZW50IGxvb3AgdGljayDri6jsnITroZwg64KY64igIO2VnCDrsojsl5Ag6ri0IOuPmeq4sCDro6jtlITrpbwg66eM65Ok7KeAIOyViuqyjCDtlahcbmNvbnN0IEZBTl9PVVRfQkFUQ0hfU0laRSA9IDI1MDtcblxuZXhwb3J0IGNsYXNzIFdlYlNvY2tldERlbGl2ZXJ5RW5naW5lIHtcbiAgcHJpdmF0ZSByZWFkb25seSBwZW5kaW5nRmFuT3V0Sm9iczogQXJyYXk8e1xuICAgIHRhcmdldHM6IE1hbmFnZWRXZWJTb2NrZXRDb25uZWN0aW9uW107XG4gICAgZXZlbnQ6IHN0cmluZztcbiAgICBkYXRhOiB1bmtub3duO1xuICAgIGN1cnNvcjogbnVtYmVyO1xuICB9PiA9IFtdO1xuICBwcml2YXRlIGZhbk91dEZsdXNoU2NoZWR1bGVkID0gZmFsc2U7XG4gIHByaXZhdGUgcmVhZG9ubHkgdW5zdWJzY3JpYmU6ICgpID0+IHZvaWQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgdGVsZW1ldHJ5OiBXZWJTb2NrZXRUZWxlbWV0cnlDb250cm9sbGVyO1xuICBwcml2YXRlIHJlYWRvbmx5IHVucmVnaXN0ZXJNZXRyaWNTb3VyY2U6ICgpID0+IHZvaWQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBvcHRpb25zOiB7XG4gICAgICBub2RlSWQ6IHN0cmluZztcbiAgICAgIGxvY2FsQ29ubmVjdGlvbnM6IFdlYlNvY2tldExvY2FsQ29ubmVjdGlvblN0b3JlO1xuICAgICAgYXVkaWVuY2VSZXNvbHZlcjogV2ViU29ja2V0QXVkaWVuY2VSZXNvbHZlcjtcbiAgICAgIGNsdXN0ZXJCdXM6IFdlYlNvY2tldENsdXN0ZXJCdXM7XG4gICAgICB0ZWxlbWV0cnlDb250cm9sbGVyPzogV2ViU29ja2V0VGVsZW1ldHJ5Q29udHJvbGxlcjtcbiAgICB9LFxuICApIHtcbiAgICB0aGlzLnRlbGVtZXRyeSA9IHRoaXMub3B0aW9ucy50ZWxlbWV0cnlDb250cm9sbGVyID8/IG5ldyBOb29wV2ViU29ja2V0VGVsZW1ldHJ5Q29udHJvbGxlcigpO1xuICAgIHRoaXMudW5zdWJzY3JpYmUgPSB0aGlzLm9wdGlvbnMuY2x1c3RlckJ1cy5zdWJzY3JpYmUoKGVudmVsb3BlKSA9PiB7XG4gICAgICB0aGlzLmhhbmRsZUNsdXN0ZXJFbnZlbG9wZShlbnZlbG9wZSk7XG4gICAgfSk7XG4gICAgdGhpcy51bnJlZ2lzdGVyTWV0cmljU291cmNlID0gdGhpcy50ZWxlbWV0cnkucmVnaXN0ZXJNZXRyaWNTb3VyY2Uoe1xuICAgICAgY29sbGVjdDogKCkgPT4gdGhpcy5nZXRUZWxlbWV0cnlTbmFwc2hvdCgpLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGlzaFRvQXVkaWVuY2UoYXVkaWVuY2U6IFdlYlNvY2tldEF1ZGllbmNlLCBldmVudDogc3RyaW5nLCBkYXRhOiB1bmtub3duKTogdm9pZCB7XG4gICAgY29uc3Qgcm91dGluZ1BsYW4gPSB0aGlzLm9wdGlvbnMuYXVkaWVuY2VSZXNvbHZlci5yZXNvbHZlKGF1ZGllbmNlKTtcbiAgICBjb25zdCBsb2NhbFRhcmdldHMgPSB0aGlzLm9wdGlvbnMubG9jYWxDb25uZWN0aW9ucy5nZXRDb25uZWN0aW9ucyhyb3V0aW5nUGxhbi5sb2NhbFNlc3Npb25JZHMpO1xuXG4gICAgdGhpcy50ZWxlbWV0cnkuZW1pdCh7XG4gICAgICBuYW1lOiBcIndzLmZhbm91dC5yZXNvbHZlZFwiLFxuICAgICAgbGV2ZWw6IFwiZGVidWdcIixcbiAgICAgIGRldGFpbDoge1xuICAgICAgICBsb2NhbFRhcmdldENvdW50OiBsb2NhbFRhcmdldHMubGVuZ3RoLFxuICAgICAgICByZW1vdGVOb2RlQ291bnQ6IHJvdXRpbmdQbGFuLnJlbW90ZU5vZGVJZHMubGVuZ3RoLFxuICAgICAgfSxcbiAgICB9KTtcbiAgICB0aGlzLnRlbGVtZXRyeS5yZWNvcmRNZXRyaWMoe1xuICAgICAgbmFtZTogXCJzb25hbXUud3MuZmFub3V0LnRhcmdldHNcIixcbiAgICAgIGtpbmQ6IFwiaGlzdG9ncmFtXCIsXG4gICAgICB2YWx1ZTogbG9jYWxUYXJnZXRzLmxlbmd0aCArIHJvdXRpbmdQbGFuLnJlbW90ZU5vZGVJZHMubGVuZ3RoLFxuICAgICAgdW5pdDogXCIxXCIsXG4gICAgICB0YWdzOiB7IGF1ZGllbmNlX3R5cGU6IGF1ZGllbmNlLnR5cGUgfSxcbiAgICB9KTtcblxuICAgIHRoaXMuZW5xdWV1ZUZhbk91dChsb2NhbFRhcmdldHMsIGV2ZW50LCBkYXRhKTtcblxuICAgIGlmIChyb3V0aW5nUGxhbi5yZW1vdGVOb2RlSWRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGVudmVsb3BlOiBXZWJTb2NrZXRDbHVzdGVyRW52ZWxvcGUgPSB7XG4gICAgICBpZDogcmFuZG9tVVVJRCgpLFxuICAgICAgc291cmNlTm9kZUlkOiB0aGlzLm9wdGlvbnMubm9kZUlkLFxuICAgICAgdGFyZ2V0Tm9kZUlkczogcm91dGluZ1BsYW4ucmVtb3RlTm9kZUlkcyxcbiAgICAgIGF1ZGllbmNlLFxuICAgICAgZXZlbnQsXG4gICAgICBkYXRhLFxuICAgICAgZW1pdHRlZEF0OiBEYXRlLm5vdygpLFxuICAgIH07XG5cbiAgICBjb25zdCBwdWJsaXNoU3RhcnRlZEF0ID0gcGVyZm9ybWFuY2Uubm93KCk7XG4gICAgUHJvbWlzZS5yZXNvbHZlKHRoaXMub3B0aW9ucy5jbHVzdGVyQnVzLnB1Ymxpc2goZW52ZWxvcGUpKVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICBjb25zdCBkdXJhdGlvbk1zID0gcGVyZm9ybWFuY2Uubm93KCkgLSBwdWJsaXNoU3RhcnRlZEF0O1xuICAgICAgICB0aGlzLnRlbGVtZXRyeS5lbWl0KHtcbiAgICAgICAgICBuYW1lOiBcIndzLmNsdXN0ZXIuZW52ZWxvcGUucHVibGlzaGVkXCIsXG4gICAgICAgICAgbGV2ZWw6IFwiZGVidWdcIixcbiAgICAgICAgICBkZXRhaWw6IHsgZXZlbnQsIHRhcmdldE5vZGVDb3VudDogcm91dGluZ1BsYW4ucmVtb3RlTm9kZUlkcy5sZW5ndGggfSxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMudGVsZW1ldHJ5LnJlY29yZFNwYW4oe1xuICAgICAgICAgIG9wZXJhdGlvbk5hbWU6IFwid3MuY2x1c3Rlci5wdWJsaXNoXCIsXG4gICAgICAgICAga2luZDogXCJwcm9kdWNlclwiLFxuICAgICAgICAgIGR1cmF0aW9uTXMsXG4gICAgICAgICAgc3RhdHVzOiBcInVuc2V0XCIsXG4gICAgICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAgICAgZXZlbnQsXG4gICAgICAgICAgICB0YXJnZXROb2RlQ291bnQ6IHJvdXRpbmdQbGFuLnJlbW90ZU5vZGVJZHMubGVuZ3RoLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZXJyb3I6IHVua25vd24pID0+IHtcbiAgICAgICAgY29uc3QgZHVyYXRpb25NcyA9IHBlcmZvcm1hbmNlLm5vdygpIC0gcHVibGlzaFN0YXJ0ZWRBdDtcbiAgICAgICAgdGhpcy50ZWxlbWV0cnkuZW1pdCh7XG4gICAgICAgICAgbmFtZTogXCJ3cy5jbHVzdGVyLmVudmVsb3BlLmZhaWxlZFwiLFxuICAgICAgICAgIGxldmVsOiBcImVycm9yXCIsXG4gICAgICAgICAgZGV0YWlsOiB7IGV2ZW50IH0sXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnRlbGVtZXRyeS5yZWNvcmRTcGFuKHtcbiAgICAgICAgICBvcGVyYXRpb25OYW1lOiBcIndzLmNsdXN0ZXIucHVibGlzaFwiLFxuICAgICAgICAgIGtpbmQ6IFwicHJvZHVjZXJcIixcbiAgICAgICAgICBkdXJhdGlvbk1zLFxuICAgICAgICAgIHN0YXR1czogXCJlcnJvclwiLFxuICAgICAgICAgIGF0dHJpYnV0ZXM6IHsgZXZlbnQgfSxcbiAgICAgICAgICBlcnJvclR5cGU6IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5uYW1lIDogdHlwZW9mIGVycm9yLFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgc2h1dGRvd24oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy51bnJlZ2lzdGVyTWV0cmljU291cmNlKCk7XG4gICAgdGhpcy51bnN1YnNjcmliZSgpO1xuICAgIGF3YWl0IHRoaXMub3B0aW9ucy5jbHVzdGVyQnVzLnNodXRkb3duKCk7XG4gIH1cblxuICBnZXRUZWxlbWV0cnlTbmFwc2hvdCgpOiB7IHBlbmRpbmdGYW5PdXRKb2JzOiBudW1iZXI7IHBlbmRpbmdGYW5PdXRUYXJnZXRzOiBudW1iZXIgfSB7XG4gICAgbGV0IHBlbmRpbmdGYW5PdXRUYXJnZXRzID0gMDtcblxuICAgIGZvciAoY29uc3Qgam9iIG9mIHRoaXMucGVuZGluZ0Zhbk91dEpvYnMpIHtcbiAgICAgIHBlbmRpbmdGYW5PdXRUYXJnZXRzICs9IE1hdGgubWF4KGpvYi50YXJnZXRzLmxlbmd0aCAtIGpvYi5jdXJzb3IsIDApO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBwZW5kaW5nRmFuT3V0Sm9iczogdGhpcy5wZW5kaW5nRmFuT3V0Sm9icy5sZW5ndGgsXG4gICAgICBwZW5kaW5nRmFuT3V0VGFyZ2V0cyxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVDbHVzdGVyRW52ZWxvcGUoZW52ZWxvcGU6IFdlYlNvY2tldENsdXN0ZXJFbnZlbG9wZSk6IHZvaWQge1xuICAgIGlmIChlbnZlbG9wZS5zb3VyY2VOb2RlSWQgPT09IHRoaXMub3B0aW9ucy5ub2RlSWQpIHtcbiAgICAgIHRoaXMudGVsZW1ldHJ5LmVtaXQoe1xuICAgICAgICBuYW1lOiBcIndzLmNsdXN0ZXIuZW52ZWxvcGUuaWdub3JlZFwiLFxuICAgICAgICBsZXZlbDogXCJkZWJ1Z1wiLFxuICAgICAgICBkZXRhaWw6IHsgcmVhc29uOiBcInNlbGZTb3VyY2VcIiwgZXZlbnQ6IGVudmVsb3BlLmV2ZW50IH0sXG4gICAgICB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBlbnZlbG9wZS50YXJnZXROb2RlSWRzICYmXG4gICAgICBlbnZlbG9wZS50YXJnZXROb2RlSWRzLmxlbmd0aCA+IDAgJiZcbiAgICAgICFlbnZlbG9wZS50YXJnZXROb2RlSWRzLmluY2x1ZGVzKHRoaXMub3B0aW9ucy5ub2RlSWQpXG4gICAgKSB7XG4gICAgICB0aGlzLnRlbGVtZXRyeS5lbWl0KHtcbiAgICAgICAgbmFtZTogXCJ3cy5jbHVzdGVyLmVudmVsb3BlLmlnbm9yZWRcIixcbiAgICAgICAgbGV2ZWw6IFwiZGVidWdcIixcbiAgICAgICAgZGV0YWlsOiB7IHJlYXNvbjogXCJ0YXJnZXRNaXNtYXRjaFwiLCBldmVudDogZW52ZWxvcGUuZXZlbnQgfSxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHN0YXJ0ZWRBdCA9IHBlcmZvcm1hbmNlLm5vdygpO1xuICAgIHRoaXMudGVsZW1ldHJ5LmVtaXQoe1xuICAgICAgbmFtZTogXCJ3cy5jbHVzdGVyLmVudmVsb3BlLnJlY2VpdmVkXCIsXG4gICAgICBsZXZlbDogXCJkZWJ1Z1wiLFxuICAgICAgZGV0YWlsOiB7IGV2ZW50OiBlbnZlbG9wZS5ldmVudCwgc291cmNlTm9kZUlkOiBlbnZlbG9wZS5zb3VyY2VOb2RlSWQgfSxcbiAgICB9KTtcblxuICAgIGNvbnN0IHJvdXRpbmdQbGFuID0gdGhpcy5vcHRpb25zLmF1ZGllbmNlUmVzb2x2ZXIucmVzb2x2ZShlbnZlbG9wZS5hdWRpZW5jZSk7XG4gICAgY29uc3QgbG9jYWxUYXJnZXRzID0gdGhpcy5vcHRpb25zLmxvY2FsQ29ubmVjdGlvbnMuZ2V0Q29ubmVjdGlvbnMocm91dGluZ1BsYW4ubG9jYWxTZXNzaW9uSWRzKTtcbiAgICB0aGlzLmVucXVldWVGYW5PdXQobG9jYWxUYXJnZXRzLCBlbnZlbG9wZS5ldmVudCwgZW52ZWxvcGUuZGF0YSk7XG5cbiAgICB0aGlzLnRlbGVtZXRyeS5yZWNvcmRTcGFuKHtcbiAgICAgIG9wZXJhdGlvbk5hbWU6IFwid3MuY2x1c3Rlci5yZWNlaXZlXCIsXG4gICAgICBraW5kOiBcImNvbnN1bWVyXCIsXG4gICAgICBkdXJhdGlvbk1zOiBwZXJmb3JtYW5jZS5ub3coKSAtIHN0YXJ0ZWRBdCxcbiAgICAgIHN0YXR1czogXCJ1bnNldFwiLFxuICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICBldmVudDogZW52ZWxvcGUuZXZlbnQsXG4gICAgICAgIHNvdXJjZU5vZGVJZDogZW52ZWxvcGUuc291cmNlTm9kZUlkLFxuICAgICAgICBsb2NhbFRhcmdldENvdW50OiBsb2NhbFRhcmdldHMubGVuZ3RoLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZW5xdWV1ZUZhbk91dCh0YXJnZXRzOiBNYW5hZ2VkV2ViU29ja2V0Q29ubmVjdGlvbltdLCBldmVudDogc3RyaW5nLCBkYXRhOiB1bmtub3duKTogdm9pZCB7XG4gICAgaWYgKHRhcmdldHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5wZW5kaW5nRmFuT3V0Sm9icy5wdXNoKHtcbiAgICAgIHRhcmdldHMsXG4gICAgICBldmVudCxcbiAgICAgIGRhdGEsXG4gICAgICBjdXJzb3I6IDAsXG4gICAgfSk7XG4gICAgdGhpcy50ZWxlbWV0cnkuZW1pdCh7XG4gICAgICBuYW1lOiBcIndzLmZhbm91dC5lbnF1ZXVlZFwiLFxuICAgICAgbGV2ZWw6IFwiZGVidWdcIixcbiAgICAgIGRldGFpbDogeyB0YXJnZXRDb3VudDogdGFyZ2V0cy5sZW5ndGgsIGV2ZW50IH0sXG4gICAgfSk7XG4gICAgdGhpcy5zY2hlZHVsZUZhbk91dEZsdXNoKCk7XG4gIH1cblxuICBwcml2YXRlIHNjaGVkdWxlRmFuT3V0Rmx1c2goKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZmFuT3V0Rmx1c2hTY2hlZHVsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmZhbk91dEZsdXNoU2NoZWR1bGVkID0gdHJ1ZTtcbiAgICBzZXRJbW1lZGlhdGUoKCkgPT4ge1xuICAgICAgdGhpcy5mYW5PdXRGbHVzaFNjaGVkdWxlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5mbHVzaEZhbk91dEpvYnMoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZmx1c2hGYW5PdXRKb2JzKCk6IHZvaWQge1xuICAgIGNvbnN0IHN0YXJ0ZWRBdCA9IHBlcmZvcm1hbmNlLm5vdygpO1xuICAgIGxldCBwcm9jZXNzZWQgPSAwO1xuICAgIGxldCBzdGF0dXM6IFwidW5zZXRcIiB8IFwiZXJyb3JcIiA9IFwidW5zZXRcIjtcbiAgICBsZXQgZXJyb3JUeXBlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgICB0cnkge1xuICAgICAgd2hpbGUgKHRoaXMucGVuZGluZ0Zhbk91dEpvYnMubGVuZ3RoID4gMCAmJiBwcm9jZXNzZWQgPCBGQU5fT1VUX0JBVENIX1NJWkUpIHtcbiAgICAgICAgY29uc3Qgam9iID0gdGhpcy5wZW5kaW5nRmFuT3V0Sm9ic1swXTtcblxuICAgICAgICB3aGlsZSAoam9iLmN1cnNvciA8IGpvYi50YXJnZXRzLmxlbmd0aCAmJiBwcm9jZXNzZWQgPCBGQU5fT1VUX0JBVENIX1NJWkUpIHtcbiAgICAgICAgICB0aGlzLnNhZmVQdWJsaXNoKGpvYi50YXJnZXRzW2pvYi5jdXJzb3JdLCBqb2IuZXZlbnQsIGpvYi5kYXRhKTtcbiAgICAgICAgICBqb2IuY3Vyc29yICs9IDE7XG4gICAgICAgICAgcHJvY2Vzc2VkICs9IDE7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoam9iLmN1cnNvciA+PSBqb2IudGFyZ2V0cy5sZW5ndGgpIHtcbiAgICAgICAgICB0aGlzLnBlbmRpbmdGYW5PdXRKb2JzLnNoaWZ0KCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgc3RhdHVzID0gXCJlcnJvclwiO1xuICAgICAgZXJyb3JUeXBlID0gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm5hbWUgOiB0eXBlb2YgZXJyb3I7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgY29uc3QgZHVyYXRpb25NcyA9IHBlcmZvcm1hbmNlLm5vdygpIC0gc3RhcnRlZEF0O1xuICAgICAgdGhpcy50ZWxlbWV0cnkuZW1pdCh7XG4gICAgICAgIG5hbWU6IFwid3MuZmFub3V0LmZsdXNoZWRcIixcbiAgICAgICAgbGV2ZWw6IFwiZGVidWdcIixcbiAgICAgICAgZGV0YWlsOiB7IHByb2Nlc3NlZENvdW50OiBwcm9jZXNzZWQgfSxcbiAgICAgIH0pO1xuICAgICAgdGhpcy50ZWxlbWV0cnkucmVjb3JkU3Bhbih7XG4gICAgICAgIG9wZXJhdGlvbk5hbWU6IFwid3MuZmFub3V0LmRpc3BhdGNoXCIsXG4gICAgICAgIGtpbmQ6IFwiaW50ZXJuYWxcIixcbiAgICAgICAgZHVyYXRpb25NcyxcbiAgICAgICAgc3RhdHVzLFxuICAgICAgICBhdHRyaWJ1dGVzOiB7IHByb2Nlc3NlZENvdW50OiBwcm9jZXNzZWQgfSxcbiAgICAgICAgZXJyb3JUeXBlLFxuICAgICAgfSk7XG5cbiAgICAgIGlmICh0aGlzLnBlbmRpbmdGYW5PdXRKb2JzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhpcy5zY2hlZHVsZUZhbk91dEZsdXNoKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzYWZlUHVibGlzaChjb25uZWN0aW9uOiBNYW5hZ2VkV2ViU29ja2V0Q29ubmVjdGlvbiwgZXZlbnQ6IHN0cmluZywgZGF0YTogdW5rbm93bik6IHZvaWQge1xuICAgIHRyeSB7XG4gICAgICBpZiAoIWNvbm5lY3Rpb24uY2xvc2VkKSB7XG4gICAgICAgIGNvbm5lY3Rpb24ucHVibGlzaFVudHlwZWQoZXZlbnQsIGRhdGEpO1xuICAgICAgfVxuICAgIH0gY2F0Y2gge1xuICAgICAgdGhpcy50ZWxlbWV0cnkuZW1pdCh7XG4gICAgICAgIG5hbWU6IFwid3MuZmFub3V0LnB1Ymxpc2guZmFpbGVkXCIsXG4gICAgICAgIGxldmVsOiBcImVycm9yXCIsXG4gICAgICAgIGNvbm5lY3Rpb25JZDogY29ubmVjdGlvbi5pZCxcbiAgICAgICAgbmFtZXNwYWNlOiBjb25uZWN0aW9uLm5hbWVzcGFjZSxcbiAgICAgICAgdXNlcklkOiBjb25uZWN0aW9uLnVzZXJJZCxcbiAgICAgICAgZGV0YWlsOiB7IGV2ZW50IH0sXG4gICAgICB9KTtcbiAgICAgIGNvbm5lY3Rpb24uY2xvc2UoMTAxMSwgXCJXZWJTb2NrZXQgcHVibGlzaCBmYWlsZWRcIik7XG4gICAgfVxuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7b0JBVXdCO0NBR2xCLHFCQUFxQjtDQUVkLDBCQUFiLE1BQXFDO0VBQ25DLEFBQWlCLG9CQUtaLEVBQUU7RUFDUCxBQUFRLHVCQUF1QjtFQUMvQixBQUFpQjtFQUNqQixBQUFpQjtFQUNqQixBQUFpQjtFQUVqQixZQUNFLEFBQWlCQSxTQU9qQjtHQVBpQjtBQVFqQixRQUFLLFlBQVksS0FBSyxRQUFRLHVCQUF1QixJQUFJLGtDQUFrQztBQUMzRixRQUFLLGNBQWMsS0FBSyxRQUFRLFdBQVcsV0FBVyxhQUFhO0FBQ2pFLFNBQUssc0JBQXNCLFNBQVM7S0FDcEM7QUFDRixRQUFLLHlCQUF5QixLQUFLLFVBQVUscUJBQXFCLEVBQ2hFLGVBQWUsS0FBSyxzQkFBc0IsRUFDM0MsQ0FBQzs7RUFHSixrQkFBa0IsVUFBNkIsT0FBZSxNQUFxQjtHQUNqRixNQUFNLGNBQWMsS0FBSyxRQUFRLGlCQUFpQixRQUFRLFNBQVM7R0FDbkUsTUFBTSxlQUFlLEtBQUssUUFBUSxpQkFBaUIsZUFBZSxZQUFZLGdCQUFnQjtBQUU5RixRQUFLLFVBQVUsS0FBSztJQUNsQixNQUFNO0lBQ04sT0FBTztJQUNQLFFBQVE7S0FDTixrQkFBa0Is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
|
|
234
|
+
|
|
235
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3MtZGVsaXZlcnkuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N0cmVhbS93cy1kZWxpdmVyeS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByYW5kb21VVUlEIH0gZnJvbSBcIm5vZGU6Y3J5cHRvXCI7XG5cbmltcG9ydCB7IHR5cGUgV2ViU29ja2V0QXVkaWVuY2UgfSBmcm9tIFwiLi93cy1hdWRpZW5jZVwiO1xuaW1wb3J0IHsgdHlwZSBXZWJTb2NrZXRBdWRpZW5jZVJlc29sdmVyIH0gZnJvbSBcIi4vd3MtYXVkaWVuY2UtcmVzb2x2ZXJcIjtcbmltcG9ydCB7IHR5cGUgV2ViU29ja2V0Q2x1c3RlckJ1cywgdHlwZSBXZWJTb2NrZXRDbHVzdGVyRW52ZWxvcGUgfSBmcm9tIFwiLi93cy1jbHVzdGVyLWJ1c1wiO1xuaW1wb3J0IHsgdHlwZSBNYW5hZ2VkV2ViU29ja2V0Q29ubmVjdGlvbiB9IGZyb20gXCIuL3dzLWNvcmVcIjtcbmltcG9ydCB7IHR5cGUgV2ViU29ja2V0TG9jYWxDb25uZWN0aW9uU3RvcmUgfSBmcm9tIFwiLi93cy1sb2NhbC1jb25uZWN0aW9uLXN0b3JlXCI7XG5pbXBvcnQge1xuICBOb29wV2ViU29ja2V0VGVsZW1ldHJ5Q29udHJvbGxlcixcbiAgdHlwZSBXZWJTb2NrZXRUZWxlbWV0cnlDb250cm9sbGVyLFxufSBmcm9tIFwiLi93cy10ZWxlbWV0cnlcIjtcblxuLy8gZmFuLW91dOydhCBldmVudCBsb29wIHRpY2sg64uo7JyE66GcIOuCmOuIoCDtlZwg67KI7JeQIOq4tCDrj5nquLAg66Oo7ZSE66W8IOunjOuTpOyngCDslYrqsowg7ZWoXG5jb25zdCBGQU5fT1VUX0JBVENIX1NJWkUgPSAyNTA7XG5cbmV4cG9ydCBjbGFzcyBXZWJTb2NrZXREZWxpdmVyeUVuZ2luZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgcGVuZGluZ0Zhbk91dEpvYnM6IEFycmF5PHtcbiAgICB0YXJnZXRzOiBNYW5hZ2VkV2ViU29ja2V0Q29ubmVjdGlvbltdO1xuICAgIGV2ZW50OiBzdHJpbmc7XG4gICAgZGF0YTogdW5rbm93bjtcbiAgICBjdXJzb3I6IG51bWJlcjtcbiAgfT4gPSBbXTtcbiAgcHJpdmF0ZSBmYW5PdXRGbHVzaFNjaGVkdWxlZCA9IGZhbHNlO1xuICBwcml2YXRlIHJlYWRvbmx5IHVuc3Vic2NyaWJlOiAoKSA9PiB2b2lkO1xuICBwcml2YXRlIHJlYWRvbmx5IHRlbGVtZXRyeTogV2ViU29ja2V0VGVsZW1ldHJ5Q29udHJvbGxlcjtcbiAgcHJpdmF0ZSByZWFkb25seSB1bnJlZ2lzdGVyTWV0cmljU291cmNlOiAoKSA9PiB2b2lkO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgb3B0aW9uczoge1xuICAgICAgbm9kZUlkOiBzdHJpbmc7XG4gICAgICBsb2NhbENvbm5lY3Rpb25zOiBXZWJTb2NrZXRMb2NhbENvbm5lY3Rpb25TdG9yZTtcbiAgICAgIGF1ZGllbmNlUmVzb2x2ZXI6IFdlYlNvY2tldEF1ZGllbmNlUmVzb2x2ZXI7XG4gICAgICBjbHVzdGVyQnVzOiBXZWJTb2NrZXRDbHVzdGVyQnVzO1xuICAgICAgdGVsZW1ldHJ5Q29udHJvbGxlcj86IFdlYlNvY2tldFRlbGVtZXRyeUNvbnRyb2xsZXI7XG4gICAgfSxcbiAgKSB7XG4gICAgdGhpcy50ZWxlbWV0cnkgPSB0aGlzLm9wdGlvbnMudGVsZW1ldHJ5Q29udHJvbGxlciA/PyBuZXcgTm9vcFdlYlNvY2tldFRlbGVtZXRyeUNvbnRyb2xsZXIoKTtcbiAgICB0aGlzLnVuc3Vic2NyaWJlID0gdGhpcy5vcHRpb25zLmNsdXN0ZXJCdXMuc3Vic2NyaWJlKChlbnZlbG9wZSkgPT4ge1xuICAgICAgdGhpcy5oYW5kbGVDbHVzdGVyRW52ZWxvcGUoZW52ZWxvcGUpO1xuICAgIH0pO1xuICAgIHRoaXMudW5yZWdpc3Rlck1ldHJpY1NvdXJjZSA9IHRoaXMudGVsZW1ldHJ5LnJlZ2lzdGVyTWV0cmljU291cmNlKHtcbiAgICAgIGNvbGxlY3Q6ICgpID0+IHRoaXMuZ2V0VGVsZW1ldHJ5U25hcHNob3QoKSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1Ymxpc2hUb0F1ZGllbmNlKGF1ZGllbmNlOiBXZWJTb2NrZXRBdWRpZW5jZSwgZXZlbnQ6IHN0cmluZywgZGF0YTogdW5rbm93bik6IHZvaWQge1xuICAgIGNvbnN0IHJvdXRpbmdQbGFuID0gdGhpcy5vcHRpb25zLmF1ZGllbmNlUmVzb2x2ZXIucmVzb2x2ZShhdWRpZW5jZSk7XG4gICAgY29uc3QgbG9jYWxUYXJnZXRzID0gdGhpcy5vcHRpb25zLmxvY2FsQ29ubmVjdGlvbnMuZ2V0Q29ubmVjdGlvbnMocm91dGluZ1BsYW4ubG9jYWxTZXNzaW9uSWRzKTtcblxuICAgIHRoaXMudGVsZW1ldHJ5LmVtaXQoe1xuICAgICAgbmFtZTogXCJ3cy5mYW5vdXQucmVzb2x2ZWRcIixcbiAgICAgIGxldmVsOiBcImRlYnVnXCIsXG4gICAgICBkZXRhaWw6IHtcbiAgICAgICAgbG9jYWxUYXJnZXRDb3VudDogbG9jYWxUYXJnZXRzLmxlbmd0aCxcbiAgICAgICAgcmVtb3RlTm9kZUNvdW50OiByb3V0aW5nUGxhbi5yZW1vdGVOb2RlSWRzLmxlbmd0aCxcbiAgICAgIH0sXG4gICAgfSk7XG4gICAgdGhpcy50ZWxlbWV0cnkucmVjb3JkTWV0cmljKHtcbiAgICAgIG5hbWU6IFwic29uYW11LndzLmZhbm91dC50YXJnZXRzXCIsXG4gICAgICBraW5kOiBcImhpc3RvZ3JhbVwiLFxuICAgICAgdmFsdWU6IGxvY2FsVGFyZ2V0cy5sZW5ndGggKyByb3V0aW5nUGxhbi5yZW1vdGVOb2RlSWRzLmxlbmd0aCxcbiAgICAgIHVuaXQ6IFwiMVwiLFxuICAgICAgdGFnczogeyBhdWRpZW5jZV90eXBlOiBhdWRpZW5jZS50eXBlIH0sXG4gICAgfSk7XG5cbiAgICB0aGlzLmVucXVldWVGYW5PdXQobG9jYWxUYXJnZXRzLCBldmVudCwgZGF0YSk7XG5cbiAgICBpZiAocm91dGluZ1BsYW4ucmVtb3RlTm9kZUlkcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBlbnZlbG9wZTogV2ViU29ja2V0Q2x1c3RlckVudmVsb3BlID0ge1xuICAgICAgaWQ6IHJhbmRvbVVVSUQoKSxcbiAgICAgIHNvdXJjZU5vZGVJZDogdGhpcy5vcHRpb25zLm5vZGVJZCxcbiAgICAgIHRhcmdldE5vZGVJZHM6IHJvdXRpbmdQbGFuLnJlbW90ZU5vZGVJZHMsXG4gICAgICBhdWRpZW5jZSxcbiAgICAgIGV2ZW50LFxuICAgICAgZGF0YSxcbiAgICAgIGVtaXR0ZWRBdDogRGF0ZS5ub3coKSxcbiAgICB9O1xuXG4gICAgY29uc3QgcHVibGlzaFN0YXJ0ZWRBdCA9IHBlcmZvcm1hbmNlLm5vdygpO1xuICAgIFByb21pc2UucmVzb2x2ZSh0aGlzLm9wdGlvbnMuY2x1c3RlckJ1cy5wdWJsaXNoKGVudmVsb3BlKSlcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgY29uc3QgZHVyYXRpb25NcyA9IHBlcmZvcm1hbmNlLm5vdygpIC0gcHVibGlzaFN0YXJ0ZWRBdDtcbiAgICAgICAgdGhpcy50ZWxlbWV0cnkuZW1pdCh7XG4gICAgICAgICAgbmFtZTogXCJ3cy5jbHVzdGVyLmVudmVsb3BlLnB1Ymxpc2hlZFwiLFxuICAgICAgICAgIGxldmVsOiBcImRlYnVnXCIsXG4gICAgICAgICAgZGV0YWlsOiB7IGV2ZW50LCB0YXJnZXROb2RlQ291bnQ6IHJvdXRpbmdQbGFuLnJlbW90ZU5vZGVJZHMubGVuZ3RoIH0sXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnRlbGVtZXRyeS5yZWNvcmRTcGFuKHtcbiAgICAgICAgICBvcGVyYXRpb25OYW1lOiBcIndzLmNsdXN0ZXIucHVibGlzaFwiLFxuICAgICAgICAgIGtpbmQ6IFwicHJvZHVjZXJcIixcbiAgICAgICAgICBkdXJhdGlvbk1zLFxuICAgICAgICAgIHN0YXR1czogXCJ1bnNldFwiLFxuICAgICAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICAgIGV2ZW50LFxuICAgICAgICAgICAgdGFyZ2V0Tm9kZUNvdW50OiByb3V0aW5nUGxhbi5yZW1vdGVOb2RlSWRzLmxlbmd0aCxcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGVycm9yOiB1bmtub3duKSA9PiB7XG4gICAgICAgIGNvbnN0IGR1cmF0aW9uTXMgPSBwZXJmb3JtYW5jZS5ub3coKSAtIHB1Ymxpc2hTdGFydGVkQXQ7XG4gICAgICAgIHRoaXMudGVsZW1ldHJ5LmVtaXQoe1xuICAgICAgICAgIG5hbWU6IFwid3MuY2x1c3Rlci5lbnZlbG9wZS5mYWlsZWRcIixcbiAgICAgICAgICBsZXZlbDogXCJlcnJvclwiLFxuICAgICAgICAgIGRldGFpbDogeyBldmVudCB9LFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy50ZWxlbWV0cnkucmVjb3JkU3Bhbih7XG4gICAgICAgICAgb3BlcmF0aW9uTmFtZTogXCJ3cy5jbHVzdGVyLnB1Ymxpc2hcIixcbiAgICAgICAgICBraW5kOiBcInByb2R1Y2VyXCIsXG4gICAgICAgICAgZHVyYXRpb25NcyxcbiAgICAgICAgICBzdGF0dXM6IFwiZXJyb3JcIixcbiAgICAgICAgICBhdHRyaWJ1dGVzOiB7IGV2ZW50IH0sXG4gICAgICAgICAgZXJyb3JUeXBlOiBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubmFtZSA6IHR5cGVvZiBlcnJvcixcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHNodXRkb3duKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMudW5yZWdpc3Rlck1ldHJpY1NvdXJjZSgpO1xuICAgIHRoaXMudW5zdWJzY3JpYmUoKTtcbiAgICBhd2FpdCB0aGlzLm9wdGlvbnMuY2x1c3RlckJ1cy5zaHV0ZG93bigpO1xuICB9XG5cbiAgZ2V0VGVsZW1ldHJ5U25hcHNob3QoKTogeyBwZW5kaW5nRmFuT3V0Sm9iczogbnVtYmVyOyBwZW5kaW5nRmFuT3V0VGFyZ2V0czogbnVtYmVyIH0ge1xuICAgIGxldCBwZW5kaW5nRmFuT3V0VGFyZ2V0cyA9IDA7XG5cbiAgICBmb3IgKGNvbnN0IGpvYiBvZiB0aGlzLnBlbmRpbmdGYW5PdXRKb2JzKSB7XG4gICAgICBwZW5kaW5nRmFuT3V0VGFyZ2V0cyArPSBNYXRoLm1heChqb2IudGFyZ2V0cy5sZW5ndGggLSBqb2IuY3Vyc29yLCAwKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgcGVuZGluZ0Zhbk91dEpvYnM6IHRoaXMucGVuZGluZ0Zhbk91dEpvYnMubGVuZ3RoLFxuICAgICAgcGVuZGluZ0Zhbk91dFRhcmdldHMsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlQ2x1c3RlckVudmVsb3BlKGVudmVsb3BlOiBXZWJTb2NrZXRDbHVzdGVyRW52ZWxvcGUpOiB2b2lkIHtcbiAgICBpZiAoZW52ZWxvcGUuc291cmNlTm9kZUlkID09PSB0aGlzLm9wdGlvbnMubm9kZUlkKSB7XG4gICAgICB0aGlzLnRlbGVtZXRyeS5lbWl0KHtcbiAgICAgICAgbmFtZTogXCJ3cy5jbHVzdGVyLmVudmVsb3BlLmlnbm9yZWRcIixcbiAgICAgICAgbGV2ZWw6IFwiZGVidWdcIixcbiAgICAgICAgZGV0YWlsOiB7IHJlYXNvbjogXCJzZWxmU291cmNlXCIsIGV2ZW50OiBlbnZlbG9wZS5ldmVudCB9LFxuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgZW52ZWxvcGUudGFyZ2V0Tm9kZUlkcyAmJlxuICAgICAgZW52ZWxvcGUudGFyZ2V0Tm9kZUlkcy5sZW5ndGggPiAwICYmXG4gICAgICAhZW52ZWxvcGUudGFyZ2V0Tm9kZUlkcy5pbmNsdWRlcyh0aGlzLm9wdGlvbnMubm9kZUlkKVxuICAgICkge1xuICAgICAgdGhpcy50ZWxlbWV0cnkuZW1pdCh7XG4gICAgICAgIG5hbWU6IFwid3MuY2x1c3Rlci5lbnZlbG9wZS5pZ25vcmVkXCIsXG4gICAgICAgIGxldmVsOiBcImRlYnVnXCIsXG4gICAgICAgIGRldGFpbDogeyByZWFzb246IFwidGFyZ2V0TWlzbWF0Y2hcIiwgZXZlbnQ6IGVudmVsb3BlLmV2ZW50IH0sXG4gICAgICB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBzdGFydGVkQXQgPSBwZXJmb3JtYW5jZS5ub3coKTtcbiAgICB0aGlzLnRlbGVtZXRyeS5lbWl0KHtcbiAgICAgIG5hbWU6IFwid3MuY2x1c3Rlci5lbnZlbG9wZS5yZWNlaXZlZFwiLFxuICAgICAgbGV2ZWw6IFwiZGVidWdcIixcbiAgICAgIGRldGFpbDogeyBldmVudDogZW52ZWxvcGUuZXZlbnQsIHNvdXJjZU5vZGVJZDogZW52ZWxvcGUuc291cmNlTm9kZUlkIH0sXG4gICAgfSk7XG5cbiAgICBjb25zdCByb3V0aW5nUGxhbiA9IHRoaXMub3B0aW9ucy5hdWRpZW5jZVJlc29sdmVyLnJlc29sdmUoZW52ZWxvcGUuYXVkaWVuY2UpO1xuICAgIGNvbnN0IGxvY2FsVGFyZ2V0cyA9IHRoaXMub3B0aW9ucy5sb2NhbENvbm5lY3Rpb25zLmdldENvbm5lY3Rpb25zKHJvdXRpbmdQbGFuLmxvY2FsU2Vzc2lvbklkcyk7XG4gICAgdGhpcy5lbnF1ZXVlRmFuT3V0KGxvY2FsVGFyZ2V0cywgZW52ZWxvcGUuZXZlbnQsIGVudmVsb3BlLmRhdGEpO1xuXG4gICAgdGhpcy50ZWxlbWV0cnkucmVjb3JkU3Bhbih7XG4gICAgICBvcGVyYXRpb25OYW1lOiBcIndzLmNsdXN0ZXIucmVjZWl2ZVwiLFxuICAgICAga2luZDogXCJjb25zdW1lclwiLFxuICAgICAgZHVyYXRpb25NczogcGVyZm9ybWFuY2Uubm93KCkgLSBzdGFydGVkQXQsXG4gICAgICBzdGF0dXM6IFwidW5zZXRcIixcbiAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgZXZlbnQ6IGVudmVsb3BlLmV2ZW50LFxuICAgICAgICBzb3VyY2VOb2RlSWQ6IGVudmVsb3BlLnNvdXJjZU5vZGVJZCxcbiAgICAgICAgbG9jYWxUYXJnZXRDb3VudDogbG9jYWxUYXJnZXRzLmxlbmd0aCxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGVucXVldWVGYW5PdXQodGFyZ2V0czogTWFuYWdlZFdlYlNvY2tldENvbm5lY3Rpb25bXSwgZXZlbnQ6IHN0cmluZywgZGF0YTogdW5rbm93bik6IHZvaWQge1xuICAgIGlmICh0YXJnZXRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMucGVuZGluZ0Zhbk91dEpvYnMucHVzaCh7XG4gICAgICB0YXJnZXRzLFxuICAgICAgZXZlbnQsXG4gICAgICBkYXRhLFxuICAgICAgY3Vyc29yOiAwLFxuICAgIH0pO1xuICAgIHRoaXMudGVsZW1ldHJ5LmVtaXQoe1xuICAgICAgbmFtZTogXCJ3cy5mYW5vdXQuZW5xdWV1ZWRcIixcbiAgICAgIGxldmVsOiBcImRlYnVnXCIsXG4gICAgICBkZXRhaWw6IHsgdGFyZ2V0Q291bnQ6IHRhcmdldHMubGVuZ3RoLCBldmVudCB9LFxuICAgIH0pO1xuICAgIHRoaXMuc2NoZWR1bGVGYW5PdXRGbHVzaCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzY2hlZHVsZUZhbk91dEZsdXNoKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmZhbk91dEZsdXNoU2NoZWR1bGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5mYW5PdXRGbHVzaFNjaGVkdWxlZCA9IHRydWU7XG4gICAgc2V0SW1tZWRpYXRlKCgpID0+IHtcbiAgICAgIHRoaXMuZmFuT3V0Rmx1c2hTY2hlZHVsZWQgPSBmYWxzZTtcbiAgICAgIHRoaXMuZmx1c2hGYW5PdXRKb2JzKCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGZsdXNoRmFuT3V0Sm9icygpOiB2b2lkIHtcbiAgICBjb25zdCBzdGFydGVkQXQgPSBwZXJmb3JtYW5jZS5ub3coKTtcbiAgICBsZXQgcHJvY2Vzc2VkID0gMDtcbiAgICBsZXQgc3RhdHVzOiBcInVuc2V0XCIgfCBcImVycm9yXCIgPSBcInVuc2V0XCI7XG4gICAgbGV0IGVycm9yVHlwZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gICAgdHJ5IHtcbiAgICAgIHdoaWxlICh0aGlzLnBlbmRpbmdGYW5PdXRKb2JzLmxlbmd0aCA+IDAgJiYgcHJvY2Vzc2VkIDwgRkFOX09VVF9CQVRDSF9TSVpFKSB7XG4gICAgICAgIGNvbnN0IGpvYiA9IHRoaXMucGVuZGluZ0Zhbk91dEpvYnNbMF07XG5cbiAgICAgICAgd2hpbGUgKGpvYi5jdXJzb3IgPCBqb2IudGFyZ2V0cy5sZW5ndGggJiYgcHJvY2Vzc2VkIDwgRkFOX09VVF9CQVRDSF9TSVpFKSB7XG4gICAgICAgICAgdGhpcy5zYWZlUHVibGlzaChqb2IudGFyZ2V0c1tqb2IuY3Vyc29yXSwgam9iLmV2ZW50LCBqb2IuZGF0YSk7XG4gICAgICAgICAgam9iLmN1cnNvciArPSAxO1xuICAgICAgICAgIHByb2Nlc3NlZCArPSAxO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGpvYi5jdXJzb3IgPj0gam9iLnRhcmdldHMubGVuZ3RoKSB7XG4gICAgICAgICAgdGhpcy5wZW5kaW5nRmFuT3V0Sm9icy5zaGlmdCgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHN0YXR1cyA9IFwiZXJyb3JcIjtcbiAgICAgIGVycm9yVHlwZSA9IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5uYW1lIDogdHlwZW9mIGVycm9yO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGNvbnN0IGR1cmF0aW9uTXMgPSBwZXJmb3JtYW5jZS5ub3coKSAtIHN0YXJ0ZWRBdDtcbiAgICAgIHRoaXMudGVsZW1ldHJ5LmVtaXQoe1xuICAgICAgICBuYW1lOiBcIndzLmZhbm91dC5mbHVzaGVkXCIsXG4gICAgICAgIGxldmVsOiBcImRlYnVnXCIsXG4gICAgICAgIGRldGFpbDogeyBwcm9jZXNzZWRDb3VudDogcHJvY2Vzc2VkIH0sXG4gICAgICB9KTtcbiAgICAgIHRoaXMudGVsZW1ldHJ5LnJlY29yZFNwYW4oe1xuICAgICAgICBvcGVyYXRpb25OYW1lOiBcIndzLmZhbm91dC5kaXNwYXRjaFwiLFxuICAgICAgICBraW5kOiBcImludGVybmFsXCIsXG4gICAgICAgIGR1cmF0aW9uTXMsXG4gICAgICAgIHN0YXR1cyxcbiAgICAgICAgYXR0cmlidXRlczogeyBwcm9jZXNzZWRDb3VudDogcHJvY2Vzc2VkIH0sXG4gICAgICAgIGVycm9yVHlwZSxcbiAgICAgIH0pO1xuXG4gICAgICBpZiAodGhpcy5wZW5kaW5nRmFuT3V0Sm9icy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMuc2NoZWR1bGVGYW5PdXRGbHVzaCgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2FmZVB1Ymxpc2goY29ubmVjdGlvbjogTWFuYWdlZFdlYlNvY2tldENvbm5lY3Rpb24sIGV2ZW50OiBzdHJpbmcsIGRhdGE6IHVua25vd24pOiB2b2lkIHtcbiAgICB0cnkge1xuICAgICAgaWYgKCFjb25uZWN0aW9uLmNsb3NlZCkge1xuICAgICAgICBjb25uZWN0aW9uLnB1Ymxpc2hVbnR5cGVkKGV2ZW50LCBkYXRhKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIHtcbiAgICAgIHRoaXMudGVsZW1ldHJ5LmVtaXQoe1xuICAgICAgICBuYW1lOiBcIndzLmZhbm91dC5wdWJsaXNoLmZhaWxlZFwiLFxuICAgICAgICBsZXZlbDogXCJlcnJvclwiLFxuICAgICAgICBjb25uZWN0aW9uSWQ6IGNvbm5lY3Rpb24uaWQsXG4gICAgICAgIG5hbWVzcGFjZTogY29ubmVjdGlvbi5uYW1lc3BhY2UsXG4gICAgICAgIHVzZXJJZDogY29ubmVjdGlvbi51c2VySWQsXG4gICAgICAgIGRldGFpbDogeyBldmVudCB9LFxuICAgICAgfSk7XG4gICAgICBjb25uZWN0aW9uLmNsb3NlKDEwMTEsIFwiV2ViU29ja2V0IHB1Ymxpc2ggZmFpbGVkXCIpO1xu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
|