@quantiya/codevibe-claude-plugin 1.0.0 → 1.0.1
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/.claude-plugin/plugin.json +1 -1
- package/dist/http-api.js +1 -1
- package/dist/http-api.js.map +1 -1
- package/hooks/session-start.sh +10 -1
- package/node_modules/@quantiya/codevibe-core/README.md +178 -0
- package/node_modules/@quantiya/codevibe-core/bin/codevibe.js +7 -0
- package/node_modules/@quantiya/codevibe-core/dist/appsync/appsync-client.d.ts +132 -0
- package/node_modules/@quantiya/codevibe-core/dist/appsync/appsync-client.js +568 -0
- package/node_modules/@quantiya/codevibe-core/dist/appsync/index.d.ts +2 -0
- package/node_modules/@quantiya/codevibe-core/dist/appsync/index.js +10 -0
- package/node_modules/@quantiya/codevibe-core/dist/appsync/queries.d.ts +16 -0
- package/node_modules/@quantiya/codevibe-core/dist/appsync/queries.js +189 -0
- package/node_modules/@quantiya/codevibe-core/dist/auth/auth-cli.d.ts +5 -0
- package/node_modules/@quantiya/codevibe-core/dist/auth/auth-cli.js +217 -0
- package/node_modules/@quantiya/codevibe-core/dist/auth/auth-service.d.ts +53 -0
- package/node_modules/@quantiya/codevibe-core/dist/auth/auth-service.js +310 -0
- package/node_modules/@quantiya/codevibe-core/dist/auth/index.d.ts +2 -0
- package/node_modules/@quantiya/codevibe-core/dist/auth/index.js +9 -0
- package/node_modules/@quantiya/codevibe-core/dist/config/config.d.ts +53 -0
- package/node_modules/@quantiya/codevibe-core/dist/config/config.js +123 -0
- package/node_modules/@quantiya/codevibe-core/dist/config/index.d.ts +2 -0
- package/node_modules/@quantiya/codevibe-core/dist/config/index.js +8 -0
- package/node_modules/@quantiya/codevibe-core/dist/crypto/crypto-service.d.ts +118 -0
- package/node_modules/@quantiya/codevibe-core/dist/crypto/crypto-service.js +284 -0
- package/node_modules/@quantiya/codevibe-core/dist/crypto/index.d.ts +1 -0
- package/node_modules/@quantiya/codevibe-core/dist/crypto/index.js +9 -0
- package/node_modules/@quantiya/codevibe-core/dist/index.d.ts +14 -0
- package/node_modules/@quantiya/codevibe-core/dist/index.js +68 -0
- package/node_modules/@quantiya/codevibe-core/dist/keychain/index.d.ts +1 -0
- package/node_modules/@quantiya/codevibe-core/dist/keychain/index.js +8 -0
- package/node_modules/@quantiya/codevibe-core/dist/keychain/keychain-manager.d.ts +125 -0
- package/node_modules/@quantiya/codevibe-core/dist/keychain/keychain-manager.js +375 -0
- package/node_modules/@quantiya/codevibe-core/dist/logger/index.d.ts +1 -0
- package/node_modules/@quantiya/codevibe-core/dist/logger/index.js +8 -0
- package/node_modules/@quantiya/codevibe-core/dist/logger/logger.d.ts +35 -0
- package/node_modules/@quantiya/codevibe-core/dist/logger/logger.js +142 -0
- package/node_modules/@quantiya/codevibe-core/dist/prompt-parser.d.ts +39 -0
- package/node_modules/@quantiya/codevibe-core/dist/prompt-parser.js +236 -0
- package/node_modules/@quantiya/codevibe-core/dist/session/index.d.ts +2 -0
- package/node_modules/@quantiya/codevibe-core/dist/session/index.js +7 -0
- package/node_modules/@quantiya/codevibe-core/dist/session/session-resume.d.ts +55 -0
- package/node_modules/@quantiya/codevibe-core/dist/session/session-resume.js +151 -0
- package/node_modules/@quantiya/codevibe-core/dist/types/auth.d.ts +15 -0
- package/node_modules/@quantiya/codevibe-core/dist/types/auth.js +3 -0
- package/node_modules/@quantiya/codevibe-core/dist/types/encryption.d.ts +54 -0
- package/node_modules/@quantiya/codevibe-core/dist/types/encryption.js +3 -0
- package/node_modules/@quantiya/codevibe-core/dist/types/events.d.ts +74 -0
- package/node_modules/@quantiya/codevibe-core/dist/types/events.js +28 -0
- package/node_modules/@quantiya/codevibe-core/dist/types/index.d.ts +4 -0
- package/node_modules/@quantiya/codevibe-core/dist/types/index.js +22 -0
- package/node_modules/@quantiya/codevibe-core/dist/types/session.d.ts +59 -0
- package/node_modules/@quantiya/codevibe-core/dist/types/session.js +22 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/CHANGELOG.md +274 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/CONTRIBUTING.md +18 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/LICENSE.md +9 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/README.md +466 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/bin/uuid +2 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/commonjs-browser/index.js +79 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/commonjs-browser/md5.js +223 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/commonjs-browser/native.js +11 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/commonjs-browser/nil.js +8 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/commonjs-browser/parse.js +45 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/commonjs-browser/regex.js +8 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/commonjs-browser/rng.js +25 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/commonjs-browser/sha1.js +104 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/commonjs-browser/stringify.js +44 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/commonjs-browser/v1.js +107 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/commonjs-browser/v3.js +16 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/commonjs-browser/v35.js +80 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/commonjs-browser/v4.js +43 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/commonjs-browser/v5.js +16 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/commonjs-browser/validate.js +17 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/commonjs-browser/version.js +21 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/index.js +9 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/md5.js +215 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/native.js +4 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/nil.js +1 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/parse.js +35 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/regex.js +1 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/rng.js +18 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/sha1.js +96 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/stringify.js +33 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/v1.js +95 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/v3.js +4 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/v35.js +66 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/v4.js +29 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/v5.js +4 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/validate.js +7 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-browser/version.js +11 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-node/index.js +9 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-node/md5.js +13 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-node/native.js +4 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-node/nil.js +1 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-node/parse.js +35 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-node/regex.js +1 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-node/rng.js +12 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-node/sha1.js +13 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-node/stringify.js +33 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-node/v1.js +95 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-node/v3.js +4 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-node/v35.js +66 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-node/v4.js +29 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-node/v5.js +4 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-node/validate.js +7 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/esm-node/version.js +11 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/index.js +79 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/md5-browser.js +223 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/md5.js +23 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/native-browser.js +11 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/native.js +15 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/nil.js +8 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/parse.js +45 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/regex.js +8 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/rng-browser.js +25 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/rng.js +24 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/sha1-browser.js +104 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/sha1.js +23 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/stringify.js +44 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/uuid-bin.js +85 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/v1.js +107 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/v3.js +16 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/v35.js +80 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/v4.js +43 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/v5.js +16 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/validate.js +17 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/dist/version.js +21 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/package.json +135 -0
- package/node_modules/@quantiya/codevibe-core/node_modules/uuid/wrapper.mjs +10 -0
- package/node_modules/@quantiya/codevibe-core/package.json +51 -0
- package/node_modules/accepts/HISTORY.md +250 -0
- package/node_modules/accepts/LICENSE +23 -0
- package/node_modules/accepts/README.md +140 -0
- package/node_modules/accepts/index.js +238 -0
- package/node_modules/accepts/package.json +47 -0
- package/node_modules/base64-js/LICENSE +21 -0
- package/node_modules/base64-js/README.md +34 -0
- package/node_modules/base64-js/base64js.min.js +1 -0
- package/node_modules/base64-js/index.d.ts +3 -0
- package/node_modules/base64-js/index.js +150 -0
- package/node_modules/base64-js/package.json +47 -0
- package/node_modules/bl/.travis.yml +17 -0
- package/node_modules/bl/BufferList.js +396 -0
- package/node_modules/bl/LICENSE.md +13 -0
- package/node_modules/bl/README.md +247 -0
- package/node_modules/bl/bl.js +84 -0
- package/node_modules/bl/package.json +37 -0
- package/node_modules/bl/test/convert.js +21 -0
- package/node_modules/bl/test/indexOf.js +492 -0
- package/node_modules/bl/test/isBufferList.js +32 -0
- package/node_modules/bl/test/test.js +869 -0
- package/node_modules/body-parser/LICENSE +23 -0
- package/node_modules/body-parser/README.md +494 -0
- package/node_modules/body-parser/index.js +80 -0
- package/node_modules/body-parser/lib/read.js +250 -0
- package/node_modules/body-parser/lib/types/json.js +166 -0
- package/node_modules/body-parser/lib/types/raw.js +43 -0
- package/node_modules/body-parser/lib/types/text.js +37 -0
- package/node_modules/body-parser/lib/types/urlencoded.js +142 -0
- package/node_modules/body-parser/lib/utils.js +96 -0
- package/node_modules/body-parser/package.json +52 -0
- package/node_modules/buffer/AUTHORS.md +70 -0
- package/node_modules/buffer/LICENSE +21 -0
- package/node_modules/buffer/README.md +410 -0
- package/node_modules/buffer/index.d.ts +186 -0
- package/node_modules/buffer/index.js +1817 -0
- package/node_modules/buffer/package.json +96 -0
- package/node_modules/bytes/History.md +97 -0
- package/node_modules/bytes/LICENSE +23 -0
- package/node_modules/bytes/Readme.md +152 -0
- package/node_modules/bytes/index.js +170 -0
- package/node_modules/bytes/package.json +42 -0
- package/node_modules/call-bind-apply-helpers/.eslintrc +17 -0
- package/node_modules/call-bind-apply-helpers/.github/FUNDING.yml +12 -0
- package/node_modules/call-bind-apply-helpers/.nycrc +9 -0
- package/node_modules/call-bind-apply-helpers/CHANGELOG.md +30 -0
- package/node_modules/call-bind-apply-helpers/LICENSE +21 -0
- package/node_modules/call-bind-apply-helpers/README.md +62 -0
- package/node_modules/call-bind-apply-helpers/actualApply.d.ts +1 -0
- package/node_modules/call-bind-apply-helpers/actualApply.js +10 -0
- package/node_modules/call-bind-apply-helpers/applyBind.d.ts +19 -0
- package/node_modules/call-bind-apply-helpers/applyBind.js +10 -0
- package/node_modules/call-bind-apply-helpers/functionApply.d.ts +1 -0
- package/node_modules/call-bind-apply-helpers/functionApply.js +4 -0
- package/node_modules/call-bind-apply-helpers/functionCall.d.ts +1 -0
- package/node_modules/call-bind-apply-helpers/functionCall.js +4 -0
- package/node_modules/call-bind-apply-helpers/index.d.ts +64 -0
- package/node_modules/call-bind-apply-helpers/index.js +15 -0
- package/node_modules/call-bind-apply-helpers/package.json +85 -0
- package/node_modules/call-bind-apply-helpers/reflectApply.d.ts +3 -0
- package/node_modules/call-bind-apply-helpers/reflectApply.js +4 -0
- package/node_modules/call-bind-apply-helpers/test/index.js +63 -0
- package/node_modules/call-bind-apply-helpers/tsconfig.json +9 -0
- package/node_modules/call-bound/.eslintrc +13 -0
- package/node_modules/call-bound/.github/FUNDING.yml +12 -0
- package/node_modules/call-bound/.nycrc +9 -0
- package/node_modules/call-bound/CHANGELOG.md +42 -0
- package/node_modules/call-bound/LICENSE +21 -0
- package/node_modules/call-bound/README.md +53 -0
- package/node_modules/call-bound/index.d.ts +94 -0
- package/node_modules/call-bound/index.js +19 -0
- package/node_modules/call-bound/package.json +99 -0
- package/node_modules/call-bound/test/index.js +61 -0
- package/node_modules/call-bound/tsconfig.json +10 -0
- package/node_modules/chownr/LICENSE +15 -0
- package/node_modules/chownr/README.md +3 -0
- package/node_modules/chownr/chownr.js +167 -0
- package/node_modules/chownr/package.json +29 -0
- package/node_modules/content-disposition/HISTORY.md +72 -0
- package/node_modules/content-disposition/LICENSE +22 -0
- package/node_modules/content-disposition/README.md +142 -0
- package/node_modules/content-disposition/index.js +458 -0
- package/node_modules/content-disposition/package.json +43 -0
- package/node_modules/content-type/HISTORY.md +29 -0
- package/node_modules/content-type/LICENSE +22 -0
- package/node_modules/content-type/README.md +94 -0
- package/node_modules/content-type/index.js +225 -0
- package/node_modules/content-type/package.json +42 -0
- package/node_modules/cookie/LICENSE +24 -0
- package/node_modules/cookie/README.md +317 -0
- package/node_modules/cookie/SECURITY.md +25 -0
- package/node_modules/cookie/index.js +335 -0
- package/node_modules/cookie/package.json +44 -0
- package/node_modules/cookie-signature/History.md +70 -0
- package/node_modules/cookie-signature/LICENSE +22 -0
- package/node_modules/cookie-signature/Readme.md +23 -0
- package/node_modules/cookie-signature/index.js +47 -0
- package/node_modules/cookie-signature/package.json +24 -0
- package/node_modules/debug/LICENSE +20 -0
- package/node_modules/debug/README.md +481 -0
- package/node_modules/debug/package.json +64 -0
- package/node_modules/debug/src/browser.js +272 -0
- package/node_modules/debug/src/common.js +292 -0
- package/node_modules/debug/src/index.js +10 -0
- package/node_modules/debug/src/node.js +263 -0
- package/node_modules/decompress-response/index.d.ts +22 -0
- package/node_modules/decompress-response/index.js +58 -0
- package/node_modules/decompress-response/license +9 -0
- package/node_modules/decompress-response/package.json +56 -0
- package/node_modules/decompress-response/readme.md +48 -0
- package/node_modules/deep-extend/CHANGELOG.md +46 -0
- package/node_modules/deep-extend/LICENSE +20 -0
- package/node_modules/deep-extend/README.md +91 -0
- package/node_modules/deep-extend/index.js +1 -0
- package/node_modules/deep-extend/lib/deep-extend.js +150 -0
- package/node_modules/deep-extend/package.json +62 -0
- package/node_modules/depd/History.md +103 -0
- package/node_modules/depd/LICENSE +22 -0
- package/node_modules/depd/Readme.md +280 -0
- package/node_modules/depd/index.js +538 -0
- package/node_modules/depd/lib/browser/index.js +77 -0
- package/node_modules/depd/package.json +45 -0
- package/node_modules/detect-libc/LICENSE +201 -0
- package/node_modules/detect-libc/README.md +163 -0
- package/node_modules/detect-libc/index.d.ts +14 -0
- package/node_modules/detect-libc/lib/detect-libc.js +313 -0
- package/node_modules/detect-libc/lib/elf.js +39 -0
- package/node_modules/detect-libc/lib/filesystem.js +51 -0
- package/node_modules/detect-libc/lib/process.js +24 -0
- package/node_modules/detect-libc/package.json +44 -0
- package/node_modules/dotenv/CHANGELOG.md +520 -0
- package/node_modules/dotenv/LICENSE +23 -0
- package/node_modules/dotenv/README-es.md +411 -0
- package/node_modules/dotenv/README.md +645 -0
- package/node_modules/dotenv/SECURITY.md +1 -0
- package/node_modules/dotenv/config.d.ts +1 -0
- package/node_modules/dotenv/config.js +9 -0
- package/node_modules/dotenv/lib/cli-options.js +17 -0
- package/node_modules/dotenv/lib/env-options.js +28 -0
- package/node_modules/dotenv/lib/main.d.ts +162 -0
- package/node_modules/dotenv/lib/main.js +386 -0
- package/node_modules/dotenv/package.json +62 -0
- package/node_modules/dunder-proto/.eslintrc +5 -0
- package/node_modules/dunder-proto/.github/FUNDING.yml +12 -0
- package/node_modules/dunder-proto/.nycrc +13 -0
- package/node_modules/dunder-proto/CHANGELOG.md +24 -0
- package/node_modules/dunder-proto/LICENSE +21 -0
- package/node_modules/dunder-proto/README.md +54 -0
- package/node_modules/dunder-proto/get.d.ts +5 -0
- package/node_modules/dunder-proto/get.js +30 -0
- package/node_modules/dunder-proto/package.json +76 -0
- package/node_modules/dunder-proto/set.d.ts +5 -0
- package/node_modules/dunder-proto/set.js +35 -0
- package/node_modules/dunder-proto/test/get.js +34 -0
- package/node_modules/dunder-proto/test/index.js +4 -0
- package/node_modules/dunder-proto/test/set.js +50 -0
- package/node_modules/dunder-proto/tsconfig.json +9 -0
- package/node_modules/ee-first/LICENSE +22 -0
- package/node_modules/ee-first/README.md +80 -0
- package/node_modules/ee-first/index.js +95 -0
- package/node_modules/ee-first/package.json +29 -0
- package/node_modules/encodeurl/LICENSE +22 -0
- package/node_modules/encodeurl/README.md +109 -0
- package/node_modules/encodeurl/index.js +60 -0
- package/node_modules/encodeurl/package.json +40 -0
- package/node_modules/end-of-stream/LICENSE +21 -0
- package/node_modules/end-of-stream/README.md +54 -0
- package/node_modules/end-of-stream/index.js +96 -0
- package/node_modules/end-of-stream/package.json +37 -0
- package/node_modules/es-define-property/.eslintrc +13 -0
- package/node_modules/es-define-property/.github/FUNDING.yml +12 -0
- package/node_modules/es-define-property/.nycrc +9 -0
- package/node_modules/es-define-property/CHANGELOG.md +29 -0
- package/node_modules/es-define-property/LICENSE +21 -0
- package/node_modules/es-define-property/README.md +49 -0
- package/node_modules/es-define-property/index.d.ts +3 -0
- package/node_modules/es-define-property/index.js +14 -0
- package/node_modules/es-define-property/package.json +81 -0
- package/node_modules/es-define-property/test/index.js +56 -0
- package/node_modules/es-define-property/tsconfig.json +10 -0
- package/node_modules/es-errors/.eslintrc +5 -0
- package/node_modules/es-errors/.github/FUNDING.yml +12 -0
- package/node_modules/es-errors/CHANGELOG.md +40 -0
- package/node_modules/es-errors/LICENSE +21 -0
- package/node_modules/es-errors/README.md +55 -0
- package/node_modules/es-errors/eval.d.ts +3 -0
- package/node_modules/es-errors/eval.js +4 -0
- package/node_modules/es-errors/index.d.ts +3 -0
- package/node_modules/es-errors/index.js +4 -0
- package/node_modules/es-errors/package.json +80 -0
- package/node_modules/es-errors/range.d.ts +3 -0
- package/node_modules/es-errors/range.js +4 -0
- package/node_modules/es-errors/ref.d.ts +3 -0
- package/node_modules/es-errors/ref.js +4 -0
- package/node_modules/es-errors/syntax.d.ts +3 -0
- package/node_modules/es-errors/syntax.js +4 -0
- package/node_modules/es-errors/test/index.js +19 -0
- package/node_modules/es-errors/tsconfig.json +49 -0
- package/node_modules/es-errors/type.d.ts +3 -0
- package/node_modules/es-errors/type.js +4 -0
- package/node_modules/es-errors/uri.d.ts +3 -0
- package/node_modules/es-errors/uri.js +4 -0
- package/node_modules/es-object-atoms/.eslintrc +16 -0
- package/node_modules/es-object-atoms/.github/FUNDING.yml +12 -0
- package/node_modules/es-object-atoms/CHANGELOG.md +37 -0
- package/node_modules/es-object-atoms/LICENSE +21 -0
- package/node_modules/es-object-atoms/README.md +63 -0
- package/node_modules/es-object-atoms/RequireObjectCoercible.d.ts +3 -0
- package/node_modules/es-object-atoms/RequireObjectCoercible.js +11 -0
- package/node_modules/es-object-atoms/ToObject.d.ts +7 -0
- package/node_modules/es-object-atoms/ToObject.js +10 -0
- package/node_modules/es-object-atoms/index.d.ts +3 -0
- package/node_modules/es-object-atoms/index.js +4 -0
- package/node_modules/es-object-atoms/isObject.d.ts +3 -0
- package/node_modules/es-object-atoms/isObject.js +6 -0
- package/node_modules/es-object-atoms/package.json +80 -0
- package/node_modules/es-object-atoms/test/index.js +38 -0
- package/node_modules/es-object-atoms/tsconfig.json +6 -0
- package/node_modules/escape-html/LICENSE +24 -0
- package/node_modules/escape-html/Readme.md +43 -0
- package/node_modules/escape-html/index.js +78 -0
- package/node_modules/escape-html/package.json +24 -0
- package/node_modules/etag/HISTORY.md +83 -0
- package/node_modules/etag/LICENSE +22 -0
- package/node_modules/etag/README.md +159 -0
- package/node_modules/etag/index.js +131 -0
- package/node_modules/etag/package.json +47 -0
- package/node_modules/expand-template/.travis.yml +6 -0
- package/node_modules/expand-template/LICENSE +21 -0
- package/node_modules/expand-template/README.md +43 -0
- package/node_modules/expand-template/index.js +26 -0
- package/node_modules/expand-template/package.json +29 -0
- package/node_modules/expand-template/test.js +67 -0
- package/node_modules/express/History.md +3858 -0
- package/node_modules/express/LICENSE +24 -0
- package/node_modules/express/Readme.md +266 -0
- package/node_modules/express/index.js +11 -0
- package/node_modules/express/lib/application.js +631 -0
- package/node_modules/express/lib/express.js +81 -0
- package/node_modules/express/lib/request.js +515 -0
- package/node_modules/express/lib/response.js +1039 -0
- package/node_modules/express/lib/utils.js +269 -0
- package/node_modules/express/lib/view.js +205 -0
- package/node_modules/express/package.json +98 -0
- package/node_modules/finalhandler/HISTORY.md +233 -0
- package/node_modules/finalhandler/LICENSE +22 -0
- package/node_modules/finalhandler/README.md +147 -0
- package/node_modules/finalhandler/index.js +293 -0
- package/node_modules/finalhandler/package.json +43 -0
- package/node_modules/forwarded/HISTORY.md +21 -0
- package/node_modules/forwarded/LICENSE +22 -0
- package/node_modules/forwarded/README.md +57 -0
- package/node_modules/forwarded/index.js +90 -0
- package/node_modules/forwarded/package.json +45 -0
- package/node_modules/fresh/HISTORY.md +80 -0
- package/node_modules/fresh/LICENSE +23 -0
- package/node_modules/fresh/README.md +117 -0
- package/node_modules/fresh/index.js +136 -0
- package/node_modules/fresh/package.json +46 -0
- package/node_modules/fs-constants/LICENSE +21 -0
- package/node_modules/fs-constants/README.md +26 -0
- package/node_modules/fs-constants/browser.js +1 -0
- package/node_modules/fs-constants/index.js +1 -0
- package/node_modules/fs-constants/package.json +19 -0
- package/node_modules/function-bind/.eslintrc +21 -0
- package/node_modules/function-bind/.github/FUNDING.yml +12 -0
- package/node_modules/function-bind/.github/SECURITY.md +3 -0
- package/node_modules/function-bind/.nycrc +13 -0
- package/node_modules/function-bind/CHANGELOG.md +136 -0
- package/node_modules/function-bind/LICENSE +20 -0
- package/node_modules/function-bind/README.md +46 -0
- package/node_modules/function-bind/implementation.js +84 -0
- package/node_modules/function-bind/index.js +5 -0
- package/node_modules/function-bind/package.json +87 -0
- package/node_modules/function-bind/test/.eslintrc +9 -0
- package/node_modules/function-bind/test/index.js +252 -0
- package/node_modules/get-intrinsic/.eslintrc +42 -0
- package/node_modules/get-intrinsic/.github/FUNDING.yml +12 -0
- package/node_modules/get-intrinsic/.nycrc +9 -0
- package/node_modules/get-intrinsic/CHANGELOG.md +186 -0
- package/node_modules/get-intrinsic/LICENSE +21 -0
- package/node_modules/get-intrinsic/README.md +71 -0
- package/node_modules/get-intrinsic/index.js +378 -0
- package/node_modules/get-intrinsic/package.json +97 -0
- package/node_modules/get-intrinsic/test/GetIntrinsic.js +274 -0
- package/node_modules/get-proto/.eslintrc +10 -0
- package/node_modules/get-proto/.github/FUNDING.yml +12 -0
- package/node_modules/get-proto/.nycrc +9 -0
- package/node_modules/get-proto/CHANGELOG.md +21 -0
- package/node_modules/get-proto/LICENSE +21 -0
- package/node_modules/get-proto/Object.getPrototypeOf.d.ts +5 -0
- package/node_modules/get-proto/Object.getPrototypeOf.js +6 -0
- package/node_modules/get-proto/README.md +50 -0
- package/node_modules/get-proto/Reflect.getPrototypeOf.d.ts +3 -0
- package/node_modules/get-proto/Reflect.getPrototypeOf.js +4 -0
- package/node_modules/get-proto/index.d.ts +5 -0
- package/node_modules/get-proto/index.js +27 -0
- package/node_modules/get-proto/package.json +81 -0
- package/node_modules/get-proto/test/index.js +68 -0
- package/node_modules/get-proto/tsconfig.json +9 -0
- package/node_modules/github-from-package/.travis.yml +4 -0
- package/node_modules/github-from-package/LICENSE +18 -0
- package/node_modules/github-from-package/example/package.json +8 -0
- package/node_modules/github-from-package/example/url.js +3 -0
- package/node_modules/github-from-package/index.js +17 -0
- package/node_modules/github-from-package/package.json +30 -0
- package/node_modules/github-from-package/readme.markdown +53 -0
- package/node_modules/github-from-package/test/a.json +8 -0
- package/node_modules/github-from-package/test/b.json +5 -0
- package/node_modules/github-from-package/test/c.json +5 -0
- package/node_modules/github-from-package/test/d.json +7 -0
- package/node_modules/github-from-package/test/e.json +5 -0
- package/node_modules/github-from-package/test/url.js +19 -0
- package/node_modules/gopd/.eslintrc +16 -0
- package/node_modules/gopd/.github/FUNDING.yml +12 -0
- package/node_modules/gopd/CHANGELOG.md +45 -0
- package/node_modules/gopd/LICENSE +21 -0
- package/node_modules/gopd/README.md +40 -0
- package/node_modules/gopd/gOPD.d.ts +1 -0
- package/node_modules/gopd/gOPD.js +4 -0
- package/node_modules/gopd/index.d.ts +5 -0
- package/node_modules/gopd/index.js +15 -0
- package/node_modules/gopd/package.json +77 -0
- package/node_modules/gopd/test/index.js +36 -0
- package/node_modules/gopd/tsconfig.json +9 -0
- package/node_modules/graphql/LICENSE +21 -0
- package/node_modules/graphql/NotSupportedTSVersion.d.ts +1 -0
- package/node_modules/graphql/README.md +203 -0
- package/node_modules/graphql/error/GraphQLError.d.ts +152 -0
- package/node_modules/graphql/error/GraphQLError.js +267 -0
- package/node_modules/graphql/error/GraphQLError.mjs +253 -0
- package/node_modules/graphql/error/index.d.ts +9 -0
- package/node_modules/graphql/error/index.js +41 -0
- package/node_modules/graphql/error/index.mjs +3 -0
- package/node_modules/graphql/error/locatedError.d.ts +13 -0
- package/node_modules/graphql/error/locatedError.js +40 -0
- package/node_modules/graphql/error/locatedError.mjs +32 -0
- package/node_modules/graphql/error/syntaxError.d.ts +11 -0
- package/node_modules/graphql/error/syntaxError.js +19 -0
- package/node_modules/graphql/error/syntaxError.mjs +12 -0
- package/node_modules/graphql/execution/collectFields.d.ts +45 -0
- package/node_modules/graphql/execution/collectFields.js +229 -0
- package/node_modules/graphql/execution/collectFields.mjs +213 -0
- package/node_modules/graphql/execution/execute.d.ts +190 -0
- package/node_modules/graphql/execution/execute.js +1054 -0
- package/node_modules/graphql/execution/execute.mjs +1026 -0
- package/node_modules/graphql/execution/index.d.ts +18 -0
- package/node_modules/graphql/execution/index.js +73 -0
- package/node_modules/graphql/execution/index.mjs +13 -0
- package/node_modules/graphql/execution/mapAsyncIterator.d.ts +9 -0
- package/node_modules/graphql/execution/mapAsyncIterator.js +68 -0
- package/node_modules/graphql/execution/mapAsyncIterator.mjs +61 -0
- package/node_modules/graphql/execution/subscribe.d.ts +72 -0
- package/node_modules/graphql/execution/subscribe.js +244 -0
- package/node_modules/graphql/execution/subscribe.mjs +222 -0
- package/node_modules/graphql/execution/values.d.ts +79 -0
- package/node_modules/graphql/execution/values.js +300 -0
- package/node_modules/graphql/execution/values.mjs +263 -0
- package/node_modules/graphql/graphql.d.ts +67 -0
- package/node_modules/graphql/graphql.js +96 -0
- package/node_modules/graphql/graphql.mjs +122 -0
- package/node_modules/graphql/index.d.ts +428 -0
- package/node_modules/graphql/index.js +1311 -0
- package/node_modules/graphql/index.mjs +262 -0
- package/node_modules/graphql/jsutils/Maybe.d.ts +2 -0
- package/node_modules/graphql/jsutils/Maybe.js +5 -0
- package/node_modules/graphql/jsutils/Maybe.mjs +1 -0
- package/node_modules/graphql/jsutils/ObjMap.d.ts +16 -0
- package/node_modules/graphql/jsutils/ObjMap.js +5 -0
- package/node_modules/graphql/jsutils/ObjMap.mjs +1 -0
- package/node_modules/graphql/jsutils/Path.d.ts +20 -0
- package/node_modules/graphql/jsutils/Path.js +33 -0
- package/node_modules/graphql/jsutils/Path.mjs +25 -0
- package/node_modules/graphql/jsutils/PromiseOrValue.d.ts +1 -0
- package/node_modules/graphql/jsutils/PromiseOrValue.js +5 -0
- package/node_modules/graphql/jsutils/PromiseOrValue.mjs +1 -0
- package/node_modules/graphql/jsutils/devAssert.d.ts +1 -0
- package/node_modules/graphql/jsutils/devAssert.js +14 -0
- package/node_modules/graphql/jsutils/devAssert.mjs +7 -0
- package/node_modules/graphql/jsutils/didYouMean.d.ts +8 -0
- package/node_modules/graphql/jsutils/didYouMean.js +38 -0
- package/node_modules/graphql/jsutils/didYouMean.mjs +32 -0
- package/node_modules/graphql/jsutils/groupBy.d.ts +7 -0
- package/node_modules/graphql/jsutils/groupBy.js +26 -0
- package/node_modules/graphql/jsutils/groupBy.mjs +19 -0
- package/node_modules/graphql/jsutils/identityFunc.d.ts +4 -0
- package/node_modules/graphql/jsutils/identityFunc.js +13 -0
- package/node_modules/graphql/jsutils/identityFunc.mjs +6 -0
- package/node_modules/graphql/jsutils/inspect.d.ts +4 -0
- package/node_modules/graphql/jsutils/inspect.js +121 -0
- package/node_modules/graphql/jsutils/inspect.mjs +115 -0
- package/node_modules/graphql/jsutils/instanceOf.d.ts +16 -0
- package/node_modules/graphql/jsutils/instanceOf.js +65 -0
- package/node_modules/graphql/jsutils/instanceOf.mjs +57 -0
- package/node_modules/graphql/jsutils/invariant.d.ts +4 -0
- package/node_modules/graphql/jsutils/invariant.js +16 -0
- package/node_modules/graphql/jsutils/invariant.mjs +9 -0
- package/node_modules/graphql/jsutils/isAsyncIterable.d.ts +7 -0
- package/node_modules/graphql/jsutils/isAsyncIterable.js +18 -0
- package/node_modules/graphql/jsutils/isAsyncIterable.mjs +11 -0
- package/node_modules/graphql/jsutils/isIterableObject.d.ts +20 -0
- package/node_modules/graphql/jsutils/isIterableObject.js +32 -0
- package/node_modules/graphql/jsutils/isIterableObject.mjs +25 -0
- package/node_modules/graphql/jsutils/isObjectLike.d.ts +7 -0
- package/node_modules/graphql/jsutils/isObjectLike.js +14 -0
- package/node_modules/graphql/jsutils/isObjectLike.mjs +7 -0
- package/node_modules/graphql/jsutils/isPromise.d.ts +5 -0
- package/node_modules/graphql/jsutils/isPromise.js +17 -0
- package/node_modules/graphql/jsutils/isPromise.mjs +10 -0
- package/node_modules/graphql/jsutils/keyMap.d.ts +32 -0
- package/node_modules/graphql/jsutils/keyMap.js +43 -0
- package/node_modules/graphql/jsutils/keyMap.mjs +36 -0
- package/node_modules/graphql/jsutils/keyValMap.d.ts +23 -0
- package/node_modules/graphql/jsutils/keyValMap.js +33 -0
- package/node_modules/graphql/jsutils/keyValMap.mjs +26 -0
- package/node_modules/graphql/jsutils/mapValue.d.ts +9 -0
- package/node_modules/graphql/jsutils/mapValue.js +20 -0
- package/node_modules/graphql/jsutils/mapValue.mjs +13 -0
- package/node_modules/graphql/jsutils/memoize3.d.ts +9 -0
- package/node_modules/graphql/jsutils/memoize3.js +41 -0
- package/node_modules/graphql/jsutils/memoize3.mjs +34 -0
- package/node_modules/graphql/jsutils/naturalCompare.d.ts +8 -0
- package/node_modules/graphql/jsutils/naturalCompare.js +69 -0
- package/node_modules/graphql/jsutils/naturalCompare.mjs +61 -0
- package/node_modules/graphql/jsutils/printPathArray.d.ts +6 -0
- package/node_modules/graphql/jsutils/printPathArray.js +17 -0
- package/node_modules/graphql/jsutils/printPathArray.mjs +10 -0
- package/node_modules/graphql/jsutils/promiseForObject.d.ts +11 -0
- package/node_modules/graphql/jsutils/promiseForObject.js +25 -0
- package/node_modules/graphql/jsutils/promiseForObject.mjs +18 -0
- package/node_modules/graphql/jsutils/promiseReduce.d.ts +13 -0
- package/node_modules/graphql/jsutils/promiseReduce.js +27 -0
- package/node_modules/graphql/jsutils/promiseReduce.mjs +20 -0
- package/node_modules/graphql/jsutils/suggestionList.d.ts +8 -0
- package/node_modules/graphql/jsutils/suggestionList.js +139 -0
- package/node_modules/graphql/jsutils/suggestionList.mjs +130 -0
- package/node_modules/graphql/jsutils/toError.d.ts +4 -0
- package/node_modules/graphql/jsutils/toError.js +25 -0
- package/node_modules/graphql/jsutils/toError.mjs +18 -0
- package/node_modules/graphql/jsutils/toObjMap.d.ts +5 -0
- package/node_modules/graphql/jsutils/toObjMap.js +24 -0
- package/node_modules/graphql/jsutils/toObjMap.mjs +17 -0
- package/node_modules/graphql/language/ast.d.ts +582 -0
- package/node_modules/graphql/language/ast.js +237 -0
- package/node_modules/graphql/language/ast.mjs +221 -0
- package/node_modules/graphql/language/blockString.d.ts +28 -0
- package/node_modules/graphql/language/blockString.js +195 -0
- package/node_modules/graphql/language/blockString.mjs +178 -0
- package/node_modules/graphql/language/characterClasses.d.ts +47 -0
- package/node_modules/graphql/language/characterClasses.js +75 -0
- package/node_modules/graphql/language/characterClasses.mjs +64 -0
- package/node_modules/graphql/language/directiveLocation.d.ts +33 -0
- package/node_modules/graphql/language/directiveLocation.js +39 -0
- package/node_modules/graphql/language/directiveLocation.mjs +33 -0
- package/node_modules/graphql/language/index.d.ts +110 -0
- package/node_modules/graphql/language/index.js +227 -0
- package/node_modules/graphql/language/index.mjs +36 -0
- package/node_modules/graphql/language/kinds.d.ts +72 -0
- package/node_modules/graphql/language/kinds.js +68 -0
- package/node_modules/graphql/language/kinds.mjs +62 -0
- package/node_modules/graphql/language/lexer.d.ts +96 -0
- package/node_modules/graphql/language/lexer.js +1016 -0
- package/node_modules/graphql/language/lexer.mjs +915 -0
- package/node_modules/graphql/language/location.d.ts +16 -0
- package/node_modules/graphql/language/location.js +38 -0
- package/node_modules/graphql/language/location.mjs +30 -0
- package/node_modules/graphql/language/parser.d.ts +592 -0
- package/node_modules/graphql/language/parser.js +1692 -0
- package/node_modules/graphql/language/parser.mjs +1645 -0
- package/node_modules/graphql/language/predicates.d.ts +37 -0
- package/node_modules/graphql/language/predicates.js +120 -0
- package/node_modules/graphql/language/predicates.mjs +90 -0
- package/node_modules/graphql/language/printLocation.d.ts +14 -0
- package/node_modules/graphql/language/printLocation.js +74 -0
- package/node_modules/graphql/language/printLocation.mjs +66 -0
- package/node_modules/graphql/language/printString.d.ts +5 -0
- package/node_modules/graphql/language/printString.js +183 -0
- package/node_modules/graphql/language/printString.mjs +176 -0
- package/node_modules/graphql/language/printer.d.ts +6 -0
- package/node_modules/graphql/language/printer.js +380 -0
- package/node_modules/graphql/language/printer.mjs +368 -0
- package/node_modules/graphql/language/schemaCoordinateLexer.d.ts +43 -0
- package/node_modules/graphql/language/schemaCoordinateLexer.js +171 -0
- package/node_modules/graphql/language/schemaCoordinateLexer.mjs +122 -0
- package/node_modules/graphql/language/source.d.ts +25 -0
- package/node_modules/graphql/language/source.js +65 -0
- package/node_modules/graphql/language/source.mjs +50 -0
- package/node_modules/graphql/language/tokenKind.d.ts +36 -0
- package/node_modules/graphql/language/tokenKind.js +44 -0
- package/node_modules/graphql/language/tokenKind.mjs +38 -0
- package/node_modules/graphql/language/visitor.d.ts +194 -0
- package/node_modules/graphql/language/visitor.js +374 -0
- package/node_modules/graphql/language/visitor.mjs +358 -0
- package/node_modules/graphql/package.json +39 -0
- package/node_modules/graphql/subscription/index.d.ts +19 -0
- package/node_modules/graphql/subscription/index.js +19 -0
- package/node_modules/graphql/subscription/index.mjs +19 -0
- package/node_modules/graphql/type/assertName.d.ts +10 -0
- package/node_modules/graphql/type/assertName.js +59 -0
- package/node_modules/graphql/type/assertName.mjs +44 -0
- package/node_modules/graphql/type/definition.d.ts +926 -0
- package/node_modules/graphql/type/definition.js +1362 -0
- package/node_modules/graphql/type/definition.mjs +1197 -0
- package/node_modules/graphql/type/directives.d.ts +90 -0
- package/node_modules/graphql/type/directives.js +238 -0
- package/node_modules/graphql/type/directives.mjs +202 -0
- package/node_modules/graphql/type/index.d.ts +151 -0
- package/node_modules/graphql/type/index.js +553 -0
- package/node_modules/graphql/type/index.mjs +104 -0
- package/node_modules/graphql/type/introspection.d.ts +30 -0
- package/node_modules/graphql/type/introspection.js +625 -0
- package/node_modules/graphql/type/introspection.mjs +559 -0
- package/node_modules/graphql/type/scalars.d.ts +19 -0
- package/node_modules/graphql/type/scalars.js +369 -0
- package/node_modules/graphql/type/scalars.mjs +309 -0
- package/node_modules/graphql/type/schema.d.ts +170 -0
- package/node_modules/graphql/type/schema.js +402 -0
- package/node_modules/graphql/type/schema.mjs +381 -0
- package/node_modules/graphql/type/validate.d.ts +17 -0
- package/node_modules/graphql/type/validate.js +706 -0
- package/node_modules/graphql/type/validate.mjs +681 -0
- package/node_modules/graphql/utilities/TypeInfo.d.ts +67 -0
- package/node_modules/graphql/utilities/TypeInfo.js +418 -0
- package/node_modules/graphql/utilities/TypeInfo.mjs +395 -0
- package/node_modules/graphql/utilities/assertValidName.d.ts +13 -0
- package/node_modules/graphql/utilities/assertValidName.js +51 -0
- package/node_modules/graphql/utilities/assertValidName.mjs +40 -0
- package/node_modules/graphql/utilities/astFromValue.d.ts +28 -0
- package/node_modules/graphql/utilities/astFromValue.js +190 -0
- package/node_modules/graphql/utilities/astFromValue.mjs +177 -0
- package/node_modules/graphql/utilities/buildASTSchema.d.ts +35 -0
- package/node_modules/graphql/utilities/buildASTSchema.js +115 -0
- package/node_modules/graphql/utilities/buildASTSchema.mjs +97 -0
- package/node_modules/graphql/utilities/buildClientSchema.d.ts +19 -0
- package/node_modules/graphql/utilities/buildClientSchema.js +387 -0
- package/node_modules/graphql/utilities/buildClientSchema.mjs +364 -0
- package/node_modules/graphql/utilities/coerceInputValue.d.ts +16 -0
- package/node_modules/graphql/utilities/coerceInputValue.js +217 -0
- package/node_modules/graphql/utilities/coerceInputValue.mjs +192 -0
- package/node_modules/graphql/utilities/concatAST.d.ts +9 -0
- package/node_modules/graphql/utilities/concatAST.js +26 -0
- package/node_modules/graphql/utilities/concatAST.mjs +19 -0
- package/node_modules/graphql/utilities/extendSchema.d.ts +40 -0
- package/node_modules/graphql/utilities/extendSchema.js +808 -0
- package/node_modules/graphql/utilities/extendSchema.mjs +798 -0
- package/node_modules/graphql/utilities/findBreakingChanges.d.ts +53 -0
- package/node_modules/graphql/utilities/findBreakingChanges.js +547 -0
- package/node_modules/graphql/utilities/findBreakingChanges.mjs +519 -0
- package/node_modules/graphql/utilities/getIntrospectionQuery.d.ts +188 -0
- package/node_modules/graphql/utilities/getIntrospectionQuery.js +145 -0
- package/node_modules/graphql/utilities/getIntrospectionQuery.mjs +138 -0
- package/node_modules/graphql/utilities/getOperationAST.d.ts +11 -0
- package/node_modules/graphql/utilities/getOperationAST.js +43 -0
- package/node_modules/graphql/utilities/getOperationAST.mjs +36 -0
- package/node_modules/graphql/utilities/getOperationRootType.d.ts +15 -0
- package/node_modules/graphql/utilities/getOperationRootType.js +67 -0
- package/node_modules/graphql/utilities/getOperationRootType.mjs +54 -0
- package/node_modules/graphql/utilities/index.d.ts +66 -0
- package/node_modules/graphql/utilities/index.js +247 -0
- package/node_modules/graphql/utilities/index.mjs +60 -0
- package/node_modules/graphql/utilities/introspectionFromSchema.d.ts +18 -0
- package/node_modules/graphql/utilities/introspectionFromSchema.js +43 -0
- package/node_modules/graphql/utilities/introspectionFromSchema.mjs +31 -0
- package/node_modules/graphql/utilities/lexicographicSortSchema.d.ts +9 -0
- package/node_modules/graphql/utilities/lexicographicSortSchema.js +177 -0
- package/node_modules/graphql/utilities/lexicographicSortSchema.mjs +172 -0
- package/node_modules/graphql/utilities/printSchema.d.ts +5 -0
- package/node_modules/graphql/utilities/printSchema.js +338 -0
- package/node_modules/graphql/utilities/printSchema.mjs +314 -0
- package/node_modules/graphql/utilities/resolveSchemaCoordinate.d.ts +80 -0
- package/node_modules/graphql/utilities/resolveSchemaCoordinate.js +260 -0
- package/node_modules/graphql/utilities/resolveSchemaCoordinate.mjs +243 -0
- package/node_modules/graphql/utilities/separateOperations.d.ts +11 -0
- package/node_modules/graphql/utilities/separateOperations.js +88 -0
- package/node_modules/graphql/utilities/separateOperations.mjs +80 -0
- package/node_modules/graphql/utilities/sortValueNode.d.ts +9 -0
- package/node_modules/graphql/utilities/sortValueNode.js +47 -0
- package/node_modules/graphql/utilities/sortValueNode.mjs +39 -0
- package/node_modules/graphql/utilities/stripIgnoredCharacters.d.ts +62 -0
- package/node_modules/graphql/utilities/stripIgnoredCharacters.js +121 -0
- package/node_modules/graphql/utilities/stripIgnoredCharacters.mjs +104 -0
- package/node_modules/graphql/utilities/typeComparators.d.ts +32 -0
- package/node_modules/graphql/utilities/typeComparators.js +116 -0
- package/node_modules/graphql/utilities/typeComparators.mjs +106 -0
- package/node_modules/graphql/utilities/typeFromAST.d.ts +32 -0
- package/node_modules/graphql/utilities/typeFromAST.js +27 -0
- package/node_modules/graphql/utilities/typeFromAST.mjs +18 -0
- package/node_modules/graphql/utilities/typedQueryDocumentNode.d.ts +22 -0
- package/node_modules/graphql/utilities/typedQueryDocumentNode.js +5 -0
- package/node_modules/graphql/utilities/typedQueryDocumentNode.mjs +1 -0
- package/node_modules/graphql/utilities/valueFromAST.d.ts +29 -0
- package/node_modules/graphql/utilities/valueFromAST.js +197 -0
- package/node_modules/graphql/utilities/valueFromAST.mjs +184 -0
- package/node_modules/graphql/utilities/valueFromASTUntyped.d.ts +23 -0
- package/node_modules/graphql/utilities/valueFromASTUntyped.js +61 -0
- package/node_modules/graphql/utilities/valueFromASTUntyped.mjs +53 -0
- package/node_modules/graphql/validation/ValidationContext.d.ts +96 -0
- package/node_modules/graphql/validation/ValidationContext.js +233 -0
- package/node_modules/graphql/validation/ValidationContext.mjs +213 -0
- package/node_modules/graphql/validation/index.d.ts +41 -0
- package/node_modules/graphql/validation/index.js +331 -0
- package/node_modules/graphql/validation/index.mjs +69 -0
- package/node_modules/graphql/validation/rules/ExecutableDefinitionsRule.d.ts +13 -0
- package/node_modules/graphql/validation/rules/ExecutableDefinitionsRule.js +46 -0
- package/node_modules/graphql/validation/rules/ExecutableDefinitionsRule.mjs +34 -0
- package/node_modules/graphql/validation/rules/FieldsOnCorrectTypeRule.d.ts +13 -0
- package/node_modules/graphql/validation/rules/FieldsOnCorrectTypeRule.js +145 -0
- package/node_modules/graphql/validation/rules/FieldsOnCorrectTypeRule.mjs +127 -0
- package/node_modules/graphql/validation/rules/FragmentsOnCompositeTypesRule.d.ts +14 -0
- package/node_modules/graphql/validation/rules/FragmentsOnCompositeTypesRule.js +69 -0
- package/node_modules/graphql/validation/rules/FragmentsOnCompositeTypesRule.mjs +53 -0
- package/node_modules/graphql/validation/rules/KnownArgumentNamesRule.d.ts +23 -0
- package/node_modules/graphql/validation/rules/KnownArgumentNamesRule.js +120 -0
- package/node_modules/graphql/validation/rules/KnownArgumentNamesRule.mjs +102 -0
- package/node_modules/graphql/validation/rules/KnownDirectivesRule.d.ts +16 -0
- package/node_modules/graphql/validation/rules/KnownDirectivesRule.js +167 -0
- package/node_modules/graphql/validation/rules/KnownDirectivesRule.mjs +150 -0
- package/node_modules/graphql/validation/rules/KnownFragmentNamesRule.d.ts +13 -0
- package/node_modules/graphql/validation/rules/KnownFragmentNamesRule.js +36 -0
- package/node_modules/graphql/validation/rules/KnownFragmentNamesRule.mjs +26 -0
- package/node_modules/graphql/validation/rules/KnownTypeNamesRule.d.ts +16 -0
- package/node_modules/graphql/validation/rules/KnownTypeNamesRule.js +89 -0
- package/node_modules/graphql/validation/rules/KnownTypeNamesRule.mjs +77 -0
- package/node_modules/graphql/validation/rules/LoneAnonymousOperationRule.d.ts +13 -0
- package/node_modules/graphql/validation/rules/LoneAnonymousOperationRule.js +42 -0
- package/node_modules/graphql/validation/rules/LoneAnonymousOperationRule.mjs +34 -0
- package/node_modules/graphql/validation/rules/LoneSchemaDefinitionRule.d.ts +10 -0
- package/node_modules/graphql/validation/rules/LoneSchemaDefinitionRule.js +67 -0
- package/node_modules/graphql/validation/rules/LoneSchemaDefinitionRule.mjs +57 -0
- package/node_modules/graphql/validation/rules/MaxIntrospectionDepthRule.d.ts +5 -0
- package/node_modules/graphql/validation/rules/MaxIntrospectionDepthRule.js +90 -0
- package/node_modules/graphql/validation/rules/MaxIntrospectionDepthRule.mjs +77 -0
- package/node_modules/graphql/validation/rules/NoFragmentCyclesRule.d.ts +13 -0
- package/node_modules/graphql/validation/rules/NoFragmentCyclesRule.js +85 -0
- package/node_modules/graphql/validation/rules/NoFragmentCyclesRule.mjs +78 -0
- package/node_modules/graphql/validation/rules/NoUndefinedVariablesRule.d.ts +13 -0
- package/node_modules/graphql/validation/rules/NoUndefinedVariablesRule.js +52 -0
- package/node_modules/graphql/validation/rules/NoUndefinedVariablesRule.mjs +45 -0
- package/node_modules/graphql/validation/rules/NoUnusedFragmentsRule.d.ts +13 -0
- package/node_modules/graphql/validation/rules/NoUnusedFragmentsRule.js +61 -0
- package/node_modules/graphql/validation/rules/NoUnusedFragmentsRule.mjs +51 -0
- package/node_modules/graphql/validation/rules/NoUnusedVariablesRule.d.ts +13 -0
- package/node_modules/graphql/validation/rules/NoUnusedVariablesRule.js +57 -0
- package/node_modules/graphql/validation/rules/NoUnusedVariablesRule.mjs +50 -0
- package/node_modules/graphql/validation/rules/OverlappingFieldsCanBeMergedRule.d.ts +14 -0
- package/node_modules/graphql/validation/rules/OverlappingFieldsCanBeMergedRule.js +868 -0
- package/node_modules/graphql/validation/rules/OverlappingFieldsCanBeMergedRule.mjs +853 -0
- package/node_modules/graphql/validation/rules/PossibleFragmentSpreadsRule.d.ts +12 -0
- package/node_modules/graphql/validation/rules/PossibleFragmentSpreadsRule.js +95 -0
- package/node_modules/graphql/validation/rules/PossibleFragmentSpreadsRule.mjs +73 -0
- package/node_modules/graphql/validation/rules/PossibleTypeExtensionsRule.d.ts +10 -0
- package/node_modules/graphql/validation/rules/PossibleTypeExtensionsRule.js +171 -0
- package/node_modules/graphql/validation/rules/PossibleTypeExtensionsRule.mjs +148 -0
- package/node_modules/graphql/validation/rules/ProvidedRequiredArgumentsRule.d.ts +20 -0
- package/node_modules/graphql/validation/rules/ProvidedRequiredArgumentsRule.js +162 -0
- package/node_modules/graphql/validation/rules/ProvidedRequiredArgumentsRule.mjs +142 -0
- package/node_modules/graphql/validation/rules/ScalarLeafsRule.d.ts +9 -0
- package/node_modules/graphql/validation/rules/ScalarLeafsRule.js +66 -0
- package/node_modules/graphql/validation/rules/ScalarLeafsRule.mjs +57 -0
- package/node_modules/graphql/validation/rules/SingleFieldSubscriptionsRule.d.ts +13 -0
- package/node_modules/graphql/validation/rules/SingleFieldSubscriptionsRule.js +86 -0
- package/node_modules/graphql/validation/rules/SingleFieldSubscriptionsRule.mjs +77 -0
- package/node_modules/graphql/validation/rules/UniqueArgumentDefinitionNamesRule.d.ts +11 -0
- package/node_modules/graphql/validation/rules/UniqueArgumentDefinitionNamesRule.js +92 -0
- package/node_modules/graphql/validation/rules/UniqueArgumentDefinitionNamesRule.mjs +81 -0
- package/node_modules/graphql/validation/rules/UniqueArgumentNamesRule.d.ts +13 -0
- package/node_modules/graphql/validation/rules/UniqueArgumentNamesRule.js +55 -0
- package/node_modules/graphql/validation/rules/UniqueArgumentNamesRule.mjs +44 -0
- package/node_modules/graphql/validation/rules/UniqueDirectiveNamesRule.d.ts +10 -0
- package/node_modules/graphql/validation/rules/UniqueDirectiveNamesRule.js +54 -0
- package/node_modules/graphql/validation/rules/UniqueDirectiveNamesRule.mjs +47 -0
- package/node_modules/graphql/validation/rules/UniqueDirectivesPerLocationRule.d.ts +16 -0
- package/node_modules/graphql/validation/rules/UniqueDirectivesPerLocationRule.js +95 -0
- package/node_modules/graphql/validation/rules/UniqueDirectivesPerLocationRule.mjs +85 -0
- package/node_modules/graphql/validation/rules/UniqueEnumValueNamesRule.d.ts +10 -0
- package/node_modules/graphql/validation/rules/UniqueEnumValueNamesRule.js +75 -0
- package/node_modules/graphql/validation/rules/UniqueEnumValueNamesRule.mjs +64 -0
- package/node_modules/graphql/validation/rules/UniqueFieldDefinitionNamesRule.d.ts +10 -0
- package/node_modules/graphql/validation/rules/UniqueFieldDefinitionNamesRule.js +87 -0
- package/node_modules/graphql/validation/rules/UniqueFieldDefinitionNamesRule.mjs +79 -0
- package/node_modules/graphql/validation/rules/UniqueFragmentNamesRule.d.ts +12 -0
- package/node_modules/graphql/validation/rules/UniqueFragmentNamesRule.js +41 -0
- package/node_modules/graphql/validation/rules/UniqueFragmentNamesRule.mjs +34 -0
- package/node_modules/graphql/validation/rules/UniqueInputFieldNamesRule.d.ts +13 -0
- package/node_modules/graphql/validation/rules/UniqueInputFieldNamesRule.js +54 -0
- package/node_modules/graphql/validation/rules/UniqueInputFieldNamesRule.mjs +46 -0
- package/node_modules/graphql/validation/rules/UniqueOperationNamesRule.d.ts +12 -0
- package/node_modules/graphql/validation/rules/UniqueOperationNamesRule.js +46 -0
- package/node_modules/graphql/validation/rules/UniqueOperationNamesRule.mjs +39 -0
- package/node_modules/graphql/validation/rules/UniqueOperationTypesRule.d.ts +10 -0
- package/node_modules/graphql/validation/rules/UniqueOperationTypesRule.js +71 -0
- package/node_modules/graphql/validation/rules/UniqueOperationTypesRule.mjs +64 -0
- package/node_modules/graphql/validation/rules/UniqueTypeNamesRule.d.ts +10 -0
- package/node_modules/graphql/validation/rules/UniqueTypeNamesRule.js +57 -0
- package/node_modules/graphql/validation/rules/UniqueTypeNamesRule.mjs +47 -0
- package/node_modules/graphql/validation/rules/UniqueVariableNamesRule.d.ts +10 -0
- package/node_modules/graphql/validation/rules/UniqueVariableNamesRule.js +49 -0
- package/node_modules/graphql/validation/rules/UniqueVariableNamesRule.mjs +41 -0
- package/node_modules/graphql/validation/rules/ValuesOfCorrectTypeRule.d.ts +13 -0
- package/node_modules/graphql/validation/rules/ValuesOfCorrectTypeRule.js +246 -0
- package/node_modules/graphql/validation/rules/ValuesOfCorrectTypeRule.mjs +223 -0
- package/node_modules/graphql/validation/rules/VariablesAreInputTypesRule.d.ts +13 -0
- package/node_modules/graphql/validation/rules/VariablesAreInputTypesRule.js +46 -0
- package/node_modules/graphql/validation/rules/VariablesAreInputTypesRule.mjs +33 -0
- package/node_modules/graphql/validation/rules/VariablesInAllowedPositionRule.d.ts +12 -0
- package/node_modules/graphql/validation/rules/VariablesInAllowedPositionRule.js +131 -0
- package/node_modules/graphql/validation/rules/VariablesInAllowedPositionRule.mjs +116 -0
- package/node_modules/graphql/validation/rules/custom/NoDeprecatedCustomRule.d.ts +15 -0
- package/node_modules/graphql/validation/rules/custom/NoDeprecatedCustomRule.js +131 -0
- package/node_modules/graphql/validation/rules/custom/NoDeprecatedCustomRule.mjs +117 -0
- package/node_modules/graphql/validation/rules/custom/NoSchemaIntrospectionCustomRule.d.ts +15 -0
- package/node_modules/graphql/validation/rules/custom/NoSchemaIntrospectionCustomRule.js +41 -0
- package/node_modules/graphql/validation/rules/custom/NoSchemaIntrospectionCustomRule.mjs +32 -0
- package/node_modules/graphql/validation/specifiedRules.d.ts +18 -0
- package/node_modules/graphql/validation/specifiedRules.js +176 -0
- package/node_modules/graphql/validation/specifiedRules.mjs +132 -0
- package/node_modules/graphql/validation/validate.d.ts +61 -0
- package/node_modules/graphql/validation/validate.js +151 -0
- package/node_modules/graphql/validation/validate.mjs +133 -0
- package/node_modules/graphql/version.d.ts +13 -0
- package/node_modules/graphql/version.js +25 -0
- package/node_modules/graphql/version.mjs +17 -0
- package/node_modules/has-symbols/.eslintrc +11 -0
- package/node_modules/has-symbols/.github/FUNDING.yml +12 -0
- package/node_modules/has-symbols/.nycrc +9 -0
- package/node_modules/has-symbols/CHANGELOG.md +91 -0
- package/node_modules/has-symbols/LICENSE +21 -0
- package/node_modules/has-symbols/README.md +46 -0
- package/node_modules/has-symbols/index.d.ts +3 -0
- package/node_modules/has-symbols/index.js +14 -0
- package/node_modules/has-symbols/package.json +111 -0
- package/node_modules/has-symbols/shams.d.ts +3 -0
- package/node_modules/has-symbols/shams.js +45 -0
- package/node_modules/has-symbols/test/index.js +22 -0
- package/node_modules/has-symbols/test/shams/core-js.js +29 -0
- package/node_modules/has-symbols/test/shams/get-own-property-symbols.js +29 -0
- package/node_modules/has-symbols/test/tests.js +58 -0
- package/node_modules/has-symbols/tsconfig.json +10 -0
- package/node_modules/hasown/.eslintrc +5 -0
- package/node_modules/hasown/.github/FUNDING.yml +12 -0
- package/node_modules/hasown/.nycrc +13 -0
- package/node_modules/hasown/CHANGELOG.md +40 -0
- package/node_modules/hasown/LICENSE +21 -0
- package/node_modules/hasown/README.md +40 -0
- package/node_modules/hasown/index.d.ts +3 -0
- package/node_modules/hasown/index.js +8 -0
- package/node_modules/hasown/package.json +92 -0
- package/node_modules/hasown/tsconfig.json +6 -0
- package/node_modules/http-errors/HISTORY.md +186 -0
- package/node_modules/http-errors/LICENSE +23 -0
- package/node_modules/http-errors/README.md +169 -0
- package/node_modules/http-errors/index.js +290 -0
- package/node_modules/http-errors/package.json +54 -0
- package/node_modules/iconv-lite/Changelog.md +236 -0
- package/node_modules/iconv-lite/LICENSE +21 -0
- package/node_modules/iconv-lite/README.md +138 -0
- package/node_modules/iconv-lite/encodings/dbcs-codec.js +532 -0
- package/node_modules/iconv-lite/encodings/dbcs-data.js +185 -0
- package/node_modules/iconv-lite/encodings/index.js +23 -0
- package/node_modules/iconv-lite/encodings/internal.js +218 -0
- package/node_modules/iconv-lite/encodings/sbcs-codec.js +75 -0
- package/node_modules/iconv-lite/encodings/sbcs-data-generated.js +451 -0
- package/node_modules/iconv-lite/encodings/sbcs-data.js +178 -0
- package/node_modules/iconv-lite/encodings/tables/big5-added.json +122 -0
- package/node_modules/iconv-lite/encodings/tables/cp936.json +264 -0
- package/node_modules/iconv-lite/encodings/tables/cp949.json +273 -0
- package/node_modules/iconv-lite/encodings/tables/cp950.json +177 -0
- package/node_modules/iconv-lite/encodings/tables/eucjp.json +182 -0
- package/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json +1 -0
- package/node_modules/iconv-lite/encodings/tables/gbk-added.json +56 -0
- package/node_modules/iconv-lite/encodings/tables/shiftjis.json +125 -0
- package/node_modules/iconv-lite/encodings/utf16.js +187 -0
- package/node_modules/iconv-lite/encodings/utf32.js +307 -0
- package/node_modules/iconv-lite/encodings/utf7.js +283 -0
- package/node_modules/iconv-lite/lib/bom-handling.js +48 -0
- package/node_modules/iconv-lite/lib/helpers/merge-exports.js +13 -0
- package/node_modules/iconv-lite/lib/index.d.ts +41 -0
- package/node_modules/iconv-lite/lib/index.js +183 -0
- package/node_modules/iconv-lite/lib/streams.js +105 -0
- package/node_modules/iconv-lite/package.json +59 -0
- package/node_modules/ieee754/LICENSE +11 -0
- package/node_modules/ieee754/README.md +51 -0
- package/node_modules/ieee754/index.d.ts +10 -0
- package/node_modules/ieee754/index.js +85 -0
- package/node_modules/ieee754/package.json +52 -0
- package/node_modules/inherits/LICENSE +16 -0
- package/node_modules/inherits/README.md +42 -0
- package/node_modules/inherits/inherits.js +9 -0
- package/node_modules/inherits/inherits_browser.js +27 -0
- package/node_modules/inherits/package.json +29 -0
- package/node_modules/ini/LICENSE +15 -0
- package/node_modules/ini/README.md +102 -0
- package/node_modules/ini/ini.js +206 -0
- package/node_modules/ini/package.json +33 -0
- package/node_modules/ipaddr.js/LICENSE +19 -0
- package/node_modules/ipaddr.js/README.md +233 -0
- package/node_modules/ipaddr.js/ipaddr.min.js +1 -0
- package/node_modules/ipaddr.js/lib/ipaddr.js +673 -0
- package/node_modules/ipaddr.js/lib/ipaddr.js.d.ts +68 -0
- package/node_modules/ipaddr.js/package.json +35 -0
- package/node_modules/is-promise/LICENSE +19 -0
- package/node_modules/is-promise/index.d.ts +2 -0
- package/node_modules/is-promise/index.js +6 -0
- package/node_modules/is-promise/index.mjs +3 -0
- package/node_modules/is-promise/package.json +30 -0
- package/node_modules/is-promise/readme.md +33 -0
- package/node_modules/keytar/LICENSE.md +20 -0
- package/node_modules/keytar/README.md +94 -0
- package/node_modules/keytar/binding.gyp +66 -0
- package/node_modules/keytar/build/Release/keytar.node +0 -0
- package/node_modules/keytar/keytar.d.ts +51 -0
- package/node_modules/keytar/lib/keytar.js +43 -0
- package/node_modules/keytar/package.json +66 -0
- package/node_modules/keytar/src/async.cc +242 -0
- package/node_modules/keytar/src/async.h +103 -0
- package/node_modules/keytar/src/credentials.h +13 -0
- package/node_modules/keytar/src/keytar.h +41 -0
- package/node_modules/keytar/src/keytar_mac.cc +296 -0
- package/node_modules/keytar/src/keytar_posix.cc +184 -0
- package/node_modules/keytar/src/keytar_win.cc +272 -0
- package/node_modules/keytar/src/main.cc +139 -0
- package/node_modules/math-intrinsics/.eslintrc +16 -0
- package/node_modules/math-intrinsics/.github/FUNDING.yml +12 -0
- package/node_modules/math-intrinsics/CHANGELOG.md +24 -0
- package/node_modules/math-intrinsics/LICENSE +21 -0
- package/node_modules/math-intrinsics/README.md +50 -0
- package/node_modules/math-intrinsics/abs.d.ts +1 -0
- package/node_modules/math-intrinsics/abs.js +4 -0
- package/node_modules/math-intrinsics/constants/maxArrayLength.d.ts +3 -0
- package/node_modules/math-intrinsics/constants/maxArrayLength.js +4 -0
- package/node_modules/math-intrinsics/constants/maxSafeInteger.d.ts +3 -0
- package/node_modules/math-intrinsics/constants/maxSafeInteger.js +5 -0
- package/node_modules/math-intrinsics/constants/maxValue.d.ts +3 -0
- package/node_modules/math-intrinsics/constants/maxValue.js +5 -0
- package/node_modules/math-intrinsics/floor.d.ts +1 -0
- package/node_modules/math-intrinsics/floor.js +4 -0
- package/node_modules/math-intrinsics/isFinite.d.ts +3 -0
- package/node_modules/math-intrinsics/isFinite.js +12 -0
- package/node_modules/math-intrinsics/isInteger.d.ts +3 -0
- package/node_modules/math-intrinsics/isInteger.js +16 -0
- package/node_modules/math-intrinsics/isNaN.d.ts +1 -0
- package/node_modules/math-intrinsics/isNaN.js +6 -0
- package/node_modules/math-intrinsics/isNegativeZero.d.ts +3 -0
- package/node_modules/math-intrinsics/isNegativeZero.js +6 -0
- package/node_modules/math-intrinsics/max.d.ts +1 -0
- package/node_modules/math-intrinsics/max.js +4 -0
- package/node_modules/math-intrinsics/min.d.ts +1 -0
- package/node_modules/math-intrinsics/min.js +4 -0
- package/node_modules/math-intrinsics/mod.d.ts +3 -0
- package/node_modules/math-intrinsics/mod.js +9 -0
- package/node_modules/math-intrinsics/package.json +86 -0
- package/node_modules/math-intrinsics/pow.d.ts +1 -0
- package/node_modules/math-intrinsics/pow.js +4 -0
- package/node_modules/math-intrinsics/round.d.ts +1 -0
- package/node_modules/math-intrinsics/round.js +4 -0
- package/node_modules/math-intrinsics/sign.d.ts +3 -0
- package/node_modules/math-intrinsics/sign.js +11 -0
- package/node_modules/math-intrinsics/test/index.js +192 -0
- package/node_modules/math-intrinsics/tsconfig.json +3 -0
- package/node_modules/media-typer/HISTORY.md +50 -0
- package/node_modules/media-typer/LICENSE +22 -0
- package/node_modules/media-typer/README.md +93 -0
- package/node_modules/media-typer/index.js +143 -0
- package/node_modules/media-typer/package.json +33 -0
- package/node_modules/merge-descriptors/index.d.ts +11 -0
- package/node_modules/merge-descriptors/index.js +26 -0
- package/node_modules/merge-descriptors/license +11 -0
- package/node_modules/merge-descriptors/package.json +50 -0
- package/node_modules/merge-descriptors/readme.md +55 -0
- package/node_modules/mime-db/HISTORY.md +541 -0
- package/node_modules/mime-db/LICENSE +23 -0
- package/node_modules/mime-db/README.md +109 -0
- package/node_modules/mime-db/db.json +9342 -0
- package/node_modules/mime-db/index.js +12 -0
- package/node_modules/mime-db/package.json +56 -0
- package/node_modules/mime-types/HISTORY.md +428 -0
- package/node_modules/mime-types/LICENSE +23 -0
- package/node_modules/mime-types/README.md +126 -0
- package/node_modules/mime-types/index.js +211 -0
- package/node_modules/mime-types/mimeScore.js +57 -0
- package/node_modules/mime-types/package.json +49 -0
- package/node_modules/mimic-response/index.d.ts +17 -0
- package/node_modules/mimic-response/index.js +77 -0
- package/node_modules/mimic-response/license +9 -0
- package/node_modules/mimic-response/package.json +42 -0
- package/node_modules/mimic-response/readme.md +78 -0
- package/node_modules/minimist/.eslintrc +29 -0
- package/node_modules/minimist/.github/FUNDING.yml +12 -0
- package/node_modules/minimist/.nycrc +14 -0
- package/node_modules/minimist/CHANGELOG.md +298 -0
- package/node_modules/minimist/LICENSE +18 -0
- package/node_modules/minimist/README.md +121 -0
- package/node_modules/minimist/example/parse.js +4 -0
- package/node_modules/minimist/index.js +263 -0
- package/node_modules/minimist/package.json +75 -0
- package/node_modules/minimist/test/all_bool.js +34 -0
- package/node_modules/minimist/test/bool.js +177 -0
- package/node_modules/minimist/test/dash.js +43 -0
- package/node_modules/minimist/test/default_bool.js +37 -0
- package/node_modules/minimist/test/dotted.js +24 -0
- package/node_modules/minimist/test/kv_short.js +32 -0
- package/node_modules/minimist/test/long.js +33 -0
- package/node_modules/minimist/test/num.js +38 -0
- package/node_modules/minimist/test/parse.js +209 -0
- package/node_modules/minimist/test/parse_modified.js +11 -0
- package/node_modules/minimist/test/proto.js +64 -0
- package/node_modules/minimist/test/short.js +69 -0
- package/node_modules/minimist/test/stop_early.js +17 -0
- package/node_modules/minimist/test/unknown.js +104 -0
- package/node_modules/minimist/test/whitespace.js +10 -0
- package/node_modules/mkdirp-classic/LICENSE +21 -0
- package/node_modules/mkdirp-classic/README.md +18 -0
- package/node_modules/mkdirp-classic/index.js +98 -0
- package/node_modules/mkdirp-classic/package.json +18 -0
- package/node_modules/ms/index.js +162 -0
- package/node_modules/ms/license.md +21 -0
- package/node_modules/ms/package.json +38 -0
- package/node_modules/ms/readme.md +59 -0
- package/node_modules/napi-build-utils/.github/workflows/run-npm-tests.yml +31 -0
- package/node_modules/napi-build-utils/LICENSE +21 -0
- package/node_modules/napi-build-utils/README.md +52 -0
- package/node_modules/napi-build-utils/index.js +214 -0
- package/node_modules/napi-build-utils/index.md +0 -0
- package/node_modules/napi-build-utils/package.json +42 -0
- package/node_modules/negotiator/HISTORY.md +114 -0
- package/node_modules/negotiator/LICENSE +24 -0
- package/node_modules/negotiator/README.md +212 -0
- package/node_modules/negotiator/index.js +83 -0
- package/node_modules/negotiator/lib/charset.js +169 -0
- package/node_modules/negotiator/lib/encoding.js +205 -0
- package/node_modules/negotiator/lib/language.js +179 -0
- package/node_modules/negotiator/lib/mediaType.js +294 -0
- package/node_modules/negotiator/package.json +43 -0
- package/node_modules/node-abi/LICENSE +21 -0
- package/node_modules/node-abi/README.md +54 -0
- package/node_modules/node-abi/abi_registry.json +432 -0
- package/node_modules/node-abi/index.js +179 -0
- package/node_modules/node-abi/package.json +45 -0
- package/node_modules/node-addon-api/LICENSE.md +13 -0
- package/node_modules/node-addon-api/README.md +293 -0
- package/node_modules/node-addon-api/common.gypi +21 -0
- package/node_modules/node-addon-api/except.gypi +25 -0
- package/node_modules/node-addon-api/index.js +11 -0
- package/node_modules/node-addon-api/napi-inl.deprecated.h +192 -0
- package/node_modules/node-addon-api/napi-inl.h +6209 -0
- package/node_modules/node-addon-api/napi.h +2983 -0
- package/node_modules/node-addon-api/node_api.gyp +9 -0
- package/node_modules/node-addon-api/noexcept.gypi +26 -0
- package/node_modules/node-addon-api/nothing.c +0 -0
- package/node_modules/node-addon-api/package-support.json +21 -0
- package/node_modules/node-addon-api/package.json +399 -0
- package/node_modules/node-addon-api/tools/README.md +73 -0
- package/node_modules/node-addon-api/tools/check-napi.js +100 -0
- package/node_modules/node-addon-api/tools/clang-format.js +68 -0
- package/node_modules/node-addon-api/tools/conversion.js +309 -0
- package/node_modules/node-addon-api/tools/eslint-format.js +71 -0
- package/node_modules/object-inspect/.eslintrc +53 -0
- package/node_modules/object-inspect/.github/FUNDING.yml +12 -0
- package/node_modules/object-inspect/.nycrc +13 -0
- package/node_modules/object-inspect/CHANGELOG.md +424 -0
- package/node_modules/object-inspect/LICENSE +21 -0
- package/node_modules/object-inspect/example/all.js +23 -0
- package/node_modules/object-inspect/example/circular.js +6 -0
- package/node_modules/object-inspect/example/fn.js +5 -0
- package/node_modules/object-inspect/example/inspect.js +10 -0
- package/node_modules/object-inspect/index.js +544 -0
- package/node_modules/object-inspect/package-support.json +20 -0
- package/node_modules/object-inspect/package.json +105 -0
- package/node_modules/object-inspect/readme.markdown +84 -0
- package/node_modules/object-inspect/test/bigint.js +58 -0
- package/node_modules/object-inspect/test/browser/dom.js +15 -0
- package/node_modules/object-inspect/test/circular.js +16 -0
- package/node_modules/object-inspect/test/deep.js +12 -0
- package/node_modules/object-inspect/test/element.js +53 -0
- package/node_modules/object-inspect/test/err.js +48 -0
- package/node_modules/object-inspect/test/fakes.js +29 -0
- package/node_modules/object-inspect/test/fn.js +76 -0
- package/node_modules/object-inspect/test/global.js +17 -0
- package/node_modules/object-inspect/test/has.js +15 -0
- package/node_modules/object-inspect/test/holes.js +15 -0
- package/node_modules/object-inspect/test/indent-option.js +271 -0
- package/node_modules/object-inspect/test/inspect.js +139 -0
- package/node_modules/object-inspect/test/lowbyte.js +12 -0
- package/node_modules/object-inspect/test/number.js +58 -0
- package/node_modules/object-inspect/test/quoteStyle.js +26 -0
- package/node_modules/object-inspect/test/toStringTag.js +40 -0
- package/node_modules/object-inspect/test/undef.js +12 -0
- package/node_modules/object-inspect/test/values.js +261 -0
- package/node_modules/object-inspect/test-core-js.js +26 -0
- package/node_modules/object-inspect/util.inspect.js +1 -0
- package/node_modules/on-finished/HISTORY.md +98 -0
- package/node_modules/on-finished/LICENSE +23 -0
- package/node_modules/on-finished/README.md +162 -0
- package/node_modules/on-finished/index.js +234 -0
- package/node_modules/on-finished/package.json +39 -0
- package/node_modules/once/LICENSE +15 -0
- package/node_modules/once/README.md +79 -0
- package/node_modules/once/once.js +42 -0
- package/node_modules/once/package.json +33 -0
- package/node_modules/parseurl/HISTORY.md +58 -0
- package/node_modules/parseurl/LICENSE +24 -0
- package/node_modules/parseurl/README.md +133 -0
- package/node_modules/parseurl/index.js +158 -0
- package/node_modules/parseurl/package.json +40 -0
- package/node_modules/path-to-regexp/LICENSE +21 -0
- package/node_modules/path-to-regexp/Readme.md +224 -0
- package/node_modules/path-to-regexp/dist/index.d.ts +144 -0
- package/node_modules/path-to-regexp/dist/index.js +409 -0
- package/node_modules/path-to-regexp/dist/index.js.map +1 -0
- package/node_modules/path-to-regexp/package.json +64 -0
- package/node_modules/prebuild-install/CHANGELOG.md +131 -0
- package/node_modules/prebuild-install/CONTRIBUTING.md +6 -0
- package/node_modules/prebuild-install/LICENSE +21 -0
- package/node_modules/prebuild-install/README.md +163 -0
- package/node_modules/prebuild-install/asset.js +44 -0
- package/node_modules/prebuild-install/bin.js +78 -0
- package/node_modules/prebuild-install/download.js +142 -0
- package/node_modules/prebuild-install/error.js +14 -0
- package/node_modules/prebuild-install/help.txt +16 -0
- package/node_modules/prebuild-install/index.js +1 -0
- package/node_modules/prebuild-install/log.js +33 -0
- package/node_modules/prebuild-install/package.json +67 -0
- package/node_modules/prebuild-install/proxy.js +35 -0
- package/node_modules/prebuild-install/rc.js +64 -0
- package/node_modules/prebuild-install/util.js +143 -0
- package/node_modules/proxy-addr/HISTORY.md +161 -0
- package/node_modules/proxy-addr/LICENSE +22 -0
- package/node_modules/proxy-addr/README.md +139 -0
- package/node_modules/proxy-addr/index.js +327 -0
- package/node_modules/proxy-addr/package.json +47 -0
- package/node_modules/pump/.github/FUNDING.yml +2 -0
- package/node_modules/pump/.travis.yml +5 -0
- package/node_modules/pump/LICENSE +21 -0
- package/node_modules/pump/README.md +74 -0
- package/node_modules/pump/SECURITY.md +5 -0
- package/node_modules/pump/empty.js +1 -0
- package/node_modules/pump/index.js +86 -0
- package/node_modules/pump/package.json +30 -0
- package/node_modules/pump/test-browser.js +66 -0
- package/node_modules/pump/test-node.js +53 -0
- package/node_modules/qs/.editorconfig +46 -0
- package/node_modules/qs/.eslintrc +39 -0
- package/node_modules/qs/.github/FUNDING.yml +12 -0
- package/node_modules/qs/.nycrc +13 -0
- package/node_modules/qs/CHANGELOG.md +622 -0
- package/node_modules/qs/LICENSE.md +29 -0
- package/node_modules/qs/README.md +733 -0
- package/node_modules/qs/dist/qs.js +141 -0
- package/node_modules/qs/lib/formats.js +23 -0
- package/node_modules/qs/lib/index.js +11 -0
- package/node_modules/qs/lib/parse.js +328 -0
- package/node_modules/qs/lib/stringify.js +356 -0
- package/node_modules/qs/lib/utils.js +268 -0
- package/node_modules/qs/package.json +93 -0
- package/node_modules/qs/test/empty-keys-cases.js +267 -0
- package/node_modules/qs/test/parse.js +1276 -0
- package/node_modules/qs/test/stringify.js +1306 -0
- package/node_modules/qs/test/utils.js +262 -0
- package/node_modules/range-parser/HISTORY.md +56 -0
- package/node_modules/range-parser/LICENSE +23 -0
- package/node_modules/range-parser/README.md +84 -0
- package/node_modules/range-parser/index.js +162 -0
- package/node_modules/range-parser/package.json +44 -0
- package/node_modules/raw-body/LICENSE +22 -0
- package/node_modules/raw-body/README.md +223 -0
- package/node_modules/raw-body/index.d.ts +85 -0
- package/node_modules/raw-body/index.js +336 -0
- package/node_modules/raw-body/package.json +46 -0
- package/node_modules/rc/LICENSE.APACHE2 +15 -0
- package/node_modules/rc/LICENSE.BSD +26 -0
- package/node_modules/rc/LICENSE.MIT +24 -0
- package/node_modules/rc/README.md +227 -0
- package/node_modules/rc/browser.js +7 -0
- package/node_modules/rc/cli.js +4 -0
- package/node_modules/rc/index.js +53 -0
- package/node_modules/rc/lib/utils.js +104 -0
- package/node_modules/rc/package.json +29 -0
- package/node_modules/rc/test/ini.js +16 -0
- package/node_modules/rc/test/nested-env-vars.js +50 -0
- package/node_modules/rc/test/test.js +59 -0
- package/node_modules/readable-stream/CONTRIBUTING.md +38 -0
- package/node_modules/readable-stream/GOVERNANCE.md +136 -0
- package/node_modules/readable-stream/LICENSE +47 -0
- package/node_modules/readable-stream/README.md +106 -0
- package/node_modules/readable-stream/errors-browser.js +127 -0
- package/node_modules/readable-stream/errors.js +116 -0
- package/node_modules/readable-stream/experimentalWarning.js +17 -0
- package/node_modules/readable-stream/lib/_stream_duplex.js +126 -0
- package/node_modules/readable-stream/lib/_stream_passthrough.js +37 -0
- package/node_modules/readable-stream/lib/_stream_readable.js +1027 -0
- package/node_modules/readable-stream/lib/_stream_transform.js +190 -0
- package/node_modules/readable-stream/lib/_stream_writable.js +641 -0
- package/node_modules/readable-stream/lib/internal/streams/async_iterator.js +180 -0
- package/node_modules/readable-stream/lib/internal/streams/buffer_list.js +183 -0
- package/node_modules/readable-stream/lib/internal/streams/destroy.js +96 -0
- package/node_modules/readable-stream/lib/internal/streams/end-of-stream.js +86 -0
- package/node_modules/readable-stream/lib/internal/streams/from-browser.js +3 -0
- package/node_modules/readable-stream/lib/internal/streams/from.js +52 -0
- package/node_modules/readable-stream/lib/internal/streams/pipeline.js +86 -0
- package/node_modules/readable-stream/lib/internal/streams/state.js +22 -0
- package/node_modules/readable-stream/lib/internal/streams/stream-browser.js +1 -0
- package/node_modules/readable-stream/lib/internal/streams/stream.js +1 -0
- package/node_modules/readable-stream/package.json +68 -0
- package/node_modules/readable-stream/readable-browser.js +9 -0
- package/node_modules/readable-stream/readable.js +16 -0
- package/node_modules/router/HISTORY.md +228 -0
- package/node_modules/router/LICENSE +23 -0
- package/node_modules/router/README.md +416 -0
- package/node_modules/router/index.js +748 -0
- package/node_modules/router/lib/layer.js +247 -0
- package/node_modules/router/lib/route.js +242 -0
- package/node_modules/router/package.json +44 -0
- package/node_modules/safe-buffer/LICENSE +21 -0
- package/node_modules/safe-buffer/README.md +584 -0
- package/node_modules/safe-buffer/index.d.ts +187 -0
- package/node_modules/safe-buffer/index.js +65 -0
- package/node_modules/safe-buffer/package.json +51 -0
- package/node_modules/safer-buffer/LICENSE +21 -0
- package/node_modules/safer-buffer/Porting-Buffer.md +268 -0
- package/node_modules/safer-buffer/Readme.md +156 -0
- package/node_modules/safer-buffer/dangerous.js +58 -0
- package/node_modules/safer-buffer/package.json +34 -0
- package/node_modules/safer-buffer/safer.js +77 -0
- package/node_modules/safer-buffer/tests.js +406 -0
- package/node_modules/semver/LICENSE +15 -0
- package/node_modules/semver/README.md +665 -0
- package/node_modules/semver/bin/semver.js +191 -0
- package/node_modules/semver/classes/comparator.js +143 -0
- package/node_modules/semver/classes/index.js +7 -0
- package/node_modules/semver/classes/range.js +557 -0
- package/node_modules/semver/classes/semver.js +333 -0
- package/node_modules/semver/functions/clean.js +8 -0
- package/node_modules/semver/functions/cmp.js +54 -0
- package/node_modules/semver/functions/coerce.js +62 -0
- package/node_modules/semver/functions/compare-build.js +9 -0
- package/node_modules/semver/functions/compare-loose.js +5 -0
- package/node_modules/semver/functions/compare.js +7 -0
- package/node_modules/semver/functions/diff.js +60 -0
- package/node_modules/semver/functions/eq.js +5 -0
- package/node_modules/semver/functions/gt.js +5 -0
- package/node_modules/semver/functions/gte.js +5 -0
- package/node_modules/semver/functions/inc.js +21 -0
- package/node_modules/semver/functions/lt.js +5 -0
- package/node_modules/semver/functions/lte.js +5 -0
- package/node_modules/semver/functions/major.js +5 -0
- package/node_modules/semver/functions/minor.js +5 -0
- package/node_modules/semver/functions/neq.js +5 -0
- package/node_modules/semver/functions/parse.js +18 -0
- package/node_modules/semver/functions/patch.js +5 -0
- package/node_modules/semver/functions/prerelease.js +8 -0
- package/node_modules/semver/functions/rcompare.js +5 -0
- package/node_modules/semver/functions/rsort.js +5 -0
- package/node_modules/semver/functions/satisfies.js +12 -0
- package/node_modules/semver/functions/sort.js +5 -0
- package/node_modules/semver/functions/valid.js +8 -0
- package/node_modules/semver/index.js +91 -0
- package/node_modules/semver/internal/constants.js +37 -0
- package/node_modules/semver/internal/debug.js +11 -0
- package/node_modules/semver/internal/identifiers.js +29 -0
- package/node_modules/semver/internal/lrucache.js +42 -0
- package/node_modules/semver/internal/parse-options.js +17 -0
- package/node_modules/semver/internal/re.js +223 -0
- package/node_modules/semver/package.json +78 -0
- package/node_modules/semver/preload.js +4 -0
- package/node_modules/semver/range.bnf +16 -0
- package/node_modules/semver/ranges/gtr.js +6 -0
- package/node_modules/semver/ranges/intersects.js +9 -0
- package/node_modules/semver/ranges/ltr.js +6 -0
- package/node_modules/semver/ranges/max-satisfying.js +27 -0
- package/node_modules/semver/ranges/min-satisfying.js +26 -0
- package/node_modules/semver/ranges/min-version.js +63 -0
- package/node_modules/semver/ranges/outside.js +82 -0
- package/node_modules/semver/ranges/simplify.js +49 -0
- package/node_modules/semver/ranges/subset.js +249 -0
- package/node_modules/semver/ranges/to-comparators.js +10 -0
- package/node_modules/semver/ranges/valid.js +13 -0
- package/node_modules/send/HISTORY.md +580 -0
- package/node_modules/send/LICENSE +23 -0
- package/node_modules/send/README.md +317 -0
- package/node_modules/send/index.js +997 -0
- package/node_modules/send/package.json +60 -0
- package/node_modules/serve-static/HISTORY.md +516 -0
- package/node_modules/serve-static/LICENSE +25 -0
- package/node_modules/serve-static/README.md +253 -0
- package/node_modules/serve-static/index.js +208 -0
- package/node_modules/serve-static/package.json +41 -0
- package/node_modules/setprototypeof/LICENSE +13 -0
- package/node_modules/setprototypeof/README.md +31 -0
- package/node_modules/setprototypeof/index.d.ts +2 -0
- package/node_modules/setprototypeof/index.js +17 -0
- package/node_modules/setprototypeof/package.json +38 -0
- package/node_modules/setprototypeof/test/index.js +24 -0
- package/node_modules/side-channel/.editorconfig +9 -0
- package/node_modules/side-channel/.eslintrc +12 -0
- package/node_modules/side-channel/.github/FUNDING.yml +12 -0
- package/node_modules/side-channel/.nycrc +13 -0
- package/node_modules/side-channel/CHANGELOG.md +110 -0
- package/node_modules/side-channel/LICENSE +21 -0
- package/node_modules/side-channel/README.md +61 -0
- package/node_modules/side-channel/index.d.ts +14 -0
- package/node_modules/side-channel/index.js +43 -0
- package/node_modules/side-channel/package.json +85 -0
- package/node_modules/side-channel/test/index.js +104 -0
- package/node_modules/side-channel/tsconfig.json +9 -0
- package/node_modules/side-channel-list/.editorconfig +9 -0
- package/node_modules/side-channel-list/.eslintrc +11 -0
- package/node_modules/side-channel-list/.github/FUNDING.yml +12 -0
- package/node_modules/side-channel-list/.nycrc +13 -0
- package/node_modules/side-channel-list/CHANGELOG.md +15 -0
- package/node_modules/side-channel-list/LICENSE +21 -0
- package/node_modules/side-channel-list/README.md +62 -0
- package/node_modules/side-channel-list/index.d.ts +13 -0
- package/node_modules/side-channel-list/index.js +113 -0
- package/node_modules/side-channel-list/list.d.ts +14 -0
- package/node_modules/side-channel-list/package.json +77 -0
- package/node_modules/side-channel-list/test/index.js +104 -0
- package/node_modules/side-channel-list/tsconfig.json +9 -0
- package/node_modules/side-channel-map/.editorconfig +9 -0
- package/node_modules/side-channel-map/.eslintrc +11 -0
- package/node_modules/side-channel-map/.github/FUNDING.yml +12 -0
- package/node_modules/side-channel-map/.nycrc +13 -0
- package/node_modules/side-channel-map/CHANGELOG.md +22 -0
- package/node_modules/side-channel-map/LICENSE +21 -0
- package/node_modules/side-channel-map/README.md +62 -0
- package/node_modules/side-channel-map/index.d.ts +15 -0
- package/node_modules/side-channel-map/index.js +68 -0
- package/node_modules/side-channel-map/package.json +80 -0
- package/node_modules/side-channel-map/test/index.js +114 -0
- package/node_modules/side-channel-map/tsconfig.json +9 -0
- package/node_modules/side-channel-weakmap/.editorconfig +9 -0
- package/node_modules/side-channel-weakmap/.eslintrc +12 -0
- package/node_modules/side-channel-weakmap/.github/FUNDING.yml +12 -0
- package/node_modules/side-channel-weakmap/.nycrc +13 -0
- package/node_modules/side-channel-weakmap/CHANGELOG.md +28 -0
- package/node_modules/side-channel-weakmap/LICENSE +21 -0
- package/node_modules/side-channel-weakmap/README.md +62 -0
- package/node_modules/side-channel-weakmap/index.d.ts +15 -0
- package/node_modules/side-channel-weakmap/index.js +84 -0
- package/node_modules/side-channel-weakmap/package.json +87 -0
- package/node_modules/side-channel-weakmap/test/index.js +114 -0
- package/node_modules/side-channel-weakmap/tsconfig.json +9 -0
- package/node_modules/simple-concat/.travis.yml +3 -0
- package/node_modules/simple-concat/LICENSE +20 -0
- package/node_modules/simple-concat/README.md +44 -0
- package/node_modules/simple-concat/index.js +15 -0
- package/node_modules/simple-concat/package.json +47 -0
- package/node_modules/simple-concat/test/basic.js +41 -0
- package/node_modules/simple-get/.github/dependabot.yml +15 -0
- package/node_modules/simple-get/.github/workflows/ci.yml +23 -0
- package/node_modules/simple-get/LICENSE +20 -0
- package/node_modules/simple-get/README.md +333 -0
- package/node_modules/simple-get/index.js +108 -0
- package/node_modules/simple-get/package.json +67 -0
- package/node_modules/statuses/HISTORY.md +87 -0
- package/node_modules/statuses/LICENSE +23 -0
- package/node_modules/statuses/README.md +139 -0
- package/node_modules/statuses/codes.json +65 -0
- package/node_modules/statuses/index.js +146 -0
- package/node_modules/statuses/package.json +49 -0
- package/node_modules/string_decoder/LICENSE +48 -0
- package/node_modules/string_decoder/README.md +47 -0
- package/node_modules/string_decoder/lib/string_decoder.js +296 -0
- package/node_modules/string_decoder/package.json +34 -0
- package/node_modules/strip-json-comments/index.js +70 -0
- package/node_modules/strip-json-comments/license +21 -0
- package/node_modules/strip-json-comments/package.json +42 -0
- package/node_modules/strip-json-comments/readme.md +64 -0
- package/node_modules/tar-fs/.travis.yml +6 -0
- package/node_modules/tar-fs/LICENSE +21 -0
- package/node_modules/tar-fs/README.md +165 -0
- package/node_modules/tar-fs/index.js +363 -0
- package/node_modules/tar-fs/package.json +41 -0
- package/node_modules/tar-fs/test/fixtures/a/hello.txt +1 -0
- package/node_modules/tar-fs/test/fixtures/b/a/test.txt +1 -0
- package/node_modules/tar-fs/test/fixtures/d/file1 +0 -0
- package/node_modules/tar-fs/test/fixtures/d/file2 +0 -0
- package/node_modules/tar-fs/test/fixtures/d/sub-dir/file5 +0 -0
- package/node_modules/tar-fs/test/fixtures/d/sub-files/file3 +0 -0
- package/node_modules/tar-fs/test/fixtures/d/sub-files/file4 +0 -0
- package/node_modules/tar-fs/test/fixtures/e/directory/.ignore +0 -0
- package/node_modules/tar-fs/test/fixtures/e/file +0 -0
- package/node_modules/tar-fs/test/fixtures/invalid.tar +0 -0
- package/node_modules/tar-fs/test/index.js +346 -0
- package/node_modules/tar-stream/LICENSE +21 -0
- package/node_modules/tar-stream/README.md +168 -0
- package/node_modules/tar-stream/extract.js +257 -0
- package/node_modules/tar-stream/headers.js +295 -0
- package/node_modules/tar-stream/index.js +2 -0
- package/node_modules/tar-stream/pack.js +255 -0
- package/node_modules/tar-stream/package.json +58 -0
- package/node_modules/tar-stream/sandbox.js +11 -0
- package/node_modules/toidentifier/HISTORY.md +9 -0
- package/node_modules/toidentifier/LICENSE +21 -0
- package/node_modules/toidentifier/README.md +61 -0
- package/node_modules/toidentifier/index.js +32 -0
- package/node_modules/toidentifier/package.json +38 -0
- package/node_modules/tunnel-agent/LICENSE +55 -0
- package/node_modules/tunnel-agent/README.md +4 -0
- package/node_modules/tunnel-agent/index.js +244 -0
- package/node_modules/tunnel-agent/package.json +22 -0
- package/node_modules/type-is/HISTORY.md +292 -0
- package/node_modules/type-is/LICENSE +23 -0
- package/node_modules/type-is/README.md +198 -0
- package/node_modules/type-is/index.js +250 -0
- package/node_modules/type-is/package.json +47 -0
- package/node_modules/unpipe/HISTORY.md +4 -0
- package/node_modules/unpipe/LICENSE +22 -0
- package/node_modules/unpipe/README.md +43 -0
- package/node_modules/unpipe/index.js +69 -0
- package/node_modules/unpipe/package.json +27 -0
- package/node_modules/util-deprecate/History.md +16 -0
- package/node_modules/util-deprecate/LICENSE +24 -0
- package/node_modules/util-deprecate/README.md +53 -0
- package/node_modules/util-deprecate/browser.js +67 -0
- package/node_modules/util-deprecate/node.js +6 -0
- package/node_modules/util-deprecate/package.json +27 -0
- package/node_modules/uuid/LICENSE.md +9 -0
- package/node_modules/uuid/README.md +499 -0
- package/node_modules/uuid/dist/index.d.ts +15 -0
- package/node_modules/uuid/dist/index.js +14 -0
- package/node_modules/uuid/dist/max.d.ts +2 -0
- package/node_modules/uuid/dist/max.js +1 -0
- package/node_modules/uuid/dist/md5.d.ts +2 -0
- package/node_modules/uuid/dist/md5.js +135 -0
- package/node_modules/uuid/dist/native.d.ts +4 -0
- package/node_modules/uuid/dist/native.js +2 -0
- package/node_modules/uuid/dist/nil.d.ts +2 -0
- package/node_modules/uuid/dist/nil.js +1 -0
- package/node_modules/uuid/dist/parse.d.ts +2 -0
- package/node_modules/uuid/dist/parse.js +9 -0
- package/node_modules/uuid/dist/regex.d.ts +2 -0
- package/node_modules/uuid/dist/regex.js +1 -0
- package/node_modules/uuid/dist/rng.d.ts +1 -0
- package/node_modules/uuid/dist/rng.js +11 -0
- package/node_modules/uuid/dist/sha1.d.ts +2 -0
- package/node_modules/uuid/dist/sha1.js +70 -0
- package/node_modules/uuid/dist/stringify.d.ts +3 -0
- package/node_modules/uuid/dist/stringify.js +35 -0
- package/node_modules/uuid/dist/types.d.ts +21 -0
- package/node_modules/uuid/dist/types.js +1 -0
- package/node_modules/uuid/dist/uuid-bin.d.ts +1 -0
- package/node_modules/uuid/dist/uuid-bin.js +70 -0
- package/node_modules/uuid/dist/v1.d.ts +11 -0
- package/node_modules/uuid/dist/v1.js +83 -0
- package/node_modules/uuid/dist/v1ToV6.d.ts +2 -0
- package/node_modules/uuid/dist/v1ToV6.js +10 -0
- package/node_modules/uuid/dist/v3.d.ts +9 -0
- package/node_modules/uuid/dist/v3.js +9 -0
- package/node_modules/uuid/dist/v35.d.ts +7 -0
- package/node_modules/uuid/dist/v35.js +36 -0
- package/node_modules/uuid/dist/v4.d.ts +4 -0
- package/node_modules/uuid/dist/v4.js +30 -0
- package/node_modules/uuid/dist/v5.d.ts +9 -0
- package/node_modules/uuid/dist/v5.js +9 -0
- package/node_modules/uuid/dist/v6.d.ts +4 -0
- package/node_modules/uuid/dist/v6.js +17 -0
- package/node_modules/uuid/dist/v6ToV1.d.ts +2 -0
- package/node_modules/uuid/dist/v6ToV1.js +10 -0
- package/node_modules/uuid/dist/v7.d.ts +9 -0
- package/node_modules/uuid/dist/v7.js +65 -0
- package/node_modules/uuid/dist/validate.d.ts +2 -0
- package/node_modules/uuid/dist/validate.js +5 -0
- package/node_modules/uuid/dist/version.d.ts +2 -0
- package/node_modules/uuid/dist/version.js +8 -0
- package/node_modules/uuid/dist-node/bin/uuid +2 -0
- package/node_modules/uuid/dist-node/index.js +14 -0
- package/node_modules/uuid/dist-node/max.js +1 -0
- package/node_modules/uuid/dist-node/md5.js +11 -0
- package/node_modules/uuid/dist-node/native.js +2 -0
- package/node_modules/uuid/dist-node/nil.js +1 -0
- package/node_modules/uuid/dist-node/parse.js +9 -0
- package/node_modules/uuid/dist-node/regex.js +1 -0
- package/node_modules/uuid/dist-node/rng.js +10 -0
- package/node_modules/uuid/dist-node/sha1.js +11 -0
- package/node_modules/uuid/dist-node/stringify.js +35 -0
- package/node_modules/uuid/dist-node/types.js +1 -0
- package/node_modules/uuid/dist-node/uuid-bin.js +70 -0
- package/node_modules/uuid/dist-node/v1.js +83 -0
- package/node_modules/uuid/dist-node/v1ToV6.js +10 -0
- package/node_modules/uuid/dist-node/v3.js +9 -0
- package/node_modules/uuid/dist-node/v35.js +36 -0
- package/node_modules/uuid/dist-node/v4.js +30 -0
- package/node_modules/uuid/dist-node/v5.js +9 -0
- package/node_modules/uuid/dist-node/v6.js +17 -0
- package/node_modules/uuid/dist-node/v6ToV1.js +10 -0
- package/node_modules/uuid/dist-node/v7.js +65 -0
- package/node_modules/uuid/dist-node/validate.js +5 -0
- package/node_modules/uuid/dist-node/version.js +8 -0
- package/node_modules/uuid/package.json +119 -0
- package/node_modules/vary/HISTORY.md +39 -0
- package/node_modules/vary/LICENSE +22 -0
- package/node_modules/vary/README.md +101 -0
- package/node_modules/vary/index.js +149 -0
- package/node_modules/vary/package.json +43 -0
- package/node_modules/wrappy/LICENSE +15 -0
- package/node_modules/wrappy/README.md +36 -0
- package/node_modules/wrappy/package.json +29 -0
- package/node_modules/wrappy/wrappy.js +33 -0
- package/node_modules/ws/LICENSE +20 -0
- package/node_modules/ws/README.md +548 -0
- package/node_modules/ws/browser.js +8 -0
- package/node_modules/ws/index.js +13 -0
- package/node_modules/ws/lib/buffer-util.js +131 -0
- package/node_modules/ws/lib/constants.js +18 -0
- package/node_modules/ws/lib/event-target.js +292 -0
- package/node_modules/ws/lib/extension.js +203 -0
- package/node_modules/ws/lib/limiter.js +55 -0
- package/node_modules/ws/lib/permessage-deflate.js +528 -0
- package/node_modules/ws/lib/receiver.js +706 -0
- package/node_modules/ws/lib/sender.js +602 -0
- package/node_modules/ws/lib/stream.js +161 -0
- package/node_modules/ws/lib/subprotocol.js +62 -0
- package/node_modules/ws/lib/validation.js +152 -0
- package/node_modules/ws/lib/websocket-server.js +550 -0
- package/node_modules/ws/lib/websocket.js +1388 -0
- package/node_modules/ws/package.json +69 -0
- package/node_modules/ws/wrapper.mjs +8 -0
- package/package.json +11 -2
|
@@ -0,0 +1,568 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
//
|
|
3
|
+
// appsync-client.ts
|
|
4
|
+
// CodeVibe Core
|
|
5
|
+
//
|
|
6
|
+
// GraphQL client for AWS AppSync with WebSocket subscriptions
|
|
7
|
+
//
|
|
8
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
9
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.AppSyncClient = void 0;
|
|
13
|
+
const ws_1 = __importDefault(require("ws"));
|
|
14
|
+
const uuid_1 = require("uuid");
|
|
15
|
+
const config_1 = require("../config");
|
|
16
|
+
const logger_1 = require("../logger");
|
|
17
|
+
const keychain_1 = require("../keychain");
|
|
18
|
+
const queries_1 = require("./queries");
|
|
19
|
+
const types_1 = require("../types");
|
|
20
|
+
/**
|
|
21
|
+
* Reconnection configuration — two-phase strategy:
|
|
22
|
+
* Phase 1 (urgent): Exponential backoff 1s → 60s for first 10 attempts
|
|
23
|
+
* Phase 2 (persistent): Retry every 5 minutes indefinitely
|
|
24
|
+
*/
|
|
25
|
+
const RECONNECT_CONFIG = {
|
|
26
|
+
urgentMaxAttempts: 10,
|
|
27
|
+
baseDelayMs: 1000,
|
|
28
|
+
maxDelayMs: 60000,
|
|
29
|
+
backoffMultiplier: 2,
|
|
30
|
+
persistentDelayMs: 5 * 60 * 1000, // 5 minutes
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* AppSync GraphQL client with WebSocket subscriptions
|
|
34
|
+
*/
|
|
35
|
+
class AppSyncClient {
|
|
36
|
+
constructor() {
|
|
37
|
+
this.authenticated = false;
|
|
38
|
+
this.currentUserId = null;
|
|
39
|
+
this.currentEmail = null;
|
|
40
|
+
this.tokens = null;
|
|
41
|
+
this.activeSubscriptions = new Map();
|
|
42
|
+
// MARK: - Heartbeat
|
|
43
|
+
this.heartbeatTimers = new Map();
|
|
44
|
+
// Get environment from centralized config (reads process.env.ENVIRONMENT)
|
|
45
|
+
this.environment = (0, config_1.getEnvironment)();
|
|
46
|
+
logger_1.logger.info('[AppSyncClient] Initialized', { environment: this.environment });
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Get the current authenticated user ID
|
|
50
|
+
*/
|
|
51
|
+
getCurrentUserId() {
|
|
52
|
+
if (!this.currentUserId) {
|
|
53
|
+
throw new Error('Not authenticated. Call authenticateWithStoredTokens() first.');
|
|
54
|
+
}
|
|
55
|
+
return this.currentUserId;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Get the current authenticated user email
|
|
59
|
+
*/
|
|
60
|
+
getCurrentUserEmail() {
|
|
61
|
+
return this.currentEmail;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Authenticate using stored OAuth tokens from keychain
|
|
65
|
+
*/
|
|
66
|
+
async authenticateWithStoredTokens() {
|
|
67
|
+
try {
|
|
68
|
+
const tokens = await keychain_1.keychainManager.getTokens(this.environment);
|
|
69
|
+
if (!tokens) {
|
|
70
|
+
logger_1.logger.debug('[AppSyncClient] No stored tokens found');
|
|
71
|
+
return false;
|
|
72
|
+
}
|
|
73
|
+
logger_1.logger.info('[AppSyncClient] Found stored OAuth tokens', {
|
|
74
|
+
userId: tokens.userId,
|
|
75
|
+
email: tokens.email,
|
|
76
|
+
expired: keychain_1.keychainManager.isTokenExpired(tokens),
|
|
77
|
+
});
|
|
78
|
+
// If tokens are expired, try to refresh them
|
|
79
|
+
if (keychain_1.keychainManager.isTokenExpired(tokens)) {
|
|
80
|
+
logger_1.logger.info('[AppSyncClient] Tokens expired, attempting refresh...');
|
|
81
|
+
const refreshed = await this.refreshTokens(tokens);
|
|
82
|
+
if (!refreshed) {
|
|
83
|
+
logger_1.logger.warn('[AppSyncClient] Token refresh failed');
|
|
84
|
+
return false;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
this.tokens = tokens;
|
|
89
|
+
}
|
|
90
|
+
this.currentUserId = this.tokens.userId;
|
|
91
|
+
this.currentEmail = this.tokens.email;
|
|
92
|
+
this.authenticated = true;
|
|
93
|
+
logger_1.logger.info('[AppSyncClient] Authenticated successfully', {
|
|
94
|
+
userId: this.currentUserId,
|
|
95
|
+
email: this.currentEmail,
|
|
96
|
+
});
|
|
97
|
+
return true;
|
|
98
|
+
}
|
|
99
|
+
catch (error) {
|
|
100
|
+
logger_1.logger.error('[AppSyncClient] Authentication failed:', error);
|
|
101
|
+
return false;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Refresh expired tokens
|
|
106
|
+
*/
|
|
107
|
+
async refreshTokens(tokens) {
|
|
108
|
+
try {
|
|
109
|
+
const config = (0, config_1.getConfig)();
|
|
110
|
+
const tokenUrl = `https://${config.aws.cognitoDomain}/oauth2/token`;
|
|
111
|
+
const params = new URLSearchParams({
|
|
112
|
+
grant_type: 'refresh_token',
|
|
113
|
+
client_id: config.aws.cognitoClientId,
|
|
114
|
+
refresh_token: tokens.refreshToken,
|
|
115
|
+
});
|
|
116
|
+
const response = await fetch(tokenUrl, {
|
|
117
|
+
method: 'POST',
|
|
118
|
+
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
|
|
119
|
+
body: params.toString(),
|
|
120
|
+
});
|
|
121
|
+
if (!response.ok) {
|
|
122
|
+
logger_1.logger.error('[AppSyncClient] Token refresh failed', { status: response.status });
|
|
123
|
+
return false;
|
|
124
|
+
}
|
|
125
|
+
const data = await response.json();
|
|
126
|
+
const updatedTokens = {
|
|
127
|
+
...tokens,
|
|
128
|
+
accessToken: data.access_token,
|
|
129
|
+
idToken: data.id_token,
|
|
130
|
+
expiresAt: Date.now() + (data.expires_in * 1000),
|
|
131
|
+
};
|
|
132
|
+
await keychain_1.keychainManager.setTokens(updatedTokens, this.environment);
|
|
133
|
+
this.tokens = updatedTokens;
|
|
134
|
+
logger_1.logger.info('[AppSyncClient] Tokens refreshed', {
|
|
135
|
+
expiresAt: new Date(updatedTokens.expiresAt).toISOString(),
|
|
136
|
+
});
|
|
137
|
+
return true;
|
|
138
|
+
}
|
|
139
|
+
catch (error) {
|
|
140
|
+
logger_1.logger.error('[AppSyncClient] Token refresh error:', error);
|
|
141
|
+
return false;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Check if authenticated
|
|
146
|
+
*/
|
|
147
|
+
isAuthenticated() {
|
|
148
|
+
return this.authenticated;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Sign out
|
|
152
|
+
*/
|
|
153
|
+
signOut() {
|
|
154
|
+
this.authenticated = false;
|
|
155
|
+
this.tokens = null;
|
|
156
|
+
this.currentUserId = null;
|
|
157
|
+
this.currentEmail = null;
|
|
158
|
+
this.cleanupSubscriptions();
|
|
159
|
+
logger_1.logger.info('[AppSyncClient] Signed out');
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Make a GraphQL request
|
|
163
|
+
*/
|
|
164
|
+
async graphqlRequest(query, variables, isRetry = false) {
|
|
165
|
+
const config = (0, config_1.getConfig)();
|
|
166
|
+
if (!this.tokens?.idToken) {
|
|
167
|
+
throw new Error('Not authenticated. Run "codevibe login" first.');
|
|
168
|
+
}
|
|
169
|
+
const headers = {
|
|
170
|
+
'Content-Type': 'application/json',
|
|
171
|
+
'Authorization': this.tokens.idToken,
|
|
172
|
+
};
|
|
173
|
+
const response = await fetch(config.aws.appsyncUrl, {
|
|
174
|
+
method: 'POST',
|
|
175
|
+
headers,
|
|
176
|
+
body: JSON.stringify({ query, variables }),
|
|
177
|
+
});
|
|
178
|
+
const result = await response.json();
|
|
179
|
+
// Handle 401 with token refresh
|
|
180
|
+
if (response.status === 401 && !isRetry && this.tokens) {
|
|
181
|
+
logger_1.logger.info('[AppSyncClient] 401 Unauthorized, refreshing token...');
|
|
182
|
+
const refreshed = await this.refreshTokens(this.tokens);
|
|
183
|
+
if (refreshed) {
|
|
184
|
+
return this.graphqlRequest(query, variables, true);
|
|
185
|
+
}
|
|
186
|
+
throw new Error('Token expired and refresh failed');
|
|
187
|
+
}
|
|
188
|
+
if (!response.ok) {
|
|
189
|
+
throw new Error(`GraphQL request failed: ${response.status}`);
|
|
190
|
+
}
|
|
191
|
+
if (result.errors?.length) {
|
|
192
|
+
throw new Error(`GraphQL error: ${result.errors[0].message}`);
|
|
193
|
+
}
|
|
194
|
+
return result;
|
|
195
|
+
}
|
|
196
|
+
// MARK: - Session Operations
|
|
197
|
+
/**
|
|
198
|
+
* Create a session
|
|
199
|
+
*/
|
|
200
|
+
async createSession(input) {
|
|
201
|
+
const preparedInput = {
|
|
202
|
+
...input,
|
|
203
|
+
metadata: input.metadata ? JSON.stringify(input.metadata) : undefined,
|
|
204
|
+
};
|
|
205
|
+
const response = await this.graphqlRequest(queries_1.mutations.createSession, { input: preparedInput });
|
|
206
|
+
logger_1.logger.info('[AppSyncClient] Session created', { sessionId: response.data.createSession.sessionId });
|
|
207
|
+
return response.data.createSession;
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Update a session
|
|
211
|
+
*/
|
|
212
|
+
async updateSession(input) {
|
|
213
|
+
const preparedInput = {
|
|
214
|
+
...input,
|
|
215
|
+
metadata: input.metadata ? JSON.stringify(input.metadata) : undefined,
|
|
216
|
+
};
|
|
217
|
+
const response = await this.graphqlRequest(queries_1.mutations.updateSession, { input: preparedInput });
|
|
218
|
+
logger_1.logger.debug('[AppSyncClient] Session updated', { sessionId: response.data.updateSession.sessionId });
|
|
219
|
+
return response.data.updateSession;
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Get a session
|
|
223
|
+
*/
|
|
224
|
+
async getSession(sessionId) {
|
|
225
|
+
const response = await this.graphqlRequest(queries_1.queries.getSession, { sessionId });
|
|
226
|
+
return response.data.getSession;
|
|
227
|
+
}
|
|
228
|
+
// MARK: - Event Operations
|
|
229
|
+
/**
|
|
230
|
+
* Create an event
|
|
231
|
+
*/
|
|
232
|
+
async createEvent(input) {
|
|
233
|
+
const preparedInput = {
|
|
234
|
+
...input,
|
|
235
|
+
metadata: input.metadata ? JSON.stringify(input.metadata) : undefined,
|
|
236
|
+
};
|
|
237
|
+
const response = await this.graphqlRequest(queries_1.mutations.createEvent, { input: preparedInput });
|
|
238
|
+
logger_1.logger.debug('[AppSyncClient] Event created', {
|
|
239
|
+
eventId: response.data.createEvent.eventId,
|
|
240
|
+
type: response.data.createEvent.type,
|
|
241
|
+
});
|
|
242
|
+
return response.data.createEvent;
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Update event status
|
|
246
|
+
*/
|
|
247
|
+
async updateEventStatus(input) {
|
|
248
|
+
const response = await this.graphqlRequest(queries_1.mutations.updateEventStatus, { input });
|
|
249
|
+
return response.data.updateEventStatus;
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* List events for a session
|
|
253
|
+
*/
|
|
254
|
+
async listEvents(sessionId, source, limit) {
|
|
255
|
+
const response = await this.graphqlRequest(queries_1.queries.listEvents, { sessionId, source, limit });
|
|
256
|
+
return response.data.listEvents.items;
|
|
257
|
+
}
|
|
258
|
+
// MARK: - Device Key Operations
|
|
259
|
+
/**
|
|
260
|
+
* List user device keys
|
|
261
|
+
*/
|
|
262
|
+
async listUserDeviceKeys() {
|
|
263
|
+
const response = await this.graphqlRequest(queries_1.queries.listUserDeviceKeys, {});
|
|
264
|
+
return response.data.listUserDeviceKeys || [];
|
|
265
|
+
}
|
|
266
|
+
/**
|
|
267
|
+
* Register device key
|
|
268
|
+
*/
|
|
269
|
+
async registerDeviceKey(deviceId, publicKey, platform, deviceName) {
|
|
270
|
+
const input = { deviceId, publicKey, platform, deviceName };
|
|
271
|
+
await this.graphqlRequest(queries_1.mutations.registerDeviceKey, { input });
|
|
272
|
+
logger_1.logger.info('[AppSyncClient] Device key registered', { deviceId, platform });
|
|
273
|
+
}
|
|
274
|
+
// MARK: - Attachment Operations
|
|
275
|
+
/**
|
|
276
|
+
* Get attachment download URL
|
|
277
|
+
*/
|
|
278
|
+
async getAttachmentDownloadUrl(s3Key) {
|
|
279
|
+
const response = await this.graphqlRequest(queries_1.mutations.getAttachmentDownloadUrl, { s3Key });
|
|
280
|
+
return response.data.getAttachmentDownloadUrl;
|
|
281
|
+
}
|
|
282
|
+
// MARK: - Subscriptions
|
|
283
|
+
/**
|
|
284
|
+
* Subscribe to events for a session
|
|
285
|
+
*/
|
|
286
|
+
subscribeToEvents(sessionId, onEvent, onError) {
|
|
287
|
+
logger_1.logger.info('[AppSyncClient] Subscribing to events', { sessionId });
|
|
288
|
+
// Cleanup existing subscription
|
|
289
|
+
const existing = this.activeSubscriptions.get(sessionId);
|
|
290
|
+
if (existing) {
|
|
291
|
+
this.cleanupSubscriptionState(existing);
|
|
292
|
+
this.activeSubscriptions.delete(sessionId);
|
|
293
|
+
}
|
|
294
|
+
const state = {
|
|
295
|
+
ws: null,
|
|
296
|
+
subscriptionId: (0, uuid_1.v4)(),
|
|
297
|
+
sessionId,
|
|
298
|
+
onEvent,
|
|
299
|
+
onError,
|
|
300
|
+
reconnectAttempts: 0,
|
|
301
|
+
isReconnecting: false,
|
|
302
|
+
};
|
|
303
|
+
this.activeSubscriptions.set(sessionId, state);
|
|
304
|
+
this.createSubscription(state);
|
|
305
|
+
return () => {
|
|
306
|
+
this.cleanupSubscriptionState(state);
|
|
307
|
+
this.activeSubscriptions.delete(sessionId);
|
|
308
|
+
};
|
|
309
|
+
}
|
|
310
|
+
/**
|
|
311
|
+
* Build WebSocket URL
|
|
312
|
+
*/
|
|
313
|
+
buildRealtimeUrl() {
|
|
314
|
+
const config = (0, config_1.getConfig)();
|
|
315
|
+
const realtimeUrl = config.aws.appsyncUrl
|
|
316
|
+
.replace('https://', 'wss://')
|
|
317
|
+
.replace('appsync-api', 'appsync-realtime-api');
|
|
318
|
+
const authHeader = {
|
|
319
|
+
host: new URL(config.aws.appsyncUrl).host,
|
|
320
|
+
};
|
|
321
|
+
if (this.tokens?.idToken) {
|
|
322
|
+
authHeader['Authorization'] = this.tokens.idToken;
|
|
323
|
+
}
|
|
324
|
+
const headerBase64 = Buffer.from(JSON.stringify(authHeader)).toString('base64');
|
|
325
|
+
const payloadBase64 = Buffer.from(JSON.stringify({})).toString('base64');
|
|
326
|
+
return `${realtimeUrl}?header=${headerBase64}&payload=${payloadBase64}`;
|
|
327
|
+
}
|
|
328
|
+
/**
|
|
329
|
+
* Create WebSocket subscription
|
|
330
|
+
*/
|
|
331
|
+
createSubscription(state) {
|
|
332
|
+
const { sessionId, subscriptionId, onEvent, onError } = state;
|
|
333
|
+
try {
|
|
334
|
+
const wsUrl = this.buildRealtimeUrl();
|
|
335
|
+
const ws = new ws_1.default(wsUrl, ['graphql-ws']);
|
|
336
|
+
ws.on('open', () => {
|
|
337
|
+
logger_1.logger.info('[AppSyncClient] WebSocket connected', { sessionId });
|
|
338
|
+
ws.send(JSON.stringify({ type: 'connection_init' }));
|
|
339
|
+
});
|
|
340
|
+
ws.on('message', (data) => {
|
|
341
|
+
try {
|
|
342
|
+
const message = JSON.parse(data.toString());
|
|
343
|
+
switch (message.type) {
|
|
344
|
+
case 'connection_ack':
|
|
345
|
+
this.sendSubscriptionStart(ws, state);
|
|
346
|
+
break;
|
|
347
|
+
case 'start_ack':
|
|
348
|
+
logger_1.logger.info('[AppSyncClient] Subscription started', { sessionId });
|
|
349
|
+
state.isReconnecting = false;
|
|
350
|
+
state.reconnectAttempts = 0;
|
|
351
|
+
break;
|
|
352
|
+
case 'data':
|
|
353
|
+
this.resetKeepAliveTimer(state);
|
|
354
|
+
const event = message.payload?.data?.onEventCreated;
|
|
355
|
+
if (event && event.source === types_1.EventSource.MOBILE) {
|
|
356
|
+
onEvent(event);
|
|
357
|
+
}
|
|
358
|
+
break;
|
|
359
|
+
case 'ka':
|
|
360
|
+
this.resetKeepAliveTimer(state);
|
|
361
|
+
break;
|
|
362
|
+
case 'error':
|
|
363
|
+
const errorMsg = message.payload?.errors?.[0]?.message || 'Unknown error';
|
|
364
|
+
this.handleSubscriptionError(state, new Error(errorMsg));
|
|
365
|
+
break;
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
catch (e) {
|
|
369
|
+
logger_1.logger.error('[AppSyncClient] Failed to parse message', { error: e });
|
|
370
|
+
}
|
|
371
|
+
});
|
|
372
|
+
ws.on('error', (error) => {
|
|
373
|
+
logger_1.logger.error('[AppSyncClient] WebSocket error', { sessionId, error: error.message });
|
|
374
|
+
this.handleSubscriptionError(state, error);
|
|
375
|
+
});
|
|
376
|
+
ws.on('close', (code, reason) => {
|
|
377
|
+
logger_1.logger.info('[AppSyncClient] WebSocket closed', { sessionId, code });
|
|
378
|
+
if (state.keepAliveTimer) {
|
|
379
|
+
clearTimeout(state.keepAliveTimer);
|
|
380
|
+
}
|
|
381
|
+
if (code !== 1000 && this.activeSubscriptions.has(sessionId)) {
|
|
382
|
+
this.handleSubscriptionError(state, new Error(`WebSocket closed: ${code}`));
|
|
383
|
+
}
|
|
384
|
+
});
|
|
385
|
+
state.ws = ws;
|
|
386
|
+
this.resetKeepAliveTimer(state);
|
|
387
|
+
}
|
|
388
|
+
catch (error) {
|
|
389
|
+
this.handleSubscriptionError(state, error);
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
/**
|
|
393
|
+
* Send subscription start message
|
|
394
|
+
*/
|
|
395
|
+
sendSubscriptionStart(ws, state) {
|
|
396
|
+
const config = (0, config_1.getConfig)();
|
|
397
|
+
const { sessionId, subscriptionId } = state;
|
|
398
|
+
const authHeader = {
|
|
399
|
+
host: new URL(config.aws.appsyncUrl).host,
|
|
400
|
+
};
|
|
401
|
+
if (this.tokens?.idToken) {
|
|
402
|
+
authHeader['Authorization'] = this.tokens.idToken;
|
|
403
|
+
}
|
|
404
|
+
ws.send(JSON.stringify({
|
|
405
|
+
id: subscriptionId,
|
|
406
|
+
type: 'start',
|
|
407
|
+
payload: {
|
|
408
|
+
data: JSON.stringify({
|
|
409
|
+
query: queries_1.subscriptions.onEventCreated,
|
|
410
|
+
variables: { sessionId },
|
|
411
|
+
}),
|
|
412
|
+
extensions: { authorization: authHeader },
|
|
413
|
+
},
|
|
414
|
+
}));
|
|
415
|
+
}
|
|
416
|
+
/**
|
|
417
|
+
* Reset keep-alive timer
|
|
418
|
+
*/
|
|
419
|
+
resetKeepAliveTimer(state) {
|
|
420
|
+
if (state.keepAliveTimer) {
|
|
421
|
+
clearTimeout(state.keepAliveTimer);
|
|
422
|
+
}
|
|
423
|
+
state.keepAliveTimer = setTimeout(() => {
|
|
424
|
+
this.handleSubscriptionError(state, new Error('Keep-alive timeout'));
|
|
425
|
+
}, 5 * 60 * 1000);
|
|
426
|
+
}
|
|
427
|
+
/**
|
|
428
|
+
* Handle subscription error with two-phase reconnection:
|
|
429
|
+
* Phase 1 (urgent): Exponential backoff for first N attempts
|
|
430
|
+
* Phase 2 (persistent): Fixed interval retry indefinitely
|
|
431
|
+
*/
|
|
432
|
+
handleSubscriptionError(state, error) {
|
|
433
|
+
const { sessionId, onError } = state;
|
|
434
|
+
if (state.isReconnecting || !this.activeSubscriptions.has(sessionId)) {
|
|
435
|
+
return;
|
|
436
|
+
}
|
|
437
|
+
state.isReconnecting = true;
|
|
438
|
+
state.reconnectAttempts++;
|
|
439
|
+
const isUrgentPhase = state.reconnectAttempts <= RECONNECT_CONFIG.urgentMaxAttempts;
|
|
440
|
+
let delay;
|
|
441
|
+
if (isUrgentPhase) {
|
|
442
|
+
delay = Math.min(RECONNECT_CONFIG.baseDelayMs * Math.pow(RECONNECT_CONFIG.backoffMultiplier, state.reconnectAttempts - 1), RECONNECT_CONFIG.maxDelayMs);
|
|
443
|
+
}
|
|
444
|
+
else {
|
|
445
|
+
delay = RECONNECT_CONFIG.persistentDelayMs;
|
|
446
|
+
if (state.reconnectAttempts === RECONNECT_CONFIG.urgentMaxAttempts + 1) {
|
|
447
|
+
logger_1.logger.info('[AppSyncClient] Switching to persistent reconnect (every 5min)', { sessionId });
|
|
448
|
+
}
|
|
449
|
+
}
|
|
450
|
+
logger_1.logger.info('[AppSyncClient] Scheduling reconnect', {
|
|
451
|
+
sessionId,
|
|
452
|
+
attempt: state.reconnectAttempts,
|
|
453
|
+
phase: isUrgentPhase ? 'urgent' : 'persistent',
|
|
454
|
+
delayMs: delay,
|
|
455
|
+
});
|
|
456
|
+
if (state.ws) {
|
|
457
|
+
try {
|
|
458
|
+
state.ws.close(1000);
|
|
459
|
+
}
|
|
460
|
+
catch (e) { /* ignore */ }
|
|
461
|
+
state.ws = null;
|
|
462
|
+
}
|
|
463
|
+
if (state.keepAliveTimer) {
|
|
464
|
+
clearTimeout(state.keepAliveTimer);
|
|
465
|
+
}
|
|
466
|
+
state.reconnectTimer = setTimeout(async () => {
|
|
467
|
+
// Reset flag so next failure can trigger another reconnect
|
|
468
|
+
state.isReconnecting = false;
|
|
469
|
+
if (!this.activeSubscriptions.has(sessionId)) {
|
|
470
|
+
return;
|
|
471
|
+
}
|
|
472
|
+
// Refresh tokens before reconnecting — they may have expired
|
|
473
|
+
try {
|
|
474
|
+
const freshTokens = await keychain_1.keychainManager.getTokens(this.environment);
|
|
475
|
+
if (freshTokens) {
|
|
476
|
+
if (keychain_1.keychainManager.isTokenExpired(freshTokens)) {
|
|
477
|
+
const refreshed = await this.refreshTokens(freshTokens);
|
|
478
|
+
if (refreshed) {
|
|
479
|
+
logger_1.logger.info('[AppSyncClient] Tokens refreshed before reconnect', { sessionId });
|
|
480
|
+
}
|
|
481
|
+
}
|
|
482
|
+
else {
|
|
483
|
+
this.tokens = freshTokens;
|
|
484
|
+
}
|
|
485
|
+
}
|
|
486
|
+
}
|
|
487
|
+
catch (e) {
|
|
488
|
+
logger_1.logger.warn('[AppSyncClient] Token refresh failed before reconnect, using existing tokens', { sessionId });
|
|
489
|
+
}
|
|
490
|
+
state.subscriptionId = (0, uuid_1.v4)();
|
|
491
|
+
this.createSubscription(state);
|
|
492
|
+
}, delay);
|
|
493
|
+
}
|
|
494
|
+
/**
|
|
495
|
+
* Cleanup subscription state
|
|
496
|
+
*/
|
|
497
|
+
cleanupSubscriptionState(state) {
|
|
498
|
+
if (state.reconnectTimer) {
|
|
499
|
+
clearTimeout(state.reconnectTimer);
|
|
500
|
+
}
|
|
501
|
+
if (state.keepAliveTimer) {
|
|
502
|
+
clearTimeout(state.keepAliveTimer);
|
|
503
|
+
}
|
|
504
|
+
if (state.ws) {
|
|
505
|
+
try {
|
|
506
|
+
if (state.ws.readyState === ws_1.default.OPEN) {
|
|
507
|
+
state.ws.send(JSON.stringify({ id: state.subscriptionId, type: 'stop' }));
|
|
508
|
+
state.ws.close(1000);
|
|
509
|
+
}
|
|
510
|
+
}
|
|
511
|
+
catch (e) { /* ignore */ }
|
|
512
|
+
state.ws = null;
|
|
513
|
+
}
|
|
514
|
+
}
|
|
515
|
+
/**
|
|
516
|
+
* Start periodic heartbeat for a session.
|
|
517
|
+
* Updates lastHeartbeatAt on the session every intervalMs (default 2 minutes).
|
|
518
|
+
*/
|
|
519
|
+
startHeartbeat(sessionId, intervalMs = 2 * 60 * 1000) {
|
|
520
|
+
this.stopHeartbeat(sessionId);
|
|
521
|
+
// Send initial heartbeat immediately
|
|
522
|
+
this.sendHeartbeat(sessionId);
|
|
523
|
+
const timer = setInterval(() => {
|
|
524
|
+
this.sendHeartbeat(sessionId);
|
|
525
|
+
}, intervalMs);
|
|
526
|
+
this.heartbeatTimers.set(sessionId, timer);
|
|
527
|
+
logger_1.logger.info('[AppSyncClient] Heartbeat started', { sessionId, intervalMs });
|
|
528
|
+
}
|
|
529
|
+
/**
|
|
530
|
+
* Stop heartbeat for a session.
|
|
531
|
+
*/
|
|
532
|
+
stopHeartbeat(sessionId) {
|
|
533
|
+
const timer = this.heartbeatTimers.get(sessionId);
|
|
534
|
+
if (timer) {
|
|
535
|
+
clearInterval(timer);
|
|
536
|
+
this.heartbeatTimers.delete(sessionId);
|
|
537
|
+
logger_1.logger.info('[AppSyncClient] Heartbeat stopped', { sessionId });
|
|
538
|
+
}
|
|
539
|
+
}
|
|
540
|
+
/**
|
|
541
|
+
* Send a single heartbeat update.
|
|
542
|
+
*/
|
|
543
|
+
async sendHeartbeat(sessionId) {
|
|
544
|
+
try {
|
|
545
|
+
await this.updateSession({
|
|
546
|
+
sessionId,
|
|
547
|
+
lastHeartbeatAt: new Date().toISOString(),
|
|
548
|
+
});
|
|
549
|
+
logger_1.logger.debug('[AppSyncClient] Heartbeat sent', { sessionId });
|
|
550
|
+
}
|
|
551
|
+
catch (error) {
|
|
552
|
+
logger_1.logger.warn('[AppSyncClient] Heartbeat failed', { sessionId, error });
|
|
553
|
+
}
|
|
554
|
+
}
|
|
555
|
+
/**
|
|
556
|
+
* Cleanup all subscriptions and heartbeats
|
|
557
|
+
*/
|
|
558
|
+
cleanupSubscriptions() {
|
|
559
|
+
this.activeSubscriptions.forEach((state) => {
|
|
560
|
+
this.cleanupSubscriptionState(state);
|
|
561
|
+
});
|
|
562
|
+
this.activeSubscriptions.clear();
|
|
563
|
+
this.heartbeatTimers.forEach((timer) => clearInterval(timer));
|
|
564
|
+
this.heartbeatTimers.clear();
|
|
565
|
+
}
|
|
566
|
+
}
|
|
567
|
+
exports.AppSyncClient = AppSyncClient;
|
|
568
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwc3luYy1jbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXBwc3luYy9hcHBzeW5jLWNsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsRUFBRTtBQUNGLG9CQUFvQjtBQUNwQixnQkFBZ0I7QUFDaEIsRUFBRTtBQUNGLDhEQUE4RDtBQUM5RCxFQUFFOzs7Ozs7QUFFRiw0Q0FBMkI7QUFDM0IsK0JBQW9DO0FBQ3BDLHNDQUFzRDtBQUN0RCxzQ0FBbUM7QUFDbkMsMENBQThDO0FBQzlDLHVDQUE4RDtBQUM5RCxvQ0FVa0I7QUF5QmxCOzs7O0dBSUc7QUFDSCxNQUFNLGdCQUFnQixHQUFHO0lBQ3ZCLGlCQUFpQixFQUFFLEVBQUU7SUFDckIsV0FBVyxFQUFFLElBQUk7SUFDakIsVUFBVSxFQUFFLEtBQUs7SUFDakIsaUJBQWlCLEVBQUUsQ0FBQztJQUNwQixpQkFBaUIsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksRUFBRSxZQUFZO0NBQy9DLENBQUM7QUFFRjs7R0FFRztBQUNILE1BQWEsYUFBYTtJQVF4QjtRQVBRLGtCQUFhLEdBQVksS0FBSyxDQUFDO1FBQy9CLGtCQUFhLEdBQWtCLElBQUksQ0FBQztRQUNwQyxpQkFBWSxHQUFrQixJQUFJLENBQUM7UUFDbkMsV0FBTSxHQUFxQixJQUFJLENBQUM7UUFDaEMsd0JBQW1CLEdBQW1DLElBQUksR0FBRyxFQUFFLENBQUM7UUFxakJ4RSxvQkFBb0I7UUFFWixvQkFBZSxHQUFnQyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBbmpCL0QsMEVBQTBFO1FBQzFFLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBQSx1QkFBYyxHQUFFLENBQUM7UUFDcEMsZUFBTSxDQUFDLElBQUksQ0FBQyw2QkFBNkIsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUNoRixDQUFDO0lBRUQ7O09BRUc7SUFDSSxnQkFBZ0I7UUFDckIs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QUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsZUFBTSxDQUFDLElBQUksQ0FBQyxrQ0FBa0MsRUFBRSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ3hFLENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxvQkFBb0I7UUFDekIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ3pDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2QyxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUVqQyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDOUQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUMvQixDQUFDO0NBQ0Y7QUF2bkJELHNDQXVuQkMiLCJzb3VyY2VzQ29udGVudCI6WyIvL1xuLy8gYXBwc3luYy1jbGllbnQudHNcbi8vIENvZGVWaWJlIENvcmVcbi8vXG4vLyBHcmFwaFFMIGNsaWVudCBmb3IgQVdTIEFwcFN5bmMgd2l0aCBXZWJTb2NrZXQgc3Vic2NyaXB0aW9uc1xuLy9cblxuaW1wb3J0IFdlYlNvY2tldCBmcm9tICd3cyc7XG5pbXBvcnQgeyB2NCBhcyB1dWlkdjQgfSBmcm9tICd1dWlkJztcbmltcG9ydCB7IGdldENvbmZpZywgZ2V0RW52aXJvbm1lbnQgfSBmcm9tICcuLi9jb25maWcnO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnLi4vbG9nZ2VyJztcbmltcG9ydCB7IGtleWNoYWluTWFuYWdlciB9IGZyb20gJy4uL2tleWNoYWluJztcbmltcG9ydCB7IHF1ZXJpZXMsIG11dGF0aW9ucywgc3Vic2NyaXB0aW9ucyB9IGZyb20gJy4vcXVlcmllcyc7XG5pbXBvcnQge1xuICBDcmVhdGVFdmVudElucHV0LFxuICBDcmVhdGVTZXNzaW9uSW5wdXQsXG4gIFVwZGF0ZVNlc3Npb25JbnB1dCxcbiAgVXBkYXRlRXZlbnRTdGF0dXNJbnB1dCxcbiAgRXZlbnQsXG4gIFNlc3Npb24sXG4gIEV2ZW50U291cmNlLFxuICBEZXZpY2VLZXksXG4gIFRva2VuRGF0YSxcbn0gZnJvbSAnLi4vdHlwZXMnO1xuXG4vKipcbiAqIERvd25sb2FkIFVSTCByZXNwb25zZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIERvd25sb2FkVXJsUmVzcG9uc2Uge1xuICBkb3dubG9hZFVybDogc3RyaW5nO1xuICBleHBpcmVzQXQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBTdWJzY3JpcHRpb24gc3RhdGUgZm9yIHJlY29ubmVjdGlvblxuICovXG5pbnRlcmZhY2UgU3Vic2NyaXB0aW9uU3RhdGUge1xuICB3czogV2ViU29ja2V0IHwgbnVsbDtcbiAgc3Vic2NyaXB0aW9uSWQ6IHN0cmluZztcbiAgc2Vzc2lvbklkOiBzdHJpbmc7XG4gIG9uRXZlbnQ6IChldmVudDogRXZlbnQpID0+IHZvaWQ7XG4gIG9uRXJyb3I/OiAoZXJyb3I6IEVycm9yKSA9PiB2b2lkO1xuICByZWNvbm5lY3RBdHRlbXB0czogbnVtYmVyO1xuICByZWNvbm5lY3RUaW1lcj86IE5vZGVKUy5UaW1lb3V0O1xuICBpc1JlY29ubmVjdGluZzogYm9vbGVhbjtcbiAga2VlcEFsaXZlVGltZXI/OiBOb2RlSlMuVGltZW91dDtcbn1cblxuLyoqXG4gKiBSZWNvbm5lY3Rpb24gY29uZmlndXJhdGlvbiDigJQgdHdvLXBoYXNlIHN0cmF0ZWd5OlxuICogUGhhc2UgMSAodXJnZW50KTogRXhwb25lbnRpYWwgYmFja29mZiAxcyDihpIgNjBzIGZvciBmaXJzdCAxMCBhdHRlbXB0c1xuICogUGhhc2UgMiAocGVyc2lzdGVudCk6IFJldHJ5IGV2ZXJ5IDUgbWludXRlcyBpbmRlZmluaXRlbHlcbiAqL1xuY29uc3QgUkVDT05ORUNUX0NPTkZJRyA9IHtcbiAgdXJnZW50TWF4QXR0ZW1wdHM6IDEwLFxuICBiYXNlRGVsYXlNczogMTAwMCxcbiAgbWF4RGVsYXlNczogNjAwMDAsXG4gIGJhY2tvZmZNdWx0aXBsaWVyOiAyLFxuICBwZXJzaXN0ZW50RGVsYXlNczogNSAqIDYwICogMTAwMCwgLy8gNSBtaW51dGVzXG59O1xuXG4vKipcbiAqIEFwcFN5bmMgR3JhcGhRTCBjbGllbnQgd2l0aCBXZWJTb2NrZXQgc3Vic2NyaXB0aW9uc1xuICovXG5leHBvcnQgY2xhc3MgQXBwU3luY0NsaWVudCB7XG4gIHByaXZhdGUgYXV0aGVudGljYXRlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIGN1cnJlbnRVc2VySWQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIGN1cnJlbnRFbWFpbDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgdG9rZW5zOiBUb2tlbkRhdGEgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBhY3RpdmVTdWJzY3JpcHRpb25zOiBNYXA8c3RyaW5nLCBTdWJzY3JpcHRpb25TdGF0ZT4gPSBuZXcgTWFwKCk7XG4gIHByaXZhdGUgZW52aXJvbm1lbnQ6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICAvLyBHZXQgZW52aXJvbm1lbnQgZnJvbSBjZW50cmFsaXplZCBjb25maWcgKHJlYWRzIHByb2Nlc3MuZW52LkVOVklST05NRU5UKVxuICAgIHRoaXMuZW52aXJvbm1lbnQgPSBnZXRFbnZpcm9ubWVudCgpO1xuICAgIGxvZ2dlci5pbmZvKCdbQXBwU3luY0NsaWVudF0gSW5pdGlhbGl6ZWQnLCB7IGVudmlyb25tZW50OiB0aGlzLmVudmlyb25tZW50IH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgY3VycmVudCBhdXRoZW50aWNhdGVkIHVzZXIgSURcbiAgICovXG4gIHB1YmxpYyBnZXRDdXJyZW50VXNlcklkKCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLmN1cnJlbnRVc2VySWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm90IGF1dGhlbnRpY2F0ZWQuIENhbGwgYXV0aGVudGljYXRlV2l0aFN0b3JlZFRva2VucygpIGZpcnN0LicpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5jdXJyZW50VXNlcklkO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgY3VycmVudCBhdXRoZW50aWNhdGVkIHVzZXIgZW1haWxcbiAgICovXG4gIHB1YmxpYyBnZXRDdXJyZW50VXNlckVtYWlsKCk6IHN0cmluZyB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLmN1cnJlbnRFbWFpbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBBdXRoZW50aWNhdGUgdXNpbmcgc3RvcmVkIE9BdXRoIHRva2VucyBmcm9tIGtleWNoYWluXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgYXV0aGVudGljYXRlV2l0aFN0b3JlZFRva2VucygpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgdG9rZW5zID0gYXdhaXQga2V5Y2hhaW5NYW5hZ2VyLmdldFRva2Vucyh0aGlzLmVudmlyb25tZW50KTtcbiAgICAgIGlmICghdG9rZW5zKSB7XG4gICAgICAgIGxvZ2dlci5kZWJ1ZygnW0FwcFN5bmNDbGllbnRdIE5vIHN0b3JlZCB0b2tlbnMgZm91bmQnKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBsb2dnZXIuaW5mbygnW0FwcFN5bmNDbGllbnRdIEZvdW5kIHN0b3JlZCBPQXV0aCB0b2tlbnMnLCB7XG4gICAgICAgIHVzZXJJZDogdG9rZW5zLnVzZXJJZCxcbiAgICAgICAgZW1haWw6IHRva2Vucy5lbWFpbCxcbiAgICAgICAgZXhwaXJlZDoga2V5Y2hhaW5NYW5hZ2VyLmlzVG9rZW5FeHBpcmVkKHRva2VucyksXG4gICAgICB9KTtcblxuICAgICAgLy8gSWYgdG9rZW5zIGFyZSBleHBpcmVkLCB0cnkgdG8gcmVmcmVzaCB0aGVtXG4gICAgICBpZiAoa2V5Y2hhaW5NYW5hZ2VyLmlzVG9rZW5FeHBpcmVkKHRva2VucykpIHtcbiAgICAgICAgbG9nZ2VyLmluZm8oJ1tBcHBTeW5jQ2xpZW50XSBUb2tlbnMgZXhwaXJlZCwgYXR0ZW1wdGluZyByZWZyZXNoLi4uJyk7XG4gICAgICAgIGNvbnN0IHJlZnJlc2hlZCA9IGF3YWl0IHRoaXMucmVmcmVzaFRva2Vucyh0b2tlbnMpO1xuICAgICAgICBpZiAoIXJlZnJlc2hlZCkge1xuICAgICAgICAgIGxvZ2dlci53YXJuKCdbQXBwU3luY0NsaWVudF0gVG9rZW4gcmVmcmVzaCBmYWlsZWQnKTtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudG9rZW5zID0gdG9rZW5zO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmN1cnJlbnRVc2VySWQgPSB0aGlzLnRva2VucyEudXNlcklkO1xuICAgICAgdGhpcy5jdXJyZW50RW1haWwgPSB0aGlzLnRva2VucyEuZW1haWw7XG4gICAgICB0aGlzLmF1dGhlbnRpY2F0ZWQgPSB0cnVlO1xuXG4gICAgICBsb2dnZXIuaW5mbygnW0FwcFN5bmNDbGllbnRdIEF1dGhlbnRpY2F0ZWQgc3VjY2Vzc2Z1bGx5Jywge1xuICAgICAgICB1c2VySWQ6IHRoaXMuY3VycmVudFVzZXJJZCxcbiAgICAgICAgZW1haWw6IHRoaXMuY3VycmVudEVtYWlsLFxuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBsb2dnZXIuZXJyb3IoJ1tBcHBTeW5jQ2xpZW50XSBBdXRoZW50aWNhdGlvbiBmYWlsZWQ6JywgZXJyb3IpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZWZyZXNoIGV4cGlyZWQgdG9rZW5zXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIHJlZnJlc2hUb2tlbnModG9rZW5zOiBUb2tlbkRhdGEpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgY29uZmlnID0gZ2V0Q29uZmlnKCk7XG4gICAgICBjb25zdCB0b2tlblVybCA9IGBodHRwczovLyR7Y29uZmlnLmF3cy5jb2duaXRvRG9tYWlufS9vYXV0aDIvdG9rZW5gO1xuXG4gICAgICBjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHtcbiAgICAgICAgZ3JhbnRfdHlwZTogJ3JlZnJlc2hfdG9rZW4nLFxuICAgICAgICBjbGllbnRfaWQ6IGNvbmZpZy5hd3MuY29nbml0b0NsaWVudElkLFxuICAgICAgICByZWZyZXNoX3Rva2VuOiB0b2tlbnMucmVmcmVzaFRva2VuLFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godG9rZW5VcmwsIHtcbiAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgIGhlYWRlcnM6IHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnIH0sXG4gICAgICAgIGJvZHk6IHBhcmFtcy50b1N0cmluZygpLFxuICAgICAgfSk7XG5cbiAgICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgICAgbG9nZ2VyLmVycm9yKCdbQXBwU3luY0NsaWVudF0gVG9rZW4gcmVmcmVzaCBmYWlsZWQnLCB7IHN0YXR1czogcmVzcG9uc2Uuc3RhdHVzIH0pO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKCkgYXMge1xuICAgICAgICBhY2Nlc3NfdG9rZW46IHN0cmluZztcbiAgICAgICAgaWRfdG9rZW46IHN0cmluZztcbiAgICAgICAgZXhwaXJlc19pbjogbnVtYmVyO1xuICAgICAgfTtcblxuICAgICAgY29uc3QgdXBkYXRlZFRva2VuczogVG9rZW5EYXRhID0ge1xuICAgICAgICAuLi50b2tlbnMsXG4gICAgICAgIGFjY2Vzc1Rva2VuOiBkYXRhLmFjY2Vzc190b2tlbixcbiAgICAgICAgaWRUb2tlbjogZGF0YS5pZF90b2tlbixcbiAgICAgICAgZXhwaXJlc0F0OiBEYXRlLm5vdygpICsgKGRhdGEuZXhwaXJlc19pbiAqIDEwMDApLFxuICAgICAgfTtcblxuICAgICAgYXdhaXQga2V5Y2hhaW5NYW5hZ2VyLnNldFRva2Vucyh1cGRhdGVkVG9rZW5zLCB0aGlzLmVudmlyb25tZW50KTtcbiAgICAgIHRoaXMudG9rZW5zID0gdXBkYXRlZFRva2VucztcblxuICAgICAgbG9nZ2VyLmluZm8oJ1tBcHBTeW5jQ2xpZW50XSBUb2tlbnMgcmVmcmVzaGVkJywge1xuICAgICAgICBleHBpcmVzQXQ6IG5ldyBEYXRlKHVwZGF0ZWRUb2tlbnMuZXhwaXJlc0F0KS50b0lTT1N0cmluZygpLFxuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBsb2dnZXIuZXJyb3IoJ1tBcHBTeW5jQ2xpZW50XSBUb2tlbiByZWZyZXNoIGVycm9yOicsIGVycm9yKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgYXV0aGVudGljYXRlZFxuICAgKi9cbiAgcHVibGljIGlzQXV0aGVudGljYXRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5hdXRoZW50aWNhdGVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFNpZ24gb3V0XG4gICAqL1xuICBwdWJsaWMgc2lnbk91dCgpOiB2b2lkIHtcbiAgICB0aGlzLmF1dGhlbnRpY2F0ZWQgPSBmYWxzZTtcbiAgICB0aGlzLnRva2VucyA9IG51bGw7XG4gICAgdGhpcy5jdXJyZW50VXNlcklkID0gbnVsbDtcbiAgICB0aGlzLmN1cnJlbnRFbWFpbCA9IG51bGw7XG4gICAgdGhpcy5jbGVhbnVwU3Vic2NyaXB0aW9ucygpO1xuICAgIGxvZ2dlci5pbmZvKCdbQXBwU3luY0NsaWVudF0gU2lnbmVkIG91dCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ha2UgYSBHcmFwaFFMIHJlcXVlc3RcbiAgICovXG4gIHByaXZhdGUgYXN5bmMgZ3JhcGhxbFJlcXVlc3QocXVlcnk6IHN0cmluZywgdmFyaWFibGVzOiBhbnksIGlzUmV0cnk6IGJvb2xlYW4gPSBmYWxzZSk6IFByb21pc2U8YW55PiB7XG4gICAgY29uc3QgY29uZmlnID0gZ2V0Q29uZmlnKCk7XG5cbiAgICBpZiAoIXRoaXMudG9rZW5zPy5pZFRva2VuKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBhdXRoZW50aWNhdGVkLiBSdW4gXCJjb2RldmliZSBsb2dpblwiIGZpcnN0LicpO1xuICAgIH1cblxuICAgIGNvbnN0IGhlYWRlcnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgJ0F1dGhvcml6YXRpb24nOiB0aGlzLnRva2Vucy5pZFRva2VuLFxuICAgIH07XG5cbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKGNvbmZpZy5hd3MuYXBwc3luY1VybCwge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBoZWFkZXJzLFxuICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoeyBxdWVyeSwgdmFyaWFibGVzIH0pLFxuICAgIH0pO1xuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcmVzcG9uc2UuanNvbigpIGFzIHsgZGF0YT86IGFueTsgZXJyb3JzPzogQXJyYXk8eyBtZXNzYWdlOiBzdHJpbmcgfT4gfTtcblxuICAgIC8vIEhhbmRsZSA0MDEgd2l0aCB0b2tlbiByZWZyZXNoXG4gICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gNDAxICYmICFpc1JldHJ5ICYmIHRoaXMudG9rZW5zKSB7XG4gICAgICBsb2dnZXIuaW5mbygnW0FwcFN5bmNDbGllbnRdIDQwMSBVbmF1dGhvcml6ZWQsIHJlZnJlc2hpbmcgdG9rZW4uLi4nKTtcbiAgICAgIGNvbnN0IHJlZnJlc2hlZCA9IGF3YWl0IHRoaXMucmVmcmVzaFRva2Vucyh0aGlzLnRva2Vucyk7XG4gICAgICBpZiAocmVmcmVzaGVkKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdyYXBocWxSZXF1ZXN0KHF1ZXJ5LCB2YXJpYWJsZXMsIHRydWUpO1xuICAgICAgfVxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUb2tlbiBleHBpcmVkIGFuZCByZWZyZXNoIGZhaWxlZCcpO1xuICAgIH1cblxuICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgR3JhcGhRTCByZXF1ZXN0IGZhaWxlZDogJHtyZXNwb25zZS5zdGF0dXN9YCk7XG4gICAgfVxuXG4gICAgaWYgKHJlc3VsdC5lcnJvcnM/Lmxlbmd0aCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBHcmFwaFFMIGVycm9yOiAke3Jlc3VsdC5lcnJvcnNbMF0ubWVzc2FnZX1gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLy8gTUFSSzogLSBTZXNzaW9uIE9wZXJhdGlvbnNcblxuICAvKipcbiAgICogQ3JlYXRlIGEgc2Vzc2lvblxuICAgKi9cbiAgcHVibGljIGFzeW5jIGNyZWF0ZVNlc3Npb24oaW5wdXQ6IENyZWF0ZVNlc3Npb25JbnB1dCk6IFByb21pc2U8U2Vzc2lvbj4ge1xuICAgIGNvbnN0IHByZXBhcmVkSW5wdXQgPSB7XG4gICAgICAuLi5pbnB1dCxcbiAgICAgIG1ldGFkYXRhOiBpbnB1dC5tZXRhZGF0YSA/IEpTT04uc3RyaW5naWZ5KGlucHV0Lm1ldGFkYXRhKSA6IHVuZGVmaW5lZCxcbiAgICB9O1xuXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmdyYXBocWxSZXF1ZXN0KG11dGF0aW9ucy5jcmVhdGVTZXNzaW9uLCB7IGlucHV0OiBwcmVwYXJlZElucHV0IH0pO1xuICAgIGxvZ2dlci5pbmZvKCdbQXBwU3luY0NsaWVudF0gU2Vzc2lvbiBjcmVhdGVkJywgeyBzZXNzaW9uSWQ6IHJlc3BvbnNlLmRhdGEuY3JlYXRlU2Vzc2lvbi5zZXNzaW9uSWQgfSk7XG4gICAgcmV0dXJuIHJlc3BvbnNlLmRhdGEuY3JlYXRlU2Vzc2lvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgYSBzZXNzaW9uXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgdXBkYXRlU2Vzc2lvbihpbnB1dDogVXBkYXRlU2Vzc2lvbklucHV0KTogUHJvbWlzZTxTZXNzaW9uPiB7XG4gICAgY29uc3QgcHJlcGFyZWRJbnB1dCA9IHtcbiAgICAgIC4uLmlucHV0LFxuICAgICAgbWV0YWRhdGE6IGlucHV0Lm1ldGFkYXRhID8gSlNPTi5zdHJpbmdpZnkoaW5wdXQubWV0YWRhdGEpIDogdW5kZWZpbmVkLFxuICAgIH07XG5cbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuZ3JhcGhxbFJlcXVlc3QobXV0YXRpb25zLnVwZGF0ZVNlc3Npb24sIHsgaW5wdXQ6IHByZXBhcmVkSW5wdXQgfSk7XG4gICAgbG9nZ2VyLmRlYnVnKCdbQXBwU3luY0NsaWVudF0gU2Vzc2lvbiB1cGRhdGVkJywgeyBzZXNzaW9uSWQ6IHJlc3BvbnNlLmRhdGEudXBkYXRlU2Vzc2lvbi5zZXNzaW9uSWQgfSk7XG4gICAgcmV0dXJuIHJlc3BvbnNlLmRhdGEudXBkYXRlU2Vzc2lvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYSBzZXNzaW9uXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0U2Vzc2lvbihzZXNzaW9uSWQ6IHN0cmluZyk6IFByb21pc2U8U2Vzc2lvbiB8IG51bGw+IHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuZ3JhcGhxbFJlcXVlc3QocXVlcmllcy5nZXRTZXNzaW9uLCB7IHNlc3Npb25JZCB9KTtcbiAgICByZXR1cm4gcmVzcG9uc2UuZGF0YS5nZXRTZXNzaW9uO1xuICB9XG5cbiAgLy8gTUFSSzogLSBFdmVudCBPcGVyYXRpb25zXG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhbiBldmVudFxuICAgKi9cbiAgcHVibGljIGFzeW5jIGNyZWF0ZUV2ZW50KGlucHV0OiBDcmVhdGVFdmVudElucHV0KTogUHJvbWlzZTxFdmVudD4ge1xuICAgIGNvbnN0IHByZXBhcmVkSW5wdXQgPSB7XG4gICAgICAuLi5pbnB1dCxcbiAgICAgIG1ldGFkYXRhOiBpbnB1dC5tZXRhZGF0YSA/IEpTT04uc3RyaW5naWZ5KGlucHV0Lm1ldGFkYXRhKSA6IHVuZGVmaW5lZCxcbiAgICB9O1xuXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmdyYXBocWxSZXF1ZXN0KG11dGF0aW9ucy5jcmVhdGVFdmVudCwgeyBpbnB1dDogcHJlcGFyZWRJbnB1dCB9KTtcbiAgICBsb2dnZXIuZGVidWcoJ1tBcHBTeW5jQ2xpZW50XSBFdmVudCBjcmVhdGVkJywge1xuICAgICAgZXZlbnRJZDogcmVzcG9uc2UuZGF0YS5jcmVhdGVFdmVudC5ldmVudElkLFxuICAgICAgdHlwZTogcmVzcG9uc2UuZGF0YS5jcmVhdGVFdmVudC50eXBlLFxuICAgIH0pO1xuICAgIHJldHVybiByZXNwb25zZS5kYXRhLmNyZWF0ZUV2ZW50O1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBldmVudCBzdGF0dXNcbiAgICovXG4gIHB1YmxpYyBhc3luYyB1cGRhdGVFdmVudFN0YXR1cyhpbnB1dDogVXBkYXRlRXZlbnRTdGF0dXNJbnB1dCk6IFByb21pc2U8RXZlbnQ+IHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuZ3JhcGhxbFJlcXVlc3QobXV0YXRpb25zLnVwZGF0ZUV2ZW50U3RhdHVzLCB7IGlucHV0IH0pO1xuICAgIHJldHVybiByZXNwb25zZS5kYXRhLnVwZGF0ZUV2ZW50U3RhdHVzO1xuICB9XG5cbiAgLyoqXG4gICAqIExpc3QgZXZlbnRzIGZvciBhIHNlc3Npb25cbiAgICovXG4gIHB1YmxpYyBhc3luYyBsaXN0RXZlbnRzKHNlc3Npb25JZDogc3RyaW5nLCBzb3VyY2U/OiBFdmVudFNvdXJjZSwgbGltaXQ/OiBudW1iZXIpOiBQcm9taXNlPEV2ZW50W10+IHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuZ3JhcGhxbFJlcXVlc3QocXVlcmllcy5saXN0RXZlbnRzLCB7IHNlc3Npb25JZCwgc291cmNlLCBsaW1pdCB9KTtcbiAgICByZXR1cm4gcmVzcG9uc2UuZGF0YS5saXN0RXZlbnRzLml0ZW1zO1xuICB9XG5cbiAgLy8gTUFSSzogLSBEZXZpY2UgS2V5IE9wZXJhdGlvbnNcblxuICAvKipcbiAgICogTGlzdCB1c2VyIGRldmljZSBrZXlzXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgbGlzdFVzZXJEZXZpY2VLZXlzKCk6IFByb21pc2U8RGV2aWNlS2V5W10+IHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuZ3JhcGhxbFJlcXVlc3QocXVlcmllcy5saXN0VXNlckRldmljZUtleXMsIHt9KTtcbiAgICByZXR1cm4gcmVzcG9uc2UuZGF0YS5saXN0VXNlckRldmljZUtleXMgfHwgW107XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXIgZGV2aWNlIGtleVxuICAgKi9cbiAgcHVibGljIGFzeW5jIHJlZ2lzdGVyRGV2aWNlS2V5KFxuICAgIGRldmljZUlkOiBzdHJpbmcsXG4gICAgcHVibGljS2V5OiBzdHJpbmcsXG4gICAgcGxhdGZvcm06IHN0cmluZyxcbiAgICBkZXZpY2VOYW1lOiBzdHJpbmdcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgaW5wdXQgPSB7IGRldmljZUlkLCBwdWJsaWNLZXksIHBsYXRmb3JtLCBkZXZpY2VOYW1lIH07XG4gICAgYXdhaXQgdGhpcy5ncmFwaHFsUmVxdWVzdChtdXRhdGlvbnMucmVnaXN0ZXJEZXZpY2VLZXksIHsgaW5wdXQgfSk7XG4gICAgbG9nZ2VyLmluZm8oJ1tBcHBTeW5jQ2xpZW50XSBEZXZpY2Uga2V5IHJlZ2lzdGVyZWQnLCB7IGRldmljZUlkLCBwbGF0Zm9ybSB9KTtcbiAgfVxuXG4gIC8vIE1BUks6IC0gQXR0YWNobWVudCBPcGVyYXRpb25zXG5cbiAgLyoqXG4gICAqIEdldCBhdHRhY2htZW50IGRvd25sb2FkIFVSTFxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldEF0dGFjaG1lbnREb3dubG9hZFVybChzM0tleTogc3RyaW5nKTogUHJvbWlzZTxEb3dubG9hZFVybFJlc3BvbnNlPiB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmdyYXBocWxSZXF1ZXN0KG11dGF0aW9ucy5nZXRBdHRhY2htZW50RG93bmxvYWRVcmwsIHsgczNLZXkgfSk7XG4gICAgcmV0dXJuIHJlc3BvbnNlLmRhdGEuZ2V0QXR0YWNobWVudERvd25sb2FkVXJsO1xuICB9XG5cbiAgLy8gTUFSSzogLSBTdWJzY3JpcHRpb25zXG5cbiAgLyoqXG4gICAqIFN1YnNjcmliZSB0byBldmVudHMgZm9yIGEgc2Vzc2lvblxuICAgKi9cbiAgcHVibGljIHN1YnNjcmliZVRvRXZlbnRzKFxuICAgIHNlc3Npb25JZDogc3RyaW5nLFxuICAgIG9uRXZlbnQ6IChldmVudDogRXZlbnQpID0+IHZvaWQsXG4gICAgb25FcnJvcj86IChlcnJvcjogRXJyb3IpID0+IHZvaWRcbiAgKTogKCkgPT4gdm9pZCB7XG4gICAgbG9nZ2VyLmluZm8oJ1tBcHBTeW5jQ2xpZW50XSBTdWJzY3JpYmluZyB0byBldmVudHMnLCB7IHNlc3Npb25JZCB9KTtcblxuICAgIC8vIENsZWFudXAgZXhpc3Rpbmcgc3Vic2NyaXB0aW9uXG4gICAgY29uc3QgZXhpc3RpbmcgPSB0aGlzLmFjdGl2ZVN1YnNjcmlwdGlvbnMuZ2V0KHNlc3Npb25JZCk7XG4gICAgaWYgKGV4aXN0aW5nKSB7XG4gICAgICB0aGlzLmNsZWFudXBTdWJzY3JpcHRpb25TdGF0ZShleGlzdGluZyk7XG4gICAgICB0aGlzLmFjdGl2ZVN1YnNjcmlwdGlvbnMuZGVsZXRlKHNlc3Npb25JZCk7XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhdGU6IFN1YnNjcmlwdGlvblN0YXRlID0ge1xuICAgICAgd3M6IG51bGwsXG4gICAgICBzdWJzY3JpcHRpb25JZDogdXVpZHY0KCksXG4gICAgICBzZXNzaW9uSWQsXG4gICAgICBvbkV2ZW50LFxuICAgICAgb25FcnJvcixcbiAgICAgIHJlY29ubmVjdEF0dGVtcHRzOiAwLFxuICAgICAgaXNSZWNvbm5lY3Rpbmc6IGZhbHNlLFxuICAgIH07XG5cbiAgICB0aGlzLmFjdGl2ZVN1YnNjcmlwdGlvbnMuc2V0KHNlc3Npb25JZCwgc3RhdGUpO1xuICAgIHRoaXMuY3JlYXRlU3Vic2NyaXB0aW9uKHN0YXRlKTtcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICB0aGlzLmNsZWFudXBTdWJzY3JpcHRpb25TdGF0ZShzdGF0ZSk7XG4gICAgICB0aGlzLmFjdGl2ZVN1YnNjcmlwdGlvbnMuZGVsZXRlKHNlc3Npb25JZCk7XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCBXZWJTb2NrZXQgVVJMXG4gICAqL1xuICBwcml2YXRlIGJ1aWxkUmVhbHRpbWVVcmwoKTogc3RyaW5nIHtcbiAgICBjb25zdCBjb25maWcgPSBnZXRDb25maWcoKTtcbiAgICBjb25zdCByZWFsdGltZVVybCA9IGNvbmZpZy5hd3MuYXBwc3luY1VybFxuICAgICAgLnJlcGxhY2UoJ2h0dHBzOi8vJywgJ3dzczovLycpXG4gICAgICAucmVwbGFjZSgnYXBwc3luYy1hcGknLCAnYXBwc3luYy1yZWFsdGltZS1hcGknKTtcblxuICAgIGNvbnN0IGF1dGhIZWFkZXI6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgICBob3N0OiBuZXcgVVJMKGNvbmZpZy5hd3MuYXBwc3luY1VybCkuaG9zdCxcbiAgICB9O1xuXG4gICAgaWYgKHRoaXMudG9rZW5zPy5pZFRva2VuKSB7XG4gICAgICBhdXRoSGVhZGVyWydBdXRob3JpemF0aW9uJ10gPSB0aGlzLnRva2Vucy5pZFRva2VuO1xuICAgIH1cblxuICAgIGNvbnN0IGhlYWRlckJhc2U2NCA9IEJ1ZmZlci5mcm9tKEpTT04uc3RyaW5naWZ5KGF1dGhIZWFkZXIpKS50b1N0cmluZygnYmFzZTY0Jyk7XG4gICAgY29uc3QgcGF5bG9hZEJhc2U2NCA9IEJ1ZmZlci5mcm9tKEpTT04uc3RyaW5naWZ5KHt9KSkudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuXG4gICAgcmV0dXJuIGAke3JlYWx0aW1lVXJsfT9oZWFkZXI9JHtoZWFkZXJCYXNlNjR9JnBheWxvYWQ9JHtwYXlsb2FkQmFzZTY0fWA7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIFdlYlNvY2tldCBzdWJzY3JpcHRpb25cbiAgICovXG4gIHByaXZhdGUgY3JlYXRlU3Vic2NyaXB0aW9uKHN0YXRlOiBTdWJzY3JpcHRpb25TdGF0ZSk6IHZvaWQge1xuICAgIGNvbnN0IHsgc2Vzc2lvbklkLCBzdWJzY3JpcHRpb25JZCwgb25FdmVudCwgb25FcnJvciB9ID0gc3RhdGU7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3Qgd3NVcmwgPSB0aGlzLmJ1aWxkUmVhbHRpbWVVcmwoKTtcbiAgICAgIGNvbnN0IHdzID0gbmV3IFdlYlNvY2tldCh3c1VybCwgWydncmFwaHFsLXdzJ10pO1xuXG4gICAgICB3cy5vbignb3BlbicsICgpID0+IHtcbiAgICAgICAgbG9nZ2VyLmluZm8oJ1tBcHBTeW5jQ2xpZW50XSBXZWJTb2NrZXQgY29ubmVjdGVkJywgeyBzZXNzaW9uSWQgfSk7XG4gICAgICAgIHdzLnNlbmQoSlNPTi5zdHJpbmdpZnkoeyB0eXBlOiAnY29ubmVjdGlvbl9pbml0JyB9KSk7XG4gICAgICB9KTtcblxuICAgICAgd3Mub24oJ21lc3NhZ2UnLCAoZGF0YTogV2ViU29ja2V0LkRhdGEpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBtZXNzYWdlID0gSlNPTi5wYXJzZShkYXRhLnRvU3RyaW5nKCkpO1xuXG4gICAgICAgICAgc3dpdGNoIChtZXNzYWdlLnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ2Nvbm5lY3Rpb25fYWNrJzpcbiAgICAgICAgICAgICAgdGhpcy5zZW5kU3Vic2NyaXB0aW9uU3RhcnQod3MsIHN0YXRlKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ3N0YXJ0X2Fjayc6XG4gICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCdbQXBwU3luY0NsaWVudF0gU3Vic2NyaXB0aW9uIHN0YXJ0ZWQnLCB7IHNlc3Npb25JZCB9KTtcbiAgICAgICAgICAgICAgc3RhdGUuaXNSZWNvbm5lY3RpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgc3RhdGUucmVjb25uZWN0QXR0ZW1wdHMgPSAwO1xuICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnZGF0YSc6XG4gICAgICAgICAgICAgIHRoaXMucmVzZXRLZWVwQWxpdmVUaW1lcihzdGF0ZSk7XG4gICAgICAgICAgICAgIGNvbnN0IGV2ZW50ID0gbWVzc2FnZS5wYXlsb2FkPy5kYXRhPy5vbkV2ZW50Q3JlYXRlZDtcbiAgICAgICAgICAgICAgaWYgKGV2ZW50ICYmIGV2ZW50LnNvdXJjZSA9PT0gRXZlbnRTb3VyY2UuTU9CSUxFKSB7XG4gICAgICAgICAgICAgICAgb25FdmVudChldmVudCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ2thJzpcbiAgICAgICAgICAgICAgdGhpcy5yZXNldEtlZXBBbGl2ZVRpbWVyKHN0YXRlKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ2Vycm9yJzpcbiAgICAgICAgICAgICAgY29uc3QgZXJyb3JNc2cgPSBtZXNzYWdlLnBheWxvYWQ/LmVycm9ycz8uWzBdPy5tZXNzYWdlIHx8ICdVbmtub3duIGVycm9yJztcbiAgICAgICAgICAgICAgdGhpcy5oYW5kbGVTdWJzY3JpcHRpb25FcnJvcihzdGF0ZSwgbmV3IEVycm9yKGVycm9yTXNnKSk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGxvZ2dlci5lcnJvcignW0FwcFN5bmNDbGllbnRdIEZhaWxlZCB0byBwYXJzZSBtZXNzYWdlJywgeyBlcnJvcjogZSB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIHdzLm9uKCdlcnJvcicsIChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgICAgbG9nZ2VyLmVycm9yKCdbQXBwU3luY0NsaWVudF0gV2ViU29ja2V0IGVycm9yJywgeyBzZXNzaW9uSWQsIGVycm9yOiBlcnJvci5tZXNzYWdlIH0pO1xuICAgICAgICB0aGlzLmhhbmRsZVN1YnNjcmlwdGlvbkVycm9yKHN0YXRlLCBlcnJvcik7XG4gICAgICB9KTtcblxuICAgICAgd3Mub24oJ2Nsb3NlJywgKGNvZGU6IG51bWJlciwgcmVhc29uOiBCdWZmZXIpID0+IHtcbiAgICAgICAgbG9nZ2VyLmluZm8oJ1tBcHBTeW5jQ2xpZW50XSBXZWJTb2NrZXQgY2xvc2VkJywgeyBzZXNzaW9uSWQsIGNvZGUgfSk7XG4gICAgICAgIGlmIChzdGF0ZS5rZWVwQWxpdmVUaW1lcikge1xuICAgICAgICAgIGNsZWFyVGltZW91dChzdGF0ZS5rZWVwQWxpdmVUaW1lcik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvZGUgIT09IDEwMDAgJiYgdGhpcy5hY3RpdmVTdWJzY3JpcHRpb25zLmhhcyhzZXNzaW9uSWQpKSB7XG4gICAgICAgICAgdGhpcy5oYW5kbGVTdWJzY3JpcHRpb25FcnJvcihzdGF0ZSwgbmV3IEVycm9yKGBXZWJTb2NrZXQgY2xvc2VkOiAke2NvZGV9YCkpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgc3RhdGUud3MgPSB3cztcbiAgICAgIHRoaXMucmVzZXRLZWVwQWxpdmVUaW1lcihzdGF0ZSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRoaXMuaGFuZGxlU3Vic2NyaXB0aW9uRXJyb3Ioc3RhdGUsIGVycm9yIGFzIEVycm9yKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2VuZCBzdWJzY3JpcHRpb24gc3RhcnQgbWVzc2FnZVxuICAgKi9cbiAgcHJpdmF0ZSBzZW5kU3Vic2NyaXB0aW9uU3RhcnQod3M6IFdlYlNvY2tldCwgc3RhdGU6IFN1YnNjcmlwdGlvblN0YXRlKTogdm9pZCB7XG4gICAgY29uc3QgY29uZmlnID0gZ2V0Q29uZmlnKCk7XG4gICAgY29uc3QgeyBzZXNzaW9uSWQsIHN1YnNjcmlwdGlvbklkIH0gPSBzdGF0ZTtcblxuICAgIGNvbnN0IGF1dGhIZWFkZXI6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgICBob3N0OiBuZXcgVVJMKGNvbmZpZy5hd3MuYXBwc3luY1VybCkuaG9zdCxcbiAgICB9O1xuXG4gICAgaWYgKHRoaXMudG9rZW5zPy5pZFRva2VuKSB7XG4gICAgICBhdXRoSGVhZGVyWydBdXRob3JpemF0aW9uJ10gPSB0aGlzLnRva2Vucy5pZFRva2VuO1xuICAgIH1cblxuICAgIHdzLnNlbmQoSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgaWQ6IHN1YnNjcmlwdGlvbklkLFxuICAgICAgdHlwZTogJ3N0YXJ0JyxcbiAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgZGF0YTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgIHF1ZXJ5OiBzdWJzY3JpcHRpb25zLm9uRXZlbnRDcmVhdGVkLFxuICAgICAgICAgIHZhcmlhYmxlczogeyBzZXNzaW9uSWQgfSxcbiAgICAgICAgfSksXG4gICAgICAgIGV4dGVuc2lvbnM6IHsgYXV0aG9yaXphdGlvbjogYXV0aEhlYWRlciB9LFxuICAgICAgfSxcbiAgICB9KSk7XG4gIH1cblxuICAvKipcbiAgICogUmVzZXQga2VlcC1hbGl2ZSB0aW1lclxuICAgKi9cbiAgcHJpdmF0ZSByZXNldEtlZXBBbGl2ZVRpbWVyKHN0YXRlOiBTdWJzY3JpcHRpb25TdGF0ZSk6IHZvaWQge1xuICAgIGlmIChzdGF0ZS5rZWVwQWxpdmVUaW1lcikge1xuICAgICAgY2xlYXJUaW1lb3V0KHN0YXRlLmtlZXBBbGl2ZVRpbWVyKTtcbiAgICB9XG4gICAgc3RhdGUua2VlcEFsaXZlVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuaGFuZGxlU3Vic2NyaXB0aW9uRXJyb3Ioc3RhdGUsIG5ldyBFcnJvcignS2VlcC1hbGl2ZSB0aW1lb3V0JykpO1xuICAgIH0sIDUgKiA2MCAqIDEwMDApO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZSBzdWJzY3JpcHRpb24gZXJyb3Igd2l0aCB0d28tcGhhc2UgcmVjb25uZWN0aW9uOlxuICAgKiBQaGFzZSAxICh1cmdlbnQpOiBFeHBvbmVudGlhbCBiYWNrb2ZmIGZvciBmaXJzdCBOIGF0dGVtcHRzXG4gICAqIFBoYXNlIDIgKHBlcnNpc3RlbnQpOiBGaXhlZCBpbnRlcnZhbCByZXRyeSBpbmRlZmluaXRlbHlcbiAgICovXG4gIHByaXZhdGUgaGFuZGxlU3Vic2NyaXB0aW9uRXJyb3Ioc3RhdGU6IFN1YnNjcmlwdGlvblN0YXRlLCBlcnJvcjogRXJyb3IpOiB2b2lkIHtcbiAgICBjb25zdCB7IHNlc3Npb25JZCwgb25FcnJvciB9ID0gc3RhdGU7XG5cbiAgICBpZiAoc3RhdGUuaXNSZWNvbm5lY3RpbmcgfHwgIXRoaXMuYWN0aXZlU3Vic2NyaXB0aW9ucy5oYXMoc2Vzc2lvbklkKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHN0YXRlLmlzUmVjb25uZWN0aW5nID0gdHJ1ZTtcbiAgICBzdGF0ZS5yZWNvbm5lY3RBdHRlbXB0cysrO1xuXG4gICAgY29uc3QgaXNVcmdlbnRQaGFzZSA9IHN0YXRlLnJlY29ubmVjdEF0dGVtcHRzIDw9IFJFQ09OTkVDVF9DT05GSUcudXJnZW50TWF4QXR0ZW1wdHM7XG5cbiAgICBsZXQgZGVsYXk6IG51bWJlcjtcbiAgICBpZiAoaXNVcmdlbnRQaGFzZSkge1xuICAgICAgZGVsYXkgPSBNYXRoLm1pbihcbiAgICAgICAgUkVDT05ORUNUX0NPTkZJRy5iYXNlRGVsYXlNcyAqIE1hdGgucG93KFJFQ09OTkVDVF9DT05GSUcuYmFja29mZk11bHRpcGxpZXIsIHN0YXRlLnJlY29ubmVjdEF0dGVtcHRzIC0gMSksXG4gICAgICAgIFJFQ09OTkVDVF9DT05GSUcubWF4RGVsYXlNc1xuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZGVsYXkgPSBSRUNPTk5FQ1RfQ09ORklHLnBlcnNpc3RlbnREZWxheU1zO1xuICAgICAgaWYgKHN0YXRlLnJlY29ubmVjdEF0dGVtcHRzID09PSBSRUNPTk5FQ1RfQ09ORklHLnVyZ2VudE1heEF0dGVtcHRzICsgMSkge1xuICAgICAgICBsb2dnZXIuaW5mbygnW0FwcFN5bmNDbGllbnRdIFN3aXRjaGluZyB0byBwZXJzaXN0ZW50IHJlY29ubmVjdCAoZXZlcnkgNW1pbiknLCB7IHNlc3Npb25JZCB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsb2dnZXIuaW5mbygnW0FwcFN5bmNDbGllbnRdIFNjaGVkdWxpbmcgcmVjb25uZWN0Jywge1xuICAgICAgc2Vzc2lvbklkLFxuICAgICAgYXR0ZW1wdDogc3RhdGUucmVjb25uZWN0QXR0ZW1wdHMsXG4gICAgICBwaGFzZTogaXNVcmdlbnRQaGFzZSA/ICd1cmdlbnQnIDogJ3BlcnNpc3RlbnQnLFxuICAgICAgZGVsYXlNczogZGVsYXksXG4gICAgfSk7XG5cbiAgICBpZiAoc3RhdGUud3MpIHtcbiAgICAgIHRyeSB7IHN0YXRlLndzLmNsb3NlKDEwMDApOyB9IGNhdGNoIChlKSB7IC8qIGlnbm9yZSAqLyB9XG4gICAgICBzdGF0ZS53cyA9IG51bGw7XG4gICAgfVxuXG4gICAgaWYgKHN0YXRlLmtlZXBBbGl2ZVRpbWVyKSB7XG4gICAgICBjbGVhclRpbWVvdXQoc3RhdGUua2VlcEFsaXZlVGltZXIpO1xuICAgIH1cblxuICAgIHN0YXRlLnJlY29ubmVjdFRpbWVyID0gc2V0VGltZW91dChhc3luYyAoKSA9PiB7XG4gICAgICAvLyBSZXNldCBmbGFnIHNvIG5leHQgZmFpbHVyZSBjYW4gdHJpZ2dlciBhbm90aGVyIHJlY29ubmVjdFxuICAgICAgc3RhdGUuaXNSZWNvbm5lY3RpbmcgPSBmYWxzZTtcblxuICAgICAgaWYgKCF0aGlzLmFjdGl2ZVN1YnNjcmlwdGlvbnMuaGFzKHNlc3Npb25JZCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyBSZWZyZXNoIHRva2VucyBiZWZvcmUgcmVjb25uZWN0aW5nIOKAlCB0aGV5IG1heSBoYXZlIGV4cGlyZWRcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGZyZXNoVG9rZW5zID0gYXdhaXQga2V5Y2hhaW5NYW5hZ2VyLmdldFRva2Vucyh0aGlzLmVudmlyb25tZW50KTtcbiAgICAgICAgaWYgKGZyZXNoVG9rZW5zKSB7XG4gICAgICAgICAgaWYgKGtleWNoYWluTWFuYWdlci5pc1Rva2VuRXhwaXJlZChmcmVzaFRva2VucykpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlZnJlc2hlZCA9IGF3YWl0IHRoaXMucmVmcmVzaFRva2VucyhmcmVzaFRva2Vucyk7XG4gICAgICAgICAgICBpZiAocmVmcmVzaGVkKSB7XG4gICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCdbQXBwU3luY0NsaWVudF0gVG9rZW5zIHJlZnJlc2hlZCBiZWZvcmUgcmVjb25uZWN0JywgeyBzZXNzaW9uSWQgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudG9rZW5zID0gZnJlc2hUb2tlbnM7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGxvZ2dlci53YXJuKCdbQXBwU3luY0NsaWVudF0gVG9rZW4gcmVmcmVzaCBmYWlsZWQgYmVmb3JlIHJlY29ubmVjdCwgdXNpbmcgZXhpc3RpbmcgdG9rZW5zJywgeyBzZXNzaW9uSWQgfSk7XG4gICAgICB9XG5cbiAgICAgIHN0YXRlLnN1YnNjcmlwdGlvbklkID0gdXVpZHY0KCk7XG4gICAgICB0aGlzLmNyZWF0ZVN1YnNjcmlwdGlvbihzdGF0ZSk7XG4gICAgfSwgZGVsYXkpO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFudXAgc3Vic2NyaXB0aW9uIHN0YXRlXG4gICAqL1xuICBwcml2YXRlIGNsZWFudXBTdWJzY3JpcHRpb25TdGF0ZShzdGF0ZTogU3Vic2NyaXB0aW9uU3RhdGUpOiB2b2lkIHtcbiAgICBpZiAoc3RhdGUucmVjb25uZWN0VGltZXIpIHtcbiAgICAgIGNsZWFyVGltZW91dChzdGF0ZS5yZWNvbm5lY3RUaW1lcik7XG4gICAgfVxuICAgIGlmIChzdGF0ZS5rZWVwQWxpdmVUaW1lcikge1xuICAgICAgY2xlYXJUaW1lb3V0KHN0YXRlLmtlZXBBbGl2ZVRpbWVyKTtcbiAgICB9XG4gICAgaWYgKHN0YXRlLndzKSB7XG4gICAgICB0cnkge1xuICAgICAgICBpZiAoc3RhdGUud3MucmVhZHlTdGF0ZSA9PT0gV2ViU29ja2V0Lk9QRU4pIHtcbiAgICAgICAgICBzdGF0ZS53cy5zZW5kKEpTT04uc3RyaW5naWZ5KHsgaWQ6IHN0YXRlLnN1YnNjcmlwdGlvbklkLCB0eXBlOiAnc3RvcCcgfSkpO1xuICAgICAgICAgIHN0YXRlLndzLmNsb3NlKDEwMDApO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlKSB7IC8qIGlnbm9yZSAqLyB9XG4gICAgICBzdGF0ZS53cyA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgLy8gTUFSSzogLSBIZWFydGJlYXRcblxuICBwcml2YXRlIGhlYXJ0YmVhdFRpbWVyczogTWFwPHN0cmluZywgTm9kZUpTLlRpbWVvdXQ+ID0gbmV3IE1hcCgpO1xuXG4gIC8qKlxuICAgKiBTdGFydCBwZXJpb2RpYyBoZWFydGJlYXQgZm9yIGEgc2Vzc2lvbi5cbiAgICogVXBkYXRlcyBsYXN0SGVhcnRiZWF0QXQgb24gdGhlIHNlc3Npb24gZXZlcnkgaW50ZXJ2YWxNcyAoZGVmYXVsdCAyIG1pbnV0ZXMpLlxuICAgKi9cbiAgcHVibGljIHN0YXJ0SGVhcnRiZWF0KHNlc3Npb25JZDogc3RyaW5nLCBpbnRlcnZhbE1zOiBudW1iZXIgPSAyICogNjAgKiAxMDAwKTogdm9pZCB7XG4gICAgdGhpcy5zdG9wSGVhcnRiZWF0KHNlc3Npb25JZCk7XG5cbiAgICAvLyBTZW5kIGluaXRpYWwgaGVhcnRiZWF0IGltbWVkaWF0ZWx5XG4gICAgdGhpcy5zZW5kSGVhcnRiZWF0KHNlc3Npb25JZCk7XG5cbiAgICBjb25zdCB0aW1lciA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICAgIHRoaXMuc2VuZEhlYXJ0YmVhdChzZXNzaW9uSWQpO1xuICAgIH0sIGludGVydmFsTXMpO1xuXG4gICAgdGhpcy5oZWFydGJlYXRUaW1lcnMuc2V0KHNlc3Npb25JZCwgdGltZXIpO1xuICAgIGxvZ2dlci5pbmZvKCdbQXBwU3luY0NsaWVudF0gSGVhcnRiZWF0IHN0YXJ0ZWQnLCB7IHNlc3Npb25JZCwgaW50ZXJ2YWxNcyB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdG9wIGhlYXJ0YmVhdCBmb3IgYSBzZXNzaW9uLlxuICAgKi9cbiAgcHVibGljIHN0b3BIZWFydGJlYXQoc2Vzc2lvbklkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCB0aW1lciA9IHRoaXMuaGVhcnRiZWF0VGltZXJzLmdldChzZXNzaW9uSWQpO1xuICAgIGlmICh0aW1lcikge1xuICAgICAgY2xlYXJJbnRlcnZhbCh0aW1lcik7XG4gICAgICB0aGlzLmhlYXJ0YmVhdFRpbWVycy5kZWxldGUoc2Vzc2lvbklkKTtcbiAgICAgIGxvZ2dlci5pbmZvKCdbQXBwU3luY0NsaWVudF0gSGVhcnRiZWF0IHN0b3BwZWQnLCB7IHNlc3Npb25JZCB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2VuZCBhIHNpbmdsZSBoZWFydGJlYXQgdXBkYXRlLlxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBzZW5kSGVhcnRiZWF0KHNlc3Npb25JZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMudXBkYXRlU2Vzc2lvbih7XG4gICAgICAgIHNlc3Npb25JZCxcbiAgICAgICAgbGFzdEhlYXJ0YmVhdEF0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICB9KTtcbiAgICAgIGxvZ2dlci5kZWJ1ZygnW0FwcFN5bmNDbGllbnRdIEhlYXJ0YmVhdCBzZW50JywgeyBzZXNzaW9uSWQgfSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGxvZ2dlci53YXJuKCdbQXBwU3luY0NsaWVudF0gSGVhcnRiZWF0IGZhaWxlZCcsIHsgc2Vzc2lvbklkLCBlcnJvciB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2xlYW51cCBhbGwgc3Vic2NyaXB0aW9ucyBhbmQgaGVhcnRiZWF0c1xuICAgKi9cbiAgcHVibGljIGNsZWFudXBTdWJzY3JpcHRpb25zKCk6IHZvaWQge1xuICAgIHRoaXMuYWN0aXZlU3Vic2NyaXB0aW9ucy5mb3JFYWNoKChzdGF0ZSkgPT4ge1xuICAgICAgdGhpcy5jbGVhbnVwU3Vic2NyaXB0aW9uU3RhdGUoc3RhdGUpO1xuICAgIH0pO1xuICAgIHRoaXMuYWN0aXZlU3Vic2NyaXB0aW9ucy5jbGVhcigpO1xuXG4gICAgdGhpcy5oZWFydGJlYXRUaW1lcnMuZm9yRWFjaCgodGltZXIpID0+IGNsZWFySW50ZXJ2YWwodGltZXIpKTtcbiAgICB0aGlzLmhlYXJ0YmVhdFRpbWVycy5jbGVhcigpO1xuICB9XG59XG4iXX0=
|