From 1d854f6c8be89b3b3131340970cef91691efc563 Mon Sep 17 00:00:00 2001 From: lukasIO Date: Tue, 5 Dec 2023 17:23:53 +0100 Subject: [PATCH 01/11] Replace jsonwebtoken with jose (#115) * merge main * Cleanup & Lint * fix tests * fix dependencies * fix tests * update protobuf lib * move await * address comments * fix tests --------- Co-authored-by: Mohammad Rasim --- package.json | 12 +- pnpm-lock.yaml | 2556 +++++++++-------------------------- src/AccessToken.test.ts | 61 +- src/AccessToken.ts | 37 +- src/EgressClient.ts | 16 +- src/IngressClient.ts | 8 +- src/RoomServiceClient.ts | 22 +- src/ServiceBase.ts | 4 +- src/WebhookReceiver.test.ts | 7 +- src/WebhookReceiver.ts | 8 +- src/grants.ts | 4 +- 11 files changed, 767 insertions(+), 1968 deletions(-) diff --git a/package.json b/package.json index c2cfeda6..3f645cd1 100644 --- a/package.json +++ b/package.json @@ -21,26 +21,26 @@ "dependencies": { "axios": "^1.3.6", "camelcase-keys": "^7.0.0", - "jsonwebtoken": "^9.0.0", + "jose": "^5.1.2", "long": "^5.0.0", "protobufjs": "^7.2.4" }, "devDependencies": { - "@types/jest": "^26.0.20", - "@types/jsonwebtoken": "^9.0.0", + "@types/jest": "^29.5.10", + "@types/node": "^20.10.1", "@typescript-eslint/eslint-plugin": "^4.29.1", "eslint": "^7.32.0", "eslint-config-airbnb-typescript": "^12.3.1", "eslint-config-prettier": "^8.5.0", "eslint-plugin-import": "^2.24.0", - "jest": "^26.6.3", + "jest": "^29.7.0", "prettier": "^2.6.2", - "ts-jest": "^26.4.4", + "ts-jest": "^29.1.1", "ts-loader": "^8.0.11", "ts-node": "^9.1.1", "ts-proto": "^1.131.0", "typedoc": "^0.22.13", - "typescript": "4.2.x", + "typescript": "4.3.x", "webpack": "^5.9.0", "webpack-cli": "^4.2.0" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a18eb75b..0c1950c6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -11,9 +11,9 @@ dependencies: camelcase-keys: specifier: ^7.0.0 version: 7.0.2 - jsonwebtoken: - specifier: ^9.0.0 - version: 9.0.2 + jose: + specifier: ^5.1.2 + version: 5.1.2 long: specifier: ^5.0.0 version: 5.2.3 @@ -23,20 +23,20 @@ dependencies: devDependencies: '@types/jest': - specifier: ^26.0.20 - version: 26.0.24 - '@types/jsonwebtoken': - specifier: ^9.0.0 - version: 9.0.5 + specifier: ^29.5.10 + version: 29.5.10 + '@types/node': + specifier: ^20.10.1 + version: 20.10.1 '@typescript-eslint/eslint-plugin': specifier: ^4.29.1 - version: 4.33.0(@typescript-eslint/parser@4.33.0)(eslint@7.32.0)(typescript@4.2.4) + version: 4.33.0(@typescript-eslint/parser@4.33.0)(eslint@7.32.0)(typescript@4.3.5) eslint: specifier: ^7.32.0 version: 7.32.0 eslint-config-airbnb-typescript: specifier: ^12.3.1 - version: 12.3.1(eslint-plugin-import@2.29.0)(eslint-plugin-jsx-a11y@6.8.0)(eslint-plugin-react-hooks@4.6.0)(eslint-plugin-react@7.33.2)(eslint@7.32.0)(typescript@4.2.4) + version: 12.3.1(eslint-plugin-import@2.29.0)(eslint-plugin-jsx-a11y@6.8.0)(eslint-plugin-react-hooks@4.6.0)(eslint-plugin-react@7.33.2)(eslint@7.32.0)(typescript@4.3.5) eslint-config-prettier: specifier: ^8.5.0 version: 8.10.0(eslint@7.32.0) @@ -44,29 +44,29 @@ devDependencies: specifier: ^2.24.0 version: 2.29.0(@typescript-eslint/parser@4.33.0)(eslint@7.32.0) jest: - specifier: ^26.6.3 - version: 26.6.3(ts-node@9.1.1) + specifier: ^29.7.0 + version: 29.7.0(@types/node@20.10.1)(ts-node@9.1.1) prettier: specifier: ^2.6.2 version: 2.8.8 ts-jest: - specifier: ^26.4.4 - version: 26.5.6(jest@26.6.3)(typescript@4.2.4) + specifier: ^29.1.1 + version: 29.1.1(@babel/core@7.23.3)(jest@29.7.0)(typescript@4.3.5) ts-loader: specifier: ^8.0.11 - version: 8.4.0(typescript@4.2.4)(webpack@5.89.0) + version: 8.4.0(typescript@4.3.5)(webpack@5.89.0) ts-node: specifier: ^9.1.1 - version: 9.1.1(typescript@4.2.4) + version: 9.1.1(typescript@4.3.5) ts-proto: specifier: ^1.131.0 version: 1.164.0 typedoc: specifier: ^0.22.13 - version: 0.22.18(typescript@4.2.4) + version: 0.22.18(typescript@4.3.5) typescript: - specifier: 4.2.x - version: 4.2.4 + specifier: 4.3.x + version: 4.3.5 webpack: specifier: ^5.9.0 version: 5.89.0(webpack-cli@4.10.0) @@ -300,6 +300,16 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true + /@babel/plugin-syntax-jsx@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.3 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.23.3): resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: @@ -364,6 +374,16 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true + /@babel/plugin-syntax-typescript@7.23.3(@babel/core@7.23.3): + resolution: {integrity: sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.3 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/runtime@7.23.2: resolution: {integrity: sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==} engines: {node: '>=6.9.0'} @@ -411,15 +431,6 @@ packages: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} dev: true - /@cnakazawa/watch@1.0.4: - resolution: {integrity: sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==} - engines: {node: '>=0.1.95'} - hasBin: true - dependencies: - exec-sh: 0.3.6 - minimist: 1.2.8 - dev: true - /@discoveryjs/json-ext@0.5.7: resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==} engines: {node: '>=10.0.0'} @@ -473,190 +484,217 @@ packages: engines: {node: '>=8'} dev: true - /@jest/console@26.6.2: - resolution: {integrity: sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g==} - engines: {node: '>= 10.14.2'} + /@jest/console@29.7.0: + resolution: {integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 26.6.2 - '@types/node': 20.9.0 + '@jest/types': 29.6.3 + '@types/node': 20.10.1 chalk: 4.1.2 - jest-message-util: 26.6.2 - jest-util: 26.6.2 + jest-message-util: 29.7.0 + jest-util: 29.7.0 slash: 3.0.0 dev: true - /@jest/core@26.6.3(ts-node@9.1.1): - resolution: {integrity: sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw==} - engines: {node: '>= 10.14.2'} + /@jest/core@29.7.0(ts-node@9.1.1): + resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true dependencies: - '@jest/console': 26.6.2 - '@jest/reporters': 26.6.2 - '@jest/test-result': 26.6.2 - '@jest/transform': 26.6.2 - '@jest/types': 26.6.2 - '@types/node': 20.9.0 + '@jest/console': 29.7.0 + '@jest/reporters': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.10.1 ansi-escapes: 4.3.2 chalk: 4.1.2 + ci-info: 3.9.0 exit: 0.1.2 graceful-fs: 4.2.11 - jest-changed-files: 26.6.2 - jest-config: 26.6.3(ts-node@9.1.1) - jest-haste-map: 26.6.2 - jest-message-util: 26.6.2 - jest-regex-util: 26.0.0 - jest-resolve: 26.6.2 - jest-resolve-dependencies: 26.6.3 - jest-runner: 26.6.3(ts-node@9.1.1) - jest-runtime: 26.6.3(ts-node@9.1.1) - jest-snapshot: 26.6.2 - jest-util: 26.6.2 - jest-validate: 26.6.2 - jest-watcher: 26.6.2 + jest-changed-files: 29.7.0 + jest-config: 29.7.0(@types/node@20.10.1)(ts-node@9.1.1) + jest-haste-map: 29.7.0 + jest-message-util: 29.7.0 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-resolve-dependencies: 29.7.0 + jest-runner: 29.7.0 + jest-runtime: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + jest-watcher: 29.7.0 micromatch: 4.0.5 - p-each-series: 2.2.0 - rimraf: 3.0.2 + pretty-format: 29.7.0 slash: 3.0.0 strip-ansi: 6.0.1 transitivePeerDependencies: - - bufferutil - - canvas + - babel-plugin-macros - supports-color - ts-node - - utf-8-validate dev: true - /@jest/environment@26.6.2: - resolution: {integrity: sha512-nFy+fHl28zUrRsCeMB61VDThV1pVTtlEokBRgqPrcT1JNq4yRNIyTHfyht6PqtUvY9IsuLGTrbG8kPXjSZIZwA==} - engines: {node: '>= 10.14.2'} + /@jest/environment@29.7.0: + resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.10.1 + jest-mock: 29.7.0 + dev: true + + /@jest/expect-utils@29.7.0: + resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/fake-timers': 26.6.2 - '@jest/types': 26.6.2 - '@types/node': 20.9.0 - jest-mock: 26.6.2 + jest-get-type: 29.6.3 + dev: true + + /@jest/expect@29.7.0: + resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + expect: 29.7.0 + jest-snapshot: 29.7.0 + transitivePeerDependencies: + - supports-color dev: true - /@jest/fake-timers@26.6.2: - resolution: {integrity: sha512-14Uleatt7jdzefLPYM3KLcnUl1ZNikaKq34enpb5XG9i81JpppDb5muZvonvKyrl7ftEHkKS5L5/eB/kxJ+bvA==} - engines: {node: '>= 10.14.2'} + /@jest/fake-timers@29.7.0: + resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 26.6.2 - '@sinonjs/fake-timers': 6.0.1 - '@types/node': 20.9.0 - jest-message-util: 26.6.2 - jest-mock: 26.6.2 - jest-util: 26.6.2 + '@jest/types': 29.6.3 + '@sinonjs/fake-timers': 10.3.0 + '@types/node': 20.10.1 + jest-message-util: 29.7.0 + jest-mock: 29.7.0 + jest-util: 29.7.0 dev: true - /@jest/globals@26.6.2: - resolution: {integrity: sha512-85Ltnm7HlB/KesBUuALwQ68YTU72w9H2xW9FjZ1eL1U3lhtefjjl5c2MiUbpXt/i6LaPRvoOFJ22yCBSfQ0JIA==} - engines: {node: '>= 10.14.2'} + /@jest/globals@29.7.0: + resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/environment': 26.6.2 - '@jest/types': 26.6.2 - expect: 26.6.2 + '@jest/environment': 29.7.0 + '@jest/expect': 29.7.0 + '@jest/types': 29.6.3 + jest-mock: 29.7.0 + transitivePeerDependencies: + - supports-color dev: true - /@jest/reporters@26.6.2: - resolution: {integrity: sha512-h2bW53APG4HvkOnVMo8q3QXa6pcaNt1HkwVsOPMBV6LD/q9oSpxNSYZQYkAnjdMjrJ86UuYeLo+aEZClV6opnw==} - engines: {node: '>= 10.14.2'} + /@jest/reporters@29.7.0: + resolution: {integrity: sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true dependencies: '@bcoe/v8-coverage': 0.2.3 - '@jest/console': 26.6.2 - '@jest/test-result': 26.6.2 - '@jest/transform': 26.6.2 - '@jest/types': 26.6.2 + '@jest/console': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@jridgewell/trace-mapping': 0.3.20 + '@types/node': 20.10.1 chalk: 4.1.2 collect-v8-coverage: 1.0.2 exit: 0.1.2 glob: 7.2.3 graceful-fs: 4.2.11 istanbul-lib-coverage: 3.2.2 - istanbul-lib-instrument: 4.0.3 + istanbul-lib-instrument: 6.0.1 istanbul-lib-report: 3.0.1 istanbul-lib-source-maps: 4.0.1 istanbul-reports: 3.1.6 - jest-haste-map: 26.6.2 - jest-resolve: 26.6.2 - jest-util: 26.6.2 - jest-worker: 26.6.2 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + jest-worker: 29.7.0 slash: 3.0.0 - source-map: 0.6.1 string-length: 4.0.2 - terminal-link: 2.1.1 - v8-to-istanbul: 7.1.2 - optionalDependencies: - node-notifier: 8.0.2 + strip-ansi: 6.0.1 + v8-to-istanbul: 9.2.0 transitivePeerDependencies: - supports-color dev: true - /@jest/source-map@26.6.2: - resolution: {integrity: sha512-YwYcCwAnNmOVsZ8mr3GfnzdXDAl4LaenZP5z+G0c8bzC9/dugL8zRmxZzdoTl4IaS3CryS1uWnROLPFmb6lVvA==} - engines: {node: '>= 10.14.2'} + /@jest/schemas@29.6.3: + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@sinclair/typebox': 0.27.8 + dev: true + + /@jest/source-map@29.6.3: + resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: + '@jridgewell/trace-mapping': 0.3.20 callsites: 3.1.0 graceful-fs: 4.2.11 - source-map: 0.6.1 dev: true - /@jest/test-result@26.6.2: - resolution: {integrity: sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ==} - engines: {node: '>= 10.14.2'} + /@jest/test-result@29.7.0: + resolution: {integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/console': 26.6.2 - '@jest/types': 26.6.2 + '@jest/console': 29.7.0 + '@jest/types': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 collect-v8-coverage: 1.0.2 dev: true - /@jest/test-sequencer@26.6.3(ts-node@9.1.1): - resolution: {integrity: sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw==} - engines: {node: '>= 10.14.2'} + /@jest/test-sequencer@29.7.0: + resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/test-result': 26.6.2 + '@jest/test-result': 29.7.0 graceful-fs: 4.2.11 - jest-haste-map: 26.6.2 - jest-runner: 26.6.3(ts-node@9.1.1) - jest-runtime: 26.6.3(ts-node@9.1.1) - transitivePeerDependencies: - - bufferutil - - canvas - - supports-color - - ts-node - - utf-8-validate + jest-haste-map: 29.7.0 + slash: 3.0.0 dev: true - /@jest/transform@26.6.2: - resolution: {integrity: sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA==} - engines: {node: '>= 10.14.2'} + /@jest/transform@29.7.0: + resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@babel/core': 7.23.3 - '@jest/types': 26.6.2 + '@jest/types': 29.6.3 + '@jridgewell/trace-mapping': 0.3.20 babel-plugin-istanbul: 6.1.1 chalk: 4.1.2 - convert-source-map: 1.9.0 + convert-source-map: 2.0.0 fast-json-stable-stringify: 2.1.0 graceful-fs: 4.2.11 - jest-haste-map: 26.6.2 - jest-regex-util: 26.0.0 - jest-util: 26.6.2 + jest-haste-map: 29.7.0 + jest-regex-util: 29.6.3 + jest-util: 29.7.0 micromatch: 4.0.5 pirates: 4.0.6 slash: 3.0.0 - source-map: 0.6.1 - write-file-atomic: 3.0.3 + write-file-atomic: 4.0.2 transitivePeerDependencies: - supports-color dev: true - /@jest/types@26.6.2: - resolution: {integrity: sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==} - engines: {node: '>= 10.14.2'} + /@jest/types@29.6.3: + resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: + '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 20.9.0 - '@types/yargs': 15.0.18 + '@types/node': 20.10.1 + '@types/yargs': 17.0.32 chalk: 4.1.2 dev: true @@ -751,21 +789,20 @@ packages: /@protobufjs/utf8@1.1.0: resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} - /@sinonjs/commons@1.8.6: - resolution: {integrity: sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==} - dependencies: - type-detect: 4.0.8 + /@sinclair/typebox@0.27.8: + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} dev: true - /@sinonjs/fake-timers@6.0.1: - resolution: {integrity: sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA==} + /@sinonjs/commons@3.0.0: + resolution: {integrity: sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==} dependencies: - '@sinonjs/commons': 1.8.6 + type-detect: 4.0.8 dev: true - /@tootallnate/once@1.1.2: - resolution: {integrity: sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==} - engines: {node: '>= 6'} + /@sinonjs/fake-timers@10.3.0: + resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} + dependencies: + '@sinonjs/commons': 3.0.0 dev: true /@types/babel__core@7.20.4: @@ -818,7 +855,7 @@ packages: /@types/graceful-fs@4.1.9: resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} dependencies: - '@types/node': 20.9.0 + '@types/node': 20.10.1 dev: true /@types/istanbul-lib-coverage@2.0.6: @@ -837,11 +874,11 @@ packages: '@types/istanbul-lib-report': 3.0.3 dev: true - /@types/jest@26.0.24: - resolution: {integrity: sha512-E/X5Vib8BWqZNRlDxj9vYXhsDwPYbPINqKF9BsnSoon4RQ0D9moEuLD8txgyypFLH7J4+Lho9Nr/c8H0Fi+17w==} + /@types/jest@29.5.10: + resolution: {integrity: sha512-tE4yxKEphEyxj9s4inideLHktW/x6DwesIwWZ9NN1FKf9zbJYsnhBoA9vrHA/IuIOKwPa5PcFBNV4lpMIOEzyQ==} dependencies: - jest-diff: 26.6.2 - pretty-format: 26.6.2 + expect: 29.7.0 + pretty-format: 29.7.0 dev: true /@types/json-schema@7.0.15: @@ -852,25 +889,11 @@ packages: resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} dev: true - /@types/jsonwebtoken@9.0.5: - resolution: {integrity: sha512-VRLSGzik+Unrup6BsouBeHsf4d1hOEgYWTm/7Nmw1sXoN1+tRly/Gy/po3yeahnP4jfnQWWAhQAqcNfH7ngOkA==} - dependencies: - '@types/node': 20.9.0 - dev: true - - /@types/node@20.9.0: - resolution: {integrity: sha512-nekiGu2NDb1BcVofVcEKMIwzlx4NjHlcjhoxxKBNLtz15Y1z7MYf549DFvkHSId02Ax6kGwWntIBPC3l/JZcmw==} + /@types/node@20.10.1: + resolution: {integrity: sha512-T2qwhjWwGH81vUEx4EXmBKsTJRXFXNZTL4v0gi01+zyBmCwzE6TyHszqX01m+QHTEq+EZNo13NeJIdEqf+Myrg==} dependencies: undici-types: 5.26.5 - /@types/normalize-package-data@2.4.4: - resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} - dev: true - - /@types/prettier@2.7.3: - resolution: {integrity: sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==} - dev: true - /@types/stack-utils@2.0.3: resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} dev: true @@ -879,13 +902,13 @@ packages: resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} dev: true - /@types/yargs@15.0.18: - resolution: {integrity: sha512-DDi2KmvAnNsT/EvU8jp1UR7pOJojBtJ3GLZ/uw1MUq4VbbESppPWoHUY4h0OB4BbEbGJiyEsmUcuZDZtoR+ZwQ==} + /@types/yargs@17.0.32: + resolution: {integrity: sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==} dependencies: '@types/yargs-parser': 21.0.3 dev: true - /@typescript-eslint/eslint-plugin@4.33.0(@typescript-eslint/parser@4.33.0)(eslint@7.32.0)(typescript@4.2.4): + /@typescript-eslint/eslint-plugin@4.33.0(@typescript-eslint/parser@4.33.0)(eslint@7.32.0)(typescript@4.3.5): resolution: {integrity: sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==} engines: {node: ^10.12.0 || >=12.0.0} peerDependencies: @@ -896,8 +919,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/experimental-utils': 4.33.0(eslint@7.32.0)(typescript@4.2.4) - '@typescript-eslint/parser': 4.33.0(eslint@7.32.0)(typescript@4.2.4) + '@typescript-eslint/experimental-utils': 4.33.0(eslint@7.32.0)(typescript@4.3.5) + '@typescript-eslint/parser': 4.33.0(eslint@7.32.0)(typescript@4.3.5) '@typescript-eslint/scope-manager': 4.33.0 debug: 4.3.4 eslint: 7.32.0 @@ -905,13 +928,13 @@ packages: ignore: 5.2.4 regexpp: 3.2.0 semver: 7.5.4 - tsutils: 3.21.0(typescript@4.2.4) - typescript: 4.2.4 + tsutils: 3.21.0(typescript@4.3.5) + typescript: 4.3.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/experimental-utils@4.33.0(eslint@7.32.0)(typescript@4.2.4): + /@typescript-eslint/experimental-utils@4.33.0(eslint@7.32.0)(typescript@4.3.5): resolution: {integrity: sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==} engines: {node: ^10.12.0 || >=12.0.0} peerDependencies: @@ -920,7 +943,7 @@ packages: '@types/json-schema': 7.0.15 '@typescript-eslint/scope-manager': 4.33.0 '@typescript-eslint/types': 4.33.0 - '@typescript-eslint/typescript-estree': 4.33.0(typescript@4.2.4) + '@typescript-eslint/typescript-estree': 4.33.0(typescript@4.3.5) eslint: 7.32.0 eslint-scope: 5.1.1 eslint-utils: 3.0.0(eslint@7.32.0) @@ -929,7 +952,7 @@ packages: - typescript dev: true - /@typescript-eslint/parser@4.33.0(eslint@7.32.0)(typescript@4.2.4): + /@typescript-eslint/parser@4.33.0(eslint@7.32.0)(typescript@4.3.5): resolution: {integrity: sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==} engines: {node: ^10.12.0 || >=12.0.0} peerDependencies: @@ -941,10 +964,10 @@ packages: dependencies: '@typescript-eslint/scope-manager': 4.33.0 '@typescript-eslint/types': 4.33.0 - '@typescript-eslint/typescript-estree': 4.33.0(typescript@4.2.4) + '@typescript-eslint/typescript-estree': 4.33.0(typescript@4.3.5) debug: 4.3.4 eslint: 7.32.0 - typescript: 4.2.4 + typescript: 4.3.5 transitivePeerDependencies: - supports-color dev: true @@ -962,7 +985,7 @@ packages: engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} dev: true - /@typescript-eslint/typescript-estree@4.33.0(typescript@4.2.4): + /@typescript-eslint/typescript-estree@4.33.0(typescript@4.3.5): resolution: {integrity: sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==} engines: {node: ^10.12.0 || >=12.0.0} peerDependencies: @@ -977,8 +1000,8 @@ packages: globby: 11.1.0 is-glob: 4.0.3 semver: 7.5.4 - tsutils: 3.21.0(typescript@4.2.4) - typescript: 4.2.4 + tsutils: 3.21.0(typescript@4.3.5) + typescript: 4.3.5 transitivePeerDependencies: - supports-color dev: true @@ -1136,17 +1159,6 @@ packages: resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} dev: true - /abab@2.0.6: - resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} - dev: true - - /acorn-globals@6.0.0: - resolution: {integrity: sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==} - dependencies: - acorn: 7.4.1 - acorn-walk: 7.2.0 - dev: true - /acorn-import-assertions@1.9.0(acorn@8.11.2): resolution: {integrity: sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==} peerDependencies: @@ -1163,11 +1175,6 @@ packages: acorn: 7.4.1 dev: true - /acorn-walk@7.2.0: - resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==} - engines: {node: '>=0.4.0'} - dev: true - /acorn@7.4.1: resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} engines: {node: '>=0.4.0'} @@ -1180,15 +1187,6 @@ packages: hasBin: true dev: true - /agent-base@6.0.2: - resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} - engines: {node: '>= 6.0.0'} - dependencies: - debug: 4.3.4 - transitivePeerDependencies: - - supports-color - dev: true - /ajv-keywords@3.5.2(ajv@6.12.6): resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} peerDependencies: @@ -1246,13 +1244,9 @@ packages: color-convert: 2.0.1 dev: true - /anymatch@2.0.0: - resolution: {integrity: sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==} - dependencies: - micromatch: 3.1.10 - normalize-path: 2.1.1 - transitivePeerDependencies: - - supports-color + /ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} dev: true /anymatch@3.1.3: @@ -1279,21 +1273,6 @@ packages: dequal: 2.0.3 dev: true - /arr-diff@4.0.0: - resolution: {integrity: sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==} - engines: {node: '>=0.10.0'} - dev: true - - /arr-flatten@1.1.0: - resolution: {integrity: sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==} - engines: {node: '>=0.10.0'} - dev: true - - /arr-union@3.1.0: - resolution: {integrity: sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==} - engines: {node: '>=0.10.0'} - dev: true - /array-buffer-byte-length@1.0.0: resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} dependencies: @@ -1317,11 +1296,6 @@ packages: engines: {node: '>=8'} dev: true - /array-unique@0.3.2: - resolution: {integrity: sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==} - engines: {node: '>=0.10.0'} - dev: true - /array.prototype.findlastindex@1.2.3: resolution: {integrity: sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==} engines: {node: '>= 0.4'} @@ -1376,11 +1350,6 @@ packages: is-shared-array-buffer: 1.0.2 dev: true - /assign-symbols@1.0.0: - resolution: {integrity: sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==} - engines: {node: '>=0.10.0'} - dev: true - /ast-types-flow@0.0.8: resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} dev: true @@ -1398,12 +1367,7 @@ packages: /asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - - /atob@2.1.2: - resolution: {integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==} - engines: {node: '>= 4.5.0'} - hasBin: true - dev: true + dev: false /available-typed-arrays@1.0.5: resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} @@ -1431,18 +1395,17 @@ packages: dequal: 2.0.3 dev: true - /babel-jest@26.6.3(@babel/core@7.23.3): - resolution: {integrity: sha512-pl4Q+GAVOHwvjrck6jKjvmGhnO3jHX/xuB9d27f+EJZ/6k+6nMuPjorrYp7s++bKKdANwzElBWnLWaObvTnaZA==} - engines: {node: '>= 10.14.2'} + /babel-jest@29.7.0(@babel/core@7.23.3): + resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: - '@babel/core': ^7.0.0 + '@babel/core': ^7.8.0 dependencies: '@babel/core': 7.23.3 - '@jest/transform': 26.6.2 - '@jest/types': 26.6.2 + '@jest/transform': 29.7.0 '@types/babel__core': 7.20.4 babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 26.6.2(@babel/core@7.23.3) + babel-preset-jest: 29.6.3(@babel/core@7.23.3) chalk: 4.1.2 graceful-fs: 4.2.11 slash: 3.0.0 @@ -1463,9 +1426,9 @@ packages: - supports-color dev: true - /babel-plugin-jest-hoist@26.6.2: - resolution: {integrity: sha512-PO9t0697lNTmcEHH69mdtYiOIkkOlj9fySqfO3K1eCcdISevLAE0xY59VLLUj0SoiPiTX/JU2CYFpILydUa5Lw==} - engines: {node: '>= 10.14.2'} + /babel-plugin-jest-hoist@29.6.3: + resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@babel/template': 7.22.15 '@babel/types': 7.23.3 @@ -1493,14 +1456,14 @@ packages: '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.23.3) dev: true - /babel-preset-jest@26.6.2(@babel/core@7.23.3): - resolution: {integrity: sha512-YvdtlVm9t3k777c5NPQIv6cxFFFapys25HiUmuSgHwIZhfifweR5c5Sf5nwE3MAbfu327CYSvps8Yx6ANLyleQ==} - engines: {node: '>= 10.14.2'} + /babel-preset-jest@29.6.3(@babel/core@7.23.3): + resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@babel/core': ^7.0.0 dependencies: '@babel/core': 7.23.3 - babel-plugin-jest-hoist: 26.6.2 + babel-plugin-jest-hoist: 29.6.3 babel-preset-current-node-syntax: 1.0.1(@babel/core@7.23.3) dev: true @@ -1508,19 +1471,6 @@ packages: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} dev: true - /base@0.11.2: - resolution: {integrity: sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==} - engines: {node: '>=0.10.0'} - dependencies: - cache-base: 1.0.1 - class-utils: 0.3.6 - component-emitter: 1.3.0 - define-property: 1.0.0 - isobject: 3.0.1 - mixin-deep: 1.3.2 - pascalcase: 0.1.1 - dev: true - /big.js@5.2.2: resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} dev: true @@ -1538,24 +1488,6 @@ packages: balanced-match: 1.0.2 dev: true - /braces@2.3.2: - resolution: {integrity: sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==} - engines: {node: '>=0.10.0'} - dependencies: - arr-flatten: 1.1.0 - array-unique: 0.3.2 - extend-shallow: 2.0.1 - fill-range: 4.0.0 - isobject: 3.0.1 - repeat-element: 1.1.4 - snapdragon: 0.8.2 - snapdragon-node: 2.1.1 - split-string: 3.1.0 - to-regex: 3.0.2 - transitivePeerDependencies: - - supports-color - dev: true - /braces@3.0.2: resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} engines: {node: '>=8'} @@ -1563,10 +1495,6 @@ packages: fill-range: 7.0.1 dev: true - /browser-process-hrtime@1.0.0: - resolution: {integrity: sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==} - dev: true - /browserslist@4.22.1: resolution: {integrity: sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} @@ -1591,29 +1519,10 @@ packages: node-int64: 0.4.0 dev: true - /buffer-equal-constant-time@1.0.1: - resolution: {integrity: sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=} - dev: false - /buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} dev: true - /cache-base@1.0.1: - resolution: {integrity: sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==} - engines: {node: '>=0.10.0'} - dependencies: - collection-visit: 1.0.0 - component-emitter: 1.3.0 - get-value: 2.0.6 - has-value: 1.0.0 - isobject: 3.0.1 - set-value: 2.0.1 - to-object-path: 0.3.0 - union-value: 1.0.1 - unset-value: 1.0.0 - dev: true - /call-bind@1.0.5: resolution: {integrity: sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==} dependencies: @@ -1650,13 +1559,6 @@ packages: resolution: {integrity: sha512-NTt0DNoKe958Q0BE0j0c1V9jbUzhBxHIEJy7asmGrpE0yG63KTV7PLHPnK2E1O9RsQrQ081I3NLuXGS6zht3cw==} dev: true - /capture-exit@2.0.0: - resolution: {integrity: sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==} - engines: {node: 6.* || 8.* || >= 10.*} - dependencies: - rsvp: 4.8.5 - dev: true - /case-anything@2.1.13: resolution: {integrity: sha512-zlOQ80VrQ2Ue+ymH5OuM/DlDq64mEm+B9UTdHULv5osUMD6HalNTblf2b1u/m6QecjsnOkBpqVZ+XPwIVsy7Ng==} engines: {node: '>=12.13'} @@ -1689,30 +1591,22 @@ packages: engines: {node: '>=6.0'} dev: true - /ci-info@2.0.0: - resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} - dev: true - - /cjs-module-lexer@0.6.0: - resolution: {integrity: sha512-uc2Vix1frTfnuzxxu1Hp4ktSvM3QaI4oXl4ZUqL1wjTu/BGki9TrCWoqLTg/drR1KwAEarXuRFCG2Svr1GxPFw==} + /ci-info@3.9.0: + resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} + engines: {node: '>=8'} dev: true - /class-utils@0.3.6: - resolution: {integrity: sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==} - engines: {node: '>=0.10.0'} - dependencies: - arr-union: 3.1.0 - define-property: 0.2.5 - isobject: 3.0.1 - static-extend: 0.1.2 + /cjs-module-lexer@1.2.3: + resolution: {integrity: sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==} dev: true - /cliui@6.0.0: - resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} + /cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} dependencies: string-width: 4.2.3 strip-ansi: 6.0.1 - wrap-ansi: 6.2.0 + wrap-ansi: 7.0.0 dev: true /clone-deep@4.0.1: @@ -1733,14 +1627,6 @@ packages: resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==} dev: true - /collection-visit@1.0.0: - resolution: {integrity: sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==} - engines: {node: '>=0.10.0'} - dependencies: - map-visit: 1.0.0 - object-visit: 1.0.1 - dev: true - /color-convert@1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} dependencies: @@ -1771,6 +1657,7 @@ packages: engines: {node: '>= 0.8'} dependencies: delayed-stream: 1.0.0 + dev: false /commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} @@ -1781,10 +1668,6 @@ packages: engines: {node: '>= 10'} dev: true - /component-emitter@1.3.0: - resolution: {integrity: sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==} - dev: true - /concat-map@0.0.1: resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} dev: true @@ -1793,36 +1676,35 @@ packages: resolution: {integrity: sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==} dev: true - /convert-source-map@1.9.0: - resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} - dev: true - /convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} dev: true - /copy-descriptor@0.1.1: - resolution: {integrity: sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==} - engines: {node: '>=0.10.0'} - dev: true - /core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} dev: true - /create-require@1.1.1: - resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} + /create-jest@29.7.0(@types/node@20.10.1)(ts-node@9.1.1): + resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + dependencies: + '@jest/types': 29.6.3 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-config: 29.7.0(@types/node@20.10.1)(ts-node@9.1.1) + jest-util: 29.7.0 + prompts: 2.4.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node dev: true - /cross-spawn@6.0.5: - resolution: {integrity: sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==} - engines: {node: '>=4.8'} - dependencies: - nice-try: 1.0.5 - path-key: 2.0.1 - semver: 5.7.2 - shebang-command: 1.2.0 - which: 1.3.1 + /create-require@1.1.1: + resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} dev: true /cross-spawn@7.0.3: @@ -1834,45 +1716,10 @@ packages: which: 2.0.2 dev: true - /cssom@0.3.8: - resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} - dev: true - - /cssom@0.4.4: - resolution: {integrity: sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==} - dev: true - - /cssstyle@2.3.0: - resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==} - engines: {node: '>=8'} - dependencies: - cssom: 0.3.8 - dev: true - /damerau-levenshtein@1.0.8: resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} dev: true - /data-urls@2.0.0: - resolution: {integrity: sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==} - engines: {node: '>=10'} - dependencies: - abab: 2.0.6 - whatwg-mimetype: 2.3.0 - whatwg-url: 8.7.0 - dev: true - - /debug@2.6.9: - resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.0.0 - dev: true - /debug@3.2.7: resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} peerDependencies: @@ -1896,18 +1743,13 @@ packages: ms: 2.1.2 dev: true - /decamelize@1.2.0: - resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} - engines: {node: '>=0.10.0'} - dev: true - - /decimal.js@10.4.3: - resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} - dev: true - - /decode-uri-component@0.2.2: - resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} - engines: {node: '>=0.10'} + /dedent@1.5.1: + resolution: {integrity: sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==} + peerDependencies: + babel-plugin-macros: ^3.1.0 + peerDependenciesMeta: + babel-plugin-macros: + optional: true dev: true /deep-is@0.1.4: @@ -1937,31 +1779,10 @@ packages: object-keys: 1.1.1 dev: true - /define-property@0.2.5: - resolution: {integrity: sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==} - engines: {node: '>=0.10.0'} - dependencies: - is-descriptor: 0.1.7 - dev: true - - /define-property@1.0.0: - resolution: {integrity: sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==} - engines: {node: '>=0.10.0'} - dependencies: - is-descriptor: 1.0.3 - dev: true - - /define-property@2.0.2: - resolution: {integrity: sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==} - engines: {node: '>=0.10.0'} - dependencies: - is-descriptor: 1.0.3 - isobject: 3.0.1 - dev: true - /delayed-stream@1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} + dev: false /dequal@2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} @@ -1979,9 +1800,9 @@ packages: engines: {node: '>=8'} dev: true - /diff-sequences@26.6.2: - resolution: {integrity: sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==} - engines: {node: '>= 10.14.2'} + /diff-sequences@29.6.3: + resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true /diff@4.0.2: @@ -2010,32 +1831,19 @@ packages: esutils: 2.0.3 dev: true - /domexception@2.0.1: - resolution: {integrity: sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==} - engines: {node: '>=8'} - dependencies: - webidl-conversions: 5.0.0 - dev: true - /dprint-node@1.0.8: resolution: {integrity: sha512-iVKnUtYfGrYcW1ZAlfR/F59cUVL8QIhWoBJoSjkkdua/dkWIgjZfiLMeTjiB06X0ZLkQ0M2C1VbUj/CxkIf1zg==} dependencies: detect-libc: 1.0.3 dev: true - /ecdsa-sig-formatter@1.0.11: - resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} - dependencies: - safe-buffer: 5.2.1 - dev: false - /electron-to-chromium@1.4.580: resolution: {integrity: sha512-T5q3pjQon853xxxHUq3ZP68ZpvJHuSMY2+BZaW3QzjS4HvNuvsMmZ/+lU+nCrftre1jFZ+OSlExynXWBihnXzw==} dev: true - /emittery@0.7.2: - resolution: {integrity: sha512-A8OG5SR/ij3SsJdWDJdkkSYUjQdCUx6APQXem0SaEePBSRg4eymGYwBkKo1Y6DU+af/Jn2dBQqDBvjnr9Vi8nQ==} - engines: {node: '>=10'} + /emittery@0.13.1: + resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} + engines: {node: '>=12'} dev: true /emoji-regex@8.0.0: @@ -2051,12 +1859,6 @@ packages: engines: {node: '>= 4'} dev: true - /end-of-stream@1.4.4: - resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} - dependencies: - once: 1.4.0 - dev: true - /enhanced-resolve@4.5.0: resolution: {integrity: sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==} engines: {node: '>=6.9.0'} @@ -2213,18 +2015,6 @@ packages: engines: {node: '>=10'} dev: true - /escodegen@2.1.0: - resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} - engines: {node: '>=6.0'} - hasBin: true - dependencies: - esprima: 4.0.1 - estraverse: 5.3.0 - esutils: 2.0.3 - optionalDependencies: - source-map: 0.6.1 - dev: true - /eslint-config-airbnb-base@14.2.1(eslint-plugin-import@2.29.0)(eslint@7.32.0): resolution: {integrity: sha512-GOrQyDtVEc1Xy20U7vsB2yAoB4nBlfH5HZJeatRXHleO+OS5Ot+MWij4Dpltw4/DyIkqUfqz1epfhVR5XWWQPA==} engines: {node: '>= 6'} @@ -2239,10 +2029,10 @@ packages: object.entries: 1.1.7 dev: true - /eslint-config-airbnb-typescript@12.3.1(eslint-plugin-import@2.29.0)(eslint-plugin-jsx-a11y@6.8.0)(eslint-plugin-react-hooks@4.6.0)(eslint-plugin-react@7.33.2)(eslint@7.32.0)(typescript@4.2.4): + /eslint-config-airbnb-typescript@12.3.1(eslint-plugin-import@2.29.0)(eslint-plugin-jsx-a11y@6.8.0)(eslint-plugin-react-hooks@4.6.0)(eslint-plugin-react@7.33.2)(eslint@7.32.0)(typescript@4.3.5): resolution: {integrity: sha512-ql/Pe6/hppYuRp4m3iPaHJqkBB7dgeEmGPQ6X0UNmrQOfTF+dXw29/ZjU2kQ6RDoLxaxOA+Xqv07Vbef6oVTWw==} dependencies: - '@typescript-eslint/parser': 4.33.0(eslint@7.32.0)(typescript@4.2.4) + '@typescript-eslint/parser': 4.33.0(eslint@7.32.0)(typescript@4.3.5) eslint-config-airbnb: 18.2.1(eslint-plugin-import@2.29.0)(eslint-plugin-jsx-a11y@6.8.0)(eslint-plugin-react-hooks@4.6.0)(eslint-plugin-react@7.33.2)(eslint@7.32.0) eslint-config-airbnb-base: 14.2.1(eslint-plugin-import@2.29.0)(eslint@7.32.0) transitivePeerDependencies: @@ -2315,7 +2105,7 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 4.33.0(eslint@7.32.0)(typescript@4.2.4) + '@typescript-eslint/parser': 4.33.0(eslint@7.32.0)(typescript@4.3.5) debug: 3.2.7 eslint: 7.32.0 eslint-import-resolver-node: 0.3.9 @@ -2333,7 +2123,7 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 4.33.0(eslint@7.32.0)(typescript@4.2.4) + '@typescript-eslint/parser': 4.33.0(eslint@7.32.0)(typescript@4.3.5) array-includes: 3.1.7 array.prototype.findlastindex: 1.2.3 array.prototype.flat: 1.3.2 @@ -2550,30 +2340,13 @@ packages: engines: {node: '>=0.8.x'} dev: true - /exec-sh@0.3.6: - resolution: {integrity: sha512-nQn+hI3yp+oD0huYhKwvYI32+JFeq+XkNcD1GAo3Y/MjxsfVGmrrzrnzjWiNY6f+pUCP440fThsFh5gZrRAU/w==} - dev: true - - /execa@1.0.0: - resolution: {integrity: sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==} - engines: {node: '>=6'} - dependencies: - cross-spawn: 6.0.5 - get-stream: 4.1.0 - is-stream: 1.1.0 - npm-run-path: 2.0.2 - p-finally: 1.0.0 - signal-exit: 3.0.7 - strip-eof: 1.0.0 - dev: true - - /execa@4.1.0: - resolution: {integrity: sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==} + /execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} engines: {node: '>=10'} dependencies: cross-spawn: 7.0.3 - get-stream: 5.2.0 - human-signals: 1.1.1 + get-stream: 6.0.1 + human-signals: 2.1.0 is-stream: 2.0.1 merge-stream: 2.0.0 npm-run-path: 4.0.1 @@ -2587,77 +2360,30 @@ packages: engines: {node: '>= 0.8.0'} dev: true - /expand-brackets@2.1.4: - resolution: {integrity: sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==} - engines: {node: '>=0.10.0'} + /expect@29.7.0: + resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - debug: 2.6.9 - define-property: 0.2.5 - extend-shallow: 2.0.1 - posix-character-classes: 0.1.1 - regex-not: 1.0.2 - snapdragon: 0.8.2 - to-regex: 3.0.2 - transitivePeerDependencies: - - supports-color + '@jest/expect-utils': 29.7.0 + jest-get-type: 29.6.3 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-util: 29.7.0 dev: true - /expect@26.6.2: - resolution: {integrity: sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA==} - engines: {node: '>= 10.14.2'} - dependencies: - '@jest/types': 26.6.2 - ansi-styles: 4.3.0 - jest-get-type: 26.3.0 - jest-matcher-utils: 26.6.2 - jest-message-util: 26.6.2 - jest-regex-util: 26.0.0 + /fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} dev: true - /extend-shallow@2.0.1: - resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} - engines: {node: '>=0.10.0'} + /fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + engines: {node: '>=8.6.0'} dependencies: - is-extendable: 0.1.1 - dev: true - - /extend-shallow@3.0.2: - resolution: {integrity: sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==} - engines: {node: '>=0.10.0'} - dependencies: - assign-symbols: 1.0.0 - is-extendable: 1.0.1 - dev: true - - /extglob@2.0.4: - resolution: {integrity: sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==} - engines: {node: '>=0.10.0'} - dependencies: - array-unique: 0.3.2 - define-property: 1.0.0 - expand-brackets: 2.1.4 - extend-shallow: 2.0.1 - fragment-cache: 0.2.1 - regex-not: 1.0.2 - snapdragon: 0.8.2 - to-regex: 3.0.2 - transitivePeerDependencies: - - supports-color - dev: true - - /fast-deep-equal@3.1.3: - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - dev: true - - /fast-glob@3.3.2: - resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} - engines: {node: '>=8.6.0'} - dependencies: - '@nodelib/fs.stat': 2.0.5 - '@nodelib/fs.walk': 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.5 + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.5 dev: true /fast-json-stable-stringify@2.1.0: @@ -2692,16 +2418,6 @@ packages: flat-cache: 3.1.1 dev: true - /fill-range@4.0.0: - resolution: {integrity: sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==} - engines: {node: '>=0.10.0'} - dependencies: - extend-shallow: 2.0.1 - is-number: 3.0.0 - repeat-string: 1.6.1 - to-regex-range: 2.1.1 - dev: true - /fill-range@7.0.1: resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} engines: {node: '>=8'} @@ -2751,20 +2467,6 @@ packages: is-callable: 1.2.7 dev: true - /for-in@1.0.2: - resolution: {integrity: sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==} - engines: {node: '>=0.10.0'} - dev: true - - /form-data@3.0.1: - resolution: {integrity: sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==} - engines: {node: '>= 6'} - dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - mime-types: 2.1.35 - dev: true - /form-data@4.0.0: resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} engines: {node: '>= 6'} @@ -2774,13 +2476,6 @@ packages: mime-types: 2.1.35 dev: false - /fragment-cache@0.2.1: - resolution: {integrity: sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==} - engines: {node: '>=0.10.0'} - dependencies: - map-cache: 0.2.2 - dev: true - /fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} dev: true @@ -2839,18 +2534,9 @@ packages: engines: {node: '>=8.0.0'} dev: true - /get-stream@4.1.0: - resolution: {integrity: sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==} - engines: {node: '>=6'} - dependencies: - pump: 3.0.0 - dev: true - - /get-stream@5.2.0: - resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} - engines: {node: '>=8'} - dependencies: - pump: 3.0.0 + /get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} dev: true /get-symbol-description@1.0.0: @@ -2861,11 +2547,6 @@ packages: get-intrinsic: 1.2.2 dev: true - /get-value@2.0.6: - resolution: {integrity: sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==} - engines: {node: '>=0.10.0'} - dev: true - /glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} @@ -2940,12 +2621,6 @@ packages: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} dev: true - /growly@1.3.0: - resolution: {integrity: sha512-+xGQY0YyAWCnqy7Cd++hc2JqMYzlm0dG30Jd0beaA64sROr8C4nt8Yc9V5Ro3avlSUDTN0ulqP/VBKi1/lLygw==} - requiresBuild: true - dev: true - optional: true - /has-bigints@1.0.2: resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} dev: true @@ -2983,37 +2658,6 @@ packages: has-symbols: 1.0.3 dev: true - /has-value@0.3.1: - resolution: {integrity: sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==} - engines: {node: '>=0.10.0'} - dependencies: - get-value: 2.0.6 - has-values: 0.1.4 - isobject: 2.1.0 - dev: true - - /has-value@1.0.0: - resolution: {integrity: sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==} - engines: {node: '>=0.10.0'} - dependencies: - get-value: 2.0.6 - has-values: 1.0.0 - isobject: 3.0.1 - dev: true - - /has-values@0.1.4: - resolution: {integrity: sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==} - engines: {node: '>=0.10.0'} - dev: true - - /has-values@1.0.0: - resolution: {integrity: sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==} - engines: {node: '>=0.10.0'} - dependencies: - is-number: 3.0.0 - kind-of: 4.0.0 - dev: true - /hasown@2.0.0: resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==} engines: {node: '>= 0.4'} @@ -3021,52 +2665,13 @@ packages: function-bind: 1.1.2 dev: true - /hosted-git-info@2.8.9: - resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} - dev: true - - /html-encoding-sniffer@2.0.1: - resolution: {integrity: sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==} - engines: {node: '>=10'} - dependencies: - whatwg-encoding: 1.0.5 - dev: true - /html-escaper@2.0.2: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} dev: true - /http-proxy-agent@4.0.1: - resolution: {integrity: sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==} - engines: {node: '>= 6'} - dependencies: - '@tootallnate/once': 1.1.2 - agent-base: 6.0.2 - debug: 4.3.4 - transitivePeerDependencies: - - supports-color - dev: true - - /https-proxy-agent@5.0.1: - resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} - engines: {node: '>= 6'} - dependencies: - agent-base: 6.0.2 - debug: 4.3.4 - transitivePeerDependencies: - - supports-color - dev: true - - /human-signals@1.1.1: - resolution: {integrity: sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==} - engines: {node: '>=8.12.0'} - dev: true - - /iconv-lite@0.4.24: - resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} - engines: {node: '>=0.10.0'} - dependencies: - safer-buffer: 2.1.2 + /human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} dev: true /ignore@4.0.6: @@ -3126,13 +2731,6 @@ packages: engines: {node: '>= 0.10'} dev: true - /is-accessor-descriptor@1.0.1: - resolution: {integrity: sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA==} - engines: {node: '>= 0.10'} - dependencies: - hasown: 2.0.0 - dev: true - /is-array-buffer@3.0.2: resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} dependencies: @@ -3166,35 +2764,17 @@ packages: has-tostringtag: 1.0.0 dev: true - /is-buffer@1.1.6: - resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} - dev: true - /is-callable@1.2.7: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} dev: true - /is-ci@2.0.0: - resolution: {integrity: sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==} - hasBin: true - dependencies: - ci-info: 2.0.0 - dev: true - /is-core-module@2.13.1: resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} dependencies: hasown: 2.0.0 dev: true - /is-data-descriptor@1.0.1: - resolution: {integrity: sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw==} - engines: {node: '>= 0.4'} - dependencies: - hasown: 2.0.0 - dev: true - /is-date-object@1.0.5: resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} engines: {node: '>= 0.4'} @@ -3202,42 +2782,6 @@ packages: has-tostringtag: 1.0.0 dev: true - /is-descriptor@0.1.7: - resolution: {integrity: sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==} - engines: {node: '>= 0.4'} - dependencies: - is-accessor-descriptor: 1.0.1 - is-data-descriptor: 1.0.1 - dev: true - - /is-descriptor@1.0.3: - resolution: {integrity: sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==} - engines: {node: '>= 0.4'} - dependencies: - is-accessor-descriptor: 1.0.1 - is-data-descriptor: 1.0.1 - dev: true - - /is-docker@2.2.1: - resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} - engines: {node: '>=8'} - hasBin: true - requiresBuild: true - dev: true - optional: true - - /is-extendable@0.1.1: - resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} - engines: {node: '>=0.10.0'} - dev: true - - /is-extendable@1.0.1: - resolution: {integrity: sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==} - engines: {node: '>=0.10.0'} - dependencies: - is-plain-object: 2.0.4 - dev: true - /is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} @@ -3289,13 +2833,6 @@ packages: has-tostringtag: 1.0.0 dev: true - /is-number@3.0.0: - resolution: {integrity: sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==} - engines: {node: '>=0.10.0'} - dependencies: - kind-of: 3.2.2 - dev: true - /is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} @@ -3308,10 +2845,6 @@ packages: isobject: 3.0.1 dev: true - /is-potential-custom-element-name@1.0.1: - resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} - dev: true - /is-regex@1.1.4: resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} engines: {node: '>= 0.4'} @@ -3330,11 +2863,6 @@ packages: call-bind: 1.0.5 dev: true - /is-stream@1.1.0: - resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==} - engines: {node: '>=0.10.0'} - dev: true - /is-stream@2.0.1: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} @@ -3361,10 +2889,6 @@ packages: which-typed-array: 1.1.13 dev: true - /is-typedarray@1.0.0: - resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} - dev: true - /is-weakmap@2.0.1: resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==} dev: true @@ -3382,20 +2906,6 @@ packages: get-intrinsic: 1.2.2 dev: true - /is-windows@1.0.2: - resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} - engines: {node: '>=0.10.0'} - dev: true - - /is-wsl@2.2.0: - resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} - engines: {node: '>=8'} - requiresBuild: true - dependencies: - is-docker: 2.2.1 - dev: true - optional: true - /isarray@1.0.0: resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} dev: true @@ -3408,13 +2918,6 @@ packages: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} dev: true - /isobject@2.1.0: - resolution: {integrity: sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==} - engines: {node: '>=0.10.0'} - dependencies: - isarray: 1.0.0 - dev: true - /isobject@3.0.1: resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} engines: {node: '>=0.10.0'} @@ -3425,11 +2928,12 @@ packages: engines: {node: '>=8'} dev: true - /istanbul-lib-instrument@4.0.3: - resolution: {integrity: sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==} + /istanbul-lib-instrument@5.2.1: + resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} engines: {node: '>=8'} dependencies: '@babel/core': 7.23.3 + '@babel/parser': 7.23.3 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 semver: 6.3.1 @@ -3437,15 +2941,15 @@ packages: - supports-color dev: true - /istanbul-lib-instrument@5.2.1: - resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} - engines: {node: '>=8'} + /istanbul-lib-instrument@6.0.1: + resolution: {integrity: sha512-EAMEJBsYuyyztxMxW3g7ugGPkrZsV57v0Hmv3mm1uQsmB+QnZuepg731CRaIgeUVSdmsTngOkSnauNF8p7FIhA==} + engines: {node: '>=10'} dependencies: '@babel/core': 7.23.3 '@babel/parser': 7.23.3 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 - semver: 6.3.1 + semver: 7.5.4 transitivePeerDependencies: - supports-color dev: true @@ -3488,234 +2992,220 @@ packages: set-function-name: 2.0.1 dev: true - /jest-changed-files@26.6.2: - resolution: {integrity: sha512-fDS7szLcY9sCtIip8Fjry9oGf3I2ht/QT21bAHm5Dmf0mD4X3ReNUf17y+bO6fR8WgbIZTlbyG1ak/53cbRzKQ==} - engines: {node: '>= 10.14.2'} + /jest-changed-files@29.7.0: + resolution: {integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + execa: 5.1.1 + jest-util: 29.7.0 + p-limit: 3.1.0 + dev: true + + /jest-circus@29.7.0: + resolution: {integrity: sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 26.6.2 - execa: 4.1.0 - throat: 5.0.0 + '@jest/environment': 29.7.0 + '@jest/expect': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.10.1 + chalk: 4.1.2 + co: 4.6.0 + dedent: 1.5.1 + is-generator-fn: 2.1.0 + jest-each: 29.7.0 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-runtime: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + p-limit: 3.1.0 + pretty-format: 29.7.0 + pure-rand: 6.0.4 + slash: 3.0.0 + stack-utils: 2.0.6 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color dev: true - /jest-cli@26.6.3(ts-node@9.1.1): - resolution: {integrity: sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg==} - engines: {node: '>= 10.14.2'} + /jest-cli@29.7.0(@types/node@20.10.1)(ts-node@9.1.1): + resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true dependencies: - '@jest/core': 26.6.3(ts-node@9.1.1) - '@jest/test-result': 26.6.2 - '@jest/types': 26.6.2 + '@jest/core': 29.7.0(ts-node@9.1.1) + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 chalk: 4.1.2 + create-jest: 29.7.0(@types/node@20.10.1)(ts-node@9.1.1) exit: 0.1.2 - graceful-fs: 4.2.11 import-local: 3.1.0 - is-ci: 2.0.0 - jest-config: 26.6.3(ts-node@9.1.1) - jest-util: 26.6.2 - jest-validate: 26.6.2 - prompts: 2.4.2 - yargs: 15.4.1 + jest-config: 29.7.0(@types/node@20.10.1)(ts-node@9.1.1) + jest-util: 29.7.0 + jest-validate: 29.7.0 + yargs: 17.7.2 transitivePeerDependencies: - - bufferutil - - canvas + - '@types/node' + - babel-plugin-macros - supports-color - ts-node - - utf-8-validate dev: true - /jest-config@26.6.3(ts-node@9.1.1): - resolution: {integrity: sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg==} - engines: {node: '>= 10.14.2'} + /jest-config@29.7.0(@types/node@20.10.1)(ts-node@9.1.1): + resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: + '@types/node': '*' ts-node: '>=9.0.0' peerDependenciesMeta: + '@types/node': + optional: true ts-node: optional: true dependencies: '@babel/core': 7.23.3 - '@jest/test-sequencer': 26.6.3(ts-node@9.1.1) - '@jest/types': 26.6.2 - babel-jest: 26.6.3(@babel/core@7.23.3) + '@jest/test-sequencer': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.10.1 + babel-jest: 29.7.0(@babel/core@7.23.3) chalk: 4.1.2 + ci-info: 3.9.0 deepmerge: 4.3.1 glob: 7.2.3 graceful-fs: 4.2.11 - jest-environment-jsdom: 26.6.2 - jest-environment-node: 26.6.2 - jest-get-type: 26.3.0 - jest-jasmine2: 26.6.3(ts-node@9.1.1) - jest-regex-util: 26.0.0 - jest-resolve: 26.6.2 - jest-util: 26.6.2 - jest-validate: 26.6.2 + jest-circus: 29.7.0 + jest-environment-node: 29.7.0 + jest-get-type: 29.6.3 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-runner: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 micromatch: 4.0.5 - pretty-format: 26.6.2 - ts-node: 9.1.1(typescript@4.2.4) + parse-json: 5.2.0 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-json-comments: 3.1.1 + ts-node: 9.1.1(typescript@4.3.5) transitivePeerDependencies: - - bufferutil - - canvas + - babel-plugin-macros - supports-color - - utf-8-validate dev: true - /jest-diff@26.6.2: - resolution: {integrity: sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==} - engines: {node: '>= 10.14.2'} + /jest-diff@29.7.0: + resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: chalk: 4.1.2 - diff-sequences: 26.6.2 - jest-get-type: 26.3.0 - pretty-format: 26.6.2 + diff-sequences: 29.6.3 + jest-get-type: 29.6.3 + pretty-format: 29.7.0 dev: true - /jest-docblock@26.0.0: - resolution: {integrity: sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w==} - engines: {node: '>= 10.14.2'} + /jest-docblock@29.7.0: + resolution: {integrity: sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: detect-newline: 3.1.0 dev: true - /jest-each@26.6.2: - resolution: {integrity: sha512-Mer/f0KaATbjl8MCJ+0GEpNdqmnVmDYqCTJYTvoo7rqmRiDllmp2AYN+06F93nXcY3ur9ShIjS+CO/uD+BbH4A==} - engines: {node: '>= 10.14.2'} + /jest-each@29.7.0: + resolution: {integrity: sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 26.6.2 + '@jest/types': 29.6.3 chalk: 4.1.2 - jest-get-type: 26.3.0 - jest-util: 26.6.2 - pretty-format: 26.6.2 - dev: true - - /jest-environment-jsdom@26.6.2: - resolution: {integrity: sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q==} - engines: {node: '>= 10.14.2'} - dependencies: - '@jest/environment': 26.6.2 - '@jest/fake-timers': 26.6.2 - '@jest/types': 26.6.2 - '@types/node': 20.9.0 - jest-mock: 26.6.2 - jest-util: 26.6.2 - jsdom: 16.7.0 - transitivePeerDependencies: - - bufferutil - - canvas - - supports-color - - utf-8-validate + jest-get-type: 29.6.3 + jest-util: 29.7.0 + pretty-format: 29.7.0 dev: true - /jest-environment-node@26.6.2: - resolution: {integrity: sha512-zhtMio3Exty18dy8ee8eJ9kjnRyZC1N4C1Nt/VShN1apyXc8rWGtJ9lI7vqiWcyyXS4BVSEn9lxAM2D+07/Tag==} - engines: {node: '>= 10.14.2'} + /jest-environment-node@29.7.0: + resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/environment': 26.6.2 - '@jest/fake-timers': 26.6.2 - '@jest/types': 26.6.2 - '@types/node': 20.9.0 - jest-mock: 26.6.2 - jest-util: 26.6.2 + '@jest/environment': 29.7.0 + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.10.1 + jest-mock: 29.7.0 + jest-util: 29.7.0 dev: true - /jest-get-type@26.3.0: - resolution: {integrity: sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==} - engines: {node: '>= 10.14.2'} + /jest-get-type@29.6.3: + resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true - /jest-haste-map@26.6.2: - resolution: {integrity: sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w==} - engines: {node: '>= 10.14.2'} + /jest-haste-map@29.7.0: + resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 26.6.2 + '@jest/types': 29.6.3 '@types/graceful-fs': 4.1.9 - '@types/node': 20.9.0 + '@types/node': 20.10.1 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 - jest-regex-util: 26.0.0 - jest-serializer: 26.6.2 - jest-util: 26.6.2 - jest-worker: 26.6.2 + jest-regex-util: 29.6.3 + jest-util: 29.7.0 + jest-worker: 29.7.0 micromatch: 4.0.5 - sane: 4.1.0 walker: 1.0.8 optionalDependencies: fsevents: 2.3.3 - transitivePeerDependencies: - - supports-color dev: true - /jest-jasmine2@26.6.3(ts-node@9.1.1): - resolution: {integrity: sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg==} - engines: {node: '>= 10.14.2'} + /jest-leak-detector@29.7.0: + resolution: {integrity: sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/traverse': 7.23.3 - '@jest/environment': 26.6.2 - '@jest/source-map': 26.6.2 - '@jest/test-result': 26.6.2 - '@jest/types': 26.6.2 - '@types/node': 20.9.0 - chalk: 4.1.2 - co: 4.6.0 - expect: 26.6.2 - is-generator-fn: 2.1.0 - jest-each: 26.6.2 - jest-matcher-utils: 26.6.2 - jest-message-util: 26.6.2 - jest-runtime: 26.6.3(ts-node@9.1.1) - jest-snapshot: 26.6.2 - jest-util: 26.6.2 - pretty-format: 26.6.2 - throat: 5.0.0 - transitivePeerDependencies: - - bufferutil - - canvas - - supports-color - - ts-node - - utf-8-validate - dev: true - - /jest-leak-detector@26.6.2: - resolution: {integrity: sha512-i4xlXpsVSMeKvg2cEKdfhh0H39qlJlP5Ex1yQxwF9ubahboQYMgTtz5oML35AVA3B4Eu+YsmwaiKVev9KCvLxg==} - engines: {node: '>= 10.14.2'} - dependencies: - jest-get-type: 26.3.0 - pretty-format: 26.6.2 + jest-get-type: 29.6.3 + pretty-format: 29.7.0 dev: true - /jest-matcher-utils@26.6.2: - resolution: {integrity: sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw==} - engines: {node: '>= 10.14.2'} + /jest-matcher-utils@29.7.0: + resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: chalk: 4.1.2 - jest-diff: 26.6.2 - jest-get-type: 26.3.0 - pretty-format: 26.6.2 + jest-diff: 29.7.0 + jest-get-type: 29.6.3 + pretty-format: 29.7.0 dev: true - /jest-message-util@26.6.2: - resolution: {integrity: sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA==} - engines: {node: '>= 10.14.2'} + /jest-message-util@29.7.0: + resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@babel/code-frame': 7.22.13 - '@jest/types': 26.6.2 + '@jest/types': 29.6.3 '@types/stack-utils': 2.0.3 chalk: 4.1.2 graceful-fs: 4.2.11 micromatch: 4.0.5 - pretty-format: 26.6.2 + pretty-format: 29.7.0 slash: 3.0.0 stack-utils: 2.0.6 dev: true - /jest-mock@26.6.2: - resolution: {integrity: sha512-YyFjePHHp1LzpzYcmgqkJ0nm0gg/lJx2aZFzFy1S6eUqNjXsOqTK10zNRff2dNfssgokjkG65OlWNcIlgd3zew==} - engines: {node: '>= 10.14.2'} + /jest-mock@29.7.0: + resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 26.6.2 - '@types/node': 20.9.0 + '@jest/types': 29.6.3 + '@types/node': 20.10.1 + jest-util: 29.7.0 dev: true - /jest-pnp-resolver@1.2.3(jest-resolve@26.6.2): + /jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} engines: {node: '>=6'} peerDependencies: @@ -3724,214 +3214,208 @@ packages: jest-resolve: optional: true dependencies: - jest-resolve: 26.6.2 + jest-resolve: 29.7.0 dev: true - /jest-regex-util@26.0.0: - resolution: {integrity: sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==} - engines: {node: '>= 10.14.2'} + /jest-regex-util@29.6.3: + resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true - /jest-resolve-dependencies@26.6.3: - resolution: {integrity: sha512-pVwUjJkxbhe4RY8QEWzN3vns2kqyuldKpxlxJlzEYfKSvY6/bMvxoFrYYzUO1Gx28yKWN37qyV7rIoIp2h8fTg==} - engines: {node: '>= 10.14.2'} + /jest-resolve-dependencies@29.7.0: + resolution: {integrity: sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 26.6.2 - jest-regex-util: 26.0.0 - jest-snapshot: 26.6.2 + jest-regex-util: 29.6.3 + jest-snapshot: 29.7.0 transitivePeerDependencies: - supports-color dev: true - /jest-resolve@26.6.2: - resolution: {integrity: sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ==} - engines: {node: '>= 10.14.2'} + /jest-resolve@29.7.0: + resolution: {integrity: sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 26.6.2 chalk: 4.1.2 graceful-fs: 4.2.11 - jest-pnp-resolver: 1.2.3(jest-resolve@26.6.2) - jest-util: 26.6.2 - read-pkg-up: 7.0.1 + jest-haste-map: 29.7.0 + jest-pnp-resolver: 1.2.3(jest-resolve@29.7.0) + jest-util: 29.7.0 + jest-validate: 29.7.0 resolve: 1.22.8 + resolve.exports: 2.0.2 slash: 3.0.0 dev: true - /jest-runner@26.6.3(ts-node@9.1.1): - resolution: {integrity: sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ==} - engines: {node: '>= 10.14.2'} + /jest-runner@29.7.0: + resolution: {integrity: sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/console': 26.6.2 - '@jest/environment': 26.6.2 - '@jest/test-result': 26.6.2 - '@jest/types': 26.6.2 - '@types/node': 20.9.0 + '@jest/console': 29.7.0 + '@jest/environment': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.10.1 chalk: 4.1.2 - emittery: 0.7.2 - exit: 0.1.2 + emittery: 0.13.1 graceful-fs: 4.2.11 - jest-config: 26.6.3(ts-node@9.1.1) - jest-docblock: 26.0.0 - jest-haste-map: 26.6.2 - jest-leak-detector: 26.6.2 - jest-message-util: 26.6.2 - jest-resolve: 26.6.2 - jest-runtime: 26.6.3(ts-node@9.1.1) - jest-util: 26.6.2 - jest-worker: 26.6.2 - source-map-support: 0.5.21 - throat: 5.0.0 + jest-docblock: 29.7.0 + jest-environment-node: 29.7.0 + jest-haste-map: 29.7.0 + jest-leak-detector: 29.7.0 + jest-message-util: 29.7.0 + jest-resolve: 29.7.0 + jest-runtime: 29.7.0 + jest-util: 29.7.0 + jest-watcher: 29.7.0 + jest-worker: 29.7.0 + p-limit: 3.1.0 + source-map-support: 0.5.13 transitivePeerDependencies: - - bufferutil - - canvas - supports-color - - ts-node - - utf-8-validate dev: true - /jest-runtime@26.6.3(ts-node@9.1.1): - resolution: {integrity: sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw==} - engines: {node: '>= 10.14.2'} - hasBin: true + /jest-runtime@29.7.0: + resolution: {integrity: sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/console': 26.6.2 - '@jest/environment': 26.6.2 - '@jest/fake-timers': 26.6.2 - '@jest/globals': 26.6.2 - '@jest/source-map': 26.6.2 - '@jest/test-result': 26.6.2 - '@jest/transform': 26.6.2 - '@jest/types': 26.6.2 - '@types/yargs': 15.0.18 + '@jest/environment': 29.7.0 + '@jest/fake-timers': 29.7.0 + '@jest/globals': 29.7.0 + '@jest/source-map': 29.6.3 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.10.1 chalk: 4.1.2 - cjs-module-lexer: 0.6.0 + cjs-module-lexer: 1.2.3 collect-v8-coverage: 1.0.2 - exit: 0.1.2 glob: 7.2.3 graceful-fs: 4.2.11 - jest-config: 26.6.3(ts-node@9.1.1) - jest-haste-map: 26.6.2 - jest-message-util: 26.6.2 - jest-mock: 26.6.2 - jest-regex-util: 26.0.0 - jest-resolve: 26.6.2 - jest-snapshot: 26.6.2 - jest-util: 26.6.2 - jest-validate: 26.6.2 + jest-haste-map: 29.7.0 + jest-message-util: 29.7.0 + jest-mock: 29.7.0 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 slash: 3.0.0 strip-bom: 4.0.0 - yargs: 15.4.1 transitivePeerDependencies: - - bufferutil - - canvas - supports-color - - ts-node - - utf-8-validate - dev: true - - /jest-serializer@26.6.2: - resolution: {integrity: sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==} - engines: {node: '>= 10.14.2'} - dependencies: - '@types/node': 20.9.0 - graceful-fs: 4.2.11 dev: true - /jest-snapshot@26.6.2: - resolution: {integrity: sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og==} - engines: {node: '>= 10.14.2'} + /jest-snapshot@29.7.0: + resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: + '@babel/core': 7.23.3 + '@babel/generator': 7.23.3 + '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.3) + '@babel/plugin-syntax-typescript': 7.23.3(@babel/core@7.23.3) '@babel/types': 7.23.3 - '@jest/types': 26.6.2 - '@types/babel__traverse': 7.20.4 - '@types/prettier': 2.7.3 + '@jest/expect-utils': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.23.3) chalk: 4.1.2 - expect: 26.6.2 + expect: 29.7.0 graceful-fs: 4.2.11 - jest-diff: 26.6.2 - jest-get-type: 26.3.0 - jest-haste-map: 26.6.2 - jest-matcher-utils: 26.6.2 - jest-message-util: 26.6.2 - jest-resolve: 26.6.2 + jest-diff: 29.7.0 + jest-get-type: 29.6.3 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-util: 29.7.0 natural-compare: 1.4.0 - pretty-format: 26.6.2 + pretty-format: 29.7.0 semver: 7.5.4 transitivePeerDependencies: - supports-color dev: true - /jest-util@26.6.2: - resolution: {integrity: sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==} - engines: {node: '>= 10.14.2'} + /jest-util@29.7.0: + resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 26.6.2 - '@types/node': 20.9.0 + '@jest/types': 29.6.3 + '@types/node': 20.10.1 chalk: 4.1.2 + ci-info: 3.9.0 graceful-fs: 4.2.11 - is-ci: 2.0.0 - micromatch: 4.0.5 + picomatch: 2.3.1 dev: true - /jest-validate@26.6.2: - resolution: {integrity: sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ==} - engines: {node: '>= 10.14.2'} + /jest-validate@29.7.0: + resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 26.6.2 + '@jest/types': 29.6.3 camelcase: 6.3.0 chalk: 4.1.2 - jest-get-type: 26.3.0 + jest-get-type: 29.6.3 leven: 3.1.0 - pretty-format: 26.6.2 + pretty-format: 29.7.0 dev: true - /jest-watcher@26.6.2: - resolution: {integrity: sha512-WKJob0P/Em2csiVthsI68p6aGKTIcsfjH9Gsx1f0A3Italz43e3ho0geSAVsmj09RWOELP1AZ/DXyJgOgDKxXQ==} - engines: {node: '>= 10.14.2'} + /jest-watcher@29.7.0: + resolution: {integrity: sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/test-result': 26.6.2 - '@jest/types': 26.6.2 - '@types/node': 20.9.0 + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.10.1 ansi-escapes: 4.3.2 chalk: 4.1.2 - jest-util: 26.6.2 + emittery: 0.13.1 + jest-util: 29.7.0 string-length: 4.0.2 dev: true - /jest-worker@26.6.2: - resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==} + /jest-worker@27.5.1: + resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 20.9.0 + '@types/node': 20.10.1 merge-stream: 2.0.0 - supports-color: 7.2.0 + supports-color: 8.1.1 dev: true - /jest-worker@27.5.1: - resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} - engines: {node: '>= 10.13.0'} + /jest-worker@29.7.0: + resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@types/node': 20.9.0 + '@types/node': 20.10.1 + jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 dev: true - /jest@26.6.3(ts-node@9.1.1): - resolution: {integrity: sha512-lGS5PXGAzR4RF7V5+XObhqz2KZIDUA1yD0DG6pBVmy10eh0ZIXQImRuzocsI/N2XZ1GrLFwTS27In2i2jlpq1Q==} - engines: {node: '>= 10.14.2'} + /jest@29.7.0(@types/node@20.10.1)(ts-node@9.1.1): + resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true dependencies: - '@jest/core': 26.6.3(ts-node@9.1.1) + '@jest/core': 29.7.0(ts-node@9.1.1) + '@jest/types': 29.6.3 import-local: 3.1.0 - jest-cli: 26.6.3(ts-node@9.1.1) + jest-cli: 29.7.0(@types/node@20.10.1)(ts-node@9.1.1) transitivePeerDependencies: - - bufferutil - - canvas + - '@types/node' + - babel-plugin-macros - supports-color - ts-node - - utf-8-validate dev: true + /jose@5.1.2: + resolution: {integrity: sha512-X7TOC/d8KPvx4wPUuLHVgTSdoWw0UW5TQOUwhvCvj+ZPfsf9vUPhhksYPjNBWVGPQ/6yd/JrL1gQxBnIDwYdFg==} + dev: false + /js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} dev: true @@ -3944,48 +3428,6 @@ packages: esprima: 4.0.1 dev: true - /jsdom@16.7.0: - resolution: {integrity: sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==} - engines: {node: '>=10'} - peerDependencies: - canvas: ^2.5.0 - peerDependenciesMeta: - canvas: - optional: true - dependencies: - abab: 2.0.6 - acorn: 8.11.2 - acorn-globals: 6.0.0 - cssom: 0.4.4 - cssstyle: 2.3.0 - data-urls: 2.0.0 - decimal.js: 10.4.3 - domexception: 2.0.1 - escodegen: 2.1.0 - form-data: 3.0.1 - html-encoding-sniffer: 2.0.1 - http-proxy-agent: 4.0.1 - https-proxy-agent: 5.0.1 - is-potential-custom-element-name: 1.0.1 - nwsapi: 2.2.7 - parse5: 6.0.1 - saxes: 5.0.1 - symbol-tree: 3.2.4 - tough-cookie: 4.1.3 - w3c-hr-time: 1.0.2 - w3c-xmlserializer: 2.0.0 - webidl-conversions: 6.1.0 - whatwg-encoding: 1.0.5 - whatwg-mimetype: 2.3.0 - whatwg-url: 8.7.0 - ws: 7.5.9 - xml-name-validator: 3.0.0 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - dev: true - /jsesc@2.5.2: resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} engines: {node: '>=4'} @@ -4029,22 +3471,6 @@ packages: resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} dev: true - /jsonwebtoken@9.0.2: - resolution: {integrity: sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==} - engines: {node: '>=12', npm: '>=6'} - dependencies: - jws: 3.2.2 - lodash.includes: 4.3.0 - lodash.isboolean: 3.0.3 - lodash.isinteger: 4.0.4 - lodash.isnumber: 3.0.3 - lodash.isplainobject: 4.0.6 - lodash.isstring: 4.0.1 - lodash.once: 4.1.1 - ms: 2.1.3 - semver: 7.5.4 - dev: false - /jsx-ast-utils@3.3.5: resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} engines: {node: '>=4.0'} @@ -4055,41 +3481,12 @@ packages: object.values: 1.1.7 dev: true - /jwa@1.4.1: - resolution: {integrity: sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==} - dependencies: - buffer-equal-constant-time: 1.0.1 - ecdsa-sig-formatter: 1.0.11 - safe-buffer: 5.2.1 - dev: false - - /jws@3.2.2: - resolution: {integrity: sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==} - dependencies: - jwa: 1.4.1 - safe-buffer: 5.2.1 - dev: false - /keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} dependencies: json-buffer: 3.0.1 dev: true - /kind-of@3.2.2: - resolution: {integrity: sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==} - engines: {node: '>=0.10.0'} - dependencies: - is-buffer: 1.1.6 - dev: true - - /kind-of@4.0.0: - resolution: {integrity: sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==} - engines: {node: '>=0.10.0'} - dependencies: - is-buffer: 1.1.6 - dev: true - /kind-of@6.0.3: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} @@ -4149,46 +3546,18 @@ packages: p-locate: 4.1.0 dev: true - /lodash.includes@4.3.0: - resolution: {integrity: sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==} - dev: false - - /lodash.isboolean@3.0.3: - resolution: {integrity: sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==} - dev: false - - /lodash.isinteger@4.0.4: - resolution: {integrity: sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==} - dev: false - - /lodash.isnumber@3.0.3: - resolution: {integrity: sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==} - dev: false - - /lodash.isplainobject@4.0.6: - resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} - dev: false - - /lodash.isstring@4.0.1: - resolution: {integrity: sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==} - dev: false + /lodash.memoize@4.1.2: + resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} + dev: true /lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} dev: true - /lodash.once@4.1.1: - resolution: {integrity: sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==} - dev: false - /lodash.truncate@4.4.2: resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} dev: true - /lodash@4.17.21: - resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - dev: true - /long@5.2.3: resolution: {integrity: sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==} @@ -4210,6 +3579,7 @@ packages: engines: {node: '>=10'} dependencies: yallist: 4.0.0 + dev: true /lunr@2.3.9: resolution: {integrity: sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==} @@ -4232,23 +3602,11 @@ packages: tmpl: 1.0.5 dev: true - /map-cache@0.2.2: - resolution: {integrity: sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==} - engines: {node: '>=0.10.0'} - dev: true - /map-obj@4.3.0: resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} engines: {node: '>=8'} dev: false - /map-visit@1.0.0: - resolution: {integrity: sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==} - engines: {node: '>=0.10.0'} - dependencies: - object-visit: 1.0.1 - dev: true - /marked@4.3.0: resolution: {integrity: sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==} engines: {node: '>= 12'} @@ -4272,27 +3630,6 @@ packages: engines: {node: '>= 8'} dev: true - /micromatch@3.1.10: - resolution: {integrity: sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==} - engines: {node: '>=0.10.0'} - dependencies: - arr-diff: 4.0.0 - array-unique: 0.3.2 - braces: 2.3.2 - define-property: 2.0.2 - extend-shallow: 3.0.2 - extglob: 2.0.4 - fragment-cache: 0.2.1 - kind-of: 6.0.3 - nanomatch: 1.2.13 - object.pick: 1.3.0 - regex-not: 1.0.2 - snapdragon: 0.8.2 - to-regex: 3.0.2 - transitivePeerDependencies: - - supports-color - dev: true - /micromatch@4.0.5: resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} engines: {node: '>=8.6'} @@ -4333,48 +3670,12 @@ packages: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} dev: true - /mixin-deep@1.3.2: - resolution: {integrity: sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==} - engines: {node: '>=0.10.0'} - dependencies: - for-in: 1.0.2 - is-extendable: 1.0.1 - dev: true - - /mkdirp@1.0.4: - resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} - engines: {node: '>=10'} - hasBin: true - dev: true - - /ms@2.0.0: - resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} - dev: true - /ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} dev: true /ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - - /nanomatch@1.2.13: - resolution: {integrity: sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==} - engines: {node: '>=0.10.0'} - dependencies: - arr-diff: 4.0.0 - array-unique: 0.3.2 - define-property: 2.0.2 - extend-shallow: 3.0.2 - fragment-cache: 0.2.1 - is-windows: 1.0.2 - kind-of: 6.0.3 - object.pick: 1.3.0 - regex-not: 1.0.2 - snapdragon: 0.8.2 - to-regex: 3.0.2 - transitivePeerDependencies: - - supports-color dev: true /natural-compare@1.4.0: @@ -4385,59 +3686,19 @@ packages: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} dev: true - /nice-try@1.0.5: - resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} - dev: true - /node-int64@0.4.0: resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} dev: true - /node-notifier@8.0.2: - resolution: {integrity: sha512-oJP/9NAdd9+x2Q+rfphB2RJCHjod70RcRLjosiPMMu5gjIfwVnOUGq2nbTjTUbmy0DJ/tFIVT30+Qe3nzl4TJg==} - requiresBuild: true - dependencies: - growly: 1.3.0 - is-wsl: 2.2.0 - semver: 7.5.4 - shellwords: 0.1.1 - uuid: 8.3.2 - which: 2.0.2 - dev: true - optional: true - /node-releases@2.0.13: resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==} dev: true - /normalize-package-data@2.5.0: - resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} - dependencies: - hosted-git-info: 2.8.9 - resolve: 1.22.8 - semver: 5.7.2 - validate-npm-package-license: 3.0.4 - dev: true - - /normalize-path@2.1.1: - resolution: {integrity: sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==} - engines: {node: '>=0.10.0'} - dependencies: - remove-trailing-separator: 1.1.0 - dev: true - /normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} dev: true - /npm-run-path@2.0.2: - resolution: {integrity: sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==} - engines: {node: '>=4'} - dependencies: - path-key: 2.0.1 - dev: true - /npm-run-path@4.0.1: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} engines: {node: '>=8'} @@ -4445,24 +3706,11 @@ packages: path-key: 3.1.1 dev: true - /nwsapi@2.2.7: - resolution: {integrity: sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==} - dev: true - /object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} dev: true - /object-copy@0.1.0: - resolution: {integrity: sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==} - engines: {node: '>=0.10.0'} - dependencies: - copy-descriptor: 0.1.1 - define-property: 0.2.5 - kind-of: 3.2.2 - dev: true - /object-inspect@1.13.1: resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} dev: true @@ -4472,13 +3720,6 @@ packages: engines: {node: '>= 0.4'} dev: true - /object-visit@1.0.1: - resolution: {integrity: sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==} - engines: {node: '>=0.10.0'} - dependencies: - isobject: 3.0.1 - dev: true - /object.assign@4.1.4: resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} engines: {node: '>= 0.4'} @@ -4523,13 +3764,6 @@ packages: es-abstract: 1.22.3 dev: true - /object.pick@1.3.0: - resolution: {integrity: sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==} - engines: {node: '>=0.10.0'} - dependencies: - isobject: 3.0.1 - dev: true - /object.values@1.1.7: resolution: {integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==} engines: {node: '>= 0.4'} @@ -4564,16 +3798,6 @@ packages: type-check: 0.4.0 dev: true - /p-each-series@2.2.0: - resolution: {integrity: sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA==} - engines: {node: '>=8'} - dev: true - - /p-finally@1.0.0: - resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} - engines: {node: '>=4'} - dev: true - /p-limit@2.3.0: resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} engines: {node: '>=6'} @@ -4581,6 +3805,13 @@ packages: p-try: 2.2.0 dev: true + /p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + dependencies: + yocto-queue: 0.1.0 + dev: true + /p-locate@4.1.0: resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} engines: {node: '>=8'} @@ -4610,15 +3841,6 @@ packages: lines-and-columns: 1.2.4 dev: true - /parse5@6.0.1: - resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} - dev: true - - /pascalcase@0.1.1: - resolution: {integrity: sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==} - engines: {node: '>=0.10.0'} - dev: true - /path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} @@ -4629,11 +3851,6 @@ packages: engines: {node: '>=0.10.0'} dev: true - /path-key@2.0.1: - resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==} - engines: {node: '>=4'} - dev: true - /path-key@3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} @@ -4669,11 +3886,6 @@ packages: find-up: 4.1.0 dev: true - /posix-character-classes@0.1.1: - resolution: {integrity: sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==} - engines: {node: '>=0.10.0'} - dev: true - /prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} @@ -4685,14 +3897,13 @@ packages: hasBin: true dev: true - /pretty-format@26.6.2: - resolution: {integrity: sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==} - engines: {node: '>= 10'} + /pretty-format@29.7.0: + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 26.6.2 - ansi-regex: 5.0.1 - ansi-styles: 4.3.0 - react-is: 17.0.2 + '@jest/schemas': 29.6.3 + ansi-styles: 5.2.0 + react-is: 18.2.0 dev: true /process-nextick-args@2.0.1: @@ -4735,7 +3946,7 @@ packages: '@protobufjs/path': 1.1.2 '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 - '@types/node': 20.9.0 + '@types/node': 20.10.1 long: 5.2.3 /proxy-from-env@1.1.0: @@ -4746,24 +3957,13 @@ packages: resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==} dev: true - /psl@1.9.0: - resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} - dev: true - - /pump@3.0.0: - resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} - dependencies: - end-of-stream: 1.4.4 - once: 1.4.0 - dev: true - /punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} dev: true - /querystringify@2.2.0: - resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} + /pure-rand@6.0.4: + resolution: {integrity: sha512-LA0Y9kxMYv47GIPJy6MI84fqTd2HmYZI83W/kM/SkKfDlajnZYfmXFTxkbY+xSBPkLJxltMa9hIkmdc29eguMA==} dev: true /queue-microtask@1.2.3: @@ -4781,31 +3981,12 @@ packages: safe-buffer: 5.2.1 dev: true - /react-is@16.13.1: - resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} - dev: true - - /react-is@17.0.2: - resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} - dev: true - - /read-pkg-up@7.0.1: - resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} - engines: {node: '>=8'} - dependencies: - find-up: 4.1.0 - read-pkg: 5.2.0 - type-fest: 0.8.1 - dev: true - - /read-pkg@5.2.0: - resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} - engines: {node: '>=8'} - dependencies: - '@types/normalize-package-data': 2.4.4 - normalize-package-data: 2.5.0 - parse-json: 5.2.0 - type-fest: 0.6.0 + /react-is@16.13.1: + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + dev: true + + /react-is@18.2.0: + resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} dev: true /readable-stream@2.3.8: @@ -4843,14 +4024,6 @@ packages: resolution: {integrity: sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==} dev: true - /regex-not@1.0.2: - resolution: {integrity: sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==} - engines: {node: '>=0.10.0'} - dependencies: - extend-shallow: 3.0.2 - safe-regex: 1.1.0 - dev: true - /regexp.prototype.flags@1.5.1: resolution: {integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==} engines: {node: '>= 0.4'} @@ -4865,20 +4038,6 @@ packages: engines: {node: '>=8'} dev: true - /remove-trailing-separator@1.1.0: - resolution: {integrity: sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==} - dev: true - - /repeat-element@1.1.4: - resolution: {integrity: sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==} - engines: {node: '>=0.10.0'} - dev: true - - /repeat-string@1.6.1: - resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==} - engines: {node: '>=0.10'} - dev: true - /require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} @@ -4889,14 +4048,6 @@ packages: engines: {node: '>=0.10.0'} dev: true - /require-main-filename@2.0.0: - resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} - dev: true - - /requires-port@1.0.0: - resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} - dev: true - /resolve-cwd@3.0.0: resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} engines: {node: '>=8'} @@ -4914,9 +4065,9 @@ packages: engines: {node: '>=8'} dev: true - /resolve-url@0.2.1: - resolution: {integrity: sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==} - deprecated: https://github.com/lydell/resolve-url#deprecated + /resolve.exports@2.0.2: + resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==} + engines: {node: '>=10'} dev: true /resolve@1.22.8: @@ -4937,11 +4088,6 @@ packages: supports-preserve-symlinks-flag: 1.0.0 dev: true - /ret@0.1.15: - resolution: {integrity: sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==} - engines: {node: '>=0.12'} - dev: true - /reusify@1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} @@ -4954,11 +4100,6 @@ packages: glob: 7.2.3 dev: true - /rsvp@4.8.5: - resolution: {integrity: sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==} - engines: {node: 6.* || >= 7.*} - dev: true - /run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} dependencies: @@ -4981,6 +4122,7 @@ packages: /safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + dev: true /safe-regex-test@1.0.0: resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} @@ -4990,42 +4132,6 @@ packages: is-regex: 1.1.4 dev: true - /safe-regex@1.1.0: - resolution: {integrity: sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==} - dependencies: - ret: 0.1.15 - dev: true - - /safer-buffer@2.1.2: - resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - dev: true - - /sane@4.1.0: - resolution: {integrity: sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==} - engines: {node: 6.* || 8.* || >= 10.*} - deprecated: some dependency vulnerabilities fixed, support for node < 10 dropped, and newer ECMAScript syntax/features added - hasBin: true - dependencies: - '@cnakazawa/watch': 1.0.4 - anymatch: 2.0.0 - capture-exit: 2.0.0 - exec-sh: 0.3.6 - execa: 1.0.0 - fb-watchman: 2.0.2 - micromatch: 3.1.10 - minimist: 1.2.8 - walker: 1.0.8 - transitivePeerDependencies: - - supports-color - dev: true - - /saxes@5.0.1: - resolution: {integrity: sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==} - engines: {node: '>=10'} - dependencies: - xmlchars: 2.2.0 - dev: true - /schema-utils@3.3.0: resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} engines: {node: '>= 10.13.0'} @@ -5035,11 +4141,6 @@ packages: ajv-keywords: 3.5.2(ajv@6.12.6) dev: true - /semver@5.7.2: - resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} - hasBin: true - dev: true - /semver@6.3.1: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true @@ -5051,6 +4152,7 @@ packages: hasBin: true dependencies: lru-cache: 6.0.0 + dev: true /serialize-javascript@6.0.1: resolution: {integrity: sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==} @@ -5058,10 +4160,6 @@ packages: randombytes: 2.1.0 dev: true - /set-blocking@2.0.0: - resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} - dev: true - /set-function-length@1.1.1: resolution: {integrity: sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==} engines: {node: '>= 0.4'} @@ -5081,16 +4179,6 @@ packages: has-property-descriptors: 1.0.1 dev: true - /set-value@2.0.1: - resolution: {integrity: sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==} - engines: {node: '>=0.10.0'} - dependencies: - extend-shallow: 2.0.1 - is-extendable: 0.1.1 - is-plain-object: 2.0.4 - split-string: 3.1.0 - dev: true - /shallow-clone@3.0.1: resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} engines: {node: '>=8'} @@ -5098,13 +4186,6 @@ packages: kind-of: 6.0.3 dev: true - /shebang-command@1.2.0: - resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} - engines: {node: '>=0.10.0'} - dependencies: - shebang-regex: 1.0.0 - dev: true - /shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} @@ -5112,22 +4193,11 @@ packages: shebang-regex: 3.0.0 dev: true - /shebang-regex@1.0.0: - resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} - engines: {node: '>=0.10.0'} - dev: true - /shebang-regex@3.0.0: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} dev: true - /shellwords@0.1.1: - resolution: {integrity: sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==} - requiresBuild: true - dev: true - optional: true - /shiki@0.10.1: resolution: {integrity: sha512-VsY7QJVzU51j5o1+DguUd+6vmCmZ5v/6gYu4vyYAhzjuNQU6P/vmSy4uQaOhvje031qQMiW0d2BwgMH52vqMng==} dependencies: @@ -5166,47 +4236,11 @@ packages: is-fullwidth-code-point: 3.0.0 dev: true - /snapdragon-node@2.1.1: - resolution: {integrity: sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==} - engines: {node: '>=0.10.0'} - dependencies: - define-property: 1.0.0 - isobject: 3.0.1 - snapdragon-util: 3.0.1 - dev: true - - /snapdragon-util@3.0.1: - resolution: {integrity: sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==} - engines: {node: '>=0.10.0'} - dependencies: - kind-of: 3.2.2 - dev: true - - /snapdragon@0.8.2: - resolution: {integrity: sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==} - engines: {node: '>=0.10.0'} - dependencies: - base: 0.11.2 - debug: 2.6.9 - define-property: 0.2.5 - extend-shallow: 2.0.1 - map-cache: 0.2.2 - source-map: 0.5.7 - source-map-resolve: 0.5.3 - use: 3.1.1 - transitivePeerDependencies: - - supports-color - dev: true - - /source-map-resolve@0.5.3: - resolution: {integrity: sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==} - deprecated: See https://github.com/lydell/source-map-resolve#deprecated + /source-map-support@0.5.13: + resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} dependencies: - atob: 2.1.2 - decode-uri-component: 0.2.2 - resolve-url: 0.2.1 - source-map-url: 0.4.1 - urix: 0.1.0 + buffer-from: 1.1.2 + source-map: 0.6.1 dev: true /source-map-support@0.5.21: @@ -5216,55 +4250,11 @@ packages: source-map: 0.6.1 dev: true - /source-map-url@0.4.1: - resolution: {integrity: sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==} - deprecated: See https://github.com/lydell/source-map-url#deprecated - dev: true - - /source-map@0.5.7: - resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} - engines: {node: '>=0.10.0'} - dev: true - /source-map@0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} dev: true - /source-map@0.7.4: - resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} - engines: {node: '>= 8'} - dev: true - - /spdx-correct@3.2.0: - resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} - dependencies: - spdx-expression-parse: 3.0.1 - spdx-license-ids: 3.0.16 - dev: true - - /spdx-exceptions@2.3.0: - resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} - dev: true - - /spdx-expression-parse@3.0.1: - resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} - dependencies: - spdx-exceptions: 2.3.0 - spdx-license-ids: 3.0.16 - dev: true - - /spdx-license-ids@3.0.16: - resolution: {integrity: sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==} - dev: true - - /split-string@3.1.0: - resolution: {integrity: sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==} - engines: {node: '>=0.10.0'} - dependencies: - extend-shallow: 3.0.2 - dev: true - /sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} dev: true @@ -5276,14 +4266,6 @@ packages: escape-string-regexp: 2.0.0 dev: true - /static-extend@0.1.2: - resolution: {integrity: sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==} - engines: {node: '>=0.10.0'} - dependencies: - define-property: 0.2.5 - object-copy: 0.1.0 - dev: true - /string-length@4.0.2: resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} engines: {node: '>=10'} @@ -5363,11 +4345,6 @@ packages: engines: {node: '>=8'} dev: true - /strip-eof@1.0.0: - resolution: {integrity: sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==} - engines: {node: '>=0.10.0'} - dev: true - /strip-final-newline@2.0.0: resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} engines: {node: '>=6'} @@ -5399,23 +4376,11 @@ packages: has-flag: 4.0.0 dev: true - /supports-hyperlinks@2.3.0: - resolution: {integrity: sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==} - engines: {node: '>=8'} - dependencies: - has-flag: 4.0.0 - supports-color: 7.2.0 - dev: true - /supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} dev: true - /symbol-tree@3.2.4: - resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} - dev: true - /table@6.8.1: resolution: {integrity: sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==} engines: {node: '>=10.0.0'} @@ -5437,14 +4402,6 @@ packages: engines: {node: '>=6'} dev: true - /terminal-link@2.1.1: - resolution: {integrity: sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==} - engines: {node: '>=8'} - dependencies: - ansi-escapes: 4.3.2 - supports-hyperlinks: 2.3.0 - dev: true - /terser-webpack-plugin@5.3.9(webpack@5.89.0): resolution: {integrity: sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==} engines: {node: '>= 10.13.0'} @@ -5493,10 +4450,6 @@ packages: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} dev: true - /throat@5.0.0: - resolution: {integrity: sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==} - dev: true - /tmpl@1.0.5: resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} dev: true @@ -5506,21 +4459,6 @@ packages: engines: {node: '>=4'} dev: true - /to-object-path@0.3.0: - resolution: {integrity: sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==} - engines: {node: '>=0.10.0'} - dependencies: - kind-of: 3.2.2 - dev: true - - /to-regex-range@2.1.1: - resolution: {integrity: sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==} - engines: {node: '>=0.10.0'} - dependencies: - is-number: 3.0.0 - repeat-string: 1.6.1 - dev: true - /to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} @@ -5528,56 +4466,41 @@ packages: is-number: 7.0.0 dev: true - /to-regex@3.0.2: - resolution: {integrity: sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==} - engines: {node: '>=0.10.0'} - dependencies: - define-property: 2.0.2 - extend-shallow: 3.0.2 - regex-not: 1.0.2 - safe-regex: 1.1.0 - dev: true - - /tough-cookie@4.1.3: - resolution: {integrity: sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==} - engines: {node: '>=6'} - dependencies: - psl: 1.9.0 - punycode: 2.3.1 - universalify: 0.2.0 - url-parse: 1.5.10 - dev: true - - /tr46@2.1.0: - resolution: {integrity: sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==} - engines: {node: '>=8'} - dependencies: - punycode: 2.3.1 - dev: true - - /ts-jest@26.5.6(jest@26.6.3)(typescript@4.2.4): - resolution: {integrity: sha512-rua+rCP8DxpA8b4DQD/6X2HQS8Zy/xzViVYfEs2OQu68tkCuKLV0Md8pmX55+W24uRIyAsf/BajRfxOs+R2MKA==} - engines: {node: '>= 10'} + /ts-jest@29.1.1(@babel/core@7.23.3)(jest@29.7.0)(typescript@4.3.5): + resolution: {integrity: sha512-D6xjnnbP17cC85nliwGiL+tpoKN0StpgE0TeOjXQTU6MVCfsB4v7aW05CgQ/1OywGb0x/oy9hHFnN+sczTiRaA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true peerDependencies: - jest: '>=26 <27' - typescript: '>=3.8 <5.0' + '@babel/core': '>=7.0.0-beta.0 <8' + '@jest/types': ^29.0.0 + babel-jest: ^29.0.0 + esbuild: '*' + jest: ^29.0.0 + typescript: '>=4.3 <6' + peerDependenciesMeta: + '@babel/core': + optional: true + '@jest/types': + optional: true + babel-jest: + optional: true + esbuild: + optional: true dependencies: + '@babel/core': 7.23.3 bs-logger: 0.2.6 - buffer-from: 1.1.2 fast-json-stable-stringify: 2.1.0 - jest: 26.6.3(ts-node@9.1.1) - jest-util: 26.6.2 + jest: 29.7.0(@types/node@20.10.1)(ts-node@9.1.1) + jest-util: 29.7.0 json5: 2.2.3 - lodash: 4.17.21 + lodash.memoize: 4.1.2 make-error: 1.3.6 - mkdirp: 1.0.4 semver: 7.5.4 - typescript: 4.2.4 - yargs-parser: 20.2.9 + typescript: 4.3.5 + yargs-parser: 21.1.1 dev: true - /ts-loader@8.4.0(typescript@4.2.4)(webpack@5.89.0): + /ts-loader@8.4.0(typescript@4.3.5)(webpack@5.89.0): resolution: {integrity: sha512-6nFY3IZ2//mrPc+ImY3hNWx1vCHyEhl6V+wLmL4CZcm6g1CqX7UKrkc6y0i4FwcfOhxyMPCfaEvh20f4r9GNpw==} engines: {node: '>=10.0.0'} peerDependencies: @@ -5589,11 +4512,11 @@ packages: loader-utils: 2.0.4 micromatch: 4.0.5 semver: 7.5.4 - typescript: 4.2.4 + typescript: 4.3.5 webpack: 5.89.0(webpack-cli@4.10.0) dev: true - /ts-node@9.1.1(typescript@4.2.4): + /ts-node@9.1.1(typescript@4.3.5): resolution: {integrity: sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg==} engines: {node: '>=10.0.0'} hasBin: true @@ -5605,7 +4528,7 @@ packages: diff: 4.0.2 make-error: 1.3.6 source-map-support: 0.5.21 - typescript: 4.2.4 + typescript: 4.3.5 yn: 3.1.1 dev: true @@ -5645,14 +4568,14 @@ packages: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} dev: true - /tsutils@3.21.0(typescript@4.2.4): + /tsutils@3.21.0(typescript@4.3.5): resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'} peerDependencies: typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' dependencies: tslib: 1.14.1 - typescript: 4.2.4 + typescript: 4.3.5 dev: true /type-check@0.4.0: @@ -5677,16 +4600,6 @@ packages: engines: {node: '>=10'} dev: true - /type-fest@0.6.0: - resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} - engines: {node: '>=8'} - dev: true - - /type-fest@0.8.1: - resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} - engines: {node: '>=8'} - dev: true - /type-fest@1.4.0: resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} engines: {node: '>=10'} @@ -5730,13 +4643,7 @@ packages: is-typed-array: 1.1.12 dev: true - /typedarray-to-buffer@3.1.5: - resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} - dependencies: - is-typedarray: 1.0.0 - dev: true - - /typedoc@0.22.18(typescript@4.2.4): + /typedoc@0.22.18(typescript@4.3.5): resolution: {integrity: sha512-NK9RlLhRUGMvc6Rw5USEYgT4DVAUFk7IF7Q6MYfpJ88KnTZP7EneEa4RcP+tX1auAcz7QT1Iy0bUSZBYYHdoyA==} engines: {node: '>= 12.10.0'} hasBin: true @@ -5748,11 +4655,11 @@ packages: marked: 4.3.0 minimatch: 5.1.6 shiki: 0.10.1 - typescript: 4.2.4 + typescript: 4.3.5 dev: true - /typescript@4.2.4: - resolution: {integrity: sha512-V+evlYHZnQkaz8TRBuxTA92yZBPotr5H+WhQ7bD3hZUndx5tGOa1fuCgeSjxAzM1RiN5IzvadIXTVefuuwZCRg==} + /typescript@4.3.5: + resolution: {integrity: sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA==} engines: {node: '>=4.2.0'} hasBin: true dev: true @@ -5769,29 +4676,6 @@ packages: /undici-types@5.26.5: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - /union-value@1.0.1: - resolution: {integrity: sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==} - engines: {node: '>=0.10.0'} - dependencies: - arr-union: 3.1.0 - get-value: 2.0.6 - is-extendable: 0.1.1 - set-value: 2.0.1 - dev: true - - /universalify@0.2.0: - resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} - engines: {node: '>= 4.0.0'} - dev: true - - /unset-value@1.0.0: - resolution: {integrity: sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==} - engines: {node: '>=0.10.0'} - dependencies: - has-value: 0.3.1 - isobject: 3.0.1 - dev: true - /update-browserslist-db@1.0.13(browserslist@4.22.1): resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} hasBin: true @@ -5809,52 +4693,21 @@ packages: punycode: 2.3.1 dev: true - /urix@0.1.0: - resolution: {integrity: sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==} - deprecated: Please see https://github.com/lydell/urix#deprecated - dev: true - - /url-parse@1.5.10: - resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} - dependencies: - querystringify: 2.2.0 - requires-port: 1.0.0 - dev: true - - /use@3.1.1: - resolution: {integrity: sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==} - engines: {node: '>=0.10.0'} - dev: true - /util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} dev: true - /uuid@8.3.2: - resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} - hasBin: true - requiresBuild: true - dev: true - optional: true - /v8-compile-cache@2.4.0: resolution: {integrity: sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==} dev: true - /v8-to-istanbul@7.1.2: - resolution: {integrity: sha512-TxNb7YEUwkLXCQYeudi6lgQ/SZrzNO4kMdlqVxaZPUIUjCv6iSSypUQX70kNBSERpQ8fk48+d61FXk+tgqcWow==} - engines: {node: '>=10.10.0'} + /v8-to-istanbul@9.2.0: + resolution: {integrity: sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==} + engines: {node: '>=10.12.0'} dependencies: + '@jridgewell/trace-mapping': 0.3.20 '@types/istanbul-lib-coverage': 2.0.6 - convert-source-map: 1.9.0 - source-map: 0.7.4 - dev: true - - /validate-npm-package-license@3.0.4: - resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} - dependencies: - spdx-correct: 3.2.0 - spdx-expression-parse: 3.0.1 + convert-source-map: 2.0.0 dev: true /vscode-oniguruma@1.7.0: @@ -5865,20 +4718,6 @@ packages: resolution: {integrity: sha512-Uw5ooOQxRASHgu6C7GVvUxisKXfSgW4oFlO+aa+PAkgmH89O3CXxEEzNRNtHSqtXFTl0nAC1uYj0GMSH27uwtQ==} dev: true - /w3c-hr-time@1.0.2: - resolution: {integrity: sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==} - deprecated: Use your platform's native performance.now() and performance.timeOrigin. - dependencies: - browser-process-hrtime: 1.0.0 - dev: true - - /w3c-xmlserializer@2.0.0: - resolution: {integrity: sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==} - engines: {node: '>=10'} - dependencies: - xml-name-validator: 3.0.0 - dev: true - /walker@1.0.8: resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} dependencies: @@ -5893,16 +4732,6 @@ packages: graceful-fs: 4.2.11 dev: true - /webidl-conversions@5.0.0: - resolution: {integrity: sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==} - engines: {node: '>=8'} - dev: true - - /webidl-conversions@6.1.0: - resolution: {integrity: sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==} - engines: {node: '>=10.4'} - dev: true - /webpack-cli@4.10.0(webpack@5.89.0): resolution: {integrity: sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w==} engines: {node: '>=10.13.0'} @@ -5993,25 +4822,6 @@ packages: - uglify-js dev: true - /whatwg-encoding@1.0.5: - resolution: {integrity: sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==} - dependencies: - iconv-lite: 0.4.24 - dev: true - - /whatwg-mimetype@2.3.0: - resolution: {integrity: sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==} - dev: true - - /whatwg-url@8.7.0: - resolution: {integrity: sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==} - engines: {node: '>=10'} - dependencies: - lodash: 4.17.21 - tr46: 2.1.0 - webidl-conversions: 6.1.0 - dev: true - /which-boxed-primitive@1.0.2: resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} dependencies: @@ -6049,10 +4859,6 @@ packages: is-weakset: 2.0.2 dev: true - /which-module@2.0.1: - resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} - dev: true - /which-typed-array@1.1.13: resolution: {integrity: sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==} engines: {node: '>= 0.4'} @@ -6064,13 +4870,6 @@ packages: has-tostringtag: 1.0.0 dev: true - /which@1.3.1: - resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} - hasBin: true - dependencies: - isexe: 2.0.0 - dev: true - /which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} @@ -6083,9 +4882,9 @@ packages: resolution: {integrity: sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==} dev: true - /wrap-ansi@6.2.0: - resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} - engines: {node: '>=8'} + /wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} dependencies: ansi-styles: 4.3.0 string-width: 4.2.3 @@ -6096,38 +4895,17 @@ packages: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} dev: true - /write-file-atomic@3.0.3: - resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} + /write-file-atomic@4.0.2: + resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} dependencies: imurmurhash: 0.1.4 - is-typedarray: 1.0.0 signal-exit: 3.0.7 - typedarray-to-buffer: 3.1.5 - dev: true - - /ws@7.5.9: - resolution: {integrity: sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==} - engines: {node: '>=8.3.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - dev: true - - /xml-name-validator@3.0.0: - resolution: {integrity: sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==} dev: true - /xmlchars@2.2.0: - resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} - dev: true - - /y18n@4.0.3: - resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} + /y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} dev: true /yallist@3.1.1: @@ -6136,38 +4914,32 @@ packages: /yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - - /yargs-parser@18.1.3: - resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} - engines: {node: '>=6'} - dependencies: - camelcase: 5.3.1 - decamelize: 1.2.0 dev: true - /yargs-parser@20.2.9: - resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} - engines: {node: '>=10'} + /yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} dev: true - /yargs@15.4.1: - resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} - engines: {node: '>=8'} + /yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} dependencies: - cliui: 6.0.0 - decamelize: 1.2.0 - find-up: 4.1.0 + cliui: 8.0.1 + escalade: 3.1.1 get-caller-file: 2.0.5 require-directory: 2.1.1 - require-main-filename: 2.0.0 - set-blocking: 2.0.0 string-width: 4.2.3 - which-module: 2.0.1 - y18n: 4.0.3 - yargs-parser: 18.1.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 dev: true /yn@3.1.1: resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} engines: {node: '>=6'} dev: true + + /yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + dev: true diff --git a/src/AccessToken.test.ts b/src/AccessToken.test.ts index f0ff1269..1e0a2c6a 100644 --- a/src/AccessToken.test.ts +++ b/src/AccessToken.test.ts @@ -1,5 +1,6 @@ -import * as jwt from 'jsonwebtoken'; +import * as jose from 'jose'; import { AccessToken, TokenVerifier } from './AccessToken'; +import { ClaimGrants } from './grants'; const testApiKey = 'abcdefg'; const testSecret = 'abababa'; @@ -10,48 +11,58 @@ describe('encoded tokens are valid', () => { name: 'myname', }); t.addGrant({ room: 'myroom' }); - const token = t.toJwt(); + const EncodedTestSecret = new TextEncoder().encode(testSecret); + it('can be decoded', async () => { + const { payload } = await jose.jwtVerify(await t.toJwt(), EncodedTestSecret, { + issuer: testApiKey, + }); - const decoded = jwt.verify(token, testSecret, { jwtid: 'me' }); - it('can be decoded', () => { - expect(decoded).not.toBe(undefined); + expect(payload).not.toBe(undefined); }); - it('has name set', () => { - expect(decoded.name).toBe('myname'); + it('has name set', async () => { + const { payload } = await jose.jwtVerify(await t.toJwt(), EncodedTestSecret, { + issuer: testApiKey, + }); + + expect(payload.name).toBe('myname'); }); - it('has video grants set', () => { - expect(decoded.video).toBeTruthy(); - expect(decoded.video.room).toEqual('myroom'); + it('has video grants set', async () => { + const { payload } = await jose.jwtVerify(await t.toJwt(), EncodedTestSecret, { + issuer: testApiKey, + }); + + expect(payload.video).toBeTruthy(); + expect((payload as ClaimGrants).video?.room).toEqual('myroom'); }); }); describe('identity is required for only join grants', () => { - it('allows empty identity for create', () => { + it('allows empty identity for create', async () => { const t = new AccessToken(testApiKey, testSecret); t.addGrant({ roomCreate: true }); - expect(t.toJwt()).toBeTruthy(); + expect(await t.toJwt()).toBeTruthy(); }); - it('throws error when identity is not provided for join', () => { + it('throws error when identity is not provided for join', async () => { const t = new AccessToken(testApiKey, testSecret); t.addGrant({ roomJoin: true }); - expect(() => { - t.toJwt(); - }).toThrow(); + await expect(async () => { + await t.toJwt(); + }).rejects.toThrow(); }); }); describe('verify token is valid', () => { - it('can decode encoded token', () => { + it('can decode encoded token', async () => { const t = new AccessToken(testApiKey, testSecret); t.sha256 = 'abcdefg'; t.addGrant({ roomCreate: true }); const v = new TokenVerifier(testApiKey, testSecret); - const decoded = v.verify(t.toJwt()); + const decoded = await v.verify(await t.toJwt()); expect(decoded).not.toBe(undefined); expect(decoded.sha256).toEqual('abcdefg'); @@ -60,7 +71,9 @@ describe('verify token is valid', () => { }); describe('adding grants should not overwrite existing grants', () => { - it('should not overwrite existing grants', () => { + const EncodedTestSecret = new TextEncoder().encode(testSecret); + + it('should not overwrite existing grants', async () => { const t = new AccessToken(testApiKey, testSecret, { identity: 'me', name: 'myname', @@ -68,8 +81,12 @@ describe('adding grants should not overwrite existing grants', () => { t.addGrant({ roomCreate: true }); t.addGrant({ roomJoin: true }); - const decoded = jwt.verify(t.toJwt(), testSecret, { jwtid: 'me' }); - expect(decoded.video?.roomCreate).toBeTruthy(); - expect(decoded.video?.roomJoin).toBeTruthy(); + const { payload }: jose.JWTVerifyResult = await jose.jwtVerify( + await t.toJwt(), + EncodedTestSecret, + { issuer: testApiKey }, + ); + expect(payload.video?.roomCreate).toBeTruthy(); + expect(payload.video?.roomJoin).toBeTruthy(); }); }); diff --git a/src/AccessToken.ts b/src/AccessToken.ts index 2f3b6149..5ea8b9e8 100644 --- a/src/AccessToken.ts +++ b/src/AccessToken.ts @@ -1,8 +1,8 @@ -import * as jwt from 'jsonwebtoken'; +import * as jose from 'jose'; import { ClaimGrants, VideoGrant } from './grants'; // 6 hours -const defaultTTL = 6 * 60 * 60; +const defaultTTL = `6h`; export interface AccessTokenOptions { /** @@ -37,7 +37,7 @@ export class AccessToken { identity?: string; - ttl?: number | string; + ttl: number | string; /** * Creates a new AccessToken @@ -61,12 +61,14 @@ export class AccessToken { 'the API secret to generate a token. See https://docs.livekit.io/client/connect/', ); } - this.apiKey = apiKey; this.apiSecret = apiSecret; this.grants = {}; this.identity = options?.identity; this.ttl = options?.ttl || defaultTTL; + if (typeof this.ttl === 'number') { + this.ttl = `${this.ttl}s`; + } if (options?.metadata) { this.metadata = options.metadata; } @@ -105,21 +107,21 @@ export class AccessToken { /** * @returns JWT encoded token */ - toJwt(): string { + async toJwt(): Promise { // TODO: check for video grant validity - const opts: jwt.SignOptions = { - issuer: this.apiKey, - expiresIn: this.ttl, - notBefore: 0, - }; + const secret = new TextEncoder().encode(this.apiSecret); + const jwt = new jose.SignJWT(this.grants) + .setProtectedHeader({ alg: 'HS256' }) + .setIssuer(this.apiKey) + .setExpirationTime(this.ttl) + .setNotBefore(0); if (this.identity) { - opts.subject = this.identity; - opts.jwtid = this.identity; + jwt.setSubject(this.identity); } else if (this.grants.video?.roomJoin) { throw Error('identity is required for join but not set'); } - return jwt.sign(this.grants, this.apiSecret, opts); + return jwt.sign(secret); } } @@ -133,12 +135,13 @@ export class TokenVerifier { this.apiSecret = apiSecret; } - verify(token: string): ClaimGrants { - const decoded = jwt.verify(token, this.apiSecret, { issuer: this.apiKey }); - if (!decoded) { + async verify(token: string): Promise { + const secret = new TextEncoder().encode(this.apiSecret); + const { payload } = await jose.jwtVerify(token, secret, { issuer: this.apiKey }); + if (!payload) { throw Error('invalid token'); } - return decoded as ClaimGrants; + return payload as ClaimGrants; } } diff --git a/src/EgressClient.ts b/src/EgressClient.ts index 81432d71..13054983 100644 --- a/src/EgressClient.ts +++ b/src/EgressClient.ts @@ -194,7 +194,7 @@ export class EgressClient extends ServiceBase { svc, 'StartRoomCompositeEgress', req, - this.authHeader({ roomRecord: true }), + await this.authHeader({ roomRecord: true }), ); return EgressInfo.fromJSON(data); } @@ -233,7 +233,7 @@ export class EgressClient extends ServiceBase { svc, 'StartWebEgress', req, - this.authHeader({ roomRecord: true }), + await this.authHeader({ roomRecord: true }), ); return EgressInfo.fromJSON(data); } @@ -336,7 +336,7 @@ export class EgressClient extends ServiceBase { svc, 'StartTrackCompositeEgress', req, - this.authHeader({ roomRecord: true }), + await this.authHeader({ roomRecord: true }), ); return EgressInfo.fromJSON(data); } @@ -445,7 +445,7 @@ export class EgressClient extends ServiceBase { svc, 'StartTrackEgress', req, - this.authHeader({ roomRecord: true }), + await this.authHeader({ roomRecord: true }), ); return EgressInfo.fromJSON(data); } @@ -459,7 +459,7 @@ export class EgressClient extends ServiceBase { svc, 'UpdateLayout', UpdateLayoutRequest.toJSON({ egressId, layout }), - this.authHeader({ roomRecord: true }), + await this.authHeader({ roomRecord: true }), ); return EgressInfo.fromJSON(data); } @@ -481,7 +481,7 @@ export class EgressClient extends ServiceBase { svc, 'UpdateStream', UpdateStreamRequest.toJSON({ egressId, addOutputUrls, removeOutputUrls }), - this.authHeader({ roomRecord: true }), + await this.authHeader({ roomRecord: true }), ); return EgressInfo.fromJSON(data); } @@ -511,7 +511,7 @@ export class EgressClient extends ServiceBase { svc, 'ListEgress', ListEgressRequest.toJSON(req), - this.authHeader({ roomRecord: true }), + await this.authHeader({ roomRecord: true }), ); return ListEgressResponse.fromJSON(data).items ?? []; } @@ -524,7 +524,7 @@ export class EgressClient extends ServiceBase { svc, 'StopEgress', StopEgressRequest.toJSON({ egressId }), - this.authHeader({ roomRecord: true }), + await this.authHeader({ roomRecord: true }), ); return EgressInfo.fromJSON(data); } diff --git a/src/IngressClient.ts b/src/IngressClient.ts index bc0ca104..1d7691b6 100644 --- a/src/IngressClient.ts +++ b/src/IngressClient.ts @@ -149,7 +149,7 @@ export class IngressClient extends ServiceBase { svc, 'CreateIngress', req, - this.authHeader({ ingressAdmin: true }), + await this.authHeader({ ingressAdmin: true }), ); return IngressInfo.fromJSON(data); } @@ -180,7 +180,7 @@ export class IngressClient extends ServiceBase { svc, 'UpdateIngress', req, - this.authHeader({ ingressAdmin: true }), + await this.authHeader({ ingressAdmin: true }), ); return IngressInfo.fromJSON(data); } @@ -205,7 +205,7 @@ export class IngressClient extends ServiceBase { svc, 'ListIngress', ListIngressRequest.toJSON(req), - this.authHeader({ ingressAdmin: true }), + await this.authHeader({ ingressAdmin: true }), ); return ListIngressResponse.fromJSON(data).items ?? []; } @@ -218,7 +218,7 @@ export class IngressClient extends ServiceBase { svc, 'DeleteIngress', DeleteIngressRequest.toJSON({ ingressId }), - this.authHeader({ ingressAdmin: true }), + await this.authHeader({ ingressAdmin: true }), ); return IngressInfo.fromJSON(data); } diff --git a/src/RoomServiceClient.ts b/src/RoomServiceClient.ts index 37496ccf..9f6f6c03 100644 --- a/src/RoomServiceClient.ts +++ b/src/RoomServiceClient.ts @@ -109,7 +109,7 @@ export class RoomServiceClient extends ServiceBase { svc, 'CreateRoom', CreateRoomRequest.toJSON(CreateRoomRequest.fromPartial(options)), - this.authHeader({ roomCreate: true }), + await this.authHeader({ roomCreate: true }), ); return Room.fromJSON(data); } @@ -125,7 +125,7 @@ export class RoomServiceClient extends ServiceBase { svc, 'ListRooms', ListRoomsRequest.toJSON({ names: names ?? [] }), - this.authHeader({ roomList: true }), + await this.authHeader({ roomList: true }), ); const res = ListRoomsResponse.fromJSON(data); return res.rooms ?? []; @@ -136,7 +136,7 @@ export class RoomServiceClient extends ServiceBase { svc, 'DeleteRoom', DeleteRoomRequest.toJSON({ room }), - this.authHeader({ roomCreate: true }), + await this.authHeader({ roomCreate: true }), ); } @@ -150,7 +150,7 @@ export class RoomServiceClient extends ServiceBase { svc, 'UpdateRoomMetadata', UpdateRoomMetadataRequest.toJSON({ room, metadata }), - this.authHeader({ roomAdmin: true, room }), + await this.authHeader({ roomAdmin: true, room }), ); return Room.fromJSON(data); } @@ -164,7 +164,7 @@ export class RoomServiceClient extends ServiceBase { svc, 'ListParticipants', ListParticipantsRequest.toJSON({ room }), - this.authHeader({ roomAdmin: true, room }), + await this.authHeader({ roomAdmin: true, room }), ); const res = ListParticipantsResponse.fromJSON(data); return res.participants ?? []; @@ -181,7 +181,7 @@ export class RoomServiceClient extends ServiceBase { svc, 'GetParticipant', RoomParticipantIdentity.toJSON({ room, identity }), - this.authHeader({ roomAdmin: true, room }), + await this.authHeader({ roomAdmin: true, room }), ); return ParticipantInfo.fromJSON(data); @@ -199,7 +199,7 @@ export class RoomServiceClient extends ServiceBase { svc, 'RemoveParticipant', RoomParticipantIdentity.toJSON({ room, identity }), - this.authHeader({ roomAdmin: true, room }), + await this.authHeader({ roomAdmin: true, room }), ); } @@ -226,7 +226,7 @@ export class RoomServiceClient extends ServiceBase { svc, 'MutePublishedTrack', req, - this.authHeader({ roomAdmin: true, room }), + await this.authHeader({ roomAdmin: true, room }), ); const res = MuteRoomTrackResponse.fromJSON(data); return res.track!; @@ -260,7 +260,7 @@ export class RoomServiceClient extends ServiceBase { svc, 'UpdateParticipant', UpdateParticipantRequest.toJSON(req), - this.authHeader({ roomAdmin: true, room }), + await this.authHeader({ roomAdmin: true, room }), ); return ParticipantInfo.fromJSON(data); } @@ -289,7 +289,7 @@ export class RoomServiceClient extends ServiceBase { svc, 'UpdateSubscriptions', req, - this.authHeader({ roomAdmin: true, room }), + await this.authHeader({ roomAdmin: true, room }), ); } @@ -342,7 +342,7 @@ export class RoomServiceClient extends ServiceBase { svc, 'SendData', SendDataRequest.toJSON(req), - this.authHeader({ roomAdmin: true, room }), + await this.authHeader({ roomAdmin: true, room }), ); } } diff --git a/src/ServiceBase.ts b/src/ServiceBase.ts index 7837ac0d..5942846f 100644 --- a/src/ServiceBase.ts +++ b/src/ServiceBase.ts @@ -22,11 +22,11 @@ export default class ServiceBase { this.ttl = ttl || '10m'; } - authHeader(grant: VideoGrant): any { + async authHeader(grant: VideoGrant): Promise { const at = new AccessToken(this.apiKey, this.secret, { ttl: this.ttl }); at.addGrant(grant); return { - Authorization: `Bearer ${at.toJwt()}`, + Authorization: `Bearer ${await at.toJwt()}`, }; } } diff --git a/src/WebhookReceiver.test.ts b/src/WebhookReceiver.test.ts index 7f864786..580f4a8f 100644 --- a/src/WebhookReceiver.test.ts +++ b/src/WebhookReceiver.test.ts @@ -11,11 +11,12 @@ describe('webhook receiver', () => { const sha = 'CoEQz1chqJ9bnZRcORddjplkvpjmPujmLTR42DbefYI='; const t = new AccessToken(testApiKey, testSecret); t.sha256 = sha; - const token = t.toJwt(); + const receiver = new WebhookReceiver(testApiKey, testSecret); - it('should receive and decode WebhookEvent', () => { - const event = receiver.receive(body, token); + it('should receive and decode WebhookEvent', async () => { + const token = await t.toJwt(); + const event = await receiver.receive(body, token); expect(event).toBeTruthy(); expect(event.room?.name).toBe('mytestroom'); expect(event.event).toBe('room_started'); diff --git a/src/WebhookReceiver.ts b/src/WebhookReceiver.ts index 9b87c95a..299f18ff 100644 --- a/src/WebhookReceiver.ts +++ b/src/WebhookReceiver.ts @@ -18,13 +18,17 @@ export class WebhookReceiver { * @param skipAuth true to skip auth validation * @returns */ - receive(body: string, authHeader?: string, skipAuth: boolean = false): WebhookEvent { + async receive( + body: string, + authHeader?: string, + skipAuth: boolean = false, + ): Promise { // verify token if (!skipAuth) { if (!authHeader) { throw new Error('authorization header is empty'); } - const claims = this.verifier.verify(authHeader); + const claims = await this.verifier.verify(authHeader); // confirm sha const hash = crypto.createHash('sha256'); hash.update(body); diff --git a/src/grants.ts b/src/grants.ts index b69cccb6..d8f7c43d 100644 --- a/src/grants.ts +++ b/src/grants.ts @@ -1,3 +1,5 @@ +import { JWTPayload } from 'jose'; + export enum TrackSource { CAMERA = 'camera', MICROPHONE = 'microphone', @@ -60,7 +62,7 @@ export interface VideoGrant { } /** @internal */ -export interface ClaimGrants { +export interface ClaimGrants extends JWTPayload { name?: string; video?: VideoGrant; metadata?: string; From 1e49176869d668e926f9818db7886628952cdca7 Mon Sep 17 00:00:00 2001 From: lukasIO Date: Tue, 5 Dec 2023 17:29:11 +0100 Subject: [PATCH 02/11] Use protobuf-es (#116) * merge main * Cleanup & Lint * fix tests * fix dependencies * fix tests * update protobuf lib * use protobuf-es * change package type to ESM and use vitest to support tests with ESM * Use fully specified imports everywhere * cleanup deps * cleanup deps --------- Co-authored-by: Mohammad Rasim --- generate-proto.sh | 19 +- package.json | 25 +- pnpm-lock.yaml | 3300 ++++----------- protocol | 2 +- src/AccessToken.test.ts | 1 + src/AccessToken.ts | 2 +- src/EgressClient.ts | 201 +- src/IngressClient.ts | 28 +- src/RoomServiceClient.ts | 62 +- src/ServiceBase.ts | 4 +- src/TwirpRPC.ts | 3 +- src/WebhookReceiver.test.ts | 9 +- src/WebhookReceiver.ts | 6 +- src/index.ts | 20 +- src/proto/google/protobuf/timestamp.ts | 214 - src/proto/livekit_egress.ts | 5336 ------------------------ src/proto/livekit_egress_pb.ts | 2542 +++++++++++ src/proto/livekit_ingress.ts | 2070 --------- src/proto/livekit_ingress_pb.ts | 1056 +++++ src/proto/livekit_models.ts | 4887 ---------------------- src/proto/livekit_models_pb.ts | 2249 ++++++++++ src/proto/livekit_room.ts | 1720 -------- src/proto/livekit_room_pb.ts | 888 ++++ src/proto/livekit_webhook.ts | 268 -- src/proto/livekit_webhook_pb.ts | 126 + tsconfig.json | 8 +- vite.config.js | 7 + 27 files changed, 7820 insertions(+), 17233 deletions(-) delete mode 100644 src/proto/google/protobuf/timestamp.ts delete mode 100644 src/proto/livekit_egress.ts create mode 100644 src/proto/livekit_egress_pb.ts delete mode 100644 src/proto/livekit_ingress.ts create mode 100644 src/proto/livekit_ingress_pb.ts delete mode 100644 src/proto/livekit_models.ts create mode 100644 src/proto/livekit_models_pb.ts delete mode 100644 src/proto/livekit_room.ts create mode 100644 src/proto/livekit_room_pb.ts delete mode 100644 src/proto/livekit_webhook.ts create mode 100644 src/proto/livekit_webhook_pb.ts create mode 100644 vite.config.js diff --git a/generate-proto.sh b/generate-proto.sh index a57b67a9..422eda21 100755 --- a/generate-proto.sh +++ b/generate-proto.sh @@ -5,21 +5,4 @@ set -e rm -rf ./src/proto/* -OPTS="esModuleInterop=true,useOptionals=all,outputClientImpl=false" -# ts-proto has a bug when generating timestamp fields -MODEL_OPTS="esModuleInterop=true,useOptionals=messages,outputClientImpl=false" - -# Generate all protos for the browser -protoc --plugin="./node_modules/ts-proto/protoc-gen-ts_proto" \ - --ts_proto_out="./src/proto" \ - --ts_proto_opt="${OPTS}" \ - -I"./protocol/" \ - ./protocol/livekit_egress.proto ./protocol/livekit_room.proto ./protocol/livekit_webhook.proto - -# Generate model to ensure it doesn't have optional timestamps -protoc --plugin="./node_modules/ts-proto/protoc-gen-ts_proto" \ - --ts_proto_out="./src/proto" \ - --ts_proto_opt="${MODEL_OPTS}" \ - -I"./protocol/" \ - ./protocol/livekit_models.proto - +protoc --es_out src/proto --es_opt target=ts -I./protocol ./protocol/livekit_egress.proto ./protocol/livekit_ingress.proto ./protocol/livekit_room.proto ./protocol/livekit_webhook.proto ./protocol/livekit_models.proto diff --git a/package.json b/package.json index 3f645cd1..723a383f 100644 --- a/package.json +++ b/package.json @@ -7,8 +7,9 @@ "repository": "git@github.com:livekit/server-sdk-js.git", "author": "David Zhao ", "license": "Apache-2.0", + "type": "module", "scripts": { - "build": "tsc", + "build": "tsc --project tsconfig.json", "build:watch": "tsc --watch", "build-docs": "typedoc", "proto": "./generate-proto.sh", @@ -16,32 +17,26 @@ "format": "prettier --write src", "format:check": "prettier --check src", "prepare": "pnpm build", - "test": "jest" + "test": "vitest run" }, "dependencies": { + "@bufbuild/protobuf": "^1.3.0", "axios": "^1.3.6", "camelcase-keys": "^7.0.0", - "jose": "^5.1.2", - "long": "^5.0.0", - "protobufjs": "^7.2.4" + "jose": "^5.1.2" }, "devDependencies": { - "@types/jest": "^29.5.10", + "@bufbuild/protoc-gen-es": "^1.3.0", "@types/node": "^20.10.1", "@typescript-eslint/eslint-plugin": "^4.29.1", "eslint": "^7.32.0", "eslint-config-airbnb-typescript": "^12.3.1", "eslint-config-prettier": "^8.5.0", "eslint-plugin-import": "^2.24.0", - "jest": "^29.7.0", "prettier": "^2.6.2", - "ts-jest": "^29.1.1", - "ts-loader": "^8.0.11", - "ts-node": "^9.1.1", - "ts-proto": "^1.131.0", - "typedoc": "^0.22.13", - "typescript": "4.3.x", - "webpack": "^5.9.0", - "webpack-cli": "^4.2.0" + "typedoc": "^0.25.4", + "typescript": "4.6.x", + "vite": "^5.0.5", + "vitest": "^0.34.6" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0c1950c6..fb8314b1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5,6 +5,9 @@ settings: excludeLinksFromLockfile: false dependencies: + '@bufbuild/protobuf': + specifier: ^1.3.0 + version: 1.4.2 axios: specifier: ^1.3.6 version: 1.6.1 @@ -14,65 +17,44 @@ dependencies: jose: specifier: ^5.1.2 version: 5.1.2 - long: - specifier: ^5.0.0 - version: 5.2.3 - protobufjs: - specifier: ^7.2.4 - version: 7.2.5 devDependencies: - '@types/jest': - specifier: ^29.5.10 - version: 29.5.10 + '@bufbuild/protoc-gen-es': + specifier: ^1.3.0 + version: 1.4.2(@bufbuild/protobuf@1.4.2) '@types/node': specifier: ^20.10.1 version: 20.10.1 '@typescript-eslint/eslint-plugin': specifier: ^4.29.1 - version: 4.33.0(@typescript-eslint/parser@4.33.0)(eslint@7.32.0)(typescript@4.3.5) + version: 4.33.0(@typescript-eslint/parser@4.33.0)(eslint@7.32.0)(typescript@4.6.4) eslint: specifier: ^7.32.0 version: 7.32.0 eslint-config-airbnb-typescript: specifier: ^12.3.1 - version: 12.3.1(eslint-plugin-import@2.29.0)(eslint-plugin-jsx-a11y@6.8.0)(eslint-plugin-react-hooks@4.6.0)(eslint-plugin-react@7.33.2)(eslint@7.32.0)(typescript@4.3.5) + version: 12.3.1(eslint-plugin-import@2.29.0)(eslint-plugin-jsx-a11y@6.8.0)(eslint-plugin-react-hooks@4.6.0)(eslint-plugin-react@7.33.2)(eslint@7.32.0)(typescript@4.6.4) eslint-config-prettier: specifier: ^8.5.0 version: 8.10.0(eslint@7.32.0) eslint-plugin-import: specifier: ^2.24.0 version: 2.29.0(@typescript-eslint/parser@4.33.0)(eslint@7.32.0) - jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@20.10.1)(ts-node@9.1.1) prettier: specifier: ^2.6.2 version: 2.8.8 - ts-jest: - specifier: ^29.1.1 - version: 29.1.1(@babel/core@7.23.3)(jest@29.7.0)(typescript@4.3.5) - ts-loader: - specifier: ^8.0.11 - version: 8.4.0(typescript@4.3.5)(webpack@5.89.0) - ts-node: - specifier: ^9.1.1 - version: 9.1.1(typescript@4.3.5) - ts-proto: - specifier: ^1.131.0 - version: 1.164.0 typedoc: - specifier: ^0.22.13 - version: 0.22.18(typescript@4.3.5) + specifier: ^0.25.4 + version: 0.25.4(typescript@4.6.4) typescript: - specifier: 4.3.x - version: 4.3.5 - webpack: - specifier: ^5.9.0 - version: 5.89.0(webpack-cli@4.10.0) - webpack-cli: - specifier: ^4.2.0 - version: 4.10.0(webpack@5.89.0) + specifier: 4.6.x + version: 4.6.4 + vite: + specifier: ^5.0.5 + version: 5.0.5(@types/node@20.10.1) + vitest: + specifier: ^0.34.6 + version: 0.34.6 packages: @@ -81,360 +63,259 @@ packages: engines: {node: '>=0.10.0'} dev: true - /@ampproject/remapping@2.2.1: - resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} - engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.20 - dev: true - /@babel/code-frame@7.12.11: resolution: {integrity: sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==} dependencies: '@babel/highlight': 7.22.20 dev: true - /@babel/code-frame@7.22.13: - resolution: {integrity: sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/highlight': 7.22.20 - chalk: 2.4.2 - dev: true - - /@babel/compat-data@7.23.3: - resolution: {integrity: sha512-BmR4bWbDIoFJmJ9z2cZ8Gmm2MXgEDgjdWgpKmKWUt54UGFJdlj31ECtbaDvCG/qVdG3AQ1SfpZEs01lUFbzLOQ==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/core@7.23.3: - resolution: {integrity: sha512-Jg+msLuNuCJDyBvFv5+OKOUjWMZgd85bKjbICd3zWrKAo+bJ49HJufi7CQE0q0uR8NGyO6xkCACScNqyjHSZew==} - engines: {node: '>=6.9.0'} - dependencies: - '@ampproject/remapping': 2.2.1 - '@babel/code-frame': 7.22.13 - '@babel/generator': 7.23.3 - '@babel/helper-compilation-targets': 7.22.15 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.3) - '@babel/helpers': 7.23.2 - '@babel/parser': 7.23.3 - '@babel/template': 7.22.15 - '@babel/traverse': 7.23.3 - '@babel/types': 7.23.3 - convert-source-map: 2.0.0 - debug: 4.3.4 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/generator@7.23.3: - resolution: {integrity: sha512-keeZWAV4LU3tW0qRi19HRpabC/ilM0HRBBzf9/k8FFiG4KVpiv0FIy4hHfLfFQZNhziCTPTmd59zoyv6DNISzg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.23.3 - '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.20 - jsesc: 2.5.2 - dev: true - - /@babel/helper-compilation-targets@7.22.15: - resolution: {integrity: sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/compat-data': 7.23.3 - '@babel/helper-validator-option': 7.22.15 - browserslist: 4.22.1 - lru-cache: 5.1.1 - semver: 6.3.1 - dev: true - - /@babel/helper-environment-visitor@7.22.20: - resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} + /@babel/helper-validator-identifier@7.22.20: + resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} engines: {node: '>=6.9.0'} dev: true - /@babel/helper-function-name@7.23.0: - resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} + /@babel/highlight@7.22.20: + resolution: {integrity: sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.22.15 - '@babel/types': 7.23.3 + '@babel/helper-validator-identifier': 7.22.20 + chalk: 2.4.2 + js-tokens: 4.0.0 dev: true - /@babel/helper-hoist-variables@7.22.5: - resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} + /@babel/runtime@7.23.2: + resolution: {integrity: sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.3 + regenerator-runtime: 0.14.0 dev: true - /@babel/helper-module-imports@7.22.15: - resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.23.3 - dev: true + /@bufbuild/protobuf@1.4.2: + resolution: {integrity: sha512-JyEH8Z+OD5Sc2opSg86qMHn1EM1Sa+zj/Tc0ovxdwk56ByVNONJSabuCUbLQp+eKN3rWNfrho0X+3SEqEPXIow==} - /@babel/helper-module-transforms@7.23.3(@babel/core@7.23.3): - resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} - engines: {node: '>=6.9.0'} + /@bufbuild/protoc-gen-es@1.4.2(@bufbuild/protobuf@1.4.2): + resolution: {integrity: sha512-/It7M2s8H1zTDvUMJu6vhBmtnzeFL2VS6e78RYIY38602pNXDK/vbteKUo4KrG0O07lOPFu87hHZ0Y+w5Ib6iw==} + engines: {node: '>=14'} + hasBin: true peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.23.3 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-module-imports': 7.22.15 - '@babel/helper-simple-access': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/helper-validator-identifier': 7.22.20 - dev: true - - /@babel/helper-plugin-utils@7.22.5: - resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/helper-simple-access@7.22.5: - resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.23.3 - dev: true - - /@babel/helper-split-export-declaration@7.22.6: - resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} - engines: {node: '>=6.9.0'} + '@bufbuild/protobuf': 1.4.2 + peerDependenciesMeta: + '@bufbuild/protobuf': + optional: true dependencies: - '@babel/types': 7.23.3 - dev: true - - /@babel/helper-string-parser@7.22.5: - resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/helper-validator-identifier@7.22.20: - resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/helper-validator-option@7.22.15: - resolution: {integrity: sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==} - engines: {node: '>=6.9.0'} + '@bufbuild/protobuf': 1.4.2 + '@bufbuild/protoplugin': 1.4.2 + transitivePeerDependencies: + - supports-color dev: true - /@babel/helpers@7.23.2: - resolution: {integrity: sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ==} - engines: {node: '>=6.9.0'} + /@bufbuild/protoplugin@1.4.2: + resolution: {integrity: sha512-5IwGC1ZRD2A+KydGXeaSOErwfILLqVtvMH/RkN+cOoHcQd4EYXFStcF7g7aR+yICRDEEjQVi5tQF/qPGBSr9vg==} dependencies: - '@babel/template': 7.22.15 - '@babel/traverse': 7.23.3 - '@babel/types': 7.23.3 + '@bufbuild/protobuf': 1.4.2 + '@typescript/vfs': 1.5.0 + typescript: 4.5.2 transitivePeerDependencies: - supports-color dev: true - /@babel/highlight@7.22.20: - resolution: {integrity: sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-validator-identifier': 7.22.20 - chalk: 2.4.2 - js-tokens: 4.0.0 + /@esbuild/android-arm64@0.19.8: + resolution: {integrity: sha512-B8JbS61bEunhfx8kasogFENgQfr/dIp+ggYXwTqdbMAgGDhRa3AaPpQMuQU0rNxDLECj6FhDzk1cF9WHMVwrtA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true dev: true + optional: true - /@babel/parser@7.23.3: - resolution: {integrity: sha512-uVsWNvlVsIninV2prNz/3lHCb+5CJ+e+IUBfbjToAHODtfGYLfCFuY4AU7TskI+dAKk+njsPiBjq1gKTvZOBaw==} - engines: {node: '>=6.0.0'} - hasBin: true - dependencies: - '@babel/types': 7.23.3 + /@esbuild/android-arm@0.19.8: + resolution: {integrity: sha512-31E2lxlGM1KEfivQl8Yf5aYU/mflz9g06H6S15ITUFQueMFtFjESRMoDSkvMo8thYvLBax+VKTPlpnx+sPicOA==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true dev: true + optional: true - /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.23.3): - resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.3 - '@babel/helper-plugin-utils': 7.22.5 + /@esbuild/android-x64@0.19.8: + resolution: {integrity: sha512-rdqqYfRIn4jWOp+lzQttYMa2Xar3OK9Yt2fhOhzFXqg0rVWEfSclJvZq5fZslnz6ypHvVf3CT7qyf0A5pM682A==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true dev: true + optional: true - /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.23.3): - resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.3 - '@babel/helper-plugin-utils': 7.22.5 + /@esbuild/darwin-arm64@0.19.8: + resolution: {integrity: sha512-RQw9DemMbIq35Bprbboyf8SmOr4UXsRVxJ97LgB55VKKeJOOdvsIPy0nFyF2l8U+h4PtBx/1kRf0BelOYCiQcw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true dev: true + optional: true - /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.23.3): - resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.3 - '@babel/helper-plugin-utils': 7.22.5 + /@esbuild/darwin-x64@0.19.8: + resolution: {integrity: sha512-3sur80OT9YdeZwIVgERAysAbwncom7b4bCI2XKLjMfPymTud7e/oY4y+ci1XVp5TfQp/bppn7xLw1n/oSQY3/Q==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true dev: true + optional: true - /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.23.3): - resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.3 - '@babel/helper-plugin-utils': 7.22.5 + /@esbuild/freebsd-arm64@0.19.8: + resolution: {integrity: sha512-WAnPJSDattvS/XtPCTj1tPoTxERjcTpH6HsMr6ujTT+X6rylVe8ggxk8pVxzf5U1wh5sPODpawNicF5ta/9Tmw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true dev: true + optional: true - /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.23.3): - resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.3 - '@babel/helper-plugin-utils': 7.22.5 + /@esbuild/freebsd-x64@0.19.8: + resolution: {integrity: sha512-ICvZyOplIjmmhjd6mxi+zxSdpPTKFfyPPQMQTK/w+8eNK6WV01AjIztJALDtwNNfFhfZLux0tZLC+U9nSyA5Zg==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true dev: true + optional: true - /@babel/plugin-syntax-jsx@7.23.3(@babel/core@7.23.3): - resolution: {integrity: sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.3 - '@babel/helper-plugin-utils': 7.22.5 + /@esbuild/linux-arm64@0.19.8: + resolution: {integrity: sha512-z1zMZivxDLHWnyGOctT9JP70h0beY54xDDDJt4VpTX+iwA77IFsE1vCXWmprajJGa+ZYSqkSbRQ4eyLCpCmiCQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true dev: true + optional: true - /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.23.3): - resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.3 - '@babel/helper-plugin-utils': 7.22.5 + /@esbuild/linux-arm@0.19.8: + resolution: {integrity: sha512-H4vmI5PYqSvosPaTJuEppU9oz1dq2A7Mr2vyg5TF9Ga+3+MGgBdGzcyBP7qK9MrwFQZlvNyJrvz6GuCaj3OukQ==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true dev: true + optional: true - /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.23.3): - resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.3 - '@babel/helper-plugin-utils': 7.22.5 + /@esbuild/linux-ia32@0.19.8: + resolution: {integrity: sha512-1a8suQiFJmZz1khm/rDglOc8lavtzEMRo0v6WhPgxkrjcU0LkHj+TwBrALwoz/OtMExvsqbbMI0ChyelKabSvQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true dev: true + optional: true - /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.23.3): - resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.3 - '@babel/helper-plugin-utils': 7.22.5 + /@esbuild/linux-loong64@0.19.8: + resolution: {integrity: sha512-fHZWS2JJxnXt1uYJsDv9+b60WCc2RlvVAy1F76qOLtXRO+H4mjt3Tr6MJ5l7Q78X8KgCFudnTuiQRBhULUyBKQ==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true dev: true + optional: true - /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.23.3): - resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.3 - '@babel/helper-plugin-utils': 7.22.5 + /@esbuild/linux-mips64el@0.19.8: + resolution: {integrity: sha512-Wy/z0EL5qZYLX66dVnEg9riiwls5IYnziwuju2oUiuxVc+/edvqXa04qNtbrs0Ukatg5HEzqT94Zs7J207dN5Q==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true dev: true + optional: true - /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.23.3): - resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.3 - '@babel/helper-plugin-utils': 7.22.5 + /@esbuild/linux-ppc64@0.19.8: + resolution: {integrity: sha512-ETaW6245wK23YIEufhMQ3HSeHO7NgsLx8gygBVldRHKhOlD1oNeNy/P67mIh1zPn2Hr2HLieQrt6tWrVwuqrxg==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true dev: true + optional: true - /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.23.3): - resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.3 - '@babel/helper-plugin-utils': 7.22.5 + /@esbuild/linux-riscv64@0.19.8: + resolution: {integrity: sha512-T2DRQk55SgoleTP+DtPlMrxi/5r9AeFgkhkZ/B0ap99zmxtxdOixOMI570VjdRCs9pE4Wdkz7JYrsPvsl7eESg==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true dev: true + optional: true - /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.23.3): - resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.3 - '@babel/helper-plugin-utils': 7.22.5 + /@esbuild/linux-s390x@0.19.8: + resolution: {integrity: sha512-NPxbdmmo3Bk7mbNeHmcCd7R7fptJaczPYBaELk6NcXxy7HLNyWwCyDJ/Xx+/YcNH7Im5dHdx9gZ5xIwyliQCbg==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true dev: true + optional: true - /@babel/plugin-syntax-typescript@7.23.3(@babel/core@7.23.3): - resolution: {integrity: sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.3 - '@babel/helper-plugin-utils': 7.22.5 + /@esbuild/linux-x64@0.19.8: + resolution: {integrity: sha512-lytMAVOM3b1gPypL2TRmZ5rnXl7+6IIk8uB3eLsV1JwcizuolblXRrc5ShPrO9ls/b+RTp+E6gbsuLWHWi2zGg==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true dev: true + optional: true - /@babel/runtime@7.23.2: - resolution: {integrity: sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==} - engines: {node: '>=6.9.0'} - dependencies: - regenerator-runtime: 0.14.0 + /@esbuild/netbsd-x64@0.19.8: + resolution: {integrity: sha512-hvWVo2VsXz/8NVt1UhLzxwAfo5sioj92uo0bCfLibB0xlOmimU/DeAEsQILlBQvkhrGjamP0/el5HU76HAitGw==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true dev: true + optional: true - /@babel/template@7.22.15: - resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.22.13 - '@babel/parser': 7.23.3 - '@babel/types': 7.23.3 + /@esbuild/openbsd-x64@0.19.8: + resolution: {integrity: sha512-/7Y7u77rdvmGTxR83PgaSvSBJCC2L3Kb1M/+dmSIvRvQPXXCuC97QAwMugBNG0yGcbEGfFBH7ojPzAOxfGNkwQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true dev: true + optional: true - /@babel/traverse@7.23.3: - resolution: {integrity: sha512-+K0yF1/9yR0oHdE0StHuEj3uTPzwwbrLGfNOndVJVV2TqA5+j3oljJUb4nmB954FLGjNem976+B+eDuLIjesiQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.22.13 - '@babel/generator': 7.23.3 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/parser': 7.23.3 - '@babel/types': 7.23.3 - debug: 4.3.4 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color + /@esbuild/sunos-x64@0.19.8: + resolution: {integrity: sha512-9Lc4s7Oi98GqFA4HzA/W2JHIYfnXbUYgekUP/Sm4BG9sfLjyv6GKKHKKVs83SMicBF2JwAX6A1PuOLMqpD001w==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true dev: true + optional: true - /@babel/types@7.23.3: - resolution: {integrity: sha512-OZnvoH2l8PK5eUvEcUyCt/sXgr/h+UWpVuBbOljwcrAgUl6lpchoQ++PHGyQy1AtYnVA6CEq3y5xeEI10brpXw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-string-parser': 7.22.5 - '@babel/helper-validator-identifier': 7.22.20 - to-fast-properties: 2.0.0 + /@esbuild/win32-arm64@0.19.8: + resolution: {integrity: sha512-rq6WzBGjSzihI9deW3fC2Gqiak68+b7qo5/3kmB6Gvbh/NYPA0sJhrnp7wgV4bNwjqM+R2AApXGxMO7ZoGhIJg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true dev: true + optional: true - /@bcoe/v8-coverage@0.2.3: - resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + /@esbuild/win32-ia32@0.19.8: + resolution: {integrity: sha512-AIAbverbg5jMvJznYiGhrd3sumfwWs8572mIJL5NQjJa06P8KfCPWZQ0NwZbPQnbQi9OWSZhFVSUWjjIrn4hSw==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true dev: true + optional: true - /@discoveryjs/json-ext@0.5.7: - resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==} - engines: {node: '>=10.0.0'} + /@esbuild/win32-x64@0.19.8: + resolution: {integrity: sha512-bfZ0cQ1uZs2PqpulNL5j/3w+GDhP36k1K5c38QdQg+Swy51jFZWWeIkteNsufkQxp986wnqRRsb/bHbY1WQ7TA==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true dev: true + optional: true /@eslint/eslintrc@0.4.3: resolution: {integrity: sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==} @@ -468,165 +349,6 @@ packages: resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} dev: true - /@istanbuljs/load-nyc-config@1.1.0: - resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} - engines: {node: '>=8'} - dependencies: - camelcase: 5.3.1 - find-up: 4.1.0 - get-package-type: 0.1.0 - js-yaml: 3.14.1 - resolve-from: 5.0.0 - dev: true - - /@istanbuljs/schema@0.1.3: - resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} - engines: {node: '>=8'} - dev: true - - /@jest/console@29.7.0: - resolution: {integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/types': 29.6.3 - '@types/node': 20.10.1 - chalk: 4.1.2 - jest-message-util: 29.7.0 - jest-util: 29.7.0 - slash: 3.0.0 - dev: true - - /@jest/core@29.7.0(ts-node@9.1.1): - resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - dependencies: - '@jest/console': 29.7.0 - '@jest/reporters': 29.7.0 - '@jest/test-result': 29.7.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 20.10.1 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - ci-info: 3.9.0 - exit: 0.1.2 - graceful-fs: 4.2.11 - jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@20.10.1)(ts-node@9.1.1) - jest-haste-map: 29.7.0 - jest-message-util: 29.7.0 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-resolve-dependencies: 29.7.0 - jest-runner: 29.7.0 - jest-runtime: 29.7.0 - jest-snapshot: 29.7.0 - jest-util: 29.7.0 - jest-validate: 29.7.0 - jest-watcher: 29.7.0 - micromatch: 4.0.5 - pretty-format: 29.7.0 - slash: 3.0.0 - strip-ansi: 6.0.1 - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - - ts-node - dev: true - - /@jest/environment@29.7.0: - resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/fake-timers': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 20.10.1 - jest-mock: 29.7.0 - dev: true - - /@jest/expect-utils@29.7.0: - resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - jest-get-type: 29.6.3 - dev: true - - /@jest/expect@29.7.0: - resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - expect: 29.7.0 - jest-snapshot: 29.7.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@jest/fake-timers@29.7.0: - resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/types': 29.6.3 - '@sinonjs/fake-timers': 10.3.0 - '@types/node': 20.10.1 - jest-message-util: 29.7.0 - jest-mock: 29.7.0 - jest-util: 29.7.0 - dev: true - - /@jest/globals@29.7.0: - resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/environment': 29.7.0 - '@jest/expect': 29.7.0 - '@jest/types': 29.6.3 - jest-mock: 29.7.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@jest/reporters@29.7.0: - resolution: {integrity: sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - dependencies: - '@bcoe/v8-coverage': 0.2.3 - '@jest/console': 29.7.0 - '@jest/test-result': 29.7.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - '@jridgewell/trace-mapping': 0.3.20 - '@types/node': 20.10.1 - chalk: 4.1.2 - collect-v8-coverage: 1.0.2 - exit: 0.1.2 - glob: 7.2.3 - graceful-fs: 4.2.11 - istanbul-lib-coverage: 3.2.2 - istanbul-lib-instrument: 6.0.1 - istanbul-lib-report: 3.0.1 - istanbul-lib-source-maps: 4.0.1 - istanbul-reports: 3.1.6 - jest-message-util: 29.7.0 - jest-util: 29.7.0 - jest-worker: 29.7.0 - slash: 3.0.0 - string-length: 4.0.2 - strip-ansi: 6.0.1 - v8-to-istanbul: 9.2.0 - transitivePeerDependencies: - - supports-color - dev: true - /@jest/schemas@29.6.3: resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -634,107 +356,10 @@ packages: '@sinclair/typebox': 0.27.8 dev: true - /@jest/source-map@29.6.3: - resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jridgewell/trace-mapping': 0.3.20 - callsites: 3.1.0 - graceful-fs: 4.2.11 - dev: true - - /@jest/test-result@29.7.0: - resolution: {integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/console': 29.7.0 - '@jest/types': 29.6.3 - '@types/istanbul-lib-coverage': 2.0.6 - collect-v8-coverage: 1.0.2 - dev: true - - /@jest/test-sequencer@29.7.0: - resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/test-result': 29.7.0 - graceful-fs: 4.2.11 - jest-haste-map: 29.7.0 - slash: 3.0.0 - dev: true - - /@jest/transform@29.7.0: - resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@babel/core': 7.23.3 - '@jest/types': 29.6.3 - '@jridgewell/trace-mapping': 0.3.20 - babel-plugin-istanbul: 6.1.1 - chalk: 4.1.2 - convert-source-map: 2.0.0 - fast-json-stable-stringify: 2.1.0 - graceful-fs: 4.2.11 - jest-haste-map: 29.7.0 - jest-regex-util: 29.6.3 - jest-util: 29.7.0 - micromatch: 4.0.5 - pirates: 4.0.6 - slash: 3.0.0 - write-file-atomic: 4.0.2 - transitivePeerDependencies: - - supports-color - dev: true - - /@jest/types@29.6.3: - resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/schemas': 29.6.3 - '@types/istanbul-lib-coverage': 2.0.6 - '@types/istanbul-reports': 3.0.4 - '@types/node': 20.10.1 - '@types/yargs': 17.0.32 - chalk: 4.1.2 - dev: true - - /@jridgewell/gen-mapping@0.3.3: - resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} - engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/set-array': 1.1.2 - '@jridgewell/sourcemap-codec': 1.4.15 - '@jridgewell/trace-mapping': 0.3.20 - dev: true - - /@jridgewell/resolve-uri@3.1.1: - resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} - engines: {node: '>=6.0.0'} - dev: true - - /@jridgewell/set-array@1.1.2: - resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} - engines: {node: '>=6.0.0'} - dev: true - - /@jridgewell/source-map@0.3.5: - resolution: {integrity: sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==} - dependencies: - '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.20 - dev: true - /@jridgewell/sourcemap-codec@1.4.15: resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} dev: true - /@jridgewell/trace-mapping@0.3.20: - resolution: {integrity: sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==} - dependencies: - '@jridgewell/resolve-uri': 3.1.1 - '@jridgewell/sourcemap-codec': 1.4.15 - dev: true - /@nodelib/fs.scandir@2.1.5: resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -756,129 +381,114 @@ packages: fastq: 1.15.0 dev: true - /@protobufjs/aspromise@1.1.2: - resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} - - /@protobufjs/base64@1.1.2: - resolution: {integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==} - - /@protobufjs/codegen@2.0.4: - resolution: {integrity: sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==} - - /@protobufjs/eventemitter@1.1.0: - resolution: {integrity: sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==} - - /@protobufjs/fetch@1.1.0: - resolution: {integrity: sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==} - dependencies: - '@protobufjs/aspromise': 1.1.2 - '@protobufjs/inquire': 1.1.0 - - /@protobufjs/float@1.0.2: - resolution: {integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==} - - /@protobufjs/inquire@1.1.0: - resolution: {integrity: sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==} - - /@protobufjs/path@1.1.2: - resolution: {integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==} - - /@protobufjs/pool@1.1.0: - resolution: {integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==} - - /@protobufjs/utf8@1.1.0: - resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} - - /@sinclair/typebox@0.27.8: - resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + /@rollup/rollup-android-arm-eabi@4.6.1: + resolution: {integrity: sha512-0WQ0ouLejaUCRsL93GD4uft3rOmB8qoQMU05Kb8CmMtMBe7XUDLAltxVZI1q6byNqEtU7N1ZX1Vw5lIpgulLQA==} + cpu: [arm] + os: [android] + requiresBuild: true dev: true + optional: true - /@sinonjs/commons@3.0.0: - resolution: {integrity: sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==} - dependencies: - type-detect: 4.0.8 + /@rollup/rollup-android-arm64@4.6.1: + resolution: {integrity: sha512-1TKm25Rn20vr5aTGGZqo6E4mzPicCUD79k17EgTLAsXc1zysyi4xXKACfUbwyANEPAEIxkzwue6JZ+stYzWUTA==} + cpu: [arm64] + os: [android] + requiresBuild: true dev: true + optional: true - /@sinonjs/fake-timers@10.3.0: - resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} - dependencies: - '@sinonjs/commons': 3.0.0 + /@rollup/rollup-darwin-arm64@4.6.1: + resolution: {integrity: sha512-cEXJQY/ZqMACb+nxzDeX9IPLAg7S94xouJJCNVE5BJM8JUEP4HeTF+ti3cmxWeSJo+5D+o8Tc0UAWUkfENdeyw==} + cpu: [arm64] + os: [darwin] + requiresBuild: true dev: true + optional: true - /@types/babel__core@7.20.4: - resolution: {integrity: sha512-mLnSC22IC4vcWiuObSRjrLd9XcBTGf59vUSoq2jkQDJ/QQ8PMI9rSuzE+aEV8karUMbskw07bKYoUJCKTUaygg==} - dependencies: - '@babel/parser': 7.23.3 - '@babel/types': 7.23.3 - '@types/babel__generator': 7.6.7 - '@types/babel__template': 7.4.4 - '@types/babel__traverse': 7.20.4 + /@rollup/rollup-darwin-x64@4.6.1: + resolution: {integrity: sha512-LoSU9Xu56isrkV2jLldcKspJ7sSXmZWkAxg7sW/RfF7GS4F5/v4EiqKSMCFbZtDu2Nc1gxxFdQdKwkKS4rwxNg==} + cpu: [x64] + os: [darwin] + requiresBuild: true dev: true + optional: true - /@types/babel__generator@7.6.7: - resolution: {integrity: sha512-6Sfsq+EaaLrw4RmdFWE9Onp63TOUue71AWb4Gpa6JxzgTYtimbM086WnYTy2U67AofR++QKCo08ZP6pwx8YFHQ==} - dependencies: - '@babel/types': 7.23.3 + /@rollup/rollup-linux-arm-gnueabihf@4.6.1: + resolution: {integrity: sha512-EfI3hzYAy5vFNDqpXsNxXcgRDcFHUWSx5nnRSCKwXuQlI5J9dD84g2Usw81n3FLBNsGCegKGwwTVsSKK9cooSQ==} + cpu: [arm] + os: [linux] + requiresBuild: true dev: true + optional: true - /@types/babel__template@7.4.4: - resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} - dependencies: - '@babel/parser': 7.23.3 - '@babel/types': 7.23.3 + /@rollup/rollup-linux-arm64-gnu@4.6.1: + resolution: {integrity: sha512-9lhc4UZstsegbNLhH0Zu6TqvDfmhGzuCWtcTFXY10VjLLUe4Mr0Ye2L3rrtHaDd/J5+tFMEuo5LTCSCMXWfUKw==} + cpu: [arm64] + os: [linux] + requiresBuild: true dev: true + optional: true - /@types/babel__traverse@7.20.4: - resolution: {integrity: sha512-mSM/iKUk5fDDrEV/e83qY+Cr3I1+Q3qqTuEn++HAWYjEa1+NxZr6CNrcJGf2ZTnq4HoFGC3zaTPZTobCzCFukA==} - dependencies: - '@babel/types': 7.23.3 + /@rollup/rollup-linux-arm64-musl@4.6.1: + resolution: {integrity: sha512-FfoOK1yP5ksX3wwZ4Zk1NgyGHZyuRhf99j64I5oEmirV8EFT7+OhUZEnP+x17lcP/QHJNWGsoJwrz4PJ9fBEXw==} + cpu: [arm64] + os: [linux] + requiresBuild: true dev: true + optional: true - /@types/eslint-scope@3.7.7: - resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} - dependencies: - '@types/eslint': 8.44.7 - '@types/estree': 1.0.5 + /@rollup/rollup-linux-x64-gnu@4.6.1: + resolution: {integrity: sha512-DNGZvZDO5YF7jN5fX8ZqmGLjZEXIJRdJEdTFMhiyXqyXubBa0WVLDWSNlQ5JR2PNgDbEV1VQowhVRUh+74D+RA==} + cpu: [x64] + os: [linux] + requiresBuild: true dev: true + optional: true - /@types/eslint@8.44.7: - resolution: {integrity: sha512-f5ORu2hcBbKei97U73mf+l9t4zTGl74IqZ0GQk4oVea/VS8tQZYkUveSYojk+frraAVYId0V2WC9O4PTNru2FQ==} - dependencies: - '@types/estree': 1.0.5 - '@types/json-schema': 7.0.15 + /@rollup/rollup-linux-x64-musl@4.6.1: + resolution: {integrity: sha512-RkJVNVRM+piYy87HrKmhbexCHg3A6Z6MU0W9GHnJwBQNBeyhCJG9KDce4SAMdicQnpURggSvtbGo9xAWOfSvIQ==} + cpu: [x64] + os: [linux] + requiresBuild: true dev: true + optional: true - /@types/estree@1.0.5: - resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} + /@rollup/rollup-win32-arm64-msvc@4.6.1: + resolution: {integrity: sha512-v2FVT6xfnnmTe3W9bJXl6r5KwJglMK/iRlkKiIFfO6ysKs0rDgz7Cwwf3tjldxQUrHL9INT/1r4VA0n9L/F1vQ==} + cpu: [arm64] + os: [win32] + requiresBuild: true dev: true + optional: true - /@types/graceful-fs@4.1.9: - resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} - dependencies: - '@types/node': 20.10.1 + /@rollup/rollup-win32-ia32-msvc@4.6.1: + resolution: {integrity: sha512-YEeOjxRyEjqcWphH9dyLbzgkF8wZSKAKUkldRY6dgNR5oKs2LZazqGB41cWJ4Iqqcy9/zqYgmzBkRoVz3Q9MLw==} + cpu: [ia32] + os: [win32] + requiresBuild: true dev: true + optional: true - /@types/istanbul-lib-coverage@2.0.6: - resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} + /@rollup/rollup-win32-x64-msvc@4.6.1: + resolution: {integrity: sha512-0zfTlFAIhgz8V2G8STq8toAjsYYA6eci1hnXuyOTUFnymrtJwnS6uGKiv3v5UrPZkBlamLvrLV2iiaeqCKzb0A==} + cpu: [x64] + os: [win32] + requiresBuild: true dev: true + optional: true - /@types/istanbul-lib-report@3.0.3: - resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} - dependencies: - '@types/istanbul-lib-coverage': 2.0.6 + /@sinclair/typebox@0.27.8: + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} dev: true - /@types/istanbul-reports@3.0.4: - resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} + /@types/chai-subset@1.3.5: + resolution: {integrity: sha512-c2mPnw+xHtXDoHmdtcCXGwyLMiauiAyxWMzhGpqHC4nqI/Y5G2XhTampslK2rb59kpcuHon03UH8W6iYUzw88A==} dependencies: - '@types/istanbul-lib-report': 3.0.3 + '@types/chai': 4.3.11 dev: true - /@types/jest@29.5.10: - resolution: {integrity: sha512-tE4yxKEphEyxj9s4inideLHktW/x6DwesIwWZ9NN1FKf9zbJYsnhBoA9vrHA/IuIOKwPa5PcFBNV4lpMIOEzyQ==} - dependencies: - expect: 29.7.0 - pretty-format: 29.7.0 + /@types/chai@4.3.11: + resolution: {integrity: sha512-qQR1dr2rGIHYlJulmr8Ioq3De0Le9E4MJ5AiaeAETJJpndT1uUNHsGFK3L/UIu+rbkQSdj8J/w2bCsBZc/Y5fQ==} dev: true /@types/json-schema@7.0.15: @@ -893,22 +503,9 @@ packages: resolution: {integrity: sha512-T2qwhjWwGH81vUEx4EXmBKsTJRXFXNZTL4v0gi01+zyBmCwzE6TyHszqX01m+QHTEq+EZNo13NeJIdEqf+Myrg==} dependencies: undici-types: 5.26.5 - - /@types/stack-utils@2.0.3: - resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} dev: true - /@types/yargs-parser@21.0.3: - resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} - dev: true - - /@types/yargs@17.0.32: - resolution: {integrity: sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==} - dependencies: - '@types/yargs-parser': 21.0.3 - dev: true - - /@typescript-eslint/eslint-plugin@4.33.0(@typescript-eslint/parser@4.33.0)(eslint@7.32.0)(typescript@4.3.5): + /@typescript-eslint/eslint-plugin@4.33.0(@typescript-eslint/parser@4.33.0)(eslint@7.32.0)(typescript@4.6.4): resolution: {integrity: sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==} engines: {node: ^10.12.0 || >=12.0.0} peerDependencies: @@ -919,8 +516,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/experimental-utils': 4.33.0(eslint@7.32.0)(typescript@4.3.5) - '@typescript-eslint/parser': 4.33.0(eslint@7.32.0)(typescript@4.3.5) + '@typescript-eslint/experimental-utils': 4.33.0(eslint@7.32.0)(typescript@4.6.4) + '@typescript-eslint/parser': 4.33.0(eslint@7.32.0)(typescript@4.6.4) '@typescript-eslint/scope-manager': 4.33.0 debug: 4.3.4 eslint: 7.32.0 @@ -928,13 +525,13 @@ packages: ignore: 5.2.4 regexpp: 3.2.0 semver: 7.5.4 - tsutils: 3.21.0(typescript@4.3.5) - typescript: 4.3.5 + tsutils: 3.21.0(typescript@4.6.4) + typescript: 4.6.4 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/experimental-utils@4.33.0(eslint@7.32.0)(typescript@4.3.5): + /@typescript-eslint/experimental-utils@4.33.0(eslint@7.32.0)(typescript@4.6.4): resolution: {integrity: sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==} engines: {node: ^10.12.0 || >=12.0.0} peerDependencies: @@ -943,7 +540,7 @@ packages: '@types/json-schema': 7.0.15 '@typescript-eslint/scope-manager': 4.33.0 '@typescript-eslint/types': 4.33.0 - '@typescript-eslint/typescript-estree': 4.33.0(typescript@4.3.5) + '@typescript-eslint/typescript-estree': 4.33.0(typescript@4.6.4) eslint: 7.32.0 eslint-scope: 5.1.1 eslint-utils: 3.0.0(eslint@7.32.0) @@ -952,7 +549,7 @@ packages: - typescript dev: true - /@typescript-eslint/parser@4.33.0(eslint@7.32.0)(typescript@4.3.5): + /@typescript-eslint/parser@4.33.0(eslint@7.32.0)(typescript@4.6.4): resolution: {integrity: sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==} engines: {node: ^10.12.0 || >=12.0.0} peerDependencies: @@ -964,207 +561,100 @@ packages: dependencies: '@typescript-eslint/scope-manager': 4.33.0 '@typescript-eslint/types': 4.33.0 - '@typescript-eslint/typescript-estree': 4.33.0(typescript@4.3.5) + '@typescript-eslint/typescript-estree': 4.33.0(typescript@4.6.4) debug: 4.3.4 eslint: 7.32.0 - typescript: 4.3.5 + typescript: 4.6.4 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/scope-manager@4.33.0: - resolution: {integrity: sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==} - engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} - dependencies: - '@typescript-eslint/types': 4.33.0 - '@typescript-eslint/visitor-keys': 4.33.0 - dev: true - - /@typescript-eslint/types@4.33.0: - resolution: {integrity: sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==} - engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} - dev: true - - /@typescript-eslint/typescript-estree@4.33.0(typescript@4.3.5): - resolution: {integrity: sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==} - engines: {node: ^10.12.0 || >=12.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/types': 4.33.0 - '@typescript-eslint/visitor-keys': 4.33.0 - debug: 4.3.4 - globby: 11.1.0 - is-glob: 4.0.3 - semver: 7.5.4 - tsutils: 3.21.0(typescript@4.3.5) - typescript: 4.3.5 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/visitor-keys@4.33.0: - resolution: {integrity: sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==} - engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} - dependencies: - '@typescript-eslint/types': 4.33.0 - eslint-visitor-keys: 2.1.0 - dev: true - - /@webassemblyjs/ast@1.11.6: - resolution: {integrity: sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==} - dependencies: - '@webassemblyjs/helper-numbers': 1.11.6 - '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - dev: true - - /@webassemblyjs/floating-point-hex-parser@1.11.6: - resolution: {integrity: sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==} - dev: true - - /@webassemblyjs/helper-api-error@1.11.6: - resolution: {integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==} - dev: true - - /@webassemblyjs/helper-buffer@1.11.6: - resolution: {integrity: sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==} - dev: true - - /@webassemblyjs/helper-numbers@1.11.6: - resolution: {integrity: sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==} - dependencies: - '@webassemblyjs/floating-point-hex-parser': 1.11.6 - '@webassemblyjs/helper-api-error': 1.11.6 - '@xtuc/long': 4.2.2 - dev: true - - /@webassemblyjs/helper-wasm-bytecode@1.11.6: - resolution: {integrity: sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==} - dev: true - - /@webassemblyjs/helper-wasm-section@1.11.6: - resolution: {integrity: sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==} - dependencies: - '@webassemblyjs/ast': 1.11.6 - '@webassemblyjs/helper-buffer': 1.11.6 - '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - '@webassemblyjs/wasm-gen': 1.11.6 - dev: true - - /@webassemblyjs/ieee754@1.11.6: - resolution: {integrity: sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==} - dependencies: - '@xtuc/ieee754': 1.2.0 - dev: true - - /@webassemblyjs/leb128@1.11.6: - resolution: {integrity: sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==} + /@typescript-eslint/scope-manager@4.33.0: + resolution: {integrity: sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==} + engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} dependencies: - '@xtuc/long': 4.2.2 - dev: true - - /@webassemblyjs/utf8@1.11.6: - resolution: {integrity: sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==} + '@typescript-eslint/types': 4.33.0 + '@typescript-eslint/visitor-keys': 4.33.0 dev: true - /@webassemblyjs/wasm-edit@1.11.6: - resolution: {integrity: sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==} - dependencies: - '@webassemblyjs/ast': 1.11.6 - '@webassemblyjs/helper-buffer': 1.11.6 - '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - '@webassemblyjs/helper-wasm-section': 1.11.6 - '@webassemblyjs/wasm-gen': 1.11.6 - '@webassemblyjs/wasm-opt': 1.11.6 - '@webassemblyjs/wasm-parser': 1.11.6 - '@webassemblyjs/wast-printer': 1.11.6 + /@typescript-eslint/types@4.33.0: + resolution: {integrity: sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==} + engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} dev: true - /@webassemblyjs/wasm-gen@1.11.6: - resolution: {integrity: sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==} + /@typescript-eslint/typescript-estree@4.33.0(typescript@4.6.4): + resolution: {integrity: sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==} + engines: {node: ^10.12.0 || >=12.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true dependencies: - '@webassemblyjs/ast': 1.11.6 - '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - '@webassemblyjs/ieee754': 1.11.6 - '@webassemblyjs/leb128': 1.11.6 - '@webassemblyjs/utf8': 1.11.6 + '@typescript-eslint/types': 4.33.0 + '@typescript-eslint/visitor-keys': 4.33.0 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.5.4 + tsutils: 3.21.0(typescript@4.6.4) + typescript: 4.6.4 + transitivePeerDependencies: + - supports-color dev: true - /@webassemblyjs/wasm-opt@1.11.6: - resolution: {integrity: sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==} + /@typescript-eslint/visitor-keys@4.33.0: + resolution: {integrity: sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==} + engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} dependencies: - '@webassemblyjs/ast': 1.11.6 - '@webassemblyjs/helper-buffer': 1.11.6 - '@webassemblyjs/wasm-gen': 1.11.6 - '@webassemblyjs/wasm-parser': 1.11.6 + '@typescript-eslint/types': 4.33.0 + eslint-visitor-keys: 2.1.0 dev: true - /@webassemblyjs/wasm-parser@1.11.6: - resolution: {integrity: sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==} + /@typescript/vfs@1.5.0: + resolution: {integrity: sha512-AJS307bPgbsZZ9ggCT3wwpg3VbTKMFNHfaY/uF0ahSkYYrPF2dSSKDNIDIQAHm9qJqbLvCsSJH7yN4Vs/CsMMg==} dependencies: - '@webassemblyjs/ast': 1.11.6 - '@webassemblyjs/helper-api-error': 1.11.6 - '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - '@webassemblyjs/ieee754': 1.11.6 - '@webassemblyjs/leb128': 1.11.6 - '@webassemblyjs/utf8': 1.11.6 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color dev: true - /@webassemblyjs/wast-printer@1.11.6: - resolution: {integrity: sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==} + /@vitest/expect@0.34.6: + resolution: {integrity: sha512-QUzKpUQRc1qC7qdGo7rMK3AkETI7w18gTCUrsNnyjjJKYiuUB9+TQK3QnR1unhCnWRC0AbKv2omLGQDF/mIjOw==} dependencies: - '@webassemblyjs/ast': 1.11.6 - '@xtuc/long': 4.2.2 + '@vitest/spy': 0.34.6 + '@vitest/utils': 0.34.6 + chai: 4.3.10 dev: true - /@webpack-cli/configtest@1.2.0(webpack-cli@4.10.0)(webpack@5.89.0): - resolution: {integrity: sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg==} - peerDependencies: - webpack: 4.x.x || 5.x.x - webpack-cli: 4.x.x + /@vitest/runner@0.34.6: + resolution: {integrity: sha512-1CUQgtJSLF47NnhN+F9X2ycxUP0kLHQ/JWvNHbeBfwW8CzEGgeskzNnHDyv1ieKTltuR6sdIHV+nmR6kPxQqzQ==} dependencies: - webpack: 5.89.0(webpack-cli@4.10.0) - webpack-cli: 4.10.0(webpack@5.89.0) + '@vitest/utils': 0.34.6 + p-limit: 4.0.0 + pathe: 1.1.1 dev: true - /@webpack-cli/info@1.5.0(webpack-cli@4.10.0): - resolution: {integrity: sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ==} - peerDependencies: - webpack-cli: 4.x.x + /@vitest/snapshot@0.34.6: + resolution: {integrity: sha512-B3OZqYn6k4VaN011D+ve+AA4whM4QkcwcrwaKwAbyyvS/NB1hCWjFIBQxAQQSQir9/RtyAAGuq+4RJmbn2dH4w==} dependencies: - envinfo: 7.11.0 - webpack-cli: 4.10.0(webpack@5.89.0) + magic-string: 0.30.5 + pathe: 1.1.1 + pretty-format: 29.7.0 dev: true - /@webpack-cli/serve@1.7.0(webpack-cli@4.10.0): - resolution: {integrity: sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==} - peerDependencies: - webpack-cli: 4.x.x - webpack-dev-server: '*' - peerDependenciesMeta: - webpack-dev-server: - optional: true + /@vitest/spy@0.34.6: + resolution: {integrity: sha512-xaCvneSaeBw/cz8ySmF7ZwGvL0lBjfvqc1LpQ/vcdHEvpLn3Ff1vAvjw+CoGn0802l++5L/pxb7whwcWAw+DUQ==} dependencies: - webpack-cli: 4.10.0(webpack@5.89.0) + tinyspy: 2.2.0 dev: true - /@xtuc/ieee754@1.2.0: - resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} - dev: true - - /@xtuc/long@4.2.2: - resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} - dev: true - - /acorn-import-assertions@1.9.0(acorn@8.11.2): - resolution: {integrity: sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==} - peerDependencies: - acorn: ^8 + /@vitest/utils@0.34.6: + resolution: {integrity: sha512-IG5aDD8S6zlvloDsnzHw0Ut5xczlF+kv2BOTo+iXfPr54Yhi5qbVOgGB1hZaVq4iJ4C/MZ2J0y15IlsV/ZcI0A==} dependencies: - acorn: 8.11.2 + diff-sequences: 29.6.3 + loupe: 2.3.7 + pretty-format: 29.7.0 dev: true /acorn-jsx@5.3.2(acorn@7.4.1): @@ -1175,6 +665,11 @@ packages: acorn: 7.4.1 dev: true + /acorn-walk@8.3.0: + resolution: {integrity: sha512-FS7hV565M5l1R08MXqo8odwMTB02C2UqzB17RVgu9EyuYFBqJZ3/ZY97sQD5FewVu1UyDFc1yztUDrAwT0EypA==} + engines: {node: '>=0.4.0'} + dev: true + /acorn@7.4.1: resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} engines: {node: '>=0.4.0'} @@ -1187,14 +682,6 @@ packages: hasBin: true dev: true - /ajv-keywords@3.5.2(ajv@6.12.6): - resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} - peerDependencies: - ajv: ^6.9.1 - dependencies: - ajv: 6.12.6 - dev: true - /ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} dependencies: @@ -1218,18 +705,15 @@ packages: engines: {node: '>=6'} dev: true - /ansi-escapes@4.3.2: - resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} - engines: {node: '>=8'} - dependencies: - type-fest: 0.21.3 - dev: true - /ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} dev: true + /ansi-sequence-parser@1.1.1: + resolution: {integrity: sha512-vJXt3yiaUL4UU546s3rPXlsry/RnM730G1+HkpKE012AN0sx1eOrxSu95oKDIonskeLTijMgqWZ3uDEe3NFvyg==} + dev: true + /ansi-styles@3.2.1: resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} engines: {node: '>=4'} @@ -1249,18 +733,6 @@ packages: engines: {node: '>=10'} dev: true - /anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 - dev: true - - /arg@4.1.3: - resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} - dev: true - /argparse@1.0.10: resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} dependencies: @@ -1350,6 +822,10 @@ packages: is-shared-array-buffer: 1.0.2 dev: true + /assertion-error@1.1.0: + resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} + dev: true + /ast-types-flow@0.0.8: resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} dev: true @@ -1395,86 +871,10 @@ packages: dequal: 2.0.3 dev: true - /babel-jest@29.7.0(@babel/core@7.23.3): - resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@babel/core': ^7.8.0 - dependencies: - '@babel/core': 7.23.3 - '@jest/transform': 29.7.0 - '@types/babel__core': 7.20.4 - babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 29.6.3(@babel/core@7.23.3) - chalk: 4.1.2 - graceful-fs: 4.2.11 - slash: 3.0.0 - transitivePeerDependencies: - - supports-color - dev: true - - /babel-plugin-istanbul@6.1.1: - resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} - engines: {node: '>=8'} - dependencies: - '@babel/helper-plugin-utils': 7.22.5 - '@istanbuljs/load-nyc-config': 1.1.0 - '@istanbuljs/schema': 0.1.3 - istanbul-lib-instrument: 5.2.1 - test-exclude: 6.0.0 - transitivePeerDependencies: - - supports-color - dev: true - - /babel-plugin-jest-hoist@29.6.3: - resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@babel/template': 7.22.15 - '@babel/types': 7.23.3 - '@types/babel__core': 7.20.4 - '@types/babel__traverse': 7.20.4 - dev: true - - /babel-preset-current-node-syntax@1.0.1(@babel/core@7.23.3): - resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.23.3 - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.3) - '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.23.3) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.23.3) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.23.3) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.3) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.3) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.3) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.3) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.3) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.3) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.3) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.23.3) - dev: true - - /babel-preset-jest@29.6.3(@babel/core@7.23.3): - resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.23.3 - babel-plugin-jest-hoist: 29.6.3 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.23.3) - dev: true - /balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} dev: true - /big.js@5.2.2: - resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} - dev: true - /brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} dependencies: @@ -1495,32 +895,9 @@ packages: fill-range: 7.0.1 dev: true - /browserslist@4.22.1: - resolution: {integrity: sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - dependencies: - caniuse-lite: 1.0.30001561 - electron-to-chromium: 1.4.580 - node-releases: 2.0.13 - update-browserslist-db: 1.0.13(browserslist@4.22.1) - dev: true - - /bs-logger@0.2.6: - resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} - engines: {node: '>= 6'} - dependencies: - fast-json-stable-stringify: 2.1.0 - dev: true - - /bser@2.1.1: - resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} - dependencies: - node-int64: 0.4.0 - dev: true - - /buffer-from@1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + /cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} dev: true /call-bind@1.0.5: @@ -1546,22 +923,22 @@ packages: type-fest: 1.4.0 dev: false - /camelcase@5.3.1: - resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} - engines: {node: '>=6'} - dev: true - /camelcase@6.3.0: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} + dev: false - /caniuse-lite@1.0.30001561: - resolution: {integrity: sha512-NTt0DNoKe958Q0BE0j0c1V9jbUzhBxHIEJy7asmGrpE0yG63KTV7PLHPnK2E1O9RsQrQ081I3NLuXGS6zht3cw==} - dev: true - - /case-anything@2.1.13: - resolution: {integrity: sha512-zlOQ80VrQ2Ue+ymH5OuM/DlDq64mEm+B9UTdHULv5osUMD6HalNTblf2b1u/m6QecjsnOkBpqVZ+XPwIVsy7Ng==} - engines: {node: '>=12.13'} + /chai@4.3.10: + resolution: {integrity: sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==} + engines: {node: '>=4'} + dependencies: + assertion-error: 1.1.0 + check-error: 1.0.3 + deep-eql: 4.1.3 + get-func-name: 2.0.2 + loupe: 2.3.7 + pathval: 1.1.1 + type-detect: 4.0.8 dev: true /chalk@2.4.2: @@ -1581,50 +958,10 @@ packages: supports-color: 7.2.0 dev: true - /char-regex@1.0.2: - resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} - engines: {node: '>=10'} - dev: true - - /chrome-trace-event@1.0.3: - resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==} - engines: {node: '>=6.0'} - dev: true - - /ci-info@3.9.0: - resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} - engines: {node: '>=8'} - dev: true - - /cjs-module-lexer@1.2.3: - resolution: {integrity: sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==} - dev: true - - /cliui@8.0.1: - resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} - engines: {node: '>=12'} - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 7.0.0 - dev: true - - /clone-deep@4.0.1: - resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} - engines: {node: '>=6'} + /check-error@1.0.3: + resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} dependencies: - is-plain-object: 2.0.4 - kind-of: 6.0.3 - shallow-clone: 3.0.1 - dev: true - - /co@4.6.0: - resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} - engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} - dev: true - - /collect-v8-coverage@1.0.2: - resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==} + get-func-name: 2.0.2 dev: true /color-convert@1.9.3: @@ -1648,10 +985,6 @@ packages: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} dev: true - /colorette@2.0.20: - resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} - dev: true - /combined-stream@1.0.8: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} engines: {node: '>= 0.8'} @@ -1659,15 +992,6 @@ packages: delayed-stream: 1.0.0 dev: false - /commander@2.20.3: - resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - dev: true - - /commander@7.2.0: - resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} - engines: {node: '>= 10'} - dev: true - /concat-map@0.0.1: resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} dev: true @@ -1676,37 +1000,6 @@ packages: resolution: {integrity: sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==} dev: true - /convert-source-map@2.0.0: - resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - dev: true - - /core-util-is@1.0.3: - resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} - dev: true - - /create-jest@29.7.0(@types/node@20.10.1)(ts-node@9.1.1): - resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true - dependencies: - '@jest/types': 29.6.3 - chalk: 4.1.2 - exit: 0.1.2 - graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@20.10.1)(ts-node@9.1.1) - jest-util: 29.7.0 - prompts: 2.4.2 - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - dev: true - - /create-require@1.1.1: - resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} - dev: true - /cross-spawn@7.0.3: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} engines: {node: '>= 8'} @@ -1743,24 +1036,17 @@ packages: ms: 2.1.2 dev: true - /dedent@1.5.1: - resolution: {integrity: sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==} - peerDependencies: - babel-plugin-macros: ^3.1.0 - peerDependenciesMeta: - babel-plugin-macros: - optional: true + /deep-eql@4.1.3: + resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} + engines: {node: '>=6'} + dependencies: + type-detect: 4.0.8 dev: true /deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} dev: true - /deepmerge@4.3.1: - resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} - engines: {node: '>=0.10.0'} - dev: true - /define-data-property@1.1.1: resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==} engines: {node: '>= 0.4'} @@ -1789,27 +1075,11 @@ packages: engines: {node: '>=6'} dev: true - /detect-libc@1.0.3: - resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} - engines: {node: '>=0.10'} - hasBin: true - dev: true - - /detect-newline@3.1.0: - resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} - engines: {node: '>=8'} - dev: true - /diff-sequences@29.6.3: resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true - /diff@4.0.2: - resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} - engines: {node: '>=0.3.1'} - dev: true - /dir-glob@3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} @@ -1831,21 +1101,6 @@ packages: esutils: 2.0.3 dev: true - /dprint-node@1.0.8: - resolution: {integrity: sha512-iVKnUtYfGrYcW1ZAlfR/F59cUVL8QIhWoBJoSjkkdua/dkWIgjZfiLMeTjiB06X0ZLkQ0M2C1VbUj/CxkIf1zg==} - dependencies: - detect-libc: 1.0.3 - dev: true - - /electron-to-chromium@1.4.580: - resolution: {integrity: sha512-T5q3pjQon853xxxHUq3ZP68ZpvJHuSMY2+BZaW3QzjS4HvNuvsMmZ/+lU+nCrftre1jFZ+OSlExynXWBihnXzw==} - dev: true - - /emittery@0.13.1: - resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} - engines: {node: '>=12'} - dev: true - /emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} dev: true @@ -1854,28 +1109,6 @@ packages: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} dev: true - /emojis-list@3.0.0: - resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} - engines: {node: '>= 4'} - dev: true - - /enhanced-resolve@4.5.0: - resolution: {integrity: sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==} - engines: {node: '>=6.9.0'} - dependencies: - graceful-fs: 4.2.11 - memory-fs: 0.5.0 - tapable: 1.1.3 - dev: true - - /enhanced-resolve@5.15.0: - resolution: {integrity: sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==} - engines: {node: '>=10.13.0'} - dependencies: - graceful-fs: 4.2.11 - tapable: 2.2.1 - dev: true - /enquirer@2.4.1: resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} engines: {node: '>=8.6'} @@ -1884,25 +1117,6 @@ packages: strip-ansi: 6.0.1 dev: true - /envinfo@7.11.0: - resolution: {integrity: sha512-G9/6xF1FPbIw0TtalAMaVPpiq2aDEuKLXM314jPVAO9r2fo2a4BLqMNkmRS7O/xPPZ+COAhGIz3ETvHEV3eUcg==} - engines: {node: '>=4'} - hasBin: true - dev: true - - /errno@0.1.8: - resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==} - hasBin: true - dependencies: - prr: 1.0.1 - dev: true - - /error-ex@1.3.2: - resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} - dependencies: - is-arrayish: 0.2.1 - dev: true - /es-abstract@1.22.3: resolution: {integrity: sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==} engines: {node: '>= 0.4'} @@ -1967,10 +1181,6 @@ packages: safe-array-concat: 1.0.1 dev: true - /es-module-lexer@1.4.0: - resolution: {integrity: sha512-lcCr3v3OLezdfFyx9r5NRYHOUTQNnFEQ9E87Mx8Kc+iqyJNkO7MJoB4GQRTlIMw9kLLTwGw0OAkm4BQQud/d9g==} - dev: true - /es-set-tostringtag@2.0.2: resolution: {integrity: sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==} engines: {node: '>= 0.4'} @@ -1995,9 +1205,34 @@ packages: is-symbol: 1.0.4 dev: true - /escalade@3.1.1: - resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} - engines: {node: '>=6'} + /esbuild@0.19.8: + resolution: {integrity: sha512-l7iffQpT2OrZfH2rXIp7/FkmaeZM0vxbxN9KfiCwGYuZqzMg/JdvX26R31Zxn/Pxvsrg3Y9N6XTcnknqDyyv4w==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/android-arm': 0.19.8 + '@esbuild/android-arm64': 0.19.8 + '@esbuild/android-x64': 0.19.8 + '@esbuild/darwin-arm64': 0.19.8 + '@esbuild/darwin-x64': 0.19.8 + '@esbuild/freebsd-arm64': 0.19.8 + '@esbuild/freebsd-x64': 0.19.8 + '@esbuild/linux-arm': 0.19.8 + '@esbuild/linux-arm64': 0.19.8 + '@esbuild/linux-ia32': 0.19.8 + '@esbuild/linux-loong64': 0.19.8 + '@esbuild/linux-mips64el': 0.19.8 + '@esbuild/linux-ppc64': 0.19.8 + '@esbuild/linux-riscv64': 0.19.8 + '@esbuild/linux-s390x': 0.19.8 + '@esbuild/linux-x64': 0.19.8 + '@esbuild/netbsd-x64': 0.19.8 + '@esbuild/openbsd-x64': 0.19.8 + '@esbuild/sunos-x64': 0.19.8 + '@esbuild/win32-arm64': 0.19.8 + '@esbuild/win32-ia32': 0.19.8 + '@esbuild/win32-x64': 0.19.8 dev: true /escape-string-regexp@1.0.5: @@ -2005,11 +1240,6 @@ packages: engines: {node: '>=0.8.0'} dev: true - /escape-string-regexp@2.0.0: - resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} - engines: {node: '>=8'} - dev: true - /escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} @@ -2029,10 +1259,10 @@ packages: object.entries: 1.1.7 dev: true - /eslint-config-airbnb-typescript@12.3.1(eslint-plugin-import@2.29.0)(eslint-plugin-jsx-a11y@6.8.0)(eslint-plugin-react-hooks@4.6.0)(eslint-plugin-react@7.33.2)(eslint@7.32.0)(typescript@4.3.5): + /eslint-config-airbnb-typescript@12.3.1(eslint-plugin-import@2.29.0)(eslint-plugin-jsx-a11y@6.8.0)(eslint-plugin-react-hooks@4.6.0)(eslint-plugin-react@7.33.2)(eslint@7.32.0)(typescript@4.6.4): resolution: {integrity: sha512-ql/Pe6/hppYuRp4m3iPaHJqkBB7dgeEmGPQ6X0UNmrQOfTF+dXw29/ZjU2kQ6RDoLxaxOA+Xqv07Vbef6oVTWw==} dependencies: - '@typescript-eslint/parser': 4.33.0(eslint@7.32.0)(typescript@4.3.5) + '@typescript-eslint/parser': 4.33.0(eslint@7.32.0)(typescript@4.6.4) eslint-config-airbnb: 18.2.1(eslint-plugin-import@2.29.0)(eslint-plugin-jsx-a11y@6.8.0)(eslint-plugin-react-hooks@4.6.0)(eslint-plugin-react@7.33.2)(eslint@7.32.0) eslint-config-airbnb-base: 14.2.1(eslint-plugin-import@2.29.0)(eslint@7.32.0) transitivePeerDependencies: @@ -2105,7 +1335,7 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 4.33.0(eslint@7.32.0)(typescript@4.3.5) + '@typescript-eslint/parser': 4.33.0(eslint@7.32.0)(typescript@4.6.4) debug: 3.2.7 eslint: 7.32.0 eslint-import-resolver-node: 0.3.9 @@ -2123,7 +1353,7 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 4.33.0(eslint@7.32.0)(typescript@4.3.5) + '@typescript-eslint/parser': 4.33.0(eslint@7.32.0)(typescript@4.6.4) array-includes: 3.1.7 array.prototype.findlastindex: 1.2.3 array.prototype.flat: 1.3.2 @@ -2335,42 +1565,6 @@ packages: engines: {node: '>=0.10.0'} dev: true - /events@3.3.0: - resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} - engines: {node: '>=0.8.x'} - dev: true - - /execa@5.1.1: - resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} - engines: {node: '>=10'} - dependencies: - cross-spawn: 7.0.3 - get-stream: 6.0.1 - human-signals: 2.1.0 - is-stream: 2.0.1 - merge-stream: 2.0.0 - npm-run-path: 4.0.1 - onetime: 5.1.2 - signal-exit: 3.0.7 - strip-final-newline: 2.0.0 - dev: true - - /exit@0.1.2: - resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} - engines: {node: '>= 0.8.0'} - dev: true - - /expect@29.7.0: - resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/expect-utils': 29.7.0 - jest-get-type: 29.6.3 - jest-matcher-utils: 29.7.0 - jest-message-util: 29.7.0 - jest-util: 29.7.0 - dev: true - /fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} dev: true @@ -2394,23 +1588,12 @@ packages: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} dev: true - /fastest-levenshtein@1.0.16: - resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} - engines: {node: '>= 4.9.1'} - dev: true - /fastq@1.15.0: resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} dependencies: reusify: 1.0.4 dev: true - /fb-watchman@2.0.2: - resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} - dependencies: - bser: 2.1.1 - dev: true - /file-entry-cache@6.0.1: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} @@ -2425,14 +1608,6 @@ packages: to-regex-range: 5.0.1 dev: true - /find-up@4.1.0: - resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} - engines: {node: '>=8'} - dependencies: - locate-path: 5.0.0 - path-exists: 4.0.0 - dev: true - /flat-cache@3.1.1: resolution: {integrity: sha512-/qM2b3LUIaIgviBQovTLvijfyOQXPtSRnRK26ksj2J7rzPIecePUIpJsZ4T02Qg+xiAEKIs5K8dsHEd+VaKa/Q==} engines: {node: '>=12.0.0'} @@ -2442,11 +1617,6 @@ packages: rimraf: 3.0.2 dev: true - /flat@5.0.2: - resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} - hasBin: true - dev: true - /flatted@3.2.9: resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==} dev: true @@ -2510,14 +1680,8 @@ packages: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} dev: true - /gensync@1.0.0-beta.2: - resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} - engines: {node: '>=6.9.0'} - dev: true - - /get-caller-file@2.0.5: - resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} - engines: {node: 6.* || 8.* || >= 10.*} + /get-func-name@2.0.2: + resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} dev: true /get-intrinsic@1.2.2: @@ -2529,16 +1693,6 @@ packages: hasown: 2.0.0 dev: true - /get-package-type@0.1.0: - resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} - engines: {node: '>=8.0.0'} - dev: true - - /get-stream@6.0.1: - resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} - engines: {node: '>=10'} - dev: true - /get-symbol-description@1.0.0: resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} engines: {node: '>= 0.4'} @@ -2554,10 +1708,6 @@ packages: is-glob: 4.0.3 dev: true - /glob-to-regexp@0.4.1: - resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} - dev: true - /glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} dependencies: @@ -2569,22 +1719,6 @@ packages: path-is-absolute: 1.0.1 dev: true - /glob@8.1.0: - resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} - engines: {node: '>=12'} - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 5.1.6 - once: 1.4.0 - dev: true - - /globals@11.12.0: - resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} - engines: {node: '>=4'} - dev: true - /globals@13.23.0: resolution: {integrity: sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==} engines: {node: '>=8'} @@ -2617,10 +1751,6 @@ packages: get-intrinsic: 1.2.2 dev: true - /graceful-fs@4.2.11: - resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - dev: true - /has-bigints@1.0.2: resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} dev: true @@ -2665,15 +1795,6 @@ packages: function-bind: 1.1.2 dev: true - /html-escaper@2.0.2: - resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} - dev: true - - /human-signals@2.1.0: - resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} - engines: {node: '>=10.17.0'} - dev: true - /ignore@4.0.6: resolution: {integrity: sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==} engines: {node: '>= 4'} @@ -2692,15 +1813,6 @@ packages: resolve-from: 4.0.0 dev: true - /import-local@3.1.0: - resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} - engines: {node: '>=8'} - hasBin: true - dependencies: - pkg-dir: 4.2.0 - resolve-cwd: 3.0.0 - dev: true - /imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} @@ -2726,11 +1838,6 @@ packages: side-channel: 1.0.4 dev: true - /interpret@2.2.0: - resolution: {integrity: sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==} - engines: {node: '>= 0.10'} - dev: true - /is-array-buffer@3.0.2: resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} dependencies: @@ -2739,10 +1846,6 @@ packages: is-typed-array: 1.1.12 dev: true - /is-arrayish@0.2.1: - resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - dev: true - /is-async-function@2.0.0: resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} engines: {node: '>= 0.4'} @@ -2784,632 +1887,127 @@ packages: /is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} - dev: true - - /is-finalizationregistry@1.0.2: - resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==} - dependencies: - call-bind: 1.0.5 - dev: true - - /is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} - dev: true - - /is-generator-fn@2.1.0: - resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} - engines: {node: '>=6'} - dev: true - - /is-generator-function@1.0.10: - resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} - engines: {node: '>= 0.4'} - dependencies: - has-tostringtag: 1.0.0 - dev: true - - /is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} - dependencies: - is-extglob: 2.1.1 - dev: true - - /is-map@2.0.2: - resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} - dev: true - - /is-negative-zero@2.0.2: - resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} - engines: {node: '>= 0.4'} - dev: true - - /is-number-object@1.0.7: - resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} - engines: {node: '>= 0.4'} - dependencies: - has-tostringtag: 1.0.0 - dev: true - - /is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - dev: true - - /is-plain-object@2.0.4: - resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} - engines: {node: '>=0.10.0'} - dependencies: - isobject: 3.0.1 - dev: true - - /is-regex@1.1.4: - resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.5 - has-tostringtag: 1.0.0 - dev: true - - /is-set@2.0.2: - resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==} - dev: true - - /is-shared-array-buffer@1.0.2: - resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} - dependencies: - call-bind: 1.0.5 - dev: true - - /is-stream@2.0.1: - resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} - engines: {node: '>=8'} - dev: true - - /is-string@1.0.7: - resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} - engines: {node: '>= 0.4'} - dependencies: - has-tostringtag: 1.0.0 - dev: true - - /is-symbol@1.0.4: - resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} - engines: {node: '>= 0.4'} - dependencies: - has-symbols: 1.0.3 - dev: true - - /is-typed-array@1.1.12: - resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==} - engines: {node: '>= 0.4'} - dependencies: - which-typed-array: 1.1.13 - dev: true - - /is-weakmap@2.0.1: - resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==} - dev: true - - /is-weakref@1.0.2: - resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} - dependencies: - call-bind: 1.0.5 - dev: true - - /is-weakset@2.0.2: - resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} - dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 - dev: true - - /isarray@1.0.0: - resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} - dev: true - - /isarray@2.0.5: - resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} - dev: true - - /isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - dev: true - - /isobject@3.0.1: - resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} - engines: {node: '>=0.10.0'} - dev: true - - /istanbul-lib-coverage@3.2.2: - resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} - engines: {node: '>=8'} - dev: true - - /istanbul-lib-instrument@5.2.1: - resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} - engines: {node: '>=8'} - dependencies: - '@babel/core': 7.23.3 - '@babel/parser': 7.23.3 - '@istanbuljs/schema': 0.1.3 - istanbul-lib-coverage: 3.2.2 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - dev: true - - /istanbul-lib-instrument@6.0.1: - resolution: {integrity: sha512-EAMEJBsYuyyztxMxW3g7ugGPkrZsV57v0Hmv3mm1uQsmB+QnZuepg731CRaIgeUVSdmsTngOkSnauNF8p7FIhA==} - engines: {node: '>=10'} - dependencies: - '@babel/core': 7.23.3 - '@babel/parser': 7.23.3 - '@istanbuljs/schema': 0.1.3 - istanbul-lib-coverage: 3.2.2 - semver: 7.5.4 - transitivePeerDependencies: - - supports-color - dev: true - - /istanbul-lib-report@3.0.1: - resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} - engines: {node: '>=10'} - dependencies: - istanbul-lib-coverage: 3.2.2 - make-dir: 4.0.0 - supports-color: 7.2.0 - dev: true - - /istanbul-lib-source-maps@4.0.1: - resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} - engines: {node: '>=10'} - dependencies: - debug: 4.3.4 - istanbul-lib-coverage: 3.2.2 - source-map: 0.6.1 - transitivePeerDependencies: - - supports-color - dev: true - - /istanbul-reports@3.1.6: - resolution: {integrity: sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==} - engines: {node: '>=8'} - dependencies: - html-escaper: 2.0.2 - istanbul-lib-report: 3.0.1 - dev: true - - /iterator.prototype@1.1.2: - resolution: {integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==} - dependencies: - define-properties: 1.2.1 - get-intrinsic: 1.2.2 - has-symbols: 1.0.3 - reflect.getprototypeof: 1.0.4 - set-function-name: 2.0.1 - dev: true - - /jest-changed-files@29.7.0: - resolution: {integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - execa: 5.1.1 - jest-util: 29.7.0 - p-limit: 3.1.0 - dev: true - - /jest-circus@29.7.0: - resolution: {integrity: sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/environment': 29.7.0 - '@jest/expect': 29.7.0 - '@jest/test-result': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 20.10.1 - chalk: 4.1.2 - co: 4.6.0 - dedent: 1.5.1 - is-generator-fn: 2.1.0 - jest-each: 29.7.0 - jest-matcher-utils: 29.7.0 - jest-message-util: 29.7.0 - jest-runtime: 29.7.0 - jest-snapshot: 29.7.0 - jest-util: 29.7.0 - p-limit: 3.1.0 - pretty-format: 29.7.0 - pure-rand: 6.0.4 - slash: 3.0.0 - stack-utils: 2.0.6 - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - dev: true - - /jest-cli@29.7.0(@types/node@20.10.1)(ts-node@9.1.1): - resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - dependencies: - '@jest/core': 29.7.0(ts-node@9.1.1) - '@jest/test-result': 29.7.0 - '@jest/types': 29.6.3 - chalk: 4.1.2 - create-jest: 29.7.0(@types/node@20.10.1)(ts-node@9.1.1) - exit: 0.1.2 - import-local: 3.1.0 - jest-config: 29.7.0(@types/node@20.10.1)(ts-node@9.1.1) - jest-util: 29.7.0 - jest-validate: 29.7.0 - yargs: 17.7.2 - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - dev: true - - /jest-config@29.7.0(@types/node@20.10.1)(ts-node@9.1.1): - resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@types/node': '*' - ts-node: '>=9.0.0' - peerDependenciesMeta: - '@types/node': - optional: true - ts-node: - optional: true - dependencies: - '@babel/core': 7.23.3 - '@jest/test-sequencer': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 20.10.1 - babel-jest: 29.7.0(@babel/core@7.23.3) - chalk: 4.1.2 - ci-info: 3.9.0 - deepmerge: 4.3.1 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-circus: 29.7.0 - jest-environment-node: 29.7.0 - jest-get-type: 29.6.3 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-runner: 29.7.0 - jest-util: 29.7.0 - jest-validate: 29.7.0 - micromatch: 4.0.5 - parse-json: 5.2.0 - pretty-format: 29.7.0 - slash: 3.0.0 - strip-json-comments: 3.1.1 - ts-node: 9.1.1(typescript@4.3.5) - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - dev: true - - /jest-diff@29.7.0: - resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - chalk: 4.1.2 - diff-sequences: 29.6.3 - jest-get-type: 29.6.3 - pretty-format: 29.7.0 - dev: true - - /jest-docblock@29.7.0: - resolution: {integrity: sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - detect-newline: 3.1.0 - dev: true - - /jest-each@29.7.0: - resolution: {integrity: sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/types': 29.6.3 - chalk: 4.1.2 - jest-get-type: 29.6.3 - jest-util: 29.7.0 - pretty-format: 29.7.0 + engines: {node: '>=0.10.0'} dev: true - /jest-environment-node@29.7.0: - resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + /is-finalizationregistry@1.0.2: + resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==} dependencies: - '@jest/environment': 29.7.0 - '@jest/fake-timers': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 20.10.1 - jest-mock: 29.7.0 - jest-util: 29.7.0 + call-bind: 1.0.5 dev: true - /jest-get-type@29.6.3: - resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + /is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} dev: true - /jest-haste-map@29.7.0: - resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + /is-generator-function@1.0.10: + resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} + engines: {node: '>= 0.4'} dependencies: - '@jest/types': 29.6.3 - '@types/graceful-fs': 4.1.9 - '@types/node': 20.10.1 - anymatch: 3.1.3 - fb-watchman: 2.0.2 - graceful-fs: 4.2.11 - jest-regex-util: 29.6.3 - jest-util: 29.7.0 - jest-worker: 29.7.0 - micromatch: 4.0.5 - walker: 1.0.8 - optionalDependencies: - fsevents: 2.3.3 + has-tostringtag: 1.0.0 dev: true - /jest-leak-detector@29.7.0: - resolution: {integrity: sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + /is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} dependencies: - jest-get-type: 29.6.3 - pretty-format: 29.7.0 + is-extglob: 2.1.1 dev: true - /jest-matcher-utils@29.7.0: - resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - chalk: 4.1.2 - jest-diff: 29.7.0 - jest-get-type: 29.6.3 - pretty-format: 29.7.0 + /is-map@2.0.2: + resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} dev: true - /jest-message-util@29.7.0: - resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@babel/code-frame': 7.22.13 - '@jest/types': 29.6.3 - '@types/stack-utils': 2.0.3 - chalk: 4.1.2 - graceful-fs: 4.2.11 - micromatch: 4.0.5 - pretty-format: 29.7.0 - slash: 3.0.0 - stack-utils: 2.0.6 + /is-negative-zero@2.0.2: + resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} + engines: {node: '>= 0.4'} dev: true - /jest-mock@29.7.0: - resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + /is-number-object@1.0.7: + resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} + engines: {node: '>= 0.4'} dependencies: - '@jest/types': 29.6.3 - '@types/node': 20.10.1 - jest-util: 29.7.0 + has-tostringtag: 1.0.0 dev: true - /jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): - resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} - engines: {node: '>=6'} - peerDependencies: - jest-resolve: '*' - peerDependenciesMeta: - jest-resolve: - optional: true - dependencies: - jest-resolve: 29.7.0 + /is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} dev: true - /jest-regex-util@29.6.3: - resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + /is-regex@1.1.4: + resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + has-tostringtag: 1.0.0 dev: true - /jest-resolve-dependencies@29.7.0: - resolution: {integrity: sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - jest-regex-util: 29.6.3 - jest-snapshot: 29.7.0 - transitivePeerDependencies: - - supports-color + /is-set@2.0.2: + resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==} dev: true - /jest-resolve@29.7.0: - resolution: {integrity: sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + /is-shared-array-buffer@1.0.2: + resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} dependencies: - chalk: 4.1.2 - graceful-fs: 4.2.11 - jest-haste-map: 29.7.0 - jest-pnp-resolver: 1.2.3(jest-resolve@29.7.0) - jest-util: 29.7.0 - jest-validate: 29.7.0 - resolve: 1.22.8 - resolve.exports: 2.0.2 - slash: 3.0.0 + call-bind: 1.0.5 dev: true - /jest-runner@29.7.0: - resolution: {integrity: sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + /is-string@1.0.7: + resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} + engines: {node: '>= 0.4'} dependencies: - '@jest/console': 29.7.0 - '@jest/environment': 29.7.0 - '@jest/test-result': 29.7.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 20.10.1 - chalk: 4.1.2 - emittery: 0.13.1 - graceful-fs: 4.2.11 - jest-docblock: 29.7.0 - jest-environment-node: 29.7.0 - jest-haste-map: 29.7.0 - jest-leak-detector: 29.7.0 - jest-message-util: 29.7.0 - jest-resolve: 29.7.0 - jest-runtime: 29.7.0 - jest-util: 29.7.0 - jest-watcher: 29.7.0 - jest-worker: 29.7.0 - p-limit: 3.1.0 - source-map-support: 0.5.13 - transitivePeerDependencies: - - supports-color + has-tostringtag: 1.0.0 dev: true - /jest-runtime@29.7.0: - resolution: {integrity: sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + /is-symbol@1.0.4: + resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} + engines: {node: '>= 0.4'} dependencies: - '@jest/environment': 29.7.0 - '@jest/fake-timers': 29.7.0 - '@jest/globals': 29.7.0 - '@jest/source-map': 29.6.3 - '@jest/test-result': 29.7.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 20.10.1 - chalk: 4.1.2 - cjs-module-lexer: 1.2.3 - collect-v8-coverage: 1.0.2 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-haste-map: 29.7.0 - jest-message-util: 29.7.0 - jest-mock: 29.7.0 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-snapshot: 29.7.0 - jest-util: 29.7.0 - slash: 3.0.0 - strip-bom: 4.0.0 - transitivePeerDependencies: - - supports-color + has-symbols: 1.0.3 dev: true - /jest-snapshot@29.7.0: - resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + /is-typed-array@1.1.12: + resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==} + engines: {node: '>= 0.4'} dependencies: - '@babel/core': 7.23.3 - '@babel/generator': 7.23.3 - '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.3) - '@babel/plugin-syntax-typescript': 7.23.3(@babel/core@7.23.3) - '@babel/types': 7.23.3 - '@jest/expect-utils': 29.7.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.23.3) - chalk: 4.1.2 - expect: 29.7.0 - graceful-fs: 4.2.11 - jest-diff: 29.7.0 - jest-get-type: 29.6.3 - jest-matcher-utils: 29.7.0 - jest-message-util: 29.7.0 - jest-util: 29.7.0 - natural-compare: 1.4.0 - pretty-format: 29.7.0 - semver: 7.5.4 - transitivePeerDependencies: - - supports-color + which-typed-array: 1.1.13 dev: true - /jest-util@29.7.0: - resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/types': 29.6.3 - '@types/node': 20.10.1 - chalk: 4.1.2 - ci-info: 3.9.0 - graceful-fs: 4.2.11 - picomatch: 2.3.1 + /is-weakmap@2.0.1: + resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==} dev: true - /jest-validate@29.7.0: - resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + /is-weakref@1.0.2: + resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} dependencies: - '@jest/types': 29.6.3 - camelcase: 6.3.0 - chalk: 4.1.2 - jest-get-type: 29.6.3 - leven: 3.1.0 - pretty-format: 29.7.0 + call-bind: 1.0.5 dev: true - /jest-watcher@29.7.0: - resolution: {integrity: sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + /is-weakset@2.0.2: + resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} dependencies: - '@jest/test-result': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 20.10.1 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - emittery: 0.13.1 - jest-util: 29.7.0 - string-length: 4.0.2 + call-bind: 1.0.5 + get-intrinsic: 1.2.2 dev: true - /jest-worker@27.5.1: - resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} - engines: {node: '>= 10.13.0'} - dependencies: - '@types/node': 20.10.1 - merge-stream: 2.0.0 - supports-color: 8.1.1 + /isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} dev: true - /jest-worker@29.7.0: - resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@types/node': 20.10.1 - jest-util: 29.7.0 - merge-stream: 2.0.0 - supports-color: 8.1.1 + /isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} dev: true - /jest@29.7.0(@types/node@20.10.1)(ts-node@9.1.1): - resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true + /iterator.prototype@1.1.2: + resolution: {integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==} dependencies: - '@jest/core': 29.7.0(ts-node@9.1.1) - '@jest/types': 29.6.3 - import-local: 3.1.0 - jest-cli: 29.7.0(@types/node@20.10.1)(ts-node@9.1.1) - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node + define-properties: 1.2.1 + get-intrinsic: 1.2.2 + has-symbols: 1.0.3 + reflect.getprototypeof: 1.0.4 + set-function-name: 2.0.1 dev: true /jose@5.1.2: @@ -3428,20 +2026,10 @@ packages: esprima: 4.0.1 dev: true - /jsesc@2.5.2: - resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} - engines: {node: '>=4'} - hasBin: true - dev: true - /json-buffer@3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} dev: true - /json-parse-even-better-errors@2.3.1: - resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - dev: true - /json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} dev: true @@ -3461,12 +2049,6 @@ packages: minimist: 1.2.8 dev: true - /json5@2.2.3: - resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} - engines: {node: '>=6'} - hasBin: true - dev: true - /jsonc-parser@3.2.0: resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} dev: true @@ -3487,16 +2069,6 @@ packages: json-buffer: 3.0.1 dev: true - /kind-of@6.0.3: - resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} - engines: {node: '>=0.10.0'} - dev: true - - /kleur@3.0.3: - resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} - engines: {node: '>=6'} - dev: true - /language-subtag-registry@0.3.22: resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==} dev: true @@ -3508,11 +2080,6 @@ packages: language-subtag-registry: 0.3.22 dev: true - /leven@3.1.0: - resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} - engines: {node: '>=6'} - dev: true - /levn@0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} @@ -3521,33 +2088,9 @@ packages: type-check: 0.4.0 dev: true - /lines-and-columns@1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - dev: true - - /loader-runner@4.3.0: - resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} - engines: {node: '>=6.11.5'} - dev: true - - /loader-utils@2.0.4: - resolution: {integrity: sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==} - engines: {node: '>=8.9.0'} - dependencies: - big.js: 5.2.2 - emojis-list: 3.0.0 - json5: 2.2.3 - dev: true - - /locate-path@5.0.0: - resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} - engines: {node: '>=8'} - dependencies: - p-locate: 4.1.0 - dev: true - - /lodash.memoize@4.1.2: - resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} + /local-pkg@0.4.3: + resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==} + engines: {node: '>=14'} dev: true /lodash.merge@4.6.2: @@ -3558,9 +2101,6 @@ packages: resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} dev: true - /long@5.2.3: - resolution: {integrity: sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==} - /loose-envify@1.4.0: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true @@ -3568,10 +2108,10 @@ packages: js-tokens: 4.0.0 dev: true - /lru-cache@5.1.1: - resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + /loupe@2.3.7: + resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} dependencies: - yallist: 3.1.1 + get-func-name: 2.0.2 dev: true /lru-cache@6.0.0: @@ -3585,21 +2125,11 @@ packages: resolution: {integrity: sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==} dev: true - /make-dir@4.0.0: - resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} - engines: {node: '>=10'} - dependencies: - semver: 7.5.4 - dev: true - - /make-error@1.3.6: - resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - dev: true - - /makeerror@1.0.12: - resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} + /magic-string@0.30.5: + resolution: {integrity: sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==} + engines: {node: '>=12'} dependencies: - tmpl: 1.0.5 + '@jridgewell/sourcemap-codec': 1.4.15 dev: true /map-obj@4.3.0: @@ -3613,18 +2143,6 @@ packages: hasBin: true dev: true - /memory-fs@0.5.0: - resolution: {integrity: sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==} - engines: {node: '>=4.3.0 <5.0.0 || >=5.10'} - dependencies: - errno: 0.1.8 - readable-stream: 2.3.8 - dev: true - - /merge-stream@2.0.0: - resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - dev: true - /merge2@1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} @@ -3641,17 +2159,14 @@ packages: /mime-db@1.52.0: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} engines: {node: '>= 0.6'} + dev: false /mime-types@2.1.35: resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} engines: {node: '>= 0.6'} dependencies: mime-db: 1.52.0 - - /mimic-fn@2.1.0: - resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} - engines: {node: '>=6'} - dev: true + dev: false /minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} @@ -3659,9 +2174,9 @@ packages: brace-expansion: 1.1.11 dev: true - /minimatch@5.1.6: - resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} - engines: {node: '>=10'} + /minimatch@9.0.3: + resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} + engines: {node: '>=16 || 14 >=14.17'} dependencies: brace-expansion: 2.0.1 dev: true @@ -3670,6 +2185,15 @@ packages: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} dev: true + /mlly@1.4.2: + resolution: {integrity: sha512-i/Ykufi2t1EZ6NaPLdfnZk2AX8cs0d+mTzVKuPfqPKPatxLApaBoxJQ9x1/uckXtrS/U5oisPMDkNs0yQTaBRg==} + dependencies: + acorn: 8.11.2 + pathe: 1.1.1 + pkg-types: 1.0.3 + ufo: 1.3.2 + dev: true + /ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} dev: true @@ -3678,32 +2202,14 @@ packages: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} dev: true - /natural-compare@1.4.0: - resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - dev: true - - /neo-async@2.6.2: - resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} - dev: true - - /node-int64@0.4.0: - resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} - dev: true - - /node-releases@2.0.13: - resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==} - dev: true - - /normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} + /nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true dev: true - /npm-run-path@4.0.1: - resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} - engines: {node: '>=8'} - dependencies: - path-key: 3.1.1 + /natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} dev: true /object-assign@4.1.1: @@ -3779,13 +2285,6 @@ packages: wrappy: 1.0.2 dev: true - /onetime@5.1.2: - resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} - engines: {node: '>=6'} - dependencies: - mimic-fn: 2.1.0 - dev: true - /optionator@0.9.3: resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} engines: {node: '>= 0.8.0'} @@ -3798,30 +2297,11 @@ packages: type-check: 0.4.0 dev: true - /p-limit@2.3.0: - resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} - engines: {node: '>=6'} - dependencies: - p-try: 2.2.0 - dev: true - - /p-limit@3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} - dependencies: - yocto-queue: 0.1.0 - dev: true - - /p-locate@4.1.0: - resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} - engines: {node: '>=8'} + /p-limit@4.0.0: + resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: - p-limit: 2.3.0 - dev: true - - /p-try@2.2.0: - resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} - engines: {node: '>=6'} + yocto-queue: 1.0.0 dev: true /parent-module@1.0.1: @@ -3831,21 +2311,6 @@ packages: callsites: 3.1.0 dev: true - /parse-json@5.2.0: - resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} - engines: {node: '>=8'} - dependencies: - '@babel/code-frame': 7.22.13 - error-ex: 1.3.2 - json-parse-even-better-errors: 2.3.1 - lines-and-columns: 1.2.4 - dev: true - - /path-exists@4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} - dev: true - /path-is-absolute@1.0.1: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} @@ -3865,6 +2330,14 @@ packages: engines: {node: '>=8'} dev: true + /pathe@1.1.1: + resolution: {integrity: sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==} + dev: true + + /pathval@1.1.1: + resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} + dev: true + /picocolors@1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} dev: true @@ -3874,16 +2347,21 @@ packages: engines: {node: '>=8.6'} dev: true - /pirates@4.0.6: - resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} - engines: {node: '>= 6'} + /pkg-types@1.0.3: + resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} + dependencies: + jsonc-parser: 3.2.0 + mlly: 1.4.2 + pathe: 1.1.1 dev: true - /pkg-dir@4.2.0: - resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} - engines: {node: '>=8'} + /postcss@8.4.32: + resolution: {integrity: sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==} + engines: {node: ^10 || ^12 || >=14} dependencies: - find-up: 4.1.0 + nanoid: 3.3.7 + picocolors: 1.0.0 + source-map-js: 1.0.2 dev: true /prelude-ls@1.2.1: @@ -3906,23 +2384,11 @@ packages: react-is: 18.2.0 dev: true - /process-nextick-args@2.0.1: - resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} - dev: true - /progress@2.0.3: resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} engines: {node: '>=0.4.0'} dev: true - /prompts@2.4.2: - resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} - engines: {node: '>= 6'} - dependencies: - kleur: 3.0.3 - sisteransi: 1.0.5 - dev: true - /prop-types@15.8.1: resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} dependencies: @@ -3931,41 +2397,15 @@ packages: react-is: 16.13.1 dev: true - /protobufjs@7.2.5: - resolution: {integrity: sha512-gGXRSXvxQ7UiPgfw8gevrfRWcTlSbOFg+p/N+JVJEK5VhueL2miT6qTymqAmjr1Q5WbOCyJbyrk6JfWKwlFn6A==} - engines: {node: '>=12.0.0'} - requiresBuild: true - dependencies: - '@protobufjs/aspromise': 1.1.2 - '@protobufjs/base64': 1.1.2 - '@protobufjs/codegen': 2.0.4 - '@protobufjs/eventemitter': 1.1.0 - '@protobufjs/fetch': 1.1.0 - '@protobufjs/float': 1.0.2 - '@protobufjs/inquire': 1.1.0 - '@protobufjs/path': 1.1.2 - '@protobufjs/pool': 1.1.0 - '@protobufjs/utf8': 1.1.0 - '@types/node': 20.10.1 - long: 5.2.3 - /proxy-from-env@1.1.0: resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} dev: false - /prr@1.0.1: - resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==} - dev: true - /punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} dev: true - /pure-rand@6.0.4: - resolution: {integrity: sha512-LA0Y9kxMYv47GIPJy6MI84fqTd2HmYZI83W/kM/SkKfDlajnZYfmXFTxkbY+xSBPkLJxltMa9hIkmdc29eguMA==} - dev: true - /queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} dev: true @@ -3975,12 +2415,6 @@ packages: engines: {node: '>=10'} dev: false - /randombytes@2.1.0: - resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} - dependencies: - safe-buffer: 5.2.1 - dev: true - /react-is@16.13.1: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} dev: true @@ -3989,25 +2423,6 @@ packages: resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} dev: true - /readable-stream@2.3.8: - resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} - dependencies: - core-util-is: 1.0.3 - inherits: 2.0.4 - isarray: 1.0.0 - process-nextick-args: 2.0.1 - safe-buffer: 5.1.2 - string_decoder: 1.1.1 - util-deprecate: 1.0.2 - dev: true - - /rechoir@0.7.1: - resolution: {integrity: sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==} - engines: {node: '>= 0.10'} - dependencies: - resolve: 1.22.8 - dev: true - /reflect.getprototypeof@1.0.4: resolution: {integrity: sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==} engines: {node: '>= 0.4'} @@ -4038,38 +2453,16 @@ packages: engines: {node: '>=8'} dev: true - /require-directory@2.1.1: - resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} - engines: {node: '>=0.10.0'} - dev: true - /require-from-string@2.0.2: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} engines: {node: '>=0.10.0'} dev: true - /resolve-cwd@3.0.0: - resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} - engines: {node: '>=8'} - dependencies: - resolve-from: 5.0.0 - dev: true - /resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} dev: true - /resolve-from@5.0.0: - resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} - engines: {node: '>=8'} - dev: true - - /resolve.exports@2.0.2: - resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==} - engines: {node: '>=10'} - dev: true - /resolve@1.22.8: resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} hasBin: true @@ -4100,6 +2493,26 @@ packages: glob: 7.2.3 dev: true + /rollup@4.6.1: + resolution: {integrity: sha512-jZHaZotEHQaHLgKr8JnQiDT1rmatjgKlMekyksz+yk9jt/8z9quNjnKNRoaM0wd9DC2QKXjmWWuDYtM3jfF8pQ==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.6.1 + '@rollup/rollup-android-arm64': 4.6.1 + '@rollup/rollup-darwin-arm64': 4.6.1 + '@rollup/rollup-darwin-x64': 4.6.1 + '@rollup/rollup-linux-arm-gnueabihf': 4.6.1 + '@rollup/rollup-linux-arm64-gnu': 4.6.1 + '@rollup/rollup-linux-arm64-musl': 4.6.1 + '@rollup/rollup-linux-x64-gnu': 4.6.1 + '@rollup/rollup-linux-x64-musl': 4.6.1 + '@rollup/rollup-win32-arm64-msvc': 4.6.1 + '@rollup/rollup-win32-ia32-msvc': 4.6.1 + '@rollup/rollup-win32-x64-msvc': 4.6.1 + fsevents: 2.3.3 + dev: true + /run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} dependencies: @@ -4116,14 +2529,6 @@ packages: isarray: 2.0.5 dev: true - /safe-buffer@5.1.2: - resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} - dev: true - - /safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - dev: true - /safe-regex-test@1.0.0: resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} dependencies: @@ -4132,15 +2537,6 @@ packages: is-regex: 1.1.4 dev: true - /schema-utils@3.3.0: - resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} - engines: {node: '>= 10.13.0'} - dependencies: - '@types/json-schema': 7.0.15 - ajv: 6.12.6 - ajv-keywords: 3.5.2(ajv@6.12.6) - dev: true - /semver@6.3.1: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true @@ -4154,12 +2550,6 @@ packages: lru-cache: 6.0.0 dev: true - /serialize-javascript@6.0.1: - resolution: {integrity: sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==} - dependencies: - randombytes: 2.1.0 - dev: true - /set-function-length@1.1.1: resolution: {integrity: sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==} engines: {node: '>= 0.4'} @@ -4179,13 +2569,6 @@ packages: has-property-descriptors: 1.0.1 dev: true - /shallow-clone@3.0.1: - resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} - engines: {node: '>=8'} - dependencies: - kind-of: 6.0.3 - dev: true - /shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} @@ -4198,12 +2581,13 @@ packages: engines: {node: '>=8'} dev: true - /shiki@0.10.1: - resolution: {integrity: sha512-VsY7QJVzU51j5o1+DguUd+6vmCmZ5v/6gYu4vyYAhzjuNQU6P/vmSy4uQaOhvje031qQMiW0d2BwgMH52vqMng==} + /shiki@0.14.5: + resolution: {integrity: sha512-1gCAYOcmCFONmErGTrS1fjzJLA7MGZmKzrBNX7apqSwhyITJg2O102uFzXUeBxNnEkDA9vHIKLyeKq0V083vIw==} dependencies: + ansi-sequence-parser: 1.1.1 jsonc-parser: 3.2.0 vscode-oniguruma: 1.7.0 - vscode-textmate: 5.2.0 + vscode-textmate: 8.0.0 dev: true /side-channel@1.0.4: @@ -4214,12 +2598,8 @@ packages: object-inspect: 1.13.1 dev: true - /signal-exit@3.0.7: - resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} - dev: true - - /sisteransi@1.0.5: - resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + /siginfo@2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} dev: true /slash@3.0.0: @@ -4236,22 +2616,8 @@ packages: is-fullwidth-code-point: 3.0.0 dev: true - /source-map-support@0.5.13: - resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} - dependencies: - buffer-from: 1.1.2 - source-map: 0.6.1 - dev: true - - /source-map-support@0.5.21: - resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} - dependencies: - buffer-from: 1.1.2 - source-map: 0.6.1 - dev: true - - /source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + /source-map-js@1.0.2: + resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} engines: {node: '>=0.10.0'} dev: true @@ -4259,19 +2625,12 @@ packages: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} dev: true - /stack-utils@2.0.6: - resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} - engines: {node: '>=10'} - dependencies: - escape-string-regexp: 2.0.0 + /stackback@0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} dev: true - /string-length@4.0.2: - resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} - engines: {node: '>=10'} - dependencies: - char-regex: 1.0.2 - strip-ansi: 6.0.1 + /std-env@3.6.0: + resolution: {integrity: sha512-aFZ19IgVmhdB2uX599ve2kE6BIE3YMnQ6Gp6BURhW/oIzpXGKr878TQfAQZn1+i0Flcc/UKUy1gOlcfaUBCryg==} dev: true /string-width@4.2.3: @@ -4322,12 +2681,6 @@ packages: es-abstract: 1.22.3 dev: true - /string_decoder@1.1.1: - resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} - dependencies: - safe-buffer: 5.1.2 - dev: true - /strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} @@ -4340,21 +2693,17 @@ packages: engines: {node: '>=4'} dev: true - /strip-bom@4.0.0: - resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} - engines: {node: '>=8'} - dev: true - - /strip-final-newline@2.0.0: - resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} - engines: {node: '>=6'} - dev: true - /strip-json-comments@3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} dev: true + /strip-literal@1.3.0: + resolution: {integrity: sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==} + dependencies: + acorn: 8.11.2 + dev: true + /supports-color@5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} engines: {node: '>=4'} @@ -4369,13 +2718,6 @@ packages: has-flag: 4.0.0 dev: true - /supports-color@8.1.1: - resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} - engines: {node: '>=10'} - dependencies: - has-flag: 4.0.0 - dev: true - /supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} @@ -4392,71 +2734,22 @@ packages: strip-ansi: 6.0.1 dev: true - /tapable@1.1.3: - resolution: {integrity: sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==} - engines: {node: '>=6'} - dev: true - - /tapable@2.2.1: - resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} - engines: {node: '>=6'} - dev: true - - /terser-webpack-plugin@5.3.9(webpack@5.89.0): - resolution: {integrity: sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==} - engines: {node: '>= 10.13.0'} - peerDependencies: - '@swc/core': '*' - esbuild: '*' - uglify-js: '*' - webpack: ^5.1.0 - peerDependenciesMeta: - '@swc/core': - optional: true - esbuild: - optional: true - uglify-js: - optional: true - dependencies: - '@jridgewell/trace-mapping': 0.3.20 - jest-worker: 27.5.1 - schema-utils: 3.3.0 - serialize-javascript: 6.0.1 - terser: 5.24.0 - webpack: 5.89.0(webpack-cli@4.10.0) - dev: true - - /terser@5.24.0: - resolution: {integrity: sha512-ZpGR4Hy3+wBEzVEnHvstMvqpD/nABNelQn/z2r0fjVWGQsN3bpOLzQlqDxmb4CDZnXq5lpjnQ+mHQLAOpfM5iw==} - engines: {node: '>=10'} - hasBin: true - dependencies: - '@jridgewell/source-map': 0.3.5 - acorn: 8.11.2 - commander: 2.20.3 - source-map-support: 0.5.21 - dev: true - - /test-exclude@6.0.0: - resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} - engines: {node: '>=8'} - dependencies: - '@istanbuljs/schema': 0.1.3 - glob: 7.2.3 - minimatch: 3.1.2 - dev: true - /text-table@0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} dev: true - /tmpl@1.0.5: - resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} + /tinybench@2.5.1: + resolution: {integrity: sha512-65NKvSuAVDP/n4CqH+a9w2kTlLReS9vhsAP06MWx+/89nMinJyB2icyl58RIcqCmIggpojIGeuJGhjU1aGMBSg==} dev: true - /to-fast-properties@2.0.0: - resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} - engines: {node: '>=4'} + /tinypool@0.7.0: + resolution: {integrity: sha512-zSYNUlYSMhJ6Zdou4cJwo/p7w5nmAH17GRfU/ui3ctvjXFErXXkruT4MWW6poDeXgCaIBlGLrfU6TbTXxyGMww==} + engines: {node: '>=14.0.0'} + dev: true + + /tinyspy@2.2.0: + resolution: {integrity: sha512-d2eda04AN/cPOR89F7Xv5bK/jrQEhmcLFe6HFldoeO9AJtps+fqEnh486vnT/8y4bw38pSyxDcTCAq+Ks2aJTg==} + engines: {node: '>=14.0.0'} dev: true /to-regex-range@5.0.1: @@ -4466,95 +2759,6 @@ packages: is-number: 7.0.0 dev: true - /ts-jest@29.1.1(@babel/core@7.23.3)(jest@29.7.0)(typescript@4.3.5): - resolution: {integrity: sha512-D6xjnnbP17cC85nliwGiL+tpoKN0StpgE0TeOjXQTU6MVCfsB4v7aW05CgQ/1OywGb0x/oy9hHFnN+sczTiRaA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true - peerDependencies: - '@babel/core': '>=7.0.0-beta.0 <8' - '@jest/types': ^29.0.0 - babel-jest: ^29.0.0 - esbuild: '*' - jest: ^29.0.0 - typescript: '>=4.3 <6' - peerDependenciesMeta: - '@babel/core': - optional: true - '@jest/types': - optional: true - babel-jest: - optional: true - esbuild: - optional: true - dependencies: - '@babel/core': 7.23.3 - bs-logger: 0.2.6 - fast-json-stable-stringify: 2.1.0 - jest: 29.7.0(@types/node@20.10.1)(ts-node@9.1.1) - jest-util: 29.7.0 - json5: 2.2.3 - lodash.memoize: 4.1.2 - make-error: 1.3.6 - semver: 7.5.4 - typescript: 4.3.5 - yargs-parser: 21.1.1 - dev: true - - /ts-loader@8.4.0(typescript@4.3.5)(webpack@5.89.0): - resolution: {integrity: sha512-6nFY3IZ2//mrPc+ImY3hNWx1vCHyEhl6V+wLmL4CZcm6g1CqX7UKrkc6y0i4FwcfOhxyMPCfaEvh20f4r9GNpw==} - engines: {node: '>=10.0.0'} - peerDependencies: - typescript: '*' - webpack: '*' - dependencies: - chalk: 4.1.2 - enhanced-resolve: 4.5.0 - loader-utils: 2.0.4 - micromatch: 4.0.5 - semver: 7.5.4 - typescript: 4.3.5 - webpack: 5.89.0(webpack-cli@4.10.0) - dev: true - - /ts-node@9.1.1(typescript@4.3.5): - resolution: {integrity: sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg==} - engines: {node: '>=10.0.0'} - hasBin: true - peerDependencies: - typescript: '>=2.7' - dependencies: - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.2 - make-error: 1.3.6 - source-map-support: 0.5.21 - typescript: 4.3.5 - yn: 3.1.1 - dev: true - - /ts-poet@6.6.0: - resolution: {integrity: sha512-4vEH/wkhcjRPFOdBwIh9ItO6jOoumVLRF4aABDX5JSNEubSqwOulihxQPqai+OkuygJm3WYMInxXQX4QwVNMuw==} - dependencies: - dprint-node: 1.0.8 - dev: true - - /ts-proto-descriptors@1.15.0: - resolution: {integrity: sha512-TYyJ7+H+7Jsqawdv+mfsEpZPTIj9siDHS6EMCzG/z3b/PZiphsX+mWtqFfFVe5/N0Th6V3elK9lQqjnrgTOfrg==} - dependencies: - long: 5.2.3 - protobufjs: 7.2.5 - dev: true - - /ts-proto@1.164.0: - resolution: {integrity: sha512-yIyMucjcozS7Vxtyy5mH6C8ltbY4gEBVNW4ymZ0kWiKlyMxsvhyUZ63CbxcF7dCKQVjHR+fLJ3SiorfgyhQ+AQ==} - hasBin: true - dependencies: - case-anything: 2.1.13 - protobufjs: 7.2.5 - ts-poet: 6.6.0 - ts-proto-descriptors: 1.15.0 - dev: true - /tsconfig-paths@3.14.2: resolution: {integrity: sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==} dependencies: @@ -4568,14 +2772,14 @@ packages: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} dev: true - /tsutils@3.21.0(typescript@4.3.5): + /tsutils@3.21.0(typescript@4.6.4): resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'} peerDependencies: typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' dependencies: tslib: 1.14.1 - typescript: 4.3.5 + typescript: 4.6.4 dev: true /type-check@0.4.0: @@ -4595,11 +2799,6 @@ packages: engines: {node: '>=10'} dev: true - /type-fest@0.21.3: - resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} - engines: {node: '>=10'} - dev: true - /type-fest@1.4.0: resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} engines: {node: '>=10'} @@ -4643,27 +2842,36 @@ packages: is-typed-array: 1.1.12 dev: true - /typedoc@0.22.18(typescript@4.3.5): - resolution: {integrity: sha512-NK9RlLhRUGMvc6Rw5USEYgT4DVAUFk7IF7Q6MYfpJ88KnTZP7EneEa4RcP+tX1auAcz7QT1Iy0bUSZBYYHdoyA==} - engines: {node: '>= 12.10.0'} + /typedoc@0.25.4(typescript@4.6.4): + resolution: {integrity: sha512-Du9ImmpBCw54bX275yJrxPVnjdIyJO/84co0/L9mwe0R3G4FSR6rQ09AlXVRvZEGMUg09+z/usc8mgygQ1aidA==} + engines: {node: '>= 16'} hasBin: true peerDependencies: - typescript: 4.0.x || 4.1.x || 4.2.x || 4.3.x || 4.4.x || 4.5.x || 4.6.x || 4.7.x + typescript: 4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x || 5.2.x || 5.3.x dependencies: - glob: 8.1.0 lunr: 2.3.9 marked: 4.3.0 - minimatch: 5.1.6 - shiki: 0.10.1 - typescript: 4.3.5 + minimatch: 9.0.3 + shiki: 0.14.5 + typescript: 4.6.4 + dev: true + + /typescript@4.5.2: + resolution: {integrity: sha512-5BlMof9H1yGt0P8/WF+wPNw6GfctgGjXp5hkblpyT+8rkASSmkUKMXrxR0Xg8ThVCi/JnHQiKXeBaEwCeQwMFw==} + engines: {node: '>=4.2.0'} + hasBin: true dev: true - /typescript@4.3.5: - resolution: {integrity: sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA==} + /typescript@4.6.4: + resolution: {integrity: sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg==} engines: {node: '>=4.2.0'} hasBin: true dev: true + /ufo@1.3.2: + resolution: {integrity: sha512-o+ORpgGwaYQXgqGDwd+hkS4PuZ3QnmqMMxRuajK/a38L6fTpcE5GPIfrf+L/KemFzfUpeUQc1rRS1iDBozvnFA==} + dev: true + /unbox-primitive@1.0.2: resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} dependencies: @@ -4675,16 +2883,6 @@ packages: /undici-types@5.26.5: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - - /update-browserslist-db@1.0.13(browserslist@4.22.1): - resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - dependencies: - browserslist: 4.22.1 - escalade: 3.1.1 - picocolors: 1.0.0 dev: true /uri-js@4.4.1: @@ -4693,133 +2891,139 @@ packages: punycode: 2.3.1 dev: true - /util-deprecate@1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - dev: true - /v8-compile-cache@2.4.0: resolution: {integrity: sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==} dev: true - /v8-to-istanbul@9.2.0: - resolution: {integrity: sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==} - engines: {node: '>=10.12.0'} - dependencies: - '@jridgewell/trace-mapping': 0.3.20 - '@types/istanbul-lib-coverage': 2.0.6 - convert-source-map: 2.0.0 - dev: true - - /vscode-oniguruma@1.7.0: - resolution: {integrity: sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==} - dev: true - - /vscode-textmate@5.2.0: - resolution: {integrity: sha512-Uw5ooOQxRASHgu6C7GVvUxisKXfSgW4oFlO+aa+PAkgmH89O3CXxEEzNRNtHSqtXFTl0nAC1uYj0GMSH27uwtQ==} - dev: true - - /walker@1.0.8: - resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} - dependencies: - makeerror: 1.0.12 - dev: true - - /watchpack@2.4.0: - resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==} - engines: {node: '>=10.13.0'} + /vite-node@0.34.6(@types/node@20.10.1): + resolution: {integrity: sha512-nlBMJ9x6n7/Amaz6F3zJ97EBwR2FkzhBRxF5e+jE6LA3yi6Wtc2lyTij1OnDMIr34v5g/tVQtsVAzhT0jc5ygA==} + engines: {node: '>=v14.18.0'} + hasBin: true dependencies: - glob-to-regexp: 0.4.1 - graceful-fs: 4.2.11 + cac: 6.7.14 + debug: 4.3.4 + mlly: 1.4.2 + pathe: 1.1.1 + picocolors: 1.0.0 + vite: 5.0.5(@types/node@20.10.1) + transitivePeerDependencies: + - '@types/node' + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser dev: true - /webpack-cli@4.10.0(webpack@5.89.0): - resolution: {integrity: sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w==} - engines: {node: '>=10.13.0'} + /vite@5.0.5(@types/node@20.10.1): + resolution: {integrity: sha512-OekeWqR9Ls56f3zd4CaxzbbS11gqYkEiBtnWFFgYR2WV8oPJRRKq0mpskYy/XaoCL3L7VINDhqqOMNDiYdGvGg==} + engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: - '@webpack-cli/generators': '*' - '@webpack-cli/migrate': '*' - webpack: 4.x.x || 5.x.x - webpack-bundle-analyzer: '*' - webpack-dev-server: '*' + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 peerDependenciesMeta: - '@webpack-cli/generators': + '@types/node': optional: true - '@webpack-cli/migrate': + less: optional: true - webpack-bundle-analyzer: + lightningcss: optional: true - webpack-dev-server: + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: optional: true dependencies: - '@discoveryjs/json-ext': 0.5.7 - '@webpack-cli/configtest': 1.2.0(webpack-cli@4.10.0)(webpack@5.89.0) - '@webpack-cli/info': 1.5.0(webpack-cli@4.10.0) - '@webpack-cli/serve': 1.7.0(webpack-cli@4.10.0) - colorette: 2.0.20 - commander: 7.2.0 - cross-spawn: 7.0.3 - fastest-levenshtein: 1.0.16 - import-local: 3.1.0 - interpret: 2.2.0 - rechoir: 0.7.1 - webpack: 5.89.0(webpack-cli@4.10.0) - webpack-merge: 5.10.0 - dev: true - - /webpack-merge@5.10.0: - resolution: {integrity: sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==} - engines: {node: '>=10.0.0'} - dependencies: - clone-deep: 4.0.1 - flat: 5.0.2 - wildcard: 2.0.1 - dev: true - - /webpack-sources@3.2.3: - resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} - engines: {node: '>=10.13.0'} + '@types/node': 20.10.1 + esbuild: 0.19.8 + postcss: 8.4.32 + rollup: 4.6.1 + optionalDependencies: + fsevents: 2.3.3 dev: true - /webpack@5.89.0(webpack-cli@4.10.0): - resolution: {integrity: sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw==} - engines: {node: '>=10.13.0'} + /vitest@0.34.6: + resolution: {integrity: sha512-+5CALsOvbNKnS+ZHMXtuUC7nL8/7F1F2DnHGjSsszX8zCjWSSviphCb/NuS9Nzf4Q03KyyDRBAXhF/8lffME4Q==} + engines: {node: '>=v14.18.0'} hasBin: true peerDependencies: - webpack-cli: '*' + '@edge-runtime/vm': '*' + '@vitest/browser': '*' + '@vitest/ui': '*' + happy-dom: '*' + jsdom: '*' + playwright: '*' + safaridriver: '*' + webdriverio: '*' peerDependenciesMeta: - webpack-cli: + '@edge-runtime/vm': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + playwright: + optional: true + safaridriver: + optional: true + webdriverio: optional: true dependencies: - '@types/eslint-scope': 3.7.7 - '@types/estree': 1.0.5 - '@webassemblyjs/ast': 1.11.6 - '@webassemblyjs/wasm-edit': 1.11.6 - '@webassemblyjs/wasm-parser': 1.11.6 + '@types/chai': 4.3.11 + '@types/chai-subset': 1.3.5 + '@types/node': 20.10.1 + '@vitest/expect': 0.34.6 + '@vitest/runner': 0.34.6 + '@vitest/snapshot': 0.34.6 + '@vitest/spy': 0.34.6 + '@vitest/utils': 0.34.6 acorn: 8.11.2 - acorn-import-assertions: 1.9.0(acorn@8.11.2) - browserslist: 4.22.1 - chrome-trace-event: 1.0.3 - enhanced-resolve: 5.15.0 - es-module-lexer: 1.4.0 - eslint-scope: 5.1.1 - events: 3.3.0 - glob-to-regexp: 0.4.1 - graceful-fs: 4.2.11 - json-parse-even-better-errors: 2.3.1 - loader-runner: 4.3.0 - mime-types: 2.1.35 - neo-async: 2.6.2 - schema-utils: 3.3.0 - tapable: 2.2.1 - terser-webpack-plugin: 5.3.9(webpack@5.89.0) - watchpack: 2.4.0 - webpack-cli: 4.10.0(webpack@5.89.0) - webpack-sources: 3.2.3 + acorn-walk: 8.3.0 + cac: 6.7.14 + chai: 4.3.10 + debug: 4.3.4 + local-pkg: 0.4.3 + magic-string: 0.30.5 + pathe: 1.1.1 + picocolors: 1.0.0 + std-env: 3.6.0 + strip-literal: 1.3.0 + tinybench: 2.5.1 + tinypool: 0.7.0 + vite: 5.0.5(@types/node@20.10.1) + vite-node: 0.34.6(@types/node@20.10.1) + why-is-node-running: 2.2.2 transitivePeerDependencies: - - '@swc/core' - - esbuild - - uglify-js + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser + dev: true + + /vscode-oniguruma@1.7.0: + resolution: {integrity: sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==} + dev: true + + /vscode-textmate@8.0.0: + resolution: {integrity: sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==} dev: true /which-boxed-primitive@1.0.2: @@ -4878,68 +3082,24 @@ packages: isexe: 2.0.0 dev: true - /wildcard@2.0.1: - resolution: {integrity: sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==} - dev: true - - /wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} + /why-is-node-running@2.2.2: + resolution: {integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==} + engines: {node: '>=8'} + hasBin: true dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 + siginfo: 2.0.0 + stackback: 0.0.2 dev: true /wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} dev: true - /write-file-atomic@4.0.2: - resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - dependencies: - imurmurhash: 0.1.4 - signal-exit: 3.0.7 - dev: true - - /y18n@5.0.8: - resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} - engines: {node: '>=10'} - dev: true - - /yallist@3.1.1: - resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - dev: true - /yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} dev: true - /yargs-parser@21.1.1: - resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} - engines: {node: '>=12'} - dev: true - - /yargs@17.7.2: - resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} - engines: {node: '>=12'} - dependencies: - cliui: 8.0.1 - escalade: 3.1.1 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - string-width: 4.2.3 - y18n: 5.0.8 - yargs-parser: 21.1.1 - dev: true - - /yn@3.1.1: - resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} - engines: {node: '>=6'} - dev: true - - /yocto-queue@0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} + /yocto-queue@1.0.0: + resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} + engines: {node: '>=12.20'} dev: true diff --git a/protocol b/protocol index a187ed4f..3b3c5b23 160000 --- a/protocol +++ b/protocol @@ -1 +1 @@ -Subproject commit a187ed4f546b4f6881313ec4813268d53cb070f8 +Subproject commit 3b3c5b232970ffdaeb54eee7474ff3b9080bda28 diff --git a/src/AccessToken.test.ts b/src/AccessToken.test.ts index 1e0a2c6a..dd8db743 100644 --- a/src/AccessToken.test.ts +++ b/src/AccessToken.test.ts @@ -1,3 +1,4 @@ +import { describe, expect, it } from 'vitest'; import * as jose from 'jose'; import { AccessToken, TokenVerifier } from './AccessToken'; import { ClaimGrants } from './grants'; diff --git a/src/AccessToken.ts b/src/AccessToken.ts index 5ea8b9e8..5ca6471b 100644 --- a/src/AccessToken.ts +++ b/src/AccessToken.ts @@ -1,5 +1,5 @@ import * as jose from 'jose'; -import { ClaimGrants, VideoGrant } from './grants'; +import { ClaimGrants, VideoGrant } from './grants.js'; // 6 hours const defaultTTL = `6h`; diff --git a/src/EgressClient.ts b/src/EgressClient.ts index 13054983..2700040a 100644 --- a/src/EgressClient.ts +++ b/src/EgressClient.ts @@ -16,9 +16,9 @@ import { UpdateLayoutRequest, UpdateStreamRequest, WebEgressRequest, -} from './proto/livekit_egress'; -import ServiceBase from './ServiceBase'; -import { livekitPackage, Rpc, TwirpRpc } from './TwirpRPC'; +} from './proto/livekit_egress_pb.js'; +import ServiceBase from './ServiceBase.js'; +import { livekitPackage, Rpc, TwirpRpc } from './TwirpRPC.js'; const svc = 'Egress'; @@ -172,23 +172,26 @@ export class EgressClient extends ServiceBase { videoOnly ??= false; customBaseUrl ??= ''; - const { file, stream, segments, preset, advanced, fileOutputs, streamOutputs, segmentOutputs } = - this.getOutputParams(output, options); - const req = RoomCompositeEgressRequest.toJSON({ + const { + output: legacyOutput, + options: egressOptions, + fileOutputs, + streamOutputs, + segmentOutputs, + } = this.getOutputParams(output, options); + + const req = new RoomCompositeEgressRequest({ roomName, layout, audioOnly, videoOnly, customBaseUrl, - file, - stream, - segments, - preset, - advanced, + output: legacyOutput, + options: egressOptions, fileOutputs, streamOutputs, segmentOutputs, - }); + }).toJson(); const data = await this.rpc.request( svc, @@ -196,7 +199,7 @@ export class EgressClient extends ServiceBase { req, await this.authHeader({ roomRecord: true }), ); - return EgressInfo.fromJSON(data); + return EgressInfo.fromJson(data); } /** @@ -212,22 +215,25 @@ export class EgressClient extends ServiceBase { const audioOnly = opts?.audioOnly || false; const videoOnly = opts?.videoOnly || false; const awaitStartSignal = opts?.awaitStartSignal || false; - const { file, stream, segments, preset, advanced, fileOutputs, streamOutputs, segmentOutputs } = - this.getOutputParams(output, opts?.encodingOptions); - const req = WebEgressRequest.toJSON({ + const { + output: legacyOutput, + options, + fileOutputs, + streamOutputs, + segmentOutputs, + } = this.getOutputParams(output, opts?.encodingOptions); + + const req = new WebEgressRequest({ url, audioOnly, videoOnly, awaitStartSignal, - file, - stream, - segments, - preset, - advanced, + output: legacyOutput, + options, fileOutputs, streamOutputs, segmentOutputs, - }); + }).toJson(); const data = await this.rpc.request( svc, @@ -235,7 +241,7 @@ export class EgressClient extends ServiceBase { req, await this.authHeader({ roomRecord: true }), ); - return EgressInfo.fromJSON(data); + return EgressInfo.fromJson(data); } /** @@ -251,19 +257,18 @@ export class EgressClient extends ServiceBase { output: EncodedOutputs, opts?: ParticipantEgressOptions, ): Promise { - const { preset, advanced, fileOutputs, streamOutputs, segmentOutputs } = this.getOutputParams( + const { options, fileOutputs, streamOutputs, segmentOutputs } = this.getOutputParams( output, opts?.encodingOptions, ); - const req = ParticipantEgressRequest.toJSON({ + const req = new ParticipantEgressRequest({ roomName, identity, - preset, - advanced, + options, fileOutputs, streamOutputs, segmentOutputs, - }); + }).toJson(); const data = await this.rpc.request( svc, @@ -271,7 +276,7 @@ export class EgressClient extends ServiceBase { req, this.authHeader({ roomRecord: true }), ); - return EgressInfo.fromJSON(data); + return EgressInfo.fromJson(data); } /** @@ -316,21 +321,23 @@ export class EgressClient extends ServiceBase { audioTrackId ??= ''; videoTrackId ??= ''; - const { file, stream, segments, preset, advanced, fileOutputs, streamOutputs, segmentOutputs } = - this.getOutputParams(output, options); - const req = TrackCompositeEgressRequest.toJSON({ + const { + output: legacyOutput, + options: egressOptions, + fileOutputs, + streamOutputs, + segmentOutputs, + } = this.getOutputParams(output, options); + const req = new TrackCompositeEgressRequest({ roomName, audioTrackId, videoTrackId, - file, - stream, - segments, - preset, - advanced, + output: legacyOutput, + options: egressOptions, fileOutputs, streamOutputs, segmentOutputs, - }); + }).toJson(); const data = await this.rpc.request( svc, @@ -338,7 +345,7 @@ export class EgressClient extends ServiceBase { req, await this.authHeader({ roomRecord: true }), ); - return EgressInfo.fromJSON(data); + return EgressInfo.fromJson(data); } private isEncodedOutputs(output: any): output is EncodedOutputs { @@ -372,7 +379,7 @@ export class EgressClient extends ServiceBase { private getOutputParams( output: EncodedOutputs | EncodedFileOutput | StreamOutput | SegmentedFileOutput, - options?: EncodingOptionsPreset | EncodingOptions, + opts?: EncodingOptionsPreset | EncodingOptions, ) { let file: EncodedFileOutput | undefined; let fileOutputs: Array | undefined; @@ -380,8 +387,6 @@ export class EgressClient extends ServiceBase { let streamOutputs: Array | undefined; let segments: SegmentedFileOutput | undefined; let segmentOutputs: Array | undefined; - let preset: EncodingOptionsPreset | undefined; - let advanced: EncodingOptions | undefined; if (this.isEncodedOutputs(output)) { if (output.file !== undefined) { @@ -404,15 +409,68 @@ export class EgressClient extends ServiceBase { streamOutputs = [stream]; } - if (options) { - if (typeof options === 'number') { - preset = options; + let legacyOutput: + | { + value: EncodedFileOutput; + case: 'file'; + } + | { + value: StreamOutput; + case: 'stream'; + } + | { + value: SegmentedFileOutput; + case: 'segments'; + } + | undefined; + + if (file) { + legacyOutput = { + case: 'file', + value: file, + }; + } else if (stream) { + legacyOutput = { + case: 'stream', + value: stream, + }; + } else if (segments) { + legacyOutput = { + case: 'segments', + value: segments, + }; + } + let egressOptions: + | { + value: EncodingOptionsPreset; + case: 'preset'; + } + | { + value: EncodingOptions; + case: 'advanced'; + } + | undefined; + if (opts) { + if (typeof opts === 'number') { + egressOptions = { + case: 'preset', + value: opts, + }; } else { - advanced = options; + egressOptions = { + case: 'advanced', + value: opts, + }; } } - return { file, stream, segments, preset, advanced, fileOutputs, streamOutputs, segmentOutputs }; + return { + output: legacyOutput, + options: egressOptions, + fileOutputs, + streamOutputs, + segmentOutputs, + }; } /** @@ -425,21 +483,34 @@ export class EgressClient extends ServiceBase { output: DirectFileOutput | string, trackId: string, ): Promise { - let file: DirectFileOutput | undefined; - let websocketUrl: string | undefined; + let legacyOutput: + | { + value: DirectFileOutput; + case: 'file'; + } + | { + value: string; + case: 'websocketUrl'; + } + | undefined; if (typeof output === 'string') { - websocketUrl = output; + legacyOutput = { + case: 'websocketUrl', + value: output, + }; } else { - file = output; + legacyOutput = { + case: 'file', + value: output, + }; } - const req = TrackEgressRequest.toJSON({ + const req = new TrackEgressRequest({ roomName, trackId, - file, - websocketUrl, - }); + output: legacyOutput, + }).toJson(); const data = await this.rpc.request( svc, @@ -447,7 +518,7 @@ export class EgressClient extends ServiceBase { req, await this.authHeader({ roomRecord: true }), ); - return EgressInfo.fromJSON(data); + return EgressInfo.fromJson(data); } /** @@ -458,10 +529,10 @@ export class EgressClient extends ServiceBase { const data = await this.rpc.request( svc, 'UpdateLayout', - UpdateLayoutRequest.toJSON({ egressId, layout }), + new UpdateLayoutRequest({ egressId, layout }).toJson(), await this.authHeader({ roomRecord: true }), ); - return EgressInfo.fromJSON(data); + return EgressInfo.fromJson(data); } /** @@ -480,10 +551,10 @@ export class EgressClient extends ServiceBase { const data = await this.rpc.request( svc, 'UpdateStream', - UpdateStreamRequest.toJSON({ egressId, addOutputUrls, removeOutputUrls }), + new UpdateStreamRequest({ egressId, addOutputUrls, removeOutputUrls }).toJson(), await this.authHeader({ roomRecord: true }), ); - return EgressInfo.fromJSON(data); + return EgressInfo.fromJson(data); } /** @@ -500,7 +571,7 @@ export class EgressClient extends ServiceBase { * @param roomName list egress for one room only */ async listEgress(options?: string | ListEgressOptions): Promise> { - let req: ListEgressRequest = {}; + let req: Partial = {}; if (typeof options === 'string') { req.roomName = options; } else if (options !== undefined) { @@ -510,10 +581,10 @@ export class EgressClient extends ServiceBase { const data = await this.rpc.request( svc, 'ListEgress', - ListEgressRequest.toJSON(req), + new ListEgressRequest(req).toJson(), await this.authHeader({ roomRecord: true }), ); - return ListEgressResponse.fromJSON(data).items ?? []; + return ListEgressResponse.fromJson(data).items ?? []; } /** @@ -523,9 +594,9 @@ export class EgressClient extends ServiceBase { const data = await this.rpc.request( svc, 'StopEgress', - StopEgressRequest.toJSON({ egressId }), + new StopEgressRequest({ egressId }).toJson(), await this.authHeader({ roomRecord: true }), ); - return EgressInfo.fromJSON(data); + return EgressInfo.fromJson(data); } } diff --git a/src/IngressClient.ts b/src/IngressClient.ts index 1d7691b6..e8ec631d 100644 --- a/src/IngressClient.ts +++ b/src/IngressClient.ts @@ -8,9 +8,9 @@ import { ListIngressRequest, ListIngressResponse, UpdateIngressRequest, -} from './proto/livekit_ingress'; -import ServiceBase from './ServiceBase'; -import { livekitPackage, Rpc, TwirpRpc } from './TwirpRPC'; +} from './proto/livekit_ingress_pb.js'; +import ServiceBase from './ServiceBase.js'; +import { livekitPackage, Rpc, TwirpRpc } from './TwirpRPC.js'; const svc = 'Ingress'; @@ -133,7 +133,7 @@ export class IngressClient extends ServiceBase { video = opts.video; } - const req = CreateIngressRequest.toJSON({ + const req = new CreateIngressRequest({ inputType, name, roomName, @@ -143,7 +143,7 @@ export class IngressClient extends ServiceBase { url, audio, video, - }); + }).toJson(); const data = await this.rpc.request( svc, @@ -151,7 +151,7 @@ export class IngressClient extends ServiceBase { req, await this.authHeader({ ingressAdmin: true }), ); - return IngressInfo.fromJSON(data); + return IngressInfo.fromJson(data); } /** @@ -165,7 +165,7 @@ export class IngressClient extends ServiceBase { const participantIdentity: string = opts.participantIdentity || ''; const { audio, video, bypassTranscoding } = opts; - const req = UpdateIngressRequest.toJSON({ + const req = new UpdateIngressRequest({ ingressId, name, roomName, @@ -174,7 +174,7 @@ export class IngressClient extends ServiceBase { bypassTranscoding, audio, video, - }); + }).toJson(); const data = await this.rpc.request( svc, @@ -182,7 +182,7 @@ export class IngressClient extends ServiceBase { req, await this.authHeader({ ingressAdmin: true }), ); - return IngressInfo.fromJSON(data); + return IngressInfo.fromJson(data); } /** @@ -195,7 +195,7 @@ export class IngressClient extends ServiceBase { */ async listIngress(opts?: ListIngressOptions): Promise>; async listIngress(arg?: string | ListIngressOptions): Promise> { - let req: ListIngressRequest = {}; + let req: Partial = {}; if (typeof arg === 'string') { req.roomName = arg; } else if (arg) { @@ -204,10 +204,10 @@ export class IngressClient extends ServiceBase { const data = await this.rpc.request( svc, 'ListIngress', - ListIngressRequest.toJSON(req), + new ListIngressRequest(req).toJson(), await this.authHeader({ ingressAdmin: true }), ); - return ListIngressResponse.fromJSON(data).items ?? []; + return ListIngressResponse.fromJson(data).items ?? []; } /** @@ -217,9 +217,9 @@ export class IngressClient extends ServiceBase { const data = await this.rpc.request( svc, 'DeleteIngress', - DeleteIngressRequest.toJSON({ ingressId }), + new DeleteIngressRequest({ ingressId }).toJson(), await this.authHeader({ ingressAdmin: true }), ); - return IngressInfo.fromJSON(data); + return IngressInfo.fromJson(data); } } diff --git a/src/RoomServiceClient.ts b/src/RoomServiceClient.ts index 9f6f6c03..496f3afd 100644 --- a/src/RoomServiceClient.ts +++ b/src/RoomServiceClient.ts @@ -1,5 +1,5 @@ -import type { DataPacket_Kind, DeepPartial, TrackInfo } from './proto/livekit_models'; -import { ParticipantInfo, ParticipantPermission, Room } from './proto/livekit_models'; +import type { DataPacket_Kind, TrackInfo } from './proto/livekit_models_pb.js'; +import { ParticipantInfo, ParticipantPermission, Room } from './proto/livekit_models_pb.js'; import { CreateRoomRequest, DeleteRoomRequest, @@ -15,9 +15,9 @@ import { UpdateParticipantRequest, UpdateRoomMetadataRequest, UpdateSubscriptionsRequest, -} from './proto/livekit_room'; -import ServiceBase from './ServiceBase'; -import { livekitPackage, Rpc, TwirpRpc } from './TwirpRPC'; +} from './proto/livekit_room_pb.js'; +import ServiceBase from './ServiceBase.js'; +import { livekitPackage, Rpc, TwirpRpc } from './TwirpRPC.js'; /** * Options for when creating a room @@ -108,10 +108,10 @@ export class RoomServiceClient extends ServiceBase { const data = await this.rpc.request( svc, 'CreateRoom', - CreateRoomRequest.toJSON(CreateRoomRequest.fromPartial(options)), + new CreateRoomRequest(options).toJson(), await this.authHeader({ roomCreate: true }), ); - return Room.fromJSON(data); + return Room.fromJson(data); } /** @@ -124,10 +124,10 @@ export class RoomServiceClient extends ServiceBase { const data = await this.rpc.request( svc, 'ListRooms', - ListRoomsRequest.toJSON({ names: names ?? [] }), + new ListRoomsRequest({ names: names ?? [] }).toJson(), await this.authHeader({ roomList: true }), ); - const res = ListRoomsResponse.fromJSON(data); + const res = ListRoomsResponse.fromJson(data); return res.rooms ?? []; } @@ -135,7 +135,7 @@ export class RoomServiceClient extends ServiceBase { await this.rpc.request( svc, 'DeleteRoom', - DeleteRoomRequest.toJSON({ room }), + new DeleteRoomRequest({ room }).toJson(), await this.authHeader({ roomCreate: true }), ); } @@ -149,10 +149,10 @@ export class RoomServiceClient extends ServiceBase { const data = await this.rpc.request( svc, 'UpdateRoomMetadata', - UpdateRoomMetadataRequest.toJSON({ room, metadata }), + new UpdateRoomMetadataRequest({ room, metadata }).toJson(), await this.authHeader({ roomAdmin: true, room }), ); - return Room.fromJSON(data); + return Room.fromJson(data); } /** @@ -163,10 +163,10 @@ export class RoomServiceClient extends ServiceBase { const data = await this.rpc.request( svc, 'ListParticipants', - ListParticipantsRequest.toJSON({ room }), + new ListParticipantsRequest({ room }).toJson(), await this.authHeader({ roomAdmin: true, room }), ); - const res = ListParticipantsResponse.fromJSON(data); + const res = ListParticipantsResponse.fromJson(data); return res.participants ?? []; } @@ -180,11 +180,11 @@ export class RoomServiceClient extends ServiceBase { const data = await this.rpc.request( svc, 'GetParticipant', - RoomParticipantIdentity.toJSON({ room, identity }), + new RoomParticipantIdentity({ room, identity }).toJson(), await this.authHeader({ roomAdmin: true, room }), ); - return ParticipantInfo.fromJSON(data); + return ParticipantInfo.fromJson(data); } /** @@ -198,7 +198,7 @@ export class RoomServiceClient extends ServiceBase { await this.rpc.request( svc, 'RemoveParticipant', - RoomParticipantIdentity.toJSON({ room, identity }), + new RoomParticipantIdentity({ room, identity }).toJson(), await this.authHeader({ roomAdmin: true, room }), ); } @@ -216,19 +216,19 @@ export class RoomServiceClient extends ServiceBase { trackSid: string, muted: boolean, ): Promise { - const req = MuteRoomTrackRequest.toJSON({ + const req = new MuteRoomTrackRequest({ room, identity, trackSid, muted, - }); + }).toJson(); const data = await this.rpc.request( svc, 'MutePublishedTrack', req, await this.authHeader({ roomAdmin: true, room }), ); - const res = MuteRoomTrackResponse.fromJSON(data); + const res = MuteRoomTrackResponse.fromJson(data); return res.track!; } @@ -244,25 +244,25 @@ export class RoomServiceClient extends ServiceBase { room: string, identity: string, metadata?: string, - permission?: DeepPartial, + permission?: Partial, name?: string, ): Promise { - const req: UpdateParticipantRequest = { + const req = new UpdateParticipantRequest({ room, identity, metadata: metadata || '', name: name || '', - }; + }); if (permission) { - req.permission = ParticipantPermission.fromPartial(permission); + req.permission = new ParticipantPermission(permission); } const data = await this.rpc.request( svc, 'UpdateParticipant', - UpdateParticipantRequest.toJSON(req), + req.toJson(), await this.authHeader({ roomAdmin: true, room }), ); - return ParticipantInfo.fromJSON(data); + return ParticipantInfo.fromJson(data); } /** @@ -278,13 +278,13 @@ export class RoomServiceClient extends ServiceBase { trackSids: string[], subscribe: boolean, ): Promise { - const req = UpdateSubscriptionsRequest.toJSON({ + const req = new UpdateSubscriptionsRequest({ room, identity, trackSids, subscribe, participantTracks: [], - }); + }).toJson(); await this.rpc.request( svc, 'UpdateSubscriptions', @@ -328,20 +328,20 @@ export class RoomServiceClient extends ServiceBase { ): Promise { const destinationSids = Array.isArray(options) ? options : options.destinationSids; const topic = Array.isArray(options) ? undefined : options.topic; - const req: SendDataRequest = { + const req = new SendDataRequest({ room, data, kind, destinationSids: destinationSids ?? [], topic, - }; + }); if (!Array.isArray(options) && options.destinationIdentities) { req.destinationIdentities = options.destinationIdentities; } await this.rpc.request( svc, 'SendData', - SendDataRequest.toJSON(req), + req.toJson(), await this.authHeader({ roomAdmin: true, room }), ); } diff --git a/src/ServiceBase.ts b/src/ServiceBase.ts index 5942846f..6f8dc6a2 100644 --- a/src/ServiceBase.ts +++ b/src/ServiceBase.ts @@ -1,5 +1,5 @@ -import { AccessToken } from './AccessToken'; -import { VideoGrant } from './grants'; +import { AccessToken } from './AccessToken.js'; +import { VideoGrant } from './grants.js'; /** * Utilities to handle authentication diff --git a/src/TwirpRPC.ts b/src/TwirpRPC.ts index 4d94a75d..7aa91ed4 100644 --- a/src/TwirpRPC.ts +++ b/src/TwirpRPC.ts @@ -1,5 +1,6 @@ import axios, { AxiosInstance } from 'axios'; import camelcaseKeys from 'camelcase-keys'; +import type { JsonValue } from '@bufbuild/protobuf'; // twirp RPC adapter for client implementation @@ -7,7 +8,7 @@ const defaultPrefix = '/twirp'; export const livekitPackage = 'livekit'; export interface Rpc { - request(service: string, method: string, data: any, headers?: any): Promise; + request(service: string, method: string, data: JsonValue, headers?: any): Promise; } /** diff --git a/src/WebhookReceiver.test.ts b/src/WebhookReceiver.test.ts index 580f4a8f..8d988bbf 100644 --- a/src/WebhookReceiver.test.ts +++ b/src/WebhookReceiver.test.ts @@ -1,6 +1,7 @@ -import { AccessToken } from './AccessToken'; -import { WebhookEvent } from './proto/livekit_webhook'; -import { WebhookReceiver } from './WebhookReceiver'; +import { describe, expect, it } from 'vitest'; +import { AccessToken } from './AccessToken.js'; +import { WebhookEvent } from './proto/livekit_webhook_pb.js'; +import { WebhookReceiver } from './WebhookReceiver.js'; const testApiKey = 'abcdefg'; const testSecret = 'abababa'; @@ -34,7 +35,7 @@ describe('decoding json payload', () => { extra: 'extra', }; - const event = WebhookEvent.fromJSON(obj); + const event = new WebhookEvent(obj); expect(event).toBeTruthy(); expect(event.room?.name).toBe('mytestroom'); }); diff --git a/src/WebhookReceiver.ts b/src/WebhookReceiver.ts index 299f18ff..485b12dc 100644 --- a/src/WebhookReceiver.ts +++ b/src/WebhookReceiver.ts @@ -1,6 +1,6 @@ import crypto from 'crypto'; -import { TokenVerifier } from './AccessToken'; -import { WebhookEvent } from './proto/livekit_webhook'; +import { TokenVerifier } from './AccessToken.js'; +import { WebhookEvent } from './proto/livekit_webhook_pb.js'; export const authorizeHeader = 'Authorize'; @@ -38,6 +38,6 @@ export class WebhookReceiver { } } - return WebhookEvent.fromJSON(JSON.parse(body)); + return WebhookEvent.fromJson(JSON.parse(body)); } } diff --git a/src/index.ts b/src/index.ts index 73afc371..f2cf6fb3 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,9 +1,9 @@ -export * from './AccessToken'; -export * from './EgressClient'; -export * from './IngressClient'; -export * from './RoomServiceClient'; -export * from './WebhookReceiver'; -export * from './grants'; +export * from './AccessToken.js'; +export * from './EgressClient.js'; +export * from './IngressClient.js'; +export * from './RoomServiceClient.js'; +export * from './WebhookReceiver.js'; +export * from './grants.js'; export { DirectFileOutput, EgressInfo, @@ -15,7 +15,7 @@ export { SegmentedFileProtocol, StreamOutput, StreamProtocol, -} from './proto/livekit_egress'; +} from './proto/livekit_egress_pb.js'; export { IngressAudioEncodingOptions, IngressAudioEncodingPreset, @@ -26,7 +26,7 @@ export { IngressVideoEncodingOptions, IngressVideoEncodingPreset, IngressVideoOptions, -} from './proto/livekit_ingress'; +} from './proto/livekit_ingress_pb.js'; export { DataPacket_Kind, ParticipantInfo, @@ -35,5 +35,5 @@ export { Room, TrackInfo, TrackType, -} from './proto/livekit_models'; -export type { WebhookEvent } from './proto/livekit_webhook'; +} from './proto/livekit_models_pb.js'; +export type { WebhookEvent } from './proto/livekit_webhook_pb.js'; diff --git a/src/proto/google/protobuf/timestamp.ts b/src/proto/google/protobuf/timestamp.ts deleted file mode 100644 index b47bc5bd..00000000 --- a/src/proto/google/protobuf/timestamp.ts +++ /dev/null @@ -1,214 +0,0 @@ -/* eslint-disable */ -import Long from "long"; -import _m0 from "protobufjs/minimal"; - -export const protobufPackage = "google.protobuf"; - -/** - * A Timestamp represents a point in time independent of any time zone or local - * calendar, encoded as a count of seconds and fractions of seconds at - * nanosecond resolution. The count is relative to an epoch at UTC midnight on - * January 1, 1970, in the proleptic Gregorian calendar which extends the - * Gregorian calendar backwards to year one. - * - * All minutes are 60 seconds long. Leap seconds are "smeared" so that no leap - * second table is needed for interpretation, using a [24-hour linear - * smear](https://developers.google.com/time/smear). - * - * The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By - * restricting to that range, we ensure that we can convert to and from [RFC - * 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings. - * - * # Examples - * - * Example 1: Compute Timestamp from POSIX `time()`. - * - * Timestamp timestamp; - * timestamp.set_seconds(time(NULL)); - * timestamp.set_nanos(0); - * - * Example 2: Compute Timestamp from POSIX `gettimeofday()`. - * - * struct timeval tv; - * gettimeofday(&tv, NULL); - * - * Timestamp timestamp; - * timestamp.set_seconds(tv.tv_sec); - * timestamp.set_nanos(tv.tv_usec * 1000); - * - * Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`. - * - * FILETIME ft; - * GetSystemTimeAsFileTime(&ft); - * UINT64 ticks = (((UINT64)ft.dwHighDateTime) << 32) | ft.dwLowDateTime; - * - * // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z - * // is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z. - * Timestamp timestamp; - * timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL)); - * timestamp.set_nanos((INT32) ((ticks % 10000000) * 100)); - * - * Example 4: Compute Timestamp from Java `System.currentTimeMillis()`. - * - * long millis = System.currentTimeMillis(); - * - * Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000) - * .setNanos((int) ((millis % 1000) * 1000000)).build(); - * - * Example 5: Compute Timestamp from Java `Instant.now()`. - * - * Instant now = Instant.now(); - * - * Timestamp timestamp = - * Timestamp.newBuilder().setSeconds(now.getEpochSecond()) - * .setNanos(now.getNano()).build(); - * - * Example 6: Compute Timestamp from current time in Python. - * - * timestamp = Timestamp() - * timestamp.GetCurrentTime() - * - * # JSON Mapping - * - * In JSON format, the Timestamp type is encoded as a string in the - * [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format. That is, the - * format is "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z" - * where {year} is always expressed using four digits while {month}, {day}, - * {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional - * seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution), - * are optional. The "Z" suffix indicates the timezone ("UTC"); the timezone - * is required. A proto3 JSON serializer should always use UTC (as indicated by - * "Z") when printing the Timestamp type and a proto3 JSON parser should be - * able to accept both UTC and other timezones (as indicated by an offset). - * - * For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past - * 01:30 UTC on January 15, 2017. - * - * In JavaScript, one can convert a Date object to this format using the - * standard - * [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString) - * method. In Python, a standard `datetime.datetime` object can be converted - * to this format using - * [`strftime`](https://docs.python.org/2/library/time.html#time.strftime) with - * the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use - * the Joda Time's [`ISODateTimeFormat.dateTime()`]( - * http://www.joda.org/joda-time/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime%2D%2D - * ) to obtain a formatter capable of generating timestamps in this format. - */ -export interface Timestamp { - /** - * Represents seconds of UTC time since Unix epoch - * 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to - * 9999-12-31T23:59:59Z inclusive. - */ - seconds: number; - /** - * Non-negative fractions of a second at nanosecond resolution. Negative - * second values with fractions must still have non-negative nanos values - * that count forward in time. Must be from 0 to 999,999,999 - * inclusive. - */ - nanos: number; -} - -function createBaseTimestamp(): Timestamp { - return { seconds: 0, nanos: 0 }; -} - -export const Timestamp = { - encode(message: Timestamp, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.seconds !== 0) { - writer.uint32(8).int64(message.seconds); - } - if (message.nanos !== 0) { - writer.uint32(16).int32(message.nanos); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): Timestamp { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseTimestamp(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 8) { - break; - } - - message.seconds = longToNumber(reader.int64() as Long); - continue; - case 2: - if (tag !== 16) { - break; - } - - message.nanos = reader.int32(); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): Timestamp { - return { - seconds: isSet(object.seconds) ? globalThis.Number(object.seconds) : 0, - nanos: isSet(object.nanos) ? globalThis.Number(object.nanos) : 0, - }; - }, - - toJSON(message: Timestamp): unknown { - const obj: any = {}; - if (message.seconds !== 0) { - obj.seconds = Math.round(message.seconds); - } - if (message.nanos !== 0) { - obj.nanos = Math.round(message.nanos); - } - return obj; - }, - - create, I>>(base?: I): Timestamp { - return Timestamp.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): Timestamp { - const message = createBaseTimestamp(); - message.seconds = object.seconds ?? 0; - message.nanos = object.nanos ?? 0; - return message; - }, -}; - -type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined; - -export type DeepPartial = T extends Builtin ? T - : T extends globalThis.Array ? globalThis.Array> - : T extends ReadonlyArray ? ReadonlyArray> - : T extends {} ? { [K in keyof T]?: DeepPartial } - : Partial; - -type KeysOfUnion = T extends T ? keyof T : never; -export type Exact = P extends Builtin ? P - : P & { [K in keyof P]: Exact } & { [K in Exclude>]: never }; - -function longToNumber(long: Long): number { - if (long.gt(globalThis.Number.MAX_SAFE_INTEGER)) { - throw new globalThis.Error("Value is larger than Number.MAX_SAFE_INTEGER"); - } - return long.toNumber(); -} - -if (_m0.util.Long !== Long) { - _m0.util.Long = Long as any; - _m0.configure(); -} - -function isSet(value: any): boolean { - return value !== null && value !== undefined; -} diff --git a/src/proto/livekit_egress.ts b/src/proto/livekit_egress.ts deleted file mode 100644 index 487b9439..00000000 --- a/src/proto/livekit_egress.ts +++ /dev/null @@ -1,5336 +0,0 @@ -/* eslint-disable */ -import Long from "long"; -import _m0 from "protobufjs/minimal"; -import { - AudioCodec, - audioCodecFromJSON, - audioCodecToJSON, - ImageCodec, - imageCodecFromJSON, - imageCodecToJSON, - VideoCodec, - videoCodecFromJSON, - videoCodecToJSON, -} from "./livekit_models"; - -export const protobufPackage = "livekit"; - -export enum EncodedFileType { - /** DEFAULT_FILETYPE - file type chosen based on codecs */ - DEFAULT_FILETYPE = 0, - MP4 = 1, - OGG = 2, - UNRECOGNIZED = -1, -} - -export function encodedFileTypeFromJSON(object: any): EncodedFileType { - switch (object) { - case 0: - case "DEFAULT_FILETYPE": - return EncodedFileType.DEFAULT_FILETYPE; - case 1: - case "MP4": - return EncodedFileType.MP4; - case 2: - case "OGG": - return EncodedFileType.OGG; - case -1: - case "UNRECOGNIZED": - default: - return EncodedFileType.UNRECOGNIZED; - } -} - -export function encodedFileTypeToJSON(object: EncodedFileType): string { - switch (object) { - case EncodedFileType.DEFAULT_FILETYPE: - return "DEFAULT_FILETYPE"; - case EncodedFileType.MP4: - return "MP4"; - case EncodedFileType.OGG: - return "OGG"; - case EncodedFileType.UNRECOGNIZED: - default: - return "UNRECOGNIZED"; - } -} - -export enum SegmentedFileProtocol { - DEFAULT_SEGMENTED_FILE_PROTOCOL = 0, - HLS_PROTOCOL = 1, - UNRECOGNIZED = -1, -} - -export function segmentedFileProtocolFromJSON(object: any): SegmentedFileProtocol { - switch (object) { - case 0: - case "DEFAULT_SEGMENTED_FILE_PROTOCOL": - return SegmentedFileProtocol.DEFAULT_SEGMENTED_FILE_PROTOCOL; - case 1: - case "HLS_PROTOCOL": - return SegmentedFileProtocol.HLS_PROTOCOL; - case -1: - case "UNRECOGNIZED": - default: - return SegmentedFileProtocol.UNRECOGNIZED; - } -} - -export function segmentedFileProtocolToJSON(object: SegmentedFileProtocol): string { - switch (object) { - case SegmentedFileProtocol.DEFAULT_SEGMENTED_FILE_PROTOCOL: - return "DEFAULT_SEGMENTED_FILE_PROTOCOL"; - case SegmentedFileProtocol.HLS_PROTOCOL: - return "HLS_PROTOCOL"; - case SegmentedFileProtocol.UNRECOGNIZED: - default: - return "UNRECOGNIZED"; - } -} - -export enum SegmentedFileSuffix { - INDEX = 0, - TIMESTAMP = 1, - UNRECOGNIZED = -1, -} - -export function segmentedFileSuffixFromJSON(object: any): SegmentedFileSuffix { - switch (object) { - case 0: - case "INDEX": - return SegmentedFileSuffix.INDEX; - case 1: - case "TIMESTAMP": - return SegmentedFileSuffix.TIMESTAMP; - case -1: - case "UNRECOGNIZED": - default: - return SegmentedFileSuffix.UNRECOGNIZED; - } -} - -export function segmentedFileSuffixToJSON(object: SegmentedFileSuffix): string { - switch (object) { - case SegmentedFileSuffix.INDEX: - return "INDEX"; - case SegmentedFileSuffix.TIMESTAMP: - return "TIMESTAMP"; - case SegmentedFileSuffix.UNRECOGNIZED: - default: - return "UNRECOGNIZED"; - } -} - -export enum ImageFileSuffix { - IMAGE_SUFFIX_INDEX = 0, - IMAGE_SUFFIX_TIMESTAMP = 1, - UNRECOGNIZED = -1, -} - -export function imageFileSuffixFromJSON(object: any): ImageFileSuffix { - switch (object) { - case 0: - case "IMAGE_SUFFIX_INDEX": - return ImageFileSuffix.IMAGE_SUFFIX_INDEX; - case 1: - case "IMAGE_SUFFIX_TIMESTAMP": - return ImageFileSuffix.IMAGE_SUFFIX_TIMESTAMP; - case -1: - case "UNRECOGNIZED": - default: - return ImageFileSuffix.UNRECOGNIZED; - } -} - -export function imageFileSuffixToJSON(object: ImageFileSuffix): string { - switch (object) { - case ImageFileSuffix.IMAGE_SUFFIX_INDEX: - return "IMAGE_SUFFIX_INDEX"; - case ImageFileSuffix.IMAGE_SUFFIX_TIMESTAMP: - return "IMAGE_SUFFIX_TIMESTAMP"; - case ImageFileSuffix.UNRECOGNIZED: - default: - return "UNRECOGNIZED"; - } -} - -export enum StreamProtocol { - /** DEFAULT_PROTOCOL - protocol chosen based on urls */ - DEFAULT_PROTOCOL = 0, - RTMP = 1, - UNRECOGNIZED = -1, -} - -export function streamProtocolFromJSON(object: any): StreamProtocol { - switch (object) { - case 0: - case "DEFAULT_PROTOCOL": - return StreamProtocol.DEFAULT_PROTOCOL; - case 1: - case "RTMP": - return StreamProtocol.RTMP; - case -1: - case "UNRECOGNIZED": - default: - return StreamProtocol.UNRECOGNIZED; - } -} - -export function streamProtocolToJSON(object: StreamProtocol): string { - switch (object) { - case StreamProtocol.DEFAULT_PROTOCOL: - return "DEFAULT_PROTOCOL"; - case StreamProtocol.RTMP: - return "RTMP"; - case StreamProtocol.UNRECOGNIZED: - default: - return "UNRECOGNIZED"; - } -} - -export enum EncodingOptionsPreset { - /** H264_720P_30 - 1280x720, 30fps, 3000kpbs, H.264_MAIN / OPUS */ - H264_720P_30 = 0, - /** H264_720P_60 - 1280x720, 60fps, 4500kbps, H.264_MAIN / OPUS */ - H264_720P_60 = 1, - /** H264_1080P_30 - 1920x1080, 30fps, 4500kbps, H.264_MAIN / OPUS */ - H264_1080P_30 = 2, - /** H264_1080P_60 - 1920x1080, 60fps, 6000kbps, H.264_MAIN / OPUS */ - H264_1080P_60 = 3, - /** PORTRAIT_H264_720P_30 - 720x1280, 30fps, 3000kpbs, H.264_MAIN / OPUS */ - PORTRAIT_H264_720P_30 = 4, - /** PORTRAIT_H264_720P_60 - 720x1280, 60fps, 4500kbps, H.264_MAIN / OPUS */ - PORTRAIT_H264_720P_60 = 5, - /** PORTRAIT_H264_1080P_30 - 1080x1920, 30fps, 4500kbps, H.264_MAIN / OPUS */ - PORTRAIT_H264_1080P_30 = 6, - /** PORTRAIT_H264_1080P_60 - 1080x1920, 60fps, 6000kbps, H.264_MAIN / OPUS */ - PORTRAIT_H264_1080P_60 = 7, - UNRECOGNIZED = -1, -} - -export function encodingOptionsPresetFromJSON(object: any): EncodingOptionsPreset { - switch (object) { - case 0: - case "H264_720P_30": - return EncodingOptionsPreset.H264_720P_30; - case 1: - case "H264_720P_60": - return EncodingOptionsPreset.H264_720P_60; - case 2: - case "H264_1080P_30": - return EncodingOptionsPreset.H264_1080P_30; - case 3: - case "H264_1080P_60": - return EncodingOptionsPreset.H264_1080P_60; - case 4: - case "PORTRAIT_H264_720P_30": - return EncodingOptionsPreset.PORTRAIT_H264_720P_30; - case 5: - case "PORTRAIT_H264_720P_60": - return EncodingOptionsPreset.PORTRAIT_H264_720P_60; - case 6: - case "PORTRAIT_H264_1080P_30": - return EncodingOptionsPreset.PORTRAIT_H264_1080P_30; - case 7: - case "PORTRAIT_H264_1080P_60": - return EncodingOptionsPreset.PORTRAIT_H264_1080P_60; - case -1: - case "UNRECOGNIZED": - default: - return EncodingOptionsPreset.UNRECOGNIZED; - } -} - -export function encodingOptionsPresetToJSON(object: EncodingOptionsPreset): string { - switch (object) { - case EncodingOptionsPreset.H264_720P_30: - return "H264_720P_30"; - case EncodingOptionsPreset.H264_720P_60: - return "H264_720P_60"; - case EncodingOptionsPreset.H264_1080P_30: - return "H264_1080P_30"; - case EncodingOptionsPreset.H264_1080P_60: - return "H264_1080P_60"; - case EncodingOptionsPreset.PORTRAIT_H264_720P_30: - return "PORTRAIT_H264_720P_30"; - case EncodingOptionsPreset.PORTRAIT_H264_720P_60: - return "PORTRAIT_H264_720P_60"; - case EncodingOptionsPreset.PORTRAIT_H264_1080P_30: - return "PORTRAIT_H264_1080P_30"; - case EncodingOptionsPreset.PORTRAIT_H264_1080P_60: - return "PORTRAIT_H264_1080P_60"; - case EncodingOptionsPreset.UNRECOGNIZED: - default: - return "UNRECOGNIZED"; - } -} - -export enum EgressStatus { - EGRESS_STARTING = 0, - EGRESS_ACTIVE = 1, - EGRESS_ENDING = 2, - EGRESS_COMPLETE = 3, - EGRESS_FAILED = 4, - EGRESS_ABORTED = 5, - EGRESS_LIMIT_REACHED = 6, - UNRECOGNIZED = -1, -} - -export function egressStatusFromJSON(object: any): EgressStatus { - switch (object) { - case 0: - case "EGRESS_STARTING": - return EgressStatus.EGRESS_STARTING; - case 1: - case "EGRESS_ACTIVE": - return EgressStatus.EGRESS_ACTIVE; - case 2: - case "EGRESS_ENDING": - return EgressStatus.EGRESS_ENDING; - case 3: - case "EGRESS_COMPLETE": - return EgressStatus.EGRESS_COMPLETE; - case 4: - case "EGRESS_FAILED": - return EgressStatus.EGRESS_FAILED; - case 5: - case "EGRESS_ABORTED": - return EgressStatus.EGRESS_ABORTED; - case 6: - case "EGRESS_LIMIT_REACHED": - return EgressStatus.EGRESS_LIMIT_REACHED; - case -1: - case "UNRECOGNIZED": - default: - return EgressStatus.UNRECOGNIZED; - } -} - -export function egressStatusToJSON(object: EgressStatus): string { - switch (object) { - case EgressStatus.EGRESS_STARTING: - return "EGRESS_STARTING"; - case EgressStatus.EGRESS_ACTIVE: - return "EGRESS_ACTIVE"; - case EgressStatus.EGRESS_ENDING: - return "EGRESS_ENDING"; - case EgressStatus.EGRESS_COMPLETE: - return "EGRESS_COMPLETE"; - case EgressStatus.EGRESS_FAILED: - return "EGRESS_FAILED"; - case EgressStatus.EGRESS_ABORTED: - return "EGRESS_ABORTED"; - case EgressStatus.EGRESS_LIMIT_REACHED: - return "EGRESS_LIMIT_REACHED"; - case EgressStatus.UNRECOGNIZED: - default: - return "UNRECOGNIZED"; - } -} - -/** composite using a web browser */ -export interface RoomCompositeEgressRequest { - /** required */ - roomName?: - | string - | undefined; - /** (optional) */ - layout?: - | string - | undefined; - /** (default false) */ - audioOnly?: - | boolean - | undefined; - /** (default false) */ - videoOnly?: - | boolean - | undefined; - /** template base url (default https://recorder.livekit.io) */ - customBaseUrl?: - | string - | undefined; - /** @deprecated */ - file?: - | EncodedFileOutput - | undefined; - /** @deprecated */ - stream?: - | StreamOutput - | undefined; - /** @deprecated */ - segments?: - | SegmentedFileOutput - | undefined; - /** (default H264_720P_30) */ - preset?: - | EncodingOptionsPreset - | undefined; - /** (optional) */ - advanced?: EncodingOptions | undefined; - fileOutputs?: EncodedFileOutput[] | undefined; - streamOutputs?: StreamOutput[] | undefined; - segmentOutputs?: SegmentedFileOutput[] | undefined; - imageOutputs?: ImageOutput[] | undefined; -} - -/** record any website */ -export interface WebEgressRequest { - url?: string | undefined; - audioOnly?: boolean | undefined; - videoOnly?: boolean | undefined; - awaitStartSignal?: - | boolean - | undefined; - /** @deprecated */ - file?: - | EncodedFileOutput - | undefined; - /** @deprecated */ - stream?: - | StreamOutput - | undefined; - /** @deprecated */ - segments?: SegmentedFileOutput | undefined; - preset?: EncodingOptionsPreset | undefined; - advanced?: EncodingOptions | undefined; - fileOutputs?: EncodedFileOutput[] | undefined; - streamOutputs?: StreamOutput[] | undefined; - segmentOutputs?: SegmentedFileOutput[] | undefined; - imageOutputs?: ImageOutput[] | undefined; -} - -/** record audio and video from a single participant */ -export interface ParticipantEgressRequest { - /** required */ - roomName?: - | string - | undefined; - /** required */ - identity?: - | string - | undefined; - /** (default false) */ - screenShare?: - | boolean - | undefined; - /** (default H264_720P_30) */ - preset?: - | EncodingOptionsPreset - | undefined; - /** (optional) */ - advanced?: EncodingOptions | undefined; - fileOutputs?: EncodedFileOutput[] | undefined; - streamOutputs?: StreamOutput[] | undefined; - segmentOutputs?: SegmentedFileOutput[] | undefined; - imageOutputs?: ImageOutput[] | undefined; -} - -/** containerize up to one audio and one video track */ -export interface TrackCompositeEgressRequest { - /** required */ - roomName?: - | string - | undefined; - /** (optional) */ - audioTrackId?: - | string - | undefined; - /** (optional) */ - videoTrackId?: - | string - | undefined; - /** @deprecated */ - file?: - | EncodedFileOutput - | undefined; - /** @deprecated */ - stream?: - | StreamOutput - | undefined; - /** @deprecated */ - segments?: - | SegmentedFileOutput - | undefined; - /** (default H264_720P_30) */ - preset?: - | EncodingOptionsPreset - | undefined; - /** (optional) */ - advanced?: EncodingOptions | undefined; - fileOutputs?: EncodedFileOutput[] | undefined; - streamOutputs?: StreamOutput[] | undefined; - segmentOutputs?: SegmentedFileOutput[] | undefined; - imageOutputs?: ImageOutput[] | undefined; -} - -/** record tracks individually, without transcoding */ -export interface TrackEgressRequest { - /** required */ - roomName?: - | string - | undefined; - /** required */ - trackId?: string | undefined; - file?: DirectFileOutput | undefined; - websocketUrl?: string | undefined; -} - -export interface EncodedFileOutput { - /** (optional) */ - fileType?: - | EncodedFileType - | undefined; - /** see egress docs for templating (default {room_name}-{time}) */ - filepath?: - | string - | undefined; - /** disable upload of manifest file (default false) */ - disableManifest?: boolean | undefined; - s3?: S3Upload | undefined; - gcp?: GCPUpload | undefined; - azure?: AzureBlobUpload | undefined; - aliOSS?: AliOSSUpload | undefined; -} - -/** Used to generate HLS segments or other kind of segmented output */ -export interface SegmentedFileOutput { - /** (optional) */ - protocol?: - | SegmentedFileProtocol - | undefined; - /** (optional) */ - filenamePrefix?: - | string - | undefined; - /** (optional) */ - playlistName?: - | string - | undefined; - /** (optional, disabled if not provided). Path of a live playlist */ - livePlaylistName?: - | string - | undefined; - /** in seconds (optional) */ - segmentDuration?: - | number - | undefined; - /** (optional, default INDEX) */ - filenameSuffix?: - | SegmentedFileSuffix - | undefined; - /** disable upload of manifest file (default false) */ - disableManifest?: boolean | undefined; - s3?: S3Upload | undefined; - gcp?: GCPUpload | undefined; - azure?: AzureBlobUpload | undefined; - aliOSS?: AliOSSUpload | undefined; -} - -export interface DirectFileOutput { - /** see egress docs for templating (default {track_id}-{time}) */ - filepath?: - | string - | undefined; - /** disable upload of manifest file (default false) */ - disableManifest?: boolean | undefined; - s3?: S3Upload | undefined; - gcp?: GCPUpload | undefined; - azure?: AzureBlobUpload | undefined; - aliOSS?: AliOSSUpload | undefined; -} - -export interface ImageOutput { - /** in seconds (required) */ - captureInterval?: - | number - | undefined; - /** (optional, defaults to track width) */ - width?: - | number - | undefined; - /** (optional, defaults to track height) */ - height?: - | number - | undefined; - /** (optional) */ - filenamePrefix?: - | string - | undefined; - /** (optional, default INDEX) */ - filenameSuffix?: - | ImageFileSuffix - | undefined; - /** (optional) */ - imageCodec?: - | ImageCodec - | undefined; - /** disable upload of manifest file (default false) */ - disableManifest?: boolean | undefined; - s3?: S3Upload | undefined; - gcp?: GCPUpload | undefined; - azure?: AzureBlobUpload | undefined; - aliOSS?: AliOSSUpload | undefined; -} - -export interface S3Upload { - accessKey?: string | undefined; - secret?: string | undefined; - region?: string | undefined; - endpoint?: string | undefined; - bucket?: string | undefined; - forcePathStyle?: boolean | undefined; - metadata?: { [key: string]: string } | undefined; - tagging?: string | undefined; -} - -export interface S3Upload_MetadataEntry { - key: string; - value: string; -} - -export interface GCPUpload { - credentials?: string | undefined; - bucket?: string | undefined; -} - -export interface AzureBlobUpload { - accountName?: string | undefined; - accountKey?: string | undefined; - containerName?: string | undefined; -} - -export interface AliOSSUpload { - accessKey?: string | undefined; - secret?: string | undefined; - region?: string | undefined; - endpoint?: string | undefined; - bucket?: string | undefined; -} - -export interface StreamOutput { - /** required */ - protocol?: - | StreamProtocol - | undefined; - /** required */ - urls?: string[] | undefined; -} - -export interface EncodingOptions { - /** (default 1920) */ - width?: - | number - | undefined; - /** (default 1080) */ - height?: - | number - | undefined; - /** (default 24) */ - depth?: - | number - | undefined; - /** (default 30) */ - framerate?: - | number - | undefined; - /** (default OPUS) */ - audioCodec?: - | AudioCodec - | undefined; - /** (default 128) */ - audioBitrate?: - | number - | undefined; - /** (default 44100) */ - audioFrequency?: - | number - | undefined; - /** (default H264_MAIN) */ - videoCodec?: - | VideoCodec - | undefined; - /** (default 4500) */ - videoBitrate?: - | number - | undefined; - /** in seconds (default 4s for streaming, segment duration for segmented output, encoder default for files) */ - keyFrameInterval?: number | undefined; -} - -export interface UpdateLayoutRequest { - egressId?: string | undefined; - layout?: string | undefined; -} - -export interface UpdateStreamRequest { - egressId?: string | undefined; - addOutputUrls?: string[] | undefined; - removeOutputUrls?: string[] | undefined; -} - -export interface UpdateOutputsRequest { - egressId?: string | undefined; - addImageOutputs?: ImageOutput[] | undefined; - removeImageOutputs?: ImageOutput[] | undefined; -} - -export interface ListEgressRequest { - /** (optional, filter by room name) */ - roomName?: - | string - | undefined; - /** (optional, filter by egress ID) */ - egressId?: - | string - | undefined; - /** (optional, list active egress only) */ - active?: boolean | undefined; -} - -export interface ListEgressResponse { - items?: EgressInfo[] | undefined; -} - -export interface StopEgressRequest { - egressId?: string | undefined; -} - -export interface EgressInfo { - egressId?: string | undefined; - roomId?: string | undefined; - roomName?: string | undefined; - status?: EgressStatus | undefined; - startedAt?: number | undefined; - endedAt?: number | undefined; - updatedAt?: number | undefined; - error?: string | undefined; - roomComposite?: RoomCompositeEgressRequest | undefined; - web?: WebEgressRequest | undefined; - participant?: ParticipantEgressRequest | undefined; - trackComposite?: TrackCompositeEgressRequest | undefined; - track?: - | TrackEgressRequest - | undefined; - /** @deprecated */ - stream?: - | StreamInfoList - | undefined; - /** @deprecated */ - file?: - | FileInfo - | undefined; - /** @deprecated */ - segments?: SegmentsInfo | undefined; - streamResults?: StreamInfo[] | undefined; - fileResults?: FileInfo[] | undefined; - segmentResults?: SegmentsInfo[] | undefined; - imageResults?: ImagesInfo[] | undefined; -} - -/** @deprecated */ -export interface StreamInfoList { - info?: StreamInfo[] | undefined; -} - -export interface StreamInfo { - url?: string | undefined; - startedAt?: number | undefined; - endedAt?: number | undefined; - duration?: number | undefined; - status?: StreamInfo_Status | undefined; - error?: string | undefined; -} - -export enum StreamInfo_Status { - ACTIVE = 0, - FINISHED = 1, - FAILED = 2, - UNRECOGNIZED = -1, -} - -export function streamInfo_StatusFromJSON(object: any): StreamInfo_Status { - switch (object) { - case 0: - case "ACTIVE": - return StreamInfo_Status.ACTIVE; - case 1: - case "FINISHED": - return StreamInfo_Status.FINISHED; - case 2: - case "FAILED": - return StreamInfo_Status.FAILED; - case -1: - case "UNRECOGNIZED": - default: - return StreamInfo_Status.UNRECOGNIZED; - } -} - -export function streamInfo_StatusToJSON(object: StreamInfo_Status): string { - switch (object) { - case StreamInfo_Status.ACTIVE: - return "ACTIVE"; - case StreamInfo_Status.FINISHED: - return "FINISHED"; - case StreamInfo_Status.FAILED: - return "FAILED"; - case StreamInfo_Status.UNRECOGNIZED: - default: - return "UNRECOGNIZED"; - } -} - -export interface FileInfo { - filename?: string | undefined; - startedAt?: number | undefined; - endedAt?: number | undefined; - duration?: number | undefined; - size?: number | undefined; - location?: string | undefined; -} - -export interface SegmentsInfo { - playlistName?: string | undefined; - livePlaylistName?: string | undefined; - duration?: number | undefined; - size?: number | undefined; - playlistLocation?: string | undefined; - livePlaylistLocation?: string | undefined; - segmentCount?: number | undefined; - startedAt?: number | undefined; - endedAt?: number | undefined; - dataEventLocation?: string | undefined; -} - -export interface ImagesInfo { - imageCount?: number | undefined; - startedAt?: number | undefined; - endedAt?: number | undefined; -} - -export interface AutoParticipantEgress { - /** (default H264_720P_30) */ - preset?: - | EncodingOptionsPreset - | undefined; - /** (optional) */ - advanced?: EncodingOptions | undefined; - fileOutputs?: EncodedFileOutput[] | undefined; - segmentOutputs?: SegmentedFileOutput[] | undefined; -} - -export interface AutoTrackEgress { - /** see docs for templating (default {track_id}-{time}) */ - filepath?: - | string - | undefined; - /** disables upload of json manifest file (default false) */ - disableManifest?: boolean | undefined; - s3?: S3Upload | undefined; - gcp?: GCPUpload | undefined; - azure?: AzureBlobUpload | undefined; -} - -function createBaseRoomCompositeEgressRequest(): RoomCompositeEgressRequest { - return { - roomName: "", - layout: "", - audioOnly: false, - videoOnly: false, - customBaseUrl: "", - file: undefined, - stream: undefined, - segments: undefined, - preset: undefined, - advanced: undefined, - fileOutputs: [], - streamOutputs: [], - segmentOutputs: [], - imageOutputs: [], - }; -} - -export const RoomCompositeEgressRequest = { - encode(message: RoomCompositeEgressRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.roomName !== undefined && message.roomName !== "") { - writer.uint32(10).string(message.roomName); - } - if (message.layout !== undefined && message.layout !== "") { - writer.uint32(18).string(message.layout); - } - if (message.audioOnly === true) { - writer.uint32(24).bool(message.audioOnly); - } - if (message.videoOnly === true) { - writer.uint32(32).bool(message.videoOnly); - } - if (message.customBaseUrl !== undefined && message.customBaseUrl !== "") { - writer.uint32(42).string(message.customBaseUrl); - } - if (message.file !== undefined) { - EncodedFileOutput.encode(message.file, writer.uint32(50).fork()).ldelim(); - } - if (message.stream !== undefined) { - StreamOutput.encode(message.stream, writer.uint32(58).fork()).ldelim(); - } - if (message.segments !== undefined) { - SegmentedFileOutput.encode(message.segments, writer.uint32(82).fork()).ldelim(); - } - if (message.preset !== undefined) { - writer.uint32(64).int32(message.preset); - } - if (message.advanced !== undefined) { - EncodingOptions.encode(message.advanced, writer.uint32(74).fork()).ldelim(); - } - if (message.fileOutputs !== undefined && message.fileOutputs.length !== 0) { - for (const v of message.fileOutputs) { - EncodedFileOutput.encode(v!, writer.uint32(90).fork()).ldelim(); - } - } - if (message.streamOutputs !== undefined && message.streamOutputs.length !== 0) { - for (const v of message.streamOutputs) { - StreamOutput.encode(v!, writer.uint32(98).fork()).ldelim(); - } - } - if (message.segmentOutputs !== undefined && message.segmentOutputs.length !== 0) { - for (const v of message.segmentOutputs) { - SegmentedFileOutput.encode(v!, writer.uint32(106).fork()).ldelim(); - } - } - if (message.imageOutputs !== undefined && message.imageOutputs.length !== 0) { - for (const v of message.imageOutputs) { - ImageOutput.encode(v!, writer.uint32(114).fork()).ldelim(); - } - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): RoomCompositeEgressRequest { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseRoomCompositeEgressRequest(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.roomName = reader.string(); - continue; - case 2: - if (tag !== 18) { - break; - } - - message.layout = reader.string(); - continue; - case 3: - if (tag !== 24) { - break; - } - - message.audioOnly = reader.bool(); - continue; - case 4: - if (tag !== 32) { - break; - } - - message.videoOnly = reader.bool(); - continue; - case 5: - if (tag !== 42) { - break; - } - - message.customBaseUrl = reader.string(); - continue; - case 6: - if (tag !== 50) { - break; - } - - message.file = EncodedFileOutput.decode(reader, reader.uint32()); - continue; - case 7: - if (tag !== 58) { - break; - } - - message.stream = StreamOutput.decode(reader, reader.uint32()); - continue; - case 10: - if (tag !== 82) { - break; - } - - message.segments = SegmentedFileOutput.decode(reader, reader.uint32()); - continue; - case 8: - if (tag !== 64) { - break; - } - - message.preset = reader.int32() as any; - continue; - case 9: - if (tag !== 74) { - break; - } - - message.advanced = EncodingOptions.decode(reader, reader.uint32()); - continue; - case 11: - if (tag !== 90) { - break; - } - - message.fileOutputs!.push(EncodedFileOutput.decode(reader, reader.uint32())); - continue; - case 12: - if (tag !== 98) { - break; - } - - message.streamOutputs!.push(StreamOutput.decode(reader, reader.uint32())); - continue; - case 13: - if (tag !== 106) { - break; - } - - message.segmentOutputs!.push(SegmentedFileOutput.decode(reader, reader.uint32())); - continue; - case 14: - if (tag !== 114) { - break; - } - - message.imageOutputs!.push(ImageOutput.decode(reader, reader.uint32())); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): RoomCompositeEgressRequest { - return { - roomName: isSet(object.roomName) ? globalThis.String(object.roomName) : "", - layout: isSet(object.layout) ? globalThis.String(object.layout) : "", - audioOnly: isSet(object.audioOnly) ? globalThis.Boolean(object.audioOnly) : false, - videoOnly: isSet(object.videoOnly) ? globalThis.Boolean(object.videoOnly) : false, - customBaseUrl: isSet(object.customBaseUrl) ? globalThis.String(object.customBaseUrl) : "", - file: isSet(object.file) ? EncodedFileOutput.fromJSON(object.file) : undefined, - stream: isSet(object.stream) ? StreamOutput.fromJSON(object.stream) : undefined, - segments: isSet(object.segments) ? SegmentedFileOutput.fromJSON(object.segments) : undefined, - preset: isSet(object.preset) ? encodingOptionsPresetFromJSON(object.preset) : undefined, - advanced: isSet(object.advanced) ? EncodingOptions.fromJSON(object.advanced) : undefined, - fileOutputs: globalThis.Array.isArray(object?.fileOutputs) - ? object.fileOutputs.map((e: any) => EncodedFileOutput.fromJSON(e)) - : [], - streamOutputs: globalThis.Array.isArray(object?.streamOutputs) - ? object.streamOutputs.map((e: any) => StreamOutput.fromJSON(e)) - : [], - segmentOutputs: globalThis.Array.isArray(object?.segmentOutputs) - ? object.segmentOutputs.map((e: any) => SegmentedFileOutput.fromJSON(e)) - : [], - imageOutputs: globalThis.Array.isArray(object?.imageOutputs) - ? object.imageOutputs.map((e: any) => ImageOutput.fromJSON(e)) - : [], - }; - }, - - toJSON(message: RoomCompositeEgressRequest): unknown { - const obj: any = {}; - if (message.roomName !== undefined && message.roomName !== "") { - obj.roomName = message.roomName; - } - if (message.layout !== undefined && message.layout !== "") { - obj.layout = message.layout; - } - if (message.audioOnly === true) { - obj.audioOnly = message.audioOnly; - } - if (message.videoOnly === true) { - obj.videoOnly = message.videoOnly; - } - if (message.customBaseUrl !== undefined && message.customBaseUrl !== "") { - obj.customBaseUrl = message.customBaseUrl; - } - if (message.file !== undefined) { - obj.file = EncodedFileOutput.toJSON(message.file); - } - if (message.stream !== undefined) { - obj.stream = StreamOutput.toJSON(message.stream); - } - if (message.segments !== undefined) { - obj.segments = SegmentedFileOutput.toJSON(message.segments); - } - if (message.preset !== undefined) { - obj.preset = encodingOptionsPresetToJSON(message.preset); - } - if (message.advanced !== undefined) { - obj.advanced = EncodingOptions.toJSON(message.advanced); - } - if (message.fileOutputs?.length) { - obj.fileOutputs = message.fileOutputs.map((e) => EncodedFileOutput.toJSON(e)); - } - if (message.streamOutputs?.length) { - obj.streamOutputs = message.streamOutputs.map((e) => StreamOutput.toJSON(e)); - } - if (message.segmentOutputs?.length) { - obj.segmentOutputs = message.segmentOutputs.map((e) => SegmentedFileOutput.toJSON(e)); - } - if (message.imageOutputs?.length) { - obj.imageOutputs = message.imageOutputs.map((e) => ImageOutput.toJSON(e)); - } - return obj; - }, - - create, I>>(base?: I): RoomCompositeEgressRequest { - return RoomCompositeEgressRequest.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): RoomCompositeEgressRequest { - const message = createBaseRoomCompositeEgressRequest(); - message.roomName = object.roomName ?? ""; - message.layout = object.layout ?? ""; - message.audioOnly = object.audioOnly ?? false; - message.videoOnly = object.videoOnly ?? false; - message.customBaseUrl = object.customBaseUrl ?? ""; - message.file = (object.file !== undefined && object.file !== null) - ? EncodedFileOutput.fromPartial(object.file) - : undefined; - message.stream = (object.stream !== undefined && object.stream !== null) - ? StreamOutput.fromPartial(object.stream) - : undefined; - message.segments = (object.segments !== undefined && object.segments !== null) - ? SegmentedFileOutput.fromPartial(object.segments) - : undefined; - message.preset = object.preset ?? undefined; - message.advanced = (object.advanced !== undefined && object.advanced !== null) - ? EncodingOptions.fromPartial(object.advanced) - : undefined; - message.fileOutputs = object.fileOutputs?.map((e) => EncodedFileOutput.fromPartial(e)) || []; - message.streamOutputs = object.streamOutputs?.map((e) => StreamOutput.fromPartial(e)) || []; - message.segmentOutputs = object.segmentOutputs?.map((e) => SegmentedFileOutput.fromPartial(e)) || []; - message.imageOutputs = object.imageOutputs?.map((e) => ImageOutput.fromPartial(e)) || []; - return message; - }, -}; - -function createBaseWebEgressRequest(): WebEgressRequest { - return { - url: "", - audioOnly: false, - videoOnly: false, - awaitStartSignal: false, - file: undefined, - stream: undefined, - segments: undefined, - preset: undefined, - advanced: undefined, - fileOutputs: [], - streamOutputs: [], - segmentOutputs: [], - imageOutputs: [], - }; -} - -export const WebEgressRequest = { - encode(message: WebEgressRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.url !== undefined && message.url !== "") { - writer.uint32(10).string(message.url); - } - if (message.audioOnly === true) { - writer.uint32(16).bool(message.audioOnly); - } - if (message.videoOnly === true) { - writer.uint32(24).bool(message.videoOnly); - } - if (message.awaitStartSignal === true) { - writer.uint32(96).bool(message.awaitStartSignal); - } - if (message.file !== undefined) { - EncodedFileOutput.encode(message.file, writer.uint32(34).fork()).ldelim(); - } - if (message.stream !== undefined) { - StreamOutput.encode(message.stream, writer.uint32(42).fork()).ldelim(); - } - if (message.segments !== undefined) { - SegmentedFileOutput.encode(message.segments, writer.uint32(50).fork()).ldelim(); - } - if (message.preset !== undefined) { - writer.uint32(56).int32(message.preset); - } - if (message.advanced !== undefined) { - EncodingOptions.encode(message.advanced, writer.uint32(66).fork()).ldelim(); - } - if (message.fileOutputs !== undefined && message.fileOutputs.length !== 0) { - for (const v of message.fileOutputs) { - EncodedFileOutput.encode(v!, writer.uint32(74).fork()).ldelim(); - } - } - if (message.streamOutputs !== undefined && message.streamOutputs.length !== 0) { - for (const v of message.streamOutputs) { - StreamOutput.encode(v!, writer.uint32(82).fork()).ldelim(); - } - } - if (message.segmentOutputs !== undefined && message.segmentOutputs.length !== 0) { - for (const v of message.segmentOutputs) { - SegmentedFileOutput.encode(v!, writer.uint32(90).fork()).ldelim(); - } - } - if (message.imageOutputs !== undefined && message.imageOutputs.length !== 0) { - for (const v of message.imageOutputs) { - ImageOutput.encode(v!, writer.uint32(106).fork()).ldelim(); - } - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): WebEgressRequest { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseWebEgressRequest(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.url = reader.string(); - continue; - case 2: - if (tag !== 16) { - break; - } - - message.audioOnly = reader.bool(); - continue; - case 3: - if (tag !== 24) { - break; - } - - message.videoOnly = reader.bool(); - continue; - case 12: - if (tag !== 96) { - break; - } - - message.awaitStartSignal = reader.bool(); - continue; - case 4: - if (tag !== 34) { - break; - } - - message.file = EncodedFileOutput.decode(reader, reader.uint32()); - continue; - case 5: - if (tag !== 42) { - break; - } - - message.stream = StreamOutput.decode(reader, reader.uint32()); - continue; - case 6: - if (tag !== 50) { - break; - } - - message.segments = SegmentedFileOutput.decode(reader, reader.uint32()); - continue; - case 7: - if (tag !== 56) { - break; - } - - message.preset = reader.int32() as any; - continue; - case 8: - if (tag !== 66) { - break; - } - - message.advanced = EncodingOptions.decode(reader, reader.uint32()); - continue; - case 9: - if (tag !== 74) { - break; - } - - message.fileOutputs!.push(EncodedFileOutput.decode(reader, reader.uint32())); - continue; - case 10: - if (tag !== 82) { - break; - } - - message.streamOutputs!.push(StreamOutput.decode(reader, reader.uint32())); - continue; - case 11: - if (tag !== 90) { - break; - } - - message.segmentOutputs!.push(SegmentedFileOutput.decode(reader, reader.uint32())); - continue; - case 13: - if (tag !== 106) { - break; - } - - message.imageOutputs!.push(ImageOutput.decode(reader, reader.uint32())); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): WebEgressRequest { - return { - url: isSet(object.url) ? globalThis.String(object.url) : "", - audioOnly: isSet(object.audioOnly) ? globalThis.Boolean(object.audioOnly) : false, - videoOnly: isSet(object.videoOnly) ? globalThis.Boolean(object.videoOnly) : false, - awaitStartSignal: isSet(object.awaitStartSignal) ? globalThis.Boolean(object.awaitStartSignal) : false, - file: isSet(object.file) ? EncodedFileOutput.fromJSON(object.file) : undefined, - stream: isSet(object.stream) ? StreamOutput.fromJSON(object.stream) : undefined, - segments: isSet(object.segments) ? SegmentedFileOutput.fromJSON(object.segments) : undefined, - preset: isSet(object.preset) ? encodingOptionsPresetFromJSON(object.preset) : undefined, - advanced: isSet(object.advanced) ? EncodingOptions.fromJSON(object.advanced) : undefined, - fileOutputs: globalThis.Array.isArray(object?.fileOutputs) - ? object.fileOutputs.map((e: any) => EncodedFileOutput.fromJSON(e)) - : [], - streamOutputs: globalThis.Array.isArray(object?.streamOutputs) - ? object.streamOutputs.map((e: any) => StreamOutput.fromJSON(e)) - : [], - segmentOutputs: globalThis.Array.isArray(object?.segmentOutputs) - ? object.segmentOutputs.map((e: any) => SegmentedFileOutput.fromJSON(e)) - : [], - imageOutputs: globalThis.Array.isArray(object?.imageOutputs) - ? object.imageOutputs.map((e: any) => ImageOutput.fromJSON(e)) - : [], - }; - }, - - toJSON(message: WebEgressRequest): unknown { - const obj: any = {}; - if (message.url !== undefined && message.url !== "") { - obj.url = message.url; - } - if (message.audioOnly === true) { - obj.audioOnly = message.audioOnly; - } - if (message.videoOnly === true) { - obj.videoOnly = message.videoOnly; - } - if (message.awaitStartSignal === true) { - obj.awaitStartSignal = message.awaitStartSignal; - } - if (message.file !== undefined) { - obj.file = EncodedFileOutput.toJSON(message.file); - } - if (message.stream !== undefined) { - obj.stream = StreamOutput.toJSON(message.stream); - } - if (message.segments !== undefined) { - obj.segments = SegmentedFileOutput.toJSON(message.segments); - } - if (message.preset !== undefined) { - obj.preset = encodingOptionsPresetToJSON(message.preset); - } - if (message.advanced !== undefined) { - obj.advanced = EncodingOptions.toJSON(message.advanced); - } - if (message.fileOutputs?.length) { - obj.fileOutputs = message.fileOutputs.map((e) => EncodedFileOutput.toJSON(e)); - } - if (message.streamOutputs?.length) { - obj.streamOutputs = message.streamOutputs.map((e) => StreamOutput.toJSON(e)); - } - if (message.segmentOutputs?.length) { - obj.segmentOutputs = message.segmentOutputs.map((e) => SegmentedFileOutput.toJSON(e)); - } - if (message.imageOutputs?.length) { - obj.imageOutputs = message.imageOutputs.map((e) => ImageOutput.toJSON(e)); - } - return obj; - }, - - create, I>>(base?: I): WebEgressRequest { - return WebEgressRequest.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): WebEgressRequest { - const message = createBaseWebEgressRequest(); - message.url = object.url ?? ""; - message.audioOnly = object.audioOnly ?? false; - message.videoOnly = object.videoOnly ?? false; - message.awaitStartSignal = object.awaitStartSignal ?? false; - message.file = (object.file !== undefined && object.file !== null) - ? EncodedFileOutput.fromPartial(object.file) - : undefined; - message.stream = (object.stream !== undefined && object.stream !== null) - ? StreamOutput.fromPartial(object.stream) - : undefined; - message.segments = (object.segments !== undefined && object.segments !== null) - ? SegmentedFileOutput.fromPartial(object.segments) - : undefined; - message.preset = object.preset ?? undefined; - message.advanced = (object.advanced !== undefined && object.advanced !== null) - ? EncodingOptions.fromPartial(object.advanced) - : undefined; - message.fileOutputs = object.fileOutputs?.map((e) => EncodedFileOutput.fromPartial(e)) || []; - message.streamOutputs = object.streamOutputs?.map((e) => StreamOutput.fromPartial(e)) || []; - message.segmentOutputs = object.segmentOutputs?.map((e) => SegmentedFileOutput.fromPartial(e)) || []; - message.imageOutputs = object.imageOutputs?.map((e) => ImageOutput.fromPartial(e)) || []; - return message; - }, -}; - -function createBaseParticipantEgressRequest(): ParticipantEgressRequest { - return { - roomName: "", - identity: "", - screenShare: false, - preset: undefined, - advanced: undefined, - fileOutputs: [], - streamOutputs: [], - segmentOutputs: [], - imageOutputs: [], - }; -} - -export const ParticipantEgressRequest = { - encode(message: ParticipantEgressRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.roomName !== undefined && message.roomName !== "") { - writer.uint32(10).string(message.roomName); - } - if (message.identity !== undefined && message.identity !== "") { - writer.uint32(18).string(message.identity); - } - if (message.screenShare === true) { - writer.uint32(24).bool(message.screenShare); - } - if (message.preset !== undefined) { - writer.uint32(32).int32(message.preset); - } - if (message.advanced !== undefined) { - EncodingOptions.encode(message.advanced, writer.uint32(42).fork()).ldelim(); - } - if (message.fileOutputs !== undefined && message.fileOutputs.length !== 0) { - for (const v of message.fileOutputs) { - EncodedFileOutput.encode(v!, writer.uint32(50).fork()).ldelim(); - } - } - if (message.streamOutputs !== undefined && message.streamOutputs.length !== 0) { - for (const v of message.streamOutputs) { - StreamOutput.encode(v!, writer.uint32(58).fork()).ldelim(); - } - } - if (message.segmentOutputs !== undefined && message.segmentOutputs.length !== 0) { - for (const v of message.segmentOutputs) { - SegmentedFileOutput.encode(v!, writer.uint32(66).fork()).ldelim(); - } - } - if (message.imageOutputs !== undefined && message.imageOutputs.length !== 0) { - for (const v of message.imageOutputs) { - ImageOutput.encode(v!, writer.uint32(74).fork()).ldelim(); - } - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): ParticipantEgressRequest { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseParticipantEgressRequest(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.roomName = reader.string(); - continue; - case 2: - if (tag !== 18) { - break; - } - - message.identity = reader.string(); - continue; - case 3: - if (tag !== 24) { - break; - } - - message.screenShare = reader.bool(); - continue; - case 4: - if (tag !== 32) { - break; - } - - message.preset = reader.int32() as any; - continue; - case 5: - if (tag !== 42) { - break; - } - - message.advanced = EncodingOptions.decode(reader, reader.uint32()); - continue; - case 6: - if (tag !== 50) { - break; - } - - message.fileOutputs!.push(EncodedFileOutput.decode(reader, reader.uint32())); - continue; - case 7: - if (tag !== 58) { - break; - } - - message.streamOutputs!.push(StreamOutput.decode(reader, reader.uint32())); - continue; - case 8: - if (tag !== 66) { - break; - } - - message.segmentOutputs!.push(SegmentedFileOutput.decode(reader, reader.uint32())); - continue; - case 9: - if (tag !== 74) { - break; - } - - message.imageOutputs!.push(ImageOutput.decode(reader, reader.uint32())); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): ParticipantEgressRequest { - return { - roomName: isSet(object.roomName) ? globalThis.String(object.roomName) : "", - identity: isSet(object.identity) ? globalThis.String(object.identity) : "", - screenShare: isSet(object.screenShare) ? globalThis.Boolean(object.screenShare) : false, - preset: isSet(object.preset) ? encodingOptionsPresetFromJSON(object.preset) : undefined, - advanced: isSet(object.advanced) ? EncodingOptions.fromJSON(object.advanced) : undefined, - fileOutputs: globalThis.Array.isArray(object?.fileOutputs) - ? object.fileOutputs.map((e: any) => EncodedFileOutput.fromJSON(e)) - : [], - streamOutputs: globalThis.Array.isArray(object?.streamOutputs) - ? object.streamOutputs.map((e: any) => StreamOutput.fromJSON(e)) - : [], - segmentOutputs: globalThis.Array.isArray(object?.segmentOutputs) - ? object.segmentOutputs.map((e: any) => SegmentedFileOutput.fromJSON(e)) - : [], - imageOutputs: globalThis.Array.isArray(object?.imageOutputs) - ? object.imageOutputs.map((e: any) => ImageOutput.fromJSON(e)) - : [], - }; - }, - - toJSON(message: ParticipantEgressRequest): unknown { - const obj: any = {}; - if (message.roomName !== undefined && message.roomName !== "") { - obj.roomName = message.roomName; - } - if (message.identity !== undefined && message.identity !== "") { - obj.identity = message.identity; - } - if (message.screenShare === true) { - obj.screenShare = message.screenShare; - } - if (message.preset !== undefined) { - obj.preset = encodingOptionsPresetToJSON(message.preset); - } - if (message.advanced !== undefined) { - obj.advanced = EncodingOptions.toJSON(message.advanced); - } - if (message.fileOutputs?.length) { - obj.fileOutputs = message.fileOutputs.map((e) => EncodedFileOutput.toJSON(e)); - } - if (message.streamOutputs?.length) { - obj.streamOutputs = message.streamOutputs.map((e) => StreamOutput.toJSON(e)); - } - if (message.segmentOutputs?.length) { - obj.segmentOutputs = message.segmentOutputs.map((e) => SegmentedFileOutput.toJSON(e)); - } - if (message.imageOutputs?.length) { - obj.imageOutputs = message.imageOutputs.map((e) => ImageOutput.toJSON(e)); - } - return obj; - }, - - create, I>>(base?: I): ParticipantEgressRequest { - return ParticipantEgressRequest.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): ParticipantEgressRequest { - const message = createBaseParticipantEgressRequest(); - message.roomName = object.roomName ?? ""; - message.identity = object.identity ?? ""; - message.screenShare = object.screenShare ?? false; - message.preset = object.preset ?? undefined; - message.advanced = (object.advanced !== undefined && object.advanced !== null) - ? EncodingOptions.fromPartial(object.advanced) - : undefined; - message.fileOutputs = object.fileOutputs?.map((e) => EncodedFileOutput.fromPartial(e)) || []; - message.streamOutputs = object.streamOutputs?.map((e) => StreamOutput.fromPartial(e)) || []; - message.segmentOutputs = object.segmentOutputs?.map((e) => SegmentedFileOutput.fromPartial(e)) || []; - message.imageOutputs = object.imageOutputs?.map((e) => ImageOutput.fromPartial(e)) || []; - return message; - }, -}; - -function createBaseTrackCompositeEgressRequest(): TrackCompositeEgressRequest { - return { - roomName: "", - audioTrackId: "", - videoTrackId: "", - file: undefined, - stream: undefined, - segments: undefined, - preset: undefined, - advanced: undefined, - fileOutputs: [], - streamOutputs: [], - segmentOutputs: [], - imageOutputs: [], - }; -} - -export const TrackCompositeEgressRequest = { - encode(message: TrackCompositeEgressRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.roomName !== undefined && message.roomName !== "") { - writer.uint32(10).string(message.roomName); - } - if (message.audioTrackId !== undefined && message.audioTrackId !== "") { - writer.uint32(18).string(message.audioTrackId); - } - if (message.videoTrackId !== undefined && message.videoTrackId !== "") { - writer.uint32(26).string(message.videoTrackId); - } - if (message.file !== undefined) { - EncodedFileOutput.encode(message.file, writer.uint32(34).fork()).ldelim(); - } - if (message.stream !== undefined) { - StreamOutput.encode(message.stream, writer.uint32(42).fork()).ldelim(); - } - if (message.segments !== undefined) { - SegmentedFileOutput.encode(message.segments, writer.uint32(66).fork()).ldelim(); - } - if (message.preset !== undefined) { - writer.uint32(48).int32(message.preset); - } - if (message.advanced !== undefined) { - EncodingOptions.encode(message.advanced, writer.uint32(58).fork()).ldelim(); - } - if (message.fileOutputs !== undefined && message.fileOutputs.length !== 0) { - for (const v of message.fileOutputs) { - EncodedFileOutput.encode(v!, writer.uint32(90).fork()).ldelim(); - } - } - if (message.streamOutputs !== undefined && message.streamOutputs.length !== 0) { - for (const v of message.streamOutputs) { - StreamOutput.encode(v!, writer.uint32(98).fork()).ldelim(); - } - } - if (message.segmentOutputs !== undefined && message.segmentOutputs.length !== 0) { - for (const v of message.segmentOutputs) { - SegmentedFileOutput.encode(v!, writer.uint32(106).fork()).ldelim(); - } - } - if (message.imageOutputs !== undefined && message.imageOutputs.length !== 0) { - for (const v of message.imageOutputs) { - ImageOutput.encode(v!, writer.uint32(114).fork()).ldelim(); - } - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): TrackCompositeEgressRequest { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseTrackCompositeEgressRequest(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.roomName = reader.string(); - continue; - case 2: - if (tag !== 18) { - break; - } - - message.audioTrackId = reader.string(); - continue; - case 3: - if (tag !== 26) { - break; - } - - message.videoTrackId = reader.string(); - continue; - case 4: - if (tag !== 34) { - break; - } - - message.file = EncodedFileOutput.decode(reader, reader.uint32()); - continue; - case 5: - if (tag !== 42) { - break; - } - - message.stream = StreamOutput.decode(reader, reader.uint32()); - continue; - case 8: - if (tag !== 66) { - break; - } - - message.segments = SegmentedFileOutput.decode(reader, reader.uint32()); - continue; - case 6: - if (tag !== 48) { - break; - } - - message.preset = reader.int32() as any; - continue; - case 7: - if (tag !== 58) { - break; - } - - message.advanced = EncodingOptions.decode(reader, reader.uint32()); - continue; - case 11: - if (tag !== 90) { - break; - } - - message.fileOutputs!.push(EncodedFileOutput.decode(reader, reader.uint32())); - continue; - case 12: - if (tag !== 98) { - break; - } - - message.streamOutputs!.push(StreamOutput.decode(reader, reader.uint32())); - continue; - case 13: - if (tag !== 106) { - break; - } - - message.segmentOutputs!.push(SegmentedFileOutput.decode(reader, reader.uint32())); - continue; - case 14: - if (tag !== 114) { - break; - } - - message.imageOutputs!.push(ImageOutput.decode(reader, reader.uint32())); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): TrackCompositeEgressRequest { - return { - roomName: isSet(object.roomName) ? globalThis.String(object.roomName) : "", - audioTrackId: isSet(object.audioTrackId) ? globalThis.String(object.audioTrackId) : "", - videoTrackId: isSet(object.videoTrackId) ? globalThis.String(object.videoTrackId) : "", - file: isSet(object.file) ? EncodedFileOutput.fromJSON(object.file) : undefined, - stream: isSet(object.stream) ? StreamOutput.fromJSON(object.stream) : undefined, - segments: isSet(object.segments) ? SegmentedFileOutput.fromJSON(object.segments) : undefined, - preset: isSet(object.preset) ? encodingOptionsPresetFromJSON(object.preset) : undefined, - advanced: isSet(object.advanced) ? EncodingOptions.fromJSON(object.advanced) : undefined, - fileOutputs: globalThis.Array.isArray(object?.fileOutputs) - ? object.fileOutputs.map((e: any) => EncodedFileOutput.fromJSON(e)) - : [], - streamOutputs: globalThis.Array.isArray(object?.streamOutputs) - ? object.streamOutputs.map((e: any) => StreamOutput.fromJSON(e)) - : [], - segmentOutputs: globalThis.Array.isArray(object?.segmentOutputs) - ? object.segmentOutputs.map((e: any) => SegmentedFileOutput.fromJSON(e)) - : [], - imageOutputs: globalThis.Array.isArray(object?.imageOutputs) - ? object.imageOutputs.map((e: any) => ImageOutput.fromJSON(e)) - : [], - }; - }, - - toJSON(message: TrackCompositeEgressRequest): unknown { - const obj: any = {}; - if (message.roomName !== undefined && message.roomName !== "") { - obj.roomName = message.roomName; - } - if (message.audioTrackId !== undefined && message.audioTrackId !== "") { - obj.audioTrackId = message.audioTrackId; - } - if (message.videoTrackId !== undefined && message.videoTrackId !== "") { - obj.videoTrackId = message.videoTrackId; - } - if (message.file !== undefined) { - obj.file = EncodedFileOutput.toJSON(message.file); - } - if (message.stream !== undefined) { - obj.stream = StreamOutput.toJSON(message.stream); - } - if (message.segments !== undefined) { - obj.segments = SegmentedFileOutput.toJSON(message.segments); - } - if (message.preset !== undefined) { - obj.preset = encodingOptionsPresetToJSON(message.preset); - } - if (message.advanced !== undefined) { - obj.advanced = EncodingOptions.toJSON(message.advanced); - } - if (message.fileOutputs?.length) { - obj.fileOutputs = message.fileOutputs.map((e) => EncodedFileOutput.toJSON(e)); - } - if (message.streamOutputs?.length) { - obj.streamOutputs = message.streamOutputs.map((e) => StreamOutput.toJSON(e)); - } - if (message.segmentOutputs?.length) { - obj.segmentOutputs = message.segmentOutputs.map((e) => SegmentedFileOutput.toJSON(e)); - } - if (message.imageOutputs?.length) { - obj.imageOutputs = message.imageOutputs.map((e) => ImageOutput.toJSON(e)); - } - return obj; - }, - - create, I>>(base?: I): TrackCompositeEgressRequest { - return TrackCompositeEgressRequest.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): TrackCompositeEgressRequest { - const message = createBaseTrackCompositeEgressRequest(); - message.roomName = object.roomName ?? ""; - message.audioTrackId = object.audioTrackId ?? ""; - message.videoTrackId = object.videoTrackId ?? ""; - message.file = (object.file !== undefined && object.file !== null) - ? EncodedFileOutput.fromPartial(object.file) - : undefined; - message.stream = (object.stream !== undefined && object.stream !== null) - ? StreamOutput.fromPartial(object.stream) - : undefined; - message.segments = (object.segments !== undefined && object.segments !== null) - ? SegmentedFileOutput.fromPartial(object.segments) - : undefined; - message.preset = object.preset ?? undefined; - message.advanced = (object.advanced !== undefined && object.advanced !== null) - ? EncodingOptions.fromPartial(object.advanced) - : undefined; - message.fileOutputs = object.fileOutputs?.map((e) => EncodedFileOutput.fromPartial(e)) || []; - message.streamOutputs = object.streamOutputs?.map((e) => StreamOutput.fromPartial(e)) || []; - message.segmentOutputs = object.segmentOutputs?.map((e) => SegmentedFileOutput.fromPartial(e)) || []; - message.imageOutputs = object.imageOutputs?.map((e) => ImageOutput.fromPartial(e)) || []; - return message; - }, -}; - -function createBaseTrackEgressRequest(): TrackEgressRequest { - return { roomName: "", trackId: "", file: undefined, websocketUrl: undefined }; -} - -export const TrackEgressRequest = { - encode(message: TrackEgressRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.roomName !== undefined && message.roomName !== "") { - writer.uint32(10).string(message.roomName); - } - if (message.trackId !== undefined && message.trackId !== "") { - writer.uint32(18).string(message.trackId); - } - if (message.file !== undefined) { - DirectFileOutput.encode(message.file, writer.uint32(26).fork()).ldelim(); - } - if (message.websocketUrl !== undefined) { - writer.uint32(34).string(message.websocketUrl); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): TrackEgressRequest { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseTrackEgressRequest(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.roomName = reader.string(); - continue; - case 2: - if (tag !== 18) { - break; - } - - message.trackId = reader.string(); - continue; - case 3: - if (tag !== 26) { - break; - } - - message.file = DirectFileOutput.decode(reader, reader.uint32()); - continue; - case 4: - if (tag !== 34) { - break; - } - - message.websocketUrl = reader.string(); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): TrackEgressRequest { - return { - roomName: isSet(object.roomName) ? globalThis.String(object.roomName) : "", - trackId: isSet(object.trackId) ? globalThis.String(object.trackId) : "", - file: isSet(object.file) ? DirectFileOutput.fromJSON(object.file) : undefined, - websocketUrl: isSet(object.websocketUrl) ? globalThis.String(object.websocketUrl) : undefined, - }; - }, - - toJSON(message: TrackEgressRequest): unknown { - const obj: any = {}; - if (message.roomName !== undefined && message.roomName !== "") { - obj.roomName = message.roomName; - } - if (message.trackId !== undefined && message.trackId !== "") { - obj.trackId = message.trackId; - } - if (message.file !== undefined) { - obj.file = DirectFileOutput.toJSON(message.file); - } - if (message.websocketUrl !== undefined) { - obj.websocketUrl = message.websocketUrl; - } - return obj; - }, - - create, I>>(base?: I): TrackEgressRequest { - return TrackEgressRequest.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): TrackEgressRequest { - const message = createBaseTrackEgressRequest(); - message.roomName = object.roomName ?? ""; - message.trackId = object.trackId ?? ""; - message.file = (object.file !== undefined && object.file !== null) - ? DirectFileOutput.fromPartial(object.file) - : undefined; - message.websocketUrl = object.websocketUrl ?? undefined; - return message; - }, -}; - -function createBaseEncodedFileOutput(): EncodedFileOutput { - return { - fileType: 0, - filepath: "", - disableManifest: false, - s3: undefined, - gcp: undefined, - azure: undefined, - aliOSS: undefined, - }; -} - -export const EncodedFileOutput = { - encode(message: EncodedFileOutput, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.fileType !== undefined && message.fileType !== 0) { - writer.uint32(8).int32(message.fileType); - } - if (message.filepath !== undefined && message.filepath !== "") { - writer.uint32(18).string(message.filepath); - } - if (message.disableManifest === true) { - writer.uint32(48).bool(message.disableManifest); - } - if (message.s3 !== undefined) { - S3Upload.encode(message.s3, writer.uint32(26).fork()).ldelim(); - } - if (message.gcp !== undefined) { - GCPUpload.encode(message.gcp, writer.uint32(34).fork()).ldelim(); - } - if (message.azure !== undefined) { - AzureBlobUpload.encode(message.azure, writer.uint32(42).fork()).ldelim(); - } - if (message.aliOSS !== undefined) { - AliOSSUpload.encode(message.aliOSS, writer.uint32(58).fork()).ldelim(); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): EncodedFileOutput { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseEncodedFileOutput(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 8) { - break; - } - - message.fileType = reader.int32() as any; - continue; - case 2: - if (tag !== 18) { - break; - } - - message.filepath = reader.string(); - continue; - case 6: - if (tag !== 48) { - break; - } - - message.disableManifest = reader.bool(); - continue; - case 3: - if (tag !== 26) { - break; - } - - message.s3 = S3Upload.decode(reader, reader.uint32()); - continue; - case 4: - if (tag !== 34) { - break; - } - - message.gcp = GCPUpload.decode(reader, reader.uint32()); - continue; - case 5: - if (tag !== 42) { - break; - } - - message.azure = AzureBlobUpload.decode(reader, reader.uint32()); - continue; - case 7: - if (tag !== 58) { - break; - } - - message.aliOSS = AliOSSUpload.decode(reader, reader.uint32()); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): EncodedFileOutput { - return { - fileType: isSet(object.fileType) ? encodedFileTypeFromJSON(object.fileType) : 0, - filepath: isSet(object.filepath) ? globalThis.String(object.filepath) : "", - disableManifest: isSet(object.disableManifest) ? globalThis.Boolean(object.disableManifest) : false, - s3: isSet(object.s3) ? S3Upload.fromJSON(object.s3) : undefined, - gcp: isSet(object.gcp) ? GCPUpload.fromJSON(object.gcp) : undefined, - azure: isSet(object.azure) ? AzureBlobUpload.fromJSON(object.azure) : undefined, - aliOSS: isSet(object.aliOSS) ? AliOSSUpload.fromJSON(object.aliOSS) : undefined, - }; - }, - - toJSON(message: EncodedFileOutput): unknown { - const obj: any = {}; - if (message.fileType !== undefined && message.fileType !== 0) { - obj.fileType = encodedFileTypeToJSON(message.fileType); - } - if (message.filepath !== undefined && message.filepath !== "") { - obj.filepath = message.filepath; - } - if (message.disableManifest === true) { - obj.disableManifest = message.disableManifest; - } - if (message.s3 !== undefined) { - obj.s3 = S3Upload.toJSON(message.s3); - } - if (message.gcp !== undefined) { - obj.gcp = GCPUpload.toJSON(message.gcp); - } - if (message.azure !== undefined) { - obj.azure = AzureBlobUpload.toJSON(message.azure); - } - if (message.aliOSS !== undefined) { - obj.aliOSS = AliOSSUpload.toJSON(message.aliOSS); - } - return obj; - }, - - create, I>>(base?: I): EncodedFileOutput { - return EncodedFileOutput.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): EncodedFileOutput { - const message = createBaseEncodedFileOutput(); - message.fileType = object.fileType ?? 0; - message.filepath = object.filepath ?? ""; - message.disableManifest = object.disableManifest ?? false; - message.s3 = (object.s3 !== undefined && object.s3 !== null) ? S3Upload.fromPartial(object.s3) : undefined; - message.gcp = (object.gcp !== undefined && object.gcp !== null) ? GCPUpload.fromPartial(object.gcp) : undefined; - message.azure = (object.azure !== undefined && object.azure !== null) - ? AzureBlobUpload.fromPartial(object.azure) - : undefined; - message.aliOSS = (object.aliOSS !== undefined && object.aliOSS !== null) - ? AliOSSUpload.fromPartial(object.aliOSS) - : undefined; - return message; - }, -}; - -function createBaseSegmentedFileOutput(): SegmentedFileOutput { - return { - protocol: 0, - filenamePrefix: "", - playlistName: "", - livePlaylistName: "", - segmentDuration: 0, - filenameSuffix: 0, - disableManifest: false, - s3: undefined, - gcp: undefined, - azure: undefined, - aliOSS: undefined, - }; -} - -export const SegmentedFileOutput = { - encode(message: SegmentedFileOutput, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.protocol !== undefined && message.protocol !== 0) { - writer.uint32(8).int32(message.protocol); - } - if (message.filenamePrefix !== undefined && message.filenamePrefix !== "") { - writer.uint32(18).string(message.filenamePrefix); - } - if (message.playlistName !== undefined && message.playlistName !== "") { - writer.uint32(26).string(message.playlistName); - } - if (message.livePlaylistName !== undefined && message.livePlaylistName !== "") { - writer.uint32(90).string(message.livePlaylistName); - } - if (message.segmentDuration !== undefined && message.segmentDuration !== 0) { - writer.uint32(32).uint32(message.segmentDuration); - } - if (message.filenameSuffix !== undefined && message.filenameSuffix !== 0) { - writer.uint32(80).int32(message.filenameSuffix); - } - if (message.disableManifest === true) { - writer.uint32(64).bool(message.disableManifest); - } - if (message.s3 !== undefined) { - S3Upload.encode(message.s3, writer.uint32(42).fork()).ldelim(); - } - if (message.gcp !== undefined) { - GCPUpload.encode(message.gcp, writer.uint32(50).fork()).ldelim(); - } - if (message.azure !== undefined) { - AzureBlobUpload.encode(message.azure, writer.uint32(58).fork()).ldelim(); - } - if (message.aliOSS !== undefined) { - AliOSSUpload.encode(message.aliOSS, writer.uint32(74).fork()).ldelim(); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): SegmentedFileOutput { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseSegmentedFileOutput(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 8) { - break; - } - - message.protocol = reader.int32() as any; - continue; - case 2: - if (tag !== 18) { - break; - } - - message.filenamePrefix = reader.string(); - continue; - case 3: - if (tag !== 26) { - break; - } - - message.playlistName = reader.string(); - continue; - case 11: - if (tag !== 90) { - break; - } - - message.livePlaylistName = reader.string(); - continue; - case 4: - if (tag !== 32) { - break; - } - - message.segmentDuration = reader.uint32(); - continue; - case 10: - if (tag !== 80) { - break; - } - - message.filenameSuffix = reader.int32() as any; - continue; - case 8: - if (tag !== 64) { - break; - } - - message.disableManifest = reader.bool(); - continue; - case 5: - if (tag !== 42) { - break; - } - - message.s3 = S3Upload.decode(reader, reader.uint32()); - continue; - case 6: - if (tag !== 50) { - break; - } - - message.gcp = GCPUpload.decode(reader, reader.uint32()); - continue; - case 7: - if (tag !== 58) { - break; - } - - message.azure = AzureBlobUpload.decode(reader, reader.uint32()); - continue; - case 9: - if (tag !== 74) { - break; - } - - message.aliOSS = AliOSSUpload.decode(reader, reader.uint32()); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): SegmentedFileOutput { - return { - protocol: isSet(object.protocol) ? segmentedFileProtocolFromJSON(object.protocol) : 0, - filenamePrefix: isSet(object.filenamePrefix) ? globalThis.String(object.filenamePrefix) : "", - playlistName: isSet(object.playlistName) ? globalThis.String(object.playlistName) : "", - livePlaylistName: isSet(object.livePlaylistName) ? globalThis.String(object.livePlaylistName) : "", - segmentDuration: isSet(object.segmentDuration) ? globalThis.Number(object.segmentDuration) : 0, - filenameSuffix: isSet(object.filenameSuffix) ? segmentedFileSuffixFromJSON(object.filenameSuffix) : 0, - disableManifest: isSet(object.disableManifest) ? globalThis.Boolean(object.disableManifest) : false, - s3: isSet(object.s3) ? S3Upload.fromJSON(object.s3) : undefined, - gcp: isSet(object.gcp) ? GCPUpload.fromJSON(object.gcp) : undefined, - azure: isSet(object.azure) ? AzureBlobUpload.fromJSON(object.azure) : undefined, - aliOSS: isSet(object.aliOSS) ? AliOSSUpload.fromJSON(object.aliOSS) : undefined, - }; - }, - - toJSON(message: SegmentedFileOutput): unknown { - const obj: any = {}; - if (message.protocol !== undefined && message.protocol !== 0) { - obj.protocol = segmentedFileProtocolToJSON(message.protocol); - } - if (message.filenamePrefix !== undefined && message.filenamePrefix !== "") { - obj.filenamePrefix = message.filenamePrefix; - } - if (message.playlistName !== undefined && message.playlistName !== "") { - obj.playlistName = message.playlistName; - } - if (message.livePlaylistName !== undefined && message.livePlaylistName !== "") { - obj.livePlaylistName = message.livePlaylistName; - } - if (message.segmentDuration !== undefined && message.segmentDuration !== 0) { - obj.segmentDuration = Math.round(message.segmentDuration); - } - if (message.filenameSuffix !== undefined && message.filenameSuffix !== 0) { - obj.filenameSuffix = segmentedFileSuffixToJSON(message.filenameSuffix); - } - if (message.disableManifest === true) { - obj.disableManifest = message.disableManifest; - } - if (message.s3 !== undefined) { - obj.s3 = S3Upload.toJSON(message.s3); - } - if (message.gcp !== undefined) { - obj.gcp = GCPUpload.toJSON(message.gcp); - } - if (message.azure !== undefined) { - obj.azure = AzureBlobUpload.toJSON(message.azure); - } - if (message.aliOSS !== undefined) { - obj.aliOSS = AliOSSUpload.toJSON(message.aliOSS); - } - return obj; - }, - - create, I>>(base?: I): SegmentedFileOutput { - return SegmentedFileOutput.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): SegmentedFileOutput { - const message = createBaseSegmentedFileOutput(); - message.protocol = object.protocol ?? 0; - message.filenamePrefix = object.filenamePrefix ?? ""; - message.playlistName = object.playlistName ?? ""; - message.livePlaylistName = object.livePlaylistName ?? ""; - message.segmentDuration = object.segmentDuration ?? 0; - message.filenameSuffix = object.filenameSuffix ?? 0; - message.disableManifest = object.disableManifest ?? false; - message.s3 = (object.s3 !== undefined && object.s3 !== null) ? S3Upload.fromPartial(object.s3) : undefined; - message.gcp = (object.gcp !== undefined && object.gcp !== null) ? GCPUpload.fromPartial(object.gcp) : undefined; - message.azure = (object.azure !== undefined && object.azure !== null) - ? AzureBlobUpload.fromPartial(object.azure) - : undefined; - message.aliOSS = (object.aliOSS !== undefined && object.aliOSS !== null) - ? AliOSSUpload.fromPartial(object.aliOSS) - : undefined; - return message; - }, -}; - -function createBaseDirectFileOutput(): DirectFileOutput { - return { filepath: "", disableManifest: false, s3: undefined, gcp: undefined, azure: undefined, aliOSS: undefined }; -} - -export const DirectFileOutput = { - encode(message: DirectFileOutput, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.filepath !== undefined && message.filepath !== "") { - writer.uint32(10).string(message.filepath); - } - if (message.disableManifest === true) { - writer.uint32(40).bool(message.disableManifest); - } - if (message.s3 !== undefined) { - S3Upload.encode(message.s3, writer.uint32(18).fork()).ldelim(); - } - if (message.gcp !== undefined) { - GCPUpload.encode(message.gcp, writer.uint32(26).fork()).ldelim(); - } - if (message.azure !== undefined) { - AzureBlobUpload.encode(message.azure, writer.uint32(34).fork()).ldelim(); - } - if (message.aliOSS !== undefined) { - AliOSSUpload.encode(message.aliOSS, writer.uint32(50).fork()).ldelim(); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): DirectFileOutput { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseDirectFileOutput(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.filepath = reader.string(); - continue; - case 5: - if (tag !== 40) { - break; - } - - message.disableManifest = reader.bool(); - continue; - case 2: - if (tag !== 18) { - break; - } - - message.s3 = S3Upload.decode(reader, reader.uint32()); - continue; - case 3: - if (tag !== 26) { - break; - } - - message.gcp = GCPUpload.decode(reader, reader.uint32()); - continue; - case 4: - if (tag !== 34) { - break; - } - - message.azure = AzureBlobUpload.decode(reader, reader.uint32()); - continue; - case 6: - if (tag !== 50) { - break; - } - - message.aliOSS = AliOSSUpload.decode(reader, reader.uint32()); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): DirectFileOutput { - return { - filepath: isSet(object.filepath) ? globalThis.String(object.filepath) : "", - disableManifest: isSet(object.disableManifest) ? globalThis.Boolean(object.disableManifest) : false, - s3: isSet(object.s3) ? S3Upload.fromJSON(object.s3) : undefined, - gcp: isSet(object.gcp) ? GCPUpload.fromJSON(object.gcp) : undefined, - azure: isSet(object.azure) ? AzureBlobUpload.fromJSON(object.azure) : undefined, - aliOSS: isSet(object.aliOSS) ? AliOSSUpload.fromJSON(object.aliOSS) : undefined, - }; - }, - - toJSON(message: DirectFileOutput): unknown { - const obj: any = {}; - if (message.filepath !== undefined && message.filepath !== "") { - obj.filepath = message.filepath; - } - if (message.disableManifest === true) { - obj.disableManifest = message.disableManifest; - } - if (message.s3 !== undefined) { - obj.s3 = S3Upload.toJSON(message.s3); - } - if (message.gcp !== undefined) { - obj.gcp = GCPUpload.toJSON(message.gcp); - } - if (message.azure !== undefined) { - obj.azure = AzureBlobUpload.toJSON(message.azure); - } - if (message.aliOSS !== undefined) { - obj.aliOSS = AliOSSUpload.toJSON(message.aliOSS); - } - return obj; - }, - - create, I>>(base?: I): DirectFileOutput { - return DirectFileOutput.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): DirectFileOutput { - const message = createBaseDirectFileOutput(); - message.filepath = object.filepath ?? ""; - message.disableManifest = object.disableManifest ?? false; - message.s3 = (object.s3 !== undefined && object.s3 !== null) ? S3Upload.fromPartial(object.s3) : undefined; - message.gcp = (object.gcp !== undefined && object.gcp !== null) ? GCPUpload.fromPartial(object.gcp) : undefined; - message.azure = (object.azure !== undefined && object.azure !== null) - ? AzureBlobUpload.fromPartial(object.azure) - : undefined; - message.aliOSS = (object.aliOSS !== undefined && object.aliOSS !== null) - ? AliOSSUpload.fromPartial(object.aliOSS) - : undefined; - return message; - }, -}; - -function createBaseImageOutput(): ImageOutput { - return { - captureInterval: 0, - width: 0, - height: 0, - filenamePrefix: "", - filenameSuffix: 0, - imageCodec: 0, - disableManifest: false, - s3: undefined, - gcp: undefined, - azure: undefined, - aliOSS: undefined, - }; -} - -export const ImageOutput = { - encode(message: ImageOutput, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.captureInterval !== undefined && message.captureInterval !== 0) { - writer.uint32(8).uint32(message.captureInterval); - } - if (message.width !== undefined && message.width !== 0) { - writer.uint32(16).int32(message.width); - } - if (message.height !== undefined && message.height !== 0) { - writer.uint32(24).int32(message.height); - } - if (message.filenamePrefix !== undefined && message.filenamePrefix !== "") { - writer.uint32(34).string(message.filenamePrefix); - } - if (message.filenameSuffix !== undefined && message.filenameSuffix !== 0) { - writer.uint32(40).int32(message.filenameSuffix); - } - if (message.imageCodec !== undefined && message.imageCodec !== 0) { - writer.uint32(48).int32(message.imageCodec); - } - if (message.disableManifest === true) { - writer.uint32(56).bool(message.disableManifest); - } - if (message.s3 !== undefined) { - S3Upload.encode(message.s3, writer.uint32(66).fork()).ldelim(); - } - if (message.gcp !== undefined) { - GCPUpload.encode(message.gcp, writer.uint32(74).fork()).ldelim(); - } - if (message.azure !== undefined) { - AzureBlobUpload.encode(message.azure, writer.uint32(82).fork()).ldelim(); - } - if (message.aliOSS !== undefined) { - AliOSSUpload.encode(message.aliOSS, writer.uint32(90).fork()).ldelim(); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): ImageOutput { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseImageOutput(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 8) { - break; - } - - message.captureInterval = reader.uint32(); - continue; - case 2: - if (tag !== 16) { - break; - } - - message.width = reader.int32(); - continue; - case 3: - if (tag !== 24) { - break; - } - - message.height = reader.int32(); - continue; - case 4: - if (tag !== 34) { - break; - } - - message.filenamePrefix = reader.string(); - continue; - case 5: - if (tag !== 40) { - break; - } - - message.filenameSuffix = reader.int32() as any; - continue; - case 6: - if (tag !== 48) { - break; - } - - message.imageCodec = reader.int32() as any; - continue; - case 7: - if (tag !== 56) { - break; - } - - message.disableManifest = reader.bool(); - continue; - case 8: - if (tag !== 66) { - break; - } - - message.s3 = S3Upload.decode(reader, reader.uint32()); - continue; - case 9: - if (tag !== 74) { - break; - } - - message.gcp = GCPUpload.decode(reader, reader.uint32()); - continue; - case 10: - if (tag !== 82) { - break; - } - - message.azure = AzureBlobUpload.decode(reader, reader.uint32()); - continue; - case 11: - if (tag !== 90) { - break; - } - - message.aliOSS = AliOSSUpload.decode(reader, reader.uint32()); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): ImageOutput { - return { - captureInterval: isSet(object.captureInterval) ? globalThis.Number(object.captureInterval) : 0, - width: isSet(object.width) ? globalThis.Number(object.width) : 0, - height: isSet(object.height) ? globalThis.Number(object.height) : 0, - filenamePrefix: isSet(object.filenamePrefix) ? globalThis.String(object.filenamePrefix) : "", - filenameSuffix: isSet(object.filenameSuffix) ? imageFileSuffixFromJSON(object.filenameSuffix) : 0, - imageCodec: isSet(object.imageCodec) ? imageCodecFromJSON(object.imageCodec) : 0, - disableManifest: isSet(object.disableManifest) ? globalThis.Boolean(object.disableManifest) : false, - s3: isSet(object.s3) ? S3Upload.fromJSON(object.s3) : undefined, - gcp: isSet(object.gcp) ? GCPUpload.fromJSON(object.gcp) : undefined, - azure: isSet(object.azure) ? AzureBlobUpload.fromJSON(object.azure) : undefined, - aliOSS: isSet(object.aliOSS) ? AliOSSUpload.fromJSON(object.aliOSS) : undefined, - }; - }, - - toJSON(message: ImageOutput): unknown { - const obj: any = {}; - if (message.captureInterval !== undefined && message.captureInterval !== 0) { - obj.captureInterval = Math.round(message.captureInterval); - } - if (message.width !== undefined && message.width !== 0) { - obj.width = Math.round(message.width); - } - if (message.height !== undefined && message.height !== 0) { - obj.height = Math.round(message.height); - } - if (message.filenamePrefix !== undefined && message.filenamePrefix !== "") { - obj.filenamePrefix = message.filenamePrefix; - } - if (message.filenameSuffix !== undefined && message.filenameSuffix !== 0) { - obj.filenameSuffix = imageFileSuffixToJSON(message.filenameSuffix); - } - if (message.imageCodec !== undefined && message.imageCodec !== 0) { - obj.imageCodec = imageCodecToJSON(message.imageCodec); - } - if (message.disableManifest === true) { - obj.disableManifest = message.disableManifest; - } - if (message.s3 !== undefined) { - obj.s3 = S3Upload.toJSON(message.s3); - } - if (message.gcp !== undefined) { - obj.gcp = GCPUpload.toJSON(message.gcp); - } - if (message.azure !== undefined) { - obj.azure = AzureBlobUpload.toJSON(message.azure); - } - if (message.aliOSS !== undefined) { - obj.aliOSS = AliOSSUpload.toJSON(message.aliOSS); - } - return obj; - }, - - create, I>>(base?: I): ImageOutput { - return ImageOutput.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): ImageOutput { - const message = createBaseImageOutput(); - message.captureInterval = object.captureInterval ?? 0; - message.width = object.width ?? 0; - message.height = object.height ?? 0; - message.filenamePrefix = object.filenamePrefix ?? ""; - message.filenameSuffix = object.filenameSuffix ?? 0; - message.imageCodec = object.imageCodec ?? 0; - message.disableManifest = object.disableManifest ?? false; - message.s3 = (object.s3 !== undefined && object.s3 !== null) ? S3Upload.fromPartial(object.s3) : undefined; - message.gcp = (object.gcp !== undefined && object.gcp !== null) ? GCPUpload.fromPartial(object.gcp) : undefined; - message.azure = (object.azure !== undefined && object.azure !== null) - ? AzureBlobUpload.fromPartial(object.azure) - : undefined; - message.aliOSS = (object.aliOSS !== undefined && object.aliOSS !== null) - ? AliOSSUpload.fromPartial(object.aliOSS) - : undefined; - return message; - }, -}; - -function createBaseS3Upload(): S3Upload { - return { - accessKey: "", - secret: "", - region: "", - endpoint: "", - bucket: "", - forcePathStyle: false, - metadata: {}, - tagging: "", - }; -} - -export const S3Upload = { - encode(message: S3Upload, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.accessKey !== undefined && message.accessKey !== "") { - writer.uint32(10).string(message.accessKey); - } - if (message.secret !== undefined && message.secret !== "") { - writer.uint32(18).string(message.secret); - } - if (message.region !== undefined && message.region !== "") { - writer.uint32(26).string(message.region); - } - if (message.endpoint !== undefined && message.endpoint !== "") { - writer.uint32(34).string(message.endpoint); - } - if (message.bucket !== undefined && message.bucket !== "") { - writer.uint32(42).string(message.bucket); - } - if (message.forcePathStyle === true) { - writer.uint32(48).bool(message.forcePathStyle); - } - Object.entries(message.metadata || {}).forEach(([key, value]) => { - S3Upload_MetadataEntry.encode({ key: key as any, value }, writer.uint32(58).fork()).ldelim(); - }); - if (message.tagging !== undefined && message.tagging !== "") { - writer.uint32(66).string(message.tagging); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): S3Upload { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseS3Upload(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.accessKey = reader.string(); - continue; - case 2: - if (tag !== 18) { - break; - } - - message.secret = reader.string(); - continue; - case 3: - if (tag !== 26) { - break; - } - - message.region = reader.string(); - continue; - case 4: - if (tag !== 34) { - break; - } - - message.endpoint = reader.string(); - continue; - case 5: - if (tag !== 42) { - break; - } - - message.bucket = reader.string(); - continue; - case 6: - if (tag !== 48) { - break; - } - - message.forcePathStyle = reader.bool(); - continue; - case 7: - if (tag !== 58) { - break; - } - - const entry7 = S3Upload_MetadataEntry.decode(reader, reader.uint32()); - if (entry7.value !== undefined) { - message.metadata![entry7.key] = entry7.value; - } - continue; - case 8: - if (tag !== 66) { - break; - } - - message.tagging = reader.string(); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): S3Upload { - return { - accessKey: isSet(object.accessKey) ? globalThis.String(object.accessKey) : "", - secret: isSet(object.secret) ? globalThis.String(object.secret) : "", - region: isSet(object.region) ? globalThis.String(object.region) : "", - endpoint: isSet(object.endpoint) ? globalThis.String(object.endpoint) : "", - bucket: isSet(object.bucket) ? globalThis.String(object.bucket) : "", - forcePathStyle: isSet(object.forcePathStyle) ? globalThis.Boolean(object.forcePathStyle) : false, - metadata: isObject(object.metadata) - ? Object.entries(object.metadata).reduce<{ [key: string]: string }>((acc, [key, value]) => { - acc[key] = String(value); - return acc; - }, {}) - : {}, - tagging: isSet(object.tagging) ? globalThis.String(object.tagging) : "", - }; - }, - - toJSON(message: S3Upload): unknown { - const obj: any = {}; - if (message.accessKey !== undefined && message.accessKey !== "") { - obj.accessKey = message.accessKey; - } - if (message.secret !== undefined && message.secret !== "") { - obj.secret = message.secret; - } - if (message.region !== undefined && message.region !== "") { - obj.region = message.region; - } - if (message.endpoint !== undefined && message.endpoint !== "") { - obj.endpoint = message.endpoint; - } - if (message.bucket !== undefined && message.bucket !== "") { - obj.bucket = message.bucket; - } - if (message.forcePathStyle === true) { - obj.forcePathStyle = message.forcePathStyle; - } - if (message.metadata) { - const entries = Object.entries(message.metadata); - if (entries.length > 0) { - obj.metadata = {}; - entries.forEach(([k, v]) => { - obj.metadata[k] = v; - }); - } - } - if (message.tagging !== undefined && message.tagging !== "") { - obj.tagging = message.tagging; - } - return obj; - }, - - create, I>>(base?: I): S3Upload { - return S3Upload.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): S3Upload { - const message = createBaseS3Upload(); - message.accessKey = object.accessKey ?? ""; - message.secret = object.secret ?? ""; - message.region = object.region ?? ""; - message.endpoint = object.endpoint ?? ""; - message.bucket = object.bucket ?? ""; - message.forcePathStyle = object.forcePathStyle ?? false; - message.metadata = Object.entries(object.metadata ?? {}).reduce<{ [key: string]: string }>((acc, [key, value]) => { - if (value !== undefined) { - acc[key] = globalThis.String(value); - } - return acc; - }, {}); - message.tagging = object.tagging ?? ""; - return message; - }, -}; - -function createBaseS3Upload_MetadataEntry(): S3Upload_MetadataEntry { - return { key: "", value: "" }; -} - -export const S3Upload_MetadataEntry = { - encode(message: S3Upload_MetadataEntry, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.key !== "") { - writer.uint32(10).string(message.key); - } - if (message.value !== "") { - writer.uint32(18).string(message.value); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): S3Upload_MetadataEntry { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseS3Upload_MetadataEntry(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.key = reader.string(); - continue; - case 2: - if (tag !== 18) { - break; - } - - message.value = reader.string(); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): S3Upload_MetadataEntry { - return { - key: isSet(object.key) ? globalThis.String(object.key) : "", - value: isSet(object.value) ? globalThis.String(object.value) : "", - }; - }, - - toJSON(message: S3Upload_MetadataEntry): unknown { - const obj: any = {}; - if (message.key !== "") { - obj.key = message.key; - } - if (message.value !== "") { - obj.value = message.value; - } - return obj; - }, - - create, I>>(base?: I): S3Upload_MetadataEntry { - return S3Upload_MetadataEntry.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): S3Upload_MetadataEntry { - const message = createBaseS3Upload_MetadataEntry(); - message.key = object.key ?? ""; - message.value = object.value ?? ""; - return message; - }, -}; - -function createBaseGCPUpload(): GCPUpload { - return { credentials: "", bucket: "" }; -} - -export const GCPUpload = { - encode(message: GCPUpload, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.credentials !== undefined && message.credentials !== "") { - writer.uint32(10).string(message.credentials); - } - if (message.bucket !== undefined && message.bucket !== "") { - writer.uint32(18).string(message.bucket); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): GCPUpload { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseGCPUpload(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.credentials = reader.string(); - continue; - case 2: - if (tag !== 18) { - break; - } - - message.bucket = reader.string(); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): GCPUpload { - return { - credentials: isSet(object.credentials) ? globalThis.String(object.credentials) : "", - bucket: isSet(object.bucket) ? globalThis.String(object.bucket) : "", - }; - }, - - toJSON(message: GCPUpload): unknown { - const obj: any = {}; - if (message.credentials !== undefined && message.credentials !== "") { - obj.credentials = message.credentials; - } - if (message.bucket !== undefined && message.bucket !== "") { - obj.bucket = message.bucket; - } - return obj; - }, - - create, I>>(base?: I): GCPUpload { - return GCPUpload.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): GCPUpload { - const message = createBaseGCPUpload(); - message.credentials = object.credentials ?? ""; - message.bucket = object.bucket ?? ""; - return message; - }, -}; - -function createBaseAzureBlobUpload(): AzureBlobUpload { - return { accountName: "", accountKey: "", containerName: "" }; -} - -export const AzureBlobUpload = { - encode(message: AzureBlobUpload, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.accountName !== undefined && message.accountName !== "") { - writer.uint32(10).string(message.accountName); - } - if (message.accountKey !== undefined && message.accountKey !== "") { - writer.uint32(18).string(message.accountKey); - } - if (message.containerName !== undefined && message.containerName !== "") { - writer.uint32(26).string(message.containerName); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): AzureBlobUpload { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseAzureBlobUpload(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.accountName = reader.string(); - continue; - case 2: - if (tag !== 18) { - break; - } - - message.accountKey = reader.string(); - continue; - case 3: - if (tag !== 26) { - break; - } - - message.containerName = reader.string(); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): AzureBlobUpload { - return { - accountName: isSet(object.accountName) ? globalThis.String(object.accountName) : "", - accountKey: isSet(object.accountKey) ? globalThis.String(object.accountKey) : "", - containerName: isSet(object.containerName) ? globalThis.String(object.containerName) : "", - }; - }, - - toJSON(message: AzureBlobUpload): unknown { - const obj: any = {}; - if (message.accountName !== undefined && message.accountName !== "") { - obj.accountName = message.accountName; - } - if (message.accountKey !== undefined && message.accountKey !== "") { - obj.accountKey = message.accountKey; - } - if (message.containerName !== undefined && message.containerName !== "") { - obj.containerName = message.containerName; - } - return obj; - }, - - create, I>>(base?: I): AzureBlobUpload { - return AzureBlobUpload.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): AzureBlobUpload { - const message = createBaseAzureBlobUpload(); - message.accountName = object.accountName ?? ""; - message.accountKey = object.accountKey ?? ""; - message.containerName = object.containerName ?? ""; - return message; - }, -}; - -function createBaseAliOSSUpload(): AliOSSUpload { - return { accessKey: "", secret: "", region: "", endpoint: "", bucket: "" }; -} - -export const AliOSSUpload = { - encode(message: AliOSSUpload, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.accessKey !== undefined && message.accessKey !== "") { - writer.uint32(10).string(message.accessKey); - } - if (message.secret !== undefined && message.secret !== "") { - writer.uint32(18).string(message.secret); - } - if (message.region !== undefined && message.region !== "") { - writer.uint32(26).string(message.region); - } - if (message.endpoint !== undefined && message.endpoint !== "") { - writer.uint32(34).string(message.endpoint); - } - if (message.bucket !== undefined && message.bucket !== "") { - writer.uint32(42).string(message.bucket); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): AliOSSUpload { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseAliOSSUpload(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.accessKey = reader.string(); - continue; - case 2: - if (tag !== 18) { - break; - } - - message.secret = reader.string(); - continue; - case 3: - if (tag !== 26) { - break; - } - - message.region = reader.string(); - continue; - case 4: - if (tag !== 34) { - break; - } - - message.endpoint = reader.string(); - continue; - case 5: - if (tag !== 42) { - break; - } - - message.bucket = reader.string(); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): AliOSSUpload { - return { - accessKey: isSet(object.accessKey) ? globalThis.String(object.accessKey) : "", - secret: isSet(object.secret) ? globalThis.String(object.secret) : "", - region: isSet(object.region) ? globalThis.String(object.region) : "", - endpoint: isSet(object.endpoint) ? globalThis.String(object.endpoint) : "", - bucket: isSet(object.bucket) ? globalThis.String(object.bucket) : "", - }; - }, - - toJSON(message: AliOSSUpload): unknown { - const obj: any = {}; - if (message.accessKey !== undefined && message.accessKey !== "") { - obj.accessKey = message.accessKey; - } - if (message.secret !== undefined && message.secret !== "") { - obj.secret = message.secret; - } - if (message.region !== undefined && message.region !== "") { - obj.region = message.region; - } - if (message.endpoint !== undefined && message.endpoint !== "") { - obj.endpoint = message.endpoint; - } - if (message.bucket !== undefined && message.bucket !== "") { - obj.bucket = message.bucket; - } - return obj; - }, - - create, I>>(base?: I): AliOSSUpload { - return AliOSSUpload.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): AliOSSUpload { - const message = createBaseAliOSSUpload(); - message.accessKey = object.accessKey ?? ""; - message.secret = object.secret ?? ""; - message.region = object.region ?? ""; - message.endpoint = object.endpoint ?? ""; - message.bucket = object.bucket ?? ""; - return message; - }, -}; - -function createBaseStreamOutput(): StreamOutput { - return { protocol: 0, urls: [] }; -} - -export const StreamOutput = { - encode(message: StreamOutput, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.protocol !== undefined && message.protocol !== 0) { - writer.uint32(8).int32(message.protocol); - } - if (message.urls !== undefined && message.urls.length !== 0) { - for (const v of message.urls) { - writer.uint32(18).string(v!); - } - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): StreamOutput { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseStreamOutput(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 8) { - break; - } - - message.protocol = reader.int32() as any; - continue; - case 2: - if (tag !== 18) { - break; - } - - message.urls!.push(reader.string()); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): StreamOutput { - return { - protocol: isSet(object.protocol) ? streamProtocolFromJSON(object.protocol) : 0, - urls: globalThis.Array.isArray(object?.urls) ? object.urls.map((e: any) => globalThis.String(e)) : [], - }; - }, - - toJSON(message: StreamOutput): unknown { - const obj: any = {}; - if (message.protocol !== undefined && message.protocol !== 0) { - obj.protocol = streamProtocolToJSON(message.protocol); - } - if (message.urls?.length) { - obj.urls = message.urls; - } - return obj; - }, - - create, I>>(base?: I): StreamOutput { - return StreamOutput.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): StreamOutput { - const message = createBaseStreamOutput(); - message.protocol = object.protocol ?? 0; - message.urls = object.urls?.map((e) => e) || []; - return message; - }, -}; - -function createBaseEncodingOptions(): EncodingOptions { - return { - width: 0, - height: 0, - depth: 0, - framerate: 0, - audioCodec: 0, - audioBitrate: 0, - audioFrequency: 0, - videoCodec: 0, - videoBitrate: 0, - keyFrameInterval: 0, - }; -} - -export const EncodingOptions = { - encode(message: EncodingOptions, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.width !== undefined && message.width !== 0) { - writer.uint32(8).int32(message.width); - } - if (message.height !== undefined && message.height !== 0) { - writer.uint32(16).int32(message.height); - } - if (message.depth !== undefined && message.depth !== 0) { - writer.uint32(24).int32(message.depth); - } - if (message.framerate !== undefined && message.framerate !== 0) { - writer.uint32(32).int32(message.framerate); - } - if (message.audioCodec !== undefined && message.audioCodec !== 0) { - writer.uint32(40).int32(message.audioCodec); - } - if (message.audioBitrate !== undefined && message.audioBitrate !== 0) { - writer.uint32(48).int32(message.audioBitrate); - } - if (message.audioFrequency !== undefined && message.audioFrequency !== 0) { - writer.uint32(56).int32(message.audioFrequency); - } - if (message.videoCodec !== undefined && message.videoCodec !== 0) { - writer.uint32(64).int32(message.videoCodec); - } - if (message.videoBitrate !== undefined && message.videoBitrate !== 0) { - writer.uint32(72).int32(message.videoBitrate); - } - if (message.keyFrameInterval !== undefined && message.keyFrameInterval !== 0) { - writer.uint32(81).double(message.keyFrameInterval); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): EncodingOptions { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseEncodingOptions(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 8) { - break; - } - - message.width = reader.int32(); - continue; - case 2: - if (tag !== 16) { - break; - } - - message.height = reader.int32(); - continue; - case 3: - if (tag !== 24) { - break; - } - - message.depth = reader.int32(); - continue; - case 4: - if (tag !== 32) { - break; - } - - message.framerate = reader.int32(); - continue; - case 5: - if (tag !== 40) { - break; - } - - message.audioCodec = reader.int32() as any; - continue; - case 6: - if (tag !== 48) { - break; - } - - message.audioBitrate = reader.int32(); - continue; - case 7: - if (tag !== 56) { - break; - } - - message.audioFrequency = reader.int32(); - continue; - case 8: - if (tag !== 64) { - break; - } - - message.videoCodec = reader.int32() as any; - continue; - case 9: - if (tag !== 72) { - break; - } - - message.videoBitrate = reader.int32(); - continue; - case 10: - if (tag !== 81) { - break; - } - - message.keyFrameInterval = reader.double(); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): EncodingOptions { - return { - width: isSet(object.width) ? globalThis.Number(object.width) : 0, - height: isSet(object.height) ? globalThis.Number(object.height) : 0, - depth: isSet(object.depth) ? globalThis.Number(object.depth) : 0, - framerate: isSet(object.framerate) ? globalThis.Number(object.framerate) : 0, - audioCodec: isSet(object.audioCodec) ? audioCodecFromJSON(object.audioCodec) : 0, - audioBitrate: isSet(object.audioBitrate) ? globalThis.Number(object.audioBitrate) : 0, - audioFrequency: isSet(object.audioFrequency) ? globalThis.Number(object.audioFrequency) : 0, - videoCodec: isSet(object.videoCodec) ? videoCodecFromJSON(object.videoCodec) : 0, - videoBitrate: isSet(object.videoBitrate) ? globalThis.Number(object.videoBitrate) : 0, - keyFrameInterval: isSet(object.keyFrameInterval) ? globalThis.Number(object.keyFrameInterval) : 0, - }; - }, - - toJSON(message: EncodingOptions): unknown { - const obj: any = {}; - if (message.width !== undefined && message.width !== 0) { - obj.width = Math.round(message.width); - } - if (message.height !== undefined && message.height !== 0) { - obj.height = Math.round(message.height); - } - if (message.depth !== undefined && message.depth !== 0) { - obj.depth = Math.round(message.depth); - } - if (message.framerate !== undefined && message.framerate !== 0) { - obj.framerate = Math.round(message.framerate); - } - if (message.audioCodec !== undefined && message.audioCodec !== 0) { - obj.audioCodec = audioCodecToJSON(message.audioCodec); - } - if (message.audioBitrate !== undefined && message.audioBitrate !== 0) { - obj.audioBitrate = Math.round(message.audioBitrate); - } - if (message.audioFrequency !== undefined && message.audioFrequency !== 0) { - obj.audioFrequency = Math.round(message.audioFrequency); - } - if (message.videoCodec !== undefined && message.videoCodec !== 0) { - obj.videoCodec = videoCodecToJSON(message.videoCodec); - } - if (message.videoBitrate !== undefined && message.videoBitrate !== 0) { - obj.videoBitrate = Math.round(message.videoBitrate); - } - if (message.keyFrameInterval !== undefined && message.keyFrameInterval !== 0) { - obj.keyFrameInterval = message.keyFrameInterval; - } - return obj; - }, - - create, I>>(base?: I): EncodingOptions { - return EncodingOptions.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): EncodingOptions { - const message = createBaseEncodingOptions(); - message.width = object.width ?? 0; - message.height = object.height ?? 0; - message.depth = object.depth ?? 0; - message.framerate = object.framerate ?? 0; - message.audioCodec = object.audioCodec ?? 0; - message.audioBitrate = object.audioBitrate ?? 0; - message.audioFrequency = object.audioFrequency ?? 0; - message.videoCodec = object.videoCodec ?? 0; - message.videoBitrate = object.videoBitrate ?? 0; - message.keyFrameInterval = object.keyFrameInterval ?? 0; - return message; - }, -}; - -function createBaseUpdateLayoutRequest(): UpdateLayoutRequest { - return { egressId: "", layout: "" }; -} - -export const UpdateLayoutRequest = { - encode(message: UpdateLayoutRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.egressId !== undefined && message.egressId !== "") { - writer.uint32(10).string(message.egressId); - } - if (message.layout !== undefined && message.layout !== "") { - writer.uint32(18).string(message.layout); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): UpdateLayoutRequest { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseUpdateLayoutRequest(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.egressId = reader.string(); - continue; - case 2: - if (tag !== 18) { - break; - } - - message.layout = reader.string(); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): UpdateLayoutRequest { - return { - egressId: isSet(object.egressId) ? globalThis.String(object.egressId) : "", - layout: isSet(object.layout) ? globalThis.String(object.layout) : "", - }; - }, - - toJSON(message: UpdateLayoutRequest): unknown { - const obj: any = {}; - if (message.egressId !== undefined && message.egressId !== "") { - obj.egressId = message.egressId; - } - if (message.layout !== undefined && message.layout !== "") { - obj.layout = message.layout; - } - return obj; - }, - - create, I>>(base?: I): UpdateLayoutRequest { - return UpdateLayoutRequest.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): UpdateLayoutRequest { - const message = createBaseUpdateLayoutRequest(); - message.egressId = object.egressId ?? ""; - message.layout = object.layout ?? ""; - return message; - }, -}; - -function createBaseUpdateStreamRequest(): UpdateStreamRequest { - return { egressId: "", addOutputUrls: [], removeOutputUrls: [] }; -} - -export const UpdateStreamRequest = { - encode(message: UpdateStreamRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.egressId !== undefined && message.egressId !== "") { - writer.uint32(10).string(message.egressId); - } - if (message.addOutputUrls !== undefined && message.addOutputUrls.length !== 0) { - for (const v of message.addOutputUrls) { - writer.uint32(18).string(v!); - } - } - if (message.removeOutputUrls !== undefined && message.removeOutputUrls.length !== 0) { - for (const v of message.removeOutputUrls) { - writer.uint32(26).string(v!); - } - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): UpdateStreamRequest { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseUpdateStreamRequest(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.egressId = reader.string(); - continue; - case 2: - if (tag !== 18) { - break; - } - - message.addOutputUrls!.push(reader.string()); - continue; - case 3: - if (tag !== 26) { - break; - } - - message.removeOutputUrls!.push(reader.string()); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): UpdateStreamRequest { - return { - egressId: isSet(object.egressId) ? globalThis.String(object.egressId) : "", - addOutputUrls: globalThis.Array.isArray(object?.addOutputUrls) - ? object.addOutputUrls.map((e: any) => globalThis.String(e)) - : [], - removeOutputUrls: globalThis.Array.isArray(object?.removeOutputUrls) - ? object.removeOutputUrls.map((e: any) => globalThis.String(e)) - : [], - }; - }, - - toJSON(message: UpdateStreamRequest): unknown { - const obj: any = {}; - if (message.egressId !== undefined && message.egressId !== "") { - obj.egressId = message.egressId; - } - if (message.addOutputUrls?.length) { - obj.addOutputUrls = message.addOutputUrls; - } - if (message.removeOutputUrls?.length) { - obj.removeOutputUrls = message.removeOutputUrls; - } - return obj; - }, - - create, I>>(base?: I): UpdateStreamRequest { - return UpdateStreamRequest.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): UpdateStreamRequest { - const message = createBaseUpdateStreamRequest(); - message.egressId = object.egressId ?? ""; - message.addOutputUrls = object.addOutputUrls?.map((e) => e) || []; - message.removeOutputUrls = object.removeOutputUrls?.map((e) => e) || []; - return message; - }, -}; - -function createBaseUpdateOutputsRequest(): UpdateOutputsRequest { - return { egressId: "", addImageOutputs: [], removeImageOutputs: [] }; -} - -export const UpdateOutputsRequest = { - encode(message: UpdateOutputsRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.egressId !== undefined && message.egressId !== "") { - writer.uint32(10).string(message.egressId); - } - if (message.addImageOutputs !== undefined && message.addImageOutputs.length !== 0) { - for (const v of message.addImageOutputs) { - ImageOutput.encode(v!, writer.uint32(18).fork()).ldelim(); - } - } - if (message.removeImageOutputs !== undefined && message.removeImageOutputs.length !== 0) { - for (const v of message.removeImageOutputs) { - ImageOutput.encode(v!, writer.uint32(26).fork()).ldelim(); - } - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): UpdateOutputsRequest { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseUpdateOutputsRequest(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.egressId = reader.string(); - continue; - case 2: - if (tag !== 18) { - break; - } - - message.addImageOutputs!.push(ImageOutput.decode(reader, reader.uint32())); - continue; - case 3: - if (tag !== 26) { - break; - } - - message.removeImageOutputs!.push(ImageOutput.decode(reader, reader.uint32())); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): UpdateOutputsRequest { - return { - egressId: isSet(object.egressId) ? globalThis.String(object.egressId) : "", - addImageOutputs: globalThis.Array.isArray(object?.addImageOutputs) - ? object.addImageOutputs.map((e: any) => ImageOutput.fromJSON(e)) - : [], - removeImageOutputs: globalThis.Array.isArray(object?.removeImageOutputs) - ? object.removeImageOutputs.map((e: any) => ImageOutput.fromJSON(e)) - : [], - }; - }, - - toJSON(message: UpdateOutputsRequest): unknown { - const obj: any = {}; - if (message.egressId !== undefined && message.egressId !== "") { - obj.egressId = message.egressId; - } - if (message.addImageOutputs?.length) { - obj.addImageOutputs = message.addImageOutputs.map((e) => ImageOutput.toJSON(e)); - } - if (message.removeImageOutputs?.length) { - obj.removeImageOutputs = message.removeImageOutputs.map((e) => ImageOutput.toJSON(e)); - } - return obj; - }, - - create, I>>(base?: I): UpdateOutputsRequest { - return UpdateOutputsRequest.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): UpdateOutputsRequest { - const message = createBaseUpdateOutputsRequest(); - message.egressId = object.egressId ?? ""; - message.addImageOutputs = object.addImageOutputs?.map((e) => ImageOutput.fromPartial(e)) || []; - message.removeImageOutputs = object.removeImageOutputs?.map((e) => ImageOutput.fromPartial(e)) || []; - return message; - }, -}; - -function createBaseListEgressRequest(): ListEgressRequest { - return { roomName: "", egressId: "", active: false }; -} - -export const ListEgressRequest = { - encode(message: ListEgressRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.roomName !== undefined && message.roomName !== "") { - writer.uint32(10).string(message.roomName); - } - if (message.egressId !== undefined && message.egressId !== "") { - writer.uint32(18).string(message.egressId); - } - if (message.active === true) { - writer.uint32(24).bool(message.active); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): ListEgressRequest { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseListEgressRequest(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.roomName = reader.string(); - continue; - case 2: - if (tag !== 18) { - break; - } - - message.egressId = reader.string(); - continue; - case 3: - if (tag !== 24) { - break; - } - - message.active = reader.bool(); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): ListEgressRequest { - return { - roomName: isSet(object.roomName) ? globalThis.String(object.roomName) : "", - egressId: isSet(object.egressId) ? globalThis.String(object.egressId) : "", - active: isSet(object.active) ? globalThis.Boolean(object.active) : false, - }; - }, - - toJSON(message: ListEgressRequest): unknown { - const obj: any = {}; - if (message.roomName !== undefined && message.roomName !== "") { - obj.roomName = message.roomName; - } - if (message.egressId !== undefined && message.egressId !== "") { - obj.egressId = message.egressId; - } - if (message.active === true) { - obj.active = message.active; - } - return obj; - }, - - create, I>>(base?: I): ListEgressRequest { - return ListEgressRequest.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): ListEgressRequest { - const message = createBaseListEgressRequest(); - message.roomName = object.roomName ?? ""; - message.egressId = object.egressId ?? ""; - message.active = object.active ?? false; - return message; - }, -}; - -function createBaseListEgressResponse(): ListEgressResponse { - return { items: [] }; -} - -export const ListEgressResponse = { - encode(message: ListEgressResponse, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.items !== undefined && message.items.length !== 0) { - for (const v of message.items) { - EgressInfo.encode(v!, writer.uint32(10).fork()).ldelim(); - } - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): ListEgressResponse { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseListEgressResponse(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.items!.push(EgressInfo.decode(reader, reader.uint32())); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): ListEgressResponse { - return { - items: globalThis.Array.isArray(object?.items) ? object.items.map((e: any) => EgressInfo.fromJSON(e)) : [], - }; - }, - - toJSON(message: ListEgressResponse): unknown { - const obj: any = {}; - if (message.items?.length) { - obj.items = message.items.map((e) => EgressInfo.toJSON(e)); - } - return obj; - }, - - create, I>>(base?: I): ListEgressResponse { - return ListEgressResponse.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): ListEgressResponse { - const message = createBaseListEgressResponse(); - message.items = object.items?.map((e) => EgressInfo.fromPartial(e)) || []; - return message; - }, -}; - -function createBaseStopEgressRequest(): StopEgressRequest { - return { egressId: "" }; -} - -export const StopEgressRequest = { - encode(message: StopEgressRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.egressId !== undefined && message.egressId !== "") { - writer.uint32(10).string(message.egressId); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): StopEgressRequest { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseStopEgressRequest(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.egressId = reader.string(); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): StopEgressRequest { - return { egressId: isSet(object.egressId) ? globalThis.String(object.egressId) : "" }; - }, - - toJSON(message: StopEgressRequest): unknown { - const obj: any = {}; - if (message.egressId !== undefined && message.egressId !== "") { - obj.egressId = message.egressId; - } - return obj; - }, - - create, I>>(base?: I): StopEgressRequest { - return StopEgressRequest.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): StopEgressRequest { - const message = createBaseStopEgressRequest(); - message.egressId = object.egressId ?? ""; - return message; - }, -}; - -function createBaseEgressInfo(): EgressInfo { - return { - egressId: "", - roomId: "", - roomName: "", - status: 0, - startedAt: 0, - endedAt: 0, - updatedAt: 0, - error: "", - roomComposite: undefined, - web: undefined, - participant: undefined, - trackComposite: undefined, - track: undefined, - stream: undefined, - file: undefined, - segments: undefined, - streamResults: [], - fileResults: [], - segmentResults: [], - imageResults: [], - }; -} - -export const EgressInfo = { - encode(message: EgressInfo, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.egressId !== undefined && message.egressId !== "") { - writer.uint32(10).string(message.egressId); - } - if (message.roomId !== undefined && message.roomId !== "") { - writer.uint32(18).string(message.roomId); - } - if (message.roomName !== undefined && message.roomName !== "") { - writer.uint32(106).string(message.roomName); - } - if (message.status !== undefined && message.status !== 0) { - writer.uint32(24).int32(message.status); - } - if (message.startedAt !== undefined && message.startedAt !== 0) { - writer.uint32(80).int64(message.startedAt); - } - if (message.endedAt !== undefined && message.endedAt !== 0) { - writer.uint32(88).int64(message.endedAt); - } - if (message.updatedAt !== undefined && message.updatedAt !== 0) { - writer.uint32(144).int64(message.updatedAt); - } - if (message.error !== undefined && message.error !== "") { - writer.uint32(74).string(message.error); - } - if (message.roomComposite !== undefined) { - RoomCompositeEgressRequest.encode(message.roomComposite, writer.uint32(34).fork()).ldelim(); - } - if (message.web !== undefined) { - WebEgressRequest.encode(message.web, writer.uint32(114).fork()).ldelim(); - } - if (message.participant !== undefined) { - ParticipantEgressRequest.encode(message.participant, writer.uint32(154).fork()).ldelim(); - } - if (message.trackComposite !== undefined) { - TrackCompositeEgressRequest.encode(message.trackComposite, writer.uint32(42).fork()).ldelim(); - } - if (message.track !== undefined) { - TrackEgressRequest.encode(message.track, writer.uint32(50).fork()).ldelim(); - } - if (message.stream !== undefined) { - StreamInfoList.encode(message.stream, writer.uint32(58).fork()).ldelim(); - } - if (message.file !== undefined) { - FileInfo.encode(message.file, writer.uint32(66).fork()).ldelim(); - } - if (message.segments !== undefined) { - SegmentsInfo.encode(message.segments, writer.uint32(98).fork()).ldelim(); - } - if (message.streamResults !== undefined && message.streamResults.length !== 0) { - for (const v of message.streamResults) { - StreamInfo.encode(v!, writer.uint32(122).fork()).ldelim(); - } - } - if (message.fileResults !== undefined && message.fileResults.length !== 0) { - for (const v of message.fileResults) { - FileInfo.encode(v!, writer.uint32(130).fork()).ldelim(); - } - } - if (message.segmentResults !== undefined && message.segmentResults.length !== 0) { - for (const v of message.segmentResults) { - SegmentsInfo.encode(v!, writer.uint32(138).fork()).ldelim(); - } - } - if (message.imageResults !== undefined && message.imageResults.length !== 0) { - for (const v of message.imageResults) { - ImagesInfo.encode(v!, writer.uint32(162).fork()).ldelim(); - } - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): EgressInfo { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseEgressInfo(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.egressId = reader.string(); - continue; - case 2: - if (tag !== 18) { - break; - } - - message.roomId = reader.string(); - continue; - case 13: - if (tag !== 106) { - break; - } - - message.roomName = reader.string(); - continue; - case 3: - if (tag !== 24) { - break; - } - - message.status = reader.int32() as any; - continue; - case 10: - if (tag !== 80) { - break; - } - - message.startedAt = longToNumber(reader.int64() as Long); - continue; - case 11: - if (tag !== 88) { - break; - } - - message.endedAt = longToNumber(reader.int64() as Long); - continue; - case 18: - if (tag !== 144) { - break; - } - - message.updatedAt = longToNumber(reader.int64() as Long); - continue; - case 9: - if (tag !== 74) { - break; - } - - message.error = reader.string(); - continue; - case 4: - if (tag !== 34) { - break; - } - - message.roomComposite = RoomCompositeEgressRequest.decode(reader, reader.uint32()); - continue; - case 14: - if (tag !== 114) { - break; - } - - message.web = WebEgressRequest.decode(reader, reader.uint32()); - continue; - case 19: - if (tag !== 154) { - break; - } - - message.participant = ParticipantEgressRequest.decode(reader, reader.uint32()); - continue; - case 5: - if (tag !== 42) { - break; - } - - message.trackComposite = TrackCompositeEgressRequest.decode(reader, reader.uint32()); - continue; - case 6: - if (tag !== 50) { - break; - } - - message.track = TrackEgressRequest.decode(reader, reader.uint32()); - continue; - case 7: - if (tag !== 58) { - break; - } - - message.stream = StreamInfoList.decode(reader, reader.uint32()); - continue; - case 8: - if (tag !== 66) { - break; - } - - message.file = FileInfo.decode(reader, reader.uint32()); - continue; - case 12: - if (tag !== 98) { - break; - } - - message.segments = SegmentsInfo.decode(reader, reader.uint32()); - continue; - case 15: - if (tag !== 122) { - break; - } - - message.streamResults!.push(StreamInfo.decode(reader, reader.uint32())); - continue; - case 16: - if (tag !== 130) { - break; - } - - message.fileResults!.push(FileInfo.decode(reader, reader.uint32())); - continue; - case 17: - if (tag !== 138) { - break; - } - - message.segmentResults!.push(SegmentsInfo.decode(reader, reader.uint32())); - continue; - case 20: - if (tag !== 162) { - break; - } - - message.imageResults!.push(ImagesInfo.decode(reader, reader.uint32())); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): EgressInfo { - return { - egressId: isSet(object.egressId) ? globalThis.String(object.egressId) : "", - roomId: isSet(object.roomId) ? globalThis.String(object.roomId) : "", - roomName: isSet(object.roomName) ? globalThis.String(object.roomName) : "", - status: isSet(object.status) ? egressStatusFromJSON(object.status) : 0, - startedAt: isSet(object.startedAt) ? globalThis.Number(object.startedAt) : 0, - endedAt: isSet(object.endedAt) ? globalThis.Number(object.endedAt) : 0, - updatedAt: isSet(object.updatedAt) ? globalThis.Number(object.updatedAt) : 0, - error: isSet(object.error) ? globalThis.String(object.error) : "", - roomComposite: isSet(object.roomComposite) - ? RoomCompositeEgressRequest.fromJSON(object.roomComposite) - : undefined, - web: isSet(object.web) ? WebEgressRequest.fromJSON(object.web) : undefined, - participant: isSet(object.participant) ? ParticipantEgressRequest.fromJSON(object.participant) : undefined, - trackComposite: isSet(object.trackComposite) - ? TrackCompositeEgressRequest.fromJSON(object.trackComposite) - : undefined, - track: isSet(object.track) ? TrackEgressRequest.fromJSON(object.track) : undefined, - stream: isSet(object.stream) ? StreamInfoList.fromJSON(object.stream) : undefined, - file: isSet(object.file) ? FileInfo.fromJSON(object.file) : undefined, - segments: isSet(object.segments) ? SegmentsInfo.fromJSON(object.segments) : undefined, - streamResults: globalThis.Array.isArray(object?.streamResults) - ? object.streamResults.map((e: any) => StreamInfo.fromJSON(e)) - : [], - fileResults: globalThis.Array.isArray(object?.fileResults) - ? object.fileResults.map((e: any) => FileInfo.fromJSON(e)) - : [], - segmentResults: globalThis.Array.isArray(object?.segmentResults) - ? object.segmentResults.map((e: any) => SegmentsInfo.fromJSON(e)) - : [], - imageResults: globalThis.Array.isArray(object?.imageResults) - ? object.imageResults.map((e: any) => ImagesInfo.fromJSON(e)) - : [], - }; - }, - - toJSON(message: EgressInfo): unknown { - const obj: any = {}; - if (message.egressId !== undefined && message.egressId !== "") { - obj.egressId = message.egressId; - } - if (message.roomId !== undefined && message.roomId !== "") { - obj.roomId = message.roomId; - } - if (message.roomName !== undefined && message.roomName !== "") { - obj.roomName = message.roomName; - } - if (message.status !== undefined && message.status !== 0) { - obj.status = egressStatusToJSON(message.status); - } - if (message.startedAt !== undefined && message.startedAt !== 0) { - obj.startedAt = Math.round(message.startedAt); - } - if (message.endedAt !== undefined && message.endedAt !== 0) { - obj.endedAt = Math.round(message.endedAt); - } - if (message.updatedAt !== undefined && message.updatedAt !== 0) { - obj.updatedAt = Math.round(message.updatedAt); - } - if (message.error !== undefined && message.error !== "") { - obj.error = message.error; - } - if (message.roomComposite !== undefined) { - obj.roomComposite = RoomCompositeEgressRequest.toJSON(message.roomComposite); - } - if (message.web !== undefined) { - obj.web = WebEgressRequest.toJSON(message.web); - } - if (message.participant !== undefined) { - obj.participant = ParticipantEgressRequest.toJSON(message.participant); - } - if (message.trackComposite !== undefined) { - obj.trackComposite = TrackCompositeEgressRequest.toJSON(message.trackComposite); - } - if (message.track !== undefined) { - obj.track = TrackEgressRequest.toJSON(message.track); - } - if (message.stream !== undefined) { - obj.stream = StreamInfoList.toJSON(message.stream); - } - if (message.file !== undefined) { - obj.file = FileInfo.toJSON(message.file); - } - if (message.segments !== undefined) { - obj.segments = SegmentsInfo.toJSON(message.segments); - } - if (message.streamResults?.length) { - obj.streamResults = message.streamResults.map((e) => StreamInfo.toJSON(e)); - } - if (message.fileResults?.length) { - obj.fileResults = message.fileResults.map((e) => FileInfo.toJSON(e)); - } - if (message.segmentResults?.length) { - obj.segmentResults = message.segmentResults.map((e) => SegmentsInfo.toJSON(e)); - } - if (message.imageResults?.length) { - obj.imageResults = message.imageResults.map((e) => ImagesInfo.toJSON(e)); - } - return obj; - }, - - create, I>>(base?: I): EgressInfo { - return EgressInfo.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): EgressInfo { - const message = createBaseEgressInfo(); - message.egressId = object.egressId ?? ""; - message.roomId = object.roomId ?? ""; - message.roomName = object.roomName ?? ""; - message.status = object.status ?? 0; - message.startedAt = object.startedAt ?? 0; - message.endedAt = object.endedAt ?? 0; - message.updatedAt = object.updatedAt ?? 0; - message.error = object.error ?? ""; - message.roomComposite = (object.roomComposite !== undefined && object.roomComposite !== null) - ? RoomCompositeEgressRequest.fromPartial(object.roomComposite) - : undefined; - message.web = (object.web !== undefined && object.web !== null) - ? WebEgressRequest.fromPartial(object.web) - : undefined; - message.participant = (object.participant !== undefined && object.participant !== null) - ? ParticipantEgressRequest.fromPartial(object.participant) - : undefined; - message.trackComposite = (object.trackComposite !== undefined && object.trackComposite !== null) - ? TrackCompositeEgressRequest.fromPartial(object.trackComposite) - : undefined; - message.track = (object.track !== undefined && object.track !== null) - ? TrackEgressRequest.fromPartial(object.track) - : undefined; - message.stream = (object.stream !== undefined && object.stream !== null) - ? StreamInfoList.fromPartial(object.stream) - : undefined; - message.file = (object.file !== undefined && object.file !== null) ? FileInfo.fromPartial(object.file) : undefined; - message.segments = (object.segments !== undefined && object.segments !== null) - ? SegmentsInfo.fromPartial(object.segments) - : undefined; - message.streamResults = object.streamResults?.map((e) => StreamInfo.fromPartial(e)) || []; - message.fileResults = object.fileResults?.map((e) => FileInfo.fromPartial(e)) || []; - message.segmentResults = object.segmentResults?.map((e) => SegmentsInfo.fromPartial(e)) || []; - message.imageResults = object.imageResults?.map((e) => ImagesInfo.fromPartial(e)) || []; - return message; - }, -}; - -function createBaseStreamInfoList(): StreamInfoList { - return { info: [] }; -} - -export const StreamInfoList = { - encode(message: StreamInfoList, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.info !== undefined && message.info.length !== 0) { - for (const v of message.info) { - StreamInfo.encode(v!, writer.uint32(10).fork()).ldelim(); - } - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): StreamInfoList { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseStreamInfoList(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.info!.push(StreamInfo.decode(reader, reader.uint32())); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): StreamInfoList { - return { info: globalThis.Array.isArray(object?.info) ? object.info.map((e: any) => StreamInfo.fromJSON(e)) : [] }; - }, - - toJSON(message: StreamInfoList): unknown { - const obj: any = {}; - if (message.info?.length) { - obj.info = message.info.map((e) => StreamInfo.toJSON(e)); - } - return obj; - }, - - create, I>>(base?: I): StreamInfoList { - return StreamInfoList.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): StreamInfoList { - const message = createBaseStreamInfoList(); - message.info = object.info?.map((e) => StreamInfo.fromPartial(e)) || []; - return message; - }, -}; - -function createBaseStreamInfo(): StreamInfo { - return { url: "", startedAt: 0, endedAt: 0, duration: 0, status: 0, error: "" }; -} - -export const StreamInfo = { - encode(message: StreamInfo, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.url !== undefined && message.url !== "") { - writer.uint32(10).string(message.url); - } - if (message.startedAt !== undefined && message.startedAt !== 0) { - writer.uint32(16).int64(message.startedAt); - } - if (message.endedAt !== undefined && message.endedAt !== 0) { - writer.uint32(24).int64(message.endedAt); - } - if (message.duration !== undefined && message.duration !== 0) { - writer.uint32(32).int64(message.duration); - } - if (message.status !== undefined && message.status !== 0) { - writer.uint32(40).int32(message.status); - } - if (message.error !== undefined && message.error !== "") { - writer.uint32(50).string(message.error); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): StreamInfo { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseStreamInfo(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.url = reader.string(); - continue; - case 2: - if (tag !== 16) { - break; - } - - message.startedAt = longToNumber(reader.int64() as Long); - continue; - case 3: - if (tag !== 24) { - break; - } - - message.endedAt = longToNumber(reader.int64() as Long); - continue; - case 4: - if (tag !== 32) { - break; - } - - message.duration = longToNumber(reader.int64() as Long); - continue; - case 5: - if (tag !== 40) { - break; - } - - message.status = reader.int32() as any; - continue; - case 6: - if (tag !== 50) { - break; - } - - message.error = reader.string(); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): StreamInfo { - return { - url: isSet(object.url) ? globalThis.String(object.url) : "", - startedAt: isSet(object.startedAt) ? globalThis.Number(object.startedAt) : 0, - endedAt: isSet(object.endedAt) ? globalThis.Number(object.endedAt) : 0, - duration: isSet(object.duration) ? globalThis.Number(object.duration) : 0, - status: isSet(object.status) ? streamInfo_StatusFromJSON(object.status) : 0, - error: isSet(object.error) ? globalThis.String(object.error) : "", - }; - }, - - toJSON(message: StreamInfo): unknown { - const obj: any = {}; - if (message.url !== undefined && message.url !== "") { - obj.url = message.url; - } - if (message.startedAt !== undefined && message.startedAt !== 0) { - obj.startedAt = Math.round(message.startedAt); - } - if (message.endedAt !== undefined && message.endedAt !== 0) { - obj.endedAt = Math.round(message.endedAt); - } - if (message.duration !== undefined && message.duration !== 0) { - obj.duration = Math.round(message.duration); - } - if (message.status !== undefined && message.status !== 0) { - obj.status = streamInfo_StatusToJSON(message.status); - } - if (message.error !== undefined && message.error !== "") { - obj.error = message.error; - } - return obj; - }, - - create, I>>(base?: I): StreamInfo { - return StreamInfo.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): StreamInfo { - const message = createBaseStreamInfo(); - message.url = object.url ?? ""; - message.startedAt = object.startedAt ?? 0; - message.endedAt = object.endedAt ?? 0; - message.duration = object.duration ?? 0; - message.status = object.status ?? 0; - message.error = object.error ?? ""; - return message; - }, -}; - -function createBaseFileInfo(): FileInfo { - return { filename: "", startedAt: 0, endedAt: 0, duration: 0, size: 0, location: "" }; -} - -export const FileInfo = { - encode(message: FileInfo, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.filename !== undefined && message.filename !== "") { - writer.uint32(10).string(message.filename); - } - if (message.startedAt !== undefined && message.startedAt !== 0) { - writer.uint32(16).int64(message.startedAt); - } - if (message.endedAt !== undefined && message.endedAt !== 0) { - writer.uint32(24).int64(message.endedAt); - } - if (message.duration !== undefined && message.duration !== 0) { - writer.uint32(48).int64(message.duration); - } - if (message.size !== undefined && message.size !== 0) { - writer.uint32(32).int64(message.size); - } - if (message.location !== undefined && message.location !== "") { - writer.uint32(42).string(message.location); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): FileInfo { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseFileInfo(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.filename = reader.string(); - continue; - case 2: - if (tag !== 16) { - break; - } - - message.startedAt = longToNumber(reader.int64() as Long); - continue; - case 3: - if (tag !== 24) { - break; - } - - message.endedAt = longToNumber(reader.int64() as Long); - continue; - case 6: - if (tag !== 48) { - break; - } - - message.duration = longToNumber(reader.int64() as Long); - continue; - case 4: - if (tag !== 32) { - break; - } - - message.size = longToNumber(reader.int64() as Long); - continue; - case 5: - if (tag !== 42) { - break; - } - - message.location = reader.string(); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): FileInfo { - return { - filename: isSet(object.filename) ? globalThis.String(object.filename) : "", - startedAt: isSet(object.startedAt) ? globalThis.Number(object.startedAt) : 0, - endedAt: isSet(object.endedAt) ? globalThis.Number(object.endedAt) : 0, - duration: isSet(object.duration) ? globalThis.Number(object.duration) : 0, - size: isSet(object.size) ? globalThis.Number(object.size) : 0, - location: isSet(object.location) ? globalThis.String(object.location) : "", - }; - }, - - toJSON(message: FileInfo): unknown { - const obj: any = {}; - if (message.filename !== undefined && message.filename !== "") { - obj.filename = message.filename; - } - if (message.startedAt !== undefined && message.startedAt !== 0) { - obj.startedAt = Math.round(message.startedAt); - } - if (message.endedAt !== undefined && message.endedAt !== 0) { - obj.endedAt = Math.round(message.endedAt); - } - if (message.duration !== undefined && message.duration !== 0) { - obj.duration = Math.round(message.duration); - } - if (message.size !== undefined && message.size !== 0) { - obj.size = Math.round(message.size); - } - if (message.location !== undefined && message.location !== "") { - obj.location = message.location; - } - return obj; - }, - - create, I>>(base?: I): FileInfo { - return FileInfo.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): FileInfo { - const message = createBaseFileInfo(); - message.filename = object.filename ?? ""; - message.startedAt = object.startedAt ?? 0; - message.endedAt = object.endedAt ?? 0; - message.duration = object.duration ?? 0; - message.size = object.size ?? 0; - message.location = object.location ?? ""; - return message; - }, -}; - -function createBaseSegmentsInfo(): SegmentsInfo { - return { - playlistName: "", - livePlaylistName: "", - duration: 0, - size: 0, - playlistLocation: "", - livePlaylistLocation: "", - segmentCount: 0, - startedAt: 0, - endedAt: 0, - dataEventLocation: "", - }; -} - -export const SegmentsInfo = { - encode(message: SegmentsInfo, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.playlistName !== undefined && message.playlistName !== "") { - writer.uint32(10).string(message.playlistName); - } - if (message.livePlaylistName !== undefined && message.livePlaylistName !== "") { - writer.uint32(66).string(message.livePlaylistName); - } - if (message.duration !== undefined && message.duration !== 0) { - writer.uint32(16).int64(message.duration); - } - if (message.size !== undefined && message.size !== 0) { - writer.uint32(24).int64(message.size); - } - if (message.playlistLocation !== undefined && message.playlistLocation !== "") { - writer.uint32(34).string(message.playlistLocation); - } - if (message.livePlaylistLocation !== undefined && message.livePlaylistLocation !== "") { - writer.uint32(74).string(message.livePlaylistLocation); - } - if (message.segmentCount !== undefined && message.segmentCount !== 0) { - writer.uint32(40).int64(message.segmentCount); - } - if (message.startedAt !== undefined && message.startedAt !== 0) { - writer.uint32(48).int64(message.startedAt); - } - if (message.endedAt !== undefined && message.endedAt !== 0) { - writer.uint32(56).int64(message.endedAt); - } - if (message.dataEventLocation !== undefined && message.dataEventLocation !== "") { - writer.uint32(82).string(message.dataEventLocation); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): SegmentsInfo { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseSegmentsInfo(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.playlistName = reader.string(); - continue; - case 8: - if (tag !== 66) { - break; - } - - message.livePlaylistName = reader.string(); - continue; - case 2: - if (tag !== 16) { - break; - } - - message.duration = longToNumber(reader.int64() as Long); - continue; - case 3: - if (tag !== 24) { - break; - } - - message.size = longToNumber(reader.int64() as Long); - continue; - case 4: - if (tag !== 34) { - break; - } - - message.playlistLocation = reader.string(); - continue; - case 9: - if (tag !== 74) { - break; - } - - message.livePlaylistLocation = reader.string(); - continue; - case 5: - if (tag !== 40) { - break; - } - - message.segmentCount = longToNumber(reader.int64() as Long); - continue; - case 6: - if (tag !== 48) { - break; - } - - message.startedAt = longToNumber(reader.int64() as Long); - continue; - case 7: - if (tag !== 56) { - break; - } - - message.endedAt = longToNumber(reader.int64() as Long); - continue; - case 10: - if (tag !== 82) { - break; - } - - message.dataEventLocation = reader.string(); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): SegmentsInfo { - return { - playlistName: isSet(object.playlistName) ? globalThis.String(object.playlistName) : "", - livePlaylistName: isSet(object.livePlaylistName) ? globalThis.String(object.livePlaylistName) : "", - duration: isSet(object.duration) ? globalThis.Number(object.duration) : 0, - size: isSet(object.size) ? globalThis.Number(object.size) : 0, - playlistLocation: isSet(object.playlistLocation) ? globalThis.String(object.playlistLocation) : "", - livePlaylistLocation: isSet(object.livePlaylistLocation) ? globalThis.String(object.livePlaylistLocation) : "", - segmentCount: isSet(object.segmentCount) ? globalThis.Number(object.segmentCount) : 0, - startedAt: isSet(object.startedAt) ? globalThis.Number(object.startedAt) : 0, - endedAt: isSet(object.endedAt) ? globalThis.Number(object.endedAt) : 0, - dataEventLocation: isSet(object.dataEventLocation) ? globalThis.String(object.dataEventLocation) : "", - }; - }, - - toJSON(message: SegmentsInfo): unknown { - const obj: any = {}; - if (message.playlistName !== undefined && message.playlistName !== "") { - obj.playlistName = message.playlistName; - } - if (message.livePlaylistName !== undefined && message.livePlaylistName !== "") { - obj.livePlaylistName = message.livePlaylistName; - } - if (message.duration !== undefined && message.duration !== 0) { - obj.duration = Math.round(message.duration); - } - if (message.size !== undefined && message.size !== 0) { - obj.size = Math.round(message.size); - } - if (message.playlistLocation !== undefined && message.playlistLocation !== "") { - obj.playlistLocation = message.playlistLocation; - } - if (message.livePlaylistLocation !== undefined && message.livePlaylistLocation !== "") { - obj.livePlaylistLocation = message.livePlaylistLocation; - } - if (message.segmentCount !== undefined && message.segmentCount !== 0) { - obj.segmentCount = Math.round(message.segmentCount); - } - if (message.startedAt !== undefined && message.startedAt !== 0) { - obj.startedAt = Math.round(message.startedAt); - } - if (message.endedAt !== undefined && message.endedAt !== 0) { - obj.endedAt = Math.round(message.endedAt); - } - if (message.dataEventLocation !== undefined && message.dataEventLocation !== "") { - obj.dataEventLocation = message.dataEventLocation; - } - return obj; - }, - - create, I>>(base?: I): SegmentsInfo { - return SegmentsInfo.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): SegmentsInfo { - const message = createBaseSegmentsInfo(); - message.playlistName = object.playlistName ?? ""; - message.livePlaylistName = object.livePlaylistName ?? ""; - message.duration = object.duration ?? 0; - message.size = object.size ?? 0; - message.playlistLocation = object.playlistLocation ?? ""; - message.livePlaylistLocation = object.livePlaylistLocation ?? ""; - message.segmentCount = object.segmentCount ?? 0; - message.startedAt = object.startedAt ?? 0; - message.endedAt = object.endedAt ?? 0; - message.dataEventLocation = object.dataEventLocation ?? ""; - return message; - }, -}; - -function createBaseImagesInfo(): ImagesInfo { - return { imageCount: 0, startedAt: 0, endedAt: 0 }; -} - -export const ImagesInfo = { - encode(message: ImagesInfo, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.imageCount !== undefined && message.imageCount !== 0) { - writer.uint32(8).int64(message.imageCount); - } - if (message.startedAt !== undefined && message.startedAt !== 0) { - writer.uint32(16).int64(message.startedAt); - } - if (message.endedAt !== undefined && message.endedAt !== 0) { - writer.uint32(24).int64(message.endedAt); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): ImagesInfo { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseImagesInfo(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 8) { - break; - } - - message.imageCount = longToNumber(reader.int64() as Long); - continue; - case 2: - if (tag !== 16) { - break; - } - - message.startedAt = longToNumber(reader.int64() as Long); - continue; - case 3: - if (tag !== 24) { - break; - } - - message.endedAt = longToNumber(reader.int64() as Long); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): ImagesInfo { - return { - imageCount: isSet(object.imageCount) ? globalThis.Number(object.imageCount) : 0, - startedAt: isSet(object.startedAt) ? globalThis.Number(object.startedAt) : 0, - endedAt: isSet(object.endedAt) ? globalThis.Number(object.endedAt) : 0, - }; - }, - - toJSON(message: ImagesInfo): unknown { - const obj: any = {}; - if (message.imageCount !== undefined && message.imageCount !== 0) { - obj.imageCount = Math.round(message.imageCount); - } - if (message.startedAt !== undefined && message.startedAt !== 0) { - obj.startedAt = Math.round(message.startedAt); - } - if (message.endedAt !== undefined && message.endedAt !== 0) { - obj.endedAt = Math.round(message.endedAt); - } - return obj; - }, - - create, I>>(base?: I): ImagesInfo { - return ImagesInfo.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): ImagesInfo { - const message = createBaseImagesInfo(); - message.imageCount = object.imageCount ?? 0; - message.startedAt = object.startedAt ?? 0; - message.endedAt = object.endedAt ?? 0; - return message; - }, -}; - -function createBaseAutoParticipantEgress(): AutoParticipantEgress { - return { preset: undefined, advanced: undefined, fileOutputs: [], segmentOutputs: [] }; -} - -export const AutoParticipantEgress = { - encode(message: AutoParticipantEgress, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.preset !== undefined) { - writer.uint32(8).int32(message.preset); - } - if (message.advanced !== undefined) { - EncodingOptions.encode(message.advanced, writer.uint32(18).fork()).ldelim(); - } - if (message.fileOutputs !== undefined && message.fileOutputs.length !== 0) { - for (const v of message.fileOutputs) { - EncodedFileOutput.encode(v!, writer.uint32(26).fork()).ldelim(); - } - } - if (message.segmentOutputs !== undefined && message.segmentOutputs.length !== 0) { - for (const v of message.segmentOutputs) { - SegmentedFileOutput.encode(v!, writer.uint32(34).fork()).ldelim(); - } - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): AutoParticipantEgress { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseAutoParticipantEgress(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 8) { - break; - } - - message.preset = reader.int32() as any; - continue; - case 2: - if (tag !== 18) { - break; - } - - message.advanced = EncodingOptions.decode(reader, reader.uint32()); - continue; - case 3: - if (tag !== 26) { - break; - } - - message.fileOutputs!.push(EncodedFileOutput.decode(reader, reader.uint32())); - continue; - case 4: - if (tag !== 34) { - break; - } - - message.segmentOutputs!.push(SegmentedFileOutput.decode(reader, reader.uint32())); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): AutoParticipantEgress { - return { - preset: isSet(object.preset) ? encodingOptionsPresetFromJSON(object.preset) : undefined, - advanced: isSet(object.advanced) ? EncodingOptions.fromJSON(object.advanced) : undefined, - fileOutputs: globalThis.Array.isArray(object?.fileOutputs) - ? object.fileOutputs.map((e: any) => EncodedFileOutput.fromJSON(e)) - : [], - segmentOutputs: globalThis.Array.isArray(object?.segmentOutputs) - ? object.segmentOutputs.map((e: any) => SegmentedFileOutput.fromJSON(e)) - : [], - }; - }, - - toJSON(message: AutoParticipantEgress): unknown { - const obj: any = {}; - if (message.preset !== undefined) { - obj.preset = encodingOptionsPresetToJSON(message.preset); - } - if (message.advanced !== undefined) { - obj.advanced = EncodingOptions.toJSON(message.advanced); - } - if (message.fileOutputs?.length) { - obj.fileOutputs = message.fileOutputs.map((e) => EncodedFileOutput.toJSON(e)); - } - if (message.segmentOutputs?.length) { - obj.segmentOutputs = message.segmentOutputs.map((e) => SegmentedFileOutput.toJSON(e)); - } - return obj; - }, - - create, I>>(base?: I): AutoParticipantEgress { - return AutoParticipantEgress.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): AutoParticipantEgress { - const message = createBaseAutoParticipantEgress(); - message.preset = object.preset ?? undefined; - message.advanced = (object.advanced !== undefined && object.advanced !== null) - ? EncodingOptions.fromPartial(object.advanced) - : undefined; - message.fileOutputs = object.fileOutputs?.map((e) => EncodedFileOutput.fromPartial(e)) || []; - message.segmentOutputs = object.segmentOutputs?.map((e) => SegmentedFileOutput.fromPartial(e)) || []; - return message; - }, -}; - -function createBaseAutoTrackEgress(): AutoTrackEgress { - return { filepath: "", disableManifest: false, s3: undefined, gcp: undefined, azure: undefined }; -} - -export const AutoTrackEgress = { - encode(message: AutoTrackEgress, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.filepath !== undefined && message.filepath !== "") { - writer.uint32(10).string(message.filepath); - } - if (message.disableManifest === true) { - writer.uint32(40).bool(message.disableManifest); - } - if (message.s3 !== undefined) { - S3Upload.encode(message.s3, writer.uint32(18).fork()).ldelim(); - } - if (message.gcp !== undefined) { - GCPUpload.encode(message.gcp, writer.uint32(26).fork()).ldelim(); - } - if (message.azure !== undefined) { - AzureBlobUpload.encode(message.azure, writer.uint32(34).fork()).ldelim(); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): AutoTrackEgress { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseAutoTrackEgress(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.filepath = reader.string(); - continue; - case 5: - if (tag !== 40) { - break; - } - - message.disableManifest = reader.bool(); - continue; - case 2: - if (tag !== 18) { - break; - } - - message.s3 = S3Upload.decode(reader, reader.uint32()); - continue; - case 3: - if (tag !== 26) { - break; - } - - message.gcp = GCPUpload.decode(reader, reader.uint32()); - continue; - case 4: - if (tag !== 34) { - break; - } - - message.azure = AzureBlobUpload.decode(reader, reader.uint32()); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): AutoTrackEgress { - return { - filepath: isSet(object.filepath) ? globalThis.String(object.filepath) : "", - disableManifest: isSet(object.disableManifest) ? globalThis.Boolean(object.disableManifest) : false, - s3: isSet(object.s3) ? S3Upload.fromJSON(object.s3) : undefined, - gcp: isSet(object.gcp) ? GCPUpload.fromJSON(object.gcp) : undefined, - azure: isSet(object.azure) ? AzureBlobUpload.fromJSON(object.azure) : undefined, - }; - }, - - toJSON(message: AutoTrackEgress): unknown { - const obj: any = {}; - if (message.filepath !== undefined && message.filepath !== "") { - obj.filepath = message.filepath; - } - if (message.disableManifest === true) { - obj.disableManifest = message.disableManifest; - } - if (message.s3 !== undefined) { - obj.s3 = S3Upload.toJSON(message.s3); - } - if (message.gcp !== undefined) { - obj.gcp = GCPUpload.toJSON(message.gcp); - } - if (message.azure !== undefined) { - obj.azure = AzureBlobUpload.toJSON(message.azure); - } - return obj; - }, - - create, I>>(base?: I): AutoTrackEgress { - return AutoTrackEgress.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): AutoTrackEgress { - const message = createBaseAutoTrackEgress(); - message.filepath = object.filepath ?? ""; - message.disableManifest = object.disableManifest ?? false; - message.s3 = (object.s3 !== undefined && object.s3 !== null) ? S3Upload.fromPartial(object.s3) : undefined; - message.gcp = (object.gcp !== undefined && object.gcp !== null) ? GCPUpload.fromPartial(object.gcp) : undefined; - message.azure = (object.azure !== undefined && object.azure !== null) - ? AzureBlobUpload.fromPartial(object.azure) - : undefined; - return message; - }, -}; - -export interface Egress { - /** start recording or streaming a room, participant, or tracks */ - StartRoomCompositeEgress(request: RoomCompositeEgressRequest): Promise; - StartWebEgress(request: WebEgressRequest): Promise; - StartParticipantEgress(request: ParticipantEgressRequest): Promise; - StartTrackCompositeEgress(request: TrackCompositeEgressRequest): Promise; - StartTrackEgress(request: TrackEgressRequest): Promise; - /** update web composite layout */ - UpdateLayout(request: UpdateLayoutRequest): Promise; - /** add or remove stream endpoints */ - UpdateStream(request: UpdateStreamRequest): Promise; - /** add or remove outputs */ - UpdateOutputs(request: UpdateOutputsRequest): Promise; - /** list available egress */ - ListEgress(request: ListEgressRequest): Promise; - /** stop a recording or stream */ - StopEgress(request: StopEgressRequest): Promise; -} - -type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined; - -export type DeepPartial = T extends Builtin ? T - : T extends globalThis.Array ? globalThis.Array> - : T extends ReadonlyArray ? ReadonlyArray> - : T extends {} ? { [K in keyof T]?: DeepPartial } - : Partial; - -type KeysOfUnion = T extends T ? keyof T : never; -export type Exact = P extends Builtin ? P - : P & { [K in keyof P]: Exact } & { [K in Exclude>]: never }; - -function longToNumber(long: Long): number { - if (long.gt(globalThis.Number.MAX_SAFE_INTEGER)) { - throw new globalThis.Error("Value is larger than Number.MAX_SAFE_INTEGER"); - } - return long.toNumber(); -} - -if (_m0.util.Long !== Long) { - _m0.util.Long = Long as any; - _m0.configure(); -} - -function isObject(value: any): boolean { - return typeof value === "object" && value !== null; -} - -function isSet(value: any): boolean { - return value !== null && value !== undefined; -} diff --git a/src/proto/livekit_egress_pb.ts b/src/proto/livekit_egress_pb.ts new file mode 100644 index 00000000..a6923d24 --- /dev/null +++ b/src/proto/livekit_egress_pb.ts @@ -0,0 +1,2542 @@ +// Copyright 2023 LiveKit, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// @generated by protoc-gen-es v1.4.2 with parameter "target=ts" +// @generated from file livekit_egress.proto (package livekit, syntax proto3) +/* eslint-disable */ +// @ts-nocheck + +import type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from "@bufbuild/protobuf"; +import { Message, proto3, protoInt64 } from "@bufbuild/protobuf"; +import { AudioCodec, ImageCodec, VideoCodec } from "./livekit_models_pb.js"; + +/** + * @generated from enum livekit.EncodedFileType + */ +export enum EncodedFileType { + /** + * file type chosen based on codecs + * + * @generated from enum value: DEFAULT_FILETYPE = 0; + */ + DEFAULT_FILETYPE = 0, + + /** + * @generated from enum value: MP4 = 1; + */ + MP4 = 1, + + /** + * @generated from enum value: OGG = 2; + */ + OGG = 2, +} +// Retrieve enum metadata with: proto3.getEnumType(EncodedFileType) +proto3.util.setEnumType(EncodedFileType, "livekit.EncodedFileType", [ + { no: 0, name: "DEFAULT_FILETYPE" }, + { no: 1, name: "MP4" }, + { no: 2, name: "OGG" }, +]); + +/** + * @generated from enum livekit.SegmentedFileProtocol + */ +export enum SegmentedFileProtocol { + /** + * @generated from enum value: DEFAULT_SEGMENTED_FILE_PROTOCOL = 0; + */ + DEFAULT_SEGMENTED_FILE_PROTOCOL = 0, + + /** + * @generated from enum value: HLS_PROTOCOL = 1; + */ + HLS_PROTOCOL = 1, +} +// Retrieve enum metadata with: proto3.getEnumType(SegmentedFileProtocol) +proto3.util.setEnumType(SegmentedFileProtocol, "livekit.SegmentedFileProtocol", [ + { no: 0, name: "DEFAULT_SEGMENTED_FILE_PROTOCOL" }, + { no: 1, name: "HLS_PROTOCOL" }, +]); + +/** + * @generated from enum livekit.SegmentedFileSuffix + */ +export enum SegmentedFileSuffix { + /** + * @generated from enum value: INDEX = 0; + */ + INDEX = 0, + + /** + * @generated from enum value: TIMESTAMP = 1; + */ + TIMESTAMP = 1, +} +// Retrieve enum metadata with: proto3.getEnumType(SegmentedFileSuffix) +proto3.util.setEnumType(SegmentedFileSuffix, "livekit.SegmentedFileSuffix", [ + { no: 0, name: "INDEX" }, + { no: 1, name: "TIMESTAMP" }, +]); + +/** + * @generated from enum livekit.ImageFileSuffix + */ +export enum ImageFileSuffix { + /** + * @generated from enum value: IMAGE_SUFFIX_INDEX = 0; + */ + IMAGE_SUFFIX_INDEX = 0, + + /** + * @generated from enum value: IMAGE_SUFFIX_TIMESTAMP = 1; + */ + IMAGE_SUFFIX_TIMESTAMP = 1, +} +// Retrieve enum metadata with: proto3.getEnumType(ImageFileSuffix) +proto3.util.setEnumType(ImageFileSuffix, "livekit.ImageFileSuffix", [ + { no: 0, name: "IMAGE_SUFFIX_INDEX" }, + { no: 1, name: "IMAGE_SUFFIX_TIMESTAMP" }, +]); + +/** + * @generated from enum livekit.StreamProtocol + */ +export enum StreamProtocol { + /** + * protocol chosen based on urls + * + * @generated from enum value: DEFAULT_PROTOCOL = 0; + */ + DEFAULT_PROTOCOL = 0, + + /** + * @generated from enum value: RTMP = 1; + */ + RTMP = 1, +} +// Retrieve enum metadata with: proto3.getEnumType(StreamProtocol) +proto3.util.setEnumType(StreamProtocol, "livekit.StreamProtocol", [ + { no: 0, name: "DEFAULT_PROTOCOL" }, + { no: 1, name: "RTMP" }, +]); + +/** + * @generated from enum livekit.EncodingOptionsPreset + */ +export enum EncodingOptionsPreset { + /** + * 1280x720, 30fps, 3000kpbs, H.264_MAIN / OPUS + * + * @generated from enum value: H264_720P_30 = 0; + */ + H264_720P_30 = 0, + + /** + * 1280x720, 60fps, 4500kbps, H.264_MAIN / OPUS + * + * @generated from enum value: H264_720P_60 = 1; + */ + H264_720P_60 = 1, + + /** + * 1920x1080, 30fps, 4500kbps, H.264_MAIN / OPUS + * + * @generated from enum value: H264_1080P_30 = 2; + */ + H264_1080P_30 = 2, + + /** + * 1920x1080, 60fps, 6000kbps, H.264_MAIN / OPUS + * + * @generated from enum value: H264_1080P_60 = 3; + */ + H264_1080P_60 = 3, + + /** + * 720x1280, 30fps, 3000kpbs, H.264_MAIN / OPUS + * + * @generated from enum value: PORTRAIT_H264_720P_30 = 4; + */ + PORTRAIT_H264_720P_30 = 4, + + /** + * 720x1280, 60fps, 4500kbps, H.264_MAIN / OPUS + * + * @generated from enum value: PORTRAIT_H264_720P_60 = 5; + */ + PORTRAIT_H264_720P_60 = 5, + + /** + * 1080x1920, 30fps, 4500kbps, H.264_MAIN / OPUS + * + * @generated from enum value: PORTRAIT_H264_1080P_30 = 6; + */ + PORTRAIT_H264_1080P_30 = 6, + + /** + * 1080x1920, 60fps, 6000kbps, H.264_MAIN / OPUS + * + * @generated from enum value: PORTRAIT_H264_1080P_60 = 7; + */ + PORTRAIT_H264_1080P_60 = 7, +} +// Retrieve enum metadata with: proto3.getEnumType(EncodingOptionsPreset) +proto3.util.setEnumType(EncodingOptionsPreset, "livekit.EncodingOptionsPreset", [ + { no: 0, name: "H264_720P_30" }, + { no: 1, name: "H264_720P_60" }, + { no: 2, name: "H264_1080P_30" }, + { no: 3, name: "H264_1080P_60" }, + { no: 4, name: "PORTRAIT_H264_720P_30" }, + { no: 5, name: "PORTRAIT_H264_720P_60" }, + { no: 6, name: "PORTRAIT_H264_1080P_30" }, + { no: 7, name: "PORTRAIT_H264_1080P_60" }, +]); + +/** + * @generated from enum livekit.EgressStatus + */ +export enum EgressStatus { + /** + * @generated from enum value: EGRESS_STARTING = 0; + */ + EGRESS_STARTING = 0, + + /** + * @generated from enum value: EGRESS_ACTIVE = 1; + */ + EGRESS_ACTIVE = 1, + + /** + * @generated from enum value: EGRESS_ENDING = 2; + */ + EGRESS_ENDING = 2, + + /** + * @generated from enum value: EGRESS_COMPLETE = 3; + */ + EGRESS_COMPLETE = 3, + + /** + * @generated from enum value: EGRESS_FAILED = 4; + */ + EGRESS_FAILED = 4, + + /** + * @generated from enum value: EGRESS_ABORTED = 5; + */ + EGRESS_ABORTED = 5, + + /** + * @generated from enum value: EGRESS_LIMIT_REACHED = 6; + */ + EGRESS_LIMIT_REACHED = 6, +} +// Retrieve enum metadata with: proto3.getEnumType(EgressStatus) +proto3.util.setEnumType(EgressStatus, "livekit.EgressStatus", [ + { no: 0, name: "EGRESS_STARTING" }, + { no: 1, name: "EGRESS_ACTIVE" }, + { no: 2, name: "EGRESS_ENDING" }, + { no: 3, name: "EGRESS_COMPLETE" }, + { no: 4, name: "EGRESS_FAILED" }, + { no: 5, name: "EGRESS_ABORTED" }, + { no: 6, name: "EGRESS_LIMIT_REACHED" }, +]); + +/** + * composite using a web browser + * + * @generated from message livekit.RoomCompositeEgressRequest + */ +export class RoomCompositeEgressRequest extends Message { + /** + * required + * + * @generated from field: string room_name = 1; + */ + roomName = ""; + + /** + * (optional) + * + * @generated from field: string layout = 2; + */ + layout = ""; + + /** + * (default false) + * + * @generated from field: bool audio_only = 3; + */ + audioOnly = false; + + /** + * (default false) + * + * @generated from field: bool video_only = 4; + */ + videoOnly = false; + + /** + * template base url (default https://recorder.livekit.io) + * + * @generated from field: string custom_base_url = 5; + */ + customBaseUrl = ""; + + /** + * deprecated (use _output fields) + * + * @generated from oneof livekit.RoomCompositeEgressRequest.output + */ + output: { + /** + * @generated from field: livekit.EncodedFileOutput file = 6 [deprecated = true]; + * @deprecated + */ + value: EncodedFileOutput; + case: "file"; + } | { + /** + * @generated from field: livekit.StreamOutput stream = 7 [deprecated = true]; + * @deprecated + */ + value: StreamOutput; + case: "stream"; + } | { + /** + * @generated from field: livekit.SegmentedFileOutput segments = 10 [deprecated = true]; + * @deprecated + */ + value: SegmentedFileOutput; + case: "segments"; + } | { case: undefined; value?: undefined } = { case: undefined }; + + /** + * @generated from oneof livekit.RoomCompositeEgressRequest.options + */ + options: { + /** + * (default H264_720P_30) + * + * @generated from field: livekit.EncodingOptionsPreset preset = 8; + */ + value: EncodingOptionsPreset; + case: "preset"; + } | { + /** + * (optional) + * + * @generated from field: livekit.EncodingOptions advanced = 9; + */ + value: EncodingOptions; + case: "advanced"; + } | { case: undefined; value?: undefined } = { case: undefined }; + + /** + * @generated from field: repeated livekit.EncodedFileOutput file_outputs = 11; + */ + fileOutputs: EncodedFileOutput[] = []; + + /** + * @generated from field: repeated livekit.StreamOutput stream_outputs = 12; + */ + streamOutputs: StreamOutput[] = []; + + /** + * @generated from field: repeated livekit.SegmentedFileOutput segment_outputs = 13; + */ + segmentOutputs: SegmentedFileOutput[] = []; + + /** + * @generated from field: repeated livekit.ImageOutput image_outputs = 14; + */ + imageOutputs: ImageOutput[] = []; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "livekit.RoomCompositeEgressRequest"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "room_name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "layout", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 3, name: "audio_only", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, + { no: 4, name: "video_only", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, + { no: 5, name: "custom_base_url", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 6, name: "file", kind: "message", T: EncodedFileOutput, oneof: "output" }, + { no: 7, name: "stream", kind: "message", T: StreamOutput, oneof: "output" }, + { no: 10, name: "segments", kind: "message", T: SegmentedFileOutput, oneof: "output" }, + { no: 8, name: "preset", kind: "enum", T: proto3.getEnumType(EncodingOptionsPreset), oneof: "options" }, + { no: 9, name: "advanced", kind: "message", T: EncodingOptions, oneof: "options" }, + { no: 11, name: "file_outputs", kind: "message", T: EncodedFileOutput, repeated: true }, + { no: 12, name: "stream_outputs", kind: "message", T: StreamOutput, repeated: true }, + { no: 13, name: "segment_outputs", kind: "message", T: SegmentedFileOutput, repeated: true }, + { no: 14, name: "image_outputs", kind: "message", T: ImageOutput, repeated: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): RoomCompositeEgressRequest { + return new RoomCompositeEgressRequest().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): RoomCompositeEgressRequest { + return new RoomCompositeEgressRequest().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): RoomCompositeEgressRequest { + return new RoomCompositeEgressRequest().fromJsonString(jsonString, options); + } + + static equals(a: RoomCompositeEgressRequest | PlainMessage | undefined, b: RoomCompositeEgressRequest | PlainMessage | undefined): boolean { + return proto3.util.equals(RoomCompositeEgressRequest, a, b); + } +} + +/** + * record any website + * + * @generated from message livekit.WebEgressRequest + */ +export class WebEgressRequest extends Message { + /** + * @generated from field: string url = 1; + */ + url = ""; + + /** + * @generated from field: bool audio_only = 2; + */ + audioOnly = false; + + /** + * @generated from field: bool video_only = 3; + */ + videoOnly = false; + + /** + * @generated from field: bool await_start_signal = 12; + */ + awaitStartSignal = false; + + /** + * deprecated (use _output fields) + * + * @generated from oneof livekit.WebEgressRequest.output + */ + output: { + /** + * @generated from field: livekit.EncodedFileOutput file = 4 [deprecated = true]; + * @deprecated + */ + value: EncodedFileOutput; + case: "file"; + } | { + /** + * @generated from field: livekit.StreamOutput stream = 5 [deprecated = true]; + * @deprecated + */ + value: StreamOutput; + case: "stream"; + } | { + /** + * @generated from field: livekit.SegmentedFileOutput segments = 6 [deprecated = true]; + * @deprecated + */ + value: SegmentedFileOutput; + case: "segments"; + } | { case: undefined; value?: undefined } = { case: undefined }; + + /** + * @generated from oneof livekit.WebEgressRequest.options + */ + options: { + /** + * @generated from field: livekit.EncodingOptionsPreset preset = 7; + */ + value: EncodingOptionsPreset; + case: "preset"; + } | { + /** + * @generated from field: livekit.EncodingOptions advanced = 8; + */ + value: EncodingOptions; + case: "advanced"; + } | { case: undefined; value?: undefined } = { case: undefined }; + + /** + * @generated from field: repeated livekit.EncodedFileOutput file_outputs = 9; + */ + fileOutputs: EncodedFileOutput[] = []; + + /** + * @generated from field: repeated livekit.StreamOutput stream_outputs = 10; + */ + streamOutputs: StreamOutput[] = []; + + /** + * @generated from field: repeated livekit.SegmentedFileOutput segment_outputs = 11; + */ + segmentOutputs: SegmentedFileOutput[] = []; + + /** + * @generated from field: repeated livekit.ImageOutput image_outputs = 13; + */ + imageOutputs: ImageOutput[] = []; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "livekit.WebEgressRequest"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "url", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "audio_only", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, + { no: 3, name: "video_only", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, + { no: 12, name: "await_start_signal", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, + { no: 4, name: "file", kind: "message", T: EncodedFileOutput, oneof: "output" }, + { no: 5, name: "stream", kind: "message", T: StreamOutput, oneof: "output" }, + { no: 6, name: "segments", kind: "message", T: SegmentedFileOutput, oneof: "output" }, + { no: 7, name: "preset", kind: "enum", T: proto3.getEnumType(EncodingOptionsPreset), oneof: "options" }, + { no: 8, name: "advanced", kind: "message", T: EncodingOptions, oneof: "options" }, + { no: 9, name: "file_outputs", kind: "message", T: EncodedFileOutput, repeated: true }, + { no: 10, name: "stream_outputs", kind: "message", T: StreamOutput, repeated: true }, + { no: 11, name: "segment_outputs", kind: "message", T: SegmentedFileOutput, repeated: true }, + { no: 13, name: "image_outputs", kind: "message", T: ImageOutput, repeated: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): WebEgressRequest { + return new WebEgressRequest().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): WebEgressRequest { + return new WebEgressRequest().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): WebEgressRequest { + return new WebEgressRequest().fromJsonString(jsonString, options); + } + + static equals(a: WebEgressRequest | PlainMessage | undefined, b: WebEgressRequest | PlainMessage | undefined): boolean { + return proto3.util.equals(WebEgressRequest, a, b); + } +} + +/** + * record audio and video from a single participant + * + * @generated from message livekit.ParticipantEgressRequest + */ +export class ParticipantEgressRequest extends Message { + /** + * required + * + * @generated from field: string room_name = 1; + */ + roomName = ""; + + /** + * required + * + * @generated from field: string identity = 2; + */ + identity = ""; + + /** + * (default false) + * + * @generated from field: bool screen_share = 3; + */ + screenShare = false; + + /** + * @generated from oneof livekit.ParticipantEgressRequest.options + */ + options: { + /** + * (default H264_720P_30) + * + * @generated from field: livekit.EncodingOptionsPreset preset = 4; + */ + value: EncodingOptionsPreset; + case: "preset"; + } | { + /** + * (optional) + * + * @generated from field: livekit.EncodingOptions advanced = 5; + */ + value: EncodingOptions; + case: "advanced"; + } | { case: undefined; value?: undefined } = { case: undefined }; + + /** + * @generated from field: repeated livekit.EncodedFileOutput file_outputs = 6; + */ + fileOutputs: EncodedFileOutput[] = []; + + /** + * @generated from field: repeated livekit.StreamOutput stream_outputs = 7; + */ + streamOutputs: StreamOutput[] = []; + + /** + * @generated from field: repeated livekit.SegmentedFileOutput segment_outputs = 8; + */ + segmentOutputs: SegmentedFileOutput[] = []; + + /** + * @generated from field: repeated livekit.ImageOutput image_outputs = 9; + */ + imageOutputs: ImageOutput[] = []; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "livekit.ParticipantEgressRequest"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "room_name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "identity", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 3, name: "screen_share", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, + { no: 4, name: "preset", kind: "enum", T: proto3.getEnumType(EncodingOptionsPreset), oneof: "options" }, + { no: 5, name: "advanced", kind: "message", T: EncodingOptions, oneof: "options" }, + { no: 6, name: "file_outputs", kind: "message", T: EncodedFileOutput, repeated: true }, + { no: 7, name: "stream_outputs", kind: "message", T: StreamOutput, repeated: true }, + { no: 8, name: "segment_outputs", kind: "message", T: SegmentedFileOutput, repeated: true }, + { no: 9, name: "image_outputs", kind: "message", T: ImageOutput, repeated: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): ParticipantEgressRequest { + return new ParticipantEgressRequest().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): ParticipantEgressRequest { + return new ParticipantEgressRequest().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): ParticipantEgressRequest { + return new ParticipantEgressRequest().fromJsonString(jsonString, options); + } + + static equals(a: ParticipantEgressRequest | PlainMessage | undefined, b: ParticipantEgressRequest | PlainMessage | undefined): boolean { + return proto3.util.equals(ParticipantEgressRequest, a, b); + } +} + +/** + * containerize up to one audio and one video track + * + * @generated from message livekit.TrackCompositeEgressRequest + */ +export class TrackCompositeEgressRequest extends Message { + /** + * required + * + * @generated from field: string room_name = 1; + */ + roomName = ""; + + /** + * (optional) + * + * @generated from field: string audio_track_id = 2; + */ + audioTrackId = ""; + + /** + * (optional) + * + * @generated from field: string video_track_id = 3; + */ + videoTrackId = ""; + + /** + * deprecated (use _output fields) + * + * @generated from oneof livekit.TrackCompositeEgressRequest.output + */ + output: { + /** + * @generated from field: livekit.EncodedFileOutput file = 4 [deprecated = true]; + * @deprecated + */ + value: EncodedFileOutput; + case: "file"; + } | { + /** + * @generated from field: livekit.StreamOutput stream = 5 [deprecated = true]; + * @deprecated + */ + value: StreamOutput; + case: "stream"; + } | { + /** + * @generated from field: livekit.SegmentedFileOutput segments = 8 [deprecated = true]; + * @deprecated + */ + value: SegmentedFileOutput; + case: "segments"; + } | { case: undefined; value?: undefined } = { case: undefined }; + + /** + * @generated from oneof livekit.TrackCompositeEgressRequest.options + */ + options: { + /** + * (default H264_720P_30) + * + * @generated from field: livekit.EncodingOptionsPreset preset = 6; + */ + value: EncodingOptionsPreset; + case: "preset"; + } | { + /** + * (optional) + * + * @generated from field: livekit.EncodingOptions advanced = 7; + */ + value: EncodingOptions; + case: "advanced"; + } | { case: undefined; value?: undefined } = { case: undefined }; + + /** + * @generated from field: repeated livekit.EncodedFileOutput file_outputs = 11; + */ + fileOutputs: EncodedFileOutput[] = []; + + /** + * @generated from field: repeated livekit.StreamOutput stream_outputs = 12; + */ + streamOutputs: StreamOutput[] = []; + + /** + * @generated from field: repeated livekit.SegmentedFileOutput segment_outputs = 13; + */ + segmentOutputs: SegmentedFileOutput[] = []; + + /** + * @generated from field: repeated livekit.ImageOutput image_outputs = 14; + */ + imageOutputs: ImageOutput[] = []; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "livekit.TrackCompositeEgressRequest"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "room_name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "audio_track_id", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 3, name: "video_track_id", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 4, name: "file", kind: "message", T: EncodedFileOutput, oneof: "output" }, + { no: 5, name: "stream", kind: "message", T: StreamOutput, oneof: "output" }, + { no: 8, name: "segments", kind: "message", T: SegmentedFileOutput, oneof: "output" }, + { no: 6, name: "preset", kind: "enum", T: proto3.getEnumType(EncodingOptionsPreset), oneof: "options" }, + { no: 7, name: "advanced", kind: "message", T: EncodingOptions, oneof: "options" }, + { no: 11, name: "file_outputs", kind: "message", T: EncodedFileOutput, repeated: true }, + { no: 12, name: "stream_outputs", kind: "message", T: StreamOutput, repeated: true }, + { no: 13, name: "segment_outputs", kind: "message", T: SegmentedFileOutput, repeated: true }, + { no: 14, name: "image_outputs", kind: "message", T: ImageOutput, repeated: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): TrackCompositeEgressRequest { + return new TrackCompositeEgressRequest().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): TrackCompositeEgressRequest { + return new TrackCompositeEgressRequest().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): TrackCompositeEgressRequest { + return new TrackCompositeEgressRequest().fromJsonString(jsonString, options); + } + + static equals(a: TrackCompositeEgressRequest | PlainMessage | undefined, b: TrackCompositeEgressRequest | PlainMessage | undefined): boolean { + return proto3.util.equals(TrackCompositeEgressRequest, a, b); + } +} + +/** + * record tracks individually, without transcoding + * + * @generated from message livekit.TrackEgressRequest + */ +export class TrackEgressRequest extends Message { + /** + * required + * + * @generated from field: string room_name = 1; + */ + roomName = ""; + + /** + * required + * + * @generated from field: string track_id = 2; + */ + trackId = ""; + + /** + * required + * + * @generated from oneof livekit.TrackEgressRequest.output + */ + output: { + /** + * @generated from field: livekit.DirectFileOutput file = 3; + */ + value: DirectFileOutput; + case: "file"; + } | { + /** + * @generated from field: string websocket_url = 4; + */ + value: string; + case: "websocketUrl"; + } | { case: undefined; value?: undefined } = { case: undefined }; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "livekit.TrackEgressRequest"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "room_name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "track_id", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 3, name: "file", kind: "message", T: DirectFileOutput, oneof: "output" }, + { no: 4, name: "websocket_url", kind: "scalar", T: 9 /* ScalarType.STRING */, oneof: "output" }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): TrackEgressRequest { + return new TrackEgressRequest().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): TrackEgressRequest { + return new TrackEgressRequest().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): TrackEgressRequest { + return new TrackEgressRequest().fromJsonString(jsonString, options); + } + + static equals(a: TrackEgressRequest | PlainMessage | undefined, b: TrackEgressRequest | PlainMessage | undefined): boolean { + return proto3.util.equals(TrackEgressRequest, a, b); + } +} + +/** + * @generated from message livekit.EncodedFileOutput + */ +export class EncodedFileOutput extends Message { + /** + * (optional) + * + * @generated from field: livekit.EncodedFileType file_type = 1; + */ + fileType = EncodedFileType.DEFAULT_FILETYPE; + + /** + * see egress docs for templating (default {room_name}-{time}) + * + * @generated from field: string filepath = 2; + */ + filepath = ""; + + /** + * disable upload of manifest file (default false) + * + * @generated from field: bool disable_manifest = 6; + */ + disableManifest = false; + + /** + * @generated from oneof livekit.EncodedFileOutput.output + */ + output: { + /** + * @generated from field: livekit.S3Upload s3 = 3; + */ + value: S3Upload; + case: "s3"; + } | { + /** + * @generated from field: livekit.GCPUpload gcp = 4; + */ + value: GCPUpload; + case: "gcp"; + } | { + /** + * @generated from field: livekit.AzureBlobUpload azure = 5; + */ + value: AzureBlobUpload; + case: "azure"; + } | { + /** + * @generated from field: livekit.AliOSSUpload aliOSS = 7; + */ + value: AliOSSUpload; + case: "aliOSS"; + } | { case: undefined; value?: undefined } = { case: undefined }; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "livekit.EncodedFileOutput"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "file_type", kind: "enum", T: proto3.getEnumType(EncodedFileType) }, + { no: 2, name: "filepath", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 6, name: "disable_manifest", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, + { no: 3, name: "s3", kind: "message", T: S3Upload, oneof: "output" }, + { no: 4, name: "gcp", kind: "message", T: GCPUpload, oneof: "output" }, + { no: 5, name: "azure", kind: "message", T: AzureBlobUpload, oneof: "output" }, + { no: 7, name: "aliOSS", kind: "message", T: AliOSSUpload, oneof: "output" }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): EncodedFileOutput { + return new EncodedFileOutput().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): EncodedFileOutput { + return new EncodedFileOutput().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): EncodedFileOutput { + return new EncodedFileOutput().fromJsonString(jsonString, options); + } + + static equals(a: EncodedFileOutput | PlainMessage | undefined, b: EncodedFileOutput | PlainMessage | undefined): boolean { + return proto3.util.equals(EncodedFileOutput, a, b); + } +} + +/** + * Used to generate HLS segments or other kind of segmented output + * + * @generated from message livekit.SegmentedFileOutput + */ +export class SegmentedFileOutput extends Message { + /** + * (optional) + * + * @generated from field: livekit.SegmentedFileProtocol protocol = 1; + */ + protocol = SegmentedFileProtocol.DEFAULT_SEGMENTED_FILE_PROTOCOL; + + /** + * (optional) + * + * @generated from field: string filename_prefix = 2; + */ + filenamePrefix = ""; + + /** + * (optional) + * + * @generated from field: string playlist_name = 3; + */ + playlistName = ""; + + /** + * (optional, disabled if not provided). Path of a live playlist + * + * @generated from field: string live_playlist_name = 11; + */ + livePlaylistName = ""; + + /** + * in seconds (optional) + * + * @generated from field: uint32 segment_duration = 4; + */ + segmentDuration = 0; + + /** + * (optional, default INDEX) + * + * @generated from field: livekit.SegmentedFileSuffix filename_suffix = 10; + */ + filenameSuffix = SegmentedFileSuffix.INDEX; + + /** + * disable upload of manifest file (default false) + * + * @generated from field: bool disable_manifest = 8; + */ + disableManifest = false; + + /** + * required + * + * @generated from oneof livekit.SegmentedFileOutput.output + */ + output: { + /** + * @generated from field: livekit.S3Upload s3 = 5; + */ + value: S3Upload; + case: "s3"; + } | { + /** + * @generated from field: livekit.GCPUpload gcp = 6; + */ + value: GCPUpload; + case: "gcp"; + } | { + /** + * @generated from field: livekit.AzureBlobUpload azure = 7; + */ + value: AzureBlobUpload; + case: "azure"; + } | { + /** + * @generated from field: livekit.AliOSSUpload aliOSS = 9; + */ + value: AliOSSUpload; + case: "aliOSS"; + } | { case: undefined; value?: undefined } = { case: undefined }; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "livekit.SegmentedFileOutput"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "protocol", kind: "enum", T: proto3.getEnumType(SegmentedFileProtocol) }, + { no: 2, name: "filename_prefix", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 3, name: "playlist_name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 11, name: "live_playlist_name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 4, name: "segment_duration", kind: "scalar", T: 13 /* ScalarType.UINT32 */ }, + { no: 10, name: "filename_suffix", kind: "enum", T: proto3.getEnumType(SegmentedFileSuffix) }, + { no: 8, name: "disable_manifest", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, + { no: 5, name: "s3", kind: "message", T: S3Upload, oneof: "output" }, + { no: 6, name: "gcp", kind: "message", T: GCPUpload, oneof: "output" }, + { no: 7, name: "azure", kind: "message", T: AzureBlobUpload, oneof: "output" }, + { no: 9, name: "aliOSS", kind: "message", T: AliOSSUpload, oneof: "output" }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): SegmentedFileOutput { + return new SegmentedFileOutput().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): SegmentedFileOutput { + return new SegmentedFileOutput().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): SegmentedFileOutput { + return new SegmentedFileOutput().fromJsonString(jsonString, options); + } + + static equals(a: SegmentedFileOutput | PlainMessage | undefined, b: SegmentedFileOutput | PlainMessage | undefined): boolean { + return proto3.util.equals(SegmentedFileOutput, a, b); + } +} + +/** + * @generated from message livekit.DirectFileOutput + */ +export class DirectFileOutput extends Message { + /** + * see egress docs for templating (default {track_id}-{time}) + * + * @generated from field: string filepath = 1; + */ + filepath = ""; + + /** + * disable upload of manifest file (default false) + * + * @generated from field: bool disable_manifest = 5; + */ + disableManifest = false; + + /** + * @generated from oneof livekit.DirectFileOutput.output + */ + output: { + /** + * @generated from field: livekit.S3Upload s3 = 2; + */ + value: S3Upload; + case: "s3"; + } | { + /** + * @generated from field: livekit.GCPUpload gcp = 3; + */ + value: GCPUpload; + case: "gcp"; + } | { + /** + * @generated from field: livekit.AzureBlobUpload azure = 4; + */ + value: AzureBlobUpload; + case: "azure"; + } | { + /** + * @generated from field: livekit.AliOSSUpload aliOSS = 6; + */ + value: AliOSSUpload; + case: "aliOSS"; + } | { case: undefined; value?: undefined } = { case: undefined }; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "livekit.DirectFileOutput"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "filepath", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 5, name: "disable_manifest", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, + { no: 2, name: "s3", kind: "message", T: S3Upload, oneof: "output" }, + { no: 3, name: "gcp", kind: "message", T: GCPUpload, oneof: "output" }, + { no: 4, name: "azure", kind: "message", T: AzureBlobUpload, oneof: "output" }, + { no: 6, name: "aliOSS", kind: "message", T: AliOSSUpload, oneof: "output" }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): DirectFileOutput { + return new DirectFileOutput().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): DirectFileOutput { + return new DirectFileOutput().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): DirectFileOutput { + return new DirectFileOutput().fromJsonString(jsonString, options); + } + + static equals(a: DirectFileOutput | PlainMessage | undefined, b: DirectFileOutput | PlainMessage | undefined): boolean { + return proto3.util.equals(DirectFileOutput, a, b); + } +} + +/** + * @generated from message livekit.ImageOutput + */ +export class ImageOutput extends Message { + /** + * in seconds (required) + * + * @generated from field: uint32 capture_interval = 1; + */ + captureInterval = 0; + + /** + * (optional, defaults to track width) + * + * @generated from field: int32 width = 2; + */ + width = 0; + + /** + * (optional, defaults to track height) + * + * @generated from field: int32 height = 3; + */ + height = 0; + + /** + * (optional) + * + * @generated from field: string filename_prefix = 4; + */ + filenamePrefix = ""; + + /** + * (optional, default INDEX) + * + * @generated from field: livekit.ImageFileSuffix filename_suffix = 5; + */ + filenameSuffix = ImageFileSuffix.IMAGE_SUFFIX_INDEX; + + /** + * (optional) + * + * @generated from field: livekit.ImageCodec image_codec = 6; + */ + imageCodec = ImageCodec.IC_DEFAULT; + + /** + * disable upload of manifest file (default false) + * + * @generated from field: bool disable_manifest = 7; + */ + disableManifest = false; + + /** + * required + * + * @generated from oneof livekit.ImageOutput.output + */ + output: { + /** + * @generated from field: livekit.S3Upload s3 = 8; + */ + value: S3Upload; + case: "s3"; + } | { + /** + * @generated from field: livekit.GCPUpload gcp = 9; + */ + value: GCPUpload; + case: "gcp"; + } | { + /** + * @generated from field: livekit.AzureBlobUpload azure = 10; + */ + value: AzureBlobUpload; + case: "azure"; + } | { + /** + * @generated from field: livekit.AliOSSUpload aliOSS = 11; + */ + value: AliOSSUpload; + case: "aliOSS"; + } | { case: undefined; value?: undefined } = { case: undefined }; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "livekit.ImageOutput"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "capture_interval", kind: "scalar", T: 13 /* ScalarType.UINT32 */ }, + { no: 2, name: "width", kind: "scalar", T: 5 /* ScalarType.INT32 */ }, + { no: 3, name: "height", kind: "scalar", T: 5 /* ScalarType.INT32 */ }, + { no: 4, name: "filename_prefix", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 5, name: "filename_suffix", kind: "enum", T: proto3.getEnumType(ImageFileSuffix) }, + { no: 6, name: "image_codec", kind: "enum", T: proto3.getEnumType(ImageCodec) }, + { no: 7, name: "disable_manifest", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, + { no: 8, name: "s3", kind: "message", T: S3Upload, oneof: "output" }, + { no: 9, name: "gcp", kind: "message", T: GCPUpload, oneof: "output" }, + { no: 10, name: "azure", kind: "message", T: AzureBlobUpload, oneof: "output" }, + { no: 11, name: "aliOSS", kind: "message", T: AliOSSUpload, oneof: "output" }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): ImageOutput { + return new ImageOutput().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): ImageOutput { + return new ImageOutput().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): ImageOutput { + return new ImageOutput().fromJsonString(jsonString, options); + } + + static equals(a: ImageOutput | PlainMessage | undefined, b: ImageOutput | PlainMessage | undefined): boolean { + return proto3.util.equals(ImageOutput, a, b); + } +} + +/** + * @generated from message livekit.S3Upload + */ +export class S3Upload extends Message { + /** + * @generated from field: string access_key = 1; + */ + accessKey = ""; + + /** + * @generated from field: string secret = 2; + */ + secret = ""; + + /** + * @generated from field: string region = 3; + */ + region = ""; + + /** + * @generated from field: string endpoint = 4; + */ + endpoint = ""; + + /** + * @generated from field: string bucket = 5; + */ + bucket = ""; + + /** + * @generated from field: bool force_path_style = 6; + */ + forcePathStyle = false; + + /** + * @generated from field: map metadata = 7; + */ + metadata: { [key: string]: string } = {}; + + /** + * @generated from field: string tagging = 8; + */ + tagging = ""; + + /** + * Content-Disposition header + * + * @generated from field: string content_disposition = 9; + */ + contentDisposition = ""; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "livekit.S3Upload"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "access_key", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "secret", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 3, name: "region", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 4, name: "endpoint", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 5, name: "bucket", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 6, name: "force_path_style", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, + { no: 7, name: "metadata", kind: "map", K: 9 /* ScalarType.STRING */, V: {kind: "scalar", T: 9 /* ScalarType.STRING */} }, + { no: 8, name: "tagging", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 9, name: "content_disposition", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): S3Upload { + return new S3Upload().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): S3Upload { + return new S3Upload().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): S3Upload { + return new S3Upload().fromJsonString(jsonString, options); + } + + static equals(a: S3Upload | PlainMessage | undefined, b: S3Upload | PlainMessage | undefined): boolean { + return proto3.util.equals(S3Upload, a, b); + } +} + +/** + * @generated from message livekit.GCPUpload + */ +export class GCPUpload extends Message { + /** + * service account credentials serialized in JSON "credentials.json" + * + * @generated from field: string credentials = 1; + */ + credentials = ""; + + /** + * @generated from field: string bucket = 2; + */ + bucket = ""; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "livekit.GCPUpload"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "credentials", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "bucket", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): GCPUpload { + return new GCPUpload().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): GCPUpload { + return new GCPUpload().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): GCPUpload { + return new GCPUpload().fromJsonString(jsonString, options); + } + + static equals(a: GCPUpload | PlainMessage | undefined, b: GCPUpload | PlainMessage | undefined): boolean { + return proto3.util.equals(GCPUpload, a, b); + } +} + +/** + * @generated from message livekit.AzureBlobUpload + */ +export class AzureBlobUpload extends Message { + /** + * @generated from field: string account_name = 1; + */ + accountName = ""; + + /** + * @generated from field: string account_key = 2; + */ + accountKey = ""; + + /** + * @generated from field: string container_name = 3; + */ + containerName = ""; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "livekit.AzureBlobUpload"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "account_name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "account_key", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 3, name: "container_name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): AzureBlobUpload { + return new AzureBlobUpload().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): AzureBlobUpload { + return new AzureBlobUpload().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): AzureBlobUpload { + return new AzureBlobUpload().fromJsonString(jsonString, options); + } + + static equals(a: AzureBlobUpload | PlainMessage | undefined, b: AzureBlobUpload | PlainMessage | undefined): boolean { + return proto3.util.equals(AzureBlobUpload, a, b); + } +} + +/** + * @generated from message livekit.AliOSSUpload + */ +export class AliOSSUpload extends Message { + /** + * @generated from field: string access_key = 1; + */ + accessKey = ""; + + /** + * @generated from field: string secret = 2; + */ + secret = ""; + + /** + * @generated from field: string region = 3; + */ + region = ""; + + /** + * @generated from field: string endpoint = 4; + */ + endpoint = ""; + + /** + * @generated from field: string bucket = 5; + */ + bucket = ""; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "livekit.AliOSSUpload"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "access_key", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "secret", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 3, name: "region", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 4, name: "endpoint", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 5, name: "bucket", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): AliOSSUpload { + return new AliOSSUpload().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): AliOSSUpload { + return new AliOSSUpload().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): AliOSSUpload { + return new AliOSSUpload().fromJsonString(jsonString, options); + } + + static equals(a: AliOSSUpload | PlainMessage | undefined, b: AliOSSUpload | PlainMessage | undefined): boolean { + return proto3.util.equals(AliOSSUpload, a, b); + } +} + +/** + * @generated from message livekit.StreamOutput + */ +export class StreamOutput extends Message { + /** + * required + * + * @generated from field: livekit.StreamProtocol protocol = 1; + */ + protocol = StreamProtocol.DEFAULT_PROTOCOL; + + /** + * required + * + * @generated from field: repeated string urls = 2; + */ + urls: string[] = []; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "livekit.StreamOutput"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "protocol", kind: "enum", T: proto3.getEnumType(StreamProtocol) }, + { no: 2, name: "urls", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): StreamOutput { + return new StreamOutput().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): StreamOutput { + return new StreamOutput().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): StreamOutput { + return new StreamOutput().fromJsonString(jsonString, options); + } + + static equals(a: StreamOutput | PlainMessage | undefined, b: StreamOutput | PlainMessage | undefined): boolean { + return proto3.util.equals(StreamOutput, a, b); + } +} + +/** + * @generated from message livekit.EncodingOptions + */ +export class EncodingOptions extends Message { + /** + * (default 1920) + * + * @generated from field: int32 width = 1; + */ + width = 0; + + /** + * (default 1080) + * + * @generated from field: int32 height = 2; + */ + height = 0; + + /** + * (default 24) + * + * @generated from field: int32 depth = 3; + */ + depth = 0; + + /** + * (default 30) + * + * @generated from field: int32 framerate = 4; + */ + framerate = 0; + + /** + * (default OPUS) + * + * @generated from field: livekit.AudioCodec audio_codec = 5; + */ + audioCodec = AudioCodec.DEFAULT_AC; + + /** + * (default 128) + * + * @generated from field: int32 audio_bitrate = 6; + */ + audioBitrate = 0; + + /** + * quality setting on audio encoder + * + * @generated from field: int32 audio_quality = 11; + */ + audioQuality = 0; + + /** + * (default 44100) + * + * @generated from field: int32 audio_frequency = 7; + */ + audioFrequency = 0; + + /** + * (default H264_MAIN) + * + * @generated from field: livekit.VideoCodec video_codec = 8; + */ + videoCodec = VideoCodec.DEFAULT_VC; + + /** + * (default 4500) + * + * @generated from field: int32 video_bitrate = 9; + */ + videoBitrate = 0; + + /** + * quality setting on video encoder + * + * @generated from field: int32 video_quality = 12; + */ + videoQuality = 0; + + /** + * in seconds (default 4s for streaming, segment duration for segmented output, encoder default for files) + * + * @generated from field: double key_frame_interval = 10; + */ + keyFrameInterval = 0; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "livekit.EncodingOptions"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "width", kind: "scalar", T: 5 /* ScalarType.INT32 */ }, + { no: 2, name: "height", kind: "scalar", T: 5 /* ScalarType.INT32 */ }, + { no: 3, name: "depth", kind: "scalar", T: 5 /* ScalarType.INT32 */ }, + { no: 4, name: "framerate", kind: "scalar", T: 5 /* ScalarType.INT32 */ }, + { no: 5, name: "audio_codec", kind: "enum", T: proto3.getEnumType(AudioCodec) }, + { no: 6, name: "audio_bitrate", kind: "scalar", T: 5 /* ScalarType.INT32 */ }, + { no: 11, name: "audio_quality", kind: "scalar", T: 5 /* ScalarType.INT32 */ }, + { no: 7, name: "audio_frequency", kind: "scalar", T: 5 /* ScalarType.INT32 */ }, + { no: 8, name: "video_codec", kind: "enum", T: proto3.getEnumType(VideoCodec) }, + { no: 9, name: "video_bitrate", kind: "scalar", T: 5 /* ScalarType.INT32 */ }, + { no: 12, name: "video_quality", kind: "scalar", T: 5 /* ScalarType.INT32 */ }, + { no: 10, name: "key_frame_interval", kind: "scalar", T: 1 /* ScalarType.DOUBLE */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): EncodingOptions { + return new EncodingOptions().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): EncodingOptions { + return new EncodingOptions().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): EncodingOptions { + return new EncodingOptions().fromJsonString(jsonString, options); + } + + static equals(a: EncodingOptions | PlainMessage | undefined, b: EncodingOptions | PlainMessage | undefined): boolean { + return proto3.util.equals(EncodingOptions, a, b); + } +} + +/** + * @generated from message livekit.UpdateLayoutRequest + */ +export class UpdateLayoutRequest extends Message { + /** + * @generated from field: string egress_id = 1; + */ + egressId = ""; + + /** + * @generated from field: string layout = 2; + */ + layout = ""; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "livekit.UpdateLayoutRequest"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "egress_id", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "layout", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): UpdateLayoutRequest { + return new UpdateLayoutRequest().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): UpdateLayoutRequest { + return new UpdateLayoutRequest().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): UpdateLayoutRequest { + return new UpdateLayoutRequest().fromJsonString(jsonString, options); + } + + static equals(a: UpdateLayoutRequest | PlainMessage | undefined, b: UpdateLayoutRequest | PlainMessage | undefined): boolean { + return proto3.util.equals(UpdateLayoutRequest, a, b); + } +} + +/** + * @generated from message livekit.UpdateStreamRequest + */ +export class UpdateStreamRequest extends Message { + /** + * @generated from field: string egress_id = 1; + */ + egressId = ""; + + /** + * @generated from field: repeated string add_output_urls = 2; + */ + addOutputUrls: string[] = []; + + /** + * @generated from field: repeated string remove_output_urls = 3; + */ + removeOutputUrls: string[] = []; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "livekit.UpdateStreamRequest"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "egress_id", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "add_output_urls", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true }, + { no: 3, name: "remove_output_urls", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): UpdateStreamRequest { + return new UpdateStreamRequest().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): UpdateStreamRequest { + return new UpdateStreamRequest().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): UpdateStreamRequest { + return new UpdateStreamRequest().fromJsonString(jsonString, options); + } + + static equals(a: UpdateStreamRequest | PlainMessage | undefined, b: UpdateStreamRequest | PlainMessage | undefined): boolean { + return proto3.util.equals(UpdateStreamRequest, a, b); + } +} + +/** + * @generated from message livekit.ListEgressRequest + */ +export class ListEgressRequest extends Message { + /** + * (optional, filter by room name) + * + * @generated from field: string room_name = 1; + */ + roomName = ""; + + /** + * (optional, filter by egress ID) + * + * @generated from field: string egress_id = 2; + */ + egressId = ""; + + /** + * (optional, list active egress only) + * + * @generated from field: bool active = 3; + */ + active = false; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "livekit.ListEgressRequest"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "room_name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "egress_id", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 3, name: "active", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): ListEgressRequest { + return new ListEgressRequest().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): ListEgressRequest { + return new ListEgressRequest().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): ListEgressRequest { + return new ListEgressRequest().fromJsonString(jsonString, options); + } + + static equals(a: ListEgressRequest | PlainMessage | undefined, b: ListEgressRequest | PlainMessage | undefined): boolean { + return proto3.util.equals(ListEgressRequest, a, b); + } +} + +/** + * @generated from message livekit.ListEgressResponse + */ +export class ListEgressResponse extends Message { + /** + * @generated from field: repeated livekit.EgressInfo items = 1; + */ + items: EgressInfo[] = []; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "livekit.ListEgressResponse"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "items", kind: "message", T: EgressInfo, repeated: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): ListEgressResponse { + return new ListEgressResponse().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): ListEgressResponse { + return new ListEgressResponse().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): ListEgressResponse { + return new ListEgressResponse().fromJsonString(jsonString, options); + } + + static equals(a: ListEgressResponse | PlainMessage | undefined, b: ListEgressResponse | PlainMessage | undefined): boolean { + return proto3.util.equals(ListEgressResponse, a, b); + } +} + +/** + * @generated from message livekit.StopEgressRequest + */ +export class StopEgressRequest extends Message { + /** + * @generated from field: string egress_id = 1; + */ + egressId = ""; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "livekit.StopEgressRequest"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "egress_id", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): StopEgressRequest { + return new StopEgressRequest().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): StopEgressRequest { + return new StopEgressRequest().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): StopEgressRequest { + return new StopEgressRequest().fromJsonString(jsonString, options); + } + + static equals(a: StopEgressRequest | PlainMessage | undefined, b: StopEgressRequest | PlainMessage | undefined): boolean { + return proto3.util.equals(StopEgressRequest, a, b); + } +} + +/** + * @generated from message livekit.EgressInfo + */ +export class EgressInfo extends Message { + /** + * @generated from field: string egress_id = 1; + */ + egressId = ""; + + /** + * @generated from field: string room_id = 2; + */ + roomId = ""; + + /** + * @generated from field: string room_name = 13; + */ + roomName = ""; + + /** + * @generated from field: livekit.EgressStatus status = 3; + */ + status = EgressStatus.EGRESS_STARTING; + + /** + * @generated from field: int64 started_at = 10; + */ + startedAt = protoInt64.zero; + + /** + * @generated from field: int64 ended_at = 11; + */ + endedAt = protoInt64.zero; + + /** + * @generated from field: int64 updated_at = 18; + */ + updatedAt = protoInt64.zero; + + /** + * @generated from field: string error = 9; + */ + error = ""; + + /** + * @generated from oneof livekit.EgressInfo.request + */ + request: { + /** + * @generated from field: livekit.RoomCompositeEgressRequest room_composite = 4; + */ + value: RoomCompositeEgressRequest; + case: "roomComposite"; + } | { + /** + * @generated from field: livekit.WebEgressRequest web = 14; + */ + value: WebEgressRequest; + case: "web"; + } | { + /** + * @generated from field: livekit.ParticipantEgressRequest participant = 19; + */ + value: ParticipantEgressRequest; + case: "participant"; + } | { + /** + * @generated from field: livekit.TrackCompositeEgressRequest track_composite = 5; + */ + value: TrackCompositeEgressRequest; + case: "trackComposite"; + } | { + /** + * @generated from field: livekit.TrackEgressRequest track = 6; + */ + value: TrackEgressRequest; + case: "track"; + } | { case: undefined; value?: undefined } = { case: undefined }; + + /** + * deprecated (use _result fields) + * + * @generated from oneof livekit.EgressInfo.result + */ + result: { + /** + * @generated from field: livekit.StreamInfoList stream = 7 [deprecated = true]; + * @deprecated + */ + value: StreamInfoList; + case: "stream"; + } | { + /** + * @generated from field: livekit.FileInfo file = 8 [deprecated = true]; + * @deprecated + */ + value: FileInfo; + case: "file"; + } | { + /** + * @generated from field: livekit.SegmentsInfo segments = 12 [deprecated = true]; + * @deprecated + */ + value: SegmentsInfo; + case: "segments"; + } | { case: undefined; value?: undefined } = { case: undefined }; + + /** + * @generated from field: repeated livekit.StreamInfo stream_results = 15; + */ + streamResults: StreamInfo[] = []; + + /** + * @generated from field: repeated livekit.FileInfo file_results = 16; + */ + fileResults: FileInfo[] = []; + + /** + * @generated from field: repeated livekit.SegmentsInfo segment_results = 17; + */ + segmentResults: SegmentsInfo[] = []; + + /** + * @generated from field: repeated livekit.ImagesInfo image_results = 20; + */ + imageResults: ImagesInfo[] = []; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "livekit.EgressInfo"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "egress_id", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "room_id", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 13, name: "room_name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 3, name: "status", kind: "enum", T: proto3.getEnumType(EgressStatus) }, + { no: 10, name: "started_at", kind: "scalar", T: 3 /* ScalarType.INT64 */ }, + { no: 11, name: "ended_at", kind: "scalar", T: 3 /* ScalarType.INT64 */ }, + { no: 18, name: "updated_at", kind: "scalar", T: 3 /* ScalarType.INT64 */ }, + { no: 9, name: "error", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 4, name: "room_composite", kind: "message", T: RoomCompositeEgressRequest, oneof: "request" }, + { no: 14, name: "web", kind: "message", T: WebEgressRequest, oneof: "request" }, + { no: 19, name: "participant", kind: "message", T: ParticipantEgressRequest, oneof: "request" }, + { no: 5, name: "track_composite", kind: "message", T: TrackCompositeEgressRequest, oneof: "request" }, + { no: 6, name: "track", kind: "message", T: TrackEgressRequest, oneof: "request" }, + { no: 7, name: "stream", kind: "message", T: StreamInfoList, oneof: "result" }, + { no: 8, name: "file", kind: "message", T: FileInfo, oneof: "result" }, + { no: 12, name: "segments", kind: "message", T: SegmentsInfo, oneof: "result" }, + { no: 15, name: "stream_results", kind: "message", T: StreamInfo, repeated: true }, + { no: 16, name: "file_results", kind: "message", T: FileInfo, repeated: true }, + { no: 17, name: "segment_results", kind: "message", T: SegmentsInfo, repeated: true }, + { no: 20, name: "image_results", kind: "message", T: ImagesInfo, repeated: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): EgressInfo { + return new EgressInfo().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): EgressInfo { + return new EgressInfo().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): EgressInfo { + return new EgressInfo().fromJsonString(jsonString, options); + } + + static equals(a: EgressInfo | PlainMessage | undefined, b: EgressInfo | PlainMessage | undefined): boolean { + return proto3.util.equals(EgressInfo, a, b); + } +} + +/** + * @generated from message livekit.StreamInfoList + * @deprecated + */ +export class StreamInfoList extends Message { + /** + * @generated from field: repeated livekit.StreamInfo info = 1; + */ + info: StreamInfo[] = []; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "livekit.StreamInfoList"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "info", kind: "message", T: StreamInfo, repeated: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): StreamInfoList { + return new StreamInfoList().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): StreamInfoList { + return new StreamInfoList().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): StreamInfoList { + return new StreamInfoList().fromJsonString(jsonString, options); + } + + static equals(a: StreamInfoList | PlainMessage | undefined, b: StreamInfoList | PlainMessage | undefined): boolean { + return proto3.util.equals(StreamInfoList, a, b); + } +} + +/** + * @generated from message livekit.StreamInfo + */ +export class StreamInfo extends Message { + /** + * @generated from field: string url = 1; + */ + url = ""; + + /** + * @generated from field: int64 started_at = 2; + */ + startedAt = protoInt64.zero; + + /** + * @generated from field: int64 ended_at = 3; + */ + endedAt = protoInt64.zero; + + /** + * @generated from field: int64 duration = 4; + */ + duration = protoInt64.zero; + + /** + * @generated from field: livekit.StreamInfo.Status status = 5; + */ + status = StreamInfo_Status.ACTIVE; + + /** + * @generated from field: string error = 6; + */ + error = ""; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "livekit.StreamInfo"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "url", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "started_at", kind: "scalar", T: 3 /* ScalarType.INT64 */ }, + { no: 3, name: "ended_at", kind: "scalar", T: 3 /* ScalarType.INT64 */ }, + { no: 4, name: "duration", kind: "scalar", T: 3 /* ScalarType.INT64 */ }, + { no: 5, name: "status", kind: "enum", T: proto3.getEnumType(StreamInfo_Status) }, + { no: 6, name: "error", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): StreamInfo { + return new StreamInfo().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): StreamInfo { + return new StreamInfo().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): StreamInfo { + return new StreamInfo().fromJsonString(jsonString, options); + } + + static equals(a: StreamInfo | PlainMessage | undefined, b: StreamInfo | PlainMessage | undefined): boolean { + return proto3.util.equals(StreamInfo, a, b); + } +} + +/** + * @generated from enum livekit.StreamInfo.Status + */ +export enum StreamInfo_Status { + /** + * @generated from enum value: ACTIVE = 0; + */ + ACTIVE = 0, + + /** + * @generated from enum value: FINISHED = 1; + */ + FINISHED = 1, + + /** + * @generated from enum value: FAILED = 2; + */ + FAILED = 2, +} +// Retrieve enum metadata with: proto3.getEnumType(StreamInfo_Status) +proto3.util.setEnumType(StreamInfo_Status, "livekit.StreamInfo.Status", [ + { no: 0, name: "ACTIVE" }, + { no: 1, name: "FINISHED" }, + { no: 2, name: "FAILED" }, +]); + +/** + * @generated from message livekit.FileInfo + */ +export class FileInfo extends Message { + /** + * @generated from field: string filename = 1; + */ + filename = ""; + + /** + * @generated from field: int64 started_at = 2; + */ + startedAt = protoInt64.zero; + + /** + * @generated from field: int64 ended_at = 3; + */ + endedAt = protoInt64.zero; + + /** + * @generated from field: int64 duration = 6; + */ + duration = protoInt64.zero; + + /** + * @generated from field: int64 size = 4; + */ + size = protoInt64.zero; + + /** + * @generated from field: string location = 5; + */ + location = ""; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "livekit.FileInfo"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "filename", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "started_at", kind: "scalar", T: 3 /* ScalarType.INT64 */ }, + { no: 3, name: "ended_at", kind: "scalar", T: 3 /* ScalarType.INT64 */ }, + { no: 6, name: "duration", kind: "scalar", T: 3 /* ScalarType.INT64 */ }, + { no: 4, name: "size", kind: "scalar", T: 3 /* ScalarType.INT64 */ }, + { no: 5, name: "location", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): FileInfo { + return new FileInfo().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): FileInfo { + return new FileInfo().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): FileInfo { + return new FileInfo().fromJsonString(jsonString, options); + } + + static equals(a: FileInfo | PlainMessage | undefined, b: FileInfo | PlainMessage | undefined): boolean { + return proto3.util.equals(FileInfo, a, b); + } +} + +/** + * @generated from message livekit.SegmentsInfo + */ +export class SegmentsInfo extends Message { + /** + * @generated from field: string playlist_name = 1; + */ + playlistName = ""; + + /** + * @generated from field: string live_playlist_name = 8; + */ + livePlaylistName = ""; + + /** + * @generated from field: int64 duration = 2; + */ + duration = protoInt64.zero; + + /** + * @generated from field: int64 size = 3; + */ + size = protoInt64.zero; + + /** + * @generated from field: string playlist_location = 4; + */ + playlistLocation = ""; + + /** + * @generated from field: string live_playlist_location = 9; + */ + livePlaylistLocation = ""; + + /** + * @generated from field: int64 segment_count = 5; + */ + segmentCount = protoInt64.zero; + + /** + * @generated from field: int64 started_at = 6; + */ + startedAt = protoInt64.zero; + + /** + * @generated from field: int64 ended_at = 7; + */ + endedAt = protoInt64.zero; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "livekit.SegmentsInfo"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "playlist_name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 8, name: "live_playlist_name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "duration", kind: "scalar", T: 3 /* ScalarType.INT64 */ }, + { no: 3, name: "size", kind: "scalar", T: 3 /* ScalarType.INT64 */ }, + { no: 4, name: "playlist_location", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 9, name: "live_playlist_location", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 5, name: "segment_count", kind: "scalar", T: 3 /* ScalarType.INT64 */ }, + { no: 6, name: "started_at", kind: "scalar", T: 3 /* ScalarType.INT64 */ }, + { no: 7, name: "ended_at", kind: "scalar", T: 3 /* ScalarType.INT64 */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): SegmentsInfo { + return new SegmentsInfo().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): SegmentsInfo { + return new SegmentsInfo().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): SegmentsInfo { + return new SegmentsInfo().fromJsonString(jsonString, options); + } + + static equals(a: SegmentsInfo | PlainMessage | undefined, b: SegmentsInfo | PlainMessage | undefined): boolean { + return proto3.util.equals(SegmentsInfo, a, b); + } +} + +/** + * @generated from message livekit.ImagesInfo + */ +export class ImagesInfo extends Message { + /** + * @generated from field: int64 image_count = 1; + */ + imageCount = protoInt64.zero; + + /** + * @generated from field: int64 started_at = 2; + */ + startedAt = protoInt64.zero; + + /** + * @generated from field: int64 ended_at = 3; + */ + endedAt = protoInt64.zero; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "livekit.ImagesInfo"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "image_count", kind: "scalar", T: 3 /* ScalarType.INT64 */ }, + { no: 2, name: "started_at", kind: "scalar", T: 3 /* ScalarType.INT64 */ }, + { no: 3, name: "ended_at", kind: "scalar", T: 3 /* ScalarType.INT64 */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): ImagesInfo { + return new ImagesInfo().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): ImagesInfo { + return new ImagesInfo().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): ImagesInfo { + return new ImagesInfo().fromJsonString(jsonString, options); + } + + static equals(a: ImagesInfo | PlainMessage | undefined, b: ImagesInfo | PlainMessage | undefined): boolean { + return proto3.util.equals(ImagesInfo, a, b); + } +} + +/** + * @generated from message livekit.AutoParticipantEgress + */ +export class AutoParticipantEgress extends Message { + /** + * @generated from oneof livekit.AutoParticipantEgress.options + */ + options: { + /** + * (default H264_720P_30) + * + * @generated from field: livekit.EncodingOptionsPreset preset = 1; + */ + value: EncodingOptionsPreset; + case: "preset"; + } | { + /** + * (optional) + * + * @generated from field: livekit.EncodingOptions advanced = 2; + */ + value: EncodingOptions; + case: "advanced"; + } | { case: undefined; value?: undefined } = { case: undefined }; + + /** + * @generated from field: repeated livekit.EncodedFileOutput file_outputs = 3; + */ + fileOutputs: EncodedFileOutput[] = []; + + /** + * @generated from field: repeated livekit.SegmentedFileOutput segment_outputs = 4; + */ + segmentOutputs: SegmentedFileOutput[] = []; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "livekit.AutoParticipantEgress"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "preset", kind: "enum", T: proto3.getEnumType(EncodingOptionsPreset), oneof: "options" }, + { no: 2, name: "advanced", kind: "message", T: EncodingOptions, oneof: "options" }, + { no: 3, name: "file_outputs", kind: "message", T: EncodedFileOutput, repeated: true }, + { no: 4, name: "segment_outputs", kind: "message", T: SegmentedFileOutput, repeated: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): AutoParticipantEgress { + return new AutoParticipantEgress().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): AutoParticipantEgress { + return new AutoParticipantEgress().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): AutoParticipantEgress { + return new AutoParticipantEgress().fromJsonString(jsonString, options); + } + + static equals(a: AutoParticipantEgress | PlainMessage | undefined, b: AutoParticipantEgress | PlainMessage | undefined): boolean { + return proto3.util.equals(AutoParticipantEgress, a, b); + } +} + +/** + * @generated from message livekit.AutoTrackEgress + */ +export class AutoTrackEgress extends Message { + /** + * see docs for templating (default {track_id}-{time}) + * + * @generated from field: string filepath = 1; + */ + filepath = ""; + + /** + * disables upload of json manifest file (default false) + * + * @generated from field: bool disable_manifest = 5; + */ + disableManifest = false; + + /** + * @generated from oneof livekit.AutoTrackEgress.output + */ + output: { + /** + * @generated from field: livekit.S3Upload s3 = 2; + */ + value: S3Upload; + case: "s3"; + } | { + /** + * @generated from field: livekit.GCPUpload gcp = 3; + */ + value: GCPUpload; + case: "gcp"; + } | { + /** + * @generated from field: livekit.AzureBlobUpload azure = 4; + */ + value: AzureBlobUpload; + case: "azure"; + } | { case: undefined; value?: undefined } = { case: undefined }; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "livekit.AutoTrackEgress"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "filepath", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 5, name: "disable_manifest", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, + { no: 2, name: "s3", kind: "message", T: S3Upload, oneof: "output" }, + { no: 3, name: "gcp", kind: "message", T: GCPUpload, oneof: "output" }, + { no: 4, name: "azure", kind: "message", T: AzureBlobUpload, oneof: "output" }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): AutoTrackEgress { + return new AutoTrackEgress().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): AutoTrackEgress { + return new AutoTrackEgress().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): AutoTrackEgress { + return new AutoTrackEgress().fromJsonString(jsonString, options); + } + + static equals(a: AutoTrackEgress | PlainMessage | undefined, b: AutoTrackEgress | PlainMessage | undefined): boolean { + return proto3.util.equals(AutoTrackEgress, a, b); + } +} + diff --git a/src/proto/livekit_ingress.ts b/src/proto/livekit_ingress.ts deleted file mode 100644 index e238d537..00000000 --- a/src/proto/livekit_ingress.ts +++ /dev/null @@ -1,2070 +0,0 @@ -/* eslint-disable */ -import Long from "long"; -import _m0 from "protobufjs/minimal"; -import { - AudioCodec, - audioCodecFromJSON, - audioCodecToJSON, - TrackInfo, - TrackSource, - trackSourceFromJSON, - trackSourceToJSON, - VideoCodec, - videoCodecFromJSON, - videoCodecToJSON, - VideoLayer, -} from "./livekit_models"; - -export const protobufPackage = "livekit"; - -export enum IngressInput { - RTMP_INPUT = 0, - WHIP_INPUT = 1, - /** URL_INPUT - Pull from the provided URL. Only HTTP url are supported, serving either a single media file or a HLS stream */ - URL_INPUT = 2, - UNRECOGNIZED = -1, -} - -export function ingressInputFromJSON(object: any): IngressInput { - switch (object) { - case 0: - case "RTMP_INPUT": - return IngressInput.RTMP_INPUT; - case 1: - case "WHIP_INPUT": - return IngressInput.WHIP_INPUT; - case 2: - case "URL_INPUT": - return IngressInput.URL_INPUT; - case -1: - case "UNRECOGNIZED": - default: - return IngressInput.UNRECOGNIZED; - } -} - -export function ingressInputToJSON(object: IngressInput): string { - switch (object) { - case IngressInput.RTMP_INPUT: - return "RTMP_INPUT"; - case IngressInput.WHIP_INPUT: - return "WHIP_INPUT"; - case IngressInput.URL_INPUT: - return "URL_INPUT"; - case IngressInput.UNRECOGNIZED: - default: - return "UNRECOGNIZED"; - } -} - -export enum IngressAudioEncodingPreset { - /** OPUS_STEREO_96KBPS - OPUS, 2 channels, 96kbps */ - OPUS_STEREO_96KBPS = 0, - /** OPUS_MONO_64KBS - OPUS, 1 channel, 64kbps */ - OPUS_MONO_64KBS = 1, - UNRECOGNIZED = -1, -} - -export function ingressAudioEncodingPresetFromJSON(object: any): IngressAudioEncodingPreset { - switch (object) { - case 0: - case "OPUS_STEREO_96KBPS": - return IngressAudioEncodingPreset.OPUS_STEREO_96KBPS; - case 1: - case "OPUS_MONO_64KBS": - return IngressAudioEncodingPreset.OPUS_MONO_64KBS; - case -1: - case "UNRECOGNIZED": - default: - return IngressAudioEncodingPreset.UNRECOGNIZED; - } -} - -export function ingressAudioEncodingPresetToJSON(object: IngressAudioEncodingPreset): string { - switch (object) { - case IngressAudioEncodingPreset.OPUS_STEREO_96KBPS: - return "OPUS_STEREO_96KBPS"; - case IngressAudioEncodingPreset.OPUS_MONO_64KBS: - return "OPUS_MONO_64KBS"; - case IngressAudioEncodingPreset.UNRECOGNIZED: - default: - return "UNRECOGNIZED"; - } -} - -export enum IngressVideoEncodingPreset { - /** H264_720P_30FPS_3_LAYERS - 1280x720, 30fps, 1900kbps main layer, 3 layers total */ - H264_720P_30FPS_3_LAYERS = 0, - /** H264_1080P_30FPS_3_LAYERS - 1980x1080, 30fps, 3500kbps main layer, 3 layers total */ - H264_1080P_30FPS_3_LAYERS = 1, - /** H264_540P_25FPS_2_LAYERS - 960x540, 25fps, 1000kbps main layer, 2 layers total */ - H264_540P_25FPS_2_LAYERS = 2, - /** H264_720P_30FPS_1_LAYER - 1280x720, 30fps, 1900kbps, no simulcast */ - H264_720P_30FPS_1_LAYER = 3, - /** H264_1080P_30FPS_1_LAYER - 1980x1080, 30fps, 3500kbps, no simulcast */ - H264_1080P_30FPS_1_LAYER = 4, - /** H264_720P_30FPS_3_LAYERS_HIGH_MOTION - 1280x720, 30fps, 2500kbps main layer, 3 layers total, higher bitrate for high motion, harder to encode content */ - H264_720P_30FPS_3_LAYERS_HIGH_MOTION = 5, - /** H264_1080P_30FPS_3_LAYERS_HIGH_MOTION - 1980x1080, 30fps, 4500kbps main layer, 3 layers total, higher bitrate for high motion, harder to encode content */ - H264_1080P_30FPS_3_LAYERS_HIGH_MOTION = 6, - /** H264_540P_25FPS_2_LAYERS_HIGH_MOTION - 960x540, 25fps, 1300kbps main layer, 2 layers total, higher bitrate for high motion, harder to encode content */ - H264_540P_25FPS_2_LAYERS_HIGH_MOTION = 7, - /** H264_720P_30FPS_1_LAYER_HIGH_MOTION - 1280x720, 30fps, 2500kbps, no simulcast, higher bitrate for high motion, harder to encode content */ - H264_720P_30FPS_1_LAYER_HIGH_MOTION = 8, - /** H264_1080P_30FPS_1_LAYER_HIGH_MOTION - 1980x1080, 30fps, 4500kbps, no simulcast, higher bitrate for high motion, harder to encode content */ - H264_1080P_30FPS_1_LAYER_HIGH_MOTION = 9, - UNRECOGNIZED = -1, -} - -export function ingressVideoEncodingPresetFromJSON(object: any): IngressVideoEncodingPreset { - switch (object) { - case 0: - case "H264_720P_30FPS_3_LAYERS": - return IngressVideoEncodingPreset.H264_720P_30FPS_3_LAYERS; - case 1: - case "H264_1080P_30FPS_3_LAYERS": - return IngressVideoEncodingPreset.H264_1080P_30FPS_3_LAYERS; - case 2: - case "H264_540P_25FPS_2_LAYERS": - return IngressVideoEncodingPreset.H264_540P_25FPS_2_LAYERS; - case 3: - case "H264_720P_30FPS_1_LAYER": - return IngressVideoEncodingPreset.H264_720P_30FPS_1_LAYER; - case 4: - case "H264_1080P_30FPS_1_LAYER": - return IngressVideoEncodingPreset.H264_1080P_30FPS_1_LAYER; - case 5: - case "H264_720P_30FPS_3_LAYERS_HIGH_MOTION": - return IngressVideoEncodingPreset.H264_720P_30FPS_3_LAYERS_HIGH_MOTION; - case 6: - case "H264_1080P_30FPS_3_LAYERS_HIGH_MOTION": - return IngressVideoEncodingPreset.H264_1080P_30FPS_3_LAYERS_HIGH_MOTION; - case 7: - case "H264_540P_25FPS_2_LAYERS_HIGH_MOTION": - return IngressVideoEncodingPreset.H264_540P_25FPS_2_LAYERS_HIGH_MOTION; - case 8: - case "H264_720P_30FPS_1_LAYER_HIGH_MOTION": - return IngressVideoEncodingPreset.H264_720P_30FPS_1_LAYER_HIGH_MOTION; - case 9: - case "H264_1080P_30FPS_1_LAYER_HIGH_MOTION": - return IngressVideoEncodingPreset.H264_1080P_30FPS_1_LAYER_HIGH_MOTION; - case -1: - case "UNRECOGNIZED": - default: - return IngressVideoEncodingPreset.UNRECOGNIZED; - } -} - -export function ingressVideoEncodingPresetToJSON(object: IngressVideoEncodingPreset): string { - switch (object) { - case IngressVideoEncodingPreset.H264_720P_30FPS_3_LAYERS: - return "H264_720P_30FPS_3_LAYERS"; - case IngressVideoEncodingPreset.H264_1080P_30FPS_3_LAYERS: - return "H264_1080P_30FPS_3_LAYERS"; - case IngressVideoEncodingPreset.H264_540P_25FPS_2_LAYERS: - return "H264_540P_25FPS_2_LAYERS"; - case IngressVideoEncodingPreset.H264_720P_30FPS_1_LAYER: - return "H264_720P_30FPS_1_LAYER"; - case IngressVideoEncodingPreset.H264_1080P_30FPS_1_LAYER: - return "H264_1080P_30FPS_1_LAYER"; - case IngressVideoEncodingPreset.H264_720P_30FPS_3_LAYERS_HIGH_MOTION: - return "H264_720P_30FPS_3_LAYERS_HIGH_MOTION"; - case IngressVideoEncodingPreset.H264_1080P_30FPS_3_LAYERS_HIGH_MOTION: - return "H264_1080P_30FPS_3_LAYERS_HIGH_MOTION"; - case IngressVideoEncodingPreset.H264_540P_25FPS_2_LAYERS_HIGH_MOTION: - return "H264_540P_25FPS_2_LAYERS_HIGH_MOTION"; - case IngressVideoEncodingPreset.H264_720P_30FPS_1_LAYER_HIGH_MOTION: - return "H264_720P_30FPS_1_LAYER_HIGH_MOTION"; - case IngressVideoEncodingPreset.H264_1080P_30FPS_1_LAYER_HIGH_MOTION: - return "H264_1080P_30FPS_1_LAYER_HIGH_MOTION"; - case IngressVideoEncodingPreset.UNRECOGNIZED: - default: - return "UNRECOGNIZED"; - } -} - -export interface CreateIngressRequest { - inputType?: - | IngressInput - | undefined; - /** Where to pull media from, only for URL input type */ - url?: - | string - | undefined; - /** User provided identifier for the ingress */ - name?: - | string - | undefined; - /** room to publish to */ - roomName?: - | string - | undefined; - /** publish as participant */ - participantIdentity?: - | string - | undefined; - /** name of publishing participant (used for display only) */ - participantName?: - | string - | undefined; - /** whether to pass through the incoming media without transcoding, only compatible with some input types */ - bypassTranscoding?: boolean | undefined; - audio?: IngressAudioOptions | undefined; - video?: IngressVideoOptions | undefined; -} - -export interface IngressAudioOptions { - name?: string | undefined; - source?: TrackSource | undefined; - preset?: IngressAudioEncodingPreset | undefined; - options?: IngressAudioEncodingOptions | undefined; -} - -export interface IngressVideoOptions { - name?: string | undefined; - source?: TrackSource | undefined; - preset?: IngressVideoEncodingPreset | undefined; - options?: IngressVideoEncodingOptions | undefined; -} - -export interface IngressAudioEncodingOptions { - /** desired audio codec to publish to room */ - audioCodec?: AudioCodec | undefined; - bitrate?: number | undefined; - disableDtx?: boolean | undefined; - channels?: number | undefined; -} - -export interface IngressVideoEncodingOptions { - /** desired codec to publish to room */ - videoCodec?: VideoCodec | undefined; - frameRate?: - | number - | undefined; - /** simulcast layers to publish, when empty, should usually be set to layers at 1/2 and 1/4 of the dimensions */ - layers?: VideoLayer[] | undefined; -} - -export interface IngressInfo { - ingressId?: string | undefined; - name?: string | undefined; - streamKey?: - | string - | undefined; - /** URL to point the encoder to for push (RTMP, WHIP), or location to pull media from for pull (URL) */ - url?: - | string - | undefined; - /** - * for RTMP input, it'll be a rtmp:// URL - * for FILE input, it'll be a http:// URL - * for SRT input, it'll be a srt:// URL - */ - inputType?: IngressInput | undefined; - bypassTranscoding?: boolean | undefined; - audio?: IngressAudioOptions | undefined; - video?: IngressVideoOptions | undefined; - roomName?: string | undefined; - participantIdentity?: string | undefined; - participantName?: string | undefined; - reusable?: - | boolean - | undefined; - /** Description of error/stream non compliance and debug info for publisher otherwise (received bitrate, resolution, bandwidth) */ - state?: IngressState | undefined; -} - -export interface IngressState { - status?: - | IngressState_Status - | undefined; - /** Error/non compliance description if any */ - error?: string | undefined; - video?: InputVideoState | undefined; - audio?: - | InputAudioState - | undefined; - /** ID of the current/previous room published to */ - roomId?: string | undefined; - startedAt?: number | undefined; - endedAt?: number | undefined; - resourceId?: string | undefined; - tracks?: TrackInfo[] | undefined; -} - -export enum IngressState_Status { - ENDPOINT_INACTIVE = 0, - ENDPOINT_BUFFERING = 1, - ENDPOINT_PUBLISHING = 2, - ENDPOINT_ERROR = 3, - ENDPOINT_COMPLETE = 4, - UNRECOGNIZED = -1, -} - -export function ingressState_StatusFromJSON(object: any): IngressState_Status { - switch (object) { - case 0: - case "ENDPOINT_INACTIVE": - return IngressState_Status.ENDPOINT_INACTIVE; - case 1: - case "ENDPOINT_BUFFERING": - return IngressState_Status.ENDPOINT_BUFFERING; - case 2: - case "ENDPOINT_PUBLISHING": - return IngressState_Status.ENDPOINT_PUBLISHING; - case 3: - case "ENDPOINT_ERROR": - return IngressState_Status.ENDPOINT_ERROR; - case 4: - case "ENDPOINT_COMPLETE": - return IngressState_Status.ENDPOINT_COMPLETE; - case -1: - case "UNRECOGNIZED": - default: - return IngressState_Status.UNRECOGNIZED; - } -} - -export function ingressState_StatusToJSON(object: IngressState_Status): string { - switch (object) { - case IngressState_Status.ENDPOINT_INACTIVE: - return "ENDPOINT_INACTIVE"; - case IngressState_Status.ENDPOINT_BUFFERING: - return "ENDPOINT_BUFFERING"; - case IngressState_Status.ENDPOINT_PUBLISHING: - return "ENDPOINT_PUBLISHING"; - case IngressState_Status.ENDPOINT_ERROR: - return "ENDPOINT_ERROR"; - case IngressState_Status.ENDPOINT_COMPLETE: - return "ENDPOINT_COMPLETE"; - case IngressState_Status.UNRECOGNIZED: - default: - return "UNRECOGNIZED"; - } -} - -export interface InputVideoState { - mimeType?: string | undefined; - averageBitrate?: number | undefined; - width?: number | undefined; - height?: number | undefined; - framerate?: number | undefined; -} - -export interface InputAudioState { - mimeType?: string | undefined; - averageBitrate?: number | undefined; - channels?: number | undefined; - sampleRate?: number | undefined; -} - -export interface UpdateIngressRequest { - ingressId?: string | undefined; - name?: string | undefined; - roomName?: string | undefined; - participantIdentity?: string | undefined; - participantName?: string | undefined; - bypassTranscoding?: boolean | undefined; - audio?: IngressAudioOptions | undefined; - video?: IngressVideoOptions | undefined; -} - -export interface ListIngressRequest { - /** when blank, lists all ingress endpoints */ - roomName?: - | string - | undefined; - /** (optional, filter by ingress ID) */ - ingressId?: string | undefined; -} - -export interface ListIngressResponse { - items?: IngressInfo[] | undefined; -} - -export interface DeleteIngressRequest { - ingressId?: string | undefined; -} - -function createBaseCreateIngressRequest(): CreateIngressRequest { - return { - inputType: 0, - url: "", - name: "", - roomName: "", - participantIdentity: "", - participantName: "", - bypassTranscoding: false, - audio: undefined, - video: undefined, - }; -} - -export const CreateIngressRequest = { - encode(message: CreateIngressRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.inputType !== undefined && message.inputType !== 0) { - writer.uint32(8).int32(message.inputType); - } - if (message.url !== undefined && message.url !== "") { - writer.uint32(74).string(message.url); - } - if (message.name !== undefined && message.name !== "") { - writer.uint32(18).string(message.name); - } - if (message.roomName !== undefined && message.roomName !== "") { - writer.uint32(26).string(message.roomName); - } - if (message.participantIdentity !== undefined && message.participantIdentity !== "") { - writer.uint32(34).string(message.participantIdentity); - } - if (message.participantName !== undefined && message.participantName !== "") { - writer.uint32(42).string(message.participantName); - } - if (message.bypassTranscoding === true) { - writer.uint32(64).bool(message.bypassTranscoding); - } - if (message.audio !== undefined) { - IngressAudioOptions.encode(message.audio, writer.uint32(50).fork()).ldelim(); - } - if (message.video !== undefined) { - IngressVideoOptions.encode(message.video, writer.uint32(58).fork()).ldelim(); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): CreateIngressRequest { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseCreateIngressRequest(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 8) { - break; - } - - message.inputType = reader.int32() as any; - continue; - case 9: - if (tag !== 74) { - break; - } - - message.url = reader.string(); - continue; - case 2: - if (tag !== 18) { - break; - } - - message.name = reader.string(); - continue; - case 3: - if (tag !== 26) { - break; - } - - message.roomName = reader.string(); - continue; - case 4: - if (tag !== 34) { - break; - } - - message.participantIdentity = reader.string(); - continue; - case 5: - if (tag !== 42) { - break; - } - - message.participantName = reader.string(); - continue; - case 8: - if (tag !== 64) { - break; - } - - message.bypassTranscoding = reader.bool(); - continue; - case 6: - if (tag !== 50) { - break; - } - - message.audio = IngressAudioOptions.decode(reader, reader.uint32()); - continue; - case 7: - if (tag !== 58) { - break; - } - - message.video = IngressVideoOptions.decode(reader, reader.uint32()); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): CreateIngressRequest { - return { - inputType: isSet(object.inputType) ? ingressInputFromJSON(object.inputType) : 0, - url: isSet(object.url) ? globalThis.String(object.url) : "", - name: isSet(object.name) ? globalThis.String(object.name) : "", - roomName: isSet(object.roomName) ? globalThis.String(object.roomName) : "", - participantIdentity: isSet(object.participantIdentity) ? globalThis.String(object.participantIdentity) : "", - participantName: isSet(object.participantName) ? globalThis.String(object.participantName) : "", - bypassTranscoding: isSet(object.bypassTranscoding) ? globalThis.Boolean(object.bypassTranscoding) : false, - audio: isSet(object.audio) ? IngressAudioOptions.fromJSON(object.audio) : undefined, - video: isSet(object.video) ? IngressVideoOptions.fromJSON(object.video) : undefined, - }; - }, - - toJSON(message: CreateIngressRequest): unknown { - const obj: any = {}; - if (message.inputType !== undefined && message.inputType !== 0) { - obj.inputType = ingressInputToJSON(message.inputType); - } - if (message.url !== undefined && message.url !== "") { - obj.url = message.url; - } - if (message.name !== undefined && message.name !== "") { - obj.name = message.name; - } - if (message.roomName !== undefined && message.roomName !== "") { - obj.roomName = message.roomName; - } - if (message.participantIdentity !== undefined && message.participantIdentity !== "") { - obj.participantIdentity = message.participantIdentity; - } - if (message.participantName !== undefined && message.participantName !== "") { - obj.participantName = message.participantName; - } - if (message.bypassTranscoding === true) { - obj.bypassTranscoding = message.bypassTranscoding; - } - if (message.audio !== undefined) { - obj.audio = IngressAudioOptions.toJSON(message.audio); - } - if (message.video !== undefined) { - obj.video = IngressVideoOptions.toJSON(message.video); - } - return obj; - }, - - create, I>>(base?: I): CreateIngressRequest { - return CreateIngressRequest.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): CreateIngressRequest { - const message = createBaseCreateIngressRequest(); - message.inputType = object.inputType ?? 0; - message.url = object.url ?? ""; - message.name = object.name ?? ""; - message.roomName = object.roomName ?? ""; - message.participantIdentity = object.participantIdentity ?? ""; - message.participantName = object.participantName ?? ""; - message.bypassTranscoding = object.bypassTranscoding ?? false; - message.audio = (object.audio !== undefined && object.audio !== null) - ? IngressAudioOptions.fromPartial(object.audio) - : undefined; - message.video = (object.video !== undefined && object.video !== null) - ? IngressVideoOptions.fromPartial(object.video) - : undefined; - return message; - }, -}; - -function createBaseIngressAudioOptions(): IngressAudioOptions { - return { name: "", source: 0, preset: undefined, options: undefined }; -} - -export const IngressAudioOptions = { - encode(message: IngressAudioOptions, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.name !== undefined && message.name !== "") { - writer.uint32(10).string(message.name); - } - if (message.source !== undefined && message.source !== 0) { - writer.uint32(16).int32(message.source); - } - if (message.preset !== undefined) { - writer.uint32(24).int32(message.preset); - } - if (message.options !== undefined) { - IngressAudioEncodingOptions.encode(message.options, writer.uint32(34).fork()).ldelim(); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): IngressAudioOptions { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseIngressAudioOptions(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.name = reader.string(); - continue; - case 2: - if (tag !== 16) { - break; - } - - message.source = reader.int32() as any; - continue; - case 3: - if (tag !== 24) { - break; - } - - message.preset = reader.int32() as any; - continue; - case 4: - if (tag !== 34) { - break; - } - - message.options = IngressAudioEncodingOptions.decode(reader, reader.uint32()); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): IngressAudioOptions { - return { - name: isSet(object.name) ? globalThis.String(object.name) : "", - source: isSet(object.source) ? trackSourceFromJSON(object.source) : 0, - preset: isSet(object.preset) ? ingressAudioEncodingPresetFromJSON(object.preset) : undefined, - options: isSet(object.options) ? IngressAudioEncodingOptions.fromJSON(object.options) : undefined, - }; - }, - - toJSON(message: IngressAudioOptions): unknown { - const obj: any = {}; - if (message.name !== undefined && message.name !== "") { - obj.name = message.name; - } - if (message.source !== undefined && message.source !== 0) { - obj.source = trackSourceToJSON(message.source); - } - if (message.preset !== undefined) { - obj.preset = ingressAudioEncodingPresetToJSON(message.preset); - } - if (message.options !== undefined) { - obj.options = IngressAudioEncodingOptions.toJSON(message.options); - } - return obj; - }, - - create, I>>(base?: I): IngressAudioOptions { - return IngressAudioOptions.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): IngressAudioOptions { - const message = createBaseIngressAudioOptions(); - message.name = object.name ?? ""; - message.source = object.source ?? 0; - message.preset = object.preset ?? undefined; - message.options = (object.options !== undefined && object.options !== null) - ? IngressAudioEncodingOptions.fromPartial(object.options) - : undefined; - return message; - }, -}; - -function createBaseIngressVideoOptions(): IngressVideoOptions { - return { name: "", source: 0, preset: undefined, options: undefined }; -} - -export const IngressVideoOptions = { - encode(message: IngressVideoOptions, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.name !== undefined && message.name !== "") { - writer.uint32(10).string(message.name); - } - if (message.source !== undefined && message.source !== 0) { - writer.uint32(16).int32(message.source); - } - if (message.preset !== undefined) { - writer.uint32(24).int32(message.preset); - } - if (message.options !== undefined) { - IngressVideoEncodingOptions.encode(message.options, writer.uint32(34).fork()).ldelim(); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): IngressVideoOptions { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseIngressVideoOptions(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.name = reader.string(); - continue; - case 2: - if (tag !== 16) { - break; - } - - message.source = reader.int32() as any; - continue; - case 3: - if (tag !== 24) { - break; - } - - message.preset = reader.int32() as any; - continue; - case 4: - if (tag !== 34) { - break; - } - - message.options = IngressVideoEncodingOptions.decode(reader, reader.uint32()); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): IngressVideoOptions { - return { - name: isSet(object.name) ? globalThis.String(object.name) : "", - source: isSet(object.source) ? trackSourceFromJSON(object.source) : 0, - preset: isSet(object.preset) ? ingressVideoEncodingPresetFromJSON(object.preset) : undefined, - options: isSet(object.options) ? IngressVideoEncodingOptions.fromJSON(object.options) : undefined, - }; - }, - - toJSON(message: IngressVideoOptions): unknown { - const obj: any = {}; - if (message.name !== undefined && message.name !== "") { - obj.name = message.name; - } - if (message.source !== undefined && message.source !== 0) { - obj.source = trackSourceToJSON(message.source); - } - if (message.preset !== undefined) { - obj.preset = ingressVideoEncodingPresetToJSON(message.preset); - } - if (message.options !== undefined) { - obj.options = IngressVideoEncodingOptions.toJSON(message.options); - } - return obj; - }, - - create, I>>(base?: I): IngressVideoOptions { - return IngressVideoOptions.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): IngressVideoOptions { - const message = createBaseIngressVideoOptions(); - message.name = object.name ?? ""; - message.source = object.source ?? 0; - message.preset = object.preset ?? undefined; - message.options = (object.options !== undefined && object.options !== null) - ? IngressVideoEncodingOptions.fromPartial(object.options) - : undefined; - return message; - }, -}; - -function createBaseIngressAudioEncodingOptions(): IngressAudioEncodingOptions { - return { audioCodec: 0, bitrate: 0, disableDtx: false, channels: 0 }; -} - -export const IngressAudioEncodingOptions = { - encode(message: IngressAudioEncodingOptions, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.audioCodec !== undefined && message.audioCodec !== 0) { - writer.uint32(8).int32(message.audioCodec); - } - if (message.bitrate !== undefined && message.bitrate !== 0) { - writer.uint32(16).uint32(message.bitrate); - } - if (message.disableDtx === true) { - writer.uint32(24).bool(message.disableDtx); - } - if (message.channels !== undefined && message.channels !== 0) { - writer.uint32(32).uint32(message.channels); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): IngressAudioEncodingOptions { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseIngressAudioEncodingOptions(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 8) { - break; - } - - message.audioCodec = reader.int32() as any; - continue; - case 2: - if (tag !== 16) { - break; - } - - message.bitrate = reader.uint32(); - continue; - case 3: - if (tag !== 24) { - break; - } - - message.disableDtx = reader.bool(); - continue; - case 4: - if (tag !== 32) { - break; - } - - message.channels = reader.uint32(); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): IngressAudioEncodingOptions { - return { - audioCodec: isSet(object.audioCodec) ? audioCodecFromJSON(object.audioCodec) : 0, - bitrate: isSet(object.bitrate) ? globalThis.Number(object.bitrate) : 0, - disableDtx: isSet(object.disableDtx) ? globalThis.Boolean(object.disableDtx) : false, - channels: isSet(object.channels) ? globalThis.Number(object.channels) : 0, - }; - }, - - toJSON(message: IngressAudioEncodingOptions): unknown { - const obj: any = {}; - if (message.audioCodec !== undefined && message.audioCodec !== 0) { - obj.audioCodec = audioCodecToJSON(message.audioCodec); - } - if (message.bitrate !== undefined && message.bitrate !== 0) { - obj.bitrate = Math.round(message.bitrate); - } - if (message.disableDtx === true) { - obj.disableDtx = message.disableDtx; - } - if (message.channels !== undefined && message.channels !== 0) { - obj.channels = Math.round(message.channels); - } - return obj; - }, - - create, I>>(base?: I): IngressAudioEncodingOptions { - return IngressAudioEncodingOptions.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): IngressAudioEncodingOptions { - const message = createBaseIngressAudioEncodingOptions(); - message.audioCodec = object.audioCodec ?? 0; - message.bitrate = object.bitrate ?? 0; - message.disableDtx = object.disableDtx ?? false; - message.channels = object.channels ?? 0; - return message; - }, -}; - -function createBaseIngressVideoEncodingOptions(): IngressVideoEncodingOptions { - return { videoCodec: 0, frameRate: 0, layers: [] }; -} - -export const IngressVideoEncodingOptions = { - encode(message: IngressVideoEncodingOptions, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.videoCodec !== undefined && message.videoCodec !== 0) { - writer.uint32(8).int32(message.videoCodec); - } - if (message.frameRate !== undefined && message.frameRate !== 0) { - writer.uint32(17).double(message.frameRate); - } - if (message.layers !== undefined && message.layers.length !== 0) { - for (const v of message.layers) { - VideoLayer.encode(v!, writer.uint32(26).fork()).ldelim(); - } - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): IngressVideoEncodingOptions { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseIngressVideoEncodingOptions(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 8) { - break; - } - - message.videoCodec = reader.int32() as any; - continue; - case 2: - if (tag !== 17) { - break; - } - - message.frameRate = reader.double(); - continue; - case 3: - if (tag !== 26) { - break; - } - - message.layers!.push(VideoLayer.decode(reader, reader.uint32())); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): IngressVideoEncodingOptions { - return { - videoCodec: isSet(object.videoCodec) ? videoCodecFromJSON(object.videoCodec) : 0, - frameRate: isSet(object.frameRate) ? globalThis.Number(object.frameRate) : 0, - layers: globalThis.Array.isArray(object?.layers) ? object.layers.map((e: any) => VideoLayer.fromJSON(e)) : [], - }; - }, - - toJSON(message: IngressVideoEncodingOptions): unknown { - const obj: any = {}; - if (message.videoCodec !== undefined && message.videoCodec !== 0) { - obj.videoCodec = videoCodecToJSON(message.videoCodec); - } - if (message.frameRate !== undefined && message.frameRate !== 0) { - obj.frameRate = message.frameRate; - } - if (message.layers?.length) { - obj.layers = message.layers.map((e) => VideoLayer.toJSON(e)); - } - return obj; - }, - - create, I>>(base?: I): IngressVideoEncodingOptions { - return IngressVideoEncodingOptions.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): IngressVideoEncodingOptions { - const message = createBaseIngressVideoEncodingOptions(); - message.videoCodec = object.videoCodec ?? 0; - message.frameRate = object.frameRate ?? 0; - message.layers = object.layers?.map((e) => VideoLayer.fromPartial(e)) || []; - return message; - }, -}; - -function createBaseIngressInfo(): IngressInfo { - return { - ingressId: "", - name: "", - streamKey: "", - url: "", - inputType: 0, - bypassTranscoding: false, - audio: undefined, - video: undefined, - roomName: "", - participantIdentity: "", - participantName: "", - reusable: false, - state: undefined, - }; -} - -export const IngressInfo = { - encode(message: IngressInfo, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.ingressId !== undefined && message.ingressId !== "") { - writer.uint32(10).string(message.ingressId); - } - if (message.name !== undefined && message.name !== "") { - writer.uint32(18).string(message.name); - } - if (message.streamKey !== undefined && message.streamKey !== "") { - writer.uint32(26).string(message.streamKey); - } - if (message.url !== undefined && message.url !== "") { - writer.uint32(34).string(message.url); - } - if (message.inputType !== undefined && message.inputType !== 0) { - writer.uint32(40).int32(message.inputType); - } - if (message.bypassTranscoding === true) { - writer.uint32(104).bool(message.bypassTranscoding); - } - if (message.audio !== undefined) { - IngressAudioOptions.encode(message.audio, writer.uint32(50).fork()).ldelim(); - } - if (message.video !== undefined) { - IngressVideoOptions.encode(message.video, writer.uint32(58).fork()).ldelim(); - } - if (message.roomName !== undefined && message.roomName !== "") { - writer.uint32(66).string(message.roomName); - } - if (message.participantIdentity !== undefined && message.participantIdentity !== "") { - writer.uint32(74).string(message.participantIdentity); - } - if (message.participantName !== undefined && message.participantName !== "") { - writer.uint32(82).string(message.participantName); - } - if (message.reusable === true) { - writer.uint32(88).bool(message.reusable); - } - if (message.state !== undefined) { - IngressState.encode(message.state, writer.uint32(98).fork()).ldelim(); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): IngressInfo { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseIngressInfo(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.ingressId = reader.string(); - continue; - case 2: - if (tag !== 18) { - break; - } - - message.name = reader.string(); - continue; - case 3: - if (tag !== 26) { - break; - } - - message.streamKey = reader.string(); - continue; - case 4: - if (tag !== 34) { - break; - } - - message.url = reader.string(); - continue; - case 5: - if (tag !== 40) { - break; - } - - message.inputType = reader.int32() as any; - continue; - case 13: - if (tag !== 104) { - break; - } - - message.bypassTranscoding = reader.bool(); - continue; - case 6: - if (tag !== 50) { - break; - } - - message.audio = IngressAudioOptions.decode(reader, reader.uint32()); - continue; - case 7: - if (tag !== 58) { - break; - } - - message.video = IngressVideoOptions.decode(reader, reader.uint32()); - continue; - case 8: - if (tag !== 66) { - break; - } - - message.roomName = reader.string(); - continue; - case 9: - if (tag !== 74) { - break; - } - - message.participantIdentity = reader.string(); - continue; - case 10: - if (tag !== 82) { - break; - } - - message.participantName = reader.string(); - continue; - case 11: - if (tag !== 88) { - break; - } - - message.reusable = reader.bool(); - continue; - case 12: - if (tag !== 98) { - break; - } - - message.state = IngressState.decode(reader, reader.uint32()); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): IngressInfo { - return { - ingressId: isSet(object.ingressId) ? globalThis.String(object.ingressId) : "", - name: isSet(object.name) ? globalThis.String(object.name) : "", - streamKey: isSet(object.streamKey) ? globalThis.String(object.streamKey) : "", - url: isSet(object.url) ? globalThis.String(object.url) : "", - inputType: isSet(object.inputType) ? ingressInputFromJSON(object.inputType) : 0, - bypassTranscoding: isSet(object.bypassTranscoding) ? globalThis.Boolean(object.bypassTranscoding) : false, - audio: isSet(object.audio) ? IngressAudioOptions.fromJSON(object.audio) : undefined, - video: isSet(object.video) ? IngressVideoOptions.fromJSON(object.video) : undefined, - roomName: isSet(object.roomName) ? globalThis.String(object.roomName) : "", - participantIdentity: isSet(object.participantIdentity) ? globalThis.String(object.participantIdentity) : "", - participantName: isSet(object.participantName) ? globalThis.String(object.participantName) : "", - reusable: isSet(object.reusable) ? globalThis.Boolean(object.reusable) : false, - state: isSet(object.state) ? IngressState.fromJSON(object.state) : undefined, - }; - }, - - toJSON(message: IngressInfo): unknown { - const obj: any = {}; - if (message.ingressId !== undefined && message.ingressId !== "") { - obj.ingressId = message.ingressId; - } - if (message.name !== undefined && message.name !== "") { - obj.name = message.name; - } - if (message.streamKey !== undefined && message.streamKey !== "") { - obj.streamKey = message.streamKey; - } - if (message.url !== undefined && message.url !== "") { - obj.url = message.url; - } - if (message.inputType !== undefined && message.inputType !== 0) { - obj.inputType = ingressInputToJSON(message.inputType); - } - if (message.bypassTranscoding === true) { - obj.bypassTranscoding = message.bypassTranscoding; - } - if (message.audio !== undefined) { - obj.audio = IngressAudioOptions.toJSON(message.audio); - } - if (message.video !== undefined) { - obj.video = IngressVideoOptions.toJSON(message.video); - } - if (message.roomName !== undefined && message.roomName !== "") { - obj.roomName = message.roomName; - } - if (message.participantIdentity !== undefined && message.participantIdentity !== "") { - obj.participantIdentity = message.participantIdentity; - } - if (message.participantName !== undefined && message.participantName !== "") { - obj.participantName = message.participantName; - } - if (message.reusable === true) { - obj.reusable = message.reusable; - } - if (message.state !== undefined) { - obj.state = IngressState.toJSON(message.state); - } - return obj; - }, - - create, I>>(base?: I): IngressInfo { - return IngressInfo.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): IngressInfo { - const message = createBaseIngressInfo(); - message.ingressId = object.ingressId ?? ""; - message.name = object.name ?? ""; - message.streamKey = object.streamKey ?? ""; - message.url = object.url ?? ""; - message.inputType = object.inputType ?? 0; - message.bypassTranscoding = object.bypassTranscoding ?? false; - message.audio = (object.audio !== undefined && object.audio !== null) - ? IngressAudioOptions.fromPartial(object.audio) - : undefined; - message.video = (object.video !== undefined && object.video !== null) - ? IngressVideoOptions.fromPartial(object.video) - : undefined; - message.roomName = object.roomName ?? ""; - message.participantIdentity = object.participantIdentity ?? ""; - message.participantName = object.participantName ?? ""; - message.reusable = object.reusable ?? false; - message.state = (object.state !== undefined && object.state !== null) - ? IngressState.fromPartial(object.state) - : undefined; - return message; - }, -}; - -function createBaseIngressState(): IngressState { - return { - status: 0, - error: "", - video: undefined, - audio: undefined, - roomId: "", - startedAt: 0, - endedAt: 0, - resourceId: "", - tracks: [], - }; -} - -export const IngressState = { - encode(message: IngressState, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.status !== undefined && message.status !== 0) { - writer.uint32(8).int32(message.status); - } - if (message.error !== undefined && message.error !== "") { - writer.uint32(18).string(message.error); - } - if (message.video !== undefined) { - InputVideoState.encode(message.video, writer.uint32(26).fork()).ldelim(); - } - if (message.audio !== undefined) { - InputAudioState.encode(message.audio, writer.uint32(34).fork()).ldelim(); - } - if (message.roomId !== undefined && message.roomId !== "") { - writer.uint32(42).string(message.roomId); - } - if (message.startedAt !== undefined && message.startedAt !== 0) { - writer.uint32(56).int64(message.startedAt); - } - if (message.endedAt !== undefined && message.endedAt !== 0) { - writer.uint32(64).int64(message.endedAt); - } - if (message.resourceId !== undefined && message.resourceId !== "") { - writer.uint32(74).string(message.resourceId); - } - if (message.tracks !== undefined && message.tracks.length !== 0) { - for (const v of message.tracks) { - TrackInfo.encode(v!, writer.uint32(50).fork()).ldelim(); - } - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): IngressState { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseIngressState(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 8) { - break; - } - - message.status = reader.int32() as any; - continue; - case 2: - if (tag !== 18) { - break; - } - - message.error = reader.string(); - continue; - case 3: - if (tag !== 26) { - break; - } - - message.video = InputVideoState.decode(reader, reader.uint32()); - continue; - case 4: - if (tag !== 34) { - break; - } - - message.audio = InputAudioState.decode(reader, reader.uint32()); - continue; - case 5: - if (tag !== 42) { - break; - } - - message.roomId = reader.string(); - continue; - case 7: - if (tag !== 56) { - break; - } - - message.startedAt = longToNumber(reader.int64() as Long); - continue; - case 8: - if (tag !== 64) { - break; - } - - message.endedAt = longToNumber(reader.int64() as Long); - continue; - case 9: - if (tag !== 74) { - break; - } - - message.resourceId = reader.string(); - continue; - case 6: - if (tag !== 50) { - break; - } - - message.tracks!.push(TrackInfo.decode(reader, reader.uint32())); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): IngressState { - return { - status: isSet(object.status) ? ingressState_StatusFromJSON(object.status) : 0, - error: isSet(object.error) ? globalThis.String(object.error) : "", - video: isSet(object.video) ? InputVideoState.fromJSON(object.video) : undefined, - audio: isSet(object.audio) ? InputAudioState.fromJSON(object.audio) : undefined, - roomId: isSet(object.roomId) ? globalThis.String(object.roomId) : "", - startedAt: isSet(object.startedAt) ? globalThis.Number(object.startedAt) : 0, - endedAt: isSet(object.endedAt) ? globalThis.Number(object.endedAt) : 0, - resourceId: isSet(object.resourceId) ? globalThis.String(object.resourceId) : "", - tracks: globalThis.Array.isArray(object?.tracks) ? object.tracks.map((e: any) => TrackInfo.fromJSON(e)) : [], - }; - }, - - toJSON(message: IngressState): unknown { - const obj: any = {}; - if (message.status !== undefined && message.status !== 0) { - obj.status = ingressState_StatusToJSON(message.status); - } - if (message.error !== undefined && message.error !== "") { - obj.error = message.error; - } - if (message.video !== undefined) { - obj.video = InputVideoState.toJSON(message.video); - } - if (message.audio !== undefined) { - obj.audio = InputAudioState.toJSON(message.audio); - } - if (message.roomId !== undefined && message.roomId !== "") { - obj.roomId = message.roomId; - } - if (message.startedAt !== undefined && message.startedAt !== 0) { - obj.startedAt = Math.round(message.startedAt); - } - if (message.endedAt !== undefined && message.endedAt !== 0) { - obj.endedAt = Math.round(message.endedAt); - } - if (message.resourceId !== undefined && message.resourceId !== "") { - obj.resourceId = message.resourceId; - } - if (message.tracks?.length) { - obj.tracks = message.tracks.map((e) => TrackInfo.toJSON(e)); - } - return obj; - }, - - create, I>>(base?: I): IngressState { - return IngressState.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): IngressState { - const message = createBaseIngressState(); - message.status = object.status ?? 0; - message.error = object.error ?? ""; - message.video = (object.video !== undefined && object.video !== null) - ? InputVideoState.fromPartial(object.video) - : undefined; - message.audio = (object.audio !== undefined && object.audio !== null) - ? InputAudioState.fromPartial(object.audio) - : undefined; - message.roomId = object.roomId ?? ""; - message.startedAt = object.startedAt ?? 0; - message.endedAt = object.endedAt ?? 0; - message.resourceId = object.resourceId ?? ""; - message.tracks = object.tracks?.map((e) => TrackInfo.fromPartial(e)) || []; - return message; - }, -}; - -function createBaseInputVideoState(): InputVideoState { - return { mimeType: "", averageBitrate: 0, width: 0, height: 0, framerate: 0 }; -} - -export const InputVideoState = { - encode(message: InputVideoState, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.mimeType !== undefined && message.mimeType !== "") { - writer.uint32(10).string(message.mimeType); - } - if (message.averageBitrate !== undefined && message.averageBitrate !== 0) { - writer.uint32(16).uint32(message.averageBitrate); - } - if (message.width !== undefined && message.width !== 0) { - writer.uint32(24).uint32(message.width); - } - if (message.height !== undefined && message.height !== 0) { - writer.uint32(32).uint32(message.height); - } - if (message.framerate !== undefined && message.framerate !== 0) { - writer.uint32(41).double(message.framerate); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): InputVideoState { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseInputVideoState(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.mimeType = reader.string(); - continue; - case 2: - if (tag !== 16) { - break; - } - - message.averageBitrate = reader.uint32(); - continue; - case 3: - if (tag !== 24) { - break; - } - - message.width = reader.uint32(); - continue; - case 4: - if (tag !== 32) { - break; - } - - message.height = reader.uint32(); - continue; - case 5: - if (tag !== 41) { - break; - } - - message.framerate = reader.double(); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): InputVideoState { - return { - mimeType: isSet(object.mimeType) ? globalThis.String(object.mimeType) : "", - averageBitrate: isSet(object.averageBitrate) ? globalThis.Number(object.averageBitrate) : 0, - width: isSet(object.width) ? globalThis.Number(object.width) : 0, - height: isSet(object.height) ? globalThis.Number(object.height) : 0, - framerate: isSet(object.framerate) ? globalThis.Number(object.framerate) : 0, - }; - }, - - toJSON(message: InputVideoState): unknown { - const obj: any = {}; - if (message.mimeType !== undefined && message.mimeType !== "") { - obj.mimeType = message.mimeType; - } - if (message.averageBitrate !== undefined && message.averageBitrate !== 0) { - obj.averageBitrate = Math.round(message.averageBitrate); - } - if (message.width !== undefined && message.width !== 0) { - obj.width = Math.round(message.width); - } - if (message.height !== undefined && message.height !== 0) { - obj.height = Math.round(message.height); - } - if (message.framerate !== undefined && message.framerate !== 0) { - obj.framerate = message.framerate; - } - return obj; - }, - - create, I>>(base?: I): InputVideoState { - return InputVideoState.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): InputVideoState { - const message = createBaseInputVideoState(); - message.mimeType = object.mimeType ?? ""; - message.averageBitrate = object.averageBitrate ?? 0; - message.width = object.width ?? 0; - message.height = object.height ?? 0; - message.framerate = object.framerate ?? 0; - return message; - }, -}; - -function createBaseInputAudioState(): InputAudioState { - return { mimeType: "", averageBitrate: 0, channels: 0, sampleRate: 0 }; -} - -export const InputAudioState = { - encode(message: InputAudioState, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.mimeType !== undefined && message.mimeType !== "") { - writer.uint32(10).string(message.mimeType); - } - if (message.averageBitrate !== undefined && message.averageBitrate !== 0) { - writer.uint32(16).uint32(message.averageBitrate); - } - if (message.channels !== undefined && message.channels !== 0) { - writer.uint32(24).uint32(message.channels); - } - if (message.sampleRate !== undefined && message.sampleRate !== 0) { - writer.uint32(32).uint32(message.sampleRate); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): InputAudioState { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseInputAudioState(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.mimeType = reader.string(); - continue; - case 2: - if (tag !== 16) { - break; - } - - message.averageBitrate = reader.uint32(); - continue; - case 3: - if (tag !== 24) { - break; - } - - message.channels = reader.uint32(); - continue; - case 4: - if (tag !== 32) { - break; - } - - message.sampleRate = reader.uint32(); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): InputAudioState { - return { - mimeType: isSet(object.mimeType) ? globalThis.String(object.mimeType) : "", - averageBitrate: isSet(object.averageBitrate) ? globalThis.Number(object.averageBitrate) : 0, - channels: isSet(object.channels) ? globalThis.Number(object.channels) : 0, - sampleRate: isSet(object.sampleRate) ? globalThis.Number(object.sampleRate) : 0, - }; - }, - - toJSON(message: InputAudioState): unknown { - const obj: any = {}; - if (message.mimeType !== undefined && message.mimeType !== "") { - obj.mimeType = message.mimeType; - } - if (message.averageBitrate !== undefined && message.averageBitrate !== 0) { - obj.averageBitrate = Math.round(message.averageBitrate); - } - if (message.channels !== undefined && message.channels !== 0) { - obj.channels = Math.round(message.channels); - } - if (message.sampleRate !== undefined && message.sampleRate !== 0) { - obj.sampleRate = Math.round(message.sampleRate); - } - return obj; - }, - - create, I>>(base?: I): InputAudioState { - return InputAudioState.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): InputAudioState { - const message = createBaseInputAudioState(); - message.mimeType = object.mimeType ?? ""; - message.averageBitrate = object.averageBitrate ?? 0; - message.channels = object.channels ?? 0; - message.sampleRate = object.sampleRate ?? 0; - return message; - }, -}; - -function createBaseUpdateIngressRequest(): UpdateIngressRequest { - return { - ingressId: "", - name: "", - roomName: "", - participantIdentity: "", - participantName: "", - bypassTranscoding: undefined, - audio: undefined, - video: undefined, - }; -} - -export const UpdateIngressRequest = { - encode(message: UpdateIngressRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.ingressId !== undefined && message.ingressId !== "") { - writer.uint32(10).string(message.ingressId); - } - if (message.name !== undefined && message.name !== "") { - writer.uint32(18).string(message.name); - } - if (message.roomName !== undefined && message.roomName !== "") { - writer.uint32(26).string(message.roomName); - } - if (message.participantIdentity !== undefined && message.participantIdentity !== "") { - writer.uint32(34).string(message.participantIdentity); - } - if (message.participantName !== undefined && message.participantName !== "") { - writer.uint32(42).string(message.participantName); - } - if (message.bypassTranscoding !== undefined) { - writer.uint32(64).bool(message.bypassTranscoding); - } - if (message.audio !== undefined) { - IngressAudioOptions.encode(message.audio, writer.uint32(50).fork()).ldelim(); - } - if (message.video !== undefined) { - IngressVideoOptions.encode(message.video, writer.uint32(58).fork()).ldelim(); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): UpdateIngressRequest { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseUpdateIngressRequest(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.ingressId = reader.string(); - continue; - case 2: - if (tag !== 18) { - break; - } - - message.name = reader.string(); - continue; - case 3: - if (tag !== 26) { - break; - } - - message.roomName = reader.string(); - continue; - case 4: - if (tag !== 34) { - break; - } - - message.participantIdentity = reader.string(); - continue; - case 5: - if (tag !== 42) { - break; - } - - message.participantName = reader.string(); - continue; - case 8: - if (tag !== 64) { - break; - } - - message.bypassTranscoding = reader.bool(); - continue; - case 6: - if (tag !== 50) { - break; - } - - message.audio = IngressAudioOptions.decode(reader, reader.uint32()); - continue; - case 7: - if (tag !== 58) { - break; - } - - message.video = IngressVideoOptions.decode(reader, reader.uint32()); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): UpdateIngressRequest { - return { - ingressId: isSet(object.ingressId) ? globalThis.String(object.ingressId) : "", - name: isSet(object.name) ? globalThis.String(object.name) : "", - roomName: isSet(object.roomName) ? globalThis.String(object.roomName) : "", - participantIdentity: isSet(object.participantIdentity) ? globalThis.String(object.participantIdentity) : "", - participantName: isSet(object.participantName) ? globalThis.String(object.participantName) : "", - bypassTranscoding: isSet(object.bypassTranscoding) ? globalThis.Boolean(object.bypassTranscoding) : undefined, - audio: isSet(object.audio) ? IngressAudioOptions.fromJSON(object.audio) : undefined, - video: isSet(object.video) ? IngressVideoOptions.fromJSON(object.video) : undefined, - }; - }, - - toJSON(message: UpdateIngressRequest): unknown { - const obj: any = {}; - if (message.ingressId !== undefined && message.ingressId !== "") { - obj.ingressId = message.ingressId; - } - if (message.name !== undefined && message.name !== "") { - obj.name = message.name; - } - if (message.roomName !== undefined && message.roomName !== "") { - obj.roomName = message.roomName; - } - if (message.participantIdentity !== undefined && message.participantIdentity !== "") { - obj.participantIdentity = message.participantIdentity; - } - if (message.participantName !== undefined && message.participantName !== "") { - obj.participantName = message.participantName; - } - if (message.bypassTranscoding !== undefined) { - obj.bypassTranscoding = message.bypassTranscoding; - } - if (message.audio !== undefined) { - obj.audio = IngressAudioOptions.toJSON(message.audio); - } - if (message.video !== undefined) { - obj.video = IngressVideoOptions.toJSON(message.video); - } - return obj; - }, - - create, I>>(base?: I): UpdateIngressRequest { - return UpdateIngressRequest.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): UpdateIngressRequest { - const message = createBaseUpdateIngressRequest(); - message.ingressId = object.ingressId ?? ""; - message.name = object.name ?? ""; - message.roomName = object.roomName ?? ""; - message.participantIdentity = object.participantIdentity ?? ""; - message.participantName = object.participantName ?? ""; - message.bypassTranscoding = object.bypassTranscoding ?? undefined; - message.audio = (object.audio !== undefined && object.audio !== null) - ? IngressAudioOptions.fromPartial(object.audio) - : undefined; - message.video = (object.video !== undefined && object.video !== null) - ? IngressVideoOptions.fromPartial(object.video) - : undefined; - return message; - }, -}; - -function createBaseListIngressRequest(): ListIngressRequest { - return { roomName: "", ingressId: "" }; -} - -export const ListIngressRequest = { - encode(message: ListIngressRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.roomName !== undefined && message.roomName !== "") { - writer.uint32(10).string(message.roomName); - } - if (message.ingressId !== undefined && message.ingressId !== "") { - writer.uint32(18).string(message.ingressId); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): ListIngressRequest { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseListIngressRequest(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.roomName = reader.string(); - continue; - case 2: - if (tag !== 18) { - break; - } - - message.ingressId = reader.string(); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): ListIngressRequest { - return { - roomName: isSet(object.roomName) ? globalThis.String(object.roomName) : "", - ingressId: isSet(object.ingressId) ? globalThis.String(object.ingressId) : "", - }; - }, - - toJSON(message: ListIngressRequest): unknown { - const obj: any = {}; - if (message.roomName !== undefined && message.roomName !== "") { - obj.roomName = message.roomName; - } - if (message.ingressId !== undefined && message.ingressId !== "") { - obj.ingressId = message.ingressId; - } - return obj; - }, - - create, I>>(base?: I): ListIngressRequest { - return ListIngressRequest.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): ListIngressRequest { - const message = createBaseListIngressRequest(); - message.roomName = object.roomName ?? ""; - message.ingressId = object.ingressId ?? ""; - return message; - }, -}; - -function createBaseListIngressResponse(): ListIngressResponse { - return { items: [] }; -} - -export const ListIngressResponse = { - encode(message: ListIngressResponse, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.items !== undefined && message.items.length !== 0) { - for (const v of message.items) { - IngressInfo.encode(v!, writer.uint32(10).fork()).ldelim(); - } - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): ListIngressResponse { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseListIngressResponse(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.items!.push(IngressInfo.decode(reader, reader.uint32())); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): ListIngressResponse { - return { - items: globalThis.Array.isArray(object?.items) ? object.items.map((e: any) => IngressInfo.fromJSON(e)) : [], - }; - }, - - toJSON(message: ListIngressResponse): unknown { - const obj: any = {}; - if (message.items?.length) { - obj.items = message.items.map((e) => IngressInfo.toJSON(e)); - } - return obj; - }, - - create, I>>(base?: I): ListIngressResponse { - return ListIngressResponse.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): ListIngressResponse { - const message = createBaseListIngressResponse(); - message.items = object.items?.map((e) => IngressInfo.fromPartial(e)) || []; - return message; - }, -}; - -function createBaseDeleteIngressRequest(): DeleteIngressRequest { - return { ingressId: "" }; -} - -export const DeleteIngressRequest = { - encode(message: DeleteIngressRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.ingressId !== undefined && message.ingressId !== "") { - writer.uint32(10).string(message.ingressId); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): DeleteIngressRequest { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseDeleteIngressRequest(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.ingressId = reader.string(); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): DeleteIngressRequest { - return { ingressId: isSet(object.ingressId) ? globalThis.String(object.ingressId) : "" }; - }, - - toJSON(message: DeleteIngressRequest): unknown { - const obj: any = {}; - if (message.ingressId !== undefined && message.ingressId !== "") { - obj.ingressId = message.ingressId; - } - return obj; - }, - - create, I>>(base?: I): DeleteIngressRequest { - return DeleteIngressRequest.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): DeleteIngressRequest { - const message = createBaseDeleteIngressRequest(); - message.ingressId = object.ingressId ?? ""; - return message; - }, -}; - -export interface Ingress { - /** Create a new Ingress */ - CreateIngress(request: CreateIngressRequest): Promise; - /** Update an existing Ingress. Ingress can only be updated when it's in ENDPOINT_WAITING state. */ - UpdateIngress(request: UpdateIngressRequest): Promise; - ListIngress(request: ListIngressRequest): Promise; - DeleteIngress(request: DeleteIngressRequest): Promise; -} - -type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined; - -export type DeepPartial = T extends Builtin ? T - : T extends globalThis.Array ? globalThis.Array> - : T extends ReadonlyArray ? ReadonlyArray> - : T extends {} ? { [K in keyof T]?: DeepPartial } - : Partial; - -type KeysOfUnion = T extends T ? keyof T : never; -export type Exact = P extends Builtin ? P - : P & { [K in keyof P]: Exact } & { [K in Exclude>]: never }; - -function longToNumber(long: Long): number { - if (long.gt(globalThis.Number.MAX_SAFE_INTEGER)) { - throw new globalThis.Error("Value is larger than Number.MAX_SAFE_INTEGER"); - } - return long.toNumber(); -} - -if (_m0.util.Long !== Long) { - _m0.util.Long = Long as any; - _m0.configure(); -} - -function isSet(value: any): boolean { - return value !== null && value !== undefined; -} diff --git a/src/proto/livekit_ingress_pb.ts b/src/proto/livekit_ingress_pb.ts new file mode 100644 index 00000000..4124de40 --- /dev/null +++ b/src/proto/livekit_ingress_pb.ts @@ -0,0 +1,1056 @@ +// Copyright 2023 LiveKit, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// @generated by protoc-gen-es v1.4.2 with parameter "target=ts" +// @generated from file livekit_ingress.proto (package livekit, syntax proto3) +/* eslint-disable */ +// @ts-nocheck + +import type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from "@bufbuild/protobuf"; +import { Message, proto3, protoInt64 } from "@bufbuild/protobuf"; +import { AudioCodec, TrackInfo, TrackSource, VideoCodec, VideoLayer } from "./livekit_models_pb.js"; + +/** + * @generated from enum livekit.IngressInput + */ +export enum IngressInput { + /** + * @generated from enum value: RTMP_INPUT = 0; + */ + RTMP_INPUT = 0, + + /** + * @generated from enum value: WHIP_INPUT = 1; + */ + WHIP_INPUT = 1, + + /** + * Pull from the provided URL. Only HTTP url are supported, serving either a single media file or a HLS stream + * + * @generated from enum value: URL_INPUT = 2; + */ + URL_INPUT = 2, +} +// Retrieve enum metadata with: proto3.getEnumType(IngressInput) +proto3.util.setEnumType(IngressInput, "livekit.IngressInput", [ + { no: 0, name: "RTMP_INPUT" }, + { no: 1, name: "WHIP_INPUT" }, + { no: 2, name: "URL_INPUT" }, +]); + +/** + * @generated from enum livekit.IngressAudioEncodingPreset + */ +export enum IngressAudioEncodingPreset { + /** + * OPUS, 2 channels, 96kbps + * + * @generated from enum value: OPUS_STEREO_96KBPS = 0; + */ + OPUS_STEREO_96KBPS = 0, + + /** + * OPUS, 1 channel, 64kbps + * + * @generated from enum value: OPUS_MONO_64KBS = 1; + */ + OPUS_MONO_64KBS = 1, +} +// Retrieve enum metadata with: proto3.getEnumType(IngressAudioEncodingPreset) +proto3.util.setEnumType(IngressAudioEncodingPreset, "livekit.IngressAudioEncodingPreset", [ + { no: 0, name: "OPUS_STEREO_96KBPS" }, + { no: 1, name: "OPUS_MONO_64KBS" }, +]); + +/** + * @generated from enum livekit.IngressVideoEncodingPreset + */ +export enum IngressVideoEncodingPreset { + /** + * 1280x720, 30fps, 1900kbps main layer, 3 layers total + * + * @generated from enum value: H264_720P_30FPS_3_LAYERS = 0; + */ + H264_720P_30FPS_3_LAYERS = 0, + + /** + * 1980x1080, 30fps, 3500kbps main layer, 3 layers total + * + * @generated from enum value: H264_1080P_30FPS_3_LAYERS = 1; + */ + H264_1080P_30FPS_3_LAYERS = 1, + + /** + * 960x540, 25fps, 1000kbps main layer, 2 layers total + * + * @generated from enum value: H264_540P_25FPS_2_LAYERS = 2; + */ + H264_540P_25FPS_2_LAYERS = 2, + + /** + * 1280x720, 30fps, 1900kbps, no simulcast + * + * @generated from enum value: H264_720P_30FPS_1_LAYER = 3; + */ + H264_720P_30FPS_1_LAYER = 3, + + /** + * 1980x1080, 30fps, 3500kbps, no simulcast + * + * @generated from enum value: H264_1080P_30FPS_1_LAYER = 4; + */ + H264_1080P_30FPS_1_LAYER = 4, + + /** + * 1280x720, 30fps, 2500kbps main layer, 3 layers total, higher bitrate for high motion, harder to encode content + * + * @generated from enum value: H264_720P_30FPS_3_LAYERS_HIGH_MOTION = 5; + */ + H264_720P_30FPS_3_LAYERS_HIGH_MOTION = 5, + + /** + * 1980x1080, 30fps, 4500kbps main layer, 3 layers total, higher bitrate for high motion, harder to encode content + * + * @generated from enum value: H264_1080P_30FPS_3_LAYERS_HIGH_MOTION = 6; + */ + H264_1080P_30FPS_3_LAYERS_HIGH_MOTION = 6, + + /** + * 960x540, 25fps, 1300kbps main layer, 2 layers total, higher bitrate for high motion, harder to encode content + * + * @generated from enum value: H264_540P_25FPS_2_LAYERS_HIGH_MOTION = 7; + */ + H264_540P_25FPS_2_LAYERS_HIGH_MOTION = 7, + + /** + * 1280x720, 30fps, 2500kbps, no simulcast, higher bitrate for high motion, harder to encode content + * + * @generated from enum value: H264_720P_30FPS_1_LAYER_HIGH_MOTION = 8; + */ + H264_720P_30FPS_1_LAYER_HIGH_MOTION = 8, + + /** + * 1980x1080, 30fps, 4500kbps, no simulcast, higher bitrate for high motion, harder to encode content + * + * @generated from enum value: H264_1080P_30FPS_1_LAYER_HIGH_MOTION = 9; + */ + H264_1080P_30FPS_1_LAYER_HIGH_MOTION = 9, +} +// Retrieve enum metadata with: proto3.getEnumType(IngressVideoEncodingPreset) +proto3.util.setEnumType(IngressVideoEncodingPreset, "livekit.IngressVideoEncodingPreset", [ + { no: 0, name: "H264_720P_30FPS_3_LAYERS" }, + { no: 1, name: "H264_1080P_30FPS_3_LAYERS" }, + { no: 2, name: "H264_540P_25FPS_2_LAYERS" }, + { no: 3, name: "H264_720P_30FPS_1_LAYER" }, + { no: 4, name: "H264_1080P_30FPS_1_LAYER" }, + { no: 5, name: "H264_720P_30FPS_3_LAYERS_HIGH_MOTION" }, + { no: 6, name: "H264_1080P_30FPS_3_LAYERS_HIGH_MOTION" }, + { no: 7, name: "H264_540P_25FPS_2_LAYERS_HIGH_MOTION" }, + { no: 8, name: "H264_720P_30FPS_1_LAYER_HIGH_MOTION" }, + { no: 9, name: "H264_1080P_30FPS_1_LAYER_HIGH_MOTION" }, +]); + +/** + * @generated from message livekit.CreateIngressRequest + */ +export class CreateIngressRequest extends Message { + /** + * @generated from field: livekit.IngressInput input_type = 1; + */ + inputType = IngressInput.RTMP_INPUT; + + /** + * Where to pull media from, only for URL input type + * + * @generated from field: string url = 9; + */ + url = ""; + + /** + * User provided identifier for the ingress + * + * @generated from field: string name = 2; + */ + name = ""; + + /** + * room to publish to + * + * @generated from field: string room_name = 3; + */ + roomName = ""; + + /** + * publish as participant + * + * @generated from field: string participant_identity = 4; + */ + participantIdentity = ""; + + /** + * name of publishing participant (used for display only) + * + * @generated from field: string participant_name = 5; + */ + participantName = ""; + + /** + * whether to pass through the incoming media without transcoding, only compatible with some input types + * + * @generated from field: bool bypass_transcoding = 8; + */ + bypassTranscoding = false; + + /** + * @generated from field: livekit.IngressAudioOptions audio = 6; + */ + audio?: IngressAudioOptions; + + /** + * @generated from field: livekit.IngressVideoOptions video = 7; + */ + video?: IngressVideoOptions; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "livekit.CreateIngressRequest"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "input_type", kind: "enum", T: proto3.getEnumType(IngressInput) }, + { no: 9, name: "url", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 3, name: "room_name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 4, name: "participant_identity", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 5, name: "participant_name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 8, name: "bypass_transcoding", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, + { no: 6, name: "audio", kind: "message", T: IngressAudioOptions }, + { no: 7, name: "video", kind: "message", T: IngressVideoOptions }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): CreateIngressRequest { + return new CreateIngressRequest().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): CreateIngressRequest { + return new CreateIngressRequest().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): CreateIngressRequest { + return new CreateIngressRequest().fromJsonString(jsonString, options); + } + + static equals(a: CreateIngressRequest | PlainMessage | undefined, b: CreateIngressRequest | PlainMessage | undefined): boolean { + return proto3.util.equals(CreateIngressRequest, a, b); + } +} + +/** + * @generated from message livekit.IngressAudioOptions + */ +export class IngressAudioOptions extends Message { + /** + * @generated from field: string name = 1; + */ + name = ""; + + /** + * @generated from field: livekit.TrackSource source = 2; + */ + source = TrackSource.UNKNOWN; + + /** + * @generated from oneof livekit.IngressAudioOptions.encoding_options + */ + encodingOptions: { + /** + * @generated from field: livekit.IngressAudioEncodingPreset preset = 3; + */ + value: IngressAudioEncodingPreset; + case: "preset"; + } | { + /** + * @generated from field: livekit.IngressAudioEncodingOptions options = 4; + */ + value: IngressAudioEncodingOptions; + case: "options"; + } | { case: undefined; value?: undefined } = { case: undefined }; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "livekit.IngressAudioOptions"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "source", kind: "enum", T: proto3.getEnumType(TrackSource) }, + { no: 3, name: "preset", kind: "enum", T: proto3.getEnumType(IngressAudioEncodingPreset), oneof: "encoding_options" }, + { no: 4, name: "options", kind: "message", T: IngressAudioEncodingOptions, oneof: "encoding_options" }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): IngressAudioOptions { + return new IngressAudioOptions().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): IngressAudioOptions { + return new IngressAudioOptions().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): IngressAudioOptions { + return new IngressAudioOptions().fromJsonString(jsonString, options); + } + + static equals(a: IngressAudioOptions | PlainMessage | undefined, b: IngressAudioOptions | PlainMessage | undefined): boolean { + return proto3.util.equals(IngressAudioOptions, a, b); + } +} + +/** + * @generated from message livekit.IngressVideoOptions + */ +export class IngressVideoOptions extends Message { + /** + * @generated from field: string name = 1; + */ + name = ""; + + /** + * @generated from field: livekit.TrackSource source = 2; + */ + source = TrackSource.UNKNOWN; + + /** + * @generated from oneof livekit.IngressVideoOptions.encoding_options + */ + encodingOptions: { + /** + * @generated from field: livekit.IngressVideoEncodingPreset preset = 3; + */ + value: IngressVideoEncodingPreset; + case: "preset"; + } | { + /** + * @generated from field: livekit.IngressVideoEncodingOptions options = 4; + */ + value: IngressVideoEncodingOptions; + case: "options"; + } | { case: undefined; value?: undefined } = { case: undefined }; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "livekit.IngressVideoOptions"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "source", kind: "enum", T: proto3.getEnumType(TrackSource) }, + { no: 3, name: "preset", kind: "enum", T: proto3.getEnumType(IngressVideoEncodingPreset), oneof: "encoding_options" }, + { no: 4, name: "options", kind: "message", T: IngressVideoEncodingOptions, oneof: "encoding_options" }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): IngressVideoOptions { + return new IngressVideoOptions().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): IngressVideoOptions { + return new IngressVideoOptions().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): IngressVideoOptions { + return new IngressVideoOptions().fromJsonString(jsonString, options); + } + + static equals(a: IngressVideoOptions | PlainMessage | undefined, b: IngressVideoOptions | PlainMessage | undefined): boolean { + return proto3.util.equals(IngressVideoOptions, a, b); + } +} + +/** + * @generated from message livekit.IngressAudioEncodingOptions + */ +export class IngressAudioEncodingOptions extends Message { + /** + * desired audio codec to publish to room + * + * @generated from field: livekit.AudioCodec audio_codec = 1; + */ + audioCodec = AudioCodec.DEFAULT_AC; + + /** + * @generated from field: uint32 bitrate = 2; + */ + bitrate = 0; + + /** + * @generated from field: bool disable_dtx = 3; + */ + disableDtx = false; + + /** + * @generated from field: uint32 channels = 4; + */ + channels = 0; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "livekit.IngressAudioEncodingOptions"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "audio_codec", kind: "enum", T: proto3.getEnumType(AudioCodec) }, + { no: 2, name: "bitrate", kind: "scalar", T: 13 /* ScalarType.UINT32 */ }, + { no: 3, name: "disable_dtx", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, + { no: 4, name: "channels", kind: "scalar", T: 13 /* ScalarType.UINT32 */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): IngressAudioEncodingOptions { + return new IngressAudioEncodingOptions().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): IngressAudioEncodingOptions { + return new IngressAudioEncodingOptions().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): IngressAudioEncodingOptions { + return new IngressAudioEncodingOptions().fromJsonString(jsonString, options); + } + + static equals(a: IngressAudioEncodingOptions | PlainMessage | undefined, b: IngressAudioEncodingOptions | PlainMessage | undefined): boolean { + return proto3.util.equals(IngressAudioEncodingOptions, a, b); + } +} + +/** + * @generated from message livekit.IngressVideoEncodingOptions + */ +export class IngressVideoEncodingOptions extends Message { + /** + * desired codec to publish to room + * + * @generated from field: livekit.VideoCodec video_codec = 1; + */ + videoCodec = VideoCodec.DEFAULT_VC; + + /** + * @generated from field: double frame_rate = 2; + */ + frameRate = 0; + + /** + * simulcast layers to publish, when empty, should usually be set to layers at 1/2 and 1/4 of the dimensions + * + * @generated from field: repeated livekit.VideoLayer layers = 3; + */ + layers: VideoLayer[] = []; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "livekit.IngressVideoEncodingOptions"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "video_codec", kind: "enum", T: proto3.getEnumType(VideoCodec) }, + { no: 2, name: "frame_rate", kind: "scalar", T: 1 /* ScalarType.DOUBLE */ }, + { no: 3, name: "layers", kind: "message", T: VideoLayer, repeated: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): IngressVideoEncodingOptions { + return new IngressVideoEncodingOptions().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): IngressVideoEncodingOptions { + return new IngressVideoEncodingOptions().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): IngressVideoEncodingOptions { + return new IngressVideoEncodingOptions().fromJsonString(jsonString, options); + } + + static equals(a: IngressVideoEncodingOptions | PlainMessage | undefined, b: IngressVideoEncodingOptions | PlainMessage | undefined): boolean { + return proto3.util.equals(IngressVideoEncodingOptions, a, b); + } +} + +/** + * @generated from message livekit.IngressInfo + */ +export class IngressInfo extends Message { + /** + * @generated from field: string ingress_id = 1; + */ + ingressId = ""; + + /** + * @generated from field: string name = 2; + */ + name = ""; + + /** + * @generated from field: string stream_key = 3; + */ + streamKey = ""; + + /** + * URL to point the encoder to for push (RTMP, WHIP), or location to pull media from for pull (URL) + * + * @generated from field: string url = 4; + */ + url = ""; + + /** + * for RTMP input, it'll be a rtmp:// URL + * for FILE input, it'll be a http:// URL + * for SRT input, it'll be a srt:// URL + * + * @generated from field: livekit.IngressInput input_type = 5; + */ + inputType = IngressInput.RTMP_INPUT; + + /** + * @generated from field: bool bypass_transcoding = 13; + */ + bypassTranscoding = false; + + /** + * @generated from field: livekit.IngressAudioOptions audio = 6; + */ + audio?: IngressAudioOptions; + + /** + * @generated from field: livekit.IngressVideoOptions video = 7; + */ + video?: IngressVideoOptions; + + /** + * @generated from field: string room_name = 8; + */ + roomName = ""; + + /** + * @generated from field: string participant_identity = 9; + */ + participantIdentity = ""; + + /** + * @generated from field: string participant_name = 10; + */ + participantName = ""; + + /** + * @generated from field: bool reusable = 11; + */ + reusable = false; + + /** + * Description of error/stream non compliance and debug info for publisher otherwise (received bitrate, resolution, bandwidth) + * + * @generated from field: livekit.IngressState state = 12; + */ + state?: IngressState; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "livekit.IngressInfo"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "ingress_id", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 3, name: "stream_key", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 4, name: "url", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 5, name: "input_type", kind: "enum", T: proto3.getEnumType(IngressInput) }, + { no: 13, name: "bypass_transcoding", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, + { no: 6, name: "audio", kind: "message", T: IngressAudioOptions }, + { no: 7, name: "video", kind: "message", T: IngressVideoOptions }, + { no: 8, name: "room_name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 9, name: "participant_identity", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 10, name: "participant_name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 11, name: "reusable", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, + { no: 12, name: "state", kind: "message", T: IngressState }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): IngressInfo { + return new IngressInfo().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): IngressInfo { + return new IngressInfo().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): IngressInfo { + return new IngressInfo().fromJsonString(jsonString, options); + } + + static equals(a: IngressInfo | PlainMessage | undefined, b: IngressInfo | PlainMessage | undefined): boolean { + return proto3.util.equals(IngressInfo, a, b); + } +} + +/** + * @generated from message livekit.IngressState + */ +export class IngressState extends Message { + /** + * @generated from field: livekit.IngressState.Status status = 1; + */ + status = IngressState_Status.ENDPOINT_INACTIVE; + + /** + * Error/non compliance description if any + * + * @generated from field: string error = 2; + */ + error = ""; + + /** + * @generated from field: livekit.InputVideoState video = 3; + */ + video?: InputVideoState; + + /** + * @generated from field: livekit.InputAudioState audio = 4; + */ + audio?: InputAudioState; + + /** + * ID of the current/previous room published to + * + * @generated from field: string room_id = 5; + */ + roomId = ""; + + /** + * @generated from field: int64 started_at = 7; + */ + startedAt = protoInt64.zero; + + /** + * @generated from field: int64 ended_at = 8; + */ + endedAt = protoInt64.zero; + + /** + * @generated from field: string resource_id = 9; + */ + resourceId = ""; + + /** + * @generated from field: repeated livekit.TrackInfo tracks = 6; + */ + tracks: TrackInfo[] = []; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "livekit.IngressState"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "status", kind: "enum", T: proto3.getEnumType(IngressState_Status) }, + { no: 2, name: "error", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 3, name: "video", kind: "message", T: InputVideoState }, + { no: 4, name: "audio", kind: "message", T: InputAudioState }, + { no: 5, name: "room_id", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 7, name: "started_at", kind: "scalar", T: 3 /* ScalarType.INT64 */ }, + { no: 8, name: "ended_at", kind: "scalar", T: 3 /* ScalarType.INT64 */ }, + { no: 9, name: "resource_id", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 6, name: "tracks", kind: "message", T: TrackInfo, repeated: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): IngressState { + return new IngressState().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): IngressState { + return new IngressState().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): IngressState { + return new IngressState().fromJsonString(jsonString, options); + } + + static equals(a: IngressState | PlainMessage | undefined, b: IngressState | PlainMessage | undefined): boolean { + return proto3.util.equals(IngressState, a, b); + } +} + +/** + * @generated from enum livekit.IngressState.Status + */ +export enum IngressState_Status { + /** + * @generated from enum value: ENDPOINT_INACTIVE = 0; + */ + ENDPOINT_INACTIVE = 0, + + /** + * @generated from enum value: ENDPOINT_BUFFERING = 1; + */ + ENDPOINT_BUFFERING = 1, + + /** + * @generated from enum value: ENDPOINT_PUBLISHING = 2; + */ + ENDPOINT_PUBLISHING = 2, + + /** + * @generated from enum value: ENDPOINT_ERROR = 3; + */ + ENDPOINT_ERROR = 3, + + /** + * @generated from enum value: ENDPOINT_COMPLETE = 4; + */ + ENDPOINT_COMPLETE = 4, +} +// Retrieve enum metadata with: proto3.getEnumType(IngressState_Status) +proto3.util.setEnumType(IngressState_Status, "livekit.IngressState.Status", [ + { no: 0, name: "ENDPOINT_INACTIVE" }, + { no: 1, name: "ENDPOINT_BUFFERING" }, + { no: 2, name: "ENDPOINT_PUBLISHING" }, + { no: 3, name: "ENDPOINT_ERROR" }, + { no: 4, name: "ENDPOINT_COMPLETE" }, +]); + +/** + * @generated from message livekit.InputVideoState + */ +export class InputVideoState extends Message { + /** + * @generated from field: string mime_type = 1; + */ + mimeType = ""; + + /** + * @generated from field: uint32 average_bitrate = 2; + */ + averageBitrate = 0; + + /** + * @generated from field: uint32 width = 3; + */ + width = 0; + + /** + * @generated from field: uint32 height = 4; + */ + height = 0; + + /** + * @generated from field: double framerate = 5; + */ + framerate = 0; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "livekit.InputVideoState"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "mime_type", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "average_bitrate", kind: "scalar", T: 13 /* ScalarType.UINT32 */ }, + { no: 3, name: "width", kind: "scalar", T: 13 /* ScalarType.UINT32 */ }, + { no: 4, name: "height", kind: "scalar", T: 13 /* ScalarType.UINT32 */ }, + { no: 5, name: "framerate", kind: "scalar", T: 1 /* ScalarType.DOUBLE */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): InputVideoState { + return new InputVideoState().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): InputVideoState { + return new InputVideoState().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): InputVideoState { + return new InputVideoState().fromJsonString(jsonString, options); + } + + static equals(a: InputVideoState | PlainMessage | undefined, b: InputVideoState | PlainMessage | undefined): boolean { + return proto3.util.equals(InputVideoState, a, b); + } +} + +/** + * @generated from message livekit.InputAudioState + */ +export class InputAudioState extends Message { + /** + * @generated from field: string mime_type = 1; + */ + mimeType = ""; + + /** + * @generated from field: uint32 average_bitrate = 2; + */ + averageBitrate = 0; + + /** + * @generated from field: uint32 channels = 3; + */ + channels = 0; + + /** + * @generated from field: uint32 sample_rate = 4; + */ + sampleRate = 0; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "livekit.InputAudioState"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "mime_type", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "average_bitrate", kind: "scalar", T: 13 /* ScalarType.UINT32 */ }, + { no: 3, name: "channels", kind: "scalar", T: 13 /* ScalarType.UINT32 */ }, + { no: 4, name: "sample_rate", kind: "scalar", T: 13 /* ScalarType.UINT32 */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): InputAudioState { + return new InputAudioState().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): InputAudioState { + return new InputAudioState().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): InputAudioState { + return new InputAudioState().fromJsonString(jsonString, options); + } + + static equals(a: InputAudioState | PlainMessage | undefined, b: InputAudioState | PlainMessage | undefined): boolean { + return proto3.util.equals(InputAudioState, a, b); + } +} + +/** + * @generated from message livekit.UpdateIngressRequest + */ +export class UpdateIngressRequest extends Message { + /** + * @generated from field: string ingress_id = 1; + */ + ingressId = ""; + + /** + * @generated from field: string name = 2; + */ + name = ""; + + /** + * @generated from field: string room_name = 3; + */ + roomName = ""; + + /** + * @generated from field: string participant_identity = 4; + */ + participantIdentity = ""; + + /** + * @generated from field: string participant_name = 5; + */ + participantName = ""; + + /** + * @generated from field: optional bool bypass_transcoding = 8; + */ + bypassTranscoding?: boolean; + + /** + * @generated from field: livekit.IngressAudioOptions audio = 6; + */ + audio?: IngressAudioOptions; + + /** + * @generated from field: livekit.IngressVideoOptions video = 7; + */ + video?: IngressVideoOptions; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "livekit.UpdateIngressRequest"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "ingress_id", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 3, name: "room_name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 4, name: "participant_identity", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 5, name: "participant_name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 8, name: "bypass_transcoding", kind: "scalar", T: 8 /* ScalarType.BOOL */, opt: true }, + { no: 6, name: "audio", kind: "message", T: IngressAudioOptions }, + { no: 7, name: "video", kind: "message", T: IngressVideoOptions }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): UpdateIngressRequest { + return new UpdateIngressRequest().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): UpdateIngressRequest { + return new UpdateIngressRequest().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): UpdateIngressRequest { + return new UpdateIngressRequest().fromJsonString(jsonString, options); + } + + static equals(a: UpdateIngressRequest | PlainMessage | undefined, b: UpdateIngressRequest | PlainMessage | undefined): boolean { + return proto3.util.equals(UpdateIngressRequest, a, b); + } +} + +/** + * @generated from message livekit.ListIngressRequest + */ +export class ListIngressRequest extends Message { + /** + * when blank, lists all ingress endpoints + * + * (optional, filter by room name) + * + * @generated from field: string room_name = 1; + */ + roomName = ""; + + /** + * (optional, filter by ingress ID) + * + * @generated from field: string ingress_id = 2; + */ + ingressId = ""; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "livekit.ListIngressRequest"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "room_name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "ingress_id", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): ListIngressRequest { + return new ListIngressRequest().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): ListIngressRequest { + return new ListIngressRequest().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): ListIngressRequest { + return new ListIngressRequest().fromJsonString(jsonString, options); + } + + static equals(a: ListIngressRequest | PlainMessage | undefined, b: ListIngressRequest | PlainMessage | undefined): boolean { + return proto3.util.equals(ListIngressRequest, a, b); + } +} + +/** + * @generated from message livekit.ListIngressResponse + */ +export class ListIngressResponse extends Message { + /** + * @generated from field: repeated livekit.IngressInfo items = 1; + */ + items: IngressInfo[] = []; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "livekit.ListIngressResponse"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "items", kind: "message", T: IngressInfo, repeated: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): ListIngressResponse { + return new ListIngressResponse().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): ListIngressResponse { + return new ListIngressResponse().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): ListIngressResponse { + return new ListIngressResponse().fromJsonString(jsonString, options); + } + + static equals(a: ListIngressResponse | PlainMessage | undefined, b: ListIngressResponse | PlainMessage | undefined): boolean { + return proto3.util.equals(ListIngressResponse, a, b); + } +} + +/** + * @generated from message livekit.DeleteIngressRequest + */ +export class DeleteIngressRequest extends Message { + /** + * @generated from field: string ingress_id = 1; + */ + ingressId = ""; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "livekit.DeleteIngressRequest"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "ingress_id", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): DeleteIngressRequest { + return new DeleteIngressRequest().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): DeleteIngressRequest { + return new DeleteIngressRequest().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): DeleteIngressRequest { + return new DeleteIngressRequest().fromJsonString(jsonString, options); + } + + static equals(a: DeleteIngressRequest | PlainMessage | undefined, b: DeleteIngressRequest | PlainMessage | undefined): boolean { + return proto3.util.equals(DeleteIngressRequest, a, b); + } +} + diff --git a/src/proto/livekit_models.ts b/src/proto/livekit_models.ts deleted file mode 100644 index 55873dc0..00000000 --- a/src/proto/livekit_models.ts +++ /dev/null @@ -1,4887 +0,0 @@ -/* eslint-disable */ -import Long from "long"; -import _m0 from "protobufjs/minimal"; -import { Timestamp } from "./google/protobuf/timestamp"; - -export const protobufPackage = "livekit"; - -export enum AudioCodec { - DEFAULT_AC = 0, - OPUS = 1, - AAC = 2, - UNRECOGNIZED = -1, -} - -export function audioCodecFromJSON(object: any): AudioCodec { - switch (object) { - case 0: - case "DEFAULT_AC": - return AudioCodec.DEFAULT_AC; - case 1: - case "OPUS": - return AudioCodec.OPUS; - case 2: - case "AAC": - return AudioCodec.AAC; - case -1: - case "UNRECOGNIZED": - default: - return AudioCodec.UNRECOGNIZED; - } -} - -export function audioCodecToJSON(object: AudioCodec): string { - switch (object) { - case AudioCodec.DEFAULT_AC: - return "DEFAULT_AC"; - case AudioCodec.OPUS: - return "OPUS"; - case AudioCodec.AAC: - return "AAC"; - case AudioCodec.UNRECOGNIZED: - default: - return "UNRECOGNIZED"; - } -} - -export enum VideoCodec { - DEFAULT_VC = 0, - H264_BASELINE = 1, - H264_MAIN = 2, - H264_HIGH = 3, - VP8 = 4, - UNRECOGNIZED = -1, -} - -export function videoCodecFromJSON(object: any): VideoCodec { - switch (object) { - case 0: - case "DEFAULT_VC": - return VideoCodec.DEFAULT_VC; - case 1: - case "H264_BASELINE": - return VideoCodec.H264_BASELINE; - case 2: - case "H264_MAIN": - return VideoCodec.H264_MAIN; - case 3: - case "H264_HIGH": - return VideoCodec.H264_HIGH; - case 4: - case "VP8": - return VideoCodec.VP8; - case -1: - case "UNRECOGNIZED": - default: - return VideoCodec.UNRECOGNIZED; - } -} - -export function videoCodecToJSON(object: VideoCodec): string { - switch (object) { - case VideoCodec.DEFAULT_VC: - return "DEFAULT_VC"; - case VideoCodec.H264_BASELINE: - return "H264_BASELINE"; - case VideoCodec.H264_MAIN: - return "H264_MAIN"; - case VideoCodec.H264_HIGH: - return "H264_HIGH"; - case VideoCodec.VP8: - return "VP8"; - case VideoCodec.UNRECOGNIZED: - default: - return "UNRECOGNIZED"; - } -} - -export enum ImageCodec { - IC_DEFAULT = 0, - IC_JPEG = 1, - UNRECOGNIZED = -1, -} - -export function imageCodecFromJSON(object: any): ImageCodec { - switch (object) { - case 0: - case "IC_DEFAULT": - return ImageCodec.IC_DEFAULT; - case 1: - case "IC_JPEG": - return ImageCodec.IC_JPEG; - case -1: - case "UNRECOGNIZED": - default: - return ImageCodec.UNRECOGNIZED; - } -} - -export function imageCodecToJSON(object: ImageCodec): string { - switch (object) { - case ImageCodec.IC_DEFAULT: - return "IC_DEFAULT"; - case ImageCodec.IC_JPEG: - return "IC_JPEG"; - case ImageCodec.UNRECOGNIZED: - default: - return "UNRECOGNIZED"; - } -} - -export enum TrackType { - AUDIO = 0, - VIDEO = 1, - DATA = 2, - UNRECOGNIZED = -1, -} - -export function trackTypeFromJSON(object: any): TrackType { - switch (object) { - case 0: - case "AUDIO": - return TrackType.AUDIO; - case 1: - case "VIDEO": - return TrackType.VIDEO; - case 2: - case "DATA": - return TrackType.DATA; - case -1: - case "UNRECOGNIZED": - default: - return TrackType.UNRECOGNIZED; - } -} - -export function trackTypeToJSON(object: TrackType): string { - switch (object) { - case TrackType.AUDIO: - return "AUDIO"; - case TrackType.VIDEO: - return "VIDEO"; - case TrackType.DATA: - return "DATA"; - case TrackType.UNRECOGNIZED: - default: - return "UNRECOGNIZED"; - } -} - -export enum TrackSource { - UNKNOWN = 0, - CAMERA = 1, - MICROPHONE = 2, - SCREEN_SHARE = 3, - SCREEN_SHARE_AUDIO = 4, - UNRECOGNIZED = -1, -} - -export function trackSourceFromJSON(object: any): TrackSource { - switch (object) { - case 0: - case "UNKNOWN": - return TrackSource.UNKNOWN; - case 1: - case "CAMERA": - return TrackSource.CAMERA; - case 2: - case "MICROPHONE": - return TrackSource.MICROPHONE; - case 3: - case "SCREEN_SHARE": - return TrackSource.SCREEN_SHARE; - case 4: - case "SCREEN_SHARE_AUDIO": - return TrackSource.SCREEN_SHARE_AUDIO; - case -1: - case "UNRECOGNIZED": - default: - return TrackSource.UNRECOGNIZED; - } -} - -export function trackSourceToJSON(object: TrackSource): string { - switch (object) { - case TrackSource.UNKNOWN: - return "UNKNOWN"; - case TrackSource.CAMERA: - return "CAMERA"; - case TrackSource.MICROPHONE: - return "MICROPHONE"; - case TrackSource.SCREEN_SHARE: - return "SCREEN_SHARE"; - case TrackSource.SCREEN_SHARE_AUDIO: - return "SCREEN_SHARE_AUDIO"; - case TrackSource.UNRECOGNIZED: - default: - return "UNRECOGNIZED"; - } -} - -export enum VideoQuality { - LOW = 0, - MEDIUM = 1, - HIGH = 2, - OFF = 3, - UNRECOGNIZED = -1, -} - -export function videoQualityFromJSON(object: any): VideoQuality { - switch (object) { - case 0: - case "LOW": - return VideoQuality.LOW; - case 1: - case "MEDIUM": - return VideoQuality.MEDIUM; - case 2: - case "HIGH": - return VideoQuality.HIGH; - case 3: - case "OFF": - return VideoQuality.OFF; - case -1: - case "UNRECOGNIZED": - default: - return VideoQuality.UNRECOGNIZED; - } -} - -export function videoQualityToJSON(object: VideoQuality): string { - switch (object) { - case VideoQuality.LOW: - return "LOW"; - case VideoQuality.MEDIUM: - return "MEDIUM"; - case VideoQuality.HIGH: - return "HIGH"; - case VideoQuality.OFF: - return "OFF"; - case VideoQuality.UNRECOGNIZED: - default: - return "UNRECOGNIZED"; - } -} - -export enum ConnectionQuality { - POOR = 0, - GOOD = 1, - EXCELLENT = 2, - UNRECOGNIZED = -1, -} - -export function connectionQualityFromJSON(object: any): ConnectionQuality { - switch (object) { - case 0: - case "POOR": - return ConnectionQuality.POOR; - case 1: - case "GOOD": - return ConnectionQuality.GOOD; - case 2: - case "EXCELLENT": - return ConnectionQuality.EXCELLENT; - case -1: - case "UNRECOGNIZED": - default: - return ConnectionQuality.UNRECOGNIZED; - } -} - -export function connectionQualityToJSON(object: ConnectionQuality): string { - switch (object) { - case ConnectionQuality.POOR: - return "POOR"; - case ConnectionQuality.GOOD: - return "GOOD"; - case ConnectionQuality.EXCELLENT: - return "EXCELLENT"; - case ConnectionQuality.UNRECOGNIZED: - default: - return "UNRECOGNIZED"; - } -} - -export enum ClientConfigSetting { - UNSET = 0, - DISABLED = 1, - ENABLED = 2, - UNRECOGNIZED = -1, -} - -export function clientConfigSettingFromJSON(object: any): ClientConfigSetting { - switch (object) { - case 0: - case "UNSET": - return ClientConfigSetting.UNSET; - case 1: - case "DISABLED": - return ClientConfigSetting.DISABLED; - case 2: - case "ENABLED": - return ClientConfigSetting.ENABLED; - case -1: - case "UNRECOGNIZED": - default: - return ClientConfigSetting.UNRECOGNIZED; - } -} - -export function clientConfigSettingToJSON(object: ClientConfigSetting): string { - switch (object) { - case ClientConfigSetting.UNSET: - return "UNSET"; - case ClientConfigSetting.DISABLED: - return "DISABLED"; - case ClientConfigSetting.ENABLED: - return "ENABLED"; - case ClientConfigSetting.UNRECOGNIZED: - default: - return "UNRECOGNIZED"; - } -} - -export enum DisconnectReason { - UNKNOWN_REASON = 0, - CLIENT_INITIATED = 1, - DUPLICATE_IDENTITY = 2, - SERVER_SHUTDOWN = 3, - PARTICIPANT_REMOVED = 4, - ROOM_DELETED = 5, - STATE_MISMATCH = 6, - JOIN_FAILURE = 7, - UNRECOGNIZED = -1, -} - -export function disconnectReasonFromJSON(object: any): DisconnectReason { - switch (object) { - case 0: - case "UNKNOWN_REASON": - return DisconnectReason.UNKNOWN_REASON; - case 1: - case "CLIENT_INITIATED": - return DisconnectReason.CLIENT_INITIATED; - case 2: - case "DUPLICATE_IDENTITY": - return DisconnectReason.DUPLICATE_IDENTITY; - case 3: - case "SERVER_SHUTDOWN": - return DisconnectReason.SERVER_SHUTDOWN; - case 4: - case "PARTICIPANT_REMOVED": - return DisconnectReason.PARTICIPANT_REMOVED; - case 5: - case "ROOM_DELETED": - return DisconnectReason.ROOM_DELETED; - case 6: - case "STATE_MISMATCH": - return DisconnectReason.STATE_MISMATCH; - case 7: - case "JOIN_FAILURE": - return DisconnectReason.JOIN_FAILURE; - case -1: - case "UNRECOGNIZED": - default: - return DisconnectReason.UNRECOGNIZED; - } -} - -export function disconnectReasonToJSON(object: DisconnectReason): string { - switch (object) { - case DisconnectReason.UNKNOWN_REASON: - return "UNKNOWN_REASON"; - case DisconnectReason.CLIENT_INITIATED: - return "CLIENT_INITIATED"; - case DisconnectReason.DUPLICATE_IDENTITY: - return "DUPLICATE_IDENTITY"; - case DisconnectReason.SERVER_SHUTDOWN: - return "SERVER_SHUTDOWN"; - case DisconnectReason.PARTICIPANT_REMOVED: - return "PARTICIPANT_REMOVED"; - case DisconnectReason.ROOM_DELETED: - return "ROOM_DELETED"; - case DisconnectReason.STATE_MISMATCH: - return "STATE_MISMATCH"; - case DisconnectReason.JOIN_FAILURE: - return "JOIN_FAILURE"; - case DisconnectReason.UNRECOGNIZED: - default: - return "UNRECOGNIZED"; - } -} - -export enum ReconnectReason { - RR_UNKNOWN = 0, - RR_SIGNAL_DISCONNECTED = 1, - RR_PUBLISHER_FAILED = 2, - RR_SUBSCRIBER_FAILED = 3, - RR_SWITCH_CANDIDATE = 4, - UNRECOGNIZED = -1, -} - -export function reconnectReasonFromJSON(object: any): ReconnectReason { - switch (object) { - case 0: - case "RR_UNKNOWN": - return ReconnectReason.RR_UNKNOWN; - case 1: - case "RR_SIGNAL_DISCONNECTED": - return ReconnectReason.RR_SIGNAL_DISCONNECTED; - case 2: - case "RR_PUBLISHER_FAILED": - return ReconnectReason.RR_PUBLISHER_FAILED; - case 3: - case "RR_SUBSCRIBER_FAILED": - return ReconnectReason.RR_SUBSCRIBER_FAILED; - case 4: - case "RR_SWITCH_CANDIDATE": - return ReconnectReason.RR_SWITCH_CANDIDATE; - case -1: - case "UNRECOGNIZED": - default: - return ReconnectReason.UNRECOGNIZED; - } -} - -export function reconnectReasonToJSON(object: ReconnectReason): string { - switch (object) { - case ReconnectReason.RR_UNKNOWN: - return "RR_UNKNOWN"; - case ReconnectReason.RR_SIGNAL_DISCONNECTED: - return "RR_SIGNAL_DISCONNECTED"; - case ReconnectReason.RR_PUBLISHER_FAILED: - return "RR_PUBLISHER_FAILED"; - case ReconnectReason.RR_SUBSCRIBER_FAILED: - return "RR_SUBSCRIBER_FAILED"; - case ReconnectReason.RR_SWITCH_CANDIDATE: - return "RR_SWITCH_CANDIDATE"; - case ReconnectReason.UNRECOGNIZED: - default: - return "UNRECOGNIZED"; - } -} - -export enum SubscriptionError { - SE_UNKNOWN = 0, - SE_CODEC_UNSUPPORTED = 1, - SE_TRACK_NOTFOUND = 2, - UNRECOGNIZED = -1, -} - -export function subscriptionErrorFromJSON(object: any): SubscriptionError { - switch (object) { - case 0: - case "SE_UNKNOWN": - return SubscriptionError.SE_UNKNOWN; - case 1: - case "SE_CODEC_UNSUPPORTED": - return SubscriptionError.SE_CODEC_UNSUPPORTED; - case 2: - case "SE_TRACK_NOTFOUND": - return SubscriptionError.SE_TRACK_NOTFOUND; - case -1: - case "UNRECOGNIZED": - default: - return SubscriptionError.UNRECOGNIZED; - } -} - -export function subscriptionErrorToJSON(object: SubscriptionError): string { - switch (object) { - case SubscriptionError.SE_UNKNOWN: - return "SE_UNKNOWN"; - case SubscriptionError.SE_CODEC_UNSUPPORTED: - return "SE_CODEC_UNSUPPORTED"; - case SubscriptionError.SE_TRACK_NOTFOUND: - return "SE_TRACK_NOTFOUND"; - case SubscriptionError.UNRECOGNIZED: - default: - return "UNRECOGNIZED"; - } -} - -export interface Room { - sid: string; - name: string; - emptyTimeout: number; - maxParticipants: number; - creationTime: number; - turnPassword: string; - enabledCodecs: Codec[]; - metadata: string; - numParticipants: number; - numPublishers: number; - activeRecording: boolean; -} - -export interface Codec { - mime: string; - fmtpLine: string; -} - -export interface PlayoutDelay { - enabled: boolean; - min: number; - max: number; -} - -export interface ParticipantPermission { - /** allow participant to subscribe to other tracks in the room */ - canSubscribe: boolean; - /** allow participant to publish new tracks to room */ - canPublish: boolean; - /** allow participant to publish data */ - canPublishData: boolean; - /** sources that are allowed to be published */ - canPublishSources: TrackSource[]; - /** indicates that it's hidden to others */ - hidden: boolean; - /** indicates it's a recorder instance */ - recorder: boolean; - /** indicates that participant can update own metadata */ - canUpdateMetadata: boolean; -} - -export interface ParticipantInfo { - sid: string; - identity: string; - state: ParticipantInfo_State; - tracks: TrackInfo[]; - metadata: string; - /** timestamp when participant joined room, in seconds */ - joinedAt: number; - name: string; - version: number; - permission?: ParticipantPermission | undefined; - region: string; - /** - * indicates the participant has an active publisher connection - * and can publish to the server - */ - isPublisher: boolean; -} - -export enum ParticipantInfo_State { - /** JOINING - websocket' connected, but not offered yet */ - JOINING = 0, - /** JOINED - server received client offer */ - JOINED = 1, - /** ACTIVE - ICE connectivity established */ - ACTIVE = 2, - /** DISCONNECTED - WS disconnected */ - DISCONNECTED = 3, - UNRECOGNIZED = -1, -} - -export function participantInfo_StateFromJSON(object: any): ParticipantInfo_State { - switch (object) { - case 0: - case "JOINING": - return ParticipantInfo_State.JOINING; - case 1: - case "JOINED": - return ParticipantInfo_State.JOINED; - case 2: - case "ACTIVE": - return ParticipantInfo_State.ACTIVE; - case 3: - case "DISCONNECTED": - return ParticipantInfo_State.DISCONNECTED; - case -1: - case "UNRECOGNIZED": - default: - return ParticipantInfo_State.UNRECOGNIZED; - } -} - -export function participantInfo_StateToJSON(object: ParticipantInfo_State): string { - switch (object) { - case ParticipantInfo_State.JOINING: - return "JOINING"; - case ParticipantInfo_State.JOINED: - return "JOINED"; - case ParticipantInfo_State.ACTIVE: - return "ACTIVE"; - case ParticipantInfo_State.DISCONNECTED: - return "DISCONNECTED"; - case ParticipantInfo_State.UNRECOGNIZED: - default: - return "UNRECOGNIZED"; - } -} - -export interface Encryption { -} - -export enum Encryption_Type { - NONE = 0, - GCM = 1, - CUSTOM = 2, - UNRECOGNIZED = -1, -} - -export function encryption_TypeFromJSON(object: any): Encryption_Type { - switch (object) { - case 0: - case "NONE": - return Encryption_Type.NONE; - case 1: - case "GCM": - return Encryption_Type.GCM; - case 2: - case "CUSTOM": - return Encryption_Type.CUSTOM; - case -1: - case "UNRECOGNIZED": - default: - return Encryption_Type.UNRECOGNIZED; - } -} - -export function encryption_TypeToJSON(object: Encryption_Type): string { - switch (object) { - case Encryption_Type.NONE: - return "NONE"; - case Encryption_Type.GCM: - return "GCM"; - case Encryption_Type.CUSTOM: - return "CUSTOM"; - case Encryption_Type.UNRECOGNIZED: - default: - return "UNRECOGNIZED"; - } -} - -export interface SimulcastCodecInfo { - mimeType: string; - mid: string; - cid: string; - layers: VideoLayer[]; -} - -export interface TrackInfo { - sid: string; - type: TrackType; - name: string; - muted: boolean; - /** - * original width of video (unset for audio) - * clients may receive a lower resolution version with simulcast - */ - width: number; - /** original height of video (unset for audio) */ - height: number; - /** true if track is simulcasted */ - simulcast: boolean; - /** true if DTX (Discontinuous Transmission) is disabled for audio */ - disableDtx: boolean; - /** source of media */ - source: TrackSource; - layers: VideoLayer[]; - /** mime type of codec */ - mimeType: string; - mid: string; - codecs: SimulcastCodecInfo[]; - stereo: boolean; - /** true if RED (Redundant Encoding) is disabled for audio */ - disableRed: boolean; - encryption: Encryption_Type; - stream: string; -} - -/** provide information about available spatial layers */ -export interface VideoLayer { - /** for tracks with a single layer, this should be HIGH */ - quality: VideoQuality; - width: number; - height: number; - /** target bitrate in bit per second (bps), server will measure actual */ - bitrate: number; - ssrc: number; -} - -/** new DataPacket API */ -export interface DataPacket { - kind: DataPacket_Kind; - user?: UserPacket | undefined; - speaker?: ActiveSpeakerUpdate | undefined; - persistableUser?: PersistableUserPacket | undefined; -} - -export enum DataPacket_Kind { - RELIABLE = 0, - LOSSY = 1, - UNRECOGNIZED = -1, -} - -export function dataPacket_KindFromJSON(object: any): DataPacket_Kind { - switch (object) { - case 0: - case "RELIABLE": - return DataPacket_Kind.RELIABLE; - case 1: - case "LOSSY": - return DataPacket_Kind.LOSSY; - case -1: - case "UNRECOGNIZED": - default: - return DataPacket_Kind.UNRECOGNIZED; - } -} - -export function dataPacket_KindToJSON(object: DataPacket_Kind): string { - switch (object) { - case DataPacket_Kind.RELIABLE: - return "RELIABLE"; - case DataPacket_Kind.LOSSY: - return "LOSSY"; - case DataPacket_Kind.UNRECOGNIZED: - default: - return "UNRECOGNIZED"; - } -} - -export interface ActiveSpeakerUpdate { - speakers: SpeakerInfo[]; -} - -export interface SpeakerInfo { - sid: string; - /** audio level, 0-1.0, 1 is loudest */ - level: number; - /** true if speaker is currently active */ - active: boolean; -} - -export interface UserPacket { - /** participant ID of user that sent the message */ - participantSid: string; - participantIdentity: string; - /** user defined payload */ - payload: Uint8Array; - /** the ID of the participants who will receive the message (sent to all by default) */ - destinationSids: string[]; - /** identities of participants who will receive the message (sent to all by default) */ - destinationIdentities: string[]; - /** topic under which the message was published */ - topic?: string | undefined; -} - -export interface PersistableUserPacket { - /** participant ID of user that sent the message */ - participantSid: string; - participantIdentity: string; - participantName: string; - /** user defined payload */ - payload: Uint8Array; - /** the ID of the participants who will receive the message (sent to all by default) */ - destinationSids: string[]; - /** identities of participants who will receive the message (sent to all by default) */ - destinationIdentities: string[]; - /** topic under which the message was published */ - topic?: string | undefined; - timestamp: number; -} - -export interface PersistableUserData { - packets: PersistableUserPacket[]; -} - -export interface ParticipantTracks { - /** participant ID of participant to whom the tracks belong */ - participantSid: string; - trackSids: string[]; -} - -/** details about the server */ -export interface ServerInfo { - edition: ServerInfo_Edition; - version: string; - protocol: number; - region: string; - nodeId: string; - /** additional debugging information. sent only if server is in development mode */ - debugInfo: string; -} - -export enum ServerInfo_Edition { - Standard = 0, - Cloud = 1, - UNRECOGNIZED = -1, -} - -export function serverInfo_EditionFromJSON(object: any): ServerInfo_Edition { - switch (object) { - case 0: - case "Standard": - return ServerInfo_Edition.Standard; - case 1: - case "Cloud": - return ServerInfo_Edition.Cloud; - case -1: - case "UNRECOGNIZED": - default: - return ServerInfo_Edition.UNRECOGNIZED; - } -} - -export function serverInfo_EditionToJSON(object: ServerInfo_Edition): string { - switch (object) { - case ServerInfo_Edition.Standard: - return "Standard"; - case ServerInfo_Edition.Cloud: - return "Cloud"; - case ServerInfo_Edition.UNRECOGNIZED: - default: - return "UNRECOGNIZED"; - } -} - -/** details about the client */ -export interface ClientInfo { - sdk: ClientInfo_SDK; - version: string; - protocol: number; - os: string; - osVersion: string; - deviceModel: string; - browser: string; - browserVersion: string; - address: string; - /** wifi, wired, cellular, vpn, empty if not known */ - network: string; -} - -export enum ClientInfo_SDK { - UNKNOWN = 0, - JS = 1, - SWIFT = 2, - ANDROID = 3, - FLUTTER = 4, - GO = 5, - UNITY = 6, - REACT_NATIVE = 7, - RUST = 8, - PYTHON = 9, - CPP = 10, - UNRECOGNIZED = -1, -} - -export function clientInfo_SDKFromJSON(object: any): ClientInfo_SDK { - switch (object) { - case 0: - case "UNKNOWN": - return ClientInfo_SDK.UNKNOWN; - case 1: - case "JS": - return ClientInfo_SDK.JS; - case 2: - case "SWIFT": - return ClientInfo_SDK.SWIFT; - case 3: - case "ANDROID": - return ClientInfo_SDK.ANDROID; - case 4: - case "FLUTTER": - return ClientInfo_SDK.FLUTTER; - case 5: - case "GO": - return ClientInfo_SDK.GO; - case 6: - case "UNITY": - return ClientInfo_SDK.UNITY; - case 7: - case "REACT_NATIVE": - return ClientInfo_SDK.REACT_NATIVE; - case 8: - case "RUST": - return ClientInfo_SDK.RUST; - case 9: - case "PYTHON": - return ClientInfo_SDK.PYTHON; - case 10: - case "CPP": - return ClientInfo_SDK.CPP; - case -1: - case "UNRECOGNIZED": - default: - return ClientInfo_SDK.UNRECOGNIZED; - } -} - -export function clientInfo_SDKToJSON(object: ClientInfo_SDK): string { - switch (object) { - case ClientInfo_SDK.UNKNOWN: - return "UNKNOWN"; - case ClientInfo_SDK.JS: - return "JS"; - case ClientInfo_SDK.SWIFT: - return "SWIFT"; - case ClientInfo_SDK.ANDROID: - return "ANDROID"; - case ClientInfo_SDK.FLUTTER: - return "FLUTTER"; - case ClientInfo_SDK.GO: - return "GO"; - case ClientInfo_SDK.UNITY: - return "UNITY"; - case ClientInfo_SDK.REACT_NATIVE: - return "REACT_NATIVE"; - case ClientInfo_SDK.RUST: - return "RUST"; - case ClientInfo_SDK.PYTHON: - return "PYTHON"; - case ClientInfo_SDK.CPP: - return "CPP"; - case ClientInfo_SDK.UNRECOGNIZED: - default: - return "UNRECOGNIZED"; - } -} - -/** server provided client configuration */ -export interface ClientConfiguration { - video?: VideoConfiguration | undefined; - screen?: VideoConfiguration | undefined; - resumeConnection: ClientConfigSetting; - disabledCodecs?: DisabledCodecs | undefined; - forceRelay: ClientConfigSetting; -} - -export interface VideoConfiguration { - hardwareEncoder: ClientConfigSetting; -} - -export interface DisabledCodecs { - /** disabled for both publish and subscribe */ - codecs: Codec[]; - /** only disable for publish */ - publish: Codec[]; -} - -export interface RTPDrift { - startTime?: Date | undefined; - endTime?: Date | undefined; - duration: number; - startTimestamp: number; - endTimestamp: number; - rtpClockTicks: number; - driftSamples: number; - driftMs: number; - clockRate: number; -} - -export interface RTPStats { - startTime?: Date | undefined; - endTime?: Date | undefined; - duration: number; - packets: number; - packetRate: number; - bytes: number; - headerBytes: number; - bitrate: number; - packetsLost: number; - packetLossRate: number; - packetLossPercentage: number; - packetsDuplicate: number; - packetDuplicateRate: number; - bytesDuplicate: number; - headerBytesDuplicate: number; - bitrateDuplicate: number; - packetsPadding: number; - packetPaddingRate: number; - bytesPadding: number; - headerBytesPadding: number; - bitratePadding: number; - packetsOutOfOrder: number; - frames: number; - frameRate: number; - jitterCurrent: number; - jitterMax: number; - gapHistogram: { [key: number]: number }; - nacks: number; - nackAcks: number; - nackMisses: number; - nackRepeated: number; - plis: number; - lastPli?: Date | undefined; - firs: number; - lastFir?: Date | undefined; - rttCurrent: number; - rttMax: number; - keyFrames: number; - lastKeyFrame?: Date | undefined; - layerLockPlis: number; - lastLayerLockPli?: Date | undefined; - packetDrift?: - | RTPDrift - | undefined; - /** NEXT_ID: 46 */ - reportDrift?: RTPDrift | undefined; -} - -export interface RTPStats_GapHistogramEntry { - key: number; - value: number; -} - -export interface TimedVersion { - unixMicro: number; - ticks: number; -} - -function createBaseRoom(): Room { - return { - sid: "", - name: "", - emptyTimeout: 0, - maxParticipants: 0, - creationTime: 0, - turnPassword: "", - enabledCodecs: [], - metadata: "", - numParticipants: 0, - numPublishers: 0, - activeRecording: false, - }; -} - -export const Room = { - encode(message: Room, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.sid !== "") { - writer.uint32(10).string(message.sid); - } - if (message.name !== "") { - writer.uint32(18).string(message.name); - } - if (message.emptyTimeout !== 0) { - writer.uint32(24).uint32(message.emptyTimeout); - } - if (message.maxParticipants !== 0) { - writer.uint32(32).uint32(message.maxParticipants); - } - if (message.creationTime !== 0) { - writer.uint32(40).int64(message.creationTime); - } - if (message.turnPassword !== "") { - writer.uint32(50).string(message.turnPassword); - } - for (const v of message.enabledCodecs) { - Codec.encode(v!, writer.uint32(58).fork()).ldelim(); - } - if (message.metadata !== "") { - writer.uint32(66).string(message.metadata); - } - if (message.numParticipants !== 0) { - writer.uint32(72).uint32(message.numParticipants); - } - if (message.numPublishers !== 0) { - writer.uint32(88).uint32(message.numPublishers); - } - if (message.activeRecording === true) { - writer.uint32(80).bool(message.activeRecording); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): Room { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseRoom(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.sid = reader.string(); - continue; - case 2: - if (tag !== 18) { - break; - } - - message.name = reader.string(); - continue; - case 3: - if (tag !== 24) { - break; - } - - message.emptyTimeout = reader.uint32(); - continue; - case 4: - if (tag !== 32) { - break; - } - - message.maxParticipants = reader.uint32(); - continue; - case 5: - if (tag !== 40) { - break; - } - - message.creationTime = longToNumber(reader.int64() as Long); - continue; - case 6: - if (tag !== 50) { - break; - } - - message.turnPassword = reader.string(); - continue; - case 7: - if (tag !== 58) { - break; - } - - message.enabledCodecs.push(Codec.decode(reader, reader.uint32())); - continue; - case 8: - if (tag !== 66) { - break; - } - - message.metadata = reader.string(); - continue; - case 9: - if (tag !== 72) { - break; - } - - message.numParticipants = reader.uint32(); - continue; - case 11: - if (tag !== 88) { - break; - } - - message.numPublishers = reader.uint32(); - continue; - case 10: - if (tag !== 80) { - break; - } - - message.activeRecording = reader.bool(); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): Room { - return { - sid: isSet(object.sid) ? globalThis.String(object.sid) : "", - name: isSet(object.name) ? globalThis.String(object.name) : "", - emptyTimeout: isSet(object.emptyTimeout) ? globalThis.Number(object.emptyTimeout) : 0, - maxParticipants: isSet(object.maxParticipants) ? globalThis.Number(object.maxParticipants) : 0, - creationTime: isSet(object.creationTime) ? globalThis.Number(object.creationTime) : 0, - turnPassword: isSet(object.turnPassword) ? globalThis.String(object.turnPassword) : "", - enabledCodecs: globalThis.Array.isArray(object?.enabledCodecs) - ? object.enabledCodecs.map((e: any) => Codec.fromJSON(e)) - : [], - metadata: isSet(object.metadata) ? globalThis.String(object.metadata) : "", - numParticipants: isSet(object.numParticipants) ? globalThis.Number(object.numParticipants) : 0, - numPublishers: isSet(object.numPublishers) ? globalThis.Number(object.numPublishers) : 0, - activeRecording: isSet(object.activeRecording) ? globalThis.Boolean(object.activeRecording) : false, - }; - }, - - toJSON(message: Room): unknown { - const obj: any = {}; - if (message.sid !== "") { - obj.sid = message.sid; - } - if (message.name !== "") { - obj.name = message.name; - } - if (message.emptyTimeout !== 0) { - obj.emptyTimeout = Math.round(message.emptyTimeout); - } - if (message.maxParticipants !== 0) { - obj.maxParticipants = Math.round(message.maxParticipants); - } - if (message.creationTime !== 0) { - obj.creationTime = Math.round(message.creationTime); - } - if (message.turnPassword !== "") { - obj.turnPassword = message.turnPassword; - } - if (message.enabledCodecs?.length) { - obj.enabledCodecs = message.enabledCodecs.map((e) => Codec.toJSON(e)); - } - if (message.metadata !== "") { - obj.metadata = message.metadata; - } - if (message.numParticipants !== 0) { - obj.numParticipants = Math.round(message.numParticipants); - } - if (message.numPublishers !== 0) { - obj.numPublishers = Math.round(message.numPublishers); - } - if (message.activeRecording === true) { - obj.activeRecording = message.activeRecording; - } - return obj; - }, - - create, I>>(base?: I): Room { - return Room.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): Room { - const message = createBaseRoom(); - message.sid = object.sid ?? ""; - message.name = object.name ?? ""; - message.emptyTimeout = object.emptyTimeout ?? 0; - message.maxParticipants = object.maxParticipants ?? 0; - message.creationTime = object.creationTime ?? 0; - message.turnPassword = object.turnPassword ?? ""; - message.enabledCodecs = object.enabledCodecs?.map((e) => Codec.fromPartial(e)) || []; - message.metadata = object.metadata ?? ""; - message.numParticipants = object.numParticipants ?? 0; - message.numPublishers = object.numPublishers ?? 0; - message.activeRecording = object.activeRecording ?? false; - return message; - }, -}; - -function createBaseCodec(): Codec { - return { mime: "", fmtpLine: "" }; -} - -export const Codec = { - encode(message: Codec, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.mime !== "") { - writer.uint32(10).string(message.mime); - } - if (message.fmtpLine !== "") { - writer.uint32(18).string(message.fmtpLine); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): Codec { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseCodec(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.mime = reader.string(); - continue; - case 2: - if (tag !== 18) { - break; - } - - message.fmtpLine = reader.string(); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): Codec { - return { - mime: isSet(object.mime) ? globalThis.String(object.mime) : "", - fmtpLine: isSet(object.fmtpLine) ? globalThis.String(object.fmtpLine) : "", - }; - }, - - toJSON(message: Codec): unknown { - const obj: any = {}; - if (message.mime !== "") { - obj.mime = message.mime; - } - if (message.fmtpLine !== "") { - obj.fmtpLine = message.fmtpLine; - } - return obj; - }, - - create, I>>(base?: I): Codec { - return Codec.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): Codec { - const message = createBaseCodec(); - message.mime = object.mime ?? ""; - message.fmtpLine = object.fmtpLine ?? ""; - return message; - }, -}; - -function createBasePlayoutDelay(): PlayoutDelay { - return { enabled: false, min: 0, max: 0 }; -} - -export const PlayoutDelay = { - encode(message: PlayoutDelay, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.enabled === true) { - writer.uint32(8).bool(message.enabled); - } - if (message.min !== 0) { - writer.uint32(16).uint32(message.min); - } - if (message.max !== 0) { - writer.uint32(24).uint32(message.max); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): PlayoutDelay { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBasePlayoutDelay(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 8) { - break; - } - - message.enabled = reader.bool(); - continue; - case 2: - if (tag !== 16) { - break; - } - - message.min = reader.uint32(); - continue; - case 3: - if (tag !== 24) { - break; - } - - message.max = reader.uint32(); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): PlayoutDelay { - return { - enabled: isSet(object.enabled) ? globalThis.Boolean(object.enabled) : false, - min: isSet(object.min) ? globalThis.Number(object.min) : 0, - max: isSet(object.max) ? globalThis.Number(object.max) : 0, - }; - }, - - toJSON(message: PlayoutDelay): unknown { - const obj: any = {}; - if (message.enabled === true) { - obj.enabled = message.enabled; - } - if (message.min !== 0) { - obj.min = Math.round(message.min); - } - if (message.max !== 0) { - obj.max = Math.round(message.max); - } - return obj; - }, - - create, I>>(base?: I): PlayoutDelay { - return PlayoutDelay.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): PlayoutDelay { - const message = createBasePlayoutDelay(); - message.enabled = object.enabled ?? false; - message.min = object.min ?? 0; - message.max = object.max ?? 0; - return message; - }, -}; - -function createBaseParticipantPermission(): ParticipantPermission { - return { - canSubscribe: false, - canPublish: false, - canPublishData: false, - canPublishSources: [], - hidden: false, - recorder: false, - canUpdateMetadata: false, - }; -} - -export const ParticipantPermission = { - encode(message: ParticipantPermission, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.canSubscribe === true) { - writer.uint32(8).bool(message.canSubscribe); - } - if (message.canPublish === true) { - writer.uint32(16).bool(message.canPublish); - } - if (message.canPublishData === true) { - writer.uint32(24).bool(message.canPublishData); - } - writer.uint32(74).fork(); - for (const v of message.canPublishSources) { - writer.int32(v); - } - writer.ldelim(); - if (message.hidden === true) { - writer.uint32(56).bool(message.hidden); - } - if (message.recorder === true) { - writer.uint32(64).bool(message.recorder); - } - if (message.canUpdateMetadata === true) { - writer.uint32(80).bool(message.canUpdateMetadata); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): ParticipantPermission { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseParticipantPermission(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 8) { - break; - } - - message.canSubscribe = reader.bool(); - continue; - case 2: - if (tag !== 16) { - break; - } - - message.canPublish = reader.bool(); - continue; - case 3: - if (tag !== 24) { - break; - } - - message.canPublishData = reader.bool(); - continue; - case 9: - if (tag === 72) { - message.canPublishSources.push(reader.int32() as any); - - continue; - } - - if (tag === 74) { - const end2 = reader.uint32() + reader.pos; - while (reader.pos < end2) { - message.canPublishSources.push(reader.int32() as any); - } - - continue; - } - - break; - case 7: - if (tag !== 56) { - break; - } - - message.hidden = reader.bool(); - continue; - case 8: - if (tag !== 64) { - break; - } - - message.recorder = reader.bool(); - continue; - case 10: - if (tag !== 80) { - break; - } - - message.canUpdateMetadata = reader.bool(); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): ParticipantPermission { - return { - canSubscribe: isSet(object.canSubscribe) ? globalThis.Boolean(object.canSubscribe) : false, - canPublish: isSet(object.canPublish) ? globalThis.Boolean(object.canPublish) : false, - canPublishData: isSet(object.canPublishData) ? globalThis.Boolean(object.canPublishData) : false, - canPublishSources: globalThis.Array.isArray(object?.canPublishSources) - ? object.canPublishSources.map((e: any) => trackSourceFromJSON(e)) - : [], - hidden: isSet(object.hidden) ? globalThis.Boolean(object.hidden) : false, - recorder: isSet(object.recorder) ? globalThis.Boolean(object.recorder) : false, - canUpdateMetadata: isSet(object.canUpdateMetadata) ? globalThis.Boolean(object.canUpdateMetadata) : false, - }; - }, - - toJSON(message: ParticipantPermission): unknown { - const obj: any = {}; - if (message.canSubscribe === true) { - obj.canSubscribe = message.canSubscribe; - } - if (message.canPublish === true) { - obj.canPublish = message.canPublish; - } - if (message.canPublishData === true) { - obj.canPublishData = message.canPublishData; - } - if (message.canPublishSources?.length) { - obj.canPublishSources = message.canPublishSources.map((e) => trackSourceToJSON(e)); - } - if (message.hidden === true) { - obj.hidden = message.hidden; - } - if (message.recorder === true) { - obj.recorder = message.recorder; - } - if (message.canUpdateMetadata === true) { - obj.canUpdateMetadata = message.canUpdateMetadata; - } - return obj; - }, - - create, I>>(base?: I): ParticipantPermission { - return ParticipantPermission.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): ParticipantPermission { - const message = createBaseParticipantPermission(); - message.canSubscribe = object.canSubscribe ?? false; - message.canPublish = object.canPublish ?? false; - message.canPublishData = object.canPublishData ?? false; - message.canPublishSources = object.canPublishSources?.map((e) => e) || []; - message.hidden = object.hidden ?? false; - message.recorder = object.recorder ?? false; - message.canUpdateMetadata = object.canUpdateMetadata ?? false; - return message; - }, -}; - -function createBaseParticipantInfo(): ParticipantInfo { - return { - sid: "", - identity: "", - state: 0, - tracks: [], - metadata: "", - joinedAt: 0, - name: "", - version: 0, - permission: undefined, - region: "", - isPublisher: false, - }; -} - -export const ParticipantInfo = { - encode(message: ParticipantInfo, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.sid !== "") { - writer.uint32(10).string(message.sid); - } - if (message.identity !== "") { - writer.uint32(18).string(message.identity); - } - if (message.state !== 0) { - writer.uint32(24).int32(message.state); - } - for (const v of message.tracks) { - TrackInfo.encode(v!, writer.uint32(34).fork()).ldelim(); - } - if (message.metadata !== "") { - writer.uint32(42).string(message.metadata); - } - if (message.joinedAt !== 0) { - writer.uint32(48).int64(message.joinedAt); - } - if (message.name !== "") { - writer.uint32(74).string(message.name); - } - if (message.version !== 0) { - writer.uint32(80).uint32(message.version); - } - if (message.permission !== undefined) { - ParticipantPermission.encode(message.permission, writer.uint32(90).fork()).ldelim(); - } - if (message.region !== "") { - writer.uint32(98).string(message.region); - } - if (message.isPublisher === true) { - writer.uint32(104).bool(message.isPublisher); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): ParticipantInfo { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseParticipantInfo(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.sid = reader.string(); - continue; - case 2: - if (tag !== 18) { - break; - } - - message.identity = reader.string(); - continue; - case 3: - if (tag !== 24) { - break; - } - - message.state = reader.int32() as any; - continue; - case 4: - if (tag !== 34) { - break; - } - - message.tracks.push(TrackInfo.decode(reader, reader.uint32())); - continue; - case 5: - if (tag !== 42) { - break; - } - - message.metadata = reader.string(); - continue; - case 6: - if (tag !== 48) { - break; - } - - message.joinedAt = longToNumber(reader.int64() as Long); - continue; - case 9: - if (tag !== 74) { - break; - } - - message.name = reader.string(); - continue; - case 10: - if (tag !== 80) { - break; - } - - message.version = reader.uint32(); - continue; - case 11: - if (tag !== 90) { - break; - } - - message.permission = ParticipantPermission.decode(reader, reader.uint32()); - continue; - case 12: - if (tag !== 98) { - break; - } - - message.region = reader.string(); - continue; - case 13: - if (tag !== 104) { - break; - } - - message.isPublisher = reader.bool(); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): ParticipantInfo { - return { - sid: isSet(object.sid) ? globalThis.String(object.sid) : "", - identity: isSet(object.identity) ? globalThis.String(object.identity) : "", - state: isSet(object.state) ? participantInfo_StateFromJSON(object.state) : 0, - tracks: globalThis.Array.isArray(object?.tracks) ? object.tracks.map((e: any) => TrackInfo.fromJSON(e)) : [], - metadata: isSet(object.metadata) ? globalThis.String(object.metadata) : "", - joinedAt: isSet(object.joinedAt) ? globalThis.Number(object.joinedAt) : 0, - name: isSet(object.name) ? globalThis.String(object.name) : "", - version: isSet(object.version) ? globalThis.Number(object.version) : 0, - permission: isSet(object.permission) ? ParticipantPermission.fromJSON(object.permission) : undefined, - region: isSet(object.region) ? globalThis.String(object.region) : "", - isPublisher: isSet(object.isPublisher) ? globalThis.Boolean(object.isPublisher) : false, - }; - }, - - toJSON(message: ParticipantInfo): unknown { - const obj: any = {}; - if (message.sid !== "") { - obj.sid = message.sid; - } - if (message.identity !== "") { - obj.identity = message.identity; - } - if (message.state !== 0) { - obj.state = participantInfo_StateToJSON(message.state); - } - if (message.tracks?.length) { - obj.tracks = message.tracks.map((e) => TrackInfo.toJSON(e)); - } - if (message.metadata !== "") { - obj.metadata = message.metadata; - } - if (message.joinedAt !== 0) { - obj.joinedAt = Math.round(message.joinedAt); - } - if (message.name !== "") { - obj.name = message.name; - } - if (message.version !== 0) { - obj.version = Math.round(message.version); - } - if (message.permission !== undefined) { - obj.permission = ParticipantPermission.toJSON(message.permission); - } - if (message.region !== "") { - obj.region = message.region; - } - if (message.isPublisher === true) { - obj.isPublisher = message.isPublisher; - } - return obj; - }, - - create, I>>(base?: I): ParticipantInfo { - return ParticipantInfo.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): ParticipantInfo { - const message = createBaseParticipantInfo(); - message.sid = object.sid ?? ""; - message.identity = object.identity ?? ""; - message.state = object.state ?? 0; - message.tracks = object.tracks?.map((e) => TrackInfo.fromPartial(e)) || []; - message.metadata = object.metadata ?? ""; - message.joinedAt = object.joinedAt ?? 0; - message.name = object.name ?? ""; - message.version = object.version ?? 0; - message.permission = (object.permission !== undefined && object.permission !== null) - ? ParticipantPermission.fromPartial(object.permission) - : undefined; - message.region = object.region ?? ""; - message.isPublisher = object.isPublisher ?? false; - return message; - }, -}; - -function createBaseEncryption(): Encryption { - return {}; -} - -export const Encryption = { - encode(_: Encryption, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): Encryption { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseEncryption(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(_: any): Encryption { - return {}; - }, - - toJSON(_: Encryption): unknown { - const obj: any = {}; - return obj; - }, - - create, I>>(base?: I): Encryption { - return Encryption.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(_: I): Encryption { - const message = createBaseEncryption(); - return message; - }, -}; - -function createBaseSimulcastCodecInfo(): SimulcastCodecInfo { - return { mimeType: "", mid: "", cid: "", layers: [] }; -} - -export const SimulcastCodecInfo = { - encode(message: SimulcastCodecInfo, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.mimeType !== "") { - writer.uint32(10).string(message.mimeType); - } - if (message.mid !== "") { - writer.uint32(18).string(message.mid); - } - if (message.cid !== "") { - writer.uint32(26).string(message.cid); - } - for (const v of message.layers) { - VideoLayer.encode(v!, writer.uint32(34).fork()).ldelim(); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): SimulcastCodecInfo { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseSimulcastCodecInfo(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.mimeType = reader.string(); - continue; - case 2: - if (tag !== 18) { - break; - } - - message.mid = reader.string(); - continue; - case 3: - if (tag !== 26) { - break; - } - - message.cid = reader.string(); - continue; - case 4: - if (tag !== 34) { - break; - } - - message.layers.push(VideoLayer.decode(reader, reader.uint32())); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): SimulcastCodecInfo { - return { - mimeType: isSet(object.mimeType) ? globalThis.String(object.mimeType) : "", - mid: isSet(object.mid) ? globalThis.String(object.mid) : "", - cid: isSet(object.cid) ? globalThis.String(object.cid) : "", - layers: globalThis.Array.isArray(object?.layers) ? object.layers.map((e: any) => VideoLayer.fromJSON(e)) : [], - }; - }, - - toJSON(message: SimulcastCodecInfo): unknown { - const obj: any = {}; - if (message.mimeType !== "") { - obj.mimeType = message.mimeType; - } - if (message.mid !== "") { - obj.mid = message.mid; - } - if (message.cid !== "") { - obj.cid = message.cid; - } - if (message.layers?.length) { - obj.layers = message.layers.map((e) => VideoLayer.toJSON(e)); - } - return obj; - }, - - create, I>>(base?: I): SimulcastCodecInfo { - return SimulcastCodecInfo.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): SimulcastCodecInfo { - const message = createBaseSimulcastCodecInfo(); - message.mimeType = object.mimeType ?? ""; - message.mid = object.mid ?? ""; - message.cid = object.cid ?? ""; - message.layers = object.layers?.map((e) => VideoLayer.fromPartial(e)) || []; - return message; - }, -}; - -function createBaseTrackInfo(): TrackInfo { - return { - sid: "", - type: 0, - name: "", - muted: false, - width: 0, - height: 0, - simulcast: false, - disableDtx: false, - source: 0, - layers: [], - mimeType: "", - mid: "", - codecs: [], - stereo: false, - disableRed: false, - encryption: 0, - stream: "", - }; -} - -export const TrackInfo = { - encode(message: TrackInfo, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.sid !== "") { - writer.uint32(10).string(message.sid); - } - if (message.type !== 0) { - writer.uint32(16).int32(message.type); - } - if (message.name !== "") { - writer.uint32(26).string(message.name); - } - if (message.muted === true) { - writer.uint32(32).bool(message.muted); - } - if (message.width !== 0) { - writer.uint32(40).uint32(message.width); - } - if (message.height !== 0) { - writer.uint32(48).uint32(message.height); - } - if (message.simulcast === true) { - writer.uint32(56).bool(message.simulcast); - } - if (message.disableDtx === true) { - writer.uint32(64).bool(message.disableDtx); - } - if (message.source !== 0) { - writer.uint32(72).int32(message.source); - } - for (const v of message.layers) { - VideoLayer.encode(v!, writer.uint32(82).fork()).ldelim(); - } - if (message.mimeType !== "") { - writer.uint32(90).string(message.mimeType); - } - if (message.mid !== "") { - writer.uint32(98).string(message.mid); - } - for (const v of message.codecs) { - SimulcastCodecInfo.encode(v!, writer.uint32(106).fork()).ldelim(); - } - if (message.stereo === true) { - writer.uint32(112).bool(message.stereo); - } - if (message.disableRed === true) { - writer.uint32(120).bool(message.disableRed); - } - if (message.encryption !== 0) { - writer.uint32(128).int32(message.encryption); - } - if (message.stream !== "") { - writer.uint32(138).string(message.stream); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): TrackInfo { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseTrackInfo(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.sid = reader.string(); - continue; - case 2: - if (tag !== 16) { - break; - } - - message.type = reader.int32() as any; - continue; - case 3: - if (tag !== 26) { - break; - } - - message.name = reader.string(); - continue; - case 4: - if (tag !== 32) { - break; - } - - message.muted = reader.bool(); - continue; - case 5: - if (tag !== 40) { - break; - } - - message.width = reader.uint32(); - continue; - case 6: - if (tag !== 48) { - break; - } - - message.height = reader.uint32(); - continue; - case 7: - if (tag !== 56) { - break; - } - - message.simulcast = reader.bool(); - continue; - case 8: - if (tag !== 64) { - break; - } - - message.disableDtx = reader.bool(); - continue; - case 9: - if (tag !== 72) { - break; - } - - message.source = reader.int32() as any; - continue; - case 10: - if (tag !== 82) { - break; - } - - message.layers.push(VideoLayer.decode(reader, reader.uint32())); - continue; - case 11: - if (tag !== 90) { - break; - } - - message.mimeType = reader.string(); - continue; - case 12: - if (tag !== 98) { - break; - } - - message.mid = reader.string(); - continue; - case 13: - if (tag !== 106) { - break; - } - - message.codecs.push(SimulcastCodecInfo.decode(reader, reader.uint32())); - continue; - case 14: - if (tag !== 112) { - break; - } - - message.stereo = reader.bool(); - continue; - case 15: - if (tag !== 120) { - break; - } - - message.disableRed = reader.bool(); - continue; - case 16: - if (tag !== 128) { - break; - } - - message.encryption = reader.int32() as any; - continue; - case 17: - if (tag !== 138) { - break; - } - - message.stream = reader.string(); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): TrackInfo { - return { - sid: isSet(object.sid) ? globalThis.String(object.sid) : "", - type: isSet(object.type) ? trackTypeFromJSON(object.type) : 0, - name: isSet(object.name) ? globalThis.String(object.name) : "", - muted: isSet(object.muted) ? globalThis.Boolean(object.muted) : false, - width: isSet(object.width) ? globalThis.Number(object.width) : 0, - height: isSet(object.height) ? globalThis.Number(object.height) : 0, - simulcast: isSet(object.simulcast) ? globalThis.Boolean(object.simulcast) : false, - disableDtx: isSet(object.disableDtx) ? globalThis.Boolean(object.disableDtx) : false, - source: isSet(object.source) ? trackSourceFromJSON(object.source) : 0, - layers: globalThis.Array.isArray(object?.layers) ? object.layers.map((e: any) => VideoLayer.fromJSON(e)) : [], - mimeType: isSet(object.mimeType) ? globalThis.String(object.mimeType) : "", - mid: isSet(object.mid) ? globalThis.String(object.mid) : "", - codecs: globalThis.Array.isArray(object?.codecs) - ? object.codecs.map((e: any) => SimulcastCodecInfo.fromJSON(e)) - : [], - stereo: isSet(object.stereo) ? globalThis.Boolean(object.stereo) : false, - disableRed: isSet(object.disableRed) ? globalThis.Boolean(object.disableRed) : false, - encryption: isSet(object.encryption) ? encryption_TypeFromJSON(object.encryption) : 0, - stream: isSet(object.stream) ? globalThis.String(object.stream) : "", - }; - }, - - toJSON(message: TrackInfo): unknown { - const obj: any = {}; - if (message.sid !== "") { - obj.sid = message.sid; - } - if (message.type !== 0) { - obj.type = trackTypeToJSON(message.type); - } - if (message.name !== "") { - obj.name = message.name; - } - if (message.muted === true) { - obj.muted = message.muted; - } - if (message.width !== 0) { - obj.width = Math.round(message.width); - } - if (message.height !== 0) { - obj.height = Math.round(message.height); - } - if (message.simulcast === true) { - obj.simulcast = message.simulcast; - } - if (message.disableDtx === true) { - obj.disableDtx = message.disableDtx; - } - if (message.source !== 0) { - obj.source = trackSourceToJSON(message.source); - } - if (message.layers?.length) { - obj.layers = message.layers.map((e) => VideoLayer.toJSON(e)); - } - if (message.mimeType !== "") { - obj.mimeType = message.mimeType; - } - if (message.mid !== "") { - obj.mid = message.mid; - } - if (message.codecs?.length) { - obj.codecs = message.codecs.map((e) => SimulcastCodecInfo.toJSON(e)); - } - if (message.stereo === true) { - obj.stereo = message.stereo; - } - if (message.disableRed === true) { - obj.disableRed = message.disableRed; - } - if (message.encryption !== 0) { - obj.encryption = encryption_TypeToJSON(message.encryption); - } - if (message.stream !== "") { - obj.stream = message.stream; - } - return obj; - }, - - create, I>>(base?: I): TrackInfo { - return TrackInfo.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): TrackInfo { - const message = createBaseTrackInfo(); - message.sid = object.sid ?? ""; - message.type = object.type ?? 0; - message.name = object.name ?? ""; - message.muted = object.muted ?? false; - message.width = object.width ?? 0; - message.height = object.height ?? 0; - message.simulcast = object.simulcast ?? false; - message.disableDtx = object.disableDtx ?? false; - message.source = object.source ?? 0; - message.layers = object.layers?.map((e) => VideoLayer.fromPartial(e)) || []; - message.mimeType = object.mimeType ?? ""; - message.mid = object.mid ?? ""; - message.codecs = object.codecs?.map((e) => SimulcastCodecInfo.fromPartial(e)) || []; - message.stereo = object.stereo ?? false; - message.disableRed = object.disableRed ?? false; - message.encryption = object.encryption ?? 0; - message.stream = object.stream ?? ""; - return message; - }, -}; - -function createBaseVideoLayer(): VideoLayer { - return { quality: 0, width: 0, height: 0, bitrate: 0, ssrc: 0 }; -} - -export const VideoLayer = { - encode(message: VideoLayer, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.quality !== 0) { - writer.uint32(8).int32(message.quality); - } - if (message.width !== 0) { - writer.uint32(16).uint32(message.width); - } - if (message.height !== 0) { - writer.uint32(24).uint32(message.height); - } - if (message.bitrate !== 0) { - writer.uint32(32).uint32(message.bitrate); - } - if (message.ssrc !== 0) { - writer.uint32(40).uint32(message.ssrc); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): VideoLayer { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseVideoLayer(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 8) { - break; - } - - message.quality = reader.int32() as any; - continue; - case 2: - if (tag !== 16) { - break; - } - - message.width = reader.uint32(); - continue; - case 3: - if (tag !== 24) { - break; - } - - message.height = reader.uint32(); - continue; - case 4: - if (tag !== 32) { - break; - } - - message.bitrate = reader.uint32(); - continue; - case 5: - if (tag !== 40) { - break; - } - - message.ssrc = reader.uint32(); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): VideoLayer { - return { - quality: isSet(object.quality) ? videoQualityFromJSON(object.quality) : 0, - width: isSet(object.width) ? globalThis.Number(object.width) : 0, - height: isSet(object.height) ? globalThis.Number(object.height) : 0, - bitrate: isSet(object.bitrate) ? globalThis.Number(object.bitrate) : 0, - ssrc: isSet(object.ssrc) ? globalThis.Number(object.ssrc) : 0, - }; - }, - - toJSON(message: VideoLayer): unknown { - const obj: any = {}; - if (message.quality !== 0) { - obj.quality = videoQualityToJSON(message.quality); - } - if (message.width !== 0) { - obj.width = Math.round(message.width); - } - if (message.height !== 0) { - obj.height = Math.round(message.height); - } - if (message.bitrate !== 0) { - obj.bitrate = Math.round(message.bitrate); - } - if (message.ssrc !== 0) { - obj.ssrc = Math.round(message.ssrc); - } - return obj; - }, - - create, I>>(base?: I): VideoLayer { - return VideoLayer.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): VideoLayer { - const message = createBaseVideoLayer(); - message.quality = object.quality ?? 0; - message.width = object.width ?? 0; - message.height = object.height ?? 0; - message.bitrate = object.bitrate ?? 0; - message.ssrc = object.ssrc ?? 0; - return message; - }, -}; - -function createBaseDataPacket(): DataPacket { - return { kind: 0, user: undefined, speaker: undefined, persistableUser: undefined }; -} - -export const DataPacket = { - encode(message: DataPacket, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.kind !== 0) { - writer.uint32(8).int32(message.kind); - } - if (message.user !== undefined) { - UserPacket.encode(message.user, writer.uint32(18).fork()).ldelim(); - } - if (message.speaker !== undefined) { - ActiveSpeakerUpdate.encode(message.speaker, writer.uint32(26).fork()).ldelim(); - } - if (message.persistableUser !== undefined) { - PersistableUserPacket.encode(message.persistableUser, writer.uint32(34).fork()).ldelim(); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): DataPacket { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseDataPacket(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 8) { - break; - } - - message.kind = reader.int32() as any; - continue; - case 2: - if (tag !== 18) { - break; - } - - message.user = UserPacket.decode(reader, reader.uint32()); - continue; - case 3: - if (tag !== 26) { - break; - } - - message.speaker = ActiveSpeakerUpdate.decode(reader, reader.uint32()); - continue; - case 4: - if (tag !== 34) { - break; - } - - message.persistableUser = PersistableUserPacket.decode(reader, reader.uint32()); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): DataPacket { - return { - kind: isSet(object.kind) ? dataPacket_KindFromJSON(object.kind) : 0, - user: isSet(object.user) ? UserPacket.fromJSON(object.user) : undefined, - speaker: isSet(object.speaker) ? ActiveSpeakerUpdate.fromJSON(object.speaker) : undefined, - persistableUser: isSet(object.persistableUser) - ? PersistableUserPacket.fromJSON(object.persistableUser) - : undefined, - }; - }, - - toJSON(message: DataPacket): unknown { - const obj: any = {}; - if (message.kind !== 0) { - obj.kind = dataPacket_KindToJSON(message.kind); - } - if (message.user !== undefined) { - obj.user = UserPacket.toJSON(message.user); - } - if (message.speaker !== undefined) { - obj.speaker = ActiveSpeakerUpdate.toJSON(message.speaker); - } - if (message.persistableUser !== undefined) { - obj.persistableUser = PersistableUserPacket.toJSON(message.persistableUser); - } - return obj; - }, - - create, I>>(base?: I): DataPacket { - return DataPacket.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): DataPacket { - const message = createBaseDataPacket(); - message.kind = object.kind ?? 0; - message.user = (object.user !== undefined && object.user !== null) - ? UserPacket.fromPartial(object.user) - : undefined; - message.speaker = (object.speaker !== undefined && object.speaker !== null) - ? ActiveSpeakerUpdate.fromPartial(object.speaker) - : undefined; - message.persistableUser = (object.persistableUser !== undefined && object.persistableUser !== null) - ? PersistableUserPacket.fromPartial(object.persistableUser) - : undefined; - return message; - }, -}; - -function createBaseActiveSpeakerUpdate(): ActiveSpeakerUpdate { - return { speakers: [] }; -} - -export const ActiveSpeakerUpdate = { - encode(message: ActiveSpeakerUpdate, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - for (const v of message.speakers) { - SpeakerInfo.encode(v!, writer.uint32(10).fork()).ldelim(); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): ActiveSpeakerUpdate { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseActiveSpeakerUpdate(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.speakers.push(SpeakerInfo.decode(reader, reader.uint32())); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): ActiveSpeakerUpdate { - return { - speakers: globalThis.Array.isArray(object?.speakers) - ? object.speakers.map((e: any) => SpeakerInfo.fromJSON(e)) - : [], - }; - }, - - toJSON(message: ActiveSpeakerUpdate): unknown { - const obj: any = {}; - if (message.speakers?.length) { - obj.speakers = message.speakers.map((e) => SpeakerInfo.toJSON(e)); - } - return obj; - }, - - create, I>>(base?: I): ActiveSpeakerUpdate { - return ActiveSpeakerUpdate.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): ActiveSpeakerUpdate { - const message = createBaseActiveSpeakerUpdate(); - message.speakers = object.speakers?.map((e) => SpeakerInfo.fromPartial(e)) || []; - return message; - }, -}; - -function createBaseSpeakerInfo(): SpeakerInfo { - return { sid: "", level: 0, active: false }; -} - -export const SpeakerInfo = { - encode(message: SpeakerInfo, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.sid !== "") { - writer.uint32(10).string(message.sid); - } - if (message.level !== 0) { - writer.uint32(21).float(message.level); - } - if (message.active === true) { - writer.uint32(24).bool(message.active); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): SpeakerInfo { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseSpeakerInfo(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.sid = reader.string(); - continue; - case 2: - if (tag !== 21) { - break; - } - - message.level = reader.float(); - continue; - case 3: - if (tag !== 24) { - break; - } - - message.active = reader.bool(); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): SpeakerInfo { - return { - sid: isSet(object.sid) ? globalThis.String(object.sid) : "", - level: isSet(object.level) ? globalThis.Number(object.level) : 0, - active: isSet(object.active) ? globalThis.Boolean(object.active) : false, - }; - }, - - toJSON(message: SpeakerInfo): unknown { - const obj: any = {}; - if (message.sid !== "") { - obj.sid = message.sid; - } - if (message.level !== 0) { - obj.level = message.level; - } - if (message.active === true) { - obj.active = message.active; - } - return obj; - }, - - create, I>>(base?: I): SpeakerInfo { - return SpeakerInfo.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): SpeakerInfo { - const message = createBaseSpeakerInfo(); - message.sid = object.sid ?? ""; - message.level = object.level ?? 0; - message.active = object.active ?? false; - return message; - }, -}; - -function createBaseUserPacket(): UserPacket { - return { - participantSid: "", - participantIdentity: "", - payload: new Uint8Array(0), - destinationSids: [], - destinationIdentities: [], - topic: undefined, - }; -} - -export const UserPacket = { - encode(message: UserPacket, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.participantSid !== "") { - writer.uint32(10).string(message.participantSid); - } - if (message.participantIdentity !== "") { - writer.uint32(42).string(message.participantIdentity); - } - if (message.payload.length !== 0) { - writer.uint32(18).bytes(message.payload); - } - for (const v of message.destinationSids) { - writer.uint32(26).string(v!); - } - for (const v of message.destinationIdentities) { - writer.uint32(50).string(v!); - } - if (message.topic !== undefined) { - writer.uint32(34).string(message.topic); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): UserPacket { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseUserPacket(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.participantSid = reader.string(); - continue; - case 5: - if (tag !== 42) { - break; - } - - message.participantIdentity = reader.string(); - continue; - case 2: - if (tag !== 18) { - break; - } - - message.payload = reader.bytes(); - continue; - case 3: - if (tag !== 26) { - break; - } - - message.destinationSids.push(reader.string()); - continue; - case 6: - if (tag !== 50) { - break; - } - - message.destinationIdentities.push(reader.string()); - continue; - case 4: - if (tag !== 34) { - break; - } - - message.topic = reader.string(); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): UserPacket { - return { - participantSid: isSet(object.participantSid) ? globalThis.String(object.participantSid) : "", - participantIdentity: isSet(object.participantIdentity) ? globalThis.String(object.participantIdentity) : "", - payload: isSet(object.payload) ? bytesFromBase64(object.payload) : new Uint8Array(0), - destinationSids: globalThis.Array.isArray(object?.destinationSids) - ? object.destinationSids.map((e: any) => globalThis.String(e)) - : [], - destinationIdentities: globalThis.Array.isArray(object?.destinationIdentities) - ? object.destinationIdentities.map((e: any) => globalThis.String(e)) - : [], - topic: isSet(object.topic) ? globalThis.String(object.topic) : undefined, - }; - }, - - toJSON(message: UserPacket): unknown { - const obj: any = {}; - if (message.participantSid !== "") { - obj.participantSid = message.participantSid; - } - if (message.participantIdentity !== "") { - obj.participantIdentity = message.participantIdentity; - } - if (message.payload.length !== 0) { - obj.payload = base64FromBytes(message.payload); - } - if (message.destinationSids?.length) { - obj.destinationSids = message.destinationSids; - } - if (message.destinationIdentities?.length) { - obj.destinationIdentities = message.destinationIdentities; - } - if (message.topic !== undefined) { - obj.topic = message.topic; - } - return obj; - }, - - create, I>>(base?: I): UserPacket { - return UserPacket.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): UserPacket { - const message = createBaseUserPacket(); - message.participantSid = object.participantSid ?? ""; - message.participantIdentity = object.participantIdentity ?? ""; - message.payload = object.payload ?? new Uint8Array(0); - message.destinationSids = object.destinationSids?.map((e) => e) || []; - message.destinationIdentities = object.destinationIdentities?.map((e) => e) || []; - message.topic = object.topic ?? undefined; - return message; - }, -}; - -function createBasePersistableUserPacket(): PersistableUserPacket { - return { - participantSid: "", - participantIdentity: "", - participantName: "", - payload: new Uint8Array(0), - destinationSids: [], - destinationIdentities: [], - topic: undefined, - timestamp: 0, - }; -} - -export const PersistableUserPacket = { - encode(message: PersistableUserPacket, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.participantSid !== "") { - writer.uint32(10).string(message.participantSid); - } - if (message.participantIdentity !== "") { - writer.uint32(42).string(message.participantIdentity); - } - if (message.participantName !== "") { - writer.uint32(66).string(message.participantName); - } - if (message.payload.length !== 0) { - writer.uint32(18).bytes(message.payload); - } - for (const v of message.destinationSids) { - writer.uint32(26).string(v!); - } - for (const v of message.destinationIdentities) { - writer.uint32(50).string(v!); - } - if (message.topic !== undefined) { - writer.uint32(34).string(message.topic); - } - if (message.timestamp !== 0) { - writer.uint32(56).int64(message.timestamp); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): PersistableUserPacket { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBasePersistableUserPacket(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.participantSid = reader.string(); - continue; - case 5: - if (tag !== 42) { - break; - } - - message.participantIdentity = reader.string(); - continue; - case 8: - if (tag !== 66) { - break; - } - - message.participantName = reader.string(); - continue; - case 2: - if (tag !== 18) { - break; - } - - message.payload = reader.bytes(); - continue; - case 3: - if (tag !== 26) { - break; - } - - message.destinationSids.push(reader.string()); - continue; - case 6: - if (tag !== 50) { - break; - } - - message.destinationIdentities.push(reader.string()); - continue; - case 4: - if (tag !== 34) { - break; - } - - message.topic = reader.string(); - continue; - case 7: - if (tag !== 56) { - break; - } - - message.timestamp = longToNumber(reader.int64() as Long); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): PersistableUserPacket { - return { - participantSid: isSet(object.participantSid) ? globalThis.String(object.participantSid) : "", - participantIdentity: isSet(object.participantIdentity) ? globalThis.String(object.participantIdentity) : "", - participantName: isSet(object.participantName) ? globalThis.String(object.participantName) : "", - payload: isSet(object.payload) ? bytesFromBase64(object.payload) : new Uint8Array(0), - destinationSids: globalThis.Array.isArray(object?.destinationSids) - ? object.destinationSids.map((e: any) => globalThis.String(e)) - : [], - destinationIdentities: globalThis.Array.isArray(object?.destinationIdentities) - ? object.destinationIdentities.map((e: any) => globalThis.String(e)) - : [], - topic: isSet(object.topic) ? globalThis.String(object.topic) : undefined, - timestamp: isSet(object.timestamp) ? globalThis.Number(object.timestamp) : 0, - }; - }, - - toJSON(message: PersistableUserPacket): unknown { - const obj: any = {}; - if (message.participantSid !== "") { - obj.participantSid = message.participantSid; - } - if (message.participantIdentity !== "") { - obj.participantIdentity = message.participantIdentity; - } - if (message.participantName !== "") { - obj.participantName = message.participantName; - } - if (message.payload.length !== 0) { - obj.payload = base64FromBytes(message.payload); - } - if (message.destinationSids?.length) { - obj.destinationSids = message.destinationSids; - } - if (message.destinationIdentities?.length) { - obj.destinationIdentities = message.destinationIdentities; - } - if (message.topic !== undefined) { - obj.topic = message.topic; - } - if (message.timestamp !== 0) { - obj.timestamp = Math.round(message.timestamp); - } - return obj; - }, - - create, I>>(base?: I): PersistableUserPacket { - return PersistableUserPacket.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): PersistableUserPacket { - const message = createBasePersistableUserPacket(); - message.participantSid = object.participantSid ?? ""; - message.participantIdentity = object.participantIdentity ?? ""; - message.participantName = object.participantName ?? ""; - message.payload = object.payload ?? new Uint8Array(0); - message.destinationSids = object.destinationSids?.map((e) => e) || []; - message.destinationIdentities = object.destinationIdentities?.map((e) => e) || []; - message.topic = object.topic ?? undefined; - message.timestamp = object.timestamp ?? 0; - return message; - }, -}; - -function createBasePersistableUserData(): PersistableUserData { - return { packets: [] }; -} - -export const PersistableUserData = { - encode(message: PersistableUserData, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - for (const v of message.packets) { - PersistableUserPacket.encode(v!, writer.uint32(10).fork()).ldelim(); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): PersistableUserData { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBasePersistableUserData(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.packets.push(PersistableUserPacket.decode(reader, reader.uint32())); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): PersistableUserData { - return { - packets: globalThis.Array.isArray(object?.packets) - ? object.packets.map((e: any) => PersistableUserPacket.fromJSON(e)) - : [], - }; - }, - - toJSON(message: PersistableUserData): unknown { - const obj: any = {}; - if (message.packets?.length) { - obj.packets = message.packets.map((e) => PersistableUserPacket.toJSON(e)); - } - return obj; - }, - - create, I>>(base?: I): PersistableUserData { - return PersistableUserData.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): PersistableUserData { - const message = createBasePersistableUserData(); - message.packets = object.packets?.map((e) => PersistableUserPacket.fromPartial(e)) || []; - return message; - }, -}; - -function createBaseParticipantTracks(): ParticipantTracks { - return { participantSid: "", trackSids: [] }; -} - -export const ParticipantTracks = { - encode(message: ParticipantTracks, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.participantSid !== "") { - writer.uint32(10).string(message.participantSid); - } - for (const v of message.trackSids) { - writer.uint32(18).string(v!); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): ParticipantTracks { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseParticipantTracks(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.participantSid = reader.string(); - continue; - case 2: - if (tag !== 18) { - break; - } - - message.trackSids.push(reader.string()); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): ParticipantTracks { - return { - participantSid: isSet(object.participantSid) ? globalThis.String(object.participantSid) : "", - trackSids: globalThis.Array.isArray(object?.trackSids) - ? object.trackSids.map((e: any) => globalThis.String(e)) - : [], - }; - }, - - toJSON(message: ParticipantTracks): unknown { - const obj: any = {}; - if (message.participantSid !== "") { - obj.participantSid = message.participantSid; - } - if (message.trackSids?.length) { - obj.trackSids = message.trackSids; - } - return obj; - }, - - create, I>>(base?: I): ParticipantTracks { - return ParticipantTracks.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): ParticipantTracks { - const message = createBaseParticipantTracks(); - message.participantSid = object.participantSid ?? ""; - message.trackSids = object.trackSids?.map((e) => e) || []; - return message; - }, -}; - -function createBaseServerInfo(): ServerInfo { - return { edition: 0, version: "", protocol: 0, region: "", nodeId: "", debugInfo: "" }; -} - -export const ServerInfo = { - encode(message: ServerInfo, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.edition !== 0) { - writer.uint32(8).int32(message.edition); - } - if (message.version !== "") { - writer.uint32(18).string(message.version); - } - if (message.protocol !== 0) { - writer.uint32(24).int32(message.protocol); - } - if (message.region !== "") { - writer.uint32(34).string(message.region); - } - if (message.nodeId !== "") { - writer.uint32(42).string(message.nodeId); - } - if (message.debugInfo !== "") { - writer.uint32(50).string(message.debugInfo); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): ServerInfo { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseServerInfo(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 8) { - break; - } - - message.edition = reader.int32() as any; - continue; - case 2: - if (tag !== 18) { - break; - } - - message.version = reader.string(); - continue; - case 3: - if (tag !== 24) { - break; - } - - message.protocol = reader.int32(); - continue; - case 4: - if (tag !== 34) { - break; - } - - message.region = reader.string(); - continue; - case 5: - if (tag !== 42) { - break; - } - - message.nodeId = reader.string(); - continue; - case 6: - if (tag !== 50) { - break; - } - - message.debugInfo = reader.string(); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): ServerInfo { - return { - edition: isSet(object.edition) ? serverInfo_EditionFromJSON(object.edition) : 0, - version: isSet(object.version) ? globalThis.String(object.version) : "", - protocol: isSet(object.protocol) ? globalThis.Number(object.protocol) : 0, - region: isSet(object.region) ? globalThis.String(object.region) : "", - nodeId: isSet(object.nodeId) ? globalThis.String(object.nodeId) : "", - debugInfo: isSet(object.debugInfo) ? globalThis.String(object.debugInfo) : "", - }; - }, - - toJSON(message: ServerInfo): unknown { - const obj: any = {}; - if (message.edition !== 0) { - obj.edition = serverInfo_EditionToJSON(message.edition); - } - if (message.version !== "") { - obj.version = message.version; - } - if (message.protocol !== 0) { - obj.protocol = Math.round(message.protocol); - } - if (message.region !== "") { - obj.region = message.region; - } - if (message.nodeId !== "") { - obj.nodeId = message.nodeId; - } - if (message.debugInfo !== "") { - obj.debugInfo = message.debugInfo; - } - return obj; - }, - - create, I>>(base?: I): ServerInfo { - return ServerInfo.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): ServerInfo { - const message = createBaseServerInfo(); - message.edition = object.edition ?? 0; - message.version = object.version ?? ""; - message.protocol = object.protocol ?? 0; - message.region = object.region ?? ""; - message.nodeId = object.nodeId ?? ""; - message.debugInfo = object.debugInfo ?? ""; - return message; - }, -}; - -function createBaseClientInfo(): ClientInfo { - return { - sdk: 0, - version: "", - protocol: 0, - os: "", - osVersion: "", - deviceModel: "", - browser: "", - browserVersion: "", - address: "", - network: "", - }; -} - -export const ClientInfo = { - encode(message: ClientInfo, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.sdk !== 0) { - writer.uint32(8).int32(message.sdk); - } - if (message.version !== "") { - writer.uint32(18).string(message.version); - } - if (message.protocol !== 0) { - writer.uint32(24).int32(message.protocol); - } - if (message.os !== "") { - writer.uint32(34).string(message.os); - } - if (message.osVersion !== "") { - writer.uint32(42).string(message.osVersion); - } - if (message.deviceModel !== "") { - writer.uint32(50).string(message.deviceModel); - } - if (message.browser !== "") { - writer.uint32(58).string(message.browser); - } - if (message.browserVersion !== "") { - writer.uint32(66).string(message.browserVersion); - } - if (message.address !== "") { - writer.uint32(74).string(message.address); - } - if (message.network !== "") { - writer.uint32(82).string(message.network); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): ClientInfo { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseClientInfo(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 8) { - break; - } - - message.sdk = reader.int32() as any; - continue; - case 2: - if (tag !== 18) { - break; - } - - message.version = reader.string(); - continue; - case 3: - if (tag !== 24) { - break; - } - - message.protocol = reader.int32(); - continue; - case 4: - if (tag !== 34) { - break; - } - - message.os = reader.string(); - continue; - case 5: - if (tag !== 42) { - break; - } - - message.osVersion = reader.string(); - continue; - case 6: - if (tag !== 50) { - break; - } - - message.deviceModel = reader.string(); - continue; - case 7: - if (tag !== 58) { - break; - } - - message.browser = reader.string(); - continue; - case 8: - if (tag !== 66) { - break; - } - - message.browserVersion = reader.string(); - continue; - case 9: - if (tag !== 74) { - break; - } - - message.address = reader.string(); - continue; - case 10: - if (tag !== 82) { - break; - } - - message.network = reader.string(); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): ClientInfo { - return { - sdk: isSet(object.sdk) ? clientInfo_SDKFromJSON(object.sdk) : 0, - version: isSet(object.version) ? globalThis.String(object.version) : "", - protocol: isSet(object.protocol) ? globalThis.Number(object.protocol) : 0, - os: isSet(object.os) ? globalThis.String(object.os) : "", - osVersion: isSet(object.osVersion) ? globalThis.String(object.osVersion) : "", - deviceModel: isSet(object.deviceModel) ? globalThis.String(object.deviceModel) : "", - browser: isSet(object.browser) ? globalThis.String(object.browser) : "", - browserVersion: isSet(object.browserVersion) ? globalThis.String(object.browserVersion) : "", - address: isSet(object.address) ? globalThis.String(object.address) : "", - network: isSet(object.network) ? globalThis.String(object.network) : "", - }; - }, - - toJSON(message: ClientInfo): unknown { - const obj: any = {}; - if (message.sdk !== 0) { - obj.sdk = clientInfo_SDKToJSON(message.sdk); - } - if (message.version !== "") { - obj.version = message.version; - } - if (message.protocol !== 0) { - obj.protocol = Math.round(message.protocol); - } - if (message.os !== "") { - obj.os = message.os; - } - if (message.osVersion !== "") { - obj.osVersion = message.osVersion; - } - if (message.deviceModel !== "") { - obj.deviceModel = message.deviceModel; - } - if (message.browser !== "") { - obj.browser = message.browser; - } - if (message.browserVersion !== "") { - obj.browserVersion = message.browserVersion; - } - if (message.address !== "") { - obj.address = message.address; - } - if (message.network !== "") { - obj.network = message.network; - } - return obj; - }, - - create, I>>(base?: I): ClientInfo { - return ClientInfo.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): ClientInfo { - const message = createBaseClientInfo(); - message.sdk = object.sdk ?? 0; - message.version = object.version ?? ""; - message.protocol = object.protocol ?? 0; - message.os = object.os ?? ""; - message.osVersion = object.osVersion ?? ""; - message.deviceModel = object.deviceModel ?? ""; - message.browser = object.browser ?? ""; - message.browserVersion = object.browserVersion ?? ""; - message.address = object.address ?? ""; - message.network = object.network ?? ""; - return message; - }, -}; - -function createBaseClientConfiguration(): ClientConfiguration { - return { video: undefined, screen: undefined, resumeConnection: 0, disabledCodecs: undefined, forceRelay: 0 }; -} - -export const ClientConfiguration = { - encode(message: ClientConfiguration, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.video !== undefined) { - VideoConfiguration.encode(message.video, writer.uint32(10).fork()).ldelim(); - } - if (message.screen !== undefined) { - VideoConfiguration.encode(message.screen, writer.uint32(18).fork()).ldelim(); - } - if (message.resumeConnection !== 0) { - writer.uint32(24).int32(message.resumeConnection); - } - if (message.disabledCodecs !== undefined) { - DisabledCodecs.encode(message.disabledCodecs, writer.uint32(34).fork()).ldelim(); - } - if (message.forceRelay !== 0) { - writer.uint32(40).int32(message.forceRelay); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): ClientConfiguration { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseClientConfiguration(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.video = VideoConfiguration.decode(reader, reader.uint32()); - continue; - case 2: - if (tag !== 18) { - break; - } - - message.screen = VideoConfiguration.decode(reader, reader.uint32()); - continue; - case 3: - if (tag !== 24) { - break; - } - - message.resumeConnection = reader.int32() as any; - continue; - case 4: - if (tag !== 34) { - break; - } - - message.disabledCodecs = DisabledCodecs.decode(reader, reader.uint32()); - continue; - case 5: - if (tag !== 40) { - break; - } - - message.forceRelay = reader.int32() as any; - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): ClientConfiguration { - return { - video: isSet(object.video) ? VideoConfiguration.fromJSON(object.video) : undefined, - screen: isSet(object.screen) ? VideoConfiguration.fromJSON(object.screen) : undefined, - resumeConnection: isSet(object.resumeConnection) ? clientConfigSettingFromJSON(object.resumeConnection) : 0, - disabledCodecs: isSet(object.disabledCodecs) ? DisabledCodecs.fromJSON(object.disabledCodecs) : undefined, - forceRelay: isSet(object.forceRelay) ? clientConfigSettingFromJSON(object.forceRelay) : 0, - }; - }, - - toJSON(message: ClientConfiguration): unknown { - const obj: any = {}; - if (message.video !== undefined) { - obj.video = VideoConfiguration.toJSON(message.video); - } - if (message.screen !== undefined) { - obj.screen = VideoConfiguration.toJSON(message.screen); - } - if (message.resumeConnection !== 0) { - obj.resumeConnection = clientConfigSettingToJSON(message.resumeConnection); - } - if (message.disabledCodecs !== undefined) { - obj.disabledCodecs = DisabledCodecs.toJSON(message.disabledCodecs); - } - if (message.forceRelay !== 0) { - obj.forceRelay = clientConfigSettingToJSON(message.forceRelay); - } - return obj; - }, - - create, I>>(base?: I): ClientConfiguration { - return ClientConfiguration.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): ClientConfiguration { - const message = createBaseClientConfiguration(); - message.video = (object.video !== undefined && object.video !== null) - ? VideoConfiguration.fromPartial(object.video) - : undefined; - message.screen = (object.screen !== undefined && object.screen !== null) - ? VideoConfiguration.fromPartial(object.screen) - : undefined; - message.resumeConnection = object.resumeConnection ?? 0; - message.disabledCodecs = (object.disabledCodecs !== undefined && object.disabledCodecs !== null) - ? DisabledCodecs.fromPartial(object.disabledCodecs) - : undefined; - message.forceRelay = object.forceRelay ?? 0; - return message; - }, -}; - -function createBaseVideoConfiguration(): VideoConfiguration { - return { hardwareEncoder: 0 }; -} - -export const VideoConfiguration = { - encode(message: VideoConfiguration, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.hardwareEncoder !== 0) { - writer.uint32(8).int32(message.hardwareEncoder); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): VideoConfiguration { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseVideoConfiguration(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 8) { - break; - } - - message.hardwareEncoder = reader.int32() as any; - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): VideoConfiguration { - return { hardwareEncoder: isSet(object.hardwareEncoder) ? clientConfigSettingFromJSON(object.hardwareEncoder) : 0 }; - }, - - toJSON(message: VideoConfiguration): unknown { - const obj: any = {}; - if (message.hardwareEncoder !== 0) { - obj.hardwareEncoder = clientConfigSettingToJSON(message.hardwareEncoder); - } - return obj; - }, - - create, I>>(base?: I): VideoConfiguration { - return VideoConfiguration.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): VideoConfiguration { - const message = createBaseVideoConfiguration(); - message.hardwareEncoder = object.hardwareEncoder ?? 0; - return message; - }, -}; - -function createBaseDisabledCodecs(): DisabledCodecs { - return { codecs: [], publish: [] }; -} - -export const DisabledCodecs = { - encode(message: DisabledCodecs, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - for (const v of message.codecs) { - Codec.encode(v!, writer.uint32(10).fork()).ldelim(); - } - for (const v of message.publish) { - Codec.encode(v!, writer.uint32(18).fork()).ldelim(); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): DisabledCodecs { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseDisabledCodecs(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.codecs.push(Codec.decode(reader, reader.uint32())); - continue; - case 2: - if (tag !== 18) { - break; - } - - message.publish.push(Codec.decode(reader, reader.uint32())); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): DisabledCodecs { - return { - codecs: globalThis.Array.isArray(object?.codecs) ? object.codecs.map((e: any) => Codec.fromJSON(e)) : [], - publish: globalThis.Array.isArray(object?.publish) ? object.publish.map((e: any) => Codec.fromJSON(e)) : [], - }; - }, - - toJSON(message: DisabledCodecs): unknown { - const obj: any = {}; - if (message.codecs?.length) { - obj.codecs = message.codecs.map((e) => Codec.toJSON(e)); - } - if (message.publish?.length) { - obj.publish = message.publish.map((e) => Codec.toJSON(e)); - } - return obj; - }, - - create, I>>(base?: I): DisabledCodecs { - return DisabledCodecs.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): DisabledCodecs { - const message = createBaseDisabledCodecs(); - message.codecs = object.codecs?.map((e) => Codec.fromPartial(e)) || []; - message.publish = object.publish?.map((e) => Codec.fromPartial(e)) || []; - return message; - }, -}; - -function createBaseRTPDrift(): RTPDrift { - return { - startTime: undefined, - endTime: undefined, - duration: 0, - startTimestamp: 0, - endTimestamp: 0, - rtpClockTicks: 0, - driftSamples: 0, - driftMs: 0, - clockRate: 0, - }; -} - -export const RTPDrift = { - encode(message: RTPDrift, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.startTime !== undefined) { - Timestamp.encode(toTimestamp(message.startTime), writer.uint32(10).fork()).ldelim(); - } - if (message.endTime !== undefined) { - Timestamp.encode(toTimestamp(message.endTime), writer.uint32(18).fork()).ldelim(); - } - if (message.duration !== 0) { - writer.uint32(25).double(message.duration); - } - if (message.startTimestamp !== 0) { - writer.uint32(32).uint64(message.startTimestamp); - } - if (message.endTimestamp !== 0) { - writer.uint32(40).uint64(message.endTimestamp); - } - if (message.rtpClockTicks !== 0) { - writer.uint32(48).uint64(message.rtpClockTicks); - } - if (message.driftSamples !== 0) { - writer.uint32(56).int64(message.driftSamples); - } - if (message.driftMs !== 0) { - writer.uint32(65).double(message.driftMs); - } - if (message.clockRate !== 0) { - writer.uint32(73).double(message.clockRate); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): RTPDrift { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseRTPDrift(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.startTime = fromTimestamp(Timestamp.decode(reader, reader.uint32())); - continue; - case 2: - if (tag !== 18) { - break; - } - - message.endTime = fromTimestamp(Timestamp.decode(reader, reader.uint32())); - continue; - case 3: - if (tag !== 25) { - break; - } - - message.duration = reader.double(); - continue; - case 4: - if (tag !== 32) { - break; - } - - message.startTimestamp = longToNumber(reader.uint64() as Long); - continue; - case 5: - if (tag !== 40) { - break; - } - - message.endTimestamp = longToNumber(reader.uint64() as Long); - continue; - case 6: - if (tag !== 48) { - break; - } - - message.rtpClockTicks = longToNumber(reader.uint64() as Long); - continue; - case 7: - if (tag !== 56) { - break; - } - - message.driftSamples = longToNumber(reader.int64() as Long); - continue; - case 8: - if (tag !== 65) { - break; - } - - message.driftMs = reader.double(); - continue; - case 9: - if (tag !== 73) { - break; - } - - message.clockRate = reader.double(); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): RTPDrift { - return { - startTime: isSet(object.startTime) ? fromJsonTimestamp(object.startTime) : undefined, - endTime: isSet(object.endTime) ? fromJsonTimestamp(object.endTime) : undefined, - duration: isSet(object.duration) ? globalThis.Number(object.duration) : 0, - startTimestamp: isSet(object.startTimestamp) ? globalThis.Number(object.startTimestamp) : 0, - endTimestamp: isSet(object.endTimestamp) ? globalThis.Number(object.endTimestamp) : 0, - rtpClockTicks: isSet(object.rtpClockTicks) ? globalThis.Number(object.rtpClockTicks) : 0, - driftSamples: isSet(object.driftSamples) ? globalThis.Number(object.driftSamples) : 0, - driftMs: isSet(object.driftMs) ? globalThis.Number(object.driftMs) : 0, - clockRate: isSet(object.clockRate) ? globalThis.Number(object.clockRate) : 0, - }; - }, - - toJSON(message: RTPDrift): unknown { - const obj: any = {}; - if (message.startTime !== undefined) { - obj.startTime = message.startTime.toISOString(); - } - if (message.endTime !== undefined) { - obj.endTime = message.endTime.toISOString(); - } - if (message.duration !== 0) { - obj.duration = message.duration; - } - if (message.startTimestamp !== 0) { - obj.startTimestamp = Math.round(message.startTimestamp); - } - if (message.endTimestamp !== 0) { - obj.endTimestamp = Math.round(message.endTimestamp); - } - if (message.rtpClockTicks !== 0) { - obj.rtpClockTicks = Math.round(message.rtpClockTicks); - } - if (message.driftSamples !== 0) { - obj.driftSamples = Math.round(message.driftSamples); - } - if (message.driftMs !== 0) { - obj.driftMs = message.driftMs; - } - if (message.clockRate !== 0) { - obj.clockRate = message.clockRate; - } - return obj; - }, - - create, I>>(base?: I): RTPDrift { - return RTPDrift.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): RTPDrift { - const message = createBaseRTPDrift(); - message.startTime = object.startTime ?? undefined; - message.endTime = object.endTime ?? undefined; - message.duration = object.duration ?? 0; - message.startTimestamp = object.startTimestamp ?? 0; - message.endTimestamp = object.endTimestamp ?? 0; - message.rtpClockTicks = object.rtpClockTicks ?? 0; - message.driftSamples = object.driftSamples ?? 0; - message.driftMs = object.driftMs ?? 0; - message.clockRate = object.clockRate ?? 0; - return message; - }, -}; - -function createBaseRTPStats(): RTPStats { - return { - startTime: undefined, - endTime: undefined, - duration: 0, - packets: 0, - packetRate: 0, - bytes: 0, - headerBytes: 0, - bitrate: 0, - packetsLost: 0, - packetLossRate: 0, - packetLossPercentage: 0, - packetsDuplicate: 0, - packetDuplicateRate: 0, - bytesDuplicate: 0, - headerBytesDuplicate: 0, - bitrateDuplicate: 0, - packetsPadding: 0, - packetPaddingRate: 0, - bytesPadding: 0, - headerBytesPadding: 0, - bitratePadding: 0, - packetsOutOfOrder: 0, - frames: 0, - frameRate: 0, - jitterCurrent: 0, - jitterMax: 0, - gapHistogram: {}, - nacks: 0, - nackAcks: 0, - nackMisses: 0, - nackRepeated: 0, - plis: 0, - lastPli: undefined, - firs: 0, - lastFir: undefined, - rttCurrent: 0, - rttMax: 0, - keyFrames: 0, - lastKeyFrame: undefined, - layerLockPlis: 0, - lastLayerLockPli: undefined, - packetDrift: undefined, - reportDrift: undefined, - }; -} - -export const RTPStats = { - encode(message: RTPStats, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.startTime !== undefined) { - Timestamp.encode(toTimestamp(message.startTime), writer.uint32(10).fork()).ldelim(); - } - if (message.endTime !== undefined) { - Timestamp.encode(toTimestamp(message.endTime), writer.uint32(18).fork()).ldelim(); - } - if (message.duration !== 0) { - writer.uint32(25).double(message.duration); - } - if (message.packets !== 0) { - writer.uint32(32).uint32(message.packets); - } - if (message.packetRate !== 0) { - writer.uint32(41).double(message.packetRate); - } - if (message.bytes !== 0) { - writer.uint32(48).uint64(message.bytes); - } - if (message.headerBytes !== 0) { - writer.uint32(312).uint64(message.headerBytes); - } - if (message.bitrate !== 0) { - writer.uint32(57).double(message.bitrate); - } - if (message.packetsLost !== 0) { - writer.uint32(64).uint32(message.packetsLost); - } - if (message.packetLossRate !== 0) { - writer.uint32(73).double(message.packetLossRate); - } - if (message.packetLossPercentage !== 0) { - writer.uint32(85).float(message.packetLossPercentage); - } - if (message.packetsDuplicate !== 0) { - writer.uint32(88).uint32(message.packetsDuplicate); - } - if (message.packetDuplicateRate !== 0) { - writer.uint32(97).double(message.packetDuplicateRate); - } - if (message.bytesDuplicate !== 0) { - writer.uint32(104).uint64(message.bytesDuplicate); - } - if (message.headerBytesDuplicate !== 0) { - writer.uint32(320).uint64(message.headerBytesDuplicate); - } - if (message.bitrateDuplicate !== 0) { - writer.uint32(113).double(message.bitrateDuplicate); - } - if (message.packetsPadding !== 0) { - writer.uint32(120).uint32(message.packetsPadding); - } - if (message.packetPaddingRate !== 0) { - writer.uint32(129).double(message.packetPaddingRate); - } - if (message.bytesPadding !== 0) { - writer.uint32(136).uint64(message.bytesPadding); - } - if (message.headerBytesPadding !== 0) { - writer.uint32(328).uint64(message.headerBytesPadding); - } - if (message.bitratePadding !== 0) { - writer.uint32(145).double(message.bitratePadding); - } - if (message.packetsOutOfOrder !== 0) { - writer.uint32(152).uint32(message.packetsOutOfOrder); - } - if (message.frames !== 0) { - writer.uint32(160).uint32(message.frames); - } - if (message.frameRate !== 0) { - writer.uint32(169).double(message.frameRate); - } - if (message.jitterCurrent !== 0) { - writer.uint32(177).double(message.jitterCurrent); - } - if (message.jitterMax !== 0) { - writer.uint32(185).double(message.jitterMax); - } - Object.entries(message.gapHistogram).forEach(([key, value]) => { - RTPStats_GapHistogramEntry.encode({ key: key as any, value }, writer.uint32(194).fork()).ldelim(); - }); - if (message.nacks !== 0) { - writer.uint32(200).uint32(message.nacks); - } - if (message.nackAcks !== 0) { - writer.uint32(296).uint32(message.nackAcks); - } - if (message.nackMisses !== 0) { - writer.uint32(208).uint32(message.nackMisses); - } - if (message.nackRepeated !== 0) { - writer.uint32(304).uint32(message.nackRepeated); - } - if (message.plis !== 0) { - writer.uint32(216).uint32(message.plis); - } - if (message.lastPli !== undefined) { - Timestamp.encode(toTimestamp(message.lastPli), writer.uint32(226).fork()).ldelim(); - } - if (message.firs !== 0) { - writer.uint32(232).uint32(message.firs); - } - if (message.lastFir !== undefined) { - Timestamp.encode(toTimestamp(message.lastFir), writer.uint32(242).fork()).ldelim(); - } - if (message.rttCurrent !== 0) { - writer.uint32(248).uint32(message.rttCurrent); - } - if (message.rttMax !== 0) { - writer.uint32(256).uint32(message.rttMax); - } - if (message.keyFrames !== 0) { - writer.uint32(264).uint32(message.keyFrames); - } - if (message.lastKeyFrame !== undefined) { - Timestamp.encode(toTimestamp(message.lastKeyFrame), writer.uint32(274).fork()).ldelim(); - } - if (message.layerLockPlis !== 0) { - writer.uint32(280).uint32(message.layerLockPlis); - } - if (message.lastLayerLockPli !== undefined) { - Timestamp.encode(toTimestamp(message.lastLayerLockPli), writer.uint32(290).fork()).ldelim(); - } - if (message.packetDrift !== undefined) { - RTPDrift.encode(message.packetDrift, writer.uint32(354).fork()).ldelim(); - } - if (message.reportDrift !== undefined) { - RTPDrift.encode(message.reportDrift, writer.uint32(362).fork()).ldelim(); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): RTPStats { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseRTPStats(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.startTime = fromTimestamp(Timestamp.decode(reader, reader.uint32())); - continue; - case 2: - if (tag !== 18) { - break; - } - - message.endTime = fromTimestamp(Timestamp.decode(reader, reader.uint32())); - continue; - case 3: - if (tag !== 25) { - break; - } - - message.duration = reader.double(); - continue; - case 4: - if (tag !== 32) { - break; - } - - message.packets = reader.uint32(); - continue; - case 5: - if (tag !== 41) { - break; - } - - message.packetRate = reader.double(); - continue; - case 6: - if (tag !== 48) { - break; - } - - message.bytes = longToNumber(reader.uint64() as Long); - continue; - case 39: - if (tag !== 312) { - break; - } - - message.headerBytes = longToNumber(reader.uint64() as Long); - continue; - case 7: - if (tag !== 57) { - break; - } - - message.bitrate = reader.double(); - continue; - case 8: - if (tag !== 64) { - break; - } - - message.packetsLost = reader.uint32(); - continue; - case 9: - if (tag !== 73) { - break; - } - - message.packetLossRate = reader.double(); - continue; - case 10: - if (tag !== 85) { - break; - } - - message.packetLossPercentage = reader.float(); - continue; - case 11: - if (tag !== 88) { - break; - } - - message.packetsDuplicate = reader.uint32(); - continue; - case 12: - if (tag !== 97) { - break; - } - - message.packetDuplicateRate = reader.double(); - continue; - case 13: - if (tag !== 104) { - break; - } - - message.bytesDuplicate = longToNumber(reader.uint64() as Long); - continue; - case 40: - if (tag !== 320) { - break; - } - - message.headerBytesDuplicate = longToNumber(reader.uint64() as Long); - continue; - case 14: - if (tag !== 113) { - break; - } - - message.bitrateDuplicate = reader.double(); - continue; - case 15: - if (tag !== 120) { - break; - } - - message.packetsPadding = reader.uint32(); - continue; - case 16: - if (tag !== 129) { - break; - } - - message.packetPaddingRate = reader.double(); - continue; - case 17: - if (tag !== 136) { - break; - } - - message.bytesPadding = longToNumber(reader.uint64() as Long); - continue; - case 41: - if (tag !== 328) { - break; - } - - message.headerBytesPadding = longToNumber(reader.uint64() as Long); - continue; - case 18: - if (tag !== 145) { - break; - } - - message.bitratePadding = reader.double(); - continue; - case 19: - if (tag !== 152) { - break; - } - - message.packetsOutOfOrder = reader.uint32(); - continue; - case 20: - if (tag !== 160) { - break; - } - - message.frames = reader.uint32(); - continue; - case 21: - if (tag !== 169) { - break; - } - - message.frameRate = reader.double(); - continue; - case 22: - if (tag !== 177) { - break; - } - - message.jitterCurrent = reader.double(); - continue; - case 23: - if (tag !== 185) { - break; - } - - message.jitterMax = reader.double(); - continue; - case 24: - if (tag !== 194) { - break; - } - - const entry24 = RTPStats_GapHistogramEntry.decode(reader, reader.uint32()); - if (entry24.value !== undefined) { - message.gapHistogram[entry24.key] = entry24.value; - } - continue; - case 25: - if (tag !== 200) { - break; - } - - message.nacks = reader.uint32(); - continue; - case 37: - if (tag !== 296) { - break; - } - - message.nackAcks = reader.uint32(); - continue; - case 26: - if (tag !== 208) { - break; - } - - message.nackMisses = reader.uint32(); - continue; - case 38: - if (tag !== 304) { - break; - } - - message.nackRepeated = reader.uint32(); - continue; - case 27: - if (tag !== 216) { - break; - } - - message.plis = reader.uint32(); - continue; - case 28: - if (tag !== 226) { - break; - } - - message.lastPli = fromTimestamp(Timestamp.decode(reader, reader.uint32())); - continue; - case 29: - if (tag !== 232) { - break; - } - - message.firs = reader.uint32(); - continue; - case 30: - if (tag !== 242) { - break; - } - - message.lastFir = fromTimestamp(Timestamp.decode(reader, reader.uint32())); - continue; - case 31: - if (tag !== 248) { - break; - } - - message.rttCurrent = reader.uint32(); - continue; - case 32: - if (tag !== 256) { - break; - } - - message.rttMax = reader.uint32(); - continue; - case 33: - if (tag !== 264) { - break; - } - - message.keyFrames = reader.uint32(); - continue; - case 34: - if (tag !== 274) { - break; - } - - message.lastKeyFrame = fromTimestamp(Timestamp.decode(reader, reader.uint32())); - continue; - case 35: - if (tag !== 280) { - break; - } - - message.layerLockPlis = reader.uint32(); - continue; - case 36: - if (tag !== 290) { - break; - } - - message.lastLayerLockPli = fromTimestamp(Timestamp.decode(reader, reader.uint32())); - continue; - case 44: - if (tag !== 354) { - break; - } - - message.packetDrift = RTPDrift.decode(reader, reader.uint32()); - continue; - case 45: - if (tag !== 362) { - break; - } - - message.reportDrift = RTPDrift.decode(reader, reader.uint32()); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): RTPStats { - return { - startTime: isSet(object.startTime) ? fromJsonTimestamp(object.startTime) : undefined, - endTime: isSet(object.endTime) ? fromJsonTimestamp(object.endTime) : undefined, - duration: isSet(object.duration) ? globalThis.Number(object.duration) : 0, - packets: isSet(object.packets) ? globalThis.Number(object.packets) : 0, - packetRate: isSet(object.packetRate) ? globalThis.Number(object.packetRate) : 0, - bytes: isSet(object.bytes) ? globalThis.Number(object.bytes) : 0, - headerBytes: isSet(object.headerBytes) ? globalThis.Number(object.headerBytes) : 0, - bitrate: isSet(object.bitrate) ? globalThis.Number(object.bitrate) : 0, - packetsLost: isSet(object.packetsLost) ? globalThis.Number(object.packetsLost) : 0, - packetLossRate: isSet(object.packetLossRate) ? globalThis.Number(object.packetLossRate) : 0, - packetLossPercentage: isSet(object.packetLossPercentage) ? globalThis.Number(object.packetLossPercentage) : 0, - packetsDuplicate: isSet(object.packetsDuplicate) ? globalThis.Number(object.packetsDuplicate) : 0, - packetDuplicateRate: isSet(object.packetDuplicateRate) ? globalThis.Number(object.packetDuplicateRate) : 0, - bytesDuplicate: isSet(object.bytesDuplicate) ? globalThis.Number(object.bytesDuplicate) : 0, - headerBytesDuplicate: isSet(object.headerBytesDuplicate) ? globalThis.Number(object.headerBytesDuplicate) : 0, - bitrateDuplicate: isSet(object.bitrateDuplicate) ? globalThis.Number(object.bitrateDuplicate) : 0, - packetsPadding: isSet(object.packetsPadding) ? globalThis.Number(object.packetsPadding) : 0, - packetPaddingRate: isSet(object.packetPaddingRate) ? globalThis.Number(object.packetPaddingRate) : 0, - bytesPadding: isSet(object.bytesPadding) ? globalThis.Number(object.bytesPadding) : 0, - headerBytesPadding: isSet(object.headerBytesPadding) ? globalThis.Number(object.headerBytesPadding) : 0, - bitratePadding: isSet(object.bitratePadding) ? globalThis.Number(object.bitratePadding) : 0, - packetsOutOfOrder: isSet(object.packetsOutOfOrder) ? globalThis.Number(object.packetsOutOfOrder) : 0, - frames: isSet(object.frames) ? globalThis.Number(object.frames) : 0, - frameRate: isSet(object.frameRate) ? globalThis.Number(object.frameRate) : 0, - jitterCurrent: isSet(object.jitterCurrent) ? globalThis.Number(object.jitterCurrent) : 0, - jitterMax: isSet(object.jitterMax) ? globalThis.Number(object.jitterMax) : 0, - gapHistogram: isObject(object.gapHistogram) - ? Object.entries(object.gapHistogram).reduce<{ [key: number]: number }>((acc, [key, value]) => { - acc[globalThis.Number(key)] = Number(value); - return acc; - }, {}) - : {}, - nacks: isSet(object.nacks) ? globalThis.Number(object.nacks) : 0, - nackAcks: isSet(object.nackAcks) ? globalThis.Number(object.nackAcks) : 0, - nackMisses: isSet(object.nackMisses) ? globalThis.Number(object.nackMisses) : 0, - nackRepeated: isSet(object.nackRepeated) ? globalThis.Number(object.nackRepeated) : 0, - plis: isSet(object.plis) ? globalThis.Number(object.plis) : 0, - lastPli: isSet(object.lastPli) ? fromJsonTimestamp(object.lastPli) : undefined, - firs: isSet(object.firs) ? globalThis.Number(object.firs) : 0, - lastFir: isSet(object.lastFir) ? fromJsonTimestamp(object.lastFir) : undefined, - rttCurrent: isSet(object.rttCurrent) ? globalThis.Number(object.rttCurrent) : 0, - rttMax: isSet(object.rttMax) ? globalThis.Number(object.rttMax) : 0, - keyFrames: isSet(object.keyFrames) ? globalThis.Number(object.keyFrames) : 0, - lastKeyFrame: isSet(object.lastKeyFrame) ? fromJsonTimestamp(object.lastKeyFrame) : undefined, - layerLockPlis: isSet(object.layerLockPlis) ? globalThis.Number(object.layerLockPlis) : 0, - lastLayerLockPli: isSet(object.lastLayerLockPli) ? fromJsonTimestamp(object.lastLayerLockPli) : undefined, - packetDrift: isSet(object.packetDrift) ? RTPDrift.fromJSON(object.packetDrift) : undefined, - reportDrift: isSet(object.reportDrift) ? RTPDrift.fromJSON(object.reportDrift) : undefined, - }; - }, - - toJSON(message: RTPStats): unknown { - const obj: any = {}; - if (message.startTime !== undefined) { - obj.startTime = message.startTime.toISOString(); - } - if (message.endTime !== undefined) { - obj.endTime = message.endTime.toISOString(); - } - if (message.duration !== 0) { - obj.duration = message.duration; - } - if (message.packets !== 0) { - obj.packets = Math.round(message.packets); - } - if (message.packetRate !== 0) { - obj.packetRate = message.packetRate; - } - if (message.bytes !== 0) { - obj.bytes = Math.round(message.bytes); - } - if (message.headerBytes !== 0) { - obj.headerBytes = Math.round(message.headerBytes); - } - if (message.bitrate !== 0) { - obj.bitrate = message.bitrate; - } - if (message.packetsLost !== 0) { - obj.packetsLost = Math.round(message.packetsLost); - } - if (message.packetLossRate !== 0) { - obj.packetLossRate = message.packetLossRate; - } - if (message.packetLossPercentage !== 0) { - obj.packetLossPercentage = message.packetLossPercentage; - } - if (message.packetsDuplicate !== 0) { - obj.packetsDuplicate = Math.round(message.packetsDuplicate); - } - if (message.packetDuplicateRate !== 0) { - obj.packetDuplicateRate = message.packetDuplicateRate; - } - if (message.bytesDuplicate !== 0) { - obj.bytesDuplicate = Math.round(message.bytesDuplicate); - } - if (message.headerBytesDuplicate !== 0) { - obj.headerBytesDuplicate = Math.round(message.headerBytesDuplicate); - } - if (message.bitrateDuplicate !== 0) { - obj.bitrateDuplicate = message.bitrateDuplicate; - } - if (message.packetsPadding !== 0) { - obj.packetsPadding = Math.round(message.packetsPadding); - } - if (message.packetPaddingRate !== 0) { - obj.packetPaddingRate = message.packetPaddingRate; - } - if (message.bytesPadding !== 0) { - obj.bytesPadding = Math.round(message.bytesPadding); - } - if (message.headerBytesPadding !== 0) { - obj.headerBytesPadding = Math.round(message.headerBytesPadding); - } - if (message.bitratePadding !== 0) { - obj.bitratePadding = message.bitratePadding; - } - if (message.packetsOutOfOrder !== 0) { - obj.packetsOutOfOrder = Math.round(message.packetsOutOfOrder); - } - if (message.frames !== 0) { - obj.frames = Math.round(message.frames); - } - if (message.frameRate !== 0) { - obj.frameRate = message.frameRate; - } - if (message.jitterCurrent !== 0) { - obj.jitterCurrent = message.jitterCurrent; - } - if (message.jitterMax !== 0) { - obj.jitterMax = message.jitterMax; - } - if (message.gapHistogram) { - const entries = Object.entries(message.gapHistogram); - if (entries.length > 0) { - obj.gapHistogram = {}; - entries.forEach(([k, v]) => { - obj.gapHistogram[k] = Math.round(v); - }); - } - } - if (message.nacks !== 0) { - obj.nacks = Math.round(message.nacks); - } - if (message.nackAcks !== 0) { - obj.nackAcks = Math.round(message.nackAcks); - } - if (message.nackMisses !== 0) { - obj.nackMisses = Math.round(message.nackMisses); - } - if (message.nackRepeated !== 0) { - obj.nackRepeated = Math.round(message.nackRepeated); - } - if (message.plis !== 0) { - obj.plis = Math.round(message.plis); - } - if (message.lastPli !== undefined) { - obj.lastPli = message.lastPli.toISOString(); - } - if (message.firs !== 0) { - obj.firs = Math.round(message.firs); - } - if (message.lastFir !== undefined) { - obj.lastFir = message.lastFir.toISOString(); - } - if (message.rttCurrent !== 0) { - obj.rttCurrent = Math.round(message.rttCurrent); - } - if (message.rttMax !== 0) { - obj.rttMax = Math.round(message.rttMax); - } - if (message.keyFrames !== 0) { - obj.keyFrames = Math.round(message.keyFrames); - } - if (message.lastKeyFrame !== undefined) { - obj.lastKeyFrame = message.lastKeyFrame.toISOString(); - } - if (message.layerLockPlis !== 0) { - obj.layerLockPlis = Math.round(message.layerLockPlis); - } - if (message.lastLayerLockPli !== undefined) { - obj.lastLayerLockPli = message.lastLayerLockPli.toISOString(); - } - if (message.packetDrift !== undefined) { - obj.packetDrift = RTPDrift.toJSON(message.packetDrift); - } - if (message.reportDrift !== undefined) { - obj.reportDrift = RTPDrift.toJSON(message.reportDrift); - } - return obj; - }, - - create, I>>(base?: I): RTPStats { - return RTPStats.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): RTPStats { - const message = createBaseRTPStats(); - message.startTime = object.startTime ?? undefined; - message.endTime = object.endTime ?? undefined; - message.duration = object.duration ?? 0; - message.packets = object.packets ?? 0; - message.packetRate = object.packetRate ?? 0; - message.bytes = object.bytes ?? 0; - message.headerBytes = object.headerBytes ?? 0; - message.bitrate = object.bitrate ?? 0; - message.packetsLost = object.packetsLost ?? 0; - message.packetLossRate = object.packetLossRate ?? 0; - message.packetLossPercentage = object.packetLossPercentage ?? 0; - message.packetsDuplicate = object.packetsDuplicate ?? 0; - message.packetDuplicateRate = object.packetDuplicateRate ?? 0; - message.bytesDuplicate = object.bytesDuplicate ?? 0; - message.headerBytesDuplicate = object.headerBytesDuplicate ?? 0; - message.bitrateDuplicate = object.bitrateDuplicate ?? 0; - message.packetsPadding = object.packetsPadding ?? 0; - message.packetPaddingRate = object.packetPaddingRate ?? 0; - message.bytesPadding = object.bytesPadding ?? 0; - message.headerBytesPadding = object.headerBytesPadding ?? 0; - message.bitratePadding = object.bitratePadding ?? 0; - message.packetsOutOfOrder = object.packetsOutOfOrder ?? 0; - message.frames = object.frames ?? 0; - message.frameRate = object.frameRate ?? 0; - message.jitterCurrent = object.jitterCurrent ?? 0; - message.jitterMax = object.jitterMax ?? 0; - message.gapHistogram = Object.entries(object.gapHistogram ?? {}).reduce<{ [key: number]: number }>( - (acc, [key, value]) => { - if (value !== undefined) { - acc[globalThis.Number(key)] = globalThis.Number(value); - } - return acc; - }, - {}, - ); - message.nacks = object.nacks ?? 0; - message.nackAcks = object.nackAcks ?? 0; - message.nackMisses = object.nackMisses ?? 0; - message.nackRepeated = object.nackRepeated ?? 0; - message.plis = object.plis ?? 0; - message.lastPli = object.lastPli ?? undefined; - message.firs = object.firs ?? 0; - message.lastFir = object.lastFir ?? undefined; - message.rttCurrent = object.rttCurrent ?? 0; - message.rttMax = object.rttMax ?? 0; - message.keyFrames = object.keyFrames ?? 0; - message.lastKeyFrame = object.lastKeyFrame ?? undefined; - message.layerLockPlis = object.layerLockPlis ?? 0; - message.lastLayerLockPli = object.lastLayerLockPli ?? undefined; - message.packetDrift = (object.packetDrift !== undefined && object.packetDrift !== null) - ? RTPDrift.fromPartial(object.packetDrift) - : undefined; - message.reportDrift = (object.reportDrift !== undefined && object.reportDrift !== null) - ? RTPDrift.fromPartial(object.reportDrift) - : undefined; - return message; - }, -}; - -function createBaseRTPStats_GapHistogramEntry(): RTPStats_GapHistogramEntry { - return { key: 0, value: 0 }; -} - -export const RTPStats_GapHistogramEntry = { - encode(message: RTPStats_GapHistogramEntry, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.key !== 0) { - writer.uint32(8).int32(message.key); - } - if (message.value !== 0) { - writer.uint32(16).uint32(message.value); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): RTPStats_GapHistogramEntry { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseRTPStats_GapHistogramEntry(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 8) { - break; - } - - message.key = reader.int32(); - continue; - case 2: - if (tag !== 16) { - break; - } - - message.value = reader.uint32(); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): RTPStats_GapHistogramEntry { - return { - key: isSet(object.key) ? globalThis.Number(object.key) : 0, - value: isSet(object.value) ? globalThis.Number(object.value) : 0, - }; - }, - - toJSON(message: RTPStats_GapHistogramEntry): unknown { - const obj: any = {}; - if (message.key !== 0) { - obj.key = Math.round(message.key); - } - if (message.value !== 0) { - obj.value = Math.round(message.value); - } - return obj; - }, - - create, I>>(base?: I): RTPStats_GapHistogramEntry { - return RTPStats_GapHistogramEntry.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): RTPStats_GapHistogramEntry { - const message = createBaseRTPStats_GapHistogramEntry(); - message.key = object.key ?? 0; - message.value = object.value ?? 0; - return message; - }, -}; - -function createBaseTimedVersion(): TimedVersion { - return { unixMicro: 0, ticks: 0 }; -} - -export const TimedVersion = { - encode(message: TimedVersion, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.unixMicro !== 0) { - writer.uint32(8).int64(message.unixMicro); - } - if (message.ticks !== 0) { - writer.uint32(16).int32(message.ticks); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): TimedVersion { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseTimedVersion(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 8) { - break; - } - - message.unixMicro = longToNumber(reader.int64() as Long); - continue; - case 2: - if (tag !== 16) { - break; - } - - message.ticks = reader.int32(); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): TimedVersion { - return { - unixMicro: isSet(object.unixMicro) ? globalThis.Number(object.unixMicro) : 0, - ticks: isSet(object.ticks) ? globalThis.Number(object.ticks) : 0, - }; - }, - - toJSON(message: TimedVersion): unknown { - const obj: any = {}; - if (message.unixMicro !== 0) { - obj.unixMicro = Math.round(message.unixMicro); - } - if (message.ticks !== 0) { - obj.ticks = Math.round(message.ticks); - } - return obj; - }, - - create, I>>(base?: I): TimedVersion { - return TimedVersion.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): TimedVersion { - const message = createBaseTimedVersion(); - message.unixMicro = object.unixMicro ?? 0; - message.ticks = object.ticks ?? 0; - return message; - }, -}; - -function bytesFromBase64(b64: string): Uint8Array { - if (globalThis.Buffer) { - return Uint8Array.from(globalThis.Buffer.from(b64, "base64")); - } else { - const bin = globalThis.atob(b64); - const arr = new Uint8Array(bin.length); - for (let i = 0; i < bin.length; ++i) { - arr[i] = bin.charCodeAt(i); - } - return arr; - } -} - -function base64FromBytes(arr: Uint8Array): string { - if (globalThis.Buffer) { - return globalThis.Buffer.from(arr).toString("base64"); - } else { - const bin: string[] = []; - arr.forEach((byte) => { - bin.push(globalThis.String.fromCharCode(byte)); - }); - return globalThis.btoa(bin.join("")); - } -} - -type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined; - -export type DeepPartial = T extends Builtin ? T - : T extends globalThis.Array ? globalThis.Array> - : T extends ReadonlyArray ? ReadonlyArray> - : T extends {} ? { [K in keyof T]?: DeepPartial } - : Partial; - -type KeysOfUnion = T extends T ? keyof T : never; -export type Exact = P extends Builtin ? P - : P & { [K in keyof P]: Exact } & { [K in Exclude>]: never }; - -function toTimestamp(date: Date): Timestamp { - const seconds = date.getTime() / 1_000; - const nanos = (date.getTime() % 1_000) * 1_000_000; - return { seconds, nanos }; -} - -function fromTimestamp(t: Timestamp): Date { - let millis = (t.seconds || 0) * 1_000; - millis += (t.nanos || 0) / 1_000_000; - return new globalThis.Date(millis); -} - -function fromJsonTimestamp(o: any): Date { - if (o instanceof globalThis.Date) { - return o; - } else if (typeof o === "string") { - return new globalThis.Date(o); - } else { - return fromTimestamp(Timestamp.fromJSON(o)); - } -} - -function longToNumber(long: Long): number { - if (long.gt(globalThis.Number.MAX_SAFE_INTEGER)) { - throw new globalThis.Error("Value is larger than Number.MAX_SAFE_INTEGER"); - } - return long.toNumber(); -} - -if (_m0.util.Long !== Long) { - _m0.util.Long = Long as any; - _m0.configure(); -} - -function isObject(value: any): boolean { - return typeof value === "object" && value !== null; -} - -function isSet(value: any): boolean { - return value !== null && value !== undefined; -} diff --git a/src/proto/livekit_models_pb.ts b/src/proto/livekit_models_pb.ts new file mode 100644 index 00000000..def9fd4c --- /dev/null +++ b/src/proto/livekit_models_pb.ts @@ -0,0 +1,2249 @@ +// Copyright 2023 LiveKit, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// @generated by protoc-gen-es v1.4.2 with parameter "target=ts" +// @generated from file livekit_models.proto (package livekit, syntax proto3) +/* eslint-disable */ +// @ts-nocheck + +import type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from "@bufbuild/protobuf"; +import { Message, proto3, protoInt64, Timestamp } from "@bufbuild/protobuf"; + +/** + * @generated from enum livekit.AudioCodec + */ +export enum AudioCodec { + /** + * @generated from enum value: DEFAULT_AC = 0; + */ + DEFAULT_AC = 0, + + /** + * @generated from enum value: OPUS = 1; + */ + OPUS = 1, + + /** + * @generated from enum value: AAC = 2; + */ + AAC = 2, +} +// Retrieve enum metadata with: proto3.getEnumType(AudioCodec) +proto3.util.setEnumType(AudioCodec, "livekit.AudioCodec", [ + { no: 0, name: "DEFAULT_AC" }, + { no: 1, name: "OPUS" }, + { no: 2, name: "AAC" }, +]); + +/** + * @generated from enum livekit.VideoCodec + */ +export enum VideoCodec { + /** + * @generated from enum value: DEFAULT_VC = 0; + */ + DEFAULT_VC = 0, + + /** + * @generated from enum value: H264_BASELINE = 1; + */ + H264_BASELINE = 1, + + /** + * @generated from enum value: H264_MAIN = 2; + */ + H264_MAIN = 2, + + /** + * @generated from enum value: H264_HIGH = 3; + */ + H264_HIGH = 3, + + /** + * @generated from enum value: VP8 = 4; + */ + VP8 = 4, +} +// Retrieve enum metadata with: proto3.getEnumType(VideoCodec) +proto3.util.setEnumType(VideoCodec, "livekit.VideoCodec", [ + { no: 0, name: "DEFAULT_VC" }, + { no: 1, name: "H264_BASELINE" }, + { no: 2, name: "H264_MAIN" }, + { no: 3, name: "H264_HIGH" }, + { no: 4, name: "VP8" }, +]); + +/** + * @generated from enum livekit.ImageCodec + */ +export enum ImageCodec { + /** + * @generated from enum value: IC_DEFAULT = 0; + */ + IC_DEFAULT = 0, + + /** + * @generated from enum value: IC_JPEG = 1; + */ + IC_JPEG = 1, +} +// Retrieve enum metadata with: proto3.getEnumType(ImageCodec) +proto3.util.setEnumType(ImageCodec, "livekit.ImageCodec", [ + { no: 0, name: "IC_DEFAULT" }, + { no: 1, name: "IC_JPEG" }, +]); + +/** + * @generated from enum livekit.TrackType + */ +export enum TrackType { + /** + * @generated from enum value: AUDIO = 0; + */ + AUDIO = 0, + + /** + * @generated from enum value: VIDEO = 1; + */ + VIDEO = 1, + + /** + * @generated from enum value: DATA = 2; + */ + DATA = 2, +} +// Retrieve enum metadata with: proto3.getEnumType(TrackType) +proto3.util.setEnumType(TrackType, "livekit.TrackType", [ + { no: 0, name: "AUDIO" }, + { no: 1, name: "VIDEO" }, + { no: 2, name: "DATA" }, +]); + +/** + * @generated from enum livekit.TrackSource + */ +export enum TrackSource { + /** + * @generated from enum value: UNKNOWN = 0; + */ + UNKNOWN = 0, + + /** + * @generated from enum value: CAMERA = 1; + */ + CAMERA = 1, + + /** + * @generated from enum value: MICROPHONE = 2; + */ + MICROPHONE = 2, + + /** + * @generated from enum value: SCREEN_SHARE = 3; + */ + SCREEN_SHARE = 3, + + /** + * @generated from enum value: SCREEN_SHARE_AUDIO = 4; + */ + SCREEN_SHARE_AUDIO = 4, +} +// Retrieve enum metadata with: proto3.getEnumType(TrackSource) +proto3.util.setEnumType(TrackSource, "livekit.TrackSource", [ + { no: 0, name: "UNKNOWN" }, + { no: 1, name: "CAMERA" }, + { no: 2, name: "MICROPHONE" }, + { no: 3, name: "SCREEN_SHARE" }, + { no: 4, name: "SCREEN_SHARE_AUDIO" }, +]); + +/** + * @generated from enum livekit.VideoQuality + */ +export enum VideoQuality { + /** + * @generated from enum value: LOW = 0; + */ + LOW = 0, + + /** + * @generated from enum value: MEDIUM = 1; + */ + MEDIUM = 1, + + /** + * @generated from enum value: HIGH = 2; + */ + HIGH = 2, + + /** + * @generated from enum value: OFF = 3; + */ + OFF = 3, +} +// Retrieve enum metadata with: proto3.getEnumType(VideoQuality) +proto3.util.setEnumType(VideoQuality, "livekit.VideoQuality", [ + { no: 0, name: "LOW" }, + { no: 1, name: "MEDIUM" }, + { no: 2, name: "HIGH" }, + { no: 3, name: "OFF" }, +]); + +/** + * @generated from enum livekit.ConnectionQuality + */ +export enum ConnectionQuality { + /** + * @generated from enum value: POOR = 0; + */ + POOR = 0, + + /** + * @generated from enum value: GOOD = 1; + */ + GOOD = 1, + + /** + * @generated from enum value: EXCELLENT = 2; + */ + EXCELLENT = 2, + + /** + * @generated from enum value: LOST = 3; + */ + LOST = 3, +} +// Retrieve enum metadata with: proto3.getEnumType(ConnectionQuality) +proto3.util.setEnumType(ConnectionQuality, "livekit.ConnectionQuality", [ + { no: 0, name: "POOR" }, + { no: 1, name: "GOOD" }, + { no: 2, name: "EXCELLENT" }, + { no: 3, name: "LOST" }, +]); + +/** + * @generated from enum livekit.ClientConfigSetting + */ +export enum ClientConfigSetting { + /** + * @generated from enum value: UNSET = 0; + */ + UNSET = 0, + + /** + * @generated from enum value: DISABLED = 1; + */ + DISABLED = 1, + + /** + * @generated from enum value: ENABLED = 2; + */ + ENABLED = 2, +} +// Retrieve enum metadata with: proto3.getEnumType(ClientConfigSetting) +proto3.util.setEnumType(ClientConfigSetting, "livekit.ClientConfigSetting", [ + { no: 0, name: "UNSET" }, + { no: 1, name: "DISABLED" }, + { no: 2, name: "ENABLED" }, +]); + +/** + * @generated from enum livekit.DisconnectReason + */ +export enum DisconnectReason { + /** + * @generated from enum value: UNKNOWN_REASON = 0; + */ + UNKNOWN_REASON = 0, + + /** + * @generated from enum value: CLIENT_INITIATED = 1; + */ + CLIENT_INITIATED = 1, + + /** + * @generated from enum value: DUPLICATE_IDENTITY = 2; + */ + DUPLICATE_IDENTITY = 2, + + /** + * @generated from enum value: SERVER_SHUTDOWN = 3; + */ + SERVER_SHUTDOWN = 3, + + /** + * @generated from enum value: PARTICIPANT_REMOVED = 4; + */ + PARTICIPANT_REMOVED = 4, + + /** + * @generated from enum value: ROOM_DELETED = 5; + */ + ROOM_DELETED = 5, + + /** + * @generated from enum value: STATE_MISMATCH = 6; + */ + STATE_MISMATCH = 6, + + /** + * @generated from enum value: JOIN_FAILURE = 7; + */ + JOIN_FAILURE = 7, +} +// Retrieve enum metadata with: proto3.getEnumType(DisconnectReason) +proto3.util.setEnumType(DisconnectReason, "livekit.DisconnectReason", [ + { no: 0, name: "UNKNOWN_REASON" }, + { no: 1, name: "CLIENT_INITIATED" }, + { no: 2, name: "DUPLICATE_IDENTITY" }, + { no: 3, name: "SERVER_SHUTDOWN" }, + { no: 4, name: "PARTICIPANT_REMOVED" }, + { no: 5, name: "ROOM_DELETED" }, + { no: 6, name: "STATE_MISMATCH" }, + { no: 7, name: "JOIN_FAILURE" }, +]); + +/** + * @generated from enum livekit.ReconnectReason + */ +export enum ReconnectReason { + /** + * @generated from enum value: RR_UNKNOWN = 0; + */ + RR_UNKNOWN = 0, + + /** + * @generated from enum value: RR_SIGNAL_DISCONNECTED = 1; + */ + RR_SIGNAL_DISCONNECTED = 1, + + /** + * @generated from enum value: RR_PUBLISHER_FAILED = 2; + */ + RR_PUBLISHER_FAILED = 2, + + /** + * @generated from enum value: RR_SUBSCRIBER_FAILED = 3; + */ + RR_SUBSCRIBER_FAILED = 3, + + /** + * @generated from enum value: RR_SWITCH_CANDIDATE = 4; + */ + RR_SWITCH_CANDIDATE = 4, +} +// Retrieve enum metadata with: proto3.getEnumType(ReconnectReason) +proto3.util.setEnumType(ReconnectReason, "livekit.ReconnectReason", [ + { no: 0, name: "RR_UNKNOWN" }, + { no: 1, name: "RR_SIGNAL_DISCONNECTED" }, + { no: 2, name: "RR_PUBLISHER_FAILED" }, + { no: 3, name: "RR_SUBSCRIBER_FAILED" }, + { no: 4, name: "RR_SWITCH_CANDIDATE" }, +]); + +/** + * @generated from enum livekit.SubscriptionError + */ +export enum SubscriptionError { + /** + * @generated from enum value: SE_UNKNOWN = 0; + */ + SE_UNKNOWN = 0, + + /** + * @generated from enum value: SE_CODEC_UNSUPPORTED = 1; + */ + SE_CODEC_UNSUPPORTED = 1, + + /** + * @generated from enum value: SE_TRACK_NOTFOUND = 2; + */ + SE_TRACK_NOTFOUND = 2, +} +// Retrieve enum metadata with: proto3.getEnumType(SubscriptionError) +proto3.util.setEnumType(SubscriptionError, "livekit.SubscriptionError", [ + { no: 0, name: "SE_UNKNOWN" }, + { no: 1, name: "SE_CODEC_UNSUPPORTED" }, + { no: 2, name: "SE_TRACK_NOTFOUND" }, +]); + +/** + * @generated from message livekit.Room + */ +export class Room extends Message { + /** + * @generated from field: string sid = 1; + */ + sid = ""; + + /** + * @generated from field: string name = 2; + */ + name = ""; + + /** + * @generated from field: uint32 empty_timeout = 3; + */ + emptyTimeout = 0; + + /** + * @generated from field: uint32 max_participants = 4; + */ + maxParticipants = 0; + + /** + * @generated from field: int64 creation_time = 5; + */ + creationTime = protoInt64.zero; + + /** + * @generated from field: string turn_password = 6; + */ + turnPassword = ""; + + /** + * @generated from field: repeated livekit.Codec enabled_codecs = 7; + */ + enabledCodecs: Codec[] = []; + + /** + * @generated from field: string metadata = 8; + */ + metadata = ""; + + /** + * @generated from field: uint32 num_participants = 9; + */ + numParticipants = 0; + + /** + * @generated from field: uint32 num_publishers = 11; + */ + numPublishers = 0; + + /** + * @generated from field: bool active_recording = 10; + */ + activeRecording = false; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "livekit.Room"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "sid", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 3, name: "empty_timeout", kind: "scalar", T: 13 /* ScalarType.UINT32 */ }, + { no: 4, name: "max_participants", kind: "scalar", T: 13 /* ScalarType.UINT32 */ }, + { no: 5, name: "creation_time", kind: "scalar", T: 3 /* ScalarType.INT64 */ }, + { no: 6, name: "turn_password", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 7, name: "enabled_codecs", kind: "message", T: Codec, repeated: true }, + { no: 8, name: "metadata", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 9, name: "num_participants", kind: "scalar", T: 13 /* ScalarType.UINT32 */ }, + { no: 11, name: "num_publishers", kind: "scalar", T: 13 /* ScalarType.UINT32 */ }, + { no: 10, name: "active_recording", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): Room { + return new Room().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): Room { + return new Room().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): Room { + return new Room().fromJsonString(jsonString, options); + } + + static equals(a: Room | PlainMessage | undefined, b: Room | PlainMessage | undefined): boolean { + return proto3.util.equals(Room, a, b); + } +} + +/** + * @generated from message livekit.Codec + */ +export class Codec extends Message { + /** + * @generated from field: string mime = 1; + */ + mime = ""; + + /** + * @generated from field: string fmtp_line = 2; + */ + fmtpLine = ""; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "livekit.Codec"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "mime", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "fmtp_line", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): Codec { + return new Codec().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): Codec { + return new Codec().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): Codec { + return new Codec().fromJsonString(jsonString, options); + } + + static equals(a: Codec | PlainMessage | undefined, b: Codec | PlainMessage | undefined): boolean { + return proto3.util.equals(Codec, a, b); + } +} + +/** + * @generated from message livekit.PlayoutDelay + */ +export class PlayoutDelay extends Message { + /** + * @generated from field: bool enabled = 1; + */ + enabled = false; + + /** + * @generated from field: uint32 min = 2; + */ + min = 0; + + /** + * @generated from field: uint32 max = 3; + */ + max = 0; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "livekit.PlayoutDelay"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "enabled", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, + { no: 2, name: "min", kind: "scalar", T: 13 /* ScalarType.UINT32 */ }, + { no: 3, name: "max", kind: "scalar", T: 13 /* ScalarType.UINT32 */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): PlayoutDelay { + return new PlayoutDelay().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): PlayoutDelay { + return new PlayoutDelay().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): PlayoutDelay { + return new PlayoutDelay().fromJsonString(jsonString, options); + } + + static equals(a: PlayoutDelay | PlainMessage | undefined, b: PlayoutDelay | PlainMessage | undefined): boolean { + return proto3.util.equals(PlayoutDelay, a, b); + } +} + +/** + * @generated from message livekit.ParticipantPermission + */ +export class ParticipantPermission extends Message { + /** + * allow participant to subscribe to other tracks in the room + * + * @generated from field: bool can_subscribe = 1; + */ + canSubscribe = false; + + /** + * allow participant to publish new tracks to room + * + * @generated from field: bool can_publish = 2; + */ + canPublish = false; + + /** + * allow participant to publish data + * + * @generated from field: bool can_publish_data = 3; + */ + canPublishData = false; + + /** + * sources that are allowed to be published + * + * @generated from field: repeated livekit.TrackSource can_publish_sources = 9; + */ + canPublishSources: TrackSource[] = []; + + /** + * indicates that it's hidden to others + * + * @generated from field: bool hidden = 7; + */ + hidden = false; + + /** + * indicates it's a recorder instance + * + * @generated from field: bool recorder = 8; + */ + recorder = false; + + /** + * indicates that participant can update own metadata + * + * @generated from field: bool can_update_metadata = 10; + */ + canUpdateMetadata = false; + + /** + * indicates that participant is an agent + * + * @generated from field: bool agent = 11; + */ + agent = false; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "livekit.ParticipantPermission"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "can_subscribe", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, + { no: 2, name: "can_publish", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, + { no: 3, name: "can_publish_data", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, + { no: 9, name: "can_publish_sources", kind: "enum", T: proto3.getEnumType(TrackSource), repeated: true }, + { no: 7, name: "hidden", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, + { no: 8, name: "recorder", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, + { no: 10, name: "can_update_metadata", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, + { no: 11, name: "agent", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): ParticipantPermission { + return new ParticipantPermission().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): ParticipantPermission { + return new ParticipantPermission().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): ParticipantPermission { + return new ParticipantPermission().fromJsonString(jsonString, options); + } + + static equals(a: ParticipantPermission | PlainMessage | undefined, b: ParticipantPermission | PlainMessage | undefined): boolean { + return proto3.util.equals(ParticipantPermission, a, b); + } +} + +/** + * @generated from message livekit.ParticipantInfo + */ +export class ParticipantInfo extends Message { + /** + * @generated from field: string sid = 1; + */ + sid = ""; + + /** + * @generated from field: string identity = 2; + */ + identity = ""; + + /** + * @generated from field: livekit.ParticipantInfo.State state = 3; + */ + state = ParticipantInfo_State.JOINING; + + /** + * @generated from field: repeated livekit.TrackInfo tracks = 4; + */ + tracks: TrackInfo[] = []; + + /** + * @generated from field: string metadata = 5; + */ + metadata = ""; + + /** + * timestamp when participant joined room, in seconds + * + * @generated from field: int64 joined_at = 6; + */ + joinedAt = protoInt64.zero; + + /** + * @generated from field: string name = 9; + */ + name = ""; + + /** + * @generated from field: uint32 version = 10; + */ + version = 0; + + /** + * @generated from field: livekit.ParticipantPermission permission = 11; + */ + permission?: ParticipantPermission; + + /** + * @generated from field: string region = 12; + */ + region = ""; + + /** + * indicates the participant has an active publisher connection + * and can publish to the server + * + * @generated from field: bool is_publisher = 13; + */ + isPublisher = false; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "livekit.ParticipantInfo"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "sid", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "identity", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 3, name: "state", kind: "enum", T: proto3.getEnumType(ParticipantInfo_State) }, + { no: 4, name: "tracks", kind: "message", T: TrackInfo, repeated: true }, + { no: 5, name: "metadata", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 6, name: "joined_at", kind: "scalar", T: 3 /* ScalarType.INT64 */ }, + { no: 9, name: "name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 10, name: "version", kind: "scalar", T: 13 /* ScalarType.UINT32 */ }, + { no: 11, name: "permission", kind: "message", T: ParticipantPermission }, + { no: 12, name: "region", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 13, name: "is_publisher", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): ParticipantInfo { + return new ParticipantInfo().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): ParticipantInfo { + return new ParticipantInfo().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): ParticipantInfo { + return new ParticipantInfo().fromJsonString(jsonString, options); + } + + static equals(a: ParticipantInfo | PlainMessage | undefined, b: ParticipantInfo | PlainMessage | undefined): boolean { + return proto3.util.equals(ParticipantInfo, a, b); + } +} + +/** + * @generated from enum livekit.ParticipantInfo.State + */ +export enum ParticipantInfo_State { + /** + * websocket' connected, but not offered yet + * + * @generated from enum value: JOINING = 0; + */ + JOINING = 0, + + /** + * server received client offer + * + * @generated from enum value: JOINED = 1; + */ + JOINED = 1, + + /** + * ICE connectivity established + * + * @generated from enum value: ACTIVE = 2; + */ + ACTIVE = 2, + + /** + * WS disconnected + * + * @generated from enum value: DISCONNECTED = 3; + */ + DISCONNECTED = 3, +} +// Retrieve enum metadata with: proto3.getEnumType(ParticipantInfo_State) +proto3.util.setEnumType(ParticipantInfo_State, "livekit.ParticipantInfo.State", [ + { no: 0, name: "JOINING" }, + { no: 1, name: "JOINED" }, + { no: 2, name: "ACTIVE" }, + { no: 3, name: "DISCONNECTED" }, +]); + +/** + * @generated from message livekit.Encryption + */ +export class Encryption extends Message { + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "livekit.Encryption"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): Encryption { + return new Encryption().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): Encryption { + return new Encryption().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): Encryption { + return new Encryption().fromJsonString(jsonString, options); + } + + static equals(a: Encryption | PlainMessage | undefined, b: Encryption | PlainMessage | undefined): boolean { + return proto3.util.equals(Encryption, a, b); + } +} + +/** + * @generated from enum livekit.Encryption.Type + */ +export enum Encryption_Type { + /** + * @generated from enum value: NONE = 0; + */ + NONE = 0, + + /** + * @generated from enum value: GCM = 1; + */ + GCM = 1, + + /** + * @generated from enum value: CUSTOM = 2; + */ + CUSTOM = 2, +} +// Retrieve enum metadata with: proto3.getEnumType(Encryption_Type) +proto3.util.setEnumType(Encryption_Type, "livekit.Encryption.Type", [ + { no: 0, name: "NONE" }, + { no: 1, name: "GCM" }, + { no: 2, name: "CUSTOM" }, +]); + +/** + * @generated from message livekit.SimulcastCodecInfo + */ +export class SimulcastCodecInfo extends Message { + /** + * @generated from field: string mime_type = 1; + */ + mimeType = ""; + + /** + * @generated from field: string mid = 2; + */ + mid = ""; + + /** + * @generated from field: string cid = 3; + */ + cid = ""; + + /** + * @generated from field: repeated livekit.VideoLayer layers = 4; + */ + layers: VideoLayer[] = []; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "livekit.SimulcastCodecInfo"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "mime_type", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "mid", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 3, name: "cid", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 4, name: "layers", kind: "message", T: VideoLayer, repeated: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): SimulcastCodecInfo { + return new SimulcastCodecInfo().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): SimulcastCodecInfo { + return new SimulcastCodecInfo().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): SimulcastCodecInfo { + return new SimulcastCodecInfo().fromJsonString(jsonString, options); + } + + static equals(a: SimulcastCodecInfo | PlainMessage | undefined, b: SimulcastCodecInfo | PlainMessage | undefined): boolean { + return proto3.util.equals(SimulcastCodecInfo, a, b); + } +} + +/** + * @generated from message livekit.TrackInfo + */ +export class TrackInfo extends Message { + /** + * @generated from field: string sid = 1; + */ + sid = ""; + + /** + * @generated from field: livekit.TrackType type = 2; + */ + type = TrackType.AUDIO; + + /** + * @generated from field: string name = 3; + */ + name = ""; + + /** + * @generated from field: bool muted = 4; + */ + muted = false; + + /** + * original width of video (unset for audio) + * clients may receive a lower resolution version with simulcast + * + * @generated from field: uint32 width = 5; + */ + width = 0; + + /** + * original height of video (unset for audio) + * + * @generated from field: uint32 height = 6; + */ + height = 0; + + /** + * true if track is simulcasted + * + * @generated from field: bool simulcast = 7; + */ + simulcast = false; + + /** + * true if DTX (Discontinuous Transmission) is disabled for audio + * + * @generated from field: bool disable_dtx = 8; + */ + disableDtx = false; + + /** + * source of media + * + * @generated from field: livekit.TrackSource source = 9; + */ + source = TrackSource.UNKNOWN; + + /** + * @generated from field: repeated livekit.VideoLayer layers = 10; + */ + layers: VideoLayer[] = []; + + /** + * mime type of codec + * + * @generated from field: string mime_type = 11; + */ + mimeType = ""; + + /** + * @generated from field: string mid = 12; + */ + mid = ""; + + /** + * @generated from field: repeated livekit.SimulcastCodecInfo codecs = 13; + */ + codecs: SimulcastCodecInfo[] = []; + + /** + * @generated from field: bool stereo = 14; + */ + stereo = false; + + /** + * true if RED (Redundant Encoding) is disabled for audio + * + * @generated from field: bool disable_red = 15; + */ + disableRed = false; + + /** + * @generated from field: livekit.Encryption.Type encryption = 16; + */ + encryption = Encryption_Type.NONE; + + /** + * @generated from field: string stream = 17; + */ + stream = ""; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "livekit.TrackInfo"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "sid", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "type", kind: "enum", T: proto3.getEnumType(TrackType) }, + { no: 3, name: "name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 4, name: "muted", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, + { no: 5, name: "width", kind: "scalar", T: 13 /* ScalarType.UINT32 */ }, + { no: 6, name: "height", kind: "scalar", T: 13 /* ScalarType.UINT32 */ }, + { no: 7, name: "simulcast", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, + { no: 8, name: "disable_dtx", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, + { no: 9, name: "source", kind: "enum", T: proto3.getEnumType(TrackSource) }, + { no: 10, name: "layers", kind: "message", T: VideoLayer, repeated: true }, + { no: 11, name: "mime_type", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 12, name: "mid", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 13, name: "codecs", kind: "message", T: SimulcastCodecInfo, repeated: true }, + { no: 14, name: "stereo", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, + { no: 15, name: "disable_red", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, + { no: 16, name: "encryption", kind: "enum", T: proto3.getEnumType(Encryption_Type) }, + { no: 17, name: "stream", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): TrackInfo { + return new TrackInfo().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): TrackInfo { + return new TrackInfo().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): TrackInfo { + return new TrackInfo().fromJsonString(jsonString, options); + } + + static equals(a: TrackInfo | PlainMessage | undefined, b: TrackInfo | PlainMessage | undefined): boolean { + return proto3.util.equals(TrackInfo, a, b); + } +} + +/** + * provide information about available spatial layers + * + * @generated from message livekit.VideoLayer + */ +export class VideoLayer extends Message { + /** + * for tracks with a single layer, this should be HIGH + * + * @generated from field: livekit.VideoQuality quality = 1; + */ + quality = VideoQuality.LOW; + + /** + * @generated from field: uint32 width = 2; + */ + width = 0; + + /** + * @generated from field: uint32 height = 3; + */ + height = 0; + + /** + * target bitrate in bit per second (bps), server will measure actual + * + * @generated from field: uint32 bitrate = 4; + */ + bitrate = 0; + + /** + * @generated from field: uint32 ssrc = 5; + */ + ssrc = 0; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "livekit.VideoLayer"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "quality", kind: "enum", T: proto3.getEnumType(VideoQuality) }, + { no: 2, name: "width", kind: "scalar", T: 13 /* ScalarType.UINT32 */ }, + { no: 3, name: "height", kind: "scalar", T: 13 /* ScalarType.UINT32 */ }, + { no: 4, name: "bitrate", kind: "scalar", T: 13 /* ScalarType.UINT32 */ }, + { no: 5, name: "ssrc", kind: "scalar", T: 13 /* ScalarType.UINT32 */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): VideoLayer { + return new VideoLayer().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): VideoLayer { + return new VideoLayer().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): VideoLayer { + return new VideoLayer().fromJsonString(jsonString, options); + } + + static equals(a: VideoLayer | PlainMessage | undefined, b: VideoLayer | PlainMessage | undefined): boolean { + return proto3.util.equals(VideoLayer, a, b); + } +} + +/** + * new DataPacket API + * + * @generated from message livekit.DataPacket + */ +export class DataPacket extends Message { + /** + * @generated from field: livekit.DataPacket.Kind kind = 1; + */ + kind = DataPacket_Kind.RELIABLE; + + /** + * @generated from oneof livekit.DataPacket.value + */ + value: { + /** + * @generated from field: livekit.UserPacket user = 2; + */ + value: UserPacket; + case: "user"; + } | { + /** + * @generated from field: livekit.ActiveSpeakerUpdate speaker = 3; + */ + value: ActiveSpeakerUpdate; + case: "speaker"; + } | { case: undefined; value?: undefined } = { case: undefined }; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "livekit.DataPacket"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "kind", kind: "enum", T: proto3.getEnumType(DataPacket_Kind) }, + { no: 2, name: "user", kind: "message", T: UserPacket, oneof: "value" }, + { no: 3, name: "speaker", kind: "message", T: ActiveSpeakerUpdate, oneof: "value" }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): DataPacket { + return new DataPacket().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): DataPacket { + return new DataPacket().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): DataPacket { + return new DataPacket().fromJsonString(jsonString, options); + } + + static equals(a: DataPacket | PlainMessage | undefined, b: DataPacket | PlainMessage | undefined): boolean { + return proto3.util.equals(DataPacket, a, b); + } +} + +/** + * @generated from enum livekit.DataPacket.Kind + */ +export enum DataPacket_Kind { + /** + * @generated from enum value: RELIABLE = 0; + */ + RELIABLE = 0, + + /** + * @generated from enum value: LOSSY = 1; + */ + LOSSY = 1, +} +// Retrieve enum metadata with: proto3.getEnumType(DataPacket_Kind) +proto3.util.setEnumType(DataPacket_Kind, "livekit.DataPacket.Kind", [ + { no: 0, name: "RELIABLE" }, + { no: 1, name: "LOSSY" }, +]); + +/** + * @generated from message livekit.ActiveSpeakerUpdate + */ +export class ActiveSpeakerUpdate extends Message { + /** + * @generated from field: repeated livekit.SpeakerInfo speakers = 1; + */ + speakers: SpeakerInfo[] = []; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "livekit.ActiveSpeakerUpdate"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "speakers", kind: "message", T: SpeakerInfo, repeated: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): ActiveSpeakerUpdate { + return new ActiveSpeakerUpdate().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): ActiveSpeakerUpdate { + return new ActiveSpeakerUpdate().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): ActiveSpeakerUpdate { + return new ActiveSpeakerUpdate().fromJsonString(jsonString, options); + } + + static equals(a: ActiveSpeakerUpdate | PlainMessage | undefined, b: ActiveSpeakerUpdate | PlainMessage | undefined): boolean { + return proto3.util.equals(ActiveSpeakerUpdate, a, b); + } +} + +/** + * @generated from message livekit.SpeakerInfo + */ +export class SpeakerInfo extends Message { + /** + * @generated from field: string sid = 1; + */ + sid = ""; + + /** + * audio level, 0-1.0, 1 is loudest + * + * @generated from field: float level = 2; + */ + level = 0; + + /** + * true if speaker is currently active + * + * @generated from field: bool active = 3; + */ + active = false; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "livekit.SpeakerInfo"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "sid", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "level", kind: "scalar", T: 2 /* ScalarType.FLOAT */ }, + { no: 3, name: "active", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): SpeakerInfo { + return new SpeakerInfo().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): SpeakerInfo { + return new SpeakerInfo().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): SpeakerInfo { + return new SpeakerInfo().fromJsonString(jsonString, options); + } + + static equals(a: SpeakerInfo | PlainMessage | undefined, b: SpeakerInfo | PlainMessage | undefined): boolean { + return proto3.util.equals(SpeakerInfo, a, b); + } +} + +/** + * @generated from message livekit.UserPacket + */ +export class UserPacket extends Message { + /** + * participant ID of user that sent the message + * + * @generated from field: string participant_sid = 1; + */ + participantSid = ""; + + /** + * @generated from field: string participant_identity = 5; + */ + participantIdentity = ""; + + /** + * user defined payload + * + * @generated from field: bytes payload = 2; + */ + payload = new Uint8Array(0); + + /** + * the ID of the participants who will receive the message (sent to all by default) + * + * @generated from field: repeated string destination_sids = 3; + */ + destinationSids: string[] = []; + + /** + * identities of participants who will receive the message (sent to all by default) + * + * @generated from field: repeated string destination_identities = 6; + */ + destinationIdentities: string[] = []; + + /** + * topic under which the message was published + * + * @generated from field: optional string topic = 4; + */ + topic?: string; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "livekit.UserPacket"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "participant_sid", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 5, name: "participant_identity", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "payload", kind: "scalar", T: 12 /* ScalarType.BYTES */ }, + { no: 3, name: "destination_sids", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true }, + { no: 6, name: "destination_identities", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true }, + { no: 4, name: "topic", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): UserPacket { + return new UserPacket().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): UserPacket { + return new UserPacket().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): UserPacket { + return new UserPacket().fromJsonString(jsonString, options); + } + + static equals(a: UserPacket | PlainMessage | undefined, b: UserPacket | PlainMessage | undefined): boolean { + return proto3.util.equals(UserPacket, a, b); + } +} + +/** + * @generated from message livekit.ParticipantTracks + */ +export class ParticipantTracks extends Message { + /** + * participant ID of participant to whom the tracks belong + * + * @generated from field: string participant_sid = 1; + */ + participantSid = ""; + + /** + * @generated from field: repeated string track_sids = 2; + */ + trackSids: string[] = []; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "livekit.ParticipantTracks"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "participant_sid", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "track_sids", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): ParticipantTracks { + return new ParticipantTracks().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): ParticipantTracks { + return new ParticipantTracks().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): ParticipantTracks { + return new ParticipantTracks().fromJsonString(jsonString, options); + } + + static equals(a: ParticipantTracks | PlainMessage | undefined, b: ParticipantTracks | PlainMessage | undefined): boolean { + return proto3.util.equals(ParticipantTracks, a, b); + } +} + +/** + * details about the server + * + * @generated from message livekit.ServerInfo + */ +export class ServerInfo extends Message { + /** + * @generated from field: livekit.ServerInfo.Edition edition = 1; + */ + edition = ServerInfo_Edition.Standard; + + /** + * @generated from field: string version = 2; + */ + version = ""; + + /** + * @generated from field: int32 protocol = 3; + */ + protocol = 0; + + /** + * @generated from field: string region = 4; + */ + region = ""; + + /** + * @generated from field: string node_id = 5; + */ + nodeId = ""; + + /** + * additional debugging information. sent only if server is in development mode + * + * @generated from field: string debug_info = 6; + */ + debugInfo = ""; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "livekit.ServerInfo"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "edition", kind: "enum", T: proto3.getEnumType(ServerInfo_Edition) }, + { no: 2, name: "version", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 3, name: "protocol", kind: "scalar", T: 5 /* ScalarType.INT32 */ }, + { no: 4, name: "region", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 5, name: "node_id", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 6, name: "debug_info", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): ServerInfo { + return new ServerInfo().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): ServerInfo { + return new ServerInfo().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): ServerInfo { + return new ServerInfo().fromJsonString(jsonString, options); + } + + static equals(a: ServerInfo | PlainMessage | undefined, b: ServerInfo | PlainMessage | undefined): boolean { + return proto3.util.equals(ServerInfo, a, b); + } +} + +/** + * @generated from enum livekit.ServerInfo.Edition + */ +export enum ServerInfo_Edition { + /** + * @generated from enum value: Standard = 0; + */ + Standard = 0, + + /** + * @generated from enum value: Cloud = 1; + */ + Cloud = 1, +} +// Retrieve enum metadata with: proto3.getEnumType(ServerInfo_Edition) +proto3.util.setEnumType(ServerInfo_Edition, "livekit.ServerInfo.Edition", [ + { no: 0, name: "Standard" }, + { no: 1, name: "Cloud" }, +]); + +/** + * details about the client + * + * @generated from message livekit.ClientInfo + */ +export class ClientInfo extends Message { + /** + * @generated from field: livekit.ClientInfo.SDK sdk = 1; + */ + sdk = ClientInfo_SDK.UNKNOWN; + + /** + * @generated from field: string version = 2; + */ + version = ""; + + /** + * @generated from field: int32 protocol = 3; + */ + protocol = 0; + + /** + * @generated from field: string os = 4; + */ + os = ""; + + /** + * @generated from field: string os_version = 5; + */ + osVersion = ""; + + /** + * @generated from field: string device_model = 6; + */ + deviceModel = ""; + + /** + * @generated from field: string browser = 7; + */ + browser = ""; + + /** + * @generated from field: string browser_version = 8; + */ + browserVersion = ""; + + /** + * @generated from field: string address = 9; + */ + address = ""; + + /** + * wifi, wired, cellular, vpn, empty if not known + * + * @generated from field: string network = 10; + */ + network = ""; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "livekit.ClientInfo"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "sdk", kind: "enum", T: proto3.getEnumType(ClientInfo_SDK) }, + { no: 2, name: "version", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 3, name: "protocol", kind: "scalar", T: 5 /* ScalarType.INT32 */ }, + { no: 4, name: "os", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 5, name: "os_version", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 6, name: "device_model", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 7, name: "browser", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 8, name: "browser_version", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 9, name: "address", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 10, name: "network", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): ClientInfo { + return new ClientInfo().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): ClientInfo { + return new ClientInfo().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): ClientInfo { + return new ClientInfo().fromJsonString(jsonString, options); + } + + static equals(a: ClientInfo | PlainMessage | undefined, b: ClientInfo | PlainMessage | undefined): boolean { + return proto3.util.equals(ClientInfo, a, b); + } +} + +/** + * @generated from enum livekit.ClientInfo.SDK + */ +export enum ClientInfo_SDK { + /** + * @generated from enum value: UNKNOWN = 0; + */ + UNKNOWN = 0, + + /** + * @generated from enum value: JS = 1; + */ + JS = 1, + + /** + * @generated from enum value: SWIFT = 2; + */ + SWIFT = 2, + + /** + * @generated from enum value: ANDROID = 3; + */ + ANDROID = 3, + + /** + * @generated from enum value: FLUTTER = 4; + */ + FLUTTER = 4, + + /** + * @generated from enum value: GO = 5; + */ + GO = 5, + + /** + * @generated from enum value: UNITY = 6; + */ + UNITY = 6, + + /** + * @generated from enum value: REACT_NATIVE = 7; + */ + REACT_NATIVE = 7, + + /** + * @generated from enum value: RUST = 8; + */ + RUST = 8, + + /** + * @generated from enum value: PYTHON = 9; + */ + PYTHON = 9, + + /** + * @generated from enum value: CPP = 10; + */ + CPP = 10, +} +// Retrieve enum metadata with: proto3.getEnumType(ClientInfo_SDK) +proto3.util.setEnumType(ClientInfo_SDK, "livekit.ClientInfo.SDK", [ + { no: 0, name: "UNKNOWN" }, + { no: 1, name: "JS" }, + { no: 2, name: "SWIFT" }, + { no: 3, name: "ANDROID" }, + { no: 4, name: "FLUTTER" }, + { no: 5, name: "GO" }, + { no: 6, name: "UNITY" }, + { no: 7, name: "REACT_NATIVE" }, + { no: 8, name: "RUST" }, + { no: 9, name: "PYTHON" }, + { no: 10, name: "CPP" }, +]); + +/** + * server provided client configuration + * + * @generated from message livekit.ClientConfiguration + */ +export class ClientConfiguration extends Message { + /** + * @generated from field: livekit.VideoConfiguration video = 1; + */ + video?: VideoConfiguration; + + /** + * @generated from field: livekit.VideoConfiguration screen = 2; + */ + screen?: VideoConfiguration; + + /** + * @generated from field: livekit.ClientConfigSetting resume_connection = 3; + */ + resumeConnection = ClientConfigSetting.UNSET; + + /** + * @generated from field: livekit.DisabledCodecs disabled_codecs = 4; + */ + disabledCodecs?: DisabledCodecs; + + /** + * @generated from field: livekit.ClientConfigSetting force_relay = 5; + */ + forceRelay = ClientConfigSetting.UNSET; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "livekit.ClientConfiguration"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "video", kind: "message", T: VideoConfiguration }, + { no: 2, name: "screen", kind: "message", T: VideoConfiguration }, + { no: 3, name: "resume_connection", kind: "enum", T: proto3.getEnumType(ClientConfigSetting) }, + { no: 4, name: "disabled_codecs", kind: "message", T: DisabledCodecs }, + { no: 5, name: "force_relay", kind: "enum", T: proto3.getEnumType(ClientConfigSetting) }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): ClientConfiguration { + return new ClientConfiguration().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): ClientConfiguration { + return new ClientConfiguration().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): ClientConfiguration { + return new ClientConfiguration().fromJsonString(jsonString, options); + } + + static equals(a: ClientConfiguration | PlainMessage | undefined, b: ClientConfiguration | PlainMessage | undefined): boolean { + return proto3.util.equals(ClientConfiguration, a, b); + } +} + +/** + * @generated from message livekit.VideoConfiguration + */ +export class VideoConfiguration extends Message { + /** + * @generated from field: livekit.ClientConfigSetting hardware_encoder = 1; + */ + hardwareEncoder = ClientConfigSetting.UNSET; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "livekit.VideoConfiguration"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "hardware_encoder", kind: "enum", T: proto3.getEnumType(ClientConfigSetting) }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): VideoConfiguration { + return new VideoConfiguration().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): VideoConfiguration { + return new VideoConfiguration().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): VideoConfiguration { + return new VideoConfiguration().fromJsonString(jsonString, options); + } + + static equals(a: VideoConfiguration | PlainMessage | undefined, b: VideoConfiguration | PlainMessage | undefined): boolean { + return proto3.util.equals(VideoConfiguration, a, b); + } +} + +/** + * @generated from message livekit.DisabledCodecs + */ +export class DisabledCodecs extends Message { + /** + * disabled for both publish and subscribe + * + * @generated from field: repeated livekit.Codec codecs = 1; + */ + codecs: Codec[] = []; + + /** + * only disable for publish + * + * @generated from field: repeated livekit.Codec publish = 2; + */ + publish: Codec[] = []; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "livekit.DisabledCodecs"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "codecs", kind: "message", T: Codec, repeated: true }, + { no: 2, name: "publish", kind: "message", T: Codec, repeated: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): DisabledCodecs { + return new DisabledCodecs().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): DisabledCodecs { + return new DisabledCodecs().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): DisabledCodecs { + return new DisabledCodecs().fromJsonString(jsonString, options); + } + + static equals(a: DisabledCodecs | PlainMessage | undefined, b: DisabledCodecs | PlainMessage | undefined): boolean { + return proto3.util.equals(DisabledCodecs, a, b); + } +} + +/** + * @generated from message livekit.RTPDrift + */ +export class RTPDrift extends Message { + /** + * @generated from field: google.protobuf.Timestamp start_time = 1; + */ + startTime?: Timestamp; + + /** + * @generated from field: google.protobuf.Timestamp end_time = 2; + */ + endTime?: Timestamp; + + /** + * @generated from field: double duration = 3; + */ + duration = 0; + + /** + * @generated from field: uint64 start_timestamp = 4; + */ + startTimestamp = protoInt64.zero; + + /** + * @generated from field: uint64 end_timestamp = 5; + */ + endTimestamp = protoInt64.zero; + + /** + * @generated from field: uint64 rtp_clock_ticks = 6; + */ + rtpClockTicks = protoInt64.zero; + + /** + * @generated from field: int64 drift_samples = 7; + */ + driftSamples = protoInt64.zero; + + /** + * @generated from field: double drift_ms = 8; + */ + driftMs = 0; + + /** + * @generated from field: double clock_rate = 9; + */ + clockRate = 0; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "livekit.RTPDrift"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "start_time", kind: "message", T: Timestamp }, + { no: 2, name: "end_time", kind: "message", T: Timestamp }, + { no: 3, name: "duration", kind: "scalar", T: 1 /* ScalarType.DOUBLE */ }, + { no: 4, name: "start_timestamp", kind: "scalar", T: 4 /* ScalarType.UINT64 */ }, + { no: 5, name: "end_timestamp", kind: "scalar", T: 4 /* ScalarType.UINT64 */ }, + { no: 6, name: "rtp_clock_ticks", kind: "scalar", T: 4 /* ScalarType.UINT64 */ }, + { no: 7, name: "drift_samples", kind: "scalar", T: 3 /* ScalarType.INT64 */ }, + { no: 8, name: "drift_ms", kind: "scalar", T: 1 /* ScalarType.DOUBLE */ }, + { no: 9, name: "clock_rate", kind: "scalar", T: 1 /* ScalarType.DOUBLE */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): RTPDrift { + return new RTPDrift().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): RTPDrift { + return new RTPDrift().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): RTPDrift { + return new RTPDrift().fromJsonString(jsonString, options); + } + + static equals(a: RTPDrift | PlainMessage | undefined, b: RTPDrift | PlainMessage | undefined): boolean { + return proto3.util.equals(RTPDrift, a, b); + } +} + +/** + * @generated from message livekit.RTPStats + */ +export class RTPStats extends Message { + /** + * @generated from field: google.protobuf.Timestamp start_time = 1; + */ + startTime?: Timestamp; + + /** + * @generated from field: google.protobuf.Timestamp end_time = 2; + */ + endTime?: Timestamp; + + /** + * @generated from field: double duration = 3; + */ + duration = 0; + + /** + * @generated from field: uint32 packets = 4; + */ + packets = 0; + + /** + * @generated from field: double packet_rate = 5; + */ + packetRate = 0; + + /** + * @generated from field: uint64 bytes = 6; + */ + bytes = protoInt64.zero; + + /** + * @generated from field: uint64 header_bytes = 39; + */ + headerBytes = protoInt64.zero; + + /** + * @generated from field: double bitrate = 7; + */ + bitrate = 0; + + /** + * @generated from field: uint32 packets_lost = 8; + */ + packetsLost = 0; + + /** + * @generated from field: double packet_loss_rate = 9; + */ + packetLossRate = 0; + + /** + * @generated from field: float packet_loss_percentage = 10; + */ + packetLossPercentage = 0; + + /** + * @generated from field: uint32 packets_duplicate = 11; + */ + packetsDuplicate = 0; + + /** + * @generated from field: double packet_duplicate_rate = 12; + */ + packetDuplicateRate = 0; + + /** + * @generated from field: uint64 bytes_duplicate = 13; + */ + bytesDuplicate = protoInt64.zero; + + /** + * @generated from field: uint64 header_bytes_duplicate = 40; + */ + headerBytesDuplicate = protoInt64.zero; + + /** + * @generated from field: double bitrate_duplicate = 14; + */ + bitrateDuplicate = 0; + + /** + * @generated from field: uint32 packets_padding = 15; + */ + packetsPadding = 0; + + /** + * @generated from field: double packet_padding_rate = 16; + */ + packetPaddingRate = 0; + + /** + * @generated from field: uint64 bytes_padding = 17; + */ + bytesPadding = protoInt64.zero; + + /** + * @generated from field: uint64 header_bytes_padding = 41; + */ + headerBytesPadding = protoInt64.zero; + + /** + * @generated from field: double bitrate_padding = 18; + */ + bitratePadding = 0; + + /** + * @generated from field: uint32 packets_out_of_order = 19; + */ + packetsOutOfOrder = 0; + + /** + * @generated from field: uint32 frames = 20; + */ + frames = 0; + + /** + * @generated from field: double frame_rate = 21; + */ + frameRate = 0; + + /** + * @generated from field: double jitter_current = 22; + */ + jitterCurrent = 0; + + /** + * @generated from field: double jitter_max = 23; + */ + jitterMax = 0; + + /** + * @generated from field: map gap_histogram = 24; + */ + gapHistogram: { [key: number]: number } = {}; + + /** + * @generated from field: uint32 nacks = 25; + */ + nacks = 0; + + /** + * @generated from field: uint32 nack_acks = 37; + */ + nackAcks = 0; + + /** + * @generated from field: uint32 nack_misses = 26; + */ + nackMisses = 0; + + /** + * @generated from field: uint32 nack_repeated = 38; + */ + nackRepeated = 0; + + /** + * @generated from field: uint32 plis = 27; + */ + plis = 0; + + /** + * @generated from field: google.protobuf.Timestamp last_pli = 28; + */ + lastPli?: Timestamp; + + /** + * @generated from field: uint32 firs = 29; + */ + firs = 0; + + /** + * @generated from field: google.protobuf.Timestamp last_fir = 30; + */ + lastFir?: Timestamp; + + /** + * @generated from field: uint32 rtt_current = 31; + */ + rttCurrent = 0; + + /** + * @generated from field: uint32 rtt_max = 32; + */ + rttMax = 0; + + /** + * @generated from field: uint32 key_frames = 33; + */ + keyFrames = 0; + + /** + * @generated from field: google.protobuf.Timestamp last_key_frame = 34; + */ + lastKeyFrame?: Timestamp; + + /** + * @generated from field: uint32 layer_lock_plis = 35; + */ + layerLockPlis = 0; + + /** + * @generated from field: google.protobuf.Timestamp last_layer_lock_pli = 36; + */ + lastLayerLockPli?: Timestamp; + + /** + * @generated from field: livekit.RTPDrift packet_drift = 44; + */ + packetDrift?: RTPDrift; + + /** + * NEXT_ID: 46 + * + * @generated from field: livekit.RTPDrift report_drift = 45; + */ + reportDrift?: RTPDrift; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "livekit.RTPStats"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "start_time", kind: "message", T: Timestamp }, + { no: 2, name: "end_time", kind: "message", T: Timestamp }, + { no: 3, name: "duration", kind: "scalar", T: 1 /* ScalarType.DOUBLE */ }, + { no: 4, name: "packets", kind: "scalar", T: 13 /* ScalarType.UINT32 */ }, + { no: 5, name: "packet_rate", kind: "scalar", T: 1 /* ScalarType.DOUBLE */ }, + { no: 6, name: "bytes", kind: "scalar", T: 4 /* ScalarType.UINT64 */ }, + { no: 39, name: "header_bytes", kind: "scalar", T: 4 /* ScalarType.UINT64 */ }, + { no: 7, name: "bitrate", kind: "scalar", T: 1 /* ScalarType.DOUBLE */ }, + { no: 8, name: "packets_lost", kind: "scalar", T: 13 /* ScalarType.UINT32 */ }, + { no: 9, name: "packet_loss_rate", kind: "scalar", T: 1 /* ScalarType.DOUBLE */ }, + { no: 10, name: "packet_loss_percentage", kind: "scalar", T: 2 /* ScalarType.FLOAT */ }, + { no: 11, name: "packets_duplicate", kind: "scalar", T: 13 /* ScalarType.UINT32 */ }, + { no: 12, name: "packet_duplicate_rate", kind: "scalar", T: 1 /* ScalarType.DOUBLE */ }, + { no: 13, name: "bytes_duplicate", kind: "scalar", T: 4 /* ScalarType.UINT64 */ }, + { no: 40, name: "header_bytes_duplicate", kind: "scalar", T: 4 /* ScalarType.UINT64 */ }, + { no: 14, name: "bitrate_duplicate", kind: "scalar", T: 1 /* ScalarType.DOUBLE */ }, + { no: 15, name: "packets_padding", kind: "scalar", T: 13 /* ScalarType.UINT32 */ }, + { no: 16, name: "packet_padding_rate", kind: "scalar", T: 1 /* ScalarType.DOUBLE */ }, + { no: 17, name: "bytes_padding", kind: "scalar", T: 4 /* ScalarType.UINT64 */ }, + { no: 41, name: "header_bytes_padding", kind: "scalar", T: 4 /* ScalarType.UINT64 */ }, + { no: 18, name: "bitrate_padding", kind: "scalar", T: 1 /* ScalarType.DOUBLE */ }, + { no: 19, name: "packets_out_of_order", kind: "scalar", T: 13 /* ScalarType.UINT32 */ }, + { no: 20, name: "frames", kind: "scalar", T: 13 /* ScalarType.UINT32 */ }, + { no: 21, name: "frame_rate", kind: "scalar", T: 1 /* ScalarType.DOUBLE */ }, + { no: 22, name: "jitter_current", kind: "scalar", T: 1 /* ScalarType.DOUBLE */ }, + { no: 23, name: "jitter_max", kind: "scalar", T: 1 /* ScalarType.DOUBLE */ }, + { no: 24, name: "gap_histogram", kind: "map", K: 5 /* ScalarType.INT32 */, V: {kind: "scalar", T: 13 /* ScalarType.UINT32 */} }, + { no: 25, name: "nacks", kind: "scalar", T: 13 /* ScalarType.UINT32 */ }, + { no: 37, name: "nack_acks", kind: "scalar", T: 13 /* ScalarType.UINT32 */ }, + { no: 26, name: "nack_misses", kind: "scalar", T: 13 /* ScalarType.UINT32 */ }, + { no: 38, name: "nack_repeated", kind: "scalar", T: 13 /* ScalarType.UINT32 */ }, + { no: 27, name: "plis", kind: "scalar", T: 13 /* ScalarType.UINT32 */ }, + { no: 28, name: "last_pli", kind: "message", T: Timestamp }, + { no: 29, name: "firs", kind: "scalar", T: 13 /* ScalarType.UINT32 */ }, + { no: 30, name: "last_fir", kind: "message", T: Timestamp }, + { no: 31, name: "rtt_current", kind: "scalar", T: 13 /* ScalarType.UINT32 */ }, + { no: 32, name: "rtt_max", kind: "scalar", T: 13 /* ScalarType.UINT32 */ }, + { no: 33, name: "key_frames", kind: "scalar", T: 13 /* ScalarType.UINT32 */ }, + { no: 34, name: "last_key_frame", kind: "message", T: Timestamp }, + { no: 35, name: "layer_lock_plis", kind: "scalar", T: 13 /* ScalarType.UINT32 */ }, + { no: 36, name: "last_layer_lock_pli", kind: "message", T: Timestamp }, + { no: 44, name: "packet_drift", kind: "message", T: RTPDrift }, + { no: 45, name: "report_drift", kind: "message", T: RTPDrift }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): RTPStats { + return new RTPStats().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): RTPStats { + return new RTPStats().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): RTPStats { + return new RTPStats().fromJsonString(jsonString, options); + } + + static equals(a: RTPStats | PlainMessage | undefined, b: RTPStats | PlainMessage | undefined): boolean { + return proto3.util.equals(RTPStats, a, b); + } +} + +/** + * @generated from message livekit.TimedVersion + */ +export class TimedVersion extends Message { + /** + * @generated from field: int64 unix_micro = 1; + */ + unixMicro = protoInt64.zero; + + /** + * @generated from field: int32 ticks = 2; + */ + ticks = 0; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "livekit.TimedVersion"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "unix_micro", kind: "scalar", T: 3 /* ScalarType.INT64 */ }, + { no: 2, name: "ticks", kind: "scalar", T: 5 /* ScalarType.INT32 */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): TimedVersion { + return new TimedVersion().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): TimedVersion { + return new TimedVersion().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): TimedVersion { + return new TimedVersion().fromJsonString(jsonString, options); + } + + static equals(a: TimedVersion | PlainMessage | undefined, b: TimedVersion | PlainMessage | undefined): boolean { + return proto3.util.equals(TimedVersion, a, b); + } +} + diff --git a/src/proto/livekit_room.ts b/src/proto/livekit_room.ts deleted file mode 100644 index 0ccc28ce..00000000 --- a/src/proto/livekit_room.ts +++ /dev/null @@ -1,1720 +0,0 @@ -/* eslint-disable */ -import _m0 from "protobufjs/minimal"; -import { AutoParticipantEgress, AutoTrackEgress, RoomCompositeEgressRequest } from "./livekit_egress"; -import { - DataPacket_Kind, - dataPacket_KindFromJSON, - dataPacket_KindToJSON, - ParticipantInfo, - ParticipantPermission, - ParticipantTracks, - Room, - TrackInfo, -} from "./livekit_models"; - -export const protobufPackage = "livekit"; - -export interface CreateRoomRequest { - /** name of the room */ - name?: - | string - | undefined; - /** number of seconds to keep the room open if no one joins */ - emptyTimeout?: - | number - | undefined; - /** limit number of participants that can be in a room */ - maxParticipants?: - | number - | undefined; - /** override the node room is allocated to, for debugging */ - nodeId?: - | string - | undefined; - /** metadata of room */ - metadata?: - | string - | undefined; - /** egress */ - egress?: - | RoomEgress - | undefined; - /** playout delay of subscriber */ - minPlayoutDelay?: number | undefined; - maxPlayoutDelay?: - | number - | undefined; - /** - * improves A/V sync when playout_delay set to a value larger than 200ms. It will disables transceiver re-use - * so not recommended for rooms with frequent subscription changes - */ - syncStreams?: boolean | undefined; -} - -export interface RoomEgress { - room?: RoomCompositeEgressRequest | undefined; - participant?: AutoParticipantEgress | undefined; - tracks?: AutoTrackEgress | undefined; -} - -export interface ListRoomsRequest { - /** when set, will only return rooms with name match */ - names?: string[] | undefined; -} - -export interface ListRoomsResponse { - rooms?: Room[] | undefined; -} - -export interface DeleteRoomRequest { - /** name of the room */ - room?: string | undefined; -} - -export interface DeleteRoomResponse { -} - -export interface ListParticipantsRequest { - /** name of the room */ - room?: string | undefined; -} - -export interface ListParticipantsResponse { - participants?: ParticipantInfo[] | undefined; -} - -export interface RoomParticipantIdentity { - /** name of the room */ - room?: - | string - | undefined; - /** identity of the participant */ - identity?: string | undefined; -} - -export interface RemoveParticipantResponse { -} - -export interface MuteRoomTrackRequest { - /** name of the room */ - room?: string | undefined; - identity?: - | string - | undefined; - /** sid of the track to mute */ - trackSid?: - | string - | undefined; - /** set to true to mute, false to unmute */ - muted?: boolean | undefined; -} - -export interface MuteRoomTrackResponse { - track?: TrackInfo | undefined; -} - -export interface UpdateParticipantRequest { - room?: string | undefined; - identity?: - | string - | undefined; - /** metadata to update. skipping updates if left empty */ - metadata?: - | string - | undefined; - /** set to update the participant's permissions */ - permission?: - | ParticipantPermission - | undefined; - /** display name to update */ - name?: string | undefined; -} - -export interface UpdateSubscriptionsRequest { - room?: string | undefined; - identity?: - | string - | undefined; - /** list of sids of tracks */ - trackSids?: - | string[] - | undefined; - /** set to true to subscribe, false to unsubscribe from tracks */ - subscribe?: - | boolean - | undefined; - /** list of participants and their tracks */ - participantTracks?: ParticipantTracks[] | undefined; -} - -/** empty for now */ -export interface UpdateSubscriptionsResponse { -} - -export interface SendDataRequest { - room?: string | undefined; - data?: Uint8Array | undefined; - kind?: - | DataPacket_Kind - | undefined; - /** - * mark deprecated - * - * @deprecated - */ - destinationSids?: - | string[] - | undefined; - /** when set, only forward to these identities */ - destinationIdentities?: string[] | undefined; - topic?: string | undefined; -} - -/** */ -export interface SendDataResponse { -} - -export interface UpdateRoomMetadataRequest { - room?: - | string - | undefined; - /** metadata to update. skipping updates if left empty */ - metadata?: string | undefined; -} - -function createBaseCreateRoomRequest(): CreateRoomRequest { - return { - name: "", - emptyTimeout: 0, - maxParticipants: 0, - nodeId: "", - metadata: "", - egress: undefined, - minPlayoutDelay: 0, - maxPlayoutDelay: 0, - syncStreams: false, - }; -} - -export const CreateRoomRequest = { - encode(message: CreateRoomRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.name !== undefined && message.name !== "") { - writer.uint32(10).string(message.name); - } - if (message.emptyTimeout !== undefined && message.emptyTimeout !== 0) { - writer.uint32(16).uint32(message.emptyTimeout); - } - if (message.maxParticipants !== undefined && message.maxParticipants !== 0) { - writer.uint32(24).uint32(message.maxParticipants); - } - if (message.nodeId !== undefined && message.nodeId !== "") { - writer.uint32(34).string(message.nodeId); - } - if (message.metadata !== undefined && message.metadata !== "") { - writer.uint32(42).string(message.metadata); - } - if (message.egress !== undefined) { - RoomEgress.encode(message.egress, writer.uint32(50).fork()).ldelim(); - } - if (message.minPlayoutDelay !== undefined && message.minPlayoutDelay !== 0) { - writer.uint32(56).uint32(message.minPlayoutDelay); - } - if (message.maxPlayoutDelay !== undefined && message.maxPlayoutDelay !== 0) { - writer.uint32(64).uint32(message.maxPlayoutDelay); - } - if (message.syncStreams === true) { - writer.uint32(72).bool(message.syncStreams); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): CreateRoomRequest { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseCreateRoomRequest(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.name = reader.string(); - continue; - case 2: - if (tag !== 16) { - break; - } - - message.emptyTimeout = reader.uint32(); - continue; - case 3: - if (tag !== 24) { - break; - } - - message.maxParticipants = reader.uint32(); - continue; - case 4: - if (tag !== 34) { - break; - } - - message.nodeId = reader.string(); - continue; - case 5: - if (tag !== 42) { - break; - } - - message.metadata = reader.string(); - continue; - case 6: - if (tag !== 50) { - break; - } - - message.egress = RoomEgress.decode(reader, reader.uint32()); - continue; - case 7: - if (tag !== 56) { - break; - } - - message.minPlayoutDelay = reader.uint32(); - continue; - case 8: - if (tag !== 64) { - break; - } - - message.maxPlayoutDelay = reader.uint32(); - continue; - case 9: - if (tag !== 72) { - break; - } - - message.syncStreams = reader.bool(); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): CreateRoomRequest { - return { - name: isSet(object.name) ? globalThis.String(object.name) : "", - emptyTimeout: isSet(object.emptyTimeout) ? globalThis.Number(object.emptyTimeout) : 0, - maxParticipants: isSet(object.maxParticipants) ? globalThis.Number(object.maxParticipants) : 0, - nodeId: isSet(object.nodeId) ? globalThis.String(object.nodeId) : "", - metadata: isSet(object.metadata) ? globalThis.String(object.metadata) : "", - egress: isSet(object.egress) ? RoomEgress.fromJSON(object.egress) : undefined, - minPlayoutDelay: isSet(object.minPlayoutDelay) ? globalThis.Number(object.minPlayoutDelay) : 0, - maxPlayoutDelay: isSet(object.maxPlayoutDelay) ? globalThis.Number(object.maxPlayoutDelay) : 0, - syncStreams: isSet(object.syncStreams) ? globalThis.Boolean(object.syncStreams) : false, - }; - }, - - toJSON(message: CreateRoomRequest): unknown { - const obj: any = {}; - if (message.name !== undefined && message.name !== "") { - obj.name = message.name; - } - if (message.emptyTimeout !== undefined && message.emptyTimeout !== 0) { - obj.emptyTimeout = Math.round(message.emptyTimeout); - } - if (message.maxParticipants !== undefined && message.maxParticipants !== 0) { - obj.maxParticipants = Math.round(message.maxParticipants); - } - if (message.nodeId !== undefined && message.nodeId !== "") { - obj.nodeId = message.nodeId; - } - if (message.metadata !== undefined && message.metadata !== "") { - obj.metadata = message.metadata; - } - if (message.egress !== undefined) { - obj.egress = RoomEgress.toJSON(message.egress); - } - if (message.minPlayoutDelay !== undefined && message.minPlayoutDelay !== 0) { - obj.minPlayoutDelay = Math.round(message.minPlayoutDelay); - } - if (message.maxPlayoutDelay !== undefined && message.maxPlayoutDelay !== 0) { - obj.maxPlayoutDelay = Math.round(message.maxPlayoutDelay); - } - if (message.syncStreams === true) { - obj.syncStreams = message.syncStreams; - } - return obj; - }, - - create, I>>(base?: I): CreateRoomRequest { - return CreateRoomRequest.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): CreateRoomRequest { - const message = createBaseCreateRoomRequest(); - message.name = object.name ?? ""; - message.emptyTimeout = object.emptyTimeout ?? 0; - message.maxParticipants = object.maxParticipants ?? 0; - message.nodeId = object.nodeId ?? ""; - message.metadata = object.metadata ?? ""; - message.egress = (object.egress !== undefined && object.egress !== null) - ? RoomEgress.fromPartial(object.egress) - : undefined; - message.minPlayoutDelay = object.minPlayoutDelay ?? 0; - message.maxPlayoutDelay = object.maxPlayoutDelay ?? 0; - message.syncStreams = object.syncStreams ?? false; - return message; - }, -}; - -function createBaseRoomEgress(): RoomEgress { - return { room: undefined, participant: undefined, tracks: undefined }; -} - -export const RoomEgress = { - encode(message: RoomEgress, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.room !== undefined) { - RoomCompositeEgressRequest.encode(message.room, writer.uint32(10).fork()).ldelim(); - } - if (message.participant !== undefined) { - AutoParticipantEgress.encode(message.participant, writer.uint32(26).fork()).ldelim(); - } - if (message.tracks !== undefined) { - AutoTrackEgress.encode(message.tracks, writer.uint32(18).fork()).ldelim(); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): RoomEgress { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseRoomEgress(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.room = RoomCompositeEgressRequest.decode(reader, reader.uint32()); - continue; - case 3: - if (tag !== 26) { - break; - } - - message.participant = AutoParticipantEgress.decode(reader, reader.uint32()); - continue; - case 2: - if (tag !== 18) { - break; - } - - message.tracks = AutoTrackEgress.decode(reader, reader.uint32()); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): RoomEgress { - return { - room: isSet(object.room) ? RoomCompositeEgressRequest.fromJSON(object.room) : undefined, - participant: isSet(object.participant) ? AutoParticipantEgress.fromJSON(object.participant) : undefined, - tracks: isSet(object.tracks) ? AutoTrackEgress.fromJSON(object.tracks) : undefined, - }; - }, - - toJSON(message: RoomEgress): unknown { - const obj: any = {}; - if (message.room !== undefined) { - obj.room = RoomCompositeEgressRequest.toJSON(message.room); - } - if (message.participant !== undefined) { - obj.participant = AutoParticipantEgress.toJSON(message.participant); - } - if (message.tracks !== undefined) { - obj.tracks = AutoTrackEgress.toJSON(message.tracks); - } - return obj; - }, - - create, I>>(base?: I): RoomEgress { - return RoomEgress.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): RoomEgress { - const message = createBaseRoomEgress(); - message.room = (object.room !== undefined && object.room !== null) - ? RoomCompositeEgressRequest.fromPartial(object.room) - : undefined; - message.participant = (object.participant !== undefined && object.participant !== null) - ? AutoParticipantEgress.fromPartial(object.participant) - : undefined; - message.tracks = (object.tracks !== undefined && object.tracks !== null) - ? AutoTrackEgress.fromPartial(object.tracks) - : undefined; - return message; - }, -}; - -function createBaseListRoomsRequest(): ListRoomsRequest { - return { names: [] }; -} - -export const ListRoomsRequest = { - encode(message: ListRoomsRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.names !== undefined && message.names.length !== 0) { - for (const v of message.names) { - writer.uint32(10).string(v!); - } - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): ListRoomsRequest { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseListRoomsRequest(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.names!.push(reader.string()); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): ListRoomsRequest { - return { names: globalThis.Array.isArray(object?.names) ? object.names.map((e: any) => globalThis.String(e)) : [] }; - }, - - toJSON(message: ListRoomsRequest): unknown { - const obj: any = {}; - if (message.names?.length) { - obj.names = message.names; - } - return obj; - }, - - create, I>>(base?: I): ListRoomsRequest { - return ListRoomsRequest.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): ListRoomsRequest { - const message = createBaseListRoomsRequest(); - message.names = object.names?.map((e) => e) || []; - return message; - }, -}; - -function createBaseListRoomsResponse(): ListRoomsResponse { - return { rooms: [] }; -} - -export const ListRoomsResponse = { - encode(message: ListRoomsResponse, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.rooms !== undefined && message.rooms.length !== 0) { - for (const v of message.rooms) { - Room.encode(v!, writer.uint32(10).fork()).ldelim(); - } - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): ListRoomsResponse { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseListRoomsResponse(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.rooms!.push(Room.decode(reader, reader.uint32())); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): ListRoomsResponse { - return { rooms: globalThis.Array.isArray(object?.rooms) ? object.rooms.map((e: any) => Room.fromJSON(e)) : [] }; - }, - - toJSON(message: ListRoomsResponse): unknown { - const obj: any = {}; - if (message.rooms?.length) { - obj.rooms = message.rooms.map((e) => Room.toJSON(e)); - } - return obj; - }, - - create, I>>(base?: I): ListRoomsResponse { - return ListRoomsResponse.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): ListRoomsResponse { - const message = createBaseListRoomsResponse(); - message.rooms = object.rooms?.map((e) => Room.fromPartial(e)) || []; - return message; - }, -}; - -function createBaseDeleteRoomRequest(): DeleteRoomRequest { - return { room: "" }; -} - -export const DeleteRoomRequest = { - encode(message: DeleteRoomRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.room !== undefined && message.room !== "") { - writer.uint32(10).string(message.room); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): DeleteRoomRequest { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseDeleteRoomRequest(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.room = reader.string(); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): DeleteRoomRequest { - return { room: isSet(object.room) ? globalThis.String(object.room) : "" }; - }, - - toJSON(message: DeleteRoomRequest): unknown { - const obj: any = {}; - if (message.room !== undefined && message.room !== "") { - obj.room = message.room; - } - return obj; - }, - - create, I>>(base?: I): DeleteRoomRequest { - return DeleteRoomRequest.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): DeleteRoomRequest { - const message = createBaseDeleteRoomRequest(); - message.room = object.room ?? ""; - return message; - }, -}; - -function createBaseDeleteRoomResponse(): DeleteRoomResponse { - return {}; -} - -export const DeleteRoomResponse = { - encode(_: DeleteRoomResponse, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): DeleteRoomResponse { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseDeleteRoomResponse(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(_: any): DeleteRoomResponse { - return {}; - }, - - toJSON(_: DeleteRoomResponse): unknown { - const obj: any = {}; - return obj; - }, - - create, I>>(base?: I): DeleteRoomResponse { - return DeleteRoomResponse.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(_: I): DeleteRoomResponse { - const message = createBaseDeleteRoomResponse(); - return message; - }, -}; - -function createBaseListParticipantsRequest(): ListParticipantsRequest { - return { room: "" }; -} - -export const ListParticipantsRequest = { - encode(message: ListParticipantsRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.room !== undefined && message.room !== "") { - writer.uint32(10).string(message.room); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): ListParticipantsRequest { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseListParticipantsRequest(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.room = reader.string(); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): ListParticipantsRequest { - return { room: isSet(object.room) ? globalThis.String(object.room) : "" }; - }, - - toJSON(message: ListParticipantsRequest): unknown { - const obj: any = {}; - if (message.room !== undefined && message.room !== "") { - obj.room = message.room; - } - return obj; - }, - - create, I>>(base?: I): ListParticipantsRequest { - return ListParticipantsRequest.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): ListParticipantsRequest { - const message = createBaseListParticipantsRequest(); - message.room = object.room ?? ""; - return message; - }, -}; - -function createBaseListParticipantsResponse(): ListParticipantsResponse { - return { participants: [] }; -} - -export const ListParticipantsResponse = { - encode(message: ListParticipantsResponse, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.participants !== undefined && message.participants.length !== 0) { - for (const v of message.participants) { - ParticipantInfo.encode(v!, writer.uint32(10).fork()).ldelim(); - } - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): ListParticipantsResponse { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseListParticipantsResponse(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.participants!.push(ParticipantInfo.decode(reader, reader.uint32())); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): ListParticipantsResponse { - return { - participants: globalThis.Array.isArray(object?.participants) - ? object.participants.map((e: any) => ParticipantInfo.fromJSON(e)) - : [], - }; - }, - - toJSON(message: ListParticipantsResponse): unknown { - const obj: any = {}; - if (message.participants?.length) { - obj.participants = message.participants.map((e) => ParticipantInfo.toJSON(e)); - } - return obj; - }, - - create, I>>(base?: I): ListParticipantsResponse { - return ListParticipantsResponse.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): ListParticipantsResponse { - const message = createBaseListParticipantsResponse(); - message.participants = object.participants?.map((e) => ParticipantInfo.fromPartial(e)) || []; - return message; - }, -}; - -function createBaseRoomParticipantIdentity(): RoomParticipantIdentity { - return { room: "", identity: "" }; -} - -export const RoomParticipantIdentity = { - encode(message: RoomParticipantIdentity, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.room !== undefined && message.room !== "") { - writer.uint32(10).string(message.room); - } - if (message.identity !== undefined && message.identity !== "") { - writer.uint32(18).string(message.identity); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): RoomParticipantIdentity { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseRoomParticipantIdentity(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.room = reader.string(); - continue; - case 2: - if (tag !== 18) { - break; - } - - message.identity = reader.string(); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): RoomParticipantIdentity { - return { - room: isSet(object.room) ? globalThis.String(object.room) : "", - identity: isSet(object.identity) ? globalThis.String(object.identity) : "", - }; - }, - - toJSON(message: RoomParticipantIdentity): unknown { - const obj: any = {}; - if (message.room !== undefined && message.room !== "") { - obj.room = message.room; - } - if (message.identity !== undefined && message.identity !== "") { - obj.identity = message.identity; - } - return obj; - }, - - create, I>>(base?: I): RoomParticipantIdentity { - return RoomParticipantIdentity.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): RoomParticipantIdentity { - const message = createBaseRoomParticipantIdentity(); - message.room = object.room ?? ""; - message.identity = object.identity ?? ""; - return message; - }, -}; - -function createBaseRemoveParticipantResponse(): RemoveParticipantResponse { - return {}; -} - -export const RemoveParticipantResponse = { - encode(_: RemoveParticipantResponse, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): RemoveParticipantResponse { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseRemoveParticipantResponse(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(_: any): RemoveParticipantResponse { - return {}; - }, - - toJSON(_: RemoveParticipantResponse): unknown { - const obj: any = {}; - return obj; - }, - - create, I>>(base?: I): RemoveParticipantResponse { - return RemoveParticipantResponse.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(_: I): RemoveParticipantResponse { - const message = createBaseRemoveParticipantResponse(); - return message; - }, -}; - -function createBaseMuteRoomTrackRequest(): MuteRoomTrackRequest { - return { room: "", identity: "", trackSid: "", muted: false }; -} - -export const MuteRoomTrackRequest = { - encode(message: MuteRoomTrackRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.room !== undefined && message.room !== "") { - writer.uint32(10).string(message.room); - } - if (message.identity !== undefined && message.identity !== "") { - writer.uint32(18).string(message.identity); - } - if (message.trackSid !== undefined && message.trackSid !== "") { - writer.uint32(26).string(message.trackSid); - } - if (message.muted === true) { - writer.uint32(32).bool(message.muted); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): MuteRoomTrackRequest { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseMuteRoomTrackRequest(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.room = reader.string(); - continue; - case 2: - if (tag !== 18) { - break; - } - - message.identity = reader.string(); - continue; - case 3: - if (tag !== 26) { - break; - } - - message.trackSid = reader.string(); - continue; - case 4: - if (tag !== 32) { - break; - } - - message.muted = reader.bool(); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): MuteRoomTrackRequest { - return { - room: isSet(object.room) ? globalThis.String(object.room) : "", - identity: isSet(object.identity) ? globalThis.String(object.identity) : "", - trackSid: isSet(object.trackSid) ? globalThis.String(object.trackSid) : "", - muted: isSet(object.muted) ? globalThis.Boolean(object.muted) : false, - }; - }, - - toJSON(message: MuteRoomTrackRequest): unknown { - const obj: any = {}; - if (message.room !== undefined && message.room !== "") { - obj.room = message.room; - } - if (message.identity !== undefined && message.identity !== "") { - obj.identity = message.identity; - } - if (message.trackSid !== undefined && message.trackSid !== "") { - obj.trackSid = message.trackSid; - } - if (message.muted === true) { - obj.muted = message.muted; - } - return obj; - }, - - create, I>>(base?: I): MuteRoomTrackRequest { - return MuteRoomTrackRequest.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): MuteRoomTrackRequest { - const message = createBaseMuteRoomTrackRequest(); - message.room = object.room ?? ""; - message.identity = object.identity ?? ""; - message.trackSid = object.trackSid ?? ""; - message.muted = object.muted ?? false; - return message; - }, -}; - -function createBaseMuteRoomTrackResponse(): MuteRoomTrackResponse { - return { track: undefined }; -} - -export const MuteRoomTrackResponse = { - encode(message: MuteRoomTrackResponse, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.track !== undefined) { - TrackInfo.encode(message.track, writer.uint32(10).fork()).ldelim(); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): MuteRoomTrackResponse { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseMuteRoomTrackResponse(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.track = TrackInfo.decode(reader, reader.uint32()); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): MuteRoomTrackResponse { - return { track: isSet(object.track) ? TrackInfo.fromJSON(object.track) : undefined }; - }, - - toJSON(message: MuteRoomTrackResponse): unknown { - const obj: any = {}; - if (message.track !== undefined) { - obj.track = TrackInfo.toJSON(message.track); - } - return obj; - }, - - create, I>>(base?: I): MuteRoomTrackResponse { - return MuteRoomTrackResponse.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): MuteRoomTrackResponse { - const message = createBaseMuteRoomTrackResponse(); - message.track = (object.track !== undefined && object.track !== null) - ? TrackInfo.fromPartial(object.track) - : undefined; - return message; - }, -}; - -function createBaseUpdateParticipantRequest(): UpdateParticipantRequest { - return { room: "", identity: "", metadata: "", permission: undefined, name: "" }; -} - -export const UpdateParticipantRequest = { - encode(message: UpdateParticipantRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.room !== undefined && message.room !== "") { - writer.uint32(10).string(message.room); - } - if (message.identity !== undefined && message.identity !== "") { - writer.uint32(18).string(message.identity); - } - if (message.metadata !== undefined && message.metadata !== "") { - writer.uint32(26).string(message.metadata); - } - if (message.permission !== undefined) { - ParticipantPermission.encode(message.permission, writer.uint32(34).fork()).ldelim(); - } - if (message.name !== undefined && message.name !== "") { - writer.uint32(42).string(message.name); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): UpdateParticipantRequest { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseUpdateParticipantRequest(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.room = reader.string(); - continue; - case 2: - if (tag !== 18) { - break; - } - - message.identity = reader.string(); - continue; - case 3: - if (tag !== 26) { - break; - } - - message.metadata = reader.string(); - continue; - case 4: - if (tag !== 34) { - break; - } - - message.permission = ParticipantPermission.decode(reader, reader.uint32()); - continue; - case 5: - if (tag !== 42) { - break; - } - - message.name = reader.string(); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): UpdateParticipantRequest { - return { - room: isSet(object.room) ? globalThis.String(object.room) : "", - identity: isSet(object.identity) ? globalThis.String(object.identity) : "", - metadata: isSet(object.metadata) ? globalThis.String(object.metadata) : "", - permission: isSet(object.permission) ? ParticipantPermission.fromJSON(object.permission) : undefined, - name: isSet(object.name) ? globalThis.String(object.name) : "", - }; - }, - - toJSON(message: UpdateParticipantRequest): unknown { - const obj: any = {}; - if (message.room !== undefined && message.room !== "") { - obj.room = message.room; - } - if (message.identity !== undefined && message.identity !== "") { - obj.identity = message.identity; - } - if (message.metadata !== undefined && message.metadata !== "") { - obj.metadata = message.metadata; - } - if (message.permission !== undefined) { - obj.permission = ParticipantPermission.toJSON(message.permission); - } - if (message.name !== undefined && message.name !== "") { - obj.name = message.name; - } - return obj; - }, - - create, I>>(base?: I): UpdateParticipantRequest { - return UpdateParticipantRequest.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): UpdateParticipantRequest { - const message = createBaseUpdateParticipantRequest(); - message.room = object.room ?? ""; - message.identity = object.identity ?? ""; - message.metadata = object.metadata ?? ""; - message.permission = (object.permission !== undefined && object.permission !== null) - ? ParticipantPermission.fromPartial(object.permission) - : undefined; - message.name = object.name ?? ""; - return message; - }, -}; - -function createBaseUpdateSubscriptionsRequest(): UpdateSubscriptionsRequest { - return { room: "", identity: "", trackSids: [], subscribe: false, participantTracks: [] }; -} - -export const UpdateSubscriptionsRequest = { - encode(message: UpdateSubscriptionsRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.room !== undefined && message.room !== "") { - writer.uint32(10).string(message.room); - } - if (message.identity !== undefined && message.identity !== "") { - writer.uint32(18).string(message.identity); - } - if (message.trackSids !== undefined && message.trackSids.length !== 0) { - for (const v of message.trackSids) { - writer.uint32(26).string(v!); - } - } - if (message.subscribe === true) { - writer.uint32(32).bool(message.subscribe); - } - if (message.participantTracks !== undefined && message.participantTracks.length !== 0) { - for (const v of message.participantTracks) { - ParticipantTracks.encode(v!, writer.uint32(42).fork()).ldelim(); - } - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): UpdateSubscriptionsRequest { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseUpdateSubscriptionsRequest(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.room = reader.string(); - continue; - case 2: - if (tag !== 18) { - break; - } - - message.identity = reader.string(); - continue; - case 3: - if (tag !== 26) { - break; - } - - message.trackSids!.push(reader.string()); - continue; - case 4: - if (tag !== 32) { - break; - } - - message.subscribe = reader.bool(); - continue; - case 5: - if (tag !== 42) { - break; - } - - message.participantTracks!.push(ParticipantTracks.decode(reader, reader.uint32())); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): UpdateSubscriptionsRequest { - return { - room: isSet(object.room) ? globalThis.String(object.room) : "", - identity: isSet(object.identity) ? globalThis.String(object.identity) : "", - trackSids: globalThis.Array.isArray(object?.trackSids) - ? object.trackSids.map((e: any) => globalThis.String(e)) - : [], - subscribe: isSet(object.subscribe) ? globalThis.Boolean(object.subscribe) : false, - participantTracks: globalThis.Array.isArray(object?.participantTracks) - ? object.participantTracks.map((e: any) => ParticipantTracks.fromJSON(e)) - : [], - }; - }, - - toJSON(message: UpdateSubscriptionsRequest): unknown { - const obj: any = {}; - if (message.room !== undefined && message.room !== "") { - obj.room = message.room; - } - if (message.identity !== undefined && message.identity !== "") { - obj.identity = message.identity; - } - if (message.trackSids?.length) { - obj.trackSids = message.trackSids; - } - if (message.subscribe === true) { - obj.subscribe = message.subscribe; - } - if (message.participantTracks?.length) { - obj.participantTracks = message.participantTracks.map((e) => ParticipantTracks.toJSON(e)); - } - return obj; - }, - - create, I>>(base?: I): UpdateSubscriptionsRequest { - return UpdateSubscriptionsRequest.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): UpdateSubscriptionsRequest { - const message = createBaseUpdateSubscriptionsRequest(); - message.room = object.room ?? ""; - message.identity = object.identity ?? ""; - message.trackSids = object.trackSids?.map((e) => e) || []; - message.subscribe = object.subscribe ?? false; - message.participantTracks = object.participantTracks?.map((e) => ParticipantTracks.fromPartial(e)) || []; - return message; - }, -}; - -function createBaseUpdateSubscriptionsResponse(): UpdateSubscriptionsResponse { - return {}; -} - -export const UpdateSubscriptionsResponse = { - encode(_: UpdateSubscriptionsResponse, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): UpdateSubscriptionsResponse { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseUpdateSubscriptionsResponse(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(_: any): UpdateSubscriptionsResponse { - return {}; - }, - - toJSON(_: UpdateSubscriptionsResponse): unknown { - const obj: any = {}; - return obj; - }, - - create, I>>(base?: I): UpdateSubscriptionsResponse { - return UpdateSubscriptionsResponse.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(_: I): UpdateSubscriptionsResponse { - const message = createBaseUpdateSubscriptionsResponse(); - return message; - }, -}; - -function createBaseSendDataRequest(): SendDataRequest { - return { - room: "", - data: new Uint8Array(0), - kind: 0, - destinationSids: [], - destinationIdentities: [], - topic: undefined, - }; -} - -export const SendDataRequest = { - encode(message: SendDataRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.room !== undefined && message.room !== "") { - writer.uint32(10).string(message.room); - } - if (message.data !== undefined && message.data.length !== 0) { - writer.uint32(18).bytes(message.data); - } - if (message.kind !== undefined && message.kind !== 0) { - writer.uint32(24).int32(message.kind); - } - if (message.destinationSids !== undefined && message.destinationSids.length !== 0) { - for (const v of message.destinationSids) { - writer.uint32(34).string(v!); - } - } - if (message.destinationIdentities !== undefined && message.destinationIdentities.length !== 0) { - for (const v of message.destinationIdentities) { - writer.uint32(50).string(v!); - } - } - if (message.topic !== undefined) { - writer.uint32(42).string(message.topic); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): SendDataRequest { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseSendDataRequest(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.room = reader.string(); - continue; - case 2: - if (tag !== 18) { - break; - } - - message.data = reader.bytes(); - continue; - case 3: - if (tag !== 24) { - break; - } - - message.kind = reader.int32() as any; - continue; - case 4: - if (tag !== 34) { - break; - } - - message.destinationSids!.push(reader.string()); - continue; - case 6: - if (tag !== 50) { - break; - } - - message.destinationIdentities!.push(reader.string()); - continue; - case 5: - if (tag !== 42) { - break; - } - - message.topic = reader.string(); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): SendDataRequest { - return { - room: isSet(object.room) ? globalThis.String(object.room) : "", - data: isSet(object.data) ? bytesFromBase64(object.data) : new Uint8Array(0), - kind: isSet(object.kind) ? dataPacket_KindFromJSON(object.kind) : 0, - destinationSids: globalThis.Array.isArray(object?.destinationSids) - ? object.destinationSids.map((e: any) => globalThis.String(e)) - : [], - destinationIdentities: globalThis.Array.isArray(object?.destinationIdentities) - ? object.destinationIdentities.map((e: any) => globalThis.String(e)) - : [], - topic: isSet(object.topic) ? globalThis.String(object.topic) : undefined, - }; - }, - - toJSON(message: SendDataRequest): unknown { - const obj: any = {}; - if (message.room !== undefined && message.room !== "") { - obj.room = message.room; - } - if (message.data !== undefined && message.data.length !== 0) { - obj.data = base64FromBytes(message.data); - } - if (message.kind !== undefined && message.kind !== 0) { - obj.kind = dataPacket_KindToJSON(message.kind); - } - if (message.destinationSids?.length) { - obj.destinationSids = message.destinationSids; - } - if (message.destinationIdentities?.length) { - obj.destinationIdentities = message.destinationIdentities; - } - if (message.topic !== undefined) { - obj.topic = message.topic; - } - return obj; - }, - - create, I>>(base?: I): SendDataRequest { - return SendDataRequest.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): SendDataRequest { - const message = createBaseSendDataRequest(); - message.room = object.room ?? ""; - message.data = object.data ?? new Uint8Array(0); - message.kind = object.kind ?? 0; - message.destinationSids = object.destinationSids?.map((e) => e) || []; - message.destinationIdentities = object.destinationIdentities?.map((e) => e) || []; - message.topic = object.topic ?? undefined; - return message; - }, -}; - -function createBaseSendDataResponse(): SendDataResponse { - return {}; -} - -export const SendDataResponse = { - encode(_: SendDataResponse, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): SendDataResponse { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseSendDataResponse(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(_: any): SendDataResponse { - return {}; - }, - - toJSON(_: SendDataResponse): unknown { - const obj: any = {}; - return obj; - }, - - create, I>>(base?: I): SendDataResponse { - return SendDataResponse.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(_: I): SendDataResponse { - const message = createBaseSendDataResponse(); - return message; - }, -}; - -function createBaseUpdateRoomMetadataRequest(): UpdateRoomMetadataRequest { - return { room: "", metadata: "" }; -} - -export const UpdateRoomMetadataRequest = { - encode(message: UpdateRoomMetadataRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.room !== undefined && message.room !== "") { - writer.uint32(10).string(message.room); - } - if (message.metadata !== undefined && message.metadata !== "") { - writer.uint32(18).string(message.metadata); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): UpdateRoomMetadataRequest { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseUpdateRoomMetadataRequest(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.room = reader.string(); - continue; - case 2: - if (tag !== 18) { - break; - } - - message.metadata = reader.string(); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): UpdateRoomMetadataRequest { - return { - room: isSet(object.room) ? globalThis.String(object.room) : "", - metadata: isSet(object.metadata) ? globalThis.String(object.metadata) : "", - }; - }, - - toJSON(message: UpdateRoomMetadataRequest): unknown { - const obj: any = {}; - if (message.room !== undefined && message.room !== "") { - obj.room = message.room; - } - if (message.metadata !== undefined && message.metadata !== "") { - obj.metadata = message.metadata; - } - return obj; - }, - - create, I>>(base?: I): UpdateRoomMetadataRequest { - return UpdateRoomMetadataRequest.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): UpdateRoomMetadataRequest { - const message = createBaseUpdateRoomMetadataRequest(); - message.room = object.room ?? ""; - message.metadata = object.metadata ?? ""; - return message; - }, -}; - -/** - * Room service that can be performed on any node - * they are Twirp-based HTTP req/responses - */ -export interface RoomService { - /** - * Creates a room with settings. Requires `roomCreate` permission. - * This method is optional; rooms are automatically created when clients connect to them for the first time. - */ - CreateRoom(request: CreateRoomRequest): Promise; - /** List rooms that are active on the server. Requires `roomList` permission. */ - ListRooms(request: ListRoomsRequest): Promise; - /** - * Deletes an existing room by name or id. Requires `roomCreate` permission. - * DeleteRoom will disconnect all participants that are currently in the room. - */ - DeleteRoom(request: DeleteRoomRequest): Promise; - /** Lists participants in a room, Requires `roomAdmin` */ - ListParticipants(request: ListParticipantsRequest): Promise; - /** Get information on a specific participant, Requires `roomAdmin` */ - GetParticipant(request: RoomParticipantIdentity): Promise; - /** Removes a participant from room. Requires `roomAdmin` */ - RemoveParticipant(request: RoomParticipantIdentity): Promise; - /** Mute/unmute a participant's track, Requires `roomAdmin` */ - MutePublishedTrack(request: MuteRoomTrackRequest): Promise; - /** Update participant metadata, will cause updates to be broadcasted to everyone in the room. Requires `roomAdmin` */ - UpdateParticipant(request: UpdateParticipantRequest): Promise; - /** Subscribes or unsubscribe a participant from tracks. Requires `roomAdmin` */ - UpdateSubscriptions(request: UpdateSubscriptionsRequest): Promise; - /** Send data over data channel to participants in a room, Requires `roomAdmin` */ - SendData(request: SendDataRequest): Promise; - /** Update room metadata, will cause updates to be broadcasted to everyone in the room, Requires `roomAdmin` */ - UpdateRoomMetadata(request: UpdateRoomMetadataRequest): Promise; -} - -function bytesFromBase64(b64: string): Uint8Array { - if (globalThis.Buffer) { - return Uint8Array.from(globalThis.Buffer.from(b64, "base64")); - } else { - const bin = globalThis.atob(b64); - const arr = new Uint8Array(bin.length); - for (let i = 0; i < bin.length; ++i) { - arr[i] = bin.charCodeAt(i); - } - return arr; - } -} - -function base64FromBytes(arr: Uint8Array): string { - if (globalThis.Buffer) { - return globalThis.Buffer.from(arr).toString("base64"); - } else { - const bin: string[] = []; - arr.forEach((byte) => { - bin.push(globalThis.String.fromCharCode(byte)); - }); - return globalThis.btoa(bin.join("")); - } -} - -type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined; - -export type DeepPartial = T extends Builtin ? T - : T extends globalThis.Array ? globalThis.Array> - : T extends ReadonlyArray ? ReadonlyArray> - : T extends {} ? { [K in keyof T]?: DeepPartial } - : Partial; - -type KeysOfUnion = T extends T ? keyof T : never; -export type Exact = P extends Builtin ? P - : P & { [K in keyof P]: Exact } & { [K in Exclude>]: never }; - -function isSet(value: any): boolean { - return value !== null && value !== undefined; -} diff --git a/src/proto/livekit_room_pb.ts b/src/proto/livekit_room_pb.ts new file mode 100644 index 00000000..dbabd2a6 --- /dev/null +++ b/src/proto/livekit_room_pb.ts @@ -0,0 +1,888 @@ +// Copyright 2023 LiveKit, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// @generated by protoc-gen-es v1.4.2 with parameter "target=ts" +// @generated from file livekit_room.proto (package livekit, syntax proto3) +/* eslint-disable */ +// @ts-nocheck + +import type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from "@bufbuild/protobuf"; +import { Message, proto3 } from "@bufbuild/protobuf"; +import { AutoParticipantEgress, AutoTrackEgress, RoomCompositeEgressRequest } from "./livekit_egress_pb.js"; +import { DataPacket_Kind, ParticipantInfo, ParticipantPermission, ParticipantTracks, Room, TrackInfo } from "./livekit_models_pb.js"; + +/** + * @generated from message livekit.CreateRoomRequest + */ +export class CreateRoomRequest extends Message { + /** + * name of the room + * + * @generated from field: string name = 1; + */ + name = ""; + + /** + * number of seconds to keep the room open if no one joins + * + * @generated from field: uint32 empty_timeout = 2; + */ + emptyTimeout = 0; + + /** + * limit number of participants that can be in a room + * + * @generated from field: uint32 max_participants = 3; + */ + maxParticipants = 0; + + /** + * override the node room is allocated to, for debugging + * + * @generated from field: string node_id = 4; + */ + nodeId = ""; + + /** + * metadata of room + * + * @generated from field: string metadata = 5; + */ + metadata = ""; + + /** + * egress + * + * @generated from field: livekit.RoomEgress egress = 6; + */ + egress?: RoomEgress; + + /** + * playout delay of subscriber + * + * @generated from field: uint32 min_playout_delay = 7; + */ + minPlayoutDelay = 0; + + /** + * @generated from field: uint32 max_playout_delay = 8; + */ + maxPlayoutDelay = 0; + + /** + * improves A/V sync when playout_delay set to a value larger than 200ms. It will disables transceiver re-use + * so not recommended for rooms with frequent subscription changes + * + * @generated from field: bool sync_streams = 9; + */ + syncStreams = false; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "livekit.CreateRoomRequest"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "empty_timeout", kind: "scalar", T: 13 /* ScalarType.UINT32 */ }, + { no: 3, name: "max_participants", kind: "scalar", T: 13 /* ScalarType.UINT32 */ }, + { no: 4, name: "node_id", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 5, name: "metadata", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 6, name: "egress", kind: "message", T: RoomEgress }, + { no: 7, name: "min_playout_delay", kind: "scalar", T: 13 /* ScalarType.UINT32 */ }, + { no: 8, name: "max_playout_delay", kind: "scalar", T: 13 /* ScalarType.UINT32 */ }, + { no: 9, name: "sync_streams", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): CreateRoomRequest { + return new CreateRoomRequest().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): CreateRoomRequest { + return new CreateRoomRequest().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): CreateRoomRequest { + return new CreateRoomRequest().fromJsonString(jsonString, options); + } + + static equals(a: CreateRoomRequest | PlainMessage | undefined, b: CreateRoomRequest | PlainMessage | undefined): boolean { + return proto3.util.equals(CreateRoomRequest, a, b); + } +} + +/** + * @generated from message livekit.RoomEgress + */ +export class RoomEgress extends Message { + /** + * @generated from field: livekit.RoomCompositeEgressRequest room = 1; + */ + room?: RoomCompositeEgressRequest; + + /** + * @generated from field: livekit.AutoParticipantEgress participant = 3; + */ + participant?: AutoParticipantEgress; + + /** + * @generated from field: livekit.AutoTrackEgress tracks = 2; + */ + tracks?: AutoTrackEgress; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "livekit.RoomEgress"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "room", kind: "message", T: RoomCompositeEgressRequest }, + { no: 3, name: "participant", kind: "message", T: AutoParticipantEgress }, + { no: 2, name: "tracks", kind: "message", T: AutoTrackEgress }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): RoomEgress { + return new RoomEgress().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): RoomEgress { + return new RoomEgress().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): RoomEgress { + return new RoomEgress().fromJsonString(jsonString, options); + } + + static equals(a: RoomEgress | PlainMessage | undefined, b: RoomEgress | PlainMessage | undefined): boolean { + return proto3.util.equals(RoomEgress, a, b); + } +} + +/** + * @generated from message livekit.ListRoomsRequest + */ +export class ListRoomsRequest extends Message { + /** + * when set, will only return rooms with name match + * + * @generated from field: repeated string names = 1; + */ + names: string[] = []; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "livekit.ListRoomsRequest"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "names", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): ListRoomsRequest { + return new ListRoomsRequest().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): ListRoomsRequest { + return new ListRoomsRequest().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): ListRoomsRequest { + return new ListRoomsRequest().fromJsonString(jsonString, options); + } + + static equals(a: ListRoomsRequest | PlainMessage | undefined, b: ListRoomsRequest | PlainMessage | undefined): boolean { + return proto3.util.equals(ListRoomsRequest, a, b); + } +} + +/** + * @generated from message livekit.ListRoomsResponse + */ +export class ListRoomsResponse extends Message { + /** + * @generated from field: repeated livekit.Room rooms = 1; + */ + rooms: Room[] = []; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "livekit.ListRoomsResponse"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "rooms", kind: "message", T: Room, repeated: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): ListRoomsResponse { + return new ListRoomsResponse().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): ListRoomsResponse { + return new ListRoomsResponse().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): ListRoomsResponse { + return new ListRoomsResponse().fromJsonString(jsonString, options); + } + + static equals(a: ListRoomsResponse | PlainMessage | undefined, b: ListRoomsResponse | PlainMessage | undefined): boolean { + return proto3.util.equals(ListRoomsResponse, a, b); + } +} + +/** + * @generated from message livekit.DeleteRoomRequest + */ +export class DeleteRoomRequest extends Message { + /** + * name of the room + * + * @generated from field: string room = 1; + */ + room = ""; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "livekit.DeleteRoomRequest"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "room", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): DeleteRoomRequest { + return new DeleteRoomRequest().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): DeleteRoomRequest { + return new DeleteRoomRequest().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): DeleteRoomRequest { + return new DeleteRoomRequest().fromJsonString(jsonString, options); + } + + static equals(a: DeleteRoomRequest | PlainMessage | undefined, b: DeleteRoomRequest | PlainMessage | undefined): boolean { + return proto3.util.equals(DeleteRoomRequest, a, b); + } +} + +/** + * @generated from message livekit.DeleteRoomResponse + */ +export class DeleteRoomResponse extends Message { + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "livekit.DeleteRoomResponse"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): DeleteRoomResponse { + return new DeleteRoomResponse().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): DeleteRoomResponse { + return new DeleteRoomResponse().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): DeleteRoomResponse { + return new DeleteRoomResponse().fromJsonString(jsonString, options); + } + + static equals(a: DeleteRoomResponse | PlainMessage | undefined, b: DeleteRoomResponse | PlainMessage | undefined): boolean { + return proto3.util.equals(DeleteRoomResponse, a, b); + } +} + +/** + * @generated from message livekit.ListParticipantsRequest + */ +export class ListParticipantsRequest extends Message { + /** + * name of the room + * + * @generated from field: string room = 1; + */ + room = ""; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "livekit.ListParticipantsRequest"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "room", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): ListParticipantsRequest { + return new ListParticipantsRequest().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): ListParticipantsRequest { + return new ListParticipantsRequest().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): ListParticipantsRequest { + return new ListParticipantsRequest().fromJsonString(jsonString, options); + } + + static equals(a: ListParticipantsRequest | PlainMessage | undefined, b: ListParticipantsRequest | PlainMessage | undefined): boolean { + return proto3.util.equals(ListParticipantsRequest, a, b); + } +} + +/** + * @generated from message livekit.ListParticipantsResponse + */ +export class ListParticipantsResponse extends Message { + /** + * @generated from field: repeated livekit.ParticipantInfo participants = 1; + */ + participants: ParticipantInfo[] = []; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "livekit.ListParticipantsResponse"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "participants", kind: "message", T: ParticipantInfo, repeated: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): ListParticipantsResponse { + return new ListParticipantsResponse().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): ListParticipantsResponse { + return new ListParticipantsResponse().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): ListParticipantsResponse { + return new ListParticipantsResponse().fromJsonString(jsonString, options); + } + + static equals(a: ListParticipantsResponse | PlainMessage | undefined, b: ListParticipantsResponse | PlainMessage | undefined): boolean { + return proto3.util.equals(ListParticipantsResponse, a, b); + } +} + +/** + * @generated from message livekit.RoomParticipantIdentity + */ +export class RoomParticipantIdentity extends Message { + /** + * name of the room + * + * @generated from field: string room = 1; + */ + room = ""; + + /** + * identity of the participant + * + * @generated from field: string identity = 2; + */ + identity = ""; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "livekit.RoomParticipantIdentity"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "room", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "identity", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): RoomParticipantIdentity { + return new RoomParticipantIdentity().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): RoomParticipantIdentity { + return new RoomParticipantIdentity().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): RoomParticipantIdentity { + return new RoomParticipantIdentity().fromJsonString(jsonString, options); + } + + static equals(a: RoomParticipantIdentity | PlainMessage | undefined, b: RoomParticipantIdentity | PlainMessage | undefined): boolean { + return proto3.util.equals(RoomParticipantIdentity, a, b); + } +} + +/** + * @generated from message livekit.RemoveParticipantResponse + */ +export class RemoveParticipantResponse extends Message { + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "livekit.RemoveParticipantResponse"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): RemoveParticipantResponse { + return new RemoveParticipantResponse().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): RemoveParticipantResponse { + return new RemoveParticipantResponse().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): RemoveParticipantResponse { + return new RemoveParticipantResponse().fromJsonString(jsonString, options); + } + + static equals(a: RemoveParticipantResponse | PlainMessage | undefined, b: RemoveParticipantResponse | PlainMessage | undefined): boolean { + return proto3.util.equals(RemoveParticipantResponse, a, b); + } +} + +/** + * @generated from message livekit.MuteRoomTrackRequest + */ +export class MuteRoomTrackRequest extends Message { + /** + * name of the room + * + * @generated from field: string room = 1; + */ + room = ""; + + /** + * @generated from field: string identity = 2; + */ + identity = ""; + + /** + * sid of the track to mute + * + * @generated from field: string track_sid = 3; + */ + trackSid = ""; + + /** + * set to true to mute, false to unmute + * + * @generated from field: bool muted = 4; + */ + muted = false; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "livekit.MuteRoomTrackRequest"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "room", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "identity", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 3, name: "track_sid", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 4, name: "muted", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): MuteRoomTrackRequest { + return new MuteRoomTrackRequest().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): MuteRoomTrackRequest { + return new MuteRoomTrackRequest().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): MuteRoomTrackRequest { + return new MuteRoomTrackRequest().fromJsonString(jsonString, options); + } + + static equals(a: MuteRoomTrackRequest | PlainMessage | undefined, b: MuteRoomTrackRequest | PlainMessage | undefined): boolean { + return proto3.util.equals(MuteRoomTrackRequest, a, b); + } +} + +/** + * @generated from message livekit.MuteRoomTrackResponse + */ +export class MuteRoomTrackResponse extends Message { + /** + * @generated from field: livekit.TrackInfo track = 1; + */ + track?: TrackInfo; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "livekit.MuteRoomTrackResponse"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "track", kind: "message", T: TrackInfo }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): MuteRoomTrackResponse { + return new MuteRoomTrackResponse().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): MuteRoomTrackResponse { + return new MuteRoomTrackResponse().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): MuteRoomTrackResponse { + return new MuteRoomTrackResponse().fromJsonString(jsonString, options); + } + + static equals(a: MuteRoomTrackResponse | PlainMessage | undefined, b: MuteRoomTrackResponse | PlainMessage | undefined): boolean { + return proto3.util.equals(MuteRoomTrackResponse, a, b); + } +} + +/** + * @generated from message livekit.UpdateParticipantRequest + */ +export class UpdateParticipantRequest extends Message { + /** + * @generated from field: string room = 1; + */ + room = ""; + + /** + * @generated from field: string identity = 2; + */ + identity = ""; + + /** + * metadata to update. skipping updates if left empty + * + * @generated from field: string metadata = 3; + */ + metadata = ""; + + /** + * set to update the participant's permissions + * + * @generated from field: livekit.ParticipantPermission permission = 4; + */ + permission?: ParticipantPermission; + + /** + * display name to update + * + * @generated from field: string name = 5; + */ + name = ""; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "livekit.UpdateParticipantRequest"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "room", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "identity", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 3, name: "metadata", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 4, name: "permission", kind: "message", T: ParticipantPermission }, + { no: 5, name: "name", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): UpdateParticipantRequest { + return new UpdateParticipantRequest().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): UpdateParticipantRequest { + return new UpdateParticipantRequest().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): UpdateParticipantRequest { + return new UpdateParticipantRequest().fromJsonString(jsonString, options); + } + + static equals(a: UpdateParticipantRequest | PlainMessage | undefined, b: UpdateParticipantRequest | PlainMessage | undefined): boolean { + return proto3.util.equals(UpdateParticipantRequest, a, b); + } +} + +/** + * @generated from message livekit.UpdateSubscriptionsRequest + */ +export class UpdateSubscriptionsRequest extends Message { + /** + * @generated from field: string room = 1; + */ + room = ""; + + /** + * @generated from field: string identity = 2; + */ + identity = ""; + + /** + * list of sids of tracks + * + * @generated from field: repeated string track_sids = 3; + */ + trackSids: string[] = []; + + /** + * set to true to subscribe, false to unsubscribe from tracks + * + * @generated from field: bool subscribe = 4; + */ + subscribe = false; + + /** + * list of participants and their tracks + * + * @generated from field: repeated livekit.ParticipantTracks participant_tracks = 5; + */ + participantTracks: ParticipantTracks[] = []; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "livekit.UpdateSubscriptionsRequest"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "room", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "identity", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 3, name: "track_sids", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true }, + { no: 4, name: "subscribe", kind: "scalar", T: 8 /* ScalarType.BOOL */ }, + { no: 5, name: "participant_tracks", kind: "message", T: ParticipantTracks, repeated: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): UpdateSubscriptionsRequest { + return new UpdateSubscriptionsRequest().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): UpdateSubscriptionsRequest { + return new UpdateSubscriptionsRequest().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): UpdateSubscriptionsRequest { + return new UpdateSubscriptionsRequest().fromJsonString(jsonString, options); + } + + static equals(a: UpdateSubscriptionsRequest | PlainMessage | undefined, b: UpdateSubscriptionsRequest | PlainMessage | undefined): boolean { + return proto3.util.equals(UpdateSubscriptionsRequest, a, b); + } +} + +/** + * empty for now + * + * @generated from message livekit.UpdateSubscriptionsResponse + */ +export class UpdateSubscriptionsResponse extends Message { + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "livekit.UpdateSubscriptionsResponse"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): UpdateSubscriptionsResponse { + return new UpdateSubscriptionsResponse().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): UpdateSubscriptionsResponse { + return new UpdateSubscriptionsResponse().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): UpdateSubscriptionsResponse { + return new UpdateSubscriptionsResponse().fromJsonString(jsonString, options); + } + + static equals(a: UpdateSubscriptionsResponse | PlainMessage | undefined, b: UpdateSubscriptionsResponse | PlainMessage | undefined): boolean { + return proto3.util.equals(UpdateSubscriptionsResponse, a, b); + } +} + +/** + * @generated from message livekit.SendDataRequest + */ +export class SendDataRequest extends Message { + /** + * @generated from field: string room = 1; + */ + room = ""; + + /** + * @generated from field: bytes data = 2; + */ + data = new Uint8Array(0); + + /** + * @generated from field: livekit.DataPacket.Kind kind = 3; + */ + kind = DataPacket_Kind.RELIABLE; + + /** + * mark deprecated + * + * @generated from field: repeated string destination_sids = 4 [deprecated = true]; + * @deprecated + */ + destinationSids: string[] = []; + + /** + * when set, only forward to these identities + * + * @generated from field: repeated string destination_identities = 6; + */ + destinationIdentities: string[] = []; + + /** + * @generated from field: optional string topic = 5; + */ + topic?: string; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "livekit.SendDataRequest"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "room", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "data", kind: "scalar", T: 12 /* ScalarType.BYTES */ }, + { no: 3, name: "kind", kind: "enum", T: proto3.getEnumType(DataPacket_Kind) }, + { no: 4, name: "destination_sids", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true }, + { no: 6, name: "destination_identities", kind: "scalar", T: 9 /* ScalarType.STRING */, repeated: true }, + { no: 5, name: "topic", kind: "scalar", T: 9 /* ScalarType.STRING */, opt: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): SendDataRequest { + return new SendDataRequest().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): SendDataRequest { + return new SendDataRequest().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): SendDataRequest { + return new SendDataRequest().fromJsonString(jsonString, options); + } + + static equals(a: SendDataRequest | PlainMessage | undefined, b: SendDataRequest | PlainMessage | undefined): boolean { + return proto3.util.equals(SendDataRequest, a, b); + } +} + +/** + * @generated from message livekit.SendDataResponse + */ +export class SendDataResponse extends Message { + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "livekit.SendDataResponse"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): SendDataResponse { + return new SendDataResponse().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): SendDataResponse { + return new SendDataResponse().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): SendDataResponse { + return new SendDataResponse().fromJsonString(jsonString, options); + } + + static equals(a: SendDataResponse | PlainMessage | undefined, b: SendDataResponse | PlainMessage | undefined): boolean { + return proto3.util.equals(SendDataResponse, a, b); + } +} + +/** + * @generated from message livekit.UpdateRoomMetadataRequest + */ +export class UpdateRoomMetadataRequest extends Message { + /** + * @generated from field: string room = 1; + */ + room = ""; + + /** + * metadata to update. skipping updates if left empty + * + * @generated from field: string metadata = 2; + */ + metadata = ""; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "livekit.UpdateRoomMetadataRequest"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "room", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "metadata", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): UpdateRoomMetadataRequest { + return new UpdateRoomMetadataRequest().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): UpdateRoomMetadataRequest { + return new UpdateRoomMetadataRequest().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): UpdateRoomMetadataRequest { + return new UpdateRoomMetadataRequest().fromJsonString(jsonString, options); + } + + static equals(a: UpdateRoomMetadataRequest | PlainMessage | undefined, b: UpdateRoomMetadataRequest | PlainMessage | undefined): boolean { + return proto3.util.equals(UpdateRoomMetadataRequest, a, b); + } +} + diff --git a/src/proto/livekit_webhook.ts b/src/proto/livekit_webhook.ts deleted file mode 100644 index b5246b2f..00000000 --- a/src/proto/livekit_webhook.ts +++ /dev/null @@ -1,268 +0,0 @@ -/* eslint-disable */ -import Long from "long"; -import _m0 from "protobufjs/minimal"; -import { EgressInfo } from "./livekit_egress"; -import { IngressInfo } from "./livekit_ingress"; -import { ParticipantInfo, Room, TrackInfo } from "./livekit_models"; - -export const protobufPackage = "livekit"; - -export interface WebhookEvent { - /** - * one of room_started, room_finished, participant_joined, participant_left, - * track_published, track_unpublished, egress_started, egress_updated, egress_ended, - * ingress_started, ingress_ended - */ - event?: string | undefined; - room?: - | Room - | undefined; - /** set when event is participant_* or track_* */ - participant?: - | ParticipantInfo - | undefined; - /** set when event is egress_* */ - egressInfo?: - | EgressInfo - | undefined; - /** set when event is ingress_* */ - ingressInfo?: - | IngressInfo - | undefined; - /** set when event is track_* */ - track?: - | TrackInfo - | undefined; - /** unique event uuid */ - id?: - | string - | undefined; - /** timestamp in seconds */ - createdAt?: number | undefined; - numDropped?: number | undefined; -} - -function createBaseWebhookEvent(): WebhookEvent { - return { - event: "", - room: undefined, - participant: undefined, - egressInfo: undefined, - ingressInfo: undefined, - track: undefined, - id: "", - createdAt: 0, - numDropped: 0, - }; -} - -export const WebhookEvent = { - encode(message: WebhookEvent, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.event !== undefined && message.event !== "") { - writer.uint32(10).string(message.event); - } - if (message.room !== undefined) { - Room.encode(message.room, writer.uint32(18).fork()).ldelim(); - } - if (message.participant !== undefined) { - ParticipantInfo.encode(message.participant, writer.uint32(26).fork()).ldelim(); - } - if (message.egressInfo !== undefined) { - EgressInfo.encode(message.egressInfo, writer.uint32(74).fork()).ldelim(); - } - if (message.ingressInfo !== undefined) { - IngressInfo.encode(message.ingressInfo, writer.uint32(82).fork()).ldelim(); - } - if (message.track !== undefined) { - TrackInfo.encode(message.track, writer.uint32(66).fork()).ldelim(); - } - if (message.id !== undefined && message.id !== "") { - writer.uint32(50).string(message.id); - } - if (message.createdAt !== undefined && message.createdAt !== 0) { - writer.uint32(56).int64(message.createdAt); - } - if (message.numDropped !== undefined && message.numDropped !== 0) { - writer.uint32(88).int32(message.numDropped); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): WebhookEvent { - const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = createBaseWebhookEvent(); - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - if (tag !== 10) { - break; - } - - message.event = reader.string(); - continue; - case 2: - if (tag !== 18) { - break; - } - - message.room = Room.decode(reader, reader.uint32()); - continue; - case 3: - if (tag !== 26) { - break; - } - - message.participant = ParticipantInfo.decode(reader, reader.uint32()); - continue; - case 9: - if (tag !== 74) { - break; - } - - message.egressInfo = EgressInfo.decode(reader, reader.uint32()); - continue; - case 10: - if (tag !== 82) { - break; - } - - message.ingressInfo = IngressInfo.decode(reader, reader.uint32()); - continue; - case 8: - if (tag !== 66) { - break; - } - - message.track = TrackInfo.decode(reader, reader.uint32()); - continue; - case 6: - if (tag !== 50) { - break; - } - - message.id = reader.string(); - continue; - case 7: - if (tag !== 56) { - break; - } - - message.createdAt = longToNumber(reader.int64() as Long); - continue; - case 11: - if (tag !== 88) { - break; - } - - message.numDropped = reader.int32(); - continue; - } - if ((tag & 7) === 4 || tag === 0) { - break; - } - reader.skipType(tag & 7); - } - return message; - }, - - fromJSON(object: any): WebhookEvent { - return { - event: isSet(object.event) ? globalThis.String(object.event) : "", - room: isSet(object.room) ? Room.fromJSON(object.room) : undefined, - participant: isSet(object.participant) ? ParticipantInfo.fromJSON(object.participant) : undefined, - egressInfo: isSet(object.egressInfo) ? EgressInfo.fromJSON(object.egressInfo) : undefined, - ingressInfo: isSet(object.ingressInfo) ? IngressInfo.fromJSON(object.ingressInfo) : undefined, - track: isSet(object.track) ? TrackInfo.fromJSON(object.track) : undefined, - id: isSet(object.id) ? globalThis.String(object.id) : "", - createdAt: isSet(object.createdAt) ? globalThis.Number(object.createdAt) : 0, - numDropped: isSet(object.numDropped) ? globalThis.Number(object.numDropped) : 0, - }; - }, - - toJSON(message: WebhookEvent): unknown { - const obj: any = {}; - if (message.event !== undefined && message.event !== "") { - obj.event = message.event; - } - if (message.room !== undefined) { - obj.room = Room.toJSON(message.room); - } - if (message.participant !== undefined) { - obj.participant = ParticipantInfo.toJSON(message.participant); - } - if (message.egressInfo !== undefined) { - obj.egressInfo = EgressInfo.toJSON(message.egressInfo); - } - if (message.ingressInfo !== undefined) { - obj.ingressInfo = IngressInfo.toJSON(message.ingressInfo); - } - if (message.track !== undefined) { - obj.track = TrackInfo.toJSON(message.track); - } - if (message.id !== undefined && message.id !== "") { - obj.id = message.id; - } - if (message.createdAt !== undefined && message.createdAt !== 0) { - obj.createdAt = Math.round(message.createdAt); - } - if (message.numDropped !== undefined && message.numDropped !== 0) { - obj.numDropped = Math.round(message.numDropped); - } - return obj; - }, - - create, I>>(base?: I): WebhookEvent { - return WebhookEvent.fromPartial(base ?? ({} as any)); - }, - fromPartial, I>>(object: I): WebhookEvent { - const message = createBaseWebhookEvent(); - message.event = object.event ?? ""; - message.room = (object.room !== undefined && object.room !== null) ? Room.fromPartial(object.room) : undefined; - message.participant = (object.participant !== undefined && object.participant !== null) - ? ParticipantInfo.fromPartial(object.participant) - : undefined; - message.egressInfo = (object.egressInfo !== undefined && object.egressInfo !== null) - ? EgressInfo.fromPartial(object.egressInfo) - : undefined; - message.ingressInfo = (object.ingressInfo !== undefined && object.ingressInfo !== null) - ? IngressInfo.fromPartial(object.ingressInfo) - : undefined; - message.track = (object.track !== undefined && object.track !== null) - ? TrackInfo.fromPartial(object.track) - : undefined; - message.id = object.id ?? ""; - message.createdAt = object.createdAt ?? 0; - message.numDropped = object.numDropped ?? 0; - return message; - }, -}; - -type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined; - -export type DeepPartial = T extends Builtin ? T - : T extends globalThis.Array ? globalThis.Array> - : T extends ReadonlyArray ? ReadonlyArray> - : T extends {} ? { [K in keyof T]?: DeepPartial } - : Partial; - -type KeysOfUnion = T extends T ? keyof T : never; -export type Exact = P extends Builtin ? P - : P & { [K in keyof P]: Exact } & { [K in Exclude>]: never }; - -function longToNumber(long: Long): number { - if (long.gt(globalThis.Number.MAX_SAFE_INTEGER)) { - throw new globalThis.Error("Value is larger than Number.MAX_SAFE_INTEGER"); - } - return long.toNumber(); -} - -if (_m0.util.Long !== Long) { - _m0.util.Long = Long as any; - _m0.configure(); -} - -function isSet(value: any): boolean { - return value !== null && value !== undefined; -} diff --git a/src/proto/livekit_webhook_pb.ts b/src/proto/livekit_webhook_pb.ts new file mode 100644 index 00000000..05545945 --- /dev/null +++ b/src/proto/livekit_webhook_pb.ts @@ -0,0 +1,126 @@ +// Copyright 2023 LiveKit, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// @generated by protoc-gen-es v1.4.2 with parameter "target=ts" +// @generated from file livekit_webhook.proto (package livekit, syntax proto3) +/* eslint-disable */ +// @ts-nocheck + +import type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from "@bufbuild/protobuf"; +import { Message, proto3, protoInt64 } from "@bufbuild/protobuf"; +import { ParticipantInfo, Room, TrackInfo } from "./livekit_models_pb.js"; +import { EgressInfo } from "./livekit_egress_pb.js"; +import { IngressInfo } from "./livekit_ingress_pb.js"; + +/** + * @generated from message livekit.WebhookEvent + */ +export class WebhookEvent extends Message { + /** + * one of room_started, room_finished, participant_joined, participant_left, + * track_published, track_unpublished, egress_started, egress_updated, egress_ended, + * ingress_started, ingress_ended + * + * @generated from field: string event = 1; + */ + event = ""; + + /** + * @generated from field: livekit.Room room = 2; + */ + room?: Room; + + /** + * set when event is participant_* or track_* + * + * @generated from field: livekit.ParticipantInfo participant = 3; + */ + participant?: ParticipantInfo; + + /** + * set when event is egress_* + * + * @generated from field: livekit.EgressInfo egress_info = 9; + */ + egressInfo?: EgressInfo; + + /** + * set when event is ingress_* + * + * @generated from field: livekit.IngressInfo ingress_info = 10; + */ + ingressInfo?: IngressInfo; + + /** + * set when event is track_* + * + * @generated from field: livekit.TrackInfo track = 8; + */ + track?: TrackInfo; + + /** + * unique event uuid + * + * @generated from field: string id = 6; + */ + id = ""; + + /** + * timestamp in seconds + * + * @generated from field: int64 created_at = 7; + */ + createdAt = protoInt64.zero; + + /** + * @generated from field: int32 num_dropped = 11; + */ + numDropped = 0; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "livekit.WebhookEvent"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "event", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "room", kind: "message", T: Room }, + { no: 3, name: "participant", kind: "message", T: ParticipantInfo }, + { no: 9, name: "egress_info", kind: "message", T: EgressInfo }, + { no: 10, name: "ingress_info", kind: "message", T: IngressInfo }, + { no: 8, name: "track", kind: "message", T: TrackInfo }, + { no: 6, name: "id", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 7, name: "created_at", kind: "scalar", T: 3 /* ScalarType.INT64 */ }, + { no: 11, name: "num_dropped", kind: "scalar", T: 5 /* ScalarType.INT32 */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): WebhookEvent { + return new WebhookEvent().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): WebhookEvent { + return new WebhookEvent().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): WebhookEvent { + return new WebhookEvent().fromJsonString(jsonString, options); + } + + static equals(a: WebhookEvent | PlainMessage | undefined, b: WebhookEvent | PlainMessage | undefined): boolean { + return proto3.util.equals(WebhookEvent, a, b); + } +} + diff --git a/tsconfig.json b/tsconfig.json index 4daf6d1e..51d87ba1 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,16 +1,18 @@ { "compilerOptions": { - "target": "es2015" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */, - "module": "commonjs" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */, + "target": "ES2017" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */, + "module": "ES2020" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */, "outDir": "dist", "declaration": true, "sourceMap": true, "strict": true /* Enable all strict type-checking options. */, "esModuleInterop": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */, "skipLibCheck": true /* Skip type checking of declaration files. */, - "forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */ + "forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */, + "moduleResolution": "node" }, "include": ["src/**/*"], + "exclude": ["vite.config.js", "src/**/*.test.ts"], "typedocOptions": { "entryPoints": ["src/index.ts"], "excludeInternal": true, diff --git a/vite.config.js b/vite.config.js new file mode 100644 index 00000000..db81e2f8 --- /dev/null +++ b/vite.config.js @@ -0,0 +1,7 @@ +import { defineConfig } from 'vite'; + +export default defineConfig({ + test: { + environment: 'node', + }, +}); From 8bd85e14e60005c2f29d2cd1848ed91dc545ea5e Mon Sep 17 00:00:00 2001 From: lukasIO Date: Tue, 5 Dec 2023 17:37:39 +0100 Subject: [PATCH 03/11] add changesets as publishing workflow --- .changeset/README.md | 8 + .changeset/config.json | 11 + .github/workflows/release.yaml | 46 ++ package.json | 3 +- pnpm-lock.yaml | 970 ++++++++++++++++++++++++++++++++- 5 files changed, 1036 insertions(+), 2 deletions(-) create mode 100644 .changeset/README.md create mode 100644 .changeset/config.json create mode 100644 .github/workflows/release.yaml diff --git a/.changeset/README.md b/.changeset/README.md new file mode 100644 index 00000000..e5b6d8d6 --- /dev/null +++ b/.changeset/README.md @@ -0,0 +1,8 @@ +# Changesets + +Hello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works +with multi-package repos, or single-package repos to help you version and publish your code. You can +find the full documentation for it [in our repository](https://github.com/changesets/changesets) + +We have a quick list of common questions to get you started engaging with this project in +[our documentation](https://github.com/changesets/changesets/blob/main/docs/common-questions.md) diff --git a/.changeset/config.json b/.changeset/config.json new file mode 100644 index 00000000..f78c87cc --- /dev/null +++ b/.changeset/config.json @@ -0,0 +1,11 @@ +{ + "$schema": "https://unpkg.com/@changesets/config@2.0.0/schema.json", + "changelog": ["@livekit/changesets-changelog-github", { "repo": "livekit/server-sdk-js" }], + "commit": false, + "fixed": [], + "linked": [], + "access": "public", + "baseBranch": "main", + "updateInternalDependencies": "patch", + "ignore": [] +} diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml new file mode 100644 index 00000000..3b627d6b --- /dev/null +++ b/.github/workflows/release.yaml @@ -0,0 +1,46 @@ +name: Release + +on: + push: + branches: + - main + +concurrency: ${{ github.workflow }}-${{ github.ref }} + +jobs: + release: + name: Release + runs-on: ubuntu-latest + steps: + - name: Checkout Repo + uses: actions/checkout@v4 + - uses: pnpm/action-setup@v2 + with: + version: 8 + - name: Use Node.js 20 + uses: actions/setup-node@v4 + with: + node-version: 20 + cache: 'pnpm' + - name: Install dependencies + run: pnpm install + - name: Create Release Pull Request or Publish to npm + id: changesets + uses: changesets/action@v1 + with: + publish: pnpm ci:publish + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + NPM_TOKEN: ${{ secrets.NPM_TOKEN }} + - name: Build Docs + if: steps.changesets.outputs.published == 'true' + run: pnpm build-docs + + + - name: S3 Upload + if: steps.changesets.outputs.published == 'true' + run: aws s3 cp docs/ s3://livekit-docs/server-sdk-js --recursive + env: + AWS_ACCESS_KEY_ID: ${{ secrets.DOCS_DEPLOY_AWS_ACCESS_KEY }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.DOCS_DEPLOY_AWS_API_SECRET }} + AWS_DEFAULT_REGION: "us-east-1" diff --git a/package.json b/package.json index 723a383f..cf246bcb 100644 --- a/package.json +++ b/package.json @@ -12,11 +12,11 @@ "build": "tsc --project tsconfig.json", "build:watch": "tsc --watch", "build-docs": "typedoc", + "ci:publish": "pnpm build && changeset publish", "proto": "./generate-proto.sh", "lint": "eslint .", "format": "prettier --write src", "format:check": "prettier --check src", - "prepare": "pnpm build", "test": "vitest run" }, "dependencies": { @@ -27,6 +27,7 @@ }, "devDependencies": { "@bufbuild/protoc-gen-es": "^1.3.0", + "@changesets/cli": "^2.27.1", "@types/node": "^20.10.1", "@typescript-eslint/eslint-plugin": "^4.29.1", "eslint": "^7.32.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fb8314b1..fc8182d7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -22,6 +22,9 @@ devDependencies: '@bufbuild/protoc-gen-es': specifier: ^1.3.0 version: 1.4.2(@bufbuild/protobuf@1.4.2) + '@changesets/cli': + specifier: ^2.27.1 + version: 2.27.1 '@types/node': specifier: ^20.10.1 version: 20.10.1 @@ -119,6 +122,189 @@ packages: - supports-color dev: true + /@changesets/apply-release-plan@7.0.0: + resolution: {integrity: sha512-vfi69JR416qC9hWmFGSxj7N6wA5J222XNBmezSVATPWDVPIF7gkd4d8CpbEbXmRWbVrkoli3oerGS6dcL/BGsQ==} + dependencies: + '@babel/runtime': 7.23.2 + '@changesets/config': 3.0.0 + '@changesets/get-version-range-type': 0.4.0 + '@changesets/git': 3.0.0 + '@changesets/types': 6.0.0 + '@manypkg/get-packages': 1.1.3 + detect-indent: 6.1.0 + fs-extra: 7.0.1 + lodash.startcase: 4.4.0 + outdent: 0.5.0 + prettier: 2.8.8 + resolve-from: 5.0.0 + semver: 7.5.4 + dev: true + + /@changesets/assemble-release-plan@6.0.0: + resolution: {integrity: sha512-4QG7NuisAjisbW4hkLCmGW2lRYdPrKzro+fCtZaILX+3zdUELSvYjpL4GTv0E4aM9Mef3PuIQp89VmHJ4y2bfw==} + dependencies: + '@babel/runtime': 7.23.2 + '@changesets/errors': 0.2.0 + '@changesets/get-dependents-graph': 2.0.0 + '@changesets/types': 6.0.0 + '@manypkg/get-packages': 1.1.3 + semver: 7.5.4 + dev: true + + /@changesets/changelog-git@0.2.0: + resolution: {integrity: sha512-bHOx97iFI4OClIT35Lok3sJAwM31VbUM++gnMBV16fdbtBhgYu4dxsphBF/0AZZsyAHMrnM0yFcj5gZM1py6uQ==} + dependencies: + '@changesets/types': 6.0.0 + dev: true + + /@changesets/cli@2.27.1: + resolution: {integrity: sha512-iJ91xlvRnnrJnELTp4eJJEOPjgpF3NOh4qeQehM6Ugiz9gJPRZ2t+TsXun6E3AMN4hScZKjqVXl0TX+C7AB3ZQ==} + hasBin: true + dependencies: + '@babel/runtime': 7.23.2 + '@changesets/apply-release-plan': 7.0.0 + '@changesets/assemble-release-plan': 6.0.0 + '@changesets/changelog-git': 0.2.0 + '@changesets/config': 3.0.0 + '@changesets/errors': 0.2.0 + '@changesets/get-dependents-graph': 2.0.0 + '@changesets/get-release-plan': 4.0.0 + '@changesets/git': 3.0.0 + '@changesets/logger': 0.1.0 + '@changesets/pre': 2.0.0 + '@changesets/read': 0.6.0 + '@changesets/types': 6.0.0 + '@changesets/write': 0.3.0 + '@manypkg/get-packages': 1.1.3 + '@types/semver': 7.5.6 + ansi-colors: 4.1.3 + chalk: 2.4.2 + ci-info: 3.9.0 + enquirer: 2.4.1 + external-editor: 3.1.0 + fs-extra: 7.0.1 + human-id: 1.0.2 + meow: 6.1.1 + outdent: 0.5.0 + p-limit: 2.3.0 + preferred-pm: 3.1.2 + resolve-from: 5.0.0 + semver: 7.5.4 + spawndamnit: 2.0.0 + term-size: 2.2.1 + tty-table: 4.2.3 + dev: true + + /@changesets/config@3.0.0: + resolution: {integrity: sha512-o/rwLNnAo/+j9Yvw9mkBQOZySDYyOr/q+wptRLcAVGlU6djOeP9v1nlalbL9MFsobuBVQbZCTp+dIzdq+CLQUA==} + dependencies: + '@changesets/errors': 0.2.0 + '@changesets/get-dependents-graph': 2.0.0 + '@changesets/logger': 0.1.0 + '@changesets/types': 6.0.0 + '@manypkg/get-packages': 1.1.3 + fs-extra: 7.0.1 + micromatch: 4.0.5 + dev: true + + /@changesets/errors@0.2.0: + resolution: {integrity: sha512-6BLOQUscTpZeGljvyQXlWOItQyU71kCdGz7Pi8H8zdw6BI0g3m43iL4xKUVPWtG+qrrL9DTjpdn8eYuCQSRpow==} + dependencies: + extendable-error: 0.1.7 + dev: true + + /@changesets/get-dependents-graph@2.0.0: + resolution: {integrity: sha512-cafUXponivK4vBgZ3yLu944mTvam06XEn2IZGjjKc0antpenkYANXiiE6GExV/yKdsCnE8dXVZ25yGqLYZmScA==} + dependencies: + '@changesets/types': 6.0.0 + '@manypkg/get-packages': 1.1.3 + chalk: 2.4.2 + fs-extra: 7.0.1 + semver: 7.5.4 + dev: true + + /@changesets/get-release-plan@4.0.0: + resolution: {integrity: sha512-9L9xCUeD/Tb6L/oKmpm8nyzsOzhdNBBbt/ZNcjynbHC07WW4E1eX8NMGC5g5SbM5z/V+MOrYsJ4lRW41GCbg3w==} + dependencies: + '@babel/runtime': 7.23.2 + '@changesets/assemble-release-plan': 6.0.0 + '@changesets/config': 3.0.0 + '@changesets/pre': 2.0.0 + '@changesets/read': 0.6.0 + '@changesets/types': 6.0.0 + '@manypkg/get-packages': 1.1.3 + dev: true + + /@changesets/get-version-range-type@0.4.0: + resolution: {integrity: sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ==} + dev: true + + /@changesets/git@3.0.0: + resolution: {integrity: sha512-vvhnZDHe2eiBNRFHEgMiGd2CT+164dfYyrJDhwwxTVD/OW0FUD6G7+4DIx1dNwkwjHyzisxGAU96q0sVNBns0w==} + dependencies: + '@babel/runtime': 7.23.2 + '@changesets/errors': 0.2.0 + '@changesets/types': 6.0.0 + '@manypkg/get-packages': 1.1.3 + is-subdir: 1.2.0 + micromatch: 4.0.5 + spawndamnit: 2.0.0 + dev: true + + /@changesets/logger@0.1.0: + resolution: {integrity: sha512-pBrJm4CQm9VqFVwWnSqKEfsS2ESnwqwH+xR7jETxIErZcfd1u2zBSqrHbRHR7xjhSgep9x2PSKFKY//FAshA3g==} + dependencies: + chalk: 2.4.2 + dev: true + + /@changesets/parse@0.4.0: + resolution: {integrity: sha512-TS/9KG2CdGXS27S+QxbZXgr8uPsP4yNJYb4BC2/NeFUj80Rni3TeD2qwWmabymxmrLo7JEsytXH1FbpKTbvivw==} + dependencies: + '@changesets/types': 6.0.0 + js-yaml: 3.14.1 + dev: true + + /@changesets/pre@2.0.0: + resolution: {integrity: sha512-HLTNYX/A4jZxc+Sq8D1AMBsv+1qD6rmmJtjsCJa/9MSRybdxh0mjbTvE6JYZQ/ZiQ0mMlDOlGPXTm9KLTU3jyw==} + dependencies: + '@babel/runtime': 7.23.2 + '@changesets/errors': 0.2.0 + '@changesets/types': 6.0.0 + '@manypkg/get-packages': 1.1.3 + fs-extra: 7.0.1 + dev: true + + /@changesets/read@0.6.0: + resolution: {integrity: sha512-ZypqX8+/im1Fm98K4YcZtmLKgjs1kDQ5zHpc2U1qdtNBmZZfo/IBiG162RoP0CUF05tvp2y4IspH11PLnPxuuw==} + dependencies: + '@babel/runtime': 7.23.2 + '@changesets/git': 3.0.0 + '@changesets/logger': 0.1.0 + '@changesets/parse': 0.4.0 + '@changesets/types': 6.0.0 + chalk: 2.4.2 + fs-extra: 7.0.1 + p-filter: 2.1.0 + dev: true + + /@changesets/types@4.1.0: + resolution: {integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==} + dev: true + + /@changesets/types@6.0.0: + resolution: {integrity: sha512-b1UkfNulgKoWfqyHtzKS5fOZYSJO+77adgL7DLRDr+/7jhChN+QcHnbjiQVOz/U+Ts3PGNySq7diAItzDgugfQ==} + dev: true + + /@changesets/write@0.3.0: + resolution: {integrity: sha512-slGLb21fxZVUYbyea+94uFiD6ntQW0M2hIKNznFizDhZPDgn2c/fv1UzzlW43RVzh1BEDuIqW6hzlJ1OflNmcw==} + dependencies: + '@babel/runtime': 7.23.2 + '@changesets/types': 6.0.0 + fs-extra: 7.0.1 + human-id: 1.0.2 + prettier: 2.8.8 + dev: true + /@esbuild/android-arm64@0.19.8: resolution: {integrity: sha512-B8JbS61bEunhfx8kasogFENgQfr/dIp+ggYXwTqdbMAgGDhRa3AaPpQMuQU0rNxDLECj6FhDzk1cF9WHMVwrtA==} engines: {node: '>=12'} @@ -360,6 +546,26 @@ packages: resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} dev: true + /@manypkg/find-root@1.1.0: + resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} + dependencies: + '@babel/runtime': 7.23.2 + '@types/node': 12.20.55 + find-up: 4.1.0 + fs-extra: 8.1.0 + dev: true + + /@manypkg/get-packages@1.1.3: + resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} + dependencies: + '@babel/runtime': 7.23.2 + '@changesets/types': 4.1.0 + '@manypkg/find-root': 1.1.0 + fs-extra: 8.1.0 + globby: 11.1.0 + read-yaml-file: 1.1.0 + dev: true + /@nodelib/fs.scandir@2.1.5: resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -499,12 +705,28 @@ packages: resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} dev: true + /@types/minimist@1.2.5: + resolution: {integrity: sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==} + dev: true + + /@types/node@12.20.55: + resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} + dev: true + /@types/node@20.10.1: resolution: {integrity: sha512-T2qwhjWwGH81vUEx4EXmBKsTJRXFXNZTL4v0gi01+zyBmCwzE6TyHszqX01m+QHTEq+EZNo13NeJIdEqf+Myrg==} dependencies: undici-types: 5.26.5 dev: true + /@types/normalize-package-data@2.4.4: + resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} + dev: true + + /@types/semver@7.5.6: + resolution: {integrity: sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==} + dev: true + /@typescript-eslint/eslint-plugin@4.33.0(@typescript-eslint/parser@4.33.0)(eslint@7.32.0)(typescript@4.6.4): resolution: {integrity: sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==} engines: {node: ^10.12.0 || >=12.0.0} @@ -822,6 +1044,11 @@ packages: is-shared-array-buffer: 1.0.2 dev: true + /arrify@1.0.1: + resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} + engines: {node: '>=0.10.0'} + dev: true + /assertion-error@1.1.0: resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} dev: true @@ -875,6 +1102,13 @@ packages: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} dev: true + /better-path-resolve@1.0.0: + resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} + engines: {node: '>=4'} + dependencies: + is-windows: 1.0.2 + dev: true + /brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} dependencies: @@ -895,6 +1129,12 @@ packages: fill-range: 7.0.1 dev: true + /breakword@1.0.6: + resolution: {integrity: sha512-yjxDAYyK/pBvws9H4xKYpLDpYKEH6CzrBPAuXq3x18I+c/2MkVtT3qAr7Oloi6Dss9qNhPVueAAVU1CSeNDIXw==} + dependencies: + wcwidth: 1.0.1 + dev: true + /cac@6.7.14: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} engines: {node: '>=8'} @@ -913,6 +1153,15 @@ packages: engines: {node: '>=6'} dev: true + /camelcase-keys@6.2.2: + resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} + engines: {node: '>=8'} + dependencies: + camelcase: 5.3.1 + map-obj: 4.3.0 + quick-lru: 4.0.1 + dev: true + /camelcase-keys@7.0.2: resolution: {integrity: sha512-Rjs1H+A9R+Ig+4E/9oyB66UC5Mj9Xq3N//vcLf2WzgdTi/3gUu3Z9KoqmlrEG4VuuLK8wJHofxzdQXz/knhiYg==} engines: {node: '>=12'} @@ -923,6 +1172,11 @@ packages: type-fest: 1.4.0 dev: false + /camelcase@5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} + dev: true + /camelcase@6.3.0: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} @@ -958,12 +1212,43 @@ packages: supports-color: 7.2.0 dev: true + /chardet@0.7.0: + resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} + dev: true + /check-error@1.0.3: resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} dependencies: get-func-name: 2.0.2 dev: true + /ci-info@3.9.0: + resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} + engines: {node: '>=8'} + dev: true + + /cliui@6.0.0: + resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 6.2.0 + dev: true + + /cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + dev: true + + /clone@1.0.4: + resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} + engines: {node: '>=0.8'} + dev: true + /color-convert@1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} dependencies: @@ -1000,6 +1285,14 @@ packages: resolution: {integrity: sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==} dev: true + /cross-spawn@5.1.0: + resolution: {integrity: sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==} + dependencies: + lru-cache: 4.1.5 + shebang-command: 1.2.0 + which: 1.3.1 + dev: true + /cross-spawn@7.0.3: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} engines: {node: '>= 8'} @@ -1009,6 +1302,28 @@ packages: which: 2.0.2 dev: true + /csv-generate@3.4.3: + resolution: {integrity: sha512-w/T+rqR0vwvHqWs/1ZyMDWtHHSJaN06klRqJXBEpDJaM/+dZkso0OKh1VcuuYvK3XM53KysVNq8Ko/epCK8wOw==} + dev: true + + /csv-parse@4.16.3: + resolution: {integrity: sha512-cO1I/zmz4w2dcKHVvpCr7JVRu8/FymG5OEpmvsZYlccYolPBLoVGKUHgNoc4ZGkFeFlWGEDmMyBM+TTqRdW/wg==} + dev: true + + /csv-stringify@5.6.5: + resolution: {integrity: sha512-PjiQ659aQ+fUTQqSrd1XEDnOr52jh30RBurfzkscaE2tPaFsDH5wOAHJiw8XAHphRknCwMUE9KRayc4K/NbO8A==} + dev: true + + /csv@5.5.3: + resolution: {integrity: sha512-QTaY0XjjhTQOdguARF0lGKm5/mEq9PD9/VhZZegHDIBq2tQwgNpHc3dneD4mGo2iJs+fTKv5Bp0fZ+BRuY3Z0g==} + engines: {node: '>= 0.1.90'} + dependencies: + csv-generate: 3.4.3 + csv-parse: 4.16.3 + csv-stringify: 5.6.5 + stream-transform: 2.1.3 + dev: true + /damerau-levenshtein@1.0.8: resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} dev: true @@ -1036,6 +1351,19 @@ packages: ms: 2.1.2 dev: true + /decamelize-keys@1.1.1: + resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} + engines: {node: '>=0.10.0'} + dependencies: + decamelize: 1.2.0 + map-obj: 1.0.1 + dev: true + + /decamelize@1.2.0: + resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} + engines: {node: '>=0.10.0'} + dev: true + /deep-eql@4.1.3: resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} engines: {node: '>=6'} @@ -1047,6 +1375,12 @@ packages: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} dev: true + /defaults@1.0.4: + resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} + dependencies: + clone: 1.0.4 + dev: true + /define-data-property@1.1.1: resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==} engines: {node: '>= 0.4'} @@ -1075,6 +1409,11 @@ packages: engines: {node: '>=6'} dev: true + /detect-indent@6.1.0: + resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} + engines: {node: '>=8'} + dev: true + /diff-sequences@29.6.3: resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -1117,6 +1456,12 @@ packages: strip-ansi: 6.0.1 dev: true + /error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + dependencies: + is-arrayish: 0.2.1 + dev: true + /es-abstract@1.22.3: resolution: {integrity: sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==} engines: {node: '>= 0.4'} @@ -1235,6 +1580,11 @@ packages: '@esbuild/win32-x64': 0.19.8 dev: true + /escalade@3.1.1: + resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} + engines: {node: '>=6'} + dev: true + /escape-string-regexp@1.0.5: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} engines: {node: '>=0.8.0'} @@ -1565,6 +1915,19 @@ packages: engines: {node: '>=0.10.0'} dev: true + /extendable-error@0.1.7: + resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} + dev: true + + /external-editor@3.1.0: + resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} + engines: {node: '>=4'} + dependencies: + chardet: 0.7.0 + iconv-lite: 0.4.24 + tmp: 0.0.33 + dev: true + /fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} dev: true @@ -1608,6 +1971,29 @@ packages: to-regex-range: 5.0.1 dev: true + /find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + dev: true + + /find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + dev: true + + /find-yarn-workspace-root2@1.2.16: + resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==} + dependencies: + micromatch: 4.0.5 + pkg-dir: 4.2.0 + dev: true + /flat-cache@3.1.1: resolution: {integrity: sha512-/qM2b3LUIaIgviBQovTLvijfyOQXPtSRnRK26ksj2J7rzPIecePUIpJsZ4T02Qg+xiAEKIs5K8dsHEd+VaKa/Q==} engines: {node: '>=12.0.0'} @@ -1646,6 +2032,24 @@ packages: mime-types: 2.1.35 dev: false + /fs-extra@7.0.1: + resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} + engines: {node: '>=6 <7 || >=8'} + dependencies: + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 + dev: true + + /fs-extra@8.1.0: + resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} + engines: {node: '>=6 <7 || >=8'} + dependencies: + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 + dev: true + /fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} dev: true @@ -1680,6 +2084,11 @@ packages: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} dev: true + /get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + dev: true + /get-func-name@2.0.2: resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} dev: true @@ -1751,6 +2160,19 @@ packages: get-intrinsic: 1.2.2 dev: true + /graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + dev: true + + /grapheme-splitter@1.0.4: + resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} + dev: true + + /hard-rejection@2.1.0: + resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} + engines: {node: '>=6'} + dev: true + /has-bigints@1.0.2: resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} dev: true @@ -1795,6 +2217,21 @@ packages: function-bind: 1.1.2 dev: true + /hosted-git-info@2.8.9: + resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} + dev: true + + /human-id@1.0.2: + resolution: {integrity: sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw==} + dev: true + + /iconv-lite@0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} + dependencies: + safer-buffer: 2.1.2 + dev: true + /ignore@4.0.6: resolution: {integrity: sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==} engines: {node: '>= 4'} @@ -1818,6 +2255,11 @@ packages: engines: {node: '>=0.8.19'} dev: true + /indent-string@4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} + dev: true + /inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} dependencies: @@ -1846,6 +2288,10 @@ packages: is-typed-array: 1.1.12 dev: true + /is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + dev: true + /is-async-function@2.0.0: resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} engines: {node: '>= 0.4'} @@ -1936,6 +2382,11 @@ packages: engines: {node: '>=0.12.0'} dev: true + /is-plain-obj@1.1.0: + resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} + engines: {node: '>=0.10.0'} + dev: true + /is-regex@1.1.4: resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} engines: {node: '>= 0.4'} @@ -1961,6 +2412,13 @@ packages: has-tostringtag: 1.0.0 dev: true + /is-subdir@1.2.0: + resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==} + engines: {node: '>=4'} + dependencies: + better-path-resolve: 1.0.0 + dev: true + /is-symbol@1.0.4: resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} engines: {node: '>= 0.4'} @@ -1992,6 +2450,11 @@ packages: get-intrinsic: 1.2.2 dev: true + /is-windows@1.0.2: + resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} + engines: {node: '>=0.10.0'} + dev: true + /isarray@2.0.5: resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} dev: true @@ -2030,6 +2493,10 @@ packages: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} dev: true + /json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + dev: true + /json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} dev: true @@ -2053,6 +2520,12 @@ packages: resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} dev: true + /jsonfile@4.0.0: + resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + optionalDependencies: + graceful-fs: 4.2.11 + dev: true + /jsx-ast-utils@3.3.5: resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} engines: {node: '>=4.0'} @@ -2069,6 +2542,16 @@ packages: json-buffer: 3.0.1 dev: true + /kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + dev: true + + /kleur@4.1.5: + resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} + engines: {node: '>=6'} + dev: true + /language-subtag-registry@0.3.22: resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==} dev: true @@ -2088,15 +2571,47 @@ packages: type-check: 0.4.0 dev: true + /lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + dev: true + + /load-yaml-file@0.2.0: + resolution: {integrity: sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==} + engines: {node: '>=6'} + dependencies: + graceful-fs: 4.2.11 + js-yaml: 3.14.1 + pify: 4.0.1 + strip-bom: 3.0.0 + dev: true + /local-pkg@0.4.3: resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==} engines: {node: '>=14'} dev: true + /locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + dependencies: + p-locate: 4.1.0 + dev: true + + /locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + dependencies: + p-locate: 5.0.0 + dev: true + /lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} dev: true + /lodash.startcase@4.4.0: + resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} + dev: true + /lodash.truncate@4.4.2: resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} dev: true @@ -2114,6 +2629,13 @@ packages: get-func-name: 2.0.2 dev: true + /lru-cache@4.1.5: + resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} + dependencies: + pseudomap: 1.0.2 + yallist: 2.1.2 + dev: true + /lru-cache@6.0.0: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} engines: {node: '>=10'} @@ -2132,10 +2654,14 @@ packages: '@jridgewell/sourcemap-codec': 1.4.15 dev: true + /map-obj@1.0.1: + resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} + engines: {node: '>=0.10.0'} + dev: true + /map-obj@4.3.0: resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} engines: {node: '>=8'} - dev: false /marked@4.3.0: resolution: {integrity: sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==} @@ -2143,6 +2669,23 @@ packages: hasBin: true dev: true + /meow@6.1.1: + resolution: {integrity: sha512-3YffViIt2QWgTy6Pale5QpopX/IvU3LPL03jOTqp6pGj3VjesdO/U8CuHMKpnQr4shCNCM5fd5XFFvIIl6JBHg==} + engines: {node: '>=8'} + dependencies: + '@types/minimist': 1.2.5 + camelcase-keys: 6.2.2 + decamelize-keys: 1.1.1 + hard-rejection: 2.1.0 + minimist-options: 4.1.0 + normalize-package-data: 2.5.0 + read-pkg-up: 7.0.1 + redent: 3.0.0 + trim-newlines: 3.0.1 + type-fest: 0.13.1 + yargs-parser: 18.1.3 + dev: true + /merge2@1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} @@ -2168,6 +2711,11 @@ packages: mime-db: 1.52.0 dev: false + /min-indent@1.0.1: + resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} + engines: {node: '>=4'} + dev: true + /minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: @@ -2181,10 +2729,24 @@ packages: brace-expansion: 2.0.1 dev: true + /minimist-options@4.1.0: + resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} + engines: {node: '>= 6'} + dependencies: + arrify: 1.0.1 + is-plain-obj: 1.1.0 + kind-of: 6.0.3 + dev: true + /minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} dev: true + /mixme@0.5.10: + resolution: {integrity: sha512-5H76ANWinB1H3twpJ6JY8uvAtpmFvHNArpilJAjXRKXSDDLPIMoZArw5SH0q9z+lLs8IrMw7Q2VWpWimFKFT1Q==} + engines: {node: '>= 8.0.0'} + dev: true + /mlly@1.4.2: resolution: {integrity: sha512-i/Ykufi2t1EZ6NaPLdfnZk2AX8cs0d+mTzVKuPfqPKPatxLApaBoxJQ9x1/uckXtrS/U5oisPMDkNs0yQTaBRg==} dependencies: @@ -2212,6 +2774,15 @@ packages: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} dev: true + /normalize-package-data@2.5.0: + resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} + dependencies: + hosted-git-info: 2.8.9 + resolve: 1.22.8 + semver: 5.7.2 + validate-npm-package-license: 3.0.4 + dev: true + /object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} @@ -2297,6 +2868,36 @@ packages: type-check: 0.4.0 dev: true + /os-tmpdir@1.0.2: + resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} + engines: {node: '>=0.10.0'} + dev: true + + /outdent@0.5.0: + resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} + dev: true + + /p-filter@2.1.0: + resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} + engines: {node: '>=8'} + dependencies: + p-map: 2.1.0 + dev: true + + /p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + dependencies: + p-try: 2.2.0 + dev: true + + /p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + dependencies: + yocto-queue: 0.1.0 + dev: true + /p-limit@4.0.0: resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -2304,6 +2905,30 @@ packages: yocto-queue: 1.0.0 dev: true + /p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + dependencies: + p-limit: 2.3.0 + dev: true + + /p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + dependencies: + p-limit: 3.1.0 + dev: true + + /p-map@2.1.0: + resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} + engines: {node: '>=6'} + dev: true + + /p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + dev: true + /parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} @@ -2311,6 +2936,21 @@ packages: callsites: 3.1.0 dev: true + /parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + dependencies: + '@babel/code-frame': 7.12.11 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + dev: true + + /path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + dev: true + /path-is-absolute@1.0.1: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} @@ -2347,6 +2987,18 @@ packages: engines: {node: '>=8.6'} dev: true + /pify@4.0.1: + resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} + engines: {node: '>=6'} + dev: true + + /pkg-dir@4.2.0: + resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} + engines: {node: '>=8'} + dependencies: + find-up: 4.1.0 + dev: true + /pkg-types@1.0.3: resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} dependencies: @@ -2364,6 +3016,16 @@ packages: source-map-js: 1.0.2 dev: true + /preferred-pm@3.1.2: + resolution: {integrity: sha512-nk7dKrcW8hfCZ4H6klWcdRknBOXWzNQByJ0oJyX97BOupsYD+FzLS4hflgEu/uPUEHZCuRfMxzCBsuWd7OzT8Q==} + engines: {node: '>=10'} + dependencies: + find-up: 5.0.0 + find-yarn-workspace-root2: 1.2.16 + path-exists: 4.0.0 + which-pm: 2.0.0 + dev: true + /prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} @@ -2401,6 +3063,10 @@ packages: resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} dev: false + /pseudomap@1.0.2: + resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} + dev: true + /punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} @@ -2410,6 +3076,11 @@ packages: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} dev: true + /quick-lru@4.0.1: + resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} + engines: {node: '>=8'} + dev: true + /quick-lru@5.1.1: resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} engines: {node: '>=10'} @@ -2423,6 +3094,43 @@ packages: resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} dev: true + /read-pkg-up@7.0.1: + resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} + engines: {node: '>=8'} + dependencies: + find-up: 4.1.0 + read-pkg: 5.2.0 + type-fest: 0.8.1 + dev: true + + /read-pkg@5.2.0: + resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} + engines: {node: '>=8'} + dependencies: + '@types/normalize-package-data': 2.4.4 + normalize-package-data: 2.5.0 + parse-json: 5.2.0 + type-fest: 0.6.0 + dev: true + + /read-yaml-file@1.1.0: + resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} + engines: {node: '>=6'} + dependencies: + graceful-fs: 4.2.11 + js-yaml: 3.14.1 + pify: 4.0.1 + strip-bom: 3.0.0 + dev: true + + /redent@3.0.0: + resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} + engines: {node: '>=8'} + dependencies: + indent-string: 4.0.0 + strip-indent: 3.0.0 + dev: true + /reflect.getprototypeof@1.0.4: resolution: {integrity: sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==} engines: {node: '>= 0.4'} @@ -2453,16 +3161,30 @@ packages: engines: {node: '>=8'} dev: true + /require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + dev: true + /require-from-string@2.0.2: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} engines: {node: '>=0.10.0'} dev: true + /require-main-filename@2.0.0: + resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} + dev: true + /resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} dev: true + /resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + dev: true + /resolve@1.22.8: resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} hasBin: true @@ -2537,6 +3259,15 @@ packages: is-regex: 1.1.4 dev: true + /safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + dev: true + + /semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + hasBin: true + dev: true + /semver@6.3.1: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true @@ -2550,6 +3281,10 @@ packages: lru-cache: 6.0.0 dev: true + /set-blocking@2.0.0: + resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} + dev: true + /set-function-length@1.1.1: resolution: {integrity: sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==} engines: {node: '>= 0.4'} @@ -2569,6 +3304,13 @@ packages: has-property-descriptors: 1.0.1 dev: true + /shebang-command@1.2.0: + resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} + engines: {node: '>=0.10.0'} + dependencies: + shebang-regex: 1.0.0 + dev: true + /shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} @@ -2576,6 +3318,11 @@ packages: shebang-regex: 3.0.0 dev: true + /shebang-regex@1.0.0: + resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} + engines: {node: '>=0.10.0'} + dev: true + /shebang-regex@3.0.0: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} @@ -2602,6 +3349,10 @@ packages: resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} dev: true + /signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + dev: true + /slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} @@ -2616,11 +3367,53 @@ packages: is-fullwidth-code-point: 3.0.0 dev: true + /smartwrap@2.0.2: + resolution: {integrity: sha512-vCsKNQxb7PnCNd2wY1WClWifAc2lwqsG8OaswpJkVJsvMGcnEntdTCDajZCkk93Ay1U3t/9puJmb525Rg5MZBA==} + engines: {node: '>=6'} + hasBin: true + dependencies: + array.prototype.flat: 1.3.2 + breakword: 1.0.6 + grapheme-splitter: 1.0.4 + strip-ansi: 6.0.1 + wcwidth: 1.0.1 + yargs: 15.4.1 + dev: true + /source-map-js@1.0.2: resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} engines: {node: '>=0.10.0'} dev: true + /spawndamnit@2.0.0: + resolution: {integrity: sha512-j4JKEcncSjFlqIwU5L/rp2N5SIPsdxaRsIv678+TZxZ0SRDJTm8JrxJMjE/XuiEZNEir3S8l0Fa3Ke339WI4qA==} + dependencies: + cross-spawn: 5.1.0 + signal-exit: 3.0.7 + dev: true + + /spdx-correct@3.2.0: + resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} + dependencies: + spdx-expression-parse: 3.0.1 + spdx-license-ids: 3.0.16 + dev: true + + /spdx-exceptions@2.3.0: + resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} + dev: true + + /spdx-expression-parse@3.0.1: + resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} + dependencies: + spdx-exceptions: 2.3.0 + spdx-license-ids: 3.0.16 + dev: true + + /spdx-license-ids@3.0.16: + resolution: {integrity: sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==} + dev: true + /sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} dev: true @@ -2633,6 +3426,12 @@ packages: resolution: {integrity: sha512-aFZ19IgVmhdB2uX599ve2kE6BIE3YMnQ6Gp6BURhW/oIzpXGKr878TQfAQZn1+i0Flcc/UKUy1gOlcfaUBCryg==} dev: true + /stream-transform@2.1.3: + resolution: {integrity: sha512-9GHUiM5hMiCi6Y03jD2ARC1ettBXkQBoQAe7nJsPknnI0ow10aXjTnew8QtYQmLjzn974BnmWEAJgCY6ZP1DeQ==} + dependencies: + mixme: 0.5.10 + dev: true + /string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} @@ -2693,6 +3492,13 @@ packages: engines: {node: '>=4'} dev: true + /strip-indent@3.0.0: + resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} + engines: {node: '>=8'} + dependencies: + min-indent: 1.0.1 + dev: true + /strip-json-comments@3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} @@ -2734,6 +3540,11 @@ packages: strip-ansi: 6.0.1 dev: true + /term-size@2.2.1: + resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} + engines: {node: '>=8'} + dev: true + /text-table@0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} dev: true @@ -2752,6 +3563,13 @@ packages: engines: {node: '>=14.0.0'} dev: true + /tmp@0.0.33: + resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} + engines: {node: '>=0.6.0'} + dependencies: + os-tmpdir: 1.0.2 + dev: true + /to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} @@ -2759,6 +3577,11 @@ packages: is-number: 7.0.0 dev: true + /trim-newlines@3.0.1: + resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} + engines: {node: '>=8'} + dev: true + /tsconfig-paths@3.14.2: resolution: {integrity: sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==} dependencies: @@ -2782,6 +3605,20 @@ packages: typescript: 4.6.4 dev: true + /tty-table@4.2.3: + resolution: {integrity: sha512-Fs15mu0vGzCrj8fmJNP7Ynxt5J7praPXqFN0leZeZBXJwkMxv9cb2D454k1ltrtUSJbZ4yH4e0CynsHLxmUfFA==} + engines: {node: '>=8.0.0'} + hasBin: true + dependencies: + chalk: 4.1.2 + csv: 5.5.3 + kleur: 4.1.5 + smartwrap: 2.0.2 + strip-ansi: 6.0.1 + wcwidth: 1.0.1 + yargs: 17.7.2 + dev: true + /type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} @@ -2794,11 +3631,26 @@ packages: engines: {node: '>=4'} dev: true + /type-fest@0.13.1: + resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==} + engines: {node: '>=10'} + dev: true + /type-fest@0.20.2: resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} engines: {node: '>=10'} dev: true + /type-fest@0.6.0: + resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} + engines: {node: '>=8'} + dev: true + + /type-fest@0.8.1: + resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} + engines: {node: '>=8'} + dev: true + /type-fest@1.4.0: resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} engines: {node: '>=10'} @@ -2885,6 +3737,11 @@ packages: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} dev: true + /universalify@0.1.2: + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + engines: {node: '>= 4.0.0'} + dev: true + /uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: @@ -2895,6 +3752,13 @@ packages: resolution: {integrity: sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==} dev: true + /validate-npm-package-license@3.0.4: + resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + dependencies: + spdx-correct: 3.2.0 + spdx-expression-parse: 3.0.1 + dev: true + /vite-node@0.34.6(@types/node@20.10.1): resolution: {integrity: sha512-nlBMJ9x6n7/Amaz6F3zJ97EBwR2FkzhBRxF5e+jE6LA3yi6Wtc2lyTij1OnDMIr34v5g/tVQtsVAzhT0jc5ygA==} engines: {node: '>=v14.18.0'} @@ -3026,6 +3890,12 @@ packages: resolution: {integrity: sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==} dev: true + /wcwidth@1.0.1: + resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + dependencies: + defaults: 1.0.4 + dev: true + /which-boxed-primitive@1.0.2: resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} dependencies: @@ -3063,6 +3933,18 @@ packages: is-weakset: 2.0.2 dev: true + /which-module@2.0.1: + resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} + dev: true + + /which-pm@2.0.0: + resolution: {integrity: sha512-Lhs9Pmyph0p5n5Z3mVnN0yWcbQYUAD7rbQUiMsQxOJ3T57k7RFe35SUwWMf7dsbDZks1uOmw4AecB/JMDj3v/w==} + engines: {node: '>=8.15'} + dependencies: + load-yaml-file: 0.2.0 + path-exists: 4.0.0 + dev: true + /which-typed-array@1.1.13: resolution: {integrity: sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==} engines: {node: '>= 0.4'} @@ -3074,6 +3956,13 @@ packages: has-tostringtag: 1.0.0 dev: true + /which@1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + hasBin: true + dependencies: + isexe: 2.0.0 + dev: true + /which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} @@ -3091,14 +3980,93 @@ packages: stackback: 0.0.2 dev: true + /wrap-ansi@6.2.0: + resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} + engines: {node: '>=8'} + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + dev: true + + /wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + dev: true + /wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} dev: true + /y18n@4.0.3: + resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} + dev: true + + /y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + dev: true + + /yallist@2.1.2: + resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} + dev: true + /yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} dev: true + /yargs-parser@18.1.3: + resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} + engines: {node: '>=6'} + dependencies: + camelcase: 5.3.1 + decamelize: 1.2.0 + dev: true + + /yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + dev: true + + /yargs@15.4.1: + resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} + engines: {node: '>=8'} + dependencies: + cliui: 6.0.0 + decamelize: 1.2.0 + find-up: 4.1.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + require-main-filename: 2.0.0 + set-blocking: 2.0.0 + string-width: 4.2.3 + which-module: 2.0.1 + y18n: 4.0.3 + yargs-parser: 18.1.3 + dev: true + + /yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + dependencies: + cliui: 8.0.1 + escalade: 3.1.1 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + dev: true + + /yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + dev: true + /yocto-queue@1.0.0: resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} engines: {node: '>=12.20'} From ace2cb6e32f83d1f0ced57d1b081d794bd0b38bd Mon Sep 17 00:00:00 2001 From: lukasIO Date: Tue, 5 Dec 2023 17:39:27 +0100 Subject: [PATCH 04/11] add changeset command --- package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package.json b/package.json index cf246bcb..e1dfca4b 100644 --- a/package.json +++ b/package.json @@ -12,6 +12,7 @@ "build": "tsc --project tsconfig.json", "build:watch": "tsc --watch", "build-docs": "typedoc", + "changeset": "changeset", "ci:publish": "pnpm build && changeset publish", "proto": "./generate-proto.sh", "lint": "eslint .", From 30f19405e2cd33b95ee82f035f7c0ca65d2d6ccc Mon Sep 17 00:00:00 2001 From: lukasIO Date: Tue, 5 Dec 2023 17:40:49 +0100 Subject: [PATCH 05/11] require node 18 as minimum --- package.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/package.json b/package.json index e1dfca4b..a52d6652 100644 --- a/package.json +++ b/package.json @@ -40,5 +40,8 @@ "typescript": "4.6.x", "vite": "^5.0.5", "vitest": "^0.34.6" + }, + "engines": { + "node": ">=18" } } From 8877831d867bbcf3bee1136f73b00bbbde2c5d85 Mon Sep 17 00:00:00 2001 From: lukasIO Date: Tue, 5 Dec 2023 17:59:45 +0100 Subject: [PATCH 06/11] fix eslint --- .eslintrc.js => .eslintrc.cjs | 0 jest.config.js | 4 ---- tsconfig.eslint.json | 3 ++- tsconfig.json | 4 ++-- vite.config.js | 1 + 5 files changed, 5 insertions(+), 7 deletions(-) rename .eslintrc.js => .eslintrc.cjs (100%) delete mode 100644 jest.config.js diff --git a/.eslintrc.js b/.eslintrc.cjs similarity index 100% rename from .eslintrc.js rename to .eslintrc.cjs diff --git a/jest.config.js b/jest.config.js deleted file mode 100644 index 4a5b465e..00000000 --- a/jest.config.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - preset: 'ts-jest', - testEnvironment: 'node', -}; diff --git a/tsconfig.eslint.json b/tsconfig.eslint.json index 2612e213..e7268ee3 100644 --- a/tsconfig.eslint.json +++ b/tsconfig.eslint.json @@ -1,4 +1,5 @@ { "extends": "./tsconfig.json", - "include": ["src/*.ts", "*.js", ".eslintrc.js"] + "include": ["src/**.ts", "vite.config.js"], + "exclude": [] } diff --git a/tsconfig.json b/tsconfig.json index 51d87ba1..f2fb2fd9 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -11,8 +11,8 @@ "forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */, "moduleResolution": "node" }, - "include": ["src/**/*"], - "exclude": ["vite.config.js", "src/**/*.test.ts"], + "include": ["src/**/*.ts"], + "exclude": ["src/**/*.test.ts", "vite.config.ts"], "typedocOptions": { "entryPoints": ["src/index.ts"], "excludeInternal": true, diff --git a/vite.config.js b/vite.config.js index db81e2f8..0e508586 100644 --- a/vite.config.js +++ b/vite.config.js @@ -1,3 +1,4 @@ +// eslint-disable-next-line import/no-extraneous-dependencies import { defineConfig } from 'vite'; export default defineConfig({ From cb84c992b0fd71c67b30ca369e9ee6f8b1686972 Mon Sep 17 00:00:00 2001 From: lukasIO Date: Tue, 5 Dec 2023 18:05:13 +0100 Subject: [PATCH 07/11] Add changesets --- .changeset/happy-badgers-call.md | 5 +++++ .changeset/orange-starfishes-smoke.md | 5 +++++ .changeset/tame-wolves-shop.md | 5 +++++ 3 files changed, 15 insertions(+) create mode 100644 .changeset/happy-badgers-call.md create mode 100644 .changeset/orange-starfishes-smoke.md create mode 100644 .changeset/tame-wolves-shop.md diff --git a/.changeset/happy-badgers-call.md b/.changeset/happy-badgers-call.md new file mode 100644 index 00000000..444b3dcb --- /dev/null +++ b/.changeset/happy-badgers-call.md @@ -0,0 +1,5 @@ +--- +'livekit-server-sdk': major +--- + +Require node 18 as minimumg version diff --git a/.changeset/orange-starfishes-smoke.md b/.changeset/orange-starfishes-smoke.md new file mode 100644 index 00000000..bf4bd08e --- /dev/null +++ b/.changeset/orange-starfishes-smoke.md @@ -0,0 +1,5 @@ +--- +'livekit-server-sdk': major +--- + +Token generation is now async (replaced jsonwebtoken with jose for better JS runtime support) diff --git a/.changeset/tame-wolves-shop.md b/.changeset/tame-wolves-shop.md new file mode 100644 index 00000000..5b820c55 --- /dev/null +++ b/.changeset/tame-wolves-shop.md @@ -0,0 +1,5 @@ +--- +'livekit-server-sdk': major +--- + +Replace protobufjs with protobuf-es From 6096aed942c5cf2ac4a875af4b6a9b47437c8e63 Mon Sep 17 00:00:00 2001 From: lukasIO Date: Tue, 5 Dec 2023 18:10:23 +0100 Subject: [PATCH 08/11] Update happy-badgers-call.md --- .changeset/happy-badgers-call.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/happy-badgers-call.md b/.changeset/happy-badgers-call.md index 444b3dcb..705840fc 100644 --- a/.changeset/happy-badgers-call.md +++ b/.changeset/happy-badgers-call.md @@ -2,4 +2,4 @@ 'livekit-server-sdk': major --- -Require node 18 as minimumg version +Require node 18 as minimum version From cd206d2c206eea753cc83130b972aea768526772 Mon Sep 17 00:00:00 2001 From: lukasIO Date: Tue, 5 Dec 2023 18:11:58 +0100 Subject: [PATCH 09/11] remove legacy publishing workflow --- .github/workflows/publish.yaml | 51 ---------------------------------- 1 file changed, 51 deletions(-) delete mode 100644 .github/workflows/publish.yaml diff --git a/.github/workflows/publish.yaml b/.github/workflows/publish.yaml deleted file mode 100644 index 1b13d158..00000000 --- a/.github/workflows/publish.yaml +++ /dev/null @@ -1,51 +0,0 @@ -name: Publish - -# Controls when the action will run. -on: - workflow_dispatch: - push: - # branches: [ main ] - # only publish on version tags - tags: - - v* - -# A workflow run is made up of one or more jobs that can run sequentially or in parallel -jobs: - docs: - # The type of runner that the job will run on - runs-on: ubuntu-latest - - # Steps represent a sequence of tasks that will be executed as part of the job - steps: - # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - - uses: actions/checkout@v4 - - uses: pnpm/action-setup@v2 - with: - version: 8 - - name: Use Node.js 20 - uses: actions/setup-node@v4 - with: - node-version: 20 - cache: 'pnpm' - - name: Install dependencies - run: pnpm install - - - name: Build - run: pnpm build - - - name: Build Docs - run: pnpm build-docs - - - name: Publish to npm - run: | - npm config set '//registry.npmjs.org/:_authToken' $NPM_TOKEN - npm publish - env: - NPM_TOKEN: ${{ secrets.NPM_TOKEN }} - - - name: S3 Upload - run: aws s3 cp docs/ s3://livekit-docs/server-sdk-js --recursive - env: - AWS_ACCESS_KEY_ID: ${{ secrets.DOCS_DEPLOY_AWS_ACCESS_KEY }} - AWS_SECRET_ACCESS_KEY: ${{ secrets.DOCS_DEPLOY_AWS_API_SECRET }} - AWS_DEFAULT_REGION: "us-east-1" From 22fce23f446938c4cd452a4ec3cfe54679f49402 Mon Sep 17 00:00:00 2001 From: lukasIO Date: Tue, 5 Dec 2023 18:13:23 +0100 Subject: [PATCH 10/11] update protocol --- protocol | 2 +- src/proto/livekit_egress_pb.ts | 2 +- src/proto/livekit_ingress_pb.ts | 2 +- src/proto/livekit_models_pb.ts | 2 +- src/proto/livekit_room_pb.ts | 2 +- src/proto/livekit_webhook_pb.ts | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/protocol b/protocol index 3b3c5b23..a64882f6 160000 --- a/protocol +++ b/protocol @@ -1 +1 @@ -Subproject commit 3b3c5b232970ffdaeb54eee7474ff3b9080bda28 +Subproject commit a64882f692f9753ee95cd2b3804e46aec16a6be9 diff --git a/src/proto/livekit_egress_pb.ts b/src/proto/livekit_egress_pb.ts index a6923d24..bf16e58d 100644 --- a/src/proto/livekit_egress_pb.ts +++ b/src/proto/livekit_egress_pb.ts @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -// @generated by protoc-gen-es v1.4.2 with parameter "target=ts" +// @generated by protoc-gen-es v1.5.0 with parameter "target=ts" // @generated from file livekit_egress.proto (package livekit, syntax proto3) /* eslint-disable */ // @ts-nocheck diff --git a/src/proto/livekit_ingress_pb.ts b/src/proto/livekit_ingress_pb.ts index 4124de40..9649189c 100644 --- a/src/proto/livekit_ingress_pb.ts +++ b/src/proto/livekit_ingress_pb.ts @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -// @generated by protoc-gen-es v1.4.2 with parameter "target=ts" +// @generated by protoc-gen-es v1.5.0 with parameter "target=ts" // @generated from file livekit_ingress.proto (package livekit, syntax proto3) /* eslint-disable */ // @ts-nocheck diff --git a/src/proto/livekit_models_pb.ts b/src/proto/livekit_models_pb.ts index def9fd4c..f85c251c 100644 --- a/src/proto/livekit_models_pb.ts +++ b/src/proto/livekit_models_pb.ts @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -// @generated by protoc-gen-es v1.4.2 with parameter "target=ts" +// @generated by protoc-gen-es v1.5.0 with parameter "target=ts" // @generated from file livekit_models.proto (package livekit, syntax proto3) /* eslint-disable */ // @ts-nocheck diff --git a/src/proto/livekit_room_pb.ts b/src/proto/livekit_room_pb.ts index dbabd2a6..11156096 100644 --- a/src/proto/livekit_room_pb.ts +++ b/src/proto/livekit_room_pb.ts @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -// @generated by protoc-gen-es v1.4.2 with parameter "target=ts" +// @generated by protoc-gen-es v1.5.0 with parameter "target=ts" // @generated from file livekit_room.proto (package livekit, syntax proto3) /* eslint-disable */ // @ts-nocheck diff --git a/src/proto/livekit_webhook_pb.ts b/src/proto/livekit_webhook_pb.ts index 05545945..e2615f23 100644 --- a/src/proto/livekit_webhook_pb.ts +++ b/src/proto/livekit_webhook_pb.ts @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -// @generated by protoc-gen-es v1.4.2 with parameter "target=ts" +// @generated by protoc-gen-es v1.5.0 with parameter "target=ts" // @generated from file livekit_webhook.proto (package livekit, syntax proto3) /* eslint-disable */ // @ts-nocheck From b1b712bb3beb90d89601ae11da48e171df85d2b9 Mon Sep 17 00:00:00 2001 From: lukasIO Date: Tue, 5 Dec 2023 18:28:00 +0100 Subject: [PATCH 11/11] more changesets --- .changeset/funny-meals-live.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/funny-meals-live.md diff --git a/.changeset/funny-meals-live.md b/.changeset/funny-meals-live.md new file mode 100644 index 00000000..5816d9d8 --- /dev/null +++ b/.changeset/funny-meals-live.md @@ -0,0 +1,5 @@ +--- +'livekit-server-sdk': major +--- + +Change module type to ESM