From 0ee9477e123b4f87dc5820f43421bf5ee8a67c1e Mon Sep 17 00:00:00 2001 From: John Riordan Date: Sun, 4 Sep 2022 14:25:53 -0400 Subject: [PATCH 01/73] Going forward development is now being done using node.js 16 (LTS currently). Update documentation accordingly. --- docs/BUILDING.md | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/docs/BUILDING.md b/docs/BUILDING.md index ac9c4c202..98bbdfe90 100644 --- a/docs/BUILDING.md +++ b/docs/BUILDING.md @@ -2,14 +2,7 @@ You just need to have [Node.js](http://nodejs.org/) and [Git](http://git-scm.com/). -### Node.js - -* [Install Node.js via package manager](https://github.com/nodejs/node/wiki) -* [Install Node.js from sources](http://nodejs.org) - -### Git - -* [Install Git](http://git-scm.com/book/en/Getting-Started-Installing-Git) +Development is currently being done using Node.js version 16. ## How to build SIP.js From 18fab76bfda0729f54b8e9df0a35e5d0c951c6c6 Mon Sep 17 00:00:00 2001 From: John Riordan Date: Mon, 5 Sep 2022 14:31:49 -0400 Subject: [PATCH 02/73] Update package-lock to version 2 --- package-lock.json | 4406 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 4388 insertions(+), 18 deletions(-) diff --git a/package-lock.json b/package-lock.json index a78873634..0db36be74 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,8 +1,4370 @@ { "name": "sip.js", "version": "0.20.0", - "lockfileVersion": 1, + "lockfileVersion": 2, "requires": true, + "packages": { + "": { + "name": "sip.js", + "version": "0.20.0", + "license": "MIT", + "devDependencies": { + "@microsoft/api-documenter": "7.7.20", + "@microsoft/api-extractor": "7.7.11", + "@types/jasmine": "^3.6.6", + "@typescript-eslint/eslint-plugin": "^2.34.0", + "@typescript-eslint/parser": "^2.34.0", + "circular-dependency-plugin": "^5.2.2", + "eslint": "^7.22.0", + "eslint-config-prettier": "^8.1.0", + "eslint-plugin-prettier": "^3.3.1", + "eslint-plugin-tree-shaking": "^1.8.0", + "jasmine-core": "^3.6.0", + "karma": "^6.2.0", + "karma-chrome-launcher": "^3.1.0", + "karma-cli": "^2.0.0", + "karma-jasmine": "4.0.1", + "karma-jasmine-html-reporter": "^1.5.4", + "karma-mocha-reporter": "^2.2.5", + "karma-sourcemap-loader": "^0.3.8", + "karma-webpack": "^5.0.0", + "mock-socket": "^9.0.3", + "pegjs": "^0.10.0", + "prettier": "2.2.1", + "ts-loader": "^8.0.18", + "ts-pegjs": "0.3.1", + "typescript": "4.2.3", + "webpack": "^5.26.0", + "webpack-cli": "^4.5.0" + }, + "engines": { + "node": ">=10.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.10.4" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.12.11", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", + "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", + "dev": true + }, + "node_modules/@babel/highlight": { + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", + "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.12.11", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@discoveryjs/json-ext": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.2.tgz", + "integrity": "sha512-HyYEUDeIj5rRQU2Hk5HTB2uHsbRQpF70nvMhVzi+VJR0X+xNEhjPui4/kBf3VeH/wqD28PT4sVOm8qqLjBrSZg==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.0.tgz", + "integrity": "sha512-2ZPCc+uNbjV5ERJr+aKSPRwZgKd2z11x0EgLvb1PURmUrn9QNRXFqje0Ldq454PfAVyaJYyrDvvIKSFP4NnBog==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "dev": true, + "dependencies": { + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@microsoft/api-documenter": { + "version": "7.7.20", + "resolved": "https://registry.npmjs.org/@microsoft/api-documenter/-/api-documenter-7.7.20.tgz", + "integrity": "sha512-B2gOOoYJDOqAn9iPg4Z9ay03MYtjmY2ldF3u1povTkzl5eJWERMDuuK5BLOdGdDTMr6TUd/FrhERFEeJNeQ3rg==", + "dev": true, + "dependencies": { + "@microsoft/api-extractor-model": "7.7.11", + "@microsoft/tsdoc": "0.12.19", + "@rushstack/node-core-library": "3.19.7", + "@rushstack/ts-command-line": "4.3.14", + "colors": "~1.2.1", + "js-yaml": "~3.13.1", + "resolve": "1.8.1" + }, + "bin": { + "api-documenter": "bin/api-documenter" + } + }, + "node_modules/@microsoft/api-extractor": { + "version": "7.7.11", + "resolved": "https://registry.npmjs.org/@microsoft/api-extractor/-/api-extractor-7.7.11.tgz", + "integrity": "sha512-kd2kakdDoRgI54J5H11a76hyYZBMhtp4piwWAy4bYTwlQT0v/tp+G/UMMgjUL4vKf0kTNhitEUX/0LfQb1AHzQ==", + "dev": true, + "dependencies": { + "@microsoft/api-extractor-model": "7.7.10", + "@microsoft/tsdoc": "0.12.19", + "@rushstack/node-core-library": "3.19.6", + "@rushstack/ts-command-line": "4.3.13", + "colors": "~1.2.1", + "lodash": "~4.17.15", + "resolve": "1.8.1", + "source-map": "~0.6.1", + "typescript": "~3.7.2" + }, + "bin": { + "api-extractor": "bin/api-extractor" + } + }, + "node_modules/@microsoft/api-extractor-model": { + "version": "7.7.11", + "resolved": "https://registry.npmjs.org/@microsoft/api-extractor-model/-/api-extractor-model-7.7.11.tgz", + "integrity": "sha512-Kf3RytYDq7sP4ASaaA9IcvaOPbVj1Xj34E2Wxd9DznI7sG4HzcpoOGmxaZHCzyYVh7wfAaAlvcXf3SV+djhNZw==", + "dev": true, + "dependencies": { + "@microsoft/tsdoc": "0.12.19", + "@rushstack/node-core-library": "3.19.7" + } + }, + "node_modules/@microsoft/api-extractor/node_modules/@microsoft/api-extractor-model": { + "version": "7.7.10", + "resolved": "https://registry.npmjs.org/@microsoft/api-extractor-model/-/api-extractor-model-7.7.10.tgz", + "integrity": "sha512-gMFDXwUgoQYz9TgatyNPALDdZN4xBC3Un3fGwlzME+vM13PoJ26pGuqI7kv/OlK9+q2sgrEdxWns8D3UnLf2TA==", + "dev": true, + "dependencies": { + "@microsoft/tsdoc": "0.12.19", + "@rushstack/node-core-library": "3.19.6" + } + }, + "node_modules/@microsoft/api-extractor/node_modules/@rushstack/node-core-library": { + "version": "3.19.6", + "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-3.19.6.tgz", + "integrity": "sha512-1+FoymIdr9W9k0D8fdZBBPwi5YcMwh/RyESuL5bY29rLICFxSLOPK+ImVZ1OcWj9GEMsvDx5pNpJ311mHQk+MA==", + "dev": true, + "dependencies": { + "@types/node": "10.17.13", + "colors": "~1.2.1", + "fs-extra": "~7.0.1", + "jju": "~1.4.0", + "semver": "~5.3.0", + "timsort": "~0.3.0", + "z-schema": "~3.18.3" + } + }, + "node_modules/@microsoft/api-extractor/node_modules/@rushstack/ts-command-line": { + "version": "4.3.13", + "resolved": "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-4.3.13.tgz", + "integrity": "sha512-BUBbjYu67NJGQkpHu8aYm7kDoMFizL1qx78+72XE3mX/vDdXYJzw/FWS7TPcMJmY4kNlYs979v2B0Q0qa2wRiw==", + "dev": true, + "dependencies": { + "@types/argparse": "1.0.33", + "argparse": "~1.0.9", + "colors": "~1.2.1" + } + }, + "node_modules/@microsoft/api-extractor/node_modules/typescript": { + "version": "3.7.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.7.5.tgz", + "integrity": "sha512-/P5lkRXkWHNAbcJIiHPfRoKqyd7bsyCma1hZNUGfn20qm64T6ZBlrzprymeu918H+mB/0rIg2gGK/BXkhhYgBw==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/@microsoft/tsdoc": { + "version": "0.12.19", + "resolved": "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.12.19.tgz", + "integrity": "sha512-IpgPxHrNxZiMNUSXqR1l/gePKPkfAmIKoDRP9hp7OwjU29ZR8WCJsOJ8iBKgw0Qk+pFwR+8Y1cy8ImLY6e9m4A==", + "dev": true + }, + "node_modules/@rushstack/node-core-library": { + "version": "3.19.7", + "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-3.19.7.tgz", + "integrity": "sha512-gKE/OXH5GAj8yJ1kEyRW68UekJernilZ3QTRgmQ0MUHBCQmtZ9Q6T5PQ1sVbcL4teH8BMdpZeFy1DKnHs8h3PA==", + "dev": true, + "dependencies": { + "@types/node": "10.17.13", + "colors": "~1.2.1", + "fs-extra": "~7.0.1", + "jju": "~1.4.0", + "semver": "~5.3.0", + "timsort": "~0.3.0", + "z-schema": "~3.18.3" + } + }, + "node_modules/@rushstack/ts-command-line": { + "version": "4.3.14", + "resolved": "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-4.3.14.tgz", + "integrity": "sha512-YJZIyKvkm3f6ZdKSfMntHS9542Y2mmMWzaiPPoXxLFZntKxEIDE3WfUNlvOSo3yK4fNd09Tz3hfvTivQNHSiKQ==", + "dev": true, + "dependencies": { + "@types/argparse": "1.0.33", + "argparse": "~1.0.9", + "colors": "~1.2.1" + } + }, + "node_modules/@types/argparse": { + "version": "1.0.33", + "resolved": "https://registry.npmjs.org/@types/argparse/-/argparse-1.0.33.tgz", + "integrity": "sha512-VQgHxyPMTj3hIlq9SY1mctqx+Jj8kpQfoLvDlVSDNOyuYs8JYfkuY3OW/4+dO657yPmNhHpePRx0/Tje5ImNVQ==", + "dev": true + }, + "node_modules/@types/component-emitter": { + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/@types/component-emitter/-/component-emitter-1.2.10.tgz", + "integrity": "sha512-bsjleuRKWmGqajMerkzox19aGbscQX5rmmvvXl3wlIp5gMG1HgkiwPxsN5p070fBDKTNSPgojVbuY1+HWMbFhg==", + "dev": true + }, + "node_modules/@types/cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-y7mImlc/rNkvCRmg8gC3/lj87S7pTUIJ6QGjwHR9WQJcFs+ZMTOaoPrkdFA/YdbuqVEmEbb5RdhVxMkAcgOnpg==", + "dev": true + }, + "node_modules/@types/cors": { + "version": "2.8.10", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.10.tgz", + "integrity": "sha512-C7srjHiVG3Ey1nR6d511dtDkCEjxuN9W1HWAEjGq8kpcwmNM6JJkpC0xvabM7BXTG2wDq8Eu33iH9aQKa7IvLQ==", + "dev": true + }, + "node_modules/@types/eslint": { + "version": "7.2.7", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.2.7.tgz", + "integrity": "sha512-EHXbc1z2GoQRqHaAT7+grxlTJ3WE2YNeD6jlpPoRc83cCoThRY+NUWjCUZaYmk51OICkPXn2hhphcWcWXgNW0Q==", + "dev": true, + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.0.tgz", + "integrity": "sha512-O/ql2+rrCUe2W2rs7wMR+GqPRcgB6UiqN5RhrR5xruFlY7l9YLMn0ZkDzjoHLeiFkR8MCQZVudUuuvQ2BLC9Qw==", + "dev": true, + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/eslint-visitor-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", + "integrity": "sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==", + "dev": true + }, + "node_modules/@types/estree": { + "version": "0.0.46", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.46.tgz", + "integrity": "sha512-laIjwTQaD+5DukBZaygQ79K1Z0jb1bPEMRrkXSLjtCcZm+abyp5YbrqpSLzD42FwWW6gK/aS4NYpJ804nG2brg==", + "dev": true + }, + "node_modules/@types/jasmine": { + "version": "3.6.6", + "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-3.6.6.tgz", + "integrity": "sha512-kgl+oYOLCBt41iba8cetp+QPOqDAaTJnHtVPCE7JzYmda4juglRBLX35opVcANc7TLA/Lp0DEnajbUNnyxGC+Q==", + "dev": true + }, + "node_modules/@types/json-schema": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.6.tgz", + "integrity": "sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw==", + "dev": true + }, + "node_modules/@types/node": { + "version": "10.17.13", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.13.tgz", + "integrity": "sha512-pMCcqU2zT4TjqYFrWtYHKal7Sl30Ims6ulZ4UFXxI4xbtQqK/qqKwkDoBFCfooRqqmRu9vY3xaJRwxSh673aYg==", + "dev": true + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "2.34.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.34.0.tgz", + "integrity": "sha512-4zY3Z88rEE99+CNvTbXSyovv2z9PNOVffTWD2W8QF5s2prBQtwN2zadqERcrHpcR7O/+KMI3fcTAmUUhK/iQcQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/experimental-utils": "2.34.0", + "functional-red-black-tree": "^1.0.1", + "regexpp": "^3.0.0", + "tsutils": "^3.17.1" + }, + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^2.0.0", + "eslint": "^5.0.0 || ^6.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/experimental-utils": { + "version": "2.34.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-2.34.0.tgz", + "integrity": "sha512-eS6FTkq+wuMJ+sgtuNTtcqavWXqsflWcfBnlYhg/nS4aZ1leewkXGbvBhaapn1q6qf4M71bsR1tez5JTRMuqwA==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.3", + "@typescript-eslint/typescript-estree": "2.34.0", + "eslint-scope": "^5.0.0", + "eslint-utils": "^2.0.0" + }, + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "2.34.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-2.34.0.tgz", + "integrity": "sha512-03ilO0ucSD0EPTw2X4PntSIRFtDPWjrVq7C3/Z3VQHRC7+13YB55rcJI3Jt+YgeHbjUdJPcPa7b23rXCBokuyA==", + "dev": true, + "dependencies": { + "@types/eslint-visitor-keys": "^1.0.0", + "@typescript-eslint/experimental-utils": "2.34.0", + "@typescript-eslint/typescript-estree": "2.34.0", + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^5.0.0 || ^6.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "2.34.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-2.34.0.tgz", + "integrity": "sha512-OMAr+nJWKdlVM9LOqCqh3pQQPwxHAN7Du8DR6dmwCrAmxtiXQnhHJ6tBNtf+cggqfo51SG/FCwnKhXCIM7hnVg==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "eslint-visitor-keys": "^1.1.0", + "glob": "^7.1.6", + "is-glob": "^4.0.1", + "lodash": "^4.17.15", + "semver": "^7.3.2", + "tsutils": "^3.17.1" + }, + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", + "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.0.tgz", + "integrity": "sha512-kX2W49LWsbthrmIRMbQZuQDhGtjyqXfEmmHyEi4XWnSZtPmxY0+3anPIzsnRb45VH/J55zlOfWvZuY47aJZTJg==", + "dev": true, + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.0", + "@webassemblyjs/helper-wasm-bytecode": "1.11.0" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.0.tgz", + "integrity": "sha512-Q/aVYs/VnPDVYvsCBL/gSgwmfjeCb4LW8+TMrO3cSzJImgv8lxxEPM2JA5jMrivE7LSz3V+PFqtMbls3m1exDA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.0.tgz", + "integrity": "sha512-baT/va95eXiXb2QflSx95QGT5ClzWpGaa8L7JnJbgzoYeaA27FCvuBXU758l+KXWRndEmUXjP0Q5fibhavIn8w==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.0.tgz", + "integrity": "sha512-u9HPBEl4DS+vA8qLQdEQ6N/eJQ7gT7aNvMIo8AAWvAl/xMrcOSiI2M0MAnMCy3jIFke7bEee/JwdX1nUpCtdyA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.0.tgz", + "integrity": "sha512-DhRQKelIj01s5IgdsOJMKLppI+4zpmcMQ3XboFPLwCpSNH6Hqo1ritgHgD0nqHeSYqofA6aBN/NmXuGjM1jEfQ==", + "dev": true, + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.11.0", + "@webassemblyjs/helper-api-error": "1.11.0", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.0.tgz", + "integrity": "sha512-MbmhvxXExm542tWREgSFnOVo07fDpsBJg3sIl6fSp9xuu75eGz5lz31q7wTLffwL3Za7XNRCMZy210+tnsUSEA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.0.tgz", + "integrity": "sha512-3Eb88hcbfY/FCukrg6i3EH8H2UsD7x8Vy47iVJrP967A9JGqgBVL9aH71SETPx1JrGsOUVLo0c7vMCN22ytJew==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.0", + "@webassemblyjs/helper-buffer": "1.11.0", + "@webassemblyjs/helper-wasm-bytecode": "1.11.0", + "@webassemblyjs/wasm-gen": "1.11.0" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.0.tgz", + "integrity": "sha512-KXzOqpcYQwAfeQ6WbF6HXo+0udBNmw0iXDmEK5sFlmQdmND+tr773Ti8/5T/M6Tl/413ArSJErATd8In3B+WBA==", + "dev": true, + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.0.tgz", + "integrity": "sha512-aqbsHa1mSQAbeeNcl38un6qVY++hh8OpCOzxhixSYgbRfNWcxJNJQwe2rezK9XEcssJbbWIkblaJRwGMS9zp+g==", + "dev": true, + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.0.tgz", + "integrity": "sha512-A/lclGxH6SpSLSyFowMzO/+aDEPU4hvEiooCMXQPcQFPPJaYcPQNKGOCLUySJsYJ4trbpr+Fs08n4jelkVTGVw==", + "dev": true + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.0.tgz", + "integrity": "sha512-JHQ0damXy0G6J9ucyKVXO2j08JVJ2ntkdJlq1UTiUrIgfGMmA7Ik5VdC/L8hBK46kVJgujkBIoMtT8yVr+yVOQ==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.0", + "@webassemblyjs/helper-buffer": "1.11.0", + "@webassemblyjs/helper-wasm-bytecode": "1.11.0", + "@webassemblyjs/helper-wasm-section": "1.11.0", + "@webassemblyjs/wasm-gen": "1.11.0", + "@webassemblyjs/wasm-opt": "1.11.0", + "@webassemblyjs/wasm-parser": "1.11.0", + "@webassemblyjs/wast-printer": "1.11.0" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.0.tgz", + "integrity": "sha512-BEUv1aj0WptCZ9kIS30th5ILASUnAPEvE3tVMTrItnZRT9tXCLW2LEXT8ezLw59rqPP9klh9LPmpU+WmRQmCPQ==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.0", + "@webassemblyjs/helper-wasm-bytecode": "1.11.0", + "@webassemblyjs/ieee754": "1.11.0", + "@webassemblyjs/leb128": "1.11.0", + "@webassemblyjs/utf8": "1.11.0" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.0.tgz", + "integrity": "sha512-tHUSP5F4ywyh3hZ0+fDQuWxKx3mJiPeFufg+9gwTpYp324mPCQgnuVKwzLTZVqj0duRDovnPaZqDwoyhIO8kYg==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.0", + "@webassemblyjs/helper-buffer": "1.11.0", + "@webassemblyjs/wasm-gen": "1.11.0", + "@webassemblyjs/wasm-parser": "1.11.0" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.0.tgz", + "integrity": "sha512-6L285Sgu9gphrcpDXINvm0M9BskznnzJTE7gYkjDbxET28shDqp27wpruyx3C2S/dvEwiigBwLA1cz7lNUi0kw==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.0", + "@webassemblyjs/helper-api-error": "1.11.0", + "@webassemblyjs/helper-wasm-bytecode": "1.11.0", + "@webassemblyjs/ieee754": "1.11.0", + "@webassemblyjs/leb128": "1.11.0", + "@webassemblyjs/utf8": "1.11.0" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.0.tgz", + "integrity": "sha512-Fg5OX46pRdTgB7rKIUojkh9vXaVN6sGYCnEiJN1GYkb0RPwShZXp6KTDqmoMdQPKhcroOXh3fEzmkWmCYaKYhQ==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.0", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webpack-cli/configtest": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.0.1.tgz", + "integrity": "sha512-B+4uBUYhpzDXmwuo3V9yBH6cISwxEI4J+NO5ggDaGEEHb0osY/R7MzeKc0bHURXQuZjMM4qD+bSJCKIuI3eNBQ==", + "dev": true, + "peerDependencies": { + "webpack": "4.x.x || 5.x.x", + "webpack-cli": "4.x.x" + } + }, + "node_modules/@webpack-cli/info": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.2.2.tgz", + "integrity": "sha512-5U9kUJHnwU+FhKH4PWGZuBC1hTEPYyxGSL5jjoBI96Gx8qcYJGOikpiIpFoTq8mmgX3im2zAo2wanv/alD74KQ==", + "dev": true, + "dependencies": { + "envinfo": "^7.7.3" + }, + "peerDependencies": { + "webpack-cli": "4.x.x" + } + }, + "node_modules/@webpack-cli/serve": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.3.0.tgz", + "integrity": "sha512-k2p2VrONcYVX1wRRrf0f3X2VGltLWcv+JzXRBDmvCxGlCeESx4OXw91TsWeKOkp784uNoVQo313vxJFHXPPwfw==", + "dev": true, + "peerDependencies": { + "webpack-cli": "4.x.x" + }, + "peerDependenciesMeta": { + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "node_modules/accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "dev": true, + "dependencies": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", + "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "node_modules/base64-arraybuffer": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz", + "integrity": "sha1-mBjHngWbE1X5fgQooBfIOOkLqBI=", + "dev": true, + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/base64id": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", + "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", + "dev": true, + "engines": { + "node": "^4.5.0 || >= 5.9" + } + }, + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "dev": true, + "dependencies": { + "bytes": "3.1.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.16.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.3.tgz", + "integrity": "sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw==", + "dev": true, + "dependencies": { + "caniuse-lite": "^1.0.30001181", + "colorette": "^1.2.1", + "electron-to-chromium": "^1.3.649", + "escalade": "^3.1.1", + "node-releases": "^1.1.70" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + } + }, + "node_modules/buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "node_modules/bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001202", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001202.tgz", + "integrity": "sha512-ZcijQNqrcF8JNLjzvEiXqX4JUYxoZa7Pvcsd9UD8Kz4TvhTonOSNRsK+qtvpVL4l6+T1Rh4LFtLfnNWg6BGWCQ==", + "dev": true + }, + "node_modules/chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chalk/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/chalk/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/chalk/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/chalk/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/chalk/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/chokidar": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", + "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", + "dev": true, + "dependencies": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.5.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.1" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", + "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", + "dev": true, + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/circular-dependency-plugin": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/circular-dependency-plugin/-/circular-dependency-plugin-5.2.2.tgz", + "integrity": "sha512-g38K9Cm5WRwlaH6g03B9OEz/0qRizI+2I7n+Gz+L5DxXJAPAiWQvwlYNm1V1jkdpUv95bOe/ASm2vfi/G560jQ==", + "dev": true, + "engines": { + "node": ">=6.0.0" + }, + "peerDependencies": { + "webpack": ">=4.0.1" + } + }, + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/colorette": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz", + "integrity": "sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==", + "dev": true + }, + "node_modules/colors": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.2.5.tgz", + "integrity": "sha512-erNRLao/Y3Fv54qUa0LBB+//Uf3YwMUmdJinN20yMXm9zdKKqH9wt7R9IIVZ+K7ShzfpLV/Zg8+VyrBJYB4lpg==", + "dev": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "node_modules/connect": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/connect/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/connect/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dev": true, + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/custom-event": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", + "integrity": "sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU=", + "dev": true + }, + "node_modules/date-format": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-3.0.0.tgz", + "integrity": "sha512-eyTcpKOcamdhWJXj56DpQMo1ylSQpcGtGKXcU0Tb97+K56/CF5amAqqqNj0+KvA0iw2ynxtHWFsPDSClCxe48w==", + "deprecated": "3.x is no longer supported. Please upgrade to 4.x or higher.", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/di": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", + "integrity": "sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw=", + "dev": true + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dom-serialize": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", + "integrity": "sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs=", + "dev": true, + "dependencies": { + "custom-event": "~1.0.0", + "ent": "~2.2.0", + "extend": "^3.0.0", + "void-elements": "^2.0.0" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "node_modules/electron-to-chromium": { + "version": "1.3.689", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.689.tgz", + "integrity": "sha512-WCn+ZaU3V8WttlLNSOGOAlR2XpxibGre7slwGrYBB6oTjYPgP29LNDGG6wLvLTMseLdE+G1vno7PfY7JyDV48g==", + "dev": true + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/engine.io": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-4.1.1.tgz", + "integrity": "sha512-t2E9wLlssQjGw0nluF6aYyfX8LwYU8Jj0xct+pAhfWfv/YrBn6TSNtEYsgxHIfaMqfrLx07czcMg9bMN6di+3w==", + "dev": true, + "dependencies": { + "accepts": "~1.3.4", + "base64id": "2.0.0", + "cookie": "~0.4.1", + "cors": "~2.8.5", + "debug": "~4.3.1", + "engine.io-parser": "~4.0.0", + "ws": "~7.4.2" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/engine.io-parser": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-4.0.2.tgz", + "integrity": "sha512-sHfEQv6nmtJrq6TKuIz5kyEKH/qSdK56H/A+7DnAuUPWosnIZAS2NHNcPLmyjtY3cGS/MqJdZbUjW97JU72iYg==", + "dev": true, + "dependencies": { + "base64-arraybuffer": "0.1.4" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/enhanced-resolve": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", + "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.5.0", + "tapable": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "dependencies": { + "ansi-colors": "^4.1.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/ent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", + "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=", + "dev": true + }, + "node_modules/envinfo": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.7.4.tgz", + "integrity": "sha512-TQXTYFVVwwluWSFis6K2XKxgrD22jEv0FTuLCQI+OjH7rn93+iY0fSSFM5lrSxFY+H1+B0/cvvlamr3UsBivdQ==", + "dev": true, + "bin": { + "envinfo": "dist/cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/errno": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "dev": true, + "dependencies": { + "prr": "~1.0.1" + }, + "bin": { + "errno": "cli.js" + } + }, + "node_modules/es-module-lexer": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.4.1.tgz", + "integrity": "sha512-ooYciCUtfw6/d2w56UVeqHPcoCFAiJdz5XOkYpv/Txl1HMUozpXjz/2RIQgqwKdXNDPSF1W7mJCFse3G+HDyAA==", + "dev": true + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/eslint": { + "version": "7.22.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.22.0.tgz", + "integrity": "sha512-3VawOtjSJUQiiqac8MQc+w457iGLfuNGLFn8JmF051tTKbh5/x/0vlcEj8OgDCaw7Ysa2Jn8paGshV7x2abKXg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "7.12.11", + "@eslint/eslintrc": "^0.4.0", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "eslint-scope": "^5.1.1", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^2.0.0", + "espree": "^7.3.1", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.0.0", + "globals": "^13.6.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash": "^4.17.21", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^6.0.4", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-prettier": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.1.0.tgz", + "integrity": "sha512-oKMhGv3ihGbCIimCAjqkdzx2Q+jthoqnXSP+d86M9tptwugycmTFdVR4IpLgq2c4SHifbwO90z2fQ8/Aio73yw==", + "dev": true, + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-plugin-prettier": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.3.1.tgz", + "integrity": "sha512-Rq3jkcFY8RYeQLgk2cCwuc0P7SEFwDravPhsJZOQ5N4YI4DSg50NyqJ/9gdZHzQlHf8MvafSesbNJCcP/FF6pQ==", + "dev": true, + "dependencies": { + "prettier-linter-helpers": "^1.0.0" + }, + "engines": { + "node": ">=6.0.0" + }, + "peerDependencies": { + "eslint": ">=5.0.0", + "prettier": ">=1.13.0" + }, + "peerDependenciesMeta": { + "eslint-config-prettier": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-tree-shaking": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-tree-shaking/-/eslint-plugin-tree-shaking-1.8.0.tgz", + "integrity": "sha512-5jrqlyka6MCaV8efwAIIo/3cvmhurA4gUaFoTWoWw6wLhmHUS0/42NDKubKOMlQJXm5Z7/i4hbzyIcDXbHAnVw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint/node_modules/eslint-visitor-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz", + "integrity": "sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint/node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/eslint/node_modules/semver": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", + "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/espree": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "dev": true, + "dependencies": { + "acorn": "^7.4.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^1.3.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/execa": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.0.0.tgz", + "integrity": "sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-diff": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", + "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", + "dev": true + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "node_modules/fastest-levenshtein": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", + "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==", + "dev": true + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.1.tgz", + "integrity": "sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==", + "dev": true + }, + "node_modules/follow-redirects": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.3.tgz", + "integrity": "sha512-DUgl6+HDzB0iEptNQEXLx/KhTmDb8tZUHSeLqpnjpknR70H0nC2t9N73BK6fN4hOvJ84pKlIQVQ4k5FFlBedKA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-stream": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.0.tgz", + "integrity": "sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true + }, + "node_modules/globals": { + "version": "13.6.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.6.0.tgz", + "integrity": "sha512-YFKCX0SiPg7l5oKYCJ2zZGxcXprVXHcSnVuvzrT3oSENQonVLqM5pf9fN5dLGZGyCjhw8TN8Btwe/jKnZ0pjvQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globals/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", + "dev": true + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "dev": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/http-errors/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-local": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz", + "integrity": "sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==", + "dev": true, + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/import-local/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/import-local/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/import-local/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-local/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/import-local/node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/interpret": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", + "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-core-module": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", + "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "node_modules/isbinaryfile": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.6.tgz", + "integrity": "sha512-ORrEy+SNVqUhrCaal4hA4fBzhggQQ+BaLntyPOdoEiwlKZW9BZiJXjg3RMiruE4tPEI3pyVPpySHQF/dKWperg==", + "dev": true, + "engines": { + "node": ">= 8.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/gjtorikian/" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jasmine-core": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-3.6.0.tgz", + "integrity": "sha512-8uQYa7zJN8hq9z+g8z1bqCfdC8eoDAeVnM5sfqs7KHv9/ifoJ500m018fpFc7RDaO6SWCLCXwo/wPSNcdYTgcw==", + "dev": true + }, + "node_modules/jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jju": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/jju/-/jju-1.4.0.tgz", + "integrity": "sha1-o6vicYryQaKykE+EpiWXDzia4yo=", + "dev": true + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/karma": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/karma/-/karma-6.2.0.tgz", + "integrity": "sha512-pCB8eNxGgdIdZeC885rbhZ/VyuOPNHUIDNL9EaaMf1NVzpvTjMO8a7zRTn51ZJhOOOxCSpalUdT1A8x76LyVqg==", + "dev": true, + "dependencies": { + "body-parser": "^1.19.0", + "braces": "^3.0.2", + "chokidar": "^3.4.2", + "colors": "^1.4.0", + "connect": "^3.7.0", + "di": "^0.0.1", + "dom-serialize": "^2.2.1", + "glob": "^7.1.6", + "graceful-fs": "^4.2.4", + "http-proxy": "^1.18.1", + "isbinaryfile": "^4.0.6", + "lodash": "^4.17.19", + "log4js": "^6.2.1", + "mime": "^2.4.5", + "minimatch": "^3.0.4", + "qjobs": "^1.2.0", + "range-parser": "^1.2.1", + "rimraf": "^3.0.2", + "socket.io": "^3.1.0", + "source-map": "^0.6.1", + "tmp": "0.2.1", + "ua-parser-js": "^0.7.23", + "yargs": "^16.1.1" + }, + "bin": { + "karma": "bin/karma" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/karma-chrome-launcher": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.1.0.tgz", + "integrity": "sha512-3dPs/n7vgz1rxxtynpzZTvb9y/GIaW8xjAwcIGttLbycqoFtI7yo1NGnQi6oFTherRE+GIhCAHZC4vEqWGhNvg==", + "dev": true, + "dependencies": { + "which": "^1.2.1" + } + }, + "node_modules/karma-chrome-launcher/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/karma-cli": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/karma-cli/-/karma-cli-2.0.0.tgz", + "integrity": "sha512-1Kb28UILg1ZsfqQmeELbPzuEb5C6GZJfVIk0qOr8LNYQuYWmAaqP16WpbpKEjhejDrDYyYOwwJXSZO6u7q5Pvw==", + "dev": true, + "dependencies": { + "resolve": "^1.3.3" + }, + "bin": { + "karma": "bin/karma" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/karma-jasmine": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-4.0.1.tgz", + "integrity": "sha512-h8XDAhTiZjJKzfkoO1laMH+zfNlra+dEQHUAjpn5JV1zCPtOIVWGQjLBrqhnzQa/hrU2XrZwSyBa6XjEBzfXzw==", + "dev": true, + "dependencies": { + "jasmine-core": "^3.6.0" + }, + "engines": { + "node": ">= 10" + }, + "peerDependencies": { + "karma": "*" + } + }, + "node_modules/karma-jasmine-html-reporter": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-1.5.4.tgz", + "integrity": "sha512-PtilRLno5O6wH3lDihRnz0Ba8oSn0YUJqKjjux1peoYGwo0AQqrWRbdWk/RLzcGlb+onTyXAnHl6M+Hu3UxG/Q==", + "dev": true, + "peerDependencies": { + "jasmine-core": ">=3.5", + "karma": ">=0.9", + "karma-jasmine": ">=1.1" + } + }, + "node_modules/karma-mocha-reporter": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/karma-mocha-reporter/-/karma-mocha-reporter-2.2.5.tgz", + "integrity": "sha1-FRIAlejtgZGG5HoLAS8810GJVWA=", + "dev": true, + "dependencies": { + "chalk": "^2.1.0", + "log-symbols": "^2.1.0", + "strip-ansi": "^4.0.0" + }, + "peerDependencies": { + "karma": ">=0.13" + } + }, + "node_modules/karma-mocha-reporter/node_modules/ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/karma-mocha-reporter/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/karma-mocha-reporter/node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/karma-sourcemap-loader": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/karma-sourcemap-loader/-/karma-sourcemap-loader-0.3.8.tgz", + "integrity": "sha512-zorxyAakYZuBcHRJE+vbrK2o2JXLFWK8VVjiT/6P+ltLBUGUvqTEkUiQ119MGdOrK7mrmxXHZF1/pfT6GgIZ6g==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2" + } + }, + "node_modules/karma-webpack": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/karma-webpack/-/karma-webpack-5.0.0.tgz", + "integrity": "sha512-+54i/cd3/piZuP3dr54+NcFeKOPnys5QeM1IY+0SPASwrtHsliXUiCL50iW+K9WWA7RvamC4macvvQ86l3KtaA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3", + "minimatch": "^3.0.4", + "webpack-merge": "^4.1.5" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/karma/node_modules/colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "dev": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/loader-runner": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", + "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==", + "dev": true, + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/loader-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", + "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + }, + "node_modules/lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=", + "dev": true + }, + "node_modules/lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=", + "dev": true + }, + "node_modules/log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "dev": true, + "dependencies": { + "chalk": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-symbols/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/log4js": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.3.0.tgz", + "integrity": "sha512-Mc8jNuSFImQUIateBFwdOQcmC6Q5maU0VVvdC2R6XMb66/VnT+7WS4D/0EeNMZu1YODmJe5NIn2XftCzEocUgw==", + "dev": true, + "dependencies": { + "date-format": "^3.0.0", + "debug": "^4.1.1", + "flatted": "^2.0.1", + "rfdc": "^1.1.4", + "streamroller": "^2.2.4" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/log4js/node_modules/flatted": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", + "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", + "dev": true + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memory-fs": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", + "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", + "dev": true, + "dependencies": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + }, + "engines": { + "node": ">=4.3.0 <5.0.0 || >=5.10" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "dependencies": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/mime": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", + "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mime-db": { + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.45.0.tgz", + "integrity": "sha512-CkqLUxUk15hofLoLyljJSrukZi8mAtgd+yE5uO4tqRZsdsAJKv0O+rFMhVDRJgozy+yG6md5KwuXhD4ocIoP+w==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.28", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.28.tgz", + "integrity": "sha512-0TO2yJ5YHYr7M2zzT7gDU1tbwHxEUWBCLt0lscSNpcdAfFyJOVEpRYNS7EXVcTLNj/25QO8gulHC5JtTzSE2UQ==", + "dev": true, + "dependencies": { + "mime-db": "1.45.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "node_modules/mock-socket": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/mock-socket/-/mock-socket-9.0.3.tgz", + "integrity": "sha512-SxIiD2yE/By79p3cNAAXyLQWTvEFNEzcAO7PH+DzRqKSFaplAPFjiQLmw8ofmpCsZf+Rhfn2/xCJagpdGmYdTw==", + "dev": true, + "dependencies": { + "url-parse": "^1.4.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "node_modules/negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "node_modules/node-releases": { + "version": "1.1.71", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz", + "integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==", + "dev": true + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "node_modules/pegjs": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/pegjs/-/pegjs-0.10.0.tgz", + "integrity": "sha1-z4uvrm7d/0tafvsYUmnqr0YQ3b0=", + "dev": true, + "bin": { + "pegjs": "bin/pegjs" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.2.1.tgz", + "integrity": "sha512-PqyhM2yCjg/oKkFPtTGUojv7gnZAoG80ttl45O6x2Ug/rMJw4wcc9k6aaf2hibP7BGVCCM33gZoGjyvt9mm16Q==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "dependencies": { + "fast-diff": "^1.1.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "dev": true + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/qjobs": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", + "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", + "dev": true, + "engines": { + "node": ">=0.9" + } + }, + "node_modules/qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "dev": true, + "dependencies": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readdirp": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", + "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/rechoir": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.0.tgz", + "integrity": "sha512-ADsDEH2bvbjltXEP+hTIAmeFekTFK0V2BTxMkok6qILyAJEXV0AFfoWcAq4yfll5VdIMd/RVXq0lR+wQi5ZU3Q==", + "dev": true, + "dependencies": { + "resolve": "^1.9.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/rechoir/node_modules/resolve": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", + "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", + "dev": true, + "dependencies": { + "is-core-module": "^2.1.0", + "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpp": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", + "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "dev": true + }, + "node_modules/resolve": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz", + "integrity": "sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==", + "dev": true, + "dependencies": { + "path-parse": "^1.0.5" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-cwd/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/rfdc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.2.0.tgz", + "integrity": "sha512-ijLyszTMmUrXvjSooucVQwimGUk84eRcmCuLV8Xghe3UO85mjUtRAHRyoMM6XtyqbECaXuBWx18La3523sXINA==", + "dev": true + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "node_modules/schema-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", + "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.6", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/semver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/serialize-javascript": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", + "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", + "dev": true + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", + "dev": true + }, + "node_modules/slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/slice-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/slice-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/slice-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/socket.io": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-3.1.2.tgz", + "integrity": "sha512-JubKZnTQ4Z8G4IZWtaAZSiRP3I/inpy8c/Bsx2jrwGrTbKeVU5xd6qkKMHpChYeM3dWZSO0QACiGK+obhBNwYw==", + "dev": true, + "dependencies": { + "@types/cookie": "^0.4.0", + "@types/cors": "^2.8.8", + "@types/node": ">=10.0.0", + "accepts": "~1.3.4", + "base64id": "~2.0.0", + "debug": "~4.3.1", + "engine.io": "~4.1.0", + "socket.io-adapter": "~2.1.0", + "socket.io-parser": "~4.0.3" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/socket.io-adapter": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.1.0.tgz", + "integrity": "sha512-+vDov/aTsLjViYTwS9fPy5pEtTkrbEKsw2M+oVSoFGw6OD1IpvlV1VPhUzNbofCQ8oyMbdYJqDtGdmHQK6TdPg==", + "dev": true + }, + "node_modules/socket.io-parser": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.0.4.tgz", + "integrity": "sha512-t+b0SS+IxG7Rxzda2EVvyBZbvFPBCjJoyHuE0P//7OAsN23GItzDRdWa6ALxZI/8R5ygK7jAR6t028/z+7295g==", + "dev": true, + "dependencies": { + "@types/component-emitter": "^1.2.10", + "component-emitter": "~1.3.0", + "debug": "~4.3.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", + "dev": true + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/streamroller": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-2.2.4.tgz", + "integrity": "sha512-OG79qm3AujAM9ImoqgWEY1xG4HX+Lw+yY6qZj9R1K2mhF5bEmQ849wvrb+4vt4jLMLzwXttJlQbOdPOQVRv7DQ==", + "deprecated": "2.x is no longer supported. Please upgrade to 3.x or higher.", + "dev": true, + "dependencies": { + "date-format": "^2.1.0", + "debug": "^4.1.1", + "fs-extra": "^8.1.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/streamroller/node_modules/date-format": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-2.1.0.tgz", + "integrity": "sha512-bYQuGLeFxhkxNOF3rcMtiZxvCBAquGzZm6oWA1oZ0g2THUzivaRhv8uOhdr19LmoobSOLoIAxeUK2RdbM8IFTA==", + "deprecated": "2.x is no longer supported. Please upgrade to 4.x or higher.", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/streamroller/node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/table": { + "version": "6.0.7", + "resolved": "https://registry.npmjs.org/table/-/table-6.0.7.tgz", + "integrity": "sha512-rxZevLGTUzWna/qBLObOe16kB2RTnnbhciwgPbMMlazz1yZGVEgnZK762xyVdVznhqxrfCeBMmMkgOOaPwjH7g==", + "dev": true, + "dependencies": { + "ajv": "^7.0.2", + "lodash": "^4.17.20", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/table/node_modules/ajv": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-7.2.1.tgz", + "integrity": "sha512-+nu0HDv7kNSOua9apAVc979qd932rrZeb3WOvoiD31A/p1mIE5/9bN2027pE2rOPYEdS3UHzsvof4hY+lM9/WQ==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/table/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/terser": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.6.0.tgz", + "integrity": "sha512-vyqLMoqadC1uR0vywqOZzriDYzgEkNJFK4q9GeyOBHIbiECHiWLKcWfbQWAUaPfxkjDhapSlZB9f7fkMrvkVjA==", + "dev": true, + "dependencies": { + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.19" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.1.1.tgz", + "integrity": "sha512-5XNNXZiR8YO6X6KhSGXfY0QrGrCRlSwAEjIIrlRQR4W8nP69TaJUlh3bkuac6zzgspiGPfKEHcY295MMVExl5Q==", + "dev": true, + "dependencies": { + "jest-worker": "^26.6.2", + "p-limit": "^3.1.0", + "schema-utils": "^3.0.0", + "serialize-javascript": "^5.0.1", + "source-map": "^0.6.1", + "terser": "^5.5.1" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + } + }, + "node_modules/terser/node_modules/source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "node_modules/timsort": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", + "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", + "dev": true + }, + "node_modules/tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dev": true, + "dependencies": { + "rimraf": "^3.0.0" + }, + "engines": { + "node": ">=8.17.0" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/ts-loader": { + "version": "8.0.18", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-8.0.18.tgz", + "integrity": "sha512-hRZzkydPX30XkLaQwJTDcWDoxZHK6IrEMDQpNd7tgcakFruFkeUp/aY+9hBb7BUGb+ZWKI0jiOGMo0MckwzdDQ==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "enhanced-resolve": "^4.0.0", + "loader-utils": "^2.0.0", + "micromatch": "^4.0.0", + "semver": "^7.3.4" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "typescript": "*", + "webpack": "*" + } + }, + "node_modules/ts-loader/node_modules/semver": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", + "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ts-pegjs": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/ts-pegjs/-/ts-pegjs-0.3.1.tgz", + "integrity": "sha512-4FqLW/HdZ4KvKHUpnaf7yeZM2L/1Y9cHlQ0Z59bVNABPbMEFQnKAYs/3p0zMvvCWkY3fnjMyr/F7wKzZ//vHIw==", + "dev": true, + "dependencies": { + "pegjs": "^0.10.0" + }, + "bin": { + "tspegjs": "src/cli.js" + }, + "peerDependencies": { + "pegjs": "~0.10.0" + } + }, + "node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/tsutils": { + "version": "3.17.1", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.17.1.tgz", + "integrity": "sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "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" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typescript": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.2.3.tgz", + "integrity": "sha512-qOcYwxaByStAWrBf4x0fibwZvMRG+r4cQoTjbPtUlrWjBHbmCAww1i448U0GJ+3cNNEtebDteo/cHOR3xJ4wEw==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/ua-parser-js": { + "version": "0.7.24", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.24.tgz", + "integrity": "sha512-yo+miGzQx5gakzVK3QFfN0/L9uVhosXBBO7qmnk7c2iw1IhL212wfA3zbnI54B0obGwC/5NWub/iT9sReMx+Fw==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/url-parse": { + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz", + "integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==", + "dev": true, + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/v8-compile-cache": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz", + "integrity": "sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q==", + "dev": true + }, + "node_modules/validator": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-8.2.0.tgz", + "integrity": "sha512-Yw5wW34fSv5spzTXNkokD6S6/Oq92d8q/t14TqsS3fAiA1RYnxSFSIZ+CY3n6PGGRCq5HhJTSepQvFUS2QUDxA==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/void-elements": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", + "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.1.1.tgz", + "integrity": "sha512-Oo7LXCmc1eE1AjyuSBmtC3+Wy4HcV8PxWh2kP6fOl8yTlNS7r0K9l1ao2lrrUza7V39Y3D/BbJgY8VeSlc5JKw==", + "dev": true, + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack": { + "version": "5.26.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.26.0.tgz", + "integrity": "sha512-9kQATUOGQBkqzNKFmFON4KXZDsXnE7xk58tBxca8aCi+6/QhAbmWIvtGqBL66XIsBFpomFH0/0KyCaySo0ta2g==", + "dev": true, + "dependencies": { + "@types/eslint-scope": "^3.7.0", + "@types/estree": "^0.0.46", + "@webassemblyjs/ast": "1.11.0", + "@webassemblyjs/wasm-edit": "1.11.0", + "@webassemblyjs/wasm-parser": "1.11.0", + "acorn": "^8.0.4", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.7.0", + "es-module-lexer": "^0.4.0", + "eslint-scope": "^5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.4", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.0.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.1.1", + "watchpack": "^2.0.0", + "webpack-sources": "^2.1.1" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-cli": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.5.0.tgz", + "integrity": "sha512-wXg/ef6Ibstl2f50mnkcHblRPN/P9J4Nlod5Hg9HGFgSeF8rsqDGHJeVe4aR26q9l62TUJi6vmvC2Qz96YJw1Q==", + "dev": true, + "dependencies": { + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^1.0.1", + "@webpack-cli/info": "^1.2.2", + "@webpack-cli/serve": "^1.3.0", + "colorette": "^1.2.1", + "commander": "^7.0.0", + "enquirer": "^2.3.6", + "execa": "^5.0.0", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^2.2.0", + "rechoir": "^0.7.0", + "v8-compile-cache": "^2.2.0", + "webpack-merge": "^5.7.3" + }, + "bin": { + "webpack-cli": "bin/cli.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "peerDependencies": { + "webpack": "4.x.x || 5.x.x" + }, + "peerDependenciesMeta": { + "@webpack-cli/generators": { + "optional": true + }, + "@webpack-cli/init": { + "optional": true + }, + "@webpack-cli/migrate": { + "optional": true + }, + "webpack-bundle-analyzer": { + "optional": true + }, + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/webpack-cli/node_modules/commander": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.0.0.tgz", + "integrity": "sha512-ovx/7NkTrnPuIV8sqk/GjUIIM1+iUQeqA3ye2VNpq9sVoiZsooObWlQy+OPWGI17GDaEoybuAGJm6U8yC077BA==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/webpack-cli/node_modules/webpack-merge": { + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.7.3.tgz", + "integrity": "sha512-6/JUQv0ELQ1igjGDzHkXbVDRxkfA57Zw7PfiupdLFJYrgFqY5ZP8xxbpp2lU3EPwYx89ht5Z/aDkD40hFCm5AA==", + "dev": true, + "dependencies": { + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/webpack-merge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.2.tgz", + "integrity": "sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==", + "dev": true, + "dependencies": { + "lodash": "^4.17.15" + } + }, + "node_modules/webpack-sources": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.2.0.tgz", + "integrity": "sha512-bQsA24JLwcnWGArOKUxYKhX3Mz/nK1Xf6hxullKERyktjNMC4x8koOeaDNTA2fEJ09BdWLbM/iTW0ithREUP0w==", + "dev": true, + "dependencies": { + "source-list-map": "^2.0.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack/node_modules/acorn": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.1.0.tgz", + "integrity": "sha512-LWCF/Wn0nfHOmJ9rzQApGnxnvgfROzGilS8936rqN/lfcYkY9MYZzdMqN+2NJ4SlTc+m5HiSa+kNfDtI64dwUA==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/webpack/node_modules/enhanced-resolve": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.7.0.tgz", + "integrity": "sha512-6njwt/NsZFUKhM6j9U8hzVyD4E4r0x7NQzhTCbcWOJ0IQjNSAoalWmb0AE51Wn+fwan5qVESWi7t2ToBxs9vrw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack/node_modules/tapable": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.0.tgz", + "integrity": "sha512-FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wildcard": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", + "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", + "dev": true + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "node_modules/ws": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.4.tgz", + "integrity": "sha512-Qm8k8ojNQIMx7S+Zp8u/uHOx7Qazv3Yv4q68MiWWWOJhiwG5W3x7iqmRtJo8xxrciZUY4vRxUTJCKuRnF28ZZw==", + "dev": true, + "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 + } + } + }, + "node_modules/y18n": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.5.tgz", + "integrity": "sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.7", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.7.tgz", + "integrity": "sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/z-schema": { + "version": "3.18.4", + "resolved": "https://registry.npmjs.org/z-schema/-/z-schema-3.18.4.tgz", + "integrity": "sha512-DUOKC/IhbkdLKKiV89gw9DUauTV8U/8yJl1sjf6MtDmzevLKOF2duNJ495S3MFVjqZarr+qNGCPbkg4mu4PpLw==", + "dev": true, + "dependencies": { + "lodash.get": "^4.0.0", + "lodash.isequal": "^4.0.0", + "validator": "^8.0.0" + }, + "bin": { + "z-schema": "bin/z-schema" + }, + "optionalDependencies": { + "commander": "^2.7.1" + } + } + }, "dependencies": { "@babel/code-frame": { "version": "7.12.11", @@ -481,7 +4843,8 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.0.1.tgz", "integrity": "sha512-B+4uBUYhpzDXmwuo3V9yBH6cISwxEI4J+NO5ggDaGEEHb0osY/R7MzeKc0bHURXQuZjMM4qD+bSJCKIuI3eNBQ==", - "dev": true + "dev": true, + "requires": {} }, "@webpack-cli/info": { "version": "1.2.2", @@ -496,7 +4859,8 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.3.0.tgz", "integrity": "sha512-k2p2VrONcYVX1wRRrf0f3X2VGltLWcv+JzXRBDmvCxGlCeESx4OXw91TsWeKOkp784uNoVQo313vxJFHXPPwfw==", - "dev": true + "dev": true, + "requires": {} }, "@xtuc/ieee754": { "version": "1.2.0", @@ -530,7 +4894,8 @@ "version": "5.3.1", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", - "dev": true + "dev": true, + "requires": {} }, "ajv": { "version": "6.12.6", @@ -548,7 +4913,8 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true + "dev": true, + "requires": {} }, "ansi-colors": { "version": "4.1.1", @@ -797,7 +5163,8 @@ "version": "5.2.2", "resolved": "https://registry.npmjs.org/circular-dependency-plugin/-/circular-dependency-plugin-5.2.2.tgz", "integrity": "sha512-g38K9Cm5WRwlaH6g03B9OEz/0qRizI+2I7n+Gz+L5DxXJAPAiWQvwlYNm1V1jkdpUv95bOe/ASm2vfi/G560jQ==", - "dev": true + "dev": true, + "requires": {} }, "cliui": { "version": "7.0.4", @@ -1185,7 +5552,8 @@ "version": "8.1.0", "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.1.0.tgz", "integrity": "sha512-oKMhGv3ihGbCIimCAjqkdzx2Q+jthoqnXSP+d86M9tptwugycmTFdVR4IpLgq2c4SHifbwO90z2fQ8/Aio73yw==", - "dev": true + "dev": true, + "requires": {} }, "eslint-plugin-prettier": { "version": "3.3.1", @@ -1948,7 +6316,8 @@ "version": "1.5.4", "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-1.5.4.tgz", "integrity": "sha512-PtilRLno5O6wH3lDihRnz0Ba8oSn0YUJqKjjux1peoYGwo0AQqrWRbdWk/RLzcGlb+onTyXAnHl6M+Hu3UxG/Q==", - "dev": true + "dev": true, + "requires": {} }, "karma-mocha-reporter": { "version": "2.2.5", @@ -2768,6 +7137,15 @@ } } }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, "string-width": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", @@ -2779,15 +7157,6 @@ "strip-ansi": "^6.0.0" } }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, "strip-ansi": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", @@ -3269,7 +7638,8 @@ "version": "7.4.4", "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.4.tgz", "integrity": "sha512-Qm8k8ojNQIMx7S+Zp8u/uHOx7Qazv3Yv4q68MiWWWOJhiwG5W3x7iqmRtJo8xxrciZUY4vRxUTJCKuRnF28ZZw==", - "dev": true + "dev": true, + "requires": {} }, "y18n": { "version": "5.0.5", From 958ced5c4f24fab0cff1f70f54490f8382b9cfb2 Mon Sep 17 00:00:00 2001 From: John Riordan Date: Sun, 4 Sep 2022 13:59:10 -0400 Subject: [PATCH 03/73] Update linting and formatting dependencies --- .eslintrc.json | 26 +- package-lock.json | 7696 --------------------------------------------- package.json | 14 +- 3 files changed, 28 insertions(+), 7708 deletions(-) delete mode 100644 package-lock.json diff --git a/.eslintrc.json b/.eslintrc.json index 05a0f8bcc..c3a96449b 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -2,28 +2,44 @@ "root": true, "parser": "@typescript-eslint/parser", "parserOptions": { + // "ecmaVersion": "latest", "ecmaVersion": 2017, "sourceType": "module", "project": "./tsconfig-base.json" }, - "plugins": ["@typescript-eslint", "tree-shaking"], + "plugins": [ + "@typescript-eslint", + "tree-shaking", + "prettier" + ], "extends": [ "eslint:recommended", "plugin:@typescript-eslint/eslint-recommended", "plugin:@typescript-eslint/recommended", - "plugin:@typescript-eslint/recommended-requiring-type-checking", - "plugin:prettier/recommended" + // "plugin:@typescript-eslint/recommended-requiring-type-checking", + // "plugin:@typescript-eslint/strict", + "prettier" ], "rules": { "no-console": "error", // "@typescript-eslint/explicit-member-accessibility": "error", - "@typescript-eslint/member-ordering": "error", - "tree-shaking/no-side-effects-in-initialization": 2 + // "@typescript-eslint/member-ordering": "error", + "tree-shaking/no-side-effects-in-initialization": "error" }, "overrides": [ { "files": ["./demo/**/*.ts", "./test/**/*.ts"], "rules": { + "@typescript-eslint/no-floating-promises": "off", + "@typescript-eslint/no-implied-eval": "off", + "@typescript-eslint/no-unsafe-argument": "off", + "@typescript-eslint/no-unsafe-assignment": "off", + "@typescript-eslint/no-unsafe-call": "off", + "@typescript-eslint/no-unsafe-member-access": "off", + "@typescript-eslint/no-unsafe-return": "off", + "@typescript-eslint/no-misused-promises": "off", + "@typescript-eslint/restrict-template-expressions": "off", + "@typescript-eslint/restrict-plus-operands": "off", "tree-shaking/no-side-effects-in-initialization": "off" } } diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index 0db36be74..000000000 --- a/package-lock.json +++ /dev/null @@ -1,7696 +0,0 @@ -{ - "name": "sip.js", - "version": "0.20.0", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "name": "sip.js", - "version": "0.20.0", - "license": "MIT", - "devDependencies": { - "@microsoft/api-documenter": "7.7.20", - "@microsoft/api-extractor": "7.7.11", - "@types/jasmine": "^3.6.6", - "@typescript-eslint/eslint-plugin": "^2.34.0", - "@typescript-eslint/parser": "^2.34.0", - "circular-dependency-plugin": "^5.2.2", - "eslint": "^7.22.0", - "eslint-config-prettier": "^8.1.0", - "eslint-plugin-prettier": "^3.3.1", - "eslint-plugin-tree-shaking": "^1.8.0", - "jasmine-core": "^3.6.0", - "karma": "^6.2.0", - "karma-chrome-launcher": "^3.1.0", - "karma-cli": "^2.0.0", - "karma-jasmine": "4.0.1", - "karma-jasmine-html-reporter": "^1.5.4", - "karma-mocha-reporter": "^2.2.5", - "karma-sourcemap-loader": "^0.3.8", - "karma-webpack": "^5.0.0", - "mock-socket": "^9.0.3", - "pegjs": "^0.10.0", - "prettier": "2.2.1", - "ts-loader": "^8.0.18", - "ts-pegjs": "0.3.1", - "typescript": "4.2.3", - "webpack": "^5.26.0", - "webpack-cli": "^4.5.0" - }, - "engines": { - "node": ">=10.0" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", - "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.10.4" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", - "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", - "dev": true - }, - "node_modules/@babel/highlight": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", - "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.12.11", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - } - }, - "node_modules/@babel/highlight/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@discoveryjs/json-ext": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.2.tgz", - "integrity": "sha512-HyYEUDeIj5rRQU2Hk5HTB2uHsbRQpF70nvMhVzi+VJR0X+xNEhjPui4/kBf3VeH/wqD28PT4sVOm8qqLjBrSZg==", - "dev": true, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.0.tgz", - "integrity": "sha512-2ZPCc+uNbjV5ERJr+aKSPRwZgKd2z11x0EgLvb1PURmUrn9QNRXFqje0Ldq454PfAVyaJYyrDvvIKSFP4NnBog==", - "dev": true, - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.1.1", - "espree": "^7.3.0", - "globals": "^12.1.0", - "ignore": "^4.0.6", - "import-fresh": "^3.2.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "12.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", - "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", - "dev": true, - "dependencies": { - "type-fest": "^0.8.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@microsoft/api-documenter": { - "version": "7.7.20", - "resolved": "https://registry.npmjs.org/@microsoft/api-documenter/-/api-documenter-7.7.20.tgz", - "integrity": "sha512-B2gOOoYJDOqAn9iPg4Z9ay03MYtjmY2ldF3u1povTkzl5eJWERMDuuK5BLOdGdDTMr6TUd/FrhERFEeJNeQ3rg==", - "dev": true, - "dependencies": { - "@microsoft/api-extractor-model": "7.7.11", - "@microsoft/tsdoc": "0.12.19", - "@rushstack/node-core-library": "3.19.7", - "@rushstack/ts-command-line": "4.3.14", - "colors": "~1.2.1", - "js-yaml": "~3.13.1", - "resolve": "1.8.1" - }, - "bin": { - "api-documenter": "bin/api-documenter" - } - }, - "node_modules/@microsoft/api-extractor": { - "version": "7.7.11", - "resolved": "https://registry.npmjs.org/@microsoft/api-extractor/-/api-extractor-7.7.11.tgz", - "integrity": "sha512-kd2kakdDoRgI54J5H11a76hyYZBMhtp4piwWAy4bYTwlQT0v/tp+G/UMMgjUL4vKf0kTNhitEUX/0LfQb1AHzQ==", - "dev": true, - "dependencies": { - "@microsoft/api-extractor-model": "7.7.10", - "@microsoft/tsdoc": "0.12.19", - "@rushstack/node-core-library": "3.19.6", - "@rushstack/ts-command-line": "4.3.13", - "colors": "~1.2.1", - "lodash": "~4.17.15", - "resolve": "1.8.1", - "source-map": "~0.6.1", - "typescript": "~3.7.2" - }, - "bin": { - "api-extractor": "bin/api-extractor" - } - }, - "node_modules/@microsoft/api-extractor-model": { - "version": "7.7.11", - "resolved": "https://registry.npmjs.org/@microsoft/api-extractor-model/-/api-extractor-model-7.7.11.tgz", - "integrity": "sha512-Kf3RytYDq7sP4ASaaA9IcvaOPbVj1Xj34E2Wxd9DznI7sG4HzcpoOGmxaZHCzyYVh7wfAaAlvcXf3SV+djhNZw==", - "dev": true, - "dependencies": { - "@microsoft/tsdoc": "0.12.19", - "@rushstack/node-core-library": "3.19.7" - } - }, - "node_modules/@microsoft/api-extractor/node_modules/@microsoft/api-extractor-model": { - "version": "7.7.10", - "resolved": "https://registry.npmjs.org/@microsoft/api-extractor-model/-/api-extractor-model-7.7.10.tgz", - "integrity": "sha512-gMFDXwUgoQYz9TgatyNPALDdZN4xBC3Un3fGwlzME+vM13PoJ26pGuqI7kv/OlK9+q2sgrEdxWns8D3UnLf2TA==", - "dev": true, - "dependencies": { - "@microsoft/tsdoc": "0.12.19", - "@rushstack/node-core-library": "3.19.6" - } - }, - "node_modules/@microsoft/api-extractor/node_modules/@rushstack/node-core-library": { - "version": "3.19.6", - "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-3.19.6.tgz", - "integrity": "sha512-1+FoymIdr9W9k0D8fdZBBPwi5YcMwh/RyESuL5bY29rLICFxSLOPK+ImVZ1OcWj9GEMsvDx5pNpJ311mHQk+MA==", - "dev": true, - "dependencies": { - "@types/node": "10.17.13", - "colors": "~1.2.1", - "fs-extra": "~7.0.1", - "jju": "~1.4.0", - "semver": "~5.3.0", - "timsort": "~0.3.0", - "z-schema": "~3.18.3" - } - }, - "node_modules/@microsoft/api-extractor/node_modules/@rushstack/ts-command-line": { - "version": "4.3.13", - "resolved": "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-4.3.13.tgz", - "integrity": "sha512-BUBbjYu67NJGQkpHu8aYm7kDoMFizL1qx78+72XE3mX/vDdXYJzw/FWS7TPcMJmY4kNlYs979v2B0Q0qa2wRiw==", - "dev": true, - "dependencies": { - "@types/argparse": "1.0.33", - "argparse": "~1.0.9", - "colors": "~1.2.1" - } - }, - "node_modules/@microsoft/api-extractor/node_modules/typescript": { - "version": "3.7.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.7.5.tgz", - "integrity": "sha512-/P5lkRXkWHNAbcJIiHPfRoKqyd7bsyCma1hZNUGfn20qm64T6ZBlrzprymeu918H+mB/0rIg2gGK/BXkhhYgBw==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/@microsoft/tsdoc": { - "version": "0.12.19", - "resolved": "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.12.19.tgz", - "integrity": "sha512-IpgPxHrNxZiMNUSXqR1l/gePKPkfAmIKoDRP9hp7OwjU29ZR8WCJsOJ8iBKgw0Qk+pFwR+8Y1cy8ImLY6e9m4A==", - "dev": true - }, - "node_modules/@rushstack/node-core-library": { - "version": "3.19.7", - "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-3.19.7.tgz", - "integrity": "sha512-gKE/OXH5GAj8yJ1kEyRW68UekJernilZ3QTRgmQ0MUHBCQmtZ9Q6T5PQ1sVbcL4teH8BMdpZeFy1DKnHs8h3PA==", - "dev": true, - "dependencies": { - "@types/node": "10.17.13", - "colors": "~1.2.1", - "fs-extra": "~7.0.1", - "jju": "~1.4.0", - "semver": "~5.3.0", - "timsort": "~0.3.0", - "z-schema": "~3.18.3" - } - }, - "node_modules/@rushstack/ts-command-line": { - "version": "4.3.14", - "resolved": "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-4.3.14.tgz", - "integrity": "sha512-YJZIyKvkm3f6ZdKSfMntHS9542Y2mmMWzaiPPoXxLFZntKxEIDE3WfUNlvOSo3yK4fNd09Tz3hfvTivQNHSiKQ==", - "dev": true, - "dependencies": { - "@types/argparse": "1.0.33", - "argparse": "~1.0.9", - "colors": "~1.2.1" - } - }, - "node_modules/@types/argparse": { - "version": "1.0.33", - "resolved": "https://registry.npmjs.org/@types/argparse/-/argparse-1.0.33.tgz", - "integrity": "sha512-VQgHxyPMTj3hIlq9SY1mctqx+Jj8kpQfoLvDlVSDNOyuYs8JYfkuY3OW/4+dO657yPmNhHpePRx0/Tje5ImNVQ==", - "dev": true - }, - "node_modules/@types/component-emitter": { - "version": "1.2.10", - "resolved": "https://registry.npmjs.org/@types/component-emitter/-/component-emitter-1.2.10.tgz", - "integrity": "sha512-bsjleuRKWmGqajMerkzox19aGbscQX5rmmvvXl3wlIp5gMG1HgkiwPxsN5p070fBDKTNSPgojVbuY1+HWMbFhg==", - "dev": true - }, - "node_modules/@types/cookie": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.0.tgz", - "integrity": "sha512-y7mImlc/rNkvCRmg8gC3/lj87S7pTUIJ6QGjwHR9WQJcFs+ZMTOaoPrkdFA/YdbuqVEmEbb5RdhVxMkAcgOnpg==", - "dev": true - }, - "node_modules/@types/cors": { - "version": "2.8.10", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.10.tgz", - "integrity": "sha512-C7srjHiVG3Ey1nR6d511dtDkCEjxuN9W1HWAEjGq8kpcwmNM6JJkpC0xvabM7BXTG2wDq8Eu33iH9aQKa7IvLQ==", - "dev": true - }, - "node_modules/@types/eslint": { - "version": "7.2.7", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.2.7.tgz", - "integrity": "sha512-EHXbc1z2GoQRqHaAT7+grxlTJ3WE2YNeD6jlpPoRc83cCoThRY+NUWjCUZaYmk51OICkPXn2hhphcWcWXgNW0Q==", - "dev": true, - "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "node_modules/@types/eslint-scope": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.0.tgz", - "integrity": "sha512-O/ql2+rrCUe2W2rs7wMR+GqPRcgB6UiqN5RhrR5xruFlY7l9YLMn0ZkDzjoHLeiFkR8MCQZVudUuuvQ2BLC9Qw==", - "dev": true, - "dependencies": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, - "node_modules/@types/eslint-visitor-keys": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", - "integrity": "sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==", - "dev": true - }, - "node_modules/@types/estree": { - "version": "0.0.46", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.46.tgz", - "integrity": "sha512-laIjwTQaD+5DukBZaygQ79K1Z0jb1bPEMRrkXSLjtCcZm+abyp5YbrqpSLzD42FwWW6gK/aS4NYpJ804nG2brg==", - "dev": true - }, - "node_modules/@types/jasmine": { - "version": "3.6.6", - "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-3.6.6.tgz", - "integrity": "sha512-kgl+oYOLCBt41iba8cetp+QPOqDAaTJnHtVPCE7JzYmda4juglRBLX35opVcANc7TLA/Lp0DEnajbUNnyxGC+Q==", - "dev": true - }, - "node_modules/@types/json-schema": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.6.tgz", - "integrity": "sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw==", - "dev": true - }, - "node_modules/@types/node": { - "version": "10.17.13", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.13.tgz", - "integrity": "sha512-pMCcqU2zT4TjqYFrWtYHKal7Sl30Ims6ulZ4UFXxI4xbtQqK/qqKwkDoBFCfooRqqmRu9vY3xaJRwxSh673aYg==", - "dev": true - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "2.34.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.34.0.tgz", - "integrity": "sha512-4zY3Z88rEE99+CNvTbXSyovv2z9PNOVffTWD2W8QF5s2prBQtwN2zadqERcrHpcR7O/+KMI3fcTAmUUhK/iQcQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/experimental-utils": "2.34.0", - "functional-red-black-tree": "^1.0.1", - "regexpp": "^3.0.0", - "tsutils": "^3.17.1" - }, - "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^2.0.0", - "eslint": "^5.0.0 || ^6.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/experimental-utils": { - "version": "2.34.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-2.34.0.tgz", - "integrity": "sha512-eS6FTkq+wuMJ+sgtuNTtcqavWXqsflWcfBnlYhg/nS4aZ1leewkXGbvBhaapn1q6qf4M71bsR1tez5JTRMuqwA==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.3", - "@typescript-eslint/typescript-estree": "2.34.0", - "eslint-scope": "^5.0.0", - "eslint-utils": "^2.0.0" - }, - "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "*" - } - }, - "node_modules/@typescript-eslint/parser": { - "version": "2.34.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-2.34.0.tgz", - "integrity": "sha512-03ilO0ucSD0EPTw2X4PntSIRFtDPWjrVq7C3/Z3VQHRC7+13YB55rcJI3Jt+YgeHbjUdJPcPa7b23rXCBokuyA==", - "dev": true, - "dependencies": { - "@types/eslint-visitor-keys": "^1.0.0", - "@typescript-eslint/experimental-utils": "2.34.0", - "@typescript-eslint/typescript-estree": "2.34.0", - "eslint-visitor-keys": "^1.1.0" - }, - "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^5.0.0 || ^6.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "2.34.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-2.34.0.tgz", - "integrity": "sha512-OMAr+nJWKdlVM9LOqCqh3pQQPwxHAN7Du8DR6dmwCrAmxtiXQnhHJ6tBNtf+cggqfo51SG/FCwnKhXCIM7hnVg==", - "dev": true, - "dependencies": { - "debug": "^4.1.1", - "eslint-visitor-keys": "^1.1.0", - "glob": "^7.1.6", - "is-glob": "^4.0.1", - "lodash": "^4.17.15", - "semver": "^7.3.2", - "tsutils": "^3.17.1" - }, - "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", - "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@webassemblyjs/ast": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.0.tgz", - "integrity": "sha512-kX2W49LWsbthrmIRMbQZuQDhGtjyqXfEmmHyEi4XWnSZtPmxY0+3anPIzsnRb45VH/J55zlOfWvZuY47aJZTJg==", - "dev": true, - "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.0", - "@webassemblyjs/helper-wasm-bytecode": "1.11.0" - } - }, - "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.0.tgz", - "integrity": "sha512-Q/aVYs/VnPDVYvsCBL/gSgwmfjeCb4LW8+TMrO3cSzJImgv8lxxEPM2JA5jMrivE7LSz3V+PFqtMbls3m1exDA==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.0.tgz", - "integrity": "sha512-baT/va95eXiXb2QflSx95QGT5ClzWpGaa8L7JnJbgzoYeaA27FCvuBXU758l+KXWRndEmUXjP0Q5fibhavIn8w==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.0.tgz", - "integrity": "sha512-u9HPBEl4DS+vA8qLQdEQ6N/eJQ7gT7aNvMIo8AAWvAl/xMrcOSiI2M0MAnMCy3jIFke7bEee/JwdX1nUpCtdyA==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.0.tgz", - "integrity": "sha512-DhRQKelIj01s5IgdsOJMKLppI+4zpmcMQ3XboFPLwCpSNH6Hqo1ritgHgD0nqHeSYqofA6aBN/NmXuGjM1jEfQ==", - "dev": true, - "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.11.0", - "@webassemblyjs/helper-api-error": "1.11.0", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.0.tgz", - "integrity": "sha512-MbmhvxXExm542tWREgSFnOVo07fDpsBJg3sIl6fSp9xuu75eGz5lz31q7wTLffwL3Za7XNRCMZy210+tnsUSEA==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.0.tgz", - "integrity": "sha512-3Eb88hcbfY/FCukrg6i3EH8H2UsD7x8Vy47iVJrP967A9JGqgBVL9aH71SETPx1JrGsOUVLo0c7vMCN22ytJew==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.0", - "@webassemblyjs/helper-buffer": "1.11.0", - "@webassemblyjs/helper-wasm-bytecode": "1.11.0", - "@webassemblyjs/wasm-gen": "1.11.0" - } - }, - "node_modules/@webassemblyjs/ieee754": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.0.tgz", - "integrity": "sha512-KXzOqpcYQwAfeQ6WbF6HXo+0udBNmw0iXDmEK5sFlmQdmND+tr773Ti8/5T/M6Tl/413ArSJErATd8In3B+WBA==", - "dev": true, - "dependencies": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "node_modules/@webassemblyjs/leb128": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.0.tgz", - "integrity": "sha512-aqbsHa1mSQAbeeNcl38un6qVY++hh8OpCOzxhixSYgbRfNWcxJNJQwe2rezK9XEcssJbbWIkblaJRwGMS9zp+g==", - "dev": true, - "dependencies": { - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/utf8": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.0.tgz", - "integrity": "sha512-A/lclGxH6SpSLSyFowMzO/+aDEPU4hvEiooCMXQPcQFPPJaYcPQNKGOCLUySJsYJ4trbpr+Fs08n4jelkVTGVw==", - "dev": true - }, - "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.0.tgz", - "integrity": "sha512-JHQ0damXy0G6J9ucyKVXO2j08JVJ2ntkdJlq1UTiUrIgfGMmA7Ik5VdC/L8hBK46kVJgujkBIoMtT8yVr+yVOQ==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.0", - "@webassemblyjs/helper-buffer": "1.11.0", - "@webassemblyjs/helper-wasm-bytecode": "1.11.0", - "@webassemblyjs/helper-wasm-section": "1.11.0", - "@webassemblyjs/wasm-gen": "1.11.0", - "@webassemblyjs/wasm-opt": "1.11.0", - "@webassemblyjs/wasm-parser": "1.11.0", - "@webassemblyjs/wast-printer": "1.11.0" - } - }, - "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.0.tgz", - "integrity": "sha512-BEUv1aj0WptCZ9kIS30th5ILASUnAPEvE3tVMTrItnZRT9tXCLW2LEXT8ezLw59rqPP9klh9LPmpU+WmRQmCPQ==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.0", - "@webassemblyjs/helper-wasm-bytecode": "1.11.0", - "@webassemblyjs/ieee754": "1.11.0", - "@webassemblyjs/leb128": "1.11.0", - "@webassemblyjs/utf8": "1.11.0" - } - }, - "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.0.tgz", - "integrity": "sha512-tHUSP5F4ywyh3hZ0+fDQuWxKx3mJiPeFufg+9gwTpYp324mPCQgnuVKwzLTZVqj0duRDovnPaZqDwoyhIO8kYg==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.0", - "@webassemblyjs/helper-buffer": "1.11.0", - "@webassemblyjs/wasm-gen": "1.11.0", - "@webassemblyjs/wasm-parser": "1.11.0" - } - }, - "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.0.tgz", - "integrity": "sha512-6L285Sgu9gphrcpDXINvm0M9BskznnzJTE7gYkjDbxET28shDqp27wpruyx3C2S/dvEwiigBwLA1cz7lNUi0kw==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.0", - "@webassemblyjs/helper-api-error": "1.11.0", - "@webassemblyjs/helper-wasm-bytecode": "1.11.0", - "@webassemblyjs/ieee754": "1.11.0", - "@webassemblyjs/leb128": "1.11.0", - "@webassemblyjs/utf8": "1.11.0" - } - }, - "node_modules/@webassemblyjs/wast-printer": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.0.tgz", - "integrity": "sha512-Fg5OX46pRdTgB7rKIUojkh9vXaVN6sGYCnEiJN1GYkb0RPwShZXp6KTDqmoMdQPKhcroOXh3fEzmkWmCYaKYhQ==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.0", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webpack-cli/configtest": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.0.1.tgz", - "integrity": "sha512-B+4uBUYhpzDXmwuo3V9yBH6cISwxEI4J+NO5ggDaGEEHb0osY/R7MzeKc0bHURXQuZjMM4qD+bSJCKIuI3eNBQ==", - "dev": true, - "peerDependencies": { - "webpack": "4.x.x || 5.x.x", - "webpack-cli": "4.x.x" - } - }, - "node_modules/@webpack-cli/info": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.2.2.tgz", - "integrity": "sha512-5U9kUJHnwU+FhKH4PWGZuBC1hTEPYyxGSL5jjoBI96Gx8qcYJGOikpiIpFoTq8mmgX3im2zAo2wanv/alD74KQ==", - "dev": true, - "dependencies": { - "envinfo": "^7.7.3" - }, - "peerDependencies": { - "webpack-cli": "4.x.x" - } - }, - "node_modules/@webpack-cli/serve": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.3.0.tgz", - "integrity": "sha512-k2p2VrONcYVX1wRRrf0f3X2VGltLWcv+JzXRBDmvCxGlCeESx4OXw91TsWeKOkp784uNoVQo313vxJFHXPPwfw==", - "dev": true, - "peerDependencies": { - "webpack-cli": "4.x.x" - }, - "peerDependenciesMeta": { - "webpack-dev-server": { - "optional": true - } - } - }, - "node_modules/@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true - }, - "node_modules/@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true - }, - "node_modules/accepts": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", - "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", - "dev": true, - "dependencies": { - "mime-types": "~2.1.24", - "negotiator": "0.6.2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", - "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", - "dev": true, - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/anymatch": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", - "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "node_modules/base64-arraybuffer": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz", - "integrity": "sha1-mBjHngWbE1X5fgQooBfIOOkLqBI=", - "dev": true, - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/base64id": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", - "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", - "dev": true, - "engines": { - "node": "^4.5.0 || >= 5.9" - } - }, - "node_modules/big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/body-parser": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", - "dev": true, - "dependencies": { - "bytes": "3.1.0", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.7.0", - "raw-body": "2.4.0", - "type-is": "~1.6.17" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/body-parser/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/body-parser/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browserslist": { - "version": "4.16.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.3.tgz", - "integrity": "sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw==", - "dev": true, - "dependencies": { - "caniuse-lite": "^1.0.30001181", - "colorette": "^1.2.1", - "electron-to-chromium": "^1.3.649", - "escalade": "^3.1.1", - "node-releases": "^1.1.70" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - } - }, - "node_modules/buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", - "dev": true - }, - "node_modules/bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001202", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001202.tgz", - "integrity": "sha512-ZcijQNqrcF8JNLjzvEiXqX4JUYxoZa7Pvcsd9UD8Kz4TvhTonOSNRsK+qtvpVL4l6+T1Rh4LFtLfnNWg6BGWCQ==", - "dev": true - }, - "node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/chalk/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/chalk/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/chalk/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/chalk/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/chalk/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/chokidar": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", - "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", - "dev": true, - "dependencies": { - "anymatch": "~3.1.1", - "braces": "~3.0.2", - "glob-parent": "~5.1.0", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.5.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.1" - } - }, - "node_modules/chrome-trace-event": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", - "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", - "dev": true, - "dependencies": { - "tslib": "^1.9.0" - }, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/circular-dependency-plugin": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/circular-dependency-plugin/-/circular-dependency-plugin-5.2.2.tgz", - "integrity": "sha512-g38K9Cm5WRwlaH6g03B9OEz/0qRizI+2I7n+Gz+L5DxXJAPAiWQvwlYNm1V1jkdpUv95bOe/ASm2vfi/G560jQ==", - "dev": true, - "engines": { - "node": ">=6.0.0" - }, - "peerDependencies": { - "webpack": ">=4.0.1" - } - }, - "node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "node_modules/clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", - "dev": true, - "dependencies": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "node_modules/colorette": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz", - "integrity": "sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==", - "dev": true - }, - "node_modules/colors": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.2.5.tgz", - "integrity": "sha512-erNRLao/Y3Fv54qUa0LBB+//Uf3YwMUmdJinN20yMXm9zdKKqH9wt7R9IIVZ+K7ShzfpLV/Zg8+VyrBJYB4lpg==", - "dev": true, - "engines": { - "node": ">=0.1.90" - } - }, - "node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "node_modules/component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "dev": true - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "node_modules/connect": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", - "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", - "dev": true, - "dependencies": { - "debug": "2.6.9", - "finalhandler": "1.1.2", - "parseurl": "~1.3.3", - "utils-merge": "1.0.1" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/connect/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/connect/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "node_modules/content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", - "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true - }, - "node_modules/cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", - "dev": true, - "dependencies": { - "object-assign": "^4", - "vary": "^1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/custom-event": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", - "integrity": "sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU=", - "dev": true - }, - "node_modules/date-format": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/date-format/-/date-format-3.0.0.tgz", - "integrity": "sha512-eyTcpKOcamdhWJXj56DpQMo1ylSQpcGtGKXcU0Tb97+K56/CF5amAqqqNj0+KvA0iw2ynxtHWFsPDSClCxe48w==", - "deprecated": "3.x is no longer supported. Please upgrade to 4.x or higher.", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", - "dev": true - }, - "node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/di": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", - "integrity": "sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw=", - "dev": true - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/dom-serialize": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", - "integrity": "sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs=", - "dev": true, - "dependencies": { - "custom-event": "~1.0.0", - "ent": "~2.2.0", - "extend": "^3.0.0", - "void-elements": "^2.0.0" - } - }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", - "dev": true - }, - "node_modules/electron-to-chromium": { - "version": "1.3.689", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.689.tgz", - "integrity": "sha512-WCn+ZaU3V8WttlLNSOGOAlR2XpxibGre7slwGrYBB6oTjYPgP29LNDGG6wLvLTMseLdE+G1vno7PfY7JyDV48g==", - "dev": true - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/engine.io": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-4.1.1.tgz", - "integrity": "sha512-t2E9wLlssQjGw0nluF6aYyfX8LwYU8Jj0xct+pAhfWfv/YrBn6TSNtEYsgxHIfaMqfrLx07czcMg9bMN6di+3w==", - "dev": true, - "dependencies": { - "accepts": "~1.3.4", - "base64id": "2.0.0", - "cookie": "~0.4.1", - "cors": "~2.8.5", - "debug": "~4.3.1", - "engine.io-parser": "~4.0.0", - "ws": "~7.4.2" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/engine.io-parser": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-4.0.2.tgz", - "integrity": "sha512-sHfEQv6nmtJrq6TKuIz5kyEKH/qSdK56H/A+7DnAuUPWosnIZAS2NHNcPLmyjtY3cGS/MqJdZbUjW97JU72iYg==", - "dev": true, - "dependencies": { - "base64-arraybuffer": "0.1.4" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/enhanced-resolve": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", - "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.5.0", - "tapable": "^1.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "dev": true, - "dependencies": { - "ansi-colors": "^4.1.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/ent": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", - "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=", - "dev": true - }, - "node_modules/envinfo": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.7.4.tgz", - "integrity": "sha512-TQXTYFVVwwluWSFis6K2XKxgrD22jEv0FTuLCQI+OjH7rn93+iY0fSSFM5lrSxFY+H1+B0/cvvlamr3UsBivdQ==", - "dev": true, - "bin": { - "envinfo": "dist/cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/errno": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", - "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", - "dev": true, - "dependencies": { - "prr": "~1.0.1" - }, - "bin": { - "errno": "cli.js" - } - }, - "node_modules/es-module-lexer": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.4.1.tgz", - "integrity": "sha512-ooYciCUtfw6/d2w56UVeqHPcoCFAiJdz5XOkYpv/Txl1HMUozpXjz/2RIQgqwKdXNDPSF1W7mJCFse3G+HDyAA==", - "dev": true - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", - "dev": true - }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/eslint": { - "version": "7.22.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.22.0.tgz", - "integrity": "sha512-3VawOtjSJUQiiqac8MQc+w457iGLfuNGLFn8JmF051tTKbh5/x/0vlcEj8OgDCaw7Ysa2Jn8paGshV7x2abKXg==", - "dev": true, - "dependencies": { - "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.0", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "enquirer": "^2.3.5", - "eslint-scope": "^5.1.1", - "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^2.0.0", - "espree": "^7.3.1", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.0.0", - "globals": "^13.6.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash": "^4.17.21", - "minimatch": "^3.0.4", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.1.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.0", - "strip-json-comments": "^3.1.0", - "table": "^6.0.4", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-config-prettier": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.1.0.tgz", - "integrity": "sha512-oKMhGv3ihGbCIimCAjqkdzx2Q+jthoqnXSP+d86M9tptwugycmTFdVR4IpLgq2c4SHifbwO90z2fQ8/Aio73yw==", - "dev": true, - "bin": { - "eslint-config-prettier": "bin/cli.js" - }, - "peerDependencies": { - "eslint": ">=7.0.0" - } - }, - "node_modules/eslint-plugin-prettier": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.3.1.tgz", - "integrity": "sha512-Rq3jkcFY8RYeQLgk2cCwuc0P7SEFwDravPhsJZOQ5N4YI4DSg50NyqJ/9gdZHzQlHf8MvafSesbNJCcP/FF6pQ==", - "dev": true, - "dependencies": { - "prettier-linter-helpers": "^1.0.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "peerDependencies": { - "eslint": ">=5.0.0", - "prettier": ">=1.13.0" - }, - "peerDependenciesMeta": { - "eslint-config-prettier": { - "optional": true - } - } - }, - "node_modules/eslint-plugin-tree-shaking": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-tree-shaking/-/eslint-plugin-tree-shaking-1.8.0.tgz", - "integrity": "sha512-5jrqlyka6MCaV8efwAIIo/3cvmhurA4gUaFoTWoWw6wLhmHUS0/42NDKubKOMlQJXm5Z7/i4hbzyIcDXbHAnVw==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^1.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint/node_modules/eslint-visitor-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz", - "integrity": "sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/eslint/node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "node_modules/eslint/node_modules/semver": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", - "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/espree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", - "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", - "dev": true, - "dependencies": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", - "dev": true, - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esquery/node_modules/estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "dev": true - }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true, - "engines": { - "node": ">=0.8.x" - } - }, - "node_modules/execa": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.0.0.tgz", - "integrity": "sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/fast-diff": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", - "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", - "dev": true - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true - }, - "node_modules/fastest-levenshtein": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", - "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==", - "dev": true - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", - "dev": true, - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/finalhandler/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/finalhandler/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flatted": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.1.tgz", - "integrity": "sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==", - "dev": true - }, - "node_modules/follow-redirects": { - "version": "1.13.3", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.3.tgz", - "integrity": "sha512-DUgl6+HDzB0iEptNQEXLx/KhTmDb8tZUHSeLqpnjpknR70H0nC2t9N73BK6fN4hOvJ84pKlIQVQ4k5FFlBedKA==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "node_modules/functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", - "dev": true - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-stream": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.0.tgz", - "integrity": "sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", - "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true - }, - "node_modules/globals": { - "version": "13.6.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.6.0.tgz", - "integrity": "sha512-YFKCX0SiPg7l5oKYCJ2zZGxcXprVXHcSnVuvzrT3oSENQonVLqM5pf9fN5dLGZGyCjhw8TN8Btwe/jKnZ0pjvQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globals/node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", - "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", - "dev": true - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/http-errors": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", - "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", - "dev": true, - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/http-errors/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - }, - "node_modules/http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", - "dev": true, - "dependencies": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true, - "engines": { - "node": ">=10.17.0" - } - }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/import-local": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz", - "integrity": "sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==", - "dev": true, - "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/import-local/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/import-local/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/import-local/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/import-local/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/import-local/node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true, - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "node_modules/interpret": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", - "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-core-module": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", - "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", - "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "node_modules/isbinaryfile": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.6.tgz", - "integrity": "sha512-ORrEy+SNVqUhrCaal4hA4fBzhggQQ+BaLntyPOdoEiwlKZW9BZiJXjg3RMiruE4tPEI3pyVPpySHQF/dKWperg==", - "dev": true, - "engines": { - "node": ">= 8.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/gjtorikian/" - } - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/jasmine-core": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-3.6.0.tgz", - "integrity": "sha512-8uQYa7zJN8hq9z+g8z1bqCfdC8eoDAeVnM5sfqs7KHv9/ifoJ500m018fpFc7RDaO6SWCLCXwo/wPSNcdYTgcw==", - "dev": true - }, - "node_modules/jest-worker": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", - "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", - "dev": true, - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^7.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/jest-worker/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jju": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/jju/-/jju-1.4.0.tgz", - "integrity": "sha1-o6vicYryQaKykE+EpiWXDzia4yo=", - "dev": true - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "node_modules/js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", - "dev": true, - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", - "dev": true - }, - "node_modules/json5": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", - "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", - "dev": true, - "dependencies": { - "minimist": "^1.2.5" - }, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "dev": true, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/karma": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/karma/-/karma-6.2.0.tgz", - "integrity": "sha512-pCB8eNxGgdIdZeC885rbhZ/VyuOPNHUIDNL9EaaMf1NVzpvTjMO8a7zRTn51ZJhOOOxCSpalUdT1A8x76LyVqg==", - "dev": true, - "dependencies": { - "body-parser": "^1.19.0", - "braces": "^3.0.2", - "chokidar": "^3.4.2", - "colors": "^1.4.0", - "connect": "^3.7.0", - "di": "^0.0.1", - "dom-serialize": "^2.2.1", - "glob": "^7.1.6", - "graceful-fs": "^4.2.4", - "http-proxy": "^1.18.1", - "isbinaryfile": "^4.0.6", - "lodash": "^4.17.19", - "log4js": "^6.2.1", - "mime": "^2.4.5", - "minimatch": "^3.0.4", - "qjobs": "^1.2.0", - "range-parser": "^1.2.1", - "rimraf": "^3.0.2", - "socket.io": "^3.1.0", - "source-map": "^0.6.1", - "tmp": "0.2.1", - "ua-parser-js": "^0.7.23", - "yargs": "^16.1.1" - }, - "bin": { - "karma": "bin/karma" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/karma-chrome-launcher": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.1.0.tgz", - "integrity": "sha512-3dPs/n7vgz1rxxtynpzZTvb9y/GIaW8xjAwcIGttLbycqoFtI7yo1NGnQi6oFTherRE+GIhCAHZC4vEqWGhNvg==", - "dev": true, - "dependencies": { - "which": "^1.2.1" - } - }, - "node_modules/karma-chrome-launcher/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/karma-cli": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/karma-cli/-/karma-cli-2.0.0.tgz", - "integrity": "sha512-1Kb28UILg1ZsfqQmeELbPzuEb5C6GZJfVIk0qOr8LNYQuYWmAaqP16WpbpKEjhejDrDYyYOwwJXSZO6u7q5Pvw==", - "dev": true, - "dependencies": { - "resolve": "^1.3.3" - }, - "bin": { - "karma": "bin/karma" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/karma-jasmine": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-4.0.1.tgz", - "integrity": "sha512-h8XDAhTiZjJKzfkoO1laMH+zfNlra+dEQHUAjpn5JV1zCPtOIVWGQjLBrqhnzQa/hrU2XrZwSyBa6XjEBzfXzw==", - "dev": true, - "dependencies": { - "jasmine-core": "^3.6.0" - }, - "engines": { - "node": ">= 10" - }, - "peerDependencies": { - "karma": "*" - } - }, - "node_modules/karma-jasmine-html-reporter": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-1.5.4.tgz", - "integrity": "sha512-PtilRLno5O6wH3lDihRnz0Ba8oSn0YUJqKjjux1peoYGwo0AQqrWRbdWk/RLzcGlb+onTyXAnHl6M+Hu3UxG/Q==", - "dev": true, - "peerDependencies": { - "jasmine-core": ">=3.5", - "karma": ">=0.9", - "karma-jasmine": ">=1.1" - } - }, - "node_modules/karma-mocha-reporter": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/karma-mocha-reporter/-/karma-mocha-reporter-2.2.5.tgz", - "integrity": "sha1-FRIAlejtgZGG5HoLAS8810GJVWA=", - "dev": true, - "dependencies": { - "chalk": "^2.1.0", - "log-symbols": "^2.1.0", - "strip-ansi": "^4.0.0" - }, - "peerDependencies": { - "karma": ">=0.13" - } - }, - "node_modules/karma-mocha-reporter/node_modules/ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/karma-mocha-reporter/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/karma-mocha-reporter/node_modules/strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "dependencies": { - "ansi-regex": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/karma-sourcemap-loader": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/karma-sourcemap-loader/-/karma-sourcemap-loader-0.3.8.tgz", - "integrity": "sha512-zorxyAakYZuBcHRJE+vbrK2o2JXLFWK8VVjiT/6P+ltLBUGUvqTEkUiQ119MGdOrK7mrmxXHZF1/pfT6GgIZ6g==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2" - } - }, - "node_modules/karma-webpack": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/karma-webpack/-/karma-webpack-5.0.0.tgz", - "integrity": "sha512-+54i/cd3/piZuP3dr54+NcFeKOPnys5QeM1IY+0SPASwrtHsliXUiCL50iW+K9WWA7RvamC4macvvQ86l3KtaA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3", - "minimatch": "^3.0.4", - "webpack-merge": "^4.1.5" - }, - "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "webpack": "^5.0.0" - } - }, - "node_modules/karma/node_modules/colors": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", - "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", - "dev": true, - "engines": { - "node": ">=0.1.90" - } - }, - "node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/loader-runner": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", - "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==", - "dev": true, - "engines": { - "node": ">=6.11.5" - } - }, - "node_modules/loader-utils": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", - "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", - "dev": true, - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - }, - "engines": { - "node": ">=8.9.0" - } - }, - "node_modules/lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", - "dev": true - }, - "node_modules/lodash.get": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", - "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=", - "dev": true - }, - "node_modules/lodash.isequal": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", - "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=", - "dev": true - }, - "node_modules/log-symbols": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", - "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", - "dev": true, - "dependencies": { - "chalk": "^2.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/log-symbols/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/log4js": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.3.0.tgz", - "integrity": "sha512-Mc8jNuSFImQUIateBFwdOQcmC6Q5maU0VVvdC2R6XMb66/VnT+7WS4D/0EeNMZu1YODmJe5NIn2XftCzEocUgw==", - "dev": true, - "dependencies": { - "date-format": "^3.0.0", - "debug": "^4.1.1", - "flatted": "^2.0.1", - "rfdc": "^1.1.4", - "streamroller": "^2.2.4" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/log4js/node_modules/flatted": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", - "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", - "dev": true - }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/memory-fs": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", - "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", - "dev": true, - "dependencies": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - }, - "engines": { - "node": ">=4.3.0 <5.0.0 || >=5.10" - } - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "node_modules/micromatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", - "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", - "dev": true, - "dependencies": { - "braces": "^3.0.1", - "picomatch": "^2.0.5" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/mime": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", - "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==", - "dev": true, - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/mime-db": { - "version": "1.45.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.45.0.tgz", - "integrity": "sha512-CkqLUxUk15hofLoLyljJSrukZi8mAtgd+yE5uO4tqRZsdsAJKv0O+rFMhVDRJgozy+yG6md5KwuXhD4ocIoP+w==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.28", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.28.tgz", - "integrity": "sha512-0TO2yJ5YHYr7M2zzT7gDU1tbwHxEUWBCLt0lscSNpcdAfFyJOVEpRYNS7EXVcTLNj/25QO8gulHC5JtTzSE2UQ==", - "dev": true, - "dependencies": { - "mime-db": "1.45.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, - "node_modules/mock-socket": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/mock-socket/-/mock-socket-9.0.3.tgz", - "integrity": "sha512-SxIiD2yE/By79p3cNAAXyLQWTvEFNEzcAO7PH+DzRqKSFaplAPFjiQLmw8ofmpCsZf+Rhfn2/xCJagpdGmYdTw==", - "dev": true, - "dependencies": { - "url-parse": "^1.4.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true - }, - "node_modules/negotiator": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", - "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true - }, - "node_modules/node-releases": { - "version": "1.1.71", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz", - "integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==", - "dev": true - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "dev": true, - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", - "dev": true - }, - "node_modules/pegjs": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/pegjs/-/pegjs-0.10.0.tgz", - "integrity": "sha1-z4uvrm7d/0tafvsYUmnqr0YQ3b0=", - "dev": true, - "bin": { - "pegjs": "bin/pegjs" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/picomatch": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", - "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/prettier": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.2.1.tgz", - "integrity": "sha512-PqyhM2yCjg/oKkFPtTGUojv7gnZAoG80ttl45O6x2Ug/rMJw4wcc9k6aaf2hibP7BGVCCM33gZoGjyvt9mm16Q==", - "dev": true, - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/prettier-linter-helpers": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", - "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", - "dev": true, - "dependencies": { - "fast-diff": "^1.1.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "node_modules/progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", - "dev": true - }, - "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/qjobs": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", - "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", - "dev": true, - "engines": { - "node": ">=0.9" - } - }, - "node_modules/qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", - "dev": true, - "engines": { - "node": ">=0.6" - } - }, - "node_modules/querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "dev": true - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/raw-body": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", - "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", - "dev": true, - "dependencies": { - "bytes": "3.1.0", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/readdirp": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", - "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", - "dev": true, - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/rechoir": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.0.tgz", - "integrity": "sha512-ADsDEH2bvbjltXEP+hTIAmeFekTFK0V2BTxMkok6qILyAJEXV0AFfoWcAq4yfll5VdIMd/RVXq0lR+wQi5ZU3Q==", - "dev": true, - "dependencies": { - "resolve": "^1.9.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/rechoir/node_modules/resolve": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", - "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", - "dev": true, - "dependencies": { - "is-core-module": "^2.1.0", - "path-parse": "^1.0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regexpp": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", - "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", - "dev": true - }, - "node_modules/resolve": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz", - "integrity": "sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==", - "dev": true, - "dependencies": { - "path-parse": "^1.0.5" - } - }, - "node_modules/resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "dependencies": { - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-cwd/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/rfdc": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.2.0.tgz", - "integrity": "sha512-ijLyszTMmUrXvjSooucVQwimGUk84eRcmCuLV8Xghe3UO85mjUtRAHRyoMM6XtyqbECaXuBWx18La3523sXINA==", - "dev": true - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "node_modules/schema-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", - "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.6", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/semver": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", - "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/serialize-javascript": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", - "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", - "dev": true, - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/setprototypeof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", - "dev": true - }, - "node_modules/shallow-clone": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/signal-exit": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", - "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", - "dev": true - }, - "node_modules/slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } - }, - "node_modules/slice-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/slice-ansi/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/slice-ansi/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/socket.io": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-3.1.2.tgz", - "integrity": "sha512-JubKZnTQ4Z8G4IZWtaAZSiRP3I/inpy8c/Bsx2jrwGrTbKeVU5xd6qkKMHpChYeM3dWZSO0QACiGK+obhBNwYw==", - "dev": true, - "dependencies": { - "@types/cookie": "^0.4.0", - "@types/cors": "^2.8.8", - "@types/node": ">=10.0.0", - "accepts": "~1.3.4", - "base64id": "~2.0.0", - "debug": "~4.3.1", - "engine.io": "~4.1.0", - "socket.io-adapter": "~2.1.0", - "socket.io-parser": "~4.0.3" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/socket.io-adapter": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.1.0.tgz", - "integrity": "sha512-+vDov/aTsLjViYTwS9fPy5pEtTkrbEKsw2M+oVSoFGw6OD1IpvlV1VPhUzNbofCQ8oyMbdYJqDtGdmHQK6TdPg==", - "dev": true - }, - "node_modules/socket.io-parser": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.0.4.tgz", - "integrity": "sha512-t+b0SS+IxG7Rxzda2EVvyBZbvFPBCjJoyHuE0P//7OAsN23GItzDRdWa6ALxZI/8R5ygK7jAR6t028/z+7295g==", - "dev": true, - "dependencies": { - "@types/component-emitter": "^1.2.10", - "component-emitter": "~1.3.0", - "debug": "~4.3.1" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/source-list-map": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", - "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", - "dev": true - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.19", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", - "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", - "dev": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - }, - "node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/streamroller": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-2.2.4.tgz", - "integrity": "sha512-OG79qm3AujAM9ImoqgWEY1xG4HX+Lw+yY6qZj9R1K2mhF5bEmQ849wvrb+4vt4jLMLzwXttJlQbOdPOQVRv7DQ==", - "deprecated": "2.x is no longer supported. Please upgrade to 3.x or higher.", - "dev": true, - "dependencies": { - "date-format": "^2.1.0", - "debug": "^4.1.1", - "fs-extra": "^8.1.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/streamroller/node_modules/date-format": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/date-format/-/date-format-2.1.0.tgz", - "integrity": "sha512-bYQuGLeFxhkxNOF3rcMtiZxvCBAquGzZm6oWA1oZ0g2THUzivaRhv8uOhdr19LmoobSOLoIAxeUK2RdbM8IFTA==", - "deprecated": "2.x is no longer supported. Please upgrade to 4.x or higher.", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/streamroller/node_modules/fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, - "node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/table": { - "version": "6.0.7", - "resolved": "https://registry.npmjs.org/table/-/table-6.0.7.tgz", - "integrity": "sha512-rxZevLGTUzWna/qBLObOe16kB2RTnnbhciwgPbMMlazz1yZGVEgnZK762xyVdVznhqxrfCeBMmMkgOOaPwjH7g==", - "dev": true, - "dependencies": { - "ajv": "^7.0.2", - "lodash": "^4.17.20", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/table/node_modules/ajv": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-7.2.1.tgz", - "integrity": "sha512-+nu0HDv7kNSOua9apAVc979qd932rrZeb3WOvoiD31A/p1mIE5/9bN2027pE2rOPYEdS3UHzsvof4hY+lM9/WQ==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/table/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "node_modules/tapable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", - "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/terser": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.6.0.tgz", - "integrity": "sha512-vyqLMoqadC1uR0vywqOZzriDYzgEkNJFK4q9GeyOBHIbiECHiWLKcWfbQWAUaPfxkjDhapSlZB9f7fkMrvkVjA==", - "dev": true, - "dependencies": { - "commander": "^2.20.0", - "source-map": "~0.7.2", - "source-map-support": "~0.5.19" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/terser-webpack-plugin": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.1.1.tgz", - "integrity": "sha512-5XNNXZiR8YO6X6KhSGXfY0QrGrCRlSwAEjIIrlRQR4W8nP69TaJUlh3bkuac6zzgspiGPfKEHcY295MMVExl5Q==", - "dev": true, - "dependencies": { - "jest-worker": "^26.6.2", - "p-limit": "^3.1.0", - "schema-utils": "^3.0.0", - "serialize-javascript": "^5.0.1", - "source-map": "^0.6.1", - "terser": "^5.5.1" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" - } - }, - "node_modules/terser/node_modules/source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, - "node_modules/timsort": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", - "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", - "dev": true - }, - "node_modules/tmp": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", - "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", - "dev": true, - "dependencies": { - "rimraf": "^3.0.0" - }, - "engines": { - "node": ">=8.17.0" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/toidentifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", - "dev": true, - "engines": { - "node": ">=0.6" - } - }, - "node_modules/ts-loader": { - "version": "8.0.18", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-8.0.18.tgz", - "integrity": "sha512-hRZzkydPX30XkLaQwJTDcWDoxZHK6IrEMDQpNd7tgcakFruFkeUp/aY+9hBb7BUGb+ZWKI0jiOGMo0MckwzdDQ==", - "dev": true, - "dependencies": { - "chalk": "^4.1.0", - "enhanced-resolve": "^4.0.0", - "loader-utils": "^2.0.0", - "micromatch": "^4.0.0", - "semver": "^7.3.4" - }, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "typescript": "*", - "webpack": "*" - } - }, - "node_modules/ts-loader/node_modules/semver": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", - "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/ts-pegjs": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/ts-pegjs/-/ts-pegjs-0.3.1.tgz", - "integrity": "sha512-4FqLW/HdZ4KvKHUpnaf7yeZM2L/1Y9cHlQ0Z59bVNABPbMEFQnKAYs/3p0zMvvCWkY3fnjMyr/F7wKzZ//vHIw==", - "dev": true, - "dependencies": { - "pegjs": "^0.10.0" - }, - "bin": { - "tspegjs": "src/cli.js" - }, - "peerDependencies": { - "pegjs": "~0.10.0" - } - }, - "node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/tsutils": { - "version": "3.17.1", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.17.1.tgz", - "integrity": "sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g==", - "dev": true, - "dependencies": { - "tslib": "^1.8.1" - }, - "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" - } - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dev": true, - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/typescript": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.2.3.tgz", - "integrity": "sha512-qOcYwxaByStAWrBf4x0fibwZvMRG+r4cQoTjbPtUlrWjBHbmCAww1i448U0GJ+3cNNEtebDteo/cHOR3xJ4wEw==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/ua-parser-js": { - "version": "0.7.24", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.24.tgz", - "integrity": "sha512-yo+miGzQx5gakzVK3QFfN0/L9uVhosXBBO7qmnk7c2iw1IhL212wfA3zbnI54B0obGwC/5NWub/iT9sReMx+Fw==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/url-parse": { - "version": "1.4.7", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz", - "integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==", - "dev": true, - "dependencies": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true - }, - "node_modules/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", - "dev": true, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/v8-compile-cache": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz", - "integrity": "sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q==", - "dev": true - }, - "node_modules/validator": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/validator/-/validator-8.2.0.tgz", - "integrity": "sha512-Yw5wW34fSv5spzTXNkokD6S6/Oq92d8q/t14TqsS3fAiA1RYnxSFSIZ+CY3n6PGGRCq5HhJTSepQvFUS2QUDxA==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/void-elements": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", - "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.1.1.tgz", - "integrity": "sha512-Oo7LXCmc1eE1AjyuSBmtC3+Wy4HcV8PxWh2kP6fOl8yTlNS7r0K9l1ao2lrrUza7V39Y3D/BbJgY8VeSlc5JKw==", - "dev": true, - "dependencies": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/webpack": { - "version": "5.26.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.26.0.tgz", - "integrity": "sha512-9kQATUOGQBkqzNKFmFON4KXZDsXnE7xk58tBxca8aCi+6/QhAbmWIvtGqBL66XIsBFpomFH0/0KyCaySo0ta2g==", - "dev": true, - "dependencies": { - "@types/eslint-scope": "^3.7.0", - "@types/estree": "^0.0.46", - "@webassemblyjs/ast": "1.11.0", - "@webassemblyjs/wasm-edit": "1.11.0", - "@webassemblyjs/wasm-parser": "1.11.0", - "acorn": "^8.0.4", - "browserslist": "^4.14.5", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.7.0", - "es-module-lexer": "^0.4.0", - "eslint-scope": "^5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.4", - "json-parse-better-errors": "^1.0.2", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^3.0.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.1.1", - "watchpack": "^2.0.0", - "webpack-sources": "^2.1.1" - }, - "bin": { - "webpack": "bin/webpack.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } - } - }, - "node_modules/webpack-cli": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.5.0.tgz", - "integrity": "sha512-wXg/ef6Ibstl2f50mnkcHblRPN/P9J4Nlod5Hg9HGFgSeF8rsqDGHJeVe4aR26q9l62TUJi6vmvC2Qz96YJw1Q==", - "dev": true, - "dependencies": { - "@discoveryjs/json-ext": "^0.5.0", - "@webpack-cli/configtest": "^1.0.1", - "@webpack-cli/info": "^1.2.2", - "@webpack-cli/serve": "^1.3.0", - "colorette": "^1.2.1", - "commander": "^7.0.0", - "enquirer": "^2.3.6", - "execa": "^5.0.0", - "fastest-levenshtein": "^1.0.12", - "import-local": "^3.0.2", - "interpret": "^2.2.0", - "rechoir": "^0.7.0", - "v8-compile-cache": "^2.2.0", - "webpack-merge": "^5.7.3" - }, - "bin": { - "webpack-cli": "bin/cli.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "peerDependencies": { - "webpack": "4.x.x || 5.x.x" - }, - "peerDependenciesMeta": { - "@webpack-cli/generators": { - "optional": true - }, - "@webpack-cli/init": { - "optional": true - }, - "@webpack-cli/migrate": { - "optional": true - }, - "webpack-bundle-analyzer": { - "optional": true - }, - "webpack-dev-server": { - "optional": true - } - } - }, - "node_modules/webpack-cli/node_modules/commander": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.0.0.tgz", - "integrity": "sha512-ovx/7NkTrnPuIV8sqk/GjUIIM1+iUQeqA3ye2VNpq9sVoiZsooObWlQy+OPWGI17GDaEoybuAGJm6U8yC077BA==", - "dev": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/webpack-cli/node_modules/webpack-merge": { - "version": "5.7.3", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.7.3.tgz", - "integrity": "sha512-6/JUQv0ELQ1igjGDzHkXbVDRxkfA57Zw7PfiupdLFJYrgFqY5ZP8xxbpp2lU3EPwYx89ht5Z/aDkD40hFCm5AA==", - "dev": true, - "dependencies": { - "clone-deep": "^4.0.1", - "wildcard": "^2.0.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/webpack-merge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.2.tgz", - "integrity": "sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==", - "dev": true, - "dependencies": { - "lodash": "^4.17.15" - } - }, - "node_modules/webpack-sources": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.2.0.tgz", - "integrity": "sha512-bQsA24JLwcnWGArOKUxYKhX3Mz/nK1Xf6hxullKERyktjNMC4x8koOeaDNTA2fEJ09BdWLbM/iTW0ithREUP0w==", - "dev": true, - "dependencies": { - "source-list-map": "^2.0.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/webpack/node_modules/acorn": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.1.0.tgz", - "integrity": "sha512-LWCF/Wn0nfHOmJ9rzQApGnxnvgfROzGilS8936rqN/lfcYkY9MYZzdMqN+2NJ4SlTc+m5HiSa+kNfDtI64dwUA==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/webpack/node_modules/enhanced-resolve": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.7.0.tgz", - "integrity": "sha512-6njwt/NsZFUKhM6j9U8hzVyD4E4r0x7NQzhTCbcWOJ0IQjNSAoalWmb0AE51Wn+fwan5qVESWi7t2ToBxs9vrw==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/webpack/node_modules/tapable": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.0.tgz", - "integrity": "sha512-FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/wildcard": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", - "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", - "dev": true - }, - "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/wrap-ansi/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "node_modules/ws": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.4.tgz", - "integrity": "sha512-Qm8k8ojNQIMx7S+Zp8u/uHOx7Qazv3Yv4q68MiWWWOJhiwG5W3x7iqmRtJo8xxrciZUY4vRxUTJCKuRnF28ZZw==", - "dev": true, - "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 - } - } - }, - "node_modules/y18n": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.5.tgz", - "integrity": "sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs-parser": { - "version": "20.2.7", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.7.tgz", - "integrity": "sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/z-schema": { - "version": "3.18.4", - "resolved": "https://registry.npmjs.org/z-schema/-/z-schema-3.18.4.tgz", - "integrity": "sha512-DUOKC/IhbkdLKKiV89gw9DUauTV8U/8yJl1sjf6MtDmzevLKOF2duNJ495S3MFVjqZarr+qNGCPbkg4mu4PpLw==", - "dev": true, - "dependencies": { - "lodash.get": "^4.0.0", - "lodash.isequal": "^4.0.0", - "validator": "^8.0.0" - }, - "bin": { - "z-schema": "bin/z-schema" - }, - "optionalDependencies": { - "commander": "^2.7.1" - } - } - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", - "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", - "dev": true, - "requires": { - "@babel/highlight": "^7.10.4" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", - "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", - "dev": true - }, - "@babel/highlight": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", - "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.12.11", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "dependencies": { - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - } - } - }, - "@discoveryjs/json-ext": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.2.tgz", - "integrity": "sha512-HyYEUDeIj5rRQU2Hk5HTB2uHsbRQpF70nvMhVzi+VJR0X+xNEhjPui4/kBf3VeH/wqD28PT4sVOm8qqLjBrSZg==", - "dev": true - }, - "@eslint/eslintrc": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.0.tgz", - "integrity": "sha512-2ZPCc+uNbjV5ERJr+aKSPRwZgKd2z11x0EgLvb1PURmUrn9QNRXFqje0Ldq454PfAVyaJYyrDvvIKSFP4NnBog==", - "dev": true, - "requires": { - "ajv": "^6.12.4", - "debug": "^4.1.1", - "espree": "^7.3.0", - "globals": "^12.1.0", - "ignore": "^4.0.6", - "import-fresh": "^3.2.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", - "strip-json-comments": "^3.1.1" - }, - "dependencies": { - "globals": { - "version": "12.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", - "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", - "dev": true, - "requires": { - "type-fest": "^0.8.1" - } - } - } - }, - "@microsoft/api-documenter": { - "version": "7.7.20", - "resolved": "https://registry.npmjs.org/@microsoft/api-documenter/-/api-documenter-7.7.20.tgz", - "integrity": "sha512-B2gOOoYJDOqAn9iPg4Z9ay03MYtjmY2ldF3u1povTkzl5eJWERMDuuK5BLOdGdDTMr6TUd/FrhERFEeJNeQ3rg==", - "dev": true, - "requires": { - "@microsoft/api-extractor-model": "7.7.11", - "@microsoft/tsdoc": "0.12.19", - "@rushstack/node-core-library": "3.19.7", - "@rushstack/ts-command-line": "4.3.14", - "colors": "~1.2.1", - "js-yaml": "~3.13.1", - "resolve": "1.8.1" - } - }, - "@microsoft/api-extractor": { - "version": "7.7.11", - "resolved": "https://registry.npmjs.org/@microsoft/api-extractor/-/api-extractor-7.7.11.tgz", - "integrity": "sha512-kd2kakdDoRgI54J5H11a76hyYZBMhtp4piwWAy4bYTwlQT0v/tp+G/UMMgjUL4vKf0kTNhitEUX/0LfQb1AHzQ==", - "dev": true, - "requires": { - "@microsoft/api-extractor-model": "7.7.10", - "@microsoft/tsdoc": "0.12.19", - "@rushstack/node-core-library": "3.19.6", - "@rushstack/ts-command-line": "4.3.13", - "colors": "~1.2.1", - "lodash": "~4.17.15", - "resolve": "1.8.1", - "source-map": "~0.6.1", - "typescript": "~3.7.2" - }, - "dependencies": { - "@microsoft/api-extractor-model": { - "version": "7.7.10", - "resolved": "https://registry.npmjs.org/@microsoft/api-extractor-model/-/api-extractor-model-7.7.10.tgz", - "integrity": "sha512-gMFDXwUgoQYz9TgatyNPALDdZN4xBC3Un3fGwlzME+vM13PoJ26pGuqI7kv/OlK9+q2sgrEdxWns8D3UnLf2TA==", - "dev": true, - "requires": { - "@microsoft/tsdoc": "0.12.19", - "@rushstack/node-core-library": "3.19.6" - } - }, - "@rushstack/node-core-library": { - "version": "3.19.6", - "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-3.19.6.tgz", - "integrity": "sha512-1+FoymIdr9W9k0D8fdZBBPwi5YcMwh/RyESuL5bY29rLICFxSLOPK+ImVZ1OcWj9GEMsvDx5pNpJ311mHQk+MA==", - "dev": true, - "requires": { - "@types/node": "10.17.13", - "colors": "~1.2.1", - "fs-extra": "~7.0.1", - "jju": "~1.4.0", - "semver": "~5.3.0", - "timsort": "~0.3.0", - "z-schema": "~3.18.3" - } - }, - "@rushstack/ts-command-line": { - "version": "4.3.13", - "resolved": "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-4.3.13.tgz", - "integrity": "sha512-BUBbjYu67NJGQkpHu8aYm7kDoMFizL1qx78+72XE3mX/vDdXYJzw/FWS7TPcMJmY4kNlYs979v2B0Q0qa2wRiw==", - "dev": true, - "requires": { - "@types/argparse": "1.0.33", - "argparse": "~1.0.9", - "colors": "~1.2.1" - } - }, - "typescript": { - "version": "3.7.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.7.5.tgz", - "integrity": "sha512-/P5lkRXkWHNAbcJIiHPfRoKqyd7bsyCma1hZNUGfn20qm64T6ZBlrzprymeu918H+mB/0rIg2gGK/BXkhhYgBw==", - "dev": true - } - } - }, - "@microsoft/api-extractor-model": { - "version": "7.7.11", - "resolved": "https://registry.npmjs.org/@microsoft/api-extractor-model/-/api-extractor-model-7.7.11.tgz", - "integrity": "sha512-Kf3RytYDq7sP4ASaaA9IcvaOPbVj1Xj34E2Wxd9DznI7sG4HzcpoOGmxaZHCzyYVh7wfAaAlvcXf3SV+djhNZw==", - "dev": true, - "requires": { - "@microsoft/tsdoc": "0.12.19", - "@rushstack/node-core-library": "3.19.7" - } - }, - "@microsoft/tsdoc": { - "version": "0.12.19", - "resolved": "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.12.19.tgz", - "integrity": "sha512-IpgPxHrNxZiMNUSXqR1l/gePKPkfAmIKoDRP9hp7OwjU29ZR8WCJsOJ8iBKgw0Qk+pFwR+8Y1cy8ImLY6e9m4A==", - "dev": true - }, - "@rushstack/node-core-library": { - "version": "3.19.7", - "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-3.19.7.tgz", - "integrity": "sha512-gKE/OXH5GAj8yJ1kEyRW68UekJernilZ3QTRgmQ0MUHBCQmtZ9Q6T5PQ1sVbcL4teH8BMdpZeFy1DKnHs8h3PA==", - "dev": true, - "requires": { - "@types/node": "10.17.13", - "colors": "~1.2.1", - "fs-extra": "~7.0.1", - "jju": "~1.4.0", - "semver": "~5.3.0", - "timsort": "~0.3.0", - "z-schema": "~3.18.3" - } - }, - "@rushstack/ts-command-line": { - "version": "4.3.14", - "resolved": "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-4.3.14.tgz", - "integrity": "sha512-YJZIyKvkm3f6ZdKSfMntHS9542Y2mmMWzaiPPoXxLFZntKxEIDE3WfUNlvOSo3yK4fNd09Tz3hfvTivQNHSiKQ==", - "dev": true, - "requires": { - "@types/argparse": "1.0.33", - "argparse": "~1.0.9", - "colors": "~1.2.1" - } - }, - "@types/argparse": { - "version": "1.0.33", - "resolved": "https://registry.npmjs.org/@types/argparse/-/argparse-1.0.33.tgz", - "integrity": "sha512-VQgHxyPMTj3hIlq9SY1mctqx+Jj8kpQfoLvDlVSDNOyuYs8JYfkuY3OW/4+dO657yPmNhHpePRx0/Tje5ImNVQ==", - "dev": true - }, - "@types/component-emitter": { - "version": "1.2.10", - "resolved": "https://registry.npmjs.org/@types/component-emitter/-/component-emitter-1.2.10.tgz", - "integrity": "sha512-bsjleuRKWmGqajMerkzox19aGbscQX5rmmvvXl3wlIp5gMG1HgkiwPxsN5p070fBDKTNSPgojVbuY1+HWMbFhg==", - "dev": true - }, - "@types/cookie": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.0.tgz", - "integrity": "sha512-y7mImlc/rNkvCRmg8gC3/lj87S7pTUIJ6QGjwHR9WQJcFs+ZMTOaoPrkdFA/YdbuqVEmEbb5RdhVxMkAcgOnpg==", - "dev": true - }, - "@types/cors": { - "version": "2.8.10", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.10.tgz", - "integrity": "sha512-C7srjHiVG3Ey1nR6d511dtDkCEjxuN9W1HWAEjGq8kpcwmNM6JJkpC0xvabM7BXTG2wDq8Eu33iH9aQKa7IvLQ==", - "dev": true - }, - "@types/eslint": { - "version": "7.2.7", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.2.7.tgz", - "integrity": "sha512-EHXbc1z2GoQRqHaAT7+grxlTJ3WE2YNeD6jlpPoRc83cCoThRY+NUWjCUZaYmk51OICkPXn2hhphcWcWXgNW0Q==", - "dev": true, - "requires": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "@types/eslint-scope": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.0.tgz", - "integrity": "sha512-O/ql2+rrCUe2W2rs7wMR+GqPRcgB6UiqN5RhrR5xruFlY7l9YLMn0ZkDzjoHLeiFkR8MCQZVudUuuvQ2BLC9Qw==", - "dev": true, - "requires": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, - "@types/eslint-visitor-keys": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", - "integrity": "sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==", - "dev": true - }, - "@types/estree": { - "version": "0.0.46", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.46.tgz", - "integrity": "sha512-laIjwTQaD+5DukBZaygQ79K1Z0jb1bPEMRrkXSLjtCcZm+abyp5YbrqpSLzD42FwWW6gK/aS4NYpJ804nG2brg==", - "dev": true - }, - "@types/jasmine": { - "version": "3.6.6", - "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-3.6.6.tgz", - "integrity": "sha512-kgl+oYOLCBt41iba8cetp+QPOqDAaTJnHtVPCE7JzYmda4juglRBLX35opVcANc7TLA/Lp0DEnajbUNnyxGC+Q==", - "dev": true - }, - "@types/json-schema": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.6.tgz", - "integrity": "sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw==", - "dev": true - }, - "@types/node": { - "version": "10.17.13", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.13.tgz", - "integrity": "sha512-pMCcqU2zT4TjqYFrWtYHKal7Sl30Ims6ulZ4UFXxI4xbtQqK/qqKwkDoBFCfooRqqmRu9vY3xaJRwxSh673aYg==", - "dev": true - }, - "@typescript-eslint/eslint-plugin": { - "version": "2.34.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.34.0.tgz", - "integrity": "sha512-4zY3Z88rEE99+CNvTbXSyovv2z9PNOVffTWD2W8QF5s2prBQtwN2zadqERcrHpcR7O/+KMI3fcTAmUUhK/iQcQ==", - "dev": true, - "requires": { - "@typescript-eslint/experimental-utils": "2.34.0", - "functional-red-black-tree": "^1.0.1", - "regexpp": "^3.0.0", - "tsutils": "^3.17.1" - } - }, - "@typescript-eslint/experimental-utils": { - "version": "2.34.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-2.34.0.tgz", - "integrity": "sha512-eS6FTkq+wuMJ+sgtuNTtcqavWXqsflWcfBnlYhg/nS4aZ1leewkXGbvBhaapn1q6qf4M71bsR1tez5JTRMuqwA==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.3", - "@typescript-eslint/typescript-estree": "2.34.0", - "eslint-scope": "^5.0.0", - "eslint-utils": "^2.0.0" - } - }, - "@typescript-eslint/parser": { - "version": "2.34.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-2.34.0.tgz", - "integrity": "sha512-03ilO0ucSD0EPTw2X4PntSIRFtDPWjrVq7C3/Z3VQHRC7+13YB55rcJI3Jt+YgeHbjUdJPcPa7b23rXCBokuyA==", - "dev": true, - "requires": { - "@types/eslint-visitor-keys": "^1.0.0", - "@typescript-eslint/experimental-utils": "2.34.0", - "@typescript-eslint/typescript-estree": "2.34.0", - "eslint-visitor-keys": "^1.1.0" - } - }, - "@typescript-eslint/typescript-estree": { - "version": "2.34.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-2.34.0.tgz", - "integrity": "sha512-OMAr+nJWKdlVM9LOqCqh3pQQPwxHAN7Du8DR6dmwCrAmxtiXQnhHJ6tBNtf+cggqfo51SG/FCwnKhXCIM7hnVg==", - "dev": true, - "requires": { - "debug": "^4.1.1", - "eslint-visitor-keys": "^1.1.0", - "glob": "^7.1.6", - "is-glob": "^4.0.1", - "lodash": "^4.17.15", - "semver": "^7.3.2", - "tsutils": "^3.17.1" - }, - "dependencies": { - "semver": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", - "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } - } - }, - "@webassemblyjs/ast": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.0.tgz", - "integrity": "sha512-kX2W49LWsbthrmIRMbQZuQDhGtjyqXfEmmHyEi4XWnSZtPmxY0+3anPIzsnRb45VH/J55zlOfWvZuY47aJZTJg==", - "dev": true, - "requires": { - "@webassemblyjs/helper-numbers": "1.11.0", - "@webassemblyjs/helper-wasm-bytecode": "1.11.0" - } - }, - "@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.0.tgz", - "integrity": "sha512-Q/aVYs/VnPDVYvsCBL/gSgwmfjeCb4LW8+TMrO3cSzJImgv8lxxEPM2JA5jMrivE7LSz3V+PFqtMbls3m1exDA==", - "dev": true - }, - "@webassemblyjs/helper-api-error": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.0.tgz", - "integrity": "sha512-baT/va95eXiXb2QflSx95QGT5ClzWpGaa8L7JnJbgzoYeaA27FCvuBXU758l+KXWRndEmUXjP0Q5fibhavIn8w==", - "dev": true - }, - "@webassemblyjs/helper-buffer": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.0.tgz", - "integrity": "sha512-u9HPBEl4DS+vA8qLQdEQ6N/eJQ7gT7aNvMIo8AAWvAl/xMrcOSiI2M0MAnMCy3jIFke7bEee/JwdX1nUpCtdyA==", - "dev": true - }, - "@webassemblyjs/helper-numbers": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.0.tgz", - "integrity": "sha512-DhRQKelIj01s5IgdsOJMKLppI+4zpmcMQ3XboFPLwCpSNH6Hqo1ritgHgD0nqHeSYqofA6aBN/NmXuGjM1jEfQ==", - "dev": true, - "requires": { - "@webassemblyjs/floating-point-hex-parser": "1.11.0", - "@webassemblyjs/helper-api-error": "1.11.0", - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.0.tgz", - "integrity": "sha512-MbmhvxXExm542tWREgSFnOVo07fDpsBJg3sIl6fSp9xuu75eGz5lz31q7wTLffwL3Za7XNRCMZy210+tnsUSEA==", - "dev": true - }, - "@webassemblyjs/helper-wasm-section": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.0.tgz", - "integrity": "sha512-3Eb88hcbfY/FCukrg6i3EH8H2UsD7x8Vy47iVJrP967A9JGqgBVL9aH71SETPx1JrGsOUVLo0c7vMCN22ytJew==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.0", - "@webassemblyjs/helper-buffer": "1.11.0", - "@webassemblyjs/helper-wasm-bytecode": "1.11.0", - "@webassemblyjs/wasm-gen": "1.11.0" - } - }, - "@webassemblyjs/ieee754": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.0.tgz", - "integrity": "sha512-KXzOqpcYQwAfeQ6WbF6HXo+0udBNmw0iXDmEK5sFlmQdmND+tr773Ti8/5T/M6Tl/413ArSJErATd8In3B+WBA==", - "dev": true, - "requires": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "@webassemblyjs/leb128": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.0.tgz", - "integrity": "sha512-aqbsHa1mSQAbeeNcl38un6qVY++hh8OpCOzxhixSYgbRfNWcxJNJQwe2rezK9XEcssJbbWIkblaJRwGMS9zp+g==", - "dev": true, - "requires": { - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/utf8": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.0.tgz", - "integrity": "sha512-A/lclGxH6SpSLSyFowMzO/+aDEPU4hvEiooCMXQPcQFPPJaYcPQNKGOCLUySJsYJ4trbpr+Fs08n4jelkVTGVw==", - "dev": true - }, - "@webassemblyjs/wasm-edit": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.0.tgz", - "integrity": "sha512-JHQ0damXy0G6J9ucyKVXO2j08JVJ2ntkdJlq1UTiUrIgfGMmA7Ik5VdC/L8hBK46kVJgujkBIoMtT8yVr+yVOQ==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.0", - "@webassemblyjs/helper-buffer": "1.11.0", - "@webassemblyjs/helper-wasm-bytecode": "1.11.0", - "@webassemblyjs/helper-wasm-section": "1.11.0", - "@webassemblyjs/wasm-gen": "1.11.0", - "@webassemblyjs/wasm-opt": "1.11.0", - "@webassemblyjs/wasm-parser": "1.11.0", - "@webassemblyjs/wast-printer": "1.11.0" - } - }, - "@webassemblyjs/wasm-gen": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.0.tgz", - "integrity": "sha512-BEUv1aj0WptCZ9kIS30th5ILASUnAPEvE3tVMTrItnZRT9tXCLW2LEXT8ezLw59rqPP9klh9LPmpU+WmRQmCPQ==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.0", - "@webassemblyjs/helper-wasm-bytecode": "1.11.0", - "@webassemblyjs/ieee754": "1.11.0", - "@webassemblyjs/leb128": "1.11.0", - "@webassemblyjs/utf8": "1.11.0" - } - }, - "@webassemblyjs/wasm-opt": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.0.tgz", - "integrity": "sha512-tHUSP5F4ywyh3hZ0+fDQuWxKx3mJiPeFufg+9gwTpYp324mPCQgnuVKwzLTZVqj0duRDovnPaZqDwoyhIO8kYg==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.0", - "@webassemblyjs/helper-buffer": "1.11.0", - "@webassemblyjs/wasm-gen": "1.11.0", - "@webassemblyjs/wasm-parser": "1.11.0" - } - }, - "@webassemblyjs/wasm-parser": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.0.tgz", - "integrity": "sha512-6L285Sgu9gphrcpDXINvm0M9BskznnzJTE7gYkjDbxET28shDqp27wpruyx3C2S/dvEwiigBwLA1cz7lNUi0kw==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.0", - "@webassemblyjs/helper-api-error": "1.11.0", - "@webassemblyjs/helper-wasm-bytecode": "1.11.0", - "@webassemblyjs/ieee754": "1.11.0", - "@webassemblyjs/leb128": "1.11.0", - "@webassemblyjs/utf8": "1.11.0" - } - }, - "@webassemblyjs/wast-printer": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.0.tgz", - "integrity": "sha512-Fg5OX46pRdTgB7rKIUojkh9vXaVN6sGYCnEiJN1GYkb0RPwShZXp6KTDqmoMdQPKhcroOXh3fEzmkWmCYaKYhQ==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.0", - "@xtuc/long": "4.2.2" - } - }, - "@webpack-cli/configtest": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.0.1.tgz", - "integrity": "sha512-B+4uBUYhpzDXmwuo3V9yBH6cISwxEI4J+NO5ggDaGEEHb0osY/R7MzeKc0bHURXQuZjMM4qD+bSJCKIuI3eNBQ==", - "dev": true, - "requires": {} - }, - "@webpack-cli/info": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.2.2.tgz", - "integrity": "sha512-5U9kUJHnwU+FhKH4PWGZuBC1hTEPYyxGSL5jjoBI96Gx8qcYJGOikpiIpFoTq8mmgX3im2zAo2wanv/alD74KQ==", - "dev": true, - "requires": { - "envinfo": "^7.7.3" - } - }, - "@webpack-cli/serve": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.3.0.tgz", - "integrity": "sha512-k2p2VrONcYVX1wRRrf0f3X2VGltLWcv+JzXRBDmvCxGlCeESx4OXw91TsWeKOkp784uNoVQo313vxJFHXPPwfw==", - "dev": true, - "requires": {} - }, - "@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true - }, - "@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true - }, - "accepts": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", - "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", - "dev": true, - "requires": { - "mime-types": "~2.1.24", - "negotiator": "0.6.2" - } - }, - "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true - }, - "acorn-jsx": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", - "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", - "dev": true, - "requires": {} - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} - }, - "ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true - }, - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "anymatch": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", - "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "base64-arraybuffer": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz", - "integrity": "sha1-mBjHngWbE1X5fgQooBfIOOkLqBI=", - "dev": true - }, - "base64id": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", - "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", - "dev": true - }, - "big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "dev": true - }, - "binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true - }, - "body-parser": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", - "dev": true, - "requires": { - "bytes": "3.1.0", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.7.0", - "raw-body": "2.4.0", - "type-is": "~1.6.17" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "browserslist": { - "version": "4.16.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.3.tgz", - "integrity": "sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30001181", - "colorette": "^1.2.1", - "electron-to-chromium": "^1.3.649", - "escalade": "^3.1.1", - "node-releases": "^1.1.70" - } - }, - "buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", - "dev": true - }, - "bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", - "dev": true - }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - }, - "caniuse-lite": { - "version": "1.0.30001202", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001202.tgz", - "integrity": "sha512-ZcijQNqrcF8JNLjzvEiXqX4JUYxoZa7Pvcsd9UD8Kz4TvhTonOSNRsK+qtvpVL4l6+T1Rh4LFtLfnNWg6BGWCQ==", - "dev": true - }, - "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "chokidar": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", - "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", - "dev": true, - "requires": { - "anymatch": "~3.1.1", - "braces": "~3.0.2", - "fsevents": "~2.3.1", - "glob-parent": "~5.1.0", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.5.0" - } - }, - "chrome-trace-event": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", - "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } - }, - "circular-dependency-plugin": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/circular-dependency-plugin/-/circular-dependency-plugin-5.2.2.tgz", - "integrity": "sha512-g38K9Cm5WRwlaH6g03B9OEz/0qRizI+2I7n+Gz+L5DxXJAPAiWQvwlYNm1V1jkdpUv95bOe/ASm2vfi/G560jQ==", - "dev": true, - "requires": {} - }, - "cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "colorette": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz", - "integrity": "sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==", - "dev": true - }, - "colors": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.2.5.tgz", - "integrity": "sha512-erNRLao/Y3Fv54qUa0LBB+//Uf3YwMUmdJinN20yMXm9zdKKqH9wt7R9IIVZ+K7ShzfpLV/Zg8+VyrBJYB4lpg==", - "dev": true - }, - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "connect": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", - "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", - "dev": true, - "requires": { - "debug": "2.6.9", - "finalhandler": "1.1.2", - "parseurl": "~1.3.3", - "utils-merge": "1.0.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, - "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", - "dev": true - }, - "cookie": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", - "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==", - "dev": true - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true - }, - "cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", - "dev": true, - "requires": { - "object-assign": "^4", - "vary": "^1" - } - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "custom-event": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", - "integrity": "sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU=", - "dev": true - }, - "date-format": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/date-format/-/date-format-3.0.0.tgz", - "integrity": "sha512-eyTcpKOcamdhWJXj56DpQMo1ylSQpcGtGKXcU0Tb97+K56/CF5amAqqqNj0+KvA0iw2ynxtHWFsPDSClCxe48w==", - "dev": true - }, - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", - "dev": true - }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", - "dev": true - }, - "di": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", - "integrity": "sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw=", - "dev": true - }, - "doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "dom-serialize": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", - "integrity": "sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs=", - "dev": true, - "requires": { - "custom-event": "~1.0.0", - "ent": "~2.2.0", - "extend": "^3.0.0", - "void-elements": "^2.0.0" - } - }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", - "dev": true - }, - "electron-to-chromium": { - "version": "1.3.689", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.689.tgz", - "integrity": "sha512-WCn+ZaU3V8WttlLNSOGOAlR2XpxibGre7slwGrYBB6oTjYPgP29LNDGG6wLvLTMseLdE+G1vno7PfY7JyDV48g==", - "dev": true - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "dev": true - }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", - "dev": true - }, - "engine.io": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-4.1.1.tgz", - "integrity": "sha512-t2E9wLlssQjGw0nluF6aYyfX8LwYU8Jj0xct+pAhfWfv/YrBn6TSNtEYsgxHIfaMqfrLx07czcMg9bMN6di+3w==", - "dev": true, - "requires": { - "accepts": "~1.3.4", - "base64id": "2.0.0", - "cookie": "~0.4.1", - "cors": "~2.8.5", - "debug": "~4.3.1", - "engine.io-parser": "~4.0.0", - "ws": "~7.4.2" - } - }, - "engine.io-parser": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-4.0.2.tgz", - "integrity": "sha512-sHfEQv6nmtJrq6TKuIz5kyEKH/qSdK56H/A+7DnAuUPWosnIZAS2NHNcPLmyjtY3cGS/MqJdZbUjW97JU72iYg==", - "dev": true, - "requires": { - "base64-arraybuffer": "0.1.4" - } - }, - "enhanced-resolve": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", - "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.5.0", - "tapable": "^1.0.0" - } - }, - "enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "dev": true, - "requires": { - "ansi-colors": "^4.1.1" - } - }, - "ent": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", - "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=", - "dev": true - }, - "envinfo": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.7.4.tgz", - "integrity": "sha512-TQXTYFVVwwluWSFis6K2XKxgrD22jEv0FTuLCQI+OjH7rn93+iY0fSSFM5lrSxFY+H1+B0/cvvlamr3UsBivdQ==", - "dev": true - }, - "errno": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", - "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", - "dev": true, - "requires": { - "prr": "~1.0.1" - } - }, - "es-module-lexer": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.4.1.tgz", - "integrity": "sha512-ooYciCUtfw6/d2w56UVeqHPcoCFAiJdz5XOkYpv/Txl1HMUozpXjz/2RIQgqwKdXNDPSF1W7mJCFse3G+HDyAA==", - "dev": true - }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "eslint": { - "version": "7.22.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.22.0.tgz", - "integrity": "sha512-3VawOtjSJUQiiqac8MQc+w457iGLfuNGLFn8JmF051tTKbh5/x/0vlcEj8OgDCaw7Ysa2Jn8paGshV7x2abKXg==", - "dev": true, - "requires": { - "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.0", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "enquirer": "^2.3.5", - "eslint-scope": "^5.1.1", - "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^2.0.0", - "espree": "^7.3.1", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.0.0", - "globals": "^13.6.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash": "^4.17.21", - "minimatch": "^3.0.4", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.1.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.0", - "strip-json-comments": "^3.1.0", - "table": "^6.0.4", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz", - "integrity": "sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==", - "dev": true - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "semver": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", - "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } - } - }, - "eslint-config-prettier": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.1.0.tgz", - "integrity": "sha512-oKMhGv3ihGbCIimCAjqkdzx2Q+jthoqnXSP+d86M9tptwugycmTFdVR4IpLgq2c4SHifbwO90z2fQ8/Aio73yw==", - "dev": true, - "requires": {} - }, - "eslint-plugin-prettier": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.3.1.tgz", - "integrity": "sha512-Rq3jkcFY8RYeQLgk2cCwuc0P7SEFwDravPhsJZOQ5N4YI4DSg50NyqJ/9gdZHzQlHf8MvafSesbNJCcP/FF6pQ==", - "dev": true, - "requires": { - "prettier-linter-helpers": "^1.0.0" - } - }, - "eslint-plugin-tree-shaking": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-tree-shaking/-/eslint-plugin-tree-shaking-1.8.0.tgz", - "integrity": "sha512-5jrqlyka6MCaV8efwAIIo/3cvmhurA4gUaFoTWoWw6wLhmHUS0/42NDKubKOMlQJXm5Z7/i4hbzyIcDXbHAnVw==", - "dev": true - }, - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - } - }, - "eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^1.1.0" - } - }, - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true - }, - "espree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", - "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", - "dev": true, - "requires": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - }, - "esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", - "dev": true, - "requires": { - "estraverse": "^5.1.0" - }, - "dependencies": { - "estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "dev": true - } - } - }, - "esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "requires": { - "estraverse": "^5.2.0" - }, - "dependencies": { - "estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "dev": true - } - } - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true - }, - "eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "dev": true - }, - "events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true - }, - "execa": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.0.0.tgz", - "integrity": "sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - } - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "fast-diff": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", - "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", - "dev": true - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true - }, - "fastest-levenshtein": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", - "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==", - "dev": true - }, - "file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "requires": { - "flat-cache": "^3.0.4" - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", - "dev": true, - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, - "flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "requires": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - } - }, - "flatted": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.1.tgz", - "integrity": "sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==", - "dev": true - }, - "follow-redirects": { - "version": "1.13.3", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.3.tgz", - "integrity": "sha512-DUgl6+HDzB0iEptNQEXLx/KhTmDb8tZUHSeLqpnjpknR70H0nC2t9N73BK6fN4hOvJ84pKlIQVQ4k5FFlBedKA==", - "dev": true - }, - "fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "optional": true - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", - "dev": true - }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true - }, - "get-stream": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.0.tgz", - "integrity": "sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg==", - "dev": true - }, - "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", - "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - }, - "glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true - }, - "globals": { - "version": "13.6.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.6.0.tgz", - "integrity": "sha512-YFKCX0SiPg7l5oKYCJ2zZGxcXprVXHcSnVuvzrT3oSENQonVLqM5pf9fN5dLGZGyCjhw8TN8Btwe/jKnZ0pjvQ==", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - }, - "dependencies": { - "type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true - } - } - }, - "graceful-fs": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", - "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", - "dev": true - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "http-errors": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", - "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", - "dev": true, - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" - }, - "dependencies": { - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - } - } - }, - "http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", - "dev": true, - "requires": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - } - }, - "human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true - }, - "import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "import-local": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz", - "integrity": "sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==", - "dev": true, - "requires": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "dependencies": { - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "requires": { - "find-up": "^4.0.0" - } - } - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "interpret": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", - "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", - "dev": true - }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-core-module": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", - "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "is-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", - "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", - "dev": true - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "isbinaryfile": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.6.tgz", - "integrity": "sha512-ORrEy+SNVqUhrCaal4hA4fBzhggQQ+BaLntyPOdoEiwlKZW9BZiJXjg3RMiruE4tPEI3pyVPpySHQF/dKWperg==", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "jasmine-core": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-3.6.0.tgz", - "integrity": "sha512-8uQYa7zJN8hq9z+g8z1bqCfdC8eoDAeVnM5sfqs7KHv9/ifoJ500m018fpFc7RDaO6SWCLCXwo/wPSNcdYTgcw==", - "dev": true - }, - "jest-worker": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", - "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", - "dev": true, - "requires": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^7.0.0" - }, - "dependencies": { - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "jju": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/jju/-/jju-1.4.0.tgz", - "integrity": "sha1-o6vicYryQaKykE+EpiWXDzia4yo=", - "dev": true - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", - "dev": true - }, - "json5": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", - "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } - }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "karma": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/karma/-/karma-6.2.0.tgz", - "integrity": "sha512-pCB8eNxGgdIdZeC885rbhZ/VyuOPNHUIDNL9EaaMf1NVzpvTjMO8a7zRTn51ZJhOOOxCSpalUdT1A8x76LyVqg==", - "dev": true, - "requires": { - "body-parser": "^1.19.0", - "braces": "^3.0.2", - "chokidar": "^3.4.2", - "colors": "^1.4.0", - "connect": "^3.7.0", - "di": "^0.0.1", - "dom-serialize": "^2.2.1", - "glob": "^7.1.6", - "graceful-fs": "^4.2.4", - "http-proxy": "^1.18.1", - "isbinaryfile": "^4.0.6", - "lodash": "^4.17.19", - "log4js": "^6.2.1", - "mime": "^2.4.5", - "minimatch": "^3.0.4", - "qjobs": "^1.2.0", - "range-parser": "^1.2.1", - "rimraf": "^3.0.2", - "socket.io": "^3.1.0", - "source-map": "^0.6.1", - "tmp": "0.2.1", - "ua-parser-js": "^0.7.23", - "yargs": "^16.1.1" - }, - "dependencies": { - "colors": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", - "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", - "dev": true - } - } - }, - "karma-chrome-launcher": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.1.0.tgz", - "integrity": "sha512-3dPs/n7vgz1rxxtynpzZTvb9y/GIaW8xjAwcIGttLbycqoFtI7yo1NGnQi6oFTherRE+GIhCAHZC4vEqWGhNvg==", - "dev": true, - "requires": { - "which": "^1.2.1" - }, - "dependencies": { - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "karma-cli": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/karma-cli/-/karma-cli-2.0.0.tgz", - "integrity": "sha512-1Kb28UILg1ZsfqQmeELbPzuEb5C6GZJfVIk0qOr8LNYQuYWmAaqP16WpbpKEjhejDrDYyYOwwJXSZO6u7q5Pvw==", - "dev": true, - "requires": { - "resolve": "^1.3.3" - } - }, - "karma-jasmine": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-4.0.1.tgz", - "integrity": "sha512-h8XDAhTiZjJKzfkoO1laMH+zfNlra+dEQHUAjpn5JV1zCPtOIVWGQjLBrqhnzQa/hrU2XrZwSyBa6XjEBzfXzw==", - "dev": true, - "requires": { - "jasmine-core": "^3.6.0" - } - }, - "karma-jasmine-html-reporter": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-1.5.4.tgz", - "integrity": "sha512-PtilRLno5O6wH3lDihRnz0Ba8oSn0YUJqKjjux1peoYGwo0AQqrWRbdWk/RLzcGlb+onTyXAnHl6M+Hu3UxG/Q==", - "dev": true, - "requires": {} - }, - "karma-mocha-reporter": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/karma-mocha-reporter/-/karma-mocha-reporter-2.2.5.tgz", - "integrity": "sha1-FRIAlejtgZGG5HoLAS8810GJVWA=", - "dev": true, - "requires": { - "chalk": "^2.1.0", - "log-symbols": "^2.1.0", - "strip-ansi": "^4.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "karma-sourcemap-loader": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/karma-sourcemap-loader/-/karma-sourcemap-loader-0.3.8.tgz", - "integrity": "sha512-zorxyAakYZuBcHRJE+vbrK2o2JXLFWK8VVjiT/6P+ltLBUGUvqTEkUiQ119MGdOrK7mrmxXHZF1/pfT6GgIZ6g==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2" - } - }, - "karma-webpack": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/karma-webpack/-/karma-webpack-5.0.0.tgz", - "integrity": "sha512-+54i/cd3/piZuP3dr54+NcFeKOPnys5QeM1IY+0SPASwrtHsliXUiCL50iW+K9WWA7RvamC4macvvQ86l3KtaA==", - "dev": true, - "requires": { - "glob": "^7.1.3", - "minimatch": "^3.0.4", - "webpack-merge": "^4.1.5" - } - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - }, - "levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - } - }, - "loader-runner": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", - "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==", - "dev": true - }, - "loader-utils": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", - "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - }, - "lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", - "dev": true - }, - "lodash.get": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", - "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=", - "dev": true - }, - "lodash.isequal": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", - "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=", - "dev": true - }, - "log-symbols": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", - "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", - "dev": true, - "requires": { - "chalk": "^2.0.1" - }, - "dependencies": { - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - } - } - }, - "log4js": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.3.0.tgz", - "integrity": "sha512-Mc8jNuSFImQUIateBFwdOQcmC6Q5maU0VVvdC2R6XMb66/VnT+7WS4D/0EeNMZu1YODmJe5NIn2XftCzEocUgw==", - "dev": true, - "requires": { - "date-format": "^3.0.0", - "debug": "^4.1.1", - "flatted": "^2.0.1", - "rfdc": "^1.1.4", - "streamroller": "^2.2.4" - }, - "dependencies": { - "flatted": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", - "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", - "dev": true - } - } - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", - "dev": true - }, - "memory-fs": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", - "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", - "dev": true, - "requires": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - } - }, - "merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "micromatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", - "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", - "dev": true, - "requires": { - "braces": "^3.0.1", - "picomatch": "^2.0.5" - } - }, - "mime": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", - "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==", - "dev": true - }, - "mime-db": { - "version": "1.45.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.45.0.tgz", - "integrity": "sha512-CkqLUxUk15hofLoLyljJSrukZi8mAtgd+yE5uO4tqRZsdsAJKv0O+rFMhVDRJgozy+yG6md5KwuXhD4ocIoP+w==", - "dev": true - }, - "mime-types": { - "version": "2.1.28", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.28.tgz", - "integrity": "sha512-0TO2yJ5YHYr7M2zzT7gDU1tbwHxEUWBCLt0lscSNpcdAfFyJOVEpRYNS7EXVcTLNj/25QO8gulHC5JtTzSE2UQ==", - "dev": true, - "requires": { - "mime-db": "1.45.0" - } - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, - "mock-socket": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/mock-socket/-/mock-socket-9.0.3.tgz", - "integrity": "sha512-SxIiD2yE/By79p3cNAAXyLQWTvEFNEzcAO7PH+DzRqKSFaplAPFjiQLmw8ofmpCsZf+Rhfn2/xCJagpdGmYdTw==", - "dev": true, - "requires": { - "url-parse": "^1.4.4" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true - }, - "negotiator": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", - "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", - "dev": true - }, - "neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true - }, - "node-releases": { - "version": "1.1.71", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz", - "integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==", - "dev": true - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - }, - "npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "requires": { - "path-key": "^3.0.0" - } - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true - }, - "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "dev": true, - "requires": { - "ee-first": "1.1.1" - } - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "requires": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - } - }, - "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "requires": { - "yocto-queue": "^0.1.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "requires": { - "callsites": "^3.0.0" - } - }, - "parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "dev": true - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", - "dev": true - }, - "pegjs": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/pegjs/-/pegjs-0.10.0.tgz", - "integrity": "sha1-z4uvrm7d/0tafvsYUmnqr0YQ3b0=", - "dev": true - }, - "picomatch": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", - "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", - "dev": true - }, - "prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true - }, - "prettier": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.2.1.tgz", - "integrity": "sha512-PqyhM2yCjg/oKkFPtTGUojv7gnZAoG80ttl45O6x2Ug/rMJw4wcc9k6aaf2hibP7BGVCCM33gZoGjyvt9mm16Q==", - "dev": true - }, - "prettier-linter-helpers": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", - "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", - "dev": true, - "requires": { - "fast-diff": "^1.1.2" - } - }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true - }, - "prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", - "dev": true - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true - }, - "qjobs": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", - "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", - "dev": true - }, - "qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", - "dev": true - }, - "querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "dev": true - }, - "randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "dev": true - }, - "raw-body": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", - "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", - "dev": true, - "requires": { - "bytes": "3.1.0", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - } - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "readdirp": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", - "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", - "dev": true, - "requires": { - "picomatch": "^2.2.1" - } - }, - "rechoir": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.0.tgz", - "integrity": "sha512-ADsDEH2bvbjltXEP+hTIAmeFekTFK0V2BTxMkok6qILyAJEXV0AFfoWcAq4yfll5VdIMd/RVXq0lR+wQi5ZU3Q==", - "dev": true, - "requires": { - "resolve": "^1.9.0" - }, - "dependencies": { - "resolve": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", - "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", - "dev": true, - "requires": { - "is-core-module": "^2.1.0", - "path-parse": "^1.0.6" - } - } - } - }, - "regexpp": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", - "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", - "dev": true - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true - }, - "require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true - }, - "requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", - "dev": true - }, - "resolve": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz", - "integrity": "sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==", - "dev": true, - "requires": { - "path-parse": "^1.0.5" - } - }, - "resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "requires": { - "resolve-from": "^5.0.0" - }, - "dependencies": { - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true - } - } - }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true - }, - "rfdc": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.2.0.tgz", - "integrity": "sha512-ijLyszTMmUrXvjSooucVQwimGUk84eRcmCuLV8Xghe3UO85mjUtRAHRyoMM6XtyqbECaXuBWx18La3523sXINA==", - "dev": true - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "schema-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", - "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.6", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - }, - "semver": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", - "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", - "dev": true - }, - "serialize-javascript": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", - "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", - "dev": true, - "requires": { - "randombytes": "^2.1.0" - } - }, - "setprototypeof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", - "dev": true - }, - "shallow-clone": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", - "dev": true, - "requires": { - "kind-of": "^6.0.2" - } - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "signal-exit": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", - "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", - "dev": true - }, - "slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - } - } - }, - "socket.io": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-3.1.2.tgz", - "integrity": "sha512-JubKZnTQ4Z8G4IZWtaAZSiRP3I/inpy8c/Bsx2jrwGrTbKeVU5xd6qkKMHpChYeM3dWZSO0QACiGK+obhBNwYw==", - "dev": true, - "requires": { - "@types/cookie": "^0.4.0", - "@types/cors": "^2.8.8", - "@types/node": ">=10.0.0", - "accepts": "~1.3.4", - "base64id": "~2.0.0", - "debug": "~4.3.1", - "engine.io": "~4.1.0", - "socket.io-adapter": "~2.1.0", - "socket.io-parser": "~4.0.3" - } - }, - "socket.io-adapter": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.1.0.tgz", - "integrity": "sha512-+vDov/aTsLjViYTwS9fPy5pEtTkrbEKsw2M+oVSoFGw6OD1IpvlV1VPhUzNbofCQ8oyMbdYJqDtGdmHQK6TdPg==", - "dev": true - }, - "socket.io-parser": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.0.4.tgz", - "integrity": "sha512-t+b0SS+IxG7Rxzda2EVvyBZbvFPBCjJoyHuE0P//7OAsN23GItzDRdWa6ALxZI/8R5ygK7jAR6t028/z+7295g==", - "dev": true, - "requires": { - "@types/component-emitter": "^1.2.10", - "component-emitter": "~1.3.0", - "debug": "~4.3.1" - } - }, - "source-list-map": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", - "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "source-map-support": { - "version": "0.5.19", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", - "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - }, - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", - "dev": true - }, - "streamroller": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-2.2.4.tgz", - "integrity": "sha512-OG79qm3AujAM9ImoqgWEY1xG4HX+Lw+yY6qZj9R1K2mhF5bEmQ849wvrb+4vt4jLMLzwXttJlQbOdPOQVRv7DQ==", - "dev": true, - "requires": { - "date-format": "^2.1.0", - "debug": "^4.1.1", - "fs-extra": "^8.1.0" - }, - "dependencies": { - "date-format": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/date-format/-/date-format-2.1.0.tgz", - "integrity": "sha512-bYQuGLeFxhkxNOF3rcMtiZxvCBAquGzZm6oWA1oZ0g2THUzivaRhv8uOhdr19LmoobSOLoIAxeUK2RdbM8IFTA==", - "dev": true - }, - "fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - } - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - } - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.0" - } - }, - "strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true - }, - "strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "table": { - "version": "6.0.7", - "resolved": "https://registry.npmjs.org/table/-/table-6.0.7.tgz", - "integrity": "sha512-rxZevLGTUzWna/qBLObOe16kB2RTnnbhciwgPbMMlazz1yZGVEgnZK762xyVdVznhqxrfCeBMmMkgOOaPwjH7g==", - "dev": true, - "requires": { - "ajv": "^7.0.2", - "lodash": "^4.17.20", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.0" - }, - "dependencies": { - "ajv": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-7.2.1.tgz", - "integrity": "sha512-+nu0HDv7kNSOua9apAVc979qd932rrZeb3WOvoiD31A/p1mIE5/9bN2027pE2rOPYEdS3UHzsvof4hY+lM9/WQ==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - } - } - }, - "tapable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", - "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", - "dev": true - }, - "terser": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.6.0.tgz", - "integrity": "sha512-vyqLMoqadC1uR0vywqOZzriDYzgEkNJFK4q9GeyOBHIbiECHiWLKcWfbQWAUaPfxkjDhapSlZB9f7fkMrvkVjA==", - "dev": true, - "requires": { - "commander": "^2.20.0", - "source-map": "~0.7.2", - "source-map-support": "~0.5.19" - }, - "dependencies": { - "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true - } - } - }, - "terser-webpack-plugin": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.1.1.tgz", - "integrity": "sha512-5XNNXZiR8YO6X6KhSGXfY0QrGrCRlSwAEjIIrlRQR4W8nP69TaJUlh3bkuac6zzgspiGPfKEHcY295MMVExl5Q==", - "dev": true, - "requires": { - "jest-worker": "^26.6.2", - "p-limit": "^3.1.0", - "schema-utils": "^3.0.0", - "serialize-javascript": "^5.0.1", - "source-map": "^0.6.1", - "terser": "^5.5.1" - } - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, - "timsort": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", - "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", - "dev": true - }, - "tmp": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", - "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", - "dev": true, - "requires": { - "rimraf": "^3.0.0" - } - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - }, - "toidentifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", - "dev": true - }, - "ts-loader": { - "version": "8.0.18", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-8.0.18.tgz", - "integrity": "sha512-hRZzkydPX30XkLaQwJTDcWDoxZHK6IrEMDQpNd7tgcakFruFkeUp/aY+9hBb7BUGb+ZWKI0jiOGMo0MckwzdDQ==", - "dev": true, - "requires": { - "chalk": "^4.1.0", - "enhanced-resolve": "^4.0.0", - "loader-utils": "^2.0.0", - "micromatch": "^4.0.0", - "semver": "^7.3.4" - }, - "dependencies": { - "semver": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", - "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } - } - }, - "ts-pegjs": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/ts-pegjs/-/ts-pegjs-0.3.1.tgz", - "integrity": "sha512-4FqLW/HdZ4KvKHUpnaf7yeZM2L/1Y9cHlQ0Z59bVNABPbMEFQnKAYs/3p0zMvvCWkY3fnjMyr/F7wKzZ//vHIw==", - "dev": true, - "requires": { - "pegjs": "^0.10.0" - } - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "tsutils": { - "version": "3.17.1", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.17.1.tgz", - "integrity": "sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g==", - "dev": true, - "requires": { - "tslib": "^1.8.1" - } - }, - "type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1" - } - }, - "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true - }, - "type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dev": true, - "requires": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - } - }, - "typescript": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.2.3.tgz", - "integrity": "sha512-qOcYwxaByStAWrBf4x0fibwZvMRG+r4cQoTjbPtUlrWjBHbmCAww1i448U0GJ+3cNNEtebDteo/cHOR3xJ4wEw==", - "dev": true - }, - "ua-parser-js": { - "version": "0.7.24", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.24.tgz", - "integrity": "sha512-yo+miGzQx5gakzVK3QFfN0/L9uVhosXBBO7qmnk7c2iw1IhL212wfA3zbnI54B0obGwC/5NWub/iT9sReMx+Fw==", - "dev": true - }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true - }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", - "dev": true - }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "url-parse": { - "version": "1.4.7", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz", - "integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==", - "dev": true, - "requires": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true - }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", - "dev": true - }, - "v8-compile-cache": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz", - "integrity": "sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q==", - "dev": true - }, - "validator": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/validator/-/validator-8.2.0.tgz", - "integrity": "sha512-Yw5wW34fSv5spzTXNkokD6S6/Oq92d8q/t14TqsS3fAiA1RYnxSFSIZ+CY3n6PGGRCq5HhJTSepQvFUS2QUDxA==", - "dev": true - }, - "vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", - "dev": true - }, - "void-elements": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", - "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=", - "dev": true - }, - "watchpack": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.1.1.tgz", - "integrity": "sha512-Oo7LXCmc1eE1AjyuSBmtC3+Wy4HcV8PxWh2kP6fOl8yTlNS7r0K9l1ao2lrrUza7V39Y3D/BbJgY8VeSlc5JKw==", - "dev": true, - "requires": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - } - }, - "webpack": { - "version": "5.26.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.26.0.tgz", - "integrity": "sha512-9kQATUOGQBkqzNKFmFON4KXZDsXnE7xk58tBxca8aCi+6/QhAbmWIvtGqBL66XIsBFpomFH0/0KyCaySo0ta2g==", - "dev": true, - "requires": { - "@types/eslint-scope": "^3.7.0", - "@types/estree": "^0.0.46", - "@webassemblyjs/ast": "1.11.0", - "@webassemblyjs/wasm-edit": "1.11.0", - "@webassemblyjs/wasm-parser": "1.11.0", - "acorn": "^8.0.4", - "browserslist": "^4.14.5", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.7.0", - "es-module-lexer": "^0.4.0", - "eslint-scope": "^5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.4", - "json-parse-better-errors": "^1.0.2", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^3.0.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.1.1", - "watchpack": "^2.0.0", - "webpack-sources": "^2.1.1" - }, - "dependencies": { - "acorn": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.1.0.tgz", - "integrity": "sha512-LWCF/Wn0nfHOmJ9rzQApGnxnvgfROzGilS8936rqN/lfcYkY9MYZzdMqN+2NJ4SlTc+m5HiSa+kNfDtI64dwUA==", - "dev": true - }, - "enhanced-resolve": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.7.0.tgz", - "integrity": "sha512-6njwt/NsZFUKhM6j9U8hzVyD4E4r0x7NQzhTCbcWOJ0IQjNSAoalWmb0AE51Wn+fwan5qVESWi7t2ToBxs9vrw==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - } - }, - "tapable": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.0.tgz", - "integrity": "sha512-FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw==", - "dev": true - } - } - }, - "webpack-cli": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.5.0.tgz", - "integrity": "sha512-wXg/ef6Ibstl2f50mnkcHblRPN/P9J4Nlod5Hg9HGFgSeF8rsqDGHJeVe4aR26q9l62TUJi6vmvC2Qz96YJw1Q==", - "dev": true, - "requires": { - "@discoveryjs/json-ext": "^0.5.0", - "@webpack-cli/configtest": "^1.0.1", - "@webpack-cli/info": "^1.2.2", - "@webpack-cli/serve": "^1.3.0", - "colorette": "^1.2.1", - "commander": "^7.0.0", - "enquirer": "^2.3.6", - "execa": "^5.0.0", - "fastest-levenshtein": "^1.0.12", - "import-local": "^3.0.2", - "interpret": "^2.2.0", - "rechoir": "^0.7.0", - "v8-compile-cache": "^2.2.0", - "webpack-merge": "^5.7.3" - }, - "dependencies": { - "commander": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.0.0.tgz", - "integrity": "sha512-ovx/7NkTrnPuIV8sqk/GjUIIM1+iUQeqA3ye2VNpq9sVoiZsooObWlQy+OPWGI17GDaEoybuAGJm6U8yC077BA==", - "dev": true - }, - "webpack-merge": { - "version": "5.7.3", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.7.3.tgz", - "integrity": "sha512-6/JUQv0ELQ1igjGDzHkXbVDRxkfA57Zw7PfiupdLFJYrgFqY5ZP8xxbpp2lU3EPwYx89ht5Z/aDkD40hFCm5AA==", - "dev": true, - "requires": { - "clone-deep": "^4.0.1", - "wildcard": "^2.0.0" - } - } - } - }, - "webpack-merge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.2.tgz", - "integrity": "sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==", - "dev": true, - "requires": { - "lodash": "^4.17.15" - } - }, - "webpack-sources": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.2.0.tgz", - "integrity": "sha512-bQsA24JLwcnWGArOKUxYKhX3Mz/nK1Xf6hxullKERyktjNMC4x8koOeaDNTA2fEJ09BdWLbM/iTW0ithREUP0w==", - "dev": true, - "requires": { - "source-list-map": "^2.0.1", - "source-map": "^0.6.1" - } - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "wildcard": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", - "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", - "dev": true - }, - "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true - }, - "wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - } - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "ws": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.4.tgz", - "integrity": "sha512-Qm8k8ojNQIMx7S+Zp8u/uHOx7Qazv3Yv4q68MiWWWOJhiwG5W3x7iqmRtJo8xxrciZUY4vRxUTJCKuRnF28ZZw==", - "dev": true, - "requires": {} - }, - "y18n": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.5.tgz", - "integrity": "sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg==", - "dev": true - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - } - }, - "yargs-parser": { - "version": "20.2.7", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.7.tgz", - "integrity": "sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw==", - "dev": true - }, - "yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true - }, - "z-schema": { - "version": "3.18.4", - "resolved": "https://registry.npmjs.org/z-schema/-/z-schema-3.18.4.tgz", - "integrity": "sha512-DUOKC/IhbkdLKKiV89gw9DUauTV8U/8yJl1sjf6MtDmzevLKOF2duNJ495S3MFVjqZarr+qNGCPbkg4mu4PpLw==", - "dev": true, - "requires": { - "commander": "^2.7.1", - "lodash.get": "^4.0.0", - "lodash.isequal": "^4.0.0", - "validator": "^8.0.0" - } - } - } -} diff --git a/package.json b/package.json index 356efc99c..85c31cff7 100644 --- a/package.json +++ b/package.json @@ -34,13 +34,13 @@ "@microsoft/api-documenter": "7.7.20", "@microsoft/api-extractor": "7.7.11", "@types/jasmine": "^3.6.6", - "@typescript-eslint/eslint-plugin": "^2.34.0", - "@typescript-eslint/parser": "^2.34.0", + "@typescript-eslint/eslint-plugin": "^5.36.1", + "@typescript-eslint/parser": "^5.36.1", "circular-dependency-plugin": "^5.2.2", - "eslint": "^7.22.0", - "eslint-config-prettier": "^8.1.0", - "eslint-plugin-prettier": "^3.3.1", - "eslint-plugin-tree-shaking": "^1.8.0", + "eslint": "^8.23.0", + "eslint-config-prettier": "^8.5.0", + "eslint-plugin-prettier": "^4.2.1", + "eslint-plugin-tree-shaking": "^1.10.0", "jasmine-core": "^3.6.0", "karma": "^6.2.0", "karma-chrome-launcher": "^3.1.0", @@ -52,7 +52,7 @@ "karma-webpack": "^5.0.0", "mock-socket": "^9.0.3", "pegjs": "^0.10.0", - "prettier": "2.2.1", + "prettier": "2.7.1", "ts-loader": "^8.0.18", "ts-pegjs": "0.3.1", "typescript": "4.2.3", From 5959056381e1780cb9cfc8072062027d50933c09 Mon Sep 17 00:00:00 2001 From: John Riordan Date: Sun, 4 Sep 2022 14:18:10 -0400 Subject: [PATCH 04/73] Update testing dependencies --- package.json | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/package.json b/package.json index 85c31cff7..09bc7e644 100644 --- a/package.json +++ b/package.json @@ -29,11 +29,10 @@ "javascript", "typescript" ], - "dependencies": {}, "devDependencies": { "@microsoft/api-documenter": "7.7.20", "@microsoft/api-extractor": "7.7.11", - "@types/jasmine": "^3.6.6", + "@types/jasmine": "^3.10.6", "@typescript-eslint/eslint-plugin": "^5.36.1", "@typescript-eslint/parser": "^5.36.1", "circular-dependency-plugin": "^5.2.2", @@ -41,23 +40,23 @@ "eslint-config-prettier": "^8.5.0", "eslint-plugin-prettier": "^4.2.1", "eslint-plugin-tree-shaking": "^1.10.0", - "jasmine-core": "^3.6.0", - "karma": "^6.2.0", - "karma-chrome-launcher": "^3.1.0", + "jasmine-core": "^3.99.1", + "karma": "^6.4.0", + "karma-chrome-launcher": "^3.1.1", "karma-cli": "^2.0.0", - "karma-jasmine": "4.0.1", - "karma-jasmine-html-reporter": "^1.5.4", + "karma-jasmine": "^4.0.2", + "karma-jasmine-html-reporter": "^1.7.0", "karma-mocha-reporter": "^2.2.5", "karma-sourcemap-loader": "^0.3.8", "karma-webpack": "^5.0.0", - "mock-socket": "^9.0.3", + "mock-socket": "9.0.3", "pegjs": "^0.10.0", - "prettier": "2.7.1", - "ts-loader": "^8.0.18", + "prettier": "^2.7.1", + "ts-loader": "^9.3.1", "ts-pegjs": "0.3.1", "typescript": "4.2.3", - "webpack": "^5.26.0", - "webpack-cli": "^4.5.0" + "webpack": "^5.74.0", + "webpack-cli": "^4.10.0" }, "engines": { "node": ">=10.0" From f015e71fe78403c7242ea49def24f70fb8f2e446 Mon Sep 17 00:00:00 2001 From: John Riordan Date: Sun, 4 Sep 2022 14:43:09 -0400 Subject: [PATCH 05/73] Update testing dependencies --- package.json | 2 +- test/spec/platform/web/transport.spec.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 09bc7e644..4e85b8fdc 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,7 @@ "karma-mocha-reporter": "^2.2.5", "karma-sourcemap-loader": "^0.3.8", "karma-webpack": "^5.0.0", - "mock-socket": "9.0.3", + "mock-socket": "^9.1.5", "pegjs": "^0.10.0", "prettier": "^2.7.1", "ts-loader": "^9.3.1", diff --git a/test/spec/platform/web/transport.spec.ts b/test/spec/platform/web/transport.spec.ts index 29ab33246..9ee3a74dd 100644 --- a/test/spec/platform/web/transport.spec.ts +++ b/test/spec/platform/web/transport.spec.ts @@ -74,7 +74,7 @@ describe("Web Transport", () => { mockServer = new Server(server, { selectProtocol: (protocols: Array): string => "sip" }); mockServer.on("connection", (socket) => { logger.log("Mock WebSocket Server: incoming connection"); - mockServerWebSocket = socket; + mockServerWebSocket = socket as WebSocket; // TODO: Client and WebSocket do not have same signature - close() is an issue. socket.on("message", (receivedMessage) => { if (typeof receivedMessage !== "string") { From d4a0c9fccd2452f0631a3b56c93c719eaf28576b Mon Sep 17 00:00:00 2001 From: John Riordan Date: Sun, 4 Sep 2022 17:36:40 -0400 Subject: [PATCH 06/73] Update typescript dependency --- demo/demo-3.ts | 4 ++-- .../sip.js.peerconnectiondelegate.md | 1 - ....js.peerconnectiondelegate.onstatsended.md | 24 ------------------- etc/session-description-handler/sip.js.api.md | 1 - package.json | 2 +- src/api/session.ts | 12 +++++----- .../peer-connection-configuration-default.ts | 1 - .../peer-connection-delegate.ts | 6 ----- .../session-description-handler.ts | 11 ++------- src/platform/web/transport/transport.ts | 14 +++++------ 10 files changed, 18 insertions(+), 58 deletions(-) delete mode 100644 docs/session-description-handler/sip.js.peerconnectiondelegate.onstatsended.md diff --git a/demo/demo-3.ts b/demo/demo-3.ts index 581b8ae76..293acf673 100644 --- a/demo/demo-3.ts +++ b/demo/demo-3.ts @@ -42,8 +42,8 @@ class SimpleUserWithDataChannel extends SimpleUser { }; dataChannel.onerror = (event) => { console.error(`[${this.id}] data channel onError`); - console.error(event.error); - alert(`[${this.id}] Data channel error.\n` + event.error); + console.error((event as RTCErrorEvent).error); + alert(`[${this.id}] Data channel error.\n` + (event as RTCErrorEvent).error); }; dataChannel.onmessage = (event) => { console.log(`[${this.id}] data channel onMessage`); diff --git a/docs/session-description-handler/sip.js.peerconnectiondelegate.md b/docs/session-description-handler/sip.js.peerconnectiondelegate.md index 100cfc32f..2111728b0 100644 --- a/docs/session-description-handler/sip.js.peerconnectiondelegate.md +++ b/docs/session-description-handler/sip.js.peerconnectiondelegate.md @@ -24,6 +24,5 @@ export interface PeerConnectionDelegate | [onicegatheringstatechange(event)](./sip.js.peerconnectiondelegate.onicegatheringstatechange.md) | Triggered when the ICE gathering state changes. | | [onnegotiationneeded(event)](./sip.js.peerconnectiondelegate.onnegotiationneeded.md) | Triggered when renegotiation is necessary. | | [onsignalingstatechange(event)](./sip.js.peerconnectiondelegate.onsignalingstatechange.md) | Triggered when the SignalingState changes. | -| [onstatsended(event)](./sip.js.peerconnectiondelegate.onstatsended.md) | Triggered when when a statistics object being monitored is deleted. | | [ontrack(event)](./sip.js.peerconnectiondelegate.ontrack.md) | Triggered when a new track is signaled by the remote peer, as a result of setRemoteDescription. | diff --git a/docs/session-description-handler/sip.js.peerconnectiondelegate.onstatsended.md b/docs/session-description-handler/sip.js.peerconnectiondelegate.onstatsended.md deleted file mode 100644 index f5068e30c..000000000 --- a/docs/session-description-handler/sip.js.peerconnectiondelegate.onstatsended.md +++ /dev/null @@ -1,24 +0,0 @@ - - -[Home](./index.md) > [sip.js](./sip.js.md) > [PeerConnectionDelegate](./sip.js.peerconnectiondelegate.md) > [onstatsended](./sip.js.peerconnectiondelegate.onstatsended.md) - -## PeerConnectionDelegate.onstatsended() method - -Triggered when when a statistics object being monitored is deleted. - -Signature: - -```typescript -onstatsended?(event: Event): void; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| event | Event | Event. | - -Returns: - -`void` - diff --git a/etc/session-description-handler/sip.js.api.md b/etc/session-description-handler/sip.js.api.md index 3f522f5bf..85bbcd0f9 100644 --- a/etc/session-description-handler/sip.js.api.md +++ b/etc/session-description-handler/sip.js.api.md @@ -26,7 +26,6 @@ export interface PeerConnectionDelegate { onicegatheringstatechange?(event: Event): void; onnegotiationneeded?(event: Event): void; onsignalingstatechange?(event: Event): void; - onstatsended?(event: Event): void; ontrack?(event: Event): void; } diff --git a/package.json b/package.json index 4e85b8fdc..fd7609a04 100644 --- a/package.json +++ b/package.json @@ -54,7 +54,7 @@ "prettier": "^2.7.1", "ts-loader": "^9.3.1", "ts-pegjs": "0.3.1", - "typescript": "4.2.3", + "typescript": "^4.8.2", "webpack": "^5.74.0", "webpack-cli": "^4.10.0" }, diff --git a/src/api/session.ts b/src/api/session.ts index f9090fcdf..8a16be38f 100644 --- a/src/api/session.ts +++ b/src/api/session.ts @@ -1188,7 +1188,7 @@ export abstract class Session { } catch (error) { // don't trust SDH to throw an Error this.logger.error("Session.getOffer: SDH getDescription threw..."); - const e = error instanceof Error ? error : new Error(error); + const e = error instanceof Error ? error : new Error(error as string); this.logger.error(e.message); return Promise.reject(e); } @@ -1215,7 +1215,7 @@ export abstract class Session { } catch (error) { // don't trust SDH to throw an Error this.logger.error("Session.rollbackOffer: SDH rollbackDescription threw..."); - const e = error instanceof Error ? error : new Error(error); + const e = error instanceof Error ? error : new Error(error as string); this.logger.error(e.message); return Promise.reject(e); } @@ -1242,7 +1242,7 @@ export abstract class Session { } } catch (error) { this.logger.error("Session.setAnswer: SDH hasDescription threw..."); - const e = error instanceof Error ? error : new Error(error); + const e = error instanceof Error ? error : new Error(error as string); this.logger.error(e.message); return Promise.reject(e); } @@ -1257,7 +1257,7 @@ export abstract class Session { } catch (error) { // don't trust SDH to throw an Error this.logger.error("Session.setAnswer: SDH setDescription threw..."); - const e = error instanceof Error ? error : new Error(error); + const e = error instanceof Error ? error : new Error(error as string); this.logger.error(e.message); return Promise.reject(e); } @@ -1284,7 +1284,7 @@ export abstract class Session { } } catch (error) { this.logger.error("Session.setOfferAndGetAnswer: SDH hasDescription threw..."); - const e = error instanceof Error ? error : new Error(error); + const e = error instanceof Error ? error : new Error(error as string); this.logger.error(e.message); return Promise.reject(e); } @@ -1303,7 +1303,7 @@ export abstract class Session { } catch (error) { // don't trust SDH to throw an Error this.logger.error("Session.setOfferAndGetAnswer: SDH setDescription or getDescription threw..."); - const e = error instanceof Error ? error : new Error(error); + const e = error instanceof Error ? error : new Error(error as string); this.logger.error(e.message); return Promise.reject(e); } diff --git a/src/platform/web/session-description-handler/peer-connection-configuration-default.ts b/src/platform/web/session-description-handler/peer-connection-configuration-default.ts index 78adc144e..52c48ce83 100644 --- a/src/platform/web/session-description-handler/peer-connection-configuration-default.ts +++ b/src/platform/web/session-description-handler/peer-connection-configuration-default.ts @@ -9,7 +9,6 @@ export function defaultPeerConnectionConfiguration(): RTCConfiguration { iceCandidatePoolSize: 0, iceServers: [{ urls: "stun:stun.l.google.com:19302" }], // TURN URL example: "turn:88.88.88.0:3478", "test", "test" iceTransportPolicy: "all", - peerIdentity: undefined, rtcpMuxPolicy: "require" }; return configuration; diff --git a/src/platform/web/session-description-handler/peer-connection-delegate.ts b/src/platform/web/session-description-handler/peer-connection-delegate.ts index 87109eece..519c662e0 100644 --- a/src/platform/web/session-description-handler/peer-connection-delegate.ts +++ b/src/platform/web/session-description-handler/peer-connection-delegate.ts @@ -58,12 +58,6 @@ export interface PeerConnectionDelegate { */ onsignalingstatechange?(event: Event): void; - /** - * Triggered when when a statistics object being monitored is deleted. - * @param event - Event. - */ - onstatsended?(event: Event): void; - /** * Triggered when a new track is signaled by the remote peer, as a result of setRemoteDescription. * @param event - Event. diff --git a/src/platform/web/session-description-handler/session-description-handler.ts b/src/platform/web/session-description-handler/session-description-handler.ts index d3476d13e..455c648be 100644 --- a/src/platform/web/session-description-handler/session-description-handler.ts +++ b/src/platform/web/session-description-handler/session-description-handler.ts @@ -254,7 +254,7 @@ export class SessionDescriptionHandler implements SessionDescriptionHandlerDefin try { dtmfSender.insertDTMF(tones, duration, interToneGap); } catch (e) { - this.logger.error(e); + this.logger.error((e as Error).toString()); return false; } this.logger.log("SessionDescriptionHandler.sendDtmf sent via RTP: " + tones.toString()); @@ -879,7 +879,7 @@ export class SessionDescriptionHandler implements SessionDescriptionHandlerDefin peerConnection.onicecandidateerror = (event): void => { this.logger.debug(`SessionDescriptionHandler.onicecandidateerror`); if (this._peerConnectionDelegate?.onicecandidateerror) { - this._peerConnectionDelegate.onicecandidateerror(event); + this._peerConnectionDelegate.onicecandidateerror(event as RTCPeerConnectionIceErrorEvent); } }; @@ -917,13 +917,6 @@ export class SessionDescriptionHandler implements SessionDescriptionHandlerDefin } }; - peerConnection.onstatsended = (event): void => { - this.logger.debug(`SessionDescriptionHandler.onstatsended`); - if (this._peerConnectionDelegate?.onstatsended) { - this._peerConnectionDelegate.onstatsended(event); - } - }; - peerConnection.ontrack = (event): void => { const kind = event.track.kind; const enabled = event.track.enabled ? "enabled" : "disabled"; diff --git a/src/platform/web/transport/transport.ts b/src/platform/web/transport/transport.ts index 5150a5daa..7d08fa50d 100644 --- a/src/platform/web/transport/transport.ts +++ b/src/platform/web/transport/transport.ts @@ -261,12 +261,12 @@ export class Transport implements TransportDefinition { } catch (error) { this._ws = undefined; this.logger.error("WebSocket construction failed."); - this.logger.error(error); + this.logger.error((error as Error).toString()); return new Promise((resolve, reject) => { this.connectResolve = resolve; this.connectReject = reject; // The `state` MUST transition to "Disconnecting" or "Disconnected" before rejecting - this.transitionState(TransportState.Disconnected, error); + this.transitionState(TransportState.Disconnected, error as Error); }); } @@ -359,7 +359,7 @@ export class Transport implements TransportDefinition { // Treating this as a coding error as it apparently can only happen // if you pass close() invalid parameters (so it should never happen) this.logger.error("WebSocket close failed."); - this.logger.error(error); + this.logger.error((error as Error).toString()); throw error; } }); @@ -463,7 +463,7 @@ export class Transport implements TransportDefinition { // It's old code and works in old browsers (IE), so leaving it here in a comment in case someone needs it. // finishedData = String.fromCharCode.apply(null, (new Uint8Array(data) as unknown as Array)); } catch (err) { - this.logger.error(err); + this.logger.error((err as Error).toString()); this.logger.error("Received WebSocket binary message failed to be converted into string, message discarded"); return; } @@ -487,7 +487,7 @@ export class Transport implements TransportDefinition { try { this.onMessage(finishedData); } catch (e) { - this.logger.error(e); + this.logger.error((e as Error).toString()); this.logger.error("Exception thrown by onMessage callback"); throw e; // rethrow unhandled exception } @@ -608,7 +608,7 @@ export class Transport implements TransportDefinition { try { this.onConnect(); } catch (e) { - this.logger.error(e); + this.logger.error((e as Error).toString()); this.logger.error("Exception thrown by onConnect callback"); throw e; // rethrow unhandled exception } @@ -626,7 +626,7 @@ export class Transport implements TransportDefinition { this.onDisconnect(); } } catch (e) { - this.logger.error(e); + this.logger.error((e as Error).toString()); this.logger.error("Exception thrown by onDisconnect callback"); throw e; // rethrow unhandled exception } From 98599d89f431d18262cd23d2bf92e8c0a24b1bc3 Mon Sep 17 00:00:00 2001 From: John Riordan Date: Sun, 4 Sep 2022 20:33:44 -0400 Subject: [PATCH 07/73] Update karma and jasmine dependencies --- package.json | 8 ++++---- test/spec/api/subscription.spec.ts | 6 ++++-- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index fd7609a04..1e74395f0 100644 --- a/package.json +++ b/package.json @@ -32,7 +32,7 @@ "devDependencies": { "@microsoft/api-documenter": "7.7.20", "@microsoft/api-extractor": "7.7.11", - "@types/jasmine": "^3.10.6", + "@types/jasmine": "^4.3.0", "@typescript-eslint/eslint-plugin": "^5.36.1", "@typescript-eslint/parser": "^5.36.1", "circular-dependency-plugin": "^5.2.2", @@ -40,12 +40,12 @@ "eslint-config-prettier": "^8.5.0", "eslint-plugin-prettier": "^4.2.1", "eslint-plugin-tree-shaking": "^1.10.0", - "jasmine-core": "^3.99.1", + "jasmine-core": "^4.4.0", "karma": "^6.4.0", "karma-chrome-launcher": "^3.1.1", "karma-cli": "^2.0.0", - "karma-jasmine": "^4.0.2", - "karma-jasmine-html-reporter": "^1.7.0", + "karma-jasmine": "^5.1.0", + "karma-jasmine-html-reporter": "^2.0.0", "karma-mocha-reporter": "^2.2.5", "karma-sourcemap-loader": "^0.3.8", "karma-webpack": "^5.0.0", diff --git a/test/spec/api/subscription.spec.ts b/test/spec/api/subscription.spec.ts index c08399bb7..b9b8e5390 100644 --- a/test/spec/api/subscription.spec.ts +++ b/test/spec/api/subscription.spec.ts @@ -257,13 +257,15 @@ describe("API Subscription", () => { }); it("the subscription delegate should not be called after timeout", async () => { - await soon(Timers.TIMER_F + 1); + jasmine.clock().tick(Timers.TIMER_F + 1); + await soon(); const spy = subscriptionDelegateMock; expect(spy.onNotify).toHaveBeenCalledTimes(0); }); it("the subscription state should transition to 'terminated' after timeout", async () => { - await soon(Timers.TIMER_F + 1); + jasmine.clock().tick(Timers.TIMER_F + 1); + await soon(); const spy = subscriptionStateSpy; expect(spy).toHaveBeenCalledTimes(1); expect(spy.calls.argsFor(0)).toEqual([SubscriptionState.Terminated]); From 505901b336bb7bc85cd8c9c46309c5e40e2aa3fe Mon Sep 17 00:00:00 2001 From: John Riordan Date: Sun, 4 Sep 2022 20:50:29 -0400 Subject: [PATCH 08/73] Update parser genererator dependencies --- build/grammarGenerator.cjs | 2 +- package.json | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/build/grammarGenerator.cjs b/build/grammarGenerator.cjs index a2b3c9aa7..80d229538 100644 --- a/build/grammarGenerator.cjs +++ b/build/grammarGenerator.cjs @@ -1,6 +1,6 @@ "use strict"; const fs = require("fs"), - pegjs = require("pegjs"), + pegjs = require("peggy"), tspegjs = require("ts-pegjs"); const thisFolder = "./src/grammar/pegjs", diff --git a/package.json b/package.json index 1e74395f0..230a954f1 100644 --- a/package.json +++ b/package.json @@ -50,10 +50,10 @@ "karma-sourcemap-loader": "^0.3.8", "karma-webpack": "^5.0.0", "mock-socket": "^9.1.5", - "pegjs": "^0.10.0", + "peggy": "^1.2.0", "prettier": "^2.7.1", "ts-loader": "^9.3.1", - "ts-pegjs": "0.3.1", + "ts-pegjs": "^1.2.2", "typescript": "^4.8.2", "webpack": "^5.74.0", "webpack-cli": "^4.10.0" From 747cc1178c8b378c3c7301e56b4da67be645fc70 Mon Sep 17 00:00:00 2001 From: John Riordan Date: Mon, 5 Sep 2022 14:41:44 -0400 Subject: [PATCH 09/73] Update package-lock --- package-lock.json | 7915 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 7915 insertions(+) create mode 100644 package-lock.json diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 000000000..38533c9cb --- /dev/null +++ b/package-lock.json @@ -0,0 +1,7915 @@ +{ + "name": "sip.js", + "version": "0.20.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "sip.js", + "version": "0.20.0", + "license": "MIT", + "devDependencies": { + "@microsoft/api-documenter": "7.7.20", + "@microsoft/api-extractor": "7.7.11", + "@types/jasmine": "^4.3.0", + "@typescript-eslint/eslint-plugin": "^5.36.1", + "@typescript-eslint/parser": "^5.36.1", + "circular-dependency-plugin": "^5.2.2", + "eslint": "^8.23.0", + "eslint-config-prettier": "^8.5.0", + "eslint-plugin-prettier": "^4.2.1", + "eslint-plugin-tree-shaking": "^1.10.0", + "jasmine-core": "^4.4.0", + "karma": "^6.4.0", + "karma-chrome-launcher": "^3.1.1", + "karma-cli": "^2.0.0", + "karma-jasmine": "^5.1.0", + "karma-jasmine-html-reporter": "^2.0.0", + "karma-mocha-reporter": "^2.2.5", + "karma-sourcemap-loader": "^0.3.8", + "karma-webpack": "^5.0.0", + "mock-socket": "^9.1.5", + "peggy": "^1.2.0", + "prettier": "^2.7.1", + "ts-loader": "^9.3.1", + "ts-pegjs": "^1.2.2", + "typescript": "^4.8.2", + "webpack": "^5.74.0", + "webpack-cli": "^4.10.0" + }, + "engines": { + "node": ">=10.0" + } + }, + "node_modules/@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "dev": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.1.tgz", + "integrity": "sha512-OhSY22oQQdw3zgPOOwdoj01l/Dzl1Z+xyUP33tkSN+aqyEhymJCcPHyXt+ylW8FSe0TfRC2VG+ROQOapD0aZSQ==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.4.0", + "globals": "^13.15.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/@eslint/eslintrc/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.10.4.tgz", + "integrity": "sha512-mXAIHxZT3Vcpg83opl1wGlVZ9xydbfZO3r5YfRSH6Gpp2J/PfdBP0wbDa2sO6/qRbcalpoevVyW6A/fI6LfeMw==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/gitignore-to-minimatch": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/gitignore-to-minimatch/-/gitignore-to-minimatch-1.0.2.tgz", + "integrity": "sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", + "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.15", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.15.tgz", + "integrity": "sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@microsoft/api-documenter": { + "version": "7.7.20", + "resolved": "https://registry.npmjs.org/@microsoft/api-documenter/-/api-documenter-7.7.20.tgz", + "integrity": "sha512-B2gOOoYJDOqAn9iPg4Z9ay03MYtjmY2ldF3u1povTkzl5eJWERMDuuK5BLOdGdDTMr6TUd/FrhERFEeJNeQ3rg==", + "dev": true, + "dependencies": { + "@microsoft/api-extractor-model": "7.7.11", + "@microsoft/tsdoc": "0.12.19", + "@rushstack/node-core-library": "3.19.7", + "@rushstack/ts-command-line": "4.3.14", + "colors": "~1.2.1", + "js-yaml": "~3.13.1", + "resolve": "1.8.1" + }, + "bin": { + "api-documenter": "bin/api-documenter" + } + }, + "node_modules/@microsoft/api-extractor": { + "version": "7.7.11", + "resolved": "https://registry.npmjs.org/@microsoft/api-extractor/-/api-extractor-7.7.11.tgz", + "integrity": "sha512-kd2kakdDoRgI54J5H11a76hyYZBMhtp4piwWAy4bYTwlQT0v/tp+G/UMMgjUL4vKf0kTNhitEUX/0LfQb1AHzQ==", + "dev": true, + "dependencies": { + "@microsoft/api-extractor-model": "7.7.10", + "@microsoft/tsdoc": "0.12.19", + "@rushstack/node-core-library": "3.19.6", + "@rushstack/ts-command-line": "4.3.13", + "colors": "~1.2.1", + "lodash": "~4.17.15", + "resolve": "1.8.1", + "source-map": "~0.6.1", + "typescript": "~3.7.2" + }, + "bin": { + "api-extractor": "bin/api-extractor" + } + }, + "node_modules/@microsoft/api-extractor-model": { + "version": "7.7.11", + "resolved": "https://registry.npmjs.org/@microsoft/api-extractor-model/-/api-extractor-model-7.7.11.tgz", + "integrity": "sha512-Kf3RytYDq7sP4ASaaA9IcvaOPbVj1Xj34E2Wxd9DznI7sG4HzcpoOGmxaZHCzyYVh7wfAaAlvcXf3SV+djhNZw==", + "dev": true, + "dependencies": { + "@microsoft/tsdoc": "0.12.19", + "@rushstack/node-core-library": "3.19.7" + } + }, + "node_modules/@microsoft/api-extractor/node_modules/@microsoft/api-extractor-model": { + "version": "7.7.10", + "resolved": "https://registry.npmjs.org/@microsoft/api-extractor-model/-/api-extractor-model-7.7.10.tgz", + "integrity": "sha512-gMFDXwUgoQYz9TgatyNPALDdZN4xBC3Un3fGwlzME+vM13PoJ26pGuqI7kv/OlK9+q2sgrEdxWns8D3UnLf2TA==", + "dev": true, + "dependencies": { + "@microsoft/tsdoc": "0.12.19", + "@rushstack/node-core-library": "3.19.6" + } + }, + "node_modules/@microsoft/api-extractor/node_modules/@rushstack/node-core-library": { + "version": "3.19.6", + "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-3.19.6.tgz", + "integrity": "sha512-1+FoymIdr9W9k0D8fdZBBPwi5YcMwh/RyESuL5bY29rLICFxSLOPK+ImVZ1OcWj9GEMsvDx5pNpJ311mHQk+MA==", + "dev": true, + "dependencies": { + "@types/node": "10.17.13", + "colors": "~1.2.1", + "fs-extra": "~7.0.1", + "jju": "~1.4.0", + "semver": "~5.3.0", + "timsort": "~0.3.0", + "z-schema": "~3.18.3" + } + }, + "node_modules/@microsoft/api-extractor/node_modules/@rushstack/ts-command-line": { + "version": "4.3.13", + "resolved": "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-4.3.13.tgz", + "integrity": "sha512-BUBbjYu67NJGQkpHu8aYm7kDoMFizL1qx78+72XE3mX/vDdXYJzw/FWS7TPcMJmY4kNlYs979v2B0Q0qa2wRiw==", + "dev": true, + "dependencies": { + "@types/argparse": "1.0.33", + "argparse": "~1.0.9", + "colors": "~1.2.1" + } + }, + "node_modules/@microsoft/api-extractor/node_modules/typescript": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.7.7.tgz", + "integrity": "sha512-MmQdgo/XenfZPvVLtKZOq9jQQvzaUAUpcKW8Z43x9B2fOm4S5g//tPtMweZUIP+SoBqrVPEIm+dJeQ9dfO0QdA==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/@microsoft/tsdoc": { + "version": "0.12.19", + "resolved": "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.12.19.tgz", + "integrity": "sha512-IpgPxHrNxZiMNUSXqR1l/gePKPkfAmIKoDRP9hp7OwjU29ZR8WCJsOJ8iBKgw0Qk+pFwR+8Y1cy8ImLY6e9m4A==", + "dev": true + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@rushstack/node-core-library": { + "version": "3.19.7", + "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-3.19.7.tgz", + "integrity": "sha512-gKE/OXH5GAj8yJ1kEyRW68UekJernilZ3QTRgmQ0MUHBCQmtZ9Q6T5PQ1sVbcL4teH8BMdpZeFy1DKnHs8h3PA==", + "dev": true, + "dependencies": { + "@types/node": "10.17.13", + "colors": "~1.2.1", + "fs-extra": "~7.0.1", + "jju": "~1.4.0", + "semver": "~5.3.0", + "timsort": "~0.3.0", + "z-schema": "~3.18.3" + } + }, + "node_modules/@rushstack/ts-command-line": { + "version": "4.3.14", + "resolved": "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-4.3.14.tgz", + "integrity": "sha512-YJZIyKvkm3f6ZdKSfMntHS9542Y2mmMWzaiPPoXxLFZntKxEIDE3WfUNlvOSo3yK4fNd09Tz3hfvTivQNHSiKQ==", + "dev": true, + "dependencies": { + "@types/argparse": "1.0.33", + "argparse": "~1.0.9", + "colors": "~1.2.1" + } + }, + "node_modules/@socket.io/component-emitter": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", + "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==", + "dev": true + }, + "node_modules/@types/argparse": { + "version": "1.0.33", + "resolved": "https://registry.npmjs.org/@types/argparse/-/argparse-1.0.33.tgz", + "integrity": "sha512-VQgHxyPMTj3hIlq9SY1mctqx+Jj8kpQfoLvDlVSDNOyuYs8JYfkuY3OW/4+dO657yPmNhHpePRx0/Tje5ImNVQ==", + "dev": true + }, + "node_modules/@types/cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", + "dev": true + }, + "node_modules/@types/cors": { + "version": "2.8.12", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz", + "integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==", + "dev": true + }, + "node_modules/@types/eslint": { + "version": "8.4.6", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.6.tgz", + "integrity": "sha512-/fqTbjxyFUaYNO7VcW5g+4npmqVACz1bB7RTHYuLj+PRjw9hrCwrUXVQFpChUS0JsyEFvMZ7U/PfmvWgxJhI9g==", + "dev": true, + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.4", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", + "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", + "dev": true, + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "0.0.51", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", + "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", + "dev": true + }, + "node_modules/@types/jasmine": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-4.3.0.tgz", + "integrity": "sha512-u1jWakf8CWvLfSEZyxmzkgBzOEvXH/szpT0e6G8BTkx5Eu0BhDn7sbc5dz0JBN/6Wwm9rBe+JAsk9tJRyH9ZkA==", + "dev": true + }, + "node_modules/@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "dev": true + }, + "node_modules/@types/node": { + "version": "10.17.13", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.13.tgz", + "integrity": "sha512-pMCcqU2zT4TjqYFrWtYHKal7Sl30Ims6ulZ4UFXxI4xbtQqK/qqKwkDoBFCfooRqqmRu9vY3xaJRwxSh673aYg==", + "dev": true + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.36.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.36.2.tgz", + "integrity": "sha512-OwwR8LRwSnI98tdc2z7mJYgY60gf7I9ZfGjN5EjCwwns9bdTuQfAXcsjSB2wSQ/TVNYSGKf4kzVXbNGaZvwiXw==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.36.2", + "@typescript-eslint/type-utils": "5.36.2", + "@typescript-eslint/utils": "5.36.2", + "debug": "^4.3.4", + "functional-red-black-tree": "^1.0.1", + "ignore": "^5.2.0", + "regexpp": "^3.2.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "5.36.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.36.2.tgz", + "integrity": "sha512-qS/Kb0yzy8sR0idFspI9Z6+t7mqk/oRjnAYfewG+VN73opAUvmYL3oPIMmgOX6CnQS6gmVIXGshlb5RY/R22pA==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.36.2", + "@typescript-eslint/types": "5.36.2", + "@typescript-eslint/typescript-estree": "5.36.2", + "debug": "^4.3.4" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.36.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.36.2.tgz", + "integrity": "sha512-cNNP51L8SkIFSfce8B1NSUBTJTu2Ts4nWeWbFrdaqjmn9yKrAaJUBHkyTZc0cL06OFHpb+JZq5AUHROS398Orw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.36.2", + "@typescript-eslint/visitor-keys": "5.36.2" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "5.36.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.36.2.tgz", + "integrity": "sha512-rPQtS5rfijUWLouhy6UmyNquKDPhQjKsaKH0WnY6hl/07lasj8gPaH2UD8xWkePn6SC+jW2i9c2DZVDnL+Dokw==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "5.36.2", + "@typescript-eslint/utils": "5.36.2", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "5.36.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.36.2.tgz", + "integrity": "sha512-9OJSvvwuF1L5eS2EQgFUbECb99F0mwq501w0H0EkYULkhFa19Qq7WFbycdw1PexAc929asupbZcgjVIe6OK/XQ==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.36.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.36.2.tgz", + "integrity": "sha512-8fyH+RfbKc0mTspfuEjlfqA4YywcwQK2Amcf6TDOwaRLg7Vwdu4bZzyvBZp4bjt1RRjQ5MDnOZahxMrt2l5v9w==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.36.2", + "@typescript-eslint/visitor-keys": "5.36.2", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "5.36.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.36.2.tgz", + "integrity": "sha512-uNcopWonEITX96v9pefk9DC1bWMdkweeSsewJ6GeC7L6j2t0SJywisgkr9wUTtXk90fi2Eljj90HSHm3OGdGRg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "@typescript-eslint/scope-manager": "5.36.2", + "@typescript-eslint/types": "5.36.2", + "@typescript-eslint/typescript-estree": "5.36.2", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.36.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.36.2.tgz", + "integrity": "sha512-BtRvSR6dEdrNt7Net2/XDjbYKU5Ml6GqJgVfXT0CxTCJlnIqK7rAGreuWKMT2t8cFUT2Msv5oxw0GMRD7T5J7A==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.36.2", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", + "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "dev": true, + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", + "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", + "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", + "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", + "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "dev": true, + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", + "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", + "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", + "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "dev": true, + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", + "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "dev": true, + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", + "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", + "dev": true + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", + "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/helper-wasm-section": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-opt": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "@webassemblyjs/wast-printer": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", + "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", + "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", + "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", + "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webpack-cli/configtest": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.2.0.tgz", + "integrity": "sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg==", + "dev": true, + "peerDependencies": { + "webpack": "4.x.x || 5.x.x", + "webpack-cli": "4.x.x" + } + }, + "node_modules/@webpack-cli/info": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.5.0.tgz", + "integrity": "sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ==", + "dev": true, + "dependencies": { + "envinfo": "^7.7.3" + }, + "peerDependencies": { + "webpack-cli": "4.x.x" + } + }, + "node_modules/@webpack-cli/serve": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.7.0.tgz", + "integrity": "sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==", + "dev": true, + "peerDependencies": { + "webpack-cli": "4.x.x" + }, + "peerDependenciesMeta": { + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", + "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-assertions": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", + "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", + "dev": true, + "peerDependencies": { + "acorn": "^8" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/base64id": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", + "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", + "dev": true, + "engines": { + "node": "^4.5.0 || >= 5.9" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/body-parser": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", + "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.10.3", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.3.tgz", + "integrity": "sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001370", + "electron-to-chromium": "^1.4.202", + "node-releases": "^2.0.6", + "update-browserslist-db": "^1.0.5" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001390", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001390.tgz", + "integrity": "sha512-sS4CaUM+/+vqQUlCvCJ2WtDlV81aWtHhqeEVkLokVJJa3ViN4zDxAGfq9R8i1m90uGHxo99cy10Od+lvn3hf0g==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + } + ] + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/circular-dependency-plugin": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/circular-dependency-plugin/-/circular-dependency-plugin-5.2.2.tgz", + "integrity": "sha512-g38K9Cm5WRwlaH6g03B9OEz/0qRizI+2I7n+Gz+L5DxXJAPAiWQvwlYNm1V1jkdpUv95bOe/ASm2vfi/G560jQ==", + "dev": true, + "engines": { + "node": ">=6.0.0" + }, + "peerDependencies": { + "webpack": ">=4.0.1" + } + }, + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/colorette": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", + "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", + "dev": true + }, + "node_modules/colors": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.2.5.tgz", + "integrity": "sha512-erNRLao/Y3Fv54qUa0LBB+//Uf3YwMUmdJinN20yMXm9zdKKqH9wt7R9IIVZ+K7ShzfpLV/Zg8+VyrBJYB4lpg==", + "dev": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/connect": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/connect/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/connect/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dev": true, + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/custom-event": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", + "integrity": "sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg==", + "dev": true + }, + "node_modules/date-format": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.13.tgz", + "integrity": "sha512-bnYCwf8Emc3pTD8pXnre+wfnjGtfi5ncMDKy7+cWZXbmRAsdWkOQHrfC1yz/KiwP5thDp2kCHWYWKBX4HP1hoQ==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "dev": true, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/di": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", + "integrity": "sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA==", + "dev": true + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dom-serialize": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", + "integrity": "sha512-Yra4DbvoW7/Z6LBN560ZwXMjoNOSAN2wRsKFGc4iBeso+mpIA6qj1vfdf9HpMaKAqG6wXTy+1SYEzmNpKXOSsQ==", + "dev": true, + "dependencies": { + "custom-event": "~1.0.0", + "ent": "~2.2.0", + "extend": "^3.0.0", + "void-elements": "^2.0.0" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true + }, + "node_modules/electron-to-chromium": { + "version": "1.4.241", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.241.tgz", + "integrity": "sha512-e7Wsh4ilaioBZ5bMm6+F4V5c11dh56/5Jwz7Hl5Tu1J7cnB+Pqx5qIF2iC7HPpfyQMqGSvvLP5bBAIDd2gAtGw==", + "dev": true + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/engine.io": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.2.0.tgz", + "integrity": "sha512-4KzwW3F3bk+KlzSOY57fj/Jx6LyRQ1nbcyIadehl+AnXjKT7gDO0ORdRi/84ixvMKTym6ZKuxvbzN62HDDU1Lg==", + "dev": true, + "dependencies": { + "@types/cookie": "^0.4.1", + "@types/cors": "^2.8.12", + "@types/node": ">=10.0.0", + "accepts": "~1.3.4", + "base64id": "2.0.0", + "cookie": "~0.4.1", + "cors": "~2.8.5", + "debug": "~4.3.1", + "engine.io-parser": "~5.0.3", + "ws": "~8.2.3" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/engine.io-parser": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.4.tgz", + "integrity": "sha512-+nVFp+5z1E3HcToEnO7ZIj3g+3k9389DvWtvJZz0T6/eOCPIyyxehFcedoYrZQrp0LgQbD9pPXhpMBKMd5QURg==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz", + "integrity": "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/ent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", + "integrity": "sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA==", + "dev": true + }, + "node_modules/envinfo": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", + "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", + "dev": true, + "bin": { + "envinfo": "dist/cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/es-module-lexer": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", + "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", + "dev": true + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.23.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.23.0.tgz", + "integrity": "sha512-pBG/XOn0MsJcKcTRLr27S5HpzQo4kLr+HjLQIyK4EiCsijDl/TB+h5uEuJU6bQ8Edvwz1XWOjpaP2qgnXGpTcA==", + "dev": true, + "dependencies": { + "@eslint/eslintrc": "^1.3.1", + "@humanwhocodes/config-array": "^0.10.4", + "@humanwhocodes/gitignore-to-minimatch": "^1.0.2", + "@humanwhocodes/module-importer": "^1.0.1", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.4.0", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^6.0.1", + "globals": "^13.15.0", + "globby": "^11.1.0", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-prettier": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", + "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", + "dev": true, + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-plugin-prettier": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz", + "integrity": "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==", + "dev": true, + "dependencies": { + "prettier-linter-helpers": "^1.0.0" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "eslint": ">=7.28.0", + "prettier": ">=2.0.0" + }, + "peerDependenciesMeta": { + "eslint-config-prettier": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-tree-shaking": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-tree-shaking/-/eslint-plugin-tree-shaking-1.10.0.tgz", + "integrity": "sha512-2ZKkV+56+yTk0F6iq2pAwdxNvShjas07XGozMV6nen+ZGVSA8/TndoXfpPHt8r7M9sbE2XVRQ3iaU7535vdNpw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" + } + }, + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/eslint/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/espree": { + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.0.tgz", + "integrity": "sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw==", + "dev": true, + "dependencies": { + "acorn": "^8.8.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-diff": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", + "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", + "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastest-levenshtein": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", + "dev": true, + "engines": { + "node": ">= 4.9.1" + } + }, + "node_modules/fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/finalhandler/node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "dev": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "dev": true + }, + "node_modules/follow-redirects": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", + "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", + "dev": true + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz", + "integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true + }, + "node_modules/globals": { + "version": "13.17.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", + "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true + }, + "node_modules/grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-errors/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dev": true, + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/interpret": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", + "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-core-module": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz", + "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isbinaryfile": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", + "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", + "dev": true, + "engines": { + "node": ">= 8.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/gjtorikian/" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jasmine-core": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-4.4.0.tgz", + "integrity": "sha512-+l482uImx5BVd6brJYlaHe2UwfKoZBqQfNp20ZmdNfsjGFTemGfqHLsXjKEW23w9R/m8WYeFc9JmIgjj6dUtAA==", + "dev": true + }, + "node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/jju": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/jju/-/jju-1.4.0.tgz", + "integrity": "sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/karma": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/karma/-/karma-6.4.0.tgz", + "integrity": "sha512-s8m7z0IF5g/bS5ONT7wsOavhW4i4aFkzD4u4wgzAQWT4HGUeWI3i21cK2Yz6jndMAeHETp5XuNsRoyGJZXVd4w==", + "dev": true, + "dependencies": { + "@colors/colors": "1.5.0", + "body-parser": "^1.19.0", + "braces": "^3.0.2", + "chokidar": "^3.5.1", + "connect": "^3.7.0", + "di": "^0.0.1", + "dom-serialize": "^2.2.1", + "glob": "^7.1.7", + "graceful-fs": "^4.2.6", + "http-proxy": "^1.18.1", + "isbinaryfile": "^4.0.8", + "lodash": "^4.17.21", + "log4js": "^6.4.1", + "mime": "^2.5.2", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.5", + "qjobs": "^1.2.0", + "range-parser": "^1.2.1", + "rimraf": "^3.0.2", + "socket.io": "^4.4.1", + "source-map": "^0.6.1", + "tmp": "^0.2.1", + "ua-parser-js": "^0.7.30", + "yargs": "^16.1.1" + }, + "bin": { + "karma": "bin/karma" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/karma-chrome-launcher": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.1.1.tgz", + "integrity": "sha512-hsIglcq1vtboGPAN+DGCISCFOxW+ZVnIqhDQcCMqqCp+4dmJ0Qpq5QAjkbA0X2L9Mi6OBkHi2Srrbmm7pUKkzQ==", + "dev": true, + "dependencies": { + "which": "^1.2.1" + } + }, + "node_modules/karma-chrome-launcher/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/karma-cli": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/karma-cli/-/karma-cli-2.0.0.tgz", + "integrity": "sha512-1Kb28UILg1ZsfqQmeELbPzuEb5C6GZJfVIk0qOr8LNYQuYWmAaqP16WpbpKEjhejDrDYyYOwwJXSZO6u7q5Pvw==", + "dev": true, + "dependencies": { + "resolve": "^1.3.3" + }, + "bin": { + "karma": "bin/karma" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/karma-jasmine": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-5.1.0.tgz", + "integrity": "sha512-i/zQLFrfEpRyQoJF9fsCdTMOF5c2dK7C7OmsuKg2D0YSsuZSfQDiLuaiktbuio6F2wiCsZSnSnieIQ0ant/uzQ==", + "dev": true, + "dependencies": { + "jasmine-core": "^4.1.0" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "karma": "^6.0.0" + } + }, + "node_modules/karma-jasmine-html-reporter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-2.0.0.tgz", + "integrity": "sha512-SB8HNNiazAHXM1vGEzf8/tSyEhkfxuDdhYdPBX2Mwgzt0OuF2gicApQ+uvXLID/gXyJQgvrM9+1/2SxZFUUDIA==", + "dev": true, + "peerDependencies": { + "jasmine-core": "^4.0.0", + "karma": "^6.0.0", + "karma-jasmine": "^5.0.0" + } + }, + "node_modules/karma-mocha-reporter": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/karma-mocha-reporter/-/karma-mocha-reporter-2.2.5.tgz", + "integrity": "sha512-Hr6nhkIp0GIJJrvzY8JFeHpQZNseuIakGac4bpw8K1+5F0tLb6l7uvXRa8mt2Z+NVwYgCct4QAfp2R2QP6o00w==", + "dev": true, + "dependencies": { + "chalk": "^2.1.0", + "log-symbols": "^2.1.0", + "strip-ansi": "^4.0.0" + }, + "peerDependencies": { + "karma": ">=0.13" + } + }, + "node_modules/karma-mocha-reporter/node_modules/ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/karma-mocha-reporter/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/karma-mocha-reporter/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/karma-mocha-reporter/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/karma-mocha-reporter/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/karma-mocha-reporter/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/karma-mocha-reporter/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/karma-mocha-reporter/node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "dev": true, + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/karma-mocha-reporter/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/karma-sourcemap-loader": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/karma-sourcemap-loader/-/karma-sourcemap-loader-0.3.8.tgz", + "integrity": "sha512-zorxyAakYZuBcHRJE+vbrK2o2JXLFWK8VVjiT/6P+ltLBUGUvqTEkUiQ119MGdOrK7mrmxXHZF1/pfT6GgIZ6g==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2" + } + }, + "node_modules/karma-webpack": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/karma-webpack/-/karma-webpack-5.0.0.tgz", + "integrity": "sha512-+54i/cd3/piZuP3dr54+NcFeKOPnys5QeM1IY+0SPASwrtHsliXUiCL50iW+K9WWA7RvamC4macvvQ86l3KtaA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3", + "minimatch": "^3.0.4", + "webpack-merge": "^4.1.5" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "dev": true, + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==", + "dev": true + }, + "node_modules/lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==", + "dev": true + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "dev": true, + "dependencies": { + "chalk": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-symbols/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-symbols/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-symbols/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/log-symbols/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/log-symbols/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/log-symbols/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-symbols/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/log4js": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.6.1.tgz", + "integrity": "sha512-J8VYFH2UQq/xucdNu71io4Fo+purYYudyErgBbswWKO0MC6QVOERRomt5su/z6d3RJSmLyTGmXl3Q/XjKCf+/A==", + "dev": true, + "dependencies": { + "date-format": "^4.0.13", + "debug": "^4.3.4", + "flatted": "^3.2.6", + "rfdc": "^1.3.0", + "streamroller": "^3.1.2" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "dev": true + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/mock-socket": { + "version": "9.1.5", + "resolved": "https://registry.npmjs.org/mock-socket/-/mock-socket-9.1.5.tgz", + "integrity": "sha512-3DeNIcsQixWHHKk6NdoBhWI4t1VMj5/HzfnI1rE/pLl5qKx7+gd4DNA07ehTaZ6MoUU053si6Hd+YtiM/tQZfg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "node_modules/node-releases": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", + "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", + "dev": true + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", + "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/peggy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/peggy/-/peggy-1.2.0.tgz", + "integrity": "sha512-PQ+NKpAobImfMprYQtc4Egmyi29bidRGEX0kKjCU5uuW09s0Cthwqhfy7mLkwcB4VcgacE5L/ZjruD/kOPCUUw==", + "dev": true, + "bin": { + "peggy": "bin/peggy" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz", + "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "dependencies": { + "fast-diff": "^1.1.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/qjobs": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", + "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", + "dev": true, + "engines": { + "node": ">=0.9" + } + }, + "node_modules/qs": { + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/rechoir": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", + "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", + "dev": true, + "dependencies": { + "resolve": "^1.9.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/rechoir/node_modules/resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true + }, + "node_modules/resolve": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz", + "integrity": "sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==", + "dev": true, + "dependencies": { + "path-parse": "^1.0.5" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-cwd/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rfdc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", + "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", + "dev": true + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "node_modules/schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/semver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha512-mfmm3/H9+67MCVix1h+IXTpDwL6710LyHuk7+cWC9T1mE0qz4iHhh6r4hU2wrIT9iTsAAC2XQRvfblL028cpLw==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/socket.io": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.5.2.tgz", + "integrity": "sha512-6fCnk4ARMPZN448+SQcnn1u8OHUC72puJcNtSgg2xS34Cu7br1gQ09YKkO1PFfDn/wyUE9ZgMAwosJed003+NQ==", + "dev": true, + "dependencies": { + "accepts": "~1.3.4", + "base64id": "~2.0.0", + "debug": "~4.3.2", + "engine.io": "~6.2.0", + "socket.io-adapter": "~2.4.0", + "socket.io-parser": "~4.2.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/socket.io-adapter": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.4.0.tgz", + "integrity": "sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg==", + "dev": true + }, + "node_modules/socket.io-parser": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.1.tgz", + "integrity": "sha512-V4GrkLy+HeF1F/en3SpUaM+7XxYXpuMUWLGde1kSSh5nQMN4hLrbPIkD+otwh6q9R6NOQBN4AMaOZ2zVjui82g==", + "dev": true, + "dependencies": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/streamroller": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.1.2.tgz", + "integrity": "sha512-wZswqzbgGGsXYIrBYhOE0yP+nQ6XRk7xDcYwuQAGTYXdyAUmvgVFE0YU1g5pvQT0m7GBaQfYcSnlHbapuK0H0A==", + "dev": true, + "dependencies": { + "date-format": "^4.0.13", + "debug": "^4.3.4", + "fs-extra": "^8.1.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/streamroller/node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/terser": { + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.15.0.tgz", + "integrity": "sha512-L1BJiXVmheAQQy+as0oF3Pwtlo4s3Wi1X2zNZ2NxOB4wx9bdS9Vk67XQENLFdLYGCK/Z2di53mTj/hBafR+dTA==", + "dev": true, + "dependencies": { + "@jridgewell/source-map": "^0.3.2", + "acorn": "^8.5.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.6", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz", + "integrity": "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.14", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.0", + "terser": "^5.14.1" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/timsort": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", + "integrity": "sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A==", + "dev": true + }, + "node_modules/tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dev": true, + "dependencies": { + "rimraf": "^3.0.0" + }, + "engines": { + "node": ">=8.17.0" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/ts-loader": { + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.3.1.tgz", + "integrity": "sha512-OkyShkcZTsTwyS3Kt7a4rsT/t2qvEVQuKCTg4LJmpj9fhFR7ukGdZwV6Qq3tRUkqcXtfGpPR7+hFKHCG/0d3Lw==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "enhanced-resolve": "^5.0.0", + "micromatch": "^4.0.0", + "semver": "^7.3.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "typescript": "*", + "webpack": "^5.0.0" + } + }, + "node_modules/ts-loader/node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ts-pegjs": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/ts-pegjs/-/ts-pegjs-1.2.2.tgz", + "integrity": "sha512-nzxDbdHHKvYjfW05CBN8wvVXjx1+7uHg/aRiujcMNwUfdIaXzJ7Guw5gNI62scv7H2ymn2iHHZseDBIuO+B8gA==", + "dev": true, + "bin": { + "tspegjs": "src/cli.js" + }, + "peerDependencies": { + "peggy": "^1.2.0" + } + }, + "node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "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" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typescript": { + "version": "4.8.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.2.tgz", + "integrity": "sha512-C0I1UsrrDHo2fYI5oaCGbSejwX4ch+9Y5jTQELvovfmFkK3HHSZJB8MSJcWLmCUBzQBchCrZ9rMRV6GuNrvGtw==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/ua-parser-js": { + "version": "0.7.31", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.31.tgz", + "integrity": "sha512-qLK/Xe9E2uzmYI3qLeOmI0tEOt+TBBQyUIAh4aAgU05FVYzeZrKUdkAZfBNVGRaHVgV0TDkdEngJSw/SyQchkQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/ua-parser-js" + }, + { + "type": "paypal", + "url": "https://paypal.me/faisalman" + } + ], + "engines": { + "node": "*" + } + }, + "node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.7.tgz", + "integrity": "sha512-iN/XYesmZ2RmmWAiI4Z5rq0YqSiv0brj9Ce9CfhNE4xIW2h+MFxcgkxIzZ+ShkFPUkjU3gQ+3oypadD3RAMtrg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "browserslist-lint": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/validator": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-8.2.0.tgz", + "integrity": "sha512-Yw5wW34fSv5spzTXNkokD6S6/Oq92d8q/t14TqsS3fAiA1RYnxSFSIZ+CY3n6PGGRCq5HhJTSepQvFUS2QUDxA==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/void-elements": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", + "integrity": "sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "dev": true, + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack": { + "version": "5.74.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.74.0.tgz", + "integrity": "sha512-A2InDwnhhGN4LYctJj6M1JEaGL7Luj6LOmyBHjcI8529cm5p6VXiTIW2sn6ffvEAKmveLzvu4jrihwXtPojlAA==", + "dev": true, + "dependencies": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^0.0.51", + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/wasm-edit": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "acorn": "^8.7.1", + "acorn-import-assertions": "^1.7.6", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.10.0", + "es-module-lexer": "^0.9.0", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.1.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.1.3", + "watchpack": "^2.4.0", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-cli": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.10.0.tgz", + "integrity": "sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w==", + "dev": true, + "dependencies": { + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^1.2.0", + "@webpack-cli/info": "^1.5.0", + "@webpack-cli/serve": "^1.7.0", + "colorette": "^2.0.14", + "commander": "^7.0.0", + "cross-spawn": "^7.0.3", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^2.2.0", + "rechoir": "^0.7.0", + "webpack-merge": "^5.7.3" + }, + "bin": { + "webpack-cli": "bin/cli.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "4.x.x || 5.x.x" + }, + "peerDependenciesMeta": { + "@webpack-cli/generators": { + "optional": true + }, + "@webpack-cli/migrate": { + "optional": true + }, + "webpack-bundle-analyzer": { + "optional": true + }, + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/webpack-cli/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/webpack-cli/node_modules/webpack-merge": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", + "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", + "dev": true, + "dependencies": { + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/webpack-merge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.2.tgz", + "integrity": "sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==", + "dev": true, + "dependencies": { + "lodash": "^4.17.15" + } + }, + "node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wildcard": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", + "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", + "dev": true + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/ws": { + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", + "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/z-schema": { + "version": "3.18.4", + "resolved": "https://registry.npmjs.org/z-schema/-/z-schema-3.18.4.tgz", + "integrity": "sha512-DUOKC/IhbkdLKKiV89gw9DUauTV8U/8yJl1sjf6MtDmzevLKOF2duNJ495S3MFVjqZarr+qNGCPbkg4mu4PpLw==", + "dev": true, + "dependencies": { + "lodash.get": "^4.0.0", + "lodash.isequal": "^4.0.0", + "validator": "^8.0.0" + }, + "bin": { + "z-schema": "bin/z-schema" + }, + "optionalDependencies": { + "commander": "^2.7.1" + } + } + }, + "dependencies": { + "@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "dev": true + }, + "@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "dev": true + }, + "@eslint/eslintrc": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.1.tgz", + "integrity": "sha512-OhSY22oQQdw3zgPOOwdoj01l/Dzl1Z+xyUP33tkSN+aqyEhymJCcPHyXt+ylW8FSe0TfRC2VG+ROQOapD0aZSQ==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.4.0", + "globals": "^13.15.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + } + } + }, + "@humanwhocodes/config-array": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.10.4.tgz", + "integrity": "sha512-mXAIHxZT3Vcpg83opl1wGlVZ9xydbfZO3r5YfRSH6Gpp2J/PfdBP0wbDa2sO6/qRbcalpoevVyW6A/fI6LfeMw==", + "dev": true, + "requires": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + } + }, + "@humanwhocodes/gitignore-to-minimatch": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/gitignore-to-minimatch/-/gitignore-to-minimatch-1.0.2.tgz", + "integrity": "sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA==", + "dev": true + }, + "@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true + }, + "@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true + }, + "@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true + }, + "@jridgewell/source-map": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", + "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "dev": true, + "requires": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, + "@jridgewell/trace-mapping": { + "version": "0.3.15", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.15.tgz", + "integrity": "sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "@microsoft/api-documenter": { + "version": "7.7.20", + "resolved": "https://registry.npmjs.org/@microsoft/api-documenter/-/api-documenter-7.7.20.tgz", + "integrity": "sha512-B2gOOoYJDOqAn9iPg4Z9ay03MYtjmY2ldF3u1povTkzl5eJWERMDuuK5BLOdGdDTMr6TUd/FrhERFEeJNeQ3rg==", + "dev": true, + "requires": { + "@microsoft/api-extractor-model": "7.7.11", + "@microsoft/tsdoc": "0.12.19", + "@rushstack/node-core-library": "3.19.7", + "@rushstack/ts-command-line": "4.3.14", + "colors": "~1.2.1", + "js-yaml": "~3.13.1", + "resolve": "1.8.1" + } + }, + "@microsoft/api-extractor": { + "version": "7.7.11", + "resolved": "https://registry.npmjs.org/@microsoft/api-extractor/-/api-extractor-7.7.11.tgz", + "integrity": "sha512-kd2kakdDoRgI54J5H11a76hyYZBMhtp4piwWAy4bYTwlQT0v/tp+G/UMMgjUL4vKf0kTNhitEUX/0LfQb1AHzQ==", + "dev": true, + "requires": { + "@microsoft/api-extractor-model": "7.7.10", + "@microsoft/tsdoc": "0.12.19", + "@rushstack/node-core-library": "3.19.6", + "@rushstack/ts-command-line": "4.3.13", + "colors": "~1.2.1", + "lodash": "~4.17.15", + "resolve": "1.8.1", + "source-map": "~0.6.1", + "typescript": "~3.7.2" + }, + "dependencies": { + "@microsoft/api-extractor-model": { + "version": "7.7.10", + "resolved": "https://registry.npmjs.org/@microsoft/api-extractor-model/-/api-extractor-model-7.7.10.tgz", + "integrity": "sha512-gMFDXwUgoQYz9TgatyNPALDdZN4xBC3Un3fGwlzME+vM13PoJ26pGuqI7kv/OlK9+q2sgrEdxWns8D3UnLf2TA==", + "dev": true, + "requires": { + "@microsoft/tsdoc": "0.12.19", + "@rushstack/node-core-library": "3.19.6" + } + }, + "@rushstack/node-core-library": { + "version": "3.19.6", + "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-3.19.6.tgz", + "integrity": "sha512-1+FoymIdr9W9k0D8fdZBBPwi5YcMwh/RyESuL5bY29rLICFxSLOPK+ImVZ1OcWj9GEMsvDx5pNpJ311mHQk+MA==", + "dev": true, + "requires": { + "@types/node": "10.17.13", + "colors": "~1.2.1", + "fs-extra": "~7.0.1", + "jju": "~1.4.0", + "semver": "~5.3.0", + "timsort": "~0.3.0", + "z-schema": "~3.18.3" + } + }, + "@rushstack/ts-command-line": { + "version": "4.3.13", + "resolved": "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-4.3.13.tgz", + "integrity": "sha512-BUBbjYu67NJGQkpHu8aYm7kDoMFizL1qx78+72XE3mX/vDdXYJzw/FWS7TPcMJmY4kNlYs979v2B0Q0qa2wRiw==", + "dev": true, + "requires": { + "@types/argparse": "1.0.33", + "argparse": "~1.0.9", + "colors": "~1.2.1" + } + }, + "typescript": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.7.7.tgz", + "integrity": "sha512-MmQdgo/XenfZPvVLtKZOq9jQQvzaUAUpcKW8Z43x9B2fOm4S5g//tPtMweZUIP+SoBqrVPEIm+dJeQ9dfO0QdA==", + "dev": true + } + } + }, + "@microsoft/api-extractor-model": { + "version": "7.7.11", + "resolved": "https://registry.npmjs.org/@microsoft/api-extractor-model/-/api-extractor-model-7.7.11.tgz", + "integrity": "sha512-Kf3RytYDq7sP4ASaaA9IcvaOPbVj1Xj34E2Wxd9DznI7sG4HzcpoOGmxaZHCzyYVh7wfAaAlvcXf3SV+djhNZw==", + "dev": true, + "requires": { + "@microsoft/tsdoc": "0.12.19", + "@rushstack/node-core-library": "3.19.7" + } + }, + "@microsoft/tsdoc": { + "version": "0.12.19", + "resolved": "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.12.19.tgz", + "integrity": "sha512-IpgPxHrNxZiMNUSXqR1l/gePKPkfAmIKoDRP9hp7OwjU29ZR8WCJsOJ8iBKgw0Qk+pFwR+8Y1cy8ImLY6e9m4A==", + "dev": true + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@rushstack/node-core-library": { + "version": "3.19.7", + "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-3.19.7.tgz", + "integrity": "sha512-gKE/OXH5GAj8yJ1kEyRW68UekJernilZ3QTRgmQ0MUHBCQmtZ9Q6T5PQ1sVbcL4teH8BMdpZeFy1DKnHs8h3PA==", + "dev": true, + "requires": { + "@types/node": "10.17.13", + "colors": "~1.2.1", + "fs-extra": "~7.0.1", + "jju": "~1.4.0", + "semver": "~5.3.0", + "timsort": "~0.3.0", + "z-schema": "~3.18.3" + } + }, + "@rushstack/ts-command-line": { + "version": "4.3.14", + "resolved": "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-4.3.14.tgz", + "integrity": "sha512-YJZIyKvkm3f6ZdKSfMntHS9542Y2mmMWzaiPPoXxLFZntKxEIDE3WfUNlvOSo3yK4fNd09Tz3hfvTivQNHSiKQ==", + "dev": true, + "requires": { + "@types/argparse": "1.0.33", + "argparse": "~1.0.9", + "colors": "~1.2.1" + } + }, + "@socket.io/component-emitter": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", + "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==", + "dev": true + }, + "@types/argparse": { + "version": "1.0.33", + "resolved": "https://registry.npmjs.org/@types/argparse/-/argparse-1.0.33.tgz", + "integrity": "sha512-VQgHxyPMTj3hIlq9SY1mctqx+Jj8kpQfoLvDlVSDNOyuYs8JYfkuY3OW/4+dO657yPmNhHpePRx0/Tje5ImNVQ==", + "dev": true + }, + "@types/cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", + "dev": true + }, + "@types/cors": { + "version": "2.8.12", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz", + "integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==", + "dev": true + }, + "@types/eslint": { + "version": "8.4.6", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.6.tgz", + "integrity": "sha512-/fqTbjxyFUaYNO7VcW5g+4npmqVACz1bB7RTHYuLj+PRjw9hrCwrUXVQFpChUS0JsyEFvMZ7U/PfmvWgxJhI9g==", + "dev": true, + "requires": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "@types/eslint-scope": { + "version": "3.7.4", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", + "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", + "dev": true, + "requires": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "@types/estree": { + "version": "0.0.51", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", + "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", + "dev": true + }, + "@types/jasmine": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-4.3.0.tgz", + "integrity": "sha512-u1jWakf8CWvLfSEZyxmzkgBzOEvXH/szpT0e6G8BTkx5Eu0BhDn7sbc5dz0JBN/6Wwm9rBe+JAsk9tJRyH9ZkA==", + "dev": true + }, + "@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "dev": true + }, + "@types/node": { + "version": "10.17.13", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.13.tgz", + "integrity": "sha512-pMCcqU2zT4TjqYFrWtYHKal7Sl30Ims6ulZ4UFXxI4xbtQqK/qqKwkDoBFCfooRqqmRu9vY3xaJRwxSh673aYg==", + "dev": true + }, + "@typescript-eslint/eslint-plugin": { + "version": "5.36.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.36.2.tgz", + "integrity": "sha512-OwwR8LRwSnI98tdc2z7mJYgY60gf7I9ZfGjN5EjCwwns9bdTuQfAXcsjSB2wSQ/TVNYSGKf4kzVXbNGaZvwiXw==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "5.36.2", + "@typescript-eslint/type-utils": "5.36.2", + "@typescript-eslint/utils": "5.36.2", + "debug": "^4.3.4", + "functional-red-black-tree": "^1.0.1", + "ignore": "^5.2.0", + "regexpp": "^3.2.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "dependencies": { + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "@typescript-eslint/parser": { + "version": "5.36.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.36.2.tgz", + "integrity": "sha512-qS/Kb0yzy8sR0idFspI9Z6+t7mqk/oRjnAYfewG+VN73opAUvmYL3oPIMmgOX6CnQS6gmVIXGshlb5RY/R22pA==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "5.36.2", + "@typescript-eslint/types": "5.36.2", + "@typescript-eslint/typescript-estree": "5.36.2", + "debug": "^4.3.4" + } + }, + "@typescript-eslint/scope-manager": { + "version": "5.36.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.36.2.tgz", + "integrity": "sha512-cNNP51L8SkIFSfce8B1NSUBTJTu2Ts4nWeWbFrdaqjmn9yKrAaJUBHkyTZc0cL06OFHpb+JZq5AUHROS398Orw==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.36.2", + "@typescript-eslint/visitor-keys": "5.36.2" + } + }, + "@typescript-eslint/type-utils": { + "version": "5.36.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.36.2.tgz", + "integrity": "sha512-rPQtS5rfijUWLouhy6UmyNquKDPhQjKsaKH0WnY6hl/07lasj8gPaH2UD8xWkePn6SC+jW2i9c2DZVDnL+Dokw==", + "dev": true, + "requires": { + "@typescript-eslint/typescript-estree": "5.36.2", + "@typescript-eslint/utils": "5.36.2", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/types": { + "version": "5.36.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.36.2.tgz", + "integrity": "sha512-9OJSvvwuF1L5eS2EQgFUbECb99F0mwq501w0H0EkYULkhFa19Qq7WFbycdw1PexAc929asupbZcgjVIe6OK/XQ==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "5.36.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.36.2.tgz", + "integrity": "sha512-8fyH+RfbKc0mTspfuEjlfqA4YywcwQK2Amcf6TDOwaRLg7Vwdu4bZzyvBZp4bjt1RRjQ5MDnOZahxMrt2l5v9w==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.36.2", + "@typescript-eslint/visitor-keys": "5.36.2", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "dependencies": { + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "@typescript-eslint/utils": { + "version": "5.36.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.36.2.tgz", + "integrity": "sha512-uNcopWonEITX96v9pefk9DC1bWMdkweeSsewJ6GeC7L6j2t0SJywisgkr9wUTtXk90fi2Eljj90HSHm3OGdGRg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "@typescript-eslint/scope-manager": "5.36.2", + "@typescript-eslint/types": "5.36.2", + "@typescript-eslint/typescript-estree": "5.36.2", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "5.36.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.36.2.tgz", + "integrity": "sha512-BtRvSR6dEdrNt7Net2/XDjbYKU5Ml6GqJgVfXT0CxTCJlnIqK7rAGreuWKMT2t8cFUT2Msv5oxw0GMRD7T5J7A==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.36.2", + "eslint-visitor-keys": "^3.3.0" + } + }, + "@webassemblyjs/ast": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", + "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "dev": true, + "requires": { + "@webassemblyjs/helper-numbers": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", + "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", + "dev": true + }, + "@webassemblyjs/helper-api-error": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", + "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", + "dev": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", + "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", + "dev": true + }, + "@webassemblyjs/helper-numbers": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", + "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "dev": true, + "requires": { + "@webassemblyjs/floating-point-hex-parser": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", + "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", + "dev": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", + "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", + "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "dev": true, + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", + "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "dev": true, + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", + "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", + "dev": true + }, + "@webassemblyjs/wasm-edit": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", + "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/helper-wasm-section": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-opt": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "@webassemblyjs/wast-printer": "1.11.1" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", + "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", + "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", + "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", + "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "@webpack-cli/configtest": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.2.0.tgz", + "integrity": "sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg==", + "dev": true, + "requires": {} + }, + "@webpack-cli/info": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.5.0.tgz", + "integrity": "sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ==", + "dev": true, + "requires": { + "envinfo": "^7.7.3" + } + }, + "@webpack-cli/serve": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.7.0.tgz", + "integrity": "sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==", + "dev": true, + "requires": {} + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "requires": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + } + }, + "acorn": { + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", + "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", + "dev": true + }, + "acorn-import-assertions": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", + "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", + "dev": true, + "requires": {} + }, + "acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "requires": {} + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "requires": {} + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "base64id": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", + "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", + "dev": true + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true + }, + "body-parser": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", + "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==", + "dev": true, + "requires": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.10.3", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "browserslist": { + "version": "4.21.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.3.tgz", + "integrity": "sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001370", + "electron-to-chromium": "^1.4.202", + "node-releases": "^2.0.6", + "update-browserslist-db": "^1.0.5" + } + }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "caniuse-lite": { + "version": "1.0.30001390", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001390.tgz", + "integrity": "sha512-sS4CaUM+/+vqQUlCvCJ2WtDlV81aWtHhqeEVkLokVJJa3ViN4zDxAGfq9R8i1m90uGHxo99cy10Od+lvn3hf0g==", + "dev": true + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + } + } + }, + "chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true + }, + "circular-dependency-plugin": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/circular-dependency-plugin/-/circular-dependency-plugin-5.2.2.tgz", + "integrity": "sha512-g38K9Cm5WRwlaH6g03B9OEz/0qRizI+2I7n+Gz+L5DxXJAPAiWQvwlYNm1V1jkdpUv95bOe/ASm2vfi/G560jQ==", + "dev": true, + "requires": {} + }, + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "colorette": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", + "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", + "dev": true + }, + "colors": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.2.5.tgz", + "integrity": "sha512-erNRLao/Y3Fv54qUa0LBB+//Uf3YwMUmdJinN20yMXm9zdKKqH9wt7R9IIVZ+K7ShzfpLV/Zg8+VyrBJYB4lpg==", + "dev": true + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "connect": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", + "dev": true, + "requires": { + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true + }, + "cookie": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "dev": true + }, + "cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dev": true, + "requires": { + "object-assign": "^4", + "vary": "^1" + } + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "custom-event": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", + "integrity": "sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg==", + "dev": true + }, + "date-format": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.13.tgz", + "integrity": "sha512-bnYCwf8Emc3pTD8pXnre+wfnjGtfi5ncMDKy7+cWZXbmRAsdWkOQHrfC1yz/KiwP5thDp2kCHWYWKBX4HP1hoQ==", + "dev": true + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true + }, + "destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "dev": true + }, + "di": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", + "integrity": "sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA==", + "dev": true + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "dom-serialize": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", + "integrity": "sha512-Yra4DbvoW7/Z6LBN560ZwXMjoNOSAN2wRsKFGc4iBeso+mpIA6qj1vfdf9HpMaKAqG6wXTy+1SYEzmNpKXOSsQ==", + "dev": true, + "requires": { + "custom-event": "~1.0.0", + "ent": "~2.2.0", + "extend": "^3.0.0", + "void-elements": "^2.0.0" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true + }, + "electron-to-chromium": { + "version": "1.4.241", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.241.tgz", + "integrity": "sha512-e7Wsh4ilaioBZ5bMm6+F4V5c11dh56/5Jwz7Hl5Tu1J7cnB+Pqx5qIF2iC7HPpfyQMqGSvvLP5bBAIDd2gAtGw==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true + }, + "engine.io": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.2.0.tgz", + "integrity": "sha512-4KzwW3F3bk+KlzSOY57fj/Jx6LyRQ1nbcyIadehl+AnXjKT7gDO0ORdRi/84ixvMKTym6ZKuxvbzN62HDDU1Lg==", + "dev": true, + "requires": { + "@types/cookie": "^0.4.1", + "@types/cors": "^2.8.12", + "@types/node": ">=10.0.0", + "accepts": "~1.3.4", + "base64id": "2.0.0", + "cookie": "~0.4.1", + "cors": "~2.8.5", + "debug": "~4.3.1", + "engine.io-parser": "~5.0.3", + "ws": "~8.2.3" + } + }, + "engine.io-parser": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.4.tgz", + "integrity": "sha512-+nVFp+5z1E3HcToEnO7ZIj3g+3k9389DvWtvJZz0T6/eOCPIyyxehFcedoYrZQrp0LgQbD9pPXhpMBKMd5QURg==", + "dev": true + }, + "enhanced-resolve": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz", + "integrity": "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + } + }, + "ent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", + "integrity": "sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA==", + "dev": true + }, + "envinfo": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", + "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", + "dev": true + }, + "es-module-lexer": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", + "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", + "dev": true + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true + }, + "eslint": { + "version": "8.23.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.23.0.tgz", + "integrity": "sha512-pBG/XOn0MsJcKcTRLr27S5HpzQo4kLr+HjLQIyK4EiCsijDl/TB+h5uEuJU6bQ8Edvwz1XWOjpaP2qgnXGpTcA==", + "dev": true, + "requires": { + "@eslint/eslintrc": "^1.3.1", + "@humanwhocodes/config-array": "^0.10.4", + "@humanwhocodes/gitignore-to-minimatch": "^1.0.2", + "@humanwhocodes/module-importer": "^1.0.1", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.4.0", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^6.0.1", + "globals": "^13.15.0", + "globby": "^11.1.0", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0" + }, + "dependencies": { + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + } + } + }, + "eslint-config-prettier": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", + "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", + "dev": true, + "requires": {} + }, + "eslint-plugin-prettier": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz", + "integrity": "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==", + "dev": true, + "requires": { + "prettier-linter-helpers": "^1.0.0" + } + }, + "eslint-plugin-tree-shaking": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-tree-shaking/-/eslint-plugin-tree-shaking-1.10.0.tgz", + "integrity": "sha512-2ZKkV+56+yTk0F6iq2pAwdxNvShjas07XGozMV6nen+ZGVSA8/TndoXfpPHt8r7M9sbE2XVRQ3iaU7535vdNpw==", + "dev": true + }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^2.0.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true + } + } + }, + "eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true + }, + "espree": { + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.0.tgz", + "integrity": "sha512-DQmnRpLj7f6TgN/NYb0MTzJXL+vJF9h3pHy4JhCIs3zwcgez8xmGg3sXHcEO97BrmO2OSvCwMdfdlyl+E9KjOw==", + "dev": true, + "requires": { + "acorn": "^8.8.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.3.0" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "fast-diff": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", + "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", + "dev": true + }, + "fast-glob": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", + "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + } + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "fastest-levenshtein": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", + "dev": true + }, + "fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, + "file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "requires": { + "flat-cache": "^3.0.4" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + } + } + }, + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "requires": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + } + }, + "flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "dev": true + }, + "follow-redirects": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", + "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==", + "dev": true + }, + "fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", + "dev": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "get-intrinsic": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz", + "integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + } + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "requires": { + "is-glob": "^4.0.3" + } + }, + "glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true + }, + "globals": { + "version": "13.17.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", + "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + } + }, + "graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true + }, + "grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true + }, + "http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "requires": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "dependencies": { + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true + } + } + }, + "http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dev": true, + "requires": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "interpret": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", + "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", + "dev": true + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-core-module": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz", + "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "isbinaryfile": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", + "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true + }, + "jasmine-core": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-4.4.0.tgz", + "integrity": "sha512-+l482uImx5BVd6brJYlaHe2UwfKoZBqQfNp20ZmdNfsjGFTemGfqHLsXjKEW23w9R/m8WYeFc9JmIgjj6dUtAA==", + "dev": true + }, + "jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "dependencies": { + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jju": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/jju/-/jju-1.4.0.tgz", + "integrity": "sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==", + "dev": true + }, + "js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "karma": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/karma/-/karma-6.4.0.tgz", + "integrity": "sha512-s8m7z0IF5g/bS5ONT7wsOavhW4i4aFkzD4u4wgzAQWT4HGUeWI3i21cK2Yz6jndMAeHETp5XuNsRoyGJZXVd4w==", + "dev": true, + "requires": { + "@colors/colors": "1.5.0", + "body-parser": "^1.19.0", + "braces": "^3.0.2", + "chokidar": "^3.5.1", + "connect": "^3.7.0", + "di": "^0.0.1", + "dom-serialize": "^2.2.1", + "glob": "^7.1.7", + "graceful-fs": "^4.2.6", + "http-proxy": "^1.18.1", + "isbinaryfile": "^4.0.8", + "lodash": "^4.17.21", + "log4js": "^6.4.1", + "mime": "^2.5.2", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.5", + "qjobs": "^1.2.0", + "range-parser": "^1.2.1", + "rimraf": "^3.0.2", + "socket.io": "^4.4.1", + "source-map": "^0.6.1", + "tmp": "^0.2.1", + "ua-parser-js": "^0.7.30", + "yargs": "^16.1.1" + } + }, + "karma-chrome-launcher": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.1.1.tgz", + "integrity": "sha512-hsIglcq1vtboGPAN+DGCISCFOxW+ZVnIqhDQcCMqqCp+4dmJ0Qpq5QAjkbA0X2L9Mi6OBkHi2Srrbmm7pUKkzQ==", + "dev": true, + "requires": { + "which": "^1.2.1" + }, + "dependencies": { + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "karma-cli": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/karma-cli/-/karma-cli-2.0.0.tgz", + "integrity": "sha512-1Kb28UILg1ZsfqQmeELbPzuEb5C6GZJfVIk0qOr8LNYQuYWmAaqP16WpbpKEjhejDrDYyYOwwJXSZO6u7q5Pvw==", + "dev": true, + "requires": { + "resolve": "^1.3.3" + } + }, + "karma-jasmine": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-5.1.0.tgz", + "integrity": "sha512-i/zQLFrfEpRyQoJF9fsCdTMOF5c2dK7C7OmsuKg2D0YSsuZSfQDiLuaiktbuio6F2wiCsZSnSnieIQ0ant/uzQ==", + "dev": true, + "requires": { + "jasmine-core": "^4.1.0" + } + }, + "karma-jasmine-html-reporter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-2.0.0.tgz", + "integrity": "sha512-SB8HNNiazAHXM1vGEzf8/tSyEhkfxuDdhYdPBX2Mwgzt0OuF2gicApQ+uvXLID/gXyJQgvrM9+1/2SxZFUUDIA==", + "dev": true, + "requires": {} + }, + "karma-mocha-reporter": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/karma-mocha-reporter/-/karma-mocha-reporter-2.2.5.tgz", + "integrity": "sha512-Hr6nhkIp0GIJJrvzY8JFeHpQZNseuIakGac4bpw8K1+5F0tLb6l7uvXRa8mt2Z+NVwYgCct4QAfp2R2QP6o00w==", + "dev": true, + "requires": { + "chalk": "^2.1.0", + "log-symbols": "^2.1.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "karma-sourcemap-loader": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/karma-sourcemap-loader/-/karma-sourcemap-loader-0.3.8.tgz", + "integrity": "sha512-zorxyAakYZuBcHRJE+vbrK2o2JXLFWK8VVjiT/6P+ltLBUGUvqTEkUiQ119MGdOrK7mrmxXHZF1/pfT6GgIZ6g==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2" + } + }, + "karma-webpack": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/karma-webpack/-/karma-webpack-5.0.0.tgz", + "integrity": "sha512-+54i/cd3/piZuP3dr54+NcFeKOPnys5QeM1IY+0SPASwrtHsliXUiCL50iW+K9WWA7RvamC4macvvQ86l3KtaA==", + "dev": true, + "requires": { + "glob": "^7.1.3", + "minimatch": "^3.0.4", + "webpack-merge": "^4.1.5" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + }, + "levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "dev": true + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "requires": { + "p-locate": "^5.0.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==", + "dev": true + }, + "lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==", + "dev": true + }, + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "dev": true, + "requires": { + "chalk": "^2.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "log4js": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.6.1.tgz", + "integrity": "sha512-J8VYFH2UQq/xucdNu71io4Fo+purYYudyErgBbswWKO0MC6QVOERRomt5su/z6d3RJSmLyTGmXl3Q/XjKCf+/A==", + "dev": true, + "requires": { + "date-format": "^4.0.13", + "debug": "^4.3.4", + "flatted": "^3.2.6", + "rfdc": "^1.3.0", + "streamroller": "^3.1.2" + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "dev": true + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, + "micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + } + }, + "mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "dev": true + }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "requires": { + "mime-db": "1.52.0" + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "dev": true + }, + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "requires": { + "minimist": "^1.2.6" + } + }, + "mock-socket": { + "version": "9.1.5", + "resolved": "https://registry.npmjs.org/mock-socket/-/mock-socket-9.1.5.tgz", + "integrity": "sha512-3DeNIcsQixWHHKk6NdoBhWI4t1VMj5/HzfnI1rE/pLl5qKx7+gd4DNA07ehTaZ6MoUU053si6Hd+YtiM/tQZfg==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true + }, + "neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "node-releases": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", + "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", + "dev": true + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true + }, + "object-inspect": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", + "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", + "dev": true + }, + "on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "requires": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + } + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "requires": { + "p-limit": "^3.0.2" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "peggy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/peggy/-/peggy-1.2.0.tgz", + "integrity": "sha512-PQ+NKpAobImfMprYQtc4Egmyi29bidRGEX0kKjCU5uuW09s0Cthwqhfy7mLkwcB4VcgacE5L/ZjruD/kOPCUUw==", + "dev": true + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + } + } + }, + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true + }, + "prettier": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz", + "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==", + "dev": true + }, + "prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "requires": { + "fast-diff": "^1.1.2" + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "qjobs": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", + "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", + "dev": true + }, + "qs": { + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true + }, + "raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dev": true, + "requires": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "rechoir": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", + "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", + "dev": true, + "requires": { + "resolve": "^1.9.0" + }, + "dependencies": { + "resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dev": true, + "requires": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + } + } + }, + "regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true + }, + "resolve": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz", + "integrity": "sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==", + "dev": true, + "requires": { + "path-parse": "^1.0.5" + } + }, + "resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "requires": { + "resolve-from": "^5.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + } + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, + "rfdc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", + "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + }, + "semver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha512-mfmm3/H9+67MCVix1h+IXTpDwL6710LyHuk7+cWC9T1mE0qz4iHhh6r4hU2wrIT9iTsAAC2XQRvfblL028cpLw==", + "dev": true + }, + "serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "requires": { + "kind-of": "^6.0.2" + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "socket.io": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.5.2.tgz", + "integrity": "sha512-6fCnk4ARMPZN448+SQcnn1u8OHUC72puJcNtSgg2xS34Cu7br1gQ09YKkO1PFfDn/wyUE9ZgMAwosJed003+NQ==", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "base64id": "~2.0.0", + "debug": "~4.3.2", + "engine.io": "~6.2.0", + "socket.io-adapter": "~2.4.0", + "socket.io-parser": "~4.2.0" + } + }, + "socket.io-adapter": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.4.0.tgz", + "integrity": "sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg==", + "dev": true + }, + "socket.io-parser": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.1.tgz", + "integrity": "sha512-V4GrkLy+HeF1F/en3SpUaM+7XxYXpuMUWLGde1kSSh5nQMN4hLrbPIkD+otwh6q9R6NOQBN4AMaOZ2zVjui82g==", + "dev": true, + "requires": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true + }, + "streamroller": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.1.2.tgz", + "integrity": "sha512-wZswqzbgGGsXYIrBYhOE0yP+nQ6XRk7xDcYwuQAGTYXdyAUmvgVFE0YU1g5pvQT0m7GBaQfYcSnlHbapuK0H0A==", + "dev": true, + "requires": { + "date-format": "^4.0.13", + "debug": "^4.3.4", + "fs-extra": "^8.1.0" + }, + "dependencies": { + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + } + } + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true + }, + "tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true + }, + "terser": { + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.15.0.tgz", + "integrity": "sha512-L1BJiXVmheAQQy+as0oF3Pwtlo4s3Wi1X2zNZ2NxOB4wx9bdS9Vk67XQENLFdLYGCK/Z2di53mTj/hBafR+dTA==", + "dev": true, + "requires": { + "@jridgewell/source-map": "^0.3.2", + "acorn": "^8.5.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + } + }, + "terser-webpack-plugin": { + "version": "5.3.6", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz", + "integrity": "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==", + "dev": true, + "requires": { + "@jridgewell/trace-mapping": "^0.3.14", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.0", + "terser": "^5.14.1" + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "timsort": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", + "integrity": "sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A==", + "dev": true + }, + "tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dev": true, + "requires": { + "rimraf": "^3.0.0" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true + }, + "ts-loader": { + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.3.1.tgz", + "integrity": "sha512-OkyShkcZTsTwyS3Kt7a4rsT/t2qvEVQuKCTg4LJmpj9fhFR7ukGdZwV6Qq3tRUkqcXtfGpPR7+hFKHCG/0d3Lw==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "enhanced-resolve": "^5.0.0", + "micromatch": "^4.0.0", + "semver": "^7.3.4" + }, + "dependencies": { + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "ts-pegjs": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/ts-pegjs/-/ts-pegjs-1.2.2.tgz", + "integrity": "sha512-nzxDbdHHKvYjfW05CBN8wvVXjx1+7uHg/aRiujcMNwUfdIaXzJ7Guw5gNI62scv7H2ymn2iHHZseDBIuO+B8gA==", + "dev": true, + "requires": {} + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + } + }, + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1" + } + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "typescript": { + "version": "4.8.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.2.tgz", + "integrity": "sha512-C0I1UsrrDHo2fYI5oaCGbSejwX4ch+9Y5jTQELvovfmFkK3HHSZJB8MSJcWLmCUBzQBchCrZ9rMRV6GuNrvGtw==", + "dev": true + }, + "ua-parser-js": { + "version": "0.7.31", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.31.tgz", + "integrity": "sha512-qLK/Xe9E2uzmYI3qLeOmI0tEOt+TBBQyUIAh4aAgU05FVYzeZrKUdkAZfBNVGRaHVgV0TDkdEngJSw/SyQchkQ==", + "dev": true + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true + }, + "update-browserslist-db": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.7.tgz", + "integrity": "sha512-iN/XYesmZ2RmmWAiI4Z5rq0YqSiv0brj9Ce9CfhNE4xIW2h+MFxcgkxIzZ+ShkFPUkjU3gQ+3oypadD3RAMtrg==", + "dev": true, + "requires": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + } + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "dev": true + }, + "validator": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-8.2.0.tgz", + "integrity": "sha512-Yw5wW34fSv5spzTXNkokD6S6/Oq92d8q/t14TqsS3fAiA1RYnxSFSIZ+CY3n6PGGRCq5HhJTSepQvFUS2QUDxA==", + "dev": true + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "dev": true + }, + "void-elements": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", + "integrity": "sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung==", + "dev": true + }, + "watchpack": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "dev": true, + "requires": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + } + }, + "webpack": { + "version": "5.74.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.74.0.tgz", + "integrity": "sha512-A2InDwnhhGN4LYctJj6M1JEaGL7Luj6LOmyBHjcI8529cm5p6VXiTIW2sn6ffvEAKmveLzvu4jrihwXtPojlAA==", + "dev": true, + "requires": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^0.0.51", + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/wasm-edit": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "acorn": "^8.7.1", + "acorn-import-assertions": "^1.7.6", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.10.0", + "es-module-lexer": "^0.9.0", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.1.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.1.3", + "watchpack": "^2.4.0", + "webpack-sources": "^3.2.3" + } + }, + "webpack-cli": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.10.0.tgz", + "integrity": "sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w==", + "dev": true, + "requires": { + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^1.2.0", + "@webpack-cli/info": "^1.5.0", + "@webpack-cli/serve": "^1.7.0", + "colorette": "^2.0.14", + "commander": "^7.0.0", + "cross-spawn": "^7.0.3", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^2.2.0", + "rechoir": "^0.7.0", + "webpack-merge": "^5.7.3" + }, + "dependencies": { + "commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true + }, + "webpack-merge": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", + "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", + "dev": true, + "requires": { + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" + } + } + } + }, + "webpack-merge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.2.tgz", + "integrity": "sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==", + "dev": true, + "requires": { + "lodash": "^4.17.15" + } + }, + "webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "wildcard": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", + "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", + "dev": true + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "ws": { + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", + "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", + "dev": true, + "requires": {} + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + } + }, + "yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true + }, + "z-schema": { + "version": "3.18.4", + "resolved": "https://registry.npmjs.org/z-schema/-/z-schema-3.18.4.tgz", + "integrity": "sha512-DUOKC/IhbkdLKKiV89gw9DUauTV8U/8yJl1sjf6MtDmzevLKOF2duNJ495S3MFVjqZarr+qNGCPbkg4mu4PpLw==", + "dev": true, + "requires": { + "commander": "^2.7.1", + "lodash.get": "^4.0.0", + "lodash.isequal": "^4.0.0", + "validator": "^8.0.0" + } + } + } +} From 128a05b3be6bfccede1445dffd4e9c9c09420cce Mon Sep 17 00:00:00 2001 From: John Riordan Date: Sat, 3 Sep 2022 23:33:00 -0400 Subject: [PATCH 10/73] Fix broken DTMF test --- .../web/session-description-handler.spec.ts | 26 ++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/test/spec/platform/web/session-description-handler.spec.ts b/test/spec/platform/web/session-description-handler.spec.ts index 4d585a232..79939942f 100644 --- a/test/spec/platform/web/session-description-handler.spec.ts +++ b/test/spec/platform/web/session-description-handler.spec.ts @@ -610,7 +610,31 @@ describe("Web SessionDescriptionHandler", () => { if (!answer) { throw new Error("Answer undefined."); } - return sdh1.setDescription(answer.body); + return sdh1.setDescription(answer.body).then(() => { + // Wait until both ends are reporting connected otherwise things + // may not yet work as expected (sending DTMF for example). + return new Promise((resolve) => { + const resolveIfConnected = (): void => { + if ( + sdh1.peerConnection?.connectionState === "connected" && + sdh2.peerConnection?.connectionState === "connected" + ) { + resolve(); + } + }; + resolveIfConnected(); + sdh1.peerConnectionDelegate = { + onconnectionstatechange: (): void => { + resolveIfConnected(); + } + }; + sdh2.peerConnectionDelegate = { + onconnectionstatechange: (): void => { + resolveIfConnected(); + } + }; + }); + }); }); it("signaling state should be stable", () => { From 91e575b574c11dc68a7e84ccb7017b666500d0d0 Mon Sep 17 00:00:00 2001 From: John Riordan Date: Mon, 5 Sep 2022 09:00:31 -0400 Subject: [PATCH 11/73] Fix small warning on documentation generation --- src/grammar/uri.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/grammar/uri.ts b/src/grammar/uri.ts index 499f0b611..e4c938941 100644 --- a/src/grammar/uri.ts +++ b/src/grammar/uri.ts @@ -243,8 +243,8 @@ export class URI extends Parameters { /** * Returns true if URIs are equivalent per RFC 3261 Section 19.1.4. - * @param a URI to compare - * @param b URI to compare + * @param a - URI to compare + * @param b - URI to compare * * @remarks * 19.1.4 URI Comparison From 26ca79855efc7e120e9ebbb94b0b7f07ec4044b0 Mon Sep 17 00:00:00 2001 From: nnaoi <31946560+nnaoi@users.noreply.github.com> Date: Thu, 8 Jul 2021 17:44:17 +0900 Subject: [PATCH 12/73] fix typo in docs/session-description-handler.md --- docs/session-description-handler.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/session-description-handler.md b/docs/session-description-handler.md index c444c48a8..1370476b1 100644 --- a/docs/session-description-handler.md +++ b/docs/session-description-handler.md @@ -147,7 +147,7 @@ import { Web } from "sip.js"; // The Session.sessionDescriptionHandlerOptionsReInvite property // may be used to pass options to the SessionDescriptionHandler. -const sessionDescriptionHandlerOptions: Web.SesionDescriptionHandlerOptions = { +const sessionDescriptionHandlerOptions: Web.SessionDescriptionHandlerOptions = { hold: true; // set to false to "unhold" session } session.sessionDescriptionHandlerOptionsReInvite = sessionDescriptionHandlerOptions; From 52d129a3ea9825742e049c265eaecb7d82316d1e Mon Sep 17 00:00:00 2001 From: John Riordan Date: Mon, 5 Sep 2022 15:27:00 -0400 Subject: [PATCH 13/73] Update vscode workspace settings --- .vscode/settings.json | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index 3c22355db..14f42a689 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -2,5 +2,10 @@ "files.associations": { "*.json": "jsonc" }, - "typescript.tsdk": "node_modules/typescript/lib" -} \ No newline at end of file + "typescript.tsdk": "./node_modules/typescript/lib", + "files.exclude": { + "**/*.js": { + "when": "$(basename).ts" + } + } +} From 5ac8def12a3f325c9540f418ef02a674d74f99c1 Mon Sep 17 00:00:00 2001 From: John Riordan Date: Mon, 5 Sep 2022 16:09:00 -0400 Subject: [PATCH 14/73] Update doc genererator dependency --- package-lock.json | 368 +++++++++++++++++++++++++++++++++++++++------- package.json | 2 +- 2 files changed, 318 insertions(+), 52 deletions(-) diff --git a/package-lock.json b/package-lock.json index 38533c9cb..0727d5b55 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "version": "0.20.0", "license": "MIT", "devDependencies": { - "@microsoft/api-documenter": "7.7.20", + "@microsoft/api-documenter": "^7.19.10", "@microsoft/api-extractor": "7.7.11", "@types/jasmine": "^4.3.0", "@typescript-eslint/eslint-plugin": "^5.36.1", @@ -202,23 +202,41 @@ } }, "node_modules/@microsoft/api-documenter": { - "version": "7.7.20", - "resolved": "https://registry.npmjs.org/@microsoft/api-documenter/-/api-documenter-7.7.20.tgz", - "integrity": "sha512-B2gOOoYJDOqAn9iPg4Z9ay03MYtjmY2ldF3u1povTkzl5eJWERMDuuK5BLOdGdDTMr6TUd/FrhERFEeJNeQ3rg==", + "version": "7.19.10", + "resolved": "https://registry.npmjs.org/@microsoft/api-documenter/-/api-documenter-7.19.10.tgz", + "integrity": "sha512-I2c4EkmiCDQ3pgJPpq4k9D8Hatml2PuWHwHimwo7HECeqQm4Vcqkw6cCZ0MPKQrpfmyG9WyK+vrhbOL0pxyfWA==", "dev": true, "dependencies": { - "@microsoft/api-extractor-model": "7.7.11", - "@microsoft/tsdoc": "0.12.19", - "@rushstack/node-core-library": "3.19.7", - "@rushstack/ts-command-line": "4.3.14", + "@microsoft/api-extractor-model": "7.24.0", + "@microsoft/tsdoc": "0.14.1", + "@rushstack/node-core-library": "3.51.1", + "@rushstack/ts-command-line": "4.12.2", "colors": "~1.2.1", "js-yaml": "~3.13.1", - "resolve": "1.8.1" + "resolve": "~1.17.0" }, "bin": { "api-documenter": "bin/api-documenter" } }, + "node_modules/@microsoft/api-documenter/node_modules/@microsoft/tsdoc": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.14.1.tgz", + "integrity": "sha512-6Wci+Tp3CgPt/B9B0a3J4s3yMgLNSku6w5TV6mN+61C71UqsRBv2FUibBf3tPGlNxebgPHMEUzKpb1ggE8KCKw==", + "dev": true + }, + "node_modules/@microsoft/api-documenter/node_modules/resolve": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "dev": true, + "dependencies": { + "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/@microsoft/api-extractor": { "version": "7.7.11", "resolved": "https://registry.npmjs.org/@microsoft/api-extractor/-/api-extractor-7.7.11.tgz", @@ -240,15 +258,22 @@ } }, "node_modules/@microsoft/api-extractor-model": { - "version": "7.7.11", - "resolved": "https://registry.npmjs.org/@microsoft/api-extractor-model/-/api-extractor-model-7.7.11.tgz", - "integrity": "sha512-Kf3RytYDq7sP4ASaaA9IcvaOPbVj1Xj34E2Wxd9DznI7sG4HzcpoOGmxaZHCzyYVh7wfAaAlvcXf3SV+djhNZw==", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@microsoft/api-extractor-model/-/api-extractor-model-7.24.0.tgz", + "integrity": "sha512-lFzF5h+quTyVB7eaKJkqrbQRDGSkrHzXyF8iMVvHdlaNrodGeyhtQeBFDuRVvBXTW2ILBiOV6ZWwUM1eGKcD+A==", "dev": true, "dependencies": { - "@microsoft/tsdoc": "0.12.19", - "@rushstack/node-core-library": "3.19.7" + "@microsoft/tsdoc": "0.14.1", + "@microsoft/tsdoc-config": "~0.16.1", + "@rushstack/node-core-library": "3.51.1" } }, + "node_modules/@microsoft/api-extractor-model/node_modules/@microsoft/tsdoc": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.14.1.tgz", + "integrity": "sha512-6Wci+Tp3CgPt/B9B0a3J4s3yMgLNSku6w5TV6mN+61C71UqsRBv2FUibBf3tPGlNxebgPHMEUzKpb1ggE8KCKw==", + "dev": true + }, "node_modules/@microsoft/api-extractor/node_modules/@microsoft/api-extractor-model": { "version": "7.7.10", "resolved": "https://registry.npmjs.org/@microsoft/api-extractor-model/-/api-extractor-model-7.7.10.tgz", @@ -304,6 +329,37 @@ "integrity": "sha512-IpgPxHrNxZiMNUSXqR1l/gePKPkfAmIKoDRP9hp7OwjU29ZR8WCJsOJ8iBKgw0Qk+pFwR+8Y1cy8ImLY6e9m4A==", "dev": true }, + "node_modules/@microsoft/tsdoc-config": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@microsoft/tsdoc-config/-/tsdoc-config-0.16.1.tgz", + "integrity": "sha512-2RqkwiD4uN6MLnHFljqBlZIXlt/SaUT6cuogU1w2ARw4nKuuppSmR0+s+NC+7kXBQykd9zzu0P4HtBpZT5zBpQ==", + "dev": true, + "dependencies": { + "@microsoft/tsdoc": "0.14.1", + "ajv": "~6.12.6", + "jju": "~1.4.0", + "resolve": "~1.19.0" + } + }, + "node_modules/@microsoft/tsdoc-config/node_modules/@microsoft/tsdoc": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.14.1.tgz", + "integrity": "sha512-6Wci+Tp3CgPt/B9B0a3J4s3yMgLNSku6w5TV6mN+61C71UqsRBv2FUibBf3tPGlNxebgPHMEUzKpb1ggE8KCKw==", + "dev": true + }, + "node_modules/@microsoft/tsdoc-config/node_modules/resolve": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", + "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", + "dev": true, + "dependencies": { + "is-core-module": "^2.1.0", + "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -340,31 +396,101 @@ } }, "node_modules/@rushstack/node-core-library": { - "version": "3.19.7", - "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-3.19.7.tgz", - "integrity": "sha512-gKE/OXH5GAj8yJ1kEyRW68UekJernilZ3QTRgmQ0MUHBCQmtZ9Q6T5PQ1sVbcL4teH8BMdpZeFy1DKnHs8h3PA==", + "version": "3.51.1", + "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-3.51.1.tgz", + "integrity": "sha512-xLoUztvGpaT5CphDexDPt2WbBx8D68VS5tYOkwfr98p90y0f/wepgXlTA/q5MUeZGGucASiXKp5ysdD+GPYf9A==", "dev": true, "dependencies": { - "@types/node": "10.17.13", + "@types/node": "12.20.24", "colors": "~1.2.1", "fs-extra": "~7.0.1", + "import-lazy": "~4.0.0", "jju": "~1.4.0", - "semver": "~5.3.0", - "timsort": "~0.3.0", - "z-schema": "~3.18.3" + "resolve": "~1.17.0", + "semver": "~7.3.0", + "z-schema": "~5.0.2" + } + }, + "node_modules/@rushstack/node-core-library/node_modules/@types/node": { + "version": "12.20.24", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.24.tgz", + "integrity": "sha512-yxDeaQIAJlMav7fH5AQqPH1u8YIuhYJXYBzxaQ4PifsU0GDO38MSdmEDeRlIxrKbC6NbEaaEHDanWb+y30U8SQ==", + "dev": true + }, + "node_modules/@rushstack/node-core-library/node_modules/resolve": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "dev": true, + "dependencies": { + "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/@rushstack/node-core-library/node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@rushstack/node-core-library/node_modules/validator": { + "version": "13.7.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.7.0.tgz", + "integrity": "sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/@rushstack/node-core-library/node_modules/z-schema": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/z-schema/-/z-schema-5.0.4.tgz", + "integrity": "sha512-gm/lx3hDzJNcLwseIeQVm1UcwhWIKpSB4NqH89pTBtFns4k/HDHudsICtvG05Bvw/Mv3jMyk700y5dadueLHdA==", + "dev": true, + "dependencies": { + "lodash.get": "^4.4.2", + "lodash.isequal": "^4.5.0", + "validator": "^13.7.0" + }, + "bin": { + "z-schema": "bin/z-schema" + }, + "engines": { + "node": ">=8.0.0" + }, + "optionalDependencies": { + "commander": "^2.20.3" } }, "node_modules/@rushstack/ts-command-line": { - "version": "4.3.14", - "resolved": "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-4.3.14.tgz", - "integrity": "sha512-YJZIyKvkm3f6ZdKSfMntHS9542Y2mmMWzaiPPoXxLFZntKxEIDE3WfUNlvOSo3yK4fNd09Tz3hfvTivQNHSiKQ==", + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-4.12.2.tgz", + "integrity": "sha512-poBtnumLuWmwmhCEkVAgynWgtnF9Kygekxyp4qtQUSbBrkuyPQTL85c8Cva1YfoUpOdOXxezMAkUt0n5SNKGqw==", "dev": true, "dependencies": { - "@types/argparse": "1.0.33", + "@types/argparse": "1.0.38", "argparse": "~1.0.9", - "colors": "~1.2.1" + "colors": "~1.2.1", + "string-argv": "~0.3.1" } }, + "node_modules/@rushstack/ts-command-line/node_modules/@types/argparse": { + "version": "1.0.38", + "resolved": "https://registry.npmjs.org/@types/argparse/-/argparse-1.0.38.tgz", + "integrity": "sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==", + "dev": true + }, "node_modules/@socket.io/component-emitter": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", @@ -2327,6 +2453,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/import-lazy": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", + "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/import-local": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", @@ -3884,6 +4019,15 @@ "node": ">=6 <7 || >=8" } }, + "node_modules/string-argv": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz", + "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==", + "dev": true, + "engines": { + "node": ">=0.6.19" + } + }, "node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -4696,18 +4840,35 @@ } }, "@microsoft/api-documenter": { - "version": "7.7.20", - "resolved": "https://registry.npmjs.org/@microsoft/api-documenter/-/api-documenter-7.7.20.tgz", - "integrity": "sha512-B2gOOoYJDOqAn9iPg4Z9ay03MYtjmY2ldF3u1povTkzl5eJWERMDuuK5BLOdGdDTMr6TUd/FrhERFEeJNeQ3rg==", + "version": "7.19.10", + "resolved": "https://registry.npmjs.org/@microsoft/api-documenter/-/api-documenter-7.19.10.tgz", + "integrity": "sha512-I2c4EkmiCDQ3pgJPpq4k9D8Hatml2PuWHwHimwo7HECeqQm4Vcqkw6cCZ0MPKQrpfmyG9WyK+vrhbOL0pxyfWA==", "dev": true, "requires": { - "@microsoft/api-extractor-model": "7.7.11", - "@microsoft/tsdoc": "0.12.19", - "@rushstack/node-core-library": "3.19.7", - "@rushstack/ts-command-line": "4.3.14", + "@microsoft/api-extractor-model": "7.24.0", + "@microsoft/tsdoc": "0.14.1", + "@rushstack/node-core-library": "3.51.1", + "@rushstack/ts-command-line": "4.12.2", "colors": "~1.2.1", "js-yaml": "~3.13.1", - "resolve": "1.8.1" + "resolve": "~1.17.0" + }, + "dependencies": { + "@microsoft/tsdoc": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.14.1.tgz", + "integrity": "sha512-6Wci+Tp3CgPt/B9B0a3J4s3yMgLNSku6w5TV6mN+61C71UqsRBv2FUibBf3tPGlNxebgPHMEUzKpb1ggE8KCKw==", + "dev": true + }, + "resolve": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + } } }, "@microsoft/api-extractor": { @@ -4772,13 +4933,22 @@ } }, "@microsoft/api-extractor-model": { - "version": "7.7.11", - "resolved": "https://registry.npmjs.org/@microsoft/api-extractor-model/-/api-extractor-model-7.7.11.tgz", - "integrity": "sha512-Kf3RytYDq7sP4ASaaA9IcvaOPbVj1Xj34E2Wxd9DznI7sG4HzcpoOGmxaZHCzyYVh7wfAaAlvcXf3SV+djhNZw==", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@microsoft/api-extractor-model/-/api-extractor-model-7.24.0.tgz", + "integrity": "sha512-lFzF5h+quTyVB7eaKJkqrbQRDGSkrHzXyF8iMVvHdlaNrodGeyhtQeBFDuRVvBXTW2ILBiOV6ZWwUM1eGKcD+A==", "dev": true, "requires": { - "@microsoft/tsdoc": "0.12.19", - "@rushstack/node-core-library": "3.19.7" + "@microsoft/tsdoc": "0.14.1", + "@microsoft/tsdoc-config": "~0.16.1", + "@rushstack/node-core-library": "3.51.1" + }, + "dependencies": { + "@microsoft/tsdoc": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.14.1.tgz", + "integrity": "sha512-6Wci+Tp3CgPt/B9B0a3J4s3yMgLNSku6w5TV6mN+61C71UqsRBv2FUibBf3tPGlNxebgPHMEUzKpb1ggE8KCKw==", + "dev": true + } } }, "@microsoft/tsdoc": { @@ -4787,6 +4957,36 @@ "integrity": "sha512-IpgPxHrNxZiMNUSXqR1l/gePKPkfAmIKoDRP9hp7OwjU29ZR8WCJsOJ8iBKgw0Qk+pFwR+8Y1cy8ImLY6e9m4A==", "dev": true }, + "@microsoft/tsdoc-config": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@microsoft/tsdoc-config/-/tsdoc-config-0.16.1.tgz", + "integrity": "sha512-2RqkwiD4uN6MLnHFljqBlZIXlt/SaUT6cuogU1w2ARw4nKuuppSmR0+s+NC+7kXBQykd9zzu0P4HtBpZT5zBpQ==", + "dev": true, + "requires": { + "@microsoft/tsdoc": "0.14.1", + "ajv": "~6.12.6", + "jju": "~1.4.0", + "resolve": "~1.19.0" + }, + "dependencies": { + "@microsoft/tsdoc": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.14.1.tgz", + "integrity": "sha512-6Wci+Tp3CgPt/B9B0a3J4s3yMgLNSku6w5TV6mN+61C71UqsRBv2FUibBf3tPGlNxebgPHMEUzKpb1ggE8KCKw==", + "dev": true + }, + "resolve": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", + "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", + "dev": true, + "requires": { + "is-core-module": "^2.1.0", + "path-parse": "^1.0.6" + } + } + } + }, "@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -4814,29 +5014,83 @@ } }, "@rushstack/node-core-library": { - "version": "3.19.7", - "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-3.19.7.tgz", - "integrity": "sha512-gKE/OXH5GAj8yJ1kEyRW68UekJernilZ3QTRgmQ0MUHBCQmtZ9Q6T5PQ1sVbcL4teH8BMdpZeFy1DKnHs8h3PA==", + "version": "3.51.1", + "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-3.51.1.tgz", + "integrity": "sha512-xLoUztvGpaT5CphDexDPt2WbBx8D68VS5tYOkwfr98p90y0f/wepgXlTA/q5MUeZGGucASiXKp5ysdD+GPYf9A==", "dev": true, "requires": { - "@types/node": "10.17.13", + "@types/node": "12.20.24", "colors": "~1.2.1", "fs-extra": "~7.0.1", + "import-lazy": "~4.0.0", "jju": "~1.4.0", - "semver": "~5.3.0", - "timsort": "~0.3.0", - "z-schema": "~3.18.3" + "resolve": "~1.17.0", + "semver": "~7.3.0", + "z-schema": "~5.0.2" + }, + "dependencies": { + "@types/node": { + "version": "12.20.24", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.24.tgz", + "integrity": "sha512-yxDeaQIAJlMav7fH5AQqPH1u8YIuhYJXYBzxaQ4PifsU0GDO38MSdmEDeRlIxrKbC6NbEaaEHDanWb+y30U8SQ==", + "dev": true + }, + "resolve": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + }, + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "validator": { + "version": "13.7.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.7.0.tgz", + "integrity": "sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw==", + "dev": true + }, + "z-schema": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/z-schema/-/z-schema-5.0.4.tgz", + "integrity": "sha512-gm/lx3hDzJNcLwseIeQVm1UcwhWIKpSB4NqH89pTBtFns4k/HDHudsICtvG05Bvw/Mv3jMyk700y5dadueLHdA==", + "dev": true, + "requires": { + "commander": "^2.20.3", + "lodash.get": "^4.4.2", + "lodash.isequal": "^4.5.0", + "validator": "^13.7.0" + } + } } }, "@rushstack/ts-command-line": { - "version": "4.3.14", - "resolved": "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-4.3.14.tgz", - "integrity": "sha512-YJZIyKvkm3f6ZdKSfMntHS9542Y2mmMWzaiPPoXxLFZntKxEIDE3WfUNlvOSo3yK4fNd09Tz3hfvTivQNHSiKQ==", + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-4.12.2.tgz", + "integrity": "sha512-poBtnumLuWmwmhCEkVAgynWgtnF9Kygekxyp4qtQUSbBrkuyPQTL85c8Cva1YfoUpOdOXxezMAkUt0n5SNKGqw==", "dev": true, "requires": { - "@types/argparse": "1.0.33", + "@types/argparse": "1.0.38", "argparse": "~1.0.9", - "colors": "~1.2.1" + "colors": "~1.2.1", + "string-argv": "~0.3.1" + }, + "dependencies": { + "@types/argparse": { + "version": "1.0.38", + "resolved": "https://registry.npmjs.org/@types/argparse/-/argparse-1.0.38.tgz", + "integrity": "sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==", + "dev": true + } } }, "@socket.io/component-emitter": { @@ -6322,6 +6576,12 @@ "resolve-from": "^4.0.0" } }, + "import-lazy": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", + "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", + "dev": true + }, "import-local": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", @@ -7475,6 +7735,12 @@ } } }, + "string-argv": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz", + "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==", + "dev": true + }, "string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", diff --git a/package.json b/package.json index 230a954f1..b0e69be12 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,7 @@ "typescript" ], "devDependencies": { - "@microsoft/api-documenter": "7.7.20", + "@microsoft/api-documenter": "^7.19.10", "@microsoft/api-extractor": "7.7.11", "@types/jasmine": "^4.3.0", "@typescript-eslint/eslint-plugin": "^5.36.1", From 88296739b46fc10a2f88035bd0ca80fab2edd555 Mon Sep 17 00:00:00 2001 From: John Riordan Date: Mon, 5 Sep 2022 16:10:58 -0400 Subject: [PATCH 15/73] Update documentation --- docs/api/sip.js.ack.md | 2 +- docs/api/sip.js.bodyandcontenttype.md | 8 +-- docs/api/sip.js.bye.accept.md | 4 +- docs/api/sip.js.bye.md | 2 +- docs/api/sip.js.bye.reject.md | 4 +- ...ntenttypeunsupportederror._constructor_.md | 2 +- .../api/sip.js.contenttypeunsupportederror.md | 1 + docs/api/sip.js.emitter.addlistener.md | 6 +- docs/api/sip.js.emitter.off.md | 4 +- docs/api/sip.js.emitter.on.md | 4 +- docs/api/sip.js.emitter.once.md | 4 +- docs/api/sip.js.emitter.removelistener.md | 4 +- docs/api/sip.js.info.accept.md | 4 +- docs/api/sip.js.info.md | 2 +- docs/api/sip.js.info.reject.md | 4 +- docs/api/sip.js.invitation.accept.md | 4 +- docs/api/sip.js.invitation.dispose.md | 2 +- docs/api/sip.js.invitation.md | 13 ++-- docs/api/sip.js.invitation.progress.md | 4 +- docs/api/sip.js.invitation.reject.md | 4 +- docs/api/sip.js.invitationacceptoptions.md | 10 +-- docs/api/sip.js.invitationprogressoptions.md | 18 ++--- docs/api/sip.js.invitationrejectoptions.md | 12 ++-- docs/api/sip.js.inviter._constructor_.md | 6 +- docs/api/sip.js.inviter.cancel.md | 4 +- docs/api/sip.js.inviter.dispose.md | 2 +- docs/api/sip.js.inviter.invite.md | 4 +- docs/api/sip.js.inviter.md | 11 +-- docs/api/sip.js.invitercanceloptions.md | 10 +-- docs/api/sip.js.inviterinviteoptions.md | 14 ++-- docs/api/sip.js.inviteroptions.md | 27 +++---- docs/api/sip.js.logconnector.md | 2 + docs/api/sip.js.message.accept.md | 4 +- docs/api/sip.js.message.md | 2 +- docs/api/sip.js.message.reject.md | 4 +- docs/api/sip.js.messager._constructor_.md | 10 +-- docs/api/sip.js.messager.message.md | 4 +- docs/api/sip.js.messagermessageoptions.md | 8 +-- docs/api/sip.js.messageroptions.md | 8 +-- docs/api/sip.js.notification.accept.md | 4 +- docs/api/sip.js.notification.md | 2 +- docs/api/sip.js.notification.reject.md | 4 +- docs/api/sip.js.publisher._constructor_.md | 8 +-- docs/api/sip.js.publisher.dispose.md | 2 +- docs/api/sip.js.publisher.md | 4 +- docs/api/sip.js.publisher.publish.md | 6 +- docs/api/sip.js.publisher.unpublish.md | 4 +- docs/api/sip.js.publisheroptions.md | 16 ++--- docs/api/sip.js.publisherstate.md | 1 - docs/api/sip.js.referral.accept.md | 4 +- docs/api/sip.js.referral.makeinviter.md | 4 +- docs/api/sip.js.referral.md | 8 +-- docs/api/sip.js.referral.reject.md | 4 +- docs/api/sip.js.registerer._constructor_.md | 4 +- docs/api/sip.js.registerer.dispose.md | 2 +- docs/api/sip.js.registerer.md | 8 +-- docs/api/sip.js.registerer.register.md | 4 +- docs/api/sip.js.registerer.retryafter.md | 1 - docs/api/sip.js.registerer.unregister.md | 4 +- docs/api/sip.js.registereroptions.md | 22 +++--- docs/api/sip.js.registererregisteroptions.md | 8 +-- docs/api/sip.js.registererstate.md | 1 - .../api/sip.js.registererunregisteroptions.md | 10 +-- docs/api/sip.js.requestpendingerror.md | 1 + docs/api/sip.js.session.bye.md | 4 +- docs/api/sip.js.session.dispose.md | 2 +- docs/api/sip.js.session.info.md | 4 +- docs/api/sip.js.session.invite.md | 4 +- docs/api/sip.js.session.md | 36 +++++----- docs/api/sip.js.session.message.md | 4 +- docs/api/sip.js.session.refer.md | 6 +- docs/api/sip.js.sessionbyeoptions.md | 8 +-- docs/api/sip.js.sessiondelegate.onack.md | 4 +- docs/api/sip.js.sessiondelegate.onbye.md | 4 +- docs/api/sip.js.sessiondelegate.oninfo.md | 4 +- docs/api/sip.js.sessiondelegate.oninvite.md | 8 +-- docs/api/sip.js.sessiondelegate.onmessage.md | 4 +- docs/api/sip.js.sessiondelegate.onnotify.md | 4 +- docs/api/sip.js.sessiondelegate.onrefer.md | 4 +- ...iondelegate.onsessiondescriptionhandler.md | 6 +- .../sip.js.sessiondescriptionhandler.close.md | 2 +- ...essiondescriptionhandler.getdescription.md | 6 +- ...essiondescriptionhandler.hasdescription.md | 4 +- ...ndescriptionhandler.rollbackdescription.md | 2 +- ...p.js.sessiondescriptionhandler.senddtmf.md | 6 +- ...essiondescriptionhandler.setdescription.md | 8 +-- ...ondescriptionhandlererror._constructor_.md | 2 +- .../sip.js.sessiondescriptionhandlererror.md | 1 + ...sip.js.sessiondescriptionhandleroptions.md | 6 +- docs/api/sip.js.sessioninfooptions.md | 8 +-- docs/api/sip.js.sessioninviteoptions.md | 14 ++-- docs/api/sip.js.sessionmessageoptions.md | 8 +-- docs/api/sip.js.sessionoptions.md | 6 +- docs/api/sip.js.sessionreferoptions.md | 10 +-- docs/api/sip.js.sessionstate.md | 1 - docs/api/sip.js.sessionterminatederror.md | 1 + ...p.js.statetransitionerror._constructor_.md | 2 +- docs/api/sip.js.statetransitionerror.md | 1 + docs/api/sip.js.subscriber._constructor_.md | 8 +-- docs/api/sip.js.subscriber.md | 2 +- docs/api/sip.js.subscriber.subscribe.md | 4 +- docs/api/sip.js.subscriber.unsubscribe.md | 4 +- docs/api/sip.js.subscriberoptions.md | 13 ++-- docs/api/sip.js.subscription.dispose.md | 2 +- docs/api/sip.js.subscription.md | 10 +-- docs/api/sip.js.subscription.subscribe.md | 4 +- docs/api/sip.js.subscription.unsubscribe.md | 4 +- .../sip.js.subscriptiondelegate.onnotify.md | 4 +- docs/api/sip.js.subscriptionoptions.md | 6 +- docs/api/sip.js.subscriptionstate.md | 1 - docs/api/sip.js.transport.connect.md | 3 +- docs/api/sip.js.transport.disconnect.md | 3 +- docs/api/sip.js.transport.dispose.md | 2 +- docs/api/sip.js.transport.isconnected.md | 3 +- docs/api/sip.js.transport.md | 16 ++--- docs/api/sip.js.transport.onconnect.md | 1 - docs/api/sip.js.transport.ondisconnect.md | 1 - docs/api/sip.js.transport.send.md | 5 +- docs/api/sip.js.transportstate.md | 1 - docs/api/sip.js.useragent._constructor_.md | 2 +- docs/api/sip.js.useragent.getlogger.md | 6 +- docs/api/sip.js.useragent.getloggerfactory.md | 2 +- docs/api/sip.js.useragent.isconnected.md | 2 +- docs/api/sip.js.useragent.makeuri.md | 5 +- docs/api/sip.js.useragent.md | 16 ++--- docs/api/sip.js.useragent.reconnect.md | 2 +- docs/api/sip.js.useragent.start.md | 3 +- docs/api/sip.js.useragent.stop.md | 3 +- .../api/sip.js.useragentdelegate.onconnect.md | 2 +- .../sip.js.useragentdelegate.ondisconnect.md | 4 +- docs/api/sip.js.useragentdelegate.oninvite.md | 4 +- .../api/sip.js.useragentdelegate.onmessage.md | 4 +- docs/api/sip.js.useragentdelegate.onnotify.md | 4 +- docs/api/sip.js.useragentoptions.md | 72 +++++++++---------- docs/api/sip.js.useragentstate.md | 1 - ....ackableincomingresponsewithsession.ack.md | 4 +- ...p.js.ackableincomingresponsewithsession.md | 7 +- docs/core/sip.js.body.md | 10 +-- ...sip.js.byeuseragentclient._constructor_.md | 6 +- docs/core/sip.js.byeuseragentclient.md | 3 + ...sip.js.byeuseragentserver._constructor_.md | 6 +- docs/core/sip.js.byeuseragentserver.md | 3 + ....js.canceluseragentclient._constructor_.md | 6 +- docs/core/sip.js.canceluseragentclient.md | 3 + .../sip.js.clienttransaction._constructor_.md | 10 +-- docs/core/sip.js.clienttransaction.md | 5 +- ...p.js.clienttransaction.onrequesttimeout.md | 2 +- ...ip.js.clienttransaction.receiveresponse.md | 4 +- docs/core/sip.js.clienttransactionuser.md | 9 +-- docs/core/sip.js.contact.md | 12 ++-- docs/core/sip.js.dialog._constructor_.md | 4 +- docs/core/sip.js.dialog.confirm.md | 2 +- ....js.dialog.createoutgoingrequestmessage.md | 6 +- docs/core/sip.js.dialog.dispose.md | 2 +- ...og.initialdialogstateforuseragentclient.md | 6 +- ...og.initialdialogstateforuseragentserver.md | 8 +-- docs/core/sip.js.dialog.md | 34 ++++----- docs/core/sip.js.dialog.receiverequest.md | 4 +- docs/core/sip.js.dialog.recomputerouteset.md | 4 +- docs/core/sip.js.dialog.sequenceguard.md | 4 +- docs/core/sip.js.dialogstate.md | 28 ++++---- docs/core/sip.js.exception._constructor_.md | 2 +- docs/core/sip.js.exception.md | 1 + docs/core/sip.js.incomingackrequest.md | 6 +- docs/core/sip.js.incomingbyerequest.md | 2 + docs/core/sip.js.incomingbyeresponse.md | 2 + docs/core/sip.js.incomingcancelrequest.md | 2 + docs/core/sip.js.incomingcancelresponse.md | 2 + docs/core/sip.js.incominginforequest.md | 2 + docs/core/sip.js.incominginforesponse.md | 2 + .../sip.js.incominginviterequest.accept.md | 4 +- docs/core/sip.js.incominginviterequest.md | 1 + .../sip.js.incominginviterequest.progress.md | 4 +- docs/core/sip.js.incomingmessage.addheader.md | 6 +- docs/core/sip.js.incomingmessage.getheader.md | 4 +- .../core/sip.js.incomingmessage.getheaders.md | 4 +- docs/core/sip.js.incomingmessage.hasheader.md | 4 +- docs/core/sip.js.incomingmessage.md | 26 +++---- .../sip.js.incomingmessage.parseheader.md | 6 +- docs/core/sip.js.incomingmessage.s.md | 6 +- docs/core/sip.js.incomingmessage.setheader.md | 6 +- docs/core/sip.js.incomingmessage.tostring.md | 2 +- docs/core/sip.js.incomingmessagerequest.md | 2 + docs/core/sip.js.incomingmessageresponse.md | 2 + docs/core/sip.js.incomingnotifyrequest.md | 2 + docs/core/sip.js.incomingnotifyresponse.md | 2 + docs/core/sip.js.incomingprackrequest.md | 2 + docs/core/sip.js.incomingprackresponse.md | 2 + docs/core/sip.js.incomingpublishrequest.md | 2 + docs/core/sip.js.incomingpublishresponse.md | 2 + docs/core/sip.js.incomingreferrequest.md | 2 + docs/core/sip.js.incomingreferresponse.md | 2 + docs/core/sip.js.incomingregisterrequest.md | 2 + docs/core/sip.js.incomingregisterresponse.md | 2 + docs/core/sip.js.incomingrequest.accept.md | 4 +- docs/core/sip.js.incomingrequest.md | 8 +-- docs/core/sip.js.incomingrequest.progress.md | 4 +- docs/core/sip.js.incomingrequest.redirect.md | 6 +- docs/core/sip.js.incomingrequest.reject.md | 4 +- docs/core/sip.js.incomingrequest.trying.md | 4 +- ...sip.js.incomingrequestdelegate.oncancel.md | 4 +- ...ncomingrequestdelegate.ontransporterror.md | 4 +- docs/core/sip.js.incomingrequestmessage.md | 3 +- .../sip.js.incomingrequestwithsubscription.md | 8 +-- docs/core/sip.js.incomingresponse.md | 6 +- docs/core/sip.js.incomingresponsemessage.md | 5 +- docs/core/sip.js.incomingsubscriberequest.md | 2 + docs/core/sip.js.incomingsubscriberesponse.md | 2 + ...ip.js.infouseragentclient._constructor_.md | 6 +- docs/core/sip.js.infouseragentclient.md | 3 + ...ip.js.infouseragentserver._constructor_.md | 6 +- docs/core/sip.js.infouseragentserver.md | 3 + ...s.inviteclienttransaction._constructor_.md | 6 +- ....js.inviteclienttransaction.ackresponse.md | 4 +- .../sip.js.inviteclienttransaction.dispose.md | 2 +- docs/core/sip.js.inviteclienttransaction.md | 5 +- ...nviteclienttransaction.ontransporterror.md | 4 +- ...inviteclienttransaction.receiveresponse.md | 4 +- ...js.inviteclienttransaction.typetostring.md | 2 +- ...s.inviteservertransaction._constructor_.md | 6 +- .../sip.js.inviteservertransaction.dispose.md | 2 +- docs/core/sip.js.inviteservertransaction.md | 3 +- ...nviteservertransaction.ontransporterror.md | 4 +- ....inviteservertransaction.receiverequest.md | 4 +- ...inviteservertransaction.receiveresponse.md | 6 +- ...rtransaction.retransmitacceptedresponse.md | 2 +- ...js.inviteservertransaction.typetostring.md | 2 +- ....js.inviteuseragentclient._constructor_.md | 6 +- .../sip.js.inviteuseragentclient.dispose.md | 2 +- docs/core/sip.js.inviteuseragentclient.md | 5 +- ....inviteuseragentclient.ontransporterror.md | 4 +- ...s.inviteuseragentclient.receiveresponse.md | 4 +- ....js.inviteuseragentserver._constructor_.md | 6 +- .../sip.js.inviteuseragentserver.accept.md | 4 +- .../sip.js.inviteuseragentserver.dispose.md | 2 +- docs/core/sip.js.inviteuseragentserver.md | 7 +- .../sip.js.inviteuseragentserver.progress.md | 4 +- .../sip.js.inviteuseragentserver.redirect.md | 6 +- .../sip.js.inviteuseragentserver.reject.md | 4 +- docs/core/sip.js.logger._constructor_.md | 6 +- docs/core/sip.js.logger.debug.md | 4 +- docs/core/sip.js.logger.error.md | 4 +- docs/core/sip.js.logger.log.md | 4 +- docs/core/sip.js.logger.md | 2 +- docs/core/sip.js.logger.warn.md | 4 +- docs/core/sip.js.loggerfactory.genericlog.md | 10 +-- docs/core/sip.js.loggerfactory.getlogger.md | 6 +- docs/core/sip.js.loggerfactory.md | 6 +- ...js.messageuseragentclient._constructor_.md | 6 +- docs/core/sip.js.messageuseragentclient.md | 3 + ...js.messageuseragentserver._constructor_.md | 6 +- docs/core/sip.js.messageuseragentserver.md | 3 + .../sip.js.nameaddrheader._constructor_.md | 6 +- docs/core/sip.js.nameaddrheader.clone.md | 2 +- docs/core/sip.js.nameaddrheader.md | 7 +- docs/core/sip.js.nameaddrheader.tostring.md | 2 +- ...oninviteclienttransaction._constructor_.md | 6 +- ...p.js.noninviteclienttransaction.dispose.md | 2 +- .../core/sip.js.noninviteclienttransaction.md | 3 +- ...nviteclienttransaction.ontransporterror.md | 4 +- ...inviteclienttransaction.receiveresponse.md | 4 +- ...noninviteclienttransaction.typetostring.md | 2 +- ...oninviteservertransaction._constructor_.md | 6 +- ...p.js.noninviteservertransaction.dispose.md | 2 +- .../core/sip.js.noninviteservertransaction.md | 3 +- ...nviteservertransaction.ontransporterror.md | 4 +- ...ninviteservertransaction.receiverequest.md | 4 +- ...inviteservertransaction.receiveresponse.md | 6 +- ...noninviteservertransaction.typetostring.md | 2 +- ....js.notifyuseragentclient._constructor_.md | 6 +- docs/core/sip.js.notifyuseragentclient.md | 3 + ....js.notifyuseragentserver._constructor_.md | 6 +- docs/core/sip.js.notifyuseragentserver.md | 3 + docs/core/sip.js.outgoingackrequest.md | 6 +- docs/core/sip.js.outgoingbyerequest.md | 2 + docs/core/sip.js.outgoingcancelrequest.md | 2 + docs/core/sip.js.outgoinginforequest.md | 2 + docs/core/sip.js.outgoinginviterequest.md | 7 +- .../sip.js.outgoinginviterequestdelegate.md | 1 + ....outgoinginviterequestdelegate.onaccept.md | 4 +- ...utgoinginviterequestdelegate.onprogress.md | 4 +- docs/core/sip.js.outgoingmessagerequest.md | 2 + docs/core/sip.js.outgoingnotifyrequest.md | 2 + docs/core/sip.js.outgoingprackrequest.md | 2 + docs/core/sip.js.outgoingpublishrequest.md | 2 + docs/core/sip.js.outgoingreferrequest.md | 2 + docs/core/sip.js.outgoingregisterrequest.md | 2 + docs/core/sip.js.outgoingrequest.cancel.md | 6 +- docs/core/sip.js.outgoingrequest.dispose.md | 2 +- docs/core/sip.js.outgoingrequest.md | 8 +-- ...sip.js.outgoingrequestdelegate.onaccept.md | 4 +- ...p.js.outgoingrequestdelegate.onprogress.md | 4 +- ...p.js.outgoingrequestdelegate.onredirect.md | 4 +- ...sip.js.outgoingrequestdelegate.onreject.md | 4 +- ...sip.js.outgoingrequestdelegate.ontrying.md | 4 +- ...js.outgoingrequestmessage._constructor_.md | 14 ++-- ...sip.js.outgoingrequestmessage.getheader.md | 4 +- ...ip.js.outgoingrequestmessage.getheaders.md | 4 +- ...sip.js.outgoingrequestmessage.hasheader.md | 4 +- docs/core/sip.js.outgoingrequestmessage.md | 30 ++++---- ...sip.js.outgoingrequestmessage.setheader.md | 6 +- ....js.outgoingrequestmessage.setviaheader.md | 6 +- .../sip.js.outgoingrequestmessage.tostring.md | 2 +- .../sip.js.outgoingrequestmessageoptions.md | 30 ++++---- docs/core/sip.js.outgoingresponse.md | 6 +- .../sip.js.outgoingresponsewithsession.md | 7 +- docs/core/sip.js.outgoingsubscriberequest.md | 7 +- ...outgoingsubscriberequest.waitnotifystop.md | 2 +- ...sip.js.outgoingsubscriberequestdelegate.md | 1 + ...tgoingsubscriberequestdelegate.onnotify.md | 4 +- ...ubscriberequestdelegate.onnotifytimeout.md | 2 +- ...js.prackableincomingresponsewithsession.md | 7 +- ...ckableincomingresponsewithsession.prack.md | 4 +- ...p.js.prackuseragentclient._constructor_.md | 6 +- docs/core/sip.js.prackuseragentclient.md | 3 + ...p.js.prackuseragentserver._constructor_.md | 6 +- .../sip.js.prackuseragentserver.accept.md | 4 +- docs/core/sip.js.prackuseragentserver.md | 3 + ...js.publishuseragentclient._constructor_.md | 6 +- docs/core/sip.js.publishuseragentclient.md | 3 + ...p.js.referuseragentclient._constructor_.md | 6 +- docs/core/sip.js.referuseragentclient.md | 3 + ...p.js.referuseragentserver._constructor_.md | 6 +- docs/core/sip.js.referuseragentserver.md | 3 + ...s.registeruseragentclient._constructor_.md | 6 +- docs/core/sip.js.registeruseragentclient.md | 3 + ...s.registeruseragentserver._constructor_.md | 6 +- docs/core/sip.js.registeruseragentserver.md | 5 +- ...s.reinviteuseragentclient._constructor_.md | 6 +- docs/core/sip.js.reinviteuseragentclient.md | 5 +- ...reinviteuseragentclient.receiveresponse.md | 4 +- ...s.reinviteuseragentserver._constructor_.md | 6 +- .../sip.js.reinviteuseragentserver.accept.md | 4 +- docs/core/sip.js.reinviteuseragentserver.md | 3 + ...sip.js.reinviteuseragentserver.progress.md | 4 +- ...sip.js.reinviteuseragentserver.redirect.md | 6 +- .../sip.js.reinviteuseragentserver.reject.md | 4 +- docs/core/sip.js.requestoptions.md | 8 +-- docs/core/sip.js.responseoptions.md | 18 ++--- ...esubscribeuseragentclient._constructor_.md | 6 +- .../core/sip.js.resubscribeuseragentclient.md | 3 + ...ubscribeuseragentclient.receiveresponse.md | 4 +- ...subscribeuseragentclient.waitnotifystop.md | 2 +- ...esubscribeuseragentserver._constructor_.md | 6 +- .../core/sip.js.resubscribeuseragentserver.md | 3 + .../sip.js.servertransaction._constructor_.md | 10 +-- docs/core/sip.js.servertransaction.md | 5 +- ...sip.js.servertransaction.receiverequest.md | 4 +- ...ip.js.servertransaction.receiveresponse.md | 6 +- docs/core/sip.js.servertransactionuser.md | 2 + docs/core/sip.js.session.bye.md | 6 +- docs/core/sip.js.session.dispose.md | 2 +- docs/core/sip.js.session.info.md | 6 +- docs/core/sip.js.session.invite.md | 6 +- docs/core/sip.js.session.md | 28 ++++---- docs/core/sip.js.session.message.md | 6 +- docs/core/sip.js.session.notify.md | 6 +- docs/core/sip.js.session.prack.md | 6 +- docs/core/sip.js.session.refer.md | 6 +- docs/core/sip.js.sessiondelegate.onack.md | 4 +- .../sip.js.sessiondelegate.onacktimeout.md | 2 +- docs/core/sip.js.sessiondelegate.onbye.md | 4 +- docs/core/sip.js.sessiondelegate.oninfo.md | 4 +- docs/core/sip.js.sessiondelegate.oninvite.md | 4 +- docs/core/sip.js.sessiondelegate.onmessage.md | 4 +- docs/core/sip.js.sessiondelegate.onnotify.md | 4 +- docs/core/sip.js.sessiondelegate.onprack.md | 4 +- docs/core/sip.js.sessiondelegate.onrefer.md | 4 +- .../sip.js.sessiondialog._constructor_.md | 8 +-- docs/core/sip.js.sessiondialog.ack.md | 4 +- docs/core/sip.js.sessiondialog.bye.md | 6 +- docs/core/sip.js.sessiondialog.confirm.md | 2 +- docs/core/sip.js.sessiondialog.dispose.md | 2 +- docs/core/sip.js.sessiondialog.info.md | 6 +- docs/core/sip.js.sessiondialog.invite.md | 6 +- docs/core/sip.js.sessiondialog.md | 23 +++--- docs/core/sip.js.sessiondialog.message.md | 6 +- docs/core/sip.js.sessiondialog.notify.md | 6 +- docs/core/sip.js.sessiondialog.prack.md | 6 +- .../sip.js.sessiondialog.receiverequest.md | 4 +- docs/core/sip.js.sessiondialog.reconfirm.md | 2 +- docs/core/sip.js.sessiondialog.refer.md | 6 +- ....js.sessiondialog.reliablesequenceguard.md | 4 +- ...js.sessiondialog.signalingstaterollback.md | 2 +- ....sessiondialog.signalingstatetransition.md | 4 +- docs/core/sip.js.signalingstate.md | 1 - ....subscribeuseragentclient._constructor_.md | 6 +- ...sip.js.subscribeuseragentclient.dispose.md | 2 +- docs/core/sip.js.subscribeuseragentclient.md | 5 +- ...ip.js.subscribeuseragentclient.onnotify.md | 4 +- ...ubscribeuseragentclient.receiveresponse.md | 4 +- ...ubscribeuseragentclient.waitnotifystart.md | 2 +- ...subscribeuseragentclient.waitnotifystop.md | 2 +- ....subscribeuseragentserver._constructor_.md | 6 +- docs/core/sip.js.subscribeuseragentserver.md | 5 +- docs/core/sip.js.subscription.dispose.md | 2 +- docs/core/sip.js.subscription.md | 14 ++-- docs/core/sip.js.subscription.refresh.md | 2 +- docs/core/sip.js.subscription.subscribe.md | 6 +- docs/core/sip.js.subscription.unsubscribe.md | 2 +- .../sip.js.subscriptiondelegate.onnotify.md | 4 +- .../sip.js.subscriptiondelegate.onrefresh.md | 4 +- ...ip.js.subscriptiondelegate.onterminated.md | 2 +- ...sip.js.subscriptiondialog._constructor_.md | 12 ++-- .../core/sip.js.subscriptiondialog.dispose.md | 2 +- ...ialog.initialdialogstateforsubscription.md | 6 +- docs/core/sip.js.subscriptiondialog.md | 17 +++-- ...ip.js.subscriptiondialog.receiverequest.md | 4 +- .../core/sip.js.subscriptiondialog.refresh.md | 2 +- .../sip.js.subscriptiondialog.subscribe.md | 6 +- .../sip.js.subscriptiondialog.terminate.md | 2 +- .../sip.js.subscriptiondialog.unsubscribe.md | 2 +- docs/core/sip.js.transaction._constructor_.md | 10 +-- ...p.js.transaction.addstatechangelistener.md | 6 +- docs/core/sip.js.transaction.dispose.md | 2 +- .../sip.js.transaction.logtransporterror.md | 6 +- docs/core/sip.js.transaction.md | 10 +-- .../sip.js.transaction.ontransporterror.md | 4 +- ...s.transaction.removestatechangelistener.md | 4 +- docs/core/sip.js.transaction.send.md | 4 +- docs/core/sip.js.transaction.setstate.md | 4 +- docs/core/sip.js.transaction.typetostring.md | 2 +- ....js.transactionstateerror._constructor_.md | 2 +- docs/core/sip.js.transactionstateerror.md | 1 + docs/core/sip.js.transactionuser.md | 10 +-- docs/core/sip.js.transport.md | 6 +- docs/core/sip.js.transport.send.md | 4 +- .../sip.js.transporterror._constructor_.md | 2 +- docs/core/sip.js.transporterror.md | 1 + docs/core/sip.js.uri._constructor_.md | 12 ++-- docs/core/sip.js.uri.clearheaders.md | 2 +- docs/core/sip.js.uri.clone.md | 2 +- docs/core/sip.js.uri.deleteheader.md | 4 +- docs/core/sip.js.uri.getheader.md | 4 +- docs/core/sip.js.uri.hasheader.md | 4 +- docs/core/sip.js.uri.md | 13 ++-- docs/core/sip.js.uri.setheader.md | 6 +- docs/core/sip.js.uri.toraw.md | 2 +- docs/core/sip.js.uri.tostring.md | 2 +- .../sip.js.useragentclient._constructor_.md | 8 +-- ....js.useragentclient.authenticationguard.md | 6 +- docs/core/sip.js.useragentclient.cancel.md | 6 +- docs/core/sip.js.useragentclient.dispose.md | 2 +- docs/core/sip.js.useragentclient.md | 15 ++-- ...sip.js.useragentclient.onrequesttimeout.md | 2 +- ...sip.js.useragentclient.ontransporterror.md | 4 +- .../sip.js.useragentclient.receiveresponse.md | 4 +- .../sip.js.useragentcore._constructor_.md | 4 +- docs/core/sip.js.useragentcore.dispose.md | 2 +- docs/core/sip.js.useragentcore.invite.md | 6 +- ...seragentcore.makeoutgoingrequestmessage.md | 16 ++--- docs/core/sip.js.useragentcore.md | 16 ++--- docs/core/sip.js.useragentcore.message.md | 6 +- docs/core/sip.js.useragentcore.publish.md | 6 +- ...ore.receiveincomingrequestfromtransport.md | 4 +- ...re.receiveincomingresponsefromtransport.md | 4 +- docs/core/sip.js.useragentcore.register.md | 6 +- .../sip.js.useragentcore.replystateless.md | 6 +- docs/core/sip.js.useragentcore.request.md | 6 +- docs/core/sip.js.useragentcore.reset.md | 2 +- docs/core/sip.js.useragentcore.subscribe.md | 6 +- ...coreconfiguration.authenticationfactory.md | 2 +- .../core/sip.js.useragentcoreconfiguration.md | 28 ++++---- ...gentcoreconfiguration.transportaccessor.md | 2 +- .../sip.js.useragentcoredelegate.oninvite.md | 4 +- .../sip.js.useragentcoredelegate.onmessage.md | 4 +- .../sip.js.useragentcoredelegate.onnotify.md | 4 +- .../sip.js.useragentcoredelegate.onrefer.md | 4 +- ...sip.js.useragentcoredelegate.onregister.md | 4 +- ...ip.js.useragentcoredelegate.onsubscribe.md | 4 +- .../sip.js.useragentserver._constructor_.md | 8 +-- docs/core/sip.js.useragentserver.accept.md | 4 +- docs/core/sip.js.useragentserver.dispose.md | 2 +- docs/core/sip.js.useragentserver.md | 25 +++---- docs/core/sip.js.useragentserver.progress.md | 4 +- .../sip.js.useragentserver.receivecancel.md | 4 +- docs/core/sip.js.useragentserver.redirect.md | 6 +- docs/core/sip.js.useragentserver.reject.md | 4 +- docs/core/sip.js.useragentserver.trying.md | 4 +- .../sip.js.defaultmediastreamfactory.md | 2 +- ...p.js.defaultpeerconnectionconfiguration.md | 2 +- ...defaultsessiondescriptionhandlerfactory.md | 4 +- .../sip.js.mediastreamfactory.md | 2 + ...nectiondelegate.onconnectionstatechange.md | 4 +- ...js.peerconnectiondelegate.ondatachannel.md | 4 +- ...s.peerconnectiondelegate.onicecandidate.md | 4 +- ...rconnectiondelegate.onicecandidateerror.md | 4 +- ...tiondelegate.oniceconnectionstatechange.md | 4 +- ...ctiondelegate.onicegatheringstatechange.md | 4 +- ...rconnectiondelegate.onnegotiationneeded.md | 4 +- ...nnectiondelegate.onsignalingstatechange.md | 4 +- .../sip.js.peerconnectiondelegate.ontrack.md | 4 +- ...sessiondescriptionhandler._constructor_.md | 6 +- ...essiondescriptionhandler.applymodifiers.md | 6 +- .../sip.js.sessiondescriptionhandler.close.md | 2 +- ...iondescriptionhandler.createdatachannel.md | 4 +- ...riptionhandler.createlocalofferoranswer.md | 4 +- ...essiondescriptionhandler.getdescription.md | 6 +- ...ndescriptionhandler.getlocalmediastream.md | 4 +- ...ptionhandler.getlocalsessiondescription.md | 2 +- ...essiondescriptionhandler.hasdescription.md | 4 +- ...descriptionhandler.icegatheringcomplete.md | 2 +- .../sip.js.sessiondescriptionhandler.md | 27 +++---- ...p.js.sessiondescriptionhandler.senddtmf.md | 6 +- ...essiondescriptionhandler.setdescription.md | 8 +-- ...ndescriptionhandler.setlocalmediastream.md | 4 +- ...ptionhandler.setlocalsessiondescription.md | 4 +- ...tionhandler.setremotesessiondescription.md | 4 +- ...essiondescriptionhandler.setremotetrack.md | 4 +- ...ssiondescriptionhandler.updatedirection.md | 4 +- ...tionhandler.waitforicegatheringcomplete.md | 6 +- ....sessiondescriptionhandlerconfiguration.md | 8 +-- ...sip.js.sessiondescriptionhandlerfactory.md | 2 + ...sessiondescriptionhandlerfactoryoptions.md | 1 + ...sip.js.sessiondescriptionhandleroptions.md | 23 +++--- .../sip.js.simpleuser._constructor_.md | 4 +- docs/simple-user/sip.js.simpleuser.answer.md | 4 +- docs/simple-user/sip.js.simpleuser.call.md | 8 +-- docs/simple-user/sip.js.simpleuser.connect.md | 2 +- docs/simple-user/sip.js.simpleuser.decline.md | 2 +- .../sip.js.simpleuser.disconnect.md | 2 +- docs/simple-user/sip.js.simpleuser.hangup.md | 2 +- docs/simple-user/sip.js.simpleuser.hold.md | 2 +- .../sip.js.simpleuser.isconnected.md | 2 +- docs/simple-user/sip.js.simpleuser.isheld.md | 2 +- docs/simple-user/sip.js.simpleuser.ismuted.md | 2 +- docs/simple-user/sip.js.simpleuser.md | 14 ++-- docs/simple-user/sip.js.simpleuser.message.md | 6 +- docs/simple-user/sip.js.simpleuser.mute.md | 2 +- .../simple-user/sip.js.simpleuser.register.md | 6 +- .../simple-user/sip.js.simpleuser.senddtmf.md | 4 +- docs/simple-user/sip.js.simpleuser.unhold.md | 2 +- docs/simple-user/sip.js.simpleuser.unmute.md | 2 +- .../sip.js.simpleuser.unregister.md | 4 +- ...ip.js.simpleuserdelegate.oncallanswered.md | 2 +- ...sip.js.simpleuserdelegate.oncallcreated.md | 2 +- ...s.simpleuserdelegate.oncalldtmfreceived.md | 6 +- .../sip.js.simpleuserdelegate.oncallhangup.md | 2 +- .../sip.js.simpleuserdelegate.oncallhold.md | 4 +- ...ip.js.simpleuserdelegate.oncallreceived.md | 2 +- ...js.simpleuserdelegate.onmessagereceived.md | 4 +- .../sip.js.simpleuserdelegate.onregistered.md | 2 +- ...p.js.simpleuserdelegate.onserverconnect.md | 2 +- ...s.simpleuserdelegate.onserverdisconnect.md | 4 +- ...ip.js.simpleuserdelegate.onunregistered.md | 2 +- docs/simple-user/sip.js.simpleusermedia.md | 10 +-- .../sip.js.simpleusermediaconstraints.md | 8 +-- .../sip.js.simpleusermedialocal.md | 6 +- .../sip.js.simpleusermediaremote.md | 8 +-- docs/simple-user/sip.js.simpleuseroptions.md | 16 ++--- .../sip.js.transport._constructor_.md | 4 +- docs/transport/sip.js.transport.connect.md | 2 +- docs/transport/sip.js.transport.disconnect.md | 2 +- docs/transport/sip.js.transport.dispose.md | 2 +- .../transport/sip.js.transport.isconnected.md | 2 +- docs/transport/sip.js.transport.md | 17 ++--- docs/transport/sip.js.transport.send.md | 4 +- docs/transport/sip.js.transportoptions.md | 10 +-- 558 files changed, 1556 insertions(+), 1392 deletions(-) diff --git a/docs/api/sip.js.ack.md b/docs/api/sip.js.ack.md index d357d0a0c..5ea40c064 100644 --- a/docs/api/sip.js.ack.md +++ b/docs/api/sip.js.ack.md @@ -20,5 +20,5 @@ The constructor for this class is marked as internal. Third-party code should no | Property | Modifiers | Type | Description | | --- | --- | --- | --- | -| [request](./sip.js.ack.request.md) | | IncomingRequestMessage | Incoming ACK request message. | +| [request](./sip.js.ack.request.md) | | IncomingRequestMessage | Incoming ACK request message. | diff --git a/docs/api/sip.js.bodyandcontenttype.md b/docs/api/sip.js.bodyandcontenttype.md index 081a4f6b9..bb8b45943 100644 --- a/docs/api/sip.js.bodyandcontenttype.md +++ b/docs/api/sip.js.bodyandcontenttype.md @@ -14,8 +14,8 @@ export interface BodyAndContentType ## Properties -| Property | Type | Description | -| --- | --- | --- | -| [body](./sip.js.bodyandcontenttype.body.md) | string | Message body content. | -| [contentType](./sip.js.bodyandcontenttype.contenttype.md) | string | Message body content type. | +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [body](./sip.js.bodyandcontenttype.body.md) | | string | Message body content. | +| [contentType](./sip.js.bodyandcontenttype.contenttype.md) | | string | Message body content type. | diff --git a/docs/api/sip.js.bye.accept.md b/docs/api/sip.js.bye.accept.md index 8ad944a12..1608441bd 100644 --- a/docs/api/sip.js.bye.accept.md +++ b/docs/api/sip.js.bye.accept.md @@ -16,9 +16,9 @@ accept(options?: ResponseOptions): Promise; | Parameter | Type | Description | | --- | --- | --- | -| options | ResponseOptions | | +| options | ResponseOptions | | Returns: -`Promise` +Promise<void> diff --git a/docs/api/sip.js.bye.md b/docs/api/sip.js.bye.md index 8e3bf5bdf..8f14dcd43 100644 --- a/docs/api/sip.js.bye.md +++ b/docs/api/sip.js.bye.md @@ -20,7 +20,7 @@ The constructor for this class is marked as internal. Third-party code should no | Property | Modifiers | Type | Description | | --- | --- | --- | --- | -| [request](./sip.js.bye.request.md) | | IncomingRequestMessage | Incoming BYE request message. | +| [request](./sip.js.bye.request.md) | | IncomingRequestMessage | Incoming BYE request message. | ## Methods diff --git a/docs/api/sip.js.bye.reject.md b/docs/api/sip.js.bye.reject.md index 9c6e4e6c1..31ccbb507 100644 --- a/docs/api/sip.js.bye.reject.md +++ b/docs/api/sip.js.bye.reject.md @@ -16,9 +16,9 @@ reject(options?: ResponseOptions): Promise; | Parameter | Type | Description | | --- | --- | --- | -| options | ResponseOptions | | +| options | ResponseOptions | | Returns: -`Promise` +Promise<void> diff --git a/docs/api/sip.js.contenttypeunsupportederror._constructor_.md b/docs/api/sip.js.contenttypeunsupportederror._constructor_.md index 7f6092197..2474bb204 100644 --- a/docs/api/sip.js.contenttypeunsupportederror._constructor_.md +++ b/docs/api/sip.js.contenttypeunsupportederror._constructor_.md @@ -16,5 +16,5 @@ constructor(message?: string); | Parameter | Type | Description | | --- | --- | --- | -| message | string | | +| message | string | | diff --git a/docs/api/sip.js.contenttypeunsupportederror.md b/docs/api/sip.js.contenttypeunsupportederror.md index 446be0ab9..8b0b2e355 100644 --- a/docs/api/sip.js.contenttypeunsupportederror.md +++ b/docs/api/sip.js.contenttypeunsupportederror.md @@ -11,6 +11,7 @@ An exception indicating an unsupported content type prevented execution. ```typescript export declare class ContentTypeUnsupportedError extends Exception ``` +Extends: Exception ## Constructors diff --git a/docs/api/sip.js.emitter.addlistener.md b/docs/api/sip.js.emitter.addlistener.md index 73ef8caab..abc795e2d 100644 --- a/docs/api/sip.js.emitter.addlistener.md +++ b/docs/api/sip.js.emitter.addlistener.md @@ -18,10 +18,10 @@ addListener(listener: (data: T) => void, options?: { | Parameter | Type | Description | | --- | --- | --- | -| listener | (data: T) => void | Callback function. | -| options | {
once?: boolean;
} | An options object that specifies characteristics about the listener. If once true, indicates that the listener should be invoked at most once after being added. If once true, the listener would be automatically removed when invoked. | +| listener | (data: T) => void | Callback function. | +| options | { once?: boolean; } | An options object that specifies characteristics about the listener. If once true, indicates that the listener should be invoked at most once after being added. If once true, the listener would be automatically removed when invoked. | Returns: -`void` +void diff --git a/docs/api/sip.js.emitter.off.md b/docs/api/sip.js.emitter.off.md index 0b7b83082..0479d2947 100644 --- a/docs/api/sip.js.emitter.off.md +++ b/docs/api/sip.js.emitter.off.md @@ -21,9 +21,9 @@ off(listener: (data: T) => void): void; | Parameter | Type | Description | | --- | --- | --- | -| listener | (data: T) => void | Callback function. | +| listener | (data: T) => void | Callback function. | Returns: -`void` +void diff --git a/docs/api/sip.js.emitter.on.md b/docs/api/sip.js.emitter.on.md index b7502ffa3..04e99f859 100644 --- a/docs/api/sip.js.emitter.on.md +++ b/docs/api/sip.js.emitter.on.md @@ -21,9 +21,9 @@ on(listener: (data: T) => void): void; | Parameter | Type | Description | | --- | --- | --- | -| listener | (data: T) => void | Callback function. | +| listener | (data: T) => void | Callback function. | Returns: -`void` +void diff --git a/docs/api/sip.js.emitter.once.md b/docs/api/sip.js.emitter.once.md index cdc27cef9..6629b7e4b 100644 --- a/docs/api/sip.js.emitter.once.md +++ b/docs/api/sip.js.emitter.once.md @@ -21,9 +21,9 @@ once(listener: (data: T) => void): void; | Parameter | Type | Description | | --- | --- | --- | -| listener | (data: T) => void | Callback function. | +| listener | (data: T) => void | Callback function. | Returns: -`void` +void diff --git a/docs/api/sip.js.emitter.removelistener.md b/docs/api/sip.js.emitter.removelistener.md index 98d41d6b4..c27ac86f3 100644 --- a/docs/api/sip.js.emitter.removelistener.md +++ b/docs/api/sip.js.emitter.removelistener.md @@ -16,9 +16,9 @@ removeListener(listener: (data: T) => void): void; | Parameter | Type | Description | | --- | --- | --- | -| listener | (data: T) => void | Callback function. | +| listener | (data: T) => void | Callback function. | Returns: -`void` +void diff --git a/docs/api/sip.js.info.accept.md b/docs/api/sip.js.info.accept.md index 9abba3841..4eae8aa1d 100644 --- a/docs/api/sip.js.info.accept.md +++ b/docs/api/sip.js.info.accept.md @@ -16,9 +16,9 @@ accept(options?: ResponseOptions): Promise; | Parameter | Type | Description | | --- | --- | --- | -| options | ResponseOptions | | +| options | ResponseOptions | | Returns: -`Promise` +Promise<void> diff --git a/docs/api/sip.js.info.md b/docs/api/sip.js.info.md index 4c74a2e7f..e796f345d 100644 --- a/docs/api/sip.js.info.md +++ b/docs/api/sip.js.info.md @@ -20,7 +20,7 @@ The constructor for this class is marked as internal. Third-party code should no | Property | Modifiers | Type | Description | | --- | --- | --- | --- | -| [request](./sip.js.info.request.md) | | IncomingRequestMessage | Incoming MESSAGE request message. | +| [request](./sip.js.info.request.md) | | IncomingRequestMessage | Incoming MESSAGE request message. | ## Methods diff --git a/docs/api/sip.js.info.reject.md b/docs/api/sip.js.info.reject.md index 40e6a8ae2..518721f07 100644 --- a/docs/api/sip.js.info.reject.md +++ b/docs/api/sip.js.info.reject.md @@ -16,9 +16,9 @@ reject(options?: ResponseOptions): Promise; | Parameter | Type | Description | | --- | --- | --- | -| options | ResponseOptions | | +| options | ResponseOptions | | Returns: -`Promise` +Promise<void> diff --git a/docs/api/sip.js.invitation.accept.md b/docs/api/sip.js.invitation.accept.md index 5acd89e52..cae3057a1 100644 --- a/docs/api/sip.js.invitation.accept.md +++ b/docs/api/sip.js.invitation.accept.md @@ -16,11 +16,11 @@ accept(options?: InvitationAcceptOptions): Promise; | Parameter | Type | Description | | --- | --- | --- | -| options | InvitationAcceptOptions | Options bucket. | +| options | [InvitationAcceptOptions](./sip.js.invitationacceptoptions.md) | Options bucket. | Returns: -`Promise` +Promise<void> ## Remarks diff --git a/docs/api/sip.js.invitation.dispose.md b/docs/api/sip.js.invitation.dispose.md index a205e6ddf..3ebb89e62 100644 --- a/docs/api/sip.js.invitation.dispose.md +++ b/docs/api/sip.js.invitation.dispose.md @@ -13,5 +13,5 @@ dispose(): Promise; ``` Returns: -`Promise` +Promise<void> diff --git a/docs/api/sip.js.invitation.md b/docs/api/sip.js.invitation.md index ac02ee365..1ec68a666 100644 --- a/docs/api/sip.js.invitation.md +++ b/docs/api/sip.js.invitation.md @@ -11,6 +11,7 @@ An invitation is an offer to establish a [Session](./sip.js.session.md) (incomin ```typescript export declare class Invitation extends Session ``` +Extends: [Session](./sip.js.session.md) ## Remarks @@ -20,12 +21,12 @@ The constructor for this class is marked as internal. Third-party code should no | Property | Modifiers | Type | Description | | --- | --- | --- | --- | -| [autoSendAnInitialProvisionalResponse](./sip.js.invitation.autosendaninitialprovisionalresponse.md) | | boolean | If true, a first provisional response after the 100 Trying will be sent automatically. This is false it the UAC required reliable provisional responses (100rel in Require header) or the user agent configuration has specified to not send an initial response, otherwise it is true. The provisional is sent by calling progress() without any options. | -| [body](./sip.js.invitation.body.md) | | string | undefined | Initial incoming INVITE request message body. | -| [localIdentity](./sip.js.invitation.localidentity.md) | | NameAddrHeader | The identity of the local user. | -| [logger](./sip.js.invitation.logger.md) | | Logger | Logger. | -| [remoteIdentity](./sip.js.invitation.remoteidentity.md) | | NameAddrHeader | The identity of the remote user. | -| [request](./sip.js.invitation.request.md) | | IncomingRequestMessage | Initial incoming INVITE request message. | +| [autoSendAnInitialProvisionalResponse](./sip.js.invitation.autosendaninitialprovisionalresponse.md) | | boolean | If true, a first provisional response after the 100 Trying will be sent automatically. This is false it the UAC required reliable provisional responses (100rel in Require header) or the user agent configuration has specified to not send an initial response, otherwise it is true. The provisional is sent by calling progress() without any options. | +| [body](./sip.js.invitation.body.md) | | string \| undefined | Initial incoming INVITE request message body. | +| [localIdentity](./sip.js.invitation.localidentity.md) | | NameAddrHeader | The identity of the local user. | +| [logger](./sip.js.invitation.logger.md) | | Logger | Logger. | +| [remoteIdentity](./sip.js.invitation.remoteidentity.md) | | NameAddrHeader | The identity of the remote user. | +| [request](./sip.js.invitation.request.md) | | IncomingRequestMessage | Initial incoming INVITE request message. | ## Methods diff --git a/docs/api/sip.js.invitation.progress.md b/docs/api/sip.js.invitation.progress.md index fe75fe9bd..b7034fc6a 100644 --- a/docs/api/sip.js.invitation.progress.md +++ b/docs/api/sip.js.invitation.progress.md @@ -16,11 +16,11 @@ progress(options?: InvitationProgressOptions): Promise; | Parameter | Type | Description | | --- | --- | --- | -| options | InvitationProgressOptions | Options bucket. | +| options | [InvitationProgressOptions](./sip.js.invitationprogressoptions.md) | Options bucket. | Returns: -`Promise` +Promise<void> ## Remarks diff --git a/docs/api/sip.js.invitation.reject.md b/docs/api/sip.js.invitation.reject.md index 61e9eba56..f6630d223 100644 --- a/docs/api/sip.js.invitation.reject.md +++ b/docs/api/sip.js.invitation.reject.md @@ -16,11 +16,11 @@ reject(options?: InvitationRejectOptions): Promise; | Parameter | Type | Description | | --- | --- | --- | -| options | InvitationRejectOptions | Options bucket. | +| options | [InvitationRejectOptions](./sip.js.invitationrejectoptions.md) | Options bucket. | Returns: -`Promise` +Promise<void> ## Remarks diff --git a/docs/api/sip.js.invitationacceptoptions.md b/docs/api/sip.js.invitationacceptoptions.md index 6a9fbc952..e9b4bd789 100644 --- a/docs/api/sip.js.invitationacceptoptions.md +++ b/docs/api/sip.js.invitationacceptoptions.md @@ -14,9 +14,9 @@ export interface InvitationAcceptOptions ## Properties -| Property | Type | Description | -| --- | --- | --- | -| [extraHeaders](./sip.js.invitationacceptoptions.extraheaders.md) | Array<string> | Array of extra headers added to the response. | -| [sessionDescriptionHandlerModifiers](./sip.js.invitationacceptoptions.sessiondescriptionhandlermodifiers.md) | Array<SessionDescriptionHandlerModifier> | Modifiers to pass to SessionDescriptionHandler during the initial INVITE transaction. | -| [sessionDescriptionHandlerOptions](./sip.js.invitationacceptoptions.sessiondescriptionhandleroptions.md) | SessionDescriptionHandlerOptions | Options to pass to SessionDescriptionHandler during the initial INVITE transaction. | +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [extraHeaders](./sip.js.invitationacceptoptions.extraheaders.md) | | Array<string> | Array of extra headers added to the response. | +| [sessionDescriptionHandlerModifiers](./sip.js.invitationacceptoptions.sessiondescriptionhandlermodifiers.md) | | Array<[SessionDescriptionHandlerModifier](./sip.js.sessiondescriptionhandlermodifier.md)> | Modifiers to pass to SessionDescriptionHandler during the initial INVITE transaction. | +| [sessionDescriptionHandlerOptions](./sip.js.invitationacceptoptions.sessiondescriptionhandleroptions.md) | | [SessionDescriptionHandlerOptions](./sip.js.sessiondescriptionhandleroptions.md) | Options to pass to SessionDescriptionHandler during the initial INVITE transaction. | diff --git a/docs/api/sip.js.invitationprogressoptions.md b/docs/api/sip.js.invitationprogressoptions.md index 48138a9a0..251066d49 100644 --- a/docs/api/sip.js.invitationprogressoptions.md +++ b/docs/api/sip.js.invitationprogressoptions.md @@ -14,13 +14,13 @@ export interface InvitationProgressOptions ## Properties -| Property | Type | Description | -| --- | --- | --- | -| [body](./sip.js.invitationprogressoptions.body.md) | string | {
body: string;
contentType: string;
} | Body | -| [extraHeaders](./sip.js.invitationprogressoptions.extraheaders.md) | Array<string> | Array of extra headers added to the response. | -| [reasonPhrase](./sip.js.invitationprogressoptions.reasonphrase.md) | string | Reason phrase for response. | -| [rel100](./sip.js.invitationprogressoptions.rel100.md) | boolean | Send reliable response. | -| [sessionDescriptionHandlerModifiers](./sip.js.invitationprogressoptions.sessiondescriptionhandlermodifiers.md) | Array<SessionDescriptionHandlerModifier> | Modifiers to pass to SessionDescriptionHandler during the initial INVITE transaction. | -| [sessionDescriptionHandlerOptions](./sip.js.invitationprogressoptions.sessiondescriptionhandleroptions.md) | SessionDescriptionHandlerOptions | Options to pass to SessionDescriptionHandler during the initial INVITE transaction. | -| [statusCode](./sip.js.invitationprogressoptions.statuscode.md) | number | Status code for response. | +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [body](./sip.js.invitationprogressoptions.body.md) | | string \| { body: string; contentType: string; } | Body | +| [extraHeaders](./sip.js.invitationprogressoptions.extraheaders.md) | | Array<string> | Array of extra headers added to the response. | +| [reasonPhrase](./sip.js.invitationprogressoptions.reasonphrase.md) | | string | Reason phrase for response. | +| [rel100](./sip.js.invitationprogressoptions.rel100.md) | | boolean | Send reliable response. | +| [sessionDescriptionHandlerModifiers](./sip.js.invitationprogressoptions.sessiondescriptionhandlermodifiers.md) | | Array<[SessionDescriptionHandlerModifier](./sip.js.sessiondescriptionhandlermodifier.md)> | Modifiers to pass to SessionDescriptionHandler during the initial INVITE transaction. | +| [sessionDescriptionHandlerOptions](./sip.js.invitationprogressoptions.sessiondescriptionhandleroptions.md) | | [SessionDescriptionHandlerOptions](./sip.js.sessiondescriptionhandleroptions.md) | Options to pass to SessionDescriptionHandler during the initial INVITE transaction. | +| [statusCode](./sip.js.invitationprogressoptions.statuscode.md) | | number | Status code for response. | diff --git a/docs/api/sip.js.invitationrejectoptions.md b/docs/api/sip.js.invitationrejectoptions.md index 8f4cfc80f..22f087dd7 100644 --- a/docs/api/sip.js.invitationrejectoptions.md +++ b/docs/api/sip.js.invitationrejectoptions.md @@ -14,10 +14,10 @@ export interface InvitationRejectOptions ## Properties -| Property | Type | Description | -| --- | --- | --- | -| [body](./sip.js.invitationrejectoptions.body.md) | string | {
body: string;
contentType: string;
} | Body | -| [extraHeaders](./sip.js.invitationrejectoptions.extraheaders.md) | Array<string> | Array of extra headers added to the response. | -| [reasonPhrase](./sip.js.invitationrejectoptions.reasonphrase.md) | string | Reason phrase for response. | -| [statusCode](./sip.js.invitationrejectoptions.statuscode.md) | number | Status code for response. | +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [body](./sip.js.invitationrejectoptions.body.md) | | string \| { body: string; contentType: string; } | Body | +| [extraHeaders](./sip.js.invitationrejectoptions.extraheaders.md) | | Array<string> | Array of extra headers added to the response. | +| [reasonPhrase](./sip.js.invitationrejectoptions.reasonphrase.md) | | string | Reason phrase for response. | +| [statusCode](./sip.js.invitationrejectoptions.statuscode.md) | | number | Status code for response. | diff --git a/docs/api/sip.js.inviter._constructor_.md b/docs/api/sip.js.inviter._constructor_.md index 2a15260f4..a9383cb92 100644 --- a/docs/api/sip.js.inviter._constructor_.md +++ b/docs/api/sip.js.inviter._constructor_.md @@ -16,7 +16,7 @@ constructor(userAgent: UserAgent, targetURI: URI, options?: InviterOptions); | Parameter | Type | Description | | --- | --- | --- | -| userAgent | UserAgent | User agent. See [UserAgent](./sip.js.useragent.md) for details. | -| targetURI | URI | Request URI identifying the target of the message. | -| options | InviterOptions | Options bucket. See [InviterOptions](./sip.js.inviteroptions.md) for details. | +| userAgent | [UserAgent](./sip.js.useragent.md) | User agent. See [UserAgent](./sip.js.useragent.md) for details. | +| targetURI | URI | Request URI identifying the target of the message. | +| options | [InviterOptions](./sip.js.inviteroptions.md) | Options bucket. See [InviterOptions](./sip.js.inviteroptions.md) for details. | diff --git a/docs/api/sip.js.inviter.cancel.md b/docs/api/sip.js.inviter.cancel.md index 993bb08e6..a30d334f3 100644 --- a/docs/api/sip.js.inviter.cancel.md +++ b/docs/api/sip.js.inviter.cancel.md @@ -16,11 +16,11 @@ cancel(options?: InviterCancelOptions): Promise; | Parameter | Type | Description | | --- | --- | --- | -| options | InviterCancelOptions | Options bucket. | +| options | [InviterCancelOptions](./sip.js.invitercanceloptions.md) | Options bucket. | Returns: -`Promise` +Promise<void> ## Remarks diff --git a/docs/api/sip.js.inviter.dispose.md b/docs/api/sip.js.inviter.dispose.md index 3e1954453..48e4b96e6 100644 --- a/docs/api/sip.js.inviter.dispose.md +++ b/docs/api/sip.js.inviter.dispose.md @@ -13,5 +13,5 @@ dispose(): Promise; ``` Returns: -`Promise` +Promise<void> diff --git a/docs/api/sip.js.inviter.invite.md b/docs/api/sip.js.inviter.invite.md index d546c31b0..1d0ad8e3d 100644 --- a/docs/api/sip.js.inviter.invite.md +++ b/docs/api/sip.js.inviter.invite.md @@ -16,11 +16,11 @@ invite(options?: InviterInviteOptions): Promise; | Parameter | Type | Description | | --- | --- | --- | -| options | InviterInviteOptions | | +| options | [InviterInviteOptions](./sip.js.inviterinviteoptions.md) | | Returns: -`Promise` +Promise<OutgoingInviteRequest> ## Remarks diff --git a/docs/api/sip.js.inviter.md b/docs/api/sip.js.inviter.md index dd37295e2..2ac460b66 100644 --- a/docs/api/sip.js.inviter.md +++ b/docs/api/sip.js.inviter.md @@ -11,6 +11,7 @@ An inviter offers to establish a [Session](./sip.js.session.md) (outgoing INVITE ```typescript export declare class Inviter extends Session ``` +Extends: [Session](./sip.js.session.md) ## Constructors @@ -22,11 +23,11 @@ export declare class Inviter extends Session | Property | Modifiers | Type | Description | | --- | --- | --- | --- | -| [body](./sip.js.inviter.body.md) | | BodyAndContentType | undefined | Initial outgoing INVITE request message body. | -| [localIdentity](./sip.js.inviter.localidentity.md) | | NameAddrHeader | The identity of the local user. | -| [logger](./sip.js.inviter.logger.md) | | Logger | Logger. | -| [remoteIdentity](./sip.js.inviter.remoteidentity.md) | | NameAddrHeader | The identity of the remote user. | -| [request](./sip.js.inviter.request.md) | | OutgoingRequestMessage | Initial outgoing INVITE request message. | +| [body](./sip.js.inviter.body.md) | | [BodyAndContentType](./sip.js.bodyandcontenttype.md) \| undefined | Initial outgoing INVITE request message body. | +| [localIdentity](./sip.js.inviter.localidentity.md) | | NameAddrHeader | The identity of the local user. | +| [logger](./sip.js.inviter.logger.md) | | Logger | Logger. | +| [remoteIdentity](./sip.js.inviter.remoteidentity.md) | | NameAddrHeader | The identity of the remote user. | +| [request](./sip.js.inviter.request.md) | | OutgoingRequestMessage | Initial outgoing INVITE request message. | ## Methods diff --git a/docs/api/sip.js.invitercanceloptions.md b/docs/api/sip.js.invitercanceloptions.md index 7425f0937..904cf365b 100644 --- a/docs/api/sip.js.invitercanceloptions.md +++ b/docs/api/sip.js.invitercanceloptions.md @@ -14,9 +14,9 @@ export interface InviterCancelOptions ## Properties -| Property | Type | Description | -| --- | --- | --- | -| [extraHeaders](./sip.js.invitercanceloptions.extraheaders.md) | Array<string> | | -| [reasonPhrase](./sip.js.invitercanceloptions.reasonphrase.md) | string | | -| [statusCode](./sip.js.invitercanceloptions.statuscode.md) | number | | +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [extraHeaders](./sip.js.invitercanceloptions.extraheaders.md) | | Array<string> | | +| [reasonPhrase](./sip.js.invitercanceloptions.reasonphrase.md) | | string | | +| [statusCode](./sip.js.invitercanceloptions.statuscode.md) | | number | | diff --git a/docs/api/sip.js.inviterinviteoptions.md b/docs/api/sip.js.inviterinviteoptions.md index 0f4051f07..da8fe7870 100644 --- a/docs/api/sip.js.inviterinviteoptions.md +++ b/docs/api/sip.js.inviterinviteoptions.md @@ -14,11 +14,11 @@ export interface InviterInviteOptions ## Properties -| Property | Type | Description | -| --- | --- | --- | -| [requestDelegate](./sip.js.inviterinviteoptions.requestdelegate.md) | OutgoingRequestDelegate | See core API. | -| [requestOptions](./sip.js.inviterinviteoptions.requestoptions.md) | RequestOptions | See core API. | -| [sessionDescriptionHandlerModifiers](./sip.js.inviterinviteoptions.sessiondescriptionhandlermodifiers.md) | Array<SessionDescriptionHandlerModifier> | Modifiers to pass to SessionDescriptionHandler during the initial INVITE transaction. | -| [sessionDescriptionHandlerOptions](./sip.js.inviterinviteoptions.sessiondescriptionhandleroptions.md) | SessionDescriptionHandlerOptions | Options to pass to SessionDescriptionHandler during the initial INVITE transaction. | -| [withoutSdp](./sip.js.inviterinviteoptions.withoutsdp.md) | boolean | If true, send INVITE without SDP. Default is false. | +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [requestDelegate](./sip.js.inviterinviteoptions.requestdelegate.md) | | OutgoingRequestDelegate | See core API. | +| [requestOptions](./sip.js.inviterinviteoptions.requestoptions.md) | | RequestOptions | See core API. | +| [sessionDescriptionHandlerModifiers](./sip.js.inviterinviteoptions.sessiondescriptionhandlermodifiers.md) | | Array<[SessionDescriptionHandlerModifier](./sip.js.sessiondescriptionhandlermodifier.md)> | Modifiers to pass to SessionDescriptionHandler during the initial INVITE transaction. | +| [sessionDescriptionHandlerOptions](./sip.js.inviterinviteoptions.sessiondescriptionhandleroptions.md) | | [SessionDescriptionHandlerOptions](./sip.js.sessiondescriptionhandleroptions.md) | Options to pass to SessionDescriptionHandler during the initial INVITE transaction. | +| [withoutSdp](./sip.js.inviterinviteoptions.withoutsdp.md) | | boolean | If true, send INVITE without SDP. Default is false. | diff --git a/docs/api/sip.js.inviteroptions.md b/docs/api/sip.js.inviteroptions.md index e6d84a8b2..829e43125 100644 --- a/docs/api/sip.js.inviteroptions.md +++ b/docs/api/sip.js.inviteroptions.md @@ -11,20 +11,21 @@ Options for [Inviter](./sip.js.inviter.md) constructor. ```typescript export interface InviterOptions extends SessionOptions ``` +Extends: [SessionOptions](./sip.js.sessionoptions.md) ## Properties -| Property | Type | Description | -| --- | --- | --- | -| [anonymous](./sip.js.inviteroptions.anonymous.md) | boolean | If true, an anonymous call. | -| [earlyMedia](./sip.js.inviteroptions.earlymedia.md) | boolean | If true, the first answer to the local offer is immediately utilized for media. Requires that the INVITE request MUST NOT fork. Has no effect if inviteWithoutSdp is true. Default is false. | -| [extraHeaders](./sip.js.inviteroptions.extraheaders.md) | Array<string> | Array of extra headers added to the INVITE. | -| [inviteWithoutSdp](./sip.js.inviteroptions.invitewithoutsdp.md) | boolean | If true, send INVITE without SDP. Default is false. | -| [params](./sip.js.inviteroptions.params.md) | {
fromDisplayName?: string;
fromTag?: string;
fromUri?: string | URI;
toDisplayName?: string;
toUri?: string | URI;
} | | -| [renderbody](./sip.js.inviteroptions.renderbody.md) | string | | -| [rendertype](./sip.js.inviteroptions.rendertype.md) | string | | -| [sessionDescriptionHandlerModifiers](./sip.js.inviteroptions.sessiondescriptionhandlermodifiers.md) | Array<SessionDescriptionHandlerModifier> | Modifiers to pass to SessionDescriptionHandler during the initial INVITE transaction. | -| [sessionDescriptionHandlerModifiersReInvite](./sip.js.inviteroptions.sessiondescriptionhandlermodifiersreinvite.md) | Array<SessionDescriptionHandlerModifier> | Modifiers to pass to SessionDescriptionHandler during re-INVITE transactions. | -| [sessionDescriptionHandlerOptions](./sip.js.inviteroptions.sessiondescriptionhandleroptions.md) | SessionDescriptionHandlerOptions | Options to pass to SessionDescriptionHandler during the initial INVITE transaction. | -| [sessionDescriptionHandlerOptionsReInvite](./sip.js.inviteroptions.sessiondescriptionhandleroptionsreinvite.md) | SessionDescriptionHandlerOptions | Options to pass to SessionDescriptionHandler during re-INVITE transactions. | +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [anonymous](./sip.js.inviteroptions.anonymous.md) | | boolean | If true, an anonymous call. | +| [earlyMedia](./sip.js.inviteroptions.earlymedia.md) | | boolean | If true, the first answer to the local offer is immediately utilized for media. Requires that the INVITE request MUST NOT fork. Has no effect if inviteWithoutSdp is true. Default is false. | +| [extraHeaders](./sip.js.inviteroptions.extraheaders.md) | | Array<string> | Array of extra headers added to the INVITE. | +| [inviteWithoutSdp](./sip.js.inviteroptions.invitewithoutsdp.md) | | boolean | If true, send INVITE without SDP. Default is false. | +| [params](./sip.js.inviteroptions.params.md) | | { fromDisplayName?: string; fromTag?: string; fromUri?: string \| URI; toDisplayName?: string; toUri?: string \| URI; } | | +| [renderbody](./sip.js.inviteroptions.renderbody.md) | | string | | +| [rendertype](./sip.js.inviteroptions.rendertype.md) | | string | | +| [sessionDescriptionHandlerModifiers](./sip.js.inviteroptions.sessiondescriptionhandlermodifiers.md) | | Array<[SessionDescriptionHandlerModifier](./sip.js.sessiondescriptionhandlermodifier.md)> | Modifiers to pass to SessionDescriptionHandler during the initial INVITE transaction. | +| [sessionDescriptionHandlerModifiersReInvite](./sip.js.inviteroptions.sessiondescriptionhandlermodifiersreinvite.md) | | Array<[SessionDescriptionHandlerModifier](./sip.js.sessiondescriptionhandlermodifier.md)> | Modifiers to pass to SessionDescriptionHandler during re-INVITE transactions. | +| [sessionDescriptionHandlerOptions](./sip.js.inviteroptions.sessiondescriptionhandleroptions.md) | | [SessionDescriptionHandlerOptions](./sip.js.sessiondescriptionhandleroptions.md) | Options to pass to SessionDescriptionHandler during the initial INVITE transaction. | +| [sessionDescriptionHandlerOptionsReInvite](./sip.js.inviteroptions.sessiondescriptionhandleroptionsreinvite.md) | | [SessionDescriptionHandlerOptions](./sip.js.sessiondescriptionhandleroptions.md) | Options to pass to SessionDescriptionHandler during re-INVITE transactions. | diff --git a/docs/api/sip.js.logconnector.md b/docs/api/sip.js.logconnector.md index f8786c184..c357f06d4 100644 --- a/docs/api/sip.js.logconnector.md +++ b/docs/api/sip.js.logconnector.md @@ -11,3 +11,5 @@ Log connector function. ```typescript export declare type LogConnector = (level: LogLevel, category: string, label: string | undefined, content: string) => void; ``` +References: [LogLevel](./sip.js.loglevel.md) + diff --git a/docs/api/sip.js.message.accept.md b/docs/api/sip.js.message.accept.md index eb056c9fd..c7d095d31 100644 --- a/docs/api/sip.js.message.accept.md +++ b/docs/api/sip.js.message.accept.md @@ -16,9 +16,9 @@ accept(options?: ResponseOptions): Promise; | Parameter | Type | Description | | --- | --- | --- | -| options | ResponseOptions | | +| options | ResponseOptions | | Returns: -`Promise` +Promise<void> diff --git a/docs/api/sip.js.message.md b/docs/api/sip.js.message.md index 0da71ad83..261f899da 100644 --- a/docs/api/sip.js.message.md +++ b/docs/api/sip.js.message.md @@ -20,7 +20,7 @@ The constructor for this class is marked as internal. Third-party code should no | Property | Modifiers | Type | Description | | --- | --- | --- | --- | -| [request](./sip.js.message.request.md) | | IncomingRequestMessage | Incoming MESSAGE request message. | +| [request](./sip.js.message.request.md) | | IncomingRequestMessage | Incoming MESSAGE request message. | ## Methods diff --git a/docs/api/sip.js.message.reject.md b/docs/api/sip.js.message.reject.md index 4e5f1f029..7b31344c0 100644 --- a/docs/api/sip.js.message.reject.md +++ b/docs/api/sip.js.message.reject.md @@ -16,9 +16,9 @@ reject(options?: ResponseOptions): Promise; | Parameter | Type | Description | | --- | --- | --- | -| options | ResponseOptions | | +| options | ResponseOptions | | Returns: -`Promise` +Promise<void> diff --git a/docs/api/sip.js.messager._constructor_.md b/docs/api/sip.js.messager._constructor_.md index dc5e9b08c..86e887d92 100644 --- a/docs/api/sip.js.messager._constructor_.md +++ b/docs/api/sip.js.messager._constructor_.md @@ -16,9 +16,9 @@ constructor(userAgent: UserAgent, targetURI: URI, content: string, contentType?: | Parameter | Type | Description | | --- | --- | --- | -| userAgent | UserAgent | User agent. See [UserAgent](./sip.js.useragent.md) for details. | -| targetURI | URI | Request URI identifying the target of the message. | -| content | string | Content for the body of the message. | -| contentType | string | Content type of the body of the message. | -| options | MessagerOptions | Options bucket. See [MessagerOptions](./sip.js.messageroptions.md) for details. | +| userAgent | [UserAgent](./sip.js.useragent.md) | User agent. See [UserAgent](./sip.js.useragent.md) for details. | +| targetURI | URI | Request URI identifying the target of the message. | +| content | string | Content for the body of the message. | +| contentType | string | Content type of the body of the message. | +| options | [MessagerOptions](./sip.js.messageroptions.md) | Options bucket. See [MessagerOptions](./sip.js.messageroptions.md) for details. | diff --git a/docs/api/sip.js.messager.message.md b/docs/api/sip.js.messager.message.md index f0af46e9e..14cb00605 100644 --- a/docs/api/sip.js.messager.message.md +++ b/docs/api/sip.js.messager.message.md @@ -16,9 +16,9 @@ message(options?: MessagerMessageOptions): Promise; | Parameter | Type | Description | | --- | --- | --- | -| options | MessagerMessageOptions | | +| options | [MessagerMessageOptions](./sip.js.messagermessageoptions.md) | | Returns: -`Promise` +Promise<void> diff --git a/docs/api/sip.js.messagermessageoptions.md b/docs/api/sip.js.messagermessageoptions.md index b488d643d..c698542f7 100644 --- a/docs/api/sip.js.messagermessageoptions.md +++ b/docs/api/sip.js.messagermessageoptions.md @@ -14,8 +14,8 @@ export interface MessagerMessageOptions ## Properties -| Property | Type | Description | -| --- | --- | --- | -| [requestDelegate](./sip.js.messagermessageoptions.requestdelegate.md) | OutgoingRequestDelegate | See core API. | -| [requestOptions](./sip.js.messagermessageoptions.requestoptions.md) | RequestOptions | See core API. | +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [requestDelegate](./sip.js.messagermessageoptions.requestdelegate.md) | | OutgoingRequestDelegate | See core API. | +| [requestOptions](./sip.js.messagermessageoptions.requestoptions.md) | | RequestOptions | See core API. | diff --git a/docs/api/sip.js.messageroptions.md b/docs/api/sip.js.messageroptions.md index 2c00f6dde..b3ecba67a 100644 --- a/docs/api/sip.js.messageroptions.md +++ b/docs/api/sip.js.messageroptions.md @@ -14,8 +14,8 @@ export interface MessagerOptions ## Properties -| Property | Type | Description | -| --- | --- | --- | -| [extraHeaders](./sip.js.messageroptions.extraheaders.md) | Array<string> | Array of extra headers added to the MESSAGE. | -| [params](./sip.js.messageroptions.params.md) | {
fromDisplayName?: string;
fromTag?: string;
fromUri?: string | URI;
toDisplayName?: string;
toUri?: string | URI;
} | | +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [extraHeaders](./sip.js.messageroptions.extraheaders.md) | | Array<string> | Array of extra headers added to the MESSAGE. | +| [params](./sip.js.messageroptions.params.md) | | { fromDisplayName?: string; fromTag?: string; fromUri?: string \| URI; toDisplayName?: string; toUri?: string \| URI; } | | diff --git a/docs/api/sip.js.notification.accept.md b/docs/api/sip.js.notification.accept.md index 7c37b9375..005407ed9 100644 --- a/docs/api/sip.js.notification.accept.md +++ b/docs/api/sip.js.notification.accept.md @@ -16,9 +16,9 @@ accept(options?: ResponseOptions): Promise; | Parameter | Type | Description | | --- | --- | --- | -| options | ResponseOptions | | +| options | ResponseOptions | | Returns: -`Promise` +Promise<void> diff --git a/docs/api/sip.js.notification.md b/docs/api/sip.js.notification.md index 8bc67489d..fa4b0c3dc 100644 --- a/docs/api/sip.js.notification.md +++ b/docs/api/sip.js.notification.md @@ -20,7 +20,7 @@ The constructor for this class is marked as internal. Third-party code should no | Property | Modifiers | Type | Description | | --- | --- | --- | --- | -| [request](./sip.js.notification.request.md) | | IncomingRequestMessage | Incoming NOTIFY request message. | +| [request](./sip.js.notification.request.md) | | IncomingRequestMessage | Incoming NOTIFY request message. | ## Methods diff --git a/docs/api/sip.js.notification.reject.md b/docs/api/sip.js.notification.reject.md index 1ddb760f0..d2af8da1c 100644 --- a/docs/api/sip.js.notification.reject.md +++ b/docs/api/sip.js.notification.reject.md @@ -16,9 +16,9 @@ reject(options?: ResponseOptions): Promise; | Parameter | Type | Description | | --- | --- | --- | -| options | ResponseOptions | | +| options | ResponseOptions | | Returns: -`Promise` +Promise<void> diff --git a/docs/api/sip.js.publisher._constructor_.md b/docs/api/sip.js.publisher._constructor_.md index 1ee0cdef3..de1af5e2b 100644 --- a/docs/api/sip.js.publisher._constructor_.md +++ b/docs/api/sip.js.publisher._constructor_.md @@ -16,8 +16,8 @@ constructor(userAgent: UserAgent, targetURI: URI, eventType: string, options?: P | Parameter | Type | Description | | --- | --- | --- | -| userAgent | UserAgent | User agent. See [UserAgent](./sip.js.useragent.md) for details. | -| targetURI | URI | Request URI identifying the target of the message. | -| eventType | string | The event type identifying the published document. | -| options | PublisherOptions | Options bucket. See [PublisherOptions](./sip.js.publisheroptions.md) for details. | +| userAgent | [UserAgent](./sip.js.useragent.md) | User agent. See [UserAgent](./sip.js.useragent.md) for details. | +| targetURI | URI | Request URI identifying the target of the message. | +| eventType | string | The event type identifying the published document. | +| options | [PublisherOptions](./sip.js.publisheroptions.md) | Options bucket. See [PublisherOptions](./sip.js.publisheroptions.md) for details. | diff --git a/docs/api/sip.js.publisher.dispose.md b/docs/api/sip.js.publisher.dispose.md index 1b1f5f653..b613a8335 100644 --- a/docs/api/sip.js.publisher.dispose.md +++ b/docs/api/sip.js.publisher.dispose.md @@ -13,5 +13,5 @@ dispose(): Promise; ``` Returns: -`Promise` +Promise<void> diff --git a/docs/api/sip.js.publisher.md b/docs/api/sip.js.publisher.md index acd23f0ff..5edf46dac 100644 --- a/docs/api/sip.js.publisher.md +++ b/docs/api/sip.js.publisher.md @@ -22,8 +22,8 @@ export declare class Publisher | Property | Modifiers | Type | Description | | --- | --- | --- | --- | -| [state](./sip.js.publisher.state.md) | | PublisherState | The publication state. | -| [stateChange](./sip.js.publisher.statechange.md) | | Emitter<PublisherState> | Emits when the publisher state changes. | +| [state](./sip.js.publisher.state.md) | | [PublisherState](./sip.js.publisherstate.md) | The publication state. | +| [stateChange](./sip.js.publisher.statechange.md) | | [Emitter](./sip.js.emitter.md)<[PublisherState](./sip.js.publisherstate.md)> | Emits when the publisher state changes. | ## Methods diff --git a/docs/api/sip.js.publisher.publish.md b/docs/api/sip.js.publisher.publish.md index f92edc834..1cd8254de 100644 --- a/docs/api/sip.js.publisher.publish.md +++ b/docs/api/sip.js.publisher.publish.md @@ -16,10 +16,10 @@ publish(content: string, options?: PublisherPublishOptions): Promise; | Parameter | Type | Description | | --- | --- | --- | -| content | string | Body to publish | -| options | PublisherPublishOptions | | +| content | string | Body to publish | +| options | [PublisherPublishOptions](./sip.js.publisherpublishoptions.md) | | Returns: -`Promise` +Promise<void> diff --git a/docs/api/sip.js.publisher.unpublish.md b/docs/api/sip.js.publisher.unpublish.md index 63d01574d..8f1613d47 100644 --- a/docs/api/sip.js.publisher.unpublish.md +++ b/docs/api/sip.js.publisher.unpublish.md @@ -16,9 +16,9 @@ unpublish(options?: PublisherUnpublishOptions): Promise; | Parameter | Type | Description | | --- | --- | --- | -| options | PublisherUnpublishOptions | | +| options | [PublisherUnpublishOptions](./sip.js.publisherunpublishoptions.md) | | Returns: -`Promise` +Promise<void> diff --git a/docs/api/sip.js.publisheroptions.md b/docs/api/sip.js.publisheroptions.md index d3d10d0ac..326c224e1 100644 --- a/docs/api/sip.js.publisheroptions.md +++ b/docs/api/sip.js.publisheroptions.md @@ -14,12 +14,12 @@ export interface PublisherOptions ## Properties -| Property | Type | Description | -| --- | --- | --- | -| [body](./sip.js.publisheroptions.body.md) | string | | -| [contentType](./sip.js.publisheroptions.contenttype.md) | string | | -| [expires](./sip.js.publisheroptions.expires.md) | number | Expire value for the published event. | -| [extraHeaders](./sip.js.publisheroptions.extraheaders.md) | Array<string> | Array of extra headers added to the PUBLISH request message. | -| [params](./sip.js.publisheroptions.params.md) | {
fromDisplayName?: string;
fromTag?: string;
fromUri?: URI;
toDisplayName?: string;
toUri?: URI;
} | | -| [unpublishOnClose](./sip.js.publisheroptions.unpublishonclose.md) | boolean | If set true, UA will gracefully unpublish for the event on UA close. | +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [body](./sip.js.publisheroptions.body.md) | | string | | +| [contentType](./sip.js.publisheroptions.contenttype.md) | | string | | +| [expires](./sip.js.publisheroptions.expires.md) | | number | Expire value for the published event. | +| [extraHeaders](./sip.js.publisheroptions.extraheaders.md) | | Array<string> | Array of extra headers added to the PUBLISH request message. | +| [params](./sip.js.publisheroptions.params.md) | | { fromDisplayName?: string; fromTag?: string; fromUri?: URI; toDisplayName?: string; toUri?: URI; } | | +| [unpublishOnClose](./sip.js.publisheroptions.unpublishonclose.md) | | boolean | If set true, UA will gracefully unpublish for the event on UA close. | diff --git a/docs/api/sip.js.publisherstate.md b/docs/api/sip.js.publisherstate.md index d77936804..34a733167 100644 --- a/docs/api/sip.js.publisherstate.md +++ b/docs/api/sip.js.publisherstate.md @@ -32,6 +32,5 @@ Publisher | | v v Constructed -> Initial -> Published -> Unpublished -> Terminated | ^____________| ^ |______________________________| - ``` diff --git a/docs/api/sip.js.referral.accept.md b/docs/api/sip.js.referral.accept.md index aa9076395..744ec3a48 100644 --- a/docs/api/sip.js.referral.accept.md +++ b/docs/api/sip.js.referral.accept.md @@ -16,9 +16,9 @@ accept(options?: ResponseOptions): Promise; | Parameter | Type | Description | | --- | --- | --- | -| options | ResponseOptions | | +| options | ResponseOptions | | Returns: -`Promise` +Promise<void> diff --git a/docs/api/sip.js.referral.makeinviter.md b/docs/api/sip.js.referral.makeinviter.md index e69e3570b..caec72941 100644 --- a/docs/api/sip.js.referral.makeinviter.md +++ b/docs/api/sip.js.referral.makeinviter.md @@ -16,11 +16,11 @@ makeInviter(options?: InviterOptions): Inviter; | Parameter | Type | Description | | --- | --- | --- | -| options | InviterOptions | Options bucket. | +| options | [InviterOptions](./sip.js.inviteroptions.md) | Options bucket. | Returns: -`Inviter` +[Inviter](./sip.js.inviter.md) ## Remarks diff --git a/docs/api/sip.js.referral.md b/docs/api/sip.js.referral.md index 2a26e06e9..ff21901f8 100644 --- a/docs/api/sip.js.referral.md +++ b/docs/api/sip.js.referral.md @@ -20,10 +20,10 @@ The constructor for this class is marked as internal. Third-party code should no | Property | Modifiers | Type | Description | | --- | --- | --- | --- | -| [referredBy](./sip.js.referral.referredby.md) | | string | undefined | | -| [referTo](./sip.js.referral.referto.md) | | NameAddrHeader | | -| [replaces](./sip.js.referral.replaces.md) | | string | undefined | | -| [request](./sip.js.referral.request.md) | | IncomingRequestMessage | Incoming REFER request message. | +| [referredBy](./sip.js.referral.referredby.md) | | string \| undefined | | +| [referTo](./sip.js.referral.referto.md) | | NameAddrHeader | | +| [replaces](./sip.js.referral.replaces.md) | | string \| undefined | | +| [request](./sip.js.referral.request.md) | | IncomingRequestMessage | Incoming REFER request message. | ## Methods diff --git a/docs/api/sip.js.referral.reject.md b/docs/api/sip.js.referral.reject.md index ec1f3abbf..ad757b9e5 100644 --- a/docs/api/sip.js.referral.reject.md +++ b/docs/api/sip.js.referral.reject.md @@ -16,9 +16,9 @@ reject(options?: ResponseOptions): Promise; | Parameter | Type | Description | | --- | --- | --- | -| options | ResponseOptions | | +| options | ResponseOptions | | Returns: -`Promise` +Promise<void> diff --git a/docs/api/sip.js.registerer._constructor_.md b/docs/api/sip.js.registerer._constructor_.md index 9eeab7416..eac46c3f2 100644 --- a/docs/api/sip.js.registerer._constructor_.md +++ b/docs/api/sip.js.registerer._constructor_.md @@ -16,6 +16,6 @@ constructor(userAgent: UserAgent, options?: RegistererOptions); | Parameter | Type | Description | | --- | --- | --- | -| userAgent | UserAgent | User agent. See [UserAgent](./sip.js.useragent.md) for details. | -| options | RegistererOptions | Options bucket. See [RegistererOptions](./sip.js.registereroptions.md) for details. | +| userAgent | [UserAgent](./sip.js.useragent.md) | User agent. See [UserAgent](./sip.js.useragent.md) for details. | +| options | [RegistererOptions](./sip.js.registereroptions.md) | Options bucket. See [RegistererOptions](./sip.js.registereroptions.md) for details. | diff --git a/docs/api/sip.js.registerer.dispose.md b/docs/api/sip.js.registerer.dispose.md index ee7710cc7..f71e3a850 100644 --- a/docs/api/sip.js.registerer.dispose.md +++ b/docs/api/sip.js.registerer.dispose.md @@ -13,5 +13,5 @@ dispose(): Promise; ``` Returns: -`Promise` +Promise<void> diff --git a/docs/api/sip.js.registerer.md b/docs/api/sip.js.registerer.md index f4dceac13..a0692e832 100644 --- a/docs/api/sip.js.registerer.md +++ b/docs/api/sip.js.registerer.md @@ -22,10 +22,10 @@ export declare class Registerer | Property | Modifiers | Type | Description | | --- | --- | --- | --- | -| [contacts](./sip.js.registerer.contacts.md) | | Array<string> | The registered contacts. | -| [retryAfter](./sip.js.registerer.retryafter.md) | | number | undefined | The number of seconds to wait before retrying to register. | -| [state](./sip.js.registerer.state.md) | | RegistererState | The registration state. | -| [stateChange](./sip.js.registerer.statechange.md) | | Emitter<RegistererState> | Emits when the registerer state changes. | +| [contacts](./sip.js.registerer.contacts.md) | | Array<string> | The registered contacts. | +| [retryAfter](./sip.js.registerer.retryafter.md) | | number \| undefined | The number of seconds to wait before retrying to register. | +| [state](./sip.js.registerer.state.md) | | [RegistererState](./sip.js.registererstate.md) | The registration state. | +| [stateChange](./sip.js.registerer.statechange.md) | | [Emitter](./sip.js.emitter.md)<[RegistererState](./sip.js.registererstate.md)> | Emits when the registerer state changes. | ## Methods diff --git a/docs/api/sip.js.registerer.register.md b/docs/api/sip.js.registerer.register.md index 931f4cdb5..d217c60dd 100644 --- a/docs/api/sip.js.registerer.register.md +++ b/docs/api/sip.js.registerer.register.md @@ -16,11 +16,11 @@ register(options?: RegistererRegisterOptions): Promise; | Parameter | Type | Description | | --- | --- | --- | -| options | RegistererRegisterOptions | | +| options | [RegistererRegisterOptions](./sip.js.registererregisteroptions.md) | | Returns: -`Promise` +Promise<OutgoingRegisterRequest> ## Remarks diff --git a/docs/api/sip.js.registerer.retryafter.md b/docs/api/sip.js.registerer.retryafter.md index 92adc057a..f2d56529e 100644 --- a/docs/api/sip.js.registerer.retryafter.md +++ b/docs/api/sip.js.registerer.retryafter.md @@ -37,6 +37,5 @@ registerer.register({ } } }); - ``` diff --git a/docs/api/sip.js.registerer.unregister.md b/docs/api/sip.js.registerer.unregister.md index aef802215..93b46c9c6 100644 --- a/docs/api/sip.js.registerer.unregister.md +++ b/docs/api/sip.js.registerer.unregister.md @@ -16,11 +16,11 @@ unregister(options?: RegistererUnregisterOptions): PromiseRegistererUnregisterOptions | | +| options | [RegistererUnregisterOptions](./sip.js.registererunregisteroptions.md) | | Returns: -`Promise` +Promise<OutgoingRegisterRequest> ## Remarks diff --git a/docs/api/sip.js.registereroptions.md b/docs/api/sip.js.registereroptions.md index 3ba307dbb..2f7ea8f10 100644 --- a/docs/api/sip.js.registereroptions.md +++ b/docs/api/sip.js.registereroptions.md @@ -14,15 +14,15 @@ export interface RegistererOptions ## Properties -| Property | Type | Description | -| --- | --- | --- | -| [expires](./sip.js.registereroptions.expires.md) | number | Registration expiration time in seconds. | -| [extraContactHeaderParams](./sip.js.registereroptions.extracontactheaderparams.md) | Array<string> | Array of extra Contact header parameters. | -| [extraHeaders](./sip.js.registereroptions.extraheaders.md) | Array<string> | Array of extra headers added to the REGISTER. | -| [instanceId](./sip.js.registereroptions.instanceid.md) | string | UUID to provide with "+sip.instance" Contact parameter. | -| [logConfiguration](./sip.js.registereroptions.logconfiguration.md) | boolean | If true, constructor logs the registerer configuration. | -| [params](./sip.js.registereroptions.params.md) | {
fromDisplayName?: string;
fromTag?: string;
fromUri?: URI;
toDisplayName?: string;
toUri?: URI;
} | | -| [refreshFrequency](./sip.js.registereroptions.refreshfrequency.md) | number | Determines when a re-REGISTER request is sent. The value should be specified as a percentage of the expiration time (between 50 and 99). | -| [regId](./sip.js.registereroptions.regid.md) | number | Value to provide with "reg-id" Contact parameter. | -| [registrar](./sip.js.registereroptions.registrar.md) | URI | The URI of the registrar to send the REGISTER requests. | +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [expires](./sip.js.registereroptions.expires.md) | | number | Registration expiration time in seconds. | +| [extraContactHeaderParams](./sip.js.registereroptions.extracontactheaderparams.md) | | Array<string> | Array of extra Contact header parameters. | +| [extraHeaders](./sip.js.registereroptions.extraheaders.md) | | Array<string> | Array of extra headers added to the REGISTER. | +| [instanceId](./sip.js.registereroptions.instanceid.md) | | string | UUID to provide with "+sip.instance" Contact parameter. | +| [logConfiguration](./sip.js.registereroptions.logconfiguration.md) | | boolean | If true, constructor logs the registerer configuration. | +| [params](./sip.js.registereroptions.params.md) | | { fromDisplayName?: string; fromTag?: string; fromUri?: URI; toDisplayName?: string; toUri?: URI; } | | +| [refreshFrequency](./sip.js.registereroptions.refreshfrequency.md) | | number | Determines when a re-REGISTER request is sent. The value should be specified as a percentage of the expiration time (between 50 and 99). | +| [regId](./sip.js.registereroptions.regid.md) | | number | Value to provide with "reg-id" Contact parameter. | +| [registrar](./sip.js.registereroptions.registrar.md) | | URI | The URI of the registrar to send the REGISTER requests. | diff --git a/docs/api/sip.js.registererregisteroptions.md b/docs/api/sip.js.registererregisteroptions.md index cf08c04da..1affbfecc 100644 --- a/docs/api/sip.js.registererregisteroptions.md +++ b/docs/api/sip.js.registererregisteroptions.md @@ -14,8 +14,8 @@ export interface RegistererRegisterOptions ## Properties -| Property | Type | Description | -| --- | --- | --- | -| [requestDelegate](./sip.js.registererregisteroptions.requestdelegate.md) | OutgoingRequestDelegate | See core API. | -| [requestOptions](./sip.js.registererregisteroptions.requestoptions.md) | RequestOptions | See core API. | +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [requestDelegate](./sip.js.registererregisteroptions.requestdelegate.md) | | OutgoingRequestDelegate | See core API. | +| [requestOptions](./sip.js.registererregisteroptions.requestoptions.md) | | RequestOptions | See core API. | diff --git a/docs/api/sip.js.registererstate.md b/docs/api/sip.js.registererstate.md index 41cb258f2..b33849316 100644 --- a/docs/api/sip.js.registererstate.md +++ b/docs/api/sip.js.registererstate.md @@ -32,6 +32,5 @@ Registerer | | v v Constructed -> Initial -> Registered -> Unregistered -> Terminated | ^____________| ^ |______________________________| - ``` diff --git a/docs/api/sip.js.registererunregisteroptions.md b/docs/api/sip.js.registererunregisteroptions.md index 5b5000b95..60558dbda 100644 --- a/docs/api/sip.js.registererunregisteroptions.md +++ b/docs/api/sip.js.registererunregisteroptions.md @@ -14,9 +14,9 @@ export interface RegistererUnregisterOptions ## Properties -| Property | Type | Description | -| --- | --- | --- | -| [all](./sip.js.registererunregisteroptions.all.md) | boolean | If true, unregister all contacts. | -| [requestDelegate](./sip.js.registererunregisteroptions.requestdelegate.md) | OutgoingRequestDelegate | See core API. | -| [requestOptions](./sip.js.registererunregisteroptions.requestoptions.md) | RequestOptions | See core API. | +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [all](./sip.js.registererunregisteroptions.all.md) | | boolean | If true, unregister all contacts. | +| [requestDelegate](./sip.js.registererunregisteroptions.requestdelegate.md) | | OutgoingRequestDelegate | See core API. | +| [requestOptions](./sip.js.registererunregisteroptions.requestoptions.md) | | RequestOptions | See core API. | diff --git a/docs/api/sip.js.requestpendingerror.md b/docs/api/sip.js.requestpendingerror.md index 77c6d9d5b..ebfe8a2fe 100644 --- a/docs/api/sip.js.requestpendingerror.md +++ b/docs/api/sip.js.requestpendingerror.md @@ -11,6 +11,7 @@ An exception indicating an outstanding prior request prevented execution. ```typescript export declare class RequestPendingError extends Exception ``` +Extends: Exception ## Remarks diff --git a/docs/api/sip.js.session.bye.md b/docs/api/sip.js.session.bye.md index 9f4b2af1f..104b0c490 100644 --- a/docs/api/sip.js.session.bye.md +++ b/docs/api/sip.js.session.bye.md @@ -16,9 +16,9 @@ bye(options?: SessionByeOptions): Promise; | Parameter | Type | Description | | --- | --- | --- | -| options | SessionByeOptions | Options bucket. See [SessionByeOptions](./sip.js.sessionbyeoptions.md) for details. | +| options | [SessionByeOptions](./sip.js.sessionbyeoptions.md) | Options bucket. See [SessionByeOptions](./sip.js.sessionbyeoptions.md) for details. | Returns: -`Promise` +Promise<OutgoingByeRequest> diff --git a/docs/api/sip.js.session.dispose.md b/docs/api/sip.js.session.dispose.md index 6d8d5f76c..265b721ef 100644 --- a/docs/api/sip.js.session.dispose.md +++ b/docs/api/sip.js.session.dispose.md @@ -13,5 +13,5 @@ dispose(): Promise; ``` Returns: -`Promise` +Promise<void> diff --git a/docs/api/sip.js.session.info.md b/docs/api/sip.js.session.info.md index 13ac3c5b7..9492e0fd5 100644 --- a/docs/api/sip.js.session.info.md +++ b/docs/api/sip.js.session.info.md @@ -16,9 +16,9 @@ info(options?: SessionInfoOptions): Promise; | Parameter | Type | Description | | --- | --- | --- | -| options | SessionInfoOptions | Options bucket. See [SessionInfoOptions](./sip.js.sessioninfooptions.md) for details. | +| options | [SessionInfoOptions](./sip.js.sessioninfooptions.md) | Options bucket. See [SessionInfoOptions](./sip.js.sessioninfooptions.md) for details. | Returns: -`Promise` +Promise<OutgoingInfoRequest> diff --git a/docs/api/sip.js.session.invite.md b/docs/api/sip.js.session.invite.md index 7167e654d..18fb2dd0b 100644 --- a/docs/api/sip.js.session.invite.md +++ b/docs/api/sip.js.session.invite.md @@ -16,9 +16,9 @@ invite(options?: SessionInviteOptions): Promise; | Parameter | Type | Description | | --- | --- | --- | -| options | SessionInviteOptions | Options bucket. See [SessionInviteOptions](./sip.js.sessioninviteoptions.md) for details. | +| options | [SessionInviteOptions](./sip.js.sessioninviteoptions.md) | Options bucket. See [SessionInviteOptions](./sip.js.sessioninviteoptions.md) for details. | Returns: -`Promise` +Promise<OutgoingInviteRequest> diff --git a/docs/api/sip.js.session.md b/docs/api/sip.js.session.md index ed880b735..ce8555a23 100644 --- a/docs/api/sip.js.session.md +++ b/docs/api/sip.js.session.md @@ -22,24 +22,24 @@ The constructor for this class is marked as internal. Third-party code should no | Property | Modifiers | Type | Description | | --- | --- | --- | --- | -| [assertedIdentity](./sip.js.session.assertedidentity.md) | | NameAddrHeader | undefined | The asserted identity of the remote user. | -| [data](./sip.js.session.data.md) | | unknown | Property reserved for use by instance owner. | -| [delegate](./sip.js.session.delegate.md) | | SessionDelegate | undefined | The session delegate. | -| [dialog](./sip.js.session.dialog.md) | | SessionDialog | undefined | The confirmed session dialog. | -| [id](./sip.js.session.id.md) | | string | A unique identifier for this session. | -| [localIdentity](./sip.js.session.localidentity.md) | | NameAddrHeader | The identity of the local user. | -| [logger](./sip.js.session.logger.md) | | Logger | Logger. | -| [remoteIdentity](./sip.js.session.remoteidentity.md) | | NameAddrHeader | The identity of the remote user. | -| [replacee](./sip.js.session.replacee.md) | | Session | undefined | The session being replace by this one. | -| [sessionDescriptionHandler](./sip.js.session.sessiondescriptionhandler.md) | | SessionDescriptionHandler | undefined | Session description handler. | -| [sessionDescriptionHandlerFactory](./sip.js.session.sessiondescriptionhandlerfactory.md) | | SessionDescriptionHandlerFactory | Session description handler factory. | -| [sessionDescriptionHandlerModifiers](./sip.js.session.sessiondescriptionhandlermodifiers.md) | | Array<SessionDescriptionHandlerModifier> | SDH modifiers for the initial INVITE transaction. | -| [sessionDescriptionHandlerModifiersReInvite](./sip.js.session.sessiondescriptionhandlermodifiersreinvite.md) | | Array<SessionDescriptionHandlerModifier> | SDH modifiers for re-INVITE transactions. | -| [sessionDescriptionHandlerOptions](./sip.js.session.sessiondescriptionhandleroptions.md) | | SessionDescriptionHandlerOptions | SDH options for the initial INVITE transaction. | -| [sessionDescriptionHandlerOptionsReInvite](./sip.js.session.sessiondescriptionhandleroptionsreinvite.md) | | SessionDescriptionHandlerOptions | SDH options for re-INVITE transactions. | -| [state](./sip.js.session.state.md) | | SessionState | Session state. | -| [stateChange](./sip.js.session.statechange.md) | | Emitter<SessionState> | Session state change emitter. | -| [userAgent](./sip.js.session.useragent.md) | | UserAgent | The user agent. | +| [assertedIdentity](./sip.js.session.assertedidentity.md) | | NameAddrHeader \| undefined | The asserted identity of the remote user. | +| [data](./sip.js.session.data.md) | | unknown | Property reserved for use by instance owner. | +| [delegate](./sip.js.session.delegate.md) | | [SessionDelegate](./sip.js.sessiondelegate.md) \| undefined | The session delegate. | +| [dialog](./sip.js.session.dialog.md) | | SessionDialog \| undefined | The confirmed session dialog. | +| [id](./sip.js.session.id.md) | | string | A unique identifier for this session. | +| [localIdentity](./sip.js.session.localidentity.md) | | NameAddrHeader | The identity of the local user. | +| [logger](./sip.js.session.logger.md) | | Logger | Logger. | +| [remoteIdentity](./sip.js.session.remoteidentity.md) | | NameAddrHeader | The identity of the remote user. | +| [replacee](./sip.js.session.replacee.md) | | [Session](./sip.js.session.md) \| undefined | The session being replace by this one. | +| [sessionDescriptionHandler](./sip.js.session.sessiondescriptionhandler.md) | | [SessionDescriptionHandler](./sip.js.sessiondescriptionhandler.md) \| undefined | Session description handler. | +| [sessionDescriptionHandlerFactory](./sip.js.session.sessiondescriptionhandlerfactory.md) | | [SessionDescriptionHandlerFactory](./sip.js.sessiondescriptionhandlerfactory.md) | Session description handler factory. | +| [sessionDescriptionHandlerModifiers](./sip.js.session.sessiondescriptionhandlermodifiers.md) | | Array<[SessionDescriptionHandlerModifier](./sip.js.sessiondescriptionhandlermodifier.md)> | SDH modifiers for the initial INVITE transaction. | +| [sessionDescriptionHandlerModifiersReInvite](./sip.js.session.sessiondescriptionhandlermodifiersreinvite.md) | | Array<[SessionDescriptionHandlerModifier](./sip.js.sessiondescriptionhandlermodifier.md)> | SDH modifiers for re-INVITE transactions. | +| [sessionDescriptionHandlerOptions](./sip.js.session.sessiondescriptionhandleroptions.md) | | [SessionDescriptionHandlerOptions](./sip.js.sessiondescriptionhandleroptions.md) | SDH options for the initial INVITE transaction. | +| [sessionDescriptionHandlerOptionsReInvite](./sip.js.session.sessiondescriptionhandleroptionsreinvite.md) | | [SessionDescriptionHandlerOptions](./sip.js.sessiondescriptionhandleroptions.md) | SDH options for re-INVITE transactions. | +| [state](./sip.js.session.state.md) | | [SessionState](./sip.js.sessionstate.md) | Session state. | +| [stateChange](./sip.js.session.statechange.md) | | [Emitter](./sip.js.emitter.md)<[SessionState](./sip.js.sessionstate.md)> | Session state change emitter. | +| [userAgent](./sip.js.session.useragent.md) | | [UserAgent](./sip.js.useragent.md) | The user agent. | ## Methods diff --git a/docs/api/sip.js.session.message.md b/docs/api/sip.js.session.message.md index 6d6660233..99f37e4fe 100644 --- a/docs/api/sip.js.session.message.md +++ b/docs/api/sip.js.session.message.md @@ -16,9 +16,9 @@ message(options?: SessionMessageOptions): Promise; | Parameter | Type | Description | | --- | --- | --- | -| options | SessionMessageOptions | Options bucket. See [SessionMessageOptions](./sip.js.sessionmessageoptions.md) for details. | +| options | [SessionMessageOptions](./sip.js.sessionmessageoptions.md) | Options bucket. See [SessionMessageOptions](./sip.js.sessionmessageoptions.md) for details. | Returns: -`Promise` +Promise<OutgoingMessageRequest> diff --git a/docs/api/sip.js.session.refer.md b/docs/api/sip.js.session.refer.md index 1b9702678..320c62993 100644 --- a/docs/api/sip.js.session.refer.md +++ b/docs/api/sip.js.session.refer.md @@ -16,10 +16,10 @@ refer(referTo: URI | Session, options?: SessionReferOptions): PromiseURI | Session | The referral target. If a Session, a REFER w/Replaces is sent. | -| options | SessionReferOptions | Options bucket. See [SessionReferOptions](./sip.js.sessionreferoptions.md) for details. | +| referTo | URI \| [Session](./sip.js.session.md) | The referral target. If a Session, a REFER w/Replaces is sent. | +| options | [SessionReferOptions](./sip.js.sessionreferoptions.md) | Options bucket. See [SessionReferOptions](./sip.js.sessionreferoptions.md) for details. | Returns: -`Promise` +Promise<OutgoingReferRequest> diff --git a/docs/api/sip.js.sessionbyeoptions.md b/docs/api/sip.js.sessionbyeoptions.md index 433ff4899..7fb2a7423 100644 --- a/docs/api/sip.js.sessionbyeoptions.md +++ b/docs/api/sip.js.sessionbyeoptions.md @@ -14,8 +14,8 @@ export interface SessionByeOptions ## Properties -| Property | Type | Description | -| --- | --- | --- | -| [requestDelegate](./sip.js.sessionbyeoptions.requestdelegate.md) | OutgoingRequestDelegate | See core API. | -| [requestOptions](./sip.js.sessionbyeoptions.requestoptions.md) | RequestOptions | See core API. | +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [requestDelegate](./sip.js.sessionbyeoptions.requestdelegate.md) | | OutgoingRequestDelegate | See core API. | +| [requestOptions](./sip.js.sessionbyeoptions.requestoptions.md) | | RequestOptions | See core API. | diff --git a/docs/api/sip.js.sessiondelegate.onack.md b/docs/api/sip.js.sessiondelegate.onack.md index 837d97473..4de32d3f5 100644 --- a/docs/api/sip.js.sessiondelegate.onack.md +++ b/docs/api/sip.js.sessiondelegate.onack.md @@ -16,9 +16,9 @@ onAck?(ack: Ack): void; | Parameter | Type | Description | | --- | --- | --- | -| ack | Ack | The ack. | +| ack | [Ack](./sip.js.ack.md) | The ack. | Returns: -`void` +void diff --git a/docs/api/sip.js.sessiondelegate.onbye.md b/docs/api/sip.js.sessiondelegate.onbye.md index e49c12493..92ac639f3 100644 --- a/docs/api/sip.js.sessiondelegate.onbye.md +++ b/docs/api/sip.js.sessiondelegate.onbye.md @@ -16,9 +16,9 @@ onBye?(bye: Bye): void; | Parameter | Type | Description | | --- | --- | --- | -| bye | Bye | The bye. | +| bye | [Bye](./sip.js.bye.md) | The bye. | Returns: -`void` +void diff --git a/docs/api/sip.js.sessiondelegate.oninfo.md b/docs/api/sip.js.sessiondelegate.oninfo.md index 1aa5e2dc4..41f05d555 100644 --- a/docs/api/sip.js.sessiondelegate.oninfo.md +++ b/docs/api/sip.js.sessiondelegate.oninfo.md @@ -16,9 +16,9 @@ onInfo?(info: Info): void; | Parameter | Type | Description | | --- | --- | --- | -| info | Info | The info. | +| info | [Info](./sip.js.info.md) | The info. | Returns: -`void` +void diff --git a/docs/api/sip.js.sessiondelegate.oninvite.md b/docs/api/sip.js.sessiondelegate.oninvite.md index f8c6d2bf2..695780c2d 100644 --- a/docs/api/sip.js.sessiondelegate.oninvite.md +++ b/docs/api/sip.js.sessiondelegate.oninvite.md @@ -16,11 +16,11 @@ onInvite?(request: IncomingRequestMessage, response: string, statusCode: number) | Parameter | Type | Description | | --- | --- | --- | -| request | IncomingRequestMessage | | -| response | string | | -| statusCode | number | | +| request | IncomingRequestMessage | | +| response | string | | +| statusCode | number | | Returns: -`void` +void diff --git a/docs/api/sip.js.sessiondelegate.onmessage.md b/docs/api/sip.js.sessiondelegate.onmessage.md index 7a876232f..c7a4ff31a 100644 --- a/docs/api/sip.js.sessiondelegate.onmessage.md +++ b/docs/api/sip.js.sessiondelegate.onmessage.md @@ -16,9 +16,9 @@ onMessage?(message: Message): void; | Parameter | Type | Description | | --- | --- | --- | -| message | Message | The message. | +| message | [Message](./sip.js.message.md) | The message. | Returns: -`void` +void diff --git a/docs/api/sip.js.sessiondelegate.onnotify.md b/docs/api/sip.js.sessiondelegate.onnotify.md index 2d868fd8d..46869f268 100644 --- a/docs/api/sip.js.sessiondelegate.onnotify.md +++ b/docs/api/sip.js.sessiondelegate.onnotify.md @@ -16,11 +16,11 @@ onNotify?(notification: Notification): void; | Parameter | Type | Description | | --- | --- | --- | -| notification | Notification | The notification. | +| notification | [Notification](./sip.js.notification.md) | The notification. | Returns: -`void` +void ## Remarks diff --git a/docs/api/sip.js.sessiondelegate.onrefer.md b/docs/api/sip.js.sessiondelegate.onrefer.md index b7579c64d..55cbc891f 100644 --- a/docs/api/sip.js.sessiondelegate.onrefer.md +++ b/docs/api/sip.js.sessiondelegate.onrefer.md @@ -16,9 +16,9 @@ onRefer?(referral: Referral): void; | Parameter | Type | Description | | --- | --- | --- | -| referral | Referral | The referral. | +| referral | [Referral](./sip.js.referral.md) | The referral. | Returns: -`void` +void diff --git a/docs/api/sip.js.sessiondelegate.onsessiondescriptionhandler.md b/docs/api/sip.js.sessiondelegate.onsessiondescriptionhandler.md index 5454cb354..baa76dd23 100644 --- a/docs/api/sip.js.sessiondelegate.onsessiondescriptionhandler.md +++ b/docs/api/sip.js.sessiondelegate.onsessiondescriptionhandler.md @@ -16,12 +16,12 @@ onSessionDescriptionHandler?(sessionDescriptionHandler: SessionDescriptionHandle | Parameter | Type | Description | | --- | --- | --- | -| sessionDescriptionHandler | SessionDescriptionHandler | The handler. | -| provisional | boolean | True if created provisionally. | +| sessionDescriptionHandler | [SessionDescriptionHandler](./sip.js.sessiondescriptionhandler.md) | The handler. | +| provisional | boolean | True if created provisionally. | Returns: -`void` +void ## Remarks diff --git a/docs/api/sip.js.sessiondescriptionhandler.close.md b/docs/api/sip.js.sessiondescriptionhandler.close.md index deccec0fb..9f1a0894d 100644 --- a/docs/api/sip.js.sessiondescriptionhandler.close.md +++ b/docs/api/sip.js.sessiondescriptionhandler.close.md @@ -13,5 +13,5 @@ close(): void; ``` Returns: -`void` +void diff --git a/docs/api/sip.js.sessiondescriptionhandler.getdescription.md b/docs/api/sip.js.sessiondescriptionhandler.getdescription.md index 68b8b0880..129ff6ef5 100644 --- a/docs/api/sip.js.sessiondescriptionhandler.getdescription.md +++ b/docs/api/sip.js.sessiondescriptionhandler.getdescription.md @@ -16,12 +16,12 @@ getDescription(options?: SessionDescriptionHandlerOptions, modifiers?: ArraySessionDescriptionHandlerOptions | Options object to be used by getDescription. | -| modifiers | Array<SessionDescriptionHandlerModifier> | Array with one time use description modifiers. | +| options | [SessionDescriptionHandlerOptions](./sip.js.sessiondescriptionhandleroptions.md) | Options object to be used by getDescription. | +| modifiers | Array<[SessionDescriptionHandlerModifier](./sip.js.sessiondescriptionhandlermodifier.md)> | Array with one time use description modifiers. | Returns: -`Promise` +Promise<[BodyAndContentType](./sip.js.bodyandcontenttype.md)> Promise that resolves with the local description to be used for the session. Rejects with `ClosedSessionDescriptionHandlerError` when this method is called after close or when close occurs before complete. diff --git a/docs/api/sip.js.sessiondescriptionhandler.hasdescription.md b/docs/api/sip.js.sessiondescriptionhandler.hasdescription.md index f2ca278ad..8bb89cb3a 100644 --- a/docs/api/sip.js.sessiondescriptionhandler.hasdescription.md +++ b/docs/api/sip.js.sessiondescriptionhandler.hasdescription.md @@ -16,11 +16,11 @@ hasDescription(contentType: string): boolean; | Parameter | Type | Description | | --- | --- | --- | -| contentType | string | The content type that is in the SIP Message. | +| contentType | string | The content type that is in the SIP Message. | Returns: -`boolean` +boolean True if the content type is handled by this session description handler. False otherwise. diff --git a/docs/api/sip.js.sessiondescriptionhandler.rollbackdescription.md b/docs/api/sip.js.sessiondescriptionhandler.rollbackdescription.md index 748f004ad..7f177e416 100644 --- a/docs/api/sip.js.sessiondescriptionhandler.rollbackdescription.md +++ b/docs/api/sip.js.sessiondescriptionhandler.rollbackdescription.md @@ -13,5 +13,5 @@ rollbackDescription?(): Promise; ``` Returns: -`Promise` +Promise<void> diff --git a/docs/api/sip.js.sessiondescriptionhandler.senddtmf.md b/docs/api/sip.js.sessiondescriptionhandler.senddtmf.md index de8fce8b1..60fd109d6 100644 --- a/docs/api/sip.js.sessiondescriptionhandler.senddtmf.md +++ b/docs/api/sip.js.sessiondescriptionhandler.senddtmf.md @@ -16,12 +16,12 @@ sendDtmf(tones: string, options?: unknown): boolean; | Parameter | Type | Description | | --- | --- | --- | -| tones | string | A string containing DTMF digits. | -| options | unknown | Options object to be used by sendDtmf. | +| tones | string | A string containing DTMF digits. | +| options | unknown | Options object to be used by sendDtmf. | Returns: -`boolean` +boolean True if DTMF send is successful, false otherwise. diff --git a/docs/api/sip.js.sessiondescriptionhandler.setdescription.md b/docs/api/sip.js.sessiondescriptionhandler.setdescription.md index 4064800c8..13ef15238 100644 --- a/docs/api/sip.js.sessiondescriptionhandler.setdescription.md +++ b/docs/api/sip.js.sessiondescriptionhandler.setdescription.md @@ -16,13 +16,13 @@ setDescription(sdp: string, options?: SessionDescriptionHandlerOptions, modifier | Parameter | Type | Description | | --- | --- | --- | -| sdp | string | | -| options | SessionDescriptionHandlerOptions | Options object to be used by setDescription. | -| modifiers | Array<SessionDescriptionHandlerModifier> | Array with one time use description modifiers. | +| sdp | string | | +| options | [SessionDescriptionHandlerOptions](./sip.js.sessiondescriptionhandleroptions.md) | Options object to be used by setDescription. | +| modifiers | Array<[SessionDescriptionHandlerModifier](./sip.js.sessiondescriptionhandlermodifier.md)> | Array with one time use description modifiers. | Returns: -`Promise` +Promise<void> Promise that resolves once the description is set. Rejects with `ClosedSessionDescriptionHandlerError` when this method is called after close or when close occurs before complete. diff --git a/docs/api/sip.js.sessiondescriptionhandlererror._constructor_.md b/docs/api/sip.js.sessiondescriptionhandlererror._constructor_.md index 3b8e39a86..b09fd5062 100644 --- a/docs/api/sip.js.sessiondescriptionhandlererror._constructor_.md +++ b/docs/api/sip.js.sessiondescriptionhandlererror._constructor_.md @@ -16,5 +16,5 @@ constructor(message?: string); | Parameter | Type | Description | | --- | --- | --- | -| message | string | | +| message | string | | diff --git a/docs/api/sip.js.sessiondescriptionhandlererror.md b/docs/api/sip.js.sessiondescriptionhandlererror.md index 336e24df7..04814cab0 100644 --- a/docs/api/sip.js.sessiondescriptionhandlererror.md +++ b/docs/api/sip.js.sessiondescriptionhandlererror.md @@ -11,6 +11,7 @@ An exception indicating a session description handler error occured. ```typescript export declare class SessionDescriptionHandlerError extends Exception ``` +Extends: Exception ## Constructors diff --git a/docs/api/sip.js.sessiondescriptionhandleroptions.md b/docs/api/sip.js.sessiondescriptionhandleroptions.md index 5fa6ffce4..60003a4a7 100644 --- a/docs/api/sip.js.sessiondescriptionhandleroptions.md +++ b/docs/api/sip.js.sessiondescriptionhandleroptions.md @@ -18,7 +18,7 @@ These options are provided to various UserAgent methods (invite() for example) a ## Properties -| Property | Type | Description | -| --- | --- | --- | -| [constraints](./sip.js.sessiondescriptionhandleroptions.constraints.md) | object | | +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [constraints](./sip.js.sessiondescriptionhandleroptions.constraints.md) | | object | | diff --git a/docs/api/sip.js.sessioninfooptions.md b/docs/api/sip.js.sessioninfooptions.md index f255a0041..e388e0b6c 100644 --- a/docs/api/sip.js.sessioninfooptions.md +++ b/docs/api/sip.js.sessioninfooptions.md @@ -14,8 +14,8 @@ export interface SessionInfoOptions ## Properties -| Property | Type | Description | -| --- | --- | --- | -| [requestDelegate](./sip.js.sessioninfooptions.requestdelegate.md) | OutgoingRequestDelegate | See core API. | -| [requestOptions](./sip.js.sessioninfooptions.requestoptions.md) | RequestOptions | See core API. | +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [requestDelegate](./sip.js.sessioninfooptions.requestdelegate.md) | | OutgoingRequestDelegate | See core API. | +| [requestOptions](./sip.js.sessioninfooptions.requestoptions.md) | | RequestOptions | See core API. | diff --git a/docs/api/sip.js.sessioninviteoptions.md b/docs/api/sip.js.sessioninviteoptions.md index 0e992c9d0..83c274abf 100644 --- a/docs/api/sip.js.sessioninviteoptions.md +++ b/docs/api/sip.js.sessioninviteoptions.md @@ -14,11 +14,11 @@ export interface SessionInviteOptions ## Properties -| Property | Type | Description | -| --- | --- | --- | -| [requestDelegate](./sip.js.sessioninviteoptions.requestdelegate.md) | OutgoingRequestDelegate | See core API. | -| [requestOptions](./sip.js.sessioninviteoptions.requestoptions.md) | RequestOptions | See core API. | -| [sessionDescriptionHandlerModifiers](./sip.js.sessioninviteoptions.sessiondescriptionhandlermodifiers.md) | Array<SessionDescriptionHandlerModifier> | Modifiers to pass to SessionDescriptionHandler during re-INVITE transaction. | -| [sessionDescriptionHandlerOptions](./sip.js.sessioninviteoptions.sessiondescriptionhandleroptions.md) | SessionDescriptionHandlerOptions | Options to pass to SessionDescriptionHandler during re-INVITE transaction. | -| [withoutSdp](./sip.js.sessioninviteoptions.withoutsdp.md) | boolean | If true, send INVITE without SDP. Default is false. | +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [requestDelegate](./sip.js.sessioninviteoptions.requestdelegate.md) | | OutgoingRequestDelegate | See core API. | +| [requestOptions](./sip.js.sessioninviteoptions.requestoptions.md) | | RequestOptions | See core API. | +| [sessionDescriptionHandlerModifiers](./sip.js.sessioninviteoptions.sessiondescriptionhandlermodifiers.md) | | Array<[SessionDescriptionHandlerModifier](./sip.js.sessiondescriptionhandlermodifier.md)> | Modifiers to pass to SessionDescriptionHandler during re-INVITE transaction. | +| [sessionDescriptionHandlerOptions](./sip.js.sessioninviteoptions.sessiondescriptionhandleroptions.md) | | [SessionDescriptionHandlerOptions](./sip.js.sessiondescriptionhandleroptions.md) | Options to pass to SessionDescriptionHandler during re-INVITE transaction. | +| [withoutSdp](./sip.js.sessioninviteoptions.withoutsdp.md) | | boolean | If true, send INVITE without SDP. Default is false. | diff --git a/docs/api/sip.js.sessionmessageoptions.md b/docs/api/sip.js.sessionmessageoptions.md index 886c4e7a4..a878f5292 100644 --- a/docs/api/sip.js.sessionmessageoptions.md +++ b/docs/api/sip.js.sessionmessageoptions.md @@ -14,8 +14,8 @@ export interface SessionMessageOptions ## Properties -| Property | Type | Description | -| --- | --- | --- | -| [requestDelegate](./sip.js.sessionmessageoptions.requestdelegate.md) | OutgoingRequestDelegate | See core API. | -| [requestOptions](./sip.js.sessionmessageoptions.requestoptions.md) | RequestOptions | See core API. | +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [requestDelegate](./sip.js.sessionmessageoptions.requestdelegate.md) | | OutgoingRequestDelegate | See core API. | +| [requestOptions](./sip.js.sessionmessageoptions.requestoptions.md) | | RequestOptions | See core API. | diff --git a/docs/api/sip.js.sessionoptions.md b/docs/api/sip.js.sessionoptions.md index 29c60e2d8..2a33e0589 100644 --- a/docs/api/sip.js.sessionoptions.md +++ b/docs/api/sip.js.sessionoptions.md @@ -14,7 +14,7 @@ export interface SessionOptions ## Properties -| Property | Type | Description | -| --- | --- | --- | -| [delegate](./sip.js.sessionoptions.delegate.md) | SessionDelegate | | +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [delegate](./sip.js.sessionoptions.delegate.md) | | [SessionDelegate](./sip.js.sessiondelegate.md) | | diff --git a/docs/api/sip.js.sessionreferoptions.md b/docs/api/sip.js.sessionreferoptions.md index 5c139de6d..1ab01fade 100644 --- a/docs/api/sip.js.sessionreferoptions.md +++ b/docs/api/sip.js.sessionreferoptions.md @@ -14,9 +14,9 @@ export interface SessionReferOptions ## Properties -| Property | Type | Description | -| --- | --- | --- | -| [onNotify](./sip.js.sessionreferoptions.onnotify.md) | (notification: Notification) => void | Called upon receiving an incoming NOTIFY associated with a REFER. | -| [requestDelegate](./sip.js.sessionreferoptions.requestdelegate.md) | OutgoingRequestDelegate | See core API. | -| [requestOptions](./sip.js.sessionreferoptions.requestoptions.md) | RequestOptions | See core API. | +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [onNotify](./sip.js.sessionreferoptions.onnotify.md) | | (notification: [Notification](./sip.js.notification.md)) => void | Called upon receiving an incoming NOTIFY associated with a REFER. | +| [requestDelegate](./sip.js.sessionreferoptions.requestdelegate.md) | | OutgoingRequestDelegate | See core API. | +| [requestOptions](./sip.js.sessionreferoptions.requestoptions.md) | | RequestOptions | See core API. | diff --git a/docs/api/sip.js.sessionstate.md b/docs/api/sip.js.sessionstate.md index 3b5c8bc2b..01dc54a95 100644 --- a/docs/api/sip.js.sessionstate.md +++ b/docs/api/sip.js.sessionstate.md @@ -34,6 +34,5 @@ Session | | | v v v Constructed -> Initial -> Establishing -> Established -> Terminating -> Terminated | |___________________________^ ^ |_______________________________________________| - ``` diff --git a/docs/api/sip.js.sessionterminatederror.md b/docs/api/sip.js.sessionterminatederror.md index 2f3dd0361..13fe6fc31 100644 --- a/docs/api/sip.js.sessionterminatederror.md +++ b/docs/api/sip.js.sessionterminatederror.md @@ -11,6 +11,7 @@ An exception indicating the session terminated before the action completed. ```typescript export declare class SessionTerminatedError extends Exception ``` +Extends: Exception ## Constructors diff --git a/docs/api/sip.js.statetransitionerror._constructor_.md b/docs/api/sip.js.statetransitionerror._constructor_.md index 05f9ace07..4fb3e3c95 100644 --- a/docs/api/sip.js.statetransitionerror._constructor_.md +++ b/docs/api/sip.js.statetransitionerror._constructor_.md @@ -16,5 +16,5 @@ constructor(message?: string); | Parameter | Type | Description | | --- | --- | --- | -| message | string | | +| message | string | | diff --git a/docs/api/sip.js.statetransitionerror.md b/docs/api/sip.js.statetransitionerror.md index dd268b7e8..ab425d0ee 100644 --- a/docs/api/sip.js.statetransitionerror.md +++ b/docs/api/sip.js.statetransitionerror.md @@ -11,6 +11,7 @@ An exception indicating an invalid state transition error occured. ```typescript export declare class StateTransitionError extends Exception ``` +Extends: Exception ## Constructors diff --git a/docs/api/sip.js.subscriber._constructor_.md b/docs/api/sip.js.subscriber._constructor_.md index 5ef8bb83c..f36cc74b8 100644 --- a/docs/api/sip.js.subscriber._constructor_.md +++ b/docs/api/sip.js.subscriber._constructor_.md @@ -16,8 +16,8 @@ constructor(userAgent: UserAgent, targetURI: URI, eventType: string, options?: S | Parameter | Type | Description | | --- | --- | --- | -| userAgent | UserAgent | User agent. See [UserAgent](./sip.js.useragent.md) for details. | -| targetURI | URI | The request URI identifying the subscribed event. | -| eventType | string | The event type identifying the subscribed event. | -| options | SubscriberOptions | Options bucket. See [SubscriberOptions](./sip.js.subscriberoptions.md) for details. | +| userAgent | [UserAgent](./sip.js.useragent.md) | User agent. See [UserAgent](./sip.js.useragent.md) for details. | +| targetURI | URI | The request URI identifying the subscribed event. | +| eventType | string | The event type identifying the subscribed event. | +| options | [SubscriberOptions](./sip.js.subscriberoptions.md) | Options bucket. See [SubscriberOptions](./sip.js.subscriberoptions.md) for details. | diff --git a/docs/api/sip.js.subscriber.md b/docs/api/sip.js.subscriber.md index f201c7d0a..7e1cb3ecd 100644 --- a/docs/api/sip.js.subscriber.md +++ b/docs/api/sip.js.subscriber.md @@ -11,6 +11,7 @@ A subscriber establishes a [Subscription](./sip.js.subscription.md) (outgoing SU ```typescript export declare class Subscriber extends Subscription ``` +Extends: [Subscription](./sip.js.subscription.md) ## Remarks @@ -44,7 +45,6 @@ subscriber.subscribe(); // Sometime later when done with subscription subscriber.unsubscribe(); - ``` ## Constructors diff --git a/docs/api/sip.js.subscriber.subscribe.md b/docs/api/sip.js.subscriber.subscribe.md index 45c7cf4bb..14ea59992 100644 --- a/docs/api/sip.js.subscriber.subscribe.md +++ b/docs/api/sip.js.subscriber.subscribe.md @@ -16,11 +16,11 @@ subscribe(options?: SubscriberSubscribeOptions): Promise; | Parameter | Type | Description | | --- | --- | --- | -| options | SubscriberSubscribeOptions | | +| options | [SubscriberSubscribeOptions](./sip.js.subscribersubscribeoptions.md) | | Returns: -`Promise` +Promise<void> ## Remarks diff --git a/docs/api/sip.js.subscriber.unsubscribe.md b/docs/api/sip.js.subscriber.unsubscribe.md index 9010091f7..8595caa4a 100644 --- a/docs/api/sip.js.subscriber.unsubscribe.md +++ b/docs/api/sip.js.subscriber.unsubscribe.md @@ -16,11 +16,11 @@ unsubscribe(options?: SubscriptionUnsubscribeOptions): Promise; | Parameter | Type | Description | | --- | --- | --- | -| options | SubscriptionUnsubscribeOptions | | +| options | [SubscriptionUnsubscribeOptions](./sip.js.subscriptionunsubscribeoptions.md) | | Returns: -`Promise` +Promise<void> ## Remarks diff --git a/docs/api/sip.js.subscriberoptions.md b/docs/api/sip.js.subscriberoptions.md index 512d27058..ab1cede77 100644 --- a/docs/api/sip.js.subscriberoptions.md +++ b/docs/api/sip.js.subscriberoptions.md @@ -11,13 +11,14 @@ Options for [Subscriber](./sip.js.subscriber.md) constructor. ```typescript export interface SubscriberOptions extends SubscriptionOptions ``` +Extends: [SubscriptionOptions](./sip.js.subscriptionoptions.md) ## Properties -| Property | Type | Description | -| --- | --- | --- | -| [body](./sip.js.subscriberoptions.body.md) | string | | -| [contentType](./sip.js.subscriberoptions.contenttype.md) | string | | -| [expires](./sip.js.subscriberoptions.expires.md) | number | | -| [extraHeaders](./sip.js.subscriberoptions.extraheaders.md) | Array<string> | | +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [body](./sip.js.subscriberoptions.body.md) | | string | | +| [contentType](./sip.js.subscriberoptions.contenttype.md) | | string | | +| [expires](./sip.js.subscriberoptions.expires.md) | | number | | +| [extraHeaders](./sip.js.subscriberoptions.extraheaders.md) | | Array<string> | | diff --git a/docs/api/sip.js.subscription.dispose.md b/docs/api/sip.js.subscription.dispose.md index dd0983075..771b912e9 100644 --- a/docs/api/sip.js.subscription.dispose.md +++ b/docs/api/sip.js.subscription.dispose.md @@ -13,5 +13,5 @@ dispose(): Promise; ``` Returns: -`Promise` +Promise<void> diff --git a/docs/api/sip.js.subscription.md b/docs/api/sip.js.subscription.md index 240d3c397..3357d667c 100644 --- a/docs/api/sip.js.subscription.md +++ b/docs/api/sip.js.subscription.md @@ -22,11 +22,11 @@ The constructor for this class is marked as internal. Third-party code should no | Property | Modifiers | Type | Description | | --- | --- | --- | --- | -| [data](./sip.js.subscription.data.md) | | unknown | Property reserved for use by instance owner. | -| [delegate](./sip.js.subscription.delegate.md) | | SubscriptionDelegate | undefined | Subscription delegate. See [SubscriptionDelegate](./sip.js.subscriptiondelegate.md) for details. | -| [dialog](./sip.js.subscription.dialog.md) | | SubscriptionDialog | undefined | The subscribed subscription dialog. | -| [state](./sip.js.subscription.state.md) | | SubscriptionState | Subscription state. See [SubscriptionState](./sip.js.subscriptionstate.md) for details. | -| [stateChange](./sip.js.subscription.statechange.md) | | Emitter<SubscriptionState> | Emits when the subscription state property changes. | +| [data](./sip.js.subscription.data.md) | | unknown | Property reserved for use by instance owner. | +| [delegate](./sip.js.subscription.delegate.md) | | [SubscriptionDelegate](./sip.js.subscriptiondelegate.md) \| undefined | Subscription delegate. See [SubscriptionDelegate](./sip.js.subscriptiondelegate.md) for details. | +| [dialog](./sip.js.subscription.dialog.md) | | SubscriptionDialog \| undefined | The subscribed subscription dialog. | +| [state](./sip.js.subscription.state.md) | | [SubscriptionState](./sip.js.subscriptionstate.md) | Subscription state. See [SubscriptionState](./sip.js.subscriptionstate.md) for details. | +| [stateChange](./sip.js.subscription.statechange.md) | | [Emitter](./sip.js.emitter.md)<[SubscriptionState](./sip.js.subscriptionstate.md)> | Emits when the subscription state property changes. | ## Methods diff --git a/docs/api/sip.js.subscription.subscribe.md b/docs/api/sip.js.subscription.subscribe.md index 36967b37e..34239b0ce 100644 --- a/docs/api/sip.js.subscription.subscribe.md +++ b/docs/api/sip.js.subscription.subscribe.md @@ -16,9 +16,9 @@ abstract subscribe(options?: SubscriptionSubscribeOptions): Promise; | Parameter | Type | Description | | --- | --- | --- | -| options | SubscriptionSubscribeOptions | | +| options | [SubscriptionSubscribeOptions](./sip.js.subscriptionsubscribeoptions.md) | | Returns: -`Promise` +Promise<void> diff --git a/docs/api/sip.js.subscription.unsubscribe.md b/docs/api/sip.js.subscription.unsubscribe.md index 0437e847a..51700bc19 100644 --- a/docs/api/sip.js.subscription.unsubscribe.md +++ b/docs/api/sip.js.subscription.unsubscribe.md @@ -16,11 +16,11 @@ abstract unsubscribe(options?: SubscriptionUnsubscribeOptions): Promise; | Parameter | Type | Description | | --- | --- | --- | -| options | SubscriptionUnsubscribeOptions | | +| options | [SubscriptionUnsubscribeOptions](./sip.js.subscriptionunsubscribeoptions.md) | | Returns: -`Promise` +Promise<void> ## Remarks diff --git a/docs/api/sip.js.subscriptiondelegate.onnotify.md b/docs/api/sip.js.subscriptiondelegate.onnotify.md index ec83a5501..d3f048a77 100644 --- a/docs/api/sip.js.subscriptiondelegate.onnotify.md +++ b/docs/api/sip.js.subscriptiondelegate.onnotify.md @@ -16,9 +16,9 @@ onNotify(notification: Notification): void; | Parameter | Type | Description | | --- | --- | --- | -| notification | Notification | A notification. See [Notification](./sip.js.notification.md) for details. | +| notification | [Notification](./sip.js.notification.md) | A notification. See [Notification](./sip.js.notification.md) for details. | Returns: -`void` +void diff --git a/docs/api/sip.js.subscriptionoptions.md b/docs/api/sip.js.subscriptionoptions.md index 8f1556922..58dc76728 100644 --- a/docs/api/sip.js.subscriptionoptions.md +++ b/docs/api/sip.js.subscriptionoptions.md @@ -14,7 +14,7 @@ export interface SubscriptionOptions ## Properties -| Property | Type | Description | -| --- | --- | --- | -| [delegate](./sip.js.subscriptionoptions.delegate.md) | SubscriptionDelegate | | +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [delegate](./sip.js.subscriptionoptions.delegate.md) | | [SubscriptionDelegate](./sip.js.subscriptiondelegate.md) | | diff --git a/docs/api/sip.js.subscriptionstate.md b/docs/api/sip.js.subscriptionstate.md index 895303340..7dc93a076 100644 --- a/docs/api/sip.js.subscriptionstate.md +++ b/docs/api/sip.js.subscriptionstate.md @@ -30,6 +30,5 @@ The [Subscription](./sip.js.subscription.md) behaves in a deterministic manner a Subscription | v Constructed -> Initial -> NotifyWait -> Subscribed -> Terminated |____________________________^ - ``` diff --git a/docs/api/sip.js.transport.connect.md b/docs/api/sip.js.transport.connect.md index 7fa1dbfc5..44094d1f0 100644 --- a/docs/api/sip.js.transport.connect.md +++ b/docs/api/sip.js.transport.connect.md @@ -13,7 +13,7 @@ connect(): Promise; ``` Returns: -`Promise` +Promise<void> ## Remarks @@ -25,7 +25,6 @@ connect(): Promise; - If `state` is "Disconnected" `state` MUST transition to "Connecting" before returning. - The `state` MUST transition to "Connected" before resolving (assuming `state` is not already "Connected"). - The `state` MUST transition to "Disconnecting" or "Disconnected" before rejecting and MUST reject with an Error. - ``` Resolves when the transport connects. Rejects if transport fails to connect. Rejects with [StateTransitionError](./sip.js.statetransitionerror.md) if a loop is detected. In particular, callbacks and emitters MUST NOT call this method synchronously. diff --git a/docs/api/sip.js.transport.disconnect.md b/docs/api/sip.js.transport.disconnect.md index 028e50d5b..7452e62d0 100644 --- a/docs/api/sip.js.transport.disconnect.md +++ b/docs/api/sip.js.transport.disconnect.md @@ -13,7 +13,7 @@ disconnect(): Promise; ``` Returns: -`Promise` +Promise<void> ## Remarks @@ -25,7 +25,6 @@ disconnect(): Promise; - If `state` is "Disconnected", `state` MUST NOT transition before returning. - The `state` MUST transition to "Disconnected" before resolving (assuming `state` is not already "Disconnected"). - The `state` MUST transition to "Connecting" or "Connected" before rejecting and MUST reject with an Error. - ``` Resolves when the transport disconnects. Rejects if transport fails to disconnect. Rejects with [StateTransitionError](./sip.js.statetransitionerror.md) if a loop is detected. In particular, callbacks and emitters MUST NOT call this method synchronously. diff --git a/docs/api/sip.js.transport.dispose.md b/docs/api/sip.js.transport.dispose.md index 13f9673e3..5880c873b 100644 --- a/docs/api/sip.js.transport.dispose.md +++ b/docs/api/sip.js.transport.dispose.md @@ -13,7 +13,7 @@ dispose(): Promise; ``` Returns: -`Promise` +Promise<void> ## Remarks diff --git a/docs/api/sip.js.transport.isconnected.md b/docs/api/sip.js.transport.isconnected.md index 87a4344d1..ab7a52d6e 100644 --- a/docs/api/sip.js.transport.isconnected.md +++ b/docs/api/sip.js.transport.isconnected.md @@ -13,7 +13,7 @@ isConnected(): boolean; ``` Returns: -`boolean` +boolean ## Remarks @@ -31,6 +31,5 @@ userAgent.transport.stateChange.addListener(() => { // handle transport disconnect } }); - ``` diff --git a/docs/api/sip.js.transport.md b/docs/api/sip.js.transport.md index 45b0ebc47..a97f42fce 100644 --- a/docs/api/sip.js.transport.md +++ b/docs/api/sip.js.transport.md @@ -11,6 +11,7 @@ Transport layer interface expected by the `UserAgent`. ```typescript export interface Transport extends CoreTransport ``` +Extends: [CoreTransport](./sip.js.transport.md) ## Remarks @@ -26,18 +27,17 @@ Proper handling the application level protocol recovery must be left to the appl transport.onDisconnect = () => { Promise.resolve().then(() => transport.connect()); } - ``` ## Properties -| Property | Type | Description | -| --- | --- | --- | -| [onConnect](./sip.js.transport.onconnect.md) | (() => void) | undefined | Callback on state transition to "Connected". | -| [onDisconnect](./sip.js.transport.ondisconnect.md) | ((error?: Error) => void) | undefined | Callback on state transition from "Connected". | -| [onMessage](./sip.js.transport.onmessage.md) | ((message: string) => void) | undefined | Callback on receipt of a message. | -| [state](./sip.js.transport.state.md) | TransportState | Transport state. | -| [stateChange](./sip.js.transport.statechange.md) | Emitter<TransportState> | Transport state change emitter. | +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [onConnect](./sip.js.transport.onconnect.md) | | (() => void) \| undefined | Callback on state transition to "Connected". | +| [onDisconnect](./sip.js.transport.ondisconnect.md) | | ((error?: Error) => void) \| undefined | Callback on state transition from "Connected". | +| [onMessage](./sip.js.transport.onmessage.md) | | ((message: string) => void) \| undefined | Callback on receipt of a message. | +| [state](./sip.js.transport.state.md) | | [TransportState](./sip.js.transportstate.md) | Transport state. | +| [stateChange](./sip.js.transport.statechange.md) | | [Emitter](./sip.js.emitter.md)<[TransportState](./sip.js.transportstate.md)> | Transport state change emitter. | ## Methods diff --git a/docs/api/sip.js.transport.onconnect.md b/docs/api/sip.js.transport.onconnect.md index 208beb677..94dbaeb31 100644 --- a/docs/api/sip.js.transport.onconnect.md +++ b/docs/api/sip.js.transport.onconnect.md @@ -18,6 +18,5 @@ When the `UserAgent` is constructed, this property is set. ```txt - The `state` MUST be "Connected" when called. - ``` diff --git a/docs/api/sip.js.transport.ondisconnect.md b/docs/api/sip.js.transport.ondisconnect.md index 19f9429a8..968551e74 100644 --- a/docs/api/sip.js.transport.ondisconnect.md +++ b/docs/api/sip.js.transport.ondisconnect.md @@ -20,7 +20,6 @@ When the `UserAgent` is constructed, this property is set. - The `state` MUST NOT "Connected" when called. - If prior `state` is "Connecting" or "Connected", `error` MUST be defined. - If prior `state` is "Disconnecting", `error` MUST NOT be undefined. - ``` If the transition from "Connected" occurs because the transport user requested it by calling `disconnect`, then `error` will be undefined. Otherwise `error` will be defined to provide an indication that the transport initiated the transition from "Connected" - for example, perhaps network connectivity was lost. diff --git a/docs/api/sip.js.transport.send.md b/docs/api/sip.js.transport.send.md index 304aea571..6dd873719 100644 --- a/docs/api/sip.js.transport.send.md +++ b/docs/api/sip.js.transport.send.md @@ -16,11 +16,11 @@ send(message: string): Promise; | Parameter | Type | Description | | --- | --- | --- | -| message | string | Message to send. | +| message | string | Message to send. | Returns: -`Promise` +Promise<void> ## Remarks @@ -30,6 +30,5 @@ send(message: string): Promise; - If `state` is "Connected", resolves when the message is sent otherwise rejects with an Error. - If `state` is "Disconnecting", rejects with an Error. - If `state` is "Disconnected", rejects with an Error. - ``` diff --git a/docs/api/sip.js.transportstate.md b/docs/api/sip.js.transportstate.md index b3a46da31..9edc4a5fe 100644 --- a/docs/api/sip.js.transportstate.md +++ b/docs/api/sip.js.transportstate.md @@ -33,6 +33,5 @@ Constructed -> Disconnected -> Connecting -> Connected -> Disconnecting ^ ^ |_____________________^ | | | |_____________________________| | |_____________________________________________| - ``` diff --git a/docs/api/sip.js.useragent._constructor_.md b/docs/api/sip.js.useragent._constructor_.md index 924302751..42948c29e 100644 --- a/docs/api/sip.js.useragent._constructor_.md +++ b/docs/api/sip.js.useragent._constructor_.md @@ -16,5 +16,5 @@ constructor(options?: Partial); | Parameter | Type | Description | | --- | --- | --- | -| options | Partial<UserAgentOptions> | Options bucket. See [UserAgentOptions](./sip.js.useragentoptions.md) for details. | +| options | Partial<[UserAgentOptions](./sip.js.useragentoptions.md)> | Options bucket. See [UserAgentOptions](./sip.js.useragentoptions.md) for details. | diff --git a/docs/api/sip.js.useragent.getlogger.md b/docs/api/sip.js.useragent.getlogger.md index 1c1aa3e95..30044cb8f 100644 --- a/docs/api/sip.js.useragent.getlogger.md +++ b/docs/api/sip.js.useragent.getlogger.md @@ -16,10 +16,10 @@ getLogger(category: string, label?: string): Logger; | Parameter | Type | Description | | --- | --- | --- | -| category | string | | -| label | string | | +| category | string | | +| label | string | | Returns: -`Logger` +Logger diff --git a/docs/api/sip.js.useragent.getloggerfactory.md b/docs/api/sip.js.useragent.getloggerfactory.md index 810855ca8..692c94078 100644 --- a/docs/api/sip.js.useragent.getloggerfactory.md +++ b/docs/api/sip.js.useragent.getloggerfactory.md @@ -13,5 +13,5 @@ getLoggerFactory(): LoggerFactory; ``` Returns: -`LoggerFactory` +LoggerFactory diff --git a/docs/api/sip.js.useragent.isconnected.md b/docs/api/sip.js.useragent.isconnected.md index fa53c347d..1c083d35a 100644 --- a/docs/api/sip.js.useragent.isconnected.md +++ b/docs/api/sip.js.useragent.isconnected.md @@ -13,5 +13,5 @@ isConnected(): boolean; ``` Returns: -`boolean` +boolean diff --git a/docs/api/sip.js.useragent.makeuri.md b/docs/api/sip.js.useragent.makeuri.md index 28940fb86..bc7e78fa6 100644 --- a/docs/api/sip.js.useragent.makeuri.md +++ b/docs/api/sip.js.useragent.makeuri.md @@ -16,17 +16,16 @@ static makeURI(uri: string): URI | undefined; | Parameter | Type | Description | | --- | --- | --- | -| uri | string | The string to parse. | +| uri | string | The string to parse. | Returns: -`URI | undefined` +URI \| undefined ## Example ```ts const uri = UserAgent.makeURI("sip:edgar@example.com"); - ``` diff --git a/docs/api/sip.js.useragent.md b/docs/api/sip.js.useragent.md index c51116e93..f95a29483 100644 --- a/docs/api/sip.js.useragent.md +++ b/docs/api/sip.js.useragent.md @@ -26,14 +26,14 @@ A user agent (UA) is associated with a user via the user's SIP address of record | Property | Modifiers | Type | Description | | --- | --- | --- | --- | -| [configuration](./sip.js.useragent.configuration.md) | | Required<UserAgentOptions> | User agent configuration. | -| [contact](./sip.js.useragent.contact.md) | | Contact | User agent contact. | -| [data](./sip.js.useragent.data.md) | | unknown | Property reserved for use by instance owner. | -| [delegate](./sip.js.useragent.delegate.md) | | UserAgentDelegate | undefined | Delegate. | -| [state](./sip.js.useragent.state.md) | | UserAgentState | User agent state. | -| [stateChange](./sip.js.useragent.statechange.md) | | Emitter<UserAgentState> | User agent state change emitter. | -| [transport](./sip.js.useragent.transport.md) | | Transport | User agent transport. | -| [userAgentCore](./sip.js.useragent.useragentcore.md) | | UserAgentCore | User agent core. | +| [configuration](./sip.js.useragent.configuration.md) | | Required<[UserAgentOptions](./sip.js.useragentoptions.md)> | User agent configuration. | +| [contact](./sip.js.useragent.contact.md) | | Contact | User agent contact. | +| [data](./sip.js.useragent.data.md) | | unknown | Property reserved for use by instance owner. | +| [delegate](./sip.js.useragent.delegate.md) | | [UserAgentDelegate](./sip.js.useragentdelegate.md) \| undefined | Delegate. | +| [state](./sip.js.useragent.state.md) | | [UserAgentState](./sip.js.useragentstate.md) | User agent state. | +| [stateChange](./sip.js.useragent.statechange.md) | | [Emitter](./sip.js.emitter.md)<[UserAgentState](./sip.js.useragentstate.md)> | User agent state change emitter. | +| [transport](./sip.js.useragent.transport.md) | | [Transport](./sip.js.transport.md) | User agent transport. | +| [userAgentCore](./sip.js.useragent.useragentcore.md) | | UserAgentCore | User agent core. | ## Methods diff --git a/docs/api/sip.js.useragent.reconnect.md b/docs/api/sip.js.useragent.reconnect.md index 923d05a2b..8c557bfc0 100644 --- a/docs/api/sip.js.useragent.reconnect.md +++ b/docs/api/sip.js.useragent.reconnect.md @@ -13,5 +13,5 @@ reconnect(): Promise; ``` Returns: -`Promise` +Promise<void> diff --git a/docs/api/sip.js.useragent.start.md b/docs/api/sip.js.useragent.start.md index 7ba064963..ccf8b22c4 100644 --- a/docs/api/sip.js.useragent.start.md +++ b/docs/api/sip.js.useragent.start.md @@ -13,7 +13,7 @@ start(): Promise; ``` Returns: -`Promise` +Promise<void> ## Remarks @@ -30,6 +30,5 @@ userAgent.start() .catch((error: Error) => { // userAgent.isConnected() === false }); - ``` diff --git a/docs/api/sip.js.useragent.stop.md b/docs/api/sip.js.useragent.stop.md index 4313acb7d..e4c56b6a0 100644 --- a/docs/api/sip.js.useragent.stop.md +++ b/docs/api/sip.js.useragent.stop.md @@ -13,7 +13,7 @@ stop(): Promise; ``` Returns: -`Promise` +Promise<void> ## Remarks @@ -26,7 +26,6 @@ Resolves when the user agent has completed a graceful shutdown. 4) Publishers unpublish. 5) Transport disconnects. 6) User Agent Core resets. - ``` NOTE: While this is a "graceful shutdown", it can also be very slow one if you are waiting for the returned Promise to resolve. The disposal of the clients and dialogs is done serially - waiting on one to finish before moving on to the next. This can be slow if there are lot of subscriptions to unsubscribe for example. diff --git a/docs/api/sip.js.useragentdelegate.onconnect.md b/docs/api/sip.js.useragentdelegate.onconnect.md index 4719e1067..87a92346f 100644 --- a/docs/api/sip.js.useragentdelegate.onconnect.md +++ b/docs/api/sip.js.useragentdelegate.onconnect.md @@ -13,5 +13,5 @@ onConnect?(): void; ``` Returns: -`void` +void diff --git a/docs/api/sip.js.useragentdelegate.ondisconnect.md b/docs/api/sip.js.useragentdelegate.ondisconnect.md index 1faab881c..bd38c6369 100644 --- a/docs/api/sip.js.useragentdelegate.ondisconnect.md +++ b/docs/api/sip.js.useragentdelegate.ondisconnect.md @@ -16,9 +16,9 @@ onDisconnect?(error?: Error): void; | Parameter | Type | Description | | --- | --- | --- | -| error | Error | An error if disconnect triggered by transport. Otherwise undefined. | +| error | Error | An error if disconnect triggered by transport. Otherwise undefined. | Returns: -`void` +void diff --git a/docs/api/sip.js.useragentdelegate.oninvite.md b/docs/api/sip.js.useragentdelegate.oninvite.md index bdb19cd0f..281d426e9 100644 --- a/docs/api/sip.js.useragentdelegate.oninvite.md +++ b/docs/api/sip.js.useragentdelegate.oninvite.md @@ -16,11 +16,11 @@ onInvite?(invitation: Invitation): void; | Parameter | Type | Description | | --- | --- | --- | -| invitation | Invitation | The invitation. | +| invitation | [Invitation](./sip.js.invitation.md) | The invitation. | Returns: -`void` +void ## Remarks diff --git a/docs/api/sip.js.useragentdelegate.onmessage.md b/docs/api/sip.js.useragentdelegate.onmessage.md index 77554f5c3..9d4ce56db 100644 --- a/docs/api/sip.js.useragentdelegate.onmessage.md +++ b/docs/api/sip.js.useragentdelegate.onmessage.md @@ -16,11 +16,11 @@ onMessage?(message: Message): void; | Parameter | Type | Description | | --- | --- | --- | -| message | Message | The message. | +| message | [Message](./sip.js.message.md) | The message. | Returns: -`void` +void ## Remarks diff --git a/docs/api/sip.js.useragentdelegate.onnotify.md b/docs/api/sip.js.useragentdelegate.onnotify.md index 809f9825f..7eb54d8f5 100644 --- a/docs/api/sip.js.useragentdelegate.onnotify.md +++ b/docs/api/sip.js.useragentdelegate.onnotify.md @@ -16,11 +16,11 @@ onNotify?(notification: Notification): void; | Parameter | Type | Description | | --- | --- | --- | -| notification | Notification | The notification. | +| notification | [Notification](./sip.js.notification.md) | The notification. | Returns: -`void` +void ## Remarks diff --git a/docs/api/sip.js.useragentoptions.md b/docs/api/sip.js.useragentoptions.md index daf8c603f..faa94fff7 100644 --- a/docs/api/sip.js.useragentoptions.md +++ b/docs/api/sip.js.useragentoptions.md @@ -14,40 +14,40 @@ export interface UserAgentOptions ## Properties -| Property | Type | Description | -| --- | --- | --- | -| [allowLegacyNotifications](./sip.js.useragentoptions.allowlegacynotifications.md) | boolean | If true, the user agent will accept out of dialog NOTIFY. | -| [authorizationHa1](./sip.js.useragentoptions.authorizationha1.md) | string | Authorization ha1. | -| [authorizationPassword](./sip.js.useragentoptions.authorizationpassword.md) | string | Authorization password. | -| [authorizationUsername](./sip.js.useragentoptions.authorizationusername.md) | string | Authorization username. | -| [autoStart](./sip.js.useragentoptions.autostart.md) | boolean | | -| [autoStop](./sip.js.useragentoptions.autostop.md) | boolean | If true, the user agent calls the stop() method on unload (if running in browser window). | -| [contactName](./sip.js.useragentoptions.contactname.md) | string | The user portion of user agent's contact URI. | -| [contactParams](./sip.js.useragentoptions.contactparams.md) | {
[name: string]: string;
} | The URI parameters of the user agent's contact URI. | -| [delegate](./sip.js.useragentoptions.delegate.md) | UserAgentDelegate | Delegate for [UserAgent](./sip.js.useragent.md). | -| [displayName](./sip.js.useragentoptions.displayname.md) | string | The display name associated with the user agent. | -| [forceRport](./sip.js.useragentoptions.forcerport.md) | boolean | Force adding rport to Via header. | -| [hackAllowUnregisteredOptionTags](./sip.js.useragentoptions.hackallowunregisteredoptiontags.md) | boolean | Hack | -| [hackIpInContact](./sip.js.useragentoptions.hackipincontact.md) | boolean | string | Hack | -| [hackViaTcp](./sip.js.useragentoptions.hackviatcp.md) | boolean | Hack | -| [logBuiltinEnabled](./sip.js.useragentoptions.logbuiltinenabled.md) | boolean | Indicates whether log messages should be written to the browser console. | -| [logConfiguration](./sip.js.useragentoptions.logconfiguration.md) | boolean | If true, constructor logs the user agent configuration. | -| [logConnector](./sip.js.useragentoptions.logconnector.md) | LogConnector | A function which will be called every time a log is generated. | -| [logLevel](./sip.js.useragentoptions.loglevel.md) | LogLevel | Indicates the verbosity level of the log messages. | -| [noAnswerTimeout](./sip.js.useragentoptions.noanswertimeout.md) | number | Number of seconds after which an incoming call is rejected if not answered. | -| [preloadedRouteSet](./sip.js.useragentoptions.preloadedrouteset.md) | Array<string> | Adds a Route header(s) to outgoing requests. | -| [reconnectionAttempts](./sip.js.useragentoptions.reconnectionattempts.md) | number | | -| [reconnectionDelay](./sip.js.useragentoptions.reconnectiondelay.md) | number | | -| [sendInitialProvisionalResponse](./sip.js.useragentoptions.sendinitialprovisionalresponse.md) | boolean | If true, a first provisional response after the 100 Trying will be sent automatically if UAC does not require reliable provisional responses. | -| [sessionDescriptionHandlerFactory](./sip.js.useragentoptions.sessiondescriptionhandlerfactory.md) | SessionDescriptionHandlerFactory | A factory for generating SessionDescriptionHandler instances. | -| [sessionDescriptionHandlerFactoryOptions](./sip.js.useragentoptions.sessiondescriptionhandlerfactoryoptions.md) | object | Options to passed to sessionDescriptionHandlerFactory. | -| [sipExtension100rel](./sip.js.useragentoptions.sipextension100rel.md) | SIPExtension | Reliable provisional responses. https://tools.ietf.org/html/rfc3262 | -| [sipExtensionExtraSupported](./sip.js.useragentoptions.sipextensionextrasupported.md) | Array<string> | Extra option tags to claim support for. | -| [sipExtensionReplaces](./sip.js.useragentoptions.sipextensionreplaces.md) | SIPExtension | Replaces header. https://tools.ietf.org/html/rfc3891 | -| [sipjsId](./sip.js.useragentoptions.sipjsid.md) | string | An id uniquely identify this user agent instance. | -| [transportConstructor](./sip.js.useragentoptions.transportconstructor.md) | new (logger: Logger, options: any) => Transport | A constructor function for the user agent's Transport. | -| [transportOptions](./sip.js.useragentoptions.transportoptions.md) | unknown | An options bucket object passed to transportConstructor when instantiated. | -| [uri](./sip.js.useragentoptions.uri.md) | URI | SIP Addresses-of-Record URI associated with the user agent. | -| [userAgentString](./sip.js.useragentoptions.useragentstring.md) | string | User agent string used in the UserAgent header. | -| [viaHost](./sip.js.useragentoptions.viahost.md) | string | Hostname to use in Via header. | +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [allowLegacyNotifications](./sip.js.useragentoptions.allowlegacynotifications.md) | | boolean | If true, the user agent will accept out of dialog NOTIFY. | +| [authorizationHa1](./sip.js.useragentoptions.authorizationha1.md) | | string | Authorization ha1. | +| [authorizationPassword](./sip.js.useragentoptions.authorizationpassword.md) | | string | Authorization password. | +| [authorizationUsername](./sip.js.useragentoptions.authorizationusername.md) | | string | Authorization username. | +| [autoStart](./sip.js.useragentoptions.autostart.md) | | boolean | | +| [autoStop](./sip.js.useragentoptions.autostop.md) | | boolean | If true, the user agent calls the stop() method on unload (if running in browser window). | +| [contactName](./sip.js.useragentoptions.contactname.md) | | string | The user portion of user agent's contact URI. | +| [contactParams](./sip.js.useragentoptions.contactparams.md) | | { \[name: string\]: string; } | The URI parameters of the user agent's contact URI. | +| [delegate](./sip.js.useragentoptions.delegate.md) | | [UserAgentDelegate](./sip.js.useragentdelegate.md) | Delegate for [UserAgent](./sip.js.useragent.md). | +| [displayName](./sip.js.useragentoptions.displayname.md) | | string | The display name associated with the user agent. | +| [forceRport](./sip.js.useragentoptions.forcerport.md) | | boolean | Force adding rport to Via header. | +| [hackAllowUnregisteredOptionTags](./sip.js.useragentoptions.hackallowunregisteredoptiontags.md) | | boolean | Hack | +| [hackIpInContact](./sip.js.useragentoptions.hackipincontact.md) | | boolean \| string | Hack | +| [hackViaTcp](./sip.js.useragentoptions.hackviatcp.md) | | boolean | Hack | +| [logBuiltinEnabled](./sip.js.useragentoptions.logbuiltinenabled.md) | | boolean | Indicates whether log messages should be written to the browser console. | +| [logConfiguration](./sip.js.useragentoptions.logconfiguration.md) | | boolean | If true, constructor logs the user agent configuration. | +| [logConnector](./sip.js.useragentoptions.logconnector.md) | | [LogConnector](./sip.js.logconnector.md) | A function which will be called every time a log is generated. | +| [logLevel](./sip.js.useragentoptions.loglevel.md) | | [LogLevel](./sip.js.loglevel.md) | Indicates the verbosity level of the log messages. | +| [noAnswerTimeout](./sip.js.useragentoptions.noanswertimeout.md) | | number | Number of seconds after which an incoming call is rejected if not answered. | +| [preloadedRouteSet](./sip.js.useragentoptions.preloadedrouteset.md) | | Array<string> | Adds a Route header(s) to outgoing requests. | +| [reconnectionAttempts](./sip.js.useragentoptions.reconnectionattempts.md) | | number | | +| [reconnectionDelay](./sip.js.useragentoptions.reconnectiondelay.md) | | number | | +| [sendInitialProvisionalResponse](./sip.js.useragentoptions.sendinitialprovisionalresponse.md) | | boolean | If true, a first provisional response after the 100 Trying will be sent automatically if UAC does not require reliable provisional responses. | +| [sessionDescriptionHandlerFactory](./sip.js.useragentoptions.sessiondescriptionhandlerfactory.md) | | [SessionDescriptionHandlerFactory](./sip.js.sessiondescriptionhandlerfactory.md) | A factory for generating SessionDescriptionHandler instances. | +| [sessionDescriptionHandlerFactoryOptions](./sip.js.useragentoptions.sessiondescriptionhandlerfactoryoptions.md) | | object | Options to passed to sessionDescriptionHandlerFactory. | +| [sipExtension100rel](./sip.js.useragentoptions.sipextension100rel.md) | | [SIPExtension](./sip.js.sipextension.md) | Reliable provisional responses. https://tools.ietf.org/html/rfc3262 | +| [sipExtensionExtraSupported](./sip.js.useragentoptions.sipextensionextrasupported.md) | | Array<string> | Extra option tags to claim support for. | +| [sipExtensionReplaces](./sip.js.useragentoptions.sipextensionreplaces.md) | | [SIPExtension](./sip.js.sipextension.md) | Replaces header. https://tools.ietf.org/html/rfc3891 | +| [sipjsId](./sip.js.useragentoptions.sipjsid.md) | | string | An id uniquely identify this user agent instance. | +| [transportConstructor](./sip.js.useragentoptions.transportconstructor.md) | | new (logger: Logger, options: any) => [Transport](./sip.js.transport.md) | A constructor function for the user agent's Transport. | +| [transportOptions](./sip.js.useragentoptions.transportoptions.md) | | unknown | An options bucket object passed to transportConstructor when instantiated. | +| [uri](./sip.js.useragentoptions.uri.md) | | URI | SIP Addresses-of-Record URI associated with the user agent. | +| [userAgentString](./sip.js.useragentoptions.useragentstring.md) | | string | User agent string used in the UserAgent header. | +| [viaHost](./sip.js.useragentoptions.viahost.md) | | string | Hostname to use in Via header. | diff --git a/docs/api/sip.js.useragentstate.md b/docs/api/sip.js.useragentstate.md index d80c9eb9b..015e4cce5 100644 --- a/docs/api/sip.js.useragentstate.md +++ b/docs/api/sip.js.useragentstate.md @@ -26,6 +26,5 @@ Valid state transitions: ``` 1. "Started" --> "Stopped" 2. "Stopped" --> "Started" - ``` diff --git a/docs/core/sip.js.ackableincomingresponsewithsession.ack.md b/docs/core/sip.js.ackableincomingresponsewithsession.ack.md index ff6510d21..da7b33b35 100644 --- a/docs/core/sip.js.ackableincomingresponsewithsession.ack.md +++ b/docs/core/sip.js.ackableincomingresponsewithsession.ack.md @@ -16,9 +16,9 @@ ack(options?: RequestOptions): OutgoingAckRequest; | Parameter | Type | Description | | --- | --- | --- | -| options | RequestOptions | Request options bucket. | +| options | [RequestOptions](./sip.js.requestoptions.md) | Request options bucket. | Returns: -`OutgoingAckRequest` +[OutgoingAckRequest](./sip.js.outgoingackrequest.md) diff --git a/docs/core/sip.js.ackableincomingresponsewithsession.md b/docs/core/sip.js.ackableincomingresponsewithsession.md index 4b1c4725c..954e1b2ec 100644 --- a/docs/core/sip.js.ackableincomingresponsewithsession.md +++ b/docs/core/sip.js.ackableincomingresponsewithsession.md @@ -11,12 +11,13 @@ Incoming INVITE response received when request is accepted. ```typescript export interface AckableIncomingResponseWithSession extends IncomingResponse ``` +Extends: [IncomingResponse](./sip.js.incomingresponse.md) ## Properties -| Property | Type | Description | -| --- | --- | --- | -| [session](./sip.js.ackableincomingresponsewithsession.session.md) | Session | Session associated with outgoing request acceptance. | +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [session](./sip.js.ackableincomingresponsewithsession.session.md) | | [Session](./sip.js.session.md) | Session associated with outgoing request acceptance. | ## Methods diff --git a/docs/core/sip.js.body.md b/docs/core/sip.js.body.md index 5d68a518b..6a9bd12fc 100644 --- a/docs/core/sip.js.body.md +++ b/docs/core/sip.js.body.md @@ -18,9 +18,9 @@ https://tools.ietf.org/html/rfc3261\#section-7.4 ## Properties -| Property | Type | Description | -| --- | --- | --- | -| [content](./sip.js.body.content.md) | string | Requests, including new requests defined in extensions to this specification, MAY contain message bodies unless otherwise noted. The interpretation of the body depends on the request method. For response messages, the request method and the response status code determine the type and interpretation of any message body. All responses MAY include a body. https://tools.ietf.org/html/rfc3261\#section-7.4 | -| [contentDisposition](./sip.js.body.contentdisposition.md) | string | If the Content-Disposition header field is missing, bodies of Content-Type application/sdp imply the disposition "session", while other content types imply "render". https://tools.ietf.org/html/rfc3261\#section-13.2.1 For backward-compatibility, if the Content-Disposition header field is missing, the server SHOULD assume bodies of Content-Type application/sdp are the disposition "session", while other content types are "render". https://tools.ietf.org/html/rfc3261\#section-20.11 | -| [contentType](./sip.js.body.contenttype.md) | string | The Content-Type header field indicates the media type of the message-body sent to the recipient. The Content-Type header field MUST be present if the body is not empty. If the body is empty, and a Content-Type header field is present, it indicates that the body of the specific type has zero length (for example, an empty audio file). https://tools.ietf.org/html/rfc3261\#section-20.15 | +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [content](./sip.js.body.content.md) | | string | Requests, including new requests defined in extensions to this specification, MAY contain message bodies unless otherwise noted. The interpretation of the body depends on the request method. For response messages, the request method and the response status code determine the type and interpretation of any message body. All responses MAY include a body. https://tools.ietf.org/html/rfc3261\#section-7.4 | +| [contentDisposition](./sip.js.body.contentdisposition.md) | | string | If the Content-Disposition header field is missing, bodies of Content-Type application/sdp imply the disposition "session", while other content types imply "render". https://tools.ietf.org/html/rfc3261\#section-13.2.1 For backward-compatibility, if the Content-Disposition header field is missing, the server SHOULD assume bodies of Content-Type application/sdp are the disposition "session", while other content types are "render". https://tools.ietf.org/html/rfc3261\#section-20.11 | +| [contentType](./sip.js.body.contenttype.md) | | string | The Content-Type header field indicates the media type of the message-body sent to the recipient. The Content-Type header field MUST be present if the body is not empty. If the body is empty, and a Content-Type header field is present, it indicates that the body of the specific type has zero length (for example, an empty audio file). https://tools.ietf.org/html/rfc3261\#section-20.15 | diff --git a/docs/core/sip.js.byeuseragentclient._constructor_.md b/docs/core/sip.js.byeuseragentclient._constructor_.md index 964dbabcd..aeec9ab48 100644 --- a/docs/core/sip.js.byeuseragentclient._constructor_.md +++ b/docs/core/sip.js.byeuseragentclient._constructor_.md @@ -16,7 +16,7 @@ constructor(dialog: SessionDialog, delegate?: OutgoingRequestDelegate, options?: | Parameter | Type | Description | | --- | --- | --- | -| dialog | SessionDialog | | -| delegate | OutgoingRequestDelegate | | -| options | RequestOptions | | +| dialog | [SessionDialog](./sip.js.sessiondialog.md) | | +| delegate | [OutgoingRequestDelegate](./sip.js.outgoingrequestdelegate.md) | | +| options | [RequestOptions](./sip.js.requestoptions.md) | | diff --git a/docs/core/sip.js.byeuseragentclient.md b/docs/core/sip.js.byeuseragentclient.md index 10b21a73d..47d680c02 100644 --- a/docs/core/sip.js.byeuseragentclient.md +++ b/docs/core/sip.js.byeuseragentclient.md @@ -11,6 +11,9 @@ BYE UAC. ```typescript export declare class ByeUserAgentClient extends UserAgentClient implements OutgoingByeRequest ``` +Extends: [UserAgentClient](./sip.js.useragentclient.md) + +Implements: [OutgoingByeRequest](./sip.js.outgoingbyerequest.md) ## Constructors diff --git a/docs/core/sip.js.byeuseragentserver._constructor_.md b/docs/core/sip.js.byeuseragentserver._constructor_.md index d87a0ee32..dbb72e858 100644 --- a/docs/core/sip.js.byeuseragentserver._constructor_.md +++ b/docs/core/sip.js.byeuseragentserver._constructor_.md @@ -16,7 +16,7 @@ constructor(dialog: SessionDialog, message: IncomingRequestMessage, delegate?: I | Parameter | Type | Description | | --- | --- | --- | -| dialog | SessionDialog | | -| message | IncomingRequestMessage | | -| delegate | IncomingRequestDelegate | | +| dialog | [SessionDialog](./sip.js.sessiondialog.md) | | +| message | [IncomingRequestMessage](./sip.js.incomingrequestmessage.md) | | +| delegate | [IncomingRequestDelegate](./sip.js.incomingrequestdelegate.md) | | diff --git a/docs/core/sip.js.byeuseragentserver.md b/docs/core/sip.js.byeuseragentserver.md index 8c460faf2..6d75791ee 100644 --- a/docs/core/sip.js.byeuseragentserver.md +++ b/docs/core/sip.js.byeuseragentserver.md @@ -11,6 +11,9 @@ BYE UAS. ```typescript export declare class ByeUserAgentServer extends UserAgentServer implements IncomingByeRequest ``` +Extends: [UserAgentServer](./sip.js.useragentserver.md) + +Implements: [IncomingByeRequest](./sip.js.incomingbyerequest.md) ## Constructors diff --git a/docs/core/sip.js.canceluseragentclient._constructor_.md b/docs/core/sip.js.canceluseragentclient._constructor_.md index 75adaa79f..db98631ef 100644 --- a/docs/core/sip.js.canceluseragentclient._constructor_.md +++ b/docs/core/sip.js.canceluseragentclient._constructor_.md @@ -16,7 +16,7 @@ constructor(core: UserAgentCore, message: OutgoingRequestMessage, delegate?: Out | Parameter | Type | Description | | --- | --- | --- | -| core | UserAgentCore | | -| message | OutgoingRequestMessage | | -| delegate | OutgoingRequestDelegate | | +| core | [UserAgentCore](./sip.js.useragentcore.md) | | +| message | [OutgoingRequestMessage](./sip.js.outgoingrequestmessage.md) | | +| delegate | [OutgoingRequestDelegate](./sip.js.outgoingrequestdelegate.md) | | diff --git a/docs/core/sip.js.canceluseragentclient.md b/docs/core/sip.js.canceluseragentclient.md index be6db13ff..98aba5ee9 100644 --- a/docs/core/sip.js.canceluseragentclient.md +++ b/docs/core/sip.js.canceluseragentclient.md @@ -11,6 +11,9 @@ CANCEL UAC. ```typescript export declare class CancelUserAgentClient extends UserAgentClient implements OutgoingCancelRequest ``` +Extends: [UserAgentClient](./sip.js.useragentclient.md) + +Implements: [OutgoingCancelRequest](./sip.js.outgoingcancelrequest.md) ## Constructors diff --git a/docs/core/sip.js.clienttransaction._constructor_.md b/docs/core/sip.js.clienttransaction._constructor_.md index ae918f0ec..8d5fcdad5 100644 --- a/docs/core/sip.js.clienttransaction._constructor_.md +++ b/docs/core/sip.js.clienttransaction._constructor_.md @@ -16,9 +16,9 @@ protected constructor(_request: OutgoingRequestMessage, transport: Transport, us | Parameter | Type | Description | | --- | --- | --- | -| \_request | OutgoingRequestMessage | | -| transport | Transport | | -| user | ClientTransactionUser | | -| state | TransactionState | | -| loggerCategory | string | | +| \_request | [OutgoingRequestMessage](./sip.js.outgoingrequestmessage.md) | | +| transport | [Transport](./sip.js.transport.md) | | +| user | [ClientTransactionUser](./sip.js.clienttransactionuser.md) | | +| state | [TransactionState](./sip.js.transactionstate.md) | | +| loggerCategory | string | | diff --git a/docs/core/sip.js.clienttransaction.md b/docs/core/sip.js.clienttransaction.md index e50133a29..acb9b41a6 100644 --- a/docs/core/sip.js.clienttransaction.md +++ b/docs/core/sip.js.clienttransaction.md @@ -11,6 +11,7 @@ Client Transaction. ```typescript export declare abstract class ClientTransaction extends Transaction ``` +Extends: [Transaction](./sip.js.transaction.md) ## Remarks @@ -28,8 +29,8 @@ The TU communicates with the client transaction through a simple interface. When | Property | Modifiers | Type | Description | | --- | --- | --- | --- | -| [request](./sip.js.clienttransaction.request.md) | | OutgoingRequestMessage | The outgoing request the transaction handling. | -| [user](./sip.js.clienttransaction.user.md) | | ClientTransactionUser | | +| [request](./sip.js.clienttransaction.request.md) | | [OutgoingRequestMessage](./sip.js.outgoingrequestmessage.md) | The outgoing request the transaction handling. | +| [user](./sip.js.clienttransaction.user.md) | | [ClientTransactionUser](./sip.js.clienttransactionuser.md) | | ## Methods diff --git a/docs/core/sip.js.clienttransaction.onrequesttimeout.md b/docs/core/sip.js.clienttransaction.onrequesttimeout.md index 442ff1df4..cccfd197a 100644 --- a/docs/core/sip.js.clienttransaction.onrequesttimeout.md +++ b/docs/core/sip.js.clienttransaction.onrequesttimeout.md @@ -13,5 +13,5 @@ protected onRequestTimeout(): void; ``` Returns: -`void` +void diff --git a/docs/core/sip.js.clienttransaction.receiveresponse.md b/docs/core/sip.js.clienttransaction.receiveresponse.md index b6e78be7c..1f758d203 100644 --- a/docs/core/sip.js.clienttransaction.receiveresponse.md +++ b/docs/core/sip.js.clienttransaction.receiveresponse.md @@ -16,9 +16,9 @@ abstract receiveResponse(response: IncomingResponseMessage): void; | Parameter | Type | Description | | --- | --- | --- | -| response | IncomingResponseMessage | The incoming response. | +| response | [IncomingResponseMessage](./sip.js.incomingresponsemessage.md) | The incoming response. | Returns: -`void` +void diff --git a/docs/core/sip.js.clienttransactionuser.md b/docs/core/sip.js.clienttransactionuser.md index 16f956c69..3f80cf50b 100644 --- a/docs/core/sip.js.clienttransactionuser.md +++ b/docs/core/sip.js.clienttransactionuser.md @@ -11,11 +11,12 @@ UAC Core Transaction User. ```typescript export interface ClientTransactionUser extends TransactionUser ``` +Extends: [TransactionUser](./sip.js.transactionuser.md) ## Properties -| Property | Type | Description | -| --- | --- | --- | -| [onRequestTimeout](./sip.js.clienttransactionuser.onrequesttimeout.md) | () => void | Callback for request timeout error.When a timeout error is received from the transaction layer, it MUST be treated as if a 408 (Request Timeout) status code has been received. https://tools.ietf.org/html/rfc3261\#section-8.1.3.1 TU MUST be informed of a timeout. https://tools.ietf.org/html/rfc3261\#section-17.1.2.2 | -| [receiveResponse](./sip.js.clienttransactionuser.receiveresponse.md) | (response: IncomingResponseMessage) => void | Callback for delegation of valid response handling.Valid responses are passed up to the TU from the client transaction. https://tools.ietf.org/html/rfc3261\#section-17.1 | +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [onRequestTimeout](./sip.js.clienttransactionuser.onrequesttimeout.md) | | () => void |

Callback for request timeout error.

When a timeout error is received from the transaction layer, it MUST be treated as if a 408 (Request Timeout) status code has been received. https://tools.ietf.org/html/rfc3261\#section-8.1.3.1 TU MUST be informed of a timeout. https://tools.ietf.org/html/rfc3261\#section-17.1.2.2

| +| [receiveResponse](./sip.js.clienttransactionuser.receiveresponse.md) | | (response: [IncomingResponseMessage](./sip.js.incomingresponsemessage.md)) => void |

Callback for delegation of valid response handling.

Valid responses are passed up to the TU from the client transaction. https://tools.ietf.org/html/rfc3261\#section-17.1

| diff --git a/docs/core/sip.js.contact.md b/docs/core/sip.js.contact.md index 878e9f6c8..598f38dbb 100644 --- a/docs/core/sip.js.contact.md +++ b/docs/core/sip.js.contact.md @@ -18,10 +18,10 @@ https://tools.ietf.org/html/rfc3261\#section-8.1.1.8 This is ported from UA.cont ## Properties -| Property | Type | Description | -| --- | --- | --- | -| [pubGruu](./sip.js.contact.pubgruu.md) | URI | undefined | | -| [tempGruu](./sip.js.contact.tempgruu.md) | URI | undefined | | -| [toString](./sip.js.contact.tostring.md) | (options?: {
anonymous?: boolean;
outbound?: boolean;
}) => string | | -| [uri](./sip.js.contact.uri.md) | URI | | +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [pubGruu](./sip.js.contact.pubgruu.md) | | [URI](./sip.js.uri.md) \| undefined | | +| [tempGruu](./sip.js.contact.tempgruu.md) | | [URI](./sip.js.uri.md) \| undefined | | +| [toString](./sip.js.contact.tostring.md) | | (options?: { anonymous?: boolean; outbound?: boolean; }) => string | | +| [uri](./sip.js.contact.uri.md) | | [URI](./sip.js.uri.md) | | diff --git a/docs/core/sip.js.dialog._constructor_.md b/docs/core/sip.js.dialog._constructor_.md index 7bad2b526..ba8a3a978 100644 --- a/docs/core/sip.js.dialog._constructor_.md +++ b/docs/core/sip.js.dialog._constructor_.md @@ -16,6 +16,6 @@ protected constructor(core: UserAgentCore, dialogState: DialogState); | Parameter | Type | Description | | --- | --- | --- | -| core | UserAgentCore | User agent core. | -| dialogState | DialogState | Initial dialog state. | +| core | [UserAgentCore](./sip.js.useragentcore.md) | User agent core. | +| dialogState | [DialogState](./sip.js.dialogstate.md) | Initial dialog state. | diff --git a/docs/core/sip.js.dialog.confirm.md b/docs/core/sip.js.dialog.confirm.md index 2a53e044d..4be0a956b 100644 --- a/docs/core/sip.js.dialog.confirm.md +++ b/docs/core/sip.js.dialog.confirm.md @@ -13,5 +13,5 @@ confirm(): void; ``` Returns: -`void` +void diff --git a/docs/core/sip.js.dialog.createoutgoingrequestmessage.md b/docs/core/sip.js.dialog.createoutgoingrequestmessage.md index 40c3d3d8a..8aeba0c04 100644 --- a/docs/core/sip.js.dialog.createoutgoingrequestmessage.md +++ b/docs/core/sip.js.dialog.createoutgoingrequestmessage.md @@ -20,10 +20,10 @@ createOutgoingRequestMessage(method: string, options?: { | Parameter | Type | Description | | --- | --- | --- | -| method | string | Outgoing request method. | -| options | {
cseq?: number;
extraHeaders?: Array<string>;
body?: Body;
} | | +| method | string | Outgoing request method. | +| options | { cseq?: number; extraHeaders?: Array<string>; body?: [Body](./sip.js.body.md); } | | Returns: -`OutgoingRequestMessage` +[OutgoingRequestMessage](./sip.js.outgoingrequestmessage.md) diff --git a/docs/core/sip.js.dialog.dispose.md b/docs/core/sip.js.dialog.dispose.md index de3e29a7c..6a745346b 100644 --- a/docs/core/sip.js.dialog.dispose.md +++ b/docs/core/sip.js.dialog.dispose.md @@ -13,5 +13,5 @@ dispose(): void; ``` Returns: -`void` +void diff --git a/docs/core/sip.js.dialog.initialdialogstateforuseragentclient.md b/docs/core/sip.js.dialog.initialdialogstateforuseragentclient.md index 945116e05..a266e3ec6 100644 --- a/docs/core/sip.js.dialog.initialdialogstateforuseragentclient.md +++ b/docs/core/sip.js.dialog.initialdialogstateforuseragentclient.md @@ -16,10 +16,10 @@ static initialDialogStateForUserAgentClient(outgoingRequestMessage: OutgoingRequ | Parameter | Type | Description | | --- | --- | --- | -| outgoingRequestMessage | OutgoingRequestMessage | Outgoing request message for dialog. | -| incomingResponseMessage | IncomingResponseMessage | Incoming response message creating dialog. | +| outgoingRequestMessage | [OutgoingRequestMessage](./sip.js.outgoingrequestmessage.md) | Outgoing request message for dialog. | +| incomingResponseMessage | [IncomingResponseMessage](./sip.js.incomingresponsemessage.md) | Incoming response message creating dialog. | Returns: -`DialogState` +[DialogState](./sip.js.dialogstate.md) diff --git a/docs/core/sip.js.dialog.initialdialogstateforuseragentserver.md b/docs/core/sip.js.dialog.initialdialogstateforuseragentserver.md index 968828349..be497e792 100644 --- a/docs/core/sip.js.dialog.initialdialogstateforuseragentserver.md +++ b/docs/core/sip.js.dialog.initialdialogstateforuseragentserver.md @@ -16,11 +16,11 @@ static initialDialogStateForUserAgentServer(incomingRequestMessage: IncomingRequ | Parameter | Type | Description | | --- | --- | --- | -| incomingRequestMessage | IncomingRequestMessage | Incoming request message creating dialog. | -| toTag | string | Tag in the To field in the response to the incoming request. | -| early | boolean | | +| incomingRequestMessage | [IncomingRequestMessage](./sip.js.incomingrequestmessage.md) | Incoming request message creating dialog. | +| toTag | string | Tag in the To field in the response to the incoming request. | +| early | boolean | | Returns: -`DialogState` +[DialogState](./sip.js.dialogstate.md) diff --git a/docs/core/sip.js.dialog.md b/docs/core/sip.js.dialog.md index 18b6c183c..aa4d88f32 100644 --- a/docs/core/sip.js.dialog.md +++ b/docs/core/sip.js.dialog.md @@ -26,21 +26,21 @@ A key concept for a user agent is that of a dialog. A dialog represents a peer-t | Property | Modifiers | Type | Description | | --- | --- | --- | --- | -| [callId](./sip.js.dialog.callid.md) | | string | Call identifier component of the dialog id. | -| [core](./sip.js.dialog.core.md) | | UserAgentCore | | -| [dialogState](./sip.js.dialog.dialogstate.md) | | DialogState | | -| [early](./sip.js.dialog.early.md) | | boolean | A dialog can also be in the "early" state, which occurs when it is created with a provisional response, and then it transition to the "confirmed" state when a 2xx final response received or is sent.Note: RFC 3261 is concise on when a dialog is "confirmed", but it can be a point of confusion if an INVITE dialog is "confirmed" after a 2xx is sent or after receiving the ACK for the 2xx response. With careful reading it can be inferred a dialog is always is "confirmed" when the 2xx is sent (regardless of type of dialog). However a INVITE dialog does have additional considerations when it is confirmed but an ACK has not yet been received (in particular with regard to a callee sending BYE requests). | -| [id](./sip.js.dialog.id.md) | | string | A dialog is identified at each UA with a dialog ID, which consists of a Call-ID value, a local tag and a remote tag. The dialog ID at each UA involved in the dialog is not the same. Specifically, the local tag at one UA is identical to the remote tag at the peer UA. The tags are opaque tokens that facilitate the generation of unique dialog IDs. https://tools.ietf.org/html/rfc3261\#section-12 | -| [localSequenceNumber](./sip.js.dialog.localsequencenumber.md) | | number | undefined | Local sequence number (used to order requests from the UA to its peer). | -| [localTag](./sip.js.dialog.localtag.md) | | string | Local tag component of the dialog id. | -| [localURI](./sip.js.dialog.localuri.md) | | URI | Local URI. | -| [remoteSequenceNumber](./sip.js.dialog.remotesequencenumber.md) | | number | undefined | Remote sequence number (used to order requests from its peer to the UA). | -| [remoteTag](./sip.js.dialog.remotetag.md) | | string | Remote tag component of the dialog id. | -| [remoteTarget](./sip.js.dialog.remotetarget.md) | | URI | Remote target. | -| [remoteURI](./sip.js.dialog.remoteuri.md) | | URI | Remote URI. | -| [routeSet](./sip.js.dialog.routeset.md) | | Array<string> | Route set, which is an ordered list of URIs. The route set is the list of servers that need to be traversed to send a request to the peer. | -| [secure](./sip.js.dialog.secure.md) | | boolean | If the request was sent over TLS, and the Request-URI contained a SIPS URI, the "secure" flag is set to true. \*NOT IMPLEMENTED\* | -| [userAgentCore](./sip.js.dialog.useragentcore.md) | | UserAgentCore | The user agent core servicing this dialog. | +| [callId](./sip.js.dialog.callid.md) | | string | Call identifier component of the dialog id. | +| [core](./sip.js.dialog.core.md) | | [UserAgentCore](./sip.js.useragentcore.md) | | +| [dialogState](./sip.js.dialog.dialogstate.md) | | [DialogState](./sip.js.dialogstate.md) | | +| [early](./sip.js.dialog.early.md) | | boolean |

A dialog can also be in the "early" state, which occurs when it is created with a provisional response, and then it transition to the "confirmed" state when a 2xx final response received or is sent.

Note: RFC 3261 is concise on when a dialog is "confirmed", but it can be a point of confusion if an INVITE dialog is "confirmed" after a 2xx is sent or after receiving the ACK for the 2xx response. With careful reading it can be inferred a dialog is always is "confirmed" when the 2xx is sent (regardless of type of dialog). However a INVITE dialog does have additional considerations when it is confirmed but an ACK has not yet been received (in particular with regard to a callee sending BYE requests).

| +| [id](./sip.js.dialog.id.md) | | string | A dialog is identified at each UA with a dialog ID, which consists of a Call-ID value, a local tag and a remote tag. The dialog ID at each UA involved in the dialog is not the same. Specifically, the local tag at one UA is identical to the remote tag at the peer UA. The tags are opaque tokens that facilitate the generation of unique dialog IDs. https://tools.ietf.org/html/rfc3261\#section-12 | +| [localSequenceNumber](./sip.js.dialog.localsequencenumber.md) | | number \| undefined | Local sequence number (used to order requests from the UA to its peer). | +| [localTag](./sip.js.dialog.localtag.md) | | string | Local tag component of the dialog id. | +| [localURI](./sip.js.dialog.localuri.md) | | [URI](./sip.js.uri.md) | Local URI. | +| [remoteSequenceNumber](./sip.js.dialog.remotesequencenumber.md) | | number \| undefined | Remote sequence number (used to order requests from its peer to the UA). | +| [remoteTag](./sip.js.dialog.remotetag.md) | | string | Remote tag component of the dialog id. | +| [remoteTarget](./sip.js.dialog.remotetarget.md) | | [URI](./sip.js.uri.md) | Remote target. | +| [remoteURI](./sip.js.dialog.remoteuri.md) | | [URI](./sip.js.uri.md) | Remote URI. | +| [routeSet](./sip.js.dialog.routeset.md) | | Array<string> | Route set, which is an ordered list of URIs. The route set is the list of servers that need to be traversed to send a request to the peer. | +| [secure](./sip.js.dialog.secure.md) | | boolean | If the request was sent over TLS, and the Request-URI contained a SIPS URI, the "secure" flag is set to true. \*NOT IMPLEMENTED\* | +| [userAgentCore](./sip.js.dialog.useragentcore.md) | | [UserAgentCore](./sip.js.useragentcore.md) | The user agent core servicing this dialog. | ## Methods @@ -51,7 +51,7 @@ A key concept for a user agent is that of a dialog. A dialog represents a peer-t | [dispose()](./sip.js.dialog.dispose.md) | | Destructor. | | [initialDialogStateForUserAgentClient(outgoingRequestMessage, incomingResponseMessage)](./sip.js.dialog.initialdialogstateforuseragentclient.md) | static | When a UAC receives a response that establishes a dialog, it constructs the state of the dialog. This state MUST be maintained for the duration of the dialog. https://tools.ietf.org/html/rfc3261\#section-12.1.2 | | [initialDialogStateForUserAgentServer(incomingRequestMessage, toTag, early)](./sip.js.dialog.initialdialogstateforuseragentserver.md) | static | The UAS then constructs the state of the dialog. This state MUST be maintained for the duration of the dialog. https://tools.ietf.org/html/rfc3261\#section-12.1.1 | -| [receiveRequest(message)](./sip.js.dialog.receiverequest.md) | | Requests sent within a dialog, as any other requests, are atomic. If a particular request is accepted by the UAS, all the state changes associated with it are performed. If the request is rejected, none of the state changes are performed.Note that some requests, such as INVITEs, affect several pieces of state.https://tools.ietf.org/html/rfc3261\#section-12.2.2 | -| [recomputeRouteSet(message)](./sip.js.dialog.recomputerouteset.md) | | If the dialog identifier in the 2xx response matches the dialog identifier of an existing dialog, the dialog MUST be transitioned to the "confirmed" state, and the route set for the dialog MUST be recomputed based on the 2xx response using the procedures of Section 12.2.1.2. Otherwise, a new dialog in the "confirmed" state MUST be constructed using the procedures of Section 12.1.2.Note that the only piece of state that is recomputed is the route set. Other pieces of state such as the highest sequence numbers (remote and local) sent within the dialog are not recomputed. The route set only is recomputed for backwards compatibility. RFC 2543 did not mandate mirroring of the Record-Route header field in a 1xx, only 2xx. However, we cannot update the entire state of the dialog, since mid-dialog requests may have been sent within the early dialog, modifying the sequence numbers, for example.https://tools.ietf.org/html/rfc3261\#section-13.2.2.4 | +| [receiveRequest(message)](./sip.js.dialog.receiverequest.md) | |

Requests sent within a dialog, as any other requests, are atomic. If a particular request is accepted by the UAS, all the state changes associated with it are performed. If the request is rejected, none of the state changes are performed.

Note that some requests, such as INVITEs, affect several pieces of state.

https://tools.ietf.org/html/rfc3261\#section-12.2.2

| +| [recomputeRouteSet(message)](./sip.js.dialog.recomputerouteset.md) | |

If the dialog identifier in the 2xx response matches the dialog identifier of an existing dialog, the dialog MUST be transitioned to the "confirmed" state, and the route set for the dialog MUST be recomputed based on the 2xx response using the procedures of Section 12.2.1.2. Otherwise, a new dialog in the "confirmed" state MUST be constructed using the procedures of Section 12.1.2.

Note that the only piece of state that is recomputed is the route set. Other pieces of state such as the highest sequence numbers (remote and local) sent within the dialog are not recomputed. The route set only is recomputed for backwards compatibility. RFC 2543 did not mandate mirroring of the Record-Route header field in a 1xx, only 2xx. However, we cannot update the entire state of the dialog, since mid-dialog requests may have been sent within the early dialog, modifying the sequence numbers, for example.

https://tools.ietf.org/html/rfc3261\#section-13.2.2.4

| | [sequenceGuard(message)](./sip.js.dialog.sequenceguard.md) | | If the remote sequence number was not empty, but the sequence number of the request is lower than the remote sequence number, the request is out of order and MUST be rejected with a 500 (Server Internal Error) response. https://tools.ietf.org/html/rfc3261\#section-12.2.2 | diff --git a/docs/core/sip.js.dialog.receiverequest.md b/docs/core/sip.js.dialog.receiverequest.md index 10387b4d3..4b7e44fc4 100644 --- a/docs/core/sip.js.dialog.receiverequest.md +++ b/docs/core/sip.js.dialog.receiverequest.md @@ -20,9 +20,9 @@ receiveRequest(message: IncomingRequestMessage): void; | Parameter | Type | Description | | --- | --- | --- | -| message | IncomingRequestMessage | Incoming request message within this dialog. | +| message | [IncomingRequestMessage](./sip.js.incomingrequestmessage.md) | Incoming request message within this dialog. | Returns: -`void` +void diff --git a/docs/core/sip.js.dialog.recomputerouteset.md b/docs/core/sip.js.dialog.recomputerouteset.md index 4f23c7ea6..9cb403ab4 100644 --- a/docs/core/sip.js.dialog.recomputerouteset.md +++ b/docs/core/sip.js.dialog.recomputerouteset.md @@ -20,9 +20,9 @@ recomputeRouteSet(message: IncomingResponseMessage): void; | Parameter | Type | Description | | --- | --- | --- | -| message | IncomingResponseMessage | | +| message | [IncomingResponseMessage](./sip.js.incomingresponsemessage.md) | | Returns: -`void` +void diff --git a/docs/core/sip.js.dialog.sequenceguard.md b/docs/core/sip.js.dialog.sequenceguard.md index b20984a1b..404c2e87d 100644 --- a/docs/core/sip.js.dialog.sequenceguard.md +++ b/docs/core/sip.js.dialog.sequenceguard.md @@ -16,11 +16,11 @@ protected sequenceGuard(message: IncomingRequestMessage): boolean; | Parameter | Type | Description | | --- | --- | --- | -| message | IncomingRequestMessage | | +| message | [IncomingRequestMessage](./sip.js.incomingrequestmessage.md) | | Returns: -`boolean` +boolean True if the program execution is to continue in the branch in question. Otherwise a 500 Server Internal Error was stateless sent and request processing must stop. diff --git a/docs/core/sip.js.dialogstate.md b/docs/core/sip.js.dialogstate.md index dbff11ee8..0eff8d48a 100644 --- a/docs/core/sip.js.dialogstate.md +++ b/docs/core/sip.js.dialogstate.md @@ -20,18 +20,18 @@ https://tools.ietf.org/html/rfc3261\#section-12 ## Properties -| Property | Type | Description | -| --- | --- | --- | -| [callId](./sip.js.dialogstate.callid.md) | string | | -| [early](./sip.js.dialogstate.early.md) | boolean | | -| [id](./sip.js.dialogstate.id.md) | string | | -| [localSequenceNumber](./sip.js.dialogstate.localsequencenumber.md) | number | undefined | | -| [localTag](./sip.js.dialogstate.localtag.md) | string | | -| [localURI](./sip.js.dialogstate.localuri.md) | URI | | -| [remoteSequenceNumber](./sip.js.dialogstate.remotesequencenumber.md) | number | undefined | | -| [remoteTag](./sip.js.dialogstate.remotetag.md) | string | | -| [remoteTarget](./sip.js.dialogstate.remotetarget.md) | URI | | -| [remoteURI](./sip.js.dialogstate.remoteuri.md) | URI | | -| [routeSet](./sip.js.dialogstate.routeset.md) | Array<string> | | -| [secure](./sip.js.dialogstate.secure.md) | boolean | | +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [callId](./sip.js.dialogstate.callid.md) | | string | | +| [early](./sip.js.dialogstate.early.md) | | boolean | | +| [id](./sip.js.dialogstate.id.md) | | string | | +| [localSequenceNumber](./sip.js.dialogstate.localsequencenumber.md) | | number \| undefined | | +| [localTag](./sip.js.dialogstate.localtag.md) | | string | | +| [localURI](./sip.js.dialogstate.localuri.md) | | [URI](./sip.js.uri.md) | | +| [remoteSequenceNumber](./sip.js.dialogstate.remotesequencenumber.md) | | number \| undefined | | +| [remoteTag](./sip.js.dialogstate.remotetag.md) | | string | | +| [remoteTarget](./sip.js.dialogstate.remotetarget.md) | | [URI](./sip.js.uri.md) | | +| [remoteURI](./sip.js.dialogstate.remoteuri.md) | | [URI](./sip.js.uri.md) | | +| [routeSet](./sip.js.dialogstate.routeset.md) | | Array<string> | | +| [secure](./sip.js.dialogstate.secure.md) | | boolean | | diff --git a/docs/core/sip.js.exception._constructor_.md b/docs/core/sip.js.exception._constructor_.md index 27670030c..33923ead1 100644 --- a/docs/core/sip.js.exception._constructor_.md +++ b/docs/core/sip.js.exception._constructor_.md @@ -16,5 +16,5 @@ protected constructor(message?: string); | Parameter | Type | Description | | --- | --- | --- | -| message | string | | +| message | string | | diff --git a/docs/core/sip.js.exception.md b/docs/core/sip.js.exception.md index 7d64020a8..33365a463 100644 --- a/docs/core/sip.js.exception.md +++ b/docs/core/sip.js.exception.md @@ -11,6 +11,7 @@ An Exception is considered a condition that a reasonable application may wish to ```typescript export declare abstract class Exception extends Error ``` +Extends: Error ## Constructors diff --git a/docs/core/sip.js.incomingackrequest.md b/docs/core/sip.js.incomingackrequest.md index 42e4b2528..2b9ed341b 100644 --- a/docs/core/sip.js.incomingackrequest.md +++ b/docs/core/sip.js.incomingackrequest.md @@ -14,7 +14,7 @@ export interface IncomingAckRequest ## Properties -| Property | Type | Description | -| --- | --- | --- | -| [message](./sip.js.incomingackrequest.message.md) | IncomingRequestMessage | The incoming message. | +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [message](./sip.js.incomingackrequest.message.md) | | [IncomingRequestMessage](./sip.js.incomingrequestmessage.md) | The incoming message. | diff --git a/docs/core/sip.js.incomingbyerequest.md b/docs/core/sip.js.incomingbyerequest.md index d5fc48701..3552687de 100644 --- a/docs/core/sip.js.incomingbyerequest.md +++ b/docs/core/sip.js.incomingbyerequest.md @@ -11,3 +11,5 @@ Incoming BYE request. ```typescript export interface IncomingByeRequest extends IncomingRequest ``` +Extends: [IncomingRequest](./sip.js.incomingrequest.md) + diff --git a/docs/core/sip.js.incomingbyeresponse.md b/docs/core/sip.js.incomingbyeresponse.md index 89f09c196..dae53a09e 100644 --- a/docs/core/sip.js.incomingbyeresponse.md +++ b/docs/core/sip.js.incomingbyeresponse.md @@ -11,3 +11,5 @@ Incoming BYE response. ```typescript export interface IncomingByeResponse extends IncomingResponse ``` +Extends: [IncomingResponse](./sip.js.incomingresponse.md) + diff --git a/docs/core/sip.js.incomingcancelrequest.md b/docs/core/sip.js.incomingcancelrequest.md index 4c6b2c577..7e25ae7c3 100644 --- a/docs/core/sip.js.incomingcancelrequest.md +++ b/docs/core/sip.js.incomingcancelrequest.md @@ -11,3 +11,5 @@ Incoming CANCEL request. ```typescript export interface IncomingCancelRequest extends IncomingRequest ``` +Extends: [IncomingRequest](./sip.js.incomingrequest.md) + diff --git a/docs/core/sip.js.incomingcancelresponse.md b/docs/core/sip.js.incomingcancelresponse.md index 44fd1e076..ea1129a69 100644 --- a/docs/core/sip.js.incomingcancelresponse.md +++ b/docs/core/sip.js.incomingcancelresponse.md @@ -11,3 +11,5 @@ Incoming CANCEL response. ```typescript export interface IncomingCancelResponse extends IncomingResponse ``` +Extends: [IncomingResponse](./sip.js.incomingresponse.md) + diff --git a/docs/core/sip.js.incominginforequest.md b/docs/core/sip.js.incominginforequest.md index ebd29ac0d..70d1e8698 100644 --- a/docs/core/sip.js.incominginforequest.md +++ b/docs/core/sip.js.incominginforequest.md @@ -11,3 +11,5 @@ Incoming INFO request. ```typescript export interface IncomingInfoRequest extends IncomingRequest ``` +Extends: [IncomingRequest](./sip.js.incomingrequest.md) + diff --git a/docs/core/sip.js.incominginforesponse.md b/docs/core/sip.js.incominginforesponse.md index c298f8955..2d399a998 100644 --- a/docs/core/sip.js.incominginforesponse.md +++ b/docs/core/sip.js.incominginforesponse.md @@ -11,3 +11,5 @@ Incoming INFO response. ```typescript export interface IncomingInfoResponse extends IncomingResponse ``` +Extends: [IncomingResponse](./sip.js.incomingresponse.md) + diff --git a/docs/core/sip.js.incominginviterequest.accept.md b/docs/core/sip.js.incominginviterequest.accept.md index a6dcf20ed..616e62dcf 100644 --- a/docs/core/sip.js.incominginviterequest.accept.md +++ b/docs/core/sip.js.incominginviterequest.accept.md @@ -16,11 +16,11 @@ accept(options?: ResponseOptions): OutgoingResponseWithSession; | Parameter | Type | Description | | --- | --- | --- | -| options | ResponseOptions | Response options bucket. | +| options | [ResponseOptions](./sip.js.responseoptions.md) | Response options bucket. | Returns: -`OutgoingResponseWithSession` +[OutgoingResponseWithSession](./sip.js.outgoingresponsewithsession.md) Outgoing response and a confirmed Session. diff --git a/docs/core/sip.js.incominginviterequest.md b/docs/core/sip.js.incominginviterequest.md index 8fa9f85c0..ddc5e7819 100644 --- a/docs/core/sip.js.incominginviterequest.md +++ b/docs/core/sip.js.incominginviterequest.md @@ -11,6 +11,7 @@ Incoming INVITE request. ```typescript export interface IncomingInviteRequest extends IncomingRequest ``` +Extends: [IncomingRequest](./sip.js.incomingrequest.md) ## Methods diff --git a/docs/core/sip.js.incominginviterequest.progress.md b/docs/core/sip.js.incominginviterequest.progress.md index abf324ce1..1d2d83735 100644 --- a/docs/core/sip.js.incominginviterequest.progress.md +++ b/docs/core/sip.js.incominginviterequest.progress.md @@ -16,11 +16,11 @@ progress(options?: ResponseOptions): OutgoingResponseWithSession; | Parameter | Type | Description | | --- | --- | --- | -| options | ResponseOptions | Response options bucket. | +| options | [ResponseOptions](./sip.js.responseoptions.md) | Response options bucket. | Returns: -`OutgoingResponseWithSession` +[OutgoingResponseWithSession](./sip.js.outgoingresponsewithsession.md) Outgoing response and an early Session. diff --git a/docs/core/sip.js.incomingmessage.addheader.md b/docs/core/sip.js.incomingmessage.addheader.md index 9ac66cc4e..489d32a8d 100644 --- a/docs/core/sip.js.incomingmessage.addheader.md +++ b/docs/core/sip.js.incomingmessage.addheader.md @@ -16,10 +16,10 @@ addHeader(name: string, value: string): void; | Parameter | Type | Description | | --- | --- | --- | -| name | string | header name | -| value | string | header value | +| name | string | header name | +| value | string | header value | Returns: -`void` +void diff --git a/docs/core/sip.js.incomingmessage.getheader.md b/docs/core/sip.js.incomingmessage.getheader.md index 6b5319762..365e725bb 100644 --- a/docs/core/sip.js.incomingmessage.getheader.md +++ b/docs/core/sip.js.incomingmessage.getheader.md @@ -16,11 +16,11 @@ getHeader(name: string): string | undefined; | Parameter | Type | Description | | --- | --- | --- | -| name | string | header name | +| name | string | header name | Returns: -`string | undefined` +string \| undefined Returns the specified header, undefined if header doesn't exist. diff --git a/docs/core/sip.js.incomingmessage.getheaders.md b/docs/core/sip.js.incomingmessage.getheaders.md index e628c5009..f18219ab4 100644 --- a/docs/core/sip.js.incomingmessage.getheaders.md +++ b/docs/core/sip.js.incomingmessage.getheaders.md @@ -16,11 +16,11 @@ getHeaders(name: string): Array; | Parameter | Type | Description | | --- | --- | --- | -| name | string | header name | +| name | string | header name | Returns: -`Array` +Array<string> Array - with all the headers of the specified name. diff --git a/docs/core/sip.js.incomingmessage.hasheader.md b/docs/core/sip.js.incomingmessage.hasheader.md index 3661b046c..5d7274d81 100644 --- a/docs/core/sip.js.incomingmessage.hasheader.md +++ b/docs/core/sip.js.incomingmessage.hasheader.md @@ -16,11 +16,11 @@ hasHeader(name: string): boolean; | Parameter | Type | Description | | --- | --- | --- | -| name | string | header name | +| name | string | header name | Returns: -`boolean` +boolean true if header with given name exists, false otherwise diff --git a/docs/core/sip.js.incomingmessage.md b/docs/core/sip.js.incomingmessage.md index f82bce5cd..18e1c430b 100644 --- a/docs/core/sip.js.incomingmessage.md +++ b/docs/core/sip.js.incomingmessage.md @@ -16,19 +16,19 @@ export declare class IncomingMessage | Property | Modifiers | Type | Description | | --- | --- | --- | --- | -| [body](./sip.js.incomingmessage.body.md) | | string | | -| [callId](./sip.js.incomingmessage.callid.md) | | string | | -| [cseq](./sip.js.incomingmessage.cseq.md) | | number | | -| [data](./sip.js.incomingmessage.data.md) | | string | | -| [from](./sip.js.incomingmessage.from.md) | | NameAddrHeader | | -| [fromTag](./sip.js.incomingmessage.fromtag.md) | | string | | -| [headers](./sip.js.incomingmessage.headers.md) | | {
[name: string]: Array<{
parsed?: any;
raw: string;
}>;
} | | -| [method](./sip.js.incomingmessage.method.md) | | string | | -| [referTo](./sip.js.incomingmessage.referto.md) | | string | undefined | | -| [to](./sip.js.incomingmessage.to.md) | | NameAddrHeader | | -| [toTag](./sip.js.incomingmessage.totag.md) | | string | | -| [via](./sip.js.incomingmessage.via.md) | | {
host: string;
port: number;
} | | -| [viaBranch](./sip.js.incomingmessage.viabranch.md) | | string | | +| [body](./sip.js.incomingmessage.body.md) | | string | | +| [callId](./sip.js.incomingmessage.callid.md) | | string | | +| [cseq](./sip.js.incomingmessage.cseq.md) | | number | | +| [data](./sip.js.incomingmessage.data.md) | | string | | +| [from](./sip.js.incomingmessage.from.md) | | [NameAddrHeader](./sip.js.nameaddrheader.md) | | +| [fromTag](./sip.js.incomingmessage.fromtag.md) | | string | | +| [headers](./sip.js.incomingmessage.headers.md) | | { \[name: string\]: Array<{ parsed?: any; raw: string; }>; } | | +| [method](./sip.js.incomingmessage.method.md) | | string | | +| [referTo](./sip.js.incomingmessage.referto.md) | | string \| undefined | | +| [to](./sip.js.incomingmessage.to.md) | | [NameAddrHeader](./sip.js.nameaddrheader.md) | | +| [toTag](./sip.js.incomingmessage.totag.md) | | string | | +| [via](./sip.js.incomingmessage.via.md) | | { host: string; port: number; } | | +| [viaBranch](./sip.js.incomingmessage.viabranch.md) | | string | | ## Methods diff --git a/docs/core/sip.js.incomingmessage.parseheader.md b/docs/core/sip.js.incomingmessage.parseheader.md index eebb3e4c6..b651700d2 100644 --- a/docs/core/sip.js.incomingmessage.parseheader.md +++ b/docs/core/sip.js.incomingmessage.parseheader.md @@ -16,12 +16,12 @@ parseHeader(name: string, idx?: number): any | undefined; | Parameter | Type | Description | | --- | --- | --- | -| name | string | header name | -| idx | number | header index | +| name | string | header name | +| idx | number | header index | Returns: -`any | undefined` +any \| undefined Parsed header object, undefined if the header is not present or in case of a parsing error. diff --git a/docs/core/sip.js.incomingmessage.s.md b/docs/core/sip.js.incomingmessage.s.md index c9534a867..ad36d5052 100644 --- a/docs/core/sip.js.incomingmessage.s.md +++ b/docs/core/sip.js.incomingmessage.s.md @@ -16,12 +16,12 @@ s(name: string, idx?: number): any | undefined; | Parameter | Type | Description | | --- | --- | --- | -| name | string | header name | -| idx | number | header index | +| name | string | header name | +| idx | number | header index | Returns: -`any | undefined` +any \| undefined Parsed header object, undefined if the header is not present or in case of a parsing error. diff --git a/docs/core/sip.js.incomingmessage.setheader.md b/docs/core/sip.js.incomingmessage.setheader.md index 3275daf83..a62a9b709 100644 --- a/docs/core/sip.js.incomingmessage.setheader.md +++ b/docs/core/sip.js.incomingmessage.setheader.md @@ -16,10 +16,10 @@ setHeader(name: string, value: string): void; | Parameter | Type | Description | | --- | --- | --- | -| name | string | header name | -| value | string | header value | +| name | string | header name | +| value | string | header value | Returns: -`void` +void diff --git a/docs/core/sip.js.incomingmessage.tostring.md b/docs/core/sip.js.incomingmessage.tostring.md index 80e3bc25b..226bad783 100644 --- a/docs/core/sip.js.incomingmessage.tostring.md +++ b/docs/core/sip.js.incomingmessage.tostring.md @@ -11,5 +11,5 @@ toString(): string; ``` Returns: -`string` +string diff --git a/docs/core/sip.js.incomingmessagerequest.md b/docs/core/sip.js.incomingmessagerequest.md index 454cb569d..036d3bf73 100644 --- a/docs/core/sip.js.incomingmessagerequest.md +++ b/docs/core/sip.js.incomingmessagerequest.md @@ -11,3 +11,5 @@ Incoming MESSAGE request. ```typescript export interface IncomingMessageRequest extends IncomingRequest ``` +Extends: [IncomingRequest](./sip.js.incomingrequest.md) + diff --git a/docs/core/sip.js.incomingmessageresponse.md b/docs/core/sip.js.incomingmessageresponse.md index b90b8e7a8..698b9da3e 100644 --- a/docs/core/sip.js.incomingmessageresponse.md +++ b/docs/core/sip.js.incomingmessageresponse.md @@ -11,3 +11,5 @@ Incoming MESSAGE response. ```typescript export interface IncomingMessageResponse extends IncomingResponse ``` +Extends: [IncomingResponse](./sip.js.incomingresponse.md) + diff --git a/docs/core/sip.js.incomingnotifyrequest.md b/docs/core/sip.js.incomingnotifyrequest.md index e3863b319..6365e7ebf 100644 --- a/docs/core/sip.js.incomingnotifyrequest.md +++ b/docs/core/sip.js.incomingnotifyrequest.md @@ -11,3 +11,5 @@ Incoming NOTIFY request. ```typescript export interface IncomingNotifyRequest extends IncomingRequest ``` +Extends: [IncomingRequest](./sip.js.incomingrequest.md) + diff --git a/docs/core/sip.js.incomingnotifyresponse.md b/docs/core/sip.js.incomingnotifyresponse.md index 3a9fd8014..fbcd5c432 100644 --- a/docs/core/sip.js.incomingnotifyresponse.md +++ b/docs/core/sip.js.incomingnotifyresponse.md @@ -11,3 +11,5 @@ Incoming NOTIFY response. ```typescript export interface IncomingNotifyResponse extends IncomingResponse ``` +Extends: [IncomingResponse](./sip.js.incomingresponse.md) + diff --git a/docs/core/sip.js.incomingprackrequest.md b/docs/core/sip.js.incomingprackrequest.md index ea4e57566..c3a69a195 100644 --- a/docs/core/sip.js.incomingprackrequest.md +++ b/docs/core/sip.js.incomingprackrequest.md @@ -11,3 +11,5 @@ Incoming PRACK request. ```typescript export interface IncomingPrackRequest extends IncomingRequest ``` +Extends: [IncomingRequest](./sip.js.incomingrequest.md) + diff --git a/docs/core/sip.js.incomingprackresponse.md b/docs/core/sip.js.incomingprackresponse.md index 59a87c5c1..63ac98dfc 100644 --- a/docs/core/sip.js.incomingprackresponse.md +++ b/docs/core/sip.js.incomingprackresponse.md @@ -11,3 +11,5 @@ Incoming PRACK response. ```typescript export interface IncomingPrackResponse extends IncomingResponse ``` +Extends: [IncomingResponse](./sip.js.incomingresponse.md) + diff --git a/docs/core/sip.js.incomingpublishrequest.md b/docs/core/sip.js.incomingpublishrequest.md index 2fb5998c3..7821b5b97 100644 --- a/docs/core/sip.js.incomingpublishrequest.md +++ b/docs/core/sip.js.incomingpublishrequest.md @@ -11,3 +11,5 @@ Incoming PUBLISH request. ```typescript export interface IncomingPublishRequest extends IncomingRequest ``` +Extends: [IncomingRequest](./sip.js.incomingrequest.md) + diff --git a/docs/core/sip.js.incomingpublishresponse.md b/docs/core/sip.js.incomingpublishresponse.md index 53db684c5..e926b3371 100644 --- a/docs/core/sip.js.incomingpublishresponse.md +++ b/docs/core/sip.js.incomingpublishresponse.md @@ -11,3 +11,5 @@ Incoming PUBLISH response. ```typescript export interface IncomingPublishResponse extends IncomingResponse ``` +Extends: [IncomingResponse](./sip.js.incomingresponse.md) + diff --git a/docs/core/sip.js.incomingreferrequest.md b/docs/core/sip.js.incomingreferrequest.md index 716d2b26f..d3c6b0ec3 100644 --- a/docs/core/sip.js.incomingreferrequest.md +++ b/docs/core/sip.js.incomingreferrequest.md @@ -11,3 +11,5 @@ Incoming REFER request. ```typescript export interface IncomingReferRequest extends IncomingRequest ``` +Extends: [IncomingRequest](./sip.js.incomingrequest.md) + diff --git a/docs/core/sip.js.incomingreferresponse.md b/docs/core/sip.js.incomingreferresponse.md index 7e18fc1c9..3432154b5 100644 --- a/docs/core/sip.js.incomingreferresponse.md +++ b/docs/core/sip.js.incomingreferresponse.md @@ -11,3 +11,5 @@ Incoming REFER response. ```typescript export interface IncomingReferResponse extends IncomingResponse ``` +Extends: [IncomingResponse](./sip.js.incomingresponse.md) + diff --git a/docs/core/sip.js.incomingregisterrequest.md b/docs/core/sip.js.incomingregisterrequest.md index 7ac9b0018..6a6bd6a52 100644 --- a/docs/core/sip.js.incomingregisterrequest.md +++ b/docs/core/sip.js.incomingregisterrequest.md @@ -11,3 +11,5 @@ Incoming REGISTER request. ```typescript export interface IncomingRegisterRequest extends IncomingRequest ``` +Extends: [IncomingRequest](./sip.js.incomingrequest.md) + diff --git a/docs/core/sip.js.incomingregisterresponse.md b/docs/core/sip.js.incomingregisterresponse.md index 195272ef8..47f1f6cea 100644 --- a/docs/core/sip.js.incomingregisterresponse.md +++ b/docs/core/sip.js.incomingregisterresponse.md @@ -11,3 +11,5 @@ Incoming REGISTER response. ```typescript export interface IncomingRegisterResponse extends IncomingResponse ``` +Extends: [IncomingResponse](./sip.js.incomingresponse.md) + diff --git a/docs/core/sip.js.incomingrequest.accept.md b/docs/core/sip.js.incomingrequest.accept.md index de24f538b..ffcc45a15 100644 --- a/docs/core/sip.js.incomingrequest.accept.md +++ b/docs/core/sip.js.incomingrequest.accept.md @@ -16,9 +16,9 @@ accept(options?: ResponseOptions): OutgoingResponse; | Parameter | Type | Description | | --- | --- | --- | -| options | ResponseOptions | Response options bucket. | +| options | [ResponseOptions](./sip.js.responseoptions.md) | Response options bucket. | Returns: -`OutgoingResponse` +[OutgoingResponse](./sip.js.outgoingresponse.md) diff --git a/docs/core/sip.js.incomingrequest.md b/docs/core/sip.js.incomingrequest.md index 036fb13e9..ec7baa2df 100644 --- a/docs/core/sip.js.incomingrequest.md +++ b/docs/core/sip.js.incomingrequest.md @@ -18,10 +18,10 @@ For the purpose of invoking a particular operation. https://tools.ietf.org/html/ ## Properties -| Property | Type | Description | -| --- | --- | --- | -| [delegate](./sip.js.incomingrequest.delegate.md) | IncomingRequestDelegate | Delegate providing custom handling of this incoming request. | -| [message](./sip.js.incomingrequest.message.md) | IncomingRequestMessage | The incoming message. | +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [delegate](./sip.js.incomingrequest.delegate.md) | | [IncomingRequestDelegate](./sip.js.incomingrequestdelegate.md) | Delegate providing custom handling of this incoming request. | +| [message](./sip.js.incomingrequest.message.md) | | [IncomingRequestMessage](./sip.js.incomingrequestmessage.md) | The incoming message. | ## Methods diff --git a/docs/core/sip.js.incomingrequest.progress.md b/docs/core/sip.js.incomingrequest.progress.md index 2d8f7304a..84b534062 100644 --- a/docs/core/sip.js.incomingrequest.progress.md +++ b/docs/core/sip.js.incomingrequest.progress.md @@ -16,9 +16,9 @@ progress(options?: ResponseOptions): OutgoingResponse; | Parameter | Type | Description | | --- | --- | --- | -| options | ResponseOptions | Response options bucket. | +| options | [ResponseOptions](./sip.js.responseoptions.md) | Response options bucket. | Returns: -`OutgoingResponse` +[OutgoingResponse](./sip.js.outgoingresponse.md) diff --git a/docs/core/sip.js.incomingrequest.redirect.md b/docs/core/sip.js.incomingrequest.redirect.md index 9677074c4..3d458668c 100644 --- a/docs/core/sip.js.incomingrequest.redirect.md +++ b/docs/core/sip.js.incomingrequest.redirect.md @@ -16,10 +16,10 @@ redirect(contacts: Array, options?: ResponseOptions): OutgoingResponse; | Parameter | Type | Description | | --- | --- | --- | -| contacts | Array<URI> | Contacts to redirect the UAC to. | -| options | ResponseOptions | Response options bucket. | +| contacts | Array<[URI](./sip.js.uri.md)> | Contacts to redirect the UAC to. | +| options | [ResponseOptions](./sip.js.responseoptions.md) | Response options bucket. | Returns: -`OutgoingResponse` +[OutgoingResponse](./sip.js.outgoingresponse.md) diff --git a/docs/core/sip.js.incomingrequest.reject.md b/docs/core/sip.js.incomingrequest.reject.md index 66c54758f..6a62a2fee 100644 --- a/docs/core/sip.js.incomingrequest.reject.md +++ b/docs/core/sip.js.incomingrequest.reject.md @@ -16,9 +16,9 @@ reject(options?: ResponseOptions): OutgoingResponse; | Parameter | Type | Description | | --- | --- | --- | -| options | ResponseOptions | Response options bucket. | +| options | [ResponseOptions](./sip.js.responseoptions.md) | Response options bucket. | Returns: -`OutgoingResponse` +[OutgoingResponse](./sip.js.outgoingresponse.md) diff --git a/docs/core/sip.js.incomingrequest.trying.md b/docs/core/sip.js.incomingrequest.trying.md index b7ffc6f28..dedd4716e 100644 --- a/docs/core/sip.js.incomingrequest.trying.md +++ b/docs/core/sip.js.incomingrequest.trying.md @@ -16,9 +16,9 @@ trying(options?: ResponseOptions): OutgoingResponse; | Parameter | Type | Description | | --- | --- | --- | -| options | ResponseOptions | Response options bucket. | +| options | [ResponseOptions](./sip.js.responseoptions.md) | Response options bucket. | Returns: -`OutgoingResponse` +[OutgoingResponse](./sip.js.outgoingresponse.md) diff --git a/docs/core/sip.js.incomingrequestdelegate.oncancel.md b/docs/core/sip.js.incomingrequestdelegate.oncancel.md index 7401682e7..5046aa158 100644 --- a/docs/core/sip.js.incomingrequestdelegate.oncancel.md +++ b/docs/core/sip.js.incomingrequestdelegate.oncancel.md @@ -16,9 +16,9 @@ onCancel?(message: IncomingRequestMessage): void; | Parameter | Type | Description | | --- | --- | --- | -| message | IncomingRequestMessage | Incoming CANCEL request message. | +| message | [IncomingRequestMessage](./sip.js.incomingrequestmessage.md) | Incoming CANCEL request message. | Returns: -`void` +void diff --git a/docs/core/sip.js.incomingrequestdelegate.ontransporterror.md b/docs/core/sip.js.incomingrequestdelegate.ontransporterror.md index 3ac882383..f1073ccf7 100644 --- a/docs/core/sip.js.incomingrequestdelegate.ontransporterror.md +++ b/docs/core/sip.js.incomingrequestdelegate.ontransporterror.md @@ -16,9 +16,9 @@ onTransportError?(error: TransportError): void; | Parameter | Type | Description | | --- | --- | --- | -| error | TransportError | Transport error. | +| error | [TransportError](./sip.js.transporterror.md) | Transport error. | Returns: -`void` +void diff --git a/docs/core/sip.js.incomingrequestmessage.md b/docs/core/sip.js.incomingrequestmessage.md index 40097d046..43a18c938 100644 --- a/docs/core/sip.js.incomingrequestmessage.md +++ b/docs/core/sip.js.incomingrequestmessage.md @@ -11,6 +11,7 @@ Incoming request message. ```typescript export declare class IncomingRequestMessage extends IncomingMessage ``` +Extends: [IncomingMessage](./sip.js.incomingmessage.md) ## Constructors @@ -22,5 +23,5 @@ export declare class IncomingRequestMessage extends IncomingMessage | Property | Modifiers | Type | Description | | --- | --- | --- | --- | -| [ruri](./sip.js.incomingrequestmessage.ruri.md) | | URI | undefined | | +| [ruri](./sip.js.incomingrequestmessage.ruri.md) | | [URI](./sip.js.uri.md) \| undefined | | diff --git a/docs/core/sip.js.incomingrequestwithsubscription.md b/docs/core/sip.js.incomingrequestwithsubscription.md index 25a1865b9..eedb865b4 100644 --- a/docs/core/sip.js.incomingrequestwithsubscription.md +++ b/docs/core/sip.js.incomingrequestwithsubscription.md @@ -14,8 +14,8 @@ export interface IncomingRequestWithSubscription ## Properties -| Property | Type | Description | -| --- | --- | --- | -| [request](./sip.js.incomingrequestwithsubscription.request.md) | IncomingNotifyRequest | The NOTIFY request which established the subscription. | -| [subscription](./sip.js.incomingrequestwithsubscription.subscription.md) | Subscription | If subscription state is not "terminated", then the subscription. Otherwise undefined. | +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [request](./sip.js.incomingrequestwithsubscription.request.md) | | [IncomingNotifyRequest](./sip.js.incomingnotifyrequest.md) | The NOTIFY request which established the subscription. | +| [subscription](./sip.js.incomingrequestwithsubscription.subscription.md) | | [Subscription](./sip.js.subscription.md) | If subscription state is not "terminated", then the subscription. Otherwise undefined. | diff --git a/docs/core/sip.js.incomingresponse.md b/docs/core/sip.js.incomingresponse.md index 6ba16c74d..cc31f18a3 100644 --- a/docs/core/sip.js.incomingresponse.md +++ b/docs/core/sip.js.incomingresponse.md @@ -18,7 +18,7 @@ For indicating the status of a request sent from the client to the server. https ## Properties -| Property | Type | Description | -| --- | --- | --- | -| [message](./sip.js.incomingresponse.message.md) | IncomingResponseMessage | The incoming message. | +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [message](./sip.js.incomingresponse.message.md) | | [IncomingResponseMessage](./sip.js.incomingresponsemessage.md) | The incoming message. | diff --git a/docs/core/sip.js.incomingresponsemessage.md b/docs/core/sip.js.incomingresponsemessage.md index d29fa0b94..b84c9cd61 100644 --- a/docs/core/sip.js.incomingresponsemessage.md +++ b/docs/core/sip.js.incomingresponsemessage.md @@ -11,6 +11,7 @@ Incoming response message. ```typescript export declare class IncomingResponseMessage extends IncomingMessage ``` +Extends: [IncomingMessage](./sip.js.incomingmessage.md) ## Constructors @@ -22,6 +23,6 @@ export declare class IncomingResponseMessage extends IncomingMessage | Property | Modifiers | Type | Description | | --- | --- | --- | --- | -| [reasonPhrase](./sip.js.incomingresponsemessage.reasonphrase.md) | | string | undefined | | -| [statusCode](./sip.js.incomingresponsemessage.statuscode.md) | | number | undefined | | +| [reasonPhrase](./sip.js.incomingresponsemessage.reasonphrase.md) | | string \| undefined | | +| [statusCode](./sip.js.incomingresponsemessage.statuscode.md) | | number \| undefined | | diff --git a/docs/core/sip.js.incomingsubscriberequest.md b/docs/core/sip.js.incomingsubscriberequest.md index 73b6de344..fa46bec07 100644 --- a/docs/core/sip.js.incomingsubscriberequest.md +++ b/docs/core/sip.js.incomingsubscriberequest.md @@ -11,3 +11,5 @@ Incoming SUBSCRIBE request. ```typescript export interface IncomingSubscribeRequest extends IncomingRequest ``` +Extends: [IncomingRequest](./sip.js.incomingrequest.md) + diff --git a/docs/core/sip.js.incomingsubscriberesponse.md b/docs/core/sip.js.incomingsubscriberesponse.md index 4b8b2fae1..c7321a0ac 100644 --- a/docs/core/sip.js.incomingsubscriberesponse.md +++ b/docs/core/sip.js.incomingsubscriberesponse.md @@ -11,3 +11,5 @@ Incoming SUBSCRIBE response. ```typescript export interface IncomingSubscribeResponse extends IncomingResponse ``` +Extends: [IncomingResponse](./sip.js.incomingresponse.md) + diff --git a/docs/core/sip.js.infouseragentclient._constructor_.md b/docs/core/sip.js.infouseragentclient._constructor_.md index 2ca12c3fa..02bc96a47 100644 --- a/docs/core/sip.js.infouseragentclient._constructor_.md +++ b/docs/core/sip.js.infouseragentclient._constructor_.md @@ -16,7 +16,7 @@ constructor(dialog: SessionDialog, delegate?: OutgoingRequestDelegate, options?: | Parameter | Type | Description | | --- | --- | --- | -| dialog | SessionDialog | | -| delegate | OutgoingRequestDelegate | | -| options | RequestOptions | | +| dialog | [SessionDialog](./sip.js.sessiondialog.md) | | +| delegate | [OutgoingRequestDelegate](./sip.js.outgoingrequestdelegate.md) | | +| options | [RequestOptions](./sip.js.requestoptions.md) | | diff --git a/docs/core/sip.js.infouseragentclient.md b/docs/core/sip.js.infouseragentclient.md index 725fb8b12..b838341be 100644 --- a/docs/core/sip.js.infouseragentclient.md +++ b/docs/core/sip.js.infouseragentclient.md @@ -11,6 +11,9 @@ INFO UAC. ```typescript export declare class InfoUserAgentClient extends UserAgentClient implements OutgoingInfoRequest ``` +Extends: [UserAgentClient](./sip.js.useragentclient.md) + +Implements: [OutgoingInfoRequest](./sip.js.outgoinginforequest.md) ## Constructors diff --git a/docs/core/sip.js.infouseragentserver._constructor_.md b/docs/core/sip.js.infouseragentserver._constructor_.md index bb768b029..62d94f691 100644 --- a/docs/core/sip.js.infouseragentserver._constructor_.md +++ b/docs/core/sip.js.infouseragentserver._constructor_.md @@ -16,7 +16,7 @@ constructor(dialog: SessionDialog, message: IncomingRequestMessage, delegate?: I | Parameter | Type | Description | | --- | --- | --- | -| dialog | SessionDialog | | -| message | IncomingRequestMessage | | -| delegate | IncomingRequestDelegate | | +| dialog | [SessionDialog](./sip.js.sessiondialog.md) | | +| message | [IncomingRequestMessage](./sip.js.incomingrequestmessage.md) | | +| delegate | [IncomingRequestDelegate](./sip.js.incomingrequestdelegate.md) | | diff --git a/docs/core/sip.js.infouseragentserver.md b/docs/core/sip.js.infouseragentserver.md index acbb2ad47..7f3ea069e 100644 --- a/docs/core/sip.js.infouseragentserver.md +++ b/docs/core/sip.js.infouseragentserver.md @@ -11,6 +11,9 @@ INFO UAS. ```typescript export declare class InfoUserAgentServer extends UserAgentServer implements IncomingInfoRequest ``` +Extends: [UserAgentServer](./sip.js.useragentserver.md) + +Implements: [IncomingInfoRequest](./sip.js.incominginforequest.md) ## Constructors diff --git a/docs/core/sip.js.inviteclienttransaction._constructor_.md b/docs/core/sip.js.inviteclienttransaction._constructor_.md index 3ef9c948a..bf306f59b 100644 --- a/docs/core/sip.js.inviteclienttransaction._constructor_.md +++ b/docs/core/sip.js.inviteclienttransaction._constructor_.md @@ -16,7 +16,7 @@ constructor(request: OutgoingRequestMessage, transport: Transport, user: ClientT | Parameter | Type | Description | | --- | --- | --- | -| request | OutgoingRequestMessage | The outgoing INVITE request. | -| transport | Transport | The transport. | -| user | ClientTransactionUser | The transaction user. | +| request | [OutgoingRequestMessage](./sip.js.outgoingrequestmessage.md) | The outgoing INVITE request. | +| transport | [Transport](./sip.js.transport.md) | The transport. | +| user | [ClientTransactionUser](./sip.js.clienttransactionuser.md) | The transaction user. | diff --git a/docs/core/sip.js.inviteclienttransaction.ackresponse.md b/docs/core/sip.js.inviteclienttransaction.ackresponse.md index 83e1fa11d..2e23211a3 100644 --- a/docs/core/sip.js.inviteclienttransaction.ackresponse.md +++ b/docs/core/sip.js.inviteclienttransaction.ackresponse.md @@ -20,9 +20,9 @@ ackResponse(ack: OutgoingRequestMessage): void; | Parameter | Type | Description | | --- | --- | --- | -| ack | OutgoingRequestMessage | The outgoing ACK request. | +| ack | [OutgoingRequestMessage](./sip.js.outgoingrequestmessage.md) | The outgoing ACK request. | Returns: -`void` +void diff --git a/docs/core/sip.js.inviteclienttransaction.dispose.md b/docs/core/sip.js.inviteclienttransaction.dispose.md index 9239a824f..7d141a999 100644 --- a/docs/core/sip.js.inviteclienttransaction.dispose.md +++ b/docs/core/sip.js.inviteclienttransaction.dispose.md @@ -13,5 +13,5 @@ dispose(): void; ``` Returns: -`void` +void diff --git a/docs/core/sip.js.inviteclienttransaction.md b/docs/core/sip.js.inviteclienttransaction.md index da23ac2ad..328ac8fa2 100644 --- a/docs/core/sip.js.inviteclienttransaction.md +++ b/docs/core/sip.js.inviteclienttransaction.md @@ -11,6 +11,7 @@ INVITE Client Transaction. ```typescript export declare class InviteClientTransaction extends ClientTransaction ``` +Extends: [ClientTransaction](./sip.js.clienttransaction.md) ## Remarks @@ -26,13 +27,13 @@ The INVITE transaction consists of a three-way handshake. The client transaction | Property | Modifiers | Type | Description | | --- | --- | --- | --- | -| [kind](./sip.js.inviteclienttransaction.kind.md) | | string | Transaction kind. Deprecated. | +| [kind](./sip.js.inviteclienttransaction.kind.md) | | string | Transaction kind. Deprecated. | ## Methods | Method | Modifiers | Description | | --- | --- | --- | -| [ackResponse(ack)](./sip.js.inviteclienttransaction.ackresponse.md) | | ACK a 2xx final response.The transaction includes the ACK only if the final response was not a 2xx response (the transaction will generate and send the ACK to the transport automagically). If the final response was a 2xx, the ACK is not considered part of the transaction (the transaction user needs to generate and send the ACK).This library is not strictly RFC compliant with regard to ACK handling for 2xx final responses. Specifically, retransmissions of ACKs to a 2xx final responses is handled by the transaction layer (instead of the UAC core). The "standard" approach is for the UAC core to receive all 2xx responses and manage sending ACK retransmissions to the transport directly. Herein the transaction layer manages sending ACKs to 2xx responses and any retransmissions of those ACKs as needed. | +| [ackResponse(ack)](./sip.js.inviteclienttransaction.ackresponse.md) | |

ACK a 2xx final response.

The transaction includes the ACK only if the final response was not a 2xx response (the transaction will generate and send the ACK to the transport automagically). If the final response was a 2xx, the ACK is not considered part of the transaction (the transaction user needs to generate and send the ACK).

This library is not strictly RFC compliant with regard to ACK handling for 2xx final responses. Specifically, retransmissions of ACKs to a 2xx final responses is handled by the transaction layer (instead of the UAC core). The "standard" approach is for the UAC core to receive all 2xx responses and manage sending ACK retransmissions to the transport directly. Herein the transaction layer manages sending ACKs to 2xx responses and any retransmissions of those ACKs as needed.

| | [dispose()](./sip.js.inviteclienttransaction.dispose.md) | | Destructor. | | [onTransportError(error)](./sip.js.inviteclienttransaction.ontransporterror.md) | | The client transaction SHOULD inform the TU that a transport failure has occurred, and the client transaction SHOULD transition directly to the "Terminated" state. The TU will handle the failover mechanisms described in \[4\]. https://tools.ietf.org/html/rfc3261\#section-17.1.4 | | [receiveResponse(response)](./sip.js.inviteclienttransaction.receiveresponse.md) | | Handler for incoming responses from the transport which match this transaction. | diff --git a/docs/core/sip.js.inviteclienttransaction.ontransporterror.md b/docs/core/sip.js.inviteclienttransaction.ontransporterror.md index cff74fa46..b5ea95da1 100644 --- a/docs/core/sip.js.inviteclienttransaction.ontransporterror.md +++ b/docs/core/sip.js.inviteclienttransaction.ontransporterror.md @@ -16,9 +16,9 @@ protected onTransportError(error: TransportError): void; | Parameter | Type | Description | | --- | --- | --- | -| error | TransportError | The error. | +| error | [TransportError](./sip.js.transporterror.md) | The error. | Returns: -`void` +void diff --git a/docs/core/sip.js.inviteclienttransaction.receiveresponse.md b/docs/core/sip.js.inviteclienttransaction.receiveresponse.md index 9254d823b..e1f61a929 100644 --- a/docs/core/sip.js.inviteclienttransaction.receiveresponse.md +++ b/docs/core/sip.js.inviteclienttransaction.receiveresponse.md @@ -16,9 +16,9 @@ receiveResponse(response: IncomingResponseMessage): void; | Parameter | Type | Description | | --- | --- | --- | -| response | IncomingResponseMessage | The incoming response. | +| response | [IncomingResponseMessage](./sip.js.incomingresponsemessage.md) | The incoming response. | Returns: -`void` +void diff --git a/docs/core/sip.js.inviteclienttransaction.typetostring.md b/docs/core/sip.js.inviteclienttransaction.typetostring.md index a31799f67..896861366 100644 --- a/docs/core/sip.js.inviteclienttransaction.typetostring.md +++ b/docs/core/sip.js.inviteclienttransaction.typetostring.md @@ -13,5 +13,5 @@ protected typeToString(): string; ``` Returns: -`string` +string diff --git a/docs/core/sip.js.inviteservertransaction._constructor_.md b/docs/core/sip.js.inviteservertransaction._constructor_.md index dabc3b092..71873f182 100644 --- a/docs/core/sip.js.inviteservertransaction._constructor_.md +++ b/docs/core/sip.js.inviteservertransaction._constructor_.md @@ -16,7 +16,7 @@ constructor(request: IncomingRequestMessage, transport: Transport, user: ServerT | Parameter | Type | Description | | --- | --- | --- | -| request | IncomingRequestMessage | Incoming INVITE request from the transport. | -| transport | Transport | The transport. | -| user | ServerTransactionUser | The transaction user. | +| request | [IncomingRequestMessage](./sip.js.incomingrequestmessage.md) | Incoming INVITE request from the transport. | +| transport | [Transport](./sip.js.transport.md) | The transport. | +| user | [ServerTransactionUser](./sip.js.servertransactionuser.md) | The transaction user. | diff --git a/docs/core/sip.js.inviteservertransaction.dispose.md b/docs/core/sip.js.inviteservertransaction.dispose.md index 574f96e92..564f333a6 100644 --- a/docs/core/sip.js.inviteservertransaction.dispose.md +++ b/docs/core/sip.js.inviteservertransaction.dispose.md @@ -13,5 +13,5 @@ dispose(): void; ``` Returns: -`void` +void diff --git a/docs/core/sip.js.inviteservertransaction.md b/docs/core/sip.js.inviteservertransaction.md index 51d6b13cf..f51b8b5d5 100644 --- a/docs/core/sip.js.inviteservertransaction.md +++ b/docs/core/sip.js.inviteservertransaction.md @@ -11,6 +11,7 @@ INVITE Server Transaction. ```typescript export declare class InviteServerTransaction extends ServerTransaction ``` +Extends: [ServerTransaction](./sip.js.servertransaction.md) ## Remarks @@ -26,7 +27,7 @@ https://tools.ietf.org/html/rfc3261\#section-17.2.1 | Property | Modifiers | Type | Description | | --- | --- | --- | --- | -| [kind](./sip.js.inviteservertransaction.kind.md) | | string | Transaction kind. Deprecated. | +| [kind](./sip.js.inviteservertransaction.kind.md) | | string | Transaction kind. Deprecated. | ## Methods diff --git a/docs/core/sip.js.inviteservertransaction.ontransporterror.md b/docs/core/sip.js.inviteservertransaction.ontransporterror.md index 0ba745ed9..c2c9c6982 100644 --- a/docs/core/sip.js.inviteservertransaction.ontransporterror.md +++ b/docs/core/sip.js.inviteservertransaction.ontransporterror.md @@ -16,9 +16,9 @@ protected onTransportError(error: Error): void; | Parameter | Type | Description | | --- | --- | --- | -| error | Error | | +| error | Error | | Returns: -`void` +void diff --git a/docs/core/sip.js.inviteservertransaction.receiverequest.md b/docs/core/sip.js.inviteservertransaction.receiverequest.md index d1754b490..d9d473863 100644 --- a/docs/core/sip.js.inviteservertransaction.receiverequest.md +++ b/docs/core/sip.js.inviteservertransaction.receiverequest.md @@ -16,9 +16,9 @@ receiveRequest(request: IncomingRequestMessage): void; | Parameter | Type | Description | | --- | --- | --- | -| request | IncomingRequestMessage | Request matching this transaction. | +| request | [IncomingRequestMessage](./sip.js.incomingrequestmessage.md) | Request matching this transaction. | Returns: -`void` +void diff --git a/docs/core/sip.js.inviteservertransaction.receiveresponse.md b/docs/core/sip.js.inviteservertransaction.receiveresponse.md index 7a2298226..f5e733329 100644 --- a/docs/core/sip.js.inviteservertransaction.receiveresponse.md +++ b/docs/core/sip.js.inviteservertransaction.receiveresponse.md @@ -16,10 +16,10 @@ receiveResponse(statusCode: number, response: string): void; | Parameter | Type | Description | | --- | --- | --- | -| statusCode | number | Status code of response. | -| response | string | Response. | +| statusCode | number | Status code of response. | +| response | string | Response. | Returns: -`void` +void diff --git a/docs/core/sip.js.inviteservertransaction.retransmitacceptedresponse.md b/docs/core/sip.js.inviteservertransaction.retransmitacceptedresponse.md index ac986e19c..62eaeec4a 100644 --- a/docs/core/sip.js.inviteservertransaction.retransmitacceptedresponse.md +++ b/docs/core/sip.js.inviteservertransaction.retransmitacceptedresponse.md @@ -13,5 +13,5 @@ retransmitAcceptedResponse(): void; ``` Returns: -`void` +void diff --git a/docs/core/sip.js.inviteservertransaction.typetostring.md b/docs/core/sip.js.inviteservertransaction.typetostring.md index 2ec181751..825264d89 100644 --- a/docs/core/sip.js.inviteservertransaction.typetostring.md +++ b/docs/core/sip.js.inviteservertransaction.typetostring.md @@ -13,5 +13,5 @@ protected typeToString(): string; ``` Returns: -`string` +string diff --git a/docs/core/sip.js.inviteuseragentclient._constructor_.md b/docs/core/sip.js.inviteuseragentclient._constructor_.md index 5ade8c30a..010803726 100644 --- a/docs/core/sip.js.inviteuseragentclient._constructor_.md +++ b/docs/core/sip.js.inviteuseragentclient._constructor_.md @@ -16,7 +16,7 @@ constructor(core: UserAgentCore, message: OutgoingRequestMessage, delegate?: Out | Parameter | Type | Description | | --- | --- | --- | -| core | UserAgentCore | | -| message | OutgoingRequestMessage | | -| delegate | OutgoingInviteRequestDelegate | | +| core | [UserAgentCore](./sip.js.useragentcore.md) | | +| message | [OutgoingRequestMessage](./sip.js.outgoingrequestmessage.md) | | +| delegate | [OutgoingInviteRequestDelegate](./sip.js.outgoinginviterequestdelegate.md) | | diff --git a/docs/core/sip.js.inviteuseragentclient.dispose.md b/docs/core/sip.js.inviteuseragentclient.dispose.md index 5bd57293c..c78c76fd4 100644 --- a/docs/core/sip.js.inviteuseragentclient.dispose.md +++ b/docs/core/sip.js.inviteuseragentclient.dispose.md @@ -11,5 +11,5 @@ dispose(): void; ``` Returns: -`void` +void diff --git a/docs/core/sip.js.inviteuseragentclient.md b/docs/core/sip.js.inviteuseragentclient.md index f5ee06d53..f443cba50 100644 --- a/docs/core/sip.js.inviteuseragentclient.md +++ b/docs/core/sip.js.inviteuseragentclient.md @@ -11,6 +11,9 @@ INVITE UAC. ```typescript export declare class InviteUserAgentClient extends UserAgentClient implements OutgoingInviteRequest ``` +Extends: [UserAgentClient](./sip.js.useragentclient.md) + +Implements: [OutgoingInviteRequest](./sip.js.outgoinginviterequest.md) ## Remarks @@ -26,7 +29,7 @@ export declare class InviteUserAgentClient extends UserAgentClient implements Ou | Property | Modifiers | Type | Description | | --- | --- | --- | --- | -| [delegate](./sip.js.inviteuseragentclient.delegate.md) | | OutgoingInviteRequestDelegate | undefined | | +| [delegate](./sip.js.inviteuseragentclient.delegate.md) | | [OutgoingInviteRequestDelegate](./sip.js.outgoinginviterequestdelegate.md) \| undefined | | ## Methods diff --git a/docs/core/sip.js.inviteuseragentclient.ontransporterror.md b/docs/core/sip.js.inviteuseragentclient.ontransporterror.md index 2a1b6f5f0..dfd11e974 100644 --- a/docs/core/sip.js.inviteuseragentclient.ontransporterror.md +++ b/docs/core/sip.js.inviteuseragentclient.ontransporterror.md @@ -16,9 +16,9 @@ protected onTransportError(error: TransportError): void; | Parameter | Type | Description | | --- | --- | --- | -| error | TransportError | Transport error | +| error | [TransportError](./sip.js.transporterror.md) | Transport error | Returns: -`void` +void diff --git a/docs/core/sip.js.inviteuseragentclient.receiveresponse.md b/docs/core/sip.js.inviteuseragentclient.receiveresponse.md index fb83b0e0d..472c5741d 100644 --- a/docs/core/sip.js.inviteuseragentclient.receiveresponse.md +++ b/docs/core/sip.js.inviteuseragentclient.receiveresponse.md @@ -16,9 +16,9 @@ protected receiveResponse(message: IncomingResponseMessage): void; | Parameter | Type | Description | | --- | --- | --- | -| message | IncomingResponseMessage | | +| message | [IncomingResponseMessage](./sip.js.incomingresponsemessage.md) | | Returns: -`void` +void diff --git a/docs/core/sip.js.inviteuseragentserver._constructor_.md b/docs/core/sip.js.inviteuseragentserver._constructor_.md index ba32d579a..f114a0200 100644 --- a/docs/core/sip.js.inviteuseragentserver._constructor_.md +++ b/docs/core/sip.js.inviteuseragentserver._constructor_.md @@ -16,7 +16,7 @@ constructor(core: UserAgentCore, message: IncomingRequestMessage, delegate?: Inc | Parameter | Type | Description | | --- | --- | --- | -| core | UserAgentCore | | -| message | IncomingRequestMessage | | -| delegate | IncomingRequestDelegate | | +| core | [UserAgentCore](./sip.js.useragentcore.md) | | +| message | [IncomingRequestMessage](./sip.js.incomingrequestmessage.md) | | +| delegate | [IncomingRequestDelegate](./sip.js.incomingrequestdelegate.md) | | diff --git a/docs/core/sip.js.inviteuseragentserver.accept.md b/docs/core/sip.js.inviteuseragentserver.accept.md index 367bf3c10..7b484051d 100644 --- a/docs/core/sip.js.inviteuseragentserver.accept.md +++ b/docs/core/sip.js.inviteuseragentserver.accept.md @@ -16,9 +16,9 @@ accept(options?: ResponseOptions): OutgoingResponseWithSession; | Parameter | Type | Description | | --- | --- | --- | -| options | ResponseOptions | Accept options bucket. | +| options | [ResponseOptions](./sip.js.responseoptions.md) | Accept options bucket. | Returns: -`OutgoingResponseWithSession` +[OutgoingResponseWithSession](./sip.js.outgoingresponsewithsession.md) diff --git a/docs/core/sip.js.inviteuseragentserver.dispose.md b/docs/core/sip.js.inviteuseragentserver.dispose.md index 33783222c..1aaadd18a 100644 --- a/docs/core/sip.js.inviteuseragentserver.dispose.md +++ b/docs/core/sip.js.inviteuseragentserver.dispose.md @@ -11,5 +11,5 @@ dispose(): void; ``` Returns: -`void` +void diff --git a/docs/core/sip.js.inviteuseragentserver.md b/docs/core/sip.js.inviteuseragentserver.md index a72f637e2..3112bb587 100644 --- a/docs/core/sip.js.inviteuseragentserver.md +++ b/docs/core/sip.js.inviteuseragentserver.md @@ -11,6 +11,9 @@ INVITE UAS. ```typescript export declare class InviteUserAgentServer extends UserAgentServer implements IncomingInviteRequest ``` +Extends: [UserAgentServer](./sip.js.useragentserver.md) + +Implements: [IncomingInviteRequest](./sip.js.incominginviterequest.md) ## Remarks @@ -26,7 +29,7 @@ export declare class InviteUserAgentServer extends UserAgentServer implements In | Property | Modifiers | Type | Description | | --- | --- | --- | --- | -| [core](./sip.js.inviteuseragentserver.core.md) | | UserAgentCore | | +| [core](./sip.js.inviteuseragentserver.core.md) | | [UserAgentCore](./sip.js.useragentcore.md) | | ## Methods @@ -34,7 +37,7 @@ export declare class InviteUserAgentServer extends UserAgentServer implements In | --- | --- | --- | | [accept(options)](./sip.js.inviteuseragentserver.accept.md) | | 13.3.1.4 The INVITE is Accepted The UAS core generates a 2xx response. This response establishes a dialog, and therefore follows the procedures of Section 12.1.1 in addition to those of Section 8.2.6. https://tools.ietf.org/html/rfc3261\#section-13.3.1.4 | | [dispose()](./sip.js.inviteuseragentserver.dispose.md) | | | -| [progress(options)](./sip.js.inviteuseragentserver.progress.md) | | 13.3.1.1 Progress If the UAS is not able to answer the invitation immediately, it can choose to indicate some kind of progress to the UAC (for example, an indication that a phone is ringing). This is accomplished with a provisional response between 101 and 199. These provisional responses establish early dialogs and therefore follow the procedures of Section 12.1.1 in addition to those of Section 8.2.6. A UAS MAY send as many provisional responses as it likes. Each of these MUST indicate the same dialog ID. However, these will not be delivered reliably.If the UAS desires an extended period of time to answer the INVITE, it will need to ask for an "extension" in order to prevent proxies from canceling the transaction. A proxy has the option of canceling a transaction when there is a gap of 3 minutes between responses in a transaction. To prevent cancellation, the UAS MUST send a non-100 provisional response at every minute, to handle the possibility of lost provisional responses. https://tools.ietf.org/html/rfc3261\#section-13.3.1.1 | +| [progress(options)](./sip.js.inviteuseragentserver.progress.md) | |

13.3.1.1 Progress If the UAS is not able to answer the invitation immediately, it can choose to indicate some kind of progress to the UAC (for example, an indication that a phone is ringing). This is accomplished with a provisional response between 101 and 199. These provisional responses establish early dialogs and therefore follow the procedures of Section 12.1.1 in addition to those of Section 8.2.6. A UAS MAY send as many provisional responses as it likes. Each of these MUST indicate the same dialog ID. However, these will not be delivered reliably.

If the UAS desires an extended period of time to answer the INVITE, it will need to ask for an "extension" in order to prevent proxies from canceling the transaction. A proxy has the option of canceling a transaction when there is a gap of 3 minutes between responses in a transaction. To prevent cancellation, the UAS MUST send a non-100 provisional response at every minute, to handle the possibility of lost provisional responses. https://tools.ietf.org/html/rfc3261\#section-13.3.1.1

| | [redirect(contacts, options)](./sip.js.inviteuseragentserver.redirect.md) | | 13.3.1.2 The INVITE is Redirected If the UAS decides to redirect the call, a 3xx response is sent. A 300 (Multiple Choices), 301 (Moved Permanently) or 302 (Moved Temporarily) response SHOULD contain a Contact header field containing one or more URIs of new addresses to be tried. The response is passed to the INVITE server transaction, which will deal with its retransmissions. https://tools.ietf.org/html/rfc3261\#section-13.3.1.2 | | [reject(options)](./sip.js.inviteuseragentserver.reject.md) | | 13.3.1.3 The INVITE is Rejected A common scenario occurs when the callee is currently not willing or able to take additional calls at this end system. A 486 (Busy Here) SHOULD be returned in such a scenario. https://tools.ietf.org/html/rfc3261\#section-13.3.1.3 | diff --git a/docs/core/sip.js.inviteuseragentserver.progress.md b/docs/core/sip.js.inviteuseragentserver.progress.md index 4df203b92..2666c4d57 100644 --- a/docs/core/sip.js.inviteuseragentserver.progress.md +++ b/docs/core/sip.js.inviteuseragentserver.progress.md @@ -18,9 +18,9 @@ progress(options?: ResponseOptions): OutgoingResponseWithSession; | Parameter | Type | Description | | --- | --- | --- | -| options | ResponseOptions | Progress options bucket. | +| options | [ResponseOptions](./sip.js.responseoptions.md) | Progress options bucket. | Returns: -`OutgoingResponseWithSession` +[OutgoingResponseWithSession](./sip.js.outgoingresponsewithsession.md) diff --git a/docs/core/sip.js.inviteuseragentserver.redirect.md b/docs/core/sip.js.inviteuseragentserver.redirect.md index df669fce3..dfbb504c6 100644 --- a/docs/core/sip.js.inviteuseragentserver.redirect.md +++ b/docs/core/sip.js.inviteuseragentserver.redirect.md @@ -16,10 +16,10 @@ redirect(contacts: Array, options?: ResponseOptions): OutgoingResponse; | Parameter | Type | Description | | --- | --- | --- | -| contacts | Array<URI> | Contacts to redirect to. | -| options | ResponseOptions | Redirect options bucket. | +| contacts | Array<[URI](./sip.js.uri.md)> | Contacts to redirect to. | +| options | [ResponseOptions](./sip.js.responseoptions.md) | Redirect options bucket. | Returns: -`OutgoingResponse` +[OutgoingResponse](./sip.js.outgoingresponse.md) diff --git a/docs/core/sip.js.inviteuseragentserver.reject.md b/docs/core/sip.js.inviteuseragentserver.reject.md index ac3ca062d..13de743ee 100644 --- a/docs/core/sip.js.inviteuseragentserver.reject.md +++ b/docs/core/sip.js.inviteuseragentserver.reject.md @@ -16,9 +16,9 @@ reject(options?: ResponseOptions): OutgoingResponse; | Parameter | Type | Description | | --- | --- | --- | -| options | ResponseOptions | Reject options bucket. | +| options | [ResponseOptions](./sip.js.responseoptions.md) | Reject options bucket. | Returns: -`OutgoingResponse` +[OutgoingResponse](./sip.js.outgoingresponse.md) diff --git a/docs/core/sip.js.logger._constructor_.md b/docs/core/sip.js.logger._constructor_.md index a349eefa7..0cda6f34e 100644 --- a/docs/core/sip.js.logger._constructor_.md +++ b/docs/core/sip.js.logger._constructor_.md @@ -16,7 +16,7 @@ constructor(logger: LoggerFactory, category: string, label?: string); | Parameter | Type | Description | | --- | --- | --- | -| logger | LoggerFactory | | -| category | string | | -| label | string | | +| logger | [LoggerFactory](./sip.js.loggerfactory.md) | | +| category | string | | +| label | string | | diff --git a/docs/core/sip.js.logger.debug.md b/docs/core/sip.js.logger.debug.md index b34454eb8..2ba21fb11 100644 --- a/docs/core/sip.js.logger.debug.md +++ b/docs/core/sip.js.logger.debug.md @@ -14,9 +14,9 @@ debug(content: string): void; | Parameter | Type | Description | | --- | --- | --- | -| content | string | | +| content | string | | Returns: -`void` +void diff --git a/docs/core/sip.js.logger.error.md b/docs/core/sip.js.logger.error.md index f1a847832..70a72b0a7 100644 --- a/docs/core/sip.js.logger.error.md +++ b/docs/core/sip.js.logger.error.md @@ -14,9 +14,9 @@ error(content: string): void; | Parameter | Type | Description | | --- | --- | --- | -| content | string | | +| content | string | | Returns: -`void` +void diff --git a/docs/core/sip.js.logger.log.md b/docs/core/sip.js.logger.log.md index 0308e63c0..72cca490a 100644 --- a/docs/core/sip.js.logger.log.md +++ b/docs/core/sip.js.logger.log.md @@ -14,9 +14,9 @@ log(content: string): void; | Parameter | Type | Description | | --- | --- | --- | -| content | string | | +| content | string | | Returns: -`void` +void diff --git a/docs/core/sip.js.logger.md b/docs/core/sip.js.logger.md index 809389b59..c086e2194 100644 --- a/docs/core/sip.js.logger.md +++ b/docs/core/sip.js.logger.md @@ -22,7 +22,7 @@ export declare class Logger | Property | Modifiers | Type | Description | | --- | --- | --- | --- | -| [level](./sip.js.logger.level.md) | | Levels | | +| [level](./sip.js.logger.level.md) | | [Levels](./sip.js.levels.md) | | ## Methods diff --git a/docs/core/sip.js.logger.warn.md b/docs/core/sip.js.logger.warn.md index 53011420a..12abc7e13 100644 --- a/docs/core/sip.js.logger.warn.md +++ b/docs/core/sip.js.logger.warn.md @@ -14,9 +14,9 @@ warn(content: string): void; | Parameter | Type | Description | | --- | --- | --- | -| content | string | | +| content | string | | Returns: -`void` +void diff --git a/docs/core/sip.js.loggerfactory.genericlog.md b/docs/core/sip.js.loggerfactory.genericlog.md index 064d0f9dd..0b8b19e37 100644 --- a/docs/core/sip.js.loggerfactory.genericlog.md +++ b/docs/core/sip.js.loggerfactory.genericlog.md @@ -14,12 +14,12 @@ genericLog(levelToLog: Levels, category: string, label: string | undefined, cont | Parameter | Type | Description | | --- | --- | --- | -| levelToLog | Levels | | -| category | string | | -| label | string | undefined | | -| content | any | | +| levelToLog | [Levels](./sip.js.levels.md) | | +| category | string | | +| label | string \| undefined | | +| content | any | | Returns: -`void` +void diff --git a/docs/core/sip.js.loggerfactory.getlogger.md b/docs/core/sip.js.loggerfactory.getlogger.md index e4c3bf8b5..2493e4391 100644 --- a/docs/core/sip.js.loggerfactory.getlogger.md +++ b/docs/core/sip.js.loggerfactory.getlogger.md @@ -14,10 +14,10 @@ getLogger(category: string, label?: string): Logger; | Parameter | Type | Description | | --- | --- | --- | -| category | string | | -| label | string | | +| category | string | | +| label | string | | Returns: -`Logger` +[Logger](./sip.js.logger.md) diff --git a/docs/core/sip.js.loggerfactory.md b/docs/core/sip.js.loggerfactory.md index 9c550f4b6..cbd2ccffa 100644 --- a/docs/core/sip.js.loggerfactory.md +++ b/docs/core/sip.js.loggerfactory.md @@ -22,9 +22,9 @@ export declare class LoggerFactory | Property | Modifiers | Type | Description | | --- | --- | --- | --- | -| [builtinEnabled](./sip.js.loggerfactory.builtinenabled.md) | | boolean | | -| [connector](./sip.js.loggerfactory.connector.md) | | ((level: string, category: string, label: string | undefined, content: any) => void) | undefined | | -| [level](./sip.js.loggerfactory.level.md) | | Levels | | +| [builtinEnabled](./sip.js.loggerfactory.builtinenabled.md) | | boolean | | +| [connector](./sip.js.loggerfactory.connector.md) | | ((level: string, category: string, label: string \| undefined, content: any) => void) \| undefined | | +| [level](./sip.js.loggerfactory.level.md) | | [Levels](./sip.js.levels.md) | | ## Methods diff --git a/docs/core/sip.js.messageuseragentclient._constructor_.md b/docs/core/sip.js.messageuseragentclient._constructor_.md index d8f6a80ee..ca9380c20 100644 --- a/docs/core/sip.js.messageuseragentclient._constructor_.md +++ b/docs/core/sip.js.messageuseragentclient._constructor_.md @@ -16,7 +16,7 @@ constructor(core: UserAgentCore, message: OutgoingRequestMessage, delegate?: Out | Parameter | Type | Description | | --- | --- | --- | -| core | UserAgentCore | | -| message | OutgoingRequestMessage | | -| delegate | OutgoingRequestDelegate | | +| core | [UserAgentCore](./sip.js.useragentcore.md) | | +| message | [OutgoingRequestMessage](./sip.js.outgoingrequestmessage.md) | | +| delegate | [OutgoingRequestDelegate](./sip.js.outgoingrequestdelegate.md) | | diff --git a/docs/core/sip.js.messageuseragentclient.md b/docs/core/sip.js.messageuseragentclient.md index 753f93c20..0b2f5ef18 100644 --- a/docs/core/sip.js.messageuseragentclient.md +++ b/docs/core/sip.js.messageuseragentclient.md @@ -11,6 +11,9 @@ MESSAGE UAC. ```typescript export declare class MessageUserAgentClient extends UserAgentClient implements OutgoingMessageRequest ``` +Extends: [UserAgentClient](./sip.js.useragentclient.md) + +Implements: [OutgoingMessageRequest](./sip.js.outgoingmessagerequest.md) ## Constructors diff --git a/docs/core/sip.js.messageuseragentserver._constructor_.md b/docs/core/sip.js.messageuseragentserver._constructor_.md index a0a8d5386..cb2bd2619 100644 --- a/docs/core/sip.js.messageuseragentserver._constructor_.md +++ b/docs/core/sip.js.messageuseragentserver._constructor_.md @@ -16,7 +16,7 @@ constructor(core: UserAgentCore, message: IncomingRequestMessage, delegate?: Inc | Parameter | Type | Description | | --- | --- | --- | -| core | UserAgentCore | | -| message | IncomingRequestMessage | | -| delegate | IncomingRequestDelegate | | +| core | [UserAgentCore](./sip.js.useragentcore.md) | | +| message | [IncomingRequestMessage](./sip.js.incomingrequestmessage.md) | | +| delegate | [IncomingRequestDelegate](./sip.js.incomingrequestdelegate.md) | | diff --git a/docs/core/sip.js.messageuseragentserver.md b/docs/core/sip.js.messageuseragentserver.md index 2b12879aa..4d1ec55b8 100644 --- a/docs/core/sip.js.messageuseragentserver.md +++ b/docs/core/sip.js.messageuseragentserver.md @@ -11,6 +11,9 @@ MESSAGE UAS. ```typescript export declare class MessageUserAgentServer extends UserAgentServer implements IncomingMessageRequest ``` +Extends: [UserAgentServer](./sip.js.useragentserver.md) + +Implements: [IncomingMessageRequest](./sip.js.incomingmessagerequest.md) ## Constructors diff --git a/docs/core/sip.js.nameaddrheader._constructor_.md b/docs/core/sip.js.nameaddrheader._constructor_.md index 260dc9896..e1a4bfd8b 100644 --- a/docs/core/sip.js.nameaddrheader._constructor_.md +++ b/docs/core/sip.js.nameaddrheader._constructor_.md @@ -18,7 +18,7 @@ constructor(uri: URI, displayName: string, parameters: { | Parameter | Type | Description | | --- | --- | --- | -| uri | URI | | -| displayName | string | | -| parameters | {
[name: string]: string;
} | | +| uri | [URI](./sip.js.uri.md) | | +| displayName | string | | +| parameters | { \[name: string\]: string; } | | diff --git a/docs/core/sip.js.nameaddrheader.clone.md b/docs/core/sip.js.nameaddrheader.clone.md index 5d77898b8..9e2ace527 100644 --- a/docs/core/sip.js.nameaddrheader.clone.md +++ b/docs/core/sip.js.nameaddrheader.clone.md @@ -11,5 +11,5 @@ clone(): NameAddrHeader; ``` Returns: -`NameAddrHeader` +[NameAddrHeader](./sip.js.nameaddrheader.md) diff --git a/docs/core/sip.js.nameaddrheader.md b/docs/core/sip.js.nameaddrheader.md index 8044bddee..179e3e8f2 100644 --- a/docs/core/sip.js.nameaddrheader.md +++ b/docs/core/sip.js.nameaddrheader.md @@ -11,6 +11,7 @@ Name Address SIP header. ```typescript export declare class NameAddrHeader extends Parameters ``` +Extends: Parameters ## Constructors @@ -22,9 +23,9 @@ export declare class NameAddrHeader extends Parameters | Property | Modifiers | Type | Description | | --- | --- | --- | --- | -| [displayName](./sip.js.nameaddrheader.displayname.md) | | string | | -| [friendlyName](./sip.js.nameaddrheader.friendlyname.md) | | string | | -| [uri](./sip.js.nameaddrheader.uri.md) | | URI | | +| [displayName](./sip.js.nameaddrheader.displayname.md) | | string | | +| [friendlyName](./sip.js.nameaddrheader.friendlyname.md) | | string | | +| [uri](./sip.js.nameaddrheader.uri.md) | | [URI](./sip.js.uri.md) | | ## Methods diff --git a/docs/core/sip.js.nameaddrheader.tostring.md b/docs/core/sip.js.nameaddrheader.tostring.md index 0ac6b9a15..d17838c55 100644 --- a/docs/core/sip.js.nameaddrheader.tostring.md +++ b/docs/core/sip.js.nameaddrheader.tostring.md @@ -11,5 +11,5 @@ toString(): string; ``` Returns: -`string` +string diff --git a/docs/core/sip.js.noninviteclienttransaction._constructor_.md b/docs/core/sip.js.noninviteclienttransaction._constructor_.md index 9f42e2418..68963b84d 100644 --- a/docs/core/sip.js.noninviteclienttransaction._constructor_.md +++ b/docs/core/sip.js.noninviteclienttransaction._constructor_.md @@ -16,7 +16,7 @@ constructor(request: OutgoingRequestMessage, transport: Transport, user: ClientT | Parameter | Type | Description | | --- | --- | --- | -| request | OutgoingRequestMessage | The outgoing Non-INVITE request. | -| transport | Transport | The transport. | -| user | ClientTransactionUser | The transaction user. | +| request | [OutgoingRequestMessage](./sip.js.outgoingrequestmessage.md) | The outgoing Non-INVITE request. | +| transport | [Transport](./sip.js.transport.md) | The transport. | +| user | [ClientTransactionUser](./sip.js.clienttransactionuser.md) | The transaction user. | diff --git a/docs/core/sip.js.noninviteclienttransaction.dispose.md b/docs/core/sip.js.noninviteclienttransaction.dispose.md index 8f2820bf9..a73267ee7 100644 --- a/docs/core/sip.js.noninviteclienttransaction.dispose.md +++ b/docs/core/sip.js.noninviteclienttransaction.dispose.md @@ -13,5 +13,5 @@ dispose(): void; ``` Returns: -`void` +void diff --git a/docs/core/sip.js.noninviteclienttransaction.md b/docs/core/sip.js.noninviteclienttransaction.md index 99da36f7f..8c276d3d7 100644 --- a/docs/core/sip.js.noninviteclienttransaction.md +++ b/docs/core/sip.js.noninviteclienttransaction.md @@ -11,6 +11,7 @@ Non-INVITE Client Transaction. ```typescript export declare class NonInviteClientTransaction extends ClientTransaction ``` +Extends: [ClientTransaction](./sip.js.clienttransaction.md) ## Remarks @@ -26,7 +27,7 @@ Non-INVITE transactions do not make use of ACK. They are simple request-response | Property | Modifiers | Type | Description | | --- | --- | --- | --- | -| [kind](./sip.js.noninviteclienttransaction.kind.md) | | string | Transaction kind. Deprecated. | +| [kind](./sip.js.noninviteclienttransaction.kind.md) | | string | Transaction kind. Deprecated. | ## Methods diff --git a/docs/core/sip.js.noninviteclienttransaction.ontransporterror.md b/docs/core/sip.js.noninviteclienttransaction.ontransporterror.md index 5c465f983..250ac7a1d 100644 --- a/docs/core/sip.js.noninviteclienttransaction.ontransporterror.md +++ b/docs/core/sip.js.noninviteclienttransaction.ontransporterror.md @@ -16,9 +16,9 @@ protected onTransportError(error: Error): void; | Parameter | Type | Description | | --- | --- | --- | -| error | Error | Transport error | +| error | Error | Transport error | Returns: -`void` +void diff --git a/docs/core/sip.js.noninviteclienttransaction.receiveresponse.md b/docs/core/sip.js.noninviteclienttransaction.receiveresponse.md index b69c874d4..9e5983fc0 100644 --- a/docs/core/sip.js.noninviteclienttransaction.receiveresponse.md +++ b/docs/core/sip.js.noninviteclienttransaction.receiveresponse.md @@ -16,9 +16,9 @@ receiveResponse(response: IncomingResponseMessage): void; | Parameter | Type | Description | | --- | --- | --- | -| response | IncomingResponseMessage | The incoming response. | +| response | [IncomingResponseMessage](./sip.js.incomingresponsemessage.md) | The incoming response. | Returns: -`void` +void diff --git a/docs/core/sip.js.noninviteclienttransaction.typetostring.md b/docs/core/sip.js.noninviteclienttransaction.typetostring.md index aff9a73dd..d15a52753 100644 --- a/docs/core/sip.js.noninviteclienttransaction.typetostring.md +++ b/docs/core/sip.js.noninviteclienttransaction.typetostring.md @@ -13,5 +13,5 @@ protected typeToString(): string; ``` Returns: -`string` +string diff --git a/docs/core/sip.js.noninviteservertransaction._constructor_.md b/docs/core/sip.js.noninviteservertransaction._constructor_.md index 56202ff66..7c6e9b30c 100644 --- a/docs/core/sip.js.noninviteservertransaction._constructor_.md +++ b/docs/core/sip.js.noninviteservertransaction._constructor_.md @@ -16,7 +16,7 @@ constructor(request: IncomingRequestMessage, transport: Transport, user: ServerT | Parameter | Type | Description | | --- | --- | --- | -| request | IncomingRequestMessage | Incoming Non-INVITE request from the transport. | -| transport | Transport | The transport. | -| user | ServerTransactionUser | The transaction user. | +| request | [IncomingRequestMessage](./sip.js.incomingrequestmessage.md) | Incoming Non-INVITE request from the transport. | +| transport | [Transport](./sip.js.transport.md) | The transport. | +| user | [ServerTransactionUser](./sip.js.servertransactionuser.md) | The transaction user. | diff --git a/docs/core/sip.js.noninviteservertransaction.dispose.md b/docs/core/sip.js.noninviteservertransaction.dispose.md index 256ae2de0..b525c5ff5 100644 --- a/docs/core/sip.js.noninviteservertransaction.dispose.md +++ b/docs/core/sip.js.noninviteservertransaction.dispose.md @@ -13,5 +13,5 @@ dispose(): void; ``` Returns: -`void` +void diff --git a/docs/core/sip.js.noninviteservertransaction.md b/docs/core/sip.js.noninviteservertransaction.md index dae52260a..0fbc62bb8 100644 --- a/docs/core/sip.js.noninviteservertransaction.md +++ b/docs/core/sip.js.noninviteservertransaction.md @@ -11,6 +11,7 @@ Non-INVITE Server Transaction. ```typescript export declare class NonInviteServerTransaction extends ServerTransaction ``` +Extends: [ServerTransaction](./sip.js.servertransaction.md) ## Remarks @@ -26,7 +27,7 @@ https://tools.ietf.org/html/rfc3261\#section-17.2.2 | Property | Modifiers | Type | Description | | --- | --- | --- | --- | -| [kind](./sip.js.noninviteservertransaction.kind.md) | | string | Transaction kind. Deprecated. | +| [kind](./sip.js.noninviteservertransaction.kind.md) | | string | Transaction kind. Deprecated. | ## Methods diff --git a/docs/core/sip.js.noninviteservertransaction.ontransporterror.md b/docs/core/sip.js.noninviteservertransaction.ontransporterror.md index 6b71f9a44..9ca543248 100644 --- a/docs/core/sip.js.noninviteservertransaction.ontransporterror.md +++ b/docs/core/sip.js.noninviteservertransaction.ontransporterror.md @@ -16,9 +16,9 @@ protected onTransportError(error: Error): void; | Parameter | Type | Description | | --- | --- | --- | -| error | Error | | +| error | Error | | Returns: -`void` +void diff --git a/docs/core/sip.js.noninviteservertransaction.receiverequest.md b/docs/core/sip.js.noninviteservertransaction.receiverequest.md index 780a2f2fd..4157e78cd 100644 --- a/docs/core/sip.js.noninviteservertransaction.receiverequest.md +++ b/docs/core/sip.js.noninviteservertransaction.receiverequest.md @@ -16,9 +16,9 @@ receiveRequest(request: IncomingRequestMessage): void; | Parameter | Type | Description | | --- | --- | --- | -| request | IncomingRequestMessage | Request matching this transaction. | +| request | [IncomingRequestMessage](./sip.js.incomingrequestmessage.md) | Request matching this transaction. | Returns: -`void` +void diff --git a/docs/core/sip.js.noninviteservertransaction.receiveresponse.md b/docs/core/sip.js.noninviteservertransaction.receiveresponse.md index c1cdd92ce..dfd7fcfbb 100644 --- a/docs/core/sip.js.noninviteservertransaction.receiveresponse.md +++ b/docs/core/sip.js.noninviteservertransaction.receiveresponse.md @@ -16,10 +16,10 @@ receiveResponse(statusCode: number, response: string): void; | Parameter | Type | Description | | --- | --- | --- | -| statusCode | number | Status code of response. 101-199 not allowed per RFC 4320. | -| response | string | Response to send. | +| statusCode | number | Status code of response. 101-199 not allowed per RFC 4320. | +| response | string | Response to send. | Returns: -`void` +void diff --git a/docs/core/sip.js.noninviteservertransaction.typetostring.md b/docs/core/sip.js.noninviteservertransaction.typetostring.md index 32d5b7c90..d34d17cbd 100644 --- a/docs/core/sip.js.noninviteservertransaction.typetostring.md +++ b/docs/core/sip.js.noninviteservertransaction.typetostring.md @@ -13,5 +13,5 @@ protected typeToString(): string; ``` Returns: -`string` +string diff --git a/docs/core/sip.js.notifyuseragentclient._constructor_.md b/docs/core/sip.js.notifyuseragentclient._constructor_.md index 03f785501..ff444de3a 100644 --- a/docs/core/sip.js.notifyuseragentclient._constructor_.md +++ b/docs/core/sip.js.notifyuseragentclient._constructor_.md @@ -16,7 +16,7 @@ constructor(dialog: SessionDialog, delegate?: OutgoingRequestDelegate, options?: | Parameter | Type | Description | | --- | --- | --- | -| dialog | SessionDialog | | -| delegate | OutgoingRequestDelegate | | -| options | RequestOptions | | +| dialog | [SessionDialog](./sip.js.sessiondialog.md) | | +| delegate | [OutgoingRequestDelegate](./sip.js.outgoingrequestdelegate.md) | | +| options | [RequestOptions](./sip.js.requestoptions.md) | | diff --git a/docs/core/sip.js.notifyuseragentclient.md b/docs/core/sip.js.notifyuseragentclient.md index 5a93b969e..4c2598644 100644 --- a/docs/core/sip.js.notifyuseragentclient.md +++ b/docs/core/sip.js.notifyuseragentclient.md @@ -11,6 +11,9 @@ NOTIFY UAS. ```typescript export declare class NotifyUserAgentClient extends UserAgentClient implements OutgoingNotifyRequest ``` +Extends: [UserAgentClient](./sip.js.useragentclient.md) + +Implements: [OutgoingNotifyRequest](./sip.js.outgoingnotifyrequest.md) ## Constructors diff --git a/docs/core/sip.js.notifyuseragentserver._constructor_.md b/docs/core/sip.js.notifyuseragentserver._constructor_.md index 303bddf43..cfb576b85 100644 --- a/docs/core/sip.js.notifyuseragentserver._constructor_.md +++ b/docs/core/sip.js.notifyuseragentserver._constructor_.md @@ -16,7 +16,7 @@ constructor(dialogOrCore: Dialog | UserAgentCore, message: IncomingRequestMessag | Parameter | Type | Description | | --- | --- | --- | -| dialogOrCore | Dialog | UserAgentCore | Dialog for in dialog NOTIFY, UserAgentCore for out of dialog NOTIFY (deprecated). | -| message | IncomingRequestMessage | Incoming NOTIFY request message. | -| delegate | IncomingRequestDelegate | | +| dialogOrCore | [Dialog](./sip.js.dialog.md) \| [UserAgentCore](./sip.js.useragentcore.md) | Dialog for in dialog NOTIFY, UserAgentCore for out of dialog NOTIFY (deprecated). | +| message | [IncomingRequestMessage](./sip.js.incomingrequestmessage.md) | Incoming NOTIFY request message. | +| delegate | [IncomingRequestDelegate](./sip.js.incomingrequestdelegate.md) | | diff --git a/docs/core/sip.js.notifyuseragentserver.md b/docs/core/sip.js.notifyuseragentserver.md index 425fb8496..c91a29a73 100644 --- a/docs/core/sip.js.notifyuseragentserver.md +++ b/docs/core/sip.js.notifyuseragentserver.md @@ -11,6 +11,9 @@ NOTIFY UAS. ```typescript export declare class NotifyUserAgentServer extends UserAgentServer implements IncomingNotifyRequest ``` +Extends: [UserAgentServer](./sip.js.useragentserver.md) + +Implements: [IncomingNotifyRequest](./sip.js.incomingnotifyrequest.md) ## Constructors diff --git a/docs/core/sip.js.outgoingackrequest.md b/docs/core/sip.js.outgoingackrequest.md index a3f60f360..632658b04 100644 --- a/docs/core/sip.js.outgoingackrequest.md +++ b/docs/core/sip.js.outgoingackrequest.md @@ -14,7 +14,7 @@ export interface OutgoingAckRequest ## Properties -| Property | Type | Description | -| --- | --- | --- | -| [message](./sip.js.outgoingackrequest.message.md) | OutgoingRequestMessage | The outgoing message. | +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [message](./sip.js.outgoingackrequest.message.md) | | [OutgoingRequestMessage](./sip.js.outgoingrequestmessage.md) | The outgoing message. | diff --git a/docs/core/sip.js.outgoingbyerequest.md b/docs/core/sip.js.outgoingbyerequest.md index 31ccc5d04..262f986cc 100644 --- a/docs/core/sip.js.outgoingbyerequest.md +++ b/docs/core/sip.js.outgoingbyerequest.md @@ -11,3 +11,5 @@ Outgoing BYE request. ```typescript export interface OutgoingByeRequest extends OutgoingRequest ``` +Extends: [OutgoingRequest](./sip.js.outgoingrequest.md) + diff --git a/docs/core/sip.js.outgoingcancelrequest.md b/docs/core/sip.js.outgoingcancelrequest.md index 9a42011f9..ad6e03e9e 100644 --- a/docs/core/sip.js.outgoingcancelrequest.md +++ b/docs/core/sip.js.outgoingcancelrequest.md @@ -11,3 +11,5 @@ Outgoing CANCEL request. ```typescript export interface OutgoingCancelRequest extends OutgoingRequest ``` +Extends: [OutgoingRequest](./sip.js.outgoingrequest.md) + diff --git a/docs/core/sip.js.outgoinginforequest.md b/docs/core/sip.js.outgoinginforequest.md index d673129aa..dfe5b8064 100644 --- a/docs/core/sip.js.outgoinginforequest.md +++ b/docs/core/sip.js.outgoinginforequest.md @@ -11,3 +11,5 @@ Outgoing INFO request. ```typescript export interface OutgoingInfoRequest extends OutgoingRequest ``` +Extends: [OutgoingRequest](./sip.js.outgoingrequest.md) + diff --git a/docs/core/sip.js.outgoinginviterequest.md b/docs/core/sip.js.outgoinginviterequest.md index cfb040a12..945b5d027 100644 --- a/docs/core/sip.js.outgoinginviterequest.md +++ b/docs/core/sip.js.outgoinginviterequest.md @@ -11,10 +11,11 @@ Outgoing INVITE request. ```typescript export interface OutgoingInviteRequest extends OutgoingRequest ``` +Extends: [OutgoingRequest](./sip.js.outgoingrequest.md) ## Properties -| Property | Type | Description | -| --- | --- | --- | -| [delegate](./sip.js.outgoinginviterequest.delegate.md) | OutgoingInviteRequestDelegate | Delegate providing custom handling of this outgoing INVITE request. | +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [delegate](./sip.js.outgoinginviterequest.delegate.md) | | [OutgoingInviteRequestDelegate](./sip.js.outgoinginviterequestdelegate.md) | Delegate providing custom handling of this outgoing INVITE request. | diff --git a/docs/core/sip.js.outgoinginviterequestdelegate.md b/docs/core/sip.js.outgoinginviterequestdelegate.md index a84d73252..c59e80ea3 100644 --- a/docs/core/sip.js.outgoinginviterequestdelegate.md +++ b/docs/core/sip.js.outgoinginviterequestdelegate.md @@ -11,6 +11,7 @@ Delegate providing custom handling of outgoing INVITE requests. ```typescript export interface OutgoingInviteRequestDelegate extends OutgoingRequestDelegate ``` +Extends: [OutgoingRequestDelegate](./sip.js.outgoingrequestdelegate.md) ## Methods diff --git a/docs/core/sip.js.outgoinginviterequestdelegate.onaccept.md b/docs/core/sip.js.outgoinginviterequestdelegate.onaccept.md index bf71ee60d..afd4bd6f1 100644 --- a/docs/core/sip.js.outgoinginviterequestdelegate.onaccept.md +++ b/docs/core/sip.js.outgoinginviterequestdelegate.onaccept.md @@ -16,9 +16,9 @@ onAccept?(response: AckableIncomingResponseWithSession): void; | Parameter | Type | Description | | --- | --- | --- | -| response | AckableIncomingResponseWithSession | Incoming response (including a confirmed Session). | +| response | [AckableIncomingResponseWithSession](./sip.js.ackableincomingresponsewithsession.md) | Incoming response (including a confirmed Session). | Returns: -`void` +void diff --git a/docs/core/sip.js.outgoinginviterequestdelegate.onprogress.md b/docs/core/sip.js.outgoinginviterequestdelegate.onprogress.md index 2fe6f8aa9..4f327131d 100644 --- a/docs/core/sip.js.outgoinginviterequestdelegate.onprogress.md +++ b/docs/core/sip.js.outgoinginviterequestdelegate.onprogress.md @@ -16,9 +16,9 @@ onProgress?(response: PrackableIncomingResponseWithSession): void; | Parameter | Type | Description | | --- | --- | --- | -| response | PrackableIncomingResponseWithSession | Incoming response (including an early Session). | +| response | [PrackableIncomingResponseWithSession](./sip.js.prackableincomingresponsewithsession.md) | Incoming response (including an early Session). | Returns: -`void` +void diff --git a/docs/core/sip.js.outgoingmessagerequest.md b/docs/core/sip.js.outgoingmessagerequest.md index 61c235a8d..209231300 100644 --- a/docs/core/sip.js.outgoingmessagerequest.md +++ b/docs/core/sip.js.outgoingmessagerequest.md @@ -11,3 +11,5 @@ Outgoing MESSAGE request. ```typescript export interface OutgoingMessageRequest extends OutgoingRequest ``` +Extends: [OutgoingRequest](./sip.js.outgoingrequest.md) + diff --git a/docs/core/sip.js.outgoingnotifyrequest.md b/docs/core/sip.js.outgoingnotifyrequest.md index f4c05cdef..686657779 100644 --- a/docs/core/sip.js.outgoingnotifyrequest.md +++ b/docs/core/sip.js.outgoingnotifyrequest.md @@ -11,3 +11,5 @@ Outgoing NOTIFY request. ```typescript export interface OutgoingNotifyRequest extends OutgoingRequest ``` +Extends: [OutgoingRequest](./sip.js.outgoingrequest.md) + diff --git a/docs/core/sip.js.outgoingprackrequest.md b/docs/core/sip.js.outgoingprackrequest.md index 5665d82dc..5336623c7 100644 --- a/docs/core/sip.js.outgoingprackrequest.md +++ b/docs/core/sip.js.outgoingprackrequest.md @@ -11,3 +11,5 @@ Outgoing PRACK request. ```typescript export interface OutgoingPrackRequest extends OutgoingRequest ``` +Extends: [OutgoingRequest](./sip.js.outgoingrequest.md) + diff --git a/docs/core/sip.js.outgoingpublishrequest.md b/docs/core/sip.js.outgoingpublishrequest.md index cfde78000..e40ca1773 100644 --- a/docs/core/sip.js.outgoingpublishrequest.md +++ b/docs/core/sip.js.outgoingpublishrequest.md @@ -11,3 +11,5 @@ Outgoing PUBLISH request. ```typescript export interface OutgoingPublishRequest extends OutgoingRequest ``` +Extends: [OutgoingRequest](./sip.js.outgoingrequest.md) + diff --git a/docs/core/sip.js.outgoingreferrequest.md b/docs/core/sip.js.outgoingreferrequest.md index 7ccc609bf..d4b1ea023 100644 --- a/docs/core/sip.js.outgoingreferrequest.md +++ b/docs/core/sip.js.outgoingreferrequest.md @@ -11,3 +11,5 @@ Outgoing REFER request. ```typescript export interface OutgoingReferRequest extends OutgoingRequest ``` +Extends: [OutgoingRequest](./sip.js.outgoingrequest.md) + diff --git a/docs/core/sip.js.outgoingregisterrequest.md b/docs/core/sip.js.outgoingregisterrequest.md index d1e95af37..81f728573 100644 --- a/docs/core/sip.js.outgoingregisterrequest.md +++ b/docs/core/sip.js.outgoingregisterrequest.md @@ -11,3 +11,5 @@ Outgoing REGISTER request. ```typescript export interface OutgoingRegisterRequest extends OutgoingRequest ``` +Extends: [OutgoingRequest](./sip.js.outgoingrequest.md) + diff --git a/docs/core/sip.js.outgoingrequest.cancel.md b/docs/core/sip.js.outgoingrequest.cancel.md index 2ea797d1d..b0ddce1b0 100644 --- a/docs/core/sip.js.outgoingrequest.cancel.md +++ b/docs/core/sip.js.outgoingrequest.cancel.md @@ -16,10 +16,10 @@ cancel(reason?: string, options?: RequestOptions): void; | Parameter | Type | Description | | --- | --- | --- | -| reason | string | Reason for canceling request. | -| options | RequestOptions | Request options bucket. | +| reason | string | Reason for canceling request. | +| options | [RequestOptions](./sip.js.requestoptions.md) | Request options bucket. | Returns: -`void` +void diff --git a/docs/core/sip.js.outgoingrequest.dispose.md b/docs/core/sip.js.outgoingrequest.dispose.md index 282c9d5e6..f98843fd7 100644 --- a/docs/core/sip.js.outgoingrequest.dispose.md +++ b/docs/core/sip.js.outgoingrequest.dispose.md @@ -13,5 +13,5 @@ dispose(): void; ``` Returns: -`void` +void diff --git a/docs/core/sip.js.outgoingrequest.md b/docs/core/sip.js.outgoingrequest.md index 9d66eb9a7..8c77e7ece 100644 --- a/docs/core/sip.js.outgoingrequest.md +++ b/docs/core/sip.js.outgoingrequest.md @@ -18,10 +18,10 @@ For the purpose of invoking a particular operation. https://tools.ietf.org/html/ ## Properties -| Property | Type | Description | -| --- | --- | --- | -| [delegate](./sip.js.outgoingrequest.delegate.md) | OutgoingRequestDelegate | Delegate providing custom handling of this outgoing request. | -| [message](./sip.js.outgoingrequest.message.md) | OutgoingRequestMessage | The outgoing message. | +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [delegate](./sip.js.outgoingrequest.delegate.md) | | [OutgoingRequestDelegate](./sip.js.outgoingrequestdelegate.md) | Delegate providing custom handling of this outgoing request. | +| [message](./sip.js.outgoingrequest.message.md) | | [OutgoingRequestMessage](./sip.js.outgoingrequestmessage.md) | The outgoing message. | ## Methods diff --git a/docs/core/sip.js.outgoingrequestdelegate.onaccept.md b/docs/core/sip.js.outgoingrequestdelegate.onaccept.md index fdbab3e7d..6bb71eec6 100644 --- a/docs/core/sip.js.outgoingrequestdelegate.onaccept.md +++ b/docs/core/sip.js.outgoingrequestdelegate.onaccept.md @@ -16,9 +16,9 @@ onAccept?(response: IncomingResponse): void; | Parameter | Type | Description | | --- | --- | --- | -| response | IncomingResponse | Incoming response. | +| response | [IncomingResponse](./sip.js.incomingresponse.md) | Incoming response. | Returns: -`void` +void diff --git a/docs/core/sip.js.outgoingrequestdelegate.onprogress.md b/docs/core/sip.js.outgoingrequestdelegate.onprogress.md index 8c056e74c..924029605 100644 --- a/docs/core/sip.js.outgoingrequestdelegate.onprogress.md +++ b/docs/core/sip.js.outgoingrequestdelegate.onprogress.md @@ -16,9 +16,9 @@ onProgress?(response: IncomingResponse): void; | Parameter | Type | Description | | --- | --- | --- | -| response | IncomingResponse | Incoming response. | +| response | [IncomingResponse](./sip.js.incomingresponse.md) | Incoming response. | Returns: -`void` +void diff --git a/docs/core/sip.js.outgoingrequestdelegate.onredirect.md b/docs/core/sip.js.outgoingrequestdelegate.onredirect.md index 85dff892a..f77e315aa 100644 --- a/docs/core/sip.js.outgoingrequestdelegate.onredirect.md +++ b/docs/core/sip.js.outgoingrequestdelegate.onredirect.md @@ -16,9 +16,9 @@ onRedirect?(response: IncomingResponse): void; | Parameter | Type | Description | | --- | --- | --- | -| response | IncomingResponse | Incoming response. | +| response | [IncomingResponse](./sip.js.incomingresponse.md) | Incoming response. | Returns: -`void` +void diff --git a/docs/core/sip.js.outgoingrequestdelegate.onreject.md b/docs/core/sip.js.outgoingrequestdelegate.onreject.md index dfbddb271..130b14875 100644 --- a/docs/core/sip.js.outgoingrequestdelegate.onreject.md +++ b/docs/core/sip.js.outgoingrequestdelegate.onreject.md @@ -16,9 +16,9 @@ onReject?(response: IncomingResponse): void; | Parameter | Type | Description | | --- | --- | --- | -| response | IncomingResponse | Incoming response. | +| response | [IncomingResponse](./sip.js.incomingresponse.md) | Incoming response. | Returns: -`void` +void diff --git a/docs/core/sip.js.outgoingrequestdelegate.ontrying.md b/docs/core/sip.js.outgoingrequestdelegate.ontrying.md index dd7842b76..1b1410c6f 100644 --- a/docs/core/sip.js.outgoingrequestdelegate.ontrying.md +++ b/docs/core/sip.js.outgoingrequestdelegate.ontrying.md @@ -16,9 +16,9 @@ onTrying?(response: IncomingResponse): void; | Parameter | Type | Description | | --- | --- | --- | -| response | IncomingResponse | Incoming response. | +| response | [IncomingResponse](./sip.js.incomingresponse.md) | Incoming response. | Returns: -`void` +void diff --git a/docs/core/sip.js.outgoingrequestmessage._constructor_.md b/docs/core/sip.js.outgoingrequestmessage._constructor_.md index 70a385070..f4ceaf3bf 100644 --- a/docs/core/sip.js.outgoingrequestmessage._constructor_.md +++ b/docs/core/sip.js.outgoingrequestmessage._constructor_.md @@ -16,11 +16,11 @@ constructor(method: string, ruri: URI, fromURI: URI, toURI: URI, options?: Outgo | Parameter | Type | Description | | --- | --- | --- | -| method | string | | -| ruri | URI | | -| fromURI | URI | | -| toURI | URI | | -| options | OutgoingRequestMessageOptions | | -| extraHeaders | Array<string> | | -| body | Body | | +| method | string | | +| ruri | [URI](./sip.js.uri.md) | | +| fromURI | [URI](./sip.js.uri.md) | | +| toURI | [URI](./sip.js.uri.md) | | +| options | [OutgoingRequestMessageOptions](./sip.js.outgoingrequestmessageoptions.md) | | +| extraHeaders | Array<string> | | +| body | [Body](./sip.js.body.md) | | diff --git a/docs/core/sip.js.outgoingrequestmessage.getheader.md b/docs/core/sip.js.outgoingrequestmessage.getheader.md index 8c1b95b64..97f6d3965 100644 --- a/docs/core/sip.js.outgoingrequestmessage.getheader.md +++ b/docs/core/sip.js.outgoingrequestmessage.getheader.md @@ -16,11 +16,11 @@ getHeader(name: string): string | undefined; | Parameter | Type | Description | | --- | --- | --- | -| name | string | header name | +| name | string | header name | Returns: -`string | undefined` +string \| undefined Returns the specified header, undefined if header doesn't exist. diff --git a/docs/core/sip.js.outgoingrequestmessage.getheaders.md b/docs/core/sip.js.outgoingrequestmessage.getheaders.md index bc39e9ee3..44e8a220a 100644 --- a/docs/core/sip.js.outgoingrequestmessage.getheaders.md +++ b/docs/core/sip.js.outgoingrequestmessage.getheaders.md @@ -16,11 +16,11 @@ getHeaders(name: string): Array; | Parameter | Type | Description | | --- | --- | --- | -| name | string | header name | +| name | string | header name | Returns: -`Array` +Array<string> Array with all the headers of the specified name. diff --git a/docs/core/sip.js.outgoingrequestmessage.hasheader.md b/docs/core/sip.js.outgoingrequestmessage.hasheader.md index 45844eac2..9ecc0715e 100644 --- a/docs/core/sip.js.outgoingrequestmessage.hasheader.md +++ b/docs/core/sip.js.outgoingrequestmessage.hasheader.md @@ -16,11 +16,11 @@ hasHeader(name: string): boolean; | Parameter | Type | Description | | --- | --- | --- | -| name | string | header name | +| name | string | header name | Returns: -`boolean` +boolean true if header with given name exists, false otherwise diff --git a/docs/core/sip.js.outgoingrequestmessage.md b/docs/core/sip.js.outgoingrequestmessage.md index 12664b374..5854a912c 100644 --- a/docs/core/sip.js.outgoingrequestmessage.md +++ b/docs/core/sip.js.outgoingrequestmessage.md @@ -22,20 +22,20 @@ export declare class OutgoingRequestMessage | Property | Modifiers | Type | Description | | --- | --- | --- | --- | -| [body](./sip.js.outgoingrequestmessage.body.md) | | {
body: string;
contentType: string;
} | undefined | | -| [branch](./sip.js.outgoingrequestmessage.branch.md) | | string | undefined | | -| [callId](./sip.js.outgoingrequestmessage.callid.md) | | string | | -| [cseq](./sip.js.outgoingrequestmessage.cseq.md) | | number | | -| [extraHeaders](./sip.js.outgoingrequestmessage.extraheaders.md) | | Array<string> | | -| [from](./sip.js.outgoingrequestmessage.from.md) | | NameAddrHeader | | -| [fromTag](./sip.js.outgoingrequestmessage.fromtag.md) | | string | | -| [fromURI](./sip.js.outgoingrequestmessage.fromuri.md) | | URI | | -| [headers](./sip.js.outgoingrequestmessage.headers.md) | | {
[name: string]: Array<string>;
} | | -| [method](./sip.js.outgoingrequestmessage.method.md) | | string | | -| [ruri](./sip.js.outgoingrequestmessage.ruri.md) | | URI | | -| [to](./sip.js.outgoingrequestmessage.to.md) | | NameAddrHeader | | -| [toTag](./sip.js.outgoingrequestmessage.totag.md) | | string | undefined | | -| [toURI](./sip.js.outgoingrequestmessage.touri.md) | | URI | | +| [body](./sip.js.outgoingrequestmessage.body.md) | | { body: string; contentType: string; } \| undefined | | +| [branch](./sip.js.outgoingrequestmessage.branch.md) | | string \| undefined | | +| [callId](./sip.js.outgoingrequestmessage.callid.md) | | string | | +| [cseq](./sip.js.outgoingrequestmessage.cseq.md) | | number | | +| [extraHeaders](./sip.js.outgoingrequestmessage.extraheaders.md) | | Array<string> | | +| [from](./sip.js.outgoingrequestmessage.from.md) | | [NameAddrHeader](./sip.js.nameaddrheader.md) | | +| [fromTag](./sip.js.outgoingrequestmessage.fromtag.md) | | string | | +| [fromURI](./sip.js.outgoingrequestmessage.fromuri.md) | | [URI](./sip.js.uri.md) | | +| [headers](./sip.js.outgoingrequestmessage.headers.md) | | { \[name: string\]: Array<string>; } | | +| [method](./sip.js.outgoingrequestmessage.method.md) | | string | | +| [ruri](./sip.js.outgoingrequestmessage.ruri.md) | | [URI](./sip.js.uri.md) | | +| [to](./sip.js.outgoingrequestmessage.to.md) | | [NameAddrHeader](./sip.js.nameaddrheader.md) | | +| [toTag](./sip.js.outgoingrequestmessage.totag.md) | | string \| undefined | | +| [toURI](./sip.js.outgoingrequestmessage.touri.md) | | [URI](./sip.js.uri.md) | | ## Methods @@ -45,6 +45,6 @@ export declare class OutgoingRequestMessage | [getHeaders(name)](./sip.js.outgoingrequestmessage.getheaders.md) | | Get the header/s of the given name. | | [hasHeader(name)](./sip.js.outgoingrequestmessage.hasheader.md) | | Verify the existence of the given header. | | [setHeader(name, value)](./sip.js.outgoingrequestmessage.setheader.md) | | Replace the the given header by the given value. | -| [setViaHeader(branch, transport)](./sip.js.outgoingrequestmessage.setviaheader.md) | | The Via header field indicates the transport used for the transaction and identifies the location where the response is to be sent. A Via header field value is added only after the transport that will be used to reach the next hop has been selected (which may involve the usage of the procedures in \[4\]).When the UAC creates a request, it MUST insert a Via into that request. The protocol name and protocol version in the header field MUST be SIP and 2.0, respectively. The Via header field value MUST contain a branch parameter. This parameter is used to identify the transaction created by that request. This parameter is used by both the client and the server. https://tools.ietf.org/html/rfc3261\#section-8.1.1.7 | +| [setViaHeader(branch, transport)](./sip.js.outgoingrequestmessage.setviaheader.md) | |

The Via header field indicates the transport used for the transaction and identifies the location where the response is to be sent. A Via header field value is added only after the transport that will be used to reach the next hop has been selected (which may involve the usage of the procedures in \[4\]).

When the UAC creates a request, it MUST insert a Via into that request. The protocol name and protocol version in the header field MUST be SIP and 2.0, respectively. The Via header field value MUST contain a branch parameter. This parameter is used to identify the transaction created by that request. This parameter is used by both the client and the server. https://tools.ietf.org/html/rfc3261\#section-8.1.1.7

| | [toString()](./sip.js.outgoingrequestmessage.tostring.md) | | | diff --git a/docs/core/sip.js.outgoingrequestmessage.setheader.md b/docs/core/sip.js.outgoingrequestmessage.setheader.md index 5ca5d996b..658dc904e 100644 --- a/docs/core/sip.js.outgoingrequestmessage.setheader.md +++ b/docs/core/sip.js.outgoingrequestmessage.setheader.md @@ -16,10 +16,10 @@ setHeader(name: string, value: string | Array): void; | Parameter | Type | Description | | --- | --- | --- | -| name | string | header name | -| value | string | Array<string> | header value | +| name | string | header name | +| value | string \| Array<string> | header value | Returns: -`void` +void diff --git a/docs/core/sip.js.outgoingrequestmessage.setviaheader.md b/docs/core/sip.js.outgoingrequestmessage.setviaheader.md index b72a09b5e..9286f2423 100644 --- a/docs/core/sip.js.outgoingrequestmessage.setviaheader.md +++ b/docs/core/sip.js.outgoingrequestmessage.setviaheader.md @@ -18,10 +18,10 @@ setViaHeader(branch: string, transport: string): void; | Parameter | Type | Description | | --- | --- | --- | -| branch | string | | -| transport | string | The sent protocol transport. | +| branch | string | | +| transport | string | The sent protocol transport. | Returns: -`void` +void diff --git a/docs/core/sip.js.outgoingrequestmessage.tostring.md b/docs/core/sip.js.outgoingrequestmessage.tostring.md index c35b75c6b..a396e8866 100644 --- a/docs/core/sip.js.outgoingrequestmessage.tostring.md +++ b/docs/core/sip.js.outgoingrequestmessage.tostring.md @@ -11,5 +11,5 @@ toString(): string; ``` Returns: -`string` +string diff --git a/docs/core/sip.js.outgoingrequestmessageoptions.md b/docs/core/sip.js.outgoingrequestmessageoptions.md index 3ce03aadc..9d269be0e 100644 --- a/docs/core/sip.js.outgoingrequestmessageoptions.md +++ b/docs/core/sip.js.outgoingrequestmessageoptions.md @@ -14,19 +14,19 @@ export interface OutgoingRequestMessageOptions ## Properties -| Property | Type | Description | -| --- | --- | --- | -| [callId](./sip.js.outgoingrequestmessageoptions.callid.md) | string | | -| [callIdPrefix](./sip.js.outgoingrequestmessageoptions.callidprefix.md) | string | | -| [cseq](./sip.js.outgoingrequestmessageoptions.cseq.md) | number | | -| [forceRport](./sip.js.outgoingrequestmessageoptions.forcerport.md) | boolean | | -| [fromDisplayName](./sip.js.outgoingrequestmessageoptions.fromdisplayname.md) | string | | -| [fromTag](./sip.js.outgoingrequestmessageoptions.fromtag.md) | string | | -| [hackViaTcp](./sip.js.outgoingrequestmessageoptions.hackviatcp.md) | boolean | | -| [optionTags](./sip.js.outgoingrequestmessageoptions.optiontags.md) | Array<string> | | -| [routeSet](./sip.js.outgoingrequestmessageoptions.routeset.md) | Array<string> | | -| [toDisplayName](./sip.js.outgoingrequestmessageoptions.todisplayname.md) | string | | -| [toTag](./sip.js.outgoingrequestmessageoptions.totag.md) | string | | -| [userAgentString](./sip.js.outgoingrequestmessageoptions.useragentstring.md) | string | | -| [viaHost](./sip.js.outgoingrequestmessageoptions.viahost.md) | string | | +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [callId](./sip.js.outgoingrequestmessageoptions.callid.md) | | string | | +| [callIdPrefix](./sip.js.outgoingrequestmessageoptions.callidprefix.md) | | string | | +| [cseq](./sip.js.outgoingrequestmessageoptions.cseq.md) | | number | | +| [forceRport](./sip.js.outgoingrequestmessageoptions.forcerport.md) | | boolean | | +| [fromDisplayName](./sip.js.outgoingrequestmessageoptions.fromdisplayname.md) | | string | | +| [fromTag](./sip.js.outgoingrequestmessageoptions.fromtag.md) | | string | | +| [hackViaTcp](./sip.js.outgoingrequestmessageoptions.hackviatcp.md) | | boolean | | +| [optionTags](./sip.js.outgoingrequestmessageoptions.optiontags.md) | | Array<string> | | +| [routeSet](./sip.js.outgoingrequestmessageoptions.routeset.md) | | Array<string> | | +| [toDisplayName](./sip.js.outgoingrequestmessageoptions.todisplayname.md) | | string | | +| [toTag](./sip.js.outgoingrequestmessageoptions.totag.md) | | string | | +| [userAgentString](./sip.js.outgoingrequestmessageoptions.useragentstring.md) | | string | | +| [viaHost](./sip.js.outgoingrequestmessageoptions.viahost.md) | | string | | diff --git a/docs/core/sip.js.outgoingresponse.md b/docs/core/sip.js.outgoingresponse.md index 4c0098d57..01467a727 100644 --- a/docs/core/sip.js.outgoingresponse.md +++ b/docs/core/sip.js.outgoingresponse.md @@ -18,7 +18,7 @@ For indicating the status of a request sent from the client to the server. https ## Properties -| Property | Type | Description | -| --- | --- | --- | -| [message](./sip.js.outgoingresponse.message.md) | string | The outgoing message. | +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [message](./sip.js.outgoingresponse.message.md) | | string | The outgoing message. | diff --git a/docs/core/sip.js.outgoingresponsewithsession.md b/docs/core/sip.js.outgoingresponsewithsession.md index bf387715e..a11a5499d 100644 --- a/docs/core/sip.js.outgoingresponsewithsession.md +++ b/docs/core/sip.js.outgoingresponsewithsession.md @@ -11,10 +11,11 @@ Outgoing INVITE response with the associated [Session](./sip.js.session.md)> | Contacts to redirect to. | +| options | [ResponseOptions](./sip.js.responseoptions.md) | Redirect options bucket. | Returns: -`OutgoingResponse` +[OutgoingResponse](./sip.js.outgoingresponse.md) diff --git a/docs/core/sip.js.reinviteuseragentserver.reject.md b/docs/core/sip.js.reinviteuseragentserver.reject.md index 2ddbccb97..6fef913c3 100644 --- a/docs/core/sip.js.reinviteuseragentserver.reject.md +++ b/docs/core/sip.js.reinviteuseragentserver.reject.md @@ -16,9 +16,9 @@ reject(options?: ResponseOptions): OutgoingResponse; | Parameter | Type | Description | | --- | --- | --- | -| options | ResponseOptions | Reject options bucket. | +| options | [ResponseOptions](./sip.js.responseoptions.md) | Reject options bucket. | Returns: -`OutgoingResponse` +[OutgoingResponse](./sip.js.outgoingresponse.md) diff --git a/docs/core/sip.js.requestoptions.md b/docs/core/sip.js.requestoptions.md index f51384390..319d51d7e 100644 --- a/docs/core/sip.js.requestoptions.md +++ b/docs/core/sip.js.requestoptions.md @@ -14,8 +14,8 @@ export interface RequestOptions ## Properties -| Property | Type | Description | -| --- | --- | --- | -| [body](./sip.js.requestoptions.body.md) | Body | Body to include in the message. | -| [extraHeaders](./sip.js.requestoptions.extraheaders.md) | Array<string> | Extra headers to include in the message. | +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [body](./sip.js.requestoptions.body.md) | | [Body](./sip.js.body.md) | Body to include in the message. | +| [extraHeaders](./sip.js.requestoptions.extraheaders.md) | | Array<string> | Extra headers to include in the message. | diff --git a/docs/core/sip.js.responseoptions.md b/docs/core/sip.js.responseoptions.md index 355f7e2a4..e6ccd89af 100644 --- a/docs/core/sip.js.responseoptions.md +++ b/docs/core/sip.js.responseoptions.md @@ -14,13 +14,13 @@ export interface ResponseOptions ## Properties -| Property | Type | Description | -| --- | --- | --- | -| [body](./sip.js.responseoptions.body.md) | Body | Body to include in the message. | -| [extraHeaders](./sip.js.responseoptions.extraheaders.md) | Array<string> | Extra headers to include in the message. | -| [reasonPhrase](./sip.js.responseoptions.reasonphrase.md) | string | Reason phrase of the response. | -| [statusCode](./sip.js.responseoptions.statuscode.md) | number | Status code of the response. | -| [supported](./sip.js.responseoptions.supported.md) | Array<string> | Support options tags for Supported header. | -| [toTag](./sip.js.responseoptions.totag.md) | string | To tag of the response. If not provided, one is generated. | -| [userAgent](./sip.js.responseoptions.useragent.md) | string | User agent string for User-Agent header. | +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [body](./sip.js.responseoptions.body.md) | | [Body](./sip.js.body.md) | Body to include in the message. | +| [extraHeaders](./sip.js.responseoptions.extraheaders.md) | | Array<string> | Extra headers to include in the message. | +| [reasonPhrase](./sip.js.responseoptions.reasonphrase.md) | | string | Reason phrase of the response. | +| [statusCode](./sip.js.responseoptions.statuscode.md) | | number | Status code of the response. | +| [supported](./sip.js.responseoptions.supported.md) | | Array<string> | Support options tags for Supported header. | +| [toTag](./sip.js.responseoptions.totag.md) | | string | To tag of the response. If not provided, one is generated. | +| [userAgent](./sip.js.responseoptions.useragent.md) | | string | User agent string for User-Agent header. | diff --git a/docs/core/sip.js.resubscribeuseragentclient._constructor_.md b/docs/core/sip.js.resubscribeuseragentclient._constructor_.md index e2af19876..a1cb5989c 100644 --- a/docs/core/sip.js.resubscribeuseragentclient._constructor_.md +++ b/docs/core/sip.js.resubscribeuseragentclient._constructor_.md @@ -16,7 +16,7 @@ constructor(dialog: SubscriptionDialog, delegate?: OutgoingRequestDelegate, opti | Parameter | Type | Description | | --- | --- | --- | -| dialog | SubscriptionDialog | | -| delegate | OutgoingRequestDelegate | | -| options | RequestOptions | | +| dialog | [SubscriptionDialog](./sip.js.subscriptiondialog.md) | | +| delegate | [OutgoingRequestDelegate](./sip.js.outgoingrequestdelegate.md) | | +| options | [RequestOptions](./sip.js.requestoptions.md) | | diff --git a/docs/core/sip.js.resubscribeuseragentclient.md b/docs/core/sip.js.resubscribeuseragentclient.md index 975fb0927..ab62d63c1 100644 --- a/docs/core/sip.js.resubscribeuseragentclient.md +++ b/docs/core/sip.js.resubscribeuseragentclient.md @@ -11,6 +11,9 @@ Re-SUBSCRIBE UAC. ```typescript export declare class ReSubscribeUserAgentClient extends UserAgentClient implements OutgoingSubscribeRequest ``` +Extends: [UserAgentClient](./sip.js.useragentclient.md) + +Implements: [OutgoingSubscribeRequest](./sip.js.outgoingsubscriberequest.md) ## Constructors diff --git a/docs/core/sip.js.resubscribeuseragentclient.receiveresponse.md b/docs/core/sip.js.resubscribeuseragentclient.receiveresponse.md index b5b1fb1e4..81f10609a 100644 --- a/docs/core/sip.js.resubscribeuseragentclient.receiveresponse.md +++ b/docs/core/sip.js.resubscribeuseragentclient.receiveresponse.md @@ -16,9 +16,9 @@ protected receiveResponse(message: IncomingResponseMessage): void; | Parameter | Type | Description | | --- | --- | --- | -| message | IncomingResponseMessage | Incoming response message. | +| message | [IncomingResponseMessage](./sip.js.incomingresponsemessage.md) | Incoming response message. | Returns: -`void` +void diff --git a/docs/core/sip.js.resubscribeuseragentclient.waitnotifystop.md b/docs/core/sip.js.resubscribeuseragentclient.waitnotifystop.md index 60c4e4186..33cdce6c2 100644 --- a/docs/core/sip.js.resubscribeuseragentclient.waitnotifystop.md +++ b/docs/core/sip.js.resubscribeuseragentclient.waitnotifystop.md @@ -11,5 +11,5 @@ waitNotifyStop(): void; ``` Returns: -`void` +void diff --git a/docs/core/sip.js.resubscribeuseragentserver._constructor_.md b/docs/core/sip.js.resubscribeuseragentserver._constructor_.md index a49037dd1..681af5a15 100644 --- a/docs/core/sip.js.resubscribeuseragentserver._constructor_.md +++ b/docs/core/sip.js.resubscribeuseragentserver._constructor_.md @@ -16,7 +16,7 @@ constructor(dialog: Dialog, message: IncomingRequestMessage, delegate?: Incoming | Parameter | Type | Description | | --- | --- | --- | -| dialog | Dialog | | -| message | IncomingRequestMessage | | -| delegate | IncomingRequestDelegate | | +| dialog | [Dialog](./sip.js.dialog.md) | | +| message | [IncomingRequestMessage](./sip.js.incomingrequestmessage.md) | | +| delegate | [IncomingRequestDelegate](./sip.js.incomingrequestdelegate.md) | | diff --git a/docs/core/sip.js.resubscribeuseragentserver.md b/docs/core/sip.js.resubscribeuseragentserver.md index e82961dbc..470b9e143 100644 --- a/docs/core/sip.js.resubscribeuseragentserver.md +++ b/docs/core/sip.js.resubscribeuseragentserver.md @@ -11,6 +11,9 @@ Re-SUBSCRIBE UAS. ```typescript export declare class ReSubscribeUserAgentServer extends UserAgentServer implements IncomingSubscribeRequest ``` +Extends: [UserAgentServer](./sip.js.useragentserver.md) + +Implements: [IncomingSubscribeRequest](./sip.js.incomingsubscriberequest.md) ## Constructors diff --git a/docs/core/sip.js.servertransaction._constructor_.md b/docs/core/sip.js.servertransaction._constructor_.md index f2d17f5ac..8147f7e8c 100644 --- a/docs/core/sip.js.servertransaction._constructor_.md +++ b/docs/core/sip.js.servertransaction._constructor_.md @@ -16,9 +16,9 @@ protected constructor(_request: IncomingRequestMessage, transport: Transport, us | Parameter | Type | Description | | --- | --- | --- | -| \_request | IncomingRequestMessage | | -| transport | Transport | | -| user | ServerTransactionUser | | -| state | TransactionState | | -| loggerCategory | string | | +| \_request | [IncomingRequestMessage](./sip.js.incomingrequestmessage.md) | | +| transport | [Transport](./sip.js.transport.md) | | +| user | [ServerTransactionUser](./sip.js.servertransactionuser.md) | | +| state | [TransactionState](./sip.js.transactionstate.md) | | +| loggerCategory | string | | diff --git a/docs/core/sip.js.servertransaction.md b/docs/core/sip.js.servertransaction.md index 161904a09..9bba07682 100644 --- a/docs/core/sip.js.servertransaction.md +++ b/docs/core/sip.js.servertransaction.md @@ -11,6 +11,7 @@ Server Transaction. ```typescript export declare abstract class ServerTransaction extends Transaction ``` +Extends: [Transaction](./sip.js.transaction.md) ## Remarks @@ -26,8 +27,8 @@ The server transaction is responsible for the delivery of requests to the TU and | Property | Modifiers | Type | Description | | --- | --- | --- | --- | -| [request](./sip.js.servertransaction.request.md) | | IncomingRequestMessage | The incoming request the transaction handling. | -| [user](./sip.js.servertransaction.user.md) | | ServerTransactionUser | | +| [request](./sip.js.servertransaction.request.md) | | [IncomingRequestMessage](./sip.js.incomingrequestmessage.md) | The incoming request the transaction handling. | +| [user](./sip.js.servertransaction.user.md) | | [ServerTransactionUser](./sip.js.servertransactionuser.md) | | ## Methods diff --git a/docs/core/sip.js.servertransaction.receiverequest.md b/docs/core/sip.js.servertransaction.receiverequest.md index bd27bad15..d8d5881e0 100644 --- a/docs/core/sip.js.servertransaction.receiverequest.md +++ b/docs/core/sip.js.servertransaction.receiverequest.md @@ -16,9 +16,9 @@ abstract receiveRequest(request: IncomingRequestMessage): void; | Parameter | Type | Description | | --- | --- | --- | -| request | IncomingRequestMessage | The incoming request. | +| request | [IncomingRequestMessage](./sip.js.incomingrequestmessage.md) | The incoming request. | Returns: -`void` +void diff --git a/docs/core/sip.js.servertransaction.receiveresponse.md b/docs/core/sip.js.servertransaction.receiveresponse.md index 397d28ac1..8045b2fbc 100644 --- a/docs/core/sip.js.servertransaction.receiveresponse.md +++ b/docs/core/sip.js.servertransaction.receiveresponse.md @@ -16,10 +16,10 @@ abstract receiveResponse(statusCode: number, response: string): void; | Parameter | Type | Description | | --- | --- | --- | -| statusCode | number | Response status code. | -| response | string | Response. | +| statusCode | number | Response status code. | +| response | string | Response. | Returns: -`void` +void diff --git a/docs/core/sip.js.servertransactionuser.md b/docs/core/sip.js.servertransactionuser.md index 7536c8ac6..058fccafa 100644 --- a/docs/core/sip.js.servertransactionuser.md +++ b/docs/core/sip.js.servertransactionuser.md @@ -11,3 +11,5 @@ UAS Core Transaction User. ```typescript export interface ServerTransactionUser extends TransactionUser ``` +Extends: [TransactionUser](./sip.js.transactionuser.md) + diff --git a/docs/core/sip.js.session.bye.md b/docs/core/sip.js.session.bye.md index 53052f916..cc4f4e54f 100644 --- a/docs/core/sip.js.session.bye.md +++ b/docs/core/sip.js.session.bye.md @@ -16,10 +16,10 @@ bye(delegate?: OutgoingRequestDelegate, options?: RequestOptions): OutgoingByeRe | Parameter | Type | Description | | --- | --- | --- | -| delegate | OutgoingRequestDelegate | Request delegate. | -| options | RequestOptions | Options bucket. | +| delegate | [OutgoingRequestDelegate](./sip.js.outgoingrequestdelegate.md) | Request delegate. | +| options | [RequestOptions](./sip.js.requestoptions.md) | Options bucket. | Returns: -`OutgoingByeRequest` +[OutgoingByeRequest](./sip.js.outgoingbyerequest.md) diff --git a/docs/core/sip.js.session.dispose.md b/docs/core/sip.js.session.dispose.md index 95fe0458f..51cef5db8 100644 --- a/docs/core/sip.js.session.dispose.md +++ b/docs/core/sip.js.session.dispose.md @@ -13,5 +13,5 @@ dispose(): void; ``` Returns: -`void` +void diff --git a/docs/core/sip.js.session.info.md b/docs/core/sip.js.session.info.md index 3cd265562..a00b4b05a 100644 --- a/docs/core/sip.js.session.info.md +++ b/docs/core/sip.js.session.info.md @@ -16,10 +16,10 @@ info(delegate?: OutgoingRequestDelegate, options?: RequestOptions): OutgoingInfo | Parameter | Type | Description | | --- | --- | --- | -| delegate | OutgoingRequestDelegate | Request delegate. | -| options | RequestOptions | Options bucket. | +| delegate | [OutgoingRequestDelegate](./sip.js.outgoingrequestdelegate.md) | Request delegate. | +| options | [RequestOptions](./sip.js.requestoptions.md) | Options bucket. | Returns: -`OutgoingInfoRequest` +[OutgoingInfoRequest](./sip.js.outgoinginforequest.md) diff --git a/docs/core/sip.js.session.invite.md b/docs/core/sip.js.session.invite.md index 45da0bc76..a6c456323 100644 --- a/docs/core/sip.js.session.invite.md +++ b/docs/core/sip.js.session.invite.md @@ -16,10 +16,10 @@ invite(delegate?: OutgoingInviteRequestDelegate, options?: RequestOptions): Outg | Parameter | Type | Description | | --- | --- | --- | -| delegate | OutgoingInviteRequestDelegate | Request delegate. | -| options | RequestOptions | Options bucket. | +| delegate | [OutgoingInviteRequestDelegate](./sip.js.outgoinginviterequestdelegate.md) | Request delegate. | +| options | [RequestOptions](./sip.js.requestoptions.md) | Options bucket. | Returns: -`OutgoingInviteRequest` +[OutgoingInviteRequest](./sip.js.outgoinginviterequest.md) diff --git a/docs/core/sip.js.session.md b/docs/core/sip.js.session.md index 5e523d773..461070e81 100644 --- a/docs/core/sip.js.session.md +++ b/docs/core/sip.js.session.md @@ -18,20 +18,20 @@ https://tools.ietf.org/html/rfc3261\#section-13 ## Properties -| Property | Type | Description | -| --- | --- | --- | -| [answer](./sip.js.session.answer.md) | Body | undefined | The current answer if signalingState is stable. Otherwise undefined. | -| [callId](./sip.js.session.callid.md) | string | Call Id. | -| [delegate](./sip.js.session.delegate.md) | SessionDelegate | undefined | Session delegate. | -| [id](./sip.js.session.id.md) | string | The session id. Equal to callId + localTag + remoteTag. | -| [localTag](./sip.js.session.localtag.md) | string | Local Tag. | -| [localURI](./sip.js.session.localuri.md) | URI | Local URI. | -| [offer](./sip.js.session.offer.md) | Body | undefined | The current offer if signalingState is not initial or closed. Otherwise undefined. | -| [remoteTag](./sip.js.session.remotetag.md) | string | Remote Tag. | -| [remoteTarget](./sip.js.session.remotetarget.md) | URI | Remote Target. | -| [remoteURI](./sip.js.session.remoteuri.md) | URI | Remote URI. | -| [sessionState](./sip.js.session.sessionstate.md) | SessionState | Session state. | -| [signalingState](./sip.js.session.signalingstate.md) | SignalingState | Current state of the offer/answer exchange. | +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [answer](./sip.js.session.answer.md) | | [Body](./sip.js.body.md) \| undefined | The current answer if signalingState is stable. Otherwise undefined. | +| [callId](./sip.js.session.callid.md) | | string | Call Id. | +| [delegate](./sip.js.session.delegate.md) | | [SessionDelegate](./sip.js.sessiondelegate.md) \| undefined | Session delegate. | +| [id](./sip.js.session.id.md) | | string | The session id. Equal to callId + localTag + remoteTag. | +| [localTag](./sip.js.session.localtag.md) | | string | Local Tag. | +| [localURI](./sip.js.session.localuri.md) | | [URI](./sip.js.uri.md) | Local URI. | +| [offer](./sip.js.session.offer.md) | | [Body](./sip.js.body.md) \| undefined | The current offer if signalingState is not initial or closed. Otherwise undefined. | +| [remoteTag](./sip.js.session.remotetag.md) | | string | Remote Tag. | +| [remoteTarget](./sip.js.session.remotetarget.md) | | [URI](./sip.js.uri.md) | Remote Target. | +| [remoteURI](./sip.js.session.remoteuri.md) | | [URI](./sip.js.uri.md) | Remote URI. | +| [sessionState](./sip.js.session.sessionstate.md) | | [SessionState](./sip.js.sessionstate.md) | Session state. | +| [signalingState](./sip.js.session.signalingstate.md) | | [SignalingState](./sip.js.signalingstate.md) | Current state of the offer/answer exchange. | ## Methods diff --git a/docs/core/sip.js.session.message.md b/docs/core/sip.js.session.message.md index 65d829e34..0f5bef675 100644 --- a/docs/core/sip.js.session.message.md +++ b/docs/core/sip.js.session.message.md @@ -16,10 +16,10 @@ message(delegate?: OutgoingRequestDelegate, options?: RequestOptions): OutgoingM | Parameter | Type | Description | | --- | --- | --- | -| delegate | OutgoingRequestDelegate | Request delegate. | -| options | RequestOptions | Options bucket. | +| delegate | [OutgoingRequestDelegate](./sip.js.outgoingrequestdelegate.md) | Request delegate. | +| options | [RequestOptions](./sip.js.requestoptions.md) | Options bucket. | Returns: -`OutgoingMessageRequest` +[OutgoingMessageRequest](./sip.js.outgoingmessagerequest.md) diff --git a/docs/core/sip.js.session.notify.md b/docs/core/sip.js.session.notify.md index 6aaeeefb5..db28d9b4f 100644 --- a/docs/core/sip.js.session.notify.md +++ b/docs/core/sip.js.session.notify.md @@ -16,10 +16,10 @@ notify(delegate?: OutgoingRequestDelegate, options?: RequestOptions): OutgoingNo | Parameter | Type | Description | | --- | --- | --- | -| delegate | OutgoingRequestDelegate | Request delegate. | -| options | RequestOptions | Options bucket. | +| delegate | [OutgoingRequestDelegate](./sip.js.outgoingrequestdelegate.md) | Request delegate. | +| options | [RequestOptions](./sip.js.requestoptions.md) | Options bucket. | Returns: -`OutgoingNotifyRequest` +[OutgoingNotifyRequest](./sip.js.outgoingnotifyrequest.md) diff --git a/docs/core/sip.js.session.prack.md b/docs/core/sip.js.session.prack.md index 2431c92f8..da454f8cf 100644 --- a/docs/core/sip.js.session.prack.md +++ b/docs/core/sip.js.session.prack.md @@ -16,10 +16,10 @@ prack(delegate?: OutgoingRequestDelegate, options?: RequestOptions): OutgoingPra | Parameter | Type | Description | | --- | --- | --- | -| delegate | OutgoingRequestDelegate | Request delegate. | -| options | RequestOptions | Options bucket. | +| delegate | [OutgoingRequestDelegate](./sip.js.outgoingrequestdelegate.md) | Request delegate. | +| options | [RequestOptions](./sip.js.requestoptions.md) | Options bucket. | Returns: -`OutgoingPrackRequest` +[OutgoingPrackRequest](./sip.js.outgoingprackrequest.md) diff --git a/docs/core/sip.js.session.refer.md b/docs/core/sip.js.session.refer.md index b2d476315..eef43f8cf 100644 --- a/docs/core/sip.js.session.refer.md +++ b/docs/core/sip.js.session.refer.md @@ -16,10 +16,10 @@ refer(delegate?: OutgoingRequestDelegate, options?: RequestOptions): OutgoingRef | Parameter | Type | Description | | --- | --- | --- | -| delegate | OutgoingRequestDelegate | Request delegate. | -| options | RequestOptions | Options bucket. | +| delegate | [OutgoingRequestDelegate](./sip.js.outgoingrequestdelegate.md) | Request delegate. | +| options | [RequestOptions](./sip.js.requestoptions.md) | Options bucket. | Returns: -`OutgoingReferRequest` +[OutgoingReferRequest](./sip.js.outgoingreferrequest.md) diff --git a/docs/core/sip.js.sessiondelegate.onack.md b/docs/core/sip.js.sessiondelegate.onack.md index 08d5e7085..dfd0a66b2 100644 --- a/docs/core/sip.js.sessiondelegate.onack.md +++ b/docs/core/sip.js.sessiondelegate.onack.md @@ -16,11 +16,11 @@ onAck?(request: IncomingAckRequest): Promise | void; | Parameter | Type | Description | | --- | --- | --- | -| request | IncomingAckRequest | Incoming ACK request. | +| request | [IncomingAckRequest](./sip.js.incomingackrequest.md) | Incoming ACK request. | Returns: -`Promise | void` +Promise<void> \| void The callback MUST return a promise if it asynchronously handles answers. For example, an ACK with an answer (offer in the 200 Ok) may require asynchronous processing in which case the callback MUST return a Promise which resolves when the answer handling is complete. diff --git a/docs/core/sip.js.sessiondelegate.onacktimeout.md b/docs/core/sip.js.sessiondelegate.onacktimeout.md index c307fe9bf..f3648af96 100644 --- a/docs/core/sip.js.sessiondelegate.onacktimeout.md +++ b/docs/core/sip.js.sessiondelegate.onacktimeout.md @@ -13,5 +13,5 @@ onAckTimeout?(): void; ``` Returns: -`void` +void diff --git a/docs/core/sip.js.sessiondelegate.onbye.md b/docs/core/sip.js.sessiondelegate.onbye.md index 6c08c0f4b..57ce07c48 100644 --- a/docs/core/sip.js.sessiondelegate.onbye.md +++ b/docs/core/sip.js.sessiondelegate.onbye.md @@ -16,9 +16,9 @@ onBye?(request: IncomingByeRequest): void; | Parameter | Type | Description | | --- | --- | --- | -| request | IncomingByeRequest | Incoming BYE request. | +| request | [IncomingByeRequest](./sip.js.incomingbyerequest.md) | Incoming BYE request. | Returns: -`void` +void diff --git a/docs/core/sip.js.sessiondelegate.oninfo.md b/docs/core/sip.js.sessiondelegate.oninfo.md index e394a2c9d..93cb72018 100644 --- a/docs/core/sip.js.sessiondelegate.oninfo.md +++ b/docs/core/sip.js.sessiondelegate.oninfo.md @@ -16,9 +16,9 @@ onInfo?(request: IncomingInfoRequest): void; | Parameter | Type | Description | | --- | --- | --- | -| request | IncomingInfoRequest | Incoming INFO request. | +| request | [IncomingInfoRequest](./sip.js.incominginforequest.md) | Incoming INFO request. | Returns: -`void` +void diff --git a/docs/core/sip.js.sessiondelegate.oninvite.md b/docs/core/sip.js.sessiondelegate.oninvite.md index 41bb46191..e67cbaa95 100644 --- a/docs/core/sip.js.sessiondelegate.oninvite.md +++ b/docs/core/sip.js.sessiondelegate.oninvite.md @@ -16,9 +16,9 @@ onInvite?(request: IncomingInviteRequest): void; | Parameter | Type | Description | | --- | --- | --- | -| request | IncomingInviteRequest | Incoming INVITE request. | +| request | [IncomingInviteRequest](./sip.js.incominginviterequest.md) | Incoming INVITE request. | Returns: -`void` +void diff --git a/docs/core/sip.js.sessiondelegate.onmessage.md b/docs/core/sip.js.sessiondelegate.onmessage.md index e793e055a..229dc4dd8 100644 --- a/docs/core/sip.js.sessiondelegate.onmessage.md +++ b/docs/core/sip.js.sessiondelegate.onmessage.md @@ -16,9 +16,9 @@ onMessage?(request: IncomingMessageRequest): void; | Parameter | Type | Description | | --- | --- | --- | -| request | IncomingMessageRequest | Incoming MESSAGE request. | +| request | [IncomingMessageRequest](./sip.js.incomingmessagerequest.md) | Incoming MESSAGE request. | Returns: -`void` +void diff --git a/docs/core/sip.js.sessiondelegate.onnotify.md b/docs/core/sip.js.sessiondelegate.onnotify.md index 44ae13eb0..0991b18a8 100644 --- a/docs/core/sip.js.sessiondelegate.onnotify.md +++ b/docs/core/sip.js.sessiondelegate.onnotify.md @@ -16,9 +16,9 @@ onNotify?(request: IncomingNotifyRequest): void; | Parameter | Type | Description | | --- | --- | --- | -| request | IncomingNotifyRequest | Incoming NOTIFY request. | +| request | [IncomingNotifyRequest](./sip.js.incomingnotifyrequest.md) | Incoming NOTIFY request. | Returns: -`void` +void diff --git a/docs/core/sip.js.sessiondelegate.onprack.md b/docs/core/sip.js.sessiondelegate.onprack.md index 6f95050cb..ee1116dec 100644 --- a/docs/core/sip.js.sessiondelegate.onprack.md +++ b/docs/core/sip.js.sessiondelegate.onprack.md @@ -16,9 +16,9 @@ onPrack?(request: IncomingPrackRequest): void; | Parameter | Type | Description | | --- | --- | --- | -| request | IncomingPrackRequest | Incoming PRACK request. | +| request | [IncomingPrackRequest](./sip.js.incomingprackrequest.md) | Incoming PRACK request. | Returns: -`void` +void diff --git a/docs/core/sip.js.sessiondelegate.onrefer.md b/docs/core/sip.js.sessiondelegate.onrefer.md index fdd76dd2b..e2fc4a7f2 100644 --- a/docs/core/sip.js.sessiondelegate.onrefer.md +++ b/docs/core/sip.js.sessiondelegate.onrefer.md @@ -16,9 +16,9 @@ onRefer?(request: IncomingReferRequest): void; | Parameter | Type | Description | | --- | --- | --- | -| request | IncomingReferRequest | Incoming REFER request. | +| request | [IncomingReferRequest](./sip.js.incomingreferrequest.md) | Incoming REFER request. | Returns: -`void` +void diff --git a/docs/core/sip.js.sessiondialog._constructor_.md b/docs/core/sip.js.sessiondialog._constructor_.md index 1c152ed6b..38b1a9550 100644 --- a/docs/core/sip.js.sessiondialog._constructor_.md +++ b/docs/core/sip.js.sessiondialog._constructor_.md @@ -16,8 +16,8 @@ constructor(initialTransaction: InviteClientTransaction | InviteServerTransactio | Parameter | Type | Description | | --- | --- | --- | -| initialTransaction | InviteClientTransaction | InviteServerTransaction | | -| core | UserAgentCore | | -| state | DialogState | | -| delegate | SessionDelegate | | +| initialTransaction | [InviteClientTransaction](./sip.js.inviteclienttransaction.md) \| [InviteServerTransaction](./sip.js.inviteservertransaction.md) | | +| core | [UserAgentCore](./sip.js.useragentcore.md) | | +| state | [DialogState](./sip.js.dialogstate.md) | | +| delegate | [SessionDelegate](./sip.js.sessiondelegate.md) | | diff --git a/docs/core/sip.js.sessiondialog.ack.md b/docs/core/sip.js.sessiondialog.ack.md index 7ed078377..fa215b1c4 100644 --- a/docs/core/sip.js.sessiondialog.ack.md +++ b/docs/core/sip.js.sessiondialog.ack.md @@ -16,9 +16,9 @@ ack(options?: RequestOptions): OutgoingAckRequest; | Parameter | Type | Description | | --- | --- | --- | -| options | RequestOptions | ACK options bucket. | +| options | [RequestOptions](./sip.js.requestoptions.md) | ACK options bucket. | Returns: -`OutgoingAckRequest` +[OutgoingAckRequest](./sip.js.outgoingackrequest.md) diff --git a/docs/core/sip.js.sessiondialog.bye.md b/docs/core/sip.js.sessiondialog.bye.md index 72ac86c3a..46501ec11 100644 --- a/docs/core/sip.js.sessiondialog.bye.md +++ b/docs/core/sip.js.sessiondialog.bye.md @@ -22,12 +22,12 @@ bye(delegate?: OutgoingRequestDelegate, options?: RequestOptions): OutgoingByeRe | Parameter | Type | Description | | --- | --- | --- | -| delegate | OutgoingRequestDelegate | | -| options | RequestOptions | BYE options bucket. | +| delegate | [OutgoingRequestDelegate](./sip.js.outgoingrequestdelegate.md) | | +| options | [RequestOptions](./sip.js.requestoptions.md) | BYE options bucket. | Returns: -`OutgoingByeRequest` +[OutgoingByeRequest](./sip.js.outgoingbyerequest.md) Throws `Error` if callee's UA attempts a BYE on an early dialog. Throws `Error` if callee's UA attempts a BYE on a confirmed dialog while it's waiting on the ACK for its 2xx response. diff --git a/docs/core/sip.js.sessiondialog.confirm.md b/docs/core/sip.js.sessiondialog.confirm.md index 9bc6ce904..2b2415787 100644 --- a/docs/core/sip.js.sessiondialog.confirm.md +++ b/docs/core/sip.js.sessiondialog.confirm.md @@ -13,5 +13,5 @@ confirm(): void; ``` Returns: -`void` +void diff --git a/docs/core/sip.js.sessiondialog.dispose.md b/docs/core/sip.js.sessiondialog.dispose.md index 814c0de94..ec4263c37 100644 --- a/docs/core/sip.js.sessiondialog.dispose.md +++ b/docs/core/sip.js.sessiondialog.dispose.md @@ -11,5 +11,5 @@ dispose(): void; ``` Returns: -`void` +void diff --git a/docs/core/sip.js.sessiondialog.info.md b/docs/core/sip.js.sessiondialog.info.md index 675a65852..5092b0a1c 100644 --- a/docs/core/sip.js.sessiondialog.info.md +++ b/docs/core/sip.js.sessiondialog.info.md @@ -18,10 +18,10 @@ info(delegate?: OutgoingRequestDelegate, options?: RequestOptions): OutgoingInfo | Parameter | Type | Description | | --- | --- | --- | -| delegate | OutgoingRequestDelegate | | -| options | RequestOptions | Options bucket. | +| delegate | [OutgoingRequestDelegate](./sip.js.outgoingrequestdelegate.md) | | +| options | [RequestOptions](./sip.js.requestoptions.md) | Options bucket. | Returns: -`OutgoingInfoRequest` +[OutgoingInfoRequest](./sip.js.outgoinginforequest.md) diff --git a/docs/core/sip.js.sessiondialog.invite.md b/docs/core/sip.js.sessiondialog.invite.md index cb219a56b..9333255d6 100644 --- a/docs/core/sip.js.sessiondialog.invite.md +++ b/docs/core/sip.js.sessiondialog.invite.md @@ -22,10 +22,10 @@ invite(delegate?: OutgoingInviteRequestDelegate, options?: RequestOptions): Outg | Parameter | Type | Description | | --- | --- | --- | -| delegate | OutgoingInviteRequestDelegate | | -| options | RequestOptions | Options bucket | +| delegate | [OutgoingInviteRequestDelegate](./sip.js.outgoinginviterequestdelegate.md) | | +| options | [RequestOptions](./sip.js.requestoptions.md) | Options bucket | Returns: -`OutgoingInviteRequest` +[OutgoingInviteRequest](./sip.js.outgoinginviterequest.md) diff --git a/docs/core/sip.js.sessiondialog.md b/docs/core/sip.js.sessiondialog.md index ab9bea98f..02479aa7e 100644 --- a/docs/core/sip.js.sessiondialog.md +++ b/docs/core/sip.js.sessiondialog.md @@ -11,6 +11,9 @@ Session Dialog. ```typescript export declare class SessionDialog extends Dialog implements Session ``` +Extends: [Dialog](./sip.js.dialog.md) + +Implements: [Session](./sip.js.session.md) ## Constructors @@ -22,24 +25,24 @@ export declare class SessionDialog extends Dialog implements Session | Property | Modifiers | Type | Description | | --- | --- | --- | --- | -| [answer](./sip.js.sessiondialog.answer.md) | | Body | undefined | The current answer. Undefined unless signaling state Stable. | -| [delegate](./sip.js.sessiondialog.delegate.md) | | SessionDelegate | undefined | | -| [offer](./sip.js.sessiondialog.offer.md) | | Body | undefined | The current offer. Undefined unless signaling state HaveLocalOffer, HaveRemoteOffer, of Stable. | -| [reinviteUserAgentClient](./sip.js.sessiondialog.reinviteuseragentclient.md) | | ReInviteUserAgentClient | undefined | | -| [reinviteUserAgentServer](./sip.js.sessiondialog.reinviteuseragentserver.md) | | ReInviteUserAgentServer | undefined | | -| [sessionState](./sip.js.sessiondialog.sessionstate.md) | | SessionState | | -| [signalingState](./sip.js.sessiondialog.signalingstate.md) | | SignalingState | The state of the offer/answer exchange. | +| [answer](./sip.js.sessiondialog.answer.md) | | [Body](./sip.js.body.md) \| undefined | The current answer. Undefined unless signaling state Stable. | +| [delegate](./sip.js.sessiondialog.delegate.md) | | [SessionDelegate](./sip.js.sessiondelegate.md) \| undefined | | +| [offer](./sip.js.sessiondialog.offer.md) | | [Body](./sip.js.body.md) \| undefined | The current offer. Undefined unless signaling state HaveLocalOffer, HaveRemoteOffer, of Stable. | +| [reinviteUserAgentClient](./sip.js.sessiondialog.reinviteuseragentclient.md) | | [ReInviteUserAgentClient](./sip.js.reinviteuseragentclient.md) \| undefined | | +| [reinviteUserAgentServer](./sip.js.sessiondialog.reinviteuseragentserver.md) | | [ReInviteUserAgentServer](./sip.js.reinviteuseragentserver.md) \| undefined | | +| [sessionState](./sip.js.sessiondialog.sessionstate.md) | | [SessionState](./sip.js.sessionstate.md) | | +| [signalingState](./sip.js.sessiondialog.signalingstate.md) | | [SignalingState](./sip.js.signalingstate.md) | The state of the offer/answer exchange. | ## Methods | Method | Modifiers | Description | | --- | --- | --- | | [ack(options)](./sip.js.sessiondialog.ack.md) | | The UAC core MUST generate an ACK request for each 2xx received from the transaction layer. The header fields of the ACK are constructed in the same way as for any request sent within a dialog (see Section 12) with the exception of the CSeq and the header fields related to authentication. The sequence number of the CSeq header field MUST be the same as the INVITE being acknowledged, but the CSeq method MUST be ACK. The ACK MUST contain the same credentials as the INVITE. If the 2xx contains an offer (based on the rules above), the ACK MUST carry an answer in its body. If the offer in the 2xx response is not acceptable, the UAC core MUST generate a valid answer in the ACK and then send a BYE immediately. https://tools.ietf.org/html/rfc3261\#section-13.2.2.4 | -| [bye(delegate, options)](./sip.js.sessiondialog.bye.md) | | Terminating a SessionThis section describes the procedures for terminating a session established by SIP. The state of the session and the state of the dialog are very closely related. When a session is initiated with an INVITE, each 1xx or 2xx response from a distinct UAS creates a dialog, and if that response completes the offer/answer exchange, it also creates a session. As a result, each session is "associated" with a single dialog - the one which resulted in its creation. If an initial INVITE generates a non-2xx final response, that terminates all sessions (if any) and all dialogs (if any) that were created through responses to the request. By virtue of completing the transaction, a non-2xx final response also prevents further sessions from being created as a result of the INVITE. The BYE request is used to terminate a specific session or attempted session. In this case, the specific session is the one with the peer UA on the other side of the dialog. When a BYE is received on a dialog, any session associated with that dialog SHOULD terminate. A UA MUST NOT send a BYE outside of a dialog. The caller's UA MAY send a BYE for either confirmed or early dialogs, and the callee's UA MAY send a BYE on confirmed dialogs, but MUST NOT send a BYE on early dialogs.However, the callee's UA MUST NOT send a BYE on a confirmed dialog until it has received an ACK for its 2xx response or until the server transaction times out. If no SIP extensions have defined other application layer states associated with the dialog, the BYE also terminates the dialog.https://tools.ietf.org/html/rfc3261\#section-15 FIXME: Make these proper Exceptions... | +| [bye(delegate, options)](./sip.js.sessiondialog.bye.md) | |

Terminating a Session

This section describes the procedures for terminating a session established by SIP. The state of the session and the state of the dialog are very closely related. When a session is initiated with an INVITE, each 1xx or 2xx response from a distinct UAS creates a dialog, and if that response completes the offer/answer exchange, it also creates a session. As a result, each session is "associated" with a single dialog - the one which resulted in its creation. If an initial INVITE generates a non-2xx final response, that terminates all sessions (if any) and all dialogs (if any) that were created through responses to the request. By virtue of completing the transaction, a non-2xx final response also prevents further sessions from being created as a result of the INVITE. The BYE request is used to terminate a specific session or attempted session. In this case, the specific session is the one with the peer UA on the other side of the dialog. When a BYE is received on a dialog, any session associated with that dialog SHOULD terminate. A UA MUST NOT send a BYE outside of a dialog. The caller's UA MAY send a BYE for either confirmed or early dialogs, and the callee's UA MAY send a BYE on confirmed dialogs, but MUST NOT send a BYE on early dialogs.

However, the callee's UA MUST NOT send a BYE on a confirmed dialog until it has received an ACK for its 2xx response or until the server transaction times out. If no SIP extensions have defined other application layer states associated with the dialog, the BYE also terminates the dialog.

https://tools.ietf.org/html/rfc3261\#section-15 FIXME: Make these proper Exceptions...

| | [confirm()](./sip.js.sessiondialog.confirm.md) | | Confirm the dialog. Only matters if dialog is currently early. | | [dispose()](./sip.js.sessiondialog.dispose.md) | | | -| [info(delegate, options)](./sip.js.sessiondialog.info.md) | | An INFO request can be associated with an Info Package (see Section 5), or associated with a legacy INFO usage (see Section 2).The construction of the INFO request is the same as any other non-target refresh request within an existing invite dialog usage as described in Section 12.2 of RFC 3261. https://tools.ietf.org/html/rfc6086\#section-4.2.1 | -| [invite(delegate, options)](./sip.js.sessiondialog.invite.md) | | Modifying an Existing SessionA successful INVITE request (see Section 13) establishes both a dialog between two user agents and a session using the offer-answer model. Section 12 explains how to modify an existing dialog using a target refresh request (for example, changing the remote target URI of the dialog). This section describes how to modify the actual session. This modification can involve changing addresses or ports, adding a media stream, deleting a media stream, and so on. This is accomplished by sending a new INVITE request within the same dialog that established the session. An INVITE request sent within an existing dialog is known as a re-INVITE.Note that a single re-INVITE can modify the dialog and the parameters of the session at the same time.Either the caller or callee can modify an existing session. https://tools.ietf.org/html/rfc3261\#section-14 | +| [info(delegate, options)](./sip.js.sessiondialog.info.md) | |

An INFO request can be associated with an Info Package (see Section 5), or associated with a legacy INFO usage (see Section 2).

The construction of the INFO request is the same as any other non-target refresh request within an existing invite dialog usage as described in Section 12.2 of RFC 3261. https://tools.ietf.org/html/rfc6086\#section-4.2.1

| +| [invite(delegate, options)](./sip.js.sessiondialog.invite.md) | |

Modifying an Existing Session

A successful INVITE request (see Section 13) establishes both a dialog between two user agents and a session using the offer-answer model. Section 12 explains how to modify an existing dialog using a target refresh request (for example, changing the remote target URI of the dialog). This section describes how to modify the actual session. This modification can involve changing addresses or ports, adding a media stream, deleting a media stream, and so on. This is accomplished by sending a new INVITE request within the same dialog that established the session. An INVITE request sent within an existing dialog is known as a re-INVITE.

Note that a single re-INVITE can modify the dialog and the parameters of the session at the same time.

Either the caller or callee can modify an existing session. https://tools.ietf.org/html/rfc3261\#section-14

| | [message(delegate, options)](./sip.js.sessiondialog.message.md) | | A UAC MAY associate a MESSAGE request with an existing dialog. If a MESSAGE request is sent within a dialog, it is "associated" with any media session or sessions associated with that dialog. https://tools.ietf.org/html/rfc3428\#section-4 | | [notify(delegate, options)](./sip.js.sessiondialog.notify.md) | | The NOTIFY mechanism defined in \[2\] MUST be used to inform the agent sending the REFER of the status of the reference. https://tools.ietf.org/html/rfc3515\#section-2.4.4 | | [prack(delegate, options)](./sip.js.sessiondialog.prack.md) | | Assuming the response is to be transmitted reliably, the UAC MUST create a new request with method PRACK. This request is sent within the dialog associated with the provisional response (indeed, the provisional response may have created the dialog). PRACK requests MAY contain bodies, which are interpreted according to their type and disposition. https://tools.ietf.org/html/rfc3262\#section-4 | diff --git a/docs/core/sip.js.sessiondialog.message.md b/docs/core/sip.js.sessiondialog.message.md index 1a13fe3c2..e696ddd98 100644 --- a/docs/core/sip.js.sessiondialog.message.md +++ b/docs/core/sip.js.sessiondialog.message.md @@ -16,10 +16,10 @@ message(delegate: OutgoingRequestDelegate, options?: RequestOptions): OutgoingMe | Parameter | Type | Description | | --- | --- | --- | -| delegate | OutgoingRequestDelegate | | -| options | RequestOptions | Options bucket. | +| delegate | [OutgoingRequestDelegate](./sip.js.outgoingrequestdelegate.md) | | +| options | [RequestOptions](./sip.js.requestoptions.md) | Options bucket. | Returns: -`OutgoingMessageRequest` +[OutgoingMessageRequest](./sip.js.outgoingmessagerequest.md) diff --git a/docs/core/sip.js.sessiondialog.notify.md b/docs/core/sip.js.sessiondialog.notify.md index 2fd1cd948..b6db47eab 100644 --- a/docs/core/sip.js.sessiondialog.notify.md +++ b/docs/core/sip.js.sessiondialog.notify.md @@ -16,10 +16,10 @@ notify(delegate?: OutgoingRequestDelegate, options?: RequestOptions): OutgoingNo | Parameter | Type | Description | | --- | --- | --- | -| delegate | OutgoingRequestDelegate | | -| options | RequestOptions | Options bucket. | +| delegate | [OutgoingRequestDelegate](./sip.js.outgoingrequestdelegate.md) | | +| options | [RequestOptions](./sip.js.requestoptions.md) | Options bucket. | Returns: -`OutgoingNotifyRequest` +[OutgoingNotifyRequest](./sip.js.outgoingnotifyrequest.md) diff --git a/docs/core/sip.js.sessiondialog.prack.md b/docs/core/sip.js.sessiondialog.prack.md index e311297e2..3a669bfd9 100644 --- a/docs/core/sip.js.sessiondialog.prack.md +++ b/docs/core/sip.js.sessiondialog.prack.md @@ -16,10 +16,10 @@ prack(delegate?: OutgoingRequestDelegate, options?: RequestOptions): OutgoingPra | Parameter | Type | Description | | --- | --- | --- | -| delegate | OutgoingRequestDelegate | | -| options | RequestOptions | Options bucket. | +| delegate | [OutgoingRequestDelegate](./sip.js.outgoingrequestdelegate.md) | | +| options | [RequestOptions](./sip.js.requestoptions.md) | Options bucket. | Returns: -`OutgoingPrackRequest` +[OutgoingPrackRequest](./sip.js.outgoingprackrequest.md) diff --git a/docs/core/sip.js.sessiondialog.receiverequest.md b/docs/core/sip.js.sessiondialog.receiverequest.md index 40e602993..f0df26e4f 100644 --- a/docs/core/sip.js.sessiondialog.receiverequest.md +++ b/docs/core/sip.js.sessiondialog.receiverequest.md @@ -16,9 +16,9 @@ receiveRequest(message: IncomingRequestMessage): void; | Parameter | Type | Description | | --- | --- | --- | -| message | IncomingRequestMessage | Incoming request message within this dialog. | +| message | [IncomingRequestMessage](./sip.js.incomingrequestmessage.md) | Incoming request message within this dialog. | Returns: -`void` +void diff --git a/docs/core/sip.js.sessiondialog.reconfirm.md b/docs/core/sip.js.sessiondialog.reconfirm.md index 7f2fad2f9..4ea83547b 100644 --- a/docs/core/sip.js.sessiondialog.reconfirm.md +++ b/docs/core/sip.js.sessiondialog.reconfirm.md @@ -13,5 +13,5 @@ reConfirm(): void; ``` Returns: -`void` +void diff --git a/docs/core/sip.js.sessiondialog.refer.md b/docs/core/sip.js.sessiondialog.refer.md index 4bef0b1e5..4ae055db5 100644 --- a/docs/core/sip.js.sessiondialog.refer.md +++ b/docs/core/sip.js.sessiondialog.refer.md @@ -16,10 +16,10 @@ refer(delegate?: OutgoingRequestDelegate, options?: RequestOptions): OutgoingRef | Parameter | Type | Description | | --- | --- | --- | -| delegate | OutgoingRequestDelegate | | -| options | RequestOptions | Options bucket. | +| delegate | [OutgoingRequestDelegate](./sip.js.outgoingrequestdelegate.md) | | +| options | [RequestOptions](./sip.js.requestoptions.md) | Options bucket. | Returns: -`OutgoingReferRequest` +[OutgoingReferRequest](./sip.js.outgoingreferrequest.md) diff --git a/docs/core/sip.js.sessiondialog.reliablesequenceguard.md b/docs/core/sip.js.sessiondialog.reliablesequenceguard.md index a189c540a..03d4ac2c8 100644 --- a/docs/core/sip.js.sessiondialog.reliablesequenceguard.md +++ b/docs/core/sip.js.sessiondialog.reliablesequenceguard.md @@ -16,9 +16,9 @@ reliableSequenceGuard(message: IncomingResponseMessage): boolean; | Parameter | Type | Description | | --- | --- | --- | -| message | IncomingResponseMessage | Incoming response message within this dialog. | +| message | [IncomingResponseMessage](./sip.js.incomingresponsemessage.md) | Incoming response message within this dialog. | Returns: -`boolean` +boolean diff --git a/docs/core/sip.js.sessiondialog.signalingstaterollback.md b/docs/core/sip.js.sessiondialog.signalingstaterollback.md index a0cd50b51..f8c43bbe0 100644 --- a/docs/core/sip.js.sessiondialog.signalingstaterollback.md +++ b/docs/core/sip.js.sessiondialog.signalingstaterollback.md @@ -13,5 +13,5 @@ signalingStateRollback(): void; ``` Returns: -`void` +void diff --git a/docs/core/sip.js.sessiondialog.signalingstatetransition.md b/docs/core/sip.js.sessiondialog.signalingstatetransition.md index a937be15e..e7788ef21 100644 --- a/docs/core/sip.js.sessiondialog.signalingstatetransition.md +++ b/docs/core/sip.js.sessiondialog.signalingstatetransition.md @@ -16,9 +16,9 @@ signalingStateTransition(message: IncomingRequestMessage | IncomingResponseMessa | Parameter | Type | Description | | --- | --- | --- | -| message | IncomingRequestMessage | IncomingResponseMessage | OutgoingRequestMessage | Body | The message to base the update off of. | +| message | [IncomingRequestMessage](./sip.js.incomingrequestmessage.md) \| [IncomingResponseMessage](./sip.js.incomingresponsemessage.md) \| [OutgoingRequestMessage](./sip.js.outgoingrequestmessage.md) \| [Body](./sip.js.body.md) | The message to base the update off of. | Returns: -`void` +void diff --git a/docs/core/sip.js.signalingstate.md b/docs/core/sip.js.signalingstate.md index e5c6f6cd0..1d69f14ad 100644 --- a/docs/core/sip.js.signalingstate.md +++ b/docs/core/sip.js.signalingstate.md @@ -36,7 +36,6 @@ export declare enum SignalingState 6. UPDATE Req. 2xx UPDATE Resp. RFC 3311 N Y Y Table 1: Summary of SIP Usage of the Offer/Answer Model - ``` https://tools.ietf.org/html/rfc6337\#section-2.2 diff --git a/docs/core/sip.js.subscribeuseragentclient._constructor_.md b/docs/core/sip.js.subscribeuseragentclient._constructor_.md index 964145fa4..799e1eb1b 100644 --- a/docs/core/sip.js.subscribeuseragentclient._constructor_.md +++ b/docs/core/sip.js.subscribeuseragentclient._constructor_.md @@ -16,7 +16,7 @@ constructor(core: UserAgentCore, message: OutgoingRequestMessage, delegate?: Out | Parameter | Type | Description | | --- | --- | --- | -| core | UserAgentCore | | -| message | OutgoingRequestMessage | | -| delegate | OutgoingSubscribeRequestDelegate | | +| core | [UserAgentCore](./sip.js.useragentcore.md) | | +| message | [OutgoingRequestMessage](./sip.js.outgoingrequestmessage.md) | | +| delegate | [OutgoingSubscribeRequestDelegate](./sip.js.outgoingsubscriberequestdelegate.md) | | diff --git a/docs/core/sip.js.subscribeuseragentclient.dispose.md b/docs/core/sip.js.subscribeuseragentclient.dispose.md index 510ef7901..370495f7a 100644 --- a/docs/core/sip.js.subscribeuseragentclient.dispose.md +++ b/docs/core/sip.js.subscribeuseragentclient.dispose.md @@ -13,5 +13,5 @@ dispose(): void; ``` Returns: -`void` +void diff --git a/docs/core/sip.js.subscribeuseragentclient.md b/docs/core/sip.js.subscribeuseragentclient.md index 7fd784290..2fe401006 100644 --- a/docs/core/sip.js.subscribeuseragentclient.md +++ b/docs/core/sip.js.subscribeuseragentclient.md @@ -11,6 +11,9 @@ SUBSCRIBE UAC. ```typescript export declare class SubscribeUserAgentClient extends UserAgentClient implements OutgoingSubscribeRequest ``` +Extends: [UserAgentClient](./sip.js.useragentclient.md) + +Implements: [OutgoingSubscribeRequest](./sip.js.outgoingsubscriberequest.md) ## Remarks @@ -28,7 +31,7 @@ User agent client for installation of a single subscription per SUBSCRIBE reques | Property | Modifiers | Type | Description | | --- | --- | --- | --- | -| [delegate](./sip.js.subscribeuseragentclient.delegate.md) | | OutgoingSubscribeRequestDelegate | undefined | | +| [delegate](./sip.js.subscribeuseragentclient.delegate.md) | | [OutgoingSubscribeRequestDelegate](./sip.js.outgoingsubscriberequestdelegate.md) \| undefined | | ## Methods diff --git a/docs/core/sip.js.subscribeuseragentclient.onnotify.md b/docs/core/sip.js.subscribeuseragentclient.onnotify.md index c1523c893..e31df8d3d 100644 --- a/docs/core/sip.js.subscribeuseragentclient.onnotify.md +++ b/docs/core/sip.js.subscribeuseragentclient.onnotify.md @@ -16,9 +16,9 @@ onNotify(uas: NotifyUserAgentServer): void; | Parameter | Type | Description | | --- | --- | --- | -| uas | NotifyUserAgentServer | User agent server handling the subscription creating NOTIFY. | +| uas | [NotifyUserAgentServer](./sip.js.notifyuseragentserver.md) | User agent server handling the subscription creating NOTIFY. | Returns: -`void` +void diff --git a/docs/core/sip.js.subscribeuseragentclient.receiveresponse.md b/docs/core/sip.js.subscribeuseragentclient.receiveresponse.md index b8e9ef2b2..0cfef8057 100644 --- a/docs/core/sip.js.subscribeuseragentclient.receiveresponse.md +++ b/docs/core/sip.js.subscribeuseragentclient.receiveresponse.md @@ -16,9 +16,9 @@ protected receiveResponse(message: IncomingResponseMessage): void; | Parameter | Type | Description | | --- | --- | --- | -| message | IncomingResponseMessage | Incoming response message. | +| message | [IncomingResponseMessage](./sip.js.incomingresponsemessage.md) | Incoming response message. | Returns: -`void` +void diff --git a/docs/core/sip.js.subscribeuseragentclient.waitnotifystart.md b/docs/core/sip.js.subscribeuseragentclient.waitnotifystart.md index 1742e0fe7..0b0116a6d 100644 --- a/docs/core/sip.js.subscribeuseragentclient.waitnotifystart.md +++ b/docs/core/sip.js.subscribeuseragentclient.waitnotifystart.md @@ -11,5 +11,5 @@ waitNotifyStart(): void; ``` Returns: -`void` +void diff --git a/docs/core/sip.js.subscribeuseragentclient.waitnotifystop.md b/docs/core/sip.js.subscribeuseragentclient.waitnotifystop.md index 2e67235e2..383d6468e 100644 --- a/docs/core/sip.js.subscribeuseragentclient.waitnotifystop.md +++ b/docs/core/sip.js.subscribeuseragentclient.waitnotifystop.md @@ -11,5 +11,5 @@ waitNotifyStop(): void; ``` Returns: -`void` +void diff --git a/docs/core/sip.js.subscribeuseragentserver._constructor_.md b/docs/core/sip.js.subscribeuseragentserver._constructor_.md index bdcc89bee..c2979c2cc 100644 --- a/docs/core/sip.js.subscribeuseragentserver._constructor_.md +++ b/docs/core/sip.js.subscribeuseragentserver._constructor_.md @@ -16,7 +16,7 @@ constructor(core: UserAgentCore, message: IncomingRequestMessage, delegate?: Inc | Parameter | Type | Description | | --- | --- | --- | -| core | UserAgentCore | | -| message | IncomingRequestMessage | | -| delegate | IncomingRequestDelegate | | +| core | [UserAgentCore](./sip.js.useragentcore.md) | | +| message | [IncomingRequestMessage](./sip.js.incomingrequestmessage.md) | | +| delegate | [IncomingRequestDelegate](./sip.js.incomingrequestdelegate.md) | | diff --git a/docs/core/sip.js.subscribeuseragentserver.md b/docs/core/sip.js.subscribeuseragentserver.md index 00a8bbf23..ffa2d306c 100644 --- a/docs/core/sip.js.subscribeuseragentserver.md +++ b/docs/core/sip.js.subscribeuseragentserver.md @@ -11,6 +11,9 @@ SUBSCRIBE UAS. ```typescript export declare class SubscribeUserAgentServer extends UserAgentServer implements IncomingSubscribeRequest ``` +Extends: [UserAgentServer](./sip.js.useragentserver.md) + +Implements: [IncomingSubscribeRequest](./sip.js.incomingsubscriberequest.md) ## Constructors @@ -22,5 +25,5 @@ export declare class SubscribeUserAgentServer extends UserAgentServer implements | Property | Modifiers | Type | Description | | --- | --- | --- | --- | -| [core](./sip.js.subscribeuseragentserver.core.md) | | UserAgentCore | | +| [core](./sip.js.subscribeuseragentserver.core.md) | | [UserAgentCore](./sip.js.useragentcore.md) | | diff --git a/docs/core/sip.js.subscription.dispose.md b/docs/core/sip.js.subscription.dispose.md index 5357ac987..124fa9e03 100644 --- a/docs/core/sip.js.subscription.dispose.md +++ b/docs/core/sip.js.subscription.dispose.md @@ -13,5 +13,5 @@ dispose(): void; ``` Returns: -`void` +void diff --git a/docs/core/sip.js.subscription.md b/docs/core/sip.js.subscription.md index 74106178c..7fe23fb54 100644 --- a/docs/core/sip.js.subscription.md +++ b/docs/core/sip.js.subscription.md @@ -18,13 +18,13 @@ https://tools.ietf.org/html/rfc6665 ## Properties -| Property | Type | Description | -| --- | --- | --- | -| [autoRefresh](./sip.js.subscription.autorefresh.md) | boolean | If true, refresh subscription prior to expiration. Default is false. | -| [delegate](./sip.js.subscription.delegate.md) | SubscriptionDelegate | undefined | Subscription delegate. | -| [id](./sip.js.subscription.id.md) | string | The subscription id. | -| [subscriptionExpires](./sip.js.subscription.subscriptionexpires.md) | number | Subscription expires. Number of seconds until the subscription expires. | -| [subscriptionState](./sip.js.subscription.subscriptionstate.md) | SubscriptionState | Subscription state. | +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [autoRefresh](./sip.js.subscription.autorefresh.md) | | boolean | If true, refresh subscription prior to expiration. Default is false. | +| [delegate](./sip.js.subscription.delegate.md) | | [SubscriptionDelegate](./sip.js.subscriptiondelegate.md) \| undefined | Subscription delegate. | +| [id](./sip.js.subscription.id.md) | | string | The subscription id. | +| [subscriptionExpires](./sip.js.subscription.subscriptionexpires.md) | | number | Subscription expires. Number of seconds until the subscription expires. | +| [subscriptionState](./sip.js.subscription.subscriptionstate.md) | | [SubscriptionState](./sip.js.subscriptionstate.md) | Subscription state. | ## Methods diff --git a/docs/core/sip.js.subscription.refresh.md b/docs/core/sip.js.subscription.refresh.md index c2079c8c5..350cdd53f 100644 --- a/docs/core/sip.js.subscription.refresh.md +++ b/docs/core/sip.js.subscription.refresh.md @@ -13,5 +13,5 @@ refresh(): OutgoingSubscribeRequest; ``` Returns: -`OutgoingSubscribeRequest` +[OutgoingSubscribeRequest](./sip.js.outgoingsubscriberequest.md) diff --git a/docs/core/sip.js.subscription.subscribe.md b/docs/core/sip.js.subscription.subscribe.md index 80f88cac1..e39e6f0ae 100644 --- a/docs/core/sip.js.subscription.subscribe.md +++ b/docs/core/sip.js.subscription.subscribe.md @@ -16,10 +16,10 @@ subscribe(delegate?: OutgoingSubscribeRequestDelegate, options?: RequestOptions) | Parameter | Type | Description | | --- | --- | --- | -| delegate | OutgoingSubscribeRequestDelegate | Request delegate. | -| options | RequestOptions | Options bucket | +| delegate | [OutgoingSubscribeRequestDelegate](./sip.js.outgoingsubscriberequestdelegate.md) | Request delegate. | +| options | [RequestOptions](./sip.js.requestoptions.md) | Options bucket | Returns: -`OutgoingSubscribeRequest` +[OutgoingSubscribeRequest](./sip.js.outgoingsubscriberequest.md) diff --git a/docs/core/sip.js.subscription.unsubscribe.md b/docs/core/sip.js.subscription.unsubscribe.md index 544ef1c96..da9875cee 100644 --- a/docs/core/sip.js.subscription.unsubscribe.md +++ b/docs/core/sip.js.subscription.unsubscribe.md @@ -13,5 +13,5 @@ unsubscribe(): OutgoingSubscribeRequest; ``` Returns: -`OutgoingSubscribeRequest` +[OutgoingSubscribeRequest](./sip.js.outgoingsubscriberequest.md) diff --git a/docs/core/sip.js.subscriptiondelegate.onnotify.md b/docs/core/sip.js.subscriptiondelegate.onnotify.md index 21cf35f0d..96ecf6499 100644 --- a/docs/core/sip.js.subscriptiondelegate.onnotify.md +++ b/docs/core/sip.js.subscriptiondelegate.onnotify.md @@ -16,9 +16,9 @@ onNotify?(request: IncomingNotifyRequest): void; | Parameter | Type | Description | | --- | --- | --- | -| request | IncomingNotifyRequest | Incoming NOTIFY request. | +| request | [IncomingNotifyRequest](./sip.js.incomingnotifyrequest.md) | Incoming NOTIFY request. | Returns: -`void` +void diff --git a/docs/core/sip.js.subscriptiondelegate.onrefresh.md b/docs/core/sip.js.subscriptiondelegate.onrefresh.md index 11288cea8..09c8a6d64 100644 --- a/docs/core/sip.js.subscriptiondelegate.onrefresh.md +++ b/docs/core/sip.js.subscriptiondelegate.onrefresh.md @@ -16,9 +16,9 @@ onRefresh?(request: OutgoingSubscribeRequest): void; | Parameter | Type | Description | | --- | --- | --- | -| request | OutgoingSubscribeRequest | Outgoing SUBSCRIBE request. | +| request | [OutgoingSubscribeRequest](./sip.js.outgoingsubscriberequest.md) | Outgoing SUBSCRIBE request. | Returns: -`void` +void diff --git a/docs/core/sip.js.subscriptiondelegate.onterminated.md b/docs/core/sip.js.subscriptiondelegate.onterminated.md index 91772b756..d433f26bb 100644 --- a/docs/core/sip.js.subscriptiondelegate.onterminated.md +++ b/docs/core/sip.js.subscriptiondelegate.onterminated.md @@ -13,5 +13,5 @@ onTerminated?(): void; ``` Returns: -`void` +void diff --git a/docs/core/sip.js.subscriptiondialog._constructor_.md b/docs/core/sip.js.subscriptiondialog._constructor_.md index 747b8e5cb..091f7d7da 100644 --- a/docs/core/sip.js.subscriptiondialog._constructor_.md +++ b/docs/core/sip.js.subscriptiondialog._constructor_.md @@ -16,10 +16,10 @@ constructor(subscriptionEvent: string, subscriptionExpires: number, subscription | Parameter | Type | Description | | --- | --- | --- | -| subscriptionEvent | string | | -| subscriptionExpires | number | | -| subscriptionState | SubscriptionState | | -| core | UserAgentCore | | -| state | DialogState | | -| delegate | SubscriptionDelegate | | +| subscriptionEvent | string | | +| subscriptionExpires | number | | +| subscriptionState | [SubscriptionState](./sip.js.subscriptionstate.md) | | +| core | [UserAgentCore](./sip.js.useragentcore.md) | | +| state | [DialogState](./sip.js.dialogstate.md) | | +| delegate | [SubscriptionDelegate](./sip.js.subscriptiondelegate.md) | | diff --git a/docs/core/sip.js.subscriptiondialog.dispose.md b/docs/core/sip.js.subscriptiondialog.dispose.md index 88da06d52..7338684d5 100644 --- a/docs/core/sip.js.subscriptiondialog.dispose.md +++ b/docs/core/sip.js.subscriptiondialog.dispose.md @@ -11,5 +11,5 @@ dispose(): void; ``` Returns: -`void` +void diff --git a/docs/core/sip.js.subscriptiondialog.initialdialogstateforsubscription.md b/docs/core/sip.js.subscriptiondialog.initialdialogstateforsubscription.md index ef6531254..41a99eec4 100644 --- a/docs/core/sip.js.subscriptiondialog.initialdialogstateforsubscription.md +++ b/docs/core/sip.js.subscriptiondialog.initialdialogstateforsubscription.md @@ -16,10 +16,10 @@ static initialDialogStateForSubscription(outgoingSubscribeRequestMessage: Outgoi | Parameter | Type | Description | | --- | --- | --- | -| outgoingSubscribeRequestMessage | OutgoingRequestMessage | | -| incomingNotifyRequestMessage | IncomingRequestMessage | | +| outgoingSubscribeRequestMessage | [OutgoingRequestMessage](./sip.js.outgoingrequestmessage.md) | | +| incomingNotifyRequestMessage | [IncomingRequestMessage](./sip.js.incomingrequestmessage.md) | | Returns: -`DialogState` +[DialogState](./sip.js.dialogstate.md) diff --git a/docs/core/sip.js.subscriptiondialog.md b/docs/core/sip.js.subscriptiondialog.md index d03a528de..e6128ee6b 100644 --- a/docs/core/sip.js.subscriptiondialog.md +++ b/docs/core/sip.js.subscriptiondialog.md @@ -11,6 +11,9 @@ Subscription Dialog. ```typescript export declare class SubscriptionDialog extends Dialog implements Subscription ``` +Extends: [Dialog](./sip.js.dialog.md) + +Implements: [Subscription](./sip.js.subscription.md) ## Remarks @@ -36,13 +39,13 @@ https://tools.ietf.org/html/rfc6665 | Property | Modifiers | Type | Description | | --- | --- | --- | --- | -| [autoRefresh](./sip.js.subscriptiondialog.autorefresh.md) | | boolean | | -| [delegate](./sip.js.subscriptiondialog.delegate.md) | | SubscriptionDelegate | undefined | | -| [subscriptionEvent](./sip.js.subscriptiondialog.subscriptionevent.md) | | string | | -| [subscriptionExpires](./sip.js.subscriptiondialog.subscriptionexpires.md) | | number | Number of seconds until subscription expires. | -| [subscriptionExpiresInitial](./sip.js.subscriptiondialog.subscriptionexpiresinitial.md) | | number | | -| [subscriptionRefresh](./sip.js.subscriptiondialog.subscriptionrefresh.md) | | number | undefined | Number of seconds until subscription auto refresh. | -| [subscriptionState](./sip.js.subscriptiondialog.subscriptionstate.md) | | SubscriptionState | | +| [autoRefresh](./sip.js.subscriptiondialog.autorefresh.md) | | boolean | | +| [delegate](./sip.js.subscriptiondialog.delegate.md) | | [SubscriptionDelegate](./sip.js.subscriptiondelegate.md) \| undefined | | +| [subscriptionEvent](./sip.js.subscriptiondialog.subscriptionevent.md) | | string | | +| [subscriptionExpires](./sip.js.subscriptiondialog.subscriptionexpires.md) | | number | Number of seconds until subscription expires. | +| [subscriptionExpiresInitial](./sip.js.subscriptiondialog.subscriptionexpiresinitial.md) | | number | | +| [subscriptionRefresh](./sip.js.subscriptiondialog.subscriptionrefresh.md) | | number \| undefined | Number of seconds until subscription auto refresh. | +| [subscriptionState](./sip.js.subscriptiondialog.subscriptionstate.md) | | [SubscriptionState](./sip.js.subscriptionstate.md) | | ## Methods diff --git a/docs/core/sip.js.subscriptiondialog.receiverequest.md b/docs/core/sip.js.subscriptiondialog.receiverequest.md index 00ef7a7f4..b56d38cb1 100644 --- a/docs/core/sip.js.subscriptiondialog.receiverequest.md +++ b/docs/core/sip.js.subscriptiondialog.receiverequest.md @@ -16,9 +16,9 @@ receiveRequest(message: IncomingRequestMessage): void; | Parameter | Type | Description | | --- | --- | --- | -| message | IncomingRequestMessage | The incoming request message. | +| message | [IncomingRequestMessage](./sip.js.incomingrequestmessage.md) | The incoming request message. | Returns: -`void` +void diff --git a/docs/core/sip.js.subscriptiondialog.refresh.md b/docs/core/sip.js.subscriptiondialog.refresh.md index a8c782710..9f71bece4 100644 --- a/docs/core/sip.js.subscriptiondialog.refresh.md +++ b/docs/core/sip.js.subscriptiondialog.refresh.md @@ -13,5 +13,5 @@ refresh(): OutgoingSubscribeRequest; ``` Returns: -`OutgoingSubscribeRequest` +[OutgoingSubscribeRequest](./sip.js.outgoingsubscriberequest.md) diff --git a/docs/core/sip.js.subscriptiondialog.subscribe.md b/docs/core/sip.js.subscriptiondialog.subscribe.md index 5bc4af16e..ecc351539 100644 --- a/docs/core/sip.js.subscriptiondialog.subscribe.md +++ b/docs/core/sip.js.subscriptiondialog.subscribe.md @@ -16,10 +16,10 @@ subscribe(delegate?: OutgoingSubscribeRequestDelegate, options?: RequestOptions) | Parameter | Type | Description | | --- | --- | --- | -| delegate | OutgoingSubscribeRequestDelegate | Delegate to handle responses. | -| options | RequestOptions | Options bucket. | +| delegate | [OutgoingSubscribeRequestDelegate](./sip.js.outgoingsubscriberequestdelegate.md) | Delegate to handle responses. | +| options | [RequestOptions](./sip.js.requestoptions.md) | Options bucket. | Returns: -`OutgoingSubscribeRequest` +[OutgoingSubscribeRequest](./sip.js.outgoingsubscriberequest.md) diff --git a/docs/core/sip.js.subscriptiondialog.terminate.md b/docs/core/sip.js.subscriptiondialog.terminate.md index b9b98b569..86e673fae 100644 --- a/docs/core/sip.js.subscriptiondialog.terminate.md +++ b/docs/core/sip.js.subscriptiondialog.terminate.md @@ -13,5 +13,5 @@ terminate(): void; ``` Returns: -`void` +void diff --git a/docs/core/sip.js.subscriptiondialog.unsubscribe.md b/docs/core/sip.js.subscriptiondialog.unsubscribe.md index 20176458c..f8e6cff44 100644 --- a/docs/core/sip.js.subscriptiondialog.unsubscribe.md +++ b/docs/core/sip.js.subscriptiondialog.unsubscribe.md @@ -13,5 +13,5 @@ unsubscribe(): OutgoingSubscribeRequest; ``` Returns: -`OutgoingSubscribeRequest` +[OutgoingSubscribeRequest](./sip.js.outgoingsubscriberequest.md) diff --git a/docs/core/sip.js.transaction._constructor_.md b/docs/core/sip.js.transaction._constructor_.md index 038fe301b..2113f2fc9 100644 --- a/docs/core/sip.js.transaction._constructor_.md +++ b/docs/core/sip.js.transaction._constructor_.md @@ -16,9 +16,9 @@ protected constructor(_transport: Transport, _user: TransactionUser, _id: string | Parameter | Type | Description | | --- | --- | --- | -| \_transport | Transport | | -| \_user | TransactionUser | | -| \_id | string | | -| \_state | TransactionState | | -| loggerCategory | string | | +| \_transport | [Transport](./sip.js.transport.md) | | +| \_user | [TransactionUser](./sip.js.transactionuser.md) | | +| \_id | string | | +| \_state | [TransactionState](./sip.js.transactionstate.md) | | +| loggerCategory | string | | diff --git a/docs/core/sip.js.transaction.addstatechangelistener.md b/docs/core/sip.js.transaction.addstatechangelistener.md index fb93b87d0..94a6dc7d4 100644 --- a/docs/core/sip.js.transaction.addstatechangelistener.md +++ b/docs/core/sip.js.transaction.addstatechangelistener.md @@ -18,10 +18,10 @@ addStateChangeListener(listener: () => void, options?: { | Parameter | Type | Description | | --- | --- | --- | -| listener | () => void | Callback function. | -| options | {
once?: boolean;
} | An options object that specifies characteristics about the listener. If once true, indicates that the listener should be invoked at most once after being added. If once true, the listener would be automatically removed when invoked. | +| listener | () => void | Callback function. | +| options | { once?: boolean; } | An options object that specifies characteristics about the listener. If once true, indicates that the listener should be invoked at most once after being added. If once true, the listener would be automatically removed when invoked. | Returns: -`void` +void diff --git a/docs/core/sip.js.transaction.dispose.md b/docs/core/sip.js.transaction.dispose.md index 421c9e0d5..ca8b94556 100644 --- a/docs/core/sip.js.transaction.dispose.md +++ b/docs/core/sip.js.transaction.dispose.md @@ -13,5 +13,5 @@ dispose(): void; ``` Returns: -`void` +void diff --git a/docs/core/sip.js.transaction.logtransporterror.md b/docs/core/sip.js.transaction.logtransporterror.md index 3a7dd5143..f79d20a6f 100644 --- a/docs/core/sip.js.transaction.logtransporterror.md +++ b/docs/core/sip.js.transaction.logtransporterror.md @@ -14,10 +14,10 @@ protected logTransportError(error: TransportError, message: string): void; | Parameter | Type | Description | | --- | --- | --- | -| error | TransportError | | -| message | string | | +| error | [TransportError](./sip.js.transporterror.md) | | +| message | string | | Returns: -`void` +void diff --git a/docs/core/sip.js.transaction.md b/docs/core/sip.js.transaction.md index 787263bbc..1ba59800c 100644 --- a/docs/core/sip.js.transaction.md +++ b/docs/core/sip.js.transaction.md @@ -26,11 +26,11 @@ SIP is a transactional protocol: interactions between components take place in a | Property | Modifiers | Type | Description | | --- | --- | --- | --- | -| [id](./sip.js.transaction.id.md) | | string | Transaction id. | -| [kind](./sip.js.transaction.kind.md) | | string | Transaction kind. Deprecated. | -| [logger](./sip.js.transaction.logger.md) | | Logger | | -| [state](./sip.js.transaction.state.md) | | TransactionState | Transaction state. | -| [transport](./sip.js.transaction.transport.md) | | Transport | Transaction transport. | +| [id](./sip.js.transaction.id.md) | | string | Transaction id. | +| [kind](./sip.js.transaction.kind.md) | | string | Transaction kind. Deprecated. | +| [logger](./sip.js.transaction.logger.md) | | [Logger](./sip.js.logger.md) | | +| [state](./sip.js.transaction.state.md) | | [TransactionState](./sip.js.transactionstate.md) | Transaction state. | +| [transport](./sip.js.transaction.transport.md) | | [Transport](./sip.js.transport.md) | Transaction transport. | ## Methods diff --git a/docs/core/sip.js.transaction.ontransporterror.md b/docs/core/sip.js.transaction.ontransporterror.md index b916de464..b10652bba 100644 --- a/docs/core/sip.js.transaction.ontransporterror.md +++ b/docs/core/sip.js.transaction.ontransporterror.md @@ -14,9 +14,9 @@ protected abstract onTransportError(error: TransportError): void; | Parameter | Type | Description | | --- | --- | --- | -| error | TransportError | | +| error | [TransportError](./sip.js.transporterror.md) | | Returns: -`void` +void diff --git a/docs/core/sip.js.transaction.removestatechangelistener.md b/docs/core/sip.js.transaction.removestatechangelistener.md index cd5ff7aab..200301aa4 100644 --- a/docs/core/sip.js.transaction.removestatechangelistener.md +++ b/docs/core/sip.js.transaction.removestatechangelistener.md @@ -16,9 +16,9 @@ removeStateChangeListener(listener: () => void): void; | Parameter | Type | Description | | --- | --- | --- | -| listener | () => void | Callback function. | +| listener | () => void | Callback function. | Returns: -`void` +void diff --git a/docs/core/sip.js.transaction.send.md b/docs/core/sip.js.transaction.send.md index a3adfbb04..9967d9527 100644 --- a/docs/core/sip.js.transaction.send.md +++ b/docs/core/sip.js.transaction.send.md @@ -16,11 +16,11 @@ protected send(message: string): Promise; | Parameter | Type | Description | | --- | --- | --- | -| message | string | | +| message | string | | Returns: -`Promise` +Promise<void> Rejects with `TransportError` if transport fails. diff --git a/docs/core/sip.js.transaction.setstate.md b/docs/core/sip.js.transaction.setstate.md index 4b8be6b5c..80b93831d 100644 --- a/docs/core/sip.js.transaction.setstate.md +++ b/docs/core/sip.js.transaction.setstate.md @@ -14,9 +14,9 @@ protected setState(state: TransactionState): void; | Parameter | Type | Description | | --- | --- | --- | -| state | TransactionState | | +| state | [TransactionState](./sip.js.transactionstate.md) | | Returns: -`void` +void diff --git a/docs/core/sip.js.transaction.typetostring.md b/docs/core/sip.js.transaction.typetostring.md index 4cb8c7030..2f1642b34 100644 --- a/docs/core/sip.js.transaction.typetostring.md +++ b/docs/core/sip.js.transaction.typetostring.md @@ -11,5 +11,5 @@ protected typeToString(): string; ``` Returns: -`string` +string diff --git a/docs/core/sip.js.transactionstateerror._constructor_.md b/docs/core/sip.js.transactionstateerror._constructor_.md index 3c50b1d61..a55b379d6 100644 --- a/docs/core/sip.js.transactionstateerror._constructor_.md +++ b/docs/core/sip.js.transactionstateerror._constructor_.md @@ -16,5 +16,5 @@ constructor(message?: string); | Parameter | Type | Description | | --- | --- | --- | -| message | string | | +| message | string | | diff --git a/docs/core/sip.js.transactionstateerror.md b/docs/core/sip.js.transactionstateerror.md index 3bc4756a7..863845b7b 100644 --- a/docs/core/sip.js.transactionstateerror.md +++ b/docs/core/sip.js.transactionstateerror.md @@ -11,6 +11,7 @@ Indicates that the operation could not be completed given the current transactio ```typescript export declare class TransactionStateError extends Exception ``` +Extends: [Exception](./sip.js.exception.md) ## Constructors diff --git a/docs/core/sip.js.transactionuser.md b/docs/core/sip.js.transactionuser.md index 09110a8a9..4905be7a5 100644 --- a/docs/core/sip.js.transactionuser.md +++ b/docs/core/sip.js.transactionuser.md @@ -18,9 +18,9 @@ The layer of protocol processing that resides above the transaction layer. Trans ## Properties -| Property | Type | Description | -| --- | --- | --- | -| [loggerFactory](./sip.js.transactionuser.loggerfactory.md) | LoggerFactory | Logger factory. | -| [onStateChange](./sip.js.transactionuser.onstatechange.md) | (newState: TransactionState) => void | Callback for notification of transaction state changes.Not called when transaction is constructed, so there is no notification of entering the initial transaction state. Otherwise, called once for each transaction state change. State changes adhere to the following RFCs. https://tools.ietf.org/html/rfc3261\#section-17 https://tools.ietf.org/html/rfc6026 | -| [onTransportError](./sip.js.transactionuser.ontransporterror.md) | (error: TransportError) => void | Callback for notification of a transport error.If a fatal transport error is reported by the transport layer (generally, due to fatal ICMP errors in UDP or connection failures in TCP), the condition MUST be treated as a 503 (Service Unavailable) status code. https://tools.ietf.org/html/rfc3261\#section-8.1.3.1 https://tools.ietf.org/html/rfc3261\#section-17.1.4 https://tools.ietf.org/html/rfc3261\#section-17.2.4 https://tools.ietf.org/html/rfc6026 | +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [loggerFactory](./sip.js.transactionuser.loggerfactory.md) | | [LoggerFactory](./sip.js.loggerfactory.md) | Logger factory. | +| [onStateChange](./sip.js.transactionuser.onstatechange.md) | | (newState: [TransactionState](./sip.js.transactionstate.md)) => void |

Callback for notification of transaction state changes.

Not called when transaction is constructed, so there is no notification of entering the initial transaction state. Otherwise, called once for each transaction state change. State changes adhere to the following RFCs. https://tools.ietf.org/html/rfc3261\#section-17 https://tools.ietf.org/html/rfc6026

| +| [onTransportError](./sip.js.transactionuser.ontransporterror.md) | | (error: [TransportError](./sip.js.transporterror.md)) => void |

Callback for notification of a transport error.

If a fatal transport error is reported by the transport layer (generally, due to fatal ICMP errors in UDP or connection failures in TCP), the condition MUST be treated as a 503 (Service Unavailable) status code. https://tools.ietf.org/html/rfc3261\#section-8.1.3.1 https://tools.ietf.org/html/rfc3261\#section-17.1.4 https://tools.ietf.org/html/rfc3261\#section-17.2.4 https://tools.ietf.org/html/rfc6026

| diff --git a/docs/core/sip.js.transport.md b/docs/core/sip.js.transport.md index 39b6b8fc7..bfbd04707 100644 --- a/docs/core/sip.js.transport.md +++ b/docs/core/sip.js.transport.md @@ -18,9 +18,9 @@ The transport layer is responsible for the actual transmission of requests and r ## Properties -| Property | Type | Description | -| --- | --- | --- | -| [protocol](./sip.js.transport.protocol.md) | string | The transport protocol. | +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [protocol](./sip.js.transport.protocol.md) | | string | The transport protocol. | ## Methods diff --git a/docs/core/sip.js.transport.send.md b/docs/core/sip.js.transport.send.md index ae6e15327..d452dd21e 100644 --- a/docs/core/sip.js.transport.send.md +++ b/docs/core/sip.js.transport.send.md @@ -16,11 +16,11 @@ send(message: string): Promise; | Parameter | Type | Description | | --- | --- | --- | -| message | string | Message to send. | +| message | string | Message to send. | Returns: -`Promise` +Promise<void> ## Remarks diff --git a/docs/core/sip.js.transporterror._constructor_.md b/docs/core/sip.js.transporterror._constructor_.md index d42be917f..19f4736f6 100644 --- a/docs/core/sip.js.transporterror._constructor_.md +++ b/docs/core/sip.js.transporterror._constructor_.md @@ -16,5 +16,5 @@ constructor(message?: string); | Parameter | Type | Description | | --- | --- | --- | -| message | string | | +| message | string | | diff --git a/docs/core/sip.js.transporterror.md b/docs/core/sip.js.transporterror.md index b0db9af1d..0cdfa32d3 100644 --- a/docs/core/sip.js.transporterror.md +++ b/docs/core/sip.js.transporterror.md @@ -11,6 +11,7 @@ Transport error. ```typescript export declare class TransportError extends Exception ``` +Extends: [Exception](./sip.js.exception.md) ## Constructors diff --git a/docs/core/sip.js.uri._constructor_.md b/docs/core/sip.js.uri._constructor_.md index 4ddbd4055..de406b131 100644 --- a/docs/core/sip.js.uri._constructor_.md +++ b/docs/core/sip.js.uri._constructor_.md @@ -20,10 +20,10 @@ constructor(scheme: string | undefined, user: string, host: string, port?: numbe | Parameter | Type | Description | | --- | --- | --- | -| scheme | string | undefined | | -| user | string | | -| host | string | | -| port | number | | -| parameters | {
[name: string]: string | number | null;
} | | -| headers | {
[name: string]: Array<string>;
} | | +| scheme | string \| undefined | | +| user | string | | +| host | string | | +| port | number | | +| parameters | { \[name: string\]: string \| number \| null; } | | +| headers | { \[name: string\]: Array<string>; } | | diff --git a/docs/core/sip.js.uri.clearheaders.md b/docs/core/sip.js.uri.clearheaders.md index ff419c5d0..d8a5c4e29 100644 --- a/docs/core/sip.js.uri.clearheaders.md +++ b/docs/core/sip.js.uri.clearheaders.md @@ -11,5 +11,5 @@ clearHeaders(): void; ``` Returns: -`void` +void diff --git a/docs/core/sip.js.uri.clone.md b/docs/core/sip.js.uri.clone.md index 5c56fc095..56daa10ee 100644 --- a/docs/core/sip.js.uri.clone.md +++ b/docs/core/sip.js.uri.clone.md @@ -11,5 +11,5 @@ clone(): URI; ``` Returns: -`URI` +[URI](./sip.js.uri.md) diff --git a/docs/core/sip.js.uri.deleteheader.md b/docs/core/sip.js.uri.deleteheader.md index ddac5c514..ee9f10de6 100644 --- a/docs/core/sip.js.uri.deleteheader.md +++ b/docs/core/sip.js.uri.deleteheader.md @@ -14,9 +14,9 @@ deleteHeader(header: string): Array | undefined; | Parameter | Type | Description | | --- | --- | --- | -| header | string | | +| header | string | | Returns: -`Array | undefined` +Array<string> \| undefined diff --git a/docs/core/sip.js.uri.getheader.md b/docs/core/sip.js.uri.getheader.md index 9e0d6597c..797af5de5 100644 --- a/docs/core/sip.js.uri.getheader.md +++ b/docs/core/sip.js.uri.getheader.md @@ -14,9 +14,9 @@ getHeader(name: string): Array | undefined; | Parameter | Type | Description | | --- | --- | --- | -| name | string | | +| name | string | | Returns: -`Array | undefined` +Array<string> \| undefined diff --git a/docs/core/sip.js.uri.hasheader.md b/docs/core/sip.js.uri.hasheader.md index 9a360403e..65199ba7e 100644 --- a/docs/core/sip.js.uri.hasheader.md +++ b/docs/core/sip.js.uri.hasheader.md @@ -14,9 +14,9 @@ hasHeader(name: string): boolean; | Parameter | Type | Description | | --- | --- | --- | -| name | string | | +| name | string | | Returns: -`boolean` +boolean diff --git a/docs/core/sip.js.uri.md b/docs/core/sip.js.uri.md index dc24952e0..bb8b5add5 100644 --- a/docs/core/sip.js.uri.md +++ b/docs/core/sip.js.uri.md @@ -11,6 +11,7 @@ URI. ```typescript export declare class URI extends Parameters ``` +Extends: Parameters ## Constructors @@ -22,12 +23,12 @@ export declare class URI extends Parameters | Property | Modifiers | Type | Description | | --- | --- | --- | --- | -| [aor](./sip.js.uri.aor.md) | | string | | -| [headers](./sip.js.uri.headers.md) | | {
[name: string]: Array<string>;
} | | -| [host](./sip.js.uri.host.md) | | string | | -| [port](./sip.js.uri.port.md) | | number | undefined | | -| [scheme](./sip.js.uri.scheme.md) | | string | | -| [user](./sip.js.uri.user.md) | | string | undefined | | +| [aor](./sip.js.uri.aor.md) | | string | | +| [headers](./sip.js.uri.headers.md) | | { \[name: string\]: Array<string>; } | | +| [host](./sip.js.uri.host.md) | | string | | +| [port](./sip.js.uri.port.md) | | number \| undefined | | +| [scheme](./sip.js.uri.scheme.md) | | string | | +| [user](./sip.js.uri.user.md) | | string \| undefined | | ## Methods diff --git a/docs/core/sip.js.uri.setheader.md b/docs/core/sip.js.uri.setheader.md index cac3c4f16..5342ccfb0 100644 --- a/docs/core/sip.js.uri.setheader.md +++ b/docs/core/sip.js.uri.setheader.md @@ -14,10 +14,10 @@ setHeader(name: string, value: Array | string): void; | Parameter | Type | Description | | --- | --- | --- | -| name | string | | -| value | Array<string> | string | | +| name | string | | +| value | Array<string> \| string | | Returns: -`void` +void diff --git a/docs/core/sip.js.uri.toraw.md b/docs/core/sip.js.uri.toraw.md index 220452f60..ee17b9566 100644 --- a/docs/core/sip.js.uri.toraw.md +++ b/docs/core/sip.js.uri.toraw.md @@ -11,5 +11,5 @@ toRaw(): string; ``` Returns: -`string` +string diff --git a/docs/core/sip.js.uri.tostring.md b/docs/core/sip.js.uri.tostring.md index e64ecfe17..33f215671 100644 --- a/docs/core/sip.js.uri.tostring.md +++ b/docs/core/sip.js.uri.tostring.md @@ -11,5 +11,5 @@ toString(): string; ``` Returns: -`string` +string diff --git a/docs/core/sip.js.useragentclient._constructor_.md b/docs/core/sip.js.useragentclient._constructor_.md index d03f6e374..b90300111 100644 --- a/docs/core/sip.js.useragentclient._constructor_.md +++ b/docs/core/sip.js.useragentclient._constructor_.md @@ -16,8 +16,8 @@ constructor(transactionConstructor: ClientTransactionConstructor, core: UserAgen | Parameter | Type | Description | | --- | --- | --- | -| transactionConstructor | ClientTransactionConstructor | | -| core | UserAgentCore | | -| message | OutgoingRequestMessage | | -| delegate | OutgoingRequestDelegate | undefined | | +| transactionConstructor | ClientTransactionConstructor | | +| core | [UserAgentCore](./sip.js.useragentcore.md) | | +| message | [OutgoingRequestMessage](./sip.js.outgoingrequestmessage.md) | | +| delegate | [OutgoingRequestDelegate](./sip.js.outgoingrequestdelegate.md) \| undefined | | diff --git a/docs/core/sip.js.useragentclient.authenticationguard.md b/docs/core/sip.js.useragentclient.authenticationguard.md index dbae14b72..462556415 100644 --- a/docs/core/sip.js.useragentclient.authenticationguard.md +++ b/docs/core/sip.js.useragentclient.authenticationguard.md @@ -18,12 +18,12 @@ protected authenticationGuard(message: IncomingResponseMessage, dialog?: Dialog) | Parameter | Type | Description | | --- | --- | --- | -| message | IncomingResponseMessage | | -| dialog | Dialog | If defined, the dialog within which the response was received. | +| message | [IncomingResponseMessage](./sip.js.incomingresponsemessage.md) | | +| dialog | [Dialog](./sip.js.dialog.md) | If defined, the dialog within which the response was received. | Returns: -`boolean` +boolean True if the program execution is to continue in the branch in question. Otherwise the request is retried with credentials and current request processing must stop. diff --git a/docs/core/sip.js.useragentclient.cancel.md b/docs/core/sip.js.useragentclient.cancel.md index 8a5b95f5c..99ef9550e 100644 --- a/docs/core/sip.js.useragentclient.cancel.md +++ b/docs/core/sip.js.useragentclient.cancel.md @@ -16,10 +16,10 @@ cancel(reason?: string, options?: RequestOptions): OutgoingRequestMessage; | Parameter | Type | Description | | --- | --- | --- | -| reason | string | | -| options | RequestOptions | Cancel options bucket. | +| reason | string | | +| options | [RequestOptions](./sip.js.requestoptions.md) | Cancel options bucket. | Returns: -`OutgoingRequestMessage` +[OutgoingRequestMessage](./sip.js.outgoingrequestmessage.md) diff --git a/docs/core/sip.js.useragentclient.dispose.md b/docs/core/sip.js.useragentclient.dispose.md index 6d390d87d..db888d281 100644 --- a/docs/core/sip.js.useragentclient.dispose.md +++ b/docs/core/sip.js.useragentclient.dispose.md @@ -11,5 +11,5 @@ dispose(): void; ``` Returns: -`void` +void diff --git a/docs/core/sip.js.useragentclient.md b/docs/core/sip.js.useragentclient.md index 374a10c6d..a3265f2fb 100644 --- a/docs/core/sip.js.useragentclient.md +++ b/docs/core/sip.js.useragentclient.md @@ -11,6 +11,7 @@ User Agent Client (UAC). ```typescript export declare class UserAgentClient implements OutgoingRequest ``` +Implements: [OutgoingRequest](./sip.js.outgoingrequest.md) ## Remarks @@ -26,18 +27,18 @@ A user agent client is a logical entity that creates a new request, and then use | Property | Modifiers | Type | Description | | --- | --- | --- | --- | -| [core](./sip.js.useragentclient.core.md) | | UserAgentCore | | -| [delegate](./sip.js.useragentclient.delegate.md) | | OutgoingRequestDelegate | undefined | | -| [logger](./sip.js.useragentclient.logger.md) | | Logger | | -| [loggerFactory](./sip.js.useragentclient.loggerfactory.md) | | LoggerFactory | | -| [message](./sip.js.useragentclient.message.md) | | OutgoingRequestMessage | | -| [transaction](./sip.js.useragentclient.transaction.md) | | ClientTransaction | The transaction associated with this request. | +| [core](./sip.js.useragentclient.core.md) | | [UserAgentCore](./sip.js.useragentcore.md) | | +| [delegate](./sip.js.useragentclient.delegate.md) | | [OutgoingRequestDelegate](./sip.js.outgoingrequestdelegate.md) \| undefined | | +| [logger](./sip.js.useragentclient.logger.md) | | [Logger](./sip.js.logger.md) | | +| [loggerFactory](./sip.js.useragentclient.loggerfactory.md) | | [LoggerFactory](./sip.js.loggerfactory.md) | | +| [message](./sip.js.useragentclient.message.md) | | [OutgoingRequestMessage](./sip.js.outgoingrequestmessage.md) | | +| [transaction](./sip.js.useragentclient.transaction.md) | | [ClientTransaction](./sip.js.clienttransaction.md) | The transaction associated with this request. | ## Methods | Method | Modifiers | Description | | --- | --- | --- | -| [authenticationGuard(message, dialog)](./sip.js.useragentclient.authenticationguard.md) | | If a 401 (Unauthorized) or 407 (Proxy Authentication Required) response is received, the UAC SHOULD follow the authorization procedures of Section 22.2 and Section 22.3 to retry the request with credentials. https://tools.ietf.org/html/rfc3261\#section-8.1.3.5 22 Usage of HTTP Authentication https://tools.ietf.org/html/rfc3261\#section-22 22.1 Framework https://tools.ietf.org/html/rfc3261\#section-22.1 22.2 User-to-User Authentication https://tools.ietf.org/html/rfc3261\#section-22.2 22.3 Proxy-to-User Authentication https://tools.ietf.org/html/rfc3261\#section-22.3FIXME: This "guard for and retry the request with credentials" implementation is not complete and at best minimally passable. | +| [authenticationGuard(message, dialog)](./sip.js.useragentclient.authenticationguard.md) | |

If a 401 (Unauthorized) or 407 (Proxy Authentication Required) response is received, the UAC SHOULD follow the authorization procedures of Section 22.2 and Section 22.3 to retry the request with credentials. https://tools.ietf.org/html/rfc3261\#section-8.1.3.5 22 Usage of HTTP Authentication https://tools.ietf.org/html/rfc3261\#section-22 22.1 Framework https://tools.ietf.org/html/rfc3261\#section-22.1 22.2 User-to-User Authentication https://tools.ietf.org/html/rfc3261\#section-22.2 22.3 Proxy-to-User Authentication https://tools.ietf.org/html/rfc3261\#section-22.3

FIXME: This "guard for and retry the request with credentials" implementation is not complete and at best minimally passable.

| | [cancel(reason, options)](./sip.js.useragentclient.cancel.md) | | Since requests other than INVITE are responded to immediately, sending a CANCEL for a non-INVITE request would always create a race condition. A CANCEL request SHOULD NOT be sent to cancel a request other than INVITE. https://tools.ietf.org/html/rfc3261\#section-9.1 | | [dispose()](./sip.js.useragentclient.dispose.md) | | | | [onRequestTimeout()](./sip.js.useragentclient.onrequesttimeout.md) | | 8.1.3.1 Transaction Layer Errors In some cases, the response returned by the transaction layer will not be a SIP message, but rather a transaction layer error. When a timeout error is received from the transaction layer, it MUST be treated as if a 408 (Request Timeout) status code has been received. If a fatal transport error is reported by the transport layer (generally, due to fatal ICMP errors in UDP or connection failures in TCP), the condition MUST be treated as a 503 (Service Unavailable) status code. https://tools.ietf.org/html/rfc3261\#section-8.1.3.1 | diff --git a/docs/core/sip.js.useragentclient.onrequesttimeout.md b/docs/core/sip.js.useragentclient.onrequesttimeout.md index ed0571bf9..071c037c4 100644 --- a/docs/core/sip.js.useragentclient.onrequesttimeout.md +++ b/docs/core/sip.js.useragentclient.onrequesttimeout.md @@ -13,5 +13,5 @@ protected onRequestTimeout(): void; ``` Returns: -`void` +void diff --git a/docs/core/sip.js.useragentclient.ontransporterror.md b/docs/core/sip.js.useragentclient.ontransporterror.md index 373a1a8b8..2a3b7b5f4 100644 --- a/docs/core/sip.js.useragentclient.ontransporterror.md +++ b/docs/core/sip.js.useragentclient.ontransporterror.md @@ -16,9 +16,9 @@ protected onTransportError(error: TransportError): void; | Parameter | Type | Description | | --- | --- | --- | -| error | TransportError | Transport error | +| error | [TransportError](./sip.js.transporterror.md) | Transport error | Returns: -`void` +void diff --git a/docs/core/sip.js.useragentclient.receiveresponse.md b/docs/core/sip.js.useragentclient.receiveresponse.md index 8632e6e69..06e1b4a2d 100644 --- a/docs/core/sip.js.useragentclient.receiveresponse.md +++ b/docs/core/sip.js.useragentclient.receiveresponse.md @@ -16,9 +16,9 @@ protected receiveResponse(message: IncomingResponseMessage): void; | Parameter | Type | Description | | --- | --- | --- | -| message | IncomingResponseMessage | Incoming response message. | +| message | [IncomingResponseMessage](./sip.js.incomingresponsemessage.md) | Incoming response message. | Returns: -`void` +void diff --git a/docs/core/sip.js.useragentcore._constructor_.md b/docs/core/sip.js.useragentcore._constructor_.md index 3f45780da..6661f03b8 100644 --- a/docs/core/sip.js.useragentcore._constructor_.md +++ b/docs/core/sip.js.useragentcore._constructor_.md @@ -16,6 +16,6 @@ constructor(configuration: UserAgentCoreConfiguration, delegate?: UserAgentCoreD | Parameter | Type | Description | | --- | --- | --- | -| configuration | UserAgentCoreConfiguration | Configuration. | -| delegate | UserAgentCoreDelegate | Delegate. | +| configuration | [UserAgentCoreConfiguration](./sip.js.useragentcoreconfiguration.md) | Configuration. | +| delegate | [UserAgentCoreDelegate](./sip.js.useragentcoredelegate.md) | Delegate. | diff --git a/docs/core/sip.js.useragentcore.dispose.md b/docs/core/sip.js.useragentcore.dispose.md index 9b569691c..c1caeaa0c 100644 --- a/docs/core/sip.js.useragentcore.dispose.md +++ b/docs/core/sip.js.useragentcore.dispose.md @@ -13,5 +13,5 @@ dispose(): void; ``` Returns: -`void` +void diff --git a/docs/core/sip.js.useragentcore.invite.md b/docs/core/sip.js.useragentcore.invite.md index 64625028a..bbb4b2012 100644 --- a/docs/core/sip.js.useragentcore.invite.md +++ b/docs/core/sip.js.useragentcore.invite.md @@ -16,10 +16,10 @@ invite(request: OutgoingRequestMessage, delegate?: OutgoingInviteRequestDelegate | Parameter | Type | Description | | --- | --- | --- | -| request | OutgoingRequestMessage | Outgoing request. | -| delegate | OutgoingInviteRequestDelegate | Request delegate. | +| request | [OutgoingRequestMessage](./sip.js.outgoingrequestmessage.md) | Outgoing request. | +| delegate | [OutgoingInviteRequestDelegate](./sip.js.outgoinginviterequestdelegate.md) | Request delegate. | Returns: -`OutgoingInviteRequest` +[OutgoingInviteRequest](./sip.js.outgoinginviterequest.md) diff --git a/docs/core/sip.js.useragentcore.makeoutgoingrequestmessage.md b/docs/core/sip.js.useragentcore.makeoutgoingrequestmessage.md index af81dda15..03457d2d7 100644 --- a/docs/core/sip.js.useragentcore.makeoutgoingrequestmessage.md +++ b/docs/core/sip.js.useragentcore.makeoutgoingrequestmessage.md @@ -16,15 +16,15 @@ makeOutgoingRequestMessage(method: string, requestURI: URI, fromURI: URI, toURI: | Parameter | Type | Description | | --- | --- | --- | -| method | string | Method. | -| requestURI | URI | Request-URI. | -| fromURI | URI | From URI. | -| toURI | URI | To URI. | -| options | OutgoingRequestMessageOptions | Request options. | -| extraHeaders | Array<string> | Extra headers to add. | -| body | Body | Message body. | +| method | string | Method. | +| requestURI | [URI](./sip.js.uri.md) | Request-URI. | +| fromURI | [URI](./sip.js.uri.md) | From URI. | +| toURI | [URI](./sip.js.uri.md) | To URI. | +| options | [OutgoingRequestMessageOptions](./sip.js.outgoingrequestmessageoptions.md) | Request options. | +| extraHeaders | Array<string> | Extra headers to add. | +| body | [Body](./sip.js.body.md) | Message body. | Returns: -`OutgoingRequestMessage` +[OutgoingRequestMessage](./sip.js.outgoingrequestmessage.md) diff --git a/docs/core/sip.js.useragentcore.md b/docs/core/sip.js.useragentcore.md index 58e6d8a43..6fdc4437f 100644 --- a/docs/core/sip.js.useragentcore.md +++ b/docs/core/sip.js.useragentcore.md @@ -30,14 +30,14 @@ UAS Core: The set of processing functions required at a UAS that resides above t | Property | Modifiers | Type | Description | | --- | --- | --- | --- | -| [configuration](./sip.js.useragentcore.configuration.md) | | UserAgentCoreConfiguration | Configuration. | -| [delegate](./sip.js.useragentcore.delegate.md) | | UserAgentCoreDelegate | Delegate. | -| [dialogs](./sip.js.useragentcore.dialogs.md) | | Map<string, Dialog> | Dialogs. | -| [loggerFactory](./sip.js.useragentcore.loggerfactory.md) | | LoggerFactory | Logger factory. | -| [subscribers](./sip.js.useragentcore.subscribers.md) | | Map<string, SubscribeUserAgentClient> | Subscribers. | -| [transport](./sip.js.useragentcore.transport.md) | | Transport | Transport. | -| [userAgentClients](./sip.js.useragentcore.useragentclients.md) | | Map<string, UserAgentClient> | UACs. | -| [userAgentServers](./sip.js.useragentcore.useragentservers.md) | | Map<string, UserAgentServer> | UASs. | +| [configuration](./sip.js.useragentcore.configuration.md) | | [UserAgentCoreConfiguration](./sip.js.useragentcoreconfiguration.md) | Configuration. | +| [delegate](./sip.js.useragentcore.delegate.md) | | [UserAgentCoreDelegate](./sip.js.useragentcoredelegate.md) | Delegate. | +| [dialogs](./sip.js.useragentcore.dialogs.md) | | Map<string, [Dialog](./sip.js.dialog.md)> | Dialogs. | +| [loggerFactory](./sip.js.useragentcore.loggerfactory.md) | | [LoggerFactory](./sip.js.loggerfactory.md) | Logger factory. | +| [subscribers](./sip.js.useragentcore.subscribers.md) | | Map<string, [SubscribeUserAgentClient](./sip.js.subscribeuseragentclient.md)> | Subscribers. | +| [transport](./sip.js.useragentcore.transport.md) | | [Transport](./sip.js.transport.md) | Transport. | +| [userAgentClients](./sip.js.useragentcore.useragentclients.md) | | Map<string, [UserAgentClient](./sip.js.useragentclient.md)> | UACs. | +| [userAgentServers](./sip.js.useragentcore.useragentservers.md) | | Map<string, [UserAgentServer](./sip.js.useragentserver.md)> | UASs. | ## Methods diff --git a/docs/core/sip.js.useragentcore.message.md b/docs/core/sip.js.useragentcore.message.md index 9e66873ce..521442e86 100644 --- a/docs/core/sip.js.useragentcore.message.md +++ b/docs/core/sip.js.useragentcore.message.md @@ -16,10 +16,10 @@ message(request: OutgoingRequestMessage, delegate?: OutgoingRequestDelegate): Ou | Parameter | Type | Description | | --- | --- | --- | -| request | OutgoingRequestMessage | Outgoing request. | -| delegate | OutgoingRequestDelegate | Request delegate. | +| request | [OutgoingRequestMessage](./sip.js.outgoingrequestmessage.md) | Outgoing request. | +| delegate | [OutgoingRequestDelegate](./sip.js.outgoingrequestdelegate.md) | Request delegate. | Returns: -`OutgoingMessageRequest` +[OutgoingMessageRequest](./sip.js.outgoingmessagerequest.md) diff --git a/docs/core/sip.js.useragentcore.publish.md b/docs/core/sip.js.useragentcore.publish.md index eccfd1df5..94d37ea1f 100644 --- a/docs/core/sip.js.useragentcore.publish.md +++ b/docs/core/sip.js.useragentcore.publish.md @@ -16,10 +16,10 @@ publish(request: OutgoingRequestMessage, delegate?: OutgoingRequestDelegate): Ou | Parameter | Type | Description | | --- | --- | --- | -| request | OutgoingRequestMessage | Outgoing request. | -| delegate | OutgoingRequestDelegate | Request delegate. | +| request | [OutgoingRequestMessage](./sip.js.outgoingrequestmessage.md) | Outgoing request. | +| delegate | [OutgoingRequestDelegate](./sip.js.outgoingrequestdelegate.md) | Request delegate. | Returns: -`OutgoingPublishRequest` +[OutgoingPublishRequest](./sip.js.outgoingpublishrequest.md) diff --git a/docs/core/sip.js.useragentcore.receiveincomingrequestfromtransport.md b/docs/core/sip.js.useragentcore.receiveincomingrequestfromtransport.md index 46b84073d..42b6bb319 100644 --- a/docs/core/sip.js.useragentcore.receiveincomingrequestfromtransport.md +++ b/docs/core/sip.js.useragentcore.receiveincomingrequestfromtransport.md @@ -16,9 +16,9 @@ receiveIncomingRequestFromTransport(message: IncomingRequestMessage): void; | Parameter | Type | Description | | --- | --- | --- | -| message | IncomingRequestMessage | Incoming request message from transport layer. | +| message | [IncomingRequestMessage](./sip.js.incomingrequestmessage.md) | Incoming request message from transport layer. | Returns: -`void` +void diff --git a/docs/core/sip.js.useragentcore.receiveincomingresponsefromtransport.md b/docs/core/sip.js.useragentcore.receiveincomingresponsefromtransport.md index 936151c8f..4029d1399 100644 --- a/docs/core/sip.js.useragentcore.receiveincomingresponsefromtransport.md +++ b/docs/core/sip.js.useragentcore.receiveincomingresponsefromtransport.md @@ -16,9 +16,9 @@ receiveIncomingResponseFromTransport(message: IncomingResponseMessage): void; | Parameter | Type | Description | | --- | --- | --- | -| message | IncomingResponseMessage | Incoming response message from transport layer. | +| message | [IncomingResponseMessage](./sip.js.incomingresponsemessage.md) | Incoming response message from transport layer. | Returns: -`void` +void diff --git a/docs/core/sip.js.useragentcore.register.md b/docs/core/sip.js.useragentcore.register.md index 6620977b1..c5205f05a 100644 --- a/docs/core/sip.js.useragentcore.register.md +++ b/docs/core/sip.js.useragentcore.register.md @@ -16,10 +16,10 @@ register(request: OutgoingRequestMessage, delegate?: OutgoingRequestDelegate): O | Parameter | Type | Description | | --- | --- | --- | -| request | OutgoingRequestMessage | Outgoing request. | -| delegate | OutgoingRequestDelegate | Request delegate. | +| request | [OutgoingRequestMessage](./sip.js.outgoingrequestmessage.md) | Outgoing request. | +| delegate | [OutgoingRequestDelegate](./sip.js.outgoingrequestdelegate.md) | Request delegate. | Returns: -`OutgoingRegisterRequest` +[OutgoingRegisterRequest](./sip.js.outgoingregisterrequest.md) diff --git a/docs/core/sip.js.useragentcore.replystateless.md b/docs/core/sip.js.useragentcore.replystateless.md index b440a1a4a..dbe8ed875 100644 --- a/docs/core/sip.js.useragentcore.replystateless.md +++ b/docs/core/sip.js.useragentcore.replystateless.md @@ -16,10 +16,10 @@ replyStateless(message: IncomingRequestMessage, options: ResponseOptions): Outgo | Parameter | Type | Description | | --- | --- | --- | -| message | IncomingRequestMessage | Incoming request message to reply to. | -| options | ResponseOptions | | +| message | [IncomingRequestMessage](./sip.js.incomingrequestmessage.md) | Incoming request message to reply to. | +| options | [ResponseOptions](./sip.js.responseoptions.md) | | Returns: -`OutgoingResponse` +[OutgoingResponse](./sip.js.outgoingresponse.md) diff --git a/docs/core/sip.js.useragentcore.request.md b/docs/core/sip.js.useragentcore.request.md index 4610837e4..885264d83 100644 --- a/docs/core/sip.js.useragentcore.request.md +++ b/docs/core/sip.js.useragentcore.request.md @@ -16,10 +16,10 @@ request(request: OutgoingRequestMessage, delegate?: OutgoingRequestDelegate): Ou | Parameter | Type | Description | | --- | --- | --- | -| request | OutgoingRequestMessage | Outgoing request. | -| delegate | OutgoingRequestDelegate | Request delegate. | +| request | [OutgoingRequestMessage](./sip.js.outgoingrequestmessage.md) | Outgoing request. | +| delegate | [OutgoingRequestDelegate](./sip.js.outgoingrequestdelegate.md) | Request delegate. | Returns: -`OutgoingRequest` +[OutgoingRequest](./sip.js.outgoingrequest.md) diff --git a/docs/core/sip.js.useragentcore.reset.md b/docs/core/sip.js.useragentcore.reset.md index b65e8891b..226f845da 100644 --- a/docs/core/sip.js.useragentcore.reset.md +++ b/docs/core/sip.js.useragentcore.reset.md @@ -13,5 +13,5 @@ reset(): void; ``` Returns: -`void` +void diff --git a/docs/core/sip.js.useragentcore.subscribe.md b/docs/core/sip.js.useragentcore.subscribe.md index e79e140a0..e67077db7 100644 --- a/docs/core/sip.js.useragentcore.subscribe.md +++ b/docs/core/sip.js.useragentcore.subscribe.md @@ -16,10 +16,10 @@ subscribe(request: OutgoingRequestMessage, delegate?: OutgoingSubscribeRequestDe | Parameter | Type | Description | | --- | --- | --- | -| request | OutgoingRequestMessage | Outgoing request. | -| delegate | OutgoingSubscribeRequestDelegate | Request delegate. | +| request | [OutgoingRequestMessage](./sip.js.outgoingrequestmessage.md) | Outgoing request. | +| delegate | [OutgoingSubscribeRequestDelegate](./sip.js.outgoingsubscriberequestdelegate.md) | Request delegate. | Returns: -`OutgoingSubscribeRequest` +[OutgoingSubscribeRequest](./sip.js.outgoingsubscriberequest.md) diff --git a/docs/core/sip.js.useragentcoreconfiguration.authenticationfactory.md b/docs/core/sip.js.useragentcoreconfiguration.authenticationfactory.md index 87467cfba..d66b36d1d 100644 --- a/docs/core/sip.js.useragentcoreconfiguration.authenticationfactory.md +++ b/docs/core/sip.js.useragentcoreconfiguration.authenticationfactory.md @@ -13,5 +13,5 @@ authenticationFactory(): DigestAuthentication | undefined; ``` Returns: -`DigestAuthentication | undefined` +DigestAuthentication \| undefined diff --git a/docs/core/sip.js.useragentcoreconfiguration.md b/docs/core/sip.js.useragentcoreconfiguration.md index de5b6af98..325b55e10 100644 --- a/docs/core/sip.js.useragentcoreconfiguration.md +++ b/docs/core/sip.js.useragentcoreconfiguration.md @@ -14,20 +14,20 @@ export interface UserAgentCoreConfiguration ## Properties -| Property | Type | Description | -| --- | --- | --- | -| [aor](./sip.js.useragentcoreconfiguration.aor.md) | URI | Address-of-Record (AOR). | -| [contact](./sip.js.useragentcoreconfiguration.contact.md) | Contact | Contact. | -| [displayName](./sip.js.useragentcoreconfiguration.displayname.md) | string | From header display name. | -| [hackViaTcp](./sip.js.useragentcoreconfiguration.hackviatcp.md) | boolean | Force Via header field transport to TCP. | -| [loggerFactory](./sip.js.useragentcoreconfiguration.loggerfactory.md) | LoggerFactory | Logger factory. | -| [routeSet](./sip.js.useragentcoreconfiguration.routeset.md) | Array<string> | Preloaded route set. | -| [sipjsId](./sip.js.useragentcoreconfiguration.sipjsid.md) | string | Unique instance id. | -| [supportedOptionTags](./sip.js.useragentcoreconfiguration.supportedoptiontags.md) | Array<string> | Option tags of supported SIP extensions. | -| [supportedOptionTagsResponse](./sip.js.useragentcoreconfiguration.supportedoptiontagsresponse.md) | Array<string> | Option tags of supported SIP extensions. Used in responses. | -| [userAgentHeaderFieldValue](./sip.js.useragentcoreconfiguration.useragentheaderfieldvalue.md) | string | undefined | User-Agent header field value. | -| [viaForceRport](./sip.js.useragentcoreconfiguration.viaforcerport.md) | boolean | Force use of "rport" Via header field parameter. | -| [viaHost](./sip.js.useragentcoreconfiguration.viahost.md) | string | Via header field host name or network address. | +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [aor](./sip.js.useragentcoreconfiguration.aor.md) | | [URI](./sip.js.uri.md) | Address-of-Record (AOR). | +| [contact](./sip.js.useragentcoreconfiguration.contact.md) | | [Contact](./sip.js.contact.md) | Contact. | +| [displayName](./sip.js.useragentcoreconfiguration.displayname.md) | | string | From header display name. | +| [hackViaTcp](./sip.js.useragentcoreconfiguration.hackviatcp.md) | | boolean | Force Via header field transport to TCP. | +| [loggerFactory](./sip.js.useragentcoreconfiguration.loggerfactory.md) | | [LoggerFactory](./sip.js.loggerfactory.md) | Logger factory. | +| [routeSet](./sip.js.useragentcoreconfiguration.routeset.md) | | Array<string> | Preloaded route set. | +| [sipjsId](./sip.js.useragentcoreconfiguration.sipjsid.md) | | string | Unique instance id. | +| [supportedOptionTags](./sip.js.useragentcoreconfiguration.supportedoptiontags.md) | | Array<string> | Option tags of supported SIP extensions. | +| [supportedOptionTagsResponse](./sip.js.useragentcoreconfiguration.supportedoptiontagsresponse.md) | | Array<string> | Option tags of supported SIP extensions. Used in responses. | +| [userAgentHeaderFieldValue](./sip.js.useragentcoreconfiguration.useragentheaderfieldvalue.md) | | string \| undefined | User-Agent header field value. | +| [viaForceRport](./sip.js.useragentcoreconfiguration.viaforcerport.md) | | boolean | Force use of "rport" Via header field parameter. | +| [viaHost](./sip.js.useragentcoreconfiguration.viahost.md) | | string | Via header field host name or network address. | ## Methods diff --git a/docs/core/sip.js.useragentcoreconfiguration.transportaccessor.md b/docs/core/sip.js.useragentcoreconfiguration.transportaccessor.md index a7603ea08..a17db086e 100644 --- a/docs/core/sip.js.useragentcoreconfiguration.transportaccessor.md +++ b/docs/core/sip.js.useragentcoreconfiguration.transportaccessor.md @@ -13,5 +13,5 @@ transportAccessor(): Transport | undefined; ``` Returns: -`Transport | undefined` +[Transport](./sip.js.transport.md) \| undefined diff --git a/docs/core/sip.js.useragentcoredelegate.oninvite.md b/docs/core/sip.js.useragentcoredelegate.oninvite.md index a34cccae6..4e59235ed 100644 --- a/docs/core/sip.js.useragentcoredelegate.oninvite.md +++ b/docs/core/sip.js.useragentcoredelegate.oninvite.md @@ -16,9 +16,9 @@ onInvite?(request: IncomingInviteRequest): void; | Parameter | Type | Description | | --- | --- | --- | -| request | IncomingInviteRequest | Incoming INVITE request. | +| request | [IncomingInviteRequest](./sip.js.incominginviterequest.md) | Incoming INVITE request. | Returns: -`void` +void diff --git a/docs/core/sip.js.useragentcoredelegate.onmessage.md b/docs/core/sip.js.useragentcoredelegate.onmessage.md index 98ba42746..e8948e346 100644 --- a/docs/core/sip.js.useragentcoredelegate.onmessage.md +++ b/docs/core/sip.js.useragentcoredelegate.onmessage.md @@ -16,9 +16,9 @@ onMessage?(request: IncomingMessageRequest): void; | Parameter | Type | Description | | --- | --- | --- | -| request | IncomingMessageRequest | Incoming MESSAGE request. | +| request | [IncomingMessageRequest](./sip.js.incomingmessagerequest.md) | Incoming MESSAGE request. | Returns: -`void` +void diff --git a/docs/core/sip.js.useragentcoredelegate.onnotify.md b/docs/core/sip.js.useragentcoredelegate.onnotify.md index b8baf91dc..cafb9b9e5 100644 --- a/docs/core/sip.js.useragentcoredelegate.onnotify.md +++ b/docs/core/sip.js.useragentcoredelegate.onnotify.md @@ -16,9 +16,9 @@ onNotify?(request: IncomingNotifyRequest): void; | Parameter | Type | Description | | --- | --- | --- | -| request | IncomingNotifyRequest | | +| request | [IncomingNotifyRequest](./sip.js.incomingnotifyrequest.md) | | Returns: -`void` +void diff --git a/docs/core/sip.js.useragentcoredelegate.onrefer.md b/docs/core/sip.js.useragentcoredelegate.onrefer.md index 470dbc675..763974040 100644 --- a/docs/core/sip.js.useragentcoredelegate.onrefer.md +++ b/docs/core/sip.js.useragentcoredelegate.onrefer.md @@ -16,9 +16,9 @@ onRefer?(request: IncomingReferRequest): void; | Parameter | Type | Description | | --- | --- | --- | -| request | IncomingReferRequest | Incoming REFER request. | +| request | [IncomingReferRequest](./sip.js.incomingreferrequest.md) | Incoming REFER request. | Returns: -`void` +void diff --git a/docs/core/sip.js.useragentcoredelegate.onregister.md b/docs/core/sip.js.useragentcoredelegate.onregister.md index 63416e226..ae54fe60a 100644 --- a/docs/core/sip.js.useragentcoredelegate.onregister.md +++ b/docs/core/sip.js.useragentcoredelegate.onregister.md @@ -16,9 +16,9 @@ onRegister?(request: IncomingRegisterRequest): void; | Parameter | Type | Description | | --- | --- | --- | -| request | IncomingRegisterRequest | Incoming REGISTER request. | +| request | [IncomingRegisterRequest](./sip.js.incomingregisterrequest.md) | Incoming REGISTER request. | Returns: -`void` +void diff --git a/docs/core/sip.js.useragentcoredelegate.onsubscribe.md b/docs/core/sip.js.useragentcoredelegate.onsubscribe.md index de898dbb8..ed656eded 100644 --- a/docs/core/sip.js.useragentcoredelegate.onsubscribe.md +++ b/docs/core/sip.js.useragentcoredelegate.onsubscribe.md @@ -16,9 +16,9 @@ onSubscribe?(request: IncomingSubscribeRequest): void; | Parameter | Type | Description | | --- | --- | --- | -| request | IncomingSubscribeRequest | Incoming SUBSCRIBE request. | +| request | [IncomingSubscribeRequest](./sip.js.incomingsubscriberequest.md) | Incoming SUBSCRIBE request. | Returns: -`void` +void diff --git a/docs/core/sip.js.useragentserver._constructor_.md b/docs/core/sip.js.useragentserver._constructor_.md index 4d5011a37..bdc72a4ed 100644 --- a/docs/core/sip.js.useragentserver._constructor_.md +++ b/docs/core/sip.js.useragentserver._constructor_.md @@ -16,8 +16,8 @@ constructor(transactionConstructor: ServerTransactionConstructor, core: UserAgen | Parameter | Type | Description | | --- | --- | --- | -| transactionConstructor | ServerTransactionConstructor | | -| core | UserAgentCore | | -| message | IncomingRequestMessage | | -| delegate | IncomingRequestDelegate | undefined | | +| transactionConstructor | ServerTransactionConstructor | | +| core | [UserAgentCore](./sip.js.useragentcore.md) | | +| message | [IncomingRequestMessage](./sip.js.incomingrequestmessage.md) | | +| delegate | [IncomingRequestDelegate](./sip.js.incomingrequestdelegate.md) \| undefined | | diff --git a/docs/core/sip.js.useragentserver.accept.md b/docs/core/sip.js.useragentserver.accept.md index a58f16b2d..058d86b38 100644 --- a/docs/core/sip.js.useragentserver.accept.md +++ b/docs/core/sip.js.useragentserver.accept.md @@ -14,9 +14,9 @@ accept(options?: ResponseOptions): OutgoingResponse; | Parameter | Type | Description | | --- | --- | --- | -| options | ResponseOptions | | +| options | [ResponseOptions](./sip.js.responseoptions.md) | | Returns: -`OutgoingResponse` +[OutgoingResponse](./sip.js.outgoingresponse.md) diff --git a/docs/core/sip.js.useragentserver.dispose.md b/docs/core/sip.js.useragentserver.dispose.md index 4f9b178c3..79e9c289b 100644 --- a/docs/core/sip.js.useragentserver.dispose.md +++ b/docs/core/sip.js.useragentserver.dispose.md @@ -11,5 +11,5 @@ dispose(): void; ``` Returns: -`void` +void diff --git a/docs/core/sip.js.useragentserver.md b/docs/core/sip.js.useragentserver.md index 4b16ad453..261175dbf 100644 --- a/docs/core/sip.js.useragentserver.md +++ b/docs/core/sip.js.useragentserver.md @@ -11,6 +11,7 @@ User Agent Server (UAS). ```typescript export declare class UserAgentServer implements IncomingRequest ``` +Implements: [IncomingRequest](./sip.js.incomingrequest.md) ## Remarks @@ -26,18 +27,18 @@ A user agent server is a logical entity that generates a response to a SIP reque | Property | Modifiers | Type | Description | | --- | --- | --- | --- | -| [acceptable](./sip.js.useragentserver.acceptable.md) | | boolean | | -| [core](./sip.js.useragentserver.core.md) | | UserAgentCore | | -| [delegate](./sip.js.useragentserver.delegate.md) | | IncomingRequestDelegate | undefined | | -| [logger](./sip.js.useragentserver.logger.md) | | Logger | | -| [loggerFactory](./sip.js.useragentserver.loggerfactory.md) | | LoggerFactory | | -| [message](./sip.js.useragentserver.message.md) | | IncomingRequestMessage | | -| [progressable](./sip.js.useragentserver.progressable.md) | | boolean | | -| [redirectable](./sip.js.useragentserver.redirectable.md) | | boolean | | -| [rejectable](./sip.js.useragentserver.rejectable.md) | | boolean | | -| [toTag](./sip.js.useragentserver.totag.md) | | string | | -| [transaction](./sip.js.useragentserver.transaction.md) | | ServerTransaction | The transaction associated with this request. | -| [tryingable](./sip.js.useragentserver.tryingable.md) | | boolean | | +| [acceptable](./sip.js.useragentserver.acceptable.md) | | boolean | | +| [core](./sip.js.useragentserver.core.md) | | [UserAgentCore](./sip.js.useragentcore.md) | | +| [delegate](./sip.js.useragentserver.delegate.md) | | [IncomingRequestDelegate](./sip.js.incomingrequestdelegate.md) \| undefined | | +| [logger](./sip.js.useragentserver.logger.md) | | [Logger](./sip.js.logger.md) | | +| [loggerFactory](./sip.js.useragentserver.loggerfactory.md) | | [LoggerFactory](./sip.js.loggerfactory.md) | | +| [message](./sip.js.useragentserver.message.md) | | [IncomingRequestMessage](./sip.js.incomingrequestmessage.md) | | +| [progressable](./sip.js.useragentserver.progressable.md) | | boolean | | +| [redirectable](./sip.js.useragentserver.redirectable.md) | | boolean | | +| [rejectable](./sip.js.useragentserver.rejectable.md) | | boolean | | +| [toTag](./sip.js.useragentserver.totag.md) | | string | | +| [transaction](./sip.js.useragentserver.transaction.md) | | [ServerTransaction](./sip.js.servertransaction.md) | The transaction associated with this request. | +| [tryingable](./sip.js.useragentserver.tryingable.md) | | boolean | | ## Methods diff --git a/docs/core/sip.js.useragentserver.progress.md b/docs/core/sip.js.useragentserver.progress.md index 25d901129..6670a1923 100644 --- a/docs/core/sip.js.useragentserver.progress.md +++ b/docs/core/sip.js.useragentserver.progress.md @@ -14,9 +14,9 @@ progress(options?: ResponseOptions): OutgoingResponse; | Parameter | Type | Description | | --- | --- | --- | -| options | ResponseOptions | | +| options | [ResponseOptions](./sip.js.responseoptions.md) | | Returns: -`OutgoingResponse` +[OutgoingResponse](./sip.js.outgoingresponse.md) diff --git a/docs/core/sip.js.useragentserver.receivecancel.md b/docs/core/sip.js.useragentserver.receivecancel.md index d7170dac4..75b59c8bb 100644 --- a/docs/core/sip.js.useragentserver.receivecancel.md +++ b/docs/core/sip.js.useragentserver.receivecancel.md @@ -16,9 +16,9 @@ receiveCancel(message: IncomingRequestMessage): void; | Parameter | Type | Description | | --- | --- | --- | -| message | IncomingRequestMessage | | +| message | [IncomingRequestMessage](./sip.js.incomingrequestmessage.md) | | Returns: -`void` +void diff --git a/docs/core/sip.js.useragentserver.redirect.md b/docs/core/sip.js.useragentserver.redirect.md index 3f926bb41..cbcff039b 100644 --- a/docs/core/sip.js.useragentserver.redirect.md +++ b/docs/core/sip.js.useragentserver.redirect.md @@ -14,10 +14,10 @@ redirect(contacts: Array, options?: ResponseOptions): OutgoingResponse; | Parameter | Type | Description | | --- | --- | --- | -| contacts | Array<URI> | | -| options | ResponseOptions | | +| contacts | Array<[URI](./sip.js.uri.md)> | | +| options | [ResponseOptions](./sip.js.responseoptions.md) | | Returns: -`OutgoingResponse` +[OutgoingResponse](./sip.js.outgoingresponse.md) diff --git a/docs/core/sip.js.useragentserver.reject.md b/docs/core/sip.js.useragentserver.reject.md index aaa26e507..106794a7d 100644 --- a/docs/core/sip.js.useragentserver.reject.md +++ b/docs/core/sip.js.useragentserver.reject.md @@ -14,9 +14,9 @@ reject(options?: ResponseOptions): OutgoingResponse; | Parameter | Type | Description | | --- | --- | --- | -| options | ResponseOptions | | +| options | [ResponseOptions](./sip.js.responseoptions.md) | | Returns: -`OutgoingResponse` +[OutgoingResponse](./sip.js.outgoingresponse.md) diff --git a/docs/core/sip.js.useragentserver.trying.md b/docs/core/sip.js.useragentserver.trying.md index 84d30eb8c..7a9bc8d1b 100644 --- a/docs/core/sip.js.useragentserver.trying.md +++ b/docs/core/sip.js.useragentserver.trying.md @@ -14,9 +14,9 @@ trying(options?: ResponseOptions): OutgoingResponse; | Parameter | Type | Description | | --- | --- | --- | -| options | ResponseOptions | | +| options | [ResponseOptions](./sip.js.responseoptions.md) | | Returns: -`OutgoingResponse` +[OutgoingResponse](./sip.js.outgoingresponse.md) diff --git a/docs/session-description-handler/sip.js.defaultmediastreamfactory.md b/docs/session-description-handler/sip.js.defaultmediastreamfactory.md index 2355fb46f..a3d619ce7 100644 --- a/docs/session-description-handler/sip.js.defaultmediastreamfactory.md +++ b/docs/session-description-handler/sip.js.defaultmediastreamfactory.md @@ -13,5 +13,5 @@ export declare function defaultMediaStreamFactory(): MediaStreamFactory; ``` Returns: -`MediaStreamFactory` +[MediaStreamFactory](./sip.js.mediastreamfactory.md) diff --git a/docs/session-description-handler/sip.js.defaultpeerconnectionconfiguration.md b/docs/session-description-handler/sip.js.defaultpeerconnectionconfiguration.md index 1699ecc5b..0783f4418 100644 --- a/docs/session-description-handler/sip.js.defaultpeerconnectionconfiguration.md +++ b/docs/session-description-handler/sip.js.defaultpeerconnectionconfiguration.md @@ -13,5 +13,5 @@ export declare function defaultPeerConnectionConfiguration(): RTCConfiguration; ``` Returns: -`RTCConfiguration` +RTCConfiguration diff --git a/docs/session-description-handler/sip.js.defaultsessiondescriptionhandlerfactory.md b/docs/session-description-handler/sip.js.defaultsessiondescriptionhandlerfactory.md index 61cd457bf..89708e208 100644 --- a/docs/session-description-handler/sip.js.defaultsessiondescriptionhandlerfactory.md +++ b/docs/session-description-handler/sip.js.defaultsessiondescriptionhandlerfactory.md @@ -16,11 +16,11 @@ export declare function defaultSessionDescriptionHandlerFactory(mediaStreamFacto | Parameter | Type | Description | | --- | --- | --- | -| mediaStreamFactory | (constraints: MediaStreamConstraints, sessionDescriptionHandler: SessionDescriptionHandler) => Promise<MediaStream> | MediaStream factory. | +| mediaStreamFactory | (constraints: MediaStreamConstraints, sessionDescriptionHandler: [SessionDescriptionHandler](./sip.js.sessiondescriptionhandler.md)) => Promise<MediaStream> | MediaStream factory. | Returns: -`SessionDescriptionHandlerFactory` +[SessionDescriptionHandlerFactory](./sip.js.sessiondescriptionhandlerfactory.md) ## Remarks diff --git a/docs/session-description-handler/sip.js.mediastreamfactory.md b/docs/session-description-handler/sip.js.mediastreamfactory.md index a65ce162d..09ead0fd3 100644 --- a/docs/session-description-handler/sip.js.mediastreamfactory.md +++ b/docs/session-description-handler/sip.js.mediastreamfactory.md @@ -11,3 +11,5 @@ Interface of factory function which produces a MediaStream. ```typescript export declare type MediaStreamFactory = (constraints: MediaStreamConstraints, sessionDescriptionHandler: SessionDescriptionHandler) => Promise; ``` +References: [SessionDescriptionHandler](./sip.js.sessiondescriptionhandler.md) + diff --git a/docs/session-description-handler/sip.js.peerconnectiondelegate.onconnectionstatechange.md b/docs/session-description-handler/sip.js.peerconnectiondelegate.onconnectionstatechange.md index 1dc936084..791d130d1 100644 --- a/docs/session-description-handler/sip.js.peerconnectiondelegate.onconnectionstatechange.md +++ b/docs/session-description-handler/sip.js.peerconnectiondelegate.onconnectionstatechange.md @@ -16,9 +16,9 @@ onconnectionstatechange?(event: Event): void; | Parameter | Type | Description | | --- | --- | --- | -| event | Event | Event. | +| event | Event | Event. | Returns: -`void` +void diff --git a/docs/session-description-handler/sip.js.peerconnectiondelegate.ondatachannel.md b/docs/session-description-handler/sip.js.peerconnectiondelegate.ondatachannel.md index cb9a9211b..5fa1aefa1 100644 --- a/docs/session-description-handler/sip.js.peerconnectiondelegate.ondatachannel.md +++ b/docs/session-description-handler/sip.js.peerconnectiondelegate.ondatachannel.md @@ -16,9 +16,9 @@ ondatachannel?(event: RTCDataChannelEvent): void; | Parameter | Type | Description | | --- | --- | --- | -| event | RTCDataChannelEvent | RTCDataChannelEvent. | +| event | RTCDataChannelEvent | RTCDataChannelEvent. | Returns: -`void` +void diff --git a/docs/session-description-handler/sip.js.peerconnectiondelegate.onicecandidate.md b/docs/session-description-handler/sip.js.peerconnectiondelegate.onicecandidate.md index 42d89a9c2..e14d34bb7 100644 --- a/docs/session-description-handler/sip.js.peerconnectiondelegate.onicecandidate.md +++ b/docs/session-description-handler/sip.js.peerconnectiondelegate.onicecandidate.md @@ -16,9 +16,9 @@ onicecandidate?(event: RTCPeerConnectionIceEvent): void; | Parameter | Type | Description | | --- | --- | --- | -| event | RTCPeerConnectionIceEvent | RTCPeerConnectionIceEvent. | +| event | RTCPeerConnectionIceEvent | RTCPeerConnectionIceEvent. | Returns: -`void` +void diff --git a/docs/session-description-handler/sip.js.peerconnectiondelegate.onicecandidateerror.md b/docs/session-description-handler/sip.js.peerconnectiondelegate.onicecandidateerror.md index 3271d12f0..c122f80a7 100644 --- a/docs/session-description-handler/sip.js.peerconnectiondelegate.onicecandidateerror.md +++ b/docs/session-description-handler/sip.js.peerconnectiondelegate.onicecandidateerror.md @@ -16,9 +16,9 @@ onicecandidateerror?(event: RTCPeerConnectionIceErrorEvent): void; | Parameter | Type | Description | | --- | --- | --- | -| event | RTCPeerConnectionIceErrorEvent | RTCPeerConnectionIceErrorEvent. | +| event | RTCPeerConnectionIceErrorEvent | RTCPeerConnectionIceErrorEvent. | Returns: -`void` +void diff --git a/docs/session-description-handler/sip.js.peerconnectiondelegate.oniceconnectionstatechange.md b/docs/session-description-handler/sip.js.peerconnectiondelegate.oniceconnectionstatechange.md index 129ddd765..d5ebda99c 100644 --- a/docs/session-description-handler/sip.js.peerconnectiondelegate.oniceconnectionstatechange.md +++ b/docs/session-description-handler/sip.js.peerconnectiondelegate.oniceconnectionstatechange.md @@ -16,9 +16,9 @@ oniceconnectionstatechange?(event: Event): void; | Parameter | Type | Description | | --- | --- | --- | -| event | Event | Event. | +| event | Event | Event. | Returns: -`void` +void diff --git a/docs/session-description-handler/sip.js.peerconnectiondelegate.onicegatheringstatechange.md b/docs/session-description-handler/sip.js.peerconnectiondelegate.onicegatheringstatechange.md index 47243960f..6fb869187 100644 --- a/docs/session-description-handler/sip.js.peerconnectiondelegate.onicegatheringstatechange.md +++ b/docs/session-description-handler/sip.js.peerconnectiondelegate.onicegatheringstatechange.md @@ -16,9 +16,9 @@ onicegatheringstatechange?(event: Event): void; | Parameter | Type | Description | | --- | --- | --- | -| event | Event | Event. | +| event | Event | Event. | Returns: -`void` +void diff --git a/docs/session-description-handler/sip.js.peerconnectiondelegate.onnegotiationneeded.md b/docs/session-description-handler/sip.js.peerconnectiondelegate.onnegotiationneeded.md index 238df0f22..4e79b6aaa 100644 --- a/docs/session-description-handler/sip.js.peerconnectiondelegate.onnegotiationneeded.md +++ b/docs/session-description-handler/sip.js.peerconnectiondelegate.onnegotiationneeded.md @@ -16,9 +16,9 @@ onnegotiationneeded?(event: Event): void; | Parameter | Type | Description | | --- | --- | --- | -| event | Event | Event. | +| event | Event | Event. | Returns: -`void` +void diff --git a/docs/session-description-handler/sip.js.peerconnectiondelegate.onsignalingstatechange.md b/docs/session-description-handler/sip.js.peerconnectiondelegate.onsignalingstatechange.md index 60f11fa45..bc0feca2b 100644 --- a/docs/session-description-handler/sip.js.peerconnectiondelegate.onsignalingstatechange.md +++ b/docs/session-description-handler/sip.js.peerconnectiondelegate.onsignalingstatechange.md @@ -16,9 +16,9 @@ onsignalingstatechange?(event: Event): void; | Parameter | Type | Description | | --- | --- | --- | -| event | Event | Event. | +| event | Event | Event. | Returns: -`void` +void diff --git a/docs/session-description-handler/sip.js.peerconnectiondelegate.ontrack.md b/docs/session-description-handler/sip.js.peerconnectiondelegate.ontrack.md index a4cbe97cb..53276393b 100644 --- a/docs/session-description-handler/sip.js.peerconnectiondelegate.ontrack.md +++ b/docs/session-description-handler/sip.js.peerconnectiondelegate.ontrack.md @@ -16,9 +16,9 @@ ontrack?(event: Event): void; | Parameter | Type | Description | | --- | --- | --- | -| event | Event | Event. | +| event | Event | Event. | Returns: -`void` +void diff --git a/docs/session-description-handler/sip.js.sessiondescriptionhandler._constructor_.md b/docs/session-description-handler/sip.js.sessiondescriptionhandler._constructor_.md index e7638e285..0912a973c 100644 --- a/docs/session-description-handler/sip.js.sessiondescriptionhandler._constructor_.md +++ b/docs/session-description-handler/sip.js.sessiondescriptionhandler._constructor_.md @@ -16,7 +16,7 @@ constructor(logger: Logger, mediaStreamFactory: MediaStreamFactory, sessionDescr | Parameter | Type | Description | | --- | --- | --- | -| logger | Logger | A logger | -| mediaStreamFactory | MediaStreamFactory | A factory to provide a MediaStream | -| sessionDescriptionHandlerConfiguration | SessionDescriptionHandlerConfiguration | | +| logger | Logger | A logger | +| mediaStreamFactory | [MediaStreamFactory](./sip.js.mediastreamfactory.md) | A factory to provide a MediaStream | +| sessionDescriptionHandlerConfiguration | [SessionDescriptionHandlerConfiguration](./sip.js.sessiondescriptionhandlerconfiguration.md) | | diff --git a/docs/session-description-handler/sip.js.sessiondescriptionhandler.applymodifiers.md b/docs/session-description-handler/sip.js.sessiondescriptionhandler.applymodifiers.md index bc6cae493..55d93e07b 100644 --- a/docs/session-description-handler/sip.js.sessiondescriptionhandler.applymodifiers.md +++ b/docs/session-description-handler/sip.js.sessiondescriptionhandler.applymodifiers.md @@ -16,10 +16,10 @@ protected applyModifiers(sdp: RTCSessionDescriptionInit, modifiers?: ArrayRTCSessionDescriptionInit | SDP to modify. | -| modifiers | Array<SessionDescriptionHandlerModifier> | Modifiers to apply. | +| sdp | RTCSessionDescriptionInit | SDP to modify. | +| modifiers | Array<SessionDescriptionHandlerModifier> | Modifiers to apply. | Returns: -`Promise` +Promise<RTCSessionDescriptionInit> diff --git a/docs/session-description-handler/sip.js.sessiondescriptionhandler.close.md b/docs/session-description-handler/sip.js.sessiondescriptionhandler.close.md index c7b41807e..a0753a51c 100644 --- a/docs/session-description-handler/sip.js.sessiondescriptionhandler.close.md +++ b/docs/session-description-handler/sip.js.sessiondescriptionhandler.close.md @@ -13,5 +13,5 @@ close(): void; ``` Returns: -`void` +void diff --git a/docs/session-description-handler/sip.js.sessiondescriptionhandler.createdatachannel.md b/docs/session-description-handler/sip.js.sessiondescriptionhandler.createdatachannel.md index 5b29eedb7..9df7acc14 100644 --- a/docs/session-description-handler/sip.js.sessiondescriptionhandler.createdatachannel.md +++ b/docs/session-description-handler/sip.js.sessiondescriptionhandler.createdatachannel.md @@ -16,11 +16,11 @@ protected createDataChannel(options?: SessionDescriptionHandlerOptions): Promise | Parameter | Type | Description | | --- | --- | --- | -| options | SessionDescriptionHandlerOptions | Session description handler options. | +| options | [SessionDescriptionHandlerOptions](./sip.js.sessiondescriptionhandleroptions.md) | Session description handler options. | Returns: -`Promise` +Promise<void> ## Remarks diff --git a/docs/session-description-handler/sip.js.sessiondescriptionhandler.createlocalofferoranswer.md b/docs/session-description-handler/sip.js.sessiondescriptionhandler.createlocalofferoranswer.md index 03b009981..50708caa3 100644 --- a/docs/session-description-handler/sip.js.sessiondescriptionhandler.createlocalofferoranswer.md +++ b/docs/session-description-handler/sip.js.sessiondescriptionhandler.createlocalofferoranswer.md @@ -16,9 +16,9 @@ protected createLocalOfferOrAnswer(options?: SessionDescriptionHandlerOptions): | Parameter | Type | Description | | --- | --- | --- | -| options | SessionDescriptionHandlerOptions | Session description handler options. | +| options | [SessionDescriptionHandlerOptions](./sip.js.sessiondescriptionhandleroptions.md) | Session description handler options. | Returns: -`Promise` +Promise<RTCSessionDescriptionInit> diff --git a/docs/session-description-handler/sip.js.sessiondescriptionhandler.getdescription.md b/docs/session-description-handler/sip.js.sessiondescriptionhandler.getdescription.md index 87e6a6eea..bb0db405f 100644 --- a/docs/session-description-handler/sip.js.sessiondescriptionhandler.getdescription.md +++ b/docs/session-description-handler/sip.js.sessiondescriptionhandler.getdescription.md @@ -16,10 +16,10 @@ getDescription(options?: SessionDescriptionHandlerOptions, modifiers?: ArraySessionDescriptionHandlerOptions | Options bucket. | -| modifiers | Array<SessionDescriptionHandlerModifier> | Modifiers. | +| options | [SessionDescriptionHandlerOptions](./sip.js.sessiondescriptionhandleroptions.md) | Options bucket. | +| modifiers | Array<SessionDescriptionHandlerModifier> | Modifiers. | Returns: -`Promise` +Promise<BodyAndContentType> diff --git a/docs/session-description-handler/sip.js.sessiondescriptionhandler.getlocalmediastream.md b/docs/session-description-handler/sip.js.sessiondescriptionhandler.getlocalmediastream.md index 5d62532c6..e8b755043 100644 --- a/docs/session-description-handler/sip.js.sessiondescriptionhandler.getlocalmediastream.md +++ b/docs/session-description-handler/sip.js.sessiondescriptionhandler.getlocalmediastream.md @@ -16,9 +16,9 @@ protected getLocalMediaStream(options?: SessionDescriptionHandlerOptions): Promi | Parameter | Type | Description | | --- | --- | --- | -| options | SessionDescriptionHandlerOptions | Session description handler options. | +| options | [SessionDescriptionHandlerOptions](./sip.js.sessiondescriptionhandleroptions.md) | Session description handler options. | Returns: -`Promise` +Promise<void> diff --git a/docs/session-description-handler/sip.js.sessiondescriptionhandler.getlocalsessiondescription.md b/docs/session-description-handler/sip.js.sessiondescriptionhandler.getlocalsessiondescription.md index b58269a59..8cdab0a96 100644 --- a/docs/session-description-handler/sip.js.sessiondescriptionhandler.getlocalsessiondescription.md +++ b/docs/session-description-handler/sip.js.sessiondescriptionhandler.getlocalsessiondescription.md @@ -13,5 +13,5 @@ protected getLocalSessionDescription(): Promise; ``` Returns: -`Promise` +Promise<RTCSessionDescription> diff --git a/docs/session-description-handler/sip.js.sessiondescriptionhandler.hasdescription.md b/docs/session-description-handler/sip.js.sessiondescriptionhandler.hasdescription.md index c42985608..ba81ded8a 100644 --- a/docs/session-description-handler/sip.js.sessiondescriptionhandler.hasdescription.md +++ b/docs/session-description-handler/sip.js.sessiondescriptionhandler.hasdescription.md @@ -16,9 +16,9 @@ hasDescription(contentType: string): boolean; | Parameter | Type | Description | | --- | --- | --- | -| contentType | string | The content type that is in the SIP Message. | +| contentType | string | The content type that is in the SIP Message. | Returns: -`boolean` +boolean diff --git a/docs/session-description-handler/sip.js.sessiondescriptionhandler.icegatheringcomplete.md b/docs/session-description-handler/sip.js.sessiondescriptionhandler.icegatheringcomplete.md index aa8de9355..c1f15ff04 100644 --- a/docs/session-description-handler/sip.js.sessiondescriptionhandler.icegatheringcomplete.md +++ b/docs/session-description-handler/sip.js.sessiondescriptionhandler.icegatheringcomplete.md @@ -13,5 +13,5 @@ protected iceGatheringComplete(): void; ``` Returns: -`void` +void diff --git a/docs/session-description-handler/sip.js.sessiondescriptionhandler.md b/docs/session-description-handler/sip.js.sessiondescriptionhandler.md index 7382d1346..c82251867 100644 --- a/docs/session-description-handler/sip.js.sessiondescriptionhandler.md +++ b/docs/session-description-handler/sip.js.sessiondescriptionhandler.md @@ -11,6 +11,7 @@ A base class implementing a WebRTC session description handler for sip.js. ```typescript export declare class SessionDescriptionHandler implements SessionDescriptionHandlerDefinition ``` +Implements: SessionDescriptionHandlerDefinition ## Remarks @@ -26,19 +27,19 @@ It is expected/intended to be extended by specific WebRTC based applications. | Property | Modifiers | Type | Description | | --- | --- | --- | --- | -| [\_dataChannel](./sip.js.sessiondescriptionhandler._datachannel.md) | | RTCDataChannel | undefined | The data channel. Undefined before created. | -| [\_localMediaStream](./sip.js.sessiondescriptionhandler._localmediastream.md) | | MediaStream | The local media stream. | -| [\_peerConnection](./sip.js.sessiondescriptionhandler._peerconnection.md) | | RTCPeerConnection | undefined | The peer connection. Undefined after SessionDescriptionHandler.close(). | -| [\_peerConnectionDelegate](./sip.js.sessiondescriptionhandler._peerconnectiondelegate.md) | | PeerConnectionDelegate | undefined | The peer connection delegate. | -| [\_remoteMediaStream](./sip.js.sessiondescriptionhandler._remotemediastream.md) | | MediaStream | The remote media stream. | -| [dataChannel](./sip.js.sessiondescriptionhandler.datachannel.md) | | RTCDataChannel | undefined | The data channel. Undefined before it is created. | -| [localMediaStream](./sip.js.sessiondescriptionhandler.localmediastream.md) | | MediaStream | The local media stream currently being sent. | -| [logger](./sip.js.sessiondescriptionhandler.logger.md) | | Logger | Logger. | -| [mediaStreamFactory](./sip.js.sessiondescriptionhandler.mediastreamfactory.md) | | MediaStreamFactory | Media stream factory. | -| [peerConnection](./sip.js.sessiondescriptionhandler.peerconnection.md) | | RTCPeerConnection | undefined | The peer connection. Undefined if peer connection has closed. | -| [peerConnectionDelegate](./sip.js.sessiondescriptionhandler.peerconnectiondelegate.md) | | PeerConnectionDelegate | undefined | A delegate which provides access to the peer connection event handlers. | -| [remoteMediaStream](./sip.js.sessiondescriptionhandler.remotemediastream.md) | | MediaStream | The remote media stream currently being received. | -| [sessionDescriptionHandlerConfiguration](./sip.js.sessiondescriptionhandler.sessiondescriptionhandlerconfiguration.md) | | SessionDescriptionHandlerConfiguration | Configuration options. | +| [\_dataChannel](./sip.js.sessiondescriptionhandler._datachannel.md) | | RTCDataChannel \| undefined | The data channel. Undefined before created. | +| [\_localMediaStream](./sip.js.sessiondescriptionhandler._localmediastream.md) | | MediaStream | The local media stream. | +| [\_peerConnection](./sip.js.sessiondescriptionhandler._peerconnection.md) | | RTCPeerConnection \| undefined | The peer connection. Undefined after SessionDescriptionHandler.close(). | +| [\_peerConnectionDelegate](./sip.js.sessiondescriptionhandler._peerconnectiondelegate.md) | | [PeerConnectionDelegate](./sip.js.peerconnectiondelegate.md) \| undefined | The peer connection delegate. | +| [\_remoteMediaStream](./sip.js.sessiondescriptionhandler._remotemediastream.md) | | MediaStream | The remote media stream. | +| [dataChannel](./sip.js.sessiondescriptionhandler.datachannel.md) | | RTCDataChannel \| undefined | The data channel. Undefined before it is created. | +| [localMediaStream](./sip.js.sessiondescriptionhandler.localmediastream.md) | | MediaStream | The local media stream currently being sent. | +| [logger](./sip.js.sessiondescriptionhandler.logger.md) | | Logger | Logger. | +| [mediaStreamFactory](./sip.js.sessiondescriptionhandler.mediastreamfactory.md) | | [MediaStreamFactory](./sip.js.mediastreamfactory.md) | Media stream factory. | +| [peerConnection](./sip.js.sessiondescriptionhandler.peerconnection.md) | | RTCPeerConnection \| undefined | The peer connection. Undefined if peer connection has closed. | +| [peerConnectionDelegate](./sip.js.sessiondescriptionhandler.peerconnectiondelegate.md) | | [PeerConnectionDelegate](./sip.js.peerconnectiondelegate.md) \| undefined | A delegate which provides access to the peer connection event handlers. | +| [remoteMediaStream](./sip.js.sessiondescriptionhandler.remotemediastream.md) | | MediaStream | The remote media stream currently being received. | +| [sessionDescriptionHandlerConfiguration](./sip.js.sessiondescriptionhandler.sessiondescriptionhandlerconfiguration.md) | | [SessionDescriptionHandlerConfiguration](./sip.js.sessiondescriptionhandlerconfiguration.md) | Configuration options. | ## Methods diff --git a/docs/session-description-handler/sip.js.sessiondescriptionhandler.senddtmf.md b/docs/session-description-handler/sip.js.sessiondescriptionhandler.senddtmf.md index c54d94b87..67e683668 100644 --- a/docs/session-description-handler/sip.js.sessiondescriptionhandler.senddtmf.md +++ b/docs/session-description-handler/sip.js.sessiondescriptionhandler.senddtmf.md @@ -19,10 +19,10 @@ sendDtmf(tones: string, options?: { | Parameter | Type | Description | | --- | --- | --- | -| tones | string | A string containing DTMF digits. | -| options | {
duration: number;
interToneGap: number;
} | Options object to be used by sendDtmf. | +| tones | string | A string containing DTMF digits. | +| options | { duration: number; interToneGap: number; } | Options object to be used by sendDtmf. | Returns: -`boolean` +boolean diff --git a/docs/session-description-handler/sip.js.sessiondescriptionhandler.setdescription.md b/docs/session-description-handler/sip.js.sessiondescriptionhandler.setdescription.md index 38273ac7a..90913ca23 100644 --- a/docs/session-description-handler/sip.js.sessiondescriptionhandler.setdescription.md +++ b/docs/session-description-handler/sip.js.sessiondescriptionhandler.setdescription.md @@ -16,11 +16,11 @@ setDescription(sdp: string, options?: SessionDescriptionHandlerOptions, modifier | Parameter | Type | Description | | --- | --- | --- | -| sdp | string | The session description. | -| options | SessionDescriptionHandlerOptions | Options bucket. | -| modifiers | Array<SessionDescriptionHandlerModifier> | Modifiers. | +| sdp | string | The session description. | +| options | [SessionDescriptionHandlerOptions](./sip.js.sessiondescriptionhandleroptions.md) | Options bucket. | +| modifiers | Array<SessionDescriptionHandlerModifier> | Modifiers. | Returns: -`Promise` +Promise<void> diff --git a/docs/session-description-handler/sip.js.sessiondescriptionhandler.setlocalmediastream.md b/docs/session-description-handler/sip.js.sessiondescriptionhandler.setlocalmediastream.md index 80b9ab837..c7789caf3 100644 --- a/docs/session-description-handler/sip.js.sessiondescriptionhandler.setlocalmediastream.md +++ b/docs/session-description-handler/sip.js.sessiondescriptionhandler.setlocalmediastream.md @@ -16,11 +16,11 @@ protected setLocalMediaStream(stream: MediaStream): Promise; | Parameter | Type | Description | | --- | --- | --- | -| stream | MediaStream | Media stream containing tracks to be utilized. | +| stream | MediaStream | Media stream containing tracks to be utilized. | Returns: -`Promise` +Promise<void> ## Remarks diff --git a/docs/session-description-handler/sip.js.sessiondescriptionhandler.setlocalsessiondescription.md b/docs/session-description-handler/sip.js.sessiondescriptionhandler.setlocalsessiondescription.md index 1a3e96496..e576465ee 100644 --- a/docs/session-description-handler/sip.js.sessiondescriptionhandler.setlocalsessiondescription.md +++ b/docs/session-description-handler/sip.js.sessiondescriptionhandler.setlocalsessiondescription.md @@ -16,9 +16,9 @@ protected setLocalSessionDescription(sessionDescription: RTCSessionDescriptionIn | Parameter | Type | Description | | --- | --- | --- | -| sessionDescription | RTCSessionDescriptionInit | sessionDescription The session description. | +| sessionDescription | RTCSessionDescriptionInit | sessionDescription The session description. | Returns: -`Promise` +Promise<void> diff --git a/docs/session-description-handler/sip.js.sessiondescriptionhandler.setremotesessiondescription.md b/docs/session-description-handler/sip.js.sessiondescriptionhandler.setremotesessiondescription.md index f8081f37f..df6f406f1 100644 --- a/docs/session-description-handler/sip.js.sessiondescriptionhandler.setremotesessiondescription.md +++ b/docs/session-description-handler/sip.js.sessiondescriptionhandler.setremotesessiondescription.md @@ -16,9 +16,9 @@ protected setRemoteSessionDescription(sessionDescription: RTCSessionDescriptionI | Parameter | Type | Description | | --- | --- | --- | -| sessionDescription | RTCSessionDescriptionInit | The session description. | +| sessionDescription | RTCSessionDescriptionInit | The session description. | Returns: -`Promise` +Promise<void> diff --git a/docs/session-description-handler/sip.js.sessiondescriptionhandler.setremotetrack.md b/docs/session-description-handler/sip.js.sessiondescriptionhandler.setremotetrack.md index 036f99404..9a1ab7c4e 100644 --- a/docs/session-description-handler/sip.js.sessiondescriptionhandler.setremotetrack.md +++ b/docs/session-description-handler/sip.js.sessiondescriptionhandler.setremotetrack.md @@ -16,11 +16,11 @@ protected setRemoteTrack(track: MediaStreamTrack): void; | Parameter | Type | Description | | --- | --- | --- | -| track | MediaStreamTrack | Media stream track to be utilized. | +| track | MediaStreamTrack | Media stream track to be utilized. | Returns: -`void` +void ## Remarks diff --git a/docs/session-description-handler/sip.js.sessiondescriptionhandler.updatedirection.md b/docs/session-description-handler/sip.js.sessiondescriptionhandler.updatedirection.md index 55cccef23..8b1613dc7 100644 --- a/docs/session-description-handler/sip.js.sessiondescriptionhandler.updatedirection.md +++ b/docs/session-description-handler/sip.js.sessiondescriptionhandler.updatedirection.md @@ -16,9 +16,9 @@ protected updateDirection(options?: SessionDescriptionHandlerOptions): PromiseSessionDescriptionHandlerOptions | Session description handler options. | +| options | [SessionDescriptionHandlerOptions](./sip.js.sessiondescriptionhandleroptions.md) | Session description handler options. | Returns: -`Promise` +Promise<void> diff --git a/docs/session-description-handler/sip.js.sessiondescriptionhandler.waitforicegatheringcomplete.md b/docs/session-description-handler/sip.js.sessiondescriptionhandler.waitforicegatheringcomplete.md index 204ddd057..af40f506e 100644 --- a/docs/session-description-handler/sip.js.sessiondescriptionhandler.waitforicegatheringcomplete.md +++ b/docs/session-description-handler/sip.js.sessiondescriptionhandler.waitforicegatheringcomplete.md @@ -16,10 +16,10 @@ protected waitForIceGatheringComplete(restart?: boolean, timeout?: number): Prom | Parameter | Type | Description | | --- | --- | --- | -| restart | boolean | If true, waits if current state is "complete" (waits for transition to "complete"). | -| timeout | number | Milliseconds after which waiting times out. No timeout if 0. | +| restart | boolean | If true, waits if current state is "complete" (waits for transition to "complete"). | +| timeout | number | Milliseconds after which waiting times out. No timeout if 0. | Returns: -`Promise` +Promise<void> diff --git a/docs/session-description-handler/sip.js.sessiondescriptionhandlerconfiguration.md b/docs/session-description-handler/sip.js.sessiondescriptionhandlerconfiguration.md index eba0ffcb2..a1dda84b6 100644 --- a/docs/session-description-handler/sip.js.sessiondescriptionhandlerconfiguration.md +++ b/docs/session-description-handler/sip.js.sessiondescriptionhandlerconfiguration.md @@ -14,8 +14,8 @@ export interface SessionDescriptionHandlerConfiguration ## Properties -| Property | Type | Description | -| --- | --- | --- | -| [iceGatheringTimeout](./sip.js.sessiondescriptionhandlerconfiguration.icegatheringtimeout.md) | number | The maximum duration to wait in ms for ICE gathering to complete. If undefined, implementation dependent. If zero, no timeout. | -| [peerConnectionConfiguration](./sip.js.sessiondescriptionhandlerconfiguration.peerconnectionconfiguration.md) | RTCConfiguration | Peer connection options. | +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [iceGatheringTimeout](./sip.js.sessiondescriptionhandlerconfiguration.icegatheringtimeout.md) | | number | The maximum duration to wait in ms for ICE gathering to complete. If undefined, implementation dependent. If zero, no timeout. | +| [peerConnectionConfiguration](./sip.js.sessiondescriptionhandlerconfiguration.peerconnectionconfiguration.md) | | RTCConfiguration | Peer connection options. | diff --git a/docs/session-description-handler/sip.js.sessiondescriptionhandlerfactory.md b/docs/session-description-handler/sip.js.sessiondescriptionhandlerfactory.md index 2f0fca253..08201b202 100644 --- a/docs/session-description-handler/sip.js.sessiondescriptionhandlerfactory.md +++ b/docs/session-description-handler/sip.js.sessiondescriptionhandlerfactory.md @@ -11,3 +11,5 @@ Factory for [SessionDescriptionHandler](./sip.js.sessiondescriptionhandler.md)Extends: [SessionDescriptionHandlerFactoryDefinition](./sip.js.sessiondescriptionhandlerfactory.md) + diff --git a/docs/session-description-handler/sip.js.sessiondescriptionhandlerfactoryoptions.md b/docs/session-description-handler/sip.js.sessiondescriptionhandlerfactoryoptions.md index 3e73cebd4..48513e089 100644 --- a/docs/session-description-handler/sip.js.sessiondescriptionhandlerfactoryoptions.md +++ b/docs/session-description-handler/sip.js.sessiondescriptionhandlerfactoryoptions.md @@ -11,6 +11,7 @@ Options for SessionDescriptionHandlerFactory. ```typescript export declare type SessionDescriptionHandlerFactoryOptions = SessionDescriptionHandlerConfiguration; ``` +References: [SessionDescriptionHandlerConfiguration](./sip.js.sessiondescriptionhandlerconfiguration.md) ## Remarks diff --git a/docs/session-description-handler/sip.js.sessiondescriptionhandleroptions.md b/docs/session-description-handler/sip.js.sessiondescriptionhandleroptions.md index 9a8f43adf..7e918b11d 100644 --- a/docs/session-description-handler/sip.js.sessiondescriptionhandleroptions.md +++ b/docs/session-description-handler/sip.js.sessiondescriptionhandleroptions.md @@ -11,18 +11,19 @@ Options for [SessionDescriptionHandler](./sip.js.sessiondescriptionhandler.md)Extends: [SessionDescriptionHandlerOptionsDefinition](./sip.js.sessiondescriptionhandleroptions.md) ## Properties -| Property | Type | Description | -| --- | --- | --- | -| [answerOptions](./sip.js.sessiondescriptionhandleroptions.answeroptions.md) | RTCAnswerOptions | Answer options to use when creating an answer. | -| [constraints](./sip.js.sessiondescriptionhandleroptions.constraints.md) | MediaStreamConstraints | Constraints to use when creating local media stream. | -| [dataChannel](./sip.js.sessiondescriptionhandleroptions.datachannel.md) | boolean | If true, create a data channel when making initial offer. | -| [dataChannelLabel](./sip.js.sessiondescriptionhandleroptions.datachannellabel.md) | string | A human-readable name to use when creating the data channel. | -| [dataChannelOptions](./sip.js.sessiondescriptionhandleroptions.datachanneloptions.md) | RTCDataChannelInit | Configuration options for creating the data channel. | -| [hold](./sip.js.sessiondescriptionhandleroptions.hold.md) | boolean | If true, offer and answer directions will be set to place peer on hold. | -| [iceGatheringTimeout](./sip.js.sessiondescriptionhandleroptions.icegatheringtimeout.md) | number | The maximum duration to wait in ms for ICE gathering to complete. No timeout if undefined or zero. | -| [offerOptions](./sip.js.sessiondescriptionhandleroptions.offeroptions.md) | RTCOfferOptions | Offer options to use when creating an offer. | -| [onDataChannel](./sip.js.sessiondescriptionhandleroptions.ondatachannel.md) | (dataChannel: RTCDataChannel) => void | Called upon creating a data channel. | +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [answerOptions](./sip.js.sessiondescriptionhandleroptions.answeroptions.md) | | RTCAnswerOptions | Answer options to use when creating an answer. | +| [constraints](./sip.js.sessiondescriptionhandleroptions.constraints.md) | | MediaStreamConstraints | Constraints to use when creating local media stream. | +| [dataChannel](./sip.js.sessiondescriptionhandleroptions.datachannel.md) | | boolean | If true, create a data channel when making initial offer. | +| [dataChannelLabel](./sip.js.sessiondescriptionhandleroptions.datachannellabel.md) | | string | A human-readable name to use when creating the data channel. | +| [dataChannelOptions](./sip.js.sessiondescriptionhandleroptions.datachanneloptions.md) | | RTCDataChannelInit | Configuration options for creating the data channel. | +| [hold](./sip.js.sessiondescriptionhandleroptions.hold.md) | | boolean | If true, offer and answer directions will be set to place peer on hold. | +| [iceGatheringTimeout](./sip.js.sessiondescriptionhandleroptions.icegatheringtimeout.md) | | number | The maximum duration to wait in ms for ICE gathering to complete. No timeout if undefined or zero. | +| [offerOptions](./sip.js.sessiondescriptionhandleroptions.offeroptions.md) | | RTCOfferOptions | Offer options to use when creating an offer. | +| [onDataChannel](./sip.js.sessiondescriptionhandleroptions.ondatachannel.md) | | (dataChannel: RTCDataChannel) => void | Called upon creating a data channel. | diff --git a/docs/simple-user/sip.js.simpleuser._constructor_.md b/docs/simple-user/sip.js.simpleuser._constructor_.md index 16c45e4ed..095ac533f 100644 --- a/docs/simple-user/sip.js.simpleuser._constructor_.md +++ b/docs/simple-user/sip.js.simpleuser._constructor_.md @@ -16,6 +16,6 @@ constructor(server: string, options?: SimpleUserOptions); | Parameter | Type | Description | | --- | --- | --- | -| server | string | SIP WebSocket Server URL. | -| options | SimpleUserOptions | Options bucket. See [SimpleUserOptions](./sip.js.simpleuseroptions.md) for details. | +| server | string | SIP WebSocket Server URL. | +| options | [SimpleUserOptions](./sip.js.simpleuseroptions.md) | Options bucket. See [SimpleUserOptions](./sip.js.simpleuseroptions.md) for details. | diff --git a/docs/simple-user/sip.js.simpleuser.answer.md b/docs/simple-user/sip.js.simpleuser.answer.md index b2d1b47f1..fb46595a0 100644 --- a/docs/simple-user/sip.js.simpleuser.answer.md +++ b/docs/simple-user/sip.js.simpleuser.answer.md @@ -16,11 +16,11 @@ answer(invitationAcceptOptions?: InvitationAcceptOptions): Promise; | Parameter | Type | Description | | --- | --- | --- | -| invitationAcceptOptions | InvitationAcceptOptions | Optional options for Inviter.accept(). | +| invitationAcceptOptions | InvitationAcceptOptions | Optional options for Inviter.accept(). | Returns: -`Promise` +Promise<void> ## Remarks diff --git a/docs/simple-user/sip.js.simpleuser.call.md b/docs/simple-user/sip.js.simpleuser.call.md index f9d7d0588..a7d9fd791 100644 --- a/docs/simple-user/sip.js.simpleuser.call.md +++ b/docs/simple-user/sip.js.simpleuser.call.md @@ -16,13 +16,13 @@ call(destination: string, inviterOptions?: InviterOptions, inviterInviteOptions? | Parameter | Type | Description | | --- | --- | --- | -| destination | string | The target destination to call. A SIP address to send the INVITE to. | -| inviterOptions | InviterOptions | Optional options for Inviter constructor. | -| inviterInviteOptions | InviterInviteOptions | Optional options for Inviter.invite(). | +| destination | string | The target destination to call. A SIP address to send the INVITE to. | +| inviterOptions | InviterOptions | Optional options for Inviter constructor. | +| inviterInviteOptions | InviterInviteOptions | Optional options for Inviter.invite(). | Returns: -`Promise` +Promise<void> ## Remarks diff --git a/docs/simple-user/sip.js.simpleuser.connect.md b/docs/simple-user/sip.js.simpleuser.connect.md index 724ab5d75..0ec13e8f5 100644 --- a/docs/simple-user/sip.js.simpleuser.connect.md +++ b/docs/simple-user/sip.js.simpleuser.connect.md @@ -13,7 +13,7 @@ connect(): Promise; ``` Returns: -`Promise` +Promise<void> ## Remarks diff --git a/docs/simple-user/sip.js.simpleuser.decline.md b/docs/simple-user/sip.js.simpleuser.decline.md index 8227a0a52..5dc4cb03b 100644 --- a/docs/simple-user/sip.js.simpleuser.decline.md +++ b/docs/simple-user/sip.js.simpleuser.decline.md @@ -13,7 +13,7 @@ decline(): Promise; ``` Returns: -`Promise` +Promise<void> ## Remarks diff --git a/docs/simple-user/sip.js.simpleuser.disconnect.md b/docs/simple-user/sip.js.simpleuser.disconnect.md index e11ea36fb..6898c9091 100644 --- a/docs/simple-user/sip.js.simpleuser.disconnect.md +++ b/docs/simple-user/sip.js.simpleuser.disconnect.md @@ -13,7 +13,7 @@ disconnect(): Promise; ``` Returns: -`Promise` +Promise<void> ## Remarks diff --git a/docs/simple-user/sip.js.simpleuser.hangup.md b/docs/simple-user/sip.js.simpleuser.hangup.md index 867fd2b06..8b3eb0860 100644 --- a/docs/simple-user/sip.js.simpleuser.hangup.md +++ b/docs/simple-user/sip.js.simpleuser.hangup.md @@ -13,7 +13,7 @@ hangup(): Promise; ``` Returns: -`Promise` +Promise<void> ## Remarks diff --git a/docs/simple-user/sip.js.simpleuser.hold.md b/docs/simple-user/sip.js.simpleuser.hold.md index 0868108af..c60cb22fc 100644 --- a/docs/simple-user/sip.js.simpleuser.hold.md +++ b/docs/simple-user/sip.js.simpleuser.hold.md @@ -13,7 +13,7 @@ hold(): Promise; ``` Returns: -`Promise` +Promise<void> ## Remarks diff --git a/docs/simple-user/sip.js.simpleuser.isconnected.md b/docs/simple-user/sip.js.simpleuser.isconnected.md index 775799d17..4d84e2cab 100644 --- a/docs/simple-user/sip.js.simpleuser.isconnected.md +++ b/docs/simple-user/sip.js.simpleuser.isconnected.md @@ -13,5 +13,5 @@ isConnected(): boolean; ``` Returns: -`boolean` +boolean diff --git a/docs/simple-user/sip.js.simpleuser.isheld.md b/docs/simple-user/sip.js.simpleuser.isheld.md index 60d3730f9..6231ddcb5 100644 --- a/docs/simple-user/sip.js.simpleuser.isheld.md +++ b/docs/simple-user/sip.js.simpleuser.isheld.md @@ -13,7 +13,7 @@ isHeld(): boolean; ``` Returns: -`boolean` +boolean ## Remarks diff --git a/docs/simple-user/sip.js.simpleuser.ismuted.md b/docs/simple-user/sip.js.simpleuser.ismuted.md index 907999d68..78552f0a4 100644 --- a/docs/simple-user/sip.js.simpleuser.ismuted.md +++ b/docs/simple-user/sip.js.simpleuser.ismuted.md @@ -13,7 +13,7 @@ isMuted(): boolean; ``` Returns: -`boolean` +boolean ## Remarks diff --git a/docs/simple-user/sip.js.simpleuser.md b/docs/simple-user/sip.js.simpleuser.md index 2741547c6..54b288883 100644 --- a/docs/simple-user/sip.js.simpleuser.md +++ b/docs/simple-user/sip.js.simpleuser.md @@ -26,13 +26,13 @@ While this class is completely functional for simple use cases, it is not intend | Property | Modifiers | Type | Description | | --- | --- | --- | --- | -| [delegate](./sip.js.simpleuser.delegate.md) | | SimpleUserDelegate | undefined | Delegate. | -| [localAudioTrack](./sip.js.simpleuser.localaudiotrack.md) | | MediaStreamTrack | undefined | The local audio track, if available. | -| [localMediaStream](./sip.js.simpleuser.localmediastream.md) | | MediaStream | undefined | The local media stream. Undefined if call not answered. | -| [localVideoTrack](./sip.js.simpleuser.localvideotrack.md) | | MediaStreamTrack | undefined | The local video track, if available. | -| [remoteAudioTrack](./sip.js.simpleuser.remoteaudiotrack.md) | | MediaStreamTrack | undefined | The remote audio track, if available. | -| [remoteMediaStream](./sip.js.simpleuser.remotemediastream.md) | | MediaStream | undefined | The remote media stream. Undefined if call not answered. | -| [remoteVideoTrack](./sip.js.simpleuser.remotevideotrack.md) | | MediaStreamTrack | undefined | The remote video track, if available. | +| [delegate](./sip.js.simpleuser.delegate.md) | | [SimpleUserDelegate](./sip.js.simpleuserdelegate.md) \| undefined | Delegate. | +| [localAudioTrack](./sip.js.simpleuser.localaudiotrack.md) | | MediaStreamTrack \| undefined | The local audio track, if available. | +| [localMediaStream](./sip.js.simpleuser.localmediastream.md) | | MediaStream \| undefined | The local media stream. Undefined if call not answered. | +| [localVideoTrack](./sip.js.simpleuser.localvideotrack.md) | | MediaStreamTrack \| undefined | The local video track, if available. | +| [remoteAudioTrack](./sip.js.simpleuser.remoteaudiotrack.md) | | MediaStreamTrack \| undefined | The remote audio track, if available. | +| [remoteMediaStream](./sip.js.simpleuser.remotemediastream.md) | | MediaStream \| undefined | The remote media stream. Undefined if call not answered. | +| [remoteVideoTrack](./sip.js.simpleuser.remotevideotrack.md) | | MediaStreamTrack \| undefined | The remote video track, if available. | ## Methods diff --git a/docs/simple-user/sip.js.simpleuser.message.md b/docs/simple-user/sip.js.simpleuser.message.md index f39d4f33f..2c6fba0ee 100644 --- a/docs/simple-user/sip.js.simpleuser.message.md +++ b/docs/simple-user/sip.js.simpleuser.message.md @@ -16,12 +16,12 @@ message(destination: string, message: string): Promise; | Parameter | Type | Description | | --- | --- | --- | -| destination | string | The target destination for the message. A SIP address to send the MESSAGE to. | -| message | string | | +| destination | string | The target destination for the message. A SIP address to send the MESSAGE to. | +| message | string | | Returns: -`Promise` +Promise<void> ## Remarks diff --git a/docs/simple-user/sip.js.simpleuser.mute.md b/docs/simple-user/sip.js.simpleuser.mute.md index 41b463979..013915580 100644 --- a/docs/simple-user/sip.js.simpleuser.mute.md +++ b/docs/simple-user/sip.js.simpleuser.mute.md @@ -13,7 +13,7 @@ mute(): void; ``` Returns: -`void` +void ## Remarks diff --git a/docs/simple-user/sip.js.simpleuser.register.md b/docs/simple-user/sip.js.simpleuser.register.md index e59070fe9..6b4419dc8 100644 --- a/docs/simple-user/sip.js.simpleuser.register.md +++ b/docs/simple-user/sip.js.simpleuser.register.md @@ -16,12 +16,12 @@ register(registererOptions?: RegistererOptions, registererRegisterOptions?: Regi | Parameter | Type | Description | | --- | --- | --- | -| registererOptions | RegistererOptions | | -| registererRegisterOptions | RegistererRegisterOptions | | +| registererOptions | RegistererOptions | | +| registererRegisterOptions | RegistererRegisterOptions | | Returns: -`Promise` +Promise<void> ## Remarks diff --git a/docs/simple-user/sip.js.simpleuser.senddtmf.md b/docs/simple-user/sip.js.simpleuser.senddtmf.md index 1c970c18c..7e3f98bf3 100644 --- a/docs/simple-user/sip.js.simpleuser.senddtmf.md +++ b/docs/simple-user/sip.js.simpleuser.senddtmf.md @@ -16,11 +16,11 @@ sendDTMF(tone: string): Promise; | Parameter | Type | Description | | --- | --- | --- | -| tone | string | Tone to send. | +| tone | string | Tone to send. | Returns: -`Promise` +Promise<void> ## Remarks diff --git a/docs/simple-user/sip.js.simpleuser.unhold.md b/docs/simple-user/sip.js.simpleuser.unhold.md index dd82c5635..724264319 100644 --- a/docs/simple-user/sip.js.simpleuser.unhold.md +++ b/docs/simple-user/sip.js.simpleuser.unhold.md @@ -13,7 +13,7 @@ unhold(): Promise; ``` Returns: -`Promise` +Promise<void> ## Remarks diff --git a/docs/simple-user/sip.js.simpleuser.unmute.md b/docs/simple-user/sip.js.simpleuser.unmute.md index 334f31eba..046b6e46f 100644 --- a/docs/simple-user/sip.js.simpleuser.unmute.md +++ b/docs/simple-user/sip.js.simpleuser.unmute.md @@ -13,7 +13,7 @@ unmute(): void; ``` Returns: -`void` +void ## Remarks diff --git a/docs/simple-user/sip.js.simpleuser.unregister.md b/docs/simple-user/sip.js.simpleuser.unregister.md index 0718207e5..555e98ba1 100644 --- a/docs/simple-user/sip.js.simpleuser.unregister.md +++ b/docs/simple-user/sip.js.simpleuser.unregister.md @@ -16,11 +16,11 @@ unregister(registererUnregisterOptions?: RegistererUnregisterOptions): PromiseRegistererUnregisterOptions | | +| registererUnregisterOptions | RegistererUnregisterOptions | | Returns: -`Promise` +Promise<void> ## Remarks diff --git a/docs/simple-user/sip.js.simpleuserdelegate.oncallanswered.md b/docs/simple-user/sip.js.simpleuserdelegate.oncallanswered.md index 661fe035e..0aa9143eb 100644 --- a/docs/simple-user/sip.js.simpleuserdelegate.oncallanswered.md +++ b/docs/simple-user/sip.js.simpleuserdelegate.oncallanswered.md @@ -13,7 +13,7 @@ onCallAnswered?(): void; ``` Returns: -`void` +void ## Remarks diff --git a/docs/simple-user/sip.js.simpleuserdelegate.oncallcreated.md b/docs/simple-user/sip.js.simpleuserdelegate.oncallcreated.md index a34bd8f92..506b7e01d 100644 --- a/docs/simple-user/sip.js.simpleuserdelegate.oncallcreated.md +++ b/docs/simple-user/sip.js.simpleuserdelegate.oncallcreated.md @@ -13,7 +13,7 @@ onCallCreated?(): void; ``` Returns: -`void` +void ## Remarks diff --git a/docs/simple-user/sip.js.simpleuserdelegate.oncalldtmfreceived.md b/docs/simple-user/sip.js.simpleuserdelegate.oncalldtmfreceived.md index a776ffb9b..8574d3835 100644 --- a/docs/simple-user/sip.js.simpleuserdelegate.oncalldtmfreceived.md +++ b/docs/simple-user/sip.js.simpleuserdelegate.oncalldtmfreceived.md @@ -16,12 +16,12 @@ onCallDTMFReceived?(tone: string, duration: number): void; | Parameter | Type | Description | | --- | --- | --- | -| tone | string | | -| duration | number | | +| tone | string | | +| duration | number | | Returns: -`void` +void ## Remarks diff --git a/docs/simple-user/sip.js.simpleuserdelegate.oncallhangup.md b/docs/simple-user/sip.js.simpleuserdelegate.oncallhangup.md index 31038dd01..cd7c329a3 100644 --- a/docs/simple-user/sip.js.simpleuserdelegate.oncallhangup.md +++ b/docs/simple-user/sip.js.simpleuserdelegate.oncallhangup.md @@ -13,7 +13,7 @@ onCallHangup?(): void; ``` Returns: -`void` +void ## Remarks diff --git a/docs/simple-user/sip.js.simpleuserdelegate.oncallhold.md b/docs/simple-user/sip.js.simpleuserdelegate.oncallhold.md index 561a0ba66..3a3f7ff98 100644 --- a/docs/simple-user/sip.js.simpleuserdelegate.oncallhold.md +++ b/docs/simple-user/sip.js.simpleuserdelegate.oncallhold.md @@ -16,11 +16,11 @@ onCallHold?(held: boolean): void; | Parameter | Type | Description | | --- | --- | --- | -| held | boolean | | +| held | boolean | | Returns: -`void` +void ## Remarks diff --git a/docs/simple-user/sip.js.simpleuserdelegate.oncallreceived.md b/docs/simple-user/sip.js.simpleuserdelegate.oncallreceived.md index 393c1cecf..8b1c5be2c 100644 --- a/docs/simple-user/sip.js.simpleuserdelegate.oncallreceived.md +++ b/docs/simple-user/sip.js.simpleuserdelegate.oncallreceived.md @@ -13,7 +13,7 @@ onCallReceived?(): void; ``` Returns: -`void` +void ## Remarks diff --git a/docs/simple-user/sip.js.simpleuserdelegate.onmessagereceived.md b/docs/simple-user/sip.js.simpleuserdelegate.onmessagereceived.md index 9a4f362a4..c4eacd50c 100644 --- a/docs/simple-user/sip.js.simpleuserdelegate.onmessagereceived.md +++ b/docs/simple-user/sip.js.simpleuserdelegate.onmessagereceived.md @@ -16,11 +16,11 @@ onMessageReceived?(message: string): void; | Parameter | Type | Description | | --- | --- | --- | -| message | string | The message received. | +| message | string | The message received. | Returns: -`void` +void ## Remarks diff --git a/docs/simple-user/sip.js.simpleuserdelegate.onregistered.md b/docs/simple-user/sip.js.simpleuserdelegate.onregistered.md index 425ed960e..e81d0c12f 100644 --- a/docs/simple-user/sip.js.simpleuserdelegate.onregistered.md +++ b/docs/simple-user/sip.js.simpleuserdelegate.onregistered.md @@ -13,5 +13,5 @@ onRegistered?(): void; ``` Returns: -`void` +void diff --git a/docs/simple-user/sip.js.simpleuserdelegate.onserverconnect.md b/docs/simple-user/sip.js.simpleuserdelegate.onserverconnect.md index 0756a7cf0..ca2739201 100644 --- a/docs/simple-user/sip.js.simpleuserdelegate.onserverconnect.md +++ b/docs/simple-user/sip.js.simpleuserdelegate.onserverconnect.md @@ -13,7 +13,7 @@ onServerConnect?(): void; ``` Returns: -`void` +void ## Remarks diff --git a/docs/simple-user/sip.js.simpleuserdelegate.onserverdisconnect.md b/docs/simple-user/sip.js.simpleuserdelegate.onserverdisconnect.md index 0b6dfbf87..8fdfb4adf 100644 --- a/docs/simple-user/sip.js.simpleuserdelegate.onserverdisconnect.md +++ b/docs/simple-user/sip.js.simpleuserdelegate.onserverdisconnect.md @@ -16,11 +16,11 @@ onServerDisconnect?(error?: Error): void; | Parameter | Type | Description | | --- | --- | --- | -| error | Error | An Error if server caused the disconnect. Otherwise undefined. | +| error | Error | An Error if server caused the disconnect. Otherwise undefined. | Returns: -`void` +void ## Remarks diff --git a/docs/simple-user/sip.js.simpleuserdelegate.onunregistered.md b/docs/simple-user/sip.js.simpleuserdelegate.onunregistered.md index 243ebef54..3721fb882 100644 --- a/docs/simple-user/sip.js.simpleuserdelegate.onunregistered.md +++ b/docs/simple-user/sip.js.simpleuserdelegate.onunregistered.md @@ -13,5 +13,5 @@ onUnregistered?(): void; ``` Returns: -`void` +void diff --git a/docs/simple-user/sip.js.simpleusermedia.md b/docs/simple-user/sip.js.simpleusermedia.md index fa711d8df..d0a6e51f7 100644 --- a/docs/simple-user/sip.js.simpleusermedia.md +++ b/docs/simple-user/sip.js.simpleusermedia.md @@ -14,9 +14,9 @@ export interface SimpleUserMedia ## Properties -| Property | Type | Description | -| --- | --- | --- | -| [constraints](./sip.js.simpleusermedia.constraints.md) | SimpleUserMediaConstraints | Offer/Answer constraints determine if audio and/or video are utilized. If not specified, only audio is utilized (audio is true, video is false). | -| [local](./sip.js.simpleusermedia.local.md) | SimpleUserMediaLocal | HTML elements for local media streams. | -| [remote](./sip.js.simpleusermedia.remote.md) | SimpleUserMediaRemote | Local HTML media elements. | +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [constraints](./sip.js.simpleusermedia.constraints.md) | | [SimpleUserMediaConstraints](./sip.js.simpleusermediaconstraints.md) | Offer/Answer constraints determine if audio and/or video are utilized. If not specified, only audio is utilized (audio is true, video is false). | +| [local](./sip.js.simpleusermedia.local.md) | | [SimpleUserMediaLocal](./sip.js.simpleusermedialocal.md) | HTML elements for local media streams. | +| [remote](./sip.js.simpleusermedia.remote.md) | | [SimpleUserMediaRemote](./sip.js.simpleusermediaremote.md) | Local HTML media elements. | diff --git a/docs/simple-user/sip.js.simpleusermediaconstraints.md b/docs/simple-user/sip.js.simpleusermediaconstraints.md index 93ee6a5bc..e6561a400 100644 --- a/docs/simple-user/sip.js.simpleusermediaconstraints.md +++ b/docs/simple-user/sip.js.simpleusermediaconstraints.md @@ -14,8 +14,8 @@ export interface SimpleUserMediaConstraints ## Properties -| Property | Type | Description | -| --- | --- | --- | -| [audio](./sip.js.simpleusermediaconstraints.audio.md) | boolean | If true, offer and answer to send and receive audio. | -| [video](./sip.js.simpleusermediaconstraints.video.md) | boolean | If true, offer and answer to send and receive video. | +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [audio](./sip.js.simpleusermediaconstraints.audio.md) | | boolean | If true, offer and answer to send and receive audio. | +| [video](./sip.js.simpleusermediaconstraints.video.md) | | boolean | If true, offer and answer to send and receive video. | diff --git a/docs/simple-user/sip.js.simpleusermedialocal.md b/docs/simple-user/sip.js.simpleusermedialocal.md index 8a3d502fb..446da3242 100644 --- a/docs/simple-user/sip.js.simpleusermedialocal.md +++ b/docs/simple-user/sip.js.simpleusermedialocal.md @@ -14,7 +14,7 @@ export interface SimpleUserMediaLocal ## Properties -| Property | Type | Description | -| --- | --- | --- | -| [video](./sip.js.simpleusermedialocal.video.md) | HTMLVideoElement | The local video media stream is attached to this element. | +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [video](./sip.js.simpleusermedialocal.video.md) | | HTMLVideoElement | The local video media stream is attached to this element. | diff --git a/docs/simple-user/sip.js.simpleusermediaremote.md b/docs/simple-user/sip.js.simpleusermediaremote.md index 31755b908..d720e397b 100644 --- a/docs/simple-user/sip.js.simpleusermediaremote.md +++ b/docs/simple-user/sip.js.simpleusermediaremote.md @@ -14,8 +14,8 @@ export interface SimpleUserMediaRemote ## Properties -| Property | Type | Description | -| --- | --- | --- | -| [audio](./sip.js.simpleusermediaremote.audio.md) | HTMLAudioElement | The remote audio media stream is attached to this element. | -| [video](./sip.js.simpleusermediaremote.video.md) | HTMLVideoElement | The remote video media stream is attached to this element. | +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [audio](./sip.js.simpleusermediaremote.audio.md) | | HTMLAudioElement | The remote audio media stream is attached to this element. | +| [video](./sip.js.simpleusermediaremote.video.md) | | HTMLVideoElement | The remote video media stream is attached to this element. | diff --git a/docs/simple-user/sip.js.simpleuseroptions.md b/docs/simple-user/sip.js.simpleuseroptions.md index c2e33cef5..281c1c030 100644 --- a/docs/simple-user/sip.js.simpleuseroptions.md +++ b/docs/simple-user/sip.js.simpleuseroptions.md @@ -14,12 +14,12 @@ export interface SimpleUserOptions ## Properties -| Property | Type | Description | -| --- | --- | --- | -| [aor](./sip.js.simpleuseroptions.aor.md) | string | User's SIP Address of Record (AOR). | -| [delegate](./sip.js.simpleuseroptions.delegate.md) | SimpleUserDelegate | Delegate for SimpleUser. | -| [media](./sip.js.simpleuseroptions.media.md) | SimpleUserMedia | Media options. | -| [reconnectionAttempts](./sip.js.simpleuseroptions.reconnectionattempts.md) | number | Maximum number of times to attempt to reconnection. | -| [reconnectionDelay](./sip.js.simpleuseroptions.reconnectiondelay.md) | number | Seconds to wait between reconnection attempts. | -| [userAgentOptions](./sip.js.simpleuseroptions.useragentoptions.md) | UserAgentOptions | Options for UserAgent. | +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [aor](./sip.js.simpleuseroptions.aor.md) | | string | User's SIP Address of Record (AOR). | +| [delegate](./sip.js.simpleuseroptions.delegate.md) | | [SimpleUserDelegate](./sip.js.simpleuserdelegate.md) | Delegate for SimpleUser. | +| [media](./sip.js.simpleuseroptions.media.md) | | [SimpleUserMedia](./sip.js.simpleusermedia.md) | Media options. | +| [reconnectionAttempts](./sip.js.simpleuseroptions.reconnectionattempts.md) | | number | Maximum number of times to attempt to reconnection. | +| [reconnectionDelay](./sip.js.simpleuseroptions.reconnectiondelay.md) | | number | Seconds to wait between reconnection attempts. | +| [userAgentOptions](./sip.js.simpleuseroptions.useragentoptions.md) | | UserAgentOptions | Options for UserAgent. | diff --git a/docs/transport/sip.js.transport._constructor_.md b/docs/transport/sip.js.transport._constructor_.md index 4aaec9a52..9c683011f 100644 --- a/docs/transport/sip.js.transport._constructor_.md +++ b/docs/transport/sip.js.transport._constructor_.md @@ -16,6 +16,6 @@ constructor(logger: Logger, options?: TransportOptions); | Parameter | Type | Description | | --- | --- | --- | -| logger | Logger | | -| options | TransportOptions | | +| logger | Logger | | +| options | [TransportOptions](./sip.js.transportoptions.md) | | diff --git a/docs/transport/sip.js.transport.connect.md b/docs/transport/sip.js.transport.connect.md index 2d5df315b..25748a048 100644 --- a/docs/transport/sip.js.transport.connect.md +++ b/docs/transport/sip.js.transport.connect.md @@ -13,5 +13,5 @@ connect(): Promise; ``` Returns: -`Promise` +Promise<void> diff --git a/docs/transport/sip.js.transport.disconnect.md b/docs/transport/sip.js.transport.disconnect.md index 11021afb2..77f1377a9 100644 --- a/docs/transport/sip.js.transport.disconnect.md +++ b/docs/transport/sip.js.transport.disconnect.md @@ -13,5 +13,5 @@ disconnect(): Promise; ``` Returns: -`Promise` +Promise<void> diff --git a/docs/transport/sip.js.transport.dispose.md b/docs/transport/sip.js.transport.dispose.md index 5dd7837bf..26bdb3c6e 100644 --- a/docs/transport/sip.js.transport.dispose.md +++ b/docs/transport/sip.js.transport.dispose.md @@ -11,5 +11,5 @@ dispose(): Promise; ``` Returns: -`Promise` +Promise<void> diff --git a/docs/transport/sip.js.transport.isconnected.md b/docs/transport/sip.js.transport.isconnected.md index b87a72233..1560e1ea1 100644 --- a/docs/transport/sip.js.transport.isconnected.md +++ b/docs/transport/sip.js.transport.isconnected.md @@ -13,7 +13,7 @@ isConnected(): boolean; ``` Returns: -`boolean` +boolean ## Remarks diff --git a/docs/transport/sip.js.transport.md b/docs/transport/sip.js.transport.md index 48a36d638..d38a4b270 100644 --- a/docs/transport/sip.js.transport.md +++ b/docs/transport/sip.js.transport.md @@ -11,6 +11,7 @@ Transport for SIP over secure WebSocket (WSS). ```typescript export declare class Transport implements TransportDefinition ``` +Implements: TransportDefinition ## Constructors @@ -22,14 +23,14 @@ export declare class Transport implements TransportDefinition | Property | Modifiers | Type | Description | | --- | --- | --- | --- | -| [onConnect](./sip.js.transport.onconnect.md) | | (() => void) | undefined | | -| [onDisconnect](./sip.js.transport.ondisconnect.md) | | ((error?: Error) => void) | undefined | | -| [onMessage](./sip.js.transport.onmessage.md) | | ((message: string) => void) | undefined | | -| [protocol](./sip.js.transport.protocol.md) | | string | The protocol. | -| [server](./sip.js.transport.server.md) | | string | The URL of the WebSocket Server. | -| [state](./sip.js.transport.state.md) | | TransportState | Transport state. | -| [stateChange](./sip.js.transport.statechange.md) | | Emitter<TransportState> | Transport state change emitter. | -| [ws](./sip.js.transport.ws.md) | | WebSocket | undefined | The WebSocket. | +| [onConnect](./sip.js.transport.onconnect.md) | | (() => void) \| undefined | | +| [onDisconnect](./sip.js.transport.ondisconnect.md) | | ((error?: Error) => void) \| undefined | | +| [onMessage](./sip.js.transport.onmessage.md) | | ((message: string) => void) \| undefined | | +| [protocol](./sip.js.transport.protocol.md) | | string | The protocol. | +| [server](./sip.js.transport.server.md) | | string | The URL of the WebSocket Server. | +| [state](./sip.js.transport.state.md) | | TransportState | Transport state. | +| [stateChange](./sip.js.transport.statechange.md) | | Emitter<TransportState> | Transport state change emitter. | +| [ws](./sip.js.transport.ws.md) | | WebSocket \| undefined | The WebSocket. | ## Methods diff --git a/docs/transport/sip.js.transport.send.md b/docs/transport/sip.js.transport.send.md index 8149c4c68..b7959d9f9 100644 --- a/docs/transport/sip.js.transport.send.md +++ b/docs/transport/sip.js.transport.send.md @@ -16,9 +16,9 @@ send(message: string): Promise; | Parameter | Type | Description | | --- | --- | --- | -| message | string | Message to send. | +| message | string | Message to send. | Returns: -`Promise` +Promise<void> diff --git a/docs/transport/sip.js.transportoptions.md b/docs/transport/sip.js.transportoptions.md index c6d059723..e29cae06f 100644 --- a/docs/transport/sip.js.transportoptions.md +++ b/docs/transport/sip.js.transportoptions.md @@ -14,9 +14,9 @@ export interface TransportOptions ## Properties -| Property | Type | Description | -| --- | --- | --- | -| [connectionTimeout](./sip.js.transportoptions.connectiontimeout.md) | number | Seconds to wait for WebSocket to connect before giving up. | -| [server](./sip.js.transportoptions.server.md) | string | URL of WebSocket server to connect with. For example, "wss://localhost:8080". | -| [traceSip](./sip.js.transportoptions.tracesip.md) | boolean | If true, messages sent and received by the transport are logged. | +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [connectionTimeout](./sip.js.transportoptions.connectiontimeout.md) | | number | Seconds to wait for WebSocket to connect before giving up. | +| [server](./sip.js.transportoptions.server.md) | | string | URL of WebSocket server to connect with. For example, "wss://localhost:8080". | +| [traceSip](./sip.js.transportoptions.tracesip.md) | | boolean | If true, messages sent and received by the transport are logged. | From 6d29892f105b216c55ff2d191526310ef374671b Mon Sep 17 00:00:00 2001 From: John Riordan Date: Mon, 5 Sep 2022 16:39:20 -0400 Subject: [PATCH 16/73] Update TODO --- docs/TODO.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/docs/TODO.md b/docs/TODO.md index 59117f4fb..f491d9b82 100644 --- a/docs/TODO.md +++ b/docs/TODO.md @@ -1,6 +1,6 @@ # Release Road Map -## 0.18.x +## 0.22.x - free core and API from DOM dependencies - complete more work in progress @@ -15,7 +15,9 @@ ### api-extractor -- issue updating @microsoft/api-extractor past 7.7.11 https://github.com/microsoft/rushstack/issues/1830 +- issue updating @microsoft/api-extractor past 7.7.11 where _2 gets added to class names which match globals (Notification, Transport, etc.) + - https://github.com/microsoft/rushstack/issues/1830 + - potential workaround https://github.com/microsoft/rushstack/issues/2895#issuecomment-943533628 ## Tests @@ -67,7 +69,7 @@ Non-exhaustive research on these parsers, generally it seems like there is nothing both popular and well-typed: -- _ts-pegjs_: we currently use this on top of pegjs (it's not separate). I don't know how far typing can go, but it'd be the lowest work. +- _ts-pegjs_: we currently use this on top of peggy (it's not separate). It used to use pegjs, but pegjs got replaced by peggy. I don't know how far typing can go, but it'd be the lowest work. - _antlr4ts_: antlr4 is a fairly well-used grammar parser, and they built a separate ts project (don't know if its typescript from the ground up). What I don't like is it incurs a runtime dependency. - _tspeg_: this one has very few users, but if it were popular, it would be exactly what we want. It is currently maintained (has been since it was made about 1.25 years ago), is strongly typed throughout, and outputs classes and interfaces. From 6f598b6080b886eea7b4547fb06ed3356a54efbe Mon Sep 17 00:00:00 2001 From: John Riordan Date: Mon, 26 Sep 2022 15:27:12 -0400 Subject: [PATCH 17/73] Update MIGRATION --- docs/MIGRATION.md | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/docs/MIGRATION.md b/docs/MIGRATION.md index 4cb763333..0d9dbfd03 100644 --- a/docs/MIGRATION.md +++ b/docs/MIGRATION.md @@ -2,8 +2,16 @@ * From [Simple to SimpleUser](./migration-simple.md) is relatively simple. -* From 0.17 to 1.0 - * 1.0 is backwards compatible with 0.17 +* From 0.19 to 0.20 + * 0.20 is backwards compatible with 0.19 + +* From 0.18 to 0.19 + * 0.19 is backwards compatible with 0.18 + * Contact matching rewrite + +* From 0.17 to 0.18 + * 0.18 is backwards compatible with 0.17 + * WebRTC SessionDescriptionHandler hold processing rewrite * From [0.16 to 0.17](./migration-0.16-0.17.md) * WebRTC SessionDescriptionHandler rewrite From 6f4187e2e4e19c1e6dbe578c490ca090495fcc15 Mon Sep 17 00:00:00 2001 From: John Riordan Date: Mon, 26 Sep 2022 23:43:19 -0400 Subject: [PATCH 18/73] Update AUTHORS --- AUTHORS.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/AUTHORS.md b/AUTHORS.md index 7a92babd3..a44b89e3b 100644 --- a/AUTHORS.md +++ b/AUTHORS.md @@ -1,5 +1,7 @@ # Authors +## John Riordan [@john-e-riordan](https://github.com/john-e-riordan) + ## James Criscuolo [@james-criscuolo](https://github.com/james-criscuolo) ## Eric Green [@egreenmachine](https://github.com/egreenmachine) From 4ffbaaf6f00e7049d224bbf3bc79acac3ad3c5d6 Mon Sep 17 00:00:00 2001 From: John Riordan Date: Mon, 26 Sep 2022 23:43:38 -0400 Subject: [PATCH 19/73] Update RELEASE --- .npmignore | 11 ------ RELEASE.md | 103 ++++++++++++++++++++++++++++++++++++++++----------- package.json | 3 ++ 3 files changed, 84 insertions(+), 33 deletions(-) delete mode 100644 .npmignore diff --git a/.npmignore b/.npmignore deleted file mode 100644 index 02ff59d78..000000000 --- a/.npmignore +++ /dev/null @@ -1,11 +0,0 @@ -build/ -node_modules/ -test/ -src/ -docs/ -demo/ -etc/ -dist/ -karma.conf.cjs -.travis.yml -tsconfig-base.json \ No newline at end of file diff --git a/RELEASE.md b/RELEASE.md index 4ac678b6a..c163a87d7 100644 --- a/RELEASE.md +++ b/RELEASE.md @@ -1,22 +1,81 @@ -# How To version release SIP.js - -* On your own github, checkout last tagged release on a new branch (note: this can be done on the repo's release branch, instead of making your own) -* remove all dist files -* cherry pick commits you want using -x flag (for "hot patch" releases) -* once ready, test. -* on master, npm version --git-tag-version false -* DO NOT MANUALLY UPDATE THE VERSION. We now hardcode it in the library, using npm version will update it appropriately -* cherry pick version number commit to new branch (or just merge master, if you want everything) -* build and test. -* test again -* add new dist files (git add -f if it complains) -* commit - -* push to local github -* merge (this step and the above one can be skipped if you just do it on the the repo's release branch itself) -* git tag (your version number) -* git push --tags -* get a clean release (as in, fresh clone) -* npm publish -* do release notes on github and release! -* update website +# How to version release SIP.js + +On `main` branch... + +## Development Dependencies + +Prior to making a release, consider updating out of date dependencies. + +* `npm outdated` +* `npm update --save` + +Note that the source code itself has no dependencies. +A lot of work has been done to make it that way, so please keep it that way. + +## Clean, Build and Test + +Make sure it builds and the tests pass from a clean checkout. + +* `git clean -xdf .` +* `npm i` +* `npm run build-and-test` + +All tests must pass. + +* `npm run build-demo` + +All the demos must work. + +## Documentation + +Make sure the documentation is up to date and review any changes to the API. Commit any new documentation and consider the version number bump based on the changes to the API. + +* `npm run build-docs` + +## Version + +DO NOT MANUALLY UPDATE THE VERSION NUMBERS. + +We hardcode the version in the library, using npm version will update it appropriately. + +* `npm version --git-tag-version false` + +The updated files must be commited with a message "Version ". + +## Before Publishing: Make Sure Your Package Installs and Works + +This is important. + +If you can not install it locally, you'll have problems trying to publish it. Or, worse yet, you'll be able to publish it, but you'll be publishing a broken or pointless package. So don't do that. + +This approach will leverage the `npm pack` command to package up and zip your npm package into a single file (`.tgz`), the same way it does for publishing. You can double check that your package will include only the files you intend it to when published and you can go to the project you want to use the package in and install it via this file. The steps to do this are as follows: + +1. From within your npm package directory, run `npm pack` in your terminal. Note the .tgz file it produces and the location of it. +2. Change directories to the project directory where you want to use the npm package. Example: `cd /path/to/project` +3. From within the client project directory, run `npm install /path/to/package.tgz` but replace it with the proper path to the location of the .tgz file from step 1. +4. Then you can start using the package in that client project to test things out +This will give you the closest to production experience for using your npm package. +5. Delete the .tgz file created in step 1. + +## Tag, Push and Publish + +* `git tag ` +* `git push` +* `git push --tags` +* `npm publish` + +### Sigh, don’t use .npmignore + +Instead whitelist files in `package.json`. It's better to be exact about what we want in than to be forgetting to add what we want out. + +``` + "main": "./lib/index.js", + "files": [ + "/lib" + ], +``` + +## Update release notes on GitHub + +* Find 'Releases' on repository page +* Draft and publish release notes for new tag diff --git a/package.json b/package.json index b0e69be12..5cd3df96f 100644 --- a/package.json +++ b/package.json @@ -5,6 +5,9 @@ "version": "0.20.0", "license": "MIT", "main": "./lib/index.js", + "files": [ + "/lib" + ], "module": "./lib/index.js", "sideEffects": false, "type": "module", From bd1b6e0d2c6c43f40d0674ac16ff8c6299576249 Mon Sep 17 00:00:00 2001 From: John Riordan Date: Tue, 27 Sep 2022 09:37:22 -0400 Subject: [PATCH 20/73] Update TODO --- docs/TODO.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/TODO.md b/docs/TODO.md index f491d9b82..54d1e7357 100644 --- a/docs/TODO.md +++ b/docs/TODO.md @@ -1,8 +1,12 @@ # Release Road Map -## 0.22.x +## Next release +- add .js extentions to imports to fix ES6 module resolution +- add tests for recent pull requests accepted without them +- review and remove everything that was deprecated - free core and API from DOM dependencies +- figure out replacement for Travis CI - complete more work in progress - more documentation - more tests From 78a3bf12a19edf3dca2019aa9b726ee4fdf2f60e Mon Sep 17 00:00:00 2001 From: John Riordan Date: Tue, 27 Sep 2022 07:13:55 -0400 Subject: [PATCH 21/73] Update dependencies --- package-lock.json | 1031 +++++++++++++++++++-------------------------- package.json | 14 +- 2 files changed, 438 insertions(+), 607 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0727d5b55..5e939aba9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,18 +9,18 @@ "version": "0.20.0", "license": "MIT", "devDependencies": { - "@microsoft/api-documenter": "^7.19.10", + "@microsoft/api-documenter": "^7.19.14", "@microsoft/api-extractor": "7.7.11", "@types/jasmine": "^4.3.0", - "@typescript-eslint/eslint-plugin": "^5.36.1", - "@typescript-eslint/parser": "^5.36.1", + "@typescript-eslint/eslint-plugin": "^5.38.1", + "@typescript-eslint/parser": "^5.38.1", "circular-dependency-plugin": "^5.2.2", - "eslint": "^8.23.0", + "eslint": "^8.24.0", "eslint-config-prettier": "^8.5.0", "eslint-plugin-prettier": "^4.2.1", "eslint-plugin-tree-shaking": "^1.10.0", "jasmine-core": "^4.4.0", - "karma": "^6.4.0", + "karma": "^6.4.1", "karma-chrome-launcher": "^3.1.1", "karma-cli": "^2.0.0", "karma-jasmine": "^5.1.0", @@ -31,9 +31,9 @@ "mock-socket": "^9.1.5", "peggy": "^1.2.0", "prettier": "^2.7.1", - "ts-loader": "^9.3.1", + "ts-loader": "^9.4.1", "ts-pegjs": "^1.2.2", - "typescript": "^4.8.2", + "typescript": "^4.8.3", "webpack": "^5.74.0", "webpack-cli": "^4.10.0" }, @@ -60,9 +60,9 @@ } }, "node_modules/@eslint/eslintrc": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.1.tgz", - "integrity": "sha512-OhSY22oQQdw3zgPOOwdoj01l/Dzl1Z+xyUP33tkSN+aqyEhymJCcPHyXt+ylW8FSe0TfRC2VG+ROQOapD0aZSQ==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.2.tgz", + "integrity": "sha512-AXYd23w1S/bv3fTs3Lz0vjiYemS08jWkI3hYyS9I1ry+0f+Yjs1wm+sU0BS8qDOPrBIkp4qHYC16I8uVtpLajQ==", "dev": true, "dependencies": { "ajv": "^6.12.4", @@ -101,9 +101,9 @@ } }, "node_modules/@humanwhocodes/config-array": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.10.4.tgz", - "integrity": "sha512-mXAIHxZT3Vcpg83opl1wGlVZ9xydbfZO3r5YfRSH6Gpp2J/PfdBP0wbDa2sO6/qRbcalpoevVyW6A/fI6LfeMw==", + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.10.5.tgz", + "integrity": "sha512-XVVDtp+dVvRxMoxSiSfasYaG02VEe1qH5cKgMQJWhol6HwzbcqoCMJi8dAGoYAO57jhUyhI6cWuRiTcRaDaYug==", "dev": true, "dependencies": { "@humanwhocodes/object-schema": "^1.2.1", @@ -202,15 +202,15 @@ } }, "node_modules/@microsoft/api-documenter": { - "version": "7.19.10", - "resolved": "https://registry.npmjs.org/@microsoft/api-documenter/-/api-documenter-7.19.10.tgz", - "integrity": "sha512-I2c4EkmiCDQ3pgJPpq4k9D8Hatml2PuWHwHimwo7HECeqQm4Vcqkw6cCZ0MPKQrpfmyG9WyK+vrhbOL0pxyfWA==", + "version": "7.19.14", + "resolved": "https://registry.npmjs.org/@microsoft/api-documenter/-/api-documenter-7.19.14.tgz", + "integrity": "sha512-eLCJ33CnKErTL2rBrN3ILJLf5VogPaIaI7I7vrLzQZJ5ti/Gv4GNvwvkhlsQ9I000L/+iplDf2UwcTYZM7HHtg==", "dev": true, "dependencies": { - "@microsoft/api-extractor-model": "7.24.0", + "@microsoft/api-extractor-model": "7.24.2", "@microsoft/tsdoc": "0.14.1", - "@rushstack/node-core-library": "3.51.1", - "@rushstack/ts-command-line": "4.12.2", + "@rushstack/node-core-library": "3.52.0", + "@rushstack/ts-command-line": "4.12.3", "colors": "~1.2.1", "js-yaml": "~3.13.1", "resolve": "~1.17.0" @@ -219,24 +219,6 @@ "api-documenter": "bin/api-documenter" } }, - "node_modules/@microsoft/api-documenter/node_modules/@microsoft/tsdoc": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.14.1.tgz", - "integrity": "sha512-6Wci+Tp3CgPt/B9B0a3J4s3yMgLNSku6w5TV6mN+61C71UqsRBv2FUibBf3tPGlNxebgPHMEUzKpb1ggE8KCKw==", - "dev": true - }, - "node_modules/@microsoft/api-documenter/node_modules/resolve": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", - "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", - "dev": true, - "dependencies": { - "path-parse": "^1.0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/@microsoft/api-extractor": { "version": "7.7.11", "resolved": "https://registry.npmjs.org/@microsoft/api-extractor/-/api-extractor-7.7.11.tgz", @@ -258,22 +240,16 @@ } }, "node_modules/@microsoft/api-extractor-model": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@microsoft/api-extractor-model/-/api-extractor-model-7.24.0.tgz", - "integrity": "sha512-lFzF5h+quTyVB7eaKJkqrbQRDGSkrHzXyF8iMVvHdlaNrodGeyhtQeBFDuRVvBXTW2ILBiOV6ZWwUM1eGKcD+A==", + "version": "7.24.2", + "resolved": "https://registry.npmjs.org/@microsoft/api-extractor-model/-/api-extractor-model-7.24.2.tgz", + "integrity": "sha512-uUvjqTCY7hYERWGks+joTioN1QYHIucCDy7I/JqLxFxLbFXE5dpc1X7L+FG4PN/s8QYL24DKt0fqJkgcrFKLTw==", "dev": true, "dependencies": { "@microsoft/tsdoc": "0.14.1", "@microsoft/tsdoc-config": "~0.16.1", - "@rushstack/node-core-library": "3.51.1" + "@rushstack/node-core-library": "3.52.0" } }, - "node_modules/@microsoft/api-extractor-model/node_modules/@microsoft/tsdoc": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.14.1.tgz", - "integrity": "sha512-6Wci+Tp3CgPt/B9B0a3J4s3yMgLNSku6w5TV6mN+61C71UqsRBv2FUibBf3tPGlNxebgPHMEUzKpb1ggE8KCKw==", - "dev": true - }, "node_modules/@microsoft/api-extractor/node_modules/@microsoft/api-extractor-model": { "version": "7.7.10", "resolved": "https://registry.npmjs.org/@microsoft/api-extractor-model/-/api-extractor-model-7.7.10.tgz", @@ -284,6 +260,12 @@ "@rushstack/node-core-library": "3.19.6" } }, + "node_modules/@microsoft/api-extractor/node_modules/@microsoft/tsdoc": { + "version": "0.12.19", + "resolved": "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.12.19.tgz", + "integrity": "sha512-IpgPxHrNxZiMNUSXqR1l/gePKPkfAmIKoDRP9hp7OwjU29ZR8WCJsOJ8iBKgw0Qk+pFwR+8Y1cy8ImLY6e9m4A==", + "dev": true + }, "node_modules/@microsoft/api-extractor/node_modules/@rushstack/node-core-library": { "version": "3.19.6", "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-3.19.6.tgz", @@ -310,6 +292,36 @@ "colors": "~1.2.1" } }, + "node_modules/@microsoft/api-extractor/node_modules/@types/argparse": { + "version": "1.0.33", + "resolved": "https://registry.npmjs.org/@types/argparse/-/argparse-1.0.33.tgz", + "integrity": "sha512-VQgHxyPMTj3hIlq9SY1mctqx+Jj8kpQfoLvDlVSDNOyuYs8JYfkuY3OW/4+dO657yPmNhHpePRx0/Tje5ImNVQ==", + "dev": true + }, + "node_modules/@microsoft/api-extractor/node_modules/@types/node": { + "version": "10.17.13", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.13.tgz", + "integrity": "sha512-pMCcqU2zT4TjqYFrWtYHKal7Sl30Ims6ulZ4UFXxI4xbtQqK/qqKwkDoBFCfooRqqmRu9vY3xaJRwxSh673aYg==", + "dev": true + }, + "node_modules/@microsoft/api-extractor/node_modules/resolve": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz", + "integrity": "sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==", + "dev": true, + "dependencies": { + "path-parse": "^1.0.5" + } + }, + "node_modules/@microsoft/api-extractor/node_modules/semver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha512-mfmm3/H9+67MCVix1h+IXTpDwL6710LyHuk7+cWC9T1mE0qz4iHhh6r4hU2wrIT9iTsAAC2XQRvfblL028cpLw==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, "node_modules/@microsoft/api-extractor/node_modules/typescript": { "version": "3.7.7", "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.7.7.tgz", @@ -323,28 +335,54 @@ "node": ">=4.2.0" } }, + "node_modules/@microsoft/api-extractor/node_modules/validator": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-8.2.0.tgz", + "integrity": "sha512-Yw5wW34fSv5spzTXNkokD6S6/Oq92d8q/t14TqsS3fAiA1RYnxSFSIZ+CY3n6PGGRCq5HhJTSepQvFUS2QUDxA==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/@microsoft/api-extractor/node_modules/z-schema": { + "version": "3.18.4", + "resolved": "https://registry.npmjs.org/z-schema/-/z-schema-3.18.4.tgz", + "integrity": "sha512-DUOKC/IhbkdLKKiV89gw9DUauTV8U/8yJl1sjf6MtDmzevLKOF2duNJ495S3MFVjqZarr+qNGCPbkg4mu4PpLw==", + "dev": true, + "dependencies": { + "lodash.get": "^4.0.0", + "lodash.isequal": "^4.0.0", + "validator": "^8.0.0" + }, + "bin": { + "z-schema": "bin/z-schema" + }, + "optionalDependencies": { + "commander": "^2.7.1" + } + }, "node_modules/@microsoft/tsdoc": { - "version": "0.12.19", - "resolved": "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.12.19.tgz", - "integrity": "sha512-IpgPxHrNxZiMNUSXqR1l/gePKPkfAmIKoDRP9hp7OwjU29ZR8WCJsOJ8iBKgw0Qk+pFwR+8Y1cy8ImLY6e9m4A==", + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.14.1.tgz", + "integrity": "sha512-6Wci+Tp3CgPt/B9B0a3J4s3yMgLNSku6w5TV6mN+61C71UqsRBv2FUibBf3tPGlNxebgPHMEUzKpb1ggE8KCKw==", "dev": true }, "node_modules/@microsoft/tsdoc-config": { - "version": "0.16.1", - "resolved": "https://registry.npmjs.org/@microsoft/tsdoc-config/-/tsdoc-config-0.16.1.tgz", - "integrity": "sha512-2RqkwiD4uN6MLnHFljqBlZIXlt/SaUT6cuogU1w2ARw4nKuuppSmR0+s+NC+7kXBQykd9zzu0P4HtBpZT5zBpQ==", + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@microsoft/tsdoc-config/-/tsdoc-config-0.16.2.tgz", + "integrity": "sha512-OGiIzzoBLgWWR0UdRJX98oYO+XKGf7tiK4Zk6tQ/E4IJqGCe7dvkTvgDZV5cFJUzLGDOjeAXrnZoA6QkVySuxw==", "dev": true, "dependencies": { - "@microsoft/tsdoc": "0.14.1", + "@microsoft/tsdoc": "0.14.2", "ajv": "~6.12.6", "jju": "~1.4.0", "resolve": "~1.19.0" } }, "node_modules/@microsoft/tsdoc-config/node_modules/@microsoft/tsdoc": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.14.1.tgz", - "integrity": "sha512-6Wci+Tp3CgPt/B9B0a3J4s3yMgLNSku6w5TV6mN+61C71UqsRBv2FUibBf3tPGlNxebgPHMEUzKpb1ggE8KCKw==", + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.14.2.tgz", + "integrity": "sha512-9b8mPpKrfeGRuhFH5iO1iwCLeIIsV6+H1sRfxbkoGXIyQE2BTsPd9zqSqQJ+pv5sJ/hT5M1zvOFL02MnEezFug==", "dev": true }, "node_modules/@microsoft/tsdoc-config/node_modules/resolve": { @@ -396,9 +434,9 @@ } }, "node_modules/@rushstack/node-core-library": { - "version": "3.51.1", - "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-3.51.1.tgz", - "integrity": "sha512-xLoUztvGpaT5CphDexDPt2WbBx8D68VS5tYOkwfr98p90y0f/wepgXlTA/q5MUeZGGucASiXKp5ysdD+GPYf9A==", + "version": "3.52.0", + "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-3.52.0.tgz", + "integrity": "sha512-Z+MAP//G3rEGZd3JxJcBGcPYJlh8pvPoLMTLa5Sy6FTE6hRPzN+5J8DT7BbTmlqZaL6SZpXF30heRUbnYOvujw==", "dev": true, "dependencies": { "@types/node": "12.20.24", @@ -411,72 +449,10 @@ "z-schema": "~5.0.2" } }, - "node_modules/@rushstack/node-core-library/node_modules/@types/node": { - "version": "12.20.24", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.24.tgz", - "integrity": "sha512-yxDeaQIAJlMav7fH5AQqPH1u8YIuhYJXYBzxaQ4PifsU0GDO38MSdmEDeRlIxrKbC6NbEaaEHDanWb+y30U8SQ==", - "dev": true - }, - "node_modules/@rushstack/node-core-library/node_modules/resolve": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", - "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", - "dev": true, - "dependencies": { - "path-parse": "^1.0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/@rushstack/node-core-library/node_modules/semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@rushstack/node-core-library/node_modules/validator": { - "version": "13.7.0", - "resolved": "https://registry.npmjs.org/validator/-/validator-13.7.0.tgz", - "integrity": "sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/@rushstack/node-core-library/node_modules/z-schema": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/z-schema/-/z-schema-5.0.4.tgz", - "integrity": "sha512-gm/lx3hDzJNcLwseIeQVm1UcwhWIKpSB4NqH89pTBtFns4k/HDHudsICtvG05Bvw/Mv3jMyk700y5dadueLHdA==", - "dev": true, - "dependencies": { - "lodash.get": "^4.4.2", - "lodash.isequal": "^4.5.0", - "validator": "^13.7.0" - }, - "bin": { - "z-schema": "bin/z-schema" - }, - "engines": { - "node": ">=8.0.0" - }, - "optionalDependencies": { - "commander": "^2.20.3" - } - }, "node_modules/@rushstack/ts-command-line": { - "version": "4.12.2", - "resolved": "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-4.12.2.tgz", - "integrity": "sha512-poBtnumLuWmwmhCEkVAgynWgtnF9Kygekxyp4qtQUSbBrkuyPQTL85c8Cva1YfoUpOdOXxezMAkUt0n5SNKGqw==", + "version": "4.12.3", + "resolved": "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-4.12.3.tgz", + "integrity": "sha512-Pdij22RotMXzI+HWHyYCvw0RMZhiP5a6Za/96XamZ1+mxmpSm4ujf8TROKxGAHySmR5A8iNVSlzhNMnUlFQE6g==", "dev": true, "dependencies": { "@types/argparse": "1.0.38", @@ -485,12 +461,6 @@ "string-argv": "~0.3.1" } }, - "node_modules/@rushstack/ts-command-line/node_modules/@types/argparse": { - "version": "1.0.38", - "resolved": "https://registry.npmjs.org/@types/argparse/-/argparse-1.0.38.tgz", - "integrity": "sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==", - "dev": true - }, "node_modules/@socket.io/component-emitter": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", @@ -498,9 +468,9 @@ "dev": true }, "node_modules/@types/argparse": { - "version": "1.0.33", - "resolved": "https://registry.npmjs.org/@types/argparse/-/argparse-1.0.33.tgz", - "integrity": "sha512-VQgHxyPMTj3hIlq9SY1mctqx+Jj8kpQfoLvDlVSDNOyuYs8JYfkuY3OW/4+dO657yPmNhHpePRx0/Tje5ImNVQ==", + "version": "1.0.38", + "resolved": "https://registry.npmjs.org/@types/argparse/-/argparse-1.0.38.tgz", + "integrity": "sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==", "dev": true }, "node_modules/@types/cookie": { @@ -554,22 +524,21 @@ "dev": true }, "node_modules/@types/node": { - "version": "10.17.13", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.13.tgz", - "integrity": "sha512-pMCcqU2zT4TjqYFrWtYHKal7Sl30Ims6ulZ4UFXxI4xbtQqK/qqKwkDoBFCfooRqqmRu9vY3xaJRwxSh673aYg==", + "version": "12.20.24", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.24.tgz", + "integrity": "sha512-yxDeaQIAJlMav7fH5AQqPH1u8YIuhYJXYBzxaQ4PifsU0GDO38MSdmEDeRlIxrKbC6NbEaaEHDanWb+y30U8SQ==", "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.36.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.36.2.tgz", - "integrity": "sha512-OwwR8LRwSnI98tdc2z7mJYgY60gf7I9ZfGjN5EjCwwns9bdTuQfAXcsjSB2wSQ/TVNYSGKf4kzVXbNGaZvwiXw==", + "version": "5.38.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.38.1.tgz", + "integrity": "sha512-ky7EFzPhqz3XlhS7vPOoMDaQnQMn+9o5ICR9CPr/6bw8HrFkzhMSxuA3gRfiJVvs7geYrSeawGJjZoZQKCOglQ==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.36.2", - "@typescript-eslint/type-utils": "5.36.2", - "@typescript-eslint/utils": "5.36.2", + "@typescript-eslint/scope-manager": "5.38.1", + "@typescript-eslint/type-utils": "5.38.1", + "@typescript-eslint/utils": "5.38.1", "debug": "^4.3.4", - "functional-red-black-tree": "^1.0.1", "ignore": "^5.2.0", "regexpp": "^3.2.0", "semver": "^7.3.7", @@ -592,30 +561,15 @@ } } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/@typescript-eslint/parser": { - "version": "5.36.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.36.2.tgz", - "integrity": "sha512-qS/Kb0yzy8sR0idFspI9Z6+t7mqk/oRjnAYfewG+VN73opAUvmYL3oPIMmgOX6CnQS6gmVIXGshlb5RY/R22pA==", + "version": "5.38.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.38.1.tgz", + "integrity": "sha512-LDqxZBVFFQnQRz9rUZJhLmox+Ep5kdUmLatLQnCRR6523YV+XhRjfYzStQ4MheFA8kMAfUlclHSbu+RKdRwQKw==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.36.2", - "@typescript-eslint/types": "5.36.2", - "@typescript-eslint/typescript-estree": "5.36.2", + "@typescript-eslint/scope-manager": "5.38.1", + "@typescript-eslint/types": "5.38.1", + "@typescript-eslint/typescript-estree": "5.38.1", "debug": "^4.3.4" }, "engines": { @@ -635,13 +589,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "5.36.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.36.2.tgz", - "integrity": "sha512-cNNP51L8SkIFSfce8B1NSUBTJTu2Ts4nWeWbFrdaqjmn9yKrAaJUBHkyTZc0cL06OFHpb+JZq5AUHROS398Orw==", + "version": "5.38.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.38.1.tgz", + "integrity": "sha512-BfRDq5RidVU3RbqApKmS7RFMtkyWMM50qWnDAkKgQiezRtLKsoyRKIvz1Ok5ilRWeD9IuHvaidaLxvGx/2eqTQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.36.2", - "@typescript-eslint/visitor-keys": "5.36.2" + "@typescript-eslint/types": "5.38.1", + "@typescript-eslint/visitor-keys": "5.38.1" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -652,13 +606,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "5.36.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.36.2.tgz", - "integrity": "sha512-rPQtS5rfijUWLouhy6UmyNquKDPhQjKsaKH0WnY6hl/07lasj8gPaH2UD8xWkePn6SC+jW2i9c2DZVDnL+Dokw==", + "version": "5.38.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.38.1.tgz", + "integrity": "sha512-UU3j43TM66gYtzo15ivK2ZFoDFKKP0k03MItzLdq0zV92CeGCXRfXlfQX5ILdd4/DSpHkSjIgLLLh1NtkOJOAw==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "5.36.2", - "@typescript-eslint/utils": "5.36.2", + "@typescript-eslint/typescript-estree": "5.38.1", + "@typescript-eslint/utils": "5.38.1", "debug": "^4.3.4", "tsutils": "^3.21.0" }, @@ -679,9 +633,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "5.36.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.36.2.tgz", - "integrity": "sha512-9OJSvvwuF1L5eS2EQgFUbECb99F0mwq501w0H0EkYULkhFa19Qq7WFbycdw1PexAc929asupbZcgjVIe6OK/XQ==", + "version": "5.38.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.38.1.tgz", + "integrity": "sha512-QTW1iHq1Tffp9lNfbfPm4WJabbvpyaehQ0SrvVK2yfV79SytD9XDVxqiPvdrv2LK7DGSFo91TB2FgWanbJAZXg==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -692,13 +646,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.36.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.36.2.tgz", - "integrity": "sha512-8fyH+RfbKc0mTspfuEjlfqA4YywcwQK2Amcf6TDOwaRLg7Vwdu4bZzyvBZp4bjt1RRjQ5MDnOZahxMrt2l5v9w==", + "version": "5.38.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.38.1.tgz", + "integrity": "sha512-99b5e/Enoe8fKMLdSuwrfH/C0EIbpUWmeEKHmQlGZb8msY33qn1KlkFww0z26o5Omx7EVjzVDCWEfrfCDHfE7g==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.36.2", - "@typescript-eslint/visitor-keys": "5.36.2", + "@typescript-eslint/types": "5.38.1", + "@typescript-eslint/visitor-keys": "5.38.1", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -718,31 +672,16 @@ } } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/@typescript-eslint/utils": { - "version": "5.36.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.36.2.tgz", - "integrity": "sha512-uNcopWonEITX96v9pefk9DC1bWMdkweeSsewJ6GeC7L6j2t0SJywisgkr9wUTtXk90fi2Eljj90HSHm3OGdGRg==", + "version": "5.38.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.38.1.tgz", + "integrity": "sha512-oIuUiVxPBsndrN81oP8tXnFa/+EcZ03qLqPDfSZ5xIJVm7A9V0rlkQwwBOAGtrdN70ZKDlKv+l1BeT4eSFxwXA==", "dev": true, "dependencies": { "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.36.2", - "@typescript-eslint/types": "5.36.2", - "@typescript-eslint/typescript-estree": "5.36.2", + "@typescript-eslint/scope-manager": "5.38.1", + "@typescript-eslint/types": "5.38.1", + "@typescript-eslint/typescript-estree": "5.38.1", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0" }, @@ -758,12 +697,12 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.36.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.36.2.tgz", - "integrity": "sha512-BtRvSR6dEdrNt7Net2/XDjbYKU5Ml6GqJgVfXT0CxTCJlnIqK7rAGreuWKMT2t8cFUT2Msv5oxw0GMRD7T5J7A==", + "version": "5.38.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.38.1.tgz", + "integrity": "sha512-bSHr1rRxXt54+j2n4k54p4fj8AHJ49VDWtjpImOpzQj4qjAiOpPni+V1Tyajh19Api1i844F757cur8wH3YvOA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.36.2", + "@typescript-eslint/types": "5.38.1", "eslint-visitor-keys": "^3.3.0" }, "engines": { @@ -1177,9 +1116,9 @@ } }, "node_modules/browserslist": { - "version": "4.21.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.3.tgz", - "integrity": "sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ==", + "version": "4.21.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", + "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", "dev": true, "funding": [ { @@ -1192,10 +1131,10 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001370", - "electron-to-chromium": "^1.4.202", + "caniuse-lite": "^1.0.30001400", + "electron-to-chromium": "^1.4.251", "node-releases": "^2.0.6", - "update-browserslist-db": "^1.0.5" + "update-browserslist-db": "^1.0.9" }, "bin": { "browserslist": "cli.js" @@ -1242,9 +1181,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001390", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001390.tgz", - "integrity": "sha512-sS4CaUM+/+vqQUlCvCJ2WtDlV81aWtHhqeEVkLokVJJa3ViN4zDxAGfq9R8i1m90uGHxo99cy10Od+lvn3hf0g==", + "version": "1.0.30001412", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001412.tgz", + "integrity": "sha512-+TeEIee1gS5bYOiuf+PS/kp2mrXic37Hl66VY6EAfxasIk5fELTktK2oOezYed12H8w7jt3s512PpulQidPjwA==", "dev": true, "funding": [ { @@ -1485,9 +1424,9 @@ "dev": true }, "node_modules/date-format": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.13.tgz", - "integrity": "sha512-bnYCwf8Emc3pTD8pXnre+wfnjGtfi5ncMDKy7+cWZXbmRAsdWkOQHrfC1yz/KiwP5thDp2kCHWYWKBX4HP1hoQ==", + "version": "4.0.14", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.14.tgz", + "integrity": "sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==", "dev": true, "engines": { "node": ">=4.0" @@ -1584,9 +1523,9 @@ "dev": true }, "node_modules/electron-to-chromium": { - "version": "1.4.241", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.241.tgz", - "integrity": "sha512-e7Wsh4ilaioBZ5bMm6+F4V5c11dh56/5Jwz7Hl5Tu1J7cnB+Pqx5qIF2iC7HPpfyQMqGSvvLP5bBAIDd2gAtGw==", + "version": "1.4.264", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.264.tgz", + "integrity": "sha512-AZ6ZRkucHOQT8wke50MktxtmcWZr67kE17X/nAXFf62NIdMdgY6xfsaJD5Szoy84lnkuPWH+4tTNE3s2+bPCiw==", "dev": true }, "node_modules/emoji-regex": { @@ -1699,13 +1638,13 @@ } }, "node_modules/eslint": { - "version": "8.23.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.23.0.tgz", - "integrity": "sha512-pBG/XOn0MsJcKcTRLr27S5HpzQo4kLr+HjLQIyK4EiCsijDl/TB+h5uEuJU6bQ8Edvwz1XWOjpaP2qgnXGpTcA==", + "version": "8.24.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.24.0.tgz", + "integrity": "sha512-dWFaPhGhTAiPcCgm3f6LI2MBWbogMnTJzFBbhXVRQDJPkr9pGZvVjlVfXd+vyDcWPA2Ic9L2AXPIQM0+vk/cSQ==", "dev": true, "dependencies": { - "@eslint/eslintrc": "^1.3.1", - "@humanwhocodes/config-array": "^0.10.4", + "@eslint/eslintrc": "^1.3.2", + "@humanwhocodes/config-array": "^0.10.5", "@humanwhocodes/gitignore-to-minimatch": "^1.0.2", "@humanwhocodes/module-importer": "^1.0.1", "ajv": "^6.10.0", @@ -1723,7 +1662,6 @@ "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", "find-up": "^5.0.0", - "functional-red-black-tree": "^1.0.1", "glob-parent": "^6.0.1", "globals": "^13.15.0", "globby": "^11.1.0", @@ -1732,6 +1670,7 @@ "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", + "js-sdsl": "^4.1.4", "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", @@ -2009,9 +1948,9 @@ "dev": true }, "node_modules/fast-glob": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", - "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", "dev": true, "dependencies": { "@nodelib/fs.stat": "^2.0.2", @@ -2171,9 +2110,9 @@ "dev": true }, "node_modules/follow-redirects": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", - "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==", + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", "dev": true, "funding": [ { @@ -2230,12 +2169,6 @@ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, - "node_modules/functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", - "dev": true - }, "node_modules/get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", @@ -2246,9 +2179,9 @@ } }, "node_modules/get-intrinsic": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz", - "integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", + "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", "dev": true, "dependencies": { "function-bind": "^1.1.1", @@ -2658,6 +2591,12 @@ "integrity": "sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==", "dev": true }, + "node_modules/js-sdsl": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.1.4.tgz", + "integrity": "sha512-Y2/yD55y5jteOAmY50JbUZYwk3CP3wnLPEZnlR1w9oKhITrBEtAxwuWKebFf8hMrPMgbYwFoWK/lH2sBkErELw==", + "dev": true + }, "node_modules/js-yaml": { "version": "3.13.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", @@ -2699,9 +2638,9 @@ } }, "node_modules/karma": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/karma/-/karma-6.4.0.tgz", - "integrity": "sha512-s8m7z0IF5g/bS5ONT7wsOavhW4i4aFkzD4u4wgzAQWT4HGUeWI3i21cK2Yz6jndMAeHETp5XuNsRoyGJZXVd4w==", + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/karma/-/karma-6.4.1.tgz", + "integrity": "sha512-Cj57NKOskK7wtFWSlMvZf459iX+kpYIPXmkNUzP2WAFcA7nhr/ALn5R7sw3w+1udFDcpMx/tuB8d5amgm3ijaA==", "dev": true, "dependencies": { "@colors/colors": "1.5.0", @@ -3660,23 +3599,6 @@ "node": ">= 0.10" } }, - "node_modules/rechoir/node_modules/resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "dev": true, - "dependencies": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/regexpp": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", @@ -3705,12 +3627,15 @@ "dev": true }, "node_modules/resolve": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz", - "integrity": "sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==", + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", "dev": true, "dependencies": { - "path-parse": "^1.0.5" + "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/resolve-cwd": { @@ -3842,12 +3767,18 @@ } }, "node_modules/semver": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", - "integrity": "sha512-mfmm3/H9+67MCVix1h+IXTpDwL6710LyHuk7+cWC9T1mE0qz4iHhh6r4hU2wrIT9iTsAAC2XQRvfblL028cpLw==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, "bin": { - "semver": "bin/semver" + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, "node_modules/serialize-javascript": { @@ -3992,12 +3923,12 @@ } }, "node_modules/streamroller": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.1.2.tgz", - "integrity": "sha512-wZswqzbgGGsXYIrBYhOE0yP+nQ6XRk7xDcYwuQAGTYXdyAUmvgVFE0YU1g5pvQT0m7GBaQfYcSnlHbapuK0H0A==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.1.3.tgz", + "integrity": "sha512-CphIJyFx2SALGHeINanjFRKQ4l7x2c+rXYJ4BMq0gd+ZK0gi4VT8b+eHe2wi58x4UayBAKx4xtHpXT/ea1cz8w==", "dev": true, "dependencies": { - "date-format": "^4.0.13", + "date-format": "^4.0.14", "debug": "^4.3.4", "fs-extra": "^8.1.0" }, @@ -4078,18 +4009,6 @@ "node": ">=8" } }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/tapable": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", @@ -4197,9 +4116,9 @@ } }, "node_modules/ts-loader": { - "version": "9.3.1", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.3.1.tgz", - "integrity": "sha512-OkyShkcZTsTwyS3Kt7a4rsT/t2qvEVQuKCTg4LJmpj9fhFR7ukGdZwV6Qq3tRUkqcXtfGpPR7+hFKHCG/0d3Lw==", + "version": "9.4.1", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.4.1.tgz", + "integrity": "sha512-384TYAqGs70rn9F0VBnh6BPTfhga7yFNdC5gXbQpDrBj9/KsT4iRkGqKXhziofHOlE2j6YEaiTYVGKKvPhGWvw==", "dev": true, "dependencies": { "chalk": "^4.1.0", @@ -4215,21 +4134,6 @@ "webpack": "^5.0.0" } }, - "node_modules/ts-loader/node_modules/semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/ts-pegjs": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/ts-pegjs/-/ts-pegjs-1.2.2.tgz", @@ -4301,9 +4205,9 @@ } }, "node_modules/typescript": { - "version": "4.8.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.2.tgz", - "integrity": "sha512-C0I1UsrrDHo2fYI5oaCGbSejwX4ch+9Y5jTQELvovfmFkK3HHSZJB8MSJcWLmCUBzQBchCrZ9rMRV6GuNrvGtw==", + "version": "4.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.3.tgz", + "integrity": "sha512-goMHfm00nWPa8UvR/CPSvykqf6dVV8x/dp0c5mFTMTIu0u0FlGWRioyy7Nn0PGAdHxpJZnuO/ut+PpQ8UiHAig==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -4351,9 +4255,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.7.tgz", - "integrity": "sha512-iN/XYesmZ2RmmWAiI4Z5rq0YqSiv0brj9Ce9CfhNE4xIW2h+MFxcgkxIzZ+ShkFPUkjU3gQ+3oypadD3RAMtrg==", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.9.tgz", + "integrity": "sha512-/xsqn21EGVdXI3EXSum1Yckj3ZVZugqyOZQ/CxYPBD/R+ko9NSUScf8tFF4dOKY+2pvSSJA/S+5B8s4Zr4kyvg==", "dev": true, "funding": [ { @@ -4395,9 +4299,9 @@ } }, "node_modules/validator": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/validator/-/validator-8.2.0.tgz", - "integrity": "sha512-Yw5wW34fSv5spzTXNkokD6S6/Oq92d8q/t14TqsS3fAiA1RYnxSFSIZ+CY3n6PGGRCq5HhJTSepQvFUS2QUDxA==", + "version": "13.7.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.7.0.tgz", + "integrity": "sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw==", "dev": true, "engines": { "node": ">= 0.10" @@ -4697,20 +4601,23 @@ } }, "node_modules/z-schema": { - "version": "3.18.4", - "resolved": "https://registry.npmjs.org/z-schema/-/z-schema-3.18.4.tgz", - "integrity": "sha512-DUOKC/IhbkdLKKiV89gw9DUauTV8U/8yJl1sjf6MtDmzevLKOF2duNJ495S3MFVjqZarr+qNGCPbkg4mu4PpLw==", + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/z-schema/-/z-schema-5.0.4.tgz", + "integrity": "sha512-gm/lx3hDzJNcLwseIeQVm1UcwhWIKpSB4NqH89pTBtFns4k/HDHudsICtvG05Bvw/Mv3jMyk700y5dadueLHdA==", "dev": true, "dependencies": { - "lodash.get": "^4.0.0", - "lodash.isequal": "^4.0.0", - "validator": "^8.0.0" + "lodash.get": "^4.4.2", + "lodash.isequal": "^4.5.0", + "validator": "^13.7.0" }, "bin": { "z-schema": "bin/z-schema" }, + "engines": { + "node": ">=8.0.0" + }, "optionalDependencies": { - "commander": "^2.7.1" + "commander": "^2.20.3" } } }, @@ -4728,9 +4635,9 @@ "dev": true }, "@eslint/eslintrc": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.1.tgz", - "integrity": "sha512-OhSY22oQQdw3zgPOOwdoj01l/Dzl1Z+xyUP33tkSN+aqyEhymJCcPHyXt+ylW8FSe0TfRC2VG+ROQOapD0aZSQ==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.2.tgz", + "integrity": "sha512-AXYd23w1S/bv3fTs3Lz0vjiYemS08jWkI3hYyS9I1ry+0f+Yjs1wm+sU0BS8qDOPrBIkp4qHYC16I8uVtpLajQ==", "dev": true, "requires": { "ajv": "^6.12.4", @@ -4762,9 +4669,9 @@ } }, "@humanwhocodes/config-array": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.10.4.tgz", - "integrity": "sha512-mXAIHxZT3Vcpg83opl1wGlVZ9xydbfZO3r5YfRSH6Gpp2J/PfdBP0wbDa2sO6/qRbcalpoevVyW6A/fI6LfeMw==", + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.10.5.tgz", + "integrity": "sha512-XVVDtp+dVvRxMoxSiSfasYaG02VEe1qH5cKgMQJWhol6HwzbcqoCMJi8dAGoYAO57jhUyhI6cWuRiTcRaDaYug==", "dev": true, "requires": { "@humanwhocodes/object-schema": "^1.2.1", @@ -4840,35 +4747,18 @@ } }, "@microsoft/api-documenter": { - "version": "7.19.10", - "resolved": "https://registry.npmjs.org/@microsoft/api-documenter/-/api-documenter-7.19.10.tgz", - "integrity": "sha512-I2c4EkmiCDQ3pgJPpq4k9D8Hatml2PuWHwHimwo7HECeqQm4Vcqkw6cCZ0MPKQrpfmyG9WyK+vrhbOL0pxyfWA==", + "version": "7.19.14", + "resolved": "https://registry.npmjs.org/@microsoft/api-documenter/-/api-documenter-7.19.14.tgz", + "integrity": "sha512-eLCJ33CnKErTL2rBrN3ILJLf5VogPaIaI7I7vrLzQZJ5ti/Gv4GNvwvkhlsQ9I000L/+iplDf2UwcTYZM7HHtg==", "dev": true, "requires": { - "@microsoft/api-extractor-model": "7.24.0", + "@microsoft/api-extractor-model": "7.24.2", "@microsoft/tsdoc": "0.14.1", - "@rushstack/node-core-library": "3.51.1", - "@rushstack/ts-command-line": "4.12.2", + "@rushstack/node-core-library": "3.52.0", + "@rushstack/ts-command-line": "4.12.3", "colors": "~1.2.1", "js-yaml": "~3.13.1", "resolve": "~1.17.0" - }, - "dependencies": { - "@microsoft/tsdoc": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.14.1.tgz", - "integrity": "sha512-6Wci+Tp3CgPt/B9B0a3J4s3yMgLNSku6w5TV6mN+61C71UqsRBv2FUibBf3tPGlNxebgPHMEUzKpb1ggE8KCKw==", - "dev": true - }, - "resolve": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", - "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", - "dev": true, - "requires": { - "path-parse": "^1.0.6" - } - } } }, "@microsoft/api-extractor": { @@ -4898,6 +4788,12 @@ "@rushstack/node-core-library": "3.19.6" } }, + "@microsoft/tsdoc": { + "version": "0.12.19", + "resolved": "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.12.19.tgz", + "integrity": "sha512-IpgPxHrNxZiMNUSXqR1l/gePKPkfAmIKoDRP9hp7OwjU29ZR8WCJsOJ8iBKgw0Qk+pFwR+8Y1cy8ImLY6e9m4A==", + "dev": true + }, "@rushstack/node-core-library": { "version": "3.19.6", "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-3.19.6.tgz", @@ -4924,55 +4820,92 @@ "colors": "~1.2.1" } }, + "@types/argparse": { + "version": "1.0.33", + "resolved": "https://registry.npmjs.org/@types/argparse/-/argparse-1.0.33.tgz", + "integrity": "sha512-VQgHxyPMTj3hIlq9SY1mctqx+Jj8kpQfoLvDlVSDNOyuYs8JYfkuY3OW/4+dO657yPmNhHpePRx0/Tje5ImNVQ==", + "dev": true + }, + "@types/node": { + "version": "10.17.13", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.13.tgz", + "integrity": "sha512-pMCcqU2zT4TjqYFrWtYHKal7Sl30Ims6ulZ4UFXxI4xbtQqK/qqKwkDoBFCfooRqqmRu9vY3xaJRwxSh673aYg==", + "dev": true + }, + "resolve": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz", + "integrity": "sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==", + "dev": true, + "requires": { + "path-parse": "^1.0.5" + } + }, + "semver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha512-mfmm3/H9+67MCVix1h+IXTpDwL6710LyHuk7+cWC9T1mE0qz4iHhh6r4hU2wrIT9iTsAAC2XQRvfblL028cpLw==", + "dev": true + }, "typescript": { "version": "3.7.7", "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.7.7.tgz", "integrity": "sha512-MmQdgo/XenfZPvVLtKZOq9jQQvzaUAUpcKW8Z43x9B2fOm4S5g//tPtMweZUIP+SoBqrVPEIm+dJeQ9dfO0QdA==", "dev": true + }, + "validator": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-8.2.0.tgz", + "integrity": "sha512-Yw5wW34fSv5spzTXNkokD6S6/Oq92d8q/t14TqsS3fAiA1RYnxSFSIZ+CY3n6PGGRCq5HhJTSepQvFUS2QUDxA==", + "dev": true + }, + "z-schema": { + "version": "3.18.4", + "resolved": "https://registry.npmjs.org/z-schema/-/z-schema-3.18.4.tgz", + "integrity": "sha512-DUOKC/IhbkdLKKiV89gw9DUauTV8U/8yJl1sjf6MtDmzevLKOF2duNJ495S3MFVjqZarr+qNGCPbkg4mu4PpLw==", + "dev": true, + "requires": { + "commander": "^2.7.1", + "lodash.get": "^4.0.0", + "lodash.isequal": "^4.0.0", + "validator": "^8.0.0" + } } } }, "@microsoft/api-extractor-model": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@microsoft/api-extractor-model/-/api-extractor-model-7.24.0.tgz", - "integrity": "sha512-lFzF5h+quTyVB7eaKJkqrbQRDGSkrHzXyF8iMVvHdlaNrodGeyhtQeBFDuRVvBXTW2ILBiOV6ZWwUM1eGKcD+A==", + "version": "7.24.2", + "resolved": "https://registry.npmjs.org/@microsoft/api-extractor-model/-/api-extractor-model-7.24.2.tgz", + "integrity": "sha512-uUvjqTCY7hYERWGks+joTioN1QYHIucCDy7I/JqLxFxLbFXE5dpc1X7L+FG4PN/s8QYL24DKt0fqJkgcrFKLTw==", "dev": true, "requires": { "@microsoft/tsdoc": "0.14.1", "@microsoft/tsdoc-config": "~0.16.1", - "@rushstack/node-core-library": "3.51.1" - }, - "dependencies": { - "@microsoft/tsdoc": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.14.1.tgz", - "integrity": "sha512-6Wci+Tp3CgPt/B9B0a3J4s3yMgLNSku6w5TV6mN+61C71UqsRBv2FUibBf3tPGlNxebgPHMEUzKpb1ggE8KCKw==", - "dev": true - } + "@rushstack/node-core-library": "3.52.0" } }, "@microsoft/tsdoc": { - "version": "0.12.19", - "resolved": "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.12.19.tgz", - "integrity": "sha512-IpgPxHrNxZiMNUSXqR1l/gePKPkfAmIKoDRP9hp7OwjU29ZR8WCJsOJ8iBKgw0Qk+pFwR+8Y1cy8ImLY6e9m4A==", + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.14.1.tgz", + "integrity": "sha512-6Wci+Tp3CgPt/B9B0a3J4s3yMgLNSku6w5TV6mN+61C71UqsRBv2FUibBf3tPGlNxebgPHMEUzKpb1ggE8KCKw==", "dev": true }, "@microsoft/tsdoc-config": { - "version": "0.16.1", - "resolved": "https://registry.npmjs.org/@microsoft/tsdoc-config/-/tsdoc-config-0.16.1.tgz", - "integrity": "sha512-2RqkwiD4uN6MLnHFljqBlZIXlt/SaUT6cuogU1w2ARw4nKuuppSmR0+s+NC+7kXBQykd9zzu0P4HtBpZT5zBpQ==", + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@microsoft/tsdoc-config/-/tsdoc-config-0.16.2.tgz", + "integrity": "sha512-OGiIzzoBLgWWR0UdRJX98oYO+XKGf7tiK4Zk6tQ/E4IJqGCe7dvkTvgDZV5cFJUzLGDOjeAXrnZoA6QkVySuxw==", "dev": true, "requires": { - "@microsoft/tsdoc": "0.14.1", + "@microsoft/tsdoc": "0.14.2", "ajv": "~6.12.6", "jju": "~1.4.0", "resolve": "~1.19.0" }, "dependencies": { "@microsoft/tsdoc": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.14.1.tgz", - "integrity": "sha512-6Wci+Tp3CgPt/B9B0a3J4s3yMgLNSku6w5TV6mN+61C71UqsRBv2FUibBf3tPGlNxebgPHMEUzKpb1ggE8KCKw==", + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.14.2.tgz", + "integrity": "sha512-9b8mPpKrfeGRuhFH5iO1iwCLeIIsV6+H1sRfxbkoGXIyQE2BTsPd9zqSqQJ+pv5sJ/hT5M1zvOFL02MnEezFug==", "dev": true }, "resolve": { @@ -5014,9 +4947,9 @@ } }, "@rushstack/node-core-library": { - "version": "3.51.1", - "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-3.51.1.tgz", - "integrity": "sha512-xLoUztvGpaT5CphDexDPt2WbBx8D68VS5tYOkwfr98p90y0f/wepgXlTA/q5MUeZGGucASiXKp5ysdD+GPYf9A==", + "version": "3.52.0", + "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-3.52.0.tgz", + "integrity": "sha512-Z+MAP//G3rEGZd3JxJcBGcPYJlh8pvPoLMTLa5Sy6FTE6hRPzN+5J8DT7BbTmlqZaL6SZpXF30heRUbnYOvujw==", "dev": true, "requires": { "@types/node": "12.20.24", @@ -5027,70 +4960,18 @@ "resolve": "~1.17.0", "semver": "~7.3.0", "z-schema": "~5.0.2" - }, - "dependencies": { - "@types/node": { - "version": "12.20.24", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.24.tgz", - "integrity": "sha512-yxDeaQIAJlMav7fH5AQqPH1u8YIuhYJXYBzxaQ4PifsU0GDO38MSdmEDeRlIxrKbC6NbEaaEHDanWb+y30U8SQ==", - "dev": true - }, - "resolve": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", - "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", - "dev": true, - "requires": { - "path-parse": "^1.0.6" - } - }, - "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "validator": { - "version": "13.7.0", - "resolved": "https://registry.npmjs.org/validator/-/validator-13.7.0.tgz", - "integrity": "sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw==", - "dev": true - }, - "z-schema": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/z-schema/-/z-schema-5.0.4.tgz", - "integrity": "sha512-gm/lx3hDzJNcLwseIeQVm1UcwhWIKpSB4NqH89pTBtFns4k/HDHudsICtvG05Bvw/Mv3jMyk700y5dadueLHdA==", - "dev": true, - "requires": { - "commander": "^2.20.3", - "lodash.get": "^4.4.2", - "lodash.isequal": "^4.5.0", - "validator": "^13.7.0" - } - } } }, "@rushstack/ts-command-line": { - "version": "4.12.2", - "resolved": "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-4.12.2.tgz", - "integrity": "sha512-poBtnumLuWmwmhCEkVAgynWgtnF9Kygekxyp4qtQUSbBrkuyPQTL85c8Cva1YfoUpOdOXxezMAkUt0n5SNKGqw==", + "version": "4.12.3", + "resolved": "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-4.12.3.tgz", + "integrity": "sha512-Pdij22RotMXzI+HWHyYCvw0RMZhiP5a6Za/96XamZ1+mxmpSm4ujf8TROKxGAHySmR5A8iNVSlzhNMnUlFQE6g==", "dev": true, "requires": { "@types/argparse": "1.0.38", "argparse": "~1.0.9", "colors": "~1.2.1", "string-argv": "~0.3.1" - }, - "dependencies": { - "@types/argparse": { - "version": "1.0.38", - "resolved": "https://registry.npmjs.org/@types/argparse/-/argparse-1.0.38.tgz", - "integrity": "sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==", - "dev": true - } } }, "@socket.io/component-emitter": { @@ -5100,9 +4981,9 @@ "dev": true }, "@types/argparse": { - "version": "1.0.33", - "resolved": "https://registry.npmjs.org/@types/argparse/-/argparse-1.0.33.tgz", - "integrity": "sha512-VQgHxyPMTj3hIlq9SY1mctqx+Jj8kpQfoLvDlVSDNOyuYs8JYfkuY3OW/4+dO657yPmNhHpePRx0/Tje5ImNVQ==", + "version": "1.0.38", + "resolved": "https://registry.npmjs.org/@types/argparse/-/argparse-1.0.38.tgz", + "integrity": "sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==", "dev": true }, "@types/cookie": { @@ -5156,126 +5037,103 @@ "dev": true }, "@types/node": { - "version": "10.17.13", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.13.tgz", - "integrity": "sha512-pMCcqU2zT4TjqYFrWtYHKal7Sl30Ims6ulZ4UFXxI4xbtQqK/qqKwkDoBFCfooRqqmRu9vY3xaJRwxSh673aYg==", + "version": "12.20.24", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.24.tgz", + "integrity": "sha512-yxDeaQIAJlMav7fH5AQqPH1u8YIuhYJXYBzxaQ4PifsU0GDO38MSdmEDeRlIxrKbC6NbEaaEHDanWb+y30U8SQ==", "dev": true }, "@typescript-eslint/eslint-plugin": { - "version": "5.36.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.36.2.tgz", - "integrity": "sha512-OwwR8LRwSnI98tdc2z7mJYgY60gf7I9ZfGjN5EjCwwns9bdTuQfAXcsjSB2wSQ/TVNYSGKf4kzVXbNGaZvwiXw==", + "version": "5.38.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.38.1.tgz", + "integrity": "sha512-ky7EFzPhqz3XlhS7vPOoMDaQnQMn+9o5ICR9CPr/6bw8HrFkzhMSxuA3gRfiJVvs7geYrSeawGJjZoZQKCOglQ==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.36.2", - "@typescript-eslint/type-utils": "5.36.2", - "@typescript-eslint/utils": "5.36.2", + "@typescript-eslint/scope-manager": "5.38.1", + "@typescript-eslint/type-utils": "5.38.1", + "@typescript-eslint/utils": "5.38.1", "debug": "^4.3.4", - "functional-red-black-tree": "^1.0.1", "ignore": "^5.2.0", "regexpp": "^3.2.0", "semver": "^7.3.7", "tsutils": "^3.21.0" - }, - "dependencies": { - "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } } }, "@typescript-eslint/parser": { - "version": "5.36.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.36.2.tgz", - "integrity": "sha512-qS/Kb0yzy8sR0idFspI9Z6+t7mqk/oRjnAYfewG+VN73opAUvmYL3oPIMmgOX6CnQS6gmVIXGshlb5RY/R22pA==", + "version": "5.38.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.38.1.tgz", + "integrity": "sha512-LDqxZBVFFQnQRz9rUZJhLmox+Ep5kdUmLatLQnCRR6523YV+XhRjfYzStQ4MheFA8kMAfUlclHSbu+RKdRwQKw==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.36.2", - "@typescript-eslint/types": "5.36.2", - "@typescript-eslint/typescript-estree": "5.36.2", + "@typescript-eslint/scope-manager": "5.38.1", + "@typescript-eslint/types": "5.38.1", + "@typescript-eslint/typescript-estree": "5.38.1", "debug": "^4.3.4" } }, "@typescript-eslint/scope-manager": { - "version": "5.36.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.36.2.tgz", - "integrity": "sha512-cNNP51L8SkIFSfce8B1NSUBTJTu2Ts4nWeWbFrdaqjmn9yKrAaJUBHkyTZc0cL06OFHpb+JZq5AUHROS398Orw==", + "version": "5.38.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.38.1.tgz", + "integrity": "sha512-BfRDq5RidVU3RbqApKmS7RFMtkyWMM50qWnDAkKgQiezRtLKsoyRKIvz1Ok5ilRWeD9IuHvaidaLxvGx/2eqTQ==", "dev": true, "requires": { - "@typescript-eslint/types": "5.36.2", - "@typescript-eslint/visitor-keys": "5.36.2" + "@typescript-eslint/types": "5.38.1", + "@typescript-eslint/visitor-keys": "5.38.1" } }, "@typescript-eslint/type-utils": { - "version": "5.36.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.36.2.tgz", - "integrity": "sha512-rPQtS5rfijUWLouhy6UmyNquKDPhQjKsaKH0WnY6hl/07lasj8gPaH2UD8xWkePn6SC+jW2i9c2DZVDnL+Dokw==", + "version": "5.38.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.38.1.tgz", + "integrity": "sha512-UU3j43TM66gYtzo15ivK2ZFoDFKKP0k03MItzLdq0zV92CeGCXRfXlfQX5ILdd4/DSpHkSjIgLLLh1NtkOJOAw==", "dev": true, "requires": { - "@typescript-eslint/typescript-estree": "5.36.2", - "@typescript-eslint/utils": "5.36.2", + "@typescript-eslint/typescript-estree": "5.38.1", + "@typescript-eslint/utils": "5.38.1", "debug": "^4.3.4", "tsutils": "^3.21.0" } }, "@typescript-eslint/types": { - "version": "5.36.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.36.2.tgz", - "integrity": "sha512-9OJSvvwuF1L5eS2EQgFUbECb99F0mwq501w0H0EkYULkhFa19Qq7WFbycdw1PexAc929asupbZcgjVIe6OK/XQ==", + "version": "5.38.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.38.1.tgz", + "integrity": "sha512-QTW1iHq1Tffp9lNfbfPm4WJabbvpyaehQ0SrvVK2yfV79SytD9XDVxqiPvdrv2LK7DGSFo91TB2FgWanbJAZXg==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "5.36.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.36.2.tgz", - "integrity": "sha512-8fyH+RfbKc0mTspfuEjlfqA4YywcwQK2Amcf6TDOwaRLg7Vwdu4bZzyvBZp4bjt1RRjQ5MDnOZahxMrt2l5v9w==", + "version": "5.38.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.38.1.tgz", + "integrity": "sha512-99b5e/Enoe8fKMLdSuwrfH/C0EIbpUWmeEKHmQlGZb8msY33qn1KlkFww0z26o5Omx7EVjzVDCWEfrfCDHfE7g==", "dev": true, "requires": { - "@typescript-eslint/types": "5.36.2", - "@typescript-eslint/visitor-keys": "5.36.2", + "@typescript-eslint/types": "5.38.1", + "@typescript-eslint/visitor-keys": "5.38.1", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", "semver": "^7.3.7", "tsutils": "^3.21.0" - }, - "dependencies": { - "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } } }, "@typescript-eslint/utils": { - "version": "5.36.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.36.2.tgz", - "integrity": "sha512-uNcopWonEITX96v9pefk9DC1bWMdkweeSsewJ6GeC7L6j2t0SJywisgkr9wUTtXk90fi2Eljj90HSHm3OGdGRg==", + "version": "5.38.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.38.1.tgz", + "integrity": "sha512-oIuUiVxPBsndrN81oP8tXnFa/+EcZ03qLqPDfSZ5xIJVm7A9V0rlkQwwBOAGtrdN70ZKDlKv+l1BeT4eSFxwXA==", "dev": true, "requires": { "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.36.2", - "@typescript-eslint/types": "5.36.2", - "@typescript-eslint/typescript-estree": "5.36.2", + "@typescript-eslint/scope-manager": "5.38.1", + "@typescript-eslint/types": "5.38.1", + "@typescript-eslint/typescript-estree": "5.38.1", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0" } }, "@typescript-eslint/visitor-keys": { - "version": "5.36.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.36.2.tgz", - "integrity": "sha512-BtRvSR6dEdrNt7Net2/XDjbYKU5Ml6GqJgVfXT0CxTCJlnIqK7rAGreuWKMT2t8cFUT2Msv5oxw0GMRD7T5J7A==", + "version": "5.38.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.38.1.tgz", + "integrity": "sha512-bSHr1rRxXt54+j2n4k54p4fj8AHJ49VDWtjpImOpzQj4qjAiOpPni+V1Tyajh19Api1i844F757cur8wH3YvOA==", "dev": true, "requires": { - "@typescript-eslint/types": "5.36.2", + "@typescript-eslint/types": "5.38.1", "eslint-visitor-keys": "^3.3.0" } }, @@ -5624,15 +5482,15 @@ } }, "browserslist": { - "version": "4.21.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.3.tgz", - "integrity": "sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ==", + "version": "4.21.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", + "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001370", - "electron-to-chromium": "^1.4.202", + "caniuse-lite": "^1.0.30001400", + "electron-to-chromium": "^1.4.251", "node-releases": "^2.0.6", - "update-browserslist-db": "^1.0.5" + "update-browserslist-db": "^1.0.9" } }, "buffer-from": { @@ -5664,9 +5522,9 @@ "dev": true }, "caniuse-lite": { - "version": "1.0.30001390", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001390.tgz", - "integrity": "sha512-sS4CaUM+/+vqQUlCvCJ2WtDlV81aWtHhqeEVkLokVJJa3ViN4zDxAGfq9R8i1m90uGHxo99cy10Od+lvn3hf0g==", + "version": "1.0.30001412", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001412.tgz", + "integrity": "sha512-+TeEIee1gS5bYOiuf+PS/kp2mrXic37Hl66VY6EAfxasIk5fELTktK2oOezYed12H8w7jt3s512PpulQidPjwA==", "dev": true }, "chalk": { @@ -5849,9 +5707,9 @@ "dev": true }, "date-format": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.13.tgz", - "integrity": "sha512-bnYCwf8Emc3pTD8pXnre+wfnjGtfi5ncMDKy7+cWZXbmRAsdWkOQHrfC1yz/KiwP5thDp2kCHWYWKBX4HP1hoQ==", + "version": "4.0.14", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.14.tgz", + "integrity": "sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==", "dev": true }, "debug": { @@ -5924,9 +5782,9 @@ "dev": true }, "electron-to-chromium": { - "version": "1.4.241", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.241.tgz", - "integrity": "sha512-e7Wsh4ilaioBZ5bMm6+F4V5c11dh56/5Jwz7Hl5Tu1J7cnB+Pqx5qIF2iC7HPpfyQMqGSvvLP5bBAIDd2gAtGw==", + "version": "1.4.264", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.264.tgz", + "integrity": "sha512-AZ6ZRkucHOQT8wke50MktxtmcWZr67kE17X/nAXFf62NIdMdgY6xfsaJD5Szoy84lnkuPWH+4tTNE3s2+bPCiw==", "dev": true }, "emoji-regex": { @@ -6012,13 +5870,13 @@ "dev": true }, "eslint": { - "version": "8.23.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.23.0.tgz", - "integrity": "sha512-pBG/XOn0MsJcKcTRLr27S5HpzQo4kLr+HjLQIyK4EiCsijDl/TB+h5uEuJU6bQ8Edvwz1XWOjpaP2qgnXGpTcA==", + "version": "8.24.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.24.0.tgz", + "integrity": "sha512-dWFaPhGhTAiPcCgm3f6LI2MBWbogMnTJzFBbhXVRQDJPkr9pGZvVjlVfXd+vyDcWPA2Ic9L2AXPIQM0+vk/cSQ==", "dev": true, "requires": { - "@eslint/eslintrc": "^1.3.1", - "@humanwhocodes/config-array": "^0.10.4", + "@eslint/eslintrc": "^1.3.2", + "@humanwhocodes/config-array": "^0.10.5", "@humanwhocodes/gitignore-to-minimatch": "^1.0.2", "@humanwhocodes/module-importer": "^1.0.1", "ajv": "^6.10.0", @@ -6036,7 +5894,6 @@ "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", "find-up": "^5.0.0", - "functional-red-black-tree": "^1.0.1", "glob-parent": "^6.0.1", "globals": "^13.15.0", "globby": "^11.1.0", @@ -6045,6 +5902,7 @@ "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", + "js-sdsl": "^4.1.4", "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", @@ -6240,9 +6098,9 @@ "dev": true }, "fast-glob": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", - "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", "dev": true, "requires": { "@nodelib/fs.stat": "^2.0.2", @@ -6376,9 +6234,9 @@ "dev": true }, "follow-redirects": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", - "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==", + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", "dev": true }, "fs-extra": { @@ -6411,12 +6269,6 @@ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", - "dev": true - }, "get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", @@ -6424,9 +6276,9 @@ "dev": true }, "get-intrinsic": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz", - "integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", + "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", "dev": true, "requires": { "function-bind": "^1.1.1", @@ -6726,6 +6578,12 @@ "integrity": "sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==", "dev": true }, + "js-sdsl": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.1.4.tgz", + "integrity": "sha512-Y2/yD55y5jteOAmY50JbUZYwk3CP3wnLPEZnlR1w9oKhITrBEtAxwuWKebFf8hMrPMgbYwFoWK/lH2sBkErELw==", + "dev": true + }, "js-yaml": { "version": "3.13.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", @@ -6764,9 +6622,9 @@ } }, "karma": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/karma/-/karma-6.4.0.tgz", - "integrity": "sha512-s8m7z0IF5g/bS5ONT7wsOavhW4i4aFkzD4u4wgzAQWT4HGUeWI3i21cK2Yz6jndMAeHETp5XuNsRoyGJZXVd4w==", + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/karma/-/karma-6.4.1.tgz", + "integrity": "sha512-Cj57NKOskK7wtFWSlMvZf459iX+kpYIPXmkNUzP2WAFcA7nhr/ALn5R7sw3w+1udFDcpMx/tuB8d5amgm3ijaA==", "dev": true, "requires": { "@colors/colors": "1.5.0", @@ -7473,19 +7331,6 @@ "dev": true, "requires": { "resolve": "^1.9.0" - }, - "dependencies": { - "resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "dev": true, - "requires": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - } - } } }, "regexpp": { @@ -7507,12 +7352,12 @@ "dev": true }, "resolve": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz", - "integrity": "sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==", + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", "dev": true, "requires": { - "path-parse": "^1.0.5" + "path-parse": "^1.0.6" } }, "resolve-cwd": { @@ -7592,10 +7437,13 @@ } }, "semver": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", - "integrity": "sha512-mfmm3/H9+67MCVix1h+IXTpDwL6710LyHuk7+cWC9T1mE0qz4iHhh6r4hU2wrIT9iTsAAC2XQRvfblL028cpLw==", - "dev": true + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } }, "serialize-javascript": { "version": "6.0.0", @@ -7712,12 +7560,12 @@ "dev": true }, "streamroller": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.1.2.tgz", - "integrity": "sha512-wZswqzbgGGsXYIrBYhOE0yP+nQ6XRk7xDcYwuQAGTYXdyAUmvgVFE0YU1g5pvQT0m7GBaQfYcSnlHbapuK0H0A==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.1.3.tgz", + "integrity": "sha512-CphIJyFx2SALGHeINanjFRKQ4l7x2c+rXYJ4BMq0gd+ZK0gi4VT8b+eHe2wi58x4UayBAKx4xtHpXT/ea1cz8w==", "dev": true, "requires": { - "date-format": "^4.0.13", + "date-format": "^4.0.14", "debug": "^4.3.4", "fs-extra": "^8.1.0" }, @@ -7776,12 +7624,6 @@ "has-flag": "^4.0.0" } }, - "supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true - }, "tapable": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", @@ -7850,26 +7692,15 @@ "dev": true }, "ts-loader": { - "version": "9.3.1", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.3.1.tgz", - "integrity": "sha512-OkyShkcZTsTwyS3Kt7a4rsT/t2qvEVQuKCTg4LJmpj9fhFR7ukGdZwV6Qq3tRUkqcXtfGpPR7+hFKHCG/0d3Lw==", + "version": "9.4.1", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.4.1.tgz", + "integrity": "sha512-384TYAqGs70rn9F0VBnh6BPTfhga7yFNdC5gXbQpDrBj9/KsT4iRkGqKXhziofHOlE2j6YEaiTYVGKKvPhGWvw==", "dev": true, "requires": { "chalk": "^4.1.0", "enhanced-resolve": "^5.0.0", "micromatch": "^4.0.0", "semver": "^7.3.4" - }, - "dependencies": { - "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } } }, "ts-pegjs": { @@ -7920,9 +7751,9 @@ } }, "typescript": { - "version": "4.8.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.2.tgz", - "integrity": "sha512-C0I1UsrrDHo2fYI5oaCGbSejwX4ch+9Y5jTQELvovfmFkK3HHSZJB8MSJcWLmCUBzQBchCrZ9rMRV6GuNrvGtw==", + "version": "4.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.3.tgz", + "integrity": "sha512-goMHfm00nWPa8UvR/CPSvykqf6dVV8x/dp0c5mFTMTIu0u0FlGWRioyy7Nn0PGAdHxpJZnuO/ut+PpQ8UiHAig==", "dev": true }, "ua-parser-js": { @@ -7944,9 +7775,9 @@ "dev": true }, "update-browserslist-db": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.7.tgz", - "integrity": "sha512-iN/XYesmZ2RmmWAiI4Z5rq0YqSiv0brj9Ce9CfhNE4xIW2h+MFxcgkxIzZ+ShkFPUkjU3gQ+3oypadD3RAMtrg==", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.9.tgz", + "integrity": "sha512-/xsqn21EGVdXI3EXSum1Yckj3ZVZugqyOZQ/CxYPBD/R+ko9NSUScf8tFF4dOKY+2pvSSJA/S+5B8s4Zr4kyvg==", "dev": true, "requires": { "escalade": "^3.1.1", @@ -7969,9 +7800,9 @@ "dev": true }, "validator": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/validator/-/validator-8.2.0.tgz", - "integrity": "sha512-Yw5wW34fSv5spzTXNkokD6S6/Oq92d8q/t14TqsS3fAiA1RYnxSFSIZ+CY3n6PGGRCq5HhJTSepQvFUS2QUDxA==", + "version": "13.7.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.7.0.tgz", + "integrity": "sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw==", "dev": true }, "vary": { @@ -8166,15 +7997,15 @@ "dev": true }, "z-schema": { - "version": "3.18.4", - "resolved": "https://registry.npmjs.org/z-schema/-/z-schema-3.18.4.tgz", - "integrity": "sha512-DUOKC/IhbkdLKKiV89gw9DUauTV8U/8yJl1sjf6MtDmzevLKOF2duNJ495S3MFVjqZarr+qNGCPbkg4mu4PpLw==", + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/z-schema/-/z-schema-5.0.4.tgz", + "integrity": "sha512-gm/lx3hDzJNcLwseIeQVm1UcwhWIKpSB4NqH89pTBtFns4k/HDHudsICtvG05Bvw/Mv3jMyk700y5dadueLHdA==", "dev": true, "requires": { - "commander": "^2.7.1", - "lodash.get": "^4.0.0", - "lodash.isequal": "^4.0.0", - "validator": "^8.0.0" + "commander": "^2.20.3", + "lodash.get": "^4.4.2", + "lodash.isequal": "^4.5.0", + "validator": "^13.7.0" } } } diff --git a/package.json b/package.json index 5cd3df96f..6929ebed2 100644 --- a/package.json +++ b/package.json @@ -33,18 +33,18 @@ "typescript" ], "devDependencies": { - "@microsoft/api-documenter": "^7.19.10", + "@microsoft/api-documenter": "^7.19.14", "@microsoft/api-extractor": "7.7.11", "@types/jasmine": "^4.3.0", - "@typescript-eslint/eslint-plugin": "^5.36.1", - "@typescript-eslint/parser": "^5.36.1", + "@typescript-eslint/eslint-plugin": "^5.38.1", + "@typescript-eslint/parser": "^5.38.1", "circular-dependency-plugin": "^5.2.2", - "eslint": "^8.23.0", + "eslint": "^8.24.0", "eslint-config-prettier": "^8.5.0", "eslint-plugin-prettier": "^4.2.1", "eslint-plugin-tree-shaking": "^1.10.0", "jasmine-core": "^4.4.0", - "karma": "^6.4.0", + "karma": "^6.4.1", "karma-chrome-launcher": "^3.1.1", "karma-cli": "^2.0.0", "karma-jasmine": "^5.1.0", @@ -55,9 +55,9 @@ "mock-socket": "^9.1.5", "peggy": "^1.2.0", "prettier": "^2.7.1", - "ts-loader": "^9.3.1", + "ts-loader": "^9.4.1", "ts-pegjs": "^1.2.2", - "typescript": "^4.8.2", + "typescript": "^4.8.3", "webpack": "^5.74.0", "webpack-cli": "^4.10.0" }, From 1cd4d32923986cf401d7d193b2ced6c9f8da724c Mon Sep 17 00:00:00 2001 From: John Riordan Date: Tue, 27 Sep 2022 00:15:11 -0400 Subject: [PATCH 22/73] Version 0.20.1 --- package-lock.json | 4 ++-- package.json | 2 +- src/version.ts | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5e939aba9..bd1bc2e7a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "sip.js", - "version": "0.20.0", + "version": "0.20.1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "sip.js", - "version": "0.20.0", + "version": "0.20.1", "license": "MIT", "devDependencies": { "@microsoft/api-documenter": "^7.19.14", diff --git a/package.json b/package.json index 6929ebed2..a23c7f08f 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "sip.js", "title": "SIP.js", "description": "A SIP library for JavaScript", - "version": "0.20.0", + "version": "0.20.1", "license": "MIT", "main": "./lib/index.js", "files": [ diff --git a/src/version.ts b/src/version.ts index 9ecd43a63..7f8c00b3e 100644 --- a/src/version.ts +++ b/src/version.ts @@ -1 +1 @@ -export const LIBRARY_VERSION = "0.20.0"; +export const LIBRARY_VERSION = "0.20.1"; From 4bdb093efddd5be2e3dec41533a0014e214fa76e Mon Sep 17 00:00:00 2001 From: John Riordan Date: Tue, 27 Sep 2022 15:00:45 -0400 Subject: [PATCH 23/73] Add a test for sendInitialProvisionalResponse This is was a user agent configuration option added in 0.19.0. --- test/spec/api/session.spec.ts | 36 +++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/test/spec/api/session.spec.ts b/test/spec/api/session.spec.ts index 20eee9974..d28a11488 100644 --- a/test/spec/api/session.spec.ts +++ b/test/spec/api/session.spec.ts @@ -798,6 +798,42 @@ describe("API Session", () => { }); }); + describe("Alice invite(), auto provisional disabled - 100 Trying only", () => { + beforeEach(async () => { + resetSpies(); + bob.userAgent.configuration.sendInitialProvisionalResponse = false; + resetSpies(); + return inviter.invite({ requestDelegate: inviterRequestDelegateMock }).then(() => bob.transport.waitSent()); + }); + + it("her ua should send INVITE", () => { + const spy = alice.transportSendSpy; + expect(spy).toHaveBeenCalledTimes(1); + expect(spy.calls.argsFor(0)).toEqual(SIP_INVITE); + }); + + it("her ua should receive 100", () => { + const spy = alice.transportReceiveSpy; + expect(spy).toHaveBeenCalledTimes(1); + expect(spy.calls.argsFor(0)).toEqual(SIP_100); + }); + + it("her request delegate onTyring", () => { + const spy = inviterRequestDelegateMock; + expect(spy.onAccept).toHaveBeenCalledTimes(0); + expect(spy.onProgress).toHaveBeenCalledTimes(0); + expect(spy.onRedirect).toHaveBeenCalledTimes(0); + expect(spy.onReject).toHaveBeenCalledTimes(0); + expect(spy.onTrying).toHaveBeenCalledTimes(1); + }); + + it("her session state should transition 'establishing'", () => { + const spy = inviterStateSpy; + expect(spy).toHaveBeenCalledTimes(1); + expect(spy.calls.argsFor(0)).toEqual([SessionState.Establishing]); + }); + }); + describe("Alice invite()", () => { beforeEach(async () => { resetSpies(); From 3bd449121b364b4557654de024a7522e7137145e Mon Sep 17 00:00:00 2001 From: slavikbialik Date: Tue, 24 Aug 2021 20:46:23 +0300 Subject: [PATCH 24/73] Add onCancel delegation for Invitation --- src/api/cancel.ts | 15 +++++++++++++++ src/api/index.ts | 1 + src/api/invitation.ts | 6 ++++++ src/api/session-delegate.ts | 7 +++++++ 4 files changed, 29 insertions(+) create mode 100644 src/api/cancel.ts diff --git a/src/api/cancel.ts b/src/api/cancel.ts new file mode 100644 index 000000000..29b269a63 --- /dev/null +++ b/src/api/cancel.ts @@ -0,0 +1,15 @@ +import { IncomingRequestMessage } from "../core"; + +/** + * A request to reject an {@link Invitation} (incoming CANCEL). + * @public + */ +export class Cancel { + /** @internal */ + public constructor(private incomingCancelRequest: IncomingRequestMessage) {} + + /** Incoming CANCEL request message. */ + public get request(): IncomingRequestMessage { + return this.incomingCancelRequest; + } +} diff --git a/src/api/index.ts b/src/api/index.ts index 7a318eec5..9f0415b05 100644 --- a/src/api/index.ts +++ b/src/api/index.ts @@ -5,6 +5,7 @@ export * from "./exceptions"; export * from "./ack"; export * from "./bye"; +export * from "./cancel"; export * from "./emitter"; export * from "./info"; export * from "./invitation-accept-options"; diff --git a/src/api/invitation.ts b/src/api/invitation.ts index 85b43bce1..bda621c73 100644 --- a/src/api/invitation.ts +++ b/src/api/invitation.ts @@ -16,6 +16,7 @@ import { TransactionStateError } from "../core"; import { getReasonPhrase } from "../core/messages/utils"; +import { Cancel } from "./cancel"; import { ContentTypeUnsupportedError, SessionDescriptionHandlerError, SessionTerminatedError } from "./exceptions"; import { InvitationAcceptOptions } from "./invitation-accept-options"; import { InvitationProgressOptions } from "./invitation-progress-options"; @@ -426,6 +427,11 @@ export class Invitation extends Session { return; } + if (this.delegate && this.delegate.onCancel) { + const cancel = new Cancel(message); + this.delegate.onCancel(cancel); + } + // flag canceled this.isCanceled = true; diff --git a/src/api/session-delegate.ts b/src/api/session-delegate.ts index 0a3f492ce..d18b84ca2 100644 --- a/src/api/session-delegate.ts +++ b/src/api/session-delegate.ts @@ -1,6 +1,7 @@ import { IncomingRequestMessage } from "../core"; import { Ack } from "./ack"; import { Bye } from "./bye"; +import { Cancel } from "./cancel"; import { Info } from "./info"; import { Message } from "./message"; import { Notification } from "./notification"; @@ -24,6 +25,12 @@ export interface SessionDelegate { */ onBye?(bye: Bye): void; + /** + * Called upon receiving an incoming CANCEL request. + * @param cancel - The cancel. + */ + onCancel?(cancel: Cancel): void; + /** * Called upon receiving an incoming in dialog INFO request. * @param info - The info. From 18d70dda9f7ec8f39801dbbf3b313c34cc37f0fa Mon Sep 17 00:00:00 2001 From: John Riordan Date: Tue, 27 Sep 2022 17:58:38 -0400 Subject: [PATCH 25/73] Add tests for onAck and onCancel Session delegates --- test/spec/api/session.spec.ts | 138 +++++++++++++++++++++++++++++++++- 1 file changed, 137 insertions(+), 1 deletion(-) diff --git a/test/spec/api/session.spec.ts b/test/spec/api/session.spec.ts index d28a11488..109cd6c46 100644 --- a/test/spec/api/session.spec.ts +++ b/test/spec/api/session.spec.ts @@ -1,6 +1,12 @@ /* eslint-disable @typescript-eslint/unbound-method */ /* eslint-disable @typescript-eslint/no-use-before-define */ -import { Invitation, Inviter, SessionDescriptionHandler, SessionState } from "../../../src/api"; +import { + Invitation, + Inviter, + SessionDelegate, + SessionDescriptionHandler, + SessionState +} from "../../../src/api"; import { Logger, OutgoingRequestDelegate, @@ -57,6 +63,11 @@ describe("API Session", () => { let invitation: Invitation; let invitationStateSpy: EmitterSpy; + const invitationDelegateMock = jasmine.createSpyObj>( + "SessionDelegate", + ["onAck", "onCancel"] + ); + const inviterRequestDelegateMock = jasmine.createSpyObj>( "OutgoingRequestDelegate", ["onAccept", "onProgress", "onRedirect", "onReject", "onTrying"] @@ -109,6 +120,12 @@ describe("API Session", () => { expect(session && session.signalingState).toBe(SignalingState.Stable); }); + it("his session delegate onAck", () => { + const spy = invitationDelegateMock; + expect(spy.onAck).toHaveBeenCalledTimes(1); + expect(spy.onCancel).toHaveBeenCalledTimes(0); + }); + it("his dialog should be 'confirmed' and 'stable'", () => { const session = invitation.dialog; expect(session && session.sessionState).toBe(SessionDialogState.Confirmed); @@ -163,6 +180,12 @@ describe("API Session", () => { expect(spy.calls.argsFor(1)).toEqual([SessionState.Established]); }); + it("his session delegate onAck", () => { + const spy = invitationDelegateMock; + expect(spy.onAck).toHaveBeenCalledTimes(1); + expect(spy.onCancel).toHaveBeenCalledTimes(0); + }); + it("her dialog should be 'confirmed' and 'stable'", () => { const session = inviter.dialog; expect(session && session.sessionState).toBe(SessionDialogState.Confirmed); @@ -280,6 +303,12 @@ describe("API Session", () => { expect(spy.calls.argsFor(2)).toEqual([SessionState.Terminating]); expect(spy.calls.argsFor(3)).toEqual([SessionState.Terminated]); }); + + it("his session delegate nothing", () => { + const spy = invitationDelegateMock; + expect(spy.onAck).toHaveBeenCalledTimes(0); + expect(spy.onCancel).toHaveBeenCalledTimes(0); + }); } function bobProgress(): void { @@ -452,6 +481,12 @@ describe("API Session", () => { expect(spy).toHaveBeenCalledTimes(1); expect(spy.calls.argsFor(0)).toEqual([SessionState.Terminated]); }); + + it("his session delegate nothing", () => { + const spy = invitationDelegateMock; + expect(spy.onAck).toHaveBeenCalledTimes(0); + expect(spy.onCancel).toHaveBeenCalledTimes(0); + }); } function bobReject2x(): void { @@ -500,6 +535,12 @@ describe("API Session", () => { expect(spy.calls.argsFor(0)).toEqual([SessionState.Terminated]); }); + it("his session delegate nothing", () => { + const spy = invitationDelegateMock; + expect(spy.onAck).toHaveBeenCalledTimes(0); + expect(spy.onCancel).toHaveBeenCalledTimes(0); + }); + it("his second reject() threw an error", () => { expect(threw).toBe(true); }); @@ -910,6 +951,12 @@ describe("API Session", () => { expect(spy).toHaveBeenCalledTimes(1); expect(spy.calls.argsFor(0)).toEqual([SessionState.Terminated]); }); + + it("his session delegate onCancel", () => { + const spy = invitationDelegateMock; + expect(spy.onAck).toHaveBeenCalledTimes(0); + expect(spy.onCancel).toHaveBeenCalledTimes(1); + }); }); describe("Alice cancel(), Bob accept() - an async race condition (CANCEL wins)", () => { @@ -958,6 +1005,12 @@ describe("API Session", () => { expect(spy.calls.argsFor(0)).toEqual([SessionState.Establishing]); expect(spy.calls.argsFor(1)).toEqual([SessionState.Terminated]); }); + + it("his session delegate onCancel", () => { + const spy = invitationDelegateMock; + expect(spy.onAck).toHaveBeenCalledTimes(0); + expect(spy.onCancel).toHaveBeenCalledTimes(1); + }); }); describe("Bob accept(), Alice cancel() - a network glare condition (200 wins)", () => { @@ -1038,6 +1091,12 @@ describe("API Session", () => { expect(spy.calls.argsFor(1)).toEqual([SessionState.Established]); expect(spy.calls.argsFor(2)).toEqual([SessionState.Terminated]); }); + + it("his session delegate onAck", () => { + const spy = invitationDelegateMock; + expect(spy.onAck).toHaveBeenCalledTimes(1); + expect(spy.onCancel).toHaveBeenCalledTimes(0); + }); }); // These only makes sense in INVITE with SDP case. @@ -1104,6 +1163,12 @@ describe("API Session", () => { expect(spy.calls.argsFor(0)).toEqual([SessionState.Establishing]); expect(spy.calls.argsFor(1)).toEqual([SessionState.Terminated]); }); + + it("his session delegate nothing", () => { + const spy = invitationDelegateMock; + expect(spy.onAck).toHaveBeenCalledTimes(0); + expect(spy.onCancel).toHaveBeenCalledTimes(0); + }); }); } @@ -1167,6 +1232,12 @@ describe("API Session", () => { expect(spy.calls.argsFor(2)).toEqual([SessionState.Terminated]); }); + it("his session delegate onAck", () => { + const spy = invitationDelegateMock; + expect(spy.onAck).toHaveBeenCalledTimes(1); + expect(spy.onCancel).toHaveBeenCalledTimes(0); + }); + it("her dialog should be 'terminated' and 'closed'", () => { const session = inviter.dialog; expect(session && session.sessionState).toBe(SessionDialogState.Terminated); @@ -1255,6 +1326,12 @@ describe("API Session", () => { expect(spy.calls.argsFor(2)).toEqual([SessionState.Terminated]); }); + it("his session delegate onAck", () => { + const spy = invitationDelegateMock; + expect(spy.onAck).toHaveBeenCalledTimes(1); + expect(spy.onCancel).toHaveBeenCalledTimes(0); + }); + it("her dialog should be 'terminated' and 'closed'", () => { const session = inviter.dialog; expect(session && session.sessionState).toBe(SessionDialogState.Terminated); @@ -1299,6 +1376,12 @@ describe("API Session", () => { expect(spy.calls.argsFor(1)).toEqual([SessionState.Established]); expect(spy.calls.argsFor(2)).toEqual([SessionState.Terminated]); }); + + it("his session delegate nothing", () => { + const spy = invitationDelegateMock; + expect(spy.onAck).toHaveBeenCalledTimes(0); + expect(spy.onCancel).toHaveBeenCalledTimes(0); + }); }); // These only makes sense in INVITE without SDP case. @@ -1337,6 +1420,12 @@ describe("API Session", () => { expect(spy.calls.argsFor(1)).toEqual([SessionState.Established]); expect(spy.calls.argsFor(2)).toEqual([SessionState.Terminated]); }); + + it("his session delegate onAck", () => { + const spy = invitationDelegateMock; + expect(spy.onAck).toHaveBeenCalledTimes(1); + expect(spy.onCancel).toHaveBeenCalledTimes(0); + }); }); describe("Bob accept(), ACK SDP set fails - SDH Error", () => { @@ -1383,6 +1472,13 @@ describe("API Session", () => { expect(spy.calls.argsFor(1)).toEqual([SessionState.Established]); expect(spy.calls.argsFor(2)).toEqual([SessionState.Terminated]); }); + + it("his session delegate onAck", () => { + const spy = invitationDelegateMock; + expect(spy.onAck).toHaveBeenCalledTimes(1); + expect(spy.onCancel).toHaveBeenCalledTimes(0); + }); + }); } @@ -1427,6 +1523,12 @@ describe("API Session", () => { expect(spy.calls.argsFor(1)).toEqual([SessionState.Established]); expect(spy.calls.argsFor(2)).toEqual([SessionState.Terminated]); }); + + it("his session delegate nothing", () => { + const spy = invitationDelegateMock; + expect(spy.onAck).toHaveBeenCalledTimes(0); + expect(spy.onCancel).toHaveBeenCalledTimes(0); + }); }); describe("Bob accept(), ACK never arrives - Request Timeout", () => { @@ -1450,6 +1552,12 @@ describe("API Session", () => { expect(spy.calls.argsFor(1)).toEqual([SessionState.Established]); expect(spy.calls.argsFor(2)).toEqual([SessionState.Terminated]); }); + + it("his session delegate nothing", () => { + const spy = invitationDelegateMock; + expect(spy.onAck).toHaveBeenCalledTimes(0); + expect(spy.onCancel).toHaveBeenCalledTimes(0); + }); }); describe("Bob reject(), ACK send fails - Transport Error", () => { @@ -1489,6 +1597,12 @@ describe("API Session", () => { expect(spy).toHaveBeenCalledTimes(1); expect(spy.calls.argsFor(0)).toEqual([SessionState.Terminated]); }); + + it("his session delegate nothing", () => { + const spy = invitationDelegateMock; + expect(spy.onAck).toHaveBeenCalledTimes(0); + expect(spy.onCancel).toHaveBeenCalledTimes(0); + }); }); describe("Bob nothing - no answer timeout", () => { @@ -1602,6 +1716,12 @@ describe("API Session", () => { expect(spy.calls.argsFor(0)).toEqual([SessionState.Establishing]); expect(spy.calls.argsFor(1)).toEqual([SessionState.Terminated]); }); + + it("his session delegate onCancel", () => { + const spy = invitationDelegateMock; + expect(spy.onAck).toHaveBeenCalledTimes(0); + expect(spy.onCancel).toHaveBeenCalledTimes(1); + }); }); describe("Bob progress(reliable), Alice cancel(), Bob accept() - an async race condition (CANCEL wins)", () => { @@ -1654,6 +1774,12 @@ describe("API Session", () => { expect(spy.calls.argsFor(0)).toEqual([SessionState.Establishing]); expect(spy.calls.argsFor(1)).toEqual([SessionState.Terminated]); }); + + it("his session delegate onCancel", () => { + const spy = invitationDelegateMock; + expect(spy.onAck).toHaveBeenCalledTimes(0); + expect(spy.onCancel).toHaveBeenCalledTimes(1); + }); }); describe("Bob progress(reliable), Bob accept(), Bob dispose() - an async race condition (dispose wins)", () => { @@ -1704,6 +1830,12 @@ describe("API Session", () => { expect(spy.calls.argsFor(0)).toEqual([SessionState.Establishing]); expect(spy.calls.argsFor(1)).toEqual([SessionState.Terminated]); }); + + it("his session delegate nothing", () => { + const spy = invitationDelegateMock; + expect(spy.onAck).toHaveBeenCalledTimes(0); + expect(spy.onCancel).toHaveBeenCalledTimes(0); + }); }); describe("Bob progress()", () => { @@ -1878,6 +2010,8 @@ describe("API Session", () => { inviterRequestDelegateMock.onRedirect.calls.reset(); inviterRequestDelegateMock.onReject.calls.reset(); inviterRequestDelegateMock.onTrying.calls.reset(); + invitationDelegateMock.onAck.calls.reset(); + invitationDelegateMock.onCancel.calls.reset(); } beforeEach(async () => { @@ -1903,6 +2037,7 @@ describe("API Session", () => { onInvite: (session): void => { invitation = session; invitationStateSpy = makeEmitterSpy(invitation.stateChange, bob.userAgent.getLogger("Bob")); + invitation.delegate = invitationDelegateMock } }; inviter = new Inviter(alice.userAgent, target); @@ -1920,6 +2055,7 @@ describe("API Session", () => { onInvite: (session): void => { invitation = session; invitationStateSpy = makeEmitterSpy(invitation.stateChange, bob.userAgent.getLogger("Bob")); + invitation.delegate = invitationDelegateMock } }; inviter = new Inviter(alice.userAgent, target, { inviteWithoutSdp: true }); From 66b32e5a27477c91ede6be8b1e78bf6b85abb9f1 Mon Sep 17 00:00:00 2001 From: John Riordan Date: Tue, 27 Sep 2022 18:16:35 -0400 Subject: [PATCH 26/73] Add remarks with regard to onAck and onCancel --- src/api/session-delegate.ts | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/api/session-delegate.ts b/src/api/session-delegate.ts index d18b84ca2..ba76fba74 100644 --- a/src/api/session-delegate.ts +++ b/src/api/session-delegate.ts @@ -15,9 +15,12 @@ import { SessionDescriptionHandler } from "./session-description-handler"; export interface SessionDelegate { /** * Called upon receiving an incoming in dialog ACK request. + * @remarks + * Includes the ACK confirming an accepted initial Invite + * as well as ACKs associated with in dialog INVITE requests. * @param ack - The ack. */ - onAck?(ack: Ack): void; + onAck?(ack: Ack): void; /** * Called upon receiving an incoming in dialog BYE request. @@ -27,6 +30,10 @@ export interface SessionDelegate { /** * Called upon receiving an incoming CANCEL request. + * @remarks + * Relevant to an Invitation only. CANCEL reqeusts are being handled as + * a special case and there is currently no way to externally impact the + * response to the a CANCEL request. See core implementation for details. * @param cancel - The cancel. */ onCancel?(cancel: Cancel): void; From f4a1a26bf9755b43b4ee9aa8b41fdd393a0f7be6 Mon Sep 17 00:00:00 2001 From: Alexey_Y Date: Mon, 8 Aug 2022 18:42:28 +0300 Subject: [PATCH 27/73] Fix unsubscribe by disabling N timer on unsubscribe --- src/core/dialogs/subscription-dialog.ts | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/core/dialogs/subscription-dialog.ts b/src/core/dialogs/subscription-dialog.ts index 6c7d95d2d..ddaa2a095 100644 --- a/src/core/dialogs/subscription-dialog.ts +++ b/src/core/dialogs/subscription-dialog.ts @@ -318,10 +318,12 @@ export class SubscriptionDialog extends Dialog implements Subscription { clearTimeout(this.N); this.N = undefined; } - // When refreshing a subscription, a subscriber starts Timer N, set to - // 64*T1, when it sends the SUBSCRIBE request. - // https://tools.ietf.org/html/rfc6665#section-4.1.2.2 - this.N = setTimeout(() => this.timerN(), Timers.TIMER_N); + if (!options.extraHeaders?.includes("Expires: 0")) { + // When refreshing a subscription, a subscriber starts Timer N, set to + // 64*T1, when it sends the SUBSCRIBE request. + // https://tools.ietf.org/html/rfc6665#section-4.1.2.2 + this.N = setTimeout(() => this.timerN(), Timers.TIMER_N); + } return uac; } From d15754c682f8a7dc9cac8a646bd0fa6227065bd7 Mon Sep 17 00:00:00 2001 From: John Riordan Date: Tue, 27 Sep 2022 21:55:50 -0400 Subject: [PATCH 28/73] Update vscode settings --- .vscode/settings.json | 1 - 1 file changed, 1 deletion(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index 14f42a689..85336d9f3 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -2,7 +2,6 @@ "files.associations": { "*.json": "jsonc" }, - "typescript.tsdk": "./node_modules/typescript/lib", "files.exclude": { "**/*.js": { "when": "$(basename).ts" From 5dae220b3b65d87dde5f0f7c7f059e6627c7a8e2 Mon Sep 17 00:00:00 2001 From: John Riordan Date: Tue, 27 Sep 2022 22:01:51 -0400 Subject: [PATCH 29/73] Fix lint configuration --- .eslintrc.json | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/.eslintrc.json b/.eslintrc.json index c3a96449b..f53e5817a 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -8,20 +8,21 @@ "project": "./tsconfig-base.json" }, "plugins": [ - "@typescript-eslint", - "tree-shaking", - "prettier" + "@typescript-eslint", + "tree-shaking", + "prettier" ], "extends": [ - "eslint:recommended", - "plugin:@typescript-eslint/eslint-recommended", - "plugin:@typescript-eslint/recommended", + "eslint:recommended", + "plugin:@typescript-eslint/eslint-recommended", + "plugin:@typescript-eslint/recommended", // "plugin:@typescript-eslint/recommended-requiring-type-checking", // "plugin:@typescript-eslint/strict", - "prettier" + "prettier" ], "rules": { "no-console": "error", + "prettier/prettier": "error", // "@typescript-eslint/explicit-member-accessibility": "error", // "@typescript-eslint/member-ordering": "error", "tree-shaking/no-side-effects-in-initialization": "error" From 5baf7dbd0ed1f62cb0d11a8ee4145e772c90bdff Mon Sep 17 00:00:00 2001 From: John Riordan Date: Tue, 27 Sep 2022 22:05:38 -0400 Subject: [PATCH 30/73] Lint --- src/api/invitation.ts | 8 +-- src/api/session-delegate.ts | 2 +- src/platform/web/simple-user/simple-user.ts | 3 +- test/spec/api/session.spec.ts | 61 ++++++++----------- .../web/session-description-handler.spec.ts | 6 +- test/support/core/mocks.ts | 4 +- 6 files changed, 38 insertions(+), 46 deletions(-) diff --git a/src/api/invitation.ts b/src/api/invitation.ts index bda621c73..f7ec3847d 100644 --- a/src/api/invitation.ts +++ b/src/api/invitation.ts @@ -88,7 +88,7 @@ export class Invitation extends Session { // so this is a hack to port a hack. At least one test spec // relies on it (which is yet another hack). // eslint-disable-next-line @typescript-eslint/no-explicit-any - incomingRequestMessage.toTag = ((incomingInviteRequest as InviteUserAgentServer) as any).toTag; + incomingRequestMessage.toTag = (incomingInviteRequest as InviteUserAgentServer as any).toTag; if (typeof incomingRequestMessage.toTag !== "string") { throw new TypeError("toTag should have been a string."); } @@ -504,7 +504,7 @@ export class Invitation extends Session { } else { // We don't actually know what a session description handler implementation might throw our way, // and more generally as a last resort catch all, just assume we are getting an "unknown" and log it. - this.logger.error((error as unknown) as string); + this.logger.error(error as unknown as string); } // Log Exception message @@ -673,9 +673,7 @@ export class Invitation extends Session { * A version of `progress` which resolves when the reliable provisional response is acknowledged. * @param options - Options bucket. */ - private sendProgressReliableWaitForPrack( - options: InvitationProgressOptions = {} - ): Promise<{ + private sendProgressReliableWaitForPrack(options: InvitationProgressOptions = {}): Promise<{ prackRequest: IncomingPrackRequest; prackResponse: OutgoingResponse; progressResponse: OutgoingResponseWithSession; diff --git a/src/api/session-delegate.ts b/src/api/session-delegate.ts index ba76fba74..0b78b1e99 100644 --- a/src/api/session-delegate.ts +++ b/src/api/session-delegate.ts @@ -20,7 +20,7 @@ export interface SessionDelegate { * as well as ACKs associated with in dialog INVITE requests. * @param ack - The ack. */ - onAck?(ack: Ack): void; + onAck?(ack: Ack): void; /** * Called upon receiving an incoming in dialog BYE request. diff --git a/src/platform/web/simple-user/simple-user.ts b/src/platform/web/simple-user/simple-user.ts index 5d9e5cac2..71c783d36 100644 --- a/src/platform/web/simple-user/simple-user.ts +++ b/src/platform/web/simple-user/simple-user.ts @@ -951,7 +951,8 @@ export class SimpleUser { // - May optionally be set via constructor option. // - May optionally be set via options passed to Session.invite(). - const sessionDescriptionHandlerOptions = session.sessionDescriptionHandlerOptionsReInvite as SessionDescriptionHandlerOptions; + const sessionDescriptionHandlerOptions = + session.sessionDescriptionHandlerOptionsReInvite as SessionDescriptionHandlerOptions; sessionDescriptionHandlerOptions.hold = hold; session.sessionDescriptionHandlerOptionsReInvite = sessionDescriptionHandlerOptions; diff --git a/test/spec/api/session.spec.ts b/test/spec/api/session.spec.ts index 109cd6c46..5bec8db2e 100644 --- a/test/spec/api/session.spec.ts +++ b/test/spec/api/session.spec.ts @@ -1,12 +1,6 @@ /* eslint-disable @typescript-eslint/unbound-method */ /* eslint-disable @typescript-eslint/no-use-before-define */ -import { - Invitation, - Inviter, - SessionDelegate, - SessionDescriptionHandler, - SessionState -} from "../../../src/api"; +import { Invitation, Inviter, SessionDelegate, SessionDescriptionHandler, SessionState } from "../../../src/api"; import { Logger, OutgoingRequestDelegate, @@ -63,10 +57,10 @@ describe("API Session", () => { let invitation: Invitation; let invitationStateSpy: EmitterSpy; - const invitationDelegateMock = jasmine.createSpyObj>( - "SessionDelegate", - ["onAck", "onCancel"] - ); + const invitationDelegateMock = jasmine.createSpyObj>("SessionDelegate", [ + "onAck", + "onCancel" + ]); const inviterRequestDelegateMock = jasmine.createSpyObj>( "OutgoingRequestDelegate", @@ -124,7 +118,7 @@ describe("API Session", () => { const spy = invitationDelegateMock; expect(spy.onAck).toHaveBeenCalledTimes(1); expect(spy.onCancel).toHaveBeenCalledTimes(0); - }); + }); it("his dialog should be 'confirmed' and 'stable'", () => { const session = invitation.dialog; @@ -184,7 +178,7 @@ describe("API Session", () => { const spy = invitationDelegateMock; expect(spy.onAck).toHaveBeenCalledTimes(1); expect(spy.onCancel).toHaveBeenCalledTimes(0); - }); + }); it("her dialog should be 'confirmed' and 'stable'", () => { const session = inviter.dialog; @@ -308,7 +302,7 @@ describe("API Session", () => { const spy = invitationDelegateMock; expect(spy.onAck).toHaveBeenCalledTimes(0); expect(spy.onCancel).toHaveBeenCalledTimes(0); - }); + }); } function bobProgress(): void { @@ -486,7 +480,7 @@ describe("API Session", () => { const spy = invitationDelegateMock; expect(spy.onAck).toHaveBeenCalledTimes(0); expect(spy.onCancel).toHaveBeenCalledTimes(0); - }); + }); } function bobReject2x(): void { @@ -539,7 +533,7 @@ describe("API Session", () => { const spy = invitationDelegateMock; expect(spy.onAck).toHaveBeenCalledTimes(0); expect(spy.onCancel).toHaveBeenCalledTimes(0); - }); + }); it("his second reject() threw an error", () => { expect(threw).toBe(true); @@ -956,7 +950,7 @@ describe("API Session", () => { const spy = invitationDelegateMock; expect(spy.onAck).toHaveBeenCalledTimes(0); expect(spy.onCancel).toHaveBeenCalledTimes(1); - }); + }); }); describe("Alice cancel(), Bob accept() - an async race condition (CANCEL wins)", () => { @@ -1010,7 +1004,7 @@ describe("API Session", () => { const spy = invitationDelegateMock; expect(spy.onAck).toHaveBeenCalledTimes(0); expect(spy.onCancel).toHaveBeenCalledTimes(1); - }); + }); }); describe("Bob accept(), Alice cancel() - a network glare condition (200 wins)", () => { @@ -1096,7 +1090,7 @@ describe("API Session", () => { const spy = invitationDelegateMock; expect(spy.onAck).toHaveBeenCalledTimes(1); expect(spy.onCancel).toHaveBeenCalledTimes(0); - }); + }); }); // These only makes sense in INVITE with SDP case. @@ -1168,7 +1162,7 @@ describe("API Session", () => { const spy = invitationDelegateMock; expect(spy.onAck).toHaveBeenCalledTimes(0); expect(spy.onCancel).toHaveBeenCalledTimes(0); - }); + }); }); } @@ -1236,7 +1230,7 @@ describe("API Session", () => { const spy = invitationDelegateMock; expect(spy.onAck).toHaveBeenCalledTimes(1); expect(spy.onCancel).toHaveBeenCalledTimes(0); - }); + }); it("her dialog should be 'terminated' and 'closed'", () => { const session = inviter.dialog; @@ -1330,7 +1324,7 @@ describe("API Session", () => { const spy = invitationDelegateMock; expect(spy.onAck).toHaveBeenCalledTimes(1); expect(spy.onCancel).toHaveBeenCalledTimes(0); - }); + }); it("her dialog should be 'terminated' and 'closed'", () => { const session = inviter.dialog; @@ -1381,7 +1375,7 @@ describe("API Session", () => { const spy = invitationDelegateMock; expect(spy.onAck).toHaveBeenCalledTimes(0); expect(spy.onCancel).toHaveBeenCalledTimes(0); - }); + }); }); // These only makes sense in INVITE without SDP case. @@ -1425,7 +1419,7 @@ describe("API Session", () => { const spy = invitationDelegateMock; expect(spy.onAck).toHaveBeenCalledTimes(1); expect(spy.onCancel).toHaveBeenCalledTimes(0); - }); + }); }); describe("Bob accept(), ACK SDP set fails - SDH Error", () => { @@ -1477,8 +1471,7 @@ describe("API Session", () => { const spy = invitationDelegateMock; expect(spy.onAck).toHaveBeenCalledTimes(1); expect(spy.onCancel).toHaveBeenCalledTimes(0); - }); - + }); }); } @@ -1528,7 +1521,7 @@ describe("API Session", () => { const spy = invitationDelegateMock; expect(spy.onAck).toHaveBeenCalledTimes(0); expect(spy.onCancel).toHaveBeenCalledTimes(0); - }); + }); }); describe("Bob accept(), ACK never arrives - Request Timeout", () => { @@ -1557,7 +1550,7 @@ describe("API Session", () => { const spy = invitationDelegateMock; expect(spy.onAck).toHaveBeenCalledTimes(0); expect(spy.onCancel).toHaveBeenCalledTimes(0); - }); + }); }); describe("Bob reject(), ACK send fails - Transport Error", () => { @@ -1602,7 +1595,7 @@ describe("API Session", () => { const spy = invitationDelegateMock; expect(spy.onAck).toHaveBeenCalledTimes(0); expect(spy.onCancel).toHaveBeenCalledTimes(0); - }); + }); }); describe("Bob nothing - no answer timeout", () => { @@ -1721,7 +1714,7 @@ describe("API Session", () => { const spy = invitationDelegateMock; expect(spy.onAck).toHaveBeenCalledTimes(0); expect(spy.onCancel).toHaveBeenCalledTimes(1); - }); + }); }); describe("Bob progress(reliable), Alice cancel(), Bob accept() - an async race condition (CANCEL wins)", () => { @@ -1779,7 +1772,7 @@ describe("API Session", () => { const spy = invitationDelegateMock; expect(spy.onAck).toHaveBeenCalledTimes(0); expect(spy.onCancel).toHaveBeenCalledTimes(1); - }); + }); }); describe("Bob progress(reliable), Bob accept(), Bob dispose() - an async race condition (dispose wins)", () => { @@ -1835,7 +1828,7 @@ describe("API Session", () => { const spy = invitationDelegateMock; expect(spy.onAck).toHaveBeenCalledTimes(0); expect(spy.onCancel).toHaveBeenCalledTimes(0); - }); + }); }); describe("Bob progress()", () => { @@ -2037,7 +2030,7 @@ describe("API Session", () => { onInvite: (session): void => { invitation = session; invitationStateSpy = makeEmitterSpy(invitation.stateChange, bob.userAgent.getLogger("Bob")); - invitation.delegate = invitationDelegateMock + invitation.delegate = invitationDelegateMock; } }; inviter = new Inviter(alice.userAgent, target); @@ -2055,7 +2048,7 @@ describe("API Session", () => { onInvite: (session): void => { invitation = session; invitationStateSpy = makeEmitterSpy(invitation.stateChange, bob.userAgent.getLogger("Bob")); - invitation.delegate = invitationDelegateMock + invitation.delegate = invitationDelegateMock; } }; inviter = new Inviter(alice.userAgent, target, { inviteWithoutSdp: true }); diff --git a/test/spec/platform/web/session-description-handler.spec.ts b/test/spec/platform/web/session-description-handler.spec.ts index 79939942f..394b7ef83 100644 --- a/test/spec/platform/web/session-description-handler.spec.ts +++ b/test/spec/platform/web/session-description-handler.spec.ts @@ -65,14 +65,14 @@ const exactlyZeroField = (startsWith: string): jasmine.AsymmetricMatcher const sessionDescriptionHandlerFactory = defaultSessionDescriptionHandlerFactory(); // A console logger -const logger = (console as unknown) as Logger; +const logger = console as unknown as Logger; // This is a fake Session with a console Logger to provide to the SessionDescriptionHandlerFactory. // Currently the default factory only uses the following properties, so the hacks "works". const session = { - userAgent: ({ + userAgent: { getLogger: (): Logger => logger - } as unknown) as UserAgent + } as unknown as UserAgent } as Session; // Options for the SessionDescriptionHandlerFactory diff --git a/test/support/core/mocks.ts b/test/support/core/mocks.ts index 76d5f1192..7ccfe5bc8 100644 --- a/test/support/core/mocks.ts +++ b/test/support/core/mocks.ts @@ -172,7 +172,7 @@ export function makeMockUA(user: string, domain: string, displayName: string, tr const log = new LoggerFactory(); const viaHost = `${user}Host.invalid`; const contactURI = new URI("sip", createRandomToken(8), viaHost, undefined, { transport: "ws" }); - const ua = ({ + const ua = { publishers: {}, registerers: {}, sessions: {}, @@ -196,7 +196,7 @@ export function makeMockUA(user: string, domain: string, displayName: string, tr getLogger: (category: string, label?: string) => log.getLogger(category, label), getLoggerFactory: () => log, getSupportedResponseOptions: () => ["outbound"] - } as unknown) as UserAgent; + } as unknown as UserAgent; if (!ua.configuration) { throw new Error("UA configuration undefined."); } From 5b0c29ebd00c7e678b9bd2616eb5e8aef9e483d1 Mon Sep 17 00:00:00 2001 From: John Riordan Date: Tue, 27 Sep 2022 23:18:27 -0400 Subject: [PATCH 31/73] SimpleUser support for early media --- src/platform/web/simple-user/simple-user.ts | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/platform/web/simple-user/simple-user.ts b/src/platform/web/simple-user/simple-user.ts index 71c783d36..6fa969830 100644 --- a/src/platform/web/simple-user/simple-user.ts +++ b/src/platform/web/simple-user/simple-user.ts @@ -888,8 +888,24 @@ export class SimpleUser { // Initialize our session this.initSession(inviter, inviterOptions); + // Clone options for safe keeping + const options = { ...inviterInviteOptions }; + options.requestDelegate = { ...options.requestDelegate }; + + // If utilizing early media, add a handler to catch 183 Session Progress + // messages and then to play the associated remote media (the early media). + if (inviterOptions?.earlyMedia) { + const existingOnProgress = options.requestDelegate.onProgress; + options.requestDelegate.onProgress = (response) => { + if (response.message.statusCode === 183) { + this.setupRemoteMedia(); + } + existingOnProgress && existingOnProgress(response); + }; + } + // Send the INVITE - return inviter.invite(inviterInviteOptions).then(() => { + return inviter.invite(options).then(() => { this.logger.log(`[${this.id}] sent INVITE`); }); } From b26885ce24a5788dd3f3db45f726c93e6b7b3763 Mon Sep 17 00:00:00 2001 From: John Riordan Date: Wed, 28 Sep 2022 02:33:42 -0400 Subject: [PATCH 32/73] Pass SDH options MediaStreamFactory This is a non-breaking change to facilitate use case outlined in #972 --- .../web/session-description-handler/media-stream-factory.ts | 4 +++- .../session-description-handler.ts | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/platform/web/session-description-handler/media-stream-factory.ts b/src/platform/web/session-description-handler/media-stream-factory.ts index 0eb68171f..fadf4b16e 100644 --- a/src/platform/web/session-description-handler/media-stream-factory.ts +++ b/src/platform/web/session-description-handler/media-stream-factory.ts @@ -1,4 +1,5 @@ import { SessionDescriptionHandler } from "./session-description-handler"; +import { SessionDescriptionHandlerOptions } from "./session-description-handler-options"; /** * Interface of factory function which produces a MediaStream. @@ -6,5 +7,6 @@ import { SessionDescriptionHandler } from "./session-description-handler"; */ export type MediaStreamFactory = ( constraints: MediaStreamConstraints, - sessionDescriptionHandler: SessionDescriptionHandler + sessionDescriptionHandler: SessionDescriptionHandler, + options?: SessionDescriptionHandlerOptions ) => Promise; diff --git a/src/platform/web/session-description-handler/session-description-handler.ts b/src/platform/web/session-description-handler/session-description-handler.ts index 455c648be..9d6291ed7 100644 --- a/src/platform/web/session-description-handler/session-description-handler.ts +++ b/src/platform/web/session-description-handler/session-description-handler.ts @@ -421,7 +421,9 @@ export class SessionDescriptionHandler implements SessionDescriptionHandlerDefin } this.localMediaStreamConstraints = constraints; - return this.mediaStreamFactory(constraints, this).then((mediaStream) => this.setLocalMediaStream(mediaStream)); + return this.mediaStreamFactory(constraints, this, options).then((mediaStream) => + this.setLocalMediaStream(mediaStream) + ); } /** From 6c30defd123c7a5afd4364b99cc0d32cc2189ea6 Mon Sep 17 00:00:00 2001 From: John Riordan Date: Wed, 28 Sep 2022 11:03:26 -0400 Subject: [PATCH 33/73] Update scripts in package.json --- package.json | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/package.json b/package.json index a23c7f08f..156f097b8 100644 --- a/package.json +++ b/package.json @@ -66,24 +66,22 @@ }, "scripts": { "prebuild": "npm run lint", - "generate-grammar": "node build/grammarGenerator.cjs", + "build-bundles": "npm run build-reg-bundle && npm run build-min-bundle", "build-reg-bundle": "webpack --progress --config build/webpack.config.cjs --env buildType=reg", "build-min-bundle": "webpack --progress --config build/webpack.config.cjs --env buildType=min", - "build-bundles": "npm run build-reg-bundle && npm run build-min-bundle", "build-demo": "npm run generate-grammar && webpack --progress --config demo/webpack.config.cjs", "build-lib": "tsc -p src", "build-test": "tsc -p test", - "copy-dist-files": "cp dist/sip.js dist/sip-$npm_package_version.js && cp dist/sip.min.js dist/sip-$npm_package_version.min.js", "build": "npm run generate-grammar && npm run build-lib && npm run build-reg-bundle && npm run build-min-bundle && npm run copy-dist-files", - "browser-test": "npm run build-test && sleep 2 && (open http://localhost:9876/debug.html &) && karma start karma.conf.cjs --reporters kjhtml --no-single-run", - "command-line-test": "npm run build-test && karma start karma.conf.cjs --reporters mocha --browsers ChromeHeadlessFakeMediaStream --single-run", - "build-and-test": "npm run build && npm run command-line-test", - "build-and-browser-test": "npm run build && npm run browser-test", - "extract-api": "api-extractor run --local --verbose --config src/api/api-extractor.json", - "extract-core": "api-extractor run --local --verbose --config src/core/api-extractor.json", - "extract-session-description-handler": "api-extractor run --local --verbose --config src/platform/web/session-description-handler/api-extractor.json", - "extract-simple-user": "api-extractor run --local --verbose --config src/platform/web/simple-user/api-extractor.json", - "extract-transport": "api-extractor run --local --verbose --config src/platform/web/transport/api-extractor.json", + "build-and-test": "npm run build && npm run test", + "build-and-test-browser": "npm run build && npm run test-browser", + "build-docs-api": "npm run extract-api && npm run document-api && npm run document-copy-api", + "build-docs-core": "npm run extract-core && npm run document-core && npm run document-copy-core", + "build-docs-session-description-handler": "npm run extract-session-description-handler && npm run document-session-description-handler && npm run document-copy-session-description-handler", + "build-docs-simple-user": "npm run extract-simple-user && npm run document-simple-user && npm run document-copy-simple-user", + "build-docs-transport": "npm run extract-transport && npm run document-transport && npm run document-copy-transport", + "build-docs": "npm run build-lib && npm run build-docs-api && npm run build-docs-core && npm run build-docs-session-description-handler && npm run build-docs-simple-user && npm run build-docs-transport", + "copy-dist-files": "cp dist/sip.js dist/sip-$npm_package_version.js && cp dist/sip.min.js dist/sip-$npm_package_version.min.js", "document-api": "api-documenter markdown --input-folder ./temp/api --output-folder ./temp/docs/api", "document-core": "api-documenter markdown --input-folder ./temp/core --output-folder ./temp/docs/core", "document-session-description-handler": "api-documenter markdown --input-folder ./temp/session-description-handler --output-folder ./temp/docs/session-description-handler", @@ -94,14 +92,16 @@ "document-copy-session-description-handler": "rm -rf ./docs/session-description-handler/sip.js.* && cp ./temp/docs/session-description-handler/* ./docs/session-description-handler", "document-copy-simple-user": "rm -rf ./docs/simple-user/sip.js.* && cp ./temp/docs/simple-user/* ./docs/simple-user", "document-copy-transport": "rm -rf ./docs/transport/sip.js.* && cp ./temp/docs/transport/* ./docs/transport", - "build-docs-api": "npm run extract-api && npm run document-api && npm run document-copy-api", - "build-docs-core": "npm run extract-core && npm run document-core && npm run document-copy-core", - "build-docs-session-description-handler": "npm run extract-session-description-handler && npm run document-session-description-handler && npm run document-copy-session-description-handler", - "build-docs-simple-user": "npm run extract-simple-user && npm run document-simple-user && npm run document-copy-simple-user", - "build-docs-transport": "npm run extract-transport && npm run document-transport && npm run document-copy-transport", - "build-docs": "npm run build-lib && npm run build-docs-api && npm run build-docs-core && npm run build-docs-session-description-handler && npm run build-docs-simple-user && npm run build-docs-transport", + "extract-api": "api-extractor run --local --verbose --config src/api/api-extractor.json", + "extract-core": "api-extractor run --local --verbose --config src/core/api-extractor.json", + "extract-session-description-handler": "api-extractor run --local --verbose --config src/platform/web/session-description-handler/api-extractor.json", + "extract-simple-user": "api-extractor run --local --verbose --config src/platform/web/simple-user/api-extractor.json", + "extract-transport": "api-extractor run --local --verbose --config src/platform/web/transport/api-extractor.json", + "generate-grammar": "node build/grammarGenerator.cjs", "lint": "eslint --ext .ts .", "lint-fix": "eslint --ext .ts --fix .", + "test": "npm run build-test && karma start karma.conf.cjs --reporters mocha --browsers ChromeHeadlessFakeMediaStream --single-run", + "test-browser": "npm run build-test && sleep 2 && (open http://localhost:9876/debug.html &) && karma start karma.conf.cjs --reporters kjhtml --no-single-run", "version": "sed -i '' \"s/LIBRARY_VERSION = .*/LIBRARY_VERSION = \\\"$npm_package_version\\\";/\" src/version.ts" } } From d58ecf666a267b1d2adbae30312eac6f88b34c78 Mon Sep 17 00:00:00 2001 From: John Riordan Date: Wed, 28 Sep 2022 11:04:46 -0400 Subject: [PATCH 34/73] Replace Travis CI with GitHub CI - create node.js.yml for GitHub CI - increase timeoutInterval in karma.conf - update Build/CI badge on README - remove travis.yml --- .github/workflows/node.js.yml | 33 +++++++++++++++++++++++++++++++++ .travis.yml | 26 -------------------------- README.md | 2 +- karma.conf.cjs | 1 + 4 files changed, 35 insertions(+), 27 deletions(-) create mode 100644 .github/workflows/node.js.yml delete mode 100644 .travis.yml diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml new file mode 100644 index 000000000..f40e35bdf --- /dev/null +++ b/.github/workflows/node.js.yml @@ -0,0 +1,33 @@ +# This workflow will do a clean installation of node dependencies, cache/restore them, build the source code and run tests across different versions of node +# For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions + +name: Node.js CI + +on: + push: + branches: [ "main" ] + pull_request: + branches: [ "main" ] + +jobs: + build: + + runs-on: ubuntu-latest + + timeout-minutes: 10 + + strategy: + matrix: + node-version: [16.x, 18.x] + # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ + + steps: + - uses: actions/checkout@v3 + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v3 + with: + node-version: ${{ matrix.node-version }} + cache: 'npm' + - run: npm ci + - run: npm run build --if-present + - run: npm test diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 9921637d2..000000000 --- a/.travis.yml +++ /dev/null @@ -1,26 +0,0 @@ -dist: xenial - -addons: - chrome: stable - -sudo: required - -language: node_js - -script: - - npm run build-and-test - -node_js: - - "10" - - "stable" - -cache: - directories: - - node_modules - -notifications: - email: - recipients: - secure: fe88XKh8U+bt2eSkZFKPG//d1i/pYEcG9WqXGRwRd1YzrhM9DVOUPXN5xhNADgfBK0PNZUEga+UMlAcrtt6PgBDZQhQsGWDb720wGLA4UoyerFInYeqb8Pue9V1FJnniys5APwxHAreYONDBRwerKx3OZ0Jz64vHyG1XNaBzlqU= - on_success: change - on_failure: always diff --git a/README.md b/README.md index e9e52a2b6..03a195b38 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ ![SIP.js Logo](https://sipjs.com/shared/img/logo.png "SIP.js") -[![Build Status](https://travis-ci.com/onsip/SIP.js.svg?branch=master)](https://travis-ci.com/onsip/SIP.js) +![Build Status](https://github.com/onsip/SIP.js/actions/workflows/node.js.yml/badge.svg) [![npm version](https://badge.fury.io/js/sip.js.svg)](https://badge.fury.io/js/sip.js) # SIP Library for JavaScript diff --git a/karma.conf.cjs b/karma.conf.cjs index ec36415df..da7e15e47 100644 --- a/karma.conf.cjs +++ b/karma.conf.cjs @@ -72,6 +72,7 @@ module.exports = function(config) { clearContext: false, captureConsole: false, jasmine: { + timeoutInterval: 10000, // only necessary due to potential bug in SpecSanityCheck 8.2.2.2, running // those out of order causes them to fail random: false From dc03997853fc656a2a223fa24867875bbd65b919 Mon Sep 17 00:00:00 2001 From: John Riordan Date: Wed, 28 Sep 2022 16:06:57 -0400 Subject: [PATCH 35/73] Documentation fix --- docs/BUILDING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/BUILDING.md b/docs/BUILDING.md index 98bbdfe90..2ba07e403 100644 --- a/docs/BUILDING.md +++ b/docs/BUILDING.md @@ -37,7 +37,7 @@ Run `npm run build-lib` to regenerate the `lib` folder. SIP.js includes integration and units implemented using [Jasmine](https://jasmine.github.io/). Run the tests as follows: ``` -$ npm run command-line-test +$ npm run test ``` or ``` From 74eef5edb288f630d9b95aef2ca0e78707b99b54 Mon Sep 17 00:00:00 2001 From: zusrut Date: Thu, 5 May 2022 19:39:33 +0200 Subject: [PATCH 36/73] FIX: Remove GRUU from REGISTER contact Per the RFC5627, GRUUs are used in non-REGISTER requests... 3.3. Using a GRUU Once a user agent obtains GRUUs from the registrar, it uses them in several ways. First, it uses them as the contents of the Contact header field in non-REGISTER requests and responses that it emits (for example, an INVITE request and 200 OK response). https://datatracker.ietf.org/doc/html/ --- src/api/registerer.ts | 2 +- src/api/user-agent.ts | 13 ++++++++++++- .../user-agent-core-configuration.ts | 2 +- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/api/registerer.ts b/src/api/registerer.ts index cbfbed0de..5d1666b5e 100644 --- a/src/api/registerer.ts +++ b/src/api/registerer.ts @@ -664,7 +664,7 @@ export class Registerer { * Generate Contact Header */ private generateContactHeader(expires: number): string { - let contact = this.userAgent.contact.toString(); + let contact = this.userAgent.contact.toString({ register: true }); if (this.options.regId && this.options.instanceId) { contact += ";reg-id=" + this.options.regId; contact += ';+sip.instance=""'; diff --git a/src/api/user-agent.ts b/src/api/user-agent.ts index 00e2e9e6d..814e2ce5d 100644 --- a/src/api/user-agent.ts +++ b/src/api/user-agent.ts @@ -601,14 +601,25 @@ export class UserAgent { pubGruu: undefined, tempGruu: undefined, uri: new URI("sip", contactName, this.options.viaHost, undefined, contactParams), - toString: (contactToStringOptions: { anonymous?: boolean; outbound?: boolean } = {}): string => { + toString: ( + contactToStringOptions: { anonymous?: boolean; outbound?: boolean; register?: boolean } = {} + ): string => { const anonymous = contactToStringOptions.anonymous || false; const outbound = contactToStringOptions.outbound || false; + const register = contactToStringOptions.register || false; let contactString = "<"; + // 3.3. Using a GRUU + // Once a user agent obtains GRUUs from the registrar, it uses them in + // several ways. First, it uses them as the contents of the Contact + // header field in non-REGISTER requests and responses that it emits + // (for example, an INVITE request and 200 OK response). + // https://datatracker.ietf.org/doc/html/rfc5627#section-3.3 if (anonymous) { contactString += this.contact.tempGruu || `sip:anonymous@anonymous.invalid;transport=${contactParams.transport ? contactParams.transport : "ws"}`; + } else if (register) { + contactString += this.contact.uri; } else { contactString += this.contact.pubGruu || this.contact.uri; } diff --git a/src/core/user-agent-core/user-agent-core-configuration.ts b/src/core/user-agent-core/user-agent-core-configuration.ts index 10ffb37ea..7e8fe5812 100644 --- a/src/core/user-agent-core/user-agent-core-configuration.ts +++ b/src/core/user-agent-core/user-agent-core-configuration.ts @@ -15,7 +15,7 @@ export interface Contact { pubGruu: URI | undefined; tempGruu: URI | undefined; uri: URI; - toString: (options?: { anonymous?: boolean; outbound?: boolean }) => string; + toString: (options?: { anonymous?: boolean; outbound?: boolean; register?: boolean }) => string; } /** From 91991095077ff14fef3647f2e877d02fd303ee13 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dan=20Virs=C3=A9n?= Date: Wed, 28 Sep 2022 18:47:53 -0400 Subject: [PATCH 37/73] New instanceId options Changes are non-breaking backwards compatible. - instanceId option added to UserAgentOptions - instanceIdAlwaysAdded option added to UserAgentOptions - instanceId option deprecated in RegistererOptions PR #988 --- src/api/registerer-options.ts | 3 ++- src/api/registerer.ts | 12 +----------- src/api/user-agent-options.ts | 12 ++++++++++++ src/api/user-agent.ts | 29 +++++++++++++++++++++++++++++ 4 files changed, 44 insertions(+), 12 deletions(-) diff --git a/src/api/registerer-options.ts b/src/api/registerer-options.ts index 98349488f..0369def4c 100644 --- a/src/api/registerer-options.ts +++ b/src/api/registerer-options.ts @@ -16,7 +16,8 @@ export interface RegistererOptions { /** * UUID to provide with "+sip.instance" Contact parameter. - * @defaultValue a randomly generated uuid + * @defaultValue A randomly generated uuid + * @deprecated Use UserAgentOptions.instanceId */ instanceId?: string; diff --git a/src/api/registerer.ts b/src/api/registerer.ts index 5d1666b5e..d16426a3b 100644 --- a/src/api/registerer.ts +++ b/src/api/registerer.ts @@ -93,7 +93,7 @@ export class Registerer { // Set instanceId and regId conditional defaults and validate if (this.options.regId && !this.options.instanceId) { - this.options.instanceId = Registerer.newUUID(); + this.options.instanceId = this.userAgent.instanceId; } else if (!this.options.regId && this.options.instanceId) { this.options.regId = 1; } @@ -175,16 +175,6 @@ export class Registerer { }; } - // http://stackoverflow.com/users/109538/broofa - private static newUUID(): string { - const UUID: string = "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, (c) => { - const r: number = Math.floor(Math.random() * 16); - const v: number = c === "x" ? r : (r % 4) + 8; - return v.toString(16); - }); - return UUID; - } - /** * Strip properties with undefined values from options. * This is a work around while waiting for missing vs undefined to be addressed (or not)... diff --git a/src/api/user-agent-options.ts b/src/api/user-agent-options.ts index 7aafb1eeb..0c6c9dac8 100644 --- a/src/api/user-agent-options.ts +++ b/src/api/user-agent-options.ts @@ -128,6 +128,18 @@ export interface UserAgentOptions { */ hackViaTcp?: boolean; + /** + * UUID to provide with "+sip.instance" Contact header parameter. + * @defaultValue A randomly generated uuid + */ + instanceId?: string; + + /** + * Add "+sip.instance" Contact header parameter to all requests. + * @defaultValue `false` + */ + instanceIdAlwaysAdded?: boolean; + /** * Indicates whether log messages should be written to the browser console. * @defaultValue `true` diff --git a/src/api/user-agent.ts b/src/api/user-agent.ts index 814e2ce5d..64d09a9c4 100644 --- a/src/api/user-agent.ts +++ b/src/api/user-agent.ts @@ -75,6 +75,7 @@ export class UserAgent { public _subscriptions: { [id: string]: Subscription } = {}; private _contact: Contact; + private _instanceId: string; private _state: UserAgentState = UserAgentState.Stopped; private _stateEventEmitter: EmitterImpl; private _transport: Transport; @@ -226,6 +227,12 @@ export class UserAgent { // Initialize Contact this._contact = this.initContact(); + // Set instance id + this._instanceId = this.options.instanceId ? this.options.instanceId : UserAgent.newUUID(); + if (Grammar.parse(this._instanceId, "uuid") === -1) { + throw new Error("Invalid instanceId."); + } + // Initialize UserAgentCore this._userAgentCore = this.initCore(); @@ -264,6 +271,8 @@ export class UserAgent { hackAllowUnregisteredOptionTags: false, hackIpInContact: false, hackViaTcp: false, + instanceId: "", + instanceIdAlwaysAdded: false, logBuiltinEnabled: true, logConfiguration: true, logConnector: (): void => { @@ -289,6 +298,16 @@ export class UserAgent { }; } + // http://stackoverflow.com/users/109538/broofa + private static newUUID(): string { + const UUID: string = "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, (c) => { + const r: number = Math.floor(Math.random() * 16); + const v: number = c === "x" ? r : (r % 4) + 8; + return v.toString(16); + }); + return UUID; + } + /** * Strip properties with undefined values from options. * This is a work around while waiting for missing vs undefined to be addressed (or not)... @@ -320,6 +339,13 @@ export class UserAgent { return this._contact; } + /** + * User agent instance id. + */ + public get instanceId(): string { + return this._instanceId; + } + /** * User agent state. */ @@ -627,6 +653,9 @@ export class UserAgent { contactString += ";ob"; } contactString += ">"; + if (this.options.instanceIdAlwaysAdded) { + contactString += ';+sip.instance=""'; + } return contactString; } }; From 53ef6338cb5891bc6380978545751d4f7b98715b Mon Sep 17 00:00:00 2001 From: John Riordan Date: Thu, 29 Sep 2022 11:41:57 -0400 Subject: [PATCH 38/73] More informative error message Issue: #874 --- src/api/session.ts | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/api/session.ts b/src/api/session.ts index 8a16be38f..6f3d81bd6 100644 --- a/src/api/session.ts +++ b/src/api/session.ts @@ -632,6 +632,20 @@ export abstract class Session { return Promise.reject(new Error(`Invalid session state ${this.state}`)); } + // REFER with Replaces (Attended Transfer) only supported with established sessions. + if (referTo instanceof Session && !referTo.dialog) { + const message = + "Session.refer() may only be called with session which is established. " + + "You are perhaps attempting to attended transfer to a target for which " + + "there is not dialog yet established. Perhaps you are attempting a " + + "'semi-attended' tansfer? Regardless, this is not supported. The recommended " + + "approached is to check to see if the target Session is in the Established " + + "state before calling refer(); if the state is not Established you may " + + "proceed by falling back using a URI as the target (blind transfer)."; + this.logger.error(message); + return Promise.reject(new Error(`Invalid session state ${this.state}`)); + } + const requestDelegate = options.requestDelegate; const requestOptions = this.copyRequestOptions(options.requestOptions); requestOptions.extraHeaders = requestOptions.extraHeaders From f3946e7fb3be1e6b1a5e6935924db18ed5679e36 Mon Sep 17 00:00:00 2001 From: John Riordan Date: Thu, 29 Sep 2022 14:51:57 -0400 Subject: [PATCH 39/73] Make iceGatheringComplete() public Addresses #929 --- .../session-description-handler.ts | 87 ++++++++++++++----- 1 file changed, 63 insertions(+), 24 deletions(-) diff --git a/src/platform/web/session-description-handler/session-description-handler.ts b/src/platform/web/session-description-handler/session-description-handler.ts index 9d6291ed7..e0b369abc 100644 --- a/src/platform/web/session-description-handler/session-description-handler.ts +++ b/src/platform/web/session-description-handler/session-description-handler.ts @@ -112,8 +112,25 @@ export class SessionDescriptionHandler implements SessionDescriptionHandlerDefin * The peer connection. Undefined if peer connection has closed. * * @remarks + * Use the peerConnectionDelegate to get access to the events associated + * with the RTCPeerConnection. For example... + * + * Do NOT do this... + * + * peerConnection.onicecandidate = (event) => { + * // do something + * }; + * + * Instead, do this... + * + * peerConnection.peerConnectionDelegate = { + * onicecandidate: (event) => { + * // do something + * } + * }; + * * While access to the underlying `RTCPeerConnection` is provided, note that - * using methods with modify it may break the operation of this class. + * using methods which modify it may break the operation of this class. * In particular, this class depends on exclusive access to the * event handler properties. If you need access to the peer connection * events, either register for events using `addEventListener()` on @@ -128,10 +145,27 @@ export class SessionDescriptionHandler implements SessionDescriptionHandlerDefin * A delegate which provides access to the peer connection event handlers. * * @remarks + * Use the peerConnectionDelegate to get access to the events associated + * with the RTCPeerConnection. For example... + * + * Do NOT do this... + * + * peerConnection.onicecandidate = (event) => { + * // do something + * }; + * + * Instead, do this... + * + * peerConnection.peerConnectionDelegate = { + * onicecandidate: (event) => { + * // do something + * } + * }; + * * Setting the peer connection event handlers directly is not supported * and may break this class. As this class depends on exclusive access - * to them, a delegate may be set which provides alternative access to - * the event handlers in a fashion which is supported. + * to them. This delegate is intended to provide access to the + * RTCPeerConnection events in a fashion which is supported. */ get peerConnectionDelegate(): PeerConnectionDelegate | undefined { return this._peerConnectionDelegate; @@ -227,6 +261,32 @@ export class SessionDescriptionHandler implements SessionDescriptionHandlerDefin return contentType === "application/sdp"; } + /** + * Called when ICE gathering completes and resolves any waiting promise. + * @remarks + * May be called prior to ICE gathering actually completing to allow the + * session descirption handler proceed with whatever candidates have been + * gathered up to this point in time. Use this to stop waiting on ICE to + * complete if you are implementing your own ICE gathering "timeout" strategy. + */ + public iceGatheringComplete(): void { + this.logger.debug("SessionDescriptionHandler.iceGatheringComplete"); + // clear timer if need be + if (this.iceGatheringCompleteTimeoutId !== undefined) { + this.logger.debug("SessionDescriptionHandler.iceGatheringComplete - clearing timeout"); + clearTimeout(this.iceGatheringCompleteTimeoutId); + this.iceGatheringCompleteTimeoutId = undefined; + } + // resolve and cleanup promise if need be + if (this.iceGatheringCompletePromise !== undefined) { + this.logger.debug("SessionDescriptionHandler.iceGatheringComplete - resolving promise"); + this.iceGatheringCompleteResolve && this.iceGatheringCompleteResolve(); + this.iceGatheringCompletePromise = undefined; + this.iceGatheringCompleteResolve = undefined; + this.iceGatheringCompleteReject = undefined; + } + } + /** * Send DTMF via RTP (RFC 4733). * Returns true if DTMF send is successful, false otherwise. @@ -785,27 +845,6 @@ export class SessionDescriptionHandler implements SessionDescriptionHandlerDefin return Promise.resolve(); } - /** - * Called when ICE gathering completes and resolves any waiting promise. - */ - protected iceGatheringComplete(): void { - this.logger.debug("SessionDescriptionHandler.iceGatheringComplete"); - // clear timer if need be - if (this.iceGatheringCompleteTimeoutId !== undefined) { - this.logger.debug("SessionDescriptionHandler.iceGatheringComplete - clearing timeout"); - clearTimeout(this.iceGatheringCompleteTimeoutId); - this.iceGatheringCompleteTimeoutId = undefined; - } - // resolve and cleanup promise if need be - if (this.iceGatheringCompletePromise !== undefined) { - this.logger.debug("SessionDescriptionHandler.iceGatheringComplete - resolving promise"); - this.iceGatheringCompleteResolve && this.iceGatheringCompleteResolve(); - this.iceGatheringCompletePromise = undefined; - this.iceGatheringCompleteResolve = undefined; - this.iceGatheringCompleteReject = undefined; - } - } - /** * Wait for ICE gathering to complete. * @param restart - If true, waits if current state is "complete" (waits for transition to "complete"). From 3b29c3e7f660fff7dd556753f2115ae6595dc82e Mon Sep 17 00:00:00 2001 From: John Riordan Date: Thu, 29 Sep 2022 17:12:04 -0400 Subject: [PATCH 40/73] Comment tweak. --- .../session-description-handler/session-description-handler.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/platform/web/session-description-handler/session-description-handler.ts b/src/platform/web/session-description-handler/session-description-handler.ts index e0b369abc..d48688bb2 100644 --- a/src/platform/web/session-description-handler/session-description-handler.ts +++ b/src/platform/web/session-description-handler/session-description-handler.ts @@ -267,7 +267,7 @@ export class SessionDescriptionHandler implements SessionDescriptionHandlerDefin * May be called prior to ICE gathering actually completing to allow the * session descirption handler proceed with whatever candidates have been * gathered up to this point in time. Use this to stop waiting on ICE to - * complete if you are implementing your own ICE gathering "timeout" strategy. + * complete if you are implementing your own ICE gathering completion strategy. */ public iceGatheringComplete(): void { this.logger.debug("SessionDescriptionHandler.iceGatheringComplete"); From 930462fbf3bbbc7f04202ff00645672dfdbb912f Mon Sep 17 00:00:00 2001 From: John Riordan Date: Sat, 1 Oct 2022 15:01:33 -0400 Subject: [PATCH 41/73] ECMAScript module (ESM) support - change compiler options to NodeNext - add .js extensions to all imports - tweak webpack configs (remove fullySpecified: false) --- RELEASE.md | 6 + build/grammarGenerator.cjs | 2 +- build/webpack.config.cjs | 6 +- demo/demo-1.ts | 4 +- demo/demo-2.ts | 6 +- demo/demo-3.ts | 6 +- demo/webpack.config.cjs | 6 +- karma.conf.cjs | 5 - package.json | 6 +- src/api/ack.ts | 3 +- src/api/bye.ts | 4 +- src/api/cancel.ts | 2 +- src/api/dtmf.ts | 4 +- .../exceptions/content-type-unsupported.ts | 2 +- src/api/exceptions/index.ts | 10 +- src/api/exceptions/request-pending.ts | 2 +- .../exceptions/session-description-handler.ts | 2 +- src/api/exceptions/session-terminated.ts | 2 +- src/api/exceptions/state-transition.ts | 2 +- src/api/index.ts | 112 +++++++++--------- src/api/info.ts | 4 +- src/api/invitation-accept-options.ts | 2 +- src/api/invitation-progress-options.ts | 2 +- src/api/invitation.ts | 52 ++++---- src/api/inviter-invite-options.ts | 4 +- src/api/inviter-options.ts | 7 +- src/api/inviter.ts | 44 ++++--- src/api/message.ts | 4 +- src/api/messager-message-options.ts | 2 +- src/api/messager-options.ts | 2 +- src/api/messager.ts | 13 +- src/api/notification.ts | 4 +- src/api/publisher-options.ts | 2 +- src/api/publisher.ts | 31 +++-- src/api/referral.ts | 11 +- src/api/registerer-options.ts | 2 +- src/api/registerer-register-options.ts | 2 +- src/api/registerer-unregister-options.ts | 2 +- src/api/registerer.ts | 31 +++-- src/api/session-bye-options.ts | 2 +- src/api/session-delegate.ts | 18 +-- .../session-description-handler-factory.ts | 4 +- src/api/session-info-options.ts | 2 +- src/api/session-invite-options.ts | 4 +- src/api/session-message-options.ts | 2 +- src/api/session-options.ts | 2 +- src/api/session-refer-options.ts | 4 +- src/api/session.ts | 90 +++++++------- src/api/subscriber-options.ts | 2 +- src/api/subscriber.ts | 43 ++++--- src/api/subscription-delegate.ts | 2 +- src/api/subscription-options.ts | 2 +- src/api/subscription.ts | 17 +-- src/api/transport.ts | 6 +- src/api/user-agent-delegate.ts | 14 ++- src/api/user-agent-options.ts | 9 +- src/api/user-agent.ts | 78 ++++++------ src/core/dialogs/dialog-state.ts | 2 +- src/core/dialogs/dialog.ts | 20 ++-- src/core/dialogs/index.ts | 8 +- src/core/dialogs/session-dialog.ts | 82 +++++++------ src/core/dialogs/subscription-dialog.ts | 35 +++--- src/core/exceptions/index.ts | 6 +- .../exceptions/transaction-state-error.ts | 2 +- src/core/exceptions/transport-error.ts | 2 +- src/core/index.ts | 22 ++-- src/core/log/index.ts | 6 +- src/core/log/logger-factory.ts | 4 +- src/core/log/logger.ts | 4 +- src/core/messages/body.ts | 6 +- src/core/messages/digest-authentication.ts | 11 +- src/core/messages/incoming-message.ts | 5 +- src/core/messages/incoming-request-message.ts | 4 +- src/core/messages/incoming-request.ts | 8 +- .../messages/incoming-response-message.ts | 2 +- src/core/messages/incoming-response.ts | 2 +- src/core/messages/index.ts | 27 ++--- src/core/messages/methods/ack.ts | 4 +- src/core/messages/methods/bye.ts | 6 +- src/core/messages/methods/cancel.ts | 6 +- src/core/messages/methods/index.ts | 26 ++-- src/core/messages/methods/info.ts | 6 +- src/core/messages/methods/invite.ts | 14 +-- src/core/messages/methods/message.ts | 6 +- src/core/messages/methods/notify.ts | 6 +- src/core/messages/methods/prack.ts | 6 +- src/core/messages/methods/publish.ts | 6 +- src/core/messages/methods/refer.ts | 6 +- src/core/messages/methods/register.ts | 6 +- src/core/messages/methods/subscribe.ts | 10 +- src/core/messages/outgoing-request-message.ts | 7 +- src/core/messages/outgoing-request.ts | 6 +- src/core/messages/outgoing-response.ts | 6 +- src/core/messages/parser.ts | 8 +- src/core/session/index.ts | 4 +- src/core/session/session-delegate.ts | 18 ++- src/core/session/session.ts | 26 ++-- src/core/subscription/index.ts | 4 +- .../subscription/subscription-delegate.ts | 3 +- src/core/subscription/subscription.ts | 5 +- src/core/transactions/client-transaction.ts | 11 +- src/core/transactions/index.ts | 20 ++-- .../transactions/invite-client-transaction.ts | 16 +-- .../transactions/invite-server-transaction.ts | 15 +-- .../non-invite-client-transaction.ts | 15 +-- .../non-invite-server-transaction.ts | 14 +-- src/core/transactions/server-transaction.ts | 10 +- src/core/transactions/transaction-user.ts | 8 +- src/core/transactions/transaction.ts | 10 +- src/core/user-agent-core/allowed-methods.ts | 2 +- src/core/user-agent-core/index.ts | 6 +- .../user-agent-core-configuration.ts | 7 +- .../user-agent-core-delegate.ts | 14 +-- src/core/user-agent-core/user-agent-core.ts | 79 ++++++------ src/core/user-agents/bye-user-agent-client.ts | 10 +- src/core/user-agents/bye-user-agent-server.ts | 10 +- .../user-agents/cancel-user-agent-client.ts | 10 +- src/core/user-agents/index.ts | 52 ++++---- .../user-agents/info-user-agent-client.ts | 10 +- .../user-agents/info-user-agent-server.ts | 10 +- .../user-agents/invite-user-agent-client.ts | 29 +++-- .../user-agents/invite-user-agent-server.ts | 29 ++--- .../user-agents/message-user-agent-client.ts | 10 +- .../user-agents/message-user-agent-server.ts | 10 +- .../user-agents/notify-user-agent-client.ts | 10 +- .../user-agents/notify-user-agent-server.ts | 12 +- .../user-agents/prack-user-agent-client.ts | 10 +- .../user-agents/prack-user-agent-server.ts | 17 ++- .../user-agents/publish-user-agent-client.ts | 10 +- .../re-invite-user-agent-client.ts | 21 ++-- .../re-invite-user-agent-server.ts | 20 ++-- .../re-subscribe-user-agent-client.ts | 17 ++- .../re-subscribe-user-agent-server.ts | 10 +- .../user-agents/refer-user-agent-client.ts | 10 +- .../user-agents/refer-user-agent-server.ts | 12 +- .../user-agents/register-user-agent-client.ts | 10 +- .../user-agents/register-user-agent-server.ts | 10 +- .../subscribe-user-agent-client.ts | 23 ++-- .../subscribe-user-agent-server.ts | 10 +- src/core/user-agents/user-agent-client.ts | 33 +++--- src/core/user-agents/user-agent-server.ts | 38 +++--- src/grammar/grammar.ts | 6 +- src/grammar/index.ts | 8 +- src/grammar/name-addr-header.ts | 4 +- src/grammar/uri.ts | 2 +- src/index.ts | 10 +- src/platform/web/index.ts | 8 +- src/platform/web/modifiers/index.ts | 2 +- src/platform/web/modifiers/modifiers.ts | 2 +- .../web/session-description-handler/index.ts | 20 ++-- .../media-stream-factory-default.ts | 2 +- .../media-stream-factory.ts | 4 +- ...ion-description-handler-factory-default.ts | 14 +-- ...ion-description-handler-factory-options.ts | 2 +- .../session-description-handler-factory.ts | 7 +- .../session-description-handler-options.ts | 2 +- .../session-description-handler.ts | 12 +- src/platform/web/simple-user/index.ts | 6 +- .../web/simple-user/simple-user-options.ts | 4 +- src/platform/web/simple-user/simple-user.ts | 55 +++++---- src/platform/web/transport/index.ts | 4 +- src/platform/web/transport/transport.ts | 13 +- test/spec/api/publication.spec.ts | 6 +- test/spec/api/registration.spec.ts | 17 ++- test/spec/api/session-in-dialog.spec.ts | 11 +- test/spec/api/session.spec.ts | 22 ++-- test/spec/api/subscription.spec.ts | 20 ++-- test/spec/api/user-agent.spec.ts | 6 +- test/spec/core/grammar.spec.ts | 2 +- test/spec/core/messages.spec.ts | 9 +- test/spec/core/name-addr-header.spec.ts | 2 +- test/spec/core/transactions.spec.ts | 6 +- test/spec/core/uri.spec.ts | 2 +- test/spec/core/user-agent-core.spec.ts | 11 +- test/spec/platform/web/modifiers.spec.ts | 2 +- .../web/session-description-handler.spec.ts | 6 +- .../web/transport-websocket-failure.spec.ts | 4 +- test/spec/platform/web/transport.spec.ts | 10 +- test/support/api/emitter-spy.ts | 4 +- .../api/session-description-handler-mock.ts | 2 +- test/support/api/transport-fake.ts | 4 +- test/support/api/user-fake.ts | 8 +- test/support/core/mocks.ts | 8 +- tsconfig-base.json | 4 +- 184 files changed, 1109 insertions(+), 1091 deletions(-) diff --git a/RELEASE.md b/RELEASE.md index c163a87d7..cde59a70b 100644 --- a/RELEASE.md +++ b/RELEASE.md @@ -77,5 +77,11 @@ Instead whitelist files in `package.json`. It's better to be exact about what we ## Update release notes on GitHub +Build the bundle files to upload. + +`npm run build-bundles` + * Find 'Releases' on repository page * Draft and publish release notes for new tag +* Upload bundles for new verison + diff --git a/build/grammarGenerator.cjs b/build/grammarGenerator.cjs index 80d229538..81d5cf17d 100644 --- a/build/grammarGenerator.cjs +++ b/build/grammarGenerator.cjs @@ -52,7 +52,7 @@ const parser = pegjs.generate(grammarContents, { plugins: [tspegjs], "tspegjs": { "tslintIgnores": "interface-name, trailing-comma, object-literal-sort-keys, max-line-length, only-arrow-functions, one-variable-per-declaration, no-consecutive-blank-lines, align, radix, quotemark, semicolon, object-literal-shorthand, variable-name, no-var-keyword, whitespace, curly, prefer-const, object-literal-key-quotes, no-string-literal, one-line, no-unused-expression, space-before-function-paren, arrow-return-shorthand", - "customHeader": "import { NameAddrHeader } from \"../../name-addr-header\";\nimport { URI } from \"../../uri\";" + "customHeader": "import { NameAddrHeader } from \"../../name-addr-header.js\";\nimport { URI } from \"../../uri.js\";" }, "returnTypes": { Contact: "URI | NameAddrHeader", diff --git a/build/webpack.config.cjs b/build/webpack.config.cjs index 716c55285..04c281efb 100644 --- a/build/webpack.config.cjs +++ b/build/webpack.config.cjs @@ -72,7 +72,11 @@ module.exports = function (env) { ] }, resolve: { - extensions: ['.ts', '.d.ts', '.js'] + extensions: ['.ts', '.d.ts', '.js'], + extensionAlias: { + '.js': ['.ts', '.js'], + '.mjs': ['.mts', '.mjs'] + } }, optimization: { minimizer: [ diff --git a/demo/demo-1.ts b/demo/demo-1.ts index abebca356..ffc09dbd5 100644 --- a/demo/demo-1.ts +++ b/demo/demo-1.ts @@ -1,7 +1,7 @@ /* eslint-disable @typescript-eslint/no-use-before-define */ /* eslint-disable no-console */ -import { SimpleUser, SimpleUserDelegate, SimpleUserOptions } from "../src/platform/web"; -import { getAudio, getButton, getButtons, getInput, getSpan } from "./demo-utils"; +import { SimpleUser, SimpleUserDelegate, SimpleUserOptions } from "../lib/platform/web/index.js"; +import { getAudio, getButton, getButtons, getInput, getSpan } from "./demo-utils.js"; const serverSpan = getSpan("server"); const targetSpan = getSpan("target"); diff --git a/demo/demo-2.ts b/demo/demo-2.ts index f5f2d4501..e4dfa86d0 100644 --- a/demo/demo-2.ts +++ b/demo/demo-2.ts @@ -2,9 +2,9 @@ /* eslint-disable @typescript-eslint/explicit-function-return-type */ /* eslint-disable no-console */ /* eslint-disable @typescript-eslint/no-use-before-define */ -import { SimpleUser, SimpleUserDelegate, SimpleUserOptions } from "../src/platform/web"; -import { nameAlice, nameBob, uriAlice, uriBob, webSocketServerAlice, webSocketServerBob } from "./demo-users"; -import { getButton, getInput, getVideo } from "./demo-utils"; +import { SimpleUser, SimpleUserDelegate, SimpleUserOptions } from "../lib/platform/web/index.js"; +import { nameAlice, nameBob, uriAlice, uriBob, webSocketServerAlice, webSocketServerBob } from "./demo-users.js"; +import { getButton, getInput, getVideo } from "./demo-utils.js"; const connectAlice = getButton("connectAlice"); const connectBob = getButton("connectBob"); diff --git a/demo/demo-3.ts b/demo/demo-3.ts index 293acf673..ee3951bdc 100644 --- a/demo/demo-3.ts +++ b/demo/demo-3.ts @@ -7,9 +7,9 @@ import { SimpleUser, SimpleUserDelegate, SimpleUserOptions -} from "../src/platform/web"; -import { nameAlice, nameBob, uriAlice, uriBob, webSocketServerAlice, webSocketServerBob } from "./demo-users"; -import { getButton, getDiv, getInput } from "./demo-utils"; +} from "../lib/platform/web/index.js"; +import { nameAlice, nameBob, uriAlice, uriBob, webSocketServerAlice, webSocketServerBob } from "./demo-users.js"; +import { getButton, getDiv, getInput } from "./demo-utils.js"; // A class which extends SimpleUser to handle setup and use of a data channel class SimpleUserWithDataChannel extends SimpleUser { diff --git a/demo/webpack.config.cjs b/demo/webpack.config.cjs index f6f464a9b..91d98ad86 100644 --- a/demo/webpack.config.cjs +++ b/demo/webpack.config.cjs @@ -18,7 +18,11 @@ module.exports = { ] }, resolve: { - extensions: [ '.tsx', '.ts', '.js' ] + extensions: [ '.tsx', '.ts', '.js' ], + extensionAlias: { + '.js': ['.ts', '.js'], + '.mjs': ['.mts', '.mjs'], + } }, output: { filename: '[name].js', diff --git a/karma.conf.cjs b/karma.conf.cjs index da7e15e47..5c1b6e6bb 100644 --- a/karma.conf.cjs +++ b/karma.conf.cjs @@ -24,11 +24,6 @@ module.exports = function(config) { webpack: { devtool: 'inline-source-map', - module: { rules: [ { test: /\.m?js/, - resolve: { - fullySpecified: false - } - }]}, mode: 'production' }, diff --git a/package.json b/package.json index 156f097b8..ea36eb679 100644 --- a/package.json +++ b/package.json @@ -66,13 +66,13 @@ }, "scripts": { "prebuild": "npm run lint", - "build-bundles": "npm run build-reg-bundle && npm run build-min-bundle", + "build-bundles": "npm run build-reg-bundle && npm run build-min-bundle && npm run copy-dist-files", "build-reg-bundle": "webpack --progress --config build/webpack.config.cjs --env buildType=reg", "build-min-bundle": "webpack --progress --config build/webpack.config.cjs --env buildType=min", - "build-demo": "npm run generate-grammar && webpack --progress --config demo/webpack.config.cjs", + "build-demo": "npm run build && webpack --progress --config demo/webpack.config.cjs", "build-lib": "tsc -p src", "build-test": "tsc -p test", - "build": "npm run generate-grammar && npm run build-lib && npm run build-reg-bundle && npm run build-min-bundle && npm run copy-dist-files", + "build": "npm run generate-grammar && npm run build-lib", "build-and-test": "npm run build && npm run test", "build-and-test-browser": "npm run build && npm run test-browser", "build-docs-api": "npm run extract-api && npm run document-api && npm run document-copy-api", diff --git a/src/api/ack.ts b/src/api/ack.ts index 6298a20da..aee333481 100644 --- a/src/api/ack.ts +++ b/src/api/ack.ts @@ -1,4 +1,5 @@ -import { IncomingRequestMessage, IncomingAckRequest } from "../core"; +import { IncomingAckRequest } from "../core/messages/methods/ack.js"; +import { IncomingRequestMessage } from "../core/messages/incoming-request-message.js"; /** * A request to confirm a {@link Session} (incoming ACK). diff --git a/src/api/bye.ts b/src/api/bye.ts index 0a2207bf1..635a561c1 100644 --- a/src/api/bye.ts +++ b/src/api/bye.ts @@ -1,4 +1,6 @@ -import { IncomingByeRequest, IncomingRequestMessage, ResponseOptions } from "../core"; +import { IncomingByeRequest } from "../core/messages/methods/bye.js"; +import { IncomingRequestMessage } from "../core/messages/incoming-request-message.js"; +import { ResponseOptions } from "../core/messages/outgoing-response.js"; /** * A request to end a {@link Session} (incoming BYE). diff --git a/src/api/cancel.ts b/src/api/cancel.ts index 29b269a63..efbbfa38f 100644 --- a/src/api/cancel.ts +++ b/src/api/cancel.ts @@ -1,4 +1,4 @@ -import { IncomingRequestMessage } from "../core"; +import { IncomingRequestMessage } from "../core/messages/incoming-request-message.js"; /** * A request to reject an {@link Invitation} (incoming CANCEL). diff --git a/src/api/dtmf.ts b/src/api/dtmf.ts index 32771eeb8..9dc209545 100644 --- a/src/api/dtmf.ts +++ b/src/api/dtmf.ts @@ -1,5 +1,5 @@ -import { IncomingInfoRequest } from "../core"; -import { Info } from "./info"; +import { IncomingInfoRequest } from "../core/messages/methods/info.js"; +import { Info } from "./info.js"; /** * A DTMF signal (incoming INFO). diff --git a/src/api/exceptions/content-type-unsupported.ts b/src/api/exceptions/content-type-unsupported.ts index cabf4c29e..51e1a0558 100644 --- a/src/api/exceptions/content-type-unsupported.ts +++ b/src/api/exceptions/content-type-unsupported.ts @@ -1,4 +1,4 @@ -import { Exception } from "../../core"; +import { Exception } from "../../core/exceptions/exception.js"; /** * An exception indicating an unsupported content type prevented execution. diff --git a/src/api/exceptions/index.ts b/src/api/exceptions/index.ts index aea43f163..bf20e7d0f 100644 --- a/src/api/exceptions/index.ts +++ b/src/api/exceptions/index.ts @@ -1,5 +1,5 @@ -export * from "./content-type-unsupported"; -export * from "./request-pending"; -export * from "./session-description-handler"; -export * from "./session-terminated"; -export * from "./state-transition"; +export * from "./content-type-unsupported.js"; +export * from "./request-pending.js"; +export * from "./session-description-handler.js"; +export * from "./session-terminated.js"; +export * from "./state-transition.js"; diff --git a/src/api/exceptions/request-pending.ts b/src/api/exceptions/request-pending.ts index 48b7301a3..b529d4493 100644 --- a/src/api/exceptions/request-pending.ts +++ b/src/api/exceptions/request-pending.ts @@ -1,4 +1,4 @@ -import { Exception } from "../../core"; +import { Exception } from "../../core/exceptions/exception.js"; /** * An exception indicating an outstanding prior request prevented execution. diff --git a/src/api/exceptions/session-description-handler.ts b/src/api/exceptions/session-description-handler.ts index 02b1e49b6..a9278b25f 100644 --- a/src/api/exceptions/session-description-handler.ts +++ b/src/api/exceptions/session-description-handler.ts @@ -1,4 +1,4 @@ -import { Exception } from "../../core"; +import { Exception } from "../../core/exceptions/exception.js"; /** * An exception indicating a session description handler error occured. diff --git a/src/api/exceptions/session-terminated.ts b/src/api/exceptions/session-terminated.ts index 4ef2737ed..1d9d5ff96 100644 --- a/src/api/exceptions/session-terminated.ts +++ b/src/api/exceptions/session-terminated.ts @@ -1,4 +1,4 @@ -import { Exception } from "../../core"; +import { Exception } from "../../core/exceptions/exception.js"; /** * An exception indicating the session terminated before the action completed. diff --git a/src/api/exceptions/state-transition.ts b/src/api/exceptions/state-transition.ts index fccb0899a..5fd68eb31 100644 --- a/src/api/exceptions/state-transition.ts +++ b/src/api/exceptions/state-transition.ts @@ -1,4 +1,4 @@ -import { Exception } from "../../core"; +import { Exception } from "../../core/exceptions/exception.js"; /** * An exception indicating an invalid state transition error occured. diff --git a/src/api/index.ts b/src/api/index.ts index 9f0415b05..c92fcd3a3 100644 --- a/src/api/index.ts +++ b/src/api/index.ts @@ -2,59 +2,59 @@ * A simple yet powerful API which takes care of SIP signaling and WebRTC media sessions for you. * @packageDocumentation */ -export * from "./exceptions"; -export * from "./ack"; -export * from "./bye"; -export * from "./cancel"; -export * from "./emitter"; -export * from "./info"; -export * from "./invitation-accept-options"; -export * from "./invitation-progress-options"; -export * from "./invitation-reject-options"; -export * from "./invitation"; -export * from "./inviter-cancel-options"; -export * from "./inviter-invite-options"; -export * from "./inviter-options"; -export * from "./inviter"; -export * from "./message"; -export * from "./messager-message-options"; -export * from "./messager-options"; -export * from "./messager"; -export * from "./notification"; -export * from "./publisher-options"; -export * from "./publisher-publish-options"; -export * from "./publisher-state"; -export * from "./publisher-unpublish-options"; -export * from "./publisher"; -export * from "./referral"; -export * from "./registerer-options"; -export * from "./registerer-register-options"; -export * from "./registerer-state"; -export * from "./registerer-unregister-options"; -export * from "./registerer"; -export * from "./session-bye-options"; -export * from "./session-delegate"; -export * from "./session-description-handler-factory"; -export * from "./session-description-handler"; -export * from "./session-info-options"; -export * from "./session-invite-options"; -export * from "./session-message-options"; -export * from "./session-options"; -export * from "./session-refer-options"; -export * from "./session-state"; -export * from "./session"; -export * from "./subscriber-options"; -export * from "./subscriber-subscribe-options"; -export * from "./subscriber"; -export * from "./subscription-delegate"; -export * from "./subscription-options"; -export * from "./subscription-state"; -export * from "./subscription-subscribe-options"; -export * from "./subscription-unsubscribe-options"; -export * from "./subscription"; -export * from "./transport"; -export * from "./transport-state"; -export * from "./user-agent-delegate"; -export * from "./user-agent-options"; -export * from "./user-agent-state"; -export * from "./user-agent"; +export * from "./exceptions/index.js"; +export * from "./ack.js"; +export * from "./bye.js"; +export * from "./cancel.js"; +export * from "./emitter.js"; +export * from "./info.js"; +export * from "./invitation-accept-options.js"; +export * from "./invitation-progress-options.js"; +export * from "./invitation-reject-options.js"; +export * from "./invitation.js"; +export * from "./inviter-cancel-options.js"; +export * from "./inviter-invite-options.js"; +export * from "./inviter-options.js"; +export * from "./inviter.js"; +export * from "./message.js"; +export * from "./messager-message-options.js"; +export * from "./messager-options.js"; +export * from "./messager.js"; +export * from "./notification.js"; +export * from "./publisher-options.js"; +export * from "./publisher-publish-options.js"; +export * from "./publisher-state.js"; +export * from "./publisher-unpublish-options.js"; +export * from "./publisher.js"; +export * from "./referral.js"; +export * from "./registerer-options.js"; +export * from "./registerer-register-options.js"; +export * from "./registerer-state.js"; +export * from "./registerer-unregister-options.js"; +export * from "./registerer.js"; +export * from "./session-bye-options.js"; +export * from "./session-delegate.js"; +export * from "./session-description-handler-factory.js"; +export * from "./session-description-handler.js"; +export * from "./session-info-options.js"; +export * from "./session-invite-options.js"; +export * from "./session-message-options.js"; +export * from "./session-options.js"; +export * from "./session-refer-options.js"; +export * from "./session-state.js"; +export * from "./session.js"; +export * from "./subscriber-options.js"; +export * from "./subscriber-subscribe-options.js"; +export * from "./subscriber.js"; +export * from "./subscription-delegate.js"; +export * from "./subscription-options.js"; +export * from "./subscription-state.js"; +export * from "./subscription-subscribe-options.js"; +export * from "./subscription-unsubscribe-options.js"; +export * from "./subscription.js"; +export * from "./transport.js"; +export * from "./transport-state.js"; +export * from "./user-agent-delegate.js"; +export * from "./user-agent-options.js"; +export * from "./user-agent-state.js"; +export * from "./user-agent.js"; diff --git a/src/api/info.ts b/src/api/info.ts index daab5a85e..e69fc0c59 100644 --- a/src/api/info.ts +++ b/src/api/info.ts @@ -1,4 +1,6 @@ -import { IncomingInfoRequest, IncomingRequestMessage, ResponseOptions } from "../core"; +import { IncomingInfoRequest } from "../core/messages/methods/info.js"; +import { IncomingRequestMessage } from "../core/messages/incoming-request-message.js"; +import { ResponseOptions } from "../core/messages/outgoing-response.js"; /** * An exchange of information (incoming INFO). diff --git a/src/api/invitation-accept-options.ts b/src/api/invitation-accept-options.ts index afc7996fc..e06792506 100644 --- a/src/api/invitation-accept-options.ts +++ b/src/api/invitation-accept-options.ts @@ -1,4 +1,4 @@ -import { SessionDescriptionHandlerModifier, SessionDescriptionHandlerOptions } from "./session-description-handler"; +import { SessionDescriptionHandlerModifier, SessionDescriptionHandlerOptions } from "./session-description-handler.js"; /** * Options for {@link Invitation.accept}. diff --git a/src/api/invitation-progress-options.ts b/src/api/invitation-progress-options.ts index d4c8e6e6d..2540bdf2b 100644 --- a/src/api/invitation-progress-options.ts +++ b/src/api/invitation-progress-options.ts @@ -1,4 +1,4 @@ -import { SessionDescriptionHandlerModifier, SessionDescriptionHandlerOptions } from "./session-description-handler"; +import { SessionDescriptionHandlerModifier, SessionDescriptionHandlerOptions } from "./session-description-handler.js"; /** * Options for {@link Invitation.progress}. diff --git a/src/api/invitation.ts b/src/api/invitation.ts index f7ec3847d..943406c15 100644 --- a/src/api/invitation.ts +++ b/src/api/invitation.ts @@ -1,30 +1,28 @@ -import { - Body, - fromBodyLegacy, - getBody, - Grammar, - IncomingInviteRequest, - IncomingPrackRequest, - IncomingRequestMessage, - InviteUserAgentServer, - Logger, - NameAddrHeader, - OutgoingResponse, - OutgoingResponseWithSession, - SignalingState, - Timers, - TransactionStateError -} from "../core"; -import { getReasonPhrase } from "../core/messages/utils"; -import { Cancel } from "./cancel"; -import { ContentTypeUnsupportedError, SessionDescriptionHandlerError, SessionTerminatedError } from "./exceptions"; -import { InvitationAcceptOptions } from "./invitation-accept-options"; -import { InvitationProgressOptions } from "./invitation-progress-options"; -import { InvitationRejectOptions } from "./invitation-reject-options"; -import { Session } from "./session"; -import { SessionState } from "./session-state"; -import { UserAgent } from "./user-agent"; -import { SIPExtension } from "./user-agent-options"; +import { Grammar } from "../grammar/grammar.js"; +import { NameAddrHeader } from "../grammar/name-addr-header.js"; +import { Body, fromBodyLegacy, getBody } from "../core/messages/body.js"; +import { IncomingInviteRequest } from "../core/messages/methods/invite.js"; +import { IncomingPrackRequest } from "../core/messages/methods/prack.js"; +import { IncomingRequestMessage } from "../core/messages/incoming-request-message.js"; +import { InviteUserAgentServer } from "../core/user-agents/invite-user-agent-server.js"; +import { Logger } from "../core/log/logger.js"; +import { OutgoingResponse } from "../core/messages/outgoing-response.js"; +import { OutgoingResponseWithSession } from "../core/messages/methods/invite.js"; +import { SignalingState } from "../core/session/session.js"; +import { Timers } from "../core/timers.js"; +import { TransactionStateError } from "../core/exceptions/transaction-state-error.js"; +import { getReasonPhrase } from "../core/messages/utils.js"; +import { Cancel } from "./cancel.js"; +import { ContentTypeUnsupportedError } from "./exceptions/content-type-unsupported.js"; +import { SessionDescriptionHandlerError } from "./exceptions/session-description-handler.js"; +import { SessionTerminatedError } from "./exceptions/session-terminated.js"; +import { InvitationAcceptOptions } from "./invitation-accept-options.js"; +import { InvitationProgressOptions } from "./invitation-progress-options.js"; +import { InvitationRejectOptions } from "./invitation-reject-options.js"; +import { Session } from "./session.js"; +import { SessionState } from "./session-state.js"; +import { UserAgent } from "./user-agent.js"; +import { SIPExtension } from "./user-agent-options.js"; type ResolveFunction = () => void; type RejectFunction = (reason: Error) => void; diff --git a/src/api/inviter-invite-options.ts b/src/api/inviter-invite-options.ts index 39739953d..1f37cbbd3 100644 --- a/src/api/inviter-invite-options.ts +++ b/src/api/inviter-invite-options.ts @@ -1,5 +1,5 @@ -import { OutgoingRequestDelegate, RequestOptions } from "../core"; -import { SessionDescriptionHandlerModifier, SessionDescriptionHandlerOptions } from "./session-description-handler"; +import { OutgoingRequestDelegate, RequestOptions } from "../core/messages/outgoing-request.js"; +import { SessionDescriptionHandlerModifier, SessionDescriptionHandlerOptions } from "./session-description-handler.js"; /** * Options for {@link Inviter.invite}. diff --git a/src/api/inviter-options.ts b/src/api/inviter-options.ts index 9137d75a5..00daf472a 100644 --- a/src/api/inviter-options.ts +++ b/src/api/inviter-options.ts @@ -1,7 +1,6 @@ -import { URI } from "../core"; -import { SessionDescriptionHandlerModifier } from "./session-description-handler"; -import { SessionDescriptionHandlerOptions } from "./session-description-handler"; -import { SessionOptions } from "./session-options"; +import { URI } from "../grammar/uri.js"; +import { SessionDescriptionHandlerModifier, SessionDescriptionHandlerOptions } from "./session-description-handler.js"; +import { SessionOptions } from "./session-options.js"; /** * Options for {@link Inviter} constructor. diff --git a/src/api/inviter.ts b/src/api/inviter.ts index 93be4b331..a9e3bdcef 100644 --- a/src/api/inviter.ts +++ b/src/api/inviter.ts @@ -1,29 +1,27 @@ +import { Grammar } from "../grammar/grammar.js"; +import { NameAddrHeader } from "../grammar/name-addr-header.js"; +import { URI } from "../grammar/uri.js"; +import { C } from "../core/messages/methods/constants.js"; import { AckableIncomingResponseWithSession, - Body, - C, - Grammar, - IncomingResponse, - Logger, - NameAddrHeader, - OutgoingInviteRequest, - OutgoingRequestMessage, - OutgoingRequestMessageOptions, PrackableIncomingResponseWithSession, - RequestOptions, - Session as SessionDialog, - SignalingState, - URI -} from "../core"; -import { getReasonPhrase, newTag } from "../core/messages/utils"; -import { InviterCancelOptions } from "./inviter-cancel-options"; -import { InviterInviteOptions } from "./inviter-invite-options"; -import { InviterOptions } from "./inviter-options"; -import { Session } from "./session"; -import { BodyAndContentType, SessionDescriptionHandler } from "./session-description-handler"; -import { SessionState } from "./session-state"; -import { UserAgent } from "./user-agent"; -import { SIPExtension } from "./user-agent-options"; + OutgoingInviteRequest +} from "../core/messages/methods/invite.js"; +import { Body } from "../core/messages/body.js"; +import { IncomingResponse } from "../core/messages/incoming-response.js"; +import { Logger } from "../core/log/logger.js"; +import { OutgoingRequestMessage, OutgoingRequestMessageOptions } from "../core/messages/outgoing-request-message.js"; +import { RequestOptions } from "../core/messages/outgoing-request.js"; +import { Session as SessionDialog, SignalingState } from "../core/session/session.js"; +import { getReasonPhrase, newTag } from "../core/messages/utils.js"; +import { InviterCancelOptions } from "./inviter-cancel-options.js"; +import { InviterInviteOptions } from "./inviter-invite-options.js"; +import { InviterOptions } from "./inviter-options.js"; +import { Session } from "./session.js"; +import { BodyAndContentType, SessionDescriptionHandler } from "./session-description-handler.js"; +import { SessionState } from "./session-state.js"; +import { UserAgent } from "./user-agent.js"; +import { SIPExtension } from "./user-agent-options.js"; /** * An inviter offers to establish a {@link Session} (outgoing INVITE). diff --git a/src/api/message.ts b/src/api/message.ts index ca1ac1a7b..72c902c18 100644 --- a/src/api/message.ts +++ b/src/api/message.ts @@ -1,4 +1,6 @@ -import { IncomingMessageRequest, IncomingRequestMessage, ResponseOptions } from "../core"; +import { IncomingMessageRequest } from "../core/messages/methods/message.js"; +import { IncomingRequestMessage } from "../core/messages/incoming-request-message.js"; +import { ResponseOptions } from "../core/messages/outgoing-response.js"; /** * A received message (incoming MESSAGE). diff --git a/src/api/messager-message-options.ts b/src/api/messager-message-options.ts index 62d9141f6..f598a379d 100644 --- a/src/api/messager-message-options.ts +++ b/src/api/messager-message-options.ts @@ -1,4 +1,4 @@ -import { OutgoingRequestDelegate, RequestOptions } from "../core"; +import { OutgoingRequestDelegate, RequestOptions } from "../core/messages/outgoing-request.js"; /** * Options for {@link Messager.message}. diff --git a/src/api/messager-options.ts b/src/api/messager-options.ts index a36a96641..2279f71d3 100644 --- a/src/api/messager-options.ts +++ b/src/api/messager-options.ts @@ -1,4 +1,4 @@ -import { URI } from "../core"; +import { URI } from "../grammar/uri.js"; /** * Options for {@link Messager} constructor. diff --git a/src/api/messager.ts b/src/api/messager.ts index 8f8c5acbf..c6d104266 100644 --- a/src/api/messager.ts +++ b/src/api/messager.ts @@ -1,7 +1,12 @@ -import { Body, C, Grammar, Logger, OutgoingRequestMessage, URI } from "../core"; -import { MessagerMessageOptions } from "./messager-message-options"; -import { MessagerOptions } from "./messager-options"; -import { UserAgent } from "./user-agent"; +import { Grammar } from "../grammar/grammar.js"; +import { URI } from "../grammar/uri.js"; +import { Body } from "../core/messages/body.js"; +import { C } from "../core/messages/methods/constants.js"; +import { Logger } from "../core/log/logger.js"; +import { OutgoingRequestMessage } from "../core/messages/outgoing-request-message.js"; +import { MessagerMessageOptions } from "./messager-message-options.js"; +import { MessagerOptions } from "./messager-options.js"; +import { UserAgent } from "./user-agent.js"; /** * A messager sends a {@link Message} (outgoing MESSAGE). diff --git a/src/api/notification.ts b/src/api/notification.ts index ea8a07393..9d438cde6 100644 --- a/src/api/notification.ts +++ b/src/api/notification.ts @@ -1,4 +1,6 @@ -import { IncomingNotifyRequest, IncomingRequestMessage, ResponseOptions } from "../core"; +import { IncomingNotifyRequest } from "../core/messages/methods/notify.js"; +import { IncomingRequestMessage } from "../core/messages/incoming-request-message.js"; +import { ResponseOptions } from "../core/messages/outgoing-response.js"; /** * A notification of an event (incoming NOTIFY). diff --git a/src/api/publisher-options.ts b/src/api/publisher-options.ts index 2b583ecff..2cbc3988f 100644 --- a/src/api/publisher-options.ts +++ b/src/api/publisher-options.ts @@ -1,4 +1,4 @@ -import { URI } from "../core"; +import { URI } from "../grammar/uri.js"; /** * Options for {@link Publisher} constructor. diff --git a/src/api/publisher.ts b/src/api/publisher.ts index 17dc9b668..ac658e3b1 100644 --- a/src/api/publisher.ts +++ b/src/api/publisher.ts @@ -1,20 +1,17 @@ -import { - Body, - C, - fromBodyLegacy, - IncomingResponseMessage, - Logger, - OutgoingPublishRequest, - OutgoingRequestMessage, - URI -} from "../core"; -import { Emitter, EmitterImpl } from "./emitter"; -import { PublisherOptions } from "./publisher-options"; -import { PublisherPublishOptions } from "./publisher-publish-options"; -import { PublisherState } from "./publisher-state"; -import { PublisherUnpublishOptions } from "./publisher-unpublish-options"; -import { BodyAndContentType } from "./session-description-handler"; -import { UserAgent } from "./user-agent"; +import { URI } from "../grammar/uri.js"; +import { Body, fromBodyLegacy } from "../core/messages/body.js"; +import { C } from "../core/messages/methods/constants.js"; +import { Logger } from "../core/log/logger.js"; +import { OutgoingRequestMessage } from "../core/messages/outgoing-request-message.js"; +import { IncomingResponseMessage } from "../core/messages/incoming-response-message.js"; +import { OutgoingPublishRequest } from "../core/messages/methods/publish.js"; +import { Emitter, EmitterImpl } from "./emitter.js"; +import { PublisherOptions } from "./publisher-options.js"; +import { PublisherPublishOptions } from "./publisher-publish-options.js"; +import { PublisherState } from "./publisher-state.js"; +import { PublisherUnpublishOptions } from "./publisher-unpublish-options.js"; +import { BodyAndContentType } from "./session-description-handler.js"; +import { UserAgent } from "./user-agent.js"; /** * A publisher publishes a publication (outgoing PUBLISH). diff --git a/src/api/referral.ts b/src/api/referral.ts index b4b698001..ac191b4cf 100644 --- a/src/api/referral.ts +++ b/src/api/referral.ts @@ -1,7 +1,10 @@ -import { IncomingReferRequest, IncomingRequestMessage, NameAddrHeader, ResponseOptions } from "../core"; -import { Inviter } from "./inviter"; -import { InviterOptions } from "./inviter-options"; -import { Session } from "./session"; +import { NameAddrHeader } from "../grammar/name-addr-header.js"; +import { IncomingReferRequest } from "../core/messages/methods/refer.js"; +import { IncomingRequestMessage } from "../core/messages/incoming-request-message.js"; +import { ResponseOptions } from "../core/messages/outgoing-response.js"; +import { Inviter } from "./inviter.js"; +import { InviterOptions } from "./inviter-options.js"; +import { Session } from "./session.js"; /** * A request to establish a {@link Session} elsewhere (incoming REFER). diff --git a/src/api/registerer-options.ts b/src/api/registerer-options.ts index 0369def4c..efa2afdbb 100644 --- a/src/api/registerer-options.ts +++ b/src/api/registerer-options.ts @@ -1,4 +1,4 @@ -import { URI } from "../core"; +import { URI } from "../grammar/uri.js"; /** * Options for {@link Registerer} constructor. diff --git a/src/api/registerer-register-options.ts b/src/api/registerer-register-options.ts index f73a19d8f..148f88d0a 100644 --- a/src/api/registerer-register-options.ts +++ b/src/api/registerer-register-options.ts @@ -1,4 +1,4 @@ -import { OutgoingRequestDelegate, RequestOptions } from "../core"; +import { OutgoingRequestDelegate, RequestOptions } from "../core/messages/outgoing-request.js"; /** * Options for {@link Registerer.register}. diff --git a/src/api/registerer-unregister-options.ts b/src/api/registerer-unregister-options.ts index b28e5eab0..107103f5a 100644 --- a/src/api/registerer-unregister-options.ts +++ b/src/api/registerer-unregister-options.ts @@ -1,4 +1,4 @@ -import { OutgoingRequestDelegate, RequestOptions } from "../core"; +import { OutgoingRequestDelegate, RequestOptions } from "../core/messages/outgoing-request.js"; /** * Options for {@link Registerer.unregister}. diff --git a/src/api/registerer.ts b/src/api/registerer.ts index d16426a3b..c3790ec27 100644 --- a/src/api/registerer.ts +++ b/src/api/registerer.ts @@ -1,20 +1,17 @@ -import { - C, - Grammar, - Logger, - OutgoingRegisterRequest, - OutgoingRequestMessage, - URI, - equivalentURI, - NameAddrHeader -} from "../core"; -import { Emitter, EmitterImpl } from "./emitter"; -import { RequestPendingError } from "./exceptions"; -import { RegistererOptions } from "./registerer-options"; -import { RegistererRegisterOptions } from "./registerer-register-options"; -import { RegistererState } from "./registerer-state"; -import { RegistererUnregisterOptions } from "./registerer-unregister-options"; -import { UserAgent } from "./user-agent"; +import { Grammar } from "../grammar/grammar.js"; +import { NameAddrHeader } from "../grammar/name-addr-header.js"; +import { equivalentURI, URI } from "../grammar/uri.js"; +import { Logger } from "../core/log/logger.js"; +import { C } from "../core/messages/methods/constants.js"; +import { OutgoingRegisterRequest } from "../core/messages/methods/register.js"; +import { OutgoingRequestMessage } from "../core/messages/outgoing-request-message.js"; +import { Emitter, EmitterImpl } from "./emitter.js"; +import { RequestPendingError } from "./exceptions/request-pending.js"; +import { RegistererOptions } from "./registerer-options.js"; +import { RegistererRegisterOptions } from "./registerer-register-options.js"; +import { RegistererState } from "./registerer-state.js"; +import { RegistererUnregisterOptions } from "./registerer-unregister-options.js"; +import { UserAgent } from "./user-agent.js"; /** * A registerer registers a contact for an address of record (outgoing REGISTER). diff --git a/src/api/session-bye-options.ts b/src/api/session-bye-options.ts index 86bb02312..313c1bbaf 100644 --- a/src/api/session-bye-options.ts +++ b/src/api/session-bye-options.ts @@ -1,4 +1,4 @@ -import { OutgoingRequestDelegate, RequestOptions } from "../core"; +import { OutgoingRequestDelegate, RequestOptions } from "../core/messages/outgoing-request.js"; /** * Options for {@link Session.bye}. diff --git a/src/api/session-delegate.ts b/src/api/session-delegate.ts index 0b78b1e99..e8b97ebaa 100644 --- a/src/api/session-delegate.ts +++ b/src/api/session-delegate.ts @@ -1,12 +1,12 @@ -import { IncomingRequestMessage } from "../core"; -import { Ack } from "./ack"; -import { Bye } from "./bye"; -import { Cancel } from "./cancel"; -import { Info } from "./info"; -import { Message } from "./message"; -import { Notification } from "./notification"; -import { Referral } from "./referral"; -import { SessionDescriptionHandler } from "./session-description-handler"; +import { IncomingRequestMessage } from "../core/messages/incoming-request-message.js"; +import { Ack } from "./ack.js"; +import { Bye } from "./bye.js"; +import { Cancel } from "./cancel.js"; +import { Info } from "./info.js"; +import { Message } from "./message.js"; +import { Notification } from "./notification.js"; +import { Referral } from "./referral.js"; +import { SessionDescriptionHandler } from "./session-description-handler.js"; /** * Delegate for {@link Session}. diff --git a/src/api/session-description-handler-factory.ts b/src/api/session-description-handler-factory.ts index a815507bc..9c2c18ce6 100644 --- a/src/api/session-description-handler-factory.ts +++ b/src/api/session-description-handler-factory.ts @@ -1,5 +1,5 @@ -import { Session } from "./session"; -import { SessionDescriptionHandler } from "./session-description-handler"; +import { Session } from "./session.js"; +import { SessionDescriptionHandler } from "./session-description-handler.js"; /** * Factory for {@link SessionDescriptionHandler}. diff --git a/src/api/session-info-options.ts b/src/api/session-info-options.ts index 38e64db50..2c7e8d296 100644 --- a/src/api/session-info-options.ts +++ b/src/api/session-info-options.ts @@ -1,4 +1,4 @@ -import { OutgoingRequestDelegate, RequestOptions } from "../core"; +import { OutgoingRequestDelegate, RequestOptions } from "../core/messages/outgoing-request.js"; /** * Options for {@link Session.info}. diff --git a/src/api/session-invite-options.ts b/src/api/session-invite-options.ts index 5f02b06fe..f6c3317b3 100644 --- a/src/api/session-invite-options.ts +++ b/src/api/session-invite-options.ts @@ -1,5 +1,5 @@ -import { OutgoingRequestDelegate, RequestOptions } from "../core"; -import { SessionDescriptionHandlerModifier, SessionDescriptionHandlerOptions } from "./session-description-handler"; +import { OutgoingRequestDelegate, RequestOptions } from "../core/messages/outgoing-request.js"; +import { SessionDescriptionHandlerModifier, SessionDescriptionHandlerOptions } from "./session-description-handler.js"; /** * Options for {@link Session.invite}. diff --git a/src/api/session-message-options.ts b/src/api/session-message-options.ts index bf6320e11..9b45b5676 100644 --- a/src/api/session-message-options.ts +++ b/src/api/session-message-options.ts @@ -1,4 +1,4 @@ -import { OutgoingRequestDelegate, RequestOptions } from "../core"; +import { OutgoingRequestDelegate, RequestOptions } from "../core/messages/outgoing-request.js"; /** * Options for {@link Session.message}. diff --git a/src/api/session-options.ts b/src/api/session-options.ts index 9ca93d0de..6153faf78 100644 --- a/src/api/session-options.ts +++ b/src/api/session-options.ts @@ -1,4 +1,4 @@ -import { SessionDelegate } from "./session-delegate"; +import { SessionDelegate } from "./session-delegate.js"; /** * Options for {@link Session} constructor. * @public diff --git a/src/api/session-refer-options.ts b/src/api/session-refer-options.ts index e3a7a765d..314348c87 100644 --- a/src/api/session-refer-options.ts +++ b/src/api/session-refer-options.ts @@ -1,5 +1,5 @@ -import { OutgoingRequestDelegate, RequestOptions } from "../core"; -import { Notification } from "./notification"; +import { OutgoingRequestDelegate, RequestOptions } from "../core/messages/outgoing-request.js"; +import { Notification } from "./notification.js"; /** * Options for {@link Session.refer}. diff --git a/src/api/session.ts b/src/api/session.ts index 6f3d81bd6..b8eb45753 100644 --- a/src/api/session.ts +++ b/src/api/session.ts @@ -1,59 +1,55 @@ +import { Grammar } from "../grammar/grammar.js"; +import { NameAddrHeader } from "../grammar/name-addr-header.js"; +import { URI } from "../grammar/uri.js"; +import { Body, fromBodyLegacy, getBody } from "../core/messages/body.js"; +import { Logger } from "../core/log/logger.js"; +import { AckableIncomingResponseWithSession } from "../core/messages/methods/invite.js"; +import { IncomingAckRequest } from "../core/messages/methods/ack.js"; +import { IncomingByeRequest, OutgoingByeRequest } from "../core/messages/methods/bye.js"; +import { IncomingInfoRequest, OutgoingInfoRequest } from "../core/messages/methods/info.js"; import { - AckableIncomingResponseWithSession, - Body, - fromBodyLegacy, - getBody, - Grammar, - IncomingAckRequest, - IncomingByeRequest, - IncomingInfoRequest, IncomingInviteRequest, - IncomingMessageRequest, - IncomingNotifyRequest, - IncomingPrackRequest, - IncomingReferRequest, - Logger, - NameAddrHeader, - OutgoingByeRequest, - OutgoingInfoRequest, OutgoingInviteRequest, - OutgoingInviteRequestDelegate, - OutgoingMessageRequest, - OutgoingReferRequest, - OutgoingRequestDelegate, - RequestOptions, + OutgoingInviteRequestDelegate +} from "../core/messages/methods/invite.js"; +import { IncomingMessageRequest, OutgoingMessageRequest } from "../core/messages/methods/message.js"; +import { IncomingNotifyRequest } from "../core/messages/methods/notify.js"; +import { IncomingPrackRequest } from "../core/messages/methods/prack.js"; +import { IncomingReferRequest, OutgoingReferRequest } from "../core/messages/methods/refer.js"; +import { OutgoingRequestDelegate, RequestOptions } from "../core/messages/outgoing-request.js"; +import { Session as SessionDialog, SessionState as SessionDialogState, - SignalingState, - URI -} from "../core"; -import { getReasonPhrase } from "../core/messages/utils"; -import { AllowedMethods } from "../core/user-agent-core/allowed-methods"; -import { Ack } from "./ack"; -import { Bye } from "./bye"; -import { Emitter, EmitterImpl } from "./emitter"; -import { ContentTypeUnsupportedError, RequestPendingError } from "./exceptions"; -import { Info } from "./info"; -import { Inviter } from "./inviter"; -import { InviterOptions } from "./inviter-options"; -import { Message } from "./message"; -import { Notification } from "./notification"; -import { Referral } from "./referral"; -import { SessionByeOptions } from "./session-bye-options"; -import { SessionDelegate } from "./session-delegate"; + SignalingState +} from "../core/session/session.js"; +import { getReasonPhrase } from "../core/messages/utils.js"; +import { AllowedMethods } from "../core/user-agent-core/allowed-methods.js"; +import { Ack } from "./ack.js"; +import { Bye } from "./bye.js"; +import { Emitter, EmitterImpl } from "./emitter.js"; +import { ContentTypeUnsupportedError } from "./exceptions/content-type-unsupported.js"; +import { RequestPendingError } from "./exceptions/request-pending.js"; +import { Info } from "./info.js"; +import { Inviter } from "./inviter.js"; +import { InviterOptions } from "./inviter-options.js"; +import { Message } from "./message.js"; +import { Notification } from "./notification.js"; +import { Referral } from "./referral.js"; +import { SessionByeOptions } from "./session-bye-options.js"; +import { SessionDelegate } from "./session-delegate.js"; import { SessionDescriptionHandler, SessionDescriptionHandlerModifier, SessionDescriptionHandlerOptions -} from "./session-description-handler"; -import { SessionDescriptionHandlerFactory } from "./session-description-handler-factory"; -import { SessionInfoOptions } from "./session-info-options"; -import { SessionInviteOptions } from "./session-invite-options"; -import { SessionMessageOptions } from "./session-message-options"; -import { SessionOptions } from "./session-options"; -import { SessionReferOptions } from "./session-refer-options"; -import { SessionState } from "./session-state"; -import { UserAgent } from "./user-agent"; +} from "./session-description-handler.js"; +import { SessionDescriptionHandlerFactory } from "./session-description-handler-factory.js"; +import { SessionInfoOptions } from "./session-info-options.js"; +import { SessionInviteOptions } from "./session-invite-options.js"; +import { SessionMessageOptions } from "./session-message-options.js"; +import { SessionOptions } from "./session-options.js"; +import { SessionReferOptions } from "./session-refer-options.js"; +import { SessionState } from "./session-state.js"; +import { UserAgent } from "./user-agent.js"; /** * A session provides real time communication between one or more participants. diff --git a/src/api/subscriber-options.ts b/src/api/subscriber-options.ts index 3f98f4196..e6ddc96a5 100644 --- a/src/api/subscriber-options.ts +++ b/src/api/subscriber-options.ts @@ -1,4 +1,4 @@ -import { SubscriptionOptions } from "./subscription-options"; +import { SubscriptionOptions } from "./subscription-options.js"; /** * Options for {@link Subscriber} constructor. diff --git a/src/api/subscriber.ts b/src/api/subscriber.ts index 6481f3a7c..236576af7 100644 --- a/src/api/subscriber.ts +++ b/src/api/subscriber.ts @@ -1,27 +1,26 @@ +import { URI } from "../grammar/uri.js"; +import { fromBodyLegacy } from "../core/messages/body.js"; +import { Logger } from "../core/log/logger.js"; +import { C } from "../core/messages/methods/constants.js"; +import { IncomingNotifyRequest } from "../core/messages/methods/notify.js"; +import { IncomingRequestWithSubscription, OutgoingSubscribeRequest } from "../core/messages/methods/subscribe.js"; +import { IncomingResponse } from "../core/messages/incoming-response.js"; +import { OutgoingRequestMessage } from "../core/messages/outgoing-request-message.js"; +import { RequestOptions } from "../core/messages/outgoing-request.js"; import { - C, - fromBodyLegacy, - IncomingNotifyRequest, - IncomingRequestWithSubscription, - IncomingResponse, - Logger, - OutgoingRequestMessage, - OutgoingSubscribeRequest, - RequestOptions, Subscription as SubscriptionDialog, - SubscriptionState as SubscriptionDialogState, - URI, - UserAgentCore -} from "../core"; -import { AllowedMethods } from "../core/user-agent-core/allowed-methods"; -import { Notification } from "./notification"; -import { BodyAndContentType } from "./session-description-handler"; -import { SubscriberOptions } from "./subscriber-options"; -import { SubscriberSubscribeOptions } from "./subscriber-subscribe-options"; -import { Subscription } from "./subscription"; -import { SubscriptionState } from "./subscription-state"; -import { SubscriptionUnsubscribeOptions } from "./subscription-unsubscribe-options"; -import { UserAgent } from "./user-agent"; + SubscriptionState as SubscriptionDialogState +} from "../core/subscription/subscription.js"; +import { UserAgentCore } from "../core/user-agent-core/user-agent-core.js"; +import { AllowedMethods } from "../core/user-agent-core/allowed-methods.js"; +import { Notification } from "./notification.js"; +import { BodyAndContentType } from "./session-description-handler.js"; +import { SubscriberOptions } from "./subscriber-options.js"; +import { SubscriberSubscribeOptions } from "./subscriber-subscribe-options.js"; +import { Subscription } from "./subscription.js"; +import { SubscriptionState } from "./subscription-state.js"; +import { SubscriptionUnsubscribeOptions } from "./subscription-unsubscribe-options.js"; +import { UserAgent } from "./user-agent.js"; /** * A subscriber establishes a {@link Subscription} (outgoing SUBSCRIBE). diff --git a/src/api/subscription-delegate.ts b/src/api/subscription-delegate.ts index 312e17bab..f729dba78 100644 --- a/src/api/subscription-delegate.ts +++ b/src/api/subscription-delegate.ts @@ -1,4 +1,4 @@ -import { Notification } from "./notification"; +import { Notification } from "./notification.js"; /** * Delegate for {@link Subscription}. diff --git a/src/api/subscription-options.ts b/src/api/subscription-options.ts index 1ea282b0f..ca89ae504 100644 --- a/src/api/subscription-options.ts +++ b/src/api/subscription-options.ts @@ -1,4 +1,4 @@ -import { SubscriptionDelegate } from "./subscription-delegate"; +import { SubscriptionDelegate } from "./subscription-delegate.js"; /** * Options for {@link Subscription } constructor. * @public diff --git a/src/api/subscription.ts b/src/api/subscription.ts index 893539f83..eb7e86816 100644 --- a/src/api/subscription.ts +++ b/src/api/subscription.ts @@ -1,11 +1,12 @@ -import { Logger, Subscription as SubscriptionDialog } from "../core"; -import { Emitter, EmitterImpl } from "./emitter"; -import { SubscriptionDelegate } from "./subscription-delegate"; -import { SubscriptionOptions } from "./subscription-options"; -import { SubscriptionState } from "./subscription-state"; -import { SubscriptionSubscribeOptions } from "./subscription-subscribe-options"; -import { SubscriptionUnsubscribeOptions } from "./subscription-unsubscribe-options"; -import { UserAgent } from "./user-agent"; +import { Logger } from "../core/log/logger.js"; +import { Subscription as SubscriptionDialog } from "../core/subscription/subscription.js"; +import { Emitter, EmitterImpl } from "./emitter.js"; +import { SubscriptionDelegate } from "./subscription-delegate.js"; +import { SubscriptionOptions } from "./subscription-options.js"; +import { SubscriptionState } from "./subscription-state.js"; +import { SubscriptionSubscribeOptions } from "./subscription-subscribe-options.js"; +import { SubscriptionUnsubscribeOptions } from "./subscription-unsubscribe-options.js"; +import { UserAgent } from "./user-agent.js"; /** * A subscription provides {@link Notification} of events. diff --git a/src/api/transport.ts b/src/api/transport.ts index 30f3ad94a..d07bdd577 100644 --- a/src/api/transport.ts +++ b/src/api/transport.ts @@ -1,6 +1,6 @@ -import { Transport as CoreTransport } from "../core"; -import { Emitter } from "./emitter"; -import { TransportState } from "./transport-state"; +import { Transport as CoreTransport } from "../core/transport.js"; +import { Emitter } from "./emitter.js"; +import { TransportState } from "./transport-state.js"; /** * Transport layer interface expected by the `UserAgent`. diff --git a/src/api/user-agent-delegate.ts b/src/api/user-agent-delegate.ts index 85cfe10fb..2ab3f9272 100644 --- a/src/api/user-agent-delegate.ts +++ b/src/api/user-agent-delegate.ts @@ -1,9 +1,11 @@ -import { IncomingReferRequest, IncomingRegisterRequest, IncomingSubscribeRequest } from "../core"; -import { Invitation } from "./invitation"; -import { Message } from "./message"; -import { Notification } from "./notification"; -import { Referral } from "./referral"; -import { Subscription } from "./subscription"; +import { IncomingReferRequest } from "../core/messages/methods/refer.js"; +import { IncomingRegisterRequest } from "../core/messages/methods/register.js"; +import { IncomingSubscribeRequest } from "../core/messages/methods/subscribe.js"; +import { Invitation } from "./invitation.js"; +import { Message } from "./message.js"; +import { Notification } from "./notification.js"; +import { Referral } from "./referral.js"; +import { Subscription } from "./subscription.js"; /** * Delegate for {@link UserAgent}. diff --git a/src/api/user-agent-options.ts b/src/api/user-agent-options.ts index 0c6c9dac8..82e9aca8f 100644 --- a/src/api/user-agent-options.ts +++ b/src/api/user-agent-options.ts @@ -1,7 +1,8 @@ -import { Logger, URI } from "../core"; -import { SessionDescriptionHandlerFactory } from "./session-description-handler-factory"; -import { Transport } from "./transport"; -import { UserAgentDelegate } from "./user-agent-delegate"; +import { URI } from "../grammar/uri.js"; +import { Logger } from "../core/log/logger.js"; +import { SessionDescriptionHandlerFactory } from "./session-description-handler-factory.js"; +import { Transport } from "./transport.js"; +import { UserAgentDelegate } from "./user-agent-delegate.js"; /** * Log level. diff --git a/src/api/user-agent.ts b/src/api/user-agent.ts index 64d09a9c4..f7ce7cfbe 100644 --- a/src/api/user-agent.ts +++ b/src/api/user-agent.ts @@ -1,43 +1,41 @@ -import { - Contact, - DigestAuthentication, - Grammar, - IncomingInviteRequest, - IncomingMessageRequest, - IncomingNotifyRequest, - IncomingReferRequest, - IncomingRegisterRequest, - IncomingRequestMessage, - IncomingResponseMessage, - IncomingSubscribeRequest, - Levels, - Logger, - LoggerFactory, - Parser, - TransportError, - URI, - UserAgentCore, - UserAgentCoreConfiguration, - UserAgentCoreDelegate -} from "../core"; -import { createRandomToken, utf8Length } from "../core/messages/utils"; -import { defaultSessionDescriptionHandlerFactory } from "../platform/web/session-description-handler"; -import { Transport as WebTransport } from "../platform/web/transport"; -import { LIBRARY_VERSION } from "../version"; -import { Emitter, EmitterImpl } from "./emitter"; -import { Invitation } from "./invitation"; -import { Inviter } from "./inviter"; -import { InviterOptions } from "./inviter-options"; -import { Message } from "./message"; -import { Notification } from "./notification"; -import { Publisher } from "./publisher"; -import { Registerer } from "./registerer"; -import { Session } from "./session"; -import { Subscription } from "./subscription"; -import { Transport } from "./transport"; -import { UserAgentDelegate } from "./user-agent-delegate"; -import { SIPExtension, UserAgentOptions, UserAgentRegisteredOptionTags } from "./user-agent-options"; -import { UserAgentState } from "./user-agent-state"; +import { Grammar } from "../grammar/grammar.js"; +import { URI } from "../grammar/uri.js"; +import { Contact } from "../core/user-agent-core/user-agent-core-configuration.js"; +import { DigestAuthentication } from "../core/messages/digest-authentication.js"; +import { IncomingInviteRequest } from "../core/messages/methods/invite.js"; +import { IncomingMessageRequest } from "../core/messages/methods/message.js"; +import { IncomingNotifyRequest } from "../core/messages/methods/notify.js"; +import { IncomingReferRequest } from "../core/messages/methods/refer.js"; +import { IncomingRegisterRequest } from "../core/messages/methods/register.js"; +import { IncomingRequestMessage } from "../core/messages/incoming-request-message.js"; +import { IncomingResponseMessage } from "../core/messages/incoming-response-message.js"; +import { IncomingSubscribeRequest } from "../core/messages/methods/subscribe.js"; +import { Levels } from "../core/log/levels.js"; +import { Logger } from "../core/log/logger.js"; +import { LoggerFactory } from "../core/log/logger-factory.js"; +import { Parser } from "../core/messages/parser.js"; +import { TransportError } from "../core/exceptions/transport-error.js"; +import { UserAgentCore } from "../core/user-agent-core/user-agent-core.js"; +import { UserAgentCoreConfiguration } from "../core/user-agent-core/user-agent-core-configuration.js"; +import { UserAgentCoreDelegate } from "../core/user-agent-core/user-agent-core-delegate.js"; +import { createRandomToken, utf8Length } from "../core/messages/utils.js"; +import { defaultSessionDescriptionHandlerFactory } from "../platform/web/session-description-handler/session-description-handler-factory-default.js"; +import { Transport as WebTransport } from "../platform/web/transport/transport.js"; +import { LIBRARY_VERSION } from "../version.js"; +import { Emitter, EmitterImpl } from "./emitter.js"; +import { Invitation } from "./invitation.js"; +import { Inviter } from "./inviter.js"; +import { InviterOptions } from "./inviter-options.js"; +import { Message } from "./message.js"; +import { Notification } from "./notification.js"; +import { Publisher } from "./publisher.js"; +import { Registerer } from "./registerer.js"; +import { Session } from "./session.js"; +import { Subscription } from "./subscription.js"; +import { Transport } from "./transport.js"; +import { UserAgentDelegate } from "./user-agent-delegate.js"; +import { SIPExtension, UserAgentOptions, UserAgentRegisteredOptionTags } from "./user-agent-options.js"; +import { UserAgentState } from "./user-agent-state.js"; // eslint-disable-next-line @typescript-eslint/no-explicit-any declare const chrome: any; diff --git a/src/core/dialogs/dialog-state.ts b/src/core/dialogs/dialog-state.ts index dd98dc16c..bdf8e6ef7 100644 --- a/src/core/dialogs/dialog-state.ts +++ b/src/core/dialogs/dialog-state.ts @@ -1,4 +1,4 @@ -import { URI } from "../../grammar"; +import { URI } from "../../grammar/uri.js"; /** * Dialog state. diff --git a/src/core/dialogs/dialog.ts b/src/core/dialogs/dialog.ts index 2eb6b9d0b..935475b5a 100644 --- a/src/core/dialogs/dialog.ts +++ b/src/core/dialogs/dialog.ts @@ -1,14 +1,12 @@ -import { - Body, - C, - IncomingRequestMessage, - IncomingResponseMessage, - NameAddrHeader, - OutgoingRequestMessage, - URI -} from "../messages"; -import { UserAgentCore } from "../user-agent-core"; -import { DialogState } from "./dialog-state"; +import { NameAddrHeader } from "../../grammar/name-addr-header.js"; +import { URI } from "../../grammar/uri.js"; +import { Body } from "../messages/body.js"; +import { C } from "../messages/methods/constants.js"; +import { IncomingRequestMessage } from "../messages/incoming-request-message.js"; +import { IncomingResponseMessage } from "../messages/incoming-response-message.js"; +import { OutgoingRequestMessage } from "../messages/outgoing-request-message.js"; +import { UserAgentCore } from "../user-agent-core/user-agent-core.js"; +import { DialogState } from "./dialog-state.js"; /** * Dialog. diff --git a/src/core/dialogs/index.ts b/src/core/dialogs/index.ts index 7cacf07f2..4efbeb7b9 100644 --- a/src/core/dialogs/index.ts +++ b/src/core/dialogs/index.ts @@ -1,4 +1,4 @@ -export * from "./dialog"; -export * from "./dialog-state"; -export * from "./session-dialog"; -export * from "./subscription-dialog"; +export * from "./dialog.js"; +export * from "./dialog-state.js"; +export * from "./session-dialog.js"; +export * from "./subscription-dialog.js"; diff --git a/src/core/dialogs/session-dialog.ts b/src/core/dialogs/session-dialog.ts index 5e86c66a3..fcc08b604 100644 --- a/src/core/dialogs/session-dialog.ts +++ b/src/core/dialogs/session-dialog.ts @@ -1,45 +1,43 @@ -import { Logger } from "../log"; -import { - Body, - C, - getBody, - IncomingRequestMessage, - IncomingResponseMessage, - isBody, - NameAddrHeader, - OutgoingAckRequest, - OutgoingByeRequest, - OutgoingInfoRequest, - OutgoingInviteRequest, - OutgoingInviteRequestDelegate, - OutgoingMessageRequest, - OutgoingNotifyRequest, - OutgoingPrackRequest, - OutgoingReferRequest, - OutgoingRequestDelegate, - OutgoingRequestMessage, - RequestOptions -} from "../messages"; -import { Session, SessionDelegate, SessionState, SignalingState } from "../session"; -import { Timers } from "../timers"; -import { InviteClientTransaction, InviteServerTransaction, TransactionState } from "../transactions"; -import { UserAgentCore } from "../user-agent-core"; -import { ByeUserAgentClient } from "../user-agents/bye-user-agent-client"; -import { ByeUserAgentServer } from "../user-agents/bye-user-agent-server"; -import { InfoUserAgentClient } from "../user-agents/info-user-agent-client"; -import { InfoUserAgentServer } from "../user-agents/info-user-agent-server"; -import { MessageUserAgentClient } from "../user-agents/message-user-agent-client"; -import { MessageUserAgentServer } from "../user-agents/message-user-agent-server"; -import { NotifyUserAgentClient } from "../user-agents/notify-user-agent-client"; -import { NotifyUserAgentServer } from "../user-agents/notify-user-agent-server"; -import { PrackUserAgentClient } from "../user-agents/prack-user-agent-client"; -import { PrackUserAgentServer } from "../user-agents/prack-user-agent-server"; -import { ReInviteUserAgentClient } from "../user-agents/re-invite-user-agent-client"; -import { ReInviteUserAgentServer } from "../user-agents/re-invite-user-agent-server"; -import { ReferUserAgentClient } from "../user-agents/refer-user-agent-client"; -import { ReferUserAgentServer } from "../user-agents/refer-user-agent-server"; -import { Dialog } from "./dialog"; -import { DialogState } from "./dialog-state"; +import { NameAddrHeader } from "../../grammar/name-addr-header.js"; +import { Logger } from "../log/logger.js"; +import { Body, getBody, isBody } from "../messages/body.js"; +import { C } from "../messages/methods/constants.js"; +import { IncomingRequestMessage } from "../messages/incoming-request-message.js"; +import { IncomingResponseMessage } from "../messages/incoming-response-message.js"; +import { OutgoingAckRequest } from "../messages/methods/ack.js"; +import { OutgoingByeRequest } from "../messages/methods/bye.js"; +import { OutgoingInfoRequest } from "../messages/methods/info.js"; +import { OutgoingInviteRequest, OutgoingInviteRequestDelegate } from "../messages/methods/invite.js"; +import { OutgoingMessageRequest } from "../messages/methods/message.js"; +import { OutgoingNotifyRequest } from "../messages/methods/notify.js"; +import { OutgoingPrackRequest } from "../messages/methods/prack.js"; +import { OutgoingReferRequest } from "../messages/methods/refer.js"; +import { OutgoingRequestDelegate, RequestOptions } from "../messages/outgoing-request.js"; +import { OutgoingRequestMessage } from "../messages/outgoing-request-message.js"; +import { Session, SessionState } from "../session/session.js"; +import { SessionDelegate } from "../session/session-delegate.js"; +import { SignalingState } from "../session/session.js"; +import { Timers } from "../timers.js"; +import { InviteClientTransaction } from "../transactions/invite-client-transaction.js"; +import { InviteServerTransaction } from "../transactions/invite-server-transaction.js"; +import { TransactionState } from "../transactions/transaction-state.js"; +import { UserAgentCore } from "../user-agent-core/user-agent-core.js"; +import { ByeUserAgentClient } from "../user-agents/bye-user-agent-client.js"; +import { ByeUserAgentServer } from "../user-agents/bye-user-agent-server.js"; +import { InfoUserAgentClient } from "../user-agents/info-user-agent-client.js"; +import { InfoUserAgentServer } from "../user-agents/info-user-agent-server.js"; +import { MessageUserAgentClient } from "../user-agents/message-user-agent-client.js"; +import { MessageUserAgentServer } from "../user-agents/message-user-agent-server.js"; +import { NotifyUserAgentClient } from "../user-agents/notify-user-agent-client.js"; +import { NotifyUserAgentServer } from "../user-agents/notify-user-agent-server.js"; +import { PrackUserAgentClient } from "../user-agents/prack-user-agent-client.js"; +import { PrackUserAgentServer } from "../user-agents/prack-user-agent-server.js"; +import { ReInviteUserAgentClient } from "../user-agents/re-invite-user-agent-client.js"; +import { ReInviteUserAgentServer } from "../user-agents/re-invite-user-agent-server.js"; +import { ReferUserAgentClient } from "../user-agents/refer-user-agent-client.js"; +import { ReferUserAgentServer } from "../user-agents/refer-user-agent-server.js"; +import { Dialog } from "./dialog.js"; +import { DialogState } from "./dialog-state.js"; /** * Session Dialog. diff --git a/src/core/dialogs/subscription-dialog.ts b/src/core/dialogs/subscription-dialog.ts index ddaa2a095..459322d2f 100644 --- a/src/core/dialogs/subscription-dialog.ts +++ b/src/core/dialogs/subscription-dialog.ts @@ -1,21 +1,20 @@ -import { Logger } from "../log"; -import { - C, - IncomingRequestMessage, - NameAddrHeader, - OutgoingRequestMessage, - OutgoingSubscribeRequest, - OutgoingSubscribeRequestDelegate, - RequestOptions -} from "../messages"; -import { Subscription, SubscriptionDelegate, SubscriptionState } from "../subscription"; -import { Timers } from "../timers"; -import { AllowedMethods } from "../user-agent-core/allowed-methods"; -import { UserAgentCore } from "../user-agent-core/user-agent-core"; -import { NotifyUserAgentServer } from "../user-agents/notify-user-agent-server"; -import { ReSubscribeUserAgentClient } from "../user-agents/re-subscribe-user-agent-client"; -import { Dialog } from "./dialog"; -import { DialogState } from "./dialog-state"; +import { NameAddrHeader } from "../../grammar/name-addr-header.js"; +import { Logger } from "../log/logger.js"; +import { C } from "../messages/methods/constants.js"; +import { IncomingRequestMessage } from "../messages/incoming-request-message.js"; +import { OutgoingRequestMessage } from "../messages/outgoing-request-message.js"; +import { OutgoingSubscribeRequest } from "../messages/methods/subscribe.js"; +import { OutgoingSubscribeRequestDelegate } from "../messages/methods/subscribe.js"; +import { RequestOptions } from "../messages/outgoing-request.js"; +import { Subscription, SubscriptionState } from "../subscription/subscription.js"; +import { SubscriptionDelegate } from "../subscription/subscription-delegate.js"; +import { Timers } from "../timers.js"; +import { AllowedMethods } from "../user-agent-core/allowed-methods.js"; +import { UserAgentCore } from "../user-agent-core/user-agent-core.js"; +import { NotifyUserAgentServer } from "../user-agents/notify-user-agent-server.js"; +import { ReSubscribeUserAgentClient } from "../user-agents/re-subscribe-user-agent-client.js"; +import { Dialog } from "./dialog.js"; +import { DialogState } from "./dialog-state.js"; /** * Subscription Dialog. diff --git a/src/core/exceptions/index.ts b/src/core/exceptions/index.ts index a7b5eb621..cf1b08fe3 100644 --- a/src/core/exceptions/index.ts +++ b/src/core/exceptions/index.ts @@ -1,3 +1,3 @@ -export * from "./exception"; -export * from "./transaction-state-error"; -export * from "./transport-error"; +export * from "./exception.js"; +export * from "./transaction-state-error.js"; +export * from "./transport-error.js"; diff --git a/src/core/exceptions/transaction-state-error.ts b/src/core/exceptions/transaction-state-error.ts index 47d396720..c457da796 100644 --- a/src/core/exceptions/transaction-state-error.ts +++ b/src/core/exceptions/transaction-state-error.ts @@ -1,4 +1,4 @@ -import { Exception } from "./exception"; +import { Exception } from "./exception.js"; /** * Indicates that the operation could not be completed given the current transaction state. diff --git a/src/core/exceptions/transport-error.ts b/src/core/exceptions/transport-error.ts index 2855b29e5..2b7dec962 100644 --- a/src/core/exceptions/transport-error.ts +++ b/src/core/exceptions/transport-error.ts @@ -1,4 +1,4 @@ -import { Exception } from "./exception"; +import { Exception } from "./exception.js"; /** * Transport error. diff --git a/src/core/index.ts b/src/core/index.ts index 158960a20..9d3d926ea 100644 --- a/src/core/index.ts +++ b/src/core/index.ts @@ -4,16 +4,16 @@ */ // Directories -export * from "./dialogs"; -export * from "./exceptions"; -export * from "./log"; -export * from "./messages"; -export * from "./session"; -export * from "./subscription"; -export * from "./transactions"; -export * from "./user-agent-core"; -export * from "./user-agents"; +export * from "./dialogs/index.js"; +export * from "./exceptions/index.js"; +export * from "./log/index.js"; +export * from "./messages/index.js"; +export * from "./session/index.js"; +export * from "./subscription/index.js"; +export * from "./transactions/index.js"; +export * from "./user-agent-core/index.js"; +export * from "./user-agents/index.js"; // Files -export * from "./timers"; -export * from "./transport"; +export * from "./timers.js"; +export * from "./transport.js"; diff --git a/src/core/log/index.ts b/src/core/log/index.ts index 2d59354ff..c72ba6d6f 100644 --- a/src/core/log/index.ts +++ b/src/core/log/index.ts @@ -1,3 +1,3 @@ -export * from "./levels"; -export * from "./logger-factory"; -export * from "./logger"; +export * from "./levels.js"; +export * from "./logger-factory.js"; +export * from "./logger.js"; diff --git a/src/core/log/logger-factory.ts b/src/core/log/logger-factory.ts index 8abd04d11..cea51f138 100644 --- a/src/core/log/logger-factory.ts +++ b/src/core/log/logger-factory.ts @@ -1,5 +1,5 @@ -import { Levels } from "./levels"; -import { Logger } from "./logger"; +import { Levels } from "./levels.js"; +import { Logger } from "./logger.js"; /** * Logger. diff --git a/src/core/log/logger.ts b/src/core/log/logger.ts index bf7e966d0..a36208743 100644 --- a/src/core/log/logger.ts +++ b/src/core/log/logger.ts @@ -1,5 +1,5 @@ -import { Levels } from "./levels"; -import { LoggerFactory } from "./logger-factory"; +import { Levels } from "./levels.js"; +import { LoggerFactory } from "./logger-factory.js"; /** * Logger. diff --git a/src/core/messages/body.ts b/src/core/messages/body.ts index 2a6f96b6d..919719f78 100644 --- a/src/core/messages/body.ts +++ b/src/core/messages/body.ts @@ -1,6 +1,6 @@ -import { IncomingRequestMessage } from "./incoming-request-message"; -import { IncomingResponseMessage } from "./incoming-response-message"; -import { OutgoingRequestMessage } from "./outgoing-request-message"; +import { IncomingRequestMessage } from "./incoming-request-message.js"; +import { IncomingResponseMessage } from "./incoming-response-message.js"; +import { OutgoingRequestMessage } from "./outgoing-request-message.js"; // If the Content-Disposition header field is missing, bodies of // Content-Type application/sdp imply the disposition "session", while diff --git a/src/core/messages/digest-authentication.ts b/src/core/messages/digest-authentication.ts index 314bc4327..d5ea2663e 100644 --- a/src/core/messages/digest-authentication.ts +++ b/src/core/messages/digest-authentication.ts @@ -1,9 +1,10 @@ -import { Md5 } from "./md5"; +import { Md5 } from "./md5.js"; -import { URI } from "../../grammar"; -import { Logger, LoggerFactory } from "../log"; -import { OutgoingRequestMessage } from "./outgoing-request-message"; -import { createRandomToken } from "./utils"; +import { URI } from "../../grammar/uri.js"; +import { Logger } from "../log/logger.js"; +import { LoggerFactory } from "../log/logger-factory.js"; +import { OutgoingRequestMessage } from "./outgoing-request-message.js"; +import { createRandomToken } from "./utils.js"; function MD5(s: string): string { return Md5.hashStr(s); diff --git a/src/core/messages/incoming-message.ts b/src/core/messages/incoming-message.ts index bf49be449..d86bab16e 100644 --- a/src/core/messages/incoming-message.ts +++ b/src/core/messages/incoming-message.ts @@ -1,5 +1,6 @@ -import { Grammar, NameAddrHeader } from "../../grammar"; -import { headerize } from "./utils"; +import { Grammar } from "../../grammar/grammar.js"; +import { NameAddrHeader } from "../../grammar/name-addr-header.js"; +import { headerize } from "./utils.js"; /** * Incoming message. diff --git a/src/core/messages/incoming-request-message.ts b/src/core/messages/incoming-request-message.ts index 98b0f9df6..5b1dd56bf 100644 --- a/src/core/messages/incoming-request-message.ts +++ b/src/core/messages/incoming-request-message.ts @@ -1,5 +1,5 @@ -import { URI } from "../messages"; -import { IncomingMessage } from "./incoming-message"; +import { URI } from "../../grammar/uri.js"; +import { IncomingMessage } from "./incoming-message.js"; /** * Incoming request message. diff --git a/src/core/messages/incoming-request.ts b/src/core/messages/incoming-request.ts index 4890dcd09..2bef489e9 100644 --- a/src/core/messages/incoming-request.ts +++ b/src/core/messages/incoming-request.ts @@ -1,7 +1,7 @@ -import { TransportError } from "../exceptions"; -import { URI } from "../messages"; -import { IncomingRequestMessage } from "./incoming-request-message"; -import { OutgoingResponse, ResponseOptions } from "./outgoing-response"; +import { URI } from "../../grammar/uri.js"; +import { TransportError } from "../exceptions/transport-error.js"; +import { IncomingRequestMessage } from "./incoming-request-message.js"; +import { OutgoingResponse, ResponseOptions } from "./outgoing-response.js"; /** * A SIP message sent from a remote client to a local server. diff --git a/src/core/messages/incoming-response-message.ts b/src/core/messages/incoming-response-message.ts index 92b0ab5c0..b3c3a23e3 100644 --- a/src/core/messages/incoming-response-message.ts +++ b/src/core/messages/incoming-response-message.ts @@ -1,4 +1,4 @@ -import { IncomingMessage } from "./incoming-message"; +import { IncomingMessage } from "./incoming-message.js"; /** * Incoming response message. diff --git a/src/core/messages/incoming-response.ts b/src/core/messages/incoming-response.ts index 765a118a8..8ac783931 100644 --- a/src/core/messages/incoming-response.ts +++ b/src/core/messages/incoming-response.ts @@ -1,4 +1,4 @@ -import { IncomingResponseMessage } from "./incoming-response-message"; +import { IncomingResponseMessage } from "./incoming-response-message.js"; /** * A SIP message sent from a remote server to a local client. diff --git a/src/core/messages/index.ts b/src/core/messages/index.ts index 03c9f6e05..d82b30880 100644 --- a/src/core/messages/index.ts +++ b/src/core/messages/index.ts @@ -1,18 +1,15 @@ -// Grammar -export * from "../../grammar"; - // Directories -export * from "./methods"; +export * from "./methods/index.js"; // Files -export * from "./body"; -export * from "./digest-authentication"; -export * from "./incoming-message"; -export * from "./incoming-request-message"; -export * from "./incoming-request"; -export * from "./incoming-response-message"; -export * from "./incoming-response"; -export * from "./outgoing-request-message"; -export * from "./outgoing-request"; -export * from "./outgoing-response"; -export * from "./parser"; +export * from "./body.js"; +export * from "./digest-authentication.js"; +export * from "./incoming-message.js"; +export * from "./incoming-request-message.js"; +export * from "./incoming-request.js"; +export * from "./incoming-response-message.js"; +export * from "./incoming-response.js"; +export * from "./outgoing-request-message.js"; +export * from "./outgoing-request.js"; +export * from "./outgoing-response.js"; +export * from "./parser.js"; diff --git a/src/core/messages/methods/ack.ts b/src/core/messages/methods/ack.ts index aa163fb6a..f97ee3cab 100644 --- a/src/core/messages/methods/ack.ts +++ b/src/core/messages/methods/ack.ts @@ -1,5 +1,5 @@ -import { IncomingRequestMessage } from "../incoming-request-message"; -import { OutgoingRequestMessage } from "../outgoing-request-message"; +import { IncomingRequestMessage } from "../incoming-request-message.js"; +import { OutgoingRequestMessage } from "../outgoing-request-message.js"; // Note: As a request with no response, ACK is a special case. diff --git a/src/core/messages/methods/bye.ts b/src/core/messages/methods/bye.ts index eb209f083..52515fa80 100644 --- a/src/core/messages/methods/bye.ts +++ b/src/core/messages/methods/bye.ts @@ -1,7 +1,7 @@ /* eslint-disable @typescript-eslint/no-empty-interface */ -import { IncomingRequest } from "../incoming-request"; -import { IncomingResponse } from "../incoming-response"; -import { OutgoingRequest } from "../outgoing-request"; +import { IncomingRequest } from "../incoming-request.js"; +import { IncomingResponse } from "../incoming-response.js"; +import { OutgoingRequest } from "../outgoing-request.js"; /** * Incoming BYE request. diff --git a/src/core/messages/methods/cancel.ts b/src/core/messages/methods/cancel.ts index 5f332fb66..a56e594f7 100644 --- a/src/core/messages/methods/cancel.ts +++ b/src/core/messages/methods/cancel.ts @@ -1,7 +1,7 @@ /* eslint-disable @typescript-eslint/no-empty-interface */ -import { IncomingRequest } from "../incoming-request"; -import { IncomingResponse } from "../incoming-response"; -import { OutgoingRequest } from "../outgoing-request"; +import { IncomingRequest } from "../incoming-request.js"; +import { IncomingResponse } from "../incoming-response.js"; +import { OutgoingRequest } from "../outgoing-request.js"; /** * Incoming CANCEL request. diff --git a/src/core/messages/methods/index.ts b/src/core/messages/methods/index.ts index f60ff2931..fa3e3d1dd 100644 --- a/src/core/messages/methods/index.ts +++ b/src/core/messages/methods/index.ts @@ -1,13 +1,13 @@ -export * from "./constants"; -export * from "./ack"; -export * from "./bye"; -export * from "./cancel"; -export * from "./info"; -export * from "./invite"; -export * from "./message"; -export * from "./notify"; -export * from "./prack"; -export * from "./publish"; -export * from "./register"; -export * from "./refer"; -export * from "./subscribe"; +export * from "./constants.js"; +export * from "./ack.js"; +export * from "./bye.js"; +export * from "./cancel.js"; +export * from "./info.js"; +export * from "./invite.js"; +export * from "./message.js"; +export * from "./notify.js"; +export * from "./prack.js"; +export * from "./publish.js"; +export * from "./register.js"; +export * from "./refer.js"; +export * from "./subscribe.js"; diff --git a/src/core/messages/methods/info.ts b/src/core/messages/methods/info.ts index 330160815..ae19aefad 100644 --- a/src/core/messages/methods/info.ts +++ b/src/core/messages/methods/info.ts @@ -1,7 +1,7 @@ /* eslint-disable @typescript-eslint/no-empty-interface */ -import { IncomingRequest } from "../incoming-request"; -import { IncomingResponse } from "../incoming-response"; -import { OutgoingRequest } from "../outgoing-request"; +import { IncomingRequest } from "../incoming-request.js"; +import { IncomingResponse } from "../incoming-response.js"; +import { OutgoingRequest } from "../outgoing-request.js"; /** * Incoming INFO request. diff --git a/src/core/messages/methods/invite.ts b/src/core/messages/methods/invite.ts index ff4ccee11..bdba09d00 100644 --- a/src/core/messages/methods/invite.ts +++ b/src/core/messages/methods/invite.ts @@ -1,10 +1,10 @@ -import { Session } from "../../session"; -import { IncomingRequest } from "../incoming-request"; -import { IncomingResponse } from "../incoming-response"; -import { OutgoingRequest, OutgoingRequestDelegate, RequestOptions } from "../outgoing-request"; -import { OutgoingResponse, ResponseOptions } from "../outgoing-response"; -import { OutgoingAckRequest } from "./ack"; -import { OutgoingPrackRequest } from "./prack"; +import { Session } from "../../session/session.js"; +import { IncomingRequest } from "../incoming-request.js"; +import { IncomingResponse } from "../incoming-response.js"; +import { OutgoingRequest, OutgoingRequestDelegate, RequestOptions } from "../outgoing-request.js"; +import { OutgoingResponse, ResponseOptions } from "../outgoing-response.js"; +import { OutgoingAckRequest } from "./ack.js"; +import { OutgoingPrackRequest } from "./prack.js"; //////////////////// // Incoming INVITE diff --git a/src/core/messages/methods/message.ts b/src/core/messages/methods/message.ts index c184559c5..03ab45c90 100644 --- a/src/core/messages/methods/message.ts +++ b/src/core/messages/methods/message.ts @@ -1,7 +1,7 @@ /* eslint-disable @typescript-eslint/no-empty-interface */ -import { IncomingRequest } from "../incoming-request"; -import { IncomingResponse } from "../incoming-response"; -import { OutgoingRequest } from "../outgoing-request"; +import { IncomingRequest } from "../incoming-request.js"; +import { IncomingResponse } from "../incoming-response.js"; +import { OutgoingRequest } from "../outgoing-request.js"; /** * Incoming MESSAGE request. diff --git a/src/core/messages/methods/notify.ts b/src/core/messages/methods/notify.ts index 1c0abeb4e..bcc0a551e 100644 --- a/src/core/messages/methods/notify.ts +++ b/src/core/messages/methods/notify.ts @@ -1,7 +1,7 @@ /* eslint-disable @typescript-eslint/no-empty-interface */ -import { IncomingRequest } from "../incoming-request"; -import { IncomingResponse } from "../incoming-response"; -import { OutgoingRequest } from "../outgoing-request"; +import { IncomingRequest } from "../incoming-request.js"; +import { IncomingResponse } from "../incoming-response.js"; +import { OutgoingRequest } from "../outgoing-request.js"; /** * Incoming NOTIFY request. diff --git a/src/core/messages/methods/prack.ts b/src/core/messages/methods/prack.ts index 3037c5d71..1d7150482 100644 --- a/src/core/messages/methods/prack.ts +++ b/src/core/messages/methods/prack.ts @@ -1,7 +1,7 @@ /* eslint-disable @typescript-eslint/no-empty-interface */ -import { IncomingRequest } from "../incoming-request"; -import { IncomingResponse } from "../incoming-response"; -import { OutgoingRequest } from "../outgoing-request"; +import { IncomingRequest } from "../incoming-request.js"; +import { IncomingResponse } from "../incoming-response.js"; +import { OutgoingRequest } from "../outgoing-request.js"; /** * Incoming PRACK request. diff --git a/src/core/messages/methods/publish.ts b/src/core/messages/methods/publish.ts index 315364562..5c974dbc9 100644 --- a/src/core/messages/methods/publish.ts +++ b/src/core/messages/methods/publish.ts @@ -1,7 +1,7 @@ /* eslint-disable @typescript-eslint/no-empty-interface */ -import { IncomingRequest } from "../incoming-request"; -import { IncomingResponse } from "../incoming-response"; -import { OutgoingRequest } from "../outgoing-request"; +import { IncomingRequest } from "../incoming-request.js"; +import { IncomingResponse } from "../incoming-response.js"; +import { OutgoingRequest } from "../outgoing-request.js"; /** * Incoming PUBLISH request. diff --git a/src/core/messages/methods/refer.ts b/src/core/messages/methods/refer.ts index 5ccea024f..e42e307ee 100644 --- a/src/core/messages/methods/refer.ts +++ b/src/core/messages/methods/refer.ts @@ -1,7 +1,7 @@ /* eslint-disable @typescript-eslint/no-empty-interface */ -import { IncomingRequest } from "../incoming-request"; -import { IncomingResponse } from "../incoming-response"; -import { OutgoingRequest } from "../outgoing-request"; +import { IncomingRequest } from "../incoming-request.js"; +import { IncomingResponse } from "../incoming-response.js"; +import { OutgoingRequest } from "../outgoing-request.js"; /** * Incoming REFER request. diff --git a/src/core/messages/methods/register.ts b/src/core/messages/methods/register.ts index d2aff074f..eaac53b2e 100644 --- a/src/core/messages/methods/register.ts +++ b/src/core/messages/methods/register.ts @@ -1,7 +1,7 @@ /* eslint-disable @typescript-eslint/no-empty-interface */ -import { IncomingRequest } from "../incoming-request"; -import { IncomingResponse } from "../incoming-response"; -import { OutgoingRequest } from "../outgoing-request"; +import { IncomingRequest } from "../incoming-request.js"; +import { IncomingResponse } from "../incoming-response.js"; +import { OutgoingRequest } from "../outgoing-request.js"; /** * Incoming REGISTER request. diff --git a/src/core/messages/methods/subscribe.ts b/src/core/messages/methods/subscribe.ts index a7bf2c398..edc5029a5 100644 --- a/src/core/messages/methods/subscribe.ts +++ b/src/core/messages/methods/subscribe.ts @@ -1,9 +1,9 @@ /* eslint-disable @typescript-eslint/no-empty-interface */ -import { Subscription } from "../../subscription"; -import { IncomingRequest } from "../incoming-request"; -import { IncomingResponse } from "../incoming-response"; -import { OutgoingRequest, OutgoingRequestDelegate } from "../outgoing-request"; -import { IncomingNotifyRequest } from "./notify"; +import { Subscription } from "../../subscription/subscription.js"; +import { IncomingRequest } from "../incoming-request.js"; +import { IncomingResponse } from "../incoming-response.js"; +import { OutgoingRequest, OutgoingRequestDelegate } from "../outgoing-request.js"; +import { IncomingNotifyRequest } from "./notify.js"; /** * Incoming SUBSCRIBE request. diff --git a/src/core/messages/outgoing-request-message.ts b/src/core/messages/outgoing-request-message.ts index bcb7449e3..b9103d36d 100644 --- a/src/core/messages/outgoing-request-message.ts +++ b/src/core/messages/outgoing-request-message.ts @@ -1,6 +1,7 @@ -import { NameAddrHeader, URI } from "../../grammar"; -import { Body } from "./body"; -import { createRandomToken, headerize, newTag, utf8Length } from "./utils"; +import { NameAddrHeader } from "../../grammar/name-addr-header.js"; +import { URI } from "../../grammar/uri.js"; +import { Body } from "./body.js"; +import { createRandomToken, headerize, newTag, utf8Length } from "./utils.js"; /** * Outgoing request message options. diff --git a/src/core/messages/outgoing-request.ts b/src/core/messages/outgoing-request.ts index c1f67f544..4a73bfd1e 100644 --- a/src/core/messages/outgoing-request.ts +++ b/src/core/messages/outgoing-request.ts @@ -1,6 +1,6 @@ -import { Body } from "./body"; -import { IncomingResponse } from "./incoming-response"; -import { OutgoingRequestMessage } from "./outgoing-request-message"; +import { Body } from "./body.js"; +import { IncomingResponse } from "./incoming-response.js"; +import { OutgoingRequestMessage } from "./outgoing-request-message.js"; /** * A SIP message sent from a local client to a remote server. diff --git a/src/core/messages/outgoing-response.ts b/src/core/messages/outgoing-response.ts index eda800d04..5be589b02 100644 --- a/src/core/messages/outgoing-response.ts +++ b/src/core/messages/outgoing-response.ts @@ -1,6 +1,6 @@ -import { Body } from "./body"; -import { IncomingRequestMessage } from "./incoming-request-message"; -import { getReasonPhrase, newTag, utf8Length } from "./utils"; +import { Body } from "./body.js"; +import { IncomingRequestMessage } from "./incoming-request-message.js"; +import { getReasonPhrase, newTag, utf8Length } from "./utils.js"; /** * A SIP message sent from a local server to a remote client. diff --git a/src/core/messages/parser.ts b/src/core/messages/parser.ts index 4116be14d..34518d372 100644 --- a/src/core/messages/parser.ts +++ b/src/core/messages/parser.ts @@ -1,9 +1,9 @@ /* eslint-disable no-inner-declarations */ /* eslint-disable @typescript-eslint/no-namespace */ -import { Grammar } from "../../grammar"; -import { Logger } from "../log/logger"; -import { IncomingRequestMessage } from "./incoming-request-message"; -import { IncomingResponseMessage } from "./incoming-response-message"; +import { Grammar } from "../../grammar/grammar.js"; +import { Logger } from "../log/logger.js"; +import { IncomingRequestMessage } from "./incoming-request-message.js"; +import { IncomingResponseMessage } from "./incoming-response-message.js"; /** * Extract and parse every header of a SIP message. diff --git a/src/core/session/index.ts b/src/core/session/index.ts index 765f8ba7f..e03f8ac69 100644 --- a/src/core/session/index.ts +++ b/src/core/session/index.ts @@ -1,2 +1,2 @@ -export * from "./session"; -export * from "./session-delegate"; +export * from "./session.js"; +export * from "./session-delegate.js"; diff --git a/src/core/session/session-delegate.ts b/src/core/session/session-delegate.ts index da39b389d..4f28a72d1 100644 --- a/src/core/session/session-delegate.ts +++ b/src/core/session/session-delegate.ts @@ -1,13 +1,11 @@ -import { - IncomingAckRequest, - IncomingByeRequest, - IncomingInfoRequest, - IncomingInviteRequest, - IncomingMessageRequest, - IncomingNotifyRequest, - IncomingPrackRequest, - IncomingReferRequest -} from "../messages"; +import { IncomingAckRequest } from "../messages/methods/ack.js"; +import { IncomingByeRequest } from "../messages/methods/bye.js"; +import { IncomingInfoRequest } from "../messages/methods/info.js"; +import { IncomingInviteRequest } from "../messages/methods/invite.js"; +import { IncomingMessageRequest } from "../messages/methods/message.js"; +import { IncomingNotifyRequest } from "../messages/methods/notify.js"; +import { IncomingPrackRequest } from "../messages/methods/prack.js"; +import { IncomingReferRequest } from "../messages/methods/refer.js"; /** * Session delegate. diff --git a/src/core/session/session.ts b/src/core/session/session.ts index 7b6d9ff9d..3285d83bf 100644 --- a/src/core/session/session.ts +++ b/src/core/session/session.ts @@ -1,18 +1,14 @@ -import { - Body, - OutgoingByeRequest, - OutgoingInfoRequest, - OutgoingInviteRequest, - OutgoingInviteRequestDelegate, - OutgoingMessageRequest, - OutgoingNotifyRequest, - OutgoingPrackRequest, - OutgoingReferRequest, - OutgoingRequestDelegate, - RequestOptions, - URI -} from "../messages"; -import { SessionDelegate } from "./session-delegate"; +import { URI } from "../../grammar/uri.js"; +import { Body } from "../messages/body.js"; +import { OutgoingByeRequest } from "../messages/methods/bye.js"; +import { OutgoingInfoRequest } from "../messages/methods/info.js"; +import { OutgoingInviteRequest, OutgoingInviteRequestDelegate } from "../messages/methods/invite.js"; +import { OutgoingMessageRequest } from "../messages/methods/message.js"; +import { OutgoingNotifyRequest } from "../messages/methods/notify.js"; +import { OutgoingPrackRequest } from "../messages/methods/prack.js"; +import { OutgoingReferRequest } from "../messages/methods/refer.js"; +import { OutgoingRequestDelegate, RequestOptions } from "../messages/outgoing-request.js"; +import { SessionDelegate } from "./session-delegate.js"; /** * Session. diff --git a/src/core/subscription/index.ts b/src/core/subscription/index.ts index 28f539cf8..872dbaf6b 100644 --- a/src/core/subscription/index.ts +++ b/src/core/subscription/index.ts @@ -1,2 +1,2 @@ -export * from "./subscription"; -export * from "./subscription-delegate"; +export * from "./subscription.js"; +export * from "./subscription-delegate.js"; diff --git a/src/core/subscription/subscription-delegate.ts b/src/core/subscription/subscription-delegate.ts index 93f69c6c4..146920ed9 100644 --- a/src/core/subscription/subscription-delegate.ts +++ b/src/core/subscription/subscription-delegate.ts @@ -1,4 +1,5 @@ -import { IncomingNotifyRequest, OutgoingSubscribeRequest } from "../messages"; +import { IncomingNotifyRequest } from "../messages/methods/notify.js"; +import { OutgoingSubscribeRequest } from "../messages/methods/subscribe.js"; /** * Subscription delegate. diff --git a/src/core/subscription/subscription.ts b/src/core/subscription/subscription.ts index 6da064f92..cf5e8c458 100644 --- a/src/core/subscription/subscription.ts +++ b/src/core/subscription/subscription.ts @@ -1,5 +1,6 @@ -import { OutgoingSubscribeRequest, OutgoingSubscribeRequestDelegate, RequestOptions } from "../messages"; -import { SubscriptionDelegate } from "./subscription-delegate"; +import { OutgoingSubscribeRequest, OutgoingSubscribeRequestDelegate } from "../messages/methods/subscribe.js"; +import { RequestOptions } from "../messages/outgoing-request.js"; +import { SubscriptionDelegate } from "./subscription-delegate.js"; /** * Subscription. diff --git a/src/core/transactions/client-transaction.ts b/src/core/transactions/client-transaction.ts index 617372546..82d91268e 100644 --- a/src/core/transactions/client-transaction.ts +++ b/src/core/transactions/client-transaction.ts @@ -1,8 +1,9 @@ -import { IncomingResponseMessage, OutgoingRequestMessage } from "../messages"; -import { Transport } from "../transport"; -import { Transaction } from "./transaction"; -import { TransactionState } from "./transaction-state"; -import { ClientTransactionUser } from "./transaction-user"; +import { IncomingResponseMessage } from "../messages/incoming-response-message.js"; +import { OutgoingRequestMessage } from "../messages/outgoing-request-message.js"; +import { Transport } from "../transport.js"; +import { Transaction } from "./transaction.js"; +import { TransactionState } from "./transaction-state.js"; +import { ClientTransactionUser } from "./transaction-user.js"; /** * Client Transaction. diff --git a/src/core/transactions/index.ts b/src/core/transactions/index.ts index c4f66d3f7..63c061e54 100644 --- a/src/core/transactions/index.ts +++ b/src/core/transactions/index.ts @@ -1,10 +1,10 @@ -export * from "./client-transaction"; -export * from "./invite-client-transaction"; -export * from "./invite-server-transaction"; -export * from "./non-invite-client-transaction"; -export * from "./non-invite-server-transaction"; -export * from "./invite-client-transaction"; -export * from "./server-transaction"; -export * from "./transaction-state"; -export * from "./transaction-user"; -export * from "./transaction"; +export * from "./client-transaction.js"; +export * from "./invite-client-transaction.js"; +export * from "./invite-server-transaction.js"; +export * from "./non-invite-client-transaction.js"; +export * from "./non-invite-server-transaction.js"; +export * from "./invite-client-transaction.js"; +export * from "./server-transaction.js"; +export * from "./transaction-state.js"; +export * from "./transaction-user.js"; +export * from "./transaction.js"; diff --git a/src/core/transactions/invite-client-transaction.ts b/src/core/transactions/invite-client-transaction.ts index d224d0920..92fb4001a 100644 --- a/src/core/transactions/invite-client-transaction.ts +++ b/src/core/transactions/invite-client-transaction.ts @@ -1,11 +1,11 @@ -import { TransportError } from "../exceptions"; - -import { IncomingResponseMessage, OutgoingRequestMessage } from "../messages"; -import { Timers } from "../timers"; -import { Transport } from "../transport"; -import { ClientTransaction } from "./client-transaction"; -import { TransactionState } from "./transaction-state"; -import { ClientTransactionUser } from "./transaction-user"; +import { TransportError } from "../exceptions/transport-error.js"; +import { IncomingResponseMessage } from "../messages/incoming-response-message.js"; +import { OutgoingRequestMessage } from "../messages/outgoing-request-message.js"; +import { Timers } from "../timers.js"; +import { Transport } from "../transport.js"; +import { ClientTransaction } from "./client-transaction.js"; +import { TransactionState } from "./transaction-state.js"; +import { ClientTransactionUser } from "./transaction-user.js"; /** * INVITE Client Transaction. diff --git a/src/core/transactions/invite-server-transaction.ts b/src/core/transactions/invite-server-transaction.ts index 3649470a1..10fdaeb58 100644 --- a/src/core/transactions/invite-server-transaction.ts +++ b/src/core/transactions/invite-server-transaction.ts @@ -1,10 +1,11 @@ -import { TransportError } from "../exceptions"; -import { C, IncomingRequestMessage } from "../messages"; -import { Timers } from "../timers"; -import { Transport } from "../transport"; -import { ServerTransaction } from "./server-transaction"; -import { TransactionState } from "./transaction-state"; -import { ServerTransactionUser } from "./transaction-user"; +import { TransportError } from "../exceptions/transport-error.js"; +import { C } from "../messages/methods/constants.js"; +import { IncomingRequestMessage } from "../messages/incoming-request-message.js"; +import { Timers } from "../timers.js"; +import { Transport } from "../transport.js"; +import { ServerTransaction } from "./server-transaction.js"; +import { TransactionState } from "./transaction-state.js"; +import { ServerTransactionUser } from "./transaction-user.js"; /** * INVITE Server Transaction. diff --git a/src/core/transactions/non-invite-client-transaction.ts b/src/core/transactions/non-invite-client-transaction.ts index e5f7166ca..4f5b18523 100644 --- a/src/core/transactions/non-invite-client-transaction.ts +++ b/src/core/transactions/non-invite-client-transaction.ts @@ -1,10 +1,11 @@ -import { TransportError } from "../exceptions"; -import { IncomingResponseMessage, OutgoingRequestMessage } from "../messages"; -import { Timers } from "../timers"; -import { Transport } from "../transport"; -import { ClientTransaction } from "./client-transaction"; -import { TransactionState } from "./transaction-state"; -import { ClientTransactionUser } from "./transaction-user"; +import { TransportError } from "../exceptions/transport-error.js"; +import { IncomingResponseMessage } from "../messages/incoming-response-message.js"; +import { OutgoingRequestMessage } from "../messages/outgoing-request-message.js"; +import { Timers } from "../timers.js"; +import { Transport } from "../transport.js"; +import { ClientTransaction } from "./client-transaction.js"; +import { TransactionState } from "./transaction-state.js"; +import { ClientTransactionUser } from "./transaction-user.js"; /** * Non-INVITE Client Transaction. diff --git a/src/core/transactions/non-invite-server-transaction.ts b/src/core/transactions/non-invite-server-transaction.ts index 528d3b159..dc0b0ae61 100644 --- a/src/core/transactions/non-invite-server-transaction.ts +++ b/src/core/transactions/non-invite-server-transaction.ts @@ -1,10 +1,10 @@ -import { TransportError } from "../exceptions"; -import { IncomingRequestMessage } from "../messages"; -import { Timers } from "../timers"; -import { Transport } from "../transport"; -import { ServerTransaction } from "./server-transaction"; -import { TransactionState } from "./transaction-state"; -import { ServerTransactionUser } from "./transaction-user"; +import { TransportError } from "../exceptions/transport-error.js"; +import { IncomingRequestMessage } from "../messages/incoming-request-message.js"; +import { Timers } from "../timers.js"; +import { Transport } from "../transport.js"; +import { ServerTransaction } from "./server-transaction.js"; +import { TransactionState } from "./transaction-state.js"; +import { ServerTransactionUser } from "./transaction-user.js"; /** * Non-INVITE Server Transaction. diff --git a/src/core/transactions/server-transaction.ts b/src/core/transactions/server-transaction.ts index 8ad705297..abc4f9f3c 100644 --- a/src/core/transactions/server-transaction.ts +++ b/src/core/transactions/server-transaction.ts @@ -1,8 +1,8 @@ -import { IncomingRequestMessage } from "../messages"; -import { Transport } from "../transport"; -import { Transaction } from "./transaction"; -import { TransactionState } from "./transaction-state"; -import { ServerTransactionUser } from "./transaction-user"; +import { IncomingRequestMessage } from "../messages/incoming-request-message.js"; +import { Transport } from "../transport.js"; +import { Transaction } from "./transaction.js"; +import { TransactionState } from "./transaction-state.js"; +import { ServerTransactionUser } from "./transaction-user.js"; /** * Server Transaction. diff --git a/src/core/transactions/transaction-user.ts b/src/core/transactions/transaction-user.ts index d9571f912..1fe07c5bb 100644 --- a/src/core/transactions/transaction-user.ts +++ b/src/core/transactions/transaction-user.ts @@ -1,8 +1,8 @@ /* eslint-disable @typescript-eslint/no-empty-interface */ -import { TransportError } from "../exceptions"; -import { LoggerFactory } from "../log"; -import { IncomingResponseMessage } from "../messages"; -import { TransactionState } from "./transaction-state"; +import { TransportError } from "../exceptions/transport-error.js"; +import { LoggerFactory } from "../log/logger-factory.js"; +import { IncomingResponseMessage } from "../messages/incoming-response-message.js"; +import { TransactionState } from "./transaction-state.js"; /** * Transaction User (TU). diff --git a/src/core/transactions/transaction.ts b/src/core/transactions/transaction.ts index 513e00419..2403a1ca9 100644 --- a/src/core/transactions/transaction.ts +++ b/src/core/transactions/transaction.ts @@ -1,8 +1,8 @@ -import { TransportError } from "../exceptions"; -import { Logger } from "../log"; -import { Transport } from "../transport"; -import { TransactionState } from "./transaction-state"; -import { TransactionUser } from "./transaction-user"; +import { TransportError } from "../exceptions/transport-error.js"; +import { Logger } from "../log/logger.js"; +import { Transport } from "../transport.js"; +import { TransactionState } from "./transaction-state.js"; +import { TransactionUser } from "./transaction-user.js"; /** * Transaction. diff --git a/src/core/user-agent-core/allowed-methods.ts b/src/core/user-agent-core/allowed-methods.ts index 38c13b4e3..5cc45349e 100644 --- a/src/core/user-agent-core/allowed-methods.ts +++ b/src/core/user-agent-core/allowed-methods.ts @@ -1,4 +1,4 @@ -import { C } from "../messages"; +import { C } from "../messages/methods/constants.js"; /** * FIXME: TODO: Should be configurable/variable. diff --git a/src/core/user-agent-core/index.ts b/src/core/user-agent-core/index.ts index 189fc40b8..00dbab7e9 100644 --- a/src/core/user-agent-core/index.ts +++ b/src/core/user-agent-core/index.ts @@ -1,3 +1,3 @@ -export * from "./user-agent-core"; -export * from "./user-agent-core-configuration"; -export * from "./user-agent-core-delegate"; +export * from "./user-agent-core.js"; +export * from "./user-agent-core-configuration.js"; +export * from "./user-agent-core-delegate.js"; diff --git a/src/core/user-agent-core/user-agent-core-configuration.ts b/src/core/user-agent-core/user-agent-core-configuration.ts index 7e8fe5812..b4e7af1e4 100644 --- a/src/core/user-agent-core/user-agent-core-configuration.ts +++ b/src/core/user-agent-core/user-agent-core-configuration.ts @@ -1,6 +1,7 @@ -import { LoggerFactory } from "../log"; -import { DigestAuthentication, URI } from "../messages"; -import { Transport } from "../transport"; +import { URI } from "../../grammar/uri.js"; +import { LoggerFactory } from "../log/logger-factory.js"; +import { DigestAuthentication } from "../messages/digest-authentication.js"; +import { Transport } from "../transport.js"; /** * Contact. diff --git a/src/core/user-agent-core/user-agent-core-delegate.ts b/src/core/user-agent-core/user-agent-core-delegate.ts index 7fd92f0a4..f74d9bb3e 100644 --- a/src/core/user-agent-core/user-agent-core-delegate.ts +++ b/src/core/user-agent-core/user-agent-core-delegate.ts @@ -1,11 +1,9 @@ -import { - IncomingInviteRequest, - IncomingMessageRequest, - IncomingNotifyRequest, - IncomingReferRequest, - IncomingRegisterRequest, - IncomingSubscribeRequest -} from "../messages"; +import { IncomingInviteRequest } from "../messages/methods/invite.js"; +import { IncomingMessageRequest } from "../messages/methods/message.js"; +import { IncomingNotifyRequest } from "../messages/methods/notify.js"; +import { IncomingReferRequest } from "../messages/methods/refer.js"; +import { IncomingRegisterRequest } from "../messages/methods/register.js"; +import { IncomingSubscribeRequest } from "../messages/methods/subscribe.js"; /** * User Agent Core delegate. diff --git a/src/core/user-agent-core/user-agent-core.ts b/src/core/user-agent-core/user-agent-core.ts index 9852ac5fa..d5a4a5116 100644 --- a/src/core/user-agent-core/user-agent-core.ts +++ b/src/core/user-agent-core/user-agent-core.ts @@ -1,46 +1,39 @@ -import { Dialog } from "../dialogs"; -import { Logger, LoggerFactory } from "../log"; -import { - Body, - C, - constructOutgoingResponse, - IncomingRequestMessage, - IncomingResponseMessage, - OutgoingInviteRequest, - OutgoingInviteRequestDelegate, - OutgoingMessageRequest, - OutgoingPublishRequest, - OutgoingRegisterRequest, - OutgoingRequest, - OutgoingRequestDelegate, - OutgoingRequestMessage, - OutgoingRequestMessageOptions, - OutgoingResponse, - OutgoingSubscribeRequest, - OutgoingSubscribeRequestDelegate, - ResponseOptions, - URI -} from "../messages"; -import { InviteServerTransaction, NonInviteClientTransaction, TransactionState } from "../transactions"; -import { Transport } from "../transport"; -import { - InviteUserAgentClient, - InviteUserAgentServer, - MessageUserAgentClient, - MessageUserAgentServer, - NotifyUserAgentServer, - PublishUserAgentClient, - ReferUserAgentServer, - RegisterUserAgentClient, - RegisterUserAgentServer, - SubscribeUserAgentClient, - SubscribeUserAgentServer, - UserAgentClient, - UserAgentServer -} from "../user-agents"; -import { AllowedMethods } from "./allowed-methods"; -import { UserAgentCoreConfiguration } from "./user-agent-core-configuration"; -import { UserAgentCoreDelegate } from "./user-agent-core-delegate"; +import { URI } from "../../grammar/uri.js"; +import { Dialog } from "../dialogs/dialog.js"; +import { Logger } from "../log/logger.js"; +import { LoggerFactory } from "../log/logger-factory.js"; +import { Body } from "../messages/body.js"; +import { C } from "../messages/methods/constants.js"; +import { IncomingRequestMessage } from "../messages/incoming-request-message.js"; +import { IncomingResponseMessage } from "../messages/incoming-response-message.js"; +import { OutgoingRequest, OutgoingRequestDelegate } from "../messages/outgoing-request.js"; +import { OutgoingRequestMessage, OutgoingRequestMessageOptions } from "../messages/outgoing-request-message.js"; +import { constructOutgoingResponse, OutgoingResponse, ResponseOptions } from "../messages/outgoing-response.js"; +import { OutgoingInviteRequest, OutgoingInviteRequestDelegate } from "../messages/methods/invite.js"; +import { OutgoingMessageRequest } from "../messages/methods/message.js"; +import { OutgoingPublishRequest } from "../messages/methods/publish.js"; +import { OutgoingRegisterRequest } from "../messages/methods/register.js"; +import { OutgoingSubscribeRequest, OutgoingSubscribeRequestDelegate } from "../messages/methods/subscribe.js"; +import { InviteServerTransaction } from "../transactions/invite-server-transaction.js"; +import { NonInviteClientTransaction } from "../transactions/non-invite-client-transaction.js"; +import { TransactionState } from "../transactions/transaction-state.js"; +import { Transport } from "../transport.js"; +import { InviteUserAgentClient } from "../user-agents/invite-user-agent-client.js"; +import { InviteUserAgentServer } from "../user-agents/invite-user-agent-server.js"; +import { MessageUserAgentClient } from "../user-agents/message-user-agent-client.js"; +import { MessageUserAgentServer } from "../user-agents/message-user-agent-server.js"; +import { NotifyUserAgentServer } from "../user-agents/notify-user-agent-server.js"; +import { PublishUserAgentClient } from "../user-agents/publish-user-agent-client.js"; +import { ReferUserAgentServer } from "../user-agents/refer-user-agent-server.js"; +import { RegisterUserAgentClient } from "../user-agents/register-user-agent-client.js"; +import { RegisterUserAgentServer } from "../user-agents/register-user-agent-server.js"; +import { SubscribeUserAgentClient } from "../user-agents/subscribe-user-agent-client.js"; +import { SubscribeUserAgentServer } from "../user-agents/subscribe-user-agent-server.js"; +import { UserAgentClient } from "../user-agents/user-agent-client.js"; +import { UserAgentServer } from "../user-agents/user-agent-server.js"; +import { AllowedMethods } from "./allowed-methods.js"; +import { UserAgentCoreConfiguration } from "./user-agent-core-configuration.js"; +import { UserAgentCoreDelegate } from "./user-agent-core-delegate.js"; /** * This is ported from UA.C.ACCEPTED_BODY_TYPES. * FIXME: TODO: Should be configurable/variable. diff --git a/src/core/user-agents/bye-user-agent-client.ts b/src/core/user-agents/bye-user-agent-client.ts index f052e9737..97c848bfb 100644 --- a/src/core/user-agents/bye-user-agent-client.ts +++ b/src/core/user-agents/bye-user-agent-client.ts @@ -1,7 +1,9 @@ -import { SessionDialog } from "../dialogs"; -import { C, OutgoingByeRequest, OutgoingRequestDelegate, RequestOptions } from "../messages"; -import { NonInviteClientTransaction } from "../transactions"; -import { UserAgentClient } from "./user-agent-client"; +import { SessionDialog } from "../dialogs/session-dialog.js"; +import { C } from "../messages/methods/constants.js"; +import { OutgoingByeRequest } from "../messages/methods/bye.js"; +import { OutgoingRequestDelegate, RequestOptions } from "../messages/outgoing-request.js"; +import { NonInviteClientTransaction } from "../transactions/non-invite-client-transaction.js"; +import { UserAgentClient } from "./user-agent-client.js"; /** * BYE UAC. diff --git a/src/core/user-agents/bye-user-agent-server.ts b/src/core/user-agents/bye-user-agent-server.ts index 4adc3ceea..99dda3c08 100644 --- a/src/core/user-agents/bye-user-agent-server.ts +++ b/src/core/user-agents/bye-user-agent-server.ts @@ -1,7 +1,9 @@ -import { SessionDialog } from "../dialogs"; -import { IncomingByeRequest, IncomingRequestDelegate, IncomingRequestMessage } from "../messages"; -import { NonInviteServerTransaction } from "../transactions"; -import { UserAgentServer } from "./user-agent-server"; +import { SessionDialog } from "../dialogs/session-dialog.js"; +import { IncomingByeRequest } from "../messages/methods/bye.js"; +import { IncomingRequestDelegate } from "../messages/incoming-request.js"; +import { IncomingRequestMessage } from "../messages/incoming-request-message.js"; +import { NonInviteServerTransaction } from "../transactions/non-invite-server-transaction.js"; +import { UserAgentServer } from "./user-agent-server.js"; /** * BYE UAS. diff --git a/src/core/user-agents/cancel-user-agent-client.ts b/src/core/user-agents/cancel-user-agent-client.ts index c08f2f3d9..2a8b7992b 100644 --- a/src/core/user-agents/cancel-user-agent-client.ts +++ b/src/core/user-agents/cancel-user-agent-client.ts @@ -1,7 +1,9 @@ -import { OutgoingCancelRequest, OutgoingRequestDelegate, OutgoingRequestMessage } from "../messages"; -import { NonInviteClientTransaction } from "../transactions"; -import { UserAgentCore } from "../user-agent-core"; -import { UserAgentClient } from "./user-agent-client"; +import { OutgoingCancelRequest } from "../messages/methods/cancel.js"; +import { OutgoingRequestDelegate } from "../messages/outgoing-request.js"; +import { OutgoingRequestMessage } from "../messages/outgoing-request-message.js"; +import { NonInviteClientTransaction } from "../transactions/non-invite-client-transaction.js"; +import { UserAgentCore } from "../user-agent-core/user-agent-core.js"; +import { UserAgentClient } from "./user-agent-client.js"; /** * CANCEL UAC. diff --git a/src/core/user-agents/index.ts b/src/core/user-agents/index.ts index 3a036707d..51e377285 100644 --- a/src/core/user-agents/index.ts +++ b/src/core/user-agents/index.ts @@ -1,26 +1,26 @@ -export * from "./bye-user-agent-client"; -export * from "./bye-user-agent-server"; -export * from "./cancel-user-agent-client"; -export * from "./info-user-agent-client"; -export * from "./info-user-agent-server"; -export * from "./invite-user-agent-client"; -export * from "./invite-user-agent-server"; -export * from "./message-user-agent-client"; -export * from "./message-user-agent-server"; -export * from "./notify-user-agent-client"; -export * from "./notify-user-agent-server"; -export * from "./publish-user-agent-client"; -export * from "./prack-user-agent-client"; -export * from "./prack-user-agent-server"; -export * from "./re-invite-user-agent-client"; -export * from "./re-invite-user-agent-server"; -export * from "./re-subscribe-user-agent-client"; -export * from "./re-subscribe-user-agent-server"; -export * from "./refer-user-agent-client"; -export * from "./refer-user-agent-server"; -export * from "./register-user-agent-client"; -export * from "./register-user-agent-server"; -export * from "./subscribe-user-agent-client"; -export * from "./subscribe-user-agent-server"; -export * from "./user-agent-client"; -export * from "./user-agent-server"; +export * from "./bye-user-agent-client.js"; +export * from "./bye-user-agent-server.js"; +export * from "./cancel-user-agent-client.js"; +export * from "./info-user-agent-client.js"; +export * from "./info-user-agent-server.js"; +export * from "./invite-user-agent-client.js"; +export * from "./invite-user-agent-server.js"; +export * from "./message-user-agent-client.js"; +export * from "./message-user-agent-server.js"; +export * from "./notify-user-agent-client.js"; +export * from "./notify-user-agent-server.js"; +export * from "./publish-user-agent-client.js"; +export * from "./prack-user-agent-client.js"; +export * from "./prack-user-agent-server.js"; +export * from "./re-invite-user-agent-client.js"; +export * from "./re-invite-user-agent-server.js"; +export * from "./re-subscribe-user-agent-client.js"; +export * from "./re-subscribe-user-agent-server.js"; +export * from "./refer-user-agent-client.js"; +export * from "./refer-user-agent-server.js"; +export * from "./register-user-agent-client.js"; +export * from "./register-user-agent-server.js"; +export * from "./subscribe-user-agent-client.js"; +export * from "./subscribe-user-agent-server.js"; +export * from "./user-agent-client.js"; +export * from "./user-agent-server.js"; diff --git a/src/core/user-agents/info-user-agent-client.ts b/src/core/user-agents/info-user-agent-client.ts index cdf727d9e..c2636f846 100644 --- a/src/core/user-agents/info-user-agent-client.ts +++ b/src/core/user-agents/info-user-agent-client.ts @@ -1,7 +1,9 @@ -import { SessionDialog } from "../dialogs"; -import { C, OutgoingInfoRequest, OutgoingRequestDelegate, RequestOptions } from "../messages"; -import { NonInviteClientTransaction } from "../transactions"; -import { UserAgentClient } from "./user-agent-client"; +import { SessionDialog } from "../dialogs/session-dialog.js"; +import { C } from "../messages/methods/constants.js"; +import { OutgoingInfoRequest } from "../messages/methods/info.js"; +import { OutgoingRequestDelegate, RequestOptions } from "../messages/outgoing-request.js"; +import { NonInviteClientTransaction } from "../transactions/non-invite-client-transaction.js"; +import { UserAgentClient } from "./user-agent-client.js"; /** * INFO UAC. diff --git a/src/core/user-agents/info-user-agent-server.ts b/src/core/user-agents/info-user-agent-server.ts index 76f128ecb..999cfc10d 100644 --- a/src/core/user-agents/info-user-agent-server.ts +++ b/src/core/user-agents/info-user-agent-server.ts @@ -1,7 +1,9 @@ -import { SessionDialog } from "../dialogs"; -import { IncomingInfoRequest, IncomingRequestDelegate, IncomingRequestMessage } from "../messages"; -import { NonInviteServerTransaction } from "../transactions"; -import { UserAgentServer } from "./user-agent-server"; +import { SessionDialog } from "../dialogs/session-dialog.js"; +import { IncomingInfoRequest } from "../messages/methods/info.js"; +import { IncomingRequestDelegate } from "../messages/incoming-request.js"; +import { IncomingRequestMessage } from "../messages/incoming-request-message.js"; +import { NonInviteServerTransaction } from "../transactions/non-invite-server-transaction.js"; +import { UserAgentServer } from "./user-agent-server.js"; /** * INFO UAS. diff --git a/src/core/user-agents/invite-user-agent-client.ts b/src/core/user-agents/invite-user-agent-client.ts index 19e19ab26..cbd96453c 100644 --- a/src/core/user-agents/invite-user-agent-client.ts +++ b/src/core/user-agents/invite-user-agent-client.ts @@ -1,18 +1,17 @@ -import { Dialog, SessionDialog } from "../dialogs"; -import { TransportError } from "../exceptions"; -import { - IncomingResponseMessage, - OutgoingAckRequest, - OutgoingInviteRequest, - OutgoingInviteRequestDelegate, - OutgoingPrackRequest, - OutgoingRequestMessage, - RequestOptions -} from "../messages"; -import { SignalingState } from "../session"; -import { InviteClientTransaction, TransactionState } from "../transactions"; -import { UserAgentCore } from "../user-agent-core"; -import { UserAgentClient } from "./user-agent-client"; +import { Dialog } from "../dialogs/dialog.js"; +import { SessionDialog } from "../dialogs/session-dialog.js"; +import { TransportError } from "../exceptions/transport-error.js"; +import { IncomingResponseMessage } from "../messages/incoming-response-message.js"; +import { OutgoingAckRequest } from "../messages/methods/ack.js"; +import { OutgoingInviteRequest, OutgoingInviteRequestDelegate } from "../messages/methods/invite.js"; +import { OutgoingPrackRequest } from "../messages/methods/prack.js"; +import { OutgoingRequestMessage } from "../messages/outgoing-request-message.js"; +import { RequestOptions } from "../messages/outgoing-request.js"; +import { SignalingState } from "../session/session.js"; +import { InviteClientTransaction } from "../transactions/invite-client-transaction.js"; +import { TransactionState } from "../transactions/transaction-state.js"; +import { UserAgentCore } from "../user-agent-core/user-agent-core.js"; +import { UserAgentClient } from "./user-agent-client.js"; /** * INVITE UAC. diff --git a/src/core/user-agents/invite-user-agent-server.ts b/src/core/user-agents/invite-user-agent-server.ts index 0f3be4c74..b7510ff73 100644 --- a/src/core/user-agents/invite-user-agent-server.ts +++ b/src/core/user-agents/invite-user-agent-server.ts @@ -1,19 +1,16 @@ -import { Dialog, SessionDialog } from "../dialogs"; -import { TransactionStateError } from "../exceptions"; -import { - IncomingInviteRequest, - IncomingRequestDelegate, - IncomingRequestMessage, - OutgoingResponse, - OutgoingResponseWithSession, - ResponseOptions, - URI -} from "../messages"; -import { SignalingState } from "../session"; -import { InviteServerTransaction } from "../transactions"; -import { UserAgentCore } from "../user-agent-core"; -import { AllowedMethods } from "../user-agent-core/allowed-methods"; -import { UserAgentServer } from "./user-agent-server"; +import { URI } from "../../grammar/uri.js"; +import { Dialog } from "../dialogs/dialog.js"; +import { SessionDialog } from "../dialogs/session-dialog.js"; +import { TransactionStateError } from "../exceptions/transaction-state-error.js"; +import { IncomingInviteRequest, OutgoingResponseWithSession } from "../messages/methods/invite.js"; +import { IncomingRequestDelegate } from "../messages/incoming-request.js"; +import { IncomingRequestMessage } from "../messages/incoming-request-message.js"; +import { OutgoingResponse, ResponseOptions } from "../messages/outgoing-response.js"; +import { SignalingState } from "../session/session.js"; +import { InviteServerTransaction } from "../transactions/invite-server-transaction.js"; +import { UserAgentCore } from "../user-agent-core/user-agent-core.js"; +import { AllowedMethods } from "../user-agent-core/allowed-methods.js"; +import { UserAgentServer } from "./user-agent-server.js"; /** * INVITE UAS. diff --git a/src/core/user-agents/message-user-agent-client.ts b/src/core/user-agents/message-user-agent-client.ts index 7779c036b..34a486834 100644 --- a/src/core/user-agents/message-user-agent-client.ts +++ b/src/core/user-agents/message-user-agent-client.ts @@ -1,7 +1,9 @@ -import { OutgoingMessageRequest, OutgoingRequestDelegate, OutgoingRequestMessage } from "../messages"; -import { NonInviteClientTransaction } from "../transactions"; -import { UserAgentCore } from "../user-agent-core"; -import { UserAgentClient } from "./user-agent-client"; +import { OutgoingMessageRequest } from "../messages/methods/message.js"; +import { OutgoingRequestDelegate } from "../messages/outgoing-request.js"; +import { OutgoingRequestMessage } from "../messages/outgoing-request-message.js"; +import { NonInviteClientTransaction } from "../transactions/non-invite-client-transaction.js"; +import { UserAgentCore } from "../user-agent-core/user-agent-core.js"; +import { UserAgentClient } from "./user-agent-client.js"; /** * MESSAGE UAC. diff --git a/src/core/user-agents/message-user-agent-server.ts b/src/core/user-agents/message-user-agent-server.ts index d71a84395..92680fef7 100644 --- a/src/core/user-agents/message-user-agent-server.ts +++ b/src/core/user-agents/message-user-agent-server.ts @@ -1,7 +1,9 @@ -import { IncomingMessageRequest, IncomingRequestDelegate, IncomingRequestMessage } from "../messages"; -import { NonInviteServerTransaction } from "../transactions"; -import { UserAgentCore } from "../user-agent-core"; -import { UserAgentServer } from "./user-agent-server"; +import { IncomingMessageRequest } from "../messages/methods/message.js"; +import { IncomingRequestDelegate } from "../messages/incoming-request.js"; +import { IncomingRequestMessage } from "../messages/incoming-request-message.js"; +import { NonInviteServerTransaction } from "../transactions/non-invite-server-transaction.js"; +import { UserAgentCore } from "../user-agent-core/user-agent-core.js"; +import { UserAgentServer } from "./user-agent-server.js"; /** * MESSAGE UAS. diff --git a/src/core/user-agents/notify-user-agent-client.ts b/src/core/user-agents/notify-user-agent-client.ts index 5dc96b05f..bdd63e1f2 100644 --- a/src/core/user-agents/notify-user-agent-client.ts +++ b/src/core/user-agents/notify-user-agent-client.ts @@ -1,7 +1,9 @@ -import { SessionDialog } from "../dialogs"; -import { C, OutgoingNotifyRequest, OutgoingRequestDelegate, RequestOptions } from "../messages"; -import { NonInviteClientTransaction } from "../transactions"; -import { UserAgentClient } from "./user-agent-client"; +import { SessionDialog } from "../dialogs/session-dialog.js"; +import { C } from "../messages/methods/constants.js"; +import { OutgoingNotifyRequest } from "../messages/methods/notify.js"; +import { OutgoingRequestDelegate, RequestOptions } from "../messages/outgoing-request.js"; +import { NonInviteClientTransaction } from "../transactions/non-invite-client-transaction.js"; +import { UserAgentClient } from "./user-agent-client.js"; /** * NOTIFY UAS. diff --git a/src/core/user-agents/notify-user-agent-server.ts b/src/core/user-agents/notify-user-agent-server.ts index ac41ee7ca..e6914790f 100644 --- a/src/core/user-agents/notify-user-agent-server.ts +++ b/src/core/user-agents/notify-user-agent-server.ts @@ -1,8 +1,10 @@ -import { Dialog } from "../dialogs"; -import { IncomingNotifyRequest, IncomingRequestDelegate, IncomingRequestMessage } from "../messages"; -import { NonInviteServerTransaction } from "../transactions"; -import { UserAgentCore } from "../user-agent-core"; -import { UserAgentServer } from "./user-agent-server"; +import { Dialog } from "../dialogs/dialog.js"; +import { IncomingNotifyRequest } from "../messages/methods/notify.js"; +import { IncomingRequestDelegate } from "../messages/incoming-request.js"; +import { IncomingRequestMessage } from "../messages/incoming-request-message.js"; +import { NonInviteServerTransaction } from "../transactions/non-invite-server-transaction.js"; +import { UserAgentCore } from "../user-agent-core/user-agent-core.js"; +import { UserAgentServer } from "./user-agent-server.js"; // eslint-disable-next-line @typescript-eslint/no-explicit-any function instanceOfDialog(object: any): object is Dialog { diff --git a/src/core/user-agents/prack-user-agent-client.ts b/src/core/user-agents/prack-user-agent-client.ts index 18ccd6361..40b93a86d 100644 --- a/src/core/user-agents/prack-user-agent-client.ts +++ b/src/core/user-agents/prack-user-agent-client.ts @@ -1,7 +1,9 @@ -import { SessionDialog } from "../dialogs"; -import { C, OutgoingPrackRequest, OutgoingRequestDelegate, RequestOptions } from "../messages"; -import { NonInviteClientTransaction } from "../transactions"; -import { UserAgentClient } from "./user-agent-client"; +import { SessionDialog } from "../dialogs/session-dialog.js"; +import { C } from "../messages/methods/constants.js"; +import { OutgoingPrackRequest } from "../messages/methods/prack.js"; +import { OutgoingRequestDelegate, RequestOptions } from "../messages/outgoing-request.js"; +import { NonInviteClientTransaction } from "../transactions/non-invite-client-transaction.js"; +import { UserAgentClient } from "./user-agent-client.js"; /** * PRACK UAC. diff --git a/src/core/user-agents/prack-user-agent-server.ts b/src/core/user-agents/prack-user-agent-server.ts index e12bdebea..5e6ca11a1 100644 --- a/src/core/user-agents/prack-user-agent-server.ts +++ b/src/core/user-agents/prack-user-agent-server.ts @@ -1,13 +1,10 @@ -import { SessionDialog } from "../dialogs"; -import { - IncomingPrackRequest, - IncomingRequestDelegate, - IncomingRequestMessage, - OutgoingResponse, - ResponseOptions -} from "../messages"; -import { NonInviteServerTransaction } from "../transactions"; -import { UserAgentServer } from "./user-agent-server"; +import { SessionDialog } from "../dialogs/session-dialog.js"; +import { IncomingPrackRequest } from "../messages/methods/prack.js"; +import { IncomingRequestDelegate } from "../messages/incoming-request.js"; +import { IncomingRequestMessage } from "../messages/incoming-request-message.js"; +import { OutgoingResponse, ResponseOptions } from "../messages/outgoing-response.js"; +import { NonInviteServerTransaction } from "../transactions/non-invite-server-transaction.js"; +import { UserAgentServer } from "./user-agent-server.js"; /** * PRACK UAS. diff --git a/src/core/user-agents/publish-user-agent-client.ts b/src/core/user-agents/publish-user-agent-client.ts index d9c01c671..a8b0eddd5 100644 --- a/src/core/user-agents/publish-user-agent-client.ts +++ b/src/core/user-agents/publish-user-agent-client.ts @@ -1,7 +1,9 @@ -import { OutgoingPublishRequest, OutgoingRequestDelegate, OutgoingRequestMessage } from "../messages"; -import { NonInviteClientTransaction } from "../transactions"; -import { UserAgentCore } from "../user-agent-core"; -import { UserAgentClient } from "./user-agent-client"; +import { OutgoingPublishRequest } from "../messages/methods/publish.js"; +import { OutgoingRequestDelegate } from "../messages/outgoing-request.js"; +import { OutgoingRequestMessage } from "../messages/outgoing-request-message.js"; +import { NonInviteClientTransaction } from "../transactions/non-invite-client-transaction.js"; +import { UserAgentCore } from "../user-agent-core/user-agent-core.js"; +import { UserAgentClient } from "./user-agent-client.js"; /** * PUBLISH UAC. diff --git a/src/core/user-agents/re-invite-user-agent-client.ts b/src/core/user-agents/re-invite-user-agent-client.ts index 45ffff09c..62cb43330 100644 --- a/src/core/user-agents/re-invite-user-agent-client.ts +++ b/src/core/user-agents/re-invite-user-agent-client.ts @@ -1,15 +1,12 @@ -import { SessionDialog } from "../dialogs"; -import { - C, - IncomingResponseMessage, - OutgoingAckRequest, - OutgoingInviteRequest, - OutgoingInviteRequestDelegate, - OutgoingPrackRequest, - RequestOptions -} from "../messages"; -import { InviteClientTransaction } from "../transactions"; -import { UserAgentClient } from "./user-agent-client"; +import { SessionDialog } from "../dialogs/session-dialog.js"; +import { C } from "../messages/methods/constants.js"; +import { OutgoingAckRequest } from "../messages/methods/ack.js"; +import { RequestOptions } from "../messages/outgoing-request.js"; +import { IncomingResponseMessage } from "../messages/incoming-response-message.js"; +import { OutgoingInviteRequest, OutgoingInviteRequestDelegate } from "../messages/methods/invite.js"; +import { OutgoingPrackRequest } from "../messages/methods/prack.js"; +import { InviteClientTransaction } from "../transactions/invite-client-transaction.js"; +import { UserAgentClient } from "./user-agent-client.js"; /** * Re-INVITE UAC. diff --git a/src/core/user-agents/re-invite-user-agent-server.ts b/src/core/user-agents/re-invite-user-agent-server.ts index 9ecc779a8..6910a9a1d 100644 --- a/src/core/user-agents/re-invite-user-agent-server.ts +++ b/src/core/user-agents/re-invite-user-agent-server.ts @@ -1,15 +1,11 @@ -import { SessionDialog } from "../dialogs"; -import { - IncomingInviteRequest, - IncomingRequestDelegate, - IncomingRequestMessage, - OutgoingResponse, - OutgoingResponseWithSession, - ResponseOptions, - URI -} from "../messages"; -import { InviteServerTransaction } from "../transactions"; -import { UserAgentServer } from "./user-agent-server"; +import { URI } from "../../grammar/uri.js"; +import { SessionDialog } from "../dialogs/session-dialog.js"; +import { IncomingInviteRequest, OutgoingResponseWithSession } from "../messages/methods/invite.js"; +import { IncomingRequestDelegate } from "../messages/incoming-request.js"; +import { IncomingRequestMessage } from "../messages/incoming-request-message.js"; +import { OutgoingResponse, ResponseOptions } from "../messages/outgoing-response.js"; +import { InviteServerTransaction } from "../transactions/invite-server-transaction.js"; +import { UserAgentServer } from "./user-agent-server.js"; /** * Re-INVITE UAS. diff --git a/src/core/user-agents/re-subscribe-user-agent-client.ts b/src/core/user-agents/re-subscribe-user-agent-client.ts index d29cbd1c2..07e95983f 100644 --- a/src/core/user-agents/re-subscribe-user-agent-client.ts +++ b/src/core/user-agents/re-subscribe-user-agent-client.ts @@ -1,13 +1,10 @@ -import { SubscriptionDialog } from "../dialogs"; -import { - C, - IncomingResponseMessage, - OutgoingRequestDelegate, - OutgoingSubscribeRequest, - RequestOptions -} from "../messages"; -import { NonInviteClientTransaction } from "../transactions"; -import { UserAgentClient } from "./user-agent-client"; +import { SubscriptionDialog } from "../dialogs/subscription-dialog.js"; +import { C } from "../messages/methods/constants.js"; +import { OutgoingSubscribeRequest } from "../messages/methods/subscribe.js"; +import { IncomingResponseMessage } from "../messages/incoming-response-message.js"; +import { OutgoingRequestDelegate, RequestOptions } from "../messages/outgoing-request.js"; +import { NonInviteClientTransaction } from "../transactions/non-invite-client-transaction.js"; +import { UserAgentClient } from "./user-agent-client.js"; /** * Re-SUBSCRIBE UAC. diff --git a/src/core/user-agents/re-subscribe-user-agent-server.ts b/src/core/user-agents/re-subscribe-user-agent-server.ts index 80ce88f51..e4a487b27 100644 --- a/src/core/user-agents/re-subscribe-user-agent-server.ts +++ b/src/core/user-agents/re-subscribe-user-agent-server.ts @@ -1,7 +1,9 @@ -import { Dialog } from "../dialogs"; -import { IncomingRequestDelegate, IncomingRequestMessage, IncomingSubscribeRequest } from "../messages"; -import { NonInviteServerTransaction } from "../transactions"; -import { UserAgentServer } from "./user-agent-server"; +import { Dialog } from "../dialogs/dialog.js"; +import { IncomingSubscribeRequest } from "../messages/methods/subscribe.js"; +import { IncomingRequestDelegate } from "../messages/incoming-request.js"; +import { IncomingRequestMessage } from "../messages/incoming-request-message.js"; +import { NonInviteServerTransaction } from "../transactions/non-invite-server-transaction.js"; +import { UserAgentServer } from "./user-agent-server.js"; /** * Re-SUBSCRIBE UAS. diff --git a/src/core/user-agents/refer-user-agent-client.ts b/src/core/user-agents/refer-user-agent-client.ts index 1f2ce91ac..0364d1326 100644 --- a/src/core/user-agents/refer-user-agent-client.ts +++ b/src/core/user-agents/refer-user-agent-client.ts @@ -1,7 +1,9 @@ -import { SessionDialog } from "../dialogs"; -import { C, OutgoingReferRequest, OutgoingRequestDelegate, RequestOptions } from "../messages"; -import { NonInviteClientTransaction } from "../transactions"; -import { UserAgentClient } from "./user-agent-client"; +import { SessionDialog } from "../dialogs/session-dialog.js"; +import { C } from "../messages/methods/constants.js"; +import { OutgoingReferRequest } from "../messages/methods/refer.js"; +import { OutgoingRequestDelegate, RequestOptions } from "../messages/outgoing-request.js"; +import { NonInviteClientTransaction } from "../transactions/non-invite-client-transaction.js"; +import { UserAgentClient } from "./user-agent-client.js"; /** * REFER UAC. diff --git a/src/core/user-agents/refer-user-agent-server.ts b/src/core/user-agents/refer-user-agent-server.ts index cbe0a4cb1..0fa2d9f79 100644 --- a/src/core/user-agents/refer-user-agent-server.ts +++ b/src/core/user-agents/refer-user-agent-server.ts @@ -1,8 +1,10 @@ -import { SessionDialog } from "../dialogs"; -import { IncomingReferRequest, IncomingRequestDelegate, IncomingRequestMessage } from "../messages"; -import { NonInviteServerTransaction } from "../transactions"; -import { UserAgentCore } from "../user-agent-core"; -import { UserAgentServer } from "./user-agent-server"; +import { SessionDialog } from "../dialogs/session-dialog.js"; +import { IncomingReferRequest } from "../messages/methods/refer.js"; +import { IncomingRequestDelegate } from "../messages/incoming-request.js"; +import { IncomingRequestMessage } from "../messages/incoming-request-message.js"; +import { NonInviteServerTransaction } from "../transactions/non-invite-server-transaction.js"; +import { UserAgentCore } from "../user-agent-core/user-agent-core.js"; +import { UserAgentServer } from "./user-agent-server.js"; // eslint-disable-next-line @typescript-eslint/no-explicit-any function instanceOfSessionDialog(object: any): object is SessionDialog { diff --git a/src/core/user-agents/register-user-agent-client.ts b/src/core/user-agents/register-user-agent-client.ts index 092b8f68b..31dbcf338 100644 --- a/src/core/user-agents/register-user-agent-client.ts +++ b/src/core/user-agents/register-user-agent-client.ts @@ -1,7 +1,9 @@ -import { OutgoingRegisterRequest, OutgoingRequestDelegate, OutgoingRequestMessage } from "../messages"; -import { NonInviteClientTransaction } from "../transactions"; -import { UserAgentCore } from "../user-agent-core"; -import { UserAgentClient } from "./user-agent-client"; +import { OutgoingRegisterRequest } from "../messages/methods/register.js"; +import { OutgoingRequestDelegate } from "../messages/outgoing-request.js"; +import { OutgoingRequestMessage } from "../messages/outgoing-request-message.js"; +import { NonInviteClientTransaction } from "../transactions/non-invite-client-transaction.js"; +import { UserAgentClient } from "./user-agent-client.js"; +import { UserAgentCore } from "../user-agent-core/user-agent-core.js"; /** * REGISTER UAC. diff --git a/src/core/user-agents/register-user-agent-server.ts b/src/core/user-agents/register-user-agent-server.ts index b4eb87e49..7701a673f 100644 --- a/src/core/user-agents/register-user-agent-server.ts +++ b/src/core/user-agents/register-user-agent-server.ts @@ -1,7 +1,9 @@ -import { IncomingRegisterRequest, IncomingRequestDelegate, IncomingRequestMessage } from "../messages"; -import { NonInviteServerTransaction } from "../transactions"; -import { UserAgentCore } from "../user-agent-core"; -import { UserAgentServer } from "./user-agent-server"; +import { IncomingRegisterRequest } from "../messages/methods/register.js"; +import { IncomingRequestDelegate } from "../messages/incoming-request.js"; +import { IncomingRequestMessage } from "../messages/incoming-request-message.js"; +import { NonInviteServerTransaction } from "../transactions/non-invite-server-transaction.js"; +import { UserAgentCore } from "../user-agent-core/user-agent-core.js"; +import { UserAgentServer } from "./user-agent-server.js"; /** * REGISTER UAS. diff --git a/src/core/user-agents/subscribe-user-agent-client.ts b/src/core/user-agents/subscribe-user-agent-client.ts index 4edf2a6e2..e64cd04cc 100644 --- a/src/core/user-agents/subscribe-user-agent-client.ts +++ b/src/core/user-agents/subscribe-user-agent-client.ts @@ -1,16 +1,13 @@ -import { SubscriptionDialog } from "../dialogs/subscription-dialog"; -import { - IncomingResponseMessage, - OutgoingRequestMessage, - OutgoingSubscribeRequest, - OutgoingSubscribeRequestDelegate -} from "../messages"; -import { SubscriptionState } from "../subscription"; -import { Timers } from "../timers"; -import { NonInviteClientTransaction } from "../transactions"; -import { UserAgentCore } from "../user-agent-core"; -import { NotifyUserAgentServer } from "./notify-user-agent-server"; -import { UserAgentClient } from "./user-agent-client"; +import { SubscriptionDialog } from "../dialogs/subscription-dialog.js"; +import { IncomingResponseMessage } from "../messages/incoming-response-message.js"; +import { OutgoingRequestMessage } from "../messages/outgoing-request-message.js"; +import { OutgoingSubscribeRequest, OutgoingSubscribeRequestDelegate } from "../messages/methods/subscribe.js"; +import { SubscriptionState } from "../subscription/subscription.js"; +import { Timers } from "../timers.js"; +import { NonInviteClientTransaction } from "../transactions/non-invite-client-transaction.js"; +import { UserAgentCore } from "../user-agent-core/user-agent-core.js"; +import { NotifyUserAgentServer } from "./notify-user-agent-server.js"; +import { UserAgentClient } from "./user-agent-client.js"; /** * SUBSCRIBE UAC. diff --git a/src/core/user-agents/subscribe-user-agent-server.ts b/src/core/user-agents/subscribe-user-agent-server.ts index 64b7b635a..4e2128264 100644 --- a/src/core/user-agents/subscribe-user-agent-server.ts +++ b/src/core/user-agents/subscribe-user-agent-server.ts @@ -1,7 +1,9 @@ -import { IncomingRequestDelegate, IncomingRequestMessage, IncomingSubscribeRequest } from "../messages"; -import { NonInviteServerTransaction } from "../transactions"; -import { UserAgentCore } from "../user-agent-core"; -import { UserAgentServer } from "./user-agent-server"; +import { IncomingSubscribeRequest } from "../messages/methods/subscribe.js"; +import { IncomingRequestDelegate } from "../messages/incoming-request.js"; +import { IncomingRequestMessage } from "../messages/incoming-request-message.js"; +import { NonInviteServerTransaction } from "../transactions/non-invite-server-transaction.js"; +import { UserAgentCore } from "../user-agent-core/user-agent-core.js"; +import { UserAgentServer } from "./user-agent-server.js"; /** * SUBSCRIBE UAS. diff --git a/src/core/user-agents/user-agent-client.ts b/src/core/user-agents/user-agent-client.ts index ee4356239..88ce2b24b 100644 --- a/src/core/user-agents/user-agent-client.ts +++ b/src/core/user-agents/user-agent-client.ts @@ -1,22 +1,17 @@ -import { Dialog } from "../dialogs"; -import { TransportError } from "../exceptions"; -import { Logger, LoggerFactory } from "../log"; -import { - C, - IncomingResponseMessage, - OutgoingRequest, - OutgoingRequestDelegate, - OutgoingRequestMessage, - RequestOptions -} from "../messages"; -import { - ClientTransaction, - ClientTransactionUser, - NonInviteClientTransaction, - TransactionState -} from "../transactions"; -import { Transport } from "../transport"; -import { UserAgentCore } from "../user-agent-core"; +import { Dialog } from "../dialogs/dialog.js"; +import { TransportError } from "../exceptions/transport-error.js"; +import { Logger } from "../log/logger.js"; +import { LoggerFactory } from "../log/logger-factory.js"; +import { C } from "../messages/methods/constants.js"; +import { IncomingResponseMessage } from "../messages/incoming-response-message.js"; +import { OutgoingRequest, OutgoingRequestDelegate, RequestOptions } from "../messages/outgoing-request.js"; +import { OutgoingRequestMessage } from "../messages/outgoing-request-message.js"; +import { ClientTransaction } from "../transactions/client-transaction.js"; +import { ClientTransactionUser } from "../transactions/transaction-user.js"; +import { NonInviteClientTransaction } from "../transactions/non-invite-client-transaction.js"; +import { TransactionState } from "../transactions/transaction-state.js"; +import { Transport } from "../transport.js"; +import { UserAgentCore } from "../user-agent-core/user-agent-core.js"; type ClientTransactionConstructor = new ( message: OutgoingRequestMessage, diff --git a/src/core/user-agents/user-agent-server.ts b/src/core/user-agents/user-agent-server.ts index 10f4434f8..c649a682b 100644 --- a/src/core/user-agents/user-agent-server.ts +++ b/src/core/user-agents/user-agent-server.ts @@ -1,25 +1,19 @@ -import { TransactionStateError } from "../exceptions"; -import { Logger, LoggerFactory } from "../log"; -import { - constructOutgoingResponse, - IncomingRequest, - IncomingRequestDelegate, - IncomingRequestMessage, - OutgoingResponse, - ResponseOptions, - URI -} from "../messages"; -import { newTag } from "../messages/utils"; - -import { - InviteServerTransaction, - NonInviteServerTransaction, - ServerTransaction, - ServerTransactionUser, - TransactionState -} from "../transactions"; -import { Transport } from "../transport"; -import { UserAgentCore } from "../user-agent-core"; +import { TransactionStateError } from "../exceptions/transaction-state-error.js"; +import { URI } from "../../grammar/uri.js"; +import { Logger } from "../log/logger.js"; +import { LoggerFactory } from "../log/logger-factory.js"; +import { IncomingRequestDelegate } from "../messages/incoming-request.js"; +import { IncomingRequestMessage } from "../messages/incoming-request-message.js"; +import { IncomingRequest } from "../messages/incoming-request.js"; +import { constructOutgoingResponse, OutgoingResponse, ResponseOptions } from "../messages/outgoing-response.js"; +import { newTag } from "../messages/utils.js"; +import { InviteServerTransaction } from "../transactions/invite-server-transaction.js"; +import { NonInviteServerTransaction } from "../transactions/non-invite-server-transaction.js"; +import { ServerTransaction } from "../transactions/server-transaction.js"; +import { ServerTransactionUser } from "../transactions/transaction-user.js"; +import { TransactionState } from "../transactions/transaction-state.js"; +import { Transport } from "../transport.js"; +import { UserAgentCore } from "../user-agent-core/user-agent-core.js"; type ServerTransactionConstructor = new ( message: IncomingRequestMessage, diff --git a/src/grammar/grammar.ts b/src/grammar/grammar.ts index 460aa804b..5dc8728d1 100644 --- a/src/grammar/grammar.ts +++ b/src/grammar/grammar.ts @@ -1,9 +1,9 @@ /* eslint-disable @typescript-eslint/no-namespace */ /* eslint-disable no-inner-declarations */ -import * as pegGrammar from "./pegjs/dist/grammar"; +import * as pegGrammar from "./pegjs/dist/grammar.js"; -import { NameAddrHeader } from "./name-addr-header"; -import { URI } from "./uri"; +import { NameAddrHeader } from "./name-addr-header.js"; +import { URI } from "./uri.js"; /** * Grammar. diff --git a/src/grammar/index.ts b/src/grammar/index.ts index 6e2c72b5c..1d68ce331 100644 --- a/src/grammar/index.ts +++ b/src/grammar/index.ts @@ -1,4 +1,4 @@ -export * from "./grammar"; -export * from "./name-addr-header"; -export * from "./parameters"; -export * from "./uri"; +export * from "./grammar.js"; +export * from "./name-addr-header.js"; +export * from "./parameters.js"; +export * from "./uri.js"; diff --git a/src/grammar/name-addr-header.ts b/src/grammar/name-addr-header.ts index 84b1af020..85899325c 100644 --- a/src/grammar/name-addr-header.ts +++ b/src/grammar/name-addr-header.ts @@ -1,5 +1,5 @@ -import { Parameters } from "./parameters"; -import { URI } from "./uri"; +import { Parameters } from "./parameters.js"; +import { URI } from "./uri.js"; /** * Name Address SIP header. diff --git a/src/grammar/uri.ts b/src/grammar/uri.ts index e4c938941..94fcec709 100644 --- a/src/grammar/uri.ts +++ b/src/grammar/uri.ts @@ -1,5 +1,5 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ -import { Parameters } from "./parameters"; +import { Parameters } from "./parameters.js"; interface URIObject { scheme: string; diff --git a/src/index.ts b/src/index.ts index 268a60764..6e263c14c 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,19 +1,19 @@ // Helpful name and version exports -import { LIBRARY_VERSION } from "./version"; +import { LIBRARY_VERSION } from "./version.js"; const version = LIBRARY_VERSION; const name = "sip.js"; export { name, version }; // Export api -export * from "./api"; +export * from "./api/index.js"; // Export grammar -export * from "./grammar"; +export * from "./grammar/index.js"; // Export namespaced core -import * as Core from "./core"; +import * as Core from "./core/index.js"; export { Core }; // Export namespaced web -import * as Web from "./platform/web"; +import * as Web from "./platform/web/index.js"; export { Web }; diff --git a/src/platform/web/index.ts b/src/platform/web/index.ts index 627e6198d..a41945f77 100644 --- a/src/platform/web/index.ts +++ b/src/platform/web/index.ts @@ -1,4 +1,4 @@ -export * from "./modifiers"; -export * from "./session-description-handler"; -export * from "./simple-user"; -export * from "./transport"; +export * from "./modifiers/index.js"; +export * from "./session-description-handler/index.js"; +export * from "./simple-user/index.js"; +export * from "./transport/index.js"; diff --git a/src/platform/web/modifiers/index.ts b/src/platform/web/modifiers/index.ts index 5e3c3bade..56a2f8983 100644 --- a/src/platform/web/modifiers/index.ts +++ b/src/platform/web/modifiers/index.ts @@ -2,4 +2,4 @@ * SessionDescriptionHandlerModifer functions for web browsers. * @packageDocumentation */ -export * from "./modifiers"; +export * from "./modifiers.js"; diff --git a/src/platform/web/modifiers/modifiers.ts b/src/platform/web/modifiers/modifiers.ts index 927442cba..7b9049b5f 100644 --- a/src/platform/web/modifiers/modifiers.ts +++ b/src/platform/web/modifiers/modifiers.ts @@ -1,4 +1,4 @@ -import { SessionDescriptionHandlerModifier } from "../../../api"; +import { SessionDescriptionHandlerModifier } from "../../../api/session-description-handler.js"; const stripPayload = (sdp: string, payload: string): string => { // eslint-disable-next-line @typescript-eslint/no-explicit-any diff --git a/src/platform/web/session-description-handler/index.ts b/src/platform/web/session-description-handler/index.ts index 63c3b42f0..36ed6431b 100644 --- a/src/platform/web/session-description-handler/index.ts +++ b/src/platform/web/session-description-handler/index.ts @@ -2,13 +2,13 @@ * A SessionDescriptionHandler for web browsers. * @packageDocumentation */ -export * from "./media-stream-factory-default"; -export * from "./media-stream-factory"; -export * from "./peer-connection-configuration-default"; -export * from "./peer-connection-delegate"; -export * from "./session-description-handler-configuration"; -export * from "./session-description-handler-factory-default"; -export * from "./session-description-handler-factory-options"; -export * from "./session-description-handler-factory"; -export * from "./session-description-handler-options"; -export * from "./session-description-handler"; +export * from "./media-stream-factory-default.js"; +export * from "./media-stream-factory.js"; +export * from "./peer-connection-configuration-default.js"; +export * from "./peer-connection-delegate.js"; +export * from "./session-description-handler-configuration.js"; +export * from "./session-description-handler-factory-default.js"; +export * from "./session-description-handler-factory-options.js"; +export * from "./session-description-handler-factory.js"; +export * from "./session-description-handler-options.js"; +export * from "./session-description-handler.js"; diff --git a/src/platform/web/session-description-handler/media-stream-factory-default.ts b/src/platform/web/session-description-handler/media-stream-factory-default.ts index 96b3109cb..78fdcc5a9 100644 --- a/src/platform/web/session-description-handler/media-stream-factory-default.ts +++ b/src/platform/web/session-description-handler/media-stream-factory-default.ts @@ -1,4 +1,4 @@ -import { MediaStreamFactory } from "./media-stream-factory"; +import { MediaStreamFactory } from "./media-stream-factory.js"; /** * Function which returns a MediaStreamFactory. diff --git a/src/platform/web/session-description-handler/media-stream-factory.ts b/src/platform/web/session-description-handler/media-stream-factory.ts index fadf4b16e..ef24e9438 100644 --- a/src/platform/web/session-description-handler/media-stream-factory.ts +++ b/src/platform/web/session-description-handler/media-stream-factory.ts @@ -1,5 +1,5 @@ -import { SessionDescriptionHandler } from "./session-description-handler"; -import { SessionDescriptionHandlerOptions } from "./session-description-handler-options"; +import { SessionDescriptionHandler } from "./session-description-handler.js"; +import { SessionDescriptionHandlerOptions } from "./session-description-handler-options.js"; /** * Interface of factory function which produces a MediaStream. diff --git a/src/platform/web/session-description-handler/session-description-handler-factory-default.ts b/src/platform/web/session-description-handler/session-description-handler-factory-default.ts index 9a02b5d5e..3d6396afa 100644 --- a/src/platform/web/session-description-handler/session-description-handler-factory-default.ts +++ b/src/platform/web/session-description-handler/session-description-handler-factory-default.ts @@ -1,10 +1,10 @@ -import { Session } from "../../../api"; -import { defaultMediaStreamFactory } from "./media-stream-factory-default"; -import { defaultPeerConnectionConfiguration } from "./peer-connection-configuration-default"; -import { SessionDescriptionHandler } from "./session-description-handler"; -import { SessionDescriptionHandlerConfiguration } from "./session-description-handler-configuration"; -import { SessionDescriptionHandlerFactory } from "./session-description-handler-factory"; -import { SessionDescriptionHandlerFactoryOptions } from "./session-description-handler-factory-options"; +import { Session } from "../../../api/session.js"; +import { defaultMediaStreamFactory } from "./media-stream-factory-default.js"; +import { defaultPeerConnectionConfiguration } from "./peer-connection-configuration-default.js"; +import { SessionDescriptionHandler } from "./session-description-handler.js"; +import { SessionDescriptionHandlerConfiguration } from "./session-description-handler-configuration.js"; +import { SessionDescriptionHandlerFactory } from "./session-description-handler-factory.js"; +import { SessionDescriptionHandlerFactoryOptions } from "./session-description-handler-factory-options.js"; /** * Function which returns a SessionDescriptionHandlerFactory. diff --git a/src/platform/web/session-description-handler/session-description-handler-factory-options.ts b/src/platform/web/session-description-handler/session-description-handler-factory-options.ts index cd6d48a79..07aafb63b 100644 --- a/src/platform/web/session-description-handler/session-description-handler-factory-options.ts +++ b/src/platform/web/session-description-handler/session-description-handler-factory-options.ts @@ -1,4 +1,4 @@ -import { SessionDescriptionHandlerConfiguration } from "./session-description-handler-configuration"; +import { SessionDescriptionHandlerConfiguration } from "./session-description-handler-configuration.js"; /** * Options for SessionDescriptionHandlerFactory. diff --git a/src/platform/web/session-description-handler/session-description-handler-factory.ts b/src/platform/web/session-description-handler/session-description-handler-factory.ts index 99de5c59d..85a666771 100644 --- a/src/platform/web/session-description-handler/session-description-handler-factory.ts +++ b/src/platform/web/session-description-handler/session-description-handler-factory.ts @@ -1,6 +1,7 @@ -import { Session, SessionDescriptionHandlerFactory as SessionDescriptionHandlerFactoryDefinition } from "../../../api"; -import { SessionDescriptionHandler } from "./session-description-handler"; -import { SessionDescriptionHandlerFactoryOptions } from "./session-description-handler-factory-options"; +import { Session } from "../../../api/session.js"; +import { SessionDescriptionHandlerFactory as SessionDescriptionHandlerFactoryDefinition } from "../../../api/session-description-handler-factory.js"; +import { SessionDescriptionHandler } from "./session-description-handler.js"; +import { SessionDescriptionHandlerFactoryOptions } from "./session-description-handler-factory-options.js"; /** * Factory for {@link SessionDescriptionHandler}. diff --git a/src/platform/web/session-description-handler/session-description-handler-options.ts b/src/platform/web/session-description-handler/session-description-handler-options.ts index 3d7ba41d1..69b046209 100644 --- a/src/platform/web/session-description-handler/session-description-handler-options.ts +++ b/src/platform/web/session-description-handler/session-description-handler-options.ts @@ -1,4 +1,4 @@ -import { SessionDescriptionHandlerOptions as SessionDescriptionHandlerOptionsDefinition } from "../../../api"; +import { SessionDescriptionHandlerOptions as SessionDescriptionHandlerOptionsDefinition } from "../../../api/session-description-handler.js"; /** * Options for {@link SessionDescriptionHandler}. diff --git a/src/platform/web/session-description-handler/session-description-handler.ts b/src/platform/web/session-description-handler/session-description-handler.ts index d48688bb2..459093617 100644 --- a/src/platform/web/session-description-handler/session-description-handler.ts +++ b/src/platform/web/session-description-handler/session-description-handler.ts @@ -2,12 +2,12 @@ import { BodyAndContentType, SessionDescriptionHandler as SessionDescriptionHandlerDefinition, SessionDescriptionHandlerModifier -} from "../../../api"; -import { Logger } from "../../../core"; -import { MediaStreamFactory } from "./media-stream-factory"; -import { SessionDescriptionHandlerConfiguration } from "./session-description-handler-configuration"; -import { SessionDescriptionHandlerOptions } from "./session-description-handler-options"; -import { PeerConnectionDelegate } from "./peer-connection-delegate"; +} from "../../../api/session-description-handler.js"; +import { Logger } from "../../../core/log/logger.js"; +import { MediaStreamFactory } from "./media-stream-factory.js"; +import { SessionDescriptionHandlerConfiguration } from "./session-description-handler-configuration.js"; +import { SessionDescriptionHandlerOptions } from "./session-description-handler-options.js"; +import { PeerConnectionDelegate } from "./peer-connection-delegate.js"; type ResolveFunction = () => void; type RejectFunction = (reason: Error) => void; diff --git a/src/platform/web/simple-user/index.ts b/src/platform/web/simple-user/index.ts index 6231e8cd7..f8c8225d0 100644 --- a/src/platform/web/simple-user/index.ts +++ b/src/platform/web/simple-user/index.ts @@ -2,6 +2,6 @@ * A simple SIP user implementation for web browsers. * @packageDocumentation */ -export * from "./simple-user"; -export * from "./simple-user-delegate"; -export * from "./simple-user-options"; +export * from "./simple-user.js"; +export * from "./simple-user-delegate.js"; +export * from "./simple-user-options.js"; diff --git a/src/platform/web/simple-user/simple-user-options.ts b/src/platform/web/simple-user/simple-user-options.ts index 4996b7b92..8eb677ac7 100644 --- a/src/platform/web/simple-user/simple-user-options.ts +++ b/src/platform/web/simple-user/simple-user-options.ts @@ -1,5 +1,5 @@ -import { UserAgentOptions } from "../../../api"; -import { SimpleUserDelegate } from "./simple-user-delegate"; +import { UserAgentOptions } from "../../../api/user-agent-options.js"; +import { SimpleUserDelegate } from "./simple-user-delegate.js"; /** * Media for {@link SimpleUserOptions}. diff --git a/src/platform/web/simple-user/simple-user.ts b/src/platform/web/simple-user/simple-user.ts index 6fa969830..0eba9b95c 100644 --- a/src/platform/web/simple-user/simple-user.ts +++ b/src/platform/web/simple-user/simple-user.ts @@ -1,31 +1,30 @@ -import { - Info, - Invitation, - InvitationAcceptOptions, - Inviter, - InviterInviteOptions, - InviterOptions, - Message, - Messager, - Referral, - Registerer, - RegistererOptions, - RegistererRegisterOptions, - RegistererState, - RegistererUnregisterOptions, - RequestPendingError, - Session, - SessionInviteOptions, - SessionState, - UserAgent, - UserAgentOptions, - UserAgentState -} from "../../../api"; -import { Logger } from "../../../core"; -import { SessionDescriptionHandler, SessionDescriptionHandlerOptions } from "../session-description-handler"; -import { Transport } from "../transport"; -import { SimpleUserDelegate } from "./simple-user-delegate"; -import { SimpleUserOptions } from "./simple-user-options"; +import { Info } from "../../../api/info.js"; +import { Invitation } from "../../../api/invitation.js"; +import { InvitationAcceptOptions } from "../../../api/invitation-accept-options.js"; +import { Inviter } from "../../../api/inviter.js"; +import { InviterInviteOptions } from "../../../api/inviter-invite-options.js"; +import { InviterOptions } from "../../../api/inviter-options.js"; +import { Message } from "../../../api/message.js"; +import { Messager } from "../../../api/messager.js"; +import { Referral } from "../../../api/referral.js"; +import { Registerer } from "../../../api/registerer.js"; +import { RegistererOptions } from "../../../api/registerer-options.js"; +import { RegistererRegisterOptions } from "../../../api/registerer-register-options.js"; +import { RegistererState } from "../../../api/registerer-state.js"; +import { RegistererUnregisterOptions } from "../../../api/registerer-unregister-options.js"; +import { RequestPendingError } from "../../../api/exceptions/request-pending.js"; +import { Session } from "../../../api/session.js"; +import { SessionInviteOptions } from "../../../api/session-invite-options.js"; +import { SessionState } from "../../../api/session-state.js"; +import { UserAgent } from "../../../api/user-agent.js"; +import { UserAgentOptions } from "../../../api/user-agent-options.js"; +import { UserAgentState } from "../../../api/user-agent-state.js"; +import { Logger } from "../../../core/log/logger.js"; +import { SessionDescriptionHandler } from "../session-description-handler/session-description-handler.js"; +import { SessionDescriptionHandlerOptions } from "../session-description-handler/session-description-handler-options.js"; +import { Transport } from "../transport/transport.js"; +import { SimpleUserDelegate } from "./simple-user-delegate.js"; +import { SimpleUserOptions } from "./simple-user-options.js"; /** * A simple SIP user class. diff --git a/src/platform/web/transport/index.ts b/src/platform/web/transport/index.ts index a7ef71939..6f0cc993d 100644 --- a/src/platform/web/transport/index.ts +++ b/src/platform/web/transport/index.ts @@ -2,5 +2,5 @@ * A Transport implementation for web browsers. * @packageDocumentation */ -export * from "./transport"; -export * from "./transport-options"; +export * from "./transport.js"; +export * from "./transport-options.js"; diff --git a/src/platform/web/transport/transport.ts b/src/platform/web/transport/transport.ts index 7d08fa50d..13943b753 100644 --- a/src/platform/web/transport/transport.ts +++ b/src/platform/web/transport/transport.ts @@ -1,9 +1,10 @@ -import { Emitter, EmitterImpl } from "../../../api/emitter"; -import { StateTransitionError } from "../../../api/exceptions"; -import { Transport as TransportDefinition } from "../../../api/transport"; -import { TransportState } from "../../../api/transport-state"; -import { Grammar, Logger } from "../../../core"; -import { TransportOptions } from "./transport-options"; +import { Emitter, EmitterImpl } from "../../../api/emitter.js"; +import { StateTransitionError } from "../../../api/exceptions/state-transition.js"; +import { Transport as TransportDefinition } from "../../../api/transport.js"; +import { TransportState } from "../../../api/transport-state.js"; +import { Grammar } from "../../../grammar/grammar.js"; +import { Logger } from "../../../core/log/logger.js"; +import { TransportOptions } from "./transport-options.js"; /** * Transport for SIP over secure WebSocket (WSS). diff --git a/test/spec/api/publication.spec.ts b/test/spec/api/publication.spec.ts index 6e44fb44b..9c6e7f133 100644 --- a/test/spec/api/publication.spec.ts +++ b/test/spec/api/publication.spec.ts @@ -1,6 +1,6 @@ -import { UserAgentOptions } from "../../../src/api"; -import { connectUserFake, makeUserFake, UserFake } from "../../support/api/user-fake"; -import { soon } from "../../support/api/utils"; +import { UserAgentOptions } from "../../../lib/api/index.js"; +import { connectUserFake, makeUserFake, UserFake } from "../../support/api/user-fake.js"; +import { soon } from "../../support/api/utils.js"; /** * TODO: diff --git a/test/spec/api/registration.spec.ts b/test/spec/api/registration.spec.ts index 35c1ab131..28d191f2f 100644 --- a/test/spec/api/registration.spec.ts +++ b/test/spec/api/registration.spec.ts @@ -1,9 +1,14 @@ -import { Registerer, RegistererRegisterOptions, RegistererState, RegistererUnregisterOptions } from "../../../src/api"; -import { Timers } from "../../../src/core"; -import { EmitterSpy, makeEmitterSpy } from "../../support/api/emitter-spy"; -import { TransportFake } from "../../support/api/transport-fake"; -import { connectUserFake, makeUserFake, UserFake } from "../../support/api/user-fake"; -import { soon } from "../../support/api/utils"; +import { + Registerer, + RegistererRegisterOptions, + RegistererState, + RegistererUnregisterOptions +} from "../../../lib/api/index.js"; +import { Timers } from "../../../lib/core/index.js"; +import { EmitterSpy, makeEmitterSpy } from "../../support/api/emitter-spy.js"; +import { TransportFake } from "../../support/api/transport-fake.js"; +import { connectUserFake, makeUserFake, UserFake } from "../../support/api/user-fake.js"; +import { soon } from "../../support/api/utils.js"; const SIP_REGISTER = [jasmine.stringMatching(/^REGISTER/)]; diff --git a/test/spec/api/session-in-dialog.spec.ts b/test/spec/api/session-in-dialog.spec.ts index a6c0020fa..135708bae 100644 --- a/test/spec/api/session-in-dialog.spec.ts +++ b/test/spec/api/session-in-dialog.spec.ts @@ -7,11 +7,12 @@ import { Session, SessionDescriptionHandler, SessionState -} from "../../../src/api"; -import { OutgoingRequestDelegate, SignalingState, URI } from "../../../src/core"; -import { EmitterSpy, makeEmitterSpy } from "../../support/api/emitter-spy"; -import { connectUserFake, makeUserFake, UserFake } from "../../support/api/user-fake"; -import { soon } from "../../support/api/utils"; +} from "../../../lib/api/index.js"; +import { URI } from "../../../lib/grammar/index.js"; +import { OutgoingRequestDelegate, SignalingState } from "../../../lib/core/index.js"; +import { EmitterSpy, makeEmitterSpy } from "../../support/api/emitter-spy.js"; +import { connectUserFake, makeUserFake, UserFake } from "../../support/api/user-fake.js"; +import { soon } from "../../support/api/utils.js"; const SIP_ACK = [jasmine.stringMatching(/^ACK/)]; const SIP_BYE = [jasmine.stringMatching(/^BYE/)]; diff --git a/test/spec/api/session.spec.ts b/test/spec/api/session.spec.ts index 5bec8db2e..2a485afa1 100644 --- a/test/spec/api/session.spec.ts +++ b/test/spec/api/session.spec.ts @@ -1,18 +1,24 @@ /* eslint-disable @typescript-eslint/unbound-method */ /* eslint-disable @typescript-eslint/no-use-before-define */ -import { Invitation, Inviter, SessionDelegate, SessionDescriptionHandler, SessionState } from "../../../src/api"; +import { + Invitation, + Inviter, + SessionDelegate, + SessionDescriptionHandler, + SessionState +} from "../../../lib/api/index.js"; +import { URI } from "../../../lib/grammar/index.js"; import { Logger, OutgoingRequestDelegate, SessionState as SessionDialogState, SignalingState, - Timers, - URI -} from "../../../src/core"; -import { EmitterSpy, makeEmitterSpy } from "../../support/api/emitter-spy"; -import { TransportFake } from "../../support/api/transport-fake"; -import { connectUserFake, makeUserFake, UserFake } from "../../support/api/user-fake"; -import { soon } from "../../support/api/utils"; + Timers +} from "../../../lib/core/index.js"; +import { EmitterSpy, makeEmitterSpy } from "../../support/api/emitter-spy.js"; +import { TransportFake } from "../../support/api/transport-fake.js"; +import { connectUserFake, makeUserFake, UserFake } from "../../support/api/user-fake.js"; +import { soon } from "../../support/api/utils.js"; const SIP_ACK = [jasmine.stringMatching(/^ACK/)]; const SIP_BYE = [jasmine.stringMatching(/^BYE/)]; diff --git a/test/spec/api/subscription.spec.ts b/test/spec/api/subscription.spec.ts index b9b8e5390..606cf8139 100644 --- a/test/spec/api/subscription.spec.ts +++ b/test/spec/api/subscription.spec.ts @@ -1,5 +1,12 @@ /* eslint-disable @typescript-eslint/no-use-before-define */ -import { Notification, Subscriber, Subscription, SubscriptionDelegate, SubscriptionState } from "../../../src/api"; +import { + Notification, + Subscriber, + Subscription, + SubscriptionDelegate, + SubscriptionState +} from "../../../lib/api/index.js"; +import { URI } from "../../../lib/grammar/index.js"; import { C, Dialog, @@ -8,14 +15,13 @@ import { NonInviteClientTransaction, ReSubscribeUserAgentServer, Timers, - URI, UserAgentClient, UserAgentCore -} from "../../../src/core"; -import { newTag } from "../../../src/core/messages/utils"; -import { EmitterSpy, makeEmitterSpy } from "../../support/api/emitter-spy"; -import { connectUserFake, makeUserFake, UserFake } from "../../support/api/user-fake"; -import { soon } from "../../support/api/utils"; +} from "../../../lib/core/index.js"; +import { newTag } from "../../../lib/core/messages/utils.js"; +import { EmitterSpy, makeEmitterSpy } from "../../support/api/emitter-spy.js"; +import { connectUserFake, makeUserFake, UserFake } from "../../support/api/user-fake.js"; +import { soon } from "../../support/api/utils.js"; class NotifierDialog extends Dialog { constructor(protected core: UserAgentCore, protected dialogState: DialogState) { diff --git a/test/spec/api/user-agent.spec.ts b/test/spec/api/user-agent.spec.ts index 425f9407a..db005f160 100644 --- a/test/spec/api/user-agent.spec.ts +++ b/test/spec/api/user-agent.spec.ts @@ -1,6 +1,6 @@ -import { UserAgentOptions } from "../../../src/api"; -import { connectUserFake, makeUserFake, UserFake } from "../../support/api/user-fake"; -import { soon } from "../../support/api/utils"; +import { UserAgentOptions } from "../../../lib/api/index.js"; +import { connectUserFake, makeUserFake, UserFake } from "../../support/api/user-fake.js"; +import { soon } from "../../support/api/utils.js"; /** * TODO: diff --git a/test/spec/core/grammar.spec.ts b/test/spec/core/grammar.spec.ts index 47ee79495..474100117 100644 --- a/test/spec/core/grammar.spec.ts +++ b/test/spec/core/grammar.spec.ts @@ -1,6 +1,6 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ /* eslint-disable @typescript-eslint/explicit-function-return-type */ -import { Grammar, NameAddrHeader, URI } from "../../../src/core"; +import { Grammar, NameAddrHeader, URI } from "../../../lib/grammar/index.js"; // TODO: // These old tests were ported from JavaScript to TypesSript verbatim. diff --git a/test/spec/core/messages.spec.ts b/test/spec/core/messages.spec.ts index f0a55cf23..3cb4adef5 100644 --- a/test/spec/core/messages.spec.ts +++ b/test/spec/core/messages.spec.ts @@ -1,12 +1,11 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ import { - Grammar, IncomingRequestMessage as IncomingRequest, IncomingResponseMessage as IncomingResponse, - OutgoingRequestMessage as OutgoingRequest, - URI -} from "../../../src/core"; -import * as Utils from "../../../src/core/messages/utils"; + OutgoingRequestMessage as OutgoingRequest +} from "../../../lib/core/index.js"; +import { Grammar, URI } from "../../../lib/grammar/index.js"; +import * as Utils from "../../../lib/core/messages/utils.js"; // TODO: // These old tests were ported from JavaScript to TypesSript verbatim. diff --git a/test/spec/core/name-addr-header.spec.ts b/test/spec/core/name-addr-header.spec.ts index 120f783e5..2d02c207a 100644 --- a/test/spec/core/name-addr-header.spec.ts +++ b/test/spec/core/name-addr-header.spec.ts @@ -1,5 +1,5 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ -import { Grammar, NameAddrHeader, URI } from "../../../src/core"; +import { Grammar, NameAddrHeader, URI } from "../../../lib/grammar/index.js"; // TODO: // These old tests were ported from JavaScript to TypesSript verbatim. diff --git a/test/spec/core/transactions.spec.ts b/test/spec/core/transactions.spec.ts index f922dacfa..4f514dba5 100644 --- a/test/spec/core/transactions.spec.ts +++ b/test/spec/core/transactions.spec.ts @@ -16,9 +16,9 @@ import { Transaction, TransactionState, TransactionUser, - Transport, - URI -} from "../../../src/core"; + Transport +} from "../../../lib/core/index.js"; +import { URI } from "../../../lib/grammar/index.js"; // TODO: Mocking the Requests and Responses isn't ideal and would rather use // the actual implementations, but the current implementations depend on UA diff --git a/test/spec/core/uri.spec.ts b/test/spec/core/uri.spec.ts index a31bb46f0..46024bb87 100644 --- a/test/spec/core/uri.spec.ts +++ b/test/spec/core/uri.spec.ts @@ -1,4 +1,4 @@ -import { Grammar, URI, equivalentURI } from "../../../src/core"; +import { Grammar, URI, equivalentURI } from "../../../lib/grammar/index.js"; // TODO: // These tests were ported to typescript verbatim. diff --git a/test/spec/core/user-agent-core.spec.ts b/test/spec/core/user-agent-core.spec.ts index c7f84de4b..07a93921b 100644 --- a/test/spec/core/user-agent-core.spec.ts +++ b/test/spec/core/user-agent-core.spec.ts @@ -1,4 +1,4 @@ -import { UserAgent } from "../../../src/api"; +import { UserAgent } from "../../../lib/api/index.js"; import { AckableIncomingResponseWithSession, C, @@ -33,11 +33,10 @@ import { Timers, Transport, TransportError, - URI, UserAgentCore, UserAgentCoreConfiguration -} from "../../../src/core"; - +} from "../../../lib/core/index.js"; +import { URI } from "../../../lib/grammar/index.js"; import { connectTransportToUA, makeMockOutgoingRequestDelegate, @@ -48,9 +47,9 @@ import { makeMockUA, makeMockUserAgentCoreDelegate, makeUserAgentCoreConfigurationFromUserAgent -} from "../../support/core/mocks"; +} from "../../support/core/mocks.js"; -import { soon } from "../../support/api/utils"; +import { soon } from "../../support/api/utils.js"; describe("Core UserAgentCore", () => { const userAlice = "alice"; diff --git a/test/spec/platform/web/modifiers.spec.ts b/test/spec/platform/web/modifiers.spec.ts index 8612d2a61..f4c0b3e04 100644 --- a/test/spec/platform/web/modifiers.spec.ts +++ b/test/spec/platform/web/modifiers.spec.ts @@ -1,5 +1,5 @@ /* eslint-disable max-len */ -import * as Modifiers from "../../../../src/platform/web/modifiers"; +import * as Modifiers from "../../../../lib/platform/web/modifiers/index.js"; // TODO: // These old tests were ported from JavaScript to TypesSript verbatim. diff --git a/test/spec/platform/web/session-description-handler.spec.ts b/test/spec/platform/web/session-description-handler.spec.ts index 394b7ef83..34675d48d 100644 --- a/test/spec/platform/web/session-description-handler.spec.ts +++ b/test/spec/platform/web/session-description-handler.spec.ts @@ -1,11 +1,11 @@ -import { Logger } from "../../../../src/core"; +import { Logger } from "../../../../lib/core/index.js"; import { defaultMediaStreamFactory, defaultSessionDescriptionHandlerFactory, SessionDescriptionHandlerFactoryOptions, SessionDescriptionHandler -} from "../../../../src/platform/web"; -import { BodyAndContentType, Session, UserAgent } from "../../../../src"; +} from "../../../../lib/platform/web/index.js"; +import { BodyAndContentType, Session, UserAgent } from "../../../../lib/index.js"; const splitFields = (body: string): Array => body.split(/\r?\n/); diff --git a/test/spec/platform/web/transport-websocket-failure.spec.ts b/test/spec/platform/web/transport-websocket-failure.spec.ts index 69f1ffa31..d8a3794c8 100644 --- a/test/spec/platform/web/transport-websocket-failure.spec.ts +++ b/test/spec/platform/web/transport-websocket-failure.spec.ts @@ -36,8 +36,8 @@ function stop(): void { originalWebSocket = null; } -import { LoggerFactory } from "../../../../src/core"; -import { Transport } from "../../../../src/platform/web"; +import { LoggerFactory } from "../../../../lib/core/index.js"; +import { Transport } from "../../../../lib/platform/web/index.js"; describe("Web Transport WebSocket Construction Failure", () => { const connectionTimeout = 5; // seconds diff --git a/test/spec/platform/web/transport.spec.ts b/test/spec/platform/web/transport.spec.ts index 9ee3a74dd..f18911ee6 100644 --- a/test/spec/platform/web/transport.spec.ts +++ b/test/spec/platform/web/transport.spec.ts @@ -2,11 +2,11 @@ /* eslint-disable @typescript-eslint/no-use-before-define */ import { Server, WebSocket } from "mock-socket"; -import { StateTransitionError, TransportState } from "../../../../src/api"; -import { LoggerFactory } from "../../../../src/core"; -import { Transport } from "../../../../src/platform/web"; -import { EmitterSpy, makeEmitterSpy } from "../../../support/api/emitter-spy"; -import { soon } from "../../../support/api/utils"; +import { StateTransitionError, TransportState } from "../../../../lib/api/index.js"; +import { LoggerFactory } from "../../../../lib/core/index.js"; +import { Transport } from "../../../../lib/platform/web/index.js"; +import { EmitterSpy, makeEmitterSpy } from "../../../support/api/emitter-spy.js"; +import { soon } from "../../../support/api/utils.js"; /** * Transport Unit Tests diff --git a/test/support/api/emitter-spy.ts b/test/support/api/emitter-spy.ts index d1b0ddb50..c0a4e6d80 100644 --- a/test/support/api/emitter-spy.ts +++ b/test/support/api/emitter-spy.ts @@ -1,5 +1,5 @@ -import { Emitter } from "../../../src/api"; -import { Logger } from "../../../src/core"; +import { Emitter } from "../../../lib/api/index.js"; +import { Logger } from "../../../lib/core/index.js"; type ResolveFunction = () => void; type RejectFunction = (reason: Error) => void; diff --git a/test/support/api/session-description-handler-mock.ts b/test/support/api/session-description-handler-mock.ts index 39d7bcd36..46185b8e2 100644 --- a/test/support/api/session-description-handler-mock.ts +++ b/test/support/api/session-description-handler-mock.ts @@ -3,7 +3,7 @@ import { Session, SessionDescriptionHandler, SessionDescriptionHandlerFactory -} from "../../../src/api"; +} from "../../../lib/api/index.js"; export function makeMockSessionDescriptionHandler(name: string, id: number): jasmine.SpyObj { let closed = false; diff --git a/test/support/api/transport-fake.ts b/test/support/api/transport-fake.ts index a34fecaf6..31d059c07 100644 --- a/test/support/api/transport-fake.ts +++ b/test/support/api/transport-fake.ts @@ -1,5 +1,5 @@ -import { Emitter, EmitterImpl, Transport, TransportState } from "../../../src/api"; -import { Logger } from "../../../src/core"; +import { Emitter, EmitterImpl, Transport, TransportState } from "../../../lib/api/index.js"; +import { Logger } from "../../../lib/core/index.js"; type ResolveFunction = () => void; type RejectFunction = (reason: Error) => void; diff --git a/test/support/api/user-fake.ts b/test/support/api/user-fake.ts index 656b6f219..41b10214b 100644 --- a/test/support/api/user-fake.ts +++ b/test/support/api/user-fake.ts @@ -1,7 +1,7 @@ -import { URI } from "../../../src"; -import { SessionDescriptionHandler, SIPExtension, UserAgent, UserAgentOptions } from "../../../src/api"; -import { makeMockSessionDescriptionHandlerFactory } from "./session-description-handler-mock"; -import { TransportFake } from "./transport-fake"; +import { URI } from "../../../lib/index.js"; +import { SessionDescriptionHandler, SIPExtension, UserAgent, UserAgentOptions } from "../../../lib/api/index.js"; +import { makeMockSessionDescriptionHandlerFactory } from "./session-description-handler-mock.js"; +import { TransportFake } from "./transport-fake.js"; export interface UserFake { user: string; diff --git a/test/support/core/mocks.ts b/test/support/core/mocks.ts index 7ccfe5bc8..f000ef219 100644 --- a/test/support/core/mocks.ts +++ b/test/support/core/mocks.ts @@ -1,4 +1,4 @@ -import { SIPExtension, UserAgent, UserAgentRegisteredOptionTags } from "../../../src/api"; +import { SIPExtension, UserAgent, UserAgentRegisteredOptionTags } from "../../../lib/api/index.js"; import { DigestAuthentication, IncomingAckRequest, @@ -12,11 +12,11 @@ import { SessionDelegate, SubscriptionDelegate, Transport, - URI, UserAgentCoreConfiguration, UserAgentCoreDelegate -} from "../../../src/core"; -import { createRandomToken } from "../../../src/core/messages/utils"; +} from "../../../lib/core/index.js"; +import { URI } from "../../../lib/grammar/index.js"; +import { createRandomToken } from "../../../lib/core/messages/utils.js"; export function connectTransportToUA(transport: jasmine.SpyObj, ua: UserAgent): void { transport.send.and.callFake((message: string) => { diff --git a/tsconfig-base.json b/tsconfig-base.json index 2cc167019..753f8a3da 100644 --- a/tsconfig-base.json +++ b/tsconfig-base.json @@ -1,8 +1,8 @@ { "compilerOptions": { "target": "es2017", - "module": "es2015", - "moduleResolution": "node", + "module": "NodeNext", + "moduleResolution": "NodeNext", "strict": true, "lib": ["es2017", "dom"], "types": [] // white list to avoid the unexpected like @types/node which brings in esnext From 75fdb646ea9236b0f19a626f694eb74a073c2051 Mon Sep 17 00:00:00 2001 From: John Riordan Date: Sat, 1 Oct 2022 15:53:38 -0400 Subject: [PATCH 42/73] Do not emit map files to lib by default --- src/tsconfig.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/tsconfig.json b/src/tsconfig.json index 3f87ba18b..2e5fd7662 100644 --- a/src/tsconfig.json +++ b/src/tsconfig.json @@ -1,8 +1,9 @@ { "extends": "../tsconfig-base.json", "compilerOptions": { + "sourceMap": false, "declaration": true, - "declarationMap": true, + "declarationMap": false, "outDir": "../lib" }, "include": [ From a5557ff025b89e20ea2b333e4c14ac3a99c499e4 Mon Sep 17 00:00:00 2001 From: John Riordan Date: Sun, 2 Oct 2022 12:42:13 -0400 Subject: [PATCH 43/73] Update TODO --- docs/TODO.md | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/docs/TODO.md b/docs/TODO.md index 54d1e7357..f628564cc 100644 --- a/docs/TODO.md +++ b/docs/TODO.md @@ -1,12 +1,9 @@ # Release Road Map -## Next release +## Next Release -- add .js extentions to imports to fix ES6 module resolution -- add tests for recent pull requests accepted without them - review and remove everything that was deprecated - free core and API from DOM dependencies -- figure out replacement for Travis CI - complete more work in progress - more documentation - more tests @@ -15,6 +12,10 @@ # Work in Progress +## DOM Dependencies + +This is an issue with the URI class. The new API requires a URI instance be passed as an options, so that's indirectly no longer an issue. But the URI class should not be implemented in a fashion where toString() depends on decodeURIComponent which can (and does) throw URIError: URI malformed. The short is the URI class needs to be modified and this is also somewhat related to how the parser utilizes URI. Adding it to my TODO list (towards the bottom). + ## Dev Dependencies ### api-extractor @@ -89,9 +90,27 @@ Non-exhaustive research on these parsers, generally it seems like there is nothi ### Transport - TCP Support +- WebSocket Keep Alive: The time it takes the WebSocket to recognize the remote is no longer responding is too long. - Support for "stream-oriented" transports: https://tools.ietf.org/html/rfc3261#section-18.3 - This current Transport interface only supports "message-oriented" transports. Issue #818. +## GRUU and Outbound - would be good to make sure we are compliant (tests) + +### RFC5626: Managing Client-Initiated Connections (Outbound) +### RFC5627: Obtaining and Using Globally Routable User Agent URIs (GRUUs) +- MUST include the outbound option tag in a Supported header field in a REGISTER request. +- The UAC MUST support the Path header [RFC3327] mechanism, and + indicate its support by including the 'path' option-tag in a + Supported header field value in its REGISTER requests. Other than + optionally examining the Path vector in the response, this is all + that is required of the UAC to support Path. +- UAs that support this specification SHOULD include the outbound + option tag in a Supported header field in a request that is not a + REGISTER request. +- support +sip.instance and reg-id +- support for multiple web sockets + + ## REFER handling - it has evolved over time and we are out of date ### The Session Initiation Protocol (SIP) Refer Method (2003) From 258c5036beb31ae2f9d2d1ce5157955814e45f39 Mon Sep 17 00:00:00 2001 From: John Riordan Date: Sun, 2 Oct 2022 15:54:23 -0400 Subject: [PATCH 44/73] Cleanup issue in SimpleUser Issue #939 --- src/platform/web/simple-user/simple-user.ts | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/platform/web/simple-user/simple-user.ts b/src/platform/web/simple-user/simple-user.ts index 0eba9b95c..3cb952406 100644 --- a/src/platform/web/simple-user/simple-user.ts +++ b/src/platform/web/simple-user/simple-user.ts @@ -759,9 +759,6 @@ export class SimpleUser { // Setup session state change handler this.session.stateChange.addListener((state: SessionState) => { - if (this.session !== session) { - return; // if our session has changed, just return - } this.logger.log(`[${this.id}] session state changed to ${state}`); switch (state) { case SessionState.Initial: From f06939c119149a3e00ad8acf69f37360d3331a62 Mon Sep 17 00:00:00 2001 From: John Riordan Date: Sun, 2 Oct 2022 16:10:40 -0400 Subject: [PATCH 45/73] Fix double state trans error on getOffer() failure See issue: #950 --- src/api/inviter.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/api/inviter.ts b/src/api/inviter.ts index a9e3bdcef..f04717b9e 100644 --- a/src/api/inviter.ts +++ b/src/api/inviter.ts @@ -436,7 +436,11 @@ export class Inviter extends Session { }) .catch((error) => { this.logger.log(error.message); - this.stateTransition(SessionState.Terminated); + // It's possible we are already terminated, + // so don't throw trying to transition again. + if (this.state !== SessionState.Terminated) { + this.stateTransition(SessionState.Terminated); + } throw error; }); } From d8b4b3c469739a980d687551432e70ddc3ab3c59 Mon Sep 17 00:00:00 2001 From: John Riordan Date: Tue, 4 Oct 2022 09:36:51 -0400 Subject: [PATCH 46/73] Add remarks to makeURI documentation --- src/api/user-agent.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/api/user-agent.ts b/src/api/user-agent.ts index f7ce7cfbe..70261b2eb 100644 --- a/src/api/user-agent.ts +++ b/src/api/user-agent.ts @@ -243,6 +243,12 @@ export class UserAgent { * Create a URI instance from a string. * @param uri - The string to parse. * + * @remarks + * Returns undefined if the syntax of the URI is invalid. + * The syntax must conform to a SIP URI as defined in the RFC. + * 25 Augmented BNF for the SIP Protocol + * https://tools.ietf.org/html/rfc3261#section-25 + * * @example * ```ts * const uri = UserAgent.makeURI("sip:edgar@example.com"); From b4b2abe9e04d1e7ad1b8b758e3d58d6a3c8487c3 Mon Sep 17 00:00:00 2001 From: Sean Bright Date: Wed, 12 Oct 2022 09:05:39 -0400 Subject: [PATCH 47/73] transport-fake.ts: Prevent potential infinite recursion. --- test/support/api/transport-fake.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/support/api/transport-fake.ts b/test/support/api/transport-fake.ts index 31d059c07..74ec40e11 100644 --- a/test/support/api/transport-fake.ts +++ b/test/support/api/transport-fake.ts @@ -33,7 +33,7 @@ export class TransportFake implements Transport { } public get state(): TransportState { - return this.state; + return this._state; } public get stateChange(): Emitter { From 723c0562384ce03fa46a164675793771fd57f47f Mon Sep 17 00:00:00 2001 From: Sean Bright Date: Fri, 14 Oct 2022 14:44:27 -0400 Subject: [PATCH 48/73] simple-user.ts: Allow 0 for reconnection attempts and delay. --- src/platform/web/simple-user/simple-user.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/platform/web/simple-user/simple-user.ts b/src/platform/web/simple-user/simple-user.ts index 3cb952406..a05864b09 100644 --- a/src/platform/web/simple-user/simple-user.ts +++ b/src/platform/web/simple-user/simple-user.ts @@ -614,12 +614,12 @@ export class SimpleUser { } /** - * Attempt reconnection up to `maxReconnectionAttempts` times. + * Attempt reconnection up to `reconnectionAttempts` times. * @param reconnectionAttempt - Current attempt number. */ private attemptReconnection(reconnectionAttempt = 1): void { - const reconnectionAttempts = this.options.reconnectionAttempts || 3; - const reconnectionDelay = this.options.reconnectionDelay || 4; + const reconnectionAttempts = this.options.reconnectionAttempts ?? 3; + const reconnectionDelay = this.options.reconnectionDelay ?? 4; if (!this.connectRequested) { this.logger.log(`[${this.id}] Reconnection not currently desired`); From e2d80adda0204a2b06d6d667ee00072213f89f71 Mon Sep 17 00:00:00 2001 From: Sean Bright Date: Fri, 14 Oct 2022 15:29:22 -0400 Subject: [PATCH 49/73] session.ts: Send Reason header with BYE on re-INVITE failure. This is currently using the wrong array of headers. --- src/api/session.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/api/session.ts b/src/api/session.ts index b8eb45753..0eb30121a 100644 --- a/src/api/session.ts +++ b/src/api/session.ts @@ -991,7 +991,7 @@ export abstract class Session { } const extraHeadersBye: Array = []; extraHeadersBye.push("Reason: " + this.getReasonHeaderValue(500, "Internal Server Error")); - this.dialog.bye(undefined, { extraHeaders }); + this.dialog.bye(undefined, { extraHeaders: extraHeadersBye }); this.stateTransition(SessionState.Terminated); } if (this.delegate && this.delegate.onInvite) { From 87c8d50d9a6af7458c41959881694b973e6e3115 Mon Sep 17 00:00:00 2001 From: John Riordan Date: Mon, 17 Oct 2022 13:00:16 -0400 Subject: [PATCH 50/73] Add SessionManager and update SimpleUser --- demo/demo-2.ts | 2 +- demo/demo-3.ts | 2 +- src/platform/web/index.ts | 1 + .../session-description-handler.ts | 34 + src/platform/web/session-manager/index.ts | 6 + .../managed-session-factory-default.ts | 14 + .../managed-session-factory.ts | 17 + .../web/session-manager/managed-session.ts | 14 + .../session-manager-delegate.ts | 94 ++ .../session-manager-options.ts | 171 ++ .../web/session-manager/session-manager.ts | 1414 +++++++++++++++++ .../web/simple-user/simple-user-options.ts | 6 + src/platform/web/simple-user/simple-user.ts | 913 +---------- 13 files changed, 1846 insertions(+), 842 deletions(-) create mode 100644 src/platform/web/session-manager/index.ts create mode 100644 src/platform/web/session-manager/managed-session-factory-default.ts create mode 100644 src/platform/web/session-manager/managed-session-factory.ts create mode 100644 src/platform/web/session-manager/managed-session.ts create mode 100644 src/platform/web/session-manager/session-manager-delegate.ts create mode 100644 src/platform/web/session-manager/session-manager-options.ts create mode 100644 src/platform/web/session-manager/session-manager.ts diff --git a/demo/demo-2.ts b/demo/demo-2.ts index e4dfa86d0..1c0b6a529 100644 --- a/demo/demo-2.ts +++ b/demo/demo-2.ts @@ -347,7 +347,7 @@ function makeDisconnectButtonClickListener( function makeRegisterButtonClickListener(user: SimpleUser, registerButton: HTMLButtonElement): () => void { return () => { user - .register(undefined, { + .register({ // An example of how to get access to a SIP response message for custom handling requestDelegate: { onReject: (response) => { diff --git a/demo/demo-3.ts b/demo/demo-3.ts index ee3951bdc..edff3b415 100644 --- a/demo/demo-3.ts +++ b/demo/demo-3.ts @@ -402,7 +402,7 @@ function makeDisconnectButtonClickListener( function makeRegisterButtonClickListener(user: SimpleUser, registerButton: HTMLButtonElement): () => void { return () => { user - .register(undefined, { + .register({ // An example of how to get access to a SIP response message for custom handling requestDelegate: { onReject: (response) => { diff --git a/src/platform/web/index.ts b/src/platform/web/index.ts index a41945f77..e34e2af41 100644 --- a/src/platform/web/index.ts +++ b/src/platform/web/index.ts @@ -1,4 +1,5 @@ export * from "./modifiers/index.js"; export * from "./session-description-handler/index.js"; +export * from "./session-manager/index.js"; export * from "./simple-user/index.js"; export * from "./transport/index.js"; diff --git a/src/platform/web/session-description-handler/session-description-handler.ts b/src/platform/web/session-description-handler/session-description-handler.ts index 459093617..55ee7a63f 100644 --- a/src/platform/web/session-description-handler/session-description-handler.ts +++ b/src/platform/web/session-description-handler/session-description-handler.ts @@ -207,6 +207,40 @@ export class SessionDescriptionHandler implements SessionDescriptionHandlerDefin this._peerConnection = undefined; } + /** + * Helper function to enable/disable media tracks. + * @param enable - If true enable tracks, otherwise disable tracks. + */ + public enableReceiverTracks(enable: boolean): void { + const peerConnection = this.peerConnection; + if (!peerConnection) { + throw new Error("Peer connection closed."); + } + + peerConnection.getReceivers().forEach((receiver) => { + if (receiver.track) { + receiver.track.enabled = enable; + } + }); + } + + /** + * Helper function to enable/disable media tracks. + * @param enable - If true enable tracks, otherwise disable tracks. + */ + public enableSenderTracks(enable: boolean): void { + const peerConnection = this.peerConnection; + if (!peerConnection) { + throw new Error("Peer connection closed."); + } + + peerConnection.getSenders().forEach((sender) => { + if (sender.track) { + sender.track.enabled = enable; + } + }); + } + /** * Creates an offer or answer. * @param options - Options bucket. diff --git a/src/platform/web/session-manager/index.ts b/src/platform/web/session-manager/index.ts new file mode 100644 index 000000000..5d0378796 --- /dev/null +++ b/src/platform/web/session-manager/index.ts @@ -0,0 +1,6 @@ +export * from "./managed-session-factory-default.js"; +export * from "./managed-session-factory.js"; +export * from "./managed-session.js"; +export * from "./session-manager-delegate.js"; +export * from "./session-manager-options.js"; +export * from "./session-manager.js"; diff --git a/src/platform/web/session-manager/managed-session-factory-default.ts b/src/platform/web/session-manager/managed-session-factory-default.ts new file mode 100644 index 000000000..557248b17 --- /dev/null +++ b/src/platform/web/session-manager/managed-session-factory-default.ts @@ -0,0 +1,14 @@ +import { Session } from "../../../api/session.js"; +import { ManagedSessionFactory } from "./managed-session-factory.js"; +import { ManagedSession } from "./managed-session.js"; +import { SessionManager } from "./session-manager.js"; + +/** + * Function which returns a ManagedSessionFactory. + * @public + */ +export function defaultManagedSessionFactory(): ManagedSessionFactory { + return (sessionManager: SessionManager, session: Session): ManagedSession => { + return { session, held: false, muted: false }; + }; +} diff --git a/src/platform/web/session-manager/managed-session-factory.ts b/src/platform/web/session-manager/managed-session-factory.ts new file mode 100644 index 000000000..9b65d344f --- /dev/null +++ b/src/platform/web/session-manager/managed-session-factory.ts @@ -0,0 +1,17 @@ +import { Session } from "../../../api/session.js"; +import { ManagedSession } from "./managed-session.js"; +import { SessionManager } from "./session-manager.js"; + +/** + * Factory for {@link ManagedSession}. + * @public + */ +export interface ManagedSessionFactory { + /** + * SessionDescriptionHandler factory function. + * @remarks + * The `options` are provided as part of the UserAgent configuration + * and passed through on every call to SessionDescriptionHandlerFactory's constructor. + */ + (sessionManager: SessionManager, session: Session): ManagedSession; +} diff --git a/src/platform/web/session-manager/managed-session.ts b/src/platform/web/session-manager/managed-session.ts new file mode 100644 index 000000000..28dc2618f --- /dev/null +++ b/src/platform/web/session-manager/managed-session.ts @@ -0,0 +1,14 @@ +import { Session } from "../../../api/session.js"; +import { SessionManagerMediaLocal, SessionManagerMediaRemote } from "./session-manager-options.js"; + +/** + * An interface for managed the sessions. + * @public + */ +export interface ManagedSession { + held: boolean; + muted: boolean; + session: Session; + mediaLocal?: SessionManagerMediaLocal; + mediaRemote?: SessionManagerMediaRemote; +} diff --git a/src/platform/web/session-manager/session-manager-delegate.ts b/src/platform/web/session-manager/session-manager-delegate.ts new file mode 100644 index 000000000..3f157950d --- /dev/null +++ b/src/platform/web/session-manager/session-manager-delegate.ts @@ -0,0 +1,94 @@ +import { Message } from "../../../api/message.js"; +import { Notification } from "../../../api/notification.js"; +import { Session } from "../../../api/session.js"; + +/** + * Delegate for {@link SessionManager}. + * @public + */ +export interface SessionManagerDelegate { + /** + * Called when a call is answered. + * @remarks + * Callback for handling establishment of a new Session. + */ + onCallAnswered?(session: Session): void; + + /** + * Called when a call is created. + * @remarks + * Callback for handling the creation of a new Session. + */ + onCallCreated?(session: Session): void; + + /** + * Called when a call is received. + * @remarks + * Callback for handling incoming INVITE requests. + * The callback must either accept or reject the incoming call by calling `answer()` or `decline()` respectively. + */ + onCallReceived?(session: Session): void; + + /** + * Called when a call is hung up. + * @remarks + * Callback for handling termination of a Session. + */ + onCallHangup?(session: Session): void; + + /** + * Called when a call is put on hold or taken off hold. + * @remarks + * Callback for handling re-INVITE responses. + */ + onCallHold?(session: Session, held: boolean): void; + + /** + * Called when a call receives an incoming DTMF tone. + * @remarks + * Callback for handling an incoming INFO request with content type application/dtmf-relay. + */ + onCallDTMFReceived?(session: Session, tone: string, duration: number): void; + + /** + * Called upon receiving a message. + * @remarks + * Callback for handling incoming MESSAGE requests. + * @param message - The message received. + */ + onMessageReceived?(message: Message): void; + + /** + * Called upon receiving a notification. + * @remarks + * Callback for handling incoming NOTIFY requests. + * @param notification - The notication received. + */ + onNotificationReceived?(notification: Notification): void; + + /** + * Called when user is registered to received calls. + */ + onRegistered?(): void; + + /** + * Called when user is no longer registered to received calls. + */ + onUnregistered?(): void; + + /** + * Called when user is connected to server. + * @remarks + * Callback for handling user becomes connected. + */ + onServerConnect?(): void; + + /** + * Called when user is no longer connected. + * @remarks + * Callback for handling user becomes disconnected. + * + * @param error - An Error if server caused the disconnect. Otherwise undefined. + */ + onServerDisconnect?(error?: Error): void; +} diff --git a/src/platform/web/session-manager/session-manager-options.ts b/src/platform/web/session-manager/session-manager-options.ts new file mode 100644 index 000000000..6d052b2e2 --- /dev/null +++ b/src/platform/web/session-manager/session-manager-options.ts @@ -0,0 +1,171 @@ +import { RegistererOptions } from "../../../api/registerer-options.js"; +import { RegistererRegisterOptions } from "../../../api/registerer-register-options.js"; +import { Session } from "../../../api/session.js"; +import { UserAgentOptions } from "../../../api/user-agent-options.js"; +import { ManagedSessionFactory } from "./managed-session-factory.js"; +import { SessionManagerDelegate } from "./session-manager-delegate.js"; + +/** + * Media for {@link SessionManagerOptions}. + * @public + */ +export interface SessionManagerMedia { + /** + * Offer/Answer constraints determine if audio and/or video are utilized. + * If not specified, only audio is utilized (audio is true, video is false). + * @remarks + * Constraints are used when creating local media stream. + * If undefined, defaults to audio true and video false. + * If audio and video are false, media stream will have no tracks. + */ + constraints?: SessionManagerMediaConstraints; + + /** HTML elements for local media streams. */ + local?: SessionManagerMediaLocal | ((session: Session) => SessionManagerMediaLocal); + + /** Local HTML media elements. */ + remote?: SessionManagerMediaRemote | ((session: Session) => SessionManagerMediaRemote); +} + +/** + * Constraints for {@link SessionManagerMedia}. + * @public + */ +export interface SessionManagerMediaConstraints { + /** If true, offer and answer to send and receive audio. */ + audio: boolean; + /** If true, offer and answer to send and receive video. */ + video: boolean; +} + +/** + * Local media elements for {@link SessionManagerMedia}. + * @public + */ +export interface SessionManagerMediaLocal { + /** The local video media stream is attached to this element. */ + video?: HTMLVideoElement; +} + +/** + * Remote media elements for {@link SessionManagerMedia}. + * @public + */ +export interface SessionManagerMediaRemote { + /** The remote audio media stream is attached to this element. */ + audio?: HTMLAudioElement; + /** The remote video media stream is attached to this element. */ + video?: HTMLVideoElement; +} + +/** + * Options for {@link SessionManager}. + * @public + */ +export interface SessionManagerOptions { + /** + * User's SIP Address of Record (AOR). + * @remarks + * The AOR is registered to receive incoming calls. + * If not specified, a random anonymous address is created for the user. + */ + aor?: string; + + /** + * If `true`, the user agent calls the `stop()` method on the window event `beforeunload`. + * @defaultValue `true` + */ + autoStop?: boolean; + + /** + * Delegate for SessionManager. + */ + delegate?: SessionManagerDelegate; + + /** + * Stop waiting for ICE gathering to complete once a server reflexive address is obtained. + * @remarks + * This is an aggressive approach to limiting the amount of time spent gathering ICE candidates. + * While this will contribute to minimizing the post dial/answer delay experienced, + * it will very likely prevent a complete set of candidates from being gathered. + * If an ICE gathering timeout is also provided as an option to the session + * description handler, waiting will stop on whichever event occurs first. + * @defaultValue `false` + */ + iceStopWaitingOnServerReflexive?: boolean; + + /** + * A factory for generating `ManagedSession` instances. + * @remarks + * The factory will be passed a `Session` object for the current session. + * @defaultValue `Web.SessionManager.defaultManagedSessionFactory` + */ + managedSessionFactory?: ManagedSessionFactory; + + /** + * Maximum number of simultaneous sessions to manage. + * @remarks + * Set to 0 for unlimited. + * @defaultValue 2 + */ + maxSimultaneousSessions?: number; + + /** + * Media options. + */ + media?: SessionManagerMedia; + + /** + * Maximum number of times to attempt to reconnection. + * @remarks + * When the transport connection is lost (WebSocket disconnects), + * reconnection will be attempted immediately. If that fails, + * reconnection will be attempted again when the browser indicates + * the application has come online. See: + * https://developer.mozilla.org/en-US/docs/Web/API/NavigatorOnLine + * @defaultValue 3 + */ + reconnectionAttempts?: number; + + /** + * Seconds to wait between reconnection attempts. + * @defaultValue 4 + */ + reconnectionDelay?: number; + + /** + * If `true` then registration attempts will be automatically retried + * when any registration attempts fail or is otherwise rejected. + * @defaultValue `false` + */ + registrationRetry?: boolean; + + /** + * Time to wait before retrying to send a registration reqeust in seconds. + * @defaultValue 3 + */ + registrationRetryInterval?: number; + + /** + * Does nothing if undefined or resolves false. + * If resolves true, the next regitration attempt will be blocked. + */ + registerGuard?: (() => Promise) | null; + + /** + * Options for Registerer. + */ + registererOptions?: RegistererOptions; + + /** + * Options for register requests (auto register only). + * @remarks + * Any options provided here are overriden by the options provided via a cal to `register()`. + */ + registererRegisterOptions?: RegistererRegisterOptions; + + /** + * Options for UserAgent. + */ + userAgentOptions?: UserAgentOptions; +} diff --git a/src/platform/web/session-manager/session-manager.ts b/src/platform/web/session-manager/session-manager.ts new file mode 100644 index 000000000..7307a89c6 --- /dev/null +++ b/src/platform/web/session-manager/session-manager.ts @@ -0,0 +1,1414 @@ +import { Info } from "../../../api/info.js"; +import { Invitation } from "../../../api/invitation.js"; +import { InvitationAcceptOptions } from "../../../api/invitation-accept-options.js"; +import { Inviter } from "../../../api/inviter.js"; +import { InviterInviteOptions } from "../../../api/inviter-invite-options.js"; +import { InviterOptions } from "../../../api/inviter-options.js"; +import { Message } from "../../../api/message.js"; +import { Messager } from "../../../api/messager.js"; +import { Notification } from "../../../api/notification.js"; +import { Referral } from "../../../api/referral.js"; +import { Registerer } from "../../../api/registerer.js"; +import { RegistererOptions } from "../../../api/registerer-options.js"; +import { RegistererRegisterOptions } from "../../../api/registerer-register-options.js"; +import { RegistererState } from "../../../api/registerer-state.js"; +import { RegistererUnregisterOptions } from "../../../api/registerer-unregister-options.js"; +import { RequestPendingError } from "../../../api/exceptions/request-pending.js"; +import { Session } from "../../../api/session.js"; +import { SessionInviteOptions } from "../../../api/session-invite-options.js"; +import { SessionReferOptions } from "../../../api/session-refer-options.js"; +import { SessionState } from "../../../api/session-state.js"; +import { UserAgent } from "../../../api/user-agent.js"; +import { UserAgentOptions } from "../../../api/user-agent-options.js"; +import { UserAgentState } from "../../../api/user-agent-state.js"; +import { Logger } from "../../../core/log/logger.js"; +import { SessionDescriptionHandler } from "../session-description-handler/session-description-handler.js"; +import { SessionDescriptionHandlerOptions } from "../session-description-handler/session-description-handler-options.js"; +import { Transport } from "../transport/transport.js"; +import { ManagedSession } from "./managed-session.js"; +import { SessionManagerDelegate } from "./session-manager-delegate.js"; +import { SessionManagerOptions } from "./session-manager-options.js"; +import { defaultManagedSessionFactory } from "./managed-session-factory-default.js"; + +/** + * A session manager for SIP.js sessions. + * @public + */ +export class SessionManager { + /** Delegate. */ + public delegate: SessionManagerDelegate | undefined; + + /** Sessions being managed. */ + public managedSessions: Array = []; + + /** User agent which created sessions being managed. */ + public userAgent: UserAgent; + + private attemptingReconnection = false; + private logger: Logger; + private options: Required; + private registrationAttemptTimeout?: ReturnType; + private registerer: Registerer | undefined; + private registererOptions: RegistererOptions | undefined; + private registererRegisterOptions: RegistererRegisterOptions; + private shouldBeConnected = false; + private shouldBeRegistered = false; + + /** + * Constructs a new instance of the `SessionManager` class. + * @param server - SIP WebSocket Server URL. + * @param options - Options bucket. See {@link SessionManagerOptions} for details. + */ + constructor(server: string, options: SessionManagerOptions = {}) { + // Delegate + this.delegate = options.delegate; + + // Copy options + this.options = { + // Defaults + ...{ + aor: "", + autoStop: true, + delegate: {}, + iceStopWaitingOnServerReflexive: false, + managedSessionFactory: defaultManagedSessionFactory(), + maxSimultaneousSessions: 2, + media: {}, + reconnectionAttempts: 3, + reconnectionDelay: 4, + registrationRetry: false, + registrationRetryInterval: 3, + registerGuard: null, + registererOptions: {}, + registererRegisterOptions: {}, + userAgentOptions: {} + }, + ...options + }; + + // UserAgentOptions + const userAgentOptions: UserAgentOptions = { + ...options.userAgentOptions + }; + + // Transport + if (!userAgentOptions.transportConstructor) { + userAgentOptions.transportConstructor = Transport; + } + + // TransportOptions + if (!userAgentOptions.transportOptions) { + userAgentOptions.transportOptions = { + server + }; + } + + // URI + if (!userAgentOptions.uri) { + // If an AOR was provided, convert it to a URI + if (options.aor) { + const uri = UserAgent.makeURI(options.aor); + if (!uri) { + throw new Error(`Failed to create valid URI from ${options.aor}`); + } + userAgentOptions.uri = uri; + } + } + + // UserAgent + this.userAgent = new UserAgent(userAgentOptions); + + // UserAgent's delegate + this.userAgent.delegate = { + // Handle connection with server established + onConnect: (): void => { + this.logger.log(`Connected`); + if (this.delegate && this.delegate.onServerConnect) { + this.delegate.onServerConnect(); + } + // Attempt to register if we are supposed to be registered. + if (this.shouldBeRegistered) { + this.register(); + } + }, + // Handle connection with server lost + onDisconnect: async (error?: Error): Promise => { + this.logger.log(`Disconnected`); + if (this.delegate && this.delegate.onServerDisconnect) { + this.delegate.onServerDisconnect(error); + } + // If the user called `disconnect` a graceful cleanup will be done therein. + // Only cleanup if network/server dropped the connection. + // Only reconnect if network/server dropped the connection + if (error) { + // There is no transport at this point, so we are not expecting to be able to + // send messages much less get responses. So just dispose of everything without + // waiting for anything to succeed. + if (this.registerer) { + this.logger.log(`Disposing of registerer...`); + this.registerer.dispose().catch((e: Error) => { + this.logger.debug(`Error occurred disposing of registerer after connection with server was lost.`); + this.logger.debug(e.toString()); + }); + this.registerer = undefined; + } + this.managedSessions + .slice() + .map((el) => el.session) + .forEach(async (session) => { + this.logger.log(`Disposing of session...`); + session.dispose().catch((e: Error) => { + this.logger.debug(`Error occurred disposing of a session after connection with server was lost.`); + this.logger.debug(e.toString()); + }); + }); + // Attempt to reconnect if we are supposed to be connected. + if (this.shouldBeConnected) { + this.attemptReconnection(); + } + } + }, + // Handle incoming invitations + onInvite: (invitation: Invitation): void => { + this.logger.log(`[${invitation.id}] Received INVITE`); + + // Guard against a maximum number of pre-existing sessions. + // An incoming INVITE request may be received at any time and/or while in the process + // of sending an outgoing INVITE request. So we reject any incoming INVITE in those cases. + const maxSessions = this.options.maxSimultaneousSessions; + if (maxSessions !== 0 && this.managedSessions.length > maxSessions) { + this.logger.warn(`[${invitation.id}] Session already in progress, rejecting INVITE...`); + invitation + .reject() + .then(() => { + this.logger.log(`[${invitation.id}] Rejected INVITE`); + }) + .catch((error: Error) => { + this.logger.error(`[${invitation.id}] Failed to reject INVITE`); + this.logger.error(error.toString()); + }); + return; + } + + // Use our configured constraints as options for any Inviter created as result of a REFER + const referralInviterOptions: InviterOptions = { + sessionDescriptionHandlerOptions: { constraints: this.constraints } + }; + + // Initialize our session + this.initSession(invitation, referralInviterOptions); + + // Delegate + if (this.delegate && this.delegate.onCallReceived) { + this.delegate.onCallReceived(invitation); + } else { + this.logger.warn(`[${invitation.id}] No handler available, rejecting INVITE...`); + invitation + .reject() + .then(() => { + this.logger.log(`[${invitation.id}] Rejected INVITE`); + }) + .catch((error: Error) => { + this.logger.error(`[${invitation.id}] Failed to reject INVITE`); + this.logger.error(error.toString()); + }); + } + }, + // Handle incoming messages + onMessage: (message: Message): void => { + message.accept().then(() => { + if (this.delegate && this.delegate.onMessageReceived) { + this.delegate.onMessageReceived(message); + } + }); + }, + // Handle incoming notifications + onNotify: (notification: Notification): void => { + notification.accept().then(() => { + if (this.delegate && this.delegate.onNotificationReceived) { + this.delegate.onNotificationReceived(notification); + } + }); + } + }; + + // RegistererOptions + this.registererOptions = { + ...options.registererOptions + }; + + this.registererOptions.expires = 60; + + // RegistererRegisterOptions + this.registererRegisterOptions = { + ...options.registererRegisterOptions + }; + + // Retry registration on failure or rejection. + if (this.options.registrationRetry) { + // If the register request is rejected, try again... + this.registererRegisterOptions.requestDelegate = this.registererRegisterOptions.requestDelegate || {}; + const existingOnReject = this.registererRegisterOptions.requestDelegate.onReject; + this.registererRegisterOptions.requestDelegate.onReject = (response) => { + existingOnReject && existingOnReject(response); + // If at first we don't succeed, try try again... + this.attemptRegistration(); + }; + } + + // Use the SIP.js logger + this.logger = this.userAgent.getLogger("sip.SessionManager"); + + // Monitor network connectivity and attempt reconnection and reregistration when we come online + window.addEventListener("online", () => { + this.logger.log(`Online`); + if (this.shouldBeConnected) { + this.connect(); + } + }); + + // Before unload, clean up and disconnect. + if (this.options.autoStop) { + window.addEventListener("beforeunload", async () => { + this.shouldBeConnected = false; + this.shouldBeRegistered = false; + await this.userAgent.stop(); + }); + } + } + + /** + * The local media stream. Undefined if call not answered. + * @param session - Session to get the media stream from. + */ + public getLocalMediaStream(session: Session): MediaStream | undefined { + const sdh = session.sessionDescriptionHandler; + if (!sdh) { + return undefined; + } + if (!(sdh instanceof SessionDescriptionHandler)) { + throw new Error("Session description handler not instance of web SessionDescriptionHandler"); + } + return sdh.localMediaStream; + } + + /** + * The remote media stream. Undefined if call not answered. + * @param session - Session to get the media stream from. + */ + public getRemoteMediaStream(session: Session): MediaStream | undefined { + const sdh = session.sessionDescriptionHandler; + if (!sdh) { + return undefined; + } + if (!(sdh instanceof SessionDescriptionHandler)) { + throw new Error("Session description handler not instance of web SessionDescriptionHandler"); + } + return sdh.remoteMediaStream; + } + + /** + * The local audio track, if available. + * @param session - Session to get track from. + * @deprecated Use localMediaStream and get track from the stream. + */ + public getLocalAudioTrack(session: Session): MediaStreamTrack | undefined { + return this.getLocalMediaStream(session) + ?.getTracks() + .find((track) => track.kind === "audio"); + } + + /** + * The local video track, if available. + * @param session - Session to get track from. + * @deprecated Use localMediaStream and get track from the stream. + */ + public getLocalVideoTrack(session: Session): MediaStreamTrack | undefined { + return this.getLocalMediaStream(session) + ?.getTracks() + .find((track) => track.kind === "video"); + } + + /** + * The remote audio track, if available. + * @param session - Session to get track from. + * @deprecated Use remoteMediaStream and get track from the stream. + */ + public getRemoteAudioTrack(session: Session): MediaStreamTrack | undefined { + return this.getRemoteMediaStream(session) + ?.getTracks() + .find((track) => track.kind === "audio"); + } + + /** + * The remote video track, if available. + * @param session - Session to get track from. + * @deprecated Use remoteMediaStream and get track from the stream. + */ + public getRemoteVideoTrack(session: Session): MediaStreamTrack | undefined { + return this.getRemoteMediaStream(session) + ?.getTracks() + .find((track) => track.kind === "video"); + } + + /** + * Connect. + * @remarks + * If not started, starts the UserAgent connecting the WebSocket Transport. + * Otherwise reconnects the UserAgent's WebSocket Transport. + * Attempts will be made to reconnect as needed. + */ + public async connect(): Promise { + this.logger.log(`Connecting UserAgent...`); + this.shouldBeConnected = true; + if (this.userAgent.state !== UserAgentState.Started) { + return this.userAgent.start(); + } + return this.userAgent.reconnect(); + } + + /** + * Disconnect. + * @remarks + * If not stopped, stops the UserAgent disconnecting the WebSocket Transport. + */ + public async disconnect(): Promise { + this.logger.log(`Disconnecting UserAgent...`); + if (this.userAgent.state === UserAgentState.Stopped) { + return Promise.resolve(); + } + this.shouldBeConnected = false; + this.shouldBeRegistered = false; + this.registerer = undefined; + return this.userAgent.stop(); + } + + /** + * Return true if transport is connected. + */ + public isConnected(): boolean { + return this.userAgent.isConnected(); + } + + /** + * Start receiving incoming calls. + * @remarks + * Send a REGISTER request for the UserAgent's AOR. + * Resolves when the REGISTER request is sent, otherwise rejects. + * Attempts will be made to re-register as needed. + */ + public async register(registererRegisterOptions?: RegistererRegisterOptions): Promise { + this.logger.log(`Registering UserAgent...`); + this.shouldBeRegistered = true; + if (registererRegisterOptions !== undefined) { + this.registererRegisterOptions = { + ...registererRegisterOptions + }; + } + if (!this.registerer) { + this.registerer = new Registerer(this.userAgent, this.registererOptions); + this.registerer.stateChange.addListener((state: RegistererState) => { + switch (state) { + case RegistererState.Initial: + break; + case RegistererState.Registered: + if (this.delegate && this.delegate.onRegistered) { + this.delegate.onRegistered(); + } + break; + case RegistererState.Unregistered: + if (this.delegate && this.delegate.onUnregistered) { + this.delegate.onUnregistered(); + } + // If we transition to an unregister state, attempt to get back to a registered state. + if (this.shouldBeRegistered) { + this.attemptRegistration(); + } + break; + case RegistererState.Terminated: + break; + default: + throw new Error("Unknown registerer state."); + } + }); + } + return this.attemptRegistration(true); + } + + /** + * Stop receiving incoming calls. + * @remarks + * Send an un-REGISTER request for the UserAgent's AOR. + * Resolves when the un-REGISTER request is sent, otherwise rejects. + */ + public async unregister(registererUnregisterOptions?: RegistererUnregisterOptions): Promise { + this.logger.log(`Unregistering UserAgent...`); + this.shouldBeRegistered = false; + if (!this.registerer) { + this.logger.warn(`No registerer to unregister.`); + return Promise.resolve(); + } + return this.registerer.unregister(registererUnregisterOptions).then(() => { + return; + }); + } + + /** + * Make an outgoing call. + * @remarks + * Send an INVITE request to create a new Session. + * Resolves when the INVITE request is sent, otherwise rejects. + * Use `onCallAnswered` delegate method to determine if Session is established. + * @param destination - The target destination to call. A SIP address to send the INVITE to. + * @param inviterOptions - Optional options for Inviter constructor. + * @param inviterInviteOptions - Optional options for Inviter.invite(). + */ + public async call( + destination: string, + inviterOptions?: InviterOptions, + inviterInviteOptions?: InviterInviteOptions + ): Promise { + this.logger.log(`Beginning Session...`); + + // Guard against a maximum number of pre-existing sessions. + // An incoming INVITE request may be received at any time and/or while in the process + // of sending an outgoing INVITE request. So we reject any incoming INVITE in those cases. + const maxSessions = this.options.maxSimultaneousSessions; + if (maxSessions !== 0 && this.managedSessions.length > maxSessions) { + return Promise.reject(new Error("Maximum number of sessions already exists.")); + } + + const target = UserAgent.makeURI(destination); + if (!target) { + return Promise.reject(new Error(`Failed to create a valid URI from "${destination}"`)); + } + + // Use our configured constraints as InviterOptions if none provided + if (!inviterOptions) { + inviterOptions = {}; + } + if (!inviterOptions.sessionDescriptionHandlerOptions) { + inviterOptions.sessionDescriptionHandlerOptions = {}; + } + if (!inviterOptions.sessionDescriptionHandlerOptions.constraints) { + inviterOptions.sessionDescriptionHandlerOptions.constraints = this.constraints; + } + + // If utilizing early media, add a handler to catch 183 Session Progress + // messages and then to play the associated remote media (the early media). + if (inviterOptions.earlyMedia) { + inviterInviteOptions = inviterInviteOptions || {}; + inviterInviteOptions.requestDelegate = inviterInviteOptions.requestDelegate || {}; + const existingOnProgress = inviterInviteOptions.requestDelegate.onProgress; + inviterInviteOptions.requestDelegate.onProgress = (response) => { + if (response.message.statusCode === 183) { + this.setupRemoteMedia(inviter); + } + existingOnProgress && existingOnProgress(response); + }; + } + + // TODO: Any existing onSessionDescriptionHandler is getting clobbered here. + // If we get a server reflexive candidate, stop waiting on ICE gathering to complete. + // The candidate is a server reflexive candidate; the ip indicates an intermediary + // address assigned by the STUN server to represent the candidate's peer anonymously. + if (this.options.iceStopWaitingOnServerReflexive) { + inviterOptions.delegate = inviterOptions.delegate || {}; + inviterOptions.delegate.onSessionDescriptionHandler = (sessionDescriptionHandler) => { + if (!(sessionDescriptionHandler instanceof SessionDescriptionHandler)) { + throw new Error("Session description handler not instance of SessionDescriptionHandler"); + } + sessionDescriptionHandler.peerConnectionDelegate = { + onicecandidate: (event) => { + if (event.candidate?.type === "srflx") { + this.logger.log(`[${inviter.id}] Found srflx ICE candidate, stop waiting...`); + // In sip.js > 0.20.1 this cast should be removed as iceGatheringComplete will be public + const sdh = sessionDescriptionHandler as SessionDescriptionHandler & { + iceGatheringComplete: () => void; + }; + sdh.iceGatheringComplete(); + } + } + }; + }; + } + + // Create a new Inviter for the outgoing Session + const inviter = new Inviter(this.userAgent, target, inviterOptions); + + // Send INVITE + return this.sendInvite(inviter, inviterOptions, inviterInviteOptions).then(() => { + return inviter; + }); + } + + /** + * Hangup a call. + * @param session - Session to hangup. + * @remarks + * Send a BYE request, CANCEL request or reject response to end the current Session. + * Resolves when the request/response is sent, otherwise rejects. + * Use `onCallHangup` delegate method to determine if and when call is ended. + */ + public async hangup(session: Session): Promise { + this.logger.log(`[${session.id}] Hangup...`); + + if (!this.sessionExists(session)) { + return Promise.reject(new Error("Session does not exist.")); + } + + return this.terminate(session); + } + + /** + * Answer an incoming call. + * @param session - Session to answer. + * @remarks + * Accept an incoming INVITE request creating a new Session. + * Resolves with the response is sent, otherwise rejects. + * Use `onCallAnswered` delegate method to determine if and when call is established. + * @param invitationAcceptOptions - Optional options for Inviter.accept(). + */ + public async answer(session: Session, invitationAcceptOptions?: InvitationAcceptOptions): Promise { + this.logger.log(`[${session.id}] Accepting Invitation...`); + + if (!this.sessionExists(session)) { + return Promise.reject(new Error("Session does not exist.")); + } + + if (!(session instanceof Invitation)) { + return Promise.reject(new Error("Session not instance of Invitation.")); + } + + // Use our configured constraints as InvitationAcceptOptions if none provided + if (!invitationAcceptOptions) { + invitationAcceptOptions = {}; + } + if (!invitationAcceptOptions.sessionDescriptionHandlerOptions) { + invitationAcceptOptions.sessionDescriptionHandlerOptions = {}; + } + if (!invitationAcceptOptions.sessionDescriptionHandlerOptions.constraints) { + invitationAcceptOptions.sessionDescriptionHandlerOptions.constraints = this.constraints; + } + + return session.accept(invitationAcceptOptions); + } + + /** + * Decline an incoming call. + * @param session - Session to decline. + * @remarks + * Reject an incoming INVITE request. + * Resolves with the response is sent, otherwise rejects. + * Use `onCallHangup` delegate method to determine if and when call is ended. + */ + public async decline(session: Session): Promise { + this.logger.log(`[${session.id}] Rejecting Invitation...`); + + if (!this.sessionExists(session)) { + return Promise.reject(new Error("Session does not exist.")); + } + + if (!(session instanceof Invitation)) { + return Promise.reject(new Error("Session not instance of Invitation.")); + } + + return session.reject(); + } + + /** + * Hold call + * @param session - Session to hold. + * @remarks + * Send a re-INVITE with new offer indicating "hold". + * Resolves when the re-INVITE request is sent, otherwise rejects. + * Use `onCallHold` delegate method to determine if request is accepted or rejected. + * See: https://tools.ietf.org/html/rfc6337 + */ + public async hold(session: Session): Promise { + this.logger.log(`[${session.id}] Holding session...`); + return this.setHold(session, true); + } + + /** + * Unhold call. + * @param session - Session to unhold. + * @remarks + * Send a re-INVITE with new offer indicating "unhold". + * Resolves when the re-INVITE request is sent, otherwise rejects. + * Use `onCallHold` delegate method to determine if request is accepted or rejected. + * See: https://tools.ietf.org/html/rfc6337 + */ + public async unhold(session: Session): Promise { + this.logger.log(`[${session.id}] Unholding session...`); + return this.setHold(session, false); + } + + /** + * Hold state. + * @param session - Session to check. + * @remarks + * True if session media is on hold. + * Undefined is session doesn't exist. + */ + public isHeld(session: Session): boolean | undefined { + return this.sessionManaged(session)?.held; + } + + /** + * Mute call. + * @param session - Session to mute. + * @remarks + * Disable sender's media tracks. + */ + public mute(session: Session): void { + this.logger.log(`[${session.id}] Disabling media tracks...`); + this.setMute(session, true); + } + + /** + * Unmute call. + * @param session - Session to unmute. + * @remarks + * Enable sender's media tracks. + */ + public unmute(session: Session): void { + this.logger.log(`[${session.id}] Enabling media tracks...`); + this.setMute(session, false); + } + + /** + * Mute state. + * @param session - Session to check. + * @remarks + * True if sender's media track is disabled. + * Undefined is session doesn't exist. + */ + public isMuted(session: Session): boolean | undefined { + return this.sessionManaged(session)?.muted; + } + + /** + * Send DTMF. + * @param session - Session to send on. + * @remarks + * Send an INFO request with content type application/dtmf-relay. + * @param tone - Tone to send. + */ + public async sendDTMF(session: Session, tone: string): Promise { + this.logger.log(`[${session.id}] Sending DTMF...`); + + // As RFC 6086 states, sending DTMF via INFO is not standardized... + // + // Companies have been using INFO messages in order to transport + // Dual-Tone Multi-Frequency (DTMF) tones. All mechanisms are + // proprietary and have not been standardized. + // https://tools.ietf.org/html/rfc6086#section-2 + // + // It is however widely supported based on this draft: + // https://tools.ietf.org/html/draft-kaplan-dispatch-info-dtmf-package-00 + + // Validate tone + if (!/^[0-9A-D#*,]$/.exec(tone)) { + return Promise.reject(new Error("Invalid DTMF tone.")); + } + + if (!this.sessionExists(session)) { + return Promise.reject(new Error("Session does not exist.")); + } + + // The UA MUST populate the "application/dtmf-relay" body, as defined + // earlier, with the button pressed and the duration it was pressed + // for. Technically, this actually requires the INFO to be generated + // when the user *releases* the button, however if the user has still + // not released a button after 5 seconds, which is the maximum duration + // supported by this mechanism, the UA should generate the INFO at that + // time. + // https://tools.ietf.org/html/draft-kaplan-dispatch-info-dtmf-package-00#section-5.3 + this.logger.log(`[${session.id}] Sending DTMF tone: ${tone}`); + const dtmf = tone; + const duration = 2000; + const body = { + contentDisposition: "render", + contentType: "application/dtmf-relay", + content: "Signal=" + dtmf + "\r\nDuration=" + duration + }; + const requestOptions = { body }; + + return session.info({ requestOptions }).then(() => { + return; + }); + } + + /** + * Transfer. + * @param session - Session with the transferee to transfer. + * @param target - The referral target. + * @remarks + * If target is a Session this is an attended transfer completion (REFER with Replaces), + * otherwise this is a blind transfer (REFER). Attempting an attended transfer + * completion on a call that has not been answered will be rejected. To implement + * an attended transfer with early completion, hangup the call with the target + * and execute a blind transfer to the target. + */ + public async transfer(session: Session, target: Session | string, options?: SessionReferOptions): Promise { + this.logger.log(`[${session.id}] Referring session...`); + + if (target instanceof Session) { + return session.refer(target, options).then(() => { + return; + }); + } + + const uri = UserAgent.makeURI(target); + if (!uri) { + return Promise.reject(new Error(`Failed to create a valid URI from "${target}"`)); + } + + return session.refer(uri, options).then(() => { + return; + }); + } + + /** + * Send a message. + * @remarks + * Send a MESSAGE request. + * @param destination - The target destination for the message. A SIP address to send the MESSAGE to. + */ + public async message(destination: string, message: string): Promise { + this.logger.log(`Sending message...`); + + const target = UserAgent.makeURI(destination); + if (!target) { + return Promise.reject(new Error(`Failed to create a valid URI from "${destination}"`)); + } + return new Messager(this.userAgent, target, message).message(); + } + + /** Media constraints. */ + private get constraints(): { audio: boolean; video: boolean } { + let constraints = { audio: true, video: false }; // default to audio only calls + if (this.options.media.constraints) { + constraints = { ...this.options.media.constraints }; + } + return constraints; + } + + /** + * Attempt reconnection up to `reconnectionAttempts` times. + * @param reconnectionAttempt - Current attempt number. + */ + private attemptReconnection(reconnectionAttempt = 1): void { + const reconnectionAttempts = this.options.reconnectionAttempts; + const reconnectionDelay = this.options.reconnectionDelay; + + if (!this.shouldBeConnected) { + this.logger.log(`Should not be connected currently`); + return; // If intentionally disconnected, don't reconnect. + } + + if (this.attemptingReconnection) { + this.logger.log(`Reconnection attempt already in progress`); + } + + if (reconnectionAttempt > reconnectionAttempts) { + this.logger.log(`Reconnection maximum attempts reached`); + return; + } + + if (reconnectionAttempt === 1) { + this.logger.log(`Reconnection attempt ${reconnectionAttempt} of ${reconnectionAttempts} - trying`); + } else { + this.logger.log( + `Reconnection attempt ${reconnectionAttempt} of ${reconnectionAttempts} - trying in ${reconnectionDelay} seconds` + ); + } + + this.attemptingReconnection = true; + + setTimeout( + () => { + if (!this.shouldBeConnected) { + this.logger.log(`Reconnection attempt ${reconnectionAttempt} of ${reconnectionAttempts} - aborted`); + this.attemptingReconnection = false; + return; // If intentionally disconnected, don't reconnect. + } + this.userAgent + .reconnect() + .then(() => { + this.logger.log(`Reconnection attempt ${reconnectionAttempt} of ${reconnectionAttempts} - succeeded`); + this.attemptingReconnection = false; + }) + .catch((error: Error) => { + this.logger.log(`Reconnection attempt ${reconnectionAttempt} of ${reconnectionAttempts} - failed`); + this.logger.error(error.message); + this.attemptingReconnection = false; + this.attemptReconnection(++reconnectionAttempt); + }); + }, + reconnectionAttempt === 1 ? 0 : reconnectionDelay * 1000 + ); + } + + /** + * Register to receive calls. + * @param withoutDelay - If true attempt immediately, otherwise wait `registrationRetryInterval`. + */ + private attemptRegistration(withoutDelay = false): Promise { + this.logger.log(`Registration attempt ${withoutDelay ? "without delay" : ""}`); + + if (!this.shouldBeRegistered) { + this.logger.log(`Should not be registered currently`); + return Promise.resolve(); + } + + // It only makes sense to have one attempt in progress at a time. + // Perhaps we shall (or should) try once again. + if (this.registrationAttemptTimeout !== undefined) { + this.logger.log(`Registration attempt already in progress`); + return Promise.resolve(); + } + + // Helper function to send the register request. + const _register = (): Promise => { + // If we do not have a registerer, it is not worth trying to register. + if (!this.registerer) { + this.logger.log(`Registerer undefined`); + return Promise.resolve(); + } + + // If the WebSocket transport is not connected, it is not worth trying to register. + // Perhpas we shall (or should) try once we are connected. + if (!this.isConnected()) { + this.logger.log(`User agent not connected`); + return Promise.resolve(); + } + + // If the UserAgent is stopped, it is not worth trying to register. + // Perhaps we shall (or should) try once the UserAgent is running. + if (this.userAgent.state === UserAgentState.Stopped) { + this.logger.log(`User agent stopped`); + return Promise.resolve(); + } + + // If no guard defined, we are good to proceed without any further ado. + if (!this.options.registerGuard) { + return this.registerer.register(this.registererRegisterOptions).then(() => { + return; + }); + } + + // Otherwise check to make sure the guard does not want us halt. + return this.options + .registerGuard() + .catch((error) => { + this.logger.log(`Register guard rejected will making registration attempt`); + throw error; + }) + .then((halt) => { + if (halt || !this.registerer) { + return Promise.resolve(); + } + return this.registerer.register(this.registererRegisterOptions).then(() => { + return; + }); + }); + }; + + // Compute an amount of time in seconds to wait before sending another register request. + // This is a small attempt to avoid DOS attacking our own backend in the event that a + // relatively large number of clients sychonously keep retrying register reqeusts. + // This is known to happen when the backend goes down for a period and all clients + // are attempting to register again - the backend gets slammed with synced reqeusts. + const computeRegistrationTimeout = (lowerBound: number): number => { + const upperBound = lowerBound * 2; + return 1000 * (Math.random() * (upperBound - lowerBound) + lowerBound); + }; + + // Send register request after a delay + return new Promise((resolve, reject) => { + this.registrationAttemptTimeout = setTimeout( + () => { + _register() + .then(() => { + this.registrationAttemptTimeout = undefined; + resolve(); + }) + .catch((error) => { + this.registrationAttemptTimeout = undefined; + if (error instanceof RequestPendingError) { + resolve(); + } else { + reject(error); + } + }); + }, + withoutDelay ? 0 : computeRegistrationTimeout(this.options.registrationRetryInterval) + ); + }); + } + + /** Helper function to remove media from html elements. */ + private cleanupMedia(session: Session): void { + const managedSession = this.sessionManaged(session); + if (!managedSession) { + throw new Error("Managed session does not exist."); + } + if (managedSession.mediaLocal) { + if (managedSession.mediaLocal.video) { + managedSession.mediaLocal.video.srcObject = null; + managedSession.mediaLocal.video.pause(); + } + } + if (managedSession.mediaRemote) { + if (managedSession.mediaRemote.audio) { + managedSession.mediaRemote.audio.srcObject = null; + managedSession.mediaRemote.audio.pause(); + } + if (managedSession.mediaRemote.video) { + managedSession.mediaRemote.video.srcObject = null; + managedSession.mediaRemote.video.pause(); + } + } + } + + /** Helper function to enable/disable media tracks. */ + private enableReceiverTracks(session: Session, enable: boolean): void { + if (!this.sessionExists(session)) { + throw new Error("Session does not exist."); + } + + const sessionDescriptionHandler = session.sessionDescriptionHandler; + if (!(sessionDescriptionHandler instanceof SessionDescriptionHandler)) { + throw new Error("Session's session description handler not instance of SessionDescriptionHandler."); + } + + sessionDescriptionHandler.enableReceiverTracks(enable); + } + + /** Helper function to enable/disable media tracks. */ + private enableSenderTracks(session: Session, enable: boolean): void { + if (!this.sessionExists(session)) { + throw new Error("Session does not exist."); + } + + const sessionDescriptionHandler = session.sessionDescriptionHandler; + if (!(sessionDescriptionHandler instanceof SessionDescriptionHandler)) { + throw new Error("Session's session description handler not instance of SessionDescriptionHandler."); + } + + sessionDescriptionHandler.enableSenderTracks(enable); + } + + /** + * Setup session delegate and state change handler. + * @param session - Session to setup. + * @param referralInviterOptions - Options for any Inviter created as result of a REFER. + */ + private initSession(session: Session, referralInviterOptions?: InviterOptions): void { + // Add the session + this.sessionAdd(session); + + // Call session created callback + if (this.delegate && this.delegate.onCallCreated) { + this.delegate.onCallCreated(session); + } + + // Setup session state change handler + session.stateChange.addListener((state: SessionState) => { + this.logger.log(`[${session.id}] Session state changed to ${state}`); + switch (state) { + case SessionState.Initial: + break; + case SessionState.Establishing: + break; + case SessionState.Established: + this.setupLocalMedia(session); + this.setupRemoteMedia(session); + if (this.delegate && this.delegate.onCallAnswered) { + this.delegate.onCallAnswered(session); + } + break; + case SessionState.Terminating: + // fall through + case SessionState.Terminated: + // This will already have executed if/when we fall + // through from Terminating and thus the managed + // session may already have been cleaned up. + if (this.sessionExists(session)) { + this.cleanupMedia(session); + this.sessionRemove(session); + if (this.delegate && this.delegate.onCallHangup) { + this.delegate.onCallHangup(session); + } + } + break; + default: + throw new Error("Unknown session state."); + } + }); + + // TODO: Any existing onInfo or onRefer delegate gets clobbered here. + // Setup delegate + session.delegate = session.delegate || {}; + session.delegate.onInfo = (info: Info): void => { + // As RFC 6086 states, sending DTMF via INFO is not standardized... + // + // Companies have been using INFO messages in order to transport + // Dual-Tone Multi-Frequency (DTMF) tones. All mechanisms are + // proprietary and have not been standardized. + // https://tools.ietf.org/html/rfc6086#section-2 + // + // It is however widely supported based on this draft: + // https://tools.ietf.org/html/draft-kaplan-dispatch-info-dtmf-package-00 + + // FIXME: TODO: We should reject correctly... + // + // If a UA receives an INFO request associated with an Info Package that + // the UA has not indicated willingness to receive, the UA MUST send a + // 469 (Bad Info Package) response (see Section 11.6), which contains a + // Recv-Info header field with Info Packages for which the UA is willing + // to receive INFO requests. + // https://tools.ietf.org/html/rfc6086#section-4.2.2 + + // No delegate + if (this.delegate?.onCallDTMFReceived === undefined) { + info.reject(); + return; + } + + // Invalid content type + const contentType = info.request.getHeader("content-type"); + if (!contentType || !/^application\/dtmf-relay/i.exec(contentType)) { + info.reject(); + return; + } + + // Invalid body + const body = info.request.body.split("\r\n", 2); + if (body.length !== 2) { + info.reject(); + return; + } + + // Invalid tone + let tone: string | undefined; + const toneRegExp = /^(Signal\s*?=\s*?)([0-9A-D#*]{1})(\s)?.*/; + if (body[0] !== undefined && toneRegExp.test(body[0])) { + tone = body[0].replace(toneRegExp, "$2"); + } + if (!tone) { + info.reject(); + return; + } + + // Invalid duration + let duration: number | undefined; + const durationRegExp = /^(Duration\s?=\s?)([0-9]{1,4})(\s)?.*/; + if (body[1] !== undefined && durationRegExp.test(body[1])) { + duration = parseInt(body[1].replace(durationRegExp, "$2"), 10); + } + if (!duration) { + info.reject(); + return; + } + + info + .accept() + .then(() => { + if (this.delegate && this.delegate.onCallDTMFReceived) { + if (!tone || !duration) { + throw new Error("Tone or duration undefined."); + } + this.delegate.onCallDTMFReceived(session, tone, duration); + } + }) + .catch((error: Error) => { + this.logger.error(error.message); + }); + }; + session.delegate.onRefer = (referral: Referral): void => { + referral + .accept() + .then(() => this.sendInvite(referral.makeInviter(referralInviterOptions), referralInviterOptions)) + .catch((error: Error) => { + this.logger.error(error.message); + }); + }; + } + + /** Helper function to init send then send invite. */ + private async sendInvite( + inviter: Inviter, + inviterOptions?: InviterOptions, + inviterInviteOptions?: InviterInviteOptions + ): Promise { + // Initialize our session + this.initSession(inviter, inviterOptions); + + // Send the INVITE + return inviter.invite(inviterInviteOptions).then(() => { + this.logger.log(`[${inviter.id}] Sent INVITE`); + }); + } + + /** Helper function to add a session to the ones we are managing. */ + private sessionAdd(session: Session): void { + const managedSession = this.options.managedSessionFactory(this, session); + this.managedSessions.push(managedSession); + } + + /** Helper function to check if the session is one we are managing. */ + private sessionExists(session: Session): boolean { + return this.sessionManaged(session) !== undefined; + } + + /** Helper function to check if the session is one we are managing. */ + private sessionManaged(session: Session): ManagedSession | undefined { + return this.managedSessions.find((el) => el.session.id === session.id); + } + + /** Helper function to remoce a session from the ones we are managing. */ + private sessionRemove(session: Session): void { + this.managedSessions = this.managedSessions.filter((el) => el.session.id !== session.id); + } + + /** + * Puts Session on hold. + * @param session - The session to set. + * @param hold - Hold on if true, off if false. + */ + private async setHold(session: Session, hold: boolean): Promise { + if (!this.sessionExists(session)) { + return Promise.reject(new Error("Session does not exist.")); + } + + // Just resolve if we are already in correct state + if (this.isHeld(session) === hold) { + return Promise.resolve(); + } + + const sessionDescriptionHandler = session.sessionDescriptionHandler; + if (!(sessionDescriptionHandler instanceof SessionDescriptionHandler)) { + throw new Error("Session's session description handler not instance of SessionDescriptionHandler."); + } + + const options: SessionInviteOptions = { + requestDelegate: { + onAccept: (): void => { + const managedSession = this.sessionManaged(session); + if (managedSession !== undefined) { + managedSession.held = hold; + this.enableReceiverTracks(session, !managedSession.held); + this.enableSenderTracks(session, !managedSession.held && !managedSession.muted); + if (this.delegate && this.delegate.onCallHold) { + this.delegate.onCallHold(session, managedSession.held); + } + } + }, + onReject: (): void => { + this.logger.warn(`[${session.id}] Re-invite request was rejected`); + const managedSession = this.sessionManaged(session); + if (managedSession !== undefined) { + managedSession.held = !hold; // this was preemptively set so undo on failure + this.enableReceiverTracks(session, !managedSession.held); + this.enableSenderTracks(session, !managedSession.held && !managedSession.muted); + if (this.delegate && this.delegate.onCallHold) { + this.delegate.onCallHold(session, managedSession.held); + } + } + } + } + }; + + // Session properties used to pass options to the SessionDescriptionHandler: + // + // 1) Session.sessionDescriptionHandlerOptions + // SDH options for the initial INVITE transaction. + // - Used in all cases when handling the initial INVITE transaction as either UAC or UAS. + // - May be set directly at anytime. + // - May optionally be set via constructor option. + // - May optionally be set via options passed to Inviter.invite() or Invitation.accept(). + // + // 2) Session.sessionDescriptionHandlerOptionsReInvite + // SDH options for re-INVITE transactions. + // - Used in all cases when handling a re-INVITE transaction as either UAC or UAS. + // - May be set directly at anytime. + // - May optionally be set via constructor option. + // - May optionally be set via options passed to Session.invite(). + + const sessionDescriptionHandlerOptions = + session.sessionDescriptionHandlerOptionsReInvite as SessionDescriptionHandlerOptions; + sessionDescriptionHandlerOptions.hold = hold; + session.sessionDescriptionHandlerOptionsReInvite = sessionDescriptionHandlerOptions; + + // Preemptively and optimistically set held state (but do not call delegate). + const managedSession = this.sessionManaged(session); + if (!managedSession) { + throw new Error("Managed session is undefiend."); + } + managedSession.held = hold; + + // Send re-INVITE + return session + .invite(options) + .then(() => { + // Preemptively enable/disable tracks + const managedSession = this.sessionManaged(session); + if (managedSession !== undefined) { + this.enableReceiverTracks(session, !managedSession.held); + this.enableSenderTracks(session, !managedSession.held && !managedSession.muted); + } + }) + .catch((error: Error) => { + managedSession.held = !hold; // was preemptively set so undo on failure + if (error instanceof RequestPendingError) { + this.logger.error(`[${session.id}] A hold request is already in progress.`); + } + throw error; + }); + } + + /** + * Puts Session on mute. + * @param session - The session to mute. + * @param mute - Mute on if true, off if false. + */ + private setMute(session: Session, mute: boolean): void { + if (!this.sessionExists(session)) { + this.logger.warn(`[${session.id}] A session is required to enabled/disable media tracks`); + return; + } + + if (session.state !== SessionState.Established) { + this.logger.warn(`[${session.id}] An established session is required to enable/disable media tracks`); + return; + } + + const managedSession = this.sessionManaged(session); + if (managedSession !== undefined) { + managedSession.muted = mute; + this.enableSenderTracks(session, !managedSession.held && !managedSession.muted); + } + } + + /** Helper function to attach local media to html elements. */ + private setupLocalMedia(session: Session): void { + const managedSession = this.sessionManaged(session); + if (!managedSession) { + throw new Error("Managed session does not exist."); + } + + // Get the local media element, if any, from the and configuraiton options + // and save the info with the managed session so we can clean it up later. + const mediaLocal = + typeof this.options.media.local === "function" ? this.options.media.local(session) : this.options.media.local; + managedSession.mediaLocal = mediaLocal; + const mediaElement = mediaLocal?.video; + + if (mediaElement) { + const localStream = this.getLocalMediaStream(session); + if (!localStream) { + throw new Error("Local media stream undefiend."); + } + + mediaElement.srcObject = localStream; + mediaElement.volume = 0; + mediaElement.play().catch((error: Error) => { + this.logger.error(`[${session.id}] Failed to play local media`); + this.logger.error(error.message); + }); + } + } + + /** Helper function to attach remote media to html elements. */ + private setupRemoteMedia(session: Session): void { + const managedSession = this.sessionManaged(session); + if (!managedSession) { + throw new Error("Managed session does not exist."); + } + + // Get the remote media element, if any, from the and configuraiton options + // and save the info with the managed session so we can clean it up later. + const mediaRemote = + typeof this.options.media.remote === "function" ? this.options.media.remote(session) : this.options.media.remote; + managedSession.mediaRemote = mediaRemote; + const mediaElement = mediaRemote?.video || mediaRemote?.audio; + + if (mediaElement) { + const remoteStream = this.getRemoteMediaStream(session); + if (!remoteStream) { + throw new Error("Remote media stream undefiend."); + } + + mediaElement.autoplay = true; // Safari hack, because you cannot call .play() from a non user action + mediaElement.srcObject = remoteStream; + mediaElement.play().catch((error: Error) => { + this.logger.error(`[${session.id}] Failed to play remote media`); + this.logger.error(error.message); + }); + + remoteStream.onaddtrack = (): void => { + this.logger.log(`Remote media onaddtrack`); + mediaElement.load(); // Safari hack, as it doesn't work otheriwse + mediaElement.play().catch((error: Error) => { + this.logger.error(`[${session.id}] Failed to play remote media`); + this.logger.error(error.message); + }); + }; + } + } + + /** + * End a session. + * @param session - The session to terminate. + * @remarks + * Send a BYE request, CANCEL request or reject response to end the current Session. + * Resolves when the request/response is sent, otherwise rejects. + * Use `onCallHangup` delegate method to determine if and when Session is terminated. + */ + private async terminate(session: Session): Promise { + this.logger.log(`[${session.id}] Terminating...`); + + switch (session.state) { + case SessionState.Initial: + if (session instanceof Inviter) { + return session.cancel().then(() => { + this.logger.log(`[${session.id}] Inviter never sent INVITE (canceled)`); + }); + } else if (session instanceof Invitation) { + return session.reject().then(() => { + this.logger.log(`[${session.id}] Invitation rejected (sent 480)`); + }); + } else { + throw new Error("Unknown session type."); + } + case SessionState.Establishing: + if (session instanceof Inviter) { + return session.cancel().then(() => { + this.logger.log(`[${session.id}] Inviter canceled (sent CANCEL)`); + }); + } else if (session instanceof Invitation) { + return session.reject().then(() => { + this.logger.log(`[${session.id}] Invitation rejected (sent 480)`); + }); + } else { + throw new Error("Unknown session type."); + } + case SessionState.Established: + return session.bye().then(() => { + this.logger.log(`[${session.id}] Session ended (sent BYE)`); + }); + case SessionState.Terminating: + break; + case SessionState.Terminated: + break; + default: + throw new Error("Unknown state"); + } + + this.logger.log(`[${session.id}] Terminating in state ${session.state}, no action taken`); + return Promise.resolve(); + } +} diff --git a/src/platform/web/simple-user/simple-user-options.ts b/src/platform/web/simple-user/simple-user-options.ts index 8eb677ac7..64e81e102 100644 --- a/src/platform/web/simple-user/simple-user-options.ts +++ b/src/platform/web/simple-user/simple-user-options.ts @@ -1,3 +1,4 @@ +import { RegistererOptions } from "../../../api/registerer-options.js"; import { UserAgentOptions } from "../../../api/user-agent-options.js"; import { SimpleUserDelegate } from "./simple-user-delegate.js"; @@ -95,6 +96,11 @@ export interface SimpleUserOptions { */ reconnectionDelay?: number; + /** + * Options for Registerer. + */ + registererOptions?: RegistererOptions; + /** * Options for UserAgent. */ diff --git a/src/platform/web/simple-user/simple-user.ts b/src/platform/web/simple-user/simple-user.ts index a05864b09..1264b6eec 100644 --- a/src/platform/web/simple-user/simple-user.ts +++ b/src/platform/web/simple-user/simple-user.ts @@ -1,28 +1,13 @@ -import { Info } from "../../../api/info.js"; -import { Invitation } from "../../../api/invitation.js"; import { InvitationAcceptOptions } from "../../../api/invitation-accept-options.js"; -import { Inviter } from "../../../api/inviter.js"; import { InviterInviteOptions } from "../../../api/inviter-invite-options.js"; import { InviterOptions } from "../../../api/inviter-options.js"; +import { Logger } from "../../../core/log/logger.js"; import { Message } from "../../../api/message.js"; -import { Messager } from "../../../api/messager.js"; -import { Referral } from "../../../api/referral.js"; -import { Registerer } from "../../../api/registerer.js"; -import { RegistererOptions } from "../../../api/registerer-options.js"; import { RegistererRegisterOptions } from "../../../api/registerer-register-options.js"; -import { RegistererState } from "../../../api/registerer-state.js"; import { RegistererUnregisterOptions } from "../../../api/registerer-unregister-options.js"; -import { RequestPendingError } from "../../../api/exceptions/request-pending.js"; import { Session } from "../../../api/session.js"; -import { SessionInviteOptions } from "../../../api/session-invite-options.js"; -import { SessionState } from "../../../api/session-state.js"; -import { UserAgent } from "../../../api/user-agent.js"; -import { UserAgentOptions } from "../../../api/user-agent-options.js"; -import { UserAgentState } from "../../../api/user-agent-state.js"; -import { Logger } from "../../../core/log/logger.js"; -import { SessionDescriptionHandler } from "../session-description-handler/session-description-handler.js"; -import { SessionDescriptionHandlerOptions } from "../session-description-handler/session-description-handler-options.js"; -import { Transport } from "../transport/transport.js"; +import { SessionManager } from "../session-manager/session-manager.js"; +import { SessionManagerOptions } from "../session-manager/session-manager-options.js"; import { SimpleUserDelegate } from "./simple-user-delegate.js"; import { SimpleUserOptions } from "./simple-user-options.js"; @@ -39,16 +24,10 @@ export class SimpleUser { /** Delegate. */ public delegate: SimpleUserDelegate | undefined; - private attemptingReconnection = false; - private connectRequested = false; private logger: Logger; - private held = false; - private muted = false; private options: SimpleUserOptions; - private registerer: Registerer | undefined = undefined; - private registerRequested = false; private session: Session | undefined = undefined; - private userAgent: UserAgent; + private sessionManager: SessionManager; /** * Constructs a new instance of the `SimpleUser` class. @@ -62,145 +41,40 @@ export class SimpleUser { // Copy options this.options = { ...options }; - // UserAgentOptions - const userAgentOptions: UserAgentOptions = { - ...options.userAgentOptions - }; - - // Transport - if (!userAgentOptions.transportConstructor) { - userAgentOptions.transportConstructor = Transport; - } - - // TransportOptions - if (!userAgentOptions.transportOptions) { - userAgentOptions.transportOptions = { - server - }; - } - - // URI - if (!userAgentOptions.uri) { - // If an AOR was provided, convert it to a URI - if (options.aor) { - const uri = UserAgent.makeURI(options.aor); - if (!uri) { - throw new Error(`Failed to create valid URI from ${options.aor}`); - } - userAgentOptions.uri = uri; - } - } - - // UserAgent - this.userAgent = new UserAgent(userAgentOptions); - - // UserAgent's delegate - this.userAgent.delegate = { - // Handle connection with server established - onConnect: (): void => { - this.logger.log(`[${this.id}] Connected`); - if (this.delegate && this.delegate.onServerConnect) { - this.delegate.onServerConnect(); - } - if (this.registerer && this.registerRequested) { - this.logger.log(`[${this.id}] Registering...`); - this.registerer.register().catch((e: Error) => { - this.logger.error(`[${this.id}] Error occurred registering after connection with server was obtained.`); - this.logger.error(e.toString()); - }); - } - }, - // Handle connection with server lost - onDisconnect: (error?: Error): void => { - this.logger.log(`[${this.id}] Disconnected`); - if (this.delegate && this.delegate.onServerDisconnect) { - this.delegate.onServerDisconnect(error); - } - if (this.session) { - this.logger.log(`[${this.id}] Hanging up...`); - this.hangup() // cleanup hung calls - .catch((e: Error) => { - this.logger.error(`[${this.id}] Error occurred hanging up call after connection with server was lost.`); - this.logger.error(e.toString()); - }); - } - if (this.registerer) { - this.logger.log(`[${this.id}] Unregistering...`); - this.registerer - .unregister() // cleanup invalid registrations - .catch((e: Error) => { - this.logger.error(`[${this.id}] Error occurred unregistering after connection with server was lost.`); - this.logger.error(e.toString()); - }); - } - // Only attempt to reconnect if network/server dropped the connection. - if (error) { - this.attemptReconnection(); - } - }, - // Handle incoming invitations - onInvite: (invitation: Invitation): void => { - this.logger.log(`[${this.id}] Received INVITE`); - - // Guard against a pre-existing session. This implementation only supports one session at a time. - // However an incoming INVITE request may be received at any time and/or while in the process - // of sending an outgoing INVITE request. So we reject any incoming INVITE in those cases. - if (this.session) { - this.logger.warn(`[${this.id}] Session already in progress, rejecting INVITE...`); - invitation - .reject() - .then(() => { - this.logger.log(`[${this.id}] Rejected INVITE`); - }) - .catch((error: Error) => { - this.logger.error(`[${this.id}] Failed to reject INVITE`); - this.logger.error(error.toString()); - }); - return; - } - - // Use our configured constraints as options for any Inviter created as result of a REFER - const referralInviterOptions: InviterOptions = { - sessionDescriptionHandlerOptions: { constraints: this.constraints } - }; - - // Initialize our session - this.initSession(invitation, referralInviterOptions); - - // Delegate - if (this.delegate && this.delegate.onCallReceived) { - this.delegate.onCallReceived(); - } else { - this.logger.warn(`[${this.id}] No handler available, rejecting INVITE...`); - invitation - .reject() - .then(() => { - this.logger.log(`[${this.id}] Rejected INVITE`); - }) - .catch((error: Error) => { - this.logger.error(`[${this.id}] Failed to reject INVITE`); - this.logger.error(error.toString()); - }); - } + // Session manager options + const sessionManagerOptions: SessionManagerOptions = { + aor: this.options.aor, + delegate: { + onCallAnswered: () => this.delegate?.onCallAnswered?.(), + onCallCreated: (session: Session) => { + this.session = session; + this.delegate?.onCallCreated?.(); + }, + onCallReceived: () => this.delegate?.onCallReceived?.(), + onCallHangup: () => { + this.session = undefined; + this.delegate?.onCallHangup && this.delegate?.onCallHangup(); + }, + onCallHold: (s: Session, held: boolean) => this.delegate?.onCallHold?.(held), + onCallDTMFReceived: (s: Session, tone: string, dur: number) => this.delegate?.onCallDTMFReceived?.(tone, dur), + onMessageReceived: (message: Message) => this.delegate?.onMessageReceived?.(message.request.body), + onRegistered: () => this.delegate?.onRegistered?.(), + onUnregistered: () => this.delegate?.onUnregistered?.(), + onServerConnect: () => this.delegate?.onServerConnect?.(), + onServerDisconnect: () => this.delegate?.onServerDisconnect?.() }, - // Handle incoming messages - onMessage: (message: Message): void => { - message.accept().then(() => { - if (this.delegate && this.delegate.onMessageReceived) { - this.delegate.onMessageReceived(message.request.body); - } - }); - } + maxSimultaneousSessions: 1, + media: this.options.media, + reconnectionAttempts: this.options.reconnectionAttempts, + reconnectionDelay: this.options.reconnectionDelay, + registererOptions: this.options.registererOptions, + userAgentOptions: this.options.userAgentOptions }; - // Use the SIP.js logger - this.logger = this.userAgent.getLogger("sip.SimpleUser"); + this.sessionManager = new SessionManager(server, sessionManagerOptions); - // Monitor network connectivity and attempt reconnection when we come online - window.addEventListener("online", () => { - this.logger.log(`[${this.id}] Online`); - this.attemptReconnection(); - }); + // Use the SIP.js logger + this.logger = this.sessionManager.userAgent.getLogger("sip.SimpleUser"); } /** @@ -213,26 +87,12 @@ export class SimpleUser { /** The local media stream. Undefined if call not answered. */ get localMediaStream(): MediaStream | undefined { - const sdh = this.session?.sessionDescriptionHandler; - if (!sdh) { - return undefined; - } - if (!(sdh instanceof SessionDescriptionHandler)) { - throw new Error("Session description handler not instance of web SessionDescriptionHandler"); - } - return sdh.localMediaStream; + return this.session && this.sessionManager.getLocalMediaStream(this.session); } /** The remote media stream. Undefined if call not answered. */ get remoteMediaStream(): MediaStream | undefined { - const sdh = this.session?.sessionDescriptionHandler; - if (!sdh) { - return undefined; - } - if (!(sdh instanceof SessionDescriptionHandler)) { - throw new Error("Session description handler not instance of web SessionDescriptionHandler"); - } - return sdh.remoteMediaStream; + return this.session && this.sessionManager.getRemoteMediaStream(this.session); } /** @@ -240,7 +100,7 @@ export class SimpleUser { * @deprecated Use localMediaStream and get track from the stream. */ get localAudioTrack(): MediaStreamTrack | undefined { - return this.localMediaStream?.getTracks().find((track) => track.kind === "audio"); + return this.session && this.sessionManager.getLocalAudioTrack(this.session); } /** @@ -248,7 +108,7 @@ export class SimpleUser { * @deprecated Use localMediaStream and get track from the stream. */ get localVideoTrack(): MediaStreamTrack | undefined { - return this.localMediaStream?.getTracks().find((track) => track.kind === "video"); + return this.session && this.sessionManager.getLocalVideoTrack(this.session); } /** @@ -256,7 +116,7 @@ export class SimpleUser { * @deprecated Use remoteMediaStream and get track from the stream. */ get remoteAudioTrack(): MediaStreamTrack | undefined { - return this.remoteMediaStream?.getTracks().find((track) => track.kind === "audio"); + return this.session && this.sessionManager.getRemoteAudioTrack(this.session); } /** @@ -264,7 +124,7 @@ export class SimpleUser { * @deprecated Use remoteMediaStream and get track from the stream. */ get remoteVideoTrack(): MediaStreamTrack | undefined { - return this.remoteMediaStream?.getTracks().find((track) => track.kind === "video"); + return this.session && this.sessionManager.getRemoteVideoTrack(this.session); } /** @@ -274,11 +134,7 @@ export class SimpleUser { */ public connect(): Promise { this.logger.log(`[${this.id}] Connecting UserAgent...`); - this.connectRequested = true; - if (this.userAgent.state !== UserAgentState.Started) { - return this.userAgent.start(); - } - return this.userAgent.reconnect(); + return this.sessionManager.connect(); } /** @@ -288,15 +144,14 @@ export class SimpleUser { */ public disconnect(): Promise { this.logger.log(`[${this.id}] Disconnecting UserAgent...`); - this.connectRequested = false; - return this.userAgent.stop(); + return this.sessionManager.disconnect(); } /** * Return true if connected. */ public isConnected(): boolean { - return this.userAgent.isConnected(); + return this.sessionManager.isConnected(); } /** @@ -305,41 +160,9 @@ export class SimpleUser { * Send a REGISTER request for the UserAgent's AOR. * Resolves when the REGISTER request is sent, otherwise rejects. */ - public register( - registererOptions?: RegistererOptions, - registererRegisterOptions?: RegistererRegisterOptions - ): Promise { + public register(registererRegisterOptions?: RegistererRegisterOptions): Promise { this.logger.log(`[${this.id}] Registering UserAgent...`); - this.registerRequested = true; - - if (!this.registerer) { - this.registerer = new Registerer(this.userAgent, registererOptions); - this.registerer.stateChange.addListener((state: RegistererState) => { - switch (state) { - case RegistererState.Initial: - break; - case RegistererState.Registered: - if (this.delegate && this.delegate.onRegistered) { - this.delegate.onRegistered(); - } - break; - case RegistererState.Unregistered: - if (this.delegate && this.delegate.onUnregistered) { - this.delegate.onUnregistered(); - } - break; - case RegistererState.Terminated: - this.registerer = undefined; - break; - default: - throw new Error("Unknown registerer state."); - } - }); - } - - return this.registerer.register(registererRegisterOptions).then(() => { - return; - }); + return this.sessionManager.register(registererRegisterOptions); } /** @@ -350,15 +173,7 @@ export class SimpleUser { */ public unregister(registererUnregisterOptions?: RegistererUnregisterOptions): Promise { this.logger.log(`[${this.id}] Unregistering UserAgent...`); - this.registerRequested = false; - - if (!this.registerer) { - return Promise.resolve(); - } - - return this.registerer.unregister(registererUnregisterOptions).then(() => { - return; - }); + return this.sessionManager.unregister(registererUnregisterOptions); } /** @@ -377,32 +192,10 @@ export class SimpleUser { inviterInviteOptions?: InviterInviteOptions ): Promise { this.logger.log(`[${this.id}] Beginning Session...`); - if (this.session) { return Promise.reject(new Error("Session already exists.")); } - - const target = UserAgent.makeURI(destination); - if (!target) { - return Promise.reject(new Error(`Failed to create a valid URI from "${destination}"`)); - } - - // Use our configured constraints as InviterOptions if none provided - if (!inviterOptions) { - inviterOptions = {}; - } - if (!inviterOptions.sessionDescriptionHandlerOptions) { - inviterOptions.sessionDescriptionHandlerOptions = {}; - } - if (!inviterOptions.sessionDescriptionHandlerOptions.constraints) { - inviterOptions.sessionDescriptionHandlerOptions.constraints = this.constraints; - } - - // Create a new Inviter for the outgoing Session - const inviter = new Inviter(this.userAgent, target, inviterOptions); - - // Send INVITE - return this.sendInvite(inviter, inviterOptions, inviterInviteOptions).then(() => { + return this.sessionManager.call(destination, inviterOptions, inviterInviteOptions).then(() => { return; }); } @@ -412,11 +205,16 @@ export class SimpleUser { * @remarks * Send a BYE request, CANCEL request or reject response to end the current Session. * Resolves when the request/response is sent, otherwise rejects. - * Use `onCallTerminated` delegate method to determine if and when call is ended. + * Use `onCallHangup` delegate method to determine if and when call is ended. */ public hangup(): Promise { this.logger.log(`[${this.id}] Hangup...`); - return this.terminate(); + if (!this.session) { + return Promise.reject(new Error("Session does not exist.")); + } + return this.sessionManager.hangup(this.session).then(() => { + this.session = undefined; + }); } /** @@ -429,27 +227,10 @@ export class SimpleUser { */ public answer(invitationAcceptOptions?: InvitationAcceptOptions): Promise { this.logger.log(`[${this.id}] Accepting Invitation...`); - if (!this.session) { return Promise.reject(new Error("Session does not exist.")); } - - if (!(this.session instanceof Invitation)) { - return Promise.reject(new Error("Session not instance of Invitation.")); - } - - // Use our configured constraints as InvitationAcceptOptions if none provided - if (!invitationAcceptOptions) { - invitationAcceptOptions = {}; - } - if (!invitationAcceptOptions.sessionDescriptionHandlerOptions) { - invitationAcceptOptions.sessionDescriptionHandlerOptions = {}; - } - if (!invitationAcceptOptions.sessionDescriptionHandlerOptions.constraints) { - invitationAcceptOptions.sessionDescriptionHandlerOptions.constraints = this.constraints; - } - - return this.session.accept(invitationAcceptOptions); + return this.sessionManager.answer(this.session, invitationAcceptOptions); } /** @@ -457,20 +238,14 @@ export class SimpleUser { * @remarks * Reject an incoming INVITE request. * Resolves with the response is sent, otherwise rejects. - * Use `onCallTerminated` delegate method to determine if and when call is ended. + * Use `onCallHangup` delegate method to determine if and when call is ended. */ public decline(): Promise { this.logger.log(`[${this.id}] rejecting Invitation...`); - if (!this.session) { return Promise.reject(new Error("Session does not exist.")); } - - if (!(this.session instanceof Invitation)) { - return Promise.reject(new Error("Session not instance of Invitation.")); - } - - return this.session.reject(); + return this.sessionManager.decline(this.session); } /** @@ -483,7 +258,10 @@ export class SimpleUser { */ public hold(): Promise { this.logger.log(`[${this.id}] holding session...`); - return this.setHold(true); + if (!this.session) { + return Promise.reject(new Error("Session does not exist.")); + } + return this.sessionManager.hold(this.session); } /** @@ -496,7 +274,10 @@ export class SimpleUser { */ public unhold(): Promise { this.logger.log(`[${this.id}] unholding session...`); - return this.setHold(false); + if (!this.session) { + return Promise.reject(new Error("Session does not exist.")); + } + return this.sessionManager.unhold(this.session); } /** @@ -504,8 +285,8 @@ export class SimpleUser { * @remarks * True if session media is on hold. */ - public isHeld(): boolean { - return this.held; + public isHeld(): boolean | undefined { + return this.session && this.sessionManager.isHeld(this.session); } /** @@ -515,7 +296,7 @@ export class SimpleUser { */ public mute(): void { this.logger.log(`[${this.id}] disabling media tracks...`); - this.setMute(true); + return this.session && this.sessionManager.mute(this.session); } /** @@ -525,7 +306,7 @@ export class SimpleUser { */ public unmute(): void { this.logger.log(`[${this.id}] enabling media tracks...`); - this.setMute(false); + return this.session && this.sessionManager.unmute(this.session); } /** @@ -533,8 +314,8 @@ export class SimpleUser { * @remarks * True if sender's media track is disabled. */ - public isMuted(): boolean { - return this.muted; + public isMuted(): boolean | undefined { + return this.session && this.sessionManager.isMuted(this.session); } /** @@ -545,47 +326,10 @@ export class SimpleUser { */ public sendDTMF(tone: string): Promise { this.logger.log(`[${this.id}] sending DTMF...`); - - // As RFC 6086 states, sending DTMF via INFO is not standardized... - // - // Companies have been using INFO messages in order to transport - // Dual-Tone Multi-Frequency (DTMF) tones. All mechanisms are - // proprietary and have not been standardized. - // https://tools.ietf.org/html/rfc6086#section-2 - // - // It is however widely supported based on this draft: - // https://tools.ietf.org/html/draft-kaplan-dispatch-info-dtmf-package-00 - - // Validate tone - if (!/^[0-9A-D#*,]$/.exec(tone)) { - return Promise.reject(new Error("Invalid DTMF tone.")); - } - if (!this.session) { return Promise.reject(new Error("Session does not exist.")); } - - // The UA MUST populate the "application/dtmf-relay" body, as defined - // earlier, with the button pressed and the duration it was pressed - // for. Technically, this actually requires the INFO to be generated - // when the user *releases* the button, however if the user has still - // not released a button after 5 seconds, which is the maximum duration - // supported by this mechanism, the UA should generate the INFO at that - // time. - // https://tools.ietf.org/html/draft-kaplan-dispatch-info-dtmf-package-00#section-5.3 - this.logger.log(`[${this.id}] Sending DTMF tone: ${tone}`); - const dtmf = tone; - const duration = 2000; - const body = { - contentDisposition: "render", - contentType: "application/dtmf-relay", - content: "Signal=" + dtmf + "\r\nDuration=" + duration - }; - const requestOptions = { body }; - - return this.session.info({ requestOptions }).then(() => { - return; - }); + return this.sessionManager.sendDTMF(this.session, tone); } /** @@ -596,517 +340,6 @@ export class SimpleUser { */ public message(destination: string, message: string): Promise { this.logger.log(`[${this.id}] sending message...`); - - const target = UserAgent.makeURI(destination); - if (!target) { - return Promise.reject(new Error(`Failed to create a valid URI from "${destination}"`)); - } - return new Messager(this.userAgent, target, message).message(); - } - - /** Media constraints. */ - private get constraints(): { audio: boolean; video: boolean } { - let constraints = { audio: true, video: false }; // default to audio only calls - if (this.options.media?.constraints) { - constraints = { ...this.options.media.constraints }; - } - return constraints; - } - - /** - * Attempt reconnection up to `reconnectionAttempts` times. - * @param reconnectionAttempt - Current attempt number. - */ - private attemptReconnection(reconnectionAttempt = 1): void { - const reconnectionAttempts = this.options.reconnectionAttempts ?? 3; - const reconnectionDelay = this.options.reconnectionDelay ?? 4; - - if (!this.connectRequested) { - this.logger.log(`[${this.id}] Reconnection not currently desired`); - return; // If intentionally disconnected, don't reconnect. - } - - if (this.attemptingReconnection) { - this.logger.log(`[${this.id}] Reconnection attempt already in progress`); - } - - if (reconnectionAttempt > reconnectionAttempts) { - this.logger.log(`[${this.id}] Reconnection maximum attempts reached`); - return; - } - - if (reconnectionAttempt === 1) { - this.logger.log(`[${this.id}] Reconnection attempt ${reconnectionAttempt} of ${reconnectionAttempts} - trying`); - } else { - this.logger.log( - `[${this.id}] Reconnection attempt ${reconnectionAttempt} of ${reconnectionAttempts} - trying in ${reconnectionDelay} seconds` - ); - } - - this.attemptingReconnection = true; - - setTimeout( - () => { - if (!this.connectRequested) { - this.logger.log( - `[${this.id}] Reconnection attempt ${reconnectionAttempt} of ${reconnectionAttempts} - aborted` - ); - this.attemptingReconnection = false; - return; // If intentionally disconnected, don't reconnect. - } - this.userAgent - .reconnect() - .then(() => { - this.logger.log( - `[${this.id}] Reconnection attempt ${reconnectionAttempt} of ${reconnectionAttempts} - succeeded` - ); - this.attemptingReconnection = false; - }) - .catch((error: Error) => { - this.logger.log( - `[${this.id}] Reconnection attempt ${reconnectionAttempt} of ${reconnectionAttempts} - failed` - ); - this.logger.error(error.message); - this.attemptingReconnection = false; - this.attemptReconnection(++reconnectionAttempt); - }); - }, - reconnectionAttempt === 1 ? 0 : reconnectionDelay * 1000 - ); - } - - /** Helper function to remove media from html elements. */ - private cleanupMedia(): void { - if (this.options.media) { - if (this.options.media.local) { - if (this.options.media.local.video) { - this.options.media.local.video.srcObject = null; - this.options.media.local.video.pause(); - } - } - if (this.options.media.remote) { - if (this.options.media.remote.audio) { - this.options.media.remote.audio.srcObject = null; - this.options.media.remote.audio.pause(); - } - if (this.options.media.remote.video) { - this.options.media.remote.video.srcObject = null; - this.options.media.remote.video.pause(); - } - } - } - } - - /** Helper function to enable/disable media tracks. */ - private enableReceiverTracks(enable: boolean): void { - if (!this.session) { - throw new Error("Session does not exist."); - } - - const sessionDescriptionHandler = this.session.sessionDescriptionHandler; - if (!(sessionDescriptionHandler instanceof SessionDescriptionHandler)) { - throw new Error("Session's session description handler not instance of SessionDescriptionHandler."); - } - - const peerConnection = sessionDescriptionHandler.peerConnection; - if (!peerConnection) { - throw new Error("Peer connection closed."); - } - - peerConnection.getReceivers().forEach((receiver) => { - if (receiver.track) { - receiver.track.enabled = enable; - } - }); - } - - /** Helper function to enable/disable media tracks. */ - private enableSenderTracks(enable: boolean): void { - if (!this.session) { - throw new Error("Session does not exist."); - } - - const sessionDescriptionHandler = this.session.sessionDescriptionHandler; - if (!(sessionDescriptionHandler instanceof SessionDescriptionHandler)) { - throw new Error("Session's session description handler not instance of SessionDescriptionHandler."); - } - - const peerConnection = sessionDescriptionHandler.peerConnection; - if (!peerConnection) { - throw new Error("Peer connection closed."); - } - - peerConnection.getSenders().forEach((sender) => { - if (sender.track) { - sender.track.enabled = enable; - } - }); - } - - /** - * Setup session delegate and state change handler. - * @param session - Session to setup - * @param referralInviterOptions - Options for any Inviter created as result of a REFER. - */ - private initSession(session: Session, referralInviterOptions?: InviterOptions): void { - // Set session - this.session = session; - - // Call session created callback - if (this.delegate && this.delegate.onCallCreated) { - this.delegate.onCallCreated(); - } - - // Setup session state change handler - this.session.stateChange.addListener((state: SessionState) => { - this.logger.log(`[${this.id}] session state changed to ${state}`); - switch (state) { - case SessionState.Initial: - break; - case SessionState.Establishing: - break; - case SessionState.Established: - this.setupLocalMedia(); - this.setupRemoteMedia(); - if (this.delegate && this.delegate.onCallAnswered) { - this.delegate.onCallAnswered(); - } - break; - case SessionState.Terminating: - // fall through - case SessionState.Terminated: - this.session = undefined; - this.cleanupMedia(); - if (this.delegate && this.delegate.onCallHangup) { - this.delegate.onCallHangup(); - } - break; - default: - throw new Error("Unknown session state."); - } - }); - - // Setup delegate - this.session.delegate = { - onInfo: (info: Info): void => { - // As RFC 6086 states, sending DTMF via INFO is not standardized... - // - // Companies have been using INFO messages in order to transport - // Dual-Tone Multi-Frequency (DTMF) tones. All mechanisms are - // proprietary and have not been standardized. - // https://tools.ietf.org/html/rfc6086#section-2 - // - // It is however widely supported based on this draft: - // https://tools.ietf.org/html/draft-kaplan-dispatch-info-dtmf-package-00 - - // FIXME: TODO: We should reject correctly... - // - // If a UA receives an INFO request associated with an Info Package that - // the UA has not indicated willingness to receive, the UA MUST send a - // 469 (Bad Info Package) response (see Section 11.6), which contains a - // Recv-Info header field with Info Packages for which the UA is willing - // to receive INFO requests. - // https://tools.ietf.org/html/rfc6086#section-4.2.2 - - // No delegate - if (this.delegate?.onCallDTMFReceived === undefined) { - info.reject(); - return; - } - - // Invalid content type - const contentType = info.request.getHeader("content-type"); - if (!contentType || !/^application\/dtmf-relay/i.exec(contentType)) { - info.reject(); - return; - } - - // Invalid body - const body = info.request.body.split("\r\n", 2); - if (body.length !== 2) { - info.reject(); - return; - } - - // Invalid tone - let tone: string | undefined; - const toneRegExp = /^(Signal\s*?=\s*?)([0-9A-D#*]{1})(\s)?.*/; - if (toneRegExp.test(body[0])) { - tone = body[0].replace(toneRegExp, "$2"); - } - if (!tone) { - info.reject(); - return; - } - - // Invalid duration - let duration: number | undefined; - const durationRegExp = /^(Duration\s?=\s?)([0-9]{1,4})(\s)?.*/; - if (durationRegExp.test(body[1])) { - duration = parseInt(body[1].replace(durationRegExp, "$2"), 10); - } - if (!duration) { - info.reject(); - return; - } - - info - .accept() - .then(() => { - if (this.delegate && this.delegate.onCallDTMFReceived) { - if (!tone || !duration) { - throw new Error("Tone or duration undefined."); - } - this.delegate.onCallDTMFReceived(tone, duration); - } - }) - .catch((error: Error) => { - this.logger.error(error.message); - }); - }, - onRefer: (referral: Referral): void => { - referral - .accept() - .then(() => this.sendInvite(referral.makeInviter(referralInviterOptions), referralInviterOptions)) - .catch((error: Error) => { - this.logger.error(error.message); - }); - } - }; - } - - /** Helper function to init send then send invite. */ - private sendInvite( - inviter: Inviter, - inviterOptions?: InviterOptions, - inviterInviteOptions?: InviterInviteOptions - ): Promise { - // Initialize our session - this.initSession(inviter, inviterOptions); - - // Clone options for safe keeping - const options = { ...inviterInviteOptions }; - options.requestDelegate = { ...options.requestDelegate }; - - // If utilizing early media, add a handler to catch 183 Session Progress - // messages and then to play the associated remote media (the early media). - if (inviterOptions?.earlyMedia) { - const existingOnProgress = options.requestDelegate.onProgress; - options.requestDelegate.onProgress = (response) => { - if (response.message.statusCode === 183) { - this.setupRemoteMedia(); - } - existingOnProgress && existingOnProgress(response); - }; - } - - // Send the INVITE - return inviter.invite(options).then(() => { - this.logger.log(`[${this.id}] sent INVITE`); - }); - } - - /** - * Puts Session on hold. - * @param hold - Hold on if true, off if false. - */ - private setHold(hold: boolean): Promise { - if (!this.session) { - return Promise.reject(new Error("Session does not exist.")); - } - const session = this.session; - - // Just resolve if we are already in correct state - if (this.held === hold) { - return Promise.resolve(); - } - - const sessionDescriptionHandler = this.session.sessionDescriptionHandler; - if (!(sessionDescriptionHandler instanceof SessionDescriptionHandler)) { - throw new Error("Session's session description handler not instance of SessionDescriptionHandler."); - } - - const options: SessionInviteOptions = { - requestDelegate: { - onAccept: (): void => { - this.held = hold; - this.enableReceiverTracks(!this.held); - this.enableSenderTracks(!this.held && !this.muted); - if (this.delegate && this.delegate.onCallHold) { - this.delegate.onCallHold(this.held); - } - }, - onReject: (): void => { - this.logger.warn(`[${this.id}] re-invite request was rejected`); - this.enableReceiverTracks(!this.held); - this.enableSenderTracks(!this.held && !this.muted); - if (this.delegate && this.delegate.onCallHold) { - this.delegate.onCallHold(this.held); - } - } - } - }; - - // Session properties used to pass options to the SessionDescriptionHandler: - // - // 1) Session.sessionDescriptionHandlerOptions - // SDH options for the initial INVITE transaction. - // - Used in all cases when handling the initial INVITE transaction as either UAC or UAS. - // - May be set directly at anytime. - // - May optionally be set via constructor option. - // - May optionally be set via options passed to Inviter.invite() or Invitation.accept(). - // - // 2) Session.sessionDescriptionHandlerOptionsReInvite - // SDH options for re-INVITE transactions. - // - Used in all cases when handling a re-INVITE transaction as either UAC or UAS. - // - May be set directly at anytime. - // - May optionally be set via constructor option. - // - May optionally be set via options passed to Session.invite(). - - const sessionDescriptionHandlerOptions = - session.sessionDescriptionHandlerOptionsReInvite as SessionDescriptionHandlerOptions; - sessionDescriptionHandlerOptions.hold = hold; - session.sessionDescriptionHandlerOptionsReInvite = sessionDescriptionHandlerOptions; - - // Send re-INVITE - return this.session - .invite(options) - .then(() => { - // preemptively enable/disable tracks - this.enableReceiverTracks(!hold); - this.enableSenderTracks(!hold && !this.muted); - }) - .catch((error: Error) => { - if (error instanceof RequestPendingError) { - this.logger.error(`[${this.id}] A hold request is already in progress.`); - } - throw error; - }); - } - - /** - * Puts Session on mute. - * @param mute - Mute on if true, off if false. - */ - private setMute(mute: boolean): void { - if (!this.session) { - this.logger.warn(`[${this.id}] A session is required to enabled/disable media tracks`); - return; - } - - if (this.session.state !== SessionState.Established) { - this.logger.warn(`[${this.id}] An established session is required to enable/disable media tracks`); - return; - } - - this.muted = mute; - - this.enableSenderTracks(!this.held && !this.muted); - } - - /** Helper function to attach local media to html elements. */ - private setupLocalMedia(): void { - if (!this.session) { - throw new Error("Session does not exist."); - } - - const mediaElement = this.options.media?.local?.video; - if (mediaElement) { - const localStream = this.localMediaStream; - if (!localStream) { - throw new Error("Local media stream undefiend."); - } - mediaElement.srcObject = localStream; - mediaElement.volume = 0; - mediaElement.play().catch((error: Error) => { - this.logger.error(`[${this.id}] Failed to play local media`); - this.logger.error(error.message); - }); - } - } - - /** Helper function to attach remote media to html elements. */ - private setupRemoteMedia(): void { - if (!this.session) { - throw new Error("Session does not exist."); - } - - const mediaElement = this.options.media?.remote?.video || this.options.media?.remote?.audio; - - if (mediaElement) { - const remoteStream = this.remoteMediaStream; - if (!remoteStream) { - throw new Error("Remote media stream undefiend."); - } - mediaElement.autoplay = true; // Safari hack, because you cannot call .play() from a non user action - mediaElement.srcObject = remoteStream; - mediaElement.play().catch((error: Error) => { - this.logger.error(`[${this.id}] Failed to play remote media`); - this.logger.error(error.message); - }); - remoteStream.onaddtrack = (): void => { - this.logger.log(`[${this.id}] Remote media onaddtrack`); - mediaElement.load(); // Safari hack, as it doesn't work otheriwse - mediaElement.play().catch((error: Error) => { - this.logger.error(`[${this.id}] Failed to play remote media`); - this.logger.error(error.message); - }); - }; - } - } - - /** - * End a session. - * @remarks - * Send a BYE request, CANCEL request or reject response to end the current Session. - * Resolves when the request/response is sent, otherwise rejects. - * Use `onCallTerminated` delegate method to determine if and when Session is terminated. - */ - private terminate(): Promise { - this.logger.log(`[${this.id}] Terminating...`); - - if (!this.session) { - return Promise.reject(new Error("Session does not exist.")); - } - - switch (this.session.state) { - case SessionState.Initial: - if (this.session instanceof Inviter) { - return this.session.cancel().then(() => { - this.logger.log(`[${this.id}] Inviter never sent INVITE (canceled)`); - }); - } else if (this.session instanceof Invitation) { - return this.session.reject().then(() => { - this.logger.log(`[${this.id}] Invitation rejected (sent 480)`); - }); - } else { - throw new Error("Unknown session type."); - } - case SessionState.Establishing: - if (this.session instanceof Inviter) { - return this.session.cancel().then(() => { - this.logger.log(`[${this.id}] Inviter canceled (sent CANCEL)`); - }); - } else if (this.session instanceof Invitation) { - return this.session.reject().then(() => { - this.logger.log(`[${this.id}] Invitation rejected (sent 480)`); - }); - } else { - throw new Error("Unknown session type."); - } - case SessionState.Established: - return this.session.bye().then(() => { - this.logger.log(`[${this.id}] Session ended (sent BYE)`); - }); - case SessionState.Terminating: - break; - case SessionState.Terminated: - break; - default: - throw new Error("Unknown state"); - } - - this.logger.log(`[${this.id}] Terminating in state ${this.session.state}, no action taken`); - return Promise.resolve(); + return this.sessionManager.message(destination, message); } } From b53c8b727eda68441b4fcd120dccab4953794198 Mon Sep 17 00:00:00 2001 From: John Riordan Date: Thu, 20 Oct 2022 14:53:19 -0400 Subject: [PATCH 51/73] Add SessionManager Docs --- docs/session-manager/index.md | 12 + .../sip.js.defaultmanagedsessionfactory.md | 17 + .../sip.js.managedsession.held.md | 11 + docs/session-manager/sip.js.managedsession.md | 24 ++ .../sip.js.managedsession.medialocal.md | 11 + .../sip.js.managedsession.mediaremote.md | 11 + .../sip.js.managedsession.muted.md | 11 + .../sip.js.managedsession.session.md | 11 + .../sip.js.managedsessionfactory.md | 13 + docs/session-manager/sip.js.md | 31 ++ .../sip.js.sessionmanager._constructor_.md | 21 + .../sip.js.sessionmanager.answer.md | 29 ++ .../sip.js.sessionmanager.call.md | 30 ++ .../sip.js.sessionmanager.connect.md | 21 + .../sip.js.sessionmanager.decline.md | 28 ++ .../sip.js.sessionmanager.delegate.md | 13 + .../sip.js.sessionmanager.disconnect.md | 21 + ...ip.js.sessionmanager.getlocalaudiotrack.md | 29 ++ ...p.js.sessionmanager.getlocalmediastream.md | 24 ++ ...ip.js.sessionmanager.getlocalvideotrack.md | 29 ++ ...p.js.sessionmanager.getremoteaudiotrack.md | 29 ++ ....js.sessionmanager.getremotemediastream.md | 24 ++ ...p.js.sessionmanager.getremotevideotrack.md | 29 ++ .../sip.js.sessionmanager.hangup.md | 28 ++ .../sip.js.sessionmanager.hold.md | 28 ++ .../sip.js.sessionmanager.isconnected.md | 17 + .../sip.js.sessionmanager.isheld.md | 28 ++ .../sip.js.sessionmanager.ismuted.md | 28 ++ .../sip.js.sessionmanager.managedsessions.md | 13 + docs/session-manager/sip.js.sessionmanager.md | 57 +++ .../sip.js.sessionmanager.message.md | 29 ++ .../sip.js.sessionmanager.mute.md | 28 ++ .../sip.js.sessionmanager.register.md | 28 ++ .../sip.js.sessionmanager.senddtmf.md | 29 ++ .../sip.js.sessionmanager.transfer.md | 30 ++ .../sip.js.sessionmanager.unhold.md | 28 ++ .../sip.js.sessionmanager.unmute.md | 28 ++ .../sip.js.sessionmanager.unregister.md | 28 ++ .../sip.js.sessionmanager.useragent.md | 13 + .../sip.js.sessionmanagerdelegate.md | 31 ++ ...s.sessionmanagerdelegate.oncallanswered.md | 28 ++ ...js.sessionmanagerdelegate.oncallcreated.md | 28 ++ ...ssionmanagerdelegate.oncalldtmfreceived.md | 30 ++ ....js.sessionmanagerdelegate.oncallhangup.md | 28 ++ ...ip.js.sessionmanagerdelegate.oncallhold.md | 29 ++ ...s.sessionmanagerdelegate.oncallreceived.md | 28 ++ ...essionmanagerdelegate.onmessagereceived.md | 28 ++ ...nmanagerdelegate.onnotificationreceived.md | 28 ++ ....js.sessionmanagerdelegate.onregistered.md | 17 + ....sessionmanagerdelegate.onserverconnect.md | 21 + ...ssionmanagerdelegate.onserverdisconnect.md | 28 ++ ...s.sessionmanagerdelegate.onunregistered.md | 17 + .../sip.js.sessionmanagermedia.constraints.md | 18 + .../sip.js.sessionmanagermedia.local.md | 13 + .../sip.js.sessionmanagermedia.md | 22 ++ .../sip.js.sessionmanagermedia.remote.md | 13 + ...js.sessionmanagermediaconstraints.audio.md | 13 + .../sip.js.sessionmanagermediaconstraints.md | 21 + ...js.sessionmanagermediaconstraints.video.md | 13 + .../sip.js.sessionmanagermedialocal.md | 20 + .../sip.js.sessionmanagermedialocal.video.md | 13 + .../sip.js.sessionmanagermediaremote.audio.md | 13 + .../sip.js.sessionmanagermediaremote.md | 21 + .../sip.js.sessionmanagermediaremote.video.md | 13 + .../sip.js.sessionmanageroptions.aor.md | 18 + .../sip.js.sessionmanageroptions.autostop.md | 13 + .../sip.js.sessionmanageroptions.delegate.md | 13 + ...options.icestopwaitingonserverreflexive.md | 18 + ...ionmanageroptions.managedsessionfactory.md | 18 + ...nmanageroptions.maxsimultaneoussessions.md | 18 + .../sip.js.sessionmanageroptions.md | 34 ++ .../sip.js.sessionmanageroptions.media.md | 13 + ...sionmanageroptions.reconnectionattempts.md | 18 + ...sessionmanageroptions.reconnectiondelay.md | 13 + ...sessionmanageroptions.registereroptions.md | 13 + ...anageroptions.registererregisteroptions.md | 18 + ....js.sessionmanageroptions.registerguard.md | 13 + ...sessionmanageroptions.registrationretry.md | 13 + ...anageroptions.registrationretryinterval.md | 13 + ....sessionmanageroptions.useragentoptions.md | 13 + etc/session-manager/sip.js.api.md | 141 +++++++ package.json | 6 +- .../web/session-manager/api-extractor.json | 358 ++++++++++++++++++ 83 files changed, 2216 insertions(+), 1 deletion(-) create mode 100644 docs/session-manager/index.md create mode 100644 docs/session-manager/sip.js.defaultmanagedsessionfactory.md create mode 100644 docs/session-manager/sip.js.managedsession.held.md create mode 100644 docs/session-manager/sip.js.managedsession.md create mode 100644 docs/session-manager/sip.js.managedsession.medialocal.md create mode 100644 docs/session-manager/sip.js.managedsession.mediaremote.md create mode 100644 docs/session-manager/sip.js.managedsession.muted.md create mode 100644 docs/session-manager/sip.js.managedsession.session.md create mode 100644 docs/session-manager/sip.js.managedsessionfactory.md create mode 100644 docs/session-manager/sip.js.md create mode 100644 docs/session-manager/sip.js.sessionmanager._constructor_.md create mode 100644 docs/session-manager/sip.js.sessionmanager.answer.md create mode 100644 docs/session-manager/sip.js.sessionmanager.call.md create mode 100644 docs/session-manager/sip.js.sessionmanager.connect.md create mode 100644 docs/session-manager/sip.js.sessionmanager.decline.md create mode 100644 docs/session-manager/sip.js.sessionmanager.delegate.md create mode 100644 docs/session-manager/sip.js.sessionmanager.disconnect.md create mode 100644 docs/session-manager/sip.js.sessionmanager.getlocalaudiotrack.md create mode 100644 docs/session-manager/sip.js.sessionmanager.getlocalmediastream.md create mode 100644 docs/session-manager/sip.js.sessionmanager.getlocalvideotrack.md create mode 100644 docs/session-manager/sip.js.sessionmanager.getremoteaudiotrack.md create mode 100644 docs/session-manager/sip.js.sessionmanager.getremotemediastream.md create mode 100644 docs/session-manager/sip.js.sessionmanager.getremotevideotrack.md create mode 100644 docs/session-manager/sip.js.sessionmanager.hangup.md create mode 100644 docs/session-manager/sip.js.sessionmanager.hold.md create mode 100644 docs/session-manager/sip.js.sessionmanager.isconnected.md create mode 100644 docs/session-manager/sip.js.sessionmanager.isheld.md create mode 100644 docs/session-manager/sip.js.sessionmanager.ismuted.md create mode 100644 docs/session-manager/sip.js.sessionmanager.managedsessions.md create mode 100644 docs/session-manager/sip.js.sessionmanager.md create mode 100644 docs/session-manager/sip.js.sessionmanager.message.md create mode 100644 docs/session-manager/sip.js.sessionmanager.mute.md create mode 100644 docs/session-manager/sip.js.sessionmanager.register.md create mode 100644 docs/session-manager/sip.js.sessionmanager.senddtmf.md create mode 100644 docs/session-manager/sip.js.sessionmanager.transfer.md create mode 100644 docs/session-manager/sip.js.sessionmanager.unhold.md create mode 100644 docs/session-manager/sip.js.sessionmanager.unmute.md create mode 100644 docs/session-manager/sip.js.sessionmanager.unregister.md create mode 100644 docs/session-manager/sip.js.sessionmanager.useragent.md create mode 100644 docs/session-manager/sip.js.sessionmanagerdelegate.md create mode 100644 docs/session-manager/sip.js.sessionmanagerdelegate.oncallanswered.md create mode 100644 docs/session-manager/sip.js.sessionmanagerdelegate.oncallcreated.md create mode 100644 docs/session-manager/sip.js.sessionmanagerdelegate.oncalldtmfreceived.md create mode 100644 docs/session-manager/sip.js.sessionmanagerdelegate.oncallhangup.md create mode 100644 docs/session-manager/sip.js.sessionmanagerdelegate.oncallhold.md create mode 100644 docs/session-manager/sip.js.sessionmanagerdelegate.oncallreceived.md create mode 100644 docs/session-manager/sip.js.sessionmanagerdelegate.onmessagereceived.md create mode 100644 docs/session-manager/sip.js.sessionmanagerdelegate.onnotificationreceived.md create mode 100644 docs/session-manager/sip.js.sessionmanagerdelegate.onregistered.md create mode 100644 docs/session-manager/sip.js.sessionmanagerdelegate.onserverconnect.md create mode 100644 docs/session-manager/sip.js.sessionmanagerdelegate.onserverdisconnect.md create mode 100644 docs/session-manager/sip.js.sessionmanagerdelegate.onunregistered.md create mode 100644 docs/session-manager/sip.js.sessionmanagermedia.constraints.md create mode 100644 docs/session-manager/sip.js.sessionmanagermedia.local.md create mode 100644 docs/session-manager/sip.js.sessionmanagermedia.md create mode 100644 docs/session-manager/sip.js.sessionmanagermedia.remote.md create mode 100644 docs/session-manager/sip.js.sessionmanagermediaconstraints.audio.md create mode 100644 docs/session-manager/sip.js.sessionmanagermediaconstraints.md create mode 100644 docs/session-manager/sip.js.sessionmanagermediaconstraints.video.md create mode 100644 docs/session-manager/sip.js.sessionmanagermedialocal.md create mode 100644 docs/session-manager/sip.js.sessionmanagermedialocal.video.md create mode 100644 docs/session-manager/sip.js.sessionmanagermediaremote.audio.md create mode 100644 docs/session-manager/sip.js.sessionmanagermediaremote.md create mode 100644 docs/session-manager/sip.js.sessionmanagermediaremote.video.md create mode 100644 docs/session-manager/sip.js.sessionmanageroptions.aor.md create mode 100644 docs/session-manager/sip.js.sessionmanageroptions.autostop.md create mode 100644 docs/session-manager/sip.js.sessionmanageroptions.delegate.md create mode 100644 docs/session-manager/sip.js.sessionmanageroptions.icestopwaitingonserverreflexive.md create mode 100644 docs/session-manager/sip.js.sessionmanageroptions.managedsessionfactory.md create mode 100644 docs/session-manager/sip.js.sessionmanageroptions.maxsimultaneoussessions.md create mode 100644 docs/session-manager/sip.js.sessionmanageroptions.md create mode 100644 docs/session-manager/sip.js.sessionmanageroptions.media.md create mode 100644 docs/session-manager/sip.js.sessionmanageroptions.reconnectionattempts.md create mode 100644 docs/session-manager/sip.js.sessionmanageroptions.reconnectiondelay.md create mode 100644 docs/session-manager/sip.js.sessionmanageroptions.registereroptions.md create mode 100644 docs/session-manager/sip.js.sessionmanageroptions.registererregisteroptions.md create mode 100644 docs/session-manager/sip.js.sessionmanageroptions.registerguard.md create mode 100644 docs/session-manager/sip.js.sessionmanageroptions.registrationretry.md create mode 100644 docs/session-manager/sip.js.sessionmanageroptions.registrationretryinterval.md create mode 100644 docs/session-manager/sip.js.sessionmanageroptions.useragentoptions.md create mode 100644 etc/session-manager/sip.js.api.md create mode 100644 src/platform/web/session-manager/api-extractor.json diff --git a/docs/session-manager/index.md b/docs/session-manager/index.md new file mode 100644 index 000000000..1b07dd94f --- /dev/null +++ b/docs/session-manager/index.md @@ -0,0 +1,12 @@ + + +[Home](./index.md) + +## API Reference + +## Packages + +| Package | Description | +| --- | --- | +| [sip.js](./sip.js.md) | | + diff --git a/docs/session-manager/sip.js.defaultmanagedsessionfactory.md b/docs/session-manager/sip.js.defaultmanagedsessionfactory.md new file mode 100644 index 000000000..95572b508 --- /dev/null +++ b/docs/session-manager/sip.js.defaultmanagedsessionfactory.md @@ -0,0 +1,17 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [defaultManagedSessionFactory](./sip.js.defaultmanagedsessionfactory.md) + +## defaultManagedSessionFactory() function + +Function which returns a ManagedSessionFactory. + +Signature: + +```typescript +export declare function defaultManagedSessionFactory(): ManagedSessionFactory; +``` +Returns: + +[ManagedSessionFactory](./sip.js.managedsessionfactory.md) + diff --git a/docs/session-manager/sip.js.managedsession.held.md b/docs/session-manager/sip.js.managedsession.held.md new file mode 100644 index 000000000..0be26c474 --- /dev/null +++ b/docs/session-manager/sip.js.managedsession.held.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [ManagedSession](./sip.js.managedsession.md) > [held](./sip.js.managedsession.held.md) + +## ManagedSession.held property + +Signature: + +```typescript +held: boolean; +``` diff --git a/docs/session-manager/sip.js.managedsession.md b/docs/session-manager/sip.js.managedsession.md new file mode 100644 index 000000000..bd5f248c4 --- /dev/null +++ b/docs/session-manager/sip.js.managedsession.md @@ -0,0 +1,24 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [ManagedSession](./sip.js.managedsession.md) + +## ManagedSession interface + +An interface for managed the sessions. + +Signature: + +```typescript +export interface ManagedSession +``` + +## Properties + +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [held](./sip.js.managedsession.held.md) | | boolean | | +| [mediaLocal](./sip.js.managedsession.medialocal.md) | | [SessionManagerMediaLocal](./sip.js.sessionmanagermedialocal.md) | | +| [mediaRemote](./sip.js.managedsession.mediaremote.md) | | [SessionManagerMediaRemote](./sip.js.sessionmanagermediaremote.md) | | +| [muted](./sip.js.managedsession.muted.md) | | boolean | | +| [session](./sip.js.managedsession.session.md) | | Session | | + diff --git a/docs/session-manager/sip.js.managedsession.medialocal.md b/docs/session-manager/sip.js.managedsession.medialocal.md new file mode 100644 index 000000000..9a776b198 --- /dev/null +++ b/docs/session-manager/sip.js.managedsession.medialocal.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [ManagedSession](./sip.js.managedsession.md) > [mediaLocal](./sip.js.managedsession.medialocal.md) + +## ManagedSession.mediaLocal property + +Signature: + +```typescript +mediaLocal?: SessionManagerMediaLocal; +``` diff --git a/docs/session-manager/sip.js.managedsession.mediaremote.md b/docs/session-manager/sip.js.managedsession.mediaremote.md new file mode 100644 index 000000000..6016831b5 --- /dev/null +++ b/docs/session-manager/sip.js.managedsession.mediaremote.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [ManagedSession](./sip.js.managedsession.md) > [mediaRemote](./sip.js.managedsession.mediaremote.md) + +## ManagedSession.mediaRemote property + +Signature: + +```typescript +mediaRemote?: SessionManagerMediaRemote; +``` diff --git a/docs/session-manager/sip.js.managedsession.muted.md b/docs/session-manager/sip.js.managedsession.muted.md new file mode 100644 index 000000000..78fdc637c --- /dev/null +++ b/docs/session-manager/sip.js.managedsession.muted.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [ManagedSession](./sip.js.managedsession.md) > [muted](./sip.js.managedsession.muted.md) + +## ManagedSession.muted property + +Signature: + +```typescript +muted: boolean; +``` diff --git a/docs/session-manager/sip.js.managedsession.session.md b/docs/session-manager/sip.js.managedsession.session.md new file mode 100644 index 000000000..8010c3885 --- /dev/null +++ b/docs/session-manager/sip.js.managedsession.session.md @@ -0,0 +1,11 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [ManagedSession](./sip.js.managedsession.md) > [session](./sip.js.managedsession.session.md) + +## ManagedSession.session property + +Signature: + +```typescript +session: Session; +``` diff --git a/docs/session-manager/sip.js.managedsessionfactory.md b/docs/session-manager/sip.js.managedsessionfactory.md new file mode 100644 index 000000000..3fcbc2263 --- /dev/null +++ b/docs/session-manager/sip.js.managedsessionfactory.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [ManagedSessionFactory](./sip.js.managedsessionfactory.md) + +## ManagedSessionFactory interface + +Factory for [ManagedSession](./sip.js.managedsession.md). + +Signature: + +```typescript +export interface ManagedSessionFactory +``` diff --git a/docs/session-manager/sip.js.md b/docs/session-manager/sip.js.md new file mode 100644 index 000000000..12ff31696 --- /dev/null +++ b/docs/session-manager/sip.js.md @@ -0,0 +1,31 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) + +## sip.js package + +## Classes + +| Class | Description | +| --- | --- | +| [SessionManager](./sip.js.sessionmanager.md) | A session manager for SIP.js sessions. | + +## Functions + +| Function | Description | +| --- | --- | +| [defaultManagedSessionFactory()](./sip.js.defaultmanagedsessionfactory.md) | Function which returns a ManagedSessionFactory. | + +## Interfaces + +| Interface | Description | +| --- | --- | +| [ManagedSession](./sip.js.managedsession.md) | An interface for managed the sessions. | +| [ManagedSessionFactory](./sip.js.managedsessionfactory.md) | Factory for [ManagedSession](./sip.js.managedsession.md). | +| [SessionManagerDelegate](./sip.js.sessionmanagerdelegate.md) | Delegate for [SessionManager](./sip.js.sessionmanager.md). | +| [SessionManagerMedia](./sip.js.sessionmanagermedia.md) | Media for [SessionManagerOptions](./sip.js.sessionmanageroptions.md). | +| [SessionManagerMediaConstraints](./sip.js.sessionmanagermediaconstraints.md) | Constraints for [SessionManagerMedia](./sip.js.sessionmanagermedia.md). | +| [SessionManagerMediaLocal](./sip.js.sessionmanagermedialocal.md) | Local media elements for [SessionManagerMedia](./sip.js.sessionmanagermedia.md). | +| [SessionManagerMediaRemote](./sip.js.sessionmanagermediaremote.md) | Remote media elements for [SessionManagerMedia](./sip.js.sessionmanagermedia.md). | +| [SessionManagerOptions](./sip.js.sessionmanageroptions.md) | Options for [SessionManager](./sip.js.sessionmanager.md). | + diff --git a/docs/session-manager/sip.js.sessionmanager._constructor_.md b/docs/session-manager/sip.js.sessionmanager._constructor_.md new file mode 100644 index 000000000..a286c9444 --- /dev/null +++ b/docs/session-manager/sip.js.sessionmanager._constructor_.md @@ -0,0 +1,21 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [SessionManager](./sip.js.sessionmanager.md) > [(constructor)](./sip.js.sessionmanager._constructor_.md) + +## SessionManager.(constructor) + +Constructs a new instance of the `SessionManager` class. + +Signature: + +```typescript +constructor(server: string, options?: SessionManagerOptions); +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| server | string | SIP WebSocket Server URL. | +| options | [SessionManagerOptions](./sip.js.sessionmanageroptions.md) | Options bucket. See [SessionManagerOptions](./sip.js.sessionmanageroptions.md) for details. | + diff --git a/docs/session-manager/sip.js.sessionmanager.answer.md b/docs/session-manager/sip.js.sessionmanager.answer.md new file mode 100644 index 000000000..2207bb31e --- /dev/null +++ b/docs/session-manager/sip.js.sessionmanager.answer.md @@ -0,0 +1,29 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [SessionManager](./sip.js.sessionmanager.md) > [answer](./sip.js.sessionmanager.answer.md) + +## SessionManager.answer() method + +Answer an incoming call. + +Signature: + +```typescript +answer(session: Session, invitationAcceptOptions?: InvitationAcceptOptions): Promise; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| session | Session | Session to answer. | +| invitationAcceptOptions | InvitationAcceptOptions | Optional options for Inviter.accept(). | + +Returns: + +Promise<void> + +## Remarks + +Accept an incoming INVITE request creating a new Session. Resolves with the response is sent, otherwise rejects. Use `onCallAnswered` delegate method to determine if and when call is established. + diff --git a/docs/session-manager/sip.js.sessionmanager.call.md b/docs/session-manager/sip.js.sessionmanager.call.md new file mode 100644 index 000000000..28e742383 --- /dev/null +++ b/docs/session-manager/sip.js.sessionmanager.call.md @@ -0,0 +1,30 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [SessionManager](./sip.js.sessionmanager.md) > [call](./sip.js.sessionmanager.call.md) + +## SessionManager.call() method + +Make an outgoing call. + +Signature: + +```typescript +call(destination: string, inviterOptions?: InviterOptions, inviterInviteOptions?: InviterInviteOptions): Promise; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| destination | string | The target destination to call. A SIP address to send the INVITE to. | +| inviterOptions | InviterOptions | Optional options for Inviter constructor. | +| inviterInviteOptions | InviterInviteOptions | Optional options for Inviter.invite(). | + +Returns: + +Promise<Inviter> + +## Remarks + +Send an INVITE request to create a new Session. Resolves when the INVITE request is sent, otherwise rejects. Use `onCallAnswered` delegate method to determine if Session is established. + diff --git a/docs/session-manager/sip.js.sessionmanager.connect.md b/docs/session-manager/sip.js.sessionmanager.connect.md new file mode 100644 index 000000000..3de6159ad --- /dev/null +++ b/docs/session-manager/sip.js.sessionmanager.connect.md @@ -0,0 +1,21 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [SessionManager](./sip.js.sessionmanager.md) > [connect](./sip.js.sessionmanager.connect.md) + +## SessionManager.connect() method + +Connect. + +Signature: + +```typescript +connect(): Promise; +``` +Returns: + +Promise<void> + +## Remarks + +If not started, starts the UserAgent connecting the WebSocket Transport. Otherwise reconnects the UserAgent's WebSocket Transport. Attempts will be made to reconnect as needed. + diff --git a/docs/session-manager/sip.js.sessionmanager.decline.md b/docs/session-manager/sip.js.sessionmanager.decline.md new file mode 100644 index 000000000..fedd16dd9 --- /dev/null +++ b/docs/session-manager/sip.js.sessionmanager.decline.md @@ -0,0 +1,28 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [SessionManager](./sip.js.sessionmanager.md) > [decline](./sip.js.sessionmanager.decline.md) + +## SessionManager.decline() method + +Decline an incoming call. + +Signature: + +```typescript +decline(session: Session): Promise; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| session | Session | Session to decline. | + +Returns: + +Promise<void> + +## Remarks + +Reject an incoming INVITE request. Resolves with the response is sent, otherwise rejects. Use `onCallHangup` delegate method to determine if and when call is ended. + diff --git a/docs/session-manager/sip.js.sessionmanager.delegate.md b/docs/session-manager/sip.js.sessionmanager.delegate.md new file mode 100644 index 000000000..9f484a933 --- /dev/null +++ b/docs/session-manager/sip.js.sessionmanager.delegate.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [SessionManager](./sip.js.sessionmanager.md) > [delegate](./sip.js.sessionmanager.delegate.md) + +## SessionManager.delegate property + +Delegate. + +Signature: + +```typescript +delegate: SessionManagerDelegate | undefined; +``` diff --git a/docs/session-manager/sip.js.sessionmanager.disconnect.md b/docs/session-manager/sip.js.sessionmanager.disconnect.md new file mode 100644 index 000000000..9d9b32707 --- /dev/null +++ b/docs/session-manager/sip.js.sessionmanager.disconnect.md @@ -0,0 +1,21 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [SessionManager](./sip.js.sessionmanager.md) > [disconnect](./sip.js.sessionmanager.disconnect.md) + +## SessionManager.disconnect() method + +Disconnect. + +Signature: + +```typescript +disconnect(): Promise; +``` +Returns: + +Promise<void> + +## Remarks + +If not stopped, stops the UserAgent disconnecting the WebSocket Transport. + diff --git a/docs/session-manager/sip.js.sessionmanager.getlocalaudiotrack.md b/docs/session-manager/sip.js.sessionmanager.getlocalaudiotrack.md new file mode 100644 index 000000000..723068a71 --- /dev/null +++ b/docs/session-manager/sip.js.sessionmanager.getlocalaudiotrack.md @@ -0,0 +1,29 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [SessionManager](./sip.js.sessionmanager.md) > [getLocalAudioTrack](./sip.js.sessionmanager.getlocalaudiotrack.md) + +## SessionManager.getLocalAudioTrack() method + +> Warning: This API is now obsolete. +> +> Use localMediaStream and get track from the stream. +> + +The local audio track, if available. + +Signature: + +```typescript +getLocalAudioTrack(session: Session): MediaStreamTrack | undefined; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| session | Session | Session to get track from. | + +Returns: + +MediaStreamTrack \| undefined + diff --git a/docs/session-manager/sip.js.sessionmanager.getlocalmediastream.md b/docs/session-manager/sip.js.sessionmanager.getlocalmediastream.md new file mode 100644 index 000000000..a6f102fb3 --- /dev/null +++ b/docs/session-manager/sip.js.sessionmanager.getlocalmediastream.md @@ -0,0 +1,24 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [SessionManager](./sip.js.sessionmanager.md) > [getLocalMediaStream](./sip.js.sessionmanager.getlocalmediastream.md) + +## SessionManager.getLocalMediaStream() method + +The local media stream. Undefined if call not answered. + +Signature: + +```typescript +getLocalMediaStream(session: Session): MediaStream | undefined; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| session | Session | Session to get the media stream from. | + +Returns: + +MediaStream \| undefined + diff --git a/docs/session-manager/sip.js.sessionmanager.getlocalvideotrack.md b/docs/session-manager/sip.js.sessionmanager.getlocalvideotrack.md new file mode 100644 index 000000000..23c7b887f --- /dev/null +++ b/docs/session-manager/sip.js.sessionmanager.getlocalvideotrack.md @@ -0,0 +1,29 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [SessionManager](./sip.js.sessionmanager.md) > [getLocalVideoTrack](./sip.js.sessionmanager.getlocalvideotrack.md) + +## SessionManager.getLocalVideoTrack() method + +> Warning: This API is now obsolete. +> +> Use localMediaStream and get track from the stream. +> + +The local video track, if available. + +Signature: + +```typescript +getLocalVideoTrack(session: Session): MediaStreamTrack | undefined; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| session | Session | Session to get track from. | + +Returns: + +MediaStreamTrack \| undefined + diff --git a/docs/session-manager/sip.js.sessionmanager.getremoteaudiotrack.md b/docs/session-manager/sip.js.sessionmanager.getremoteaudiotrack.md new file mode 100644 index 000000000..ae2a1b286 --- /dev/null +++ b/docs/session-manager/sip.js.sessionmanager.getremoteaudiotrack.md @@ -0,0 +1,29 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [SessionManager](./sip.js.sessionmanager.md) > [getRemoteAudioTrack](./sip.js.sessionmanager.getremoteaudiotrack.md) + +## SessionManager.getRemoteAudioTrack() method + +> Warning: This API is now obsolete. +> +> Use remoteMediaStream and get track from the stream. +> + +The remote audio track, if available. + +Signature: + +```typescript +getRemoteAudioTrack(session: Session): MediaStreamTrack | undefined; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| session | Session | Session to get track from. | + +Returns: + +MediaStreamTrack \| undefined + diff --git a/docs/session-manager/sip.js.sessionmanager.getremotemediastream.md b/docs/session-manager/sip.js.sessionmanager.getremotemediastream.md new file mode 100644 index 000000000..093b99bf6 --- /dev/null +++ b/docs/session-manager/sip.js.sessionmanager.getremotemediastream.md @@ -0,0 +1,24 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [SessionManager](./sip.js.sessionmanager.md) > [getRemoteMediaStream](./sip.js.sessionmanager.getremotemediastream.md) + +## SessionManager.getRemoteMediaStream() method + +The remote media stream. Undefined if call not answered. + +Signature: + +```typescript +getRemoteMediaStream(session: Session): MediaStream | undefined; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| session | Session | Session to get the media stream from. | + +Returns: + +MediaStream \| undefined + diff --git a/docs/session-manager/sip.js.sessionmanager.getremotevideotrack.md b/docs/session-manager/sip.js.sessionmanager.getremotevideotrack.md new file mode 100644 index 000000000..8beb7b3d8 --- /dev/null +++ b/docs/session-manager/sip.js.sessionmanager.getremotevideotrack.md @@ -0,0 +1,29 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [SessionManager](./sip.js.sessionmanager.md) > [getRemoteVideoTrack](./sip.js.sessionmanager.getremotevideotrack.md) + +## SessionManager.getRemoteVideoTrack() method + +> Warning: This API is now obsolete. +> +> Use remoteMediaStream and get track from the stream. +> + +The remote video track, if available. + +Signature: + +```typescript +getRemoteVideoTrack(session: Session): MediaStreamTrack | undefined; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| session | Session | Session to get track from. | + +Returns: + +MediaStreamTrack \| undefined + diff --git a/docs/session-manager/sip.js.sessionmanager.hangup.md b/docs/session-manager/sip.js.sessionmanager.hangup.md new file mode 100644 index 000000000..6cc7d09f5 --- /dev/null +++ b/docs/session-manager/sip.js.sessionmanager.hangup.md @@ -0,0 +1,28 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [SessionManager](./sip.js.sessionmanager.md) > [hangup](./sip.js.sessionmanager.hangup.md) + +## SessionManager.hangup() method + +Hangup a call. + +Signature: + +```typescript +hangup(session: Session): Promise; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| session | Session | Session to hangup. | + +Returns: + +Promise<void> + +## Remarks + +Send a BYE request, CANCEL request or reject response to end the current Session. Resolves when the request/response is sent, otherwise rejects. Use `onCallHangup` delegate method to determine if and when call is ended. + diff --git a/docs/session-manager/sip.js.sessionmanager.hold.md b/docs/session-manager/sip.js.sessionmanager.hold.md new file mode 100644 index 000000000..d1aea3f14 --- /dev/null +++ b/docs/session-manager/sip.js.sessionmanager.hold.md @@ -0,0 +1,28 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [SessionManager](./sip.js.sessionmanager.md) > [hold](./sip.js.sessionmanager.hold.md) + +## SessionManager.hold() method + +Hold call + +Signature: + +```typescript +hold(session: Session): Promise; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| session | Session | Session to hold. | + +Returns: + +Promise<void> + +## Remarks + +Send a re-INVITE with new offer indicating "hold". Resolves when the re-INVITE request is sent, otherwise rejects. Use `onCallHold` delegate method to determine if request is accepted or rejected. See: https://tools.ietf.org/html/rfc6337 + diff --git a/docs/session-manager/sip.js.sessionmanager.isconnected.md b/docs/session-manager/sip.js.sessionmanager.isconnected.md new file mode 100644 index 000000000..0f315296c --- /dev/null +++ b/docs/session-manager/sip.js.sessionmanager.isconnected.md @@ -0,0 +1,17 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [SessionManager](./sip.js.sessionmanager.md) > [isConnected](./sip.js.sessionmanager.isconnected.md) + +## SessionManager.isConnected() method + +Return true if transport is connected. + +Signature: + +```typescript +isConnected(): boolean; +``` +Returns: + +boolean + diff --git a/docs/session-manager/sip.js.sessionmanager.isheld.md b/docs/session-manager/sip.js.sessionmanager.isheld.md new file mode 100644 index 000000000..c78e990ac --- /dev/null +++ b/docs/session-manager/sip.js.sessionmanager.isheld.md @@ -0,0 +1,28 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [SessionManager](./sip.js.sessionmanager.md) > [isHeld](./sip.js.sessionmanager.isheld.md) + +## SessionManager.isHeld() method + +Hold state. + +Signature: + +```typescript +isHeld(session: Session): boolean | undefined; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| session | Session | Session to check. | + +Returns: + +boolean \| undefined + +## Remarks + +True if session media is on hold. Undefined is session doesn't exist. + diff --git a/docs/session-manager/sip.js.sessionmanager.ismuted.md b/docs/session-manager/sip.js.sessionmanager.ismuted.md new file mode 100644 index 000000000..6a1846bc6 --- /dev/null +++ b/docs/session-manager/sip.js.sessionmanager.ismuted.md @@ -0,0 +1,28 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [SessionManager](./sip.js.sessionmanager.md) > [isMuted](./sip.js.sessionmanager.ismuted.md) + +## SessionManager.isMuted() method + +Mute state. + +Signature: + +```typescript +isMuted(session: Session): boolean | undefined; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| session | Session | Session to check. | + +Returns: + +boolean \| undefined + +## Remarks + +True if sender's media track is disabled. Undefined is session doesn't exist. + diff --git a/docs/session-manager/sip.js.sessionmanager.managedsessions.md b/docs/session-manager/sip.js.sessionmanager.managedsessions.md new file mode 100644 index 000000000..f95ae7a0b --- /dev/null +++ b/docs/session-manager/sip.js.sessionmanager.managedsessions.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [SessionManager](./sip.js.sessionmanager.md) > [managedSessions](./sip.js.sessionmanager.managedsessions.md) + +## SessionManager.managedSessions property + +Sessions being managed. + +Signature: + +```typescript +managedSessions: Array; +``` diff --git a/docs/session-manager/sip.js.sessionmanager.md b/docs/session-manager/sip.js.sessionmanager.md new file mode 100644 index 000000000..4e9c01518 --- /dev/null +++ b/docs/session-manager/sip.js.sessionmanager.md @@ -0,0 +1,57 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [SessionManager](./sip.js.sessionmanager.md) + +## SessionManager class + +A session manager for SIP.js sessions. + +Signature: + +```typescript +export declare class SessionManager +``` + +## Constructors + +| Constructor | Modifiers | Description | +| --- | --- | --- | +| [(constructor)(server, options)](./sip.js.sessionmanager._constructor_.md) | | Constructs a new instance of the SessionManager class. | + +## Properties + +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [delegate](./sip.js.sessionmanager.delegate.md) | | [SessionManagerDelegate](./sip.js.sessionmanagerdelegate.md) \| undefined | Delegate. | +| [managedSessions](./sip.js.sessionmanager.managedsessions.md) | | Array<[ManagedSession](./sip.js.managedsession.md)> | Sessions being managed. | +| [userAgent](./sip.js.sessionmanager.useragent.md) | | UserAgent | User agent which created sessions being managed. | + +## Methods + +| Method | Modifiers | Description | +| --- | --- | --- | +| [answer(session, invitationAcceptOptions)](./sip.js.sessionmanager.answer.md) | | Answer an incoming call. | +| [call(destination, inviterOptions, inviterInviteOptions)](./sip.js.sessionmanager.call.md) | | Make an outgoing call. | +| [connect()](./sip.js.sessionmanager.connect.md) | | Connect. | +| [decline(session)](./sip.js.sessionmanager.decline.md) | | Decline an incoming call. | +| [disconnect()](./sip.js.sessionmanager.disconnect.md) | | Disconnect. | +| [getLocalAudioTrack(session)](./sip.js.sessionmanager.getlocalaudiotrack.md) | | The local audio track, if available. | +| [getLocalMediaStream(session)](./sip.js.sessionmanager.getlocalmediastream.md) | | The local media stream. Undefined if call not answered. | +| [getLocalVideoTrack(session)](./sip.js.sessionmanager.getlocalvideotrack.md) | | The local video track, if available. | +| [getRemoteAudioTrack(session)](./sip.js.sessionmanager.getremoteaudiotrack.md) | | The remote audio track, if available. | +| [getRemoteMediaStream(session)](./sip.js.sessionmanager.getremotemediastream.md) | | The remote media stream. Undefined if call not answered. | +| [getRemoteVideoTrack(session)](./sip.js.sessionmanager.getremotevideotrack.md) | | The remote video track, if available. | +| [hangup(session)](./sip.js.sessionmanager.hangup.md) | | Hangup a call. | +| [hold(session)](./sip.js.sessionmanager.hold.md) | | Hold call | +| [isConnected()](./sip.js.sessionmanager.isconnected.md) | | Return true if transport is connected. | +| [isHeld(session)](./sip.js.sessionmanager.isheld.md) | | Hold state. | +| [isMuted(session)](./sip.js.sessionmanager.ismuted.md) | | Mute state. | +| [message(destination, message)](./sip.js.sessionmanager.message.md) | | Send a message. | +| [mute(session)](./sip.js.sessionmanager.mute.md) | | Mute call. | +| [register(registererRegisterOptions)](./sip.js.sessionmanager.register.md) | | Start receiving incoming calls. | +| [sendDTMF(session, tone)](./sip.js.sessionmanager.senddtmf.md) | | Send DTMF. | +| [transfer(session, target, options)](./sip.js.sessionmanager.transfer.md) | | Transfer. | +| [unhold(session)](./sip.js.sessionmanager.unhold.md) | | Unhold call. | +| [unmute(session)](./sip.js.sessionmanager.unmute.md) | | Unmute call. | +| [unregister(registererUnregisterOptions)](./sip.js.sessionmanager.unregister.md) | | Stop receiving incoming calls. | + diff --git a/docs/session-manager/sip.js.sessionmanager.message.md b/docs/session-manager/sip.js.sessionmanager.message.md new file mode 100644 index 000000000..2e61b5966 --- /dev/null +++ b/docs/session-manager/sip.js.sessionmanager.message.md @@ -0,0 +1,29 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [SessionManager](./sip.js.sessionmanager.md) > [message](./sip.js.sessionmanager.message.md) + +## SessionManager.message() method + +Send a message. + +Signature: + +```typescript +message(destination: string, message: string): Promise; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| destination | string | The target destination for the message. A SIP address to send the MESSAGE to. | +| message | string | | + +Returns: + +Promise<void> + +## Remarks + +Send a MESSAGE request. + diff --git a/docs/session-manager/sip.js.sessionmanager.mute.md b/docs/session-manager/sip.js.sessionmanager.mute.md new file mode 100644 index 000000000..7a53c0cd9 --- /dev/null +++ b/docs/session-manager/sip.js.sessionmanager.mute.md @@ -0,0 +1,28 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [SessionManager](./sip.js.sessionmanager.md) > [mute](./sip.js.sessionmanager.mute.md) + +## SessionManager.mute() method + +Mute call. + +Signature: + +```typescript +mute(session: Session): void; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| session | Session | Session to mute. | + +Returns: + +void + +## Remarks + +Disable sender's media tracks. + diff --git a/docs/session-manager/sip.js.sessionmanager.register.md b/docs/session-manager/sip.js.sessionmanager.register.md new file mode 100644 index 000000000..805a1124c --- /dev/null +++ b/docs/session-manager/sip.js.sessionmanager.register.md @@ -0,0 +1,28 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [SessionManager](./sip.js.sessionmanager.md) > [register](./sip.js.sessionmanager.register.md) + +## SessionManager.register() method + +Start receiving incoming calls. + +Signature: + +```typescript +register(registererRegisterOptions?: RegistererRegisterOptions): Promise; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| registererRegisterOptions | RegistererRegisterOptions | | + +Returns: + +Promise<void> + +## Remarks + +Send a REGISTER request for the UserAgent's AOR. Resolves when the REGISTER request is sent, otherwise rejects. Attempts will be made to re-register as needed. + diff --git a/docs/session-manager/sip.js.sessionmanager.senddtmf.md b/docs/session-manager/sip.js.sessionmanager.senddtmf.md new file mode 100644 index 000000000..73bdcd9e8 --- /dev/null +++ b/docs/session-manager/sip.js.sessionmanager.senddtmf.md @@ -0,0 +1,29 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [SessionManager](./sip.js.sessionmanager.md) > [sendDTMF](./sip.js.sessionmanager.senddtmf.md) + +## SessionManager.sendDTMF() method + +Send DTMF. + +Signature: + +```typescript +sendDTMF(session: Session, tone: string): Promise; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| session | Session | Session to send on. | +| tone | string | Tone to send. | + +Returns: + +Promise<void> + +## Remarks + +Send an INFO request with content type application/dtmf-relay. + diff --git a/docs/session-manager/sip.js.sessionmanager.transfer.md b/docs/session-manager/sip.js.sessionmanager.transfer.md new file mode 100644 index 000000000..2c463ee24 --- /dev/null +++ b/docs/session-manager/sip.js.sessionmanager.transfer.md @@ -0,0 +1,30 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [SessionManager](./sip.js.sessionmanager.md) > [transfer](./sip.js.sessionmanager.transfer.md) + +## SessionManager.transfer() method + +Transfer. + +Signature: + +```typescript +transfer(session: Session, target: Session | string, options?: SessionReferOptions): Promise; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| session | Session | Session with the transferee to transfer. | +| target | Session \| string | The referral target. | +| options | SessionReferOptions | | + +Returns: + +Promise<void> + +## Remarks + +If target is a Session this is an attended transfer completion (REFER with Replaces), otherwise this is a blind transfer (REFER). Attempting an attended transfer completion on a call that has not been answered will be rejected. To implement an attended transfer with early completion, hangup the call with the target and execute a blind transfer to the target. + diff --git a/docs/session-manager/sip.js.sessionmanager.unhold.md b/docs/session-manager/sip.js.sessionmanager.unhold.md new file mode 100644 index 000000000..f52e3f8ab --- /dev/null +++ b/docs/session-manager/sip.js.sessionmanager.unhold.md @@ -0,0 +1,28 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [SessionManager](./sip.js.sessionmanager.md) > [unhold](./sip.js.sessionmanager.unhold.md) + +## SessionManager.unhold() method + +Unhold call. + +Signature: + +```typescript +unhold(session: Session): Promise; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| session | Session | Session to unhold. | + +Returns: + +Promise<void> + +## Remarks + +Send a re-INVITE with new offer indicating "unhold". Resolves when the re-INVITE request is sent, otherwise rejects. Use `onCallHold` delegate method to determine if request is accepted or rejected. See: https://tools.ietf.org/html/rfc6337 + diff --git a/docs/session-manager/sip.js.sessionmanager.unmute.md b/docs/session-manager/sip.js.sessionmanager.unmute.md new file mode 100644 index 000000000..05c317143 --- /dev/null +++ b/docs/session-manager/sip.js.sessionmanager.unmute.md @@ -0,0 +1,28 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [SessionManager](./sip.js.sessionmanager.md) > [unmute](./sip.js.sessionmanager.unmute.md) + +## SessionManager.unmute() method + +Unmute call. + +Signature: + +```typescript +unmute(session: Session): void; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| session | Session | Session to unmute. | + +Returns: + +void + +## Remarks + +Enable sender's media tracks. + diff --git a/docs/session-manager/sip.js.sessionmanager.unregister.md b/docs/session-manager/sip.js.sessionmanager.unregister.md new file mode 100644 index 000000000..c8e854c68 --- /dev/null +++ b/docs/session-manager/sip.js.sessionmanager.unregister.md @@ -0,0 +1,28 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [SessionManager](./sip.js.sessionmanager.md) > [unregister](./sip.js.sessionmanager.unregister.md) + +## SessionManager.unregister() method + +Stop receiving incoming calls. + +Signature: + +```typescript +unregister(registererUnregisterOptions?: RegistererUnregisterOptions): Promise; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| registererUnregisterOptions | RegistererUnregisterOptions | | + +Returns: + +Promise<void> + +## Remarks + +Send an un-REGISTER request for the UserAgent's AOR. Resolves when the un-REGISTER request is sent, otherwise rejects. + diff --git a/docs/session-manager/sip.js.sessionmanager.useragent.md b/docs/session-manager/sip.js.sessionmanager.useragent.md new file mode 100644 index 000000000..2f0e4656a --- /dev/null +++ b/docs/session-manager/sip.js.sessionmanager.useragent.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [SessionManager](./sip.js.sessionmanager.md) > [userAgent](./sip.js.sessionmanager.useragent.md) + +## SessionManager.userAgent property + +User agent which created sessions being managed. + +Signature: + +```typescript +userAgent: UserAgent; +``` diff --git a/docs/session-manager/sip.js.sessionmanagerdelegate.md b/docs/session-manager/sip.js.sessionmanagerdelegate.md new file mode 100644 index 000000000..b9d15f11e --- /dev/null +++ b/docs/session-manager/sip.js.sessionmanagerdelegate.md @@ -0,0 +1,31 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [SessionManagerDelegate](./sip.js.sessionmanagerdelegate.md) + +## SessionManagerDelegate interface + +Delegate for [SessionManager](./sip.js.sessionmanager.md). + +Signature: + +```typescript +export interface SessionManagerDelegate +``` + +## Methods + +| Method | Description | +| --- | --- | +| [onCallAnswered(session)](./sip.js.sessionmanagerdelegate.oncallanswered.md) | Called when a call is answered. | +| [onCallCreated(session)](./sip.js.sessionmanagerdelegate.oncallcreated.md) | Called when a call is created. | +| [onCallDTMFReceived(session, tone, duration)](./sip.js.sessionmanagerdelegate.oncalldtmfreceived.md) | Called when a call receives an incoming DTMF tone. | +| [onCallHangup(session)](./sip.js.sessionmanagerdelegate.oncallhangup.md) | Called when a call is hung up. | +| [onCallHold(session, held)](./sip.js.sessionmanagerdelegate.oncallhold.md) | Called when a call is put on hold or taken off hold. | +| [onCallReceived(session)](./sip.js.sessionmanagerdelegate.oncallreceived.md) | Called when a call is received. | +| [onMessageReceived(message)](./sip.js.sessionmanagerdelegate.onmessagereceived.md) | Called upon receiving a message. | +| [onNotificationReceived(notification)](./sip.js.sessionmanagerdelegate.onnotificationreceived.md) | Called upon receiving a notification. | +| [onRegistered()](./sip.js.sessionmanagerdelegate.onregistered.md) | Called when user is registered to received calls. | +| [onServerConnect()](./sip.js.sessionmanagerdelegate.onserverconnect.md) | Called when user is connected to server. | +| [onServerDisconnect(error)](./sip.js.sessionmanagerdelegate.onserverdisconnect.md) | Called when user is no longer connected. | +| [onUnregistered()](./sip.js.sessionmanagerdelegate.onunregistered.md) | Called when user is no longer registered to received calls. | + diff --git a/docs/session-manager/sip.js.sessionmanagerdelegate.oncallanswered.md b/docs/session-manager/sip.js.sessionmanagerdelegate.oncallanswered.md new file mode 100644 index 000000000..9af046eec --- /dev/null +++ b/docs/session-manager/sip.js.sessionmanagerdelegate.oncallanswered.md @@ -0,0 +1,28 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [SessionManagerDelegate](./sip.js.sessionmanagerdelegate.md) > [onCallAnswered](./sip.js.sessionmanagerdelegate.oncallanswered.md) + +## SessionManagerDelegate.onCallAnswered() method + +Called when a call is answered. + +Signature: + +```typescript +onCallAnswered?(session: Session): void; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| session | Session | | + +Returns: + +void + +## Remarks + +Callback for handling establishment of a new Session. + diff --git a/docs/session-manager/sip.js.sessionmanagerdelegate.oncallcreated.md b/docs/session-manager/sip.js.sessionmanagerdelegate.oncallcreated.md new file mode 100644 index 000000000..e9507fe68 --- /dev/null +++ b/docs/session-manager/sip.js.sessionmanagerdelegate.oncallcreated.md @@ -0,0 +1,28 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [SessionManagerDelegate](./sip.js.sessionmanagerdelegate.md) > [onCallCreated](./sip.js.sessionmanagerdelegate.oncallcreated.md) + +## SessionManagerDelegate.onCallCreated() method + +Called when a call is created. + +Signature: + +```typescript +onCallCreated?(session: Session): void; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| session | Session | | + +Returns: + +void + +## Remarks + +Callback for handling the creation of a new Session. + diff --git a/docs/session-manager/sip.js.sessionmanagerdelegate.oncalldtmfreceived.md b/docs/session-manager/sip.js.sessionmanagerdelegate.oncalldtmfreceived.md new file mode 100644 index 000000000..018fc3fe7 --- /dev/null +++ b/docs/session-manager/sip.js.sessionmanagerdelegate.oncalldtmfreceived.md @@ -0,0 +1,30 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [SessionManagerDelegate](./sip.js.sessionmanagerdelegate.md) > [onCallDTMFReceived](./sip.js.sessionmanagerdelegate.oncalldtmfreceived.md) + +## SessionManagerDelegate.onCallDTMFReceived() method + +Called when a call receives an incoming DTMF tone. + +Signature: + +```typescript +onCallDTMFReceived?(session: Session, tone: string, duration: number): void; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| session | Session | | +| tone | string | | +| duration | number | | + +Returns: + +void + +## Remarks + +Callback for handling an incoming INFO request with content type application/dtmf-relay. + diff --git a/docs/session-manager/sip.js.sessionmanagerdelegate.oncallhangup.md b/docs/session-manager/sip.js.sessionmanagerdelegate.oncallhangup.md new file mode 100644 index 000000000..f95f2aa3d --- /dev/null +++ b/docs/session-manager/sip.js.sessionmanagerdelegate.oncallhangup.md @@ -0,0 +1,28 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [SessionManagerDelegate](./sip.js.sessionmanagerdelegate.md) > [onCallHangup](./sip.js.sessionmanagerdelegate.oncallhangup.md) + +## SessionManagerDelegate.onCallHangup() method + +Called when a call is hung up. + +Signature: + +```typescript +onCallHangup?(session: Session): void; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| session | Session | | + +Returns: + +void + +## Remarks + +Callback for handling termination of a Session. + diff --git a/docs/session-manager/sip.js.sessionmanagerdelegate.oncallhold.md b/docs/session-manager/sip.js.sessionmanagerdelegate.oncallhold.md new file mode 100644 index 000000000..a3d8bde0f --- /dev/null +++ b/docs/session-manager/sip.js.sessionmanagerdelegate.oncallhold.md @@ -0,0 +1,29 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [SessionManagerDelegate](./sip.js.sessionmanagerdelegate.md) > [onCallHold](./sip.js.sessionmanagerdelegate.oncallhold.md) + +## SessionManagerDelegate.onCallHold() method + +Called when a call is put on hold or taken off hold. + +Signature: + +```typescript +onCallHold?(session: Session, held: boolean): void; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| session | Session | | +| held | boolean | | + +Returns: + +void + +## Remarks + +Callback for handling re-INVITE responses. + diff --git a/docs/session-manager/sip.js.sessionmanagerdelegate.oncallreceived.md b/docs/session-manager/sip.js.sessionmanagerdelegate.oncallreceived.md new file mode 100644 index 000000000..e7df48e1c --- /dev/null +++ b/docs/session-manager/sip.js.sessionmanagerdelegate.oncallreceived.md @@ -0,0 +1,28 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [SessionManagerDelegate](./sip.js.sessionmanagerdelegate.md) > [onCallReceived](./sip.js.sessionmanagerdelegate.oncallreceived.md) + +## SessionManagerDelegate.onCallReceived() method + +Called when a call is received. + +Signature: + +```typescript +onCallReceived?(session: Session): void; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| session | Session | | + +Returns: + +void + +## Remarks + +Callback for handling incoming INVITE requests. The callback must either accept or reject the incoming call by calling `answer()` or `decline()` respectively. + diff --git a/docs/session-manager/sip.js.sessionmanagerdelegate.onmessagereceived.md b/docs/session-manager/sip.js.sessionmanagerdelegate.onmessagereceived.md new file mode 100644 index 000000000..4239dd2d0 --- /dev/null +++ b/docs/session-manager/sip.js.sessionmanagerdelegate.onmessagereceived.md @@ -0,0 +1,28 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [SessionManagerDelegate](./sip.js.sessionmanagerdelegate.md) > [onMessageReceived](./sip.js.sessionmanagerdelegate.onmessagereceived.md) + +## SessionManagerDelegate.onMessageReceived() method + +Called upon receiving a message. + +Signature: + +```typescript +onMessageReceived?(message: Message): void; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| message | Message | The message received. | + +Returns: + +void + +## Remarks + +Callback for handling incoming MESSAGE requests. + diff --git a/docs/session-manager/sip.js.sessionmanagerdelegate.onnotificationreceived.md b/docs/session-manager/sip.js.sessionmanagerdelegate.onnotificationreceived.md new file mode 100644 index 000000000..1ed3a7f5b --- /dev/null +++ b/docs/session-manager/sip.js.sessionmanagerdelegate.onnotificationreceived.md @@ -0,0 +1,28 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [SessionManagerDelegate](./sip.js.sessionmanagerdelegate.md) > [onNotificationReceived](./sip.js.sessionmanagerdelegate.onnotificationreceived.md) + +## SessionManagerDelegate.onNotificationReceived() method + +Called upon receiving a notification. + +Signature: + +```typescript +onNotificationReceived?(notification: Notification): void; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| notification | Notification | The notication received. | + +Returns: + +void + +## Remarks + +Callback for handling incoming NOTIFY requests. + diff --git a/docs/session-manager/sip.js.sessionmanagerdelegate.onregistered.md b/docs/session-manager/sip.js.sessionmanagerdelegate.onregistered.md new file mode 100644 index 000000000..c30133655 --- /dev/null +++ b/docs/session-manager/sip.js.sessionmanagerdelegate.onregistered.md @@ -0,0 +1,17 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [SessionManagerDelegate](./sip.js.sessionmanagerdelegate.md) > [onRegistered](./sip.js.sessionmanagerdelegate.onregistered.md) + +## SessionManagerDelegate.onRegistered() method + +Called when user is registered to received calls. + +Signature: + +```typescript +onRegistered?(): void; +``` +Returns: + +void + diff --git a/docs/session-manager/sip.js.sessionmanagerdelegate.onserverconnect.md b/docs/session-manager/sip.js.sessionmanagerdelegate.onserverconnect.md new file mode 100644 index 000000000..460a2758b --- /dev/null +++ b/docs/session-manager/sip.js.sessionmanagerdelegate.onserverconnect.md @@ -0,0 +1,21 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [SessionManagerDelegate](./sip.js.sessionmanagerdelegate.md) > [onServerConnect](./sip.js.sessionmanagerdelegate.onserverconnect.md) + +## SessionManagerDelegate.onServerConnect() method + +Called when user is connected to server. + +Signature: + +```typescript +onServerConnect?(): void; +``` +Returns: + +void + +## Remarks + +Callback for handling user becomes connected. + diff --git a/docs/session-manager/sip.js.sessionmanagerdelegate.onserverdisconnect.md b/docs/session-manager/sip.js.sessionmanagerdelegate.onserverdisconnect.md new file mode 100644 index 000000000..d3edf4ae9 --- /dev/null +++ b/docs/session-manager/sip.js.sessionmanagerdelegate.onserverdisconnect.md @@ -0,0 +1,28 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [SessionManagerDelegate](./sip.js.sessionmanagerdelegate.md) > [onServerDisconnect](./sip.js.sessionmanagerdelegate.onserverdisconnect.md) + +## SessionManagerDelegate.onServerDisconnect() method + +Called when user is no longer connected. + +Signature: + +```typescript +onServerDisconnect?(error?: Error): void; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| error | Error | An Error if server caused the disconnect. Otherwise undefined. | + +Returns: + +void + +## Remarks + +Callback for handling user becomes disconnected. + diff --git a/docs/session-manager/sip.js.sessionmanagerdelegate.onunregistered.md b/docs/session-manager/sip.js.sessionmanagerdelegate.onunregistered.md new file mode 100644 index 000000000..50ddcf688 --- /dev/null +++ b/docs/session-manager/sip.js.sessionmanagerdelegate.onunregistered.md @@ -0,0 +1,17 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [SessionManagerDelegate](./sip.js.sessionmanagerdelegate.md) > [onUnregistered](./sip.js.sessionmanagerdelegate.onunregistered.md) + +## SessionManagerDelegate.onUnregistered() method + +Called when user is no longer registered to received calls. + +Signature: + +```typescript +onUnregistered?(): void; +``` +Returns: + +void + diff --git a/docs/session-manager/sip.js.sessionmanagermedia.constraints.md b/docs/session-manager/sip.js.sessionmanagermedia.constraints.md new file mode 100644 index 000000000..0f4d59160 --- /dev/null +++ b/docs/session-manager/sip.js.sessionmanagermedia.constraints.md @@ -0,0 +1,18 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [SessionManagerMedia](./sip.js.sessionmanagermedia.md) > [constraints](./sip.js.sessionmanagermedia.constraints.md) + +## SessionManagerMedia.constraints property + +Offer/Answer constraints determine if audio and/or video are utilized. If not specified, only audio is utilized (audio is true, video is false). + +Signature: + +```typescript +constraints?: SessionManagerMediaConstraints; +``` + +## Remarks + +Constraints are used when creating local media stream. If undefined, defaults to audio true and video false. If audio and video are false, media stream will have no tracks. + diff --git a/docs/session-manager/sip.js.sessionmanagermedia.local.md b/docs/session-manager/sip.js.sessionmanagermedia.local.md new file mode 100644 index 000000000..a7c010530 --- /dev/null +++ b/docs/session-manager/sip.js.sessionmanagermedia.local.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [SessionManagerMedia](./sip.js.sessionmanagermedia.md) > [local](./sip.js.sessionmanagermedia.local.md) + +## SessionManagerMedia.local property + +HTML elements for local media streams. + +Signature: + +```typescript +local?: SessionManagerMediaLocal | ((session: Session) => SessionManagerMediaLocal); +``` diff --git a/docs/session-manager/sip.js.sessionmanagermedia.md b/docs/session-manager/sip.js.sessionmanagermedia.md new file mode 100644 index 000000000..fd5173fdf --- /dev/null +++ b/docs/session-manager/sip.js.sessionmanagermedia.md @@ -0,0 +1,22 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [SessionManagerMedia](./sip.js.sessionmanagermedia.md) + +## SessionManagerMedia interface + +Media for [SessionManagerOptions](./sip.js.sessionmanageroptions.md). + +Signature: + +```typescript +export interface SessionManagerMedia +``` + +## Properties + +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [constraints](./sip.js.sessionmanagermedia.constraints.md) | | [SessionManagerMediaConstraints](./sip.js.sessionmanagermediaconstraints.md) | Offer/Answer constraints determine if audio and/or video are utilized. If not specified, only audio is utilized (audio is true, video is false). | +| [local](./sip.js.sessionmanagermedia.local.md) | | [SessionManagerMediaLocal](./sip.js.sessionmanagermedialocal.md) \| ((session: Session) => [SessionManagerMediaLocal](./sip.js.sessionmanagermedialocal.md)) | HTML elements for local media streams. | +| [remote](./sip.js.sessionmanagermedia.remote.md) | | [SessionManagerMediaRemote](./sip.js.sessionmanagermediaremote.md) \| ((session: Session) => [SessionManagerMediaRemote](./sip.js.sessionmanagermediaremote.md)) | Local HTML media elements. | + diff --git a/docs/session-manager/sip.js.sessionmanagermedia.remote.md b/docs/session-manager/sip.js.sessionmanagermedia.remote.md new file mode 100644 index 000000000..0051de5c6 --- /dev/null +++ b/docs/session-manager/sip.js.sessionmanagermedia.remote.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [SessionManagerMedia](./sip.js.sessionmanagermedia.md) > [remote](./sip.js.sessionmanagermedia.remote.md) + +## SessionManagerMedia.remote property + +Local HTML media elements. + +Signature: + +```typescript +remote?: SessionManagerMediaRemote | ((session: Session) => SessionManagerMediaRemote); +``` diff --git a/docs/session-manager/sip.js.sessionmanagermediaconstraints.audio.md b/docs/session-manager/sip.js.sessionmanagermediaconstraints.audio.md new file mode 100644 index 000000000..cf233dce2 --- /dev/null +++ b/docs/session-manager/sip.js.sessionmanagermediaconstraints.audio.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [SessionManagerMediaConstraints](./sip.js.sessionmanagermediaconstraints.md) > [audio](./sip.js.sessionmanagermediaconstraints.audio.md) + +## SessionManagerMediaConstraints.audio property + +If true, offer and answer to send and receive audio. + +Signature: + +```typescript +audio: boolean; +``` diff --git a/docs/session-manager/sip.js.sessionmanagermediaconstraints.md b/docs/session-manager/sip.js.sessionmanagermediaconstraints.md new file mode 100644 index 000000000..a599060b3 --- /dev/null +++ b/docs/session-manager/sip.js.sessionmanagermediaconstraints.md @@ -0,0 +1,21 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [SessionManagerMediaConstraints](./sip.js.sessionmanagermediaconstraints.md) + +## SessionManagerMediaConstraints interface + +Constraints for [SessionManagerMedia](./sip.js.sessionmanagermedia.md). + +Signature: + +```typescript +export interface SessionManagerMediaConstraints +``` + +## Properties + +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [audio](./sip.js.sessionmanagermediaconstraints.audio.md) | | boolean | If true, offer and answer to send and receive audio. | +| [video](./sip.js.sessionmanagermediaconstraints.video.md) | | boolean | If true, offer and answer to send and receive video. | + diff --git a/docs/session-manager/sip.js.sessionmanagermediaconstraints.video.md b/docs/session-manager/sip.js.sessionmanagermediaconstraints.video.md new file mode 100644 index 000000000..50d92aa7f --- /dev/null +++ b/docs/session-manager/sip.js.sessionmanagermediaconstraints.video.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [SessionManagerMediaConstraints](./sip.js.sessionmanagermediaconstraints.md) > [video](./sip.js.sessionmanagermediaconstraints.video.md) + +## SessionManagerMediaConstraints.video property + +If true, offer and answer to send and receive video. + +Signature: + +```typescript +video: boolean; +``` diff --git a/docs/session-manager/sip.js.sessionmanagermedialocal.md b/docs/session-manager/sip.js.sessionmanagermedialocal.md new file mode 100644 index 000000000..e802e579e --- /dev/null +++ b/docs/session-manager/sip.js.sessionmanagermedialocal.md @@ -0,0 +1,20 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [SessionManagerMediaLocal](./sip.js.sessionmanagermedialocal.md) + +## SessionManagerMediaLocal interface + +Local media elements for [SessionManagerMedia](./sip.js.sessionmanagermedia.md). + +Signature: + +```typescript +export interface SessionManagerMediaLocal +``` + +## Properties + +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [video](./sip.js.sessionmanagermedialocal.video.md) | | HTMLVideoElement | The local video media stream is attached to this element. | + diff --git a/docs/session-manager/sip.js.sessionmanagermedialocal.video.md b/docs/session-manager/sip.js.sessionmanagermedialocal.video.md new file mode 100644 index 000000000..398446b5e --- /dev/null +++ b/docs/session-manager/sip.js.sessionmanagermedialocal.video.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [SessionManagerMediaLocal](./sip.js.sessionmanagermedialocal.md) > [video](./sip.js.sessionmanagermedialocal.video.md) + +## SessionManagerMediaLocal.video property + +The local video media stream is attached to this element. + +Signature: + +```typescript +video?: HTMLVideoElement; +``` diff --git a/docs/session-manager/sip.js.sessionmanagermediaremote.audio.md b/docs/session-manager/sip.js.sessionmanagermediaremote.audio.md new file mode 100644 index 000000000..77256bfb8 --- /dev/null +++ b/docs/session-manager/sip.js.sessionmanagermediaremote.audio.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [SessionManagerMediaRemote](./sip.js.sessionmanagermediaremote.md) > [audio](./sip.js.sessionmanagermediaremote.audio.md) + +## SessionManagerMediaRemote.audio property + +The remote audio media stream is attached to this element. + +Signature: + +```typescript +audio?: HTMLAudioElement; +``` diff --git a/docs/session-manager/sip.js.sessionmanagermediaremote.md b/docs/session-manager/sip.js.sessionmanagermediaremote.md new file mode 100644 index 000000000..7a5d49ad5 --- /dev/null +++ b/docs/session-manager/sip.js.sessionmanagermediaremote.md @@ -0,0 +1,21 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [SessionManagerMediaRemote](./sip.js.sessionmanagermediaremote.md) + +## SessionManagerMediaRemote interface + +Remote media elements for [SessionManagerMedia](./sip.js.sessionmanagermedia.md). + +Signature: + +```typescript +export interface SessionManagerMediaRemote +``` + +## Properties + +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [audio](./sip.js.sessionmanagermediaremote.audio.md) | | HTMLAudioElement | The remote audio media stream is attached to this element. | +| [video](./sip.js.sessionmanagermediaremote.video.md) | | HTMLVideoElement | The remote video media stream is attached to this element. | + diff --git a/docs/session-manager/sip.js.sessionmanagermediaremote.video.md b/docs/session-manager/sip.js.sessionmanagermediaremote.video.md new file mode 100644 index 000000000..8a78178ba --- /dev/null +++ b/docs/session-manager/sip.js.sessionmanagermediaremote.video.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [SessionManagerMediaRemote](./sip.js.sessionmanagermediaremote.md) > [video](./sip.js.sessionmanagermediaremote.video.md) + +## SessionManagerMediaRemote.video property + +The remote video media stream is attached to this element. + +Signature: + +```typescript +video?: HTMLVideoElement; +``` diff --git a/docs/session-manager/sip.js.sessionmanageroptions.aor.md b/docs/session-manager/sip.js.sessionmanageroptions.aor.md new file mode 100644 index 000000000..2ac46639b --- /dev/null +++ b/docs/session-manager/sip.js.sessionmanageroptions.aor.md @@ -0,0 +1,18 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [SessionManagerOptions](./sip.js.sessionmanageroptions.md) > [aor](./sip.js.sessionmanageroptions.aor.md) + +## SessionManagerOptions.aor property + +User's SIP Address of Record (AOR). + +Signature: + +```typescript +aor?: string; +``` + +## Remarks + +The AOR is registered to receive incoming calls. If not specified, a random anonymous address is created for the user. + diff --git a/docs/session-manager/sip.js.sessionmanageroptions.autostop.md b/docs/session-manager/sip.js.sessionmanageroptions.autostop.md new file mode 100644 index 000000000..e38ef0c35 --- /dev/null +++ b/docs/session-manager/sip.js.sessionmanageroptions.autostop.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [SessionManagerOptions](./sip.js.sessionmanageroptions.md) > [autoStop](./sip.js.sessionmanageroptions.autostop.md) + +## SessionManagerOptions.autoStop property + +If `true`, the user agent calls the `stop()` method on the window event `beforeunload`. + +Signature: + +```typescript +autoStop?: boolean; +``` diff --git a/docs/session-manager/sip.js.sessionmanageroptions.delegate.md b/docs/session-manager/sip.js.sessionmanageroptions.delegate.md new file mode 100644 index 000000000..89701f000 --- /dev/null +++ b/docs/session-manager/sip.js.sessionmanageroptions.delegate.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [SessionManagerOptions](./sip.js.sessionmanageroptions.md) > [delegate](./sip.js.sessionmanageroptions.delegate.md) + +## SessionManagerOptions.delegate property + +Delegate for SessionManager. + +Signature: + +```typescript +delegate?: SessionManagerDelegate; +``` diff --git a/docs/session-manager/sip.js.sessionmanageroptions.icestopwaitingonserverreflexive.md b/docs/session-manager/sip.js.sessionmanageroptions.icestopwaitingonserverreflexive.md new file mode 100644 index 000000000..a2b83aa8f --- /dev/null +++ b/docs/session-manager/sip.js.sessionmanageroptions.icestopwaitingonserverreflexive.md @@ -0,0 +1,18 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [SessionManagerOptions](./sip.js.sessionmanageroptions.md) > [iceStopWaitingOnServerReflexive](./sip.js.sessionmanageroptions.icestopwaitingonserverreflexive.md) + +## SessionManagerOptions.iceStopWaitingOnServerReflexive property + +Stop waiting for ICE gathering to complete once a server reflexive address is obtained. + +Signature: + +```typescript +iceStopWaitingOnServerReflexive?: boolean; +``` + +## Remarks + +This is an aggressive approach to limiting the amount of time spent gathering ICE candidates. While this will contribute to minimizing the post dial/answer delay experienced, it will very likely prevent a complete set of candidates from being gathered. If an ICE gathering timeout is also provided as an option to the session description handler, waiting will stop on whichever event occurs first. + diff --git a/docs/session-manager/sip.js.sessionmanageroptions.managedsessionfactory.md b/docs/session-manager/sip.js.sessionmanageroptions.managedsessionfactory.md new file mode 100644 index 000000000..7b76eef49 --- /dev/null +++ b/docs/session-manager/sip.js.sessionmanageroptions.managedsessionfactory.md @@ -0,0 +1,18 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [SessionManagerOptions](./sip.js.sessionmanageroptions.md) > [managedSessionFactory](./sip.js.sessionmanageroptions.managedsessionfactory.md) + +## SessionManagerOptions.managedSessionFactory property + +A factory for generating `ManagedSession` instances. + +Signature: + +```typescript +managedSessionFactory?: ManagedSessionFactory; +``` + +## Remarks + +The factory will be passed a `Session` object for the current session. + diff --git a/docs/session-manager/sip.js.sessionmanageroptions.maxsimultaneoussessions.md b/docs/session-manager/sip.js.sessionmanageroptions.maxsimultaneoussessions.md new file mode 100644 index 000000000..8365776c0 --- /dev/null +++ b/docs/session-manager/sip.js.sessionmanageroptions.maxsimultaneoussessions.md @@ -0,0 +1,18 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [SessionManagerOptions](./sip.js.sessionmanageroptions.md) > [maxSimultaneousSessions](./sip.js.sessionmanageroptions.maxsimultaneoussessions.md) + +## SessionManagerOptions.maxSimultaneousSessions property + +Maximum number of simultaneous sessions to manage. + +Signature: + +```typescript +maxSimultaneousSessions?: number; +``` + +## Remarks + +Set to 0 for unlimited. + diff --git a/docs/session-manager/sip.js.sessionmanageroptions.md b/docs/session-manager/sip.js.sessionmanageroptions.md new file mode 100644 index 000000000..354f2ffd6 --- /dev/null +++ b/docs/session-manager/sip.js.sessionmanageroptions.md @@ -0,0 +1,34 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [SessionManagerOptions](./sip.js.sessionmanageroptions.md) + +## SessionManagerOptions interface + +Options for [SessionManager](./sip.js.sessionmanager.md). + +Signature: + +```typescript +export interface SessionManagerOptions +``` + +## Properties + +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [aor](./sip.js.sessionmanageroptions.aor.md) | | string | User's SIP Address of Record (AOR). | +| [autoStop](./sip.js.sessionmanageroptions.autostop.md) | | boolean | If true, the user agent calls the stop() method on the window event beforeunload. | +| [delegate](./sip.js.sessionmanageroptions.delegate.md) | | [SessionManagerDelegate](./sip.js.sessionmanagerdelegate.md) | Delegate for SessionManager. | +| [iceStopWaitingOnServerReflexive](./sip.js.sessionmanageroptions.icestopwaitingonserverreflexive.md) | | boolean | Stop waiting for ICE gathering to complete once a server reflexive address is obtained. | +| [managedSessionFactory](./sip.js.sessionmanageroptions.managedsessionfactory.md) | | [ManagedSessionFactory](./sip.js.managedsessionfactory.md) | A factory for generating ManagedSession instances. | +| [maxSimultaneousSessions](./sip.js.sessionmanageroptions.maxsimultaneoussessions.md) | | number | Maximum number of simultaneous sessions to manage. | +| [media](./sip.js.sessionmanageroptions.media.md) | | [SessionManagerMedia](./sip.js.sessionmanagermedia.md) | Media options. | +| [reconnectionAttempts](./sip.js.sessionmanageroptions.reconnectionattempts.md) | | number | Maximum number of times to attempt to reconnection. | +| [reconnectionDelay](./sip.js.sessionmanageroptions.reconnectiondelay.md) | | number | Seconds to wait between reconnection attempts. | +| [registererOptions](./sip.js.sessionmanageroptions.registereroptions.md) | | RegistererOptions | Options for Registerer. | +| [registererRegisterOptions](./sip.js.sessionmanageroptions.registererregisteroptions.md) | | RegistererRegisterOptions | Options for register requests (auto register only). | +| [registerGuard](./sip.js.sessionmanageroptions.registerguard.md) | | (() => Promise<boolean>) \| null | Does nothing if undefined or resolves false. If resolves true, the next regitration attempt will be blocked. | +| [registrationRetry](./sip.js.sessionmanageroptions.registrationretry.md) | | boolean | If true then registration attempts will be automatically retried when any registration attempts fail or is otherwise rejected. | +| [registrationRetryInterval](./sip.js.sessionmanageroptions.registrationretryinterval.md) | | number | Time to wait before retrying to send a registration reqeust in seconds. | +| [userAgentOptions](./sip.js.sessionmanageroptions.useragentoptions.md) | | UserAgentOptions | Options for UserAgent. | + diff --git a/docs/session-manager/sip.js.sessionmanageroptions.media.md b/docs/session-manager/sip.js.sessionmanageroptions.media.md new file mode 100644 index 000000000..f3fad9703 --- /dev/null +++ b/docs/session-manager/sip.js.sessionmanageroptions.media.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [SessionManagerOptions](./sip.js.sessionmanageroptions.md) > [media](./sip.js.sessionmanageroptions.media.md) + +## SessionManagerOptions.media property + +Media options. + +Signature: + +```typescript +media?: SessionManagerMedia; +``` diff --git a/docs/session-manager/sip.js.sessionmanageroptions.reconnectionattempts.md b/docs/session-manager/sip.js.sessionmanageroptions.reconnectionattempts.md new file mode 100644 index 000000000..7c9900839 --- /dev/null +++ b/docs/session-manager/sip.js.sessionmanageroptions.reconnectionattempts.md @@ -0,0 +1,18 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [SessionManagerOptions](./sip.js.sessionmanageroptions.md) > [reconnectionAttempts](./sip.js.sessionmanageroptions.reconnectionattempts.md) + +## SessionManagerOptions.reconnectionAttempts property + +Maximum number of times to attempt to reconnection. + +Signature: + +```typescript +reconnectionAttempts?: number; +``` + +## Remarks + +When the transport connection is lost (WebSocket disconnects), reconnection will be attempted immediately. If that fails, reconnection will be attempted again when the browser indicates the application has come online. See: https://developer.mozilla.org/en-US/docs/Web/API/NavigatorOnLine + diff --git a/docs/session-manager/sip.js.sessionmanageroptions.reconnectiondelay.md b/docs/session-manager/sip.js.sessionmanageroptions.reconnectiondelay.md new file mode 100644 index 000000000..15c73226b --- /dev/null +++ b/docs/session-manager/sip.js.sessionmanageroptions.reconnectiondelay.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [SessionManagerOptions](./sip.js.sessionmanageroptions.md) > [reconnectionDelay](./sip.js.sessionmanageroptions.reconnectiondelay.md) + +## SessionManagerOptions.reconnectionDelay property + +Seconds to wait between reconnection attempts. + +Signature: + +```typescript +reconnectionDelay?: number; +``` diff --git a/docs/session-manager/sip.js.sessionmanageroptions.registereroptions.md b/docs/session-manager/sip.js.sessionmanageroptions.registereroptions.md new file mode 100644 index 000000000..5591c889f --- /dev/null +++ b/docs/session-manager/sip.js.sessionmanageroptions.registereroptions.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [SessionManagerOptions](./sip.js.sessionmanageroptions.md) > [registererOptions](./sip.js.sessionmanageroptions.registereroptions.md) + +## SessionManagerOptions.registererOptions property + +Options for Registerer. + +Signature: + +```typescript +registererOptions?: RegistererOptions; +``` diff --git a/docs/session-manager/sip.js.sessionmanageroptions.registererregisteroptions.md b/docs/session-manager/sip.js.sessionmanageroptions.registererregisteroptions.md new file mode 100644 index 000000000..b85d175a4 --- /dev/null +++ b/docs/session-manager/sip.js.sessionmanageroptions.registererregisteroptions.md @@ -0,0 +1,18 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [SessionManagerOptions](./sip.js.sessionmanageroptions.md) > [registererRegisterOptions](./sip.js.sessionmanageroptions.registererregisteroptions.md) + +## SessionManagerOptions.registererRegisterOptions property + +Options for register requests (auto register only). + +Signature: + +```typescript +registererRegisterOptions?: RegistererRegisterOptions; +``` + +## Remarks + +Any options provided here are overriden by the options provided via a cal to `register()`. + diff --git a/docs/session-manager/sip.js.sessionmanageroptions.registerguard.md b/docs/session-manager/sip.js.sessionmanageroptions.registerguard.md new file mode 100644 index 000000000..2871f26a4 --- /dev/null +++ b/docs/session-manager/sip.js.sessionmanageroptions.registerguard.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [SessionManagerOptions](./sip.js.sessionmanageroptions.md) > [registerGuard](./sip.js.sessionmanageroptions.registerguard.md) + +## SessionManagerOptions.registerGuard property + +Does nothing if undefined or resolves false. If resolves true, the next regitration attempt will be blocked. + +Signature: + +```typescript +registerGuard?: (() => Promise) | null; +``` diff --git a/docs/session-manager/sip.js.sessionmanageroptions.registrationretry.md b/docs/session-manager/sip.js.sessionmanageroptions.registrationretry.md new file mode 100644 index 000000000..aade930cc --- /dev/null +++ b/docs/session-manager/sip.js.sessionmanageroptions.registrationretry.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [SessionManagerOptions](./sip.js.sessionmanageroptions.md) > [registrationRetry](./sip.js.sessionmanageroptions.registrationretry.md) + +## SessionManagerOptions.registrationRetry property + +If `true` then registration attempts will be automatically retried when any registration attempts fail or is otherwise rejected. + +Signature: + +```typescript +registrationRetry?: boolean; +``` diff --git a/docs/session-manager/sip.js.sessionmanageroptions.registrationretryinterval.md b/docs/session-manager/sip.js.sessionmanageroptions.registrationretryinterval.md new file mode 100644 index 000000000..b13245891 --- /dev/null +++ b/docs/session-manager/sip.js.sessionmanageroptions.registrationretryinterval.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [SessionManagerOptions](./sip.js.sessionmanageroptions.md) > [registrationRetryInterval](./sip.js.sessionmanageroptions.registrationretryinterval.md) + +## SessionManagerOptions.registrationRetryInterval property + +Time to wait before retrying to send a registration reqeust in seconds. + +Signature: + +```typescript +registrationRetryInterval?: number; +``` diff --git a/docs/session-manager/sip.js.sessionmanageroptions.useragentoptions.md b/docs/session-manager/sip.js.sessionmanageroptions.useragentoptions.md new file mode 100644 index 000000000..c6c5498c2 --- /dev/null +++ b/docs/session-manager/sip.js.sessionmanageroptions.useragentoptions.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [SessionManagerOptions](./sip.js.sessionmanageroptions.md) > [userAgentOptions](./sip.js.sessionmanageroptions.useragentoptions.md) + +## SessionManagerOptions.userAgentOptions property + +Options for UserAgent. + +Signature: + +```typescript +userAgentOptions?: UserAgentOptions; +``` diff --git a/etc/session-manager/sip.js.api.md b/etc/session-manager/sip.js.api.md new file mode 100644 index 000000000..66f50d174 --- /dev/null +++ b/etc/session-manager/sip.js.api.md @@ -0,0 +1,141 @@ +## API Report File for "sip.js" + +> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). + +```ts + +// @public +export function defaultManagedSessionFactory(): ManagedSessionFactory; + +// @public +export interface ManagedSession { + // (undocumented) + held: boolean; + // (undocumented) + mediaLocal?: SessionManagerMediaLocal; + // (undocumented) + mediaRemote?: SessionManagerMediaRemote; + // (undocumented) + muted: boolean; + // Warning: (ae-forgotten-export) The symbol "Session" needs to be exported by the entry point index.d.ts + // + // (undocumented) + session: Session; +} + +// @public +export interface ManagedSessionFactory { + (sessionManager: SessionManager, session: Session): ManagedSession; +} + +// @public +export class SessionManager { + constructor(server: string, options?: SessionManagerOptions); + // Warning: (ae-forgotten-export) The symbol "InvitationAcceptOptions" needs to be exported by the entry point index.d.ts + answer(session: Session, invitationAcceptOptions?: InvitationAcceptOptions): Promise; + // Warning: (ae-forgotten-export) The symbol "InviterOptions" needs to be exported by the entry point index.d.ts + // Warning: (ae-forgotten-export) The symbol "InviterInviteOptions" needs to be exported by the entry point index.d.ts + // Warning: (ae-forgotten-export) The symbol "Inviter" needs to be exported by the entry point index.d.ts + call(destination: string, inviterOptions?: InviterOptions, inviterInviteOptions?: InviterInviteOptions): Promise; + connect(): Promise; + decline(session: Session): Promise; + delegate: SessionManagerDelegate | undefined; + disconnect(): Promise; + // @deprecated + getLocalAudioTrack(session: Session): MediaStreamTrack | undefined; + getLocalMediaStream(session: Session): MediaStream | undefined; + // @deprecated + getLocalVideoTrack(session: Session): MediaStreamTrack | undefined; + // @deprecated + getRemoteAudioTrack(session: Session): MediaStreamTrack | undefined; + getRemoteMediaStream(session: Session): MediaStream | undefined; + // @deprecated + getRemoteVideoTrack(session: Session): MediaStreamTrack | undefined; + hangup(session: Session): Promise; + hold(session: Session): Promise; + isConnected(): boolean; + isHeld(session: Session): boolean | undefined; + isMuted(session: Session): boolean | undefined; + managedSessions: Array; + message(destination: string, message: string): Promise; + mute(session: Session): void; + // Warning: (ae-forgotten-export) The symbol "RegistererRegisterOptions" needs to be exported by the entry point index.d.ts + register(registererRegisterOptions?: RegistererRegisterOptions): Promise; + sendDTMF(session: Session, tone: string): Promise; + // Warning: (ae-forgotten-export) The symbol "SessionReferOptions" needs to be exported by the entry point index.d.ts + transfer(session: Session, target: Session | string, options?: SessionReferOptions): Promise; + unhold(session: Session): Promise; + unmute(session: Session): void; + // Warning: (ae-forgotten-export) The symbol "RegistererUnregisterOptions" needs to be exported by the entry point index.d.ts + unregister(registererUnregisterOptions?: RegistererUnregisterOptions): Promise; + // Warning: (ae-forgotten-export) The symbol "UserAgent" needs to be exported by the entry point index.d.ts + userAgent: UserAgent; +} + +// @public +export interface SessionManagerDelegate { + onCallAnswered?(session: Session): void; + onCallCreated?(session: Session): void; + onCallDTMFReceived?(session: Session, tone: string, duration: number): void; + onCallHangup?(session: Session): void; + onCallHold?(session: Session, held: boolean): void; + onCallReceived?(session: Session): void; + // Warning: (ae-forgotten-export) The symbol "Message" needs to be exported by the entry point index.d.ts + onMessageReceived?(message: Message): void; + // Warning: (ae-forgotten-export) The symbol "Notification" needs to be exported by the entry point index.d.ts + onNotificationReceived?(notification: Notification): void; + onRegistered?(): void; + onServerConnect?(): void; + onServerDisconnect?(error?: Error): void; + onUnregistered?(): void; +} + +// @public +export interface SessionManagerMedia { + constraints?: SessionManagerMediaConstraints; + local?: SessionManagerMediaLocal | ((session: Session) => SessionManagerMediaLocal); + remote?: SessionManagerMediaRemote | ((session: Session) => SessionManagerMediaRemote); +} + +// @public +export interface SessionManagerMediaConstraints { + audio: boolean; + video: boolean; +} + +// @public +export interface SessionManagerMediaLocal { + video?: HTMLVideoElement; +} + +// @public +export interface SessionManagerMediaRemote { + audio?: HTMLAudioElement; + video?: HTMLVideoElement; +} + +// @public +export interface SessionManagerOptions { + aor?: string; + autoStop?: boolean; + delegate?: SessionManagerDelegate; + iceStopWaitingOnServerReflexive?: boolean; + managedSessionFactory?: ManagedSessionFactory; + maxSimultaneousSessions?: number; + media?: SessionManagerMedia; + reconnectionAttempts?: number; + reconnectionDelay?: number; + // Warning: (ae-forgotten-export) The symbol "RegistererOptions" needs to be exported by the entry point index.d.ts + registererOptions?: RegistererOptions; + registererRegisterOptions?: RegistererRegisterOptions; + registerGuard?: (() => Promise) | null; + registrationRetry?: boolean; + registrationRetryInterval?: number; + // Warning: (ae-forgotten-export) The symbol "UserAgentOptions" needs to be exported by the entry point index.d.ts + userAgentOptions?: UserAgentOptions; +} + + +// (No @packageDocumentation comment for this package) + +``` diff --git a/package.json b/package.json index ea36eb679..6af0145fe 100644 --- a/package.json +++ b/package.json @@ -78,23 +78,27 @@ "build-docs-api": "npm run extract-api && npm run document-api && npm run document-copy-api", "build-docs-core": "npm run extract-core && npm run document-core && npm run document-copy-core", "build-docs-session-description-handler": "npm run extract-session-description-handler && npm run document-session-description-handler && npm run document-copy-session-description-handler", + "build-docs-session-manager": "npm run extract-session-manager && npm run document-session-manager && npm run document-copy-session-manager", "build-docs-simple-user": "npm run extract-simple-user && npm run document-simple-user && npm run document-copy-simple-user", "build-docs-transport": "npm run extract-transport && npm run document-transport && npm run document-copy-transport", - "build-docs": "npm run build-lib && npm run build-docs-api && npm run build-docs-core && npm run build-docs-session-description-handler && npm run build-docs-simple-user && npm run build-docs-transport", + "build-docs": "npm run build-lib && npm run build-docs-api && npm run build-docs-core && npm run build-docs-session-description-handler && npm run build-docs-session-manager && npm run build-docs-simple-user && npm run build-docs-transport", "copy-dist-files": "cp dist/sip.js dist/sip-$npm_package_version.js && cp dist/sip.min.js dist/sip-$npm_package_version.min.js", "document-api": "api-documenter markdown --input-folder ./temp/api --output-folder ./temp/docs/api", "document-core": "api-documenter markdown --input-folder ./temp/core --output-folder ./temp/docs/core", "document-session-description-handler": "api-documenter markdown --input-folder ./temp/session-description-handler --output-folder ./temp/docs/session-description-handler", + "document-session-manager": "api-documenter markdown --input-folder ./temp/session-manager --output-folder ./temp/docs/session-manager", "document-simple-user": "api-documenter markdown --input-folder ./temp/simple-user --output-folder ./temp/docs/simple-user", "document-transport": "api-documenter markdown --input-folder ./temp/transport --output-folder ./temp/docs/transport", "document-copy-api": "rm -rf ./docs/api/sip.js.* && cp ./temp/docs/api/* ./docs/api", "document-copy-core": "rm -rf ./docs/core/sip.js.* && cp ./temp/docs/core/* ./docs/core", "document-copy-session-description-handler": "rm -rf ./docs/session-description-handler/sip.js.* && cp ./temp/docs/session-description-handler/* ./docs/session-description-handler", + "document-copy-session-manager": "rm -rf ./docs/session-manager/sip.js.* && cp ./temp/docs/session-manager/* ./docs/session-manager", "document-copy-simple-user": "rm -rf ./docs/simple-user/sip.js.* && cp ./temp/docs/simple-user/* ./docs/simple-user", "document-copy-transport": "rm -rf ./docs/transport/sip.js.* && cp ./temp/docs/transport/* ./docs/transport", "extract-api": "api-extractor run --local --verbose --config src/api/api-extractor.json", "extract-core": "api-extractor run --local --verbose --config src/core/api-extractor.json", "extract-session-description-handler": "api-extractor run --local --verbose --config src/platform/web/session-description-handler/api-extractor.json", + "extract-session-manager": "api-extractor run --local --verbose --config src/platform/web/session-manager/api-extractor.json", "extract-simple-user": "api-extractor run --local --verbose --config src/platform/web/simple-user/api-extractor.json", "extract-transport": "api-extractor run --local --verbose --config src/platform/web/transport/api-extractor.json", "generate-grammar": "node build/grammarGenerator.cjs", diff --git a/src/platform/web/session-manager/api-extractor.json b/src/platform/web/session-manager/api-extractor.json new file mode 100644 index 000000000..2a2cfe34b --- /dev/null +++ b/src/platform/web/session-manager/api-extractor.json @@ -0,0 +1,358 @@ +/** + * Config file for API Extractor. For more info, please visit: https://api-extractor.com + */ + { + "$schema": "https://developer.microsoft.com/json-schemas/api-extractor/v7/api-extractor.schema.json", + + /** + * Optionally specifies another JSON config file that this file extends from. This provides a way for + * standard settings to be shared across multiple projects. + * + * If the path starts with "./" or "../", the path is resolved relative to the folder of the file that contains + * the "extends" field. Otherwise, the first path segment is interpreted as an NPM package name, and will be + * resolved using NodeJS require(). + * + * SUPPORTED TOKENS: none + * DEFAULT VALUE: "" + */ + // "extends": "./shared/api-extractor-base.json" + // "extends": "my-package/include/api-extractor-base.json" + + /** + * Determines the "" token that can be used with other config file settings. The project folder + * typically contains the tsconfig.json and package.json config files, but the path is user-defined. + * + * The path is resolved relative to the folder of the config file that contains the setting. + * + * The default value for "projectFolder" is the token "", which means the folder is determined by traversing + * parent folders, starting from the folder containing api-extractor.json, and stopping at the first folder + * that contains a tsconfig.json file. If a tsconfig.json file cannot be found in this way, then an error + * will be reported. + * + * SUPPORTED TOKENS: + * DEFAULT VALUE: "" + */ + // "projectFolder": "..", + "projectFolder": "../../../..", + + /** + * (REQUIRED) Specifies the .d.ts file to be used as the starting point for analysis. API Extractor + * analyzes the symbols exported by this module. + * + * The file extension must be ".d.ts" and not ".ts". + * + * The path is resolved relative to the folder of the config file that contains the setting; to change this, + * prepend a folder token such as "". + * + * SUPPORTED TOKENS: , , + */ + "mainEntryPointFilePath": "/lib/platform/web/session-manager/index.d.ts", + + /** + * Determines how the TypeScript compiler engine will be invoked by API Extractor. + */ + "compiler": { + /** + * Specifies the path to the tsconfig.json file to be used by API Extractor when analyzing the project. + * + * The path is resolved relative to the folder of the config file that contains the setting; to change this, + * prepend a folder token such as "". + * + * Note: This setting will be ignored if "overrideTsconfig" is used. + * + * SUPPORTED TOKENS: , , + * DEFAULT VALUE: "/tsconfig.json" + */ + // "tsconfigFilePath": "/tsconfig.json", + + /** + * Provides a compiler configuration that will be used instead of reading the tsconfig.json file from disk. + * The object must conform to the TypeScript tsconfig schema: + * + * http://json.schemastore.org/tsconfig + * + * If omitted, then the tsconfig.json file will be read from the "projectFolder". + * + * DEFAULT VALUE: no overrideTsconfig section + */ + "overrideTsconfig": { + "compilerOptions": { + "declaration": true, + "declarationMap": true, + "outDir": "../lib", + "strict": true, + "target": "es5", + "lib": [ + "es2017", + "dom" + ] + }, + "include": [ + "**/*.ts" + ] + } + /** + * This option causes the compiler to be invoked with the --skipLibCheck option. This option is not recommended + * and may cause API Extractor to produce incomplete or incorrect declarations, but it may be required when + * dependencies contain declarations that are incompatible with the TypeScript engine that API Extractor uses + * for its analysis. Where possible, the underlying issue should be fixed rather than relying on skipLibCheck. + * + * DEFAULT VALUE: false + */ + // "skipLibCheck": true, + }, + + /** + * Configures how the API report file (*.api.md) will be generated. + */ + "apiReport": { + /** + * (REQUIRED) Whether to generate an API report. + */ + "enabled": true, + + /** + * The filename for the API report files. It will be combined with "reportFolder" or "reportTempFolder" to produce + * a full file path. + * + * The file extension should be ".api.md", and the string should not contain a path separator such as "\" or "/". + * + * SUPPORTED TOKENS: , + * DEFAULT VALUE: ".api.md" + */ + // "reportFileName": ".api.md", + + /** + * Specifies the folder where the API report file is written. The file name portion is determined by + * the "reportFileName" setting. + * + * The API report file is normally tracked by Git. Changes to it can be used to trigger a branch policy, + * e.g. for an API review. + * + * The path is resolved relative to the folder of the config file that contains the setting; to change this, + * prepend a folder token such as "". + * + * SUPPORTED TOKENS: , , + * DEFAULT VALUE: "/etc/" + */ + "reportFolder": "/etc/session-manager", + + /** + * Specifies the folder where the temporary report file is written. The file name portion is determined by + * the "reportFileName" setting. + * + * After the temporary file is written to disk, it is compared with the file in the "reportFolder". + * If they are different, a production build will fail. + * + * The path is resolved relative to the folder of the config file that contains the setting; to change this, + * prepend a folder token such as "". + * + * SUPPORTED TOKENS: , , + * DEFAULT VALUE: "/temp/" + */ + "reportTempFolder": "/temp/session-manager" + }, + + /** + * Configures how the doc model file (*.api.json) will be generated. + */ + "docModel": { + /** + * (REQUIRED) Whether to generate a doc model file. + */ + "enabled": true, + + /** + * The output path for the doc model file. The file extension should be ".api.json". + * + * The path is resolved relative to the folder of the config file that contains the setting; to change this, + * prepend a folder token such as "". + * + * SUPPORTED TOKENS: , , + * DEFAULT VALUE: "/temp/.api.json" + */ + "apiJsonFilePath": "/temp/session-manager/.api.json" + }, + + /** + * Configures how the .d.ts rollup file will be generated. + */ + "dtsRollup": { + /** + * (REQUIRED) Whether to generate the .d.ts rollup file. + */ + "enabled": false, + + /** + * Specifies the output path for a .d.ts rollup file to be generated without any trimming. + * This file will include all declarations that are exported by the main entry point. + * + * If the path is an empty string, then this file will not be written. + * + * The path is resolved relative to the folder of the config file that contains the setting; to change this, + * prepend a folder token such as "". + * + * SUPPORTED TOKENS: , , + * DEFAULT VALUE: "/dist/.d.ts" + */ + // "untrimmedFilePath": "/dist/sip-platform-web.d.ts", + + /** + * Specifies the output path for a .d.ts rollup file to be generated with trimming for a "beta" release. + * This file will include only declarations that are marked as "@public" or "@beta". + * + * The path is resolved relative to the folder of the config file that contains the setting; to change this, + * prepend a folder token such as "". + * + * SUPPORTED TOKENS: , , + * DEFAULT VALUE: "" + */ + // "betaTrimmedFilePath": "/dist/-beta.d.ts", + + + /** + * Specifies the output path for a .d.ts rollup file to be generated with trimming for a "public" release. + * This file will include only declarations that are marked as "@public". + * + * If the path is an empty string, then this file will not be written. + * + * The path is resolved relative to the folder of the config file that contains the setting; to change this, + * prepend a folder token such as "". + * + * SUPPORTED TOKENS: , , + * DEFAULT VALUE: "" + */ + // "publicTrimmedFilePath": "/dist/-public.d.ts", + + /** + * When a declaration is trimmed, by default it will be replaced by a code comment such as + * "Excluded from this release type: exampleMember". Set "omitTrimmingComments" to true to remove the + * declaration completely. + * + * DEFAULT VALUE: false + */ + // "omitTrimmingComments": true + }, + + /** + * Configures how the tsdoc-metadata.json file will be generated. + */ + "tsdocMetadata": { + /** + * Whether to generate the tsdoc-metadata.json file. + * + * DEFAULT VALUE: true + */ + // "enabled": true, + + /** + * Specifies where the TSDoc metadata file should be written. + * + * The path is resolved relative to the folder of the config file that contains the setting; to change this, + * prepend a folder token such as "". + * + * The default value is "", which causes the path to be automatically inferred from the "tsdocMetadata", + * "typings" or "main" fields of the project's package.json. If none of these fields are set, the lookup + * falls back to "tsdoc-metadata.json" in the package folder. + * + * SUPPORTED TOKENS: , , + * DEFAULT VALUE: "" + */ + // "tsdocMetadataFilePath": "/dist/tsdoc-metadata.json" + }, + + /** + * Configures how API Extractor reports error and warning messages produced during analysis. + * + * There are three sources of messages: compiler messages, API Extractor messages, and TSDoc messages. + */ + "messages": { + /** + * Configures handling of diagnostic messages reported by the TypeScript compiler engine while analyzing + * the input .d.ts files. + * + * TypeScript message identifiers start with "TS" followed by an integer. For example: "TS2551" + * + * DEFAULT VALUE: A single "default" entry with logLevel=warning. + */ + "compilerMessageReporting": { + /** + * Configures the default routing for messages that don't match an explicit rule in this table. + */ + "default": { + /** + * Specifies whether the message should be written to the the tool's output log. Note that + * the "addToApiReportFile" property may supersede this option. + * + * Possible values: "error", "warning", "none" + * + * Errors cause the build to fail and return a nonzero exit code. Warnings cause a production build fail + * and return a nonzero exit code. For a non-production build (e.g. when "api-extractor run" includes + * the "--local" option), the warning is displayed but the build will not fail. + * + * DEFAULT VALUE: "warning" + */ + "logLevel": "warning", + + /** + * When addToApiReportFile is true: If API Extractor is configured to write an API report file (.api.md), + * then the message will be written inside that file; otherwise, the message is instead logged according to + * the "logLevel" option. + * + * DEFAULT VALUE: false + */ + // "addToApiReportFile": false + }, + + // "TS2551": { + // "logLevel": "warning", + // "addToApiReportFile": true + // }, + // + // . . . + }, + + /** + * Configures handling of messages reported by API Extractor during its analysis. + * + * API Extractor message identifiers start with "ae-". For example: "ae-extra-release-tag" + * + * DEFAULT VALUE: See api-extractor-defaults.json for the complete table of extractorMessageReporting mappings + */ + "extractorMessageReporting": { + "default": { + "logLevel": "warning", + // "addToApiReportFile": false + }, + + // "ae-extra-release-tag": { + // "logLevel": "warning", + // "addToApiReportFile": true + // }, + // + // . . . + }, + + /** + * Configures handling of messages reported by the TSDoc parser when analyzing code comments. + * + * TSDoc message identifiers start with "tsdoc-". For example: "tsdoc-link-tag-unescaped-text" + * + * DEFAULT VALUE: A single "default" entry with logLevel=warning. + */ + "tsdocMessageReporting": { + "default": { + "logLevel": "warning", + // "addToApiReportFile": false + } + + // "tsdoc-link-tag-unescaped-text": { + // "logLevel": "warning", + // "addToApiReportFile": true + // }, + // + // . . . + } + } + +} From 94375a9d2f7a7de0487644d47646e400944ea277 Mon Sep 17 00:00:00 2001 From: John Riordan Date: Mon, 17 Oct 2022 13:22:20 -0400 Subject: [PATCH 52/73] Add WebAudioSessionDescriptionHandler --- .../web/session-description-handler/index.ts | 1 + .../web-audio-session-description-handler.ts | 148 ++++++++++++++++++ 2 files changed, 149 insertions(+) create mode 100644 src/platform/web/session-description-handler/web-audio-session-description-handler.ts diff --git a/src/platform/web/session-description-handler/index.ts b/src/platform/web/session-description-handler/index.ts index 36ed6431b..b61a7cf42 100644 --- a/src/platform/web/session-description-handler/index.ts +++ b/src/platform/web/session-description-handler/index.ts @@ -12,3 +12,4 @@ export * from "./session-description-handler-factory-options.js"; export * from "./session-description-handler-factory.js"; export * from "./session-description-handler-options.js"; export * from "./session-description-handler.js"; +export * from "./web-audio-session-description-handler.js"; diff --git a/src/platform/web/session-description-handler/web-audio-session-description-handler.ts b/src/platform/web/session-description-handler/web-audio-session-description-handler.ts new file mode 100644 index 000000000..6c3677661 --- /dev/null +++ b/src/platform/web/session-description-handler/web-audio-session-description-handler.ts @@ -0,0 +1,148 @@ +import { Logger } from "../../../core/log/logger.js"; +import { MediaStreamFactory } from "./media-stream-factory.js"; +import { Session } from "../../../api/session.js"; +import { SessionDescriptionHandler } from "./session-description-handler.js"; +import { SessionDescriptionHandlerConfiguration } from "./session-description-handler-configuration.js"; + +/** + * Start a conference. + * @param conferenceSessions - The sessions to conference. + */ +export function startLocalConference(conferenceSessions: Array): void { + if (conferenceSessions.length < 2) { + throw new Error("Start local conference requires at leaast 2 sessions."); + } + + // Return all possible pairs of elements in an array. + const pairs = (arr: Array) => + arr.map((v, i) => arr.slice(i + 1).map((w) => [v, w])).reduce((acc, curVal) => acc.concat(curVal), []); + + // For each pair of sessions making up the conference, join their media together. + // A session desciprion handler manages the media, streams and tracks for a session. + pairs(conferenceSessions.map((session) => session.sessionDescriptionHandler)).forEach(([sdh0, sdh1]) => { + if (!(sdh0 instanceof WebAudioSessionDescriptionHandler && sdh1 instanceof WebAudioSessionDescriptionHandler)) { + throw new Error("Session description handler not instance of SessionManagerSessionDescriptionHandler"); + } + sdh0.joinWith(sdh1); + }); +} + +/** + * A WebAudioSessionDescriptionHandler uses the Web Audio API to enable local conferencing of audio streams. + * + * This handler only works for one track of audio per peer connection. While the session description handler + * being extended supports both audio and video, attempting to utilize video with this handler is not defined. + * + * @internal + */ +export class WebAudioSessionDescriptionHandler extends SessionDescriptionHandler { + static audioContext: AudioContext | undefined; + + private localMediaStreamDestinationNode?: MediaStreamAudioDestinationNode; + private localMediaStreamSourceNode?: MediaStreamAudioSourceNode; + private localMediaStreamReal?: MediaStream; + + constructor( + logger: Logger, + mediaStreamFactory: MediaStreamFactory, + sessionDescriptionHandlerConfiguration?: SessionDescriptionHandlerConfiguration + ) { + super(logger, mediaStreamFactory, sessionDescriptionHandlerConfiguration); + if (!WebAudioSessionDescriptionHandler.audioContext) { + WebAudioSessionDescriptionHandler.audioContext = new AudioContext(); + } + } + + /** + * Helper function to enable/disable media tracks. + * @param enable - If true enable tracks. + */ + public enableSenderTracks(enable: boolean): void { + // This session decription handler is not using the original outbound (local) media stream source + // and has instead inserted a Web Audio proxy media stream to allow conferencing and mixing of stream. + // So here, we only want to mute the original source and not the proxy as it may be mixing other + // sources into the outbound stream and we do not want to enable/disable those. We only want to + // enable/disable the original stream source so that it's media gets muted/unmuted going to the proxy. + const stream = this.localMediaStreamReal; + if (stream === undefined) { + throw new Error("Stream undefined."); + } + stream.getAudioTracks().forEach((track) => { + track.enabled = enable; + }); + } + + /** + * Returns a WebRTC MediaStream proxying the provided audio media stream. + * This allows additional Web Audio media stream source nodes to be connected + * to the destination node assoicated with the returned stream so we can mix + * aditional audio sorces into the local media stream (ie for 3-way conferencing). + * @param stream - The MediaStream to proxy. + */ + initLocalMediaStream(stream: MediaStream): MediaStream { + if (!WebAudioSessionDescriptionHandler.audioContext) { + throw new Error("SessionManagerSessionDescriptionHandler.audioContext undefined."); + } + this.localMediaStreamReal = stream; + this.localMediaStreamSourceNode = WebAudioSessionDescriptionHandler.audioContext.createMediaStreamSource(stream); + this.localMediaStreamDestinationNode = + WebAudioSessionDescriptionHandler.audioContext.createMediaStreamDestination(); + this.localMediaStreamSourceNode.connect(this.localMediaStreamDestinationNode); + return this.localMediaStreamDestinationNode.stream; + } + + /** + * Join (conference) media streams with another party. + * @param peer - The session description handler of the peer to join with. + */ + joinWith(peer: WebAudioSessionDescriptionHandler): void { + if (!WebAudioSessionDescriptionHandler.audioContext) { + throw new Error("SessionManagerSessionDescriptionHandler.audioContext undefined."); + } + // Mix our inbound (remote) stream into the peer's outbound (local) streams. + const ourNewInboundStreamSource = WebAudioSessionDescriptionHandler.audioContext.createMediaStreamSource( + this.remoteMediaStream + ); + const peerOutboundStreamDestination = peer.localMediaStreamDestinationNode; + if (peerOutboundStreamDestination === undefined) { + throw new Error("Peer outbound (local) stream local media stream destination is undefined."); + } + ourNewInboundStreamSource.connect(peerOutboundStreamDestination); + + // Mix the peer's inbound (remote) streams into our outbound (local) stream. + const peerNewInboundStreamSource = WebAudioSessionDescriptionHandler.audioContext.createMediaStreamSource( + peer.remoteMediaStream + ); + const ourOutboundStreamDestination = this.localMediaStreamDestinationNode; + if (ourOutboundStreamDestination === undefined) { + throw new Error("Our outbound (local) stream local media stream destination is undefined."); + } + peerNewInboundStreamSource.connect(ourOutboundStreamDestination); + } + + /** + * Sets the original local media stream. + * @param stream - Media stream containing tracks to be utilized. + * @remarks + * Only the first audio and video tracks of the provided MediaStream are utilized. + * Adds tracks if audio and/or video tracks are not already present, otherwise replaces tracks. + */ + setRealLocalMediaStream(stream: MediaStream): void { + if (!WebAudioSessionDescriptionHandler.audioContext) { + throw new Error("SessionManagerSessionDescriptionHandler.audioContext undefined."); + } + if (!this.localMediaStreamReal) { + this.initLocalMediaStream(stream); + return; + } + + if (!this.localMediaStreamDestinationNode || !this.localMediaStreamSourceNode || !this.localMediaStreamReal) { + throw new Error("Local media stream undefined."); + } + + this.localMediaStreamReal = stream; + this.localMediaStreamSourceNode.disconnect(this.localMediaStreamDestinationNode); + this.localMediaStreamSourceNode = WebAudioSessionDescriptionHandler.audioContext.createMediaStreamSource(stream); + this.localMediaStreamSourceNode.connect(this.localMediaStreamDestinationNode); + } +} From e144ae26f365abd74dbc134650fbfd83f3e86466 Mon Sep 17 00:00:00 2001 From: John Riordan Date: Tue, 18 Oct 2022 17:08:32 -0400 Subject: [PATCH 53/73] UserAgent issues - breaking change - remove autoStart and autoStop - address issues in #863 --- src/api/user-agent-options.ts | 24 ++++------- src/api/user-agent.ts | 67 +++++++++++++------------------ test/spec/api/publication.spec.ts | 8 +--- test/spec/api/user-agent.spec.ts | 8 +--- 4 files changed, 40 insertions(+), 67 deletions(-) diff --git a/src/api/user-agent-options.ts b/src/api/user-agent-options.ts index 82e9aca8f..5eb037d72 100644 --- a/src/api/user-agent-options.ts +++ b/src/api/user-agent-options.ts @@ -57,23 +57,6 @@ export interface UserAgentOptions { */ authorizationUsername?: string; - /** - * @deprecated - * If `true`, the user agent calls the `start()` method in the constructor. - * @defaultValue `false` - * @remarks - * The call to start() resolves when the user agent connects, so if this - * option is set to `true` an alternative method of connection detection - * must be used. - */ - autoStart?: boolean; - - /** - * If `true`, the user agent calls the `stop()` method on unload (if running in browser window). - * @defaultValue `true` - */ - autoStop?: boolean; - /** * The user portion of user agent's contact URI. * @remarks @@ -111,6 +94,13 @@ export interface UserAgentOptions { */ forceRport?: boolean; + /** + * If `true`, the `stop()` method will attempt to gracefully end all dialogs and registrations before disconnecting. + * Otherwise `stop()` will transition immediately abandoning all dialogs and registrations. + * @defaultValue `true` + */ + gracefulShutdown?: boolean; + /** * Hack * @deprecated TBD diff --git a/src/api/user-agent.ts b/src/api/user-agent.ts index 70261b2eb..1dd29dd3f 100644 --- a/src/api/user-agent.ts +++ b/src/api/user-agent.ts @@ -37,9 +37,6 @@ import { UserAgentDelegate } from "./user-agent-delegate.js"; import { SIPExtension, UserAgentOptions, UserAgentRegisteredOptionTags } from "./user-agent-options.js"; import { UserAgentState } from "./user-agent-state.js"; -// eslint-disable-next-line @typescript-eslint/no-explicit-any -declare const chrome: any; - /** * A user agent sends and receives requests using a `Transport`. * @@ -233,10 +230,6 @@ export class UserAgent { // Initialize UserAgentCore this._userAgentCore = this.initCore(); - - if (this.options.autoStart) { - this.start(); - } } /** @@ -265,13 +258,12 @@ export class UserAgent { authorizationHa1: "", authorizationPassword: "", authorizationUsername: "", - autoStart: false, - autoStop: true, delegate: {}, contactName: "", contactParams: { transport: "ws" }, displayName: "", forceRport: false, + gracefulShutdown: true, hackAllowUnregisteredOptionTags: false, hackIpInContact: false, hackViaTcp: false, @@ -415,6 +407,7 @@ export class UserAgent { * * @remarks * Resolves if transport connects, otherwise rejects. + * Calling `start()` after calling `stop()` will fail if `stop()` has yet to resolve. * * @example * ```ts @@ -437,20 +430,6 @@ export class UserAgent { // Transition state this.transitionState(UserAgentState.Started); - // TODO: Review this as it is not clear it has any benefit and at worst causes additional load the server. - // On unload it may be best to simply in most scenarios to do nothing. Furthermore and regardless, this - // kind of behavior seems more appropriate to be managed by the consumer of the API than the API itself. - // Should this perhaps be deprecated? - // - // Add window unload event listener - if (this.options.autoStop) { - // Google Chrome Packaged Apps don't allow 'unload' listeners: unload is not available in packaged apps - const googleChromePackagedApp = typeof chrome !== "undefined" && chrome.app && chrome.app.runtime ? true : false; - if (typeof window !== "undefined" && typeof window.addEventListener === "function" && !googleChromePackagedApp) { - window.addEventListener("unload", this.unloadListener); - } - } - return this.transport.connect(); } @@ -467,6 +446,9 @@ export class UserAgent { * 5) Transport disconnects. * 6) User Agent Core resets. * ``` + * The user agent state transistions to stopped once these steps have been completed. + * Calling `start()` after calling `stop()` will fail if `stop()` has yet to resolve. + * * NOTE: While this is a "graceful shutdown", it can also be very slow one if you * are waiting for the returned Promise to resolve. The disposal of the clients and * dialogs is done serially - waiting on one to finish before moving on to the next. @@ -489,17 +471,28 @@ export class UserAgent { } this.logger.log(`Stopping ${this.configuration.uri}`); - // Transition state - this.transitionState(UserAgentState.Stopped); + // The default behavior is to cleanup dialogs and registrations. This is not that... + if (!this.options.gracefulShutdown) { + // Dispose of the transport (disconnecting) + this.logger.log(`Dispose of transport`); + this.transport.dispose().catch((error: Error) => { + this.logger.error(error.message); + throw error; + }); - // TODO: See comments with associated complimentary code in start(). Should this perhaps be deprecated? - // Remove window unload event listener - if (this.options.autoStop) { - // Google Chrome Packaged Apps don't allow 'unload' listeners: unload is not available in packaged apps - const googleChromePackagedApp = typeof chrome !== "undefined" && chrome.app && chrome.app.runtime ? true : false; - if (typeof window !== "undefined" && window.removeEventListener && !googleChromePackagedApp) { - window.removeEventListener("unload", this.unloadListener); - } + // Dispose of the user agent core (resetting) + this.logger.log(`Dispose of core`); + this.userAgentCore.dispose(); + + // Reset dialogs and registrations + this._publishers = {}; + this._registerers = {}; + this._sessions = {}; + this._subscriptions = {}; + + this.transitionState(UserAgentState.Stopped); + + return Promise.resolve(); } // Be careful here to use a local references as start() can be called @@ -581,6 +574,9 @@ export class UserAgent { // Dispose of the user agent core (resetting) this.logger.log(`Dispose of core`); userAgentCore.dispose(); + + // Transition state + this.transitionState(UserAgentState.Stopped); } /** @@ -1050,9 +1046,4 @@ export class UserAgent { this._state = newState; this._stateEventEmitter.emit(this._state); } - - /** Unload listener. */ - private unloadListener = (): void => { - this.stop(); - }; } diff --git a/test/spec/api/publication.spec.ts b/test/spec/api/publication.spec.ts index 9c6e7f133..3fb20c5f0 100644 --- a/test/spec/api/publication.spec.ts +++ b/test/spec/api/publication.spec.ts @@ -1,4 +1,3 @@ -import { UserAgentOptions } from "../../../lib/api/index.js"; import { connectUserFake, makeUserFake, UserFake } from "../../support/api/user-fake.js"; import { soon } from "../../support/api/utils.js"; @@ -13,11 +12,8 @@ describe("API Publication", () => { beforeEach(async () => { jasmine.clock().install(); - const options: UserAgentOptions = { - autoStart: false - }; - alice = await makeUserFake("alice", "example.com", "Alice", options); - bob = await makeUserFake("bob", "example.com", "Bob", options); + alice = await makeUserFake("alice", "example.com", "Alice"); + bob = await makeUserFake("bob", "example.com", "Bob"); connectUserFake(alice, bob); }); diff --git a/test/spec/api/user-agent.spec.ts b/test/spec/api/user-agent.spec.ts index db005f160..c12521f4d 100644 --- a/test/spec/api/user-agent.spec.ts +++ b/test/spec/api/user-agent.spec.ts @@ -1,4 +1,3 @@ -import { UserAgentOptions } from "../../../lib/api/index.js"; import { connectUserFake, makeUserFake, UserFake } from "../../support/api/user-fake.js"; import { soon } from "../../support/api/utils.js"; @@ -13,11 +12,8 @@ describe("API UserAgent", () => { beforeEach(async () => { jasmine.clock().install(); - const options: UserAgentOptions = { - autoStart: false - }; - alice = await makeUserFake("alice", "example.com", "Alice", options); - bob = await makeUserFake("bob", "example.com", "Bob", options); + alice = await makeUserFake("alice", "example.com", "Alice"); + bob = await makeUserFake("bob", "example.com", "Bob"); connectUserFake(alice, bob); }); From 0d05f352e3ab133af5405e09ee36b8bd0802ac4f Mon Sep 17 00:00:00 2001 From: John Riordan Date: Wed, 19 Oct 2022 10:40:13 -0400 Subject: [PATCH 54/73] Subscriber - update comment to improve docs --- src/api/subscriber.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/api/subscriber.ts b/src/api/subscriber.ts index 236576af7..601b4c637 100644 --- a/src/api/subscriber.ts +++ b/src/api/subscriber.ts @@ -40,6 +40,8 @@ import { UserAgent } from "./user-agent.js"; * // Add delegate to handle event notifications. * subscriber.delegate = { * onNotify: (notification: Notification) => { + * // send a response + * notification.accept(); * // handle notification here * } * }; From 8fdb19d846734d2c0df4548dd0911ad4364b1f30 Mon Sep 17 00:00:00 2001 From: John Riordan Date: Mon, 17 Oct 2022 13:26:51 -0400 Subject: [PATCH 55/73] Update TODO --- docs/TODO.md | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/docs/TODO.md b/docs/TODO.md index f628564cc..d490caa7b 100644 --- a/docs/TODO.md +++ b/docs/TODO.md @@ -2,8 +2,8 @@ ## Next Release +- implement Session Timers or OPTIONS Ping to detect network failure - review and remove everything that was deprecated -- free core and API from DOM dependencies - complete more work in progress - more documentation - more tests @@ -12,10 +12,6 @@ # Work in Progress -## DOM Dependencies - -This is an issue with the URI class. The new API requires a URI instance be passed as an options, so that's indirectly no longer an issue. But the URI class should not be implemented in a fashion where toString() depends on decodeURIComponent which can (and does) throw URIError: URI malformed. The short is the URI class needs to be modified and this is also somewhat related to how the parser utilizes URI. Adding it to my TODO list (towards the bottom). - ## Dev Dependencies ### api-extractor @@ -37,7 +33,6 @@ This is an issue with the URI class. The new API requires a URI instance be pass - UserAgent: The `contact` should be configurable. Related to URI and Grammar work. Issue #791. - UserAgent: Should support multiple servers (or multiple Transports). Issue #706. - Registerer: There is no good way to know if there is a request in progress (currently throws exception). Perhaps Registering/Unregistering state? -- Registerer: Re-registration is current -3 seconds which seems not so good. Look at pjsip and others to see what they have done. - Review all deprecated to make sure an alternative is provided that is something other than TBD. - Review Allowed Methods and Allow header so configurable/variable in more reasonable fashion. - Need alternatives for all hacks like `hackViaTcp`. @@ -48,15 +43,13 @@ This is an issue with the URI class. The new API requires a URI instance be pass - Dialog UACs are creating messages while non-dialog UACs are being handed message in most cases, but not all cases; MessageUserAgentClient is used for both out of dialog and in dialog. It would be worth it to have the constructor interface be consistent. - Regardless, this needs to wait till post 0.16 as it doesn't make sense to port the old code. - Dialog UASs are created using a "dialog or core" in some cases when the request can be in dialog or out of dialog but this is not being done consistently. See Message vs Notify vs ReferUAS, etc. - I believe all in and out of dialog requests should be able to be authenticated (confirm this). Currently only INVITE and re-INVITE work. There needs to be a small refactor to make it work for everything. - Regardless, this needs to wait till post 0.16 as it doesn't make sense to port the old code. - Messages (IncomingMessage, OutgoingRequestMessage) could use a make over (tied to Grammar work) -- Extra headers array approach is error prone - Timers and some associated timer code doesn't support unreliable transports (UDP for example) +- Extra headers array approach is error prone ### Grammar & URI - Refresh @@ -67,6 +60,10 @@ This is an issue with the URI class. The new API requires a URI instance be pass - URI should be strongly typed (currently using any for constructor params) - URI allows "" for user and 0 for port which is confusing and should probably be undefined instead - URI toString() can and does throw. Issue #286. + - This is an issue with the URI class. The new API requires a URI instance be passed as an options, so that's + indirectly no longer an issue. But the URI class should not be implemented in a fashion where toString() + depends on decodeURIComponent which can (and does) throw URIError: URI malformed. The short is the URI + class needs to be modified and this is also somewhat related to how the parser utilizes URI. - IncomingMessage class has public properties that may not be set (!), internally generated 408 for example - Handling incoming REGISTER, "Contact: \*" header fails to parse - there's a test written for it @@ -90,7 +87,6 @@ Non-exhaustive research on these parsers, generally it seems like there is nothi ### Transport - TCP Support -- WebSocket Keep Alive: The time it takes the WebSocket to recognize the remote is no longer responding is too long. - Support for "stream-oriented" transports: https://tools.ietf.org/html/rfc3261#section-18.3 - This current Transport interface only supports "message-oriented" transports. Issue #818. @@ -98,6 +94,7 @@ Non-exhaustive research on these parsers, generally it seems like there is nothi ### RFC5626: Managing Client-Initiated Connections (Outbound) ### RFC5627: Obtaining and Using Globally Routable User Agent URIs (GRUUs) + - MUST include the outbound option tag in a Supported header field in a REGISTER request. - The UAC MUST support the Path header [RFC3327] mechanism, and indicate its support by including the 'path' option-tag in a From 883737c410de918d0aeca34330b0d081318dd89a Mon Sep 17 00:00:00 2001 From: John Riordan Date: Thu, 20 Oct 2022 22:06:50 -0400 Subject: [PATCH 56/73] Update dev dependencies --- package-lock.json | 324 +++++++++++++++++++++++----------------------- package.json | 10 +- 2 files changed, 166 insertions(+), 168 deletions(-) diff --git a/package-lock.json b/package-lock.json index bd1bc2e7a..bfc7e2863 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,13 +9,13 @@ "version": "0.20.1", "license": "MIT", "devDependencies": { - "@microsoft/api-documenter": "^7.19.14", + "@microsoft/api-documenter": "^7.19.22", "@microsoft/api-extractor": "7.7.11", "@types/jasmine": "^4.3.0", - "@typescript-eslint/eslint-plugin": "^5.38.1", - "@typescript-eslint/parser": "^5.38.1", + "@typescript-eslint/eslint-plugin": "^5.40.1", + "@typescript-eslint/parser": "^5.40.1", "circular-dependency-plugin": "^5.2.2", - "eslint": "^8.24.0", + "eslint": "^8.25.0", "eslint-config-prettier": "^8.5.0", "eslint-plugin-prettier": "^4.2.1", "eslint-plugin-tree-shaking": "^1.10.0", @@ -33,7 +33,7 @@ "prettier": "^2.7.1", "ts-loader": "^9.4.1", "ts-pegjs": "^1.2.2", - "typescript": "^4.8.3", + "typescript": "^4.8.4", "webpack": "^5.74.0", "webpack-cli": "^4.10.0" }, @@ -60,9 +60,9 @@ } }, "node_modules/@eslint/eslintrc": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.2.tgz", - "integrity": "sha512-AXYd23w1S/bv3fTs3Lz0vjiYemS08jWkI3hYyS9I1ry+0f+Yjs1wm+sU0BS8qDOPrBIkp4qHYC16I8uVtpLajQ==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz", + "integrity": "sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==", "dev": true, "dependencies": { "ajv": "^6.12.4", @@ -114,16 +114,6 @@ "node": ">=10.10.0" } }, - "node_modules/@humanwhocodes/gitignore-to-minimatch": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@humanwhocodes/gitignore-to-minimatch/-/gitignore-to-minimatch-1.0.2.tgz", - "integrity": "sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, "node_modules/@humanwhocodes/module-importer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", @@ -202,15 +192,15 @@ } }, "node_modules/@microsoft/api-documenter": { - "version": "7.19.14", - "resolved": "https://registry.npmjs.org/@microsoft/api-documenter/-/api-documenter-7.19.14.tgz", - "integrity": "sha512-eLCJ33CnKErTL2rBrN3ILJLf5VogPaIaI7I7vrLzQZJ5ti/Gv4GNvwvkhlsQ9I000L/+iplDf2UwcTYZM7HHtg==", + "version": "7.19.22", + "resolved": "https://registry.npmjs.org/@microsoft/api-documenter/-/api-documenter-7.19.22.tgz", + "integrity": "sha512-Gz9l7tspR0Brnv4I1PcDMLZTZ9H4n8g1iHDwRNMWuOehvp3Wkn2ydBxmVB4ugsTfOPm04DK3cMm5RCVNejDYuw==", "dev": true, "dependencies": { - "@microsoft/api-extractor-model": "7.24.2", + "@microsoft/api-extractor-model": "7.25.1", "@microsoft/tsdoc": "0.14.1", - "@rushstack/node-core-library": "3.52.0", - "@rushstack/ts-command-line": "4.12.3", + "@rushstack/node-core-library": "3.53.2", + "@rushstack/ts-command-line": "4.13.0", "colors": "~1.2.1", "js-yaml": "~3.13.1", "resolve": "~1.17.0" @@ -240,14 +230,14 @@ } }, "node_modules/@microsoft/api-extractor-model": { - "version": "7.24.2", - "resolved": "https://registry.npmjs.org/@microsoft/api-extractor-model/-/api-extractor-model-7.24.2.tgz", - "integrity": "sha512-uUvjqTCY7hYERWGks+joTioN1QYHIucCDy7I/JqLxFxLbFXE5dpc1X7L+FG4PN/s8QYL24DKt0fqJkgcrFKLTw==", + "version": "7.25.1", + "resolved": "https://registry.npmjs.org/@microsoft/api-extractor-model/-/api-extractor-model-7.25.1.tgz", + "integrity": "sha512-AaZ0ohCGLRjWiZviM+0p/DaxgMhbawS183LW2+CSqyEBh6wZks7NjoyhzhibAYapS4omnrmv96+0V/2wBvnIZQ==", "dev": true, "dependencies": { "@microsoft/tsdoc": "0.14.1", "@microsoft/tsdoc-config": "~0.16.1", - "@rushstack/node-core-library": "3.52.0" + "@rushstack/node-core-library": "3.53.2" } }, "node_modules/@microsoft/api-extractor/node_modules/@microsoft/api-extractor-model": { @@ -434,9 +424,9 @@ } }, "node_modules/@rushstack/node-core-library": { - "version": "3.52.0", - "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-3.52.0.tgz", - "integrity": "sha512-Z+MAP//G3rEGZd3JxJcBGcPYJlh8pvPoLMTLa5Sy6FTE6hRPzN+5J8DT7BbTmlqZaL6SZpXF30heRUbnYOvujw==", + "version": "3.53.2", + "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-3.53.2.tgz", + "integrity": "sha512-FggLe5DQs0X9MNFeJN3/EXwb+8hyZUTEp2i+V1e8r4Va4JgkjBNY0BuEaQI+3DW6S4apV3UtXU3im17MSY00DA==", "dev": true, "dependencies": { "@types/node": "12.20.24", @@ -450,9 +440,9 @@ } }, "node_modules/@rushstack/ts-command-line": { - "version": "4.12.3", - "resolved": "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-4.12.3.tgz", - "integrity": "sha512-Pdij22RotMXzI+HWHyYCvw0RMZhiP5a6Za/96XamZ1+mxmpSm4ujf8TROKxGAHySmR5A8iNVSlzhNMnUlFQE6g==", + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-4.13.0.tgz", + "integrity": "sha512-crLT31kl+qilz0eBRjqqYO06CqwbElc0EvzS6jI69B9Ikt1SkkSzIZ2iDP7zt/rd1ZYipKIS9hf9CQR9swDIKg==", "dev": true, "dependencies": { "@types/argparse": "1.0.38", @@ -529,15 +519,21 @@ "integrity": "sha512-yxDeaQIAJlMav7fH5AQqPH1u8YIuhYJXYBzxaQ4PifsU0GDO38MSdmEDeRlIxrKbC6NbEaaEHDanWb+y30U8SQ==", "dev": true }, + "node_modules/@types/semver": { + "version": "7.3.12", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.12.tgz", + "integrity": "sha512-WwA1MW0++RfXmCr12xeYOOC5baSC9mSb0ZqCquFzKhcoF4TvHu5MKOuXsncgZcpVFhB1pXd5hZmM0ryAoCp12A==", + "dev": true + }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.38.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.38.1.tgz", - "integrity": "sha512-ky7EFzPhqz3XlhS7vPOoMDaQnQMn+9o5ICR9CPr/6bw8HrFkzhMSxuA3gRfiJVvs7geYrSeawGJjZoZQKCOglQ==", + "version": "5.40.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.40.1.tgz", + "integrity": "sha512-FsWboKkWdytGiXT5O1/R9j37YgcjO8MKHSUmWnIEjVaz0krHkplPnYi7mwdb+5+cs0toFNQb0HIrN7zONdIEWg==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.38.1", - "@typescript-eslint/type-utils": "5.38.1", - "@typescript-eslint/utils": "5.38.1", + "@typescript-eslint/scope-manager": "5.40.1", + "@typescript-eslint/type-utils": "5.40.1", + "@typescript-eslint/utils": "5.40.1", "debug": "^4.3.4", "ignore": "^5.2.0", "regexpp": "^3.2.0", @@ -562,14 +558,14 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "5.38.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.38.1.tgz", - "integrity": "sha512-LDqxZBVFFQnQRz9rUZJhLmox+Ep5kdUmLatLQnCRR6523YV+XhRjfYzStQ4MheFA8kMAfUlclHSbu+RKdRwQKw==", + "version": "5.40.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.40.1.tgz", + "integrity": "sha512-IK6x55va5w4YvXd4b3VrXQPldV9vQTxi5ov+g4pMANsXPTXOcfjx08CRR1Dfrcc51syPtXHF5bgLlMHYFrvQtg==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.38.1", - "@typescript-eslint/types": "5.38.1", - "@typescript-eslint/typescript-estree": "5.38.1", + "@typescript-eslint/scope-manager": "5.40.1", + "@typescript-eslint/types": "5.40.1", + "@typescript-eslint/typescript-estree": "5.40.1", "debug": "^4.3.4" }, "engines": { @@ -589,13 +585,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "5.38.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.38.1.tgz", - "integrity": "sha512-BfRDq5RidVU3RbqApKmS7RFMtkyWMM50qWnDAkKgQiezRtLKsoyRKIvz1Ok5ilRWeD9IuHvaidaLxvGx/2eqTQ==", + "version": "5.40.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.40.1.tgz", + "integrity": "sha512-jkn4xsJiUQucI16OLCXrLRXDZ3afKhOIqXs4R3O+M00hdQLKR58WuyXPZZjhKLFCEP2g+TXdBRtLQ33UfAdRUg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.38.1", - "@typescript-eslint/visitor-keys": "5.38.1" + "@typescript-eslint/types": "5.40.1", + "@typescript-eslint/visitor-keys": "5.40.1" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -606,13 +602,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "5.38.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.38.1.tgz", - "integrity": "sha512-UU3j43TM66gYtzo15ivK2ZFoDFKKP0k03MItzLdq0zV92CeGCXRfXlfQX5ILdd4/DSpHkSjIgLLLh1NtkOJOAw==", + "version": "5.40.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.40.1.tgz", + "integrity": "sha512-DLAs+AHQOe6n5LRraXiv27IYPhleF0ldEmx6yBqBgBLaNRKTkffhV1RPsjoJBhVup2zHxfaRtan8/YRBgYhU9Q==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "5.38.1", - "@typescript-eslint/utils": "5.38.1", + "@typescript-eslint/typescript-estree": "5.40.1", + "@typescript-eslint/utils": "5.40.1", "debug": "^4.3.4", "tsutils": "^3.21.0" }, @@ -633,9 +629,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "5.38.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.38.1.tgz", - "integrity": "sha512-QTW1iHq1Tffp9lNfbfPm4WJabbvpyaehQ0SrvVK2yfV79SytD9XDVxqiPvdrv2LK7DGSFo91TB2FgWanbJAZXg==", + "version": "5.40.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.40.1.tgz", + "integrity": "sha512-Icg9kiuVJSwdzSQvtdGspOlWNjVDnF3qVIKXdJ103o36yRprdl3Ge5cABQx+csx960nuMF21v8qvO31v9t3OHw==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -646,13 +642,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.38.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.38.1.tgz", - "integrity": "sha512-99b5e/Enoe8fKMLdSuwrfH/C0EIbpUWmeEKHmQlGZb8msY33qn1KlkFww0z26o5Omx7EVjzVDCWEfrfCDHfE7g==", + "version": "5.40.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.40.1.tgz", + "integrity": "sha512-5QTP/nW5+60jBcEPfXy/EZL01qrl9GZtbgDZtDPlfW5zj/zjNrdI2B5zMUHmOsfvOr2cWqwVdWjobCiHcedmQA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.38.1", - "@typescript-eslint/visitor-keys": "5.38.1", + "@typescript-eslint/types": "5.40.1", + "@typescript-eslint/visitor-keys": "5.40.1", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -673,17 +669,19 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "5.38.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.38.1.tgz", - "integrity": "sha512-oIuUiVxPBsndrN81oP8tXnFa/+EcZ03qLqPDfSZ5xIJVm7A9V0rlkQwwBOAGtrdN70ZKDlKv+l1BeT4eSFxwXA==", + "version": "5.40.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.40.1.tgz", + "integrity": "sha512-a2TAVScoX9fjryNrW6BZRnreDUszxqm9eQ9Esv8n5nXApMW0zeANUYlwh/DED04SC/ifuBvXgZpIK5xeJHQ3aw==", "dev": true, "dependencies": { "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.38.1", - "@typescript-eslint/types": "5.38.1", - "@typescript-eslint/typescript-estree": "5.38.1", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.40.1", + "@typescript-eslint/types": "5.40.1", + "@typescript-eslint/typescript-estree": "5.40.1", "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" + "eslint-utils": "^3.0.0", + "semver": "^7.3.7" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -697,12 +695,12 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.38.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.38.1.tgz", - "integrity": "sha512-bSHr1rRxXt54+j2n4k54p4fj8AHJ49VDWtjpImOpzQj4qjAiOpPni+V1Tyajh19Api1i844F757cur8wH3YvOA==", + "version": "5.40.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.40.1.tgz", + "integrity": "sha512-A2DGmeZ+FMja0geX5rww+DpvILpwo1OsiQs0M+joPWJYsiEFBLsH0y1oFymPNul6Z5okSmHpP4ivkc2N0Cgfkw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.38.1", + "@typescript-eslint/types": "5.40.1", "eslint-visitor-keys": "^3.3.0" }, "engines": { @@ -1638,14 +1636,13 @@ } }, "node_modules/eslint": { - "version": "8.24.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.24.0.tgz", - "integrity": "sha512-dWFaPhGhTAiPcCgm3f6LI2MBWbogMnTJzFBbhXVRQDJPkr9pGZvVjlVfXd+vyDcWPA2Ic9L2AXPIQM0+vk/cSQ==", + "version": "8.25.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.25.0.tgz", + "integrity": "sha512-DVlJOZ4Pn50zcKW5bYH7GQK/9MsoQG2d5eDH0ebEkE8PbgzTTmtt/VTH9GGJ4BfeZCpBLqFfvsjX35UacUL83A==", "dev": true, "dependencies": { - "@eslint/eslintrc": "^1.3.2", + "@eslint/eslintrc": "^1.3.3", "@humanwhocodes/config-array": "^0.10.5", - "@humanwhocodes/gitignore-to-minimatch": "^1.0.2", "@humanwhocodes/module-importer": "^1.0.1", "ajv": "^6.10.0", "chalk": "^4.0.0", @@ -2461,9 +2458,9 @@ } }, "node_modules/is-core-module": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz", - "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==", + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", "dev": true, "dependencies": { "has": "^1.0.3" @@ -4205,9 +4202,9 @@ } }, "node_modules/typescript": { - "version": "4.8.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.3.tgz", - "integrity": "sha512-goMHfm00nWPa8UvR/CPSvykqf6dVV8x/dp0c5mFTMTIu0u0FlGWRioyy7Nn0PGAdHxpJZnuO/ut+PpQ8UiHAig==", + "version": "4.8.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.4.tgz", + "integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -4635,9 +4632,9 @@ "dev": true }, "@eslint/eslintrc": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.2.tgz", - "integrity": "sha512-AXYd23w1S/bv3fTs3Lz0vjiYemS08jWkI3hYyS9I1ry+0f+Yjs1wm+sU0BS8qDOPrBIkp4qHYC16I8uVtpLajQ==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz", + "integrity": "sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==", "dev": true, "requires": { "ajv": "^6.12.4", @@ -4679,12 +4676,6 @@ "minimatch": "^3.0.4" } }, - "@humanwhocodes/gitignore-to-minimatch": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@humanwhocodes/gitignore-to-minimatch/-/gitignore-to-minimatch-1.0.2.tgz", - "integrity": "sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA==", - "dev": true - }, "@humanwhocodes/module-importer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", @@ -4747,15 +4738,15 @@ } }, "@microsoft/api-documenter": { - "version": "7.19.14", - "resolved": "https://registry.npmjs.org/@microsoft/api-documenter/-/api-documenter-7.19.14.tgz", - "integrity": "sha512-eLCJ33CnKErTL2rBrN3ILJLf5VogPaIaI7I7vrLzQZJ5ti/Gv4GNvwvkhlsQ9I000L/+iplDf2UwcTYZM7HHtg==", + "version": "7.19.22", + "resolved": "https://registry.npmjs.org/@microsoft/api-documenter/-/api-documenter-7.19.22.tgz", + "integrity": "sha512-Gz9l7tspR0Brnv4I1PcDMLZTZ9H4n8g1iHDwRNMWuOehvp3Wkn2ydBxmVB4ugsTfOPm04DK3cMm5RCVNejDYuw==", "dev": true, "requires": { - "@microsoft/api-extractor-model": "7.24.2", + "@microsoft/api-extractor-model": "7.25.1", "@microsoft/tsdoc": "0.14.1", - "@rushstack/node-core-library": "3.52.0", - "@rushstack/ts-command-line": "4.12.3", + "@rushstack/node-core-library": "3.53.2", + "@rushstack/ts-command-line": "4.13.0", "colors": "~1.2.1", "js-yaml": "~3.13.1", "resolve": "~1.17.0" @@ -4874,14 +4865,14 @@ } }, "@microsoft/api-extractor-model": { - "version": "7.24.2", - "resolved": "https://registry.npmjs.org/@microsoft/api-extractor-model/-/api-extractor-model-7.24.2.tgz", - "integrity": "sha512-uUvjqTCY7hYERWGks+joTioN1QYHIucCDy7I/JqLxFxLbFXE5dpc1X7L+FG4PN/s8QYL24DKt0fqJkgcrFKLTw==", + "version": "7.25.1", + "resolved": "https://registry.npmjs.org/@microsoft/api-extractor-model/-/api-extractor-model-7.25.1.tgz", + "integrity": "sha512-AaZ0ohCGLRjWiZviM+0p/DaxgMhbawS183LW2+CSqyEBh6wZks7NjoyhzhibAYapS4omnrmv96+0V/2wBvnIZQ==", "dev": true, "requires": { "@microsoft/tsdoc": "0.14.1", "@microsoft/tsdoc-config": "~0.16.1", - "@rushstack/node-core-library": "3.52.0" + "@rushstack/node-core-library": "3.53.2" } }, "@microsoft/tsdoc": { @@ -4947,9 +4938,9 @@ } }, "@rushstack/node-core-library": { - "version": "3.52.0", - "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-3.52.0.tgz", - "integrity": "sha512-Z+MAP//G3rEGZd3JxJcBGcPYJlh8pvPoLMTLa5Sy6FTE6hRPzN+5J8DT7BbTmlqZaL6SZpXF30heRUbnYOvujw==", + "version": "3.53.2", + "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-3.53.2.tgz", + "integrity": "sha512-FggLe5DQs0X9MNFeJN3/EXwb+8hyZUTEp2i+V1e8r4Va4JgkjBNY0BuEaQI+3DW6S4apV3UtXU3im17MSY00DA==", "dev": true, "requires": { "@types/node": "12.20.24", @@ -4963,9 +4954,9 @@ } }, "@rushstack/ts-command-line": { - "version": "4.12.3", - "resolved": "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-4.12.3.tgz", - "integrity": "sha512-Pdij22RotMXzI+HWHyYCvw0RMZhiP5a6Za/96XamZ1+mxmpSm4ujf8TROKxGAHySmR5A8iNVSlzhNMnUlFQE6g==", + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-4.13.0.tgz", + "integrity": "sha512-crLT31kl+qilz0eBRjqqYO06CqwbElc0EvzS6jI69B9Ikt1SkkSzIZ2iDP7zt/rd1ZYipKIS9hf9CQR9swDIKg==", "dev": true, "requires": { "@types/argparse": "1.0.38", @@ -5042,15 +5033,21 @@ "integrity": "sha512-yxDeaQIAJlMav7fH5AQqPH1u8YIuhYJXYBzxaQ4PifsU0GDO38MSdmEDeRlIxrKbC6NbEaaEHDanWb+y30U8SQ==", "dev": true }, + "@types/semver": { + "version": "7.3.12", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.12.tgz", + "integrity": "sha512-WwA1MW0++RfXmCr12xeYOOC5baSC9mSb0ZqCquFzKhcoF4TvHu5MKOuXsncgZcpVFhB1pXd5hZmM0ryAoCp12A==", + "dev": true + }, "@typescript-eslint/eslint-plugin": { - "version": "5.38.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.38.1.tgz", - "integrity": "sha512-ky7EFzPhqz3XlhS7vPOoMDaQnQMn+9o5ICR9CPr/6bw8HrFkzhMSxuA3gRfiJVvs7geYrSeawGJjZoZQKCOglQ==", + "version": "5.40.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.40.1.tgz", + "integrity": "sha512-FsWboKkWdytGiXT5O1/R9j37YgcjO8MKHSUmWnIEjVaz0krHkplPnYi7mwdb+5+cs0toFNQb0HIrN7zONdIEWg==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.38.1", - "@typescript-eslint/type-utils": "5.38.1", - "@typescript-eslint/utils": "5.38.1", + "@typescript-eslint/scope-manager": "5.40.1", + "@typescript-eslint/type-utils": "5.40.1", + "@typescript-eslint/utils": "5.40.1", "debug": "^4.3.4", "ignore": "^5.2.0", "regexpp": "^3.2.0", @@ -5059,53 +5056,53 @@ } }, "@typescript-eslint/parser": { - "version": "5.38.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.38.1.tgz", - "integrity": "sha512-LDqxZBVFFQnQRz9rUZJhLmox+Ep5kdUmLatLQnCRR6523YV+XhRjfYzStQ4MheFA8kMAfUlclHSbu+RKdRwQKw==", + "version": "5.40.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.40.1.tgz", + "integrity": "sha512-IK6x55va5w4YvXd4b3VrXQPldV9vQTxi5ov+g4pMANsXPTXOcfjx08CRR1Dfrcc51syPtXHF5bgLlMHYFrvQtg==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.38.1", - "@typescript-eslint/types": "5.38.1", - "@typescript-eslint/typescript-estree": "5.38.1", + "@typescript-eslint/scope-manager": "5.40.1", + "@typescript-eslint/types": "5.40.1", + "@typescript-eslint/typescript-estree": "5.40.1", "debug": "^4.3.4" } }, "@typescript-eslint/scope-manager": { - "version": "5.38.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.38.1.tgz", - "integrity": "sha512-BfRDq5RidVU3RbqApKmS7RFMtkyWMM50qWnDAkKgQiezRtLKsoyRKIvz1Ok5ilRWeD9IuHvaidaLxvGx/2eqTQ==", + "version": "5.40.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.40.1.tgz", + "integrity": "sha512-jkn4xsJiUQucI16OLCXrLRXDZ3afKhOIqXs4R3O+M00hdQLKR58WuyXPZZjhKLFCEP2g+TXdBRtLQ33UfAdRUg==", "dev": true, "requires": { - "@typescript-eslint/types": "5.38.1", - "@typescript-eslint/visitor-keys": "5.38.1" + "@typescript-eslint/types": "5.40.1", + "@typescript-eslint/visitor-keys": "5.40.1" } }, "@typescript-eslint/type-utils": { - "version": "5.38.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.38.1.tgz", - "integrity": "sha512-UU3j43TM66gYtzo15ivK2ZFoDFKKP0k03MItzLdq0zV92CeGCXRfXlfQX5ILdd4/DSpHkSjIgLLLh1NtkOJOAw==", + "version": "5.40.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.40.1.tgz", + "integrity": "sha512-DLAs+AHQOe6n5LRraXiv27IYPhleF0ldEmx6yBqBgBLaNRKTkffhV1RPsjoJBhVup2zHxfaRtan8/YRBgYhU9Q==", "dev": true, "requires": { - "@typescript-eslint/typescript-estree": "5.38.1", - "@typescript-eslint/utils": "5.38.1", + "@typescript-eslint/typescript-estree": "5.40.1", + "@typescript-eslint/utils": "5.40.1", "debug": "^4.3.4", "tsutils": "^3.21.0" } }, "@typescript-eslint/types": { - "version": "5.38.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.38.1.tgz", - "integrity": "sha512-QTW1iHq1Tffp9lNfbfPm4WJabbvpyaehQ0SrvVK2yfV79SytD9XDVxqiPvdrv2LK7DGSFo91TB2FgWanbJAZXg==", + "version": "5.40.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.40.1.tgz", + "integrity": "sha512-Icg9kiuVJSwdzSQvtdGspOlWNjVDnF3qVIKXdJ103o36yRprdl3Ge5cABQx+csx960nuMF21v8qvO31v9t3OHw==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "5.38.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.38.1.tgz", - "integrity": "sha512-99b5e/Enoe8fKMLdSuwrfH/C0EIbpUWmeEKHmQlGZb8msY33qn1KlkFww0z26o5Omx7EVjzVDCWEfrfCDHfE7g==", + "version": "5.40.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.40.1.tgz", + "integrity": "sha512-5QTP/nW5+60jBcEPfXy/EZL01qrl9GZtbgDZtDPlfW5zj/zjNrdI2B5zMUHmOsfvOr2cWqwVdWjobCiHcedmQA==", "dev": true, "requires": { - "@typescript-eslint/types": "5.38.1", - "@typescript-eslint/visitor-keys": "5.38.1", + "@typescript-eslint/types": "5.40.1", + "@typescript-eslint/visitor-keys": "5.40.1", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -5114,26 +5111,28 @@ } }, "@typescript-eslint/utils": { - "version": "5.38.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.38.1.tgz", - "integrity": "sha512-oIuUiVxPBsndrN81oP8tXnFa/+EcZ03qLqPDfSZ5xIJVm7A9V0rlkQwwBOAGtrdN70ZKDlKv+l1BeT4eSFxwXA==", + "version": "5.40.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.40.1.tgz", + "integrity": "sha512-a2TAVScoX9fjryNrW6BZRnreDUszxqm9eQ9Esv8n5nXApMW0zeANUYlwh/DED04SC/ifuBvXgZpIK5xeJHQ3aw==", "dev": true, "requires": { "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.38.1", - "@typescript-eslint/types": "5.38.1", - "@typescript-eslint/typescript-estree": "5.38.1", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.40.1", + "@typescript-eslint/types": "5.40.1", + "@typescript-eslint/typescript-estree": "5.40.1", "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" + "eslint-utils": "^3.0.0", + "semver": "^7.3.7" } }, "@typescript-eslint/visitor-keys": { - "version": "5.38.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.38.1.tgz", - "integrity": "sha512-bSHr1rRxXt54+j2n4k54p4fj8AHJ49VDWtjpImOpzQj4qjAiOpPni+V1Tyajh19Api1i844F757cur8wH3YvOA==", + "version": "5.40.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.40.1.tgz", + "integrity": "sha512-A2DGmeZ+FMja0geX5rww+DpvILpwo1OsiQs0M+joPWJYsiEFBLsH0y1oFymPNul6Z5okSmHpP4ivkc2N0Cgfkw==", "dev": true, "requires": { - "@typescript-eslint/types": "5.38.1", + "@typescript-eslint/types": "5.40.1", "eslint-visitor-keys": "^3.3.0" } }, @@ -5870,14 +5869,13 @@ "dev": true }, "eslint": { - "version": "8.24.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.24.0.tgz", - "integrity": "sha512-dWFaPhGhTAiPcCgm3f6LI2MBWbogMnTJzFBbhXVRQDJPkr9pGZvVjlVfXd+vyDcWPA2Ic9L2AXPIQM0+vk/cSQ==", + "version": "8.25.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.25.0.tgz", + "integrity": "sha512-DVlJOZ4Pn50zcKW5bYH7GQK/9MsoQG2d5eDH0ebEkE8PbgzTTmtt/VTH9GGJ4BfeZCpBLqFfvsjX35UacUL83A==", "dev": true, "requires": { - "@eslint/eslintrc": "^1.3.2", + "@eslint/eslintrc": "^1.3.3", "@humanwhocodes/config-array": "^0.10.5", - "@humanwhocodes/gitignore-to-minimatch": "^1.0.2", "@humanwhocodes/module-importer": "^1.0.1", "ajv": "^6.10.0", "chalk": "^4.0.0", @@ -6482,9 +6480,9 @@ } }, "is-core-module": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz", - "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==", + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", "dev": true, "requires": { "has": "^1.0.3" @@ -7751,9 +7749,9 @@ } }, "typescript": { - "version": "4.8.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.3.tgz", - "integrity": "sha512-goMHfm00nWPa8UvR/CPSvykqf6dVV8x/dp0c5mFTMTIu0u0FlGWRioyy7Nn0PGAdHxpJZnuO/ut+PpQ8UiHAig==", + "version": "4.8.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.4.tgz", + "integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==", "dev": true }, "ua-parser-js": { diff --git a/package.json b/package.json index 6af0145fe..df63d850c 100644 --- a/package.json +++ b/package.json @@ -33,13 +33,13 @@ "typescript" ], "devDependencies": { - "@microsoft/api-documenter": "^7.19.14", + "@microsoft/api-documenter": "^7.19.22", "@microsoft/api-extractor": "7.7.11", "@types/jasmine": "^4.3.0", - "@typescript-eslint/eslint-plugin": "^5.38.1", - "@typescript-eslint/parser": "^5.38.1", + "@typescript-eslint/eslint-plugin": "^5.40.1", + "@typescript-eslint/parser": "^5.40.1", "circular-dependency-plugin": "^5.2.2", - "eslint": "^8.24.0", + "eslint": "^8.25.0", "eslint-config-prettier": "^8.5.0", "eslint-plugin-prettier": "^4.2.1", "eslint-plugin-tree-shaking": "^1.10.0", @@ -57,7 +57,7 @@ "prettier": "^2.7.1", "ts-loader": "^9.4.1", "ts-pegjs": "^1.2.2", - "typescript": "^4.8.3", + "typescript": "^4.8.4", "webpack": "^5.74.0", "webpack-cli": "^4.10.0" }, From 62f3d4c78d7b71b4dbf7840fc1ef2525dac1d362 Mon Sep 17 00:00:00 2001 From: John Riordan Date: Thu, 20 Oct 2022 22:22:07 -0400 Subject: [PATCH 57/73] Fix some comments --- .../session-description-handler.ts | 16 ++++++++-------- .../web-audio-session-description-handler.ts | 12 +++++++----- 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/src/platform/web/session-description-handler/session-description-handler.ts b/src/platform/web/session-description-handler/session-description-handler.ts index 55ee7a63f..5b061bddb 100644 --- a/src/platform/web/session-description-handler/session-description-handler.ts +++ b/src/platform/web/session-description-handler/session-description-handler.ts @@ -116,19 +116,19 @@ export class SessionDescriptionHandler implements SessionDescriptionHandlerDefin * with the RTCPeerConnection. For example... * * Do NOT do this... - * + * ```ts * peerConnection.onicecandidate = (event) => { * // do something * }; - * + * ``` * Instead, do this... - * + * ```ts * peerConnection.peerConnectionDelegate = { * onicecandidate: (event) => { * // do something * } * }; - * + * ``` * While access to the underlying `RTCPeerConnection` is provided, note that * using methods which modify it may break the operation of this class. * In particular, this class depends on exclusive access to the @@ -149,19 +149,19 @@ export class SessionDescriptionHandler implements SessionDescriptionHandlerDefin * with the RTCPeerConnection. For example... * * Do NOT do this... - * + * ```ts * peerConnection.onicecandidate = (event) => { * // do something * }; - * + * ``` * Instead, do this... - * + * ``` * peerConnection.peerConnectionDelegate = { * onicecandidate: (event) => { * // do something * } * }; - * + * ``` * Setting the peer connection event handlers directly is not supported * and may break this class. As this class depends on exclusive access * to them. This delegate is intended to provide access to the diff --git a/src/platform/web/session-description-handler/web-audio-session-description-handler.ts b/src/platform/web/session-description-handler/web-audio-session-description-handler.ts index 6c3677661..398227bd1 100644 --- a/src/platform/web/session-description-handler/web-audio-session-description-handler.ts +++ b/src/platform/web/session-description-handler/web-audio-session-description-handler.ts @@ -7,6 +7,8 @@ import { SessionDescriptionHandlerConfiguration } from "./session-description-ha /** * Start a conference. * @param conferenceSessions - The sessions to conference. + * + * @beta */ export function startLocalConference(conferenceSessions: Array): void { if (conferenceSessions.length < 2) { @@ -29,11 +31,11 @@ export function startLocalConference(conferenceSessions: Array): void { /** * A WebAudioSessionDescriptionHandler uses the Web Audio API to enable local conferencing of audio streams. - * + * @remarks * This handler only works for one track of audio per peer connection. While the session description handler * being extended supports both audio and video, attempting to utilize video with this handler is not defined. * - * @internal + * @beta */ export class WebAudioSessionDescriptionHandler extends SessionDescriptionHandler { static audioContext: AudioContext | undefined; @@ -79,7 +81,7 @@ export class WebAudioSessionDescriptionHandler extends SessionDescriptionHandler * aditional audio sorces into the local media stream (ie for 3-way conferencing). * @param stream - The MediaStream to proxy. */ - initLocalMediaStream(stream: MediaStream): MediaStream { + public initLocalMediaStream(stream: MediaStream): MediaStream { if (!WebAudioSessionDescriptionHandler.audioContext) { throw new Error("SessionManagerSessionDescriptionHandler.audioContext undefined."); } @@ -95,7 +97,7 @@ export class WebAudioSessionDescriptionHandler extends SessionDescriptionHandler * Join (conference) media streams with another party. * @param peer - The session description handler of the peer to join with. */ - joinWith(peer: WebAudioSessionDescriptionHandler): void { + public joinWith(peer: WebAudioSessionDescriptionHandler): void { if (!WebAudioSessionDescriptionHandler.audioContext) { throw new Error("SessionManagerSessionDescriptionHandler.audioContext undefined."); } @@ -127,7 +129,7 @@ export class WebAudioSessionDescriptionHandler extends SessionDescriptionHandler * Only the first audio and video tracks of the provided MediaStream are utilized. * Adds tracks if audio and/or video tracks are not already present, otherwise replaces tracks. */ - setRealLocalMediaStream(stream: MediaStream): void { + public setRealLocalMediaStream(stream: MediaStream): void { if (!WebAudioSessionDescriptionHandler.audioContext) { throw new Error("SessionManagerSessionDescriptionHandler.audioContext undefined."); } From c9e19462e94223261bf4481e2186fc472b4e4a23 Mon Sep 17 00:00:00 2001 From: John Riordan Date: Thu, 20 Oct 2022 22:54:19 -0400 Subject: [PATCH 58/73] Export grammer from core - reverts a change made in 930462fb --- src/core/index.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/core/index.ts b/src/core/index.ts index 9d3d926ea..c72ad08e9 100644 --- a/src/core/index.ts +++ b/src/core/index.ts @@ -17,3 +17,10 @@ export * from "./user-agents/index.js"; // Files export * from "./timers.js"; export * from "./transport.js"; + +// Grammar +// TODO: +// - This is documented as part of the core, but it is also exported by root index.js. +// - Arguably move grammar to core proper and deprecate the export from the root. +// - Arguably URI should be a top level export. +export * from "../grammar/index.js"; From 2af0372fa905233b66d64bc40ee3399096ae5f86 Mon Sep 17 00:00:00 2001 From: John Riordan Date: Thu, 20 Oct 2022 23:00:56 -0400 Subject: [PATCH 59/73] SimpleUser isHeld/isMuted returns boolean - reverts a change made in 87c8d50d --- .../web/session-manager/session-manager.ts | 14 +++++++------- src/platform/web/simple-user/simple-user.ts | 10 +++++----- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/platform/web/session-manager/session-manager.ts b/src/platform/web/session-manager/session-manager.ts index 7307a89c6..e4b445354 100644 --- a/src/platform/web/session-manager/session-manager.ts +++ b/src/platform/web/session-manager/session-manager.ts @@ -648,11 +648,11 @@ export class SessionManager { * Hold state. * @param session - Session to check. * @remarks - * True if session media is on hold. - * Undefined is session doesn't exist. + * True if session is on hold. */ - public isHeld(session: Session): boolean | undefined { - return this.sessionManaged(session)?.held; + public isHeld(session: Session): boolean { + const managedSession = this.sessionManaged(session); + return managedSession ? managedSession.held : false; } /** @@ -682,10 +682,10 @@ export class SessionManager { * @param session - Session to check. * @remarks * True if sender's media track is disabled. - * Undefined is session doesn't exist. */ - public isMuted(session: Session): boolean | undefined { - return this.sessionManaged(session)?.muted; + public isMuted(session: Session): boolean { + const managedSession = this.sessionManaged(session); + return managedSession ? managedSession.muted : false; } /** diff --git a/src/platform/web/simple-user/simple-user.ts b/src/platform/web/simple-user/simple-user.ts index 1264b6eec..3eef86a4b 100644 --- a/src/platform/web/simple-user/simple-user.ts +++ b/src/platform/web/simple-user/simple-user.ts @@ -283,10 +283,10 @@ export class SimpleUser { /** * Hold state. * @remarks - * True if session media is on hold. + * True if session is on hold. */ - public isHeld(): boolean | undefined { - return this.session && this.sessionManager.isHeld(this.session); + public isHeld(): boolean { + return this.session ? this.sessionManager.isHeld(this.session) : false; } /** @@ -314,8 +314,8 @@ export class SimpleUser { * @remarks * True if sender's media track is disabled. */ - public isMuted(): boolean | undefined { - return this.session && this.sessionManager.isMuted(this.session); + public isMuted(): boolean { + return this.session ? this.sessionManager.isMuted(this.session) : false; } /** From d7fe2170c2ca5e2d619c36b32c2361f8bc1f1b2b Mon Sep 17 00:00:00 2001 From: John Riordan Date: Fri, 21 Oct 2022 01:16:01 -0400 Subject: [PATCH 60/73] Update UserFake for test support --- test/support/api/user-fake.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/test/support/api/user-fake.ts b/test/support/api/user-fake.ts index 41b10214b..67249a0f3 100644 --- a/test/support/api/user-fake.ts +++ b/test/support/api/user-fake.ts @@ -28,8 +28,6 @@ export async function makeUserFake( const uri = new URI("sip", userHack, domain); const userAgentOptions: UserAgentOptions = { ...{ - autoStart: false, - autoStop: false, uri, displayName, noAnswerTimeout: 90, // seconds From 961a4879194c3061891b2f9de4d9d978e6d306ed Mon Sep 17 00:00:00 2001 From: John Riordan Date: Fri, 21 Oct 2022 10:09:46 -0400 Subject: [PATCH 61/73] Update documentation - generate new docs - add migration guide for upcoming 0.21 release - update static docs as needed to reflect SessionManager --- RELEASE.md | 5 +- docs/MIGRATION.md | 4 ++ docs/README.md | 13 +++- docs/api/sip.js.cancel.md | 24 +++++++ docs/api/sip.js.cancel.request.md | 13 ++++ docs/api/sip.js.md | 1 + .../sip.js.registereroptions.instanceid.md | 5 ++ docs/api/sip.js.sessiondelegate.md | 1 + docs/api/sip.js.sessiondelegate.onack.md | 4 ++ docs/api/sip.js.sessiondelegate.oncancel.md | 28 ++++++++ docs/api/sip.js.subscriber.md | 2 + docs/api/sip.js.useragent.instanceid.md | 13 ++++ docs/api/sip.js.useragent.makeuri.md | 4 ++ docs/api/sip.js.useragent.md | 1 + docs/api/sip.js.useragent.start.md | 2 +- docs/api/sip.js.useragent.stop.md | 2 + docs/api/sip.js.useragentoptions.autostart.md | 21 ------ docs/api/sip.js.useragentoptions.autostop.md | 13 ---- ...ip.js.useragentoptions.gracefulshutdown.md | 13 ++++ .../api/sip.js.useragentoptions.instanceid.md | 13 ++++ ....useragentoptions.instanceidalwaysadded.md | 13 ++++ docs/api/sip.js.useragentoptions.md | 5 +- docs/compatibility.md | 10 +-- docs/core/sip.js.contact.md | 2 +- docs/core/sip.js.contact.tostring.md | 1 + docs/migration-0.20-0.21.md | 67 +++++++++++++++++++ docs/session-description-handler/sip.js.md | 2 + .../sip.js.mediastreamfactory.md | 4 +- ...descriptionhandler.enablereceivertracks.md | 24 +++++++ ...ondescriptionhandler.enablesendertracks.md | 24 +++++++ ...descriptionhandler.icegatheringcomplete.md | 6 +- .../sip.js.sessiondescriptionhandler.md | 2 + ...essiondescriptionhandler.peerconnection.md | 20 +++++- ...scriptionhandler.peerconnectiondelegate.md | 20 +++++- .../sip.js.startlocalconference.md | 27 ++++++++ ...sessiondescriptionhandler._constructor_.md | 25 +++++++ ...osessiondescriptionhandler.audiocontext.md | 14 ++++ ...ondescriptionhandler.enablesendertracks.md | 27 ++++++++ ...descriptionhandler.initlocalmediastream.md | 27 ++++++++ ...audiosessiondescriptionhandler.joinwith.md | 27 ++++++++ ...ip.js.webaudiosessiondescriptionhandler.md | 43 ++++++++++++ ...criptionhandler.setreallocalmediastream.md | 31 +++++++++ docs/session-manager.md | 26 +++++++ .../sip.js.sessionmanager.isheld.md | 6 +- .../sip.js.sessionmanager.ismuted.md | 6 +- docs/simple-user.md | 4 +- docs/simple-user/sip.js.simpleuser.decline.md | 2 +- docs/simple-user/sip.js.simpleuser.hangup.md | 2 +- docs/simple-user/sip.js.simpleuser.isheld.md | 2 +- docs/simple-user/sip.js.simpleuser.md | 2 +- .../simple-user/sip.js.simpleuser.register.md | 3 +- docs/simple-user/sip.js.simpleuseroptions.md | 1 + ....js.simpleuseroptions.registereroptions.md | 13 ++++ etc/api/sip.js.api.md | 16 ++++- etc/core/sip.js.api.md | 1 + etc/session-description-handler/sip.js.api.md | 20 +++++- etc/session-manager/sip.js.api.md | 4 +- etc/simple-user/sip.js.api.md | 7 +- 58 files changed, 641 insertions(+), 77 deletions(-) create mode 100644 docs/api/sip.js.cancel.md create mode 100644 docs/api/sip.js.cancel.request.md create mode 100644 docs/api/sip.js.sessiondelegate.oncancel.md create mode 100644 docs/api/sip.js.useragent.instanceid.md delete mode 100644 docs/api/sip.js.useragentoptions.autostart.md delete mode 100644 docs/api/sip.js.useragentoptions.autostop.md create mode 100644 docs/api/sip.js.useragentoptions.gracefulshutdown.md create mode 100644 docs/api/sip.js.useragentoptions.instanceid.md create mode 100644 docs/api/sip.js.useragentoptions.instanceidalwaysadded.md create mode 100644 docs/migration-0.20-0.21.md create mode 100644 docs/session-description-handler/sip.js.sessiondescriptionhandler.enablereceivertracks.md create mode 100644 docs/session-description-handler/sip.js.sessiondescriptionhandler.enablesendertracks.md create mode 100644 docs/session-description-handler/sip.js.startlocalconference.md create mode 100644 docs/session-description-handler/sip.js.webaudiosessiondescriptionhandler._constructor_.md create mode 100644 docs/session-description-handler/sip.js.webaudiosessiondescriptionhandler.audiocontext.md create mode 100644 docs/session-description-handler/sip.js.webaudiosessiondescriptionhandler.enablesendertracks.md create mode 100644 docs/session-description-handler/sip.js.webaudiosessiondescriptionhandler.initlocalmediastream.md create mode 100644 docs/session-description-handler/sip.js.webaudiosessiondescriptionhandler.joinwith.md create mode 100644 docs/session-description-handler/sip.js.webaudiosessiondescriptionhandler.md create mode 100644 docs/session-description-handler/sip.js.webaudiosessiondescriptionhandler.setreallocalmediastream.md create mode 100644 docs/session-manager.md create mode 100644 docs/simple-user/sip.js.simpleuseroptions.registereroptions.md diff --git a/RELEASE.md b/RELEASE.md index cde59a70b..3a9b3cdd0 100644 --- a/RELEASE.md +++ b/RELEASE.md @@ -28,7 +28,7 @@ All the demos must work. ## Documentation -Make sure the documentation is up to date and review any changes to the API. Commit any new documentation and consider the version number bump based on the changes to the API. +Make sure the documentation is up to date and review any changes to the API. Commit any new documentation and consider the version number bump based on the changes to the API. If you commit any changes, go back to the Clean, Build and Test step. * `npm run build-docs` @@ -53,8 +53,7 @@ This approach will leverage the `npm pack` command to package up and zip your np 1. From within your npm package directory, run `npm pack` in your terminal. Note the .tgz file it produces and the location of it. 2. Change directories to the project directory where you want to use the npm package. Example: `cd /path/to/project` 3. From within the client project directory, run `npm install /path/to/package.tgz` but replace it with the proper path to the location of the .tgz file from step 1. -4. Then you can start using the package in that client project to test things out -This will give you the closest to production experience for using your npm package. +4. Then you can start using the package in that client project to test things out. This will give you the closest to production experience for using your npm package. 5. Delete the .tgz file created in step 1. ## Tag, Push and Publish diff --git a/docs/MIGRATION.md b/docs/MIGRATION.md index 0d9dbfd03..abcc60c4c 100644 --- a/docs/MIGRATION.md +++ b/docs/MIGRATION.md @@ -2,6 +2,10 @@ * From [Simple to SimpleUser](./migration-simple.md) is relatively simple. +* From [0.20 to 0.21](./migration-0.20-0.21.md) + * 0.21 has two minor breaking changes with 0.20 + * ECMAScript module support and SessionManager introduction + * From 0.19 to 0.20 * 0.20 is backwards compatible with 0.19 diff --git a/docs/README.md b/docs/README.md index ae21fd55d..a877f83d3 100644 --- a/docs/README.md +++ b/docs/README.md @@ -18,12 +18,15 @@ Bundle? Download UMD [here](https://sipjs.com/download). ## What is here? -Herein lies software enabling Session Initiation Protocol (SIP) internet endpoints (called user agents) to carry various forms of real-time multimedia session data such as voice, video, or text messages. Said software is organized into three (3) divisions - each of which provides a different integration point for development... +Herein lies software enabling Session Initiation Protocol (SIP) internet endpoints (called user agents) to carry various forms of real-time multimedia session data such as voice, video, or text messages. Said software is organized into four (4) divisions - each of which provides a different integration point for development... * SimpleUser class * [Demo](../demo/README.md) * [Overview](./simple-user.md) * [Reference](./simple-user/sip.js.md) +* SessionManager class + * [Overview](./session-manager.md) + * [Reference](./session-manager/sip.js.md) * API framework * [Overview](./api.md) * [Reference](./api/sip.js.md) @@ -42,11 +45,15 @@ Additional supporting implementations of classes for use with web browser enviro ### SimpleUser class -The [SimpleUser](./simple-user.md) class provides a representation of a simple internet endpoint (a simple user agent). It requires an understanding of what a phone call is, but minimal knowledge of SIP. There are working [Demonstrations](../demo/README.md) provided to help get started. It is the recommended interface for many applications. It has its limitations. The [SimpleUser](./simple-user.md) class is implemented utilizing the [API](./api.md) framework and as such provides a working example of how one might utilize the [API](./api.md) framework. +The [SimpleUser](./simple-user.md) class provides a representation of a simple internet endpoint (a simple user agent). It requires an understanding of what a phone call is, but minimal knowledge of SIP. There are working [Demonstrations](../demo/README.md) provided to help get started. It is the recommended interface for many applications. It has its limitations. The [SimpleUser](./simple-user.md) class is implemented utilizing the [SessionManager](./session-manager.md) class and as such provides a working example of how one might utilize the [SessionManager](./session-manager.md) class. + +### SessionManager class + +The [SessionManager](./session-manager.md) class provides a representation of a simple internet endpoint which can handle multiple concurrent calls (a user agent). It requires an understanding of what a phone call is, but minimal knowledge of SIP. It is the recommended interface for many applications which require managing multiple concurrent calls. It has its limitations. The [SessionManager](./session-manager.md) class is implemented utilizing the [API](./api.md) framework and as such provides a working example of how one might utilize the [API](./api.md) framework. ### API framework -The [API](./api.md) framework is intended to provide a complete and suitable framework on which to build most end user applications - business phones, video conferencing endpoints, smart doorbells. A working knowledge of the SIP protocol is a prerequisite for using it. The framework provides infrastructure to connect with a SIP server as well as establish and maintain SIP registrations, sessions and subscriptions. There are no user interface components in it. The source code of the [SimpleUser](./simple-user.md) class is well documented and provides a good example of how to get started using the [API](./api.md) framework. The framework is implemented on top of the [Core](./core.md) library and as such provides a working example of how one might utilize the [Core](./core.md) library. +The [API](./api.md) framework is intended to provide a complete and suitable framework on which to build most end user applications - business phones, video conferencing endpoints, smart doorbells. A working knowledge of the SIP protocol is a prerequisite for using it. The framework provides infrastructure to connect with a SIP server as well as establish and maintain SIP registrations, sessions and subscriptions. There are no user interface components in it. The source code of the [SessionManager](./session-manager.md) class is well documented and provides a good example of how to get started using the [API](./api.md) framework. The framework is implemented on top of the [Core](./core.md) library and as such provides a working example of how one might utilize the [Core](./core.md) library. ### Core library diff --git a/docs/api/sip.js.cancel.md b/docs/api/sip.js.cancel.md new file mode 100644 index 000000000..9b8bde9a6 --- /dev/null +++ b/docs/api/sip.js.cancel.md @@ -0,0 +1,24 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [Cancel](./sip.js.cancel.md) + +## Cancel class + +A request to reject an [Invitation](./sip.js.invitation.md) (incoming CANCEL). + +Signature: + +```typescript +export declare class Cancel +``` + +## Remarks + +The constructor for this class is marked as internal. Third-party code should not call the constructor directly or create subclasses that extend the `Cancel` class. + +## Properties + +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [request](./sip.js.cancel.request.md) | | IncomingRequestMessage | Incoming CANCEL request message. | + diff --git a/docs/api/sip.js.cancel.request.md b/docs/api/sip.js.cancel.request.md new file mode 100644 index 000000000..aee696113 --- /dev/null +++ b/docs/api/sip.js.cancel.request.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [Cancel](./sip.js.cancel.md) > [request](./sip.js.cancel.request.md) + +## Cancel.request property + +Incoming CANCEL request message. + +Signature: + +```typescript +get request(): IncomingRequestMessage; +``` diff --git a/docs/api/sip.js.md b/docs/api/sip.js.md index 15bcdfd24..5561c3ac7 100644 --- a/docs/api/sip.js.md +++ b/docs/api/sip.js.md @@ -12,6 +12,7 @@ A simple yet powerful API which takes care of SIP signaling and WebRTC media ses | --- | --- | | [Ack](./sip.js.ack.md) | A request to confirm a [Session](./sip.js.session.md) (incoming ACK). | | [Bye](./sip.js.bye.md) | A request to end a [Session](./sip.js.session.md) (incoming BYE). | +| [Cancel](./sip.js.cancel.md) | A request to reject an [Invitation](./sip.js.invitation.md) (incoming CANCEL). | | [ContentTypeUnsupportedError](./sip.js.contenttypeunsupportederror.md) | An exception indicating an unsupported content type prevented execution. | | [Info](./sip.js.info.md) | An exchange of information (incoming INFO). | | [Invitation](./sip.js.invitation.md) | An invitation is an offer to establish a [Session](./sip.js.session.md) (incoming INVITE). | diff --git a/docs/api/sip.js.registereroptions.instanceid.md b/docs/api/sip.js.registereroptions.instanceid.md index 9f41f6af5..0f07a3b0d 100644 --- a/docs/api/sip.js.registereroptions.instanceid.md +++ b/docs/api/sip.js.registereroptions.instanceid.md @@ -4,6 +4,11 @@ ## RegistererOptions.instanceId property +> Warning: This API is now obsolete. +> +> Use UserAgentOptions.instanceId +> + UUID to provide with "+sip.instance" Contact parameter. Signature: diff --git a/docs/api/sip.js.sessiondelegate.md b/docs/api/sip.js.sessiondelegate.md index f8f5eef8e..712a95302 100644 --- a/docs/api/sip.js.sessiondelegate.md +++ b/docs/api/sip.js.sessiondelegate.md @@ -18,6 +18,7 @@ export interface SessionDelegate | --- | --- | | [onAck(ack)](./sip.js.sessiondelegate.onack.md) | Called upon receiving an incoming in dialog ACK request. | | [onBye(bye)](./sip.js.sessiondelegate.onbye.md) | Called upon receiving an incoming in dialog BYE request. | +| [onCancel(cancel)](./sip.js.sessiondelegate.oncancel.md) | Called upon receiving an incoming CANCEL request. | | [onInfo(info)](./sip.js.sessiondelegate.oninfo.md) | Called upon receiving an incoming in dialog INFO request. | | [onInvite(request, response, statusCode)](./sip.js.sessiondelegate.oninvite.md) | Called upon receiving an incoming in dialog INVITE request. | | [onMessage(message)](./sip.js.sessiondelegate.onmessage.md) | Called upon receiving an incoming in dialog MESSAGE request. | diff --git a/docs/api/sip.js.sessiondelegate.onack.md b/docs/api/sip.js.sessiondelegate.onack.md index 4de32d3f5..c3e92dec2 100644 --- a/docs/api/sip.js.sessiondelegate.onack.md +++ b/docs/api/sip.js.sessiondelegate.onack.md @@ -22,3 +22,7 @@ onAck?(ack: Ack): void; void +## Remarks + +Includes the ACK confirming an accepted initial Invite as well as ACKs associated with in dialog INVITE requests. + diff --git a/docs/api/sip.js.sessiondelegate.oncancel.md b/docs/api/sip.js.sessiondelegate.oncancel.md new file mode 100644 index 000000000..6214f748d --- /dev/null +++ b/docs/api/sip.js.sessiondelegate.oncancel.md @@ -0,0 +1,28 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [SessionDelegate](./sip.js.sessiondelegate.md) > [onCancel](./sip.js.sessiondelegate.oncancel.md) + +## SessionDelegate.onCancel() method + +Called upon receiving an incoming CANCEL request. + +Signature: + +```typescript +onCancel?(cancel: Cancel): void; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| cancel | [Cancel](./sip.js.cancel.md) | The cancel. | + +Returns: + +void + +## Remarks + +Relevant to an Invitation only. CANCEL reqeusts are being handled as a special case and there is currently no way to externally impact the response to the a CANCEL request. See core implementation for details. + diff --git a/docs/api/sip.js.subscriber.md b/docs/api/sip.js.subscriber.md index 7e1cb3ecd..d74d98fe6 100644 --- a/docs/api/sip.js.subscriber.md +++ b/docs/api/sip.js.subscriber.md @@ -29,6 +29,8 @@ const subscriber = new Subscriber(userAgent, targetURI, eventType); // Add delegate to handle event notifications. subscriber.delegate = { onNotify: (notification: Notification) => { + // send a response + notification.accept(); // handle notification here } }; diff --git a/docs/api/sip.js.useragent.instanceid.md b/docs/api/sip.js.useragent.instanceid.md new file mode 100644 index 000000000..a676180d8 --- /dev/null +++ b/docs/api/sip.js.useragent.instanceid.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [UserAgent](./sip.js.useragent.md) > [instanceId](./sip.js.useragent.instanceid.md) + +## UserAgent.instanceId property + +User agent instance id. + +Signature: + +```typescript +get instanceId(): string; +``` diff --git a/docs/api/sip.js.useragent.makeuri.md b/docs/api/sip.js.useragent.makeuri.md index bc7e78fa6..a9ac2d8c4 100644 --- a/docs/api/sip.js.useragent.makeuri.md +++ b/docs/api/sip.js.useragent.makeuri.md @@ -22,6 +22,10 @@ static makeURI(uri: string): URI | undefined; URI \| undefined +## Remarks + +Returns undefined if the syntax of the URI is invalid. The syntax must conform to a SIP URI as defined in the RFC. 25 Augmented BNF for the SIP Protocol https://tools.ietf.org/html/rfc3261\#section-25 + ## Example diff --git a/docs/api/sip.js.useragent.md b/docs/api/sip.js.useragent.md index f95a29483..251d14a66 100644 --- a/docs/api/sip.js.useragent.md +++ b/docs/api/sip.js.useragent.md @@ -30,6 +30,7 @@ A user agent (UA) is associated with a user via the user's SIP address of record | [contact](./sip.js.useragent.contact.md) | | Contact | User agent contact. | | [data](./sip.js.useragent.data.md) | | unknown | Property reserved for use by instance owner. | | [delegate](./sip.js.useragent.delegate.md) | | [UserAgentDelegate](./sip.js.useragentdelegate.md) \| undefined | Delegate. | +| [instanceId](./sip.js.useragent.instanceid.md) | | string | User agent instance id. | | [state](./sip.js.useragent.state.md) | | [UserAgentState](./sip.js.useragentstate.md) | User agent state. | | [stateChange](./sip.js.useragent.statechange.md) | | [Emitter](./sip.js.emitter.md)<[UserAgentState](./sip.js.useragentstate.md)> | User agent state change emitter. | | [transport](./sip.js.useragent.transport.md) | | [Transport](./sip.js.transport.md) | User agent transport. | diff --git a/docs/api/sip.js.useragent.start.md b/docs/api/sip.js.useragent.start.md index ccf8b22c4..fa1be0750 100644 --- a/docs/api/sip.js.useragent.start.md +++ b/docs/api/sip.js.useragent.start.md @@ -17,7 +17,7 @@ Promise<void> ## Remarks -Resolves if transport connects, otherwise rejects. +Resolves if transport connects, otherwise rejects. Calling `start()` after calling `stop()` will fail if `stop()` has yet to resolve. ## Example diff --git a/docs/api/sip.js.useragent.stop.md b/docs/api/sip.js.useragent.stop.md index e4c56b6a0..dccbad02b 100644 --- a/docs/api/sip.js.useragent.stop.md +++ b/docs/api/sip.js.useragent.stop.md @@ -27,6 +27,8 @@ Resolves when the user agent has completed a graceful shutdown. 5) Transport disconnects. 6) User Agent Core resets. ``` +The user agent state transistions to stopped once these steps have been completed. Calling `start()` after calling `stop()` will fail if `stop()` has yet to resolve. + NOTE: While this is a "graceful shutdown", it can also be very slow one if you are waiting for the returned Promise to resolve. The disposal of the clients and dialogs is done serially - waiting on one to finish before moving on to the next. This can be slow if there are lot of subscriptions to unsubscribe for example. THE SLOW PACE IS INTENTIONAL! While one could spin them all down in parallel, this could slam the remote server. It is bad practice to denial of service attack (DoS attack) servers!!! Moreover, production servers will automatically blacklist clients which send too many requests in too short a period of time - dropping any additional requests. diff --git a/docs/api/sip.js.useragentoptions.autostart.md b/docs/api/sip.js.useragentoptions.autostart.md deleted file mode 100644 index 0c601a7bb..000000000 --- a/docs/api/sip.js.useragentoptions.autostart.md +++ /dev/null @@ -1,21 +0,0 @@ - - -[Home](./index.md) > [sip.js](./sip.js.md) > [UserAgentOptions](./sip.js.useragentoptions.md) > [autoStart](./sip.js.useragentoptions.autostart.md) - -## UserAgentOptions.autoStart property - -> Warning: This API is now obsolete. -> -> If `true`, the user agent calls the `start()` method in the constructor. -> - -Signature: - -```typescript -autoStart?: boolean; -``` - -## Remarks - -The call to start() resolves when the user agent connects, so if this option is set to `true` an alternative method of connection detection must be used. - diff --git a/docs/api/sip.js.useragentoptions.autostop.md b/docs/api/sip.js.useragentoptions.autostop.md deleted file mode 100644 index e598371a9..000000000 --- a/docs/api/sip.js.useragentoptions.autostop.md +++ /dev/null @@ -1,13 +0,0 @@ - - -[Home](./index.md) > [sip.js](./sip.js.md) > [UserAgentOptions](./sip.js.useragentoptions.md) > [autoStop](./sip.js.useragentoptions.autostop.md) - -## UserAgentOptions.autoStop property - -If `true`, the user agent calls the `stop()` method on unload (if running in browser window). - -Signature: - -```typescript -autoStop?: boolean; -``` diff --git a/docs/api/sip.js.useragentoptions.gracefulshutdown.md b/docs/api/sip.js.useragentoptions.gracefulshutdown.md new file mode 100644 index 000000000..97cea4717 --- /dev/null +++ b/docs/api/sip.js.useragentoptions.gracefulshutdown.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [UserAgentOptions](./sip.js.useragentoptions.md) > [gracefulShutdown](./sip.js.useragentoptions.gracefulshutdown.md) + +## UserAgentOptions.gracefulShutdown property + +If `true`, the `stop()` method will attempt to gracefully end all dialogs and registrations before disconnecting. Otherwise `stop()` will transition immediately abandoning all dialogs and registrations. + +Signature: + +```typescript +gracefulShutdown?: boolean; +``` diff --git a/docs/api/sip.js.useragentoptions.instanceid.md b/docs/api/sip.js.useragentoptions.instanceid.md new file mode 100644 index 000000000..4956caad3 --- /dev/null +++ b/docs/api/sip.js.useragentoptions.instanceid.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [UserAgentOptions](./sip.js.useragentoptions.md) > [instanceId](./sip.js.useragentoptions.instanceid.md) + +## UserAgentOptions.instanceId property + +UUID to provide with "+sip.instance" Contact header parameter. + +Signature: + +```typescript +instanceId?: string; +``` diff --git a/docs/api/sip.js.useragentoptions.instanceidalwaysadded.md b/docs/api/sip.js.useragentoptions.instanceidalwaysadded.md new file mode 100644 index 000000000..8c896d110 --- /dev/null +++ b/docs/api/sip.js.useragentoptions.instanceidalwaysadded.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [UserAgentOptions](./sip.js.useragentoptions.md) > [instanceIdAlwaysAdded](./sip.js.useragentoptions.instanceidalwaysadded.md) + +## UserAgentOptions.instanceIdAlwaysAdded property + +Add "+sip.instance" Contact header parameter to all requests. + +Signature: + +```typescript +instanceIdAlwaysAdded?: boolean; +``` diff --git a/docs/api/sip.js.useragentoptions.md b/docs/api/sip.js.useragentoptions.md index faa94fff7..0de05f4a4 100644 --- a/docs/api/sip.js.useragentoptions.md +++ b/docs/api/sip.js.useragentoptions.md @@ -20,16 +20,17 @@ export interface UserAgentOptions | [authorizationHa1](./sip.js.useragentoptions.authorizationha1.md) | | string | Authorization ha1. | | [authorizationPassword](./sip.js.useragentoptions.authorizationpassword.md) | | string | Authorization password. | | [authorizationUsername](./sip.js.useragentoptions.authorizationusername.md) | | string | Authorization username. | -| [autoStart](./sip.js.useragentoptions.autostart.md) | | boolean | | -| [autoStop](./sip.js.useragentoptions.autostop.md) | | boolean | If true, the user agent calls the stop() method on unload (if running in browser window). | | [contactName](./sip.js.useragentoptions.contactname.md) | | string | The user portion of user agent's contact URI. | | [contactParams](./sip.js.useragentoptions.contactparams.md) | | { \[name: string\]: string; } | The URI parameters of the user agent's contact URI. | | [delegate](./sip.js.useragentoptions.delegate.md) | | [UserAgentDelegate](./sip.js.useragentdelegate.md) | Delegate for [UserAgent](./sip.js.useragent.md). | | [displayName](./sip.js.useragentoptions.displayname.md) | | string | The display name associated with the user agent. | | [forceRport](./sip.js.useragentoptions.forcerport.md) | | boolean | Force adding rport to Via header. | +| [gracefulShutdown](./sip.js.useragentoptions.gracefulshutdown.md) | | boolean | If true, the stop() method will attempt to gracefully end all dialogs and registrations before disconnecting. Otherwise stop() will transition immediately abandoning all dialogs and registrations. | | [hackAllowUnregisteredOptionTags](./sip.js.useragentoptions.hackallowunregisteredoptiontags.md) | | boolean | Hack | | [hackIpInContact](./sip.js.useragentoptions.hackipincontact.md) | | boolean \| string | Hack | | [hackViaTcp](./sip.js.useragentoptions.hackviatcp.md) | | boolean | Hack | +| [instanceId](./sip.js.useragentoptions.instanceid.md) | | string | UUID to provide with "+sip.instance" Contact header parameter. | +| [instanceIdAlwaysAdded](./sip.js.useragentoptions.instanceidalwaysadded.md) | | boolean | Add "+sip.instance" Contact header parameter to all requests. | | [logBuiltinEnabled](./sip.js.useragentoptions.logbuiltinenabled.md) | | boolean | Indicates whether log messages should be written to the browser console. | | [logConfiguration](./sip.js.useragentoptions.logconfiguration.md) | | boolean | If true, constructor logs the user agent configuration. | | [logConnector](./sip.js.useragentoptions.logconnector.md) | | [LogConnector](./sip.js.logconnector.md) | A function which will be called every time a log is generated. | diff --git a/docs/compatibility.md b/docs/compatibility.md index 1e77810ea..0ed708a30 100644 --- a/docs/compatibility.md +++ b/docs/compatibility.md @@ -1,16 +1,16 @@ # Compatibility -SimpleUser, the API framework and core libraries are published... -- as standard ES2017 using standard modules (ES2015) +SimpleUser, SessionManager, the API framework and core libraries are published... +- as standard ES2017 using standard ECMAScript modules - with support for tree shaking and without side effects - but not bundled, not minified, not using .mjs file extensions ## Can you provide an ES5 UMD minified bundle? No. There are a number of build tools available which can transform what's published to whatever single format is needed - for example, Babel and Webpack. -## Is IE11 supported (it's an old web browser)? -No. If you need to make it work in IE, you might try changing the compile target to ES5 and using an ES2017 shim. However only WebRTC based media is currently supported and as IE11 does not support WebRTC you would need to provide a custom `SessionDescriptionHandler`. - ## If I download the source can I change the TypeScript build target? Yes. But note that TypeScript [does not auto-polyfill](https://github.com/microsoft/TypeScript/issues/3101). For example, if the compiled target output is ES5 (the `target` compiler setting) but the libraries require and utilize ES2017 features (as constrained by the `lib` compiler setting), an ES2017 polyfill would be needed to run in an environment which supports ES5 but not ES2017. + +## Is IE11 supported? +No. If you need to make it work in IE, you might try changing the compile target to ES5 and using an ES2017 shim. However only WebRTC based media is currently supported and as IE11 does not support WebRTC you would need to provide a custom `SessionDescriptionHandler`. diff --git a/docs/core/sip.js.contact.md b/docs/core/sip.js.contact.md index 598f38dbb..056448632 100644 --- a/docs/core/sip.js.contact.md +++ b/docs/core/sip.js.contact.md @@ -22,6 +22,6 @@ https://tools.ietf.org/html/rfc3261\#section-8.1.1.8 This is ported from UA.cont | --- | --- | --- | --- | | [pubGruu](./sip.js.contact.pubgruu.md) | | [URI](./sip.js.uri.md) \| undefined | | | [tempGruu](./sip.js.contact.tempgruu.md) | | [URI](./sip.js.uri.md) \| undefined | | -| [toString](./sip.js.contact.tostring.md) | | (options?: { anonymous?: boolean; outbound?: boolean; }) => string | | +| [toString](./sip.js.contact.tostring.md) | | (options?: { anonymous?: boolean; outbound?: boolean; register?: boolean; }) => string | | | [uri](./sip.js.contact.uri.md) | | [URI](./sip.js.uri.md) | | diff --git a/docs/core/sip.js.contact.tostring.md b/docs/core/sip.js.contact.tostring.md index d3047a586..952e7ed6f 100644 --- a/docs/core/sip.js.contact.tostring.md +++ b/docs/core/sip.js.contact.tostring.md @@ -10,5 +10,6 @@ toString: (options?: { anonymous?: boolean; outbound?: boolean; + register?: boolean; }) => string; ``` diff --git a/docs/migration-0.20-0.21.md b/docs/migration-0.20-0.21.md new file mode 100644 index 000000000..868dab7e5 --- /dev/null +++ b/docs/migration-0.20-0.21.md @@ -0,0 +1,67 @@ +# Migration from 0.20.x to 0.21.x + +## General + +First off, the entire project was updated for ECMAScript module (ESM) support. Overall this makes the library more compatible and standard usages of the built library are backwards compatible (for example, if installing it via npm has been working for you it will continue to work). However if you are using a custom build or development process then this change may impact those processes... + + - added .js extensions to all imports + - changed compiler options to NodeNext + - tweaked webpack configs (removed fullySpecified: false) + + +Secondly, the [SimpleUser](./simple-user.md) class has been ported from utilizing the API directly to using the [SessionManager](./session-manager.md) class (which is in turn is utilizing the API directly). The interface and usage of `SimpleUser` is completely identical (well, see below for the one breaking change), but if you were utilizing private methods, private properties, or otherwise depending on the internals of SimpleUser you may have issues. + +Other changes: + - new class `SessionManager` introduced (it's `SimpleUser` for multiple sessions) + - exposed `iceGatheringComplete` method to support strategies other than the built in timeout + - two minor breaking changes (see below) + - minor bug fixes + +## Two minor breaking changes + +### 1. SimpleUser + +The call signature for the `SimpleUser` `register` method has changed. It was... +``` +register(registererOptions?: RegistererOptions, registererRegisterOptions?: RegistererRegisterOptions): Promise; +``` +and is now... +``` +register(registererRegisterOptions?: RegistererRegisterOptions): Promise; +``` +Any `RegistererOptions` which were being passed as the first parameter to the `register` must now be provided to the constructor of `SimpleUser` along with any other options. For example... +``` +const simpleUser = new SimpleUser(myServer, { + registererOptions: { + expires: 1800 + } +}); +``` +This change was made to fix the obviously incorrect call signature so that we did not further extend support for the problematic interface into the newly introduced `SessionManager`. + +### 2. UserAgentOptions + +The `autoStart` and `autoStop` options have been removed. + +- `autoStart` was deprecated a long time ago and was removed to eliminate the side effect in the constructor. +- `autoStop` was removed to eliminate the `UserAgent` dependency a web browser. + +If you want the `autoStart` behavior going forward, you can implement it by calling `start` in your code immediately after construction as follows... + +``` +// Construct the UserAgent +userAgent = new UserAgent(/* options */); + +// Call start +userAgent.start(); +``` + +If you want the `autoStop` behavior going forward, you can implement it by adding a listener to your code as follows... + +``` +// Construct the UserAgent +userAgent = new UserAgent(/* options */); + +// Add a listener to "auto stop" on page unload +window.addEventListener("unload", () => userAgent.stop()); +``` diff --git a/docs/session-description-handler/sip.js.md b/docs/session-description-handler/sip.js.md index e2971213b..e0ffa7581 100644 --- a/docs/session-description-handler/sip.js.md +++ b/docs/session-description-handler/sip.js.md @@ -11,6 +11,7 @@ A SessionDescriptionHandler for web browsers. | Class | Description | | --- | --- | | [SessionDescriptionHandler](./sip.js.sessiondescriptionhandler.md) | A base class implementing a WebRTC session description handler for sip.js. | +| [WebAudioSessionDescriptionHandler](./sip.js.webaudiosessiondescriptionhandler.md) | (BETA) A WebAudioSessionDescriptionHandler uses the Web Audio API to enable local conferencing of audio streams. | ## Functions @@ -19,6 +20,7 @@ A SessionDescriptionHandler for web browsers. | [defaultMediaStreamFactory()](./sip.js.defaultmediastreamfactory.md) | Function which returns a MediaStreamFactory. | | [defaultPeerConnectionConfiguration()](./sip.js.defaultpeerconnectionconfiguration.md) | Function which returns an RTCConfiguration. | | [defaultSessionDescriptionHandlerFactory(mediaStreamFactory)](./sip.js.defaultsessiondescriptionhandlerfactory.md) | Function which returns a SessionDescriptionHandlerFactory. | +| [startLocalConference(conferenceSessions)](./sip.js.startlocalconference.md) | (BETA) Start a conference. | ## Interfaces diff --git a/docs/session-description-handler/sip.js.mediastreamfactory.md b/docs/session-description-handler/sip.js.mediastreamfactory.md index 09ead0fd3..cd898ca7d 100644 --- a/docs/session-description-handler/sip.js.mediastreamfactory.md +++ b/docs/session-description-handler/sip.js.mediastreamfactory.md @@ -9,7 +9,7 @@ Interface of factory function which produces a MediaStream. Signature: ```typescript -export declare type MediaStreamFactory = (constraints: MediaStreamConstraints, sessionDescriptionHandler: SessionDescriptionHandler) => Promise; +export declare type MediaStreamFactory = (constraints: MediaStreamConstraints, sessionDescriptionHandler: SessionDescriptionHandler, options?: SessionDescriptionHandlerOptions) => Promise; ``` -References: [SessionDescriptionHandler](./sip.js.sessiondescriptionhandler.md) +References: [SessionDescriptionHandler](./sip.js.sessiondescriptionhandler.md), [SessionDescriptionHandlerOptions](./sip.js.sessiondescriptionhandleroptions.md) diff --git a/docs/session-description-handler/sip.js.sessiondescriptionhandler.enablereceivertracks.md b/docs/session-description-handler/sip.js.sessiondescriptionhandler.enablereceivertracks.md new file mode 100644 index 000000000..c8643bc22 --- /dev/null +++ b/docs/session-description-handler/sip.js.sessiondescriptionhandler.enablereceivertracks.md @@ -0,0 +1,24 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [SessionDescriptionHandler](./sip.js.sessiondescriptionhandler.md) > [enableReceiverTracks](./sip.js.sessiondescriptionhandler.enablereceivertracks.md) + +## SessionDescriptionHandler.enableReceiverTracks() method + +Helper function to enable/disable media tracks. + +Signature: + +```typescript +enableReceiverTracks(enable: boolean): void; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| enable | boolean | If true enable tracks, otherwise disable tracks. | + +Returns: + +void + diff --git a/docs/session-description-handler/sip.js.sessiondescriptionhandler.enablesendertracks.md b/docs/session-description-handler/sip.js.sessiondescriptionhandler.enablesendertracks.md new file mode 100644 index 000000000..74127f6d9 --- /dev/null +++ b/docs/session-description-handler/sip.js.sessiondescriptionhandler.enablesendertracks.md @@ -0,0 +1,24 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [SessionDescriptionHandler](./sip.js.sessiondescriptionhandler.md) > [enableSenderTracks](./sip.js.sessiondescriptionhandler.enablesendertracks.md) + +## SessionDescriptionHandler.enableSenderTracks() method + +Helper function to enable/disable media tracks. + +Signature: + +```typescript +enableSenderTracks(enable: boolean): void; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| enable | boolean | If true enable tracks, otherwise disable tracks. | + +Returns: + +void + diff --git a/docs/session-description-handler/sip.js.sessiondescriptionhandler.icegatheringcomplete.md b/docs/session-description-handler/sip.js.sessiondescriptionhandler.icegatheringcomplete.md index c1f15ff04..63c47f974 100644 --- a/docs/session-description-handler/sip.js.sessiondescriptionhandler.icegatheringcomplete.md +++ b/docs/session-description-handler/sip.js.sessiondescriptionhandler.icegatheringcomplete.md @@ -9,9 +9,13 @@ Called when ICE gathering completes and resolves any waiting promise. Signature: ```typescript -protected iceGatheringComplete(): void; +iceGatheringComplete(): void; ``` Returns: void +## Remarks + +May be called prior to ICE gathering actually completing to allow the session descirption handler proceed with whatever candidates have been gathered up to this point in time. Use this to stop waiting on ICE to complete if you are implementing your own ICE gathering completion strategy. + diff --git a/docs/session-description-handler/sip.js.sessiondescriptionhandler.md b/docs/session-description-handler/sip.js.sessiondescriptionhandler.md index c82251867..9259d36b5 100644 --- a/docs/session-description-handler/sip.js.sessiondescriptionhandler.md +++ b/docs/session-description-handler/sip.js.sessiondescriptionhandler.md @@ -49,6 +49,8 @@ It is expected/intended to be extended by specific WebRTC based applications. | [close()](./sip.js.sessiondescriptionhandler.close.md) | | Stop tracks and close peer connection. | | [createDataChannel(options)](./sip.js.sessiondescriptionhandler.createdatachannel.md) | | Create a data channel. | | [createLocalOfferOrAnswer(options)](./sip.js.sessiondescriptionhandler.createlocalofferoranswer.md) | | Depending on current signaling state, create a local offer or answer. | +| [enableReceiverTracks(enable)](./sip.js.sessiondescriptionhandler.enablereceivertracks.md) | | Helper function to enable/disable media tracks. | +| [enableSenderTracks(enable)](./sip.js.sessiondescriptionhandler.enablesendertracks.md) | | Helper function to enable/disable media tracks. | | [getDescription(options, modifiers)](./sip.js.sessiondescriptionhandler.getdescription.md) | | Creates an offer or answer. | | [getLocalMediaStream(options)](./sip.js.sessiondescriptionhandler.getlocalmediastream.md) | | Get a media stream from the media stream factory and set the local media stream. | | [getLocalSessionDescription()](./sip.js.sessiondescriptionhandler.getlocalsessiondescription.md) | | Gets the peer connection's local session description. | diff --git a/docs/session-description-handler/sip.js.sessiondescriptionhandler.peerconnection.md b/docs/session-description-handler/sip.js.sessiondescriptionhandler.peerconnection.md index d1353e59b..95a91b99a 100644 --- a/docs/session-description-handler/sip.js.sessiondescriptionhandler.peerconnection.md +++ b/docs/session-description-handler/sip.js.sessiondescriptionhandler.peerconnection.md @@ -14,5 +14,23 @@ get peerConnection(): RTCPeerConnection | undefined; ## Remarks -While access to the underlying `RTCPeerConnection` is provided, note that using methods with modify it may break the operation of this class. In particular, this class depends on exclusive access to the event handler properties. If you need access to the peer connection events, either register for events using `addEventListener()` on the `RTCPeerConnection` or set the `peerConnectionDelegate` on this `SessionDescriptionHandler`. +Use the peerConnectionDelegate to get access to the events associated with the RTCPeerConnection. For example... + +Do NOT do this... + +```ts +peerConnection.onicecandidate = (event) => { + // do something +}; +``` +Instead, do this... + +```ts +peerConnection.peerConnectionDelegate = { + onicecandidate: (event) => { + // do something + } +}; +``` +While access to the underlying `RTCPeerConnection` is provided, note that using methods which modify it may break the operation of this class. In particular, this class depends on exclusive access to the event handler properties. If you need access to the peer connection events, either register for events using `addEventListener()` on the `RTCPeerConnection` or set the `peerConnectionDelegate` on this `SessionDescriptionHandler`. diff --git a/docs/session-description-handler/sip.js.sessiondescriptionhandler.peerconnectiondelegate.md b/docs/session-description-handler/sip.js.sessiondescriptionhandler.peerconnectiondelegate.md index 61f0be308..6c0b6a8d7 100644 --- a/docs/session-description-handler/sip.js.sessiondescriptionhandler.peerconnectiondelegate.md +++ b/docs/session-description-handler/sip.js.sessiondescriptionhandler.peerconnectiondelegate.md @@ -16,5 +16,23 @@ set peerConnectionDelegate(delegate: PeerConnectionDelegate | undefined); ## Remarks -Setting the peer connection event handlers directly is not supported and may break this class. As this class depends on exclusive access to them, a delegate may be set which provides alternative access to the event handlers in a fashion which is supported. +Use the peerConnectionDelegate to get access to the events associated with the RTCPeerConnection. For example... + +Do NOT do this... + +```ts +peerConnection.onicecandidate = (event) => { + // do something +}; +``` +Instead, do this... + +``` +peerConnection.peerConnectionDelegate = { + onicecandidate: (event) => { + // do something + } +}; +``` +Setting the peer connection event handlers directly is not supported and may break this class. As this class depends on exclusive access to them. This delegate is intended to provide access to the RTCPeerConnection events in a fashion which is supported. diff --git a/docs/session-description-handler/sip.js.startlocalconference.md b/docs/session-description-handler/sip.js.startlocalconference.md new file mode 100644 index 000000000..4ef25227c --- /dev/null +++ b/docs/session-description-handler/sip.js.startlocalconference.md @@ -0,0 +1,27 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [startLocalConference](./sip.js.startlocalconference.md) + +## startLocalConference() function + +> This API is provided as a preview for developers and may change based on feedback that we receive. Do not use this API in a production environment. +> + +Start a conference. + +Signature: + +```typescript +export declare function startLocalConference(conferenceSessions: Array): void; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| conferenceSessions | Array<Session> | The sessions to conference. | + +Returns: + +void + diff --git a/docs/session-description-handler/sip.js.webaudiosessiondescriptionhandler._constructor_.md b/docs/session-description-handler/sip.js.webaudiosessiondescriptionhandler._constructor_.md new file mode 100644 index 000000000..fbb5d6771 --- /dev/null +++ b/docs/session-description-handler/sip.js.webaudiosessiondescriptionhandler._constructor_.md @@ -0,0 +1,25 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [WebAudioSessionDescriptionHandler](./sip.js.webaudiosessiondescriptionhandler.md) > [(constructor)](./sip.js.webaudiosessiondescriptionhandler._constructor_.md) + +## WebAudioSessionDescriptionHandler.(constructor) + +> This API is provided as a preview for developers and may change based on feedback that we receive. Do not use this API in a production environment. +> + +Constructs a new instance of the `WebAudioSessionDescriptionHandler` class + +Signature: + +```typescript +constructor(logger: Logger, mediaStreamFactory: MediaStreamFactory, sessionDescriptionHandlerConfiguration?: SessionDescriptionHandlerConfiguration); +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| logger | Logger | | +| mediaStreamFactory | [MediaStreamFactory](./sip.js.mediastreamfactory.md) | | +| sessionDescriptionHandlerConfiguration | [SessionDescriptionHandlerConfiguration](./sip.js.sessiondescriptionhandlerconfiguration.md) | | + diff --git a/docs/session-description-handler/sip.js.webaudiosessiondescriptionhandler.audiocontext.md b/docs/session-description-handler/sip.js.webaudiosessiondescriptionhandler.audiocontext.md new file mode 100644 index 000000000..3259bc133 --- /dev/null +++ b/docs/session-description-handler/sip.js.webaudiosessiondescriptionhandler.audiocontext.md @@ -0,0 +1,14 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [WebAudioSessionDescriptionHandler](./sip.js.webaudiosessiondescriptionhandler.md) > [audioContext](./sip.js.webaudiosessiondescriptionhandler.audiocontext.md) + +## WebAudioSessionDescriptionHandler.audioContext property + +> This API is provided as a preview for developers and may change based on feedback that we receive. Do not use this API in a production environment. +> + +Signature: + +```typescript +static audioContext: AudioContext | undefined; +``` diff --git a/docs/session-description-handler/sip.js.webaudiosessiondescriptionhandler.enablesendertracks.md b/docs/session-description-handler/sip.js.webaudiosessiondescriptionhandler.enablesendertracks.md new file mode 100644 index 000000000..cff7b9249 --- /dev/null +++ b/docs/session-description-handler/sip.js.webaudiosessiondescriptionhandler.enablesendertracks.md @@ -0,0 +1,27 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [WebAudioSessionDescriptionHandler](./sip.js.webaudiosessiondescriptionhandler.md) > [enableSenderTracks](./sip.js.webaudiosessiondescriptionhandler.enablesendertracks.md) + +## WebAudioSessionDescriptionHandler.enableSenderTracks() method + +> This API is provided as a preview for developers and may change based on feedback that we receive. Do not use this API in a production environment. +> + +Helper function to enable/disable media tracks. + +Signature: + +```typescript +enableSenderTracks(enable: boolean): void; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| enable | boolean | If true enable tracks. | + +Returns: + +void + diff --git a/docs/session-description-handler/sip.js.webaudiosessiondescriptionhandler.initlocalmediastream.md b/docs/session-description-handler/sip.js.webaudiosessiondescriptionhandler.initlocalmediastream.md new file mode 100644 index 000000000..c817dffe6 --- /dev/null +++ b/docs/session-description-handler/sip.js.webaudiosessiondescriptionhandler.initlocalmediastream.md @@ -0,0 +1,27 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [WebAudioSessionDescriptionHandler](./sip.js.webaudiosessiondescriptionhandler.md) > [initLocalMediaStream](./sip.js.webaudiosessiondescriptionhandler.initlocalmediastream.md) + +## WebAudioSessionDescriptionHandler.initLocalMediaStream() method + +> This API is provided as a preview for developers and may change based on feedback that we receive. Do not use this API in a production environment. +> + +Returns a WebRTC MediaStream proxying the provided audio media stream. This allows additional Web Audio media stream source nodes to be connected to the destination node assoicated with the returned stream so we can mix aditional audio sorces into the local media stream (ie for 3-way conferencing). + +Signature: + +```typescript +initLocalMediaStream(stream: MediaStream): MediaStream; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| stream | MediaStream | The MediaStream to proxy. | + +Returns: + +MediaStream + diff --git a/docs/session-description-handler/sip.js.webaudiosessiondescriptionhandler.joinwith.md b/docs/session-description-handler/sip.js.webaudiosessiondescriptionhandler.joinwith.md new file mode 100644 index 000000000..819a9a995 --- /dev/null +++ b/docs/session-description-handler/sip.js.webaudiosessiondescriptionhandler.joinwith.md @@ -0,0 +1,27 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [WebAudioSessionDescriptionHandler](./sip.js.webaudiosessiondescriptionhandler.md) > [joinWith](./sip.js.webaudiosessiondescriptionhandler.joinwith.md) + +## WebAudioSessionDescriptionHandler.joinWith() method + +> This API is provided as a preview for developers and may change based on feedback that we receive. Do not use this API in a production environment. +> + +Join (conference) media streams with another party. + +Signature: + +```typescript +joinWith(peer: WebAudioSessionDescriptionHandler): void; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| peer | [WebAudioSessionDescriptionHandler](./sip.js.webaudiosessiondescriptionhandler.md) | The session description handler of the peer to join with. | + +Returns: + +void + diff --git a/docs/session-description-handler/sip.js.webaudiosessiondescriptionhandler.md b/docs/session-description-handler/sip.js.webaudiosessiondescriptionhandler.md new file mode 100644 index 000000000..50be33325 --- /dev/null +++ b/docs/session-description-handler/sip.js.webaudiosessiondescriptionhandler.md @@ -0,0 +1,43 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [WebAudioSessionDescriptionHandler](./sip.js.webaudiosessiondescriptionhandler.md) + +## WebAudioSessionDescriptionHandler class + +> This API is provided as a preview for developers and may change based on feedback that we receive. Do not use this API in a production environment. +> + +A WebAudioSessionDescriptionHandler uses the Web Audio API to enable local conferencing of audio streams. + +Signature: + +```typescript +export declare class WebAudioSessionDescriptionHandler extends SessionDescriptionHandler +``` +Extends: [SessionDescriptionHandler](./sip.js.sessiondescriptionhandler.md) + +## Remarks + +This handler only works for one track of audio per peer connection. While the session description handler being extended supports both audio and video, attempting to utilize video with this handler is not defined. + +## Constructors + +| Constructor | Modifiers | Description | +| --- | --- | --- | +| [(constructor)(logger, mediaStreamFactory, sessionDescriptionHandlerConfiguration)](./sip.js.webaudiosessiondescriptionhandler._constructor_.md) | | (BETA) Constructs a new instance of the WebAudioSessionDescriptionHandler class | + +## Properties + +| Property | Modifiers | Type | Description | +| --- | --- | --- | --- | +| [audioContext](./sip.js.webaudiosessiondescriptionhandler.audiocontext.md) | static | AudioContext \| undefined | (BETA) | + +## Methods + +| Method | Modifiers | Description | +| --- | --- | --- | +| [enableSenderTracks(enable)](./sip.js.webaudiosessiondescriptionhandler.enablesendertracks.md) | | (BETA) Helper function to enable/disable media tracks. | +| [initLocalMediaStream(stream)](./sip.js.webaudiosessiondescriptionhandler.initlocalmediastream.md) | | (BETA) Returns a WebRTC MediaStream proxying the provided audio media stream. This allows additional Web Audio media stream source nodes to be connected to the destination node assoicated with the returned stream so we can mix aditional audio sorces into the local media stream (ie for 3-way conferencing). | +| [joinWith(peer)](./sip.js.webaudiosessiondescriptionhandler.joinwith.md) | | (BETA) Join (conference) media streams with another party. | +| [setRealLocalMediaStream(stream)](./sip.js.webaudiosessiondescriptionhandler.setreallocalmediastream.md) | | (BETA) Sets the original local media stream. | + diff --git a/docs/session-description-handler/sip.js.webaudiosessiondescriptionhandler.setreallocalmediastream.md b/docs/session-description-handler/sip.js.webaudiosessiondescriptionhandler.setreallocalmediastream.md new file mode 100644 index 000000000..6739535a8 --- /dev/null +++ b/docs/session-description-handler/sip.js.webaudiosessiondescriptionhandler.setreallocalmediastream.md @@ -0,0 +1,31 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [WebAudioSessionDescriptionHandler](./sip.js.webaudiosessiondescriptionhandler.md) > [setRealLocalMediaStream](./sip.js.webaudiosessiondescriptionhandler.setreallocalmediastream.md) + +## WebAudioSessionDescriptionHandler.setRealLocalMediaStream() method + +> This API is provided as a preview for developers and may change based on feedback that we receive. Do not use this API in a production environment. +> + +Sets the original local media stream. + +Signature: + +```typescript +setRealLocalMediaStream(stream: MediaStream): void; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| stream | MediaStream | Media stream containing tracks to be utilized. | + +Returns: + +void + +## Remarks + +Only the first audio and video tracks of the provided MediaStream are utilized. Adds tracks if audio and/or video tracks are not already present, otherwise replaces tracks. + diff --git a/docs/session-manager.md b/docs/session-manager.md new file mode 100644 index 000000000..a7bec72f0 --- /dev/null +++ b/docs/session-manager.md @@ -0,0 +1,26 @@ +# SessionManager + +## Overview + +The `SessionManager` class provides an easy simplified interface for making audio and video calls in a web page. + +While not intended for all use cases, `SessionManager` is intended to be suitable for many single page web browser applications. + +If requirements are more advanced, working directly with the [API](./api.md) which `SessionManager` is built on top of provides more flexiblity. + +## Reference Documentation + +* [SessionManager Class Reference](./session-manager/sip.js.md) + +## Getting Started + +The interface provdied by `SessionManager` supports multiple concurrent calls, but otherwise generally mirrors the interface provided by `SimpleUser`. + +1. Start with [SimpleUser](./simple-user.md). +2. If `SimpleUser` suffices, then stop. +3. If `SimpleUser` would suffice if only it handled concurrent calls, then `SessionManager` may be for you. +4. If `SimpleUser` does not suffice for the single call case and/or `SessionManager` does not suffice for the multiple concurrent call case, then you may need to utilize the [API](./api.md) direclty. + +## Example + +The `SimpleUser` class source code provides a working example of how one might utilize the `SessionManager` class. diff --git a/docs/session-manager/sip.js.sessionmanager.isheld.md b/docs/session-manager/sip.js.sessionmanager.isheld.md index c78e990ac..c43675bd4 100644 --- a/docs/session-manager/sip.js.sessionmanager.isheld.md +++ b/docs/session-manager/sip.js.sessionmanager.isheld.md @@ -9,7 +9,7 @@ Hold state. Signature: ```typescript -isHeld(session: Session): boolean | undefined; +isHeld(session: Session): boolean; ``` ## Parameters @@ -20,9 +20,9 @@ isHeld(session: Session): boolean | undefined; Returns: -boolean \| undefined +boolean ## Remarks -True if session media is on hold. Undefined is session doesn't exist. +True if session is on hold. diff --git a/docs/session-manager/sip.js.sessionmanager.ismuted.md b/docs/session-manager/sip.js.sessionmanager.ismuted.md index 6a1846bc6..50952caa3 100644 --- a/docs/session-manager/sip.js.sessionmanager.ismuted.md +++ b/docs/session-manager/sip.js.sessionmanager.ismuted.md @@ -9,7 +9,7 @@ Mute state. Signature: ```typescript -isMuted(session: Session): boolean | undefined; +isMuted(session: Session): boolean; ``` ## Parameters @@ -20,9 +20,9 @@ isMuted(session: Session): boolean | undefined; Returns: -boolean \| undefined +boolean ## Remarks -True if sender's media track is disabled. Undefined is session doesn't exist. +True if sender's media track is disabled. diff --git a/docs/simple-user.md b/docs/simple-user.md index d95deb38d..81a419218 100644 --- a/docs/simple-user.md +++ b/docs/simple-user.md @@ -6,7 +6,9 @@ The `SimpleUser` class provides an easy simplified interface for making audio an While not intended for all use cases, `SimpleUser` is intended to be suitable for many single page web browser applications. For instance, the examples on the [Demo](../demo/README.md) page are implemented using the `SimpleUser` class exclusively. Furthermore, the [Demo](../demo/README.md) source code provides concrete examples of how to use all the features provided by `SimpleUser`. -If requirements are more advanced, working directly with the [API](./api.md) which `SimpleUser` is built on top of provides more flexiblity. +If requirements are more advanced, working directly with the [SessionManager](./session-manager.md) which `SimpleUser` is built on top of provides more flexiblity and supports multiple concurrent calls. + +If requirements are still more advanced, working directly with the [API](./api.md) which `SessionManager` is built on top of provides more flexiblity. ## Reference Documentation diff --git a/docs/simple-user/sip.js.simpleuser.decline.md b/docs/simple-user/sip.js.simpleuser.decline.md index 5dc4cb03b..4f7b0e779 100644 --- a/docs/simple-user/sip.js.simpleuser.decline.md +++ b/docs/simple-user/sip.js.simpleuser.decline.md @@ -17,5 +17,5 @@ Promise<void> ## Remarks -Reject an incoming INVITE request. Resolves with the response is sent, otherwise rejects. Use `onCallTerminated` delegate method to determine if and when call is ended. +Reject an incoming INVITE request. Resolves with the response is sent, otherwise rejects. Use `onCallHangup` delegate method to determine if and when call is ended. diff --git a/docs/simple-user/sip.js.simpleuser.hangup.md b/docs/simple-user/sip.js.simpleuser.hangup.md index 8b3eb0860..4222a0c79 100644 --- a/docs/simple-user/sip.js.simpleuser.hangup.md +++ b/docs/simple-user/sip.js.simpleuser.hangup.md @@ -17,5 +17,5 @@ Promise<void> ## Remarks -Send a BYE request, CANCEL request or reject response to end the current Session. Resolves when the request/response is sent, otherwise rejects. Use `onCallTerminated` delegate method to determine if and when call is ended. +Send a BYE request, CANCEL request or reject response to end the current Session. Resolves when the request/response is sent, otherwise rejects. Use `onCallHangup` delegate method to determine if and when call is ended. diff --git a/docs/simple-user/sip.js.simpleuser.isheld.md b/docs/simple-user/sip.js.simpleuser.isheld.md index 6231ddcb5..c548e7d8a 100644 --- a/docs/simple-user/sip.js.simpleuser.isheld.md +++ b/docs/simple-user/sip.js.simpleuser.isheld.md @@ -17,5 +17,5 @@ boolean ## Remarks -True if session media is on hold. +True if session is on hold. diff --git a/docs/simple-user/sip.js.simpleuser.md b/docs/simple-user/sip.js.simpleuser.md index 54b288883..f0e283052 100644 --- a/docs/simple-user/sip.js.simpleuser.md +++ b/docs/simple-user/sip.js.simpleuser.md @@ -50,7 +50,7 @@ While this class is completely functional for simple use cases, it is not intend | [isMuted()](./sip.js.simpleuser.ismuted.md) | | Mute state. | | [message(destination, message)](./sip.js.simpleuser.message.md) | | Send a message. | | [mute()](./sip.js.simpleuser.mute.md) | | Mute call. | -| [register(registererOptions, registererRegisterOptions)](./sip.js.simpleuser.register.md) | | Start receiving incoming calls. | +| [register(registererRegisterOptions)](./sip.js.simpleuser.register.md) | | Start receiving incoming calls. | | [sendDTMF(tone)](./sip.js.simpleuser.senddtmf.md) | | Send DTMF. | | [unhold()](./sip.js.simpleuser.unhold.md) | | Unhold call. | | [unmute()](./sip.js.simpleuser.unmute.md) | | Unmute call. | diff --git a/docs/simple-user/sip.js.simpleuser.register.md b/docs/simple-user/sip.js.simpleuser.register.md index 6b4419dc8..e0a44858a 100644 --- a/docs/simple-user/sip.js.simpleuser.register.md +++ b/docs/simple-user/sip.js.simpleuser.register.md @@ -9,14 +9,13 @@ Start receiving incoming calls. Signature: ```typescript -register(registererOptions?: RegistererOptions, registererRegisterOptions?: RegistererRegisterOptions): Promise; +register(registererRegisterOptions?: RegistererRegisterOptions): Promise; ``` ## Parameters | Parameter | Type | Description | | --- | --- | --- | -| registererOptions | RegistererOptions | | | registererRegisterOptions | RegistererRegisterOptions | | Returns: diff --git a/docs/simple-user/sip.js.simpleuseroptions.md b/docs/simple-user/sip.js.simpleuseroptions.md index 281c1c030..76679c6be 100644 --- a/docs/simple-user/sip.js.simpleuseroptions.md +++ b/docs/simple-user/sip.js.simpleuseroptions.md @@ -21,5 +21,6 @@ export interface SimpleUserOptions | [media](./sip.js.simpleuseroptions.media.md) | | [SimpleUserMedia](./sip.js.simpleusermedia.md) | Media options. | | [reconnectionAttempts](./sip.js.simpleuseroptions.reconnectionattempts.md) | | number | Maximum number of times to attempt to reconnection. | | [reconnectionDelay](./sip.js.simpleuseroptions.reconnectiondelay.md) | | number | Seconds to wait between reconnection attempts. | +| [registererOptions](./sip.js.simpleuseroptions.registereroptions.md) | | RegistererOptions | Options for Registerer. | | [userAgentOptions](./sip.js.simpleuseroptions.useragentoptions.md) | | UserAgentOptions | Options for UserAgent. | diff --git a/docs/simple-user/sip.js.simpleuseroptions.registereroptions.md b/docs/simple-user/sip.js.simpleuseroptions.registereroptions.md new file mode 100644 index 000000000..6d0eff612 --- /dev/null +++ b/docs/simple-user/sip.js.simpleuseroptions.registereroptions.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [SimpleUserOptions](./sip.js.simpleuseroptions.md) > [registererOptions](./sip.js.simpleuseroptions.registereroptions.md) + +## SimpleUserOptions.registererOptions property + +Options for Registerer. + +Signature: + +```typescript +registererOptions?: RegistererOptions; +``` diff --git a/etc/api/sip.js.api.md b/etc/api/sip.js.api.md index 2d5aafd87..8a6a884bf 100644 --- a/etc/api/sip.js.api.md +++ b/etc/api/sip.js.api.md @@ -32,6 +32,13 @@ export class Bye { get request(): IncomingRequestMessage; } +// @public +export class Cancel { + // @internal + constructor(incomingCancelRequest: IncomingRequestMessage); + get request(): IncomingRequestMessage; +} + // Warning: (ae-forgotten-export) The symbol "Exception" needs to be exported by the entry point index.d.ts // // @public @@ -349,6 +356,7 @@ export interface RegistererOptions { expires?: number; extraContactHeaderParams?: Array; extraHeaders?: Array; + // @deprecated instanceId?: string; logConfiguration?: boolean; // @deprecated (undocumented) @@ -528,6 +536,7 @@ export interface SessionByeOptions { export interface SessionDelegate { onAck?(ack: Ack): void; onBye?(bye: Bye): void; + onCancel?(cancel: Cancel): void; onInfo?(info: Info): void; onInvite?(request: IncomingRequestMessage, response: string, statusCode: number): void; onMessage?(message: Message): void; @@ -758,6 +767,7 @@ export class UserAgent { getLogger(category: string, label?: string): Logger; // Warning: (ae-forgotten-export) The symbol "LoggerFactory" needs to be exported by the entry point index.d.ts getLoggerFactory(): LoggerFactory; + get instanceId(): string; isConnected(): boolean; // @internal _makeInviter(targetURI: URI, options?: InviterOptions): Inviter; @@ -819,9 +829,6 @@ export interface UserAgentOptions { authorizationHa1?: string; authorizationPassword?: string; authorizationUsername?: string; - // @deprecated (undocumented) - autoStart?: boolean; - autoStop?: boolean; contactName?: string; contactParams?: { [name: string]: string; @@ -829,12 +836,15 @@ export interface UserAgentOptions { delegate?: UserAgentDelegate; displayName?: string; forceRport?: boolean; + gracefulShutdown?: boolean; // @deprecated hackAllowUnregisteredOptionTags?: boolean; // @deprecated hackIpInContact?: boolean | string; // @deprecated hackViaTcp?: boolean; + instanceId?: string; + instanceIdAlwaysAdded?: boolean; logBuiltinEnabled?: boolean; logConfiguration?: boolean; logConnector?: LogConnector; diff --git a/etc/core/sip.js.api.md b/etc/core/sip.js.api.md index dd1e4456a..b2715fc7c 100644 --- a/etc/core/sip.js.api.md +++ b/etc/core/sip.js.api.md @@ -97,6 +97,7 @@ export interface Contact { toString: (options?: { anonymous?: boolean; outbound?: boolean; + register?: boolean; }) => string; // (undocumented) uri: URI; diff --git a/etc/session-description-handler/sip.js.api.md b/etc/session-description-handler/sip.js.api.md index 85bbcd0f9..a72e48995 100644 --- a/etc/session-description-handler/sip.js.api.md +++ b/etc/session-description-handler/sip.js.api.md @@ -14,7 +14,7 @@ export function defaultPeerConnectionConfiguration(): RTCConfiguration; export function defaultSessionDescriptionHandlerFactory(mediaStreamFactory?: (constraints: MediaStreamConstraints, sessionDescriptionHandler: SessionDescriptionHandler) => Promise): SessionDescriptionHandlerFactory; // @public -export type MediaStreamFactory = (constraints: MediaStreamConstraints, sessionDescriptionHandler: SessionDescriptionHandler) => Promise; +export type MediaStreamFactory = (constraints: MediaStreamConstraints, sessionDescriptionHandler: SessionDescriptionHandler, options?: SessionDescriptionHandlerOptions) => Promise; // @public export interface PeerConnectionDelegate { @@ -40,13 +40,15 @@ export class SessionDescriptionHandler implements SessionDescriptionHandler_2 { protected createLocalOfferOrAnswer(options?: SessionDescriptionHandlerOptions): Promise; get dataChannel(): RTCDataChannel | undefined; protected _dataChannel: RTCDataChannel | undefined; + enableReceiverTracks(enable: boolean): void; + enableSenderTracks(enable: boolean): void; // Warning: (ae-forgotten-export) The symbol "SessionDescriptionHandlerModifier" needs to be exported by the entry point index.d.ts // Warning: (ae-forgotten-export) The symbol "BodyAndContentType" needs to be exported by the entry point index.d.ts getDescription(options?: SessionDescriptionHandlerOptions, modifiers?: Array): Promise; protected getLocalMediaStream(options?: SessionDescriptionHandlerOptions): Promise; protected getLocalSessionDescription(): Promise; hasDescription(contentType: string): boolean; - protected iceGatheringComplete(): void; + iceGatheringComplete(): void; get localMediaStream(): MediaStream; protected _localMediaStream: MediaStream; // Warning: (ae-forgotten-export) The symbol "Logger" needs to be exported by the entry point index.d.ts @@ -105,5 +107,19 @@ export interface SessionDescriptionHandlerOptions extends SessionDescriptionHand onDataChannel?: (dataChannel: RTCDataChannel) => void; } +// @beta +export function startLocalConference(conferenceSessions: Array): void; + +// @beta +export class WebAudioSessionDescriptionHandler extends SessionDescriptionHandler { + constructor(logger: Logger, mediaStreamFactory: MediaStreamFactory, sessionDescriptionHandlerConfiguration?: SessionDescriptionHandlerConfiguration); + // (undocumented) + static audioContext: AudioContext | undefined; + enableSenderTracks(enable: boolean): void; + initLocalMediaStream(stream: MediaStream): MediaStream; + joinWith(peer: WebAudioSessionDescriptionHandler): void; + setRealLocalMediaStream(stream: MediaStream): void; +} + ``` diff --git a/etc/session-manager/sip.js.api.md b/etc/session-manager/sip.js.api.md index 66f50d174..154c8daca 100644 --- a/etc/session-manager/sip.js.api.md +++ b/etc/session-manager/sip.js.api.md @@ -54,8 +54,8 @@ export class SessionManager { hangup(session: Session): Promise; hold(session: Session): Promise; isConnected(): boolean; - isHeld(session: Session): boolean | undefined; - isMuted(session: Session): boolean | undefined; + isHeld(session: Session): boolean; + isMuted(session: Session): boolean; managedSessions: Array; message(destination: string, message: string): Promise; mute(session: Session): void; diff --git a/etc/simple-user/sip.js.api.md b/etc/simple-user/sip.js.api.md index 856d83a64..81b4da66f 100644 --- a/etc/simple-user/sip.js.api.md +++ b/etc/simple-user/sip.js.api.md @@ -30,9 +30,8 @@ export class SimpleUser { get localVideoTrack(): MediaStreamTrack | undefined; message(destination: string, message: string): Promise; mute(): void; - // Warning: (ae-forgotten-export) The symbol "RegistererOptions" needs to be exported by the entry point index.d.ts // Warning: (ae-forgotten-export) The symbol "RegistererRegisterOptions" needs to be exported by the entry point index.d.ts - register(registererOptions?: RegistererOptions, registererRegisterOptions?: RegistererRegisterOptions): Promise; + register(registererRegisterOptions?: RegistererRegisterOptions): Promise; // @deprecated get remoteAudioTrack(): MediaStreamTrack | undefined; get remoteMediaStream(): MediaStream | undefined; @@ -43,7 +42,7 @@ export class SimpleUser { unmute(): void; // Warning: (ae-forgotten-export) The symbol "RegistererUnregisterOptions" needs to be exported by the entry point index.d.ts unregister(registererUnregisterOptions?: RegistererUnregisterOptions): Promise; - } +} // @public export interface SimpleUserDelegate { @@ -91,6 +90,8 @@ export interface SimpleUserOptions { media?: SimpleUserMedia; reconnectionAttempts?: number; reconnectionDelay?: number; + // Warning: (ae-forgotten-export) The symbol "RegistererOptions" needs to be exported by the entry point index.d.ts + registererOptions?: RegistererOptions; // Warning: (ae-forgotten-export) The symbol "UserAgentOptions" needs to be exported by the entry point index.d.ts userAgentOptions?: UserAgentOptions; } From 91a9bf0c0c7cfdf6de8d5baf7cc9ac5220d64317 Mon Sep 17 00:00:00 2001 From: John Riordan Date: Fri, 21 Oct 2022 12:35:45 -0400 Subject: [PATCH 62/73] Update session description handler documentation - State that it only supports up to one audio/video track per session - Issue #960 --- docs/session-description-handler.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/docs/session-description-handler.md b/docs/session-description-handler.md index 1370476b1..c597e11ac 100644 --- a/docs/session-description-handler.md +++ b/docs/session-description-handler.md @@ -2,7 +2,7 @@ ## Overview -The `SessionDescriptionHandler` class provides an implementation of which adhears to the `SessionDescriptionHandler` interface required by the [API](./api.md). The class is intended to be suitable for extending to provide custom behaviour if needed. +The `SessionDescriptionHandler` class provides an implementation of which adhears to the `SessionDescriptionHandler` interface required by the [API](./api.md). The class is intended to be suitable for extending to provide custom behaviour if needed. It supports up to one audio track and/or one video track per session. ## Reference Documentation @@ -204,3 +204,9 @@ See [docs](./session-description-handler/sip.js.sessiondescriptionhandler.md) fo `SessionDescriptionHandler` has a `peerConnectionDelegate` property. See [docs](./session-description-handler/sip.js.sessiondescriptionhandler.md) for more info. + +## How do I use more than one audio and one video track? + +`SessionDescriptionHandler` only supports up to one audio and one video track. + +A custom session description handler needs to be created to support more tracks. From 717b2bddb8eabc81dc28d2139ce1f3a2e67c2013 Mon Sep 17 00:00:00 2001 From: John Riordan Date: Mon, 24 Oct 2022 10:37:19 -0400 Subject: [PATCH 63/73] Migration doc addition --- docs/migration-0.20-0.21.md | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/docs/migration-0.20-0.21.md b/docs/migration-0.20-0.21.md index 868dab7e5..77168aeb8 100644 --- a/docs/migration-0.20-0.21.md +++ b/docs/migration-0.20-0.21.md @@ -2,13 +2,22 @@ ## General -First off, the entire project was updated for ECMAScript module (ESM) support. Overall this makes the library more compatible and standard usages of the built library are backwards compatible (for example, if installing it via npm has been working for you it will continue to work). However if you are using a custom build or development process then this change may impact those processes... +First off, the entire project was updated for ECMAScript module (ESM) support. Overall this makes the library more compatible and standard usages of the built library are backwards compatible (for example, if installing it via npm has been working for you it will continue to work). However if you are using a custom build or development process or fork of this library then this change may impact those processes. In particular, the TypeScript compilier options `module` and `moduleResolution` for this project have been changed to `NodeNext` for this project... +``` + "compilerOptions": { + ... + "module": "NodeNext", + "moduleResolution": "NodeNext", + ... + }, +``` +... and as such all imports need to be fully specified going forward. For example, `import "../api";` now must be `import "../api/index.js";`. The changes to project which have been made in this regard include... + - fully specified all imports - added .js extensions to all imports - changed compiler options to NodeNext - tweaked webpack configs (removed fullySpecified: false) - Secondly, the [SimpleUser](./simple-user.md) class has been ported from utilizing the API directly to using the [SessionManager](./session-manager.md) class (which is in turn is utilizing the API directly). The interface and usage of `SimpleUser` is completely identical (well, see below for the one breaking change), but if you were utilizing private methods, private properties, or otherwise depending on the internals of SimpleUser you may have issues. Other changes: From 6979d20e18fcb99ba8803f26da3340a67c072531 Mon Sep 17 00:00:00 2001 From: John Riordan Date: Mon, 24 Oct 2022 11:30:01 -0400 Subject: [PATCH 64/73] Version 0.21.0 --- package-lock.json | 4 ++-- package.json | 2 +- src/version.ts | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index bfc7e2863..565583f97 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "sip.js", - "version": "0.20.1", + "version": "0.21.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "sip.js", - "version": "0.20.1", + "version": "0.21.0", "license": "MIT", "devDependencies": { "@microsoft/api-documenter": "^7.19.22", diff --git a/package.json b/package.json index df63d850c..62aad270a 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "sip.js", "title": "SIP.js", "description": "A SIP library for JavaScript", - "version": "0.20.1", + "version": "0.21.0", "license": "MIT", "main": "./lib/index.js", "files": [ diff --git a/src/version.ts b/src/version.ts index 7f8c00b3e..f33d16478 100644 --- a/src/version.ts +++ b/src/version.ts @@ -1 +1 @@ -export const LIBRARY_VERSION = "0.20.1"; +export const LIBRARY_VERSION = "0.21.0"; From 70b6b66b21bcdcfcdec3b1df97fb51f5b6622026 Mon Sep 17 00:00:00 2001 From: John Riordan Date: Tue, 25 Oct 2022 18:17:47 -0400 Subject: [PATCH 65/73] Fix SessionManager option handling bug --- .../web/session-manager/session-manager.ts | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/platform/web/session-manager/session-manager.ts b/src/platform/web/session-manager/session-manager.ts index e4b445354..61899c06c 100644 --- a/src/platform/web/session-manager/session-manager.ts +++ b/src/platform/web/session-manager/session-manager.ts @@ -83,7 +83,7 @@ export class SessionManager { registererRegisterOptions: {}, userAgentOptions: {} }, - ...options + ...SessionManager.stripUndefinedProperties(options) }; // UserAgentOptions @@ -277,6 +277,23 @@ export class SessionManager { } } + /** + * Strip properties with undefined values from options. + * This is a work around while waiting for missing vs undefined to be addressed (or not)... + * https://github.com/Microsoft/TypeScript/issues/13195 + * @param options - Options to reduce + */ + private static stripUndefinedProperties(options: Partial): Partial { + return Object.keys(options).reduce((object, key) => { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + if ((options as any)[key] !== undefined) { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + (object as any)[key] = (options as any)[key]; + } + return object; + }, {}); + } + /** * The local media stream. Undefined if call not answered. * @param session - Session to get the media stream from. From 48cb9b58a3c8b72e8e57c1d126e75152f6c93c21 Mon Sep 17 00:00:00 2001 From: Sean Bright Date: Mon, 24 Oct 2022 14:04:11 -0400 Subject: [PATCH 66/73] SimpleUser and SessionManager optionally send DTMF via SDH. PR #1013 --- .../session-manager-options.ts | 6 ++ .../web/session-manager/session-manager.ts | 72 +++++++++++-------- .../web/simple-user/simple-user-options.ts | 6 ++ src/platform/web/simple-user/simple-user.ts | 1 + 4 files changed, 56 insertions(+), 29 deletions(-) diff --git a/src/platform/web/session-manager/session-manager-options.ts b/src/platform/web/session-manager/session-manager-options.ts index 6d052b2e2..de3c4fd77 100644 --- a/src/platform/web/session-manager/session-manager-options.ts +++ b/src/platform/web/session-manager/session-manager-options.ts @@ -164,6 +164,12 @@ export interface SessionManagerOptions { */ registererRegisterOptions?: RegistererRegisterOptions; + /** + * Send DTMF using the session description handler (uses RFC 2833 DTMF). + * @defaultValue `false` + */ + sendDTMFUsingSessionDescriptionHandler?: boolean; + /** * Options for UserAgent. */ diff --git a/src/platform/web/session-manager/session-manager.ts b/src/platform/web/session-manager/session-manager.ts index 61899c06c..9c6085382 100644 --- a/src/platform/web/session-manager/session-manager.ts +++ b/src/platform/web/session-manager/session-manager.ts @@ -81,6 +81,7 @@ export class SessionManager { registerGuard: null, registererOptions: {}, registererRegisterOptions: {}, + sendDTMFUsingSessionDescriptionHandler: false, userAgentOptions: {} }, ...SessionManager.stripUndefinedProperties(options) @@ -715,16 +716,6 @@ export class SessionManager { public async sendDTMF(session: Session, tone: string): Promise { this.logger.log(`[${session.id}] Sending DTMF...`); - // As RFC 6086 states, sending DTMF via INFO is not standardized... - // - // Companies have been using INFO messages in order to transport - // Dual-Tone Multi-Frequency (DTMF) tones. All mechanisms are - // proprietary and have not been standardized. - // https://tools.ietf.org/html/rfc6086#section-2 - // - // It is however widely supported based on this draft: - // https://tools.ietf.org/html/draft-kaplan-dispatch-info-dtmf-package-00 - // Validate tone if (!/^[0-9A-D#*,]$/.exec(tone)) { return Promise.reject(new Error("Invalid DTMF tone.")); @@ -734,27 +725,50 @@ export class SessionManager { return Promise.reject(new Error("Session does not exist.")); } - // The UA MUST populate the "application/dtmf-relay" body, as defined - // earlier, with the button pressed and the duration it was pressed - // for. Technically, this actually requires the INFO to be generated - // when the user *releases* the button, however if the user has still - // not released a button after 5 seconds, which is the maximum duration - // supported by this mechanism, the UA should generate the INFO at that - // time. - // https://tools.ietf.org/html/draft-kaplan-dispatch-info-dtmf-package-00#section-5.3 this.logger.log(`[${session.id}] Sending DTMF tone: ${tone}`); - const dtmf = tone; - const duration = 2000; - const body = { - contentDisposition: "render", - contentType: "application/dtmf-relay", - content: "Signal=" + dtmf + "\r\nDuration=" + duration - }; - const requestOptions = { body }; - return session.info({ requestOptions }).then(() => { - return; - }); + if (this.options.sendDTMFUsingSessionDescriptionHandler) { + if (!session.sessionDescriptionHandler) { + return Promise.reject(new Error("Session desciption handler undefined.")); + } + + if (!session.sessionDescriptionHandler.sendDtmf(tone)) { + return Promise.reject(new Error("Failed to send DTMF")); + } + + return Promise.resolve(); + } else { + // As RFC 6086 states, sending DTMF via INFO is not standardized... + // + // Companies have been using INFO messages in order to transport + // Dual-Tone Multi-Frequency (DTMF) tones. All mechanisms are + // proprietary and have not been standardized. + // https://tools.ietf.org/html/rfc6086#section-2 + // + // It is however widely supported based on this draft: + // https://tools.ietf.org/html/draft-kaplan-dispatch-info-dtmf-package-00 + + // The UA MUST populate the "application/dtmf-relay" body, as defined + // earlier, with the button pressed and the duration it was pressed + // for. Technically, this actually requires the INFO to be generated + // when the user *releases* the button, however if the user has still + // not released a button after 5 seconds, which is the maximum duration + // supported by this mechanism, the UA should generate the INFO at that + // time. + // https://tools.ietf.org/html/draft-kaplan-dispatch-info-dtmf-package-00#section-5.3 + const dtmf = tone; + const duration = 2000; + const body = { + contentDisposition: "render", + contentType: "application/dtmf-relay", + content: "Signal=" + dtmf + "\r\nDuration=" + duration + }; + const requestOptions = { body }; + + return session.info({ requestOptions }).then(() => { + return; + }); + } } /** diff --git a/src/platform/web/simple-user/simple-user-options.ts b/src/platform/web/simple-user/simple-user-options.ts index 64e81e102..fa052a2d4 100644 --- a/src/platform/web/simple-user/simple-user-options.ts +++ b/src/platform/web/simple-user/simple-user-options.ts @@ -101,6 +101,12 @@ export interface SimpleUserOptions { */ registererOptions?: RegistererOptions; + /** + * Send DTMF using the session description handler (uses RFC 2833 DTMF). + * @defaultValue `false` + */ + sendDTMFUsingSessionDescriptionHandler?: boolean; + /** * Options for UserAgent. */ diff --git a/src/platform/web/simple-user/simple-user.ts b/src/platform/web/simple-user/simple-user.ts index 3eef86a4b..14003def3 100644 --- a/src/platform/web/simple-user/simple-user.ts +++ b/src/platform/web/simple-user/simple-user.ts @@ -68,6 +68,7 @@ export class SimpleUser { reconnectionAttempts: this.options.reconnectionAttempts, reconnectionDelay: this.options.reconnectionDelay, registererOptions: this.options.registererOptions, + sendDTMFUsingSessionDescriptionHandler: this.options.sendDTMFUsingSessionDescriptionHandler, userAgentOptions: this.options.userAgentOptions }; From 74107554b3a32a5b0751f3dfa7712e0d5dffbd60 Mon Sep 17 00:00:00 2001 From: John Riordan Date: Tue, 25 Oct 2022 18:59:02 -0400 Subject: [PATCH 67/73] Update docs --- .../session-manager/sip.js.sessionmanageroptions.md | 1 + ...ptions.senddtmfusingsessiondescriptionhandler.md | 13 +++++++++++++ docs/simple-user/sip.js.simpleuseroptions.md | 1 + ...ptions.senddtmfusingsessiondescriptionhandler.md | 13 +++++++++++++ etc/session-manager/sip.js.api.md | 1 + etc/simple-user/sip.js.api.md | 1 + 6 files changed, 30 insertions(+) create mode 100644 docs/session-manager/sip.js.sessionmanageroptions.senddtmfusingsessiondescriptionhandler.md create mode 100644 docs/simple-user/sip.js.simpleuseroptions.senddtmfusingsessiondescriptionhandler.md diff --git a/docs/session-manager/sip.js.sessionmanageroptions.md b/docs/session-manager/sip.js.sessionmanageroptions.md index 354f2ffd6..d1b07e26f 100644 --- a/docs/session-manager/sip.js.sessionmanageroptions.md +++ b/docs/session-manager/sip.js.sessionmanageroptions.md @@ -30,5 +30,6 @@ export interface SessionManagerOptions | [registerGuard](./sip.js.sessionmanageroptions.registerguard.md) | | (() => Promise<boolean>) \| null | Does nothing if undefined or resolves false. If resolves true, the next regitration attempt will be blocked. | | [registrationRetry](./sip.js.sessionmanageroptions.registrationretry.md) | | boolean | If true then registration attempts will be automatically retried when any registration attempts fail or is otherwise rejected. | | [registrationRetryInterval](./sip.js.sessionmanageroptions.registrationretryinterval.md) | | number | Time to wait before retrying to send a registration reqeust in seconds. | +| [sendDTMFUsingSessionDescriptionHandler](./sip.js.sessionmanageroptions.senddtmfusingsessiondescriptionhandler.md) | | boolean | Send DTMF using the session description handler (uses RFC 2833 DTMF). | | [userAgentOptions](./sip.js.sessionmanageroptions.useragentoptions.md) | | UserAgentOptions | Options for UserAgent. | diff --git a/docs/session-manager/sip.js.sessionmanageroptions.senddtmfusingsessiondescriptionhandler.md b/docs/session-manager/sip.js.sessionmanageroptions.senddtmfusingsessiondescriptionhandler.md new file mode 100644 index 000000000..f313854a9 --- /dev/null +++ b/docs/session-manager/sip.js.sessionmanageroptions.senddtmfusingsessiondescriptionhandler.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [SessionManagerOptions](./sip.js.sessionmanageroptions.md) > [sendDTMFUsingSessionDescriptionHandler](./sip.js.sessionmanageroptions.senddtmfusingsessiondescriptionhandler.md) + +## SessionManagerOptions.sendDTMFUsingSessionDescriptionHandler property + +Send DTMF using the session description handler (uses RFC 2833 DTMF). + +Signature: + +```typescript +sendDTMFUsingSessionDescriptionHandler?: boolean; +``` diff --git a/docs/simple-user/sip.js.simpleuseroptions.md b/docs/simple-user/sip.js.simpleuseroptions.md index 76679c6be..60360c5d5 100644 --- a/docs/simple-user/sip.js.simpleuseroptions.md +++ b/docs/simple-user/sip.js.simpleuseroptions.md @@ -22,5 +22,6 @@ export interface SimpleUserOptions | [reconnectionAttempts](./sip.js.simpleuseroptions.reconnectionattempts.md) | | number | Maximum number of times to attempt to reconnection. | | [reconnectionDelay](./sip.js.simpleuseroptions.reconnectiondelay.md) | | number | Seconds to wait between reconnection attempts. | | [registererOptions](./sip.js.simpleuseroptions.registereroptions.md) | | RegistererOptions | Options for Registerer. | +| [sendDTMFUsingSessionDescriptionHandler](./sip.js.simpleuseroptions.senddtmfusingsessiondescriptionhandler.md) | | boolean | Send DTMF using the session description handler (uses RFC 2833 DTMF). | | [userAgentOptions](./sip.js.simpleuseroptions.useragentoptions.md) | | UserAgentOptions | Options for UserAgent. | diff --git a/docs/simple-user/sip.js.simpleuseroptions.senddtmfusingsessiondescriptionhandler.md b/docs/simple-user/sip.js.simpleuseroptions.senddtmfusingsessiondescriptionhandler.md new file mode 100644 index 000000000..f85bada04 --- /dev/null +++ b/docs/simple-user/sip.js.simpleuseroptions.senddtmfusingsessiondescriptionhandler.md @@ -0,0 +1,13 @@ + + +[Home](./index.md) > [sip.js](./sip.js.md) > [SimpleUserOptions](./sip.js.simpleuseroptions.md) > [sendDTMFUsingSessionDescriptionHandler](./sip.js.simpleuseroptions.senddtmfusingsessiondescriptionhandler.md) + +## SimpleUserOptions.sendDTMFUsingSessionDescriptionHandler property + +Send DTMF using the session description handler (uses RFC 2833 DTMF). + +Signature: + +```typescript +sendDTMFUsingSessionDescriptionHandler?: boolean; +``` diff --git a/etc/session-manager/sip.js.api.md b/etc/session-manager/sip.js.api.md index 154c8daca..424bfe89f 100644 --- a/etc/session-manager/sip.js.api.md +++ b/etc/session-manager/sip.js.api.md @@ -131,6 +131,7 @@ export interface SessionManagerOptions { registerGuard?: (() => Promise) | null; registrationRetry?: boolean; registrationRetryInterval?: number; + sendDTMFUsingSessionDescriptionHandler?: boolean; // Warning: (ae-forgotten-export) The symbol "UserAgentOptions" needs to be exported by the entry point index.d.ts userAgentOptions?: UserAgentOptions; } diff --git a/etc/simple-user/sip.js.api.md b/etc/simple-user/sip.js.api.md index 81b4da66f..0e14892cf 100644 --- a/etc/simple-user/sip.js.api.md +++ b/etc/simple-user/sip.js.api.md @@ -92,6 +92,7 @@ export interface SimpleUserOptions { reconnectionDelay?: number; // Warning: (ae-forgotten-export) The symbol "RegistererOptions" needs to be exported by the entry point index.d.ts registererOptions?: RegistererOptions; + sendDTMFUsingSessionDescriptionHandler?: boolean; // Warning: (ae-forgotten-export) The symbol "UserAgentOptions" needs to be exported by the entry point index.d.ts userAgentOptions?: UserAgentOptions; } From 742533a00228a8417dbedc398fecd717c3caad6f Mon Sep 17 00:00:00 2001 From: John Riordan Date: Tue, 25 Oct 2022 18:59:54 -0400 Subject: [PATCH 68/73] Version 0.21.1 --- package-lock.json | 4 ++-- package.json | 2 +- src/version.ts | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index 565583f97..a1ca792b9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "sip.js", - "version": "0.21.0", + "version": "0.21.1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "sip.js", - "version": "0.21.0", + "version": "0.21.1", "license": "MIT", "devDependencies": { "@microsoft/api-documenter": "^7.19.22", diff --git a/package.json b/package.json index 62aad270a..2e75aa900 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "sip.js", "title": "SIP.js", "description": "A SIP library for JavaScript", - "version": "0.21.0", + "version": "0.21.1", "license": "MIT", "main": "./lib/index.js", "files": [ diff --git a/src/version.ts b/src/version.ts index f33d16478..f57edfb48 100644 --- a/src/version.ts +++ b/src/version.ts @@ -1 +1 @@ -export const LIBRARY_VERSION = "0.21.0"; +export const LIBRARY_VERSION = "0.21.1"; From 9219aa1071fc8f36c281b2f375d1feadae5b4a35 Mon Sep 17 00:00:00 2001 From: John Riordan Date: Thu, 27 Oct 2022 12:18:31 -0400 Subject: [PATCH 69/73] Fix SessionManager registration expires bug --- src/platform/web/session-manager/session-manager.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/platform/web/session-manager/session-manager.ts b/src/platform/web/session-manager/session-manager.ts index 9c6085382..c668b8c24 100644 --- a/src/platform/web/session-manager/session-manager.ts +++ b/src/platform/web/session-manager/session-manager.ts @@ -238,8 +238,6 @@ export class SessionManager { ...options.registererOptions }; - this.registererOptions.expires = 60; - // RegistererRegisterOptions this.registererRegisterOptions = { ...options.registererRegisterOptions From f0c9dfed0a11a3dbcbc300a7effa691cf0640285 Mon Sep 17 00:00:00 2001 From: John Riordan Date: Thu, 27 Oct 2022 12:30:39 -0400 Subject: [PATCH 70/73] SessionManager SIP OPTIONS ping feature --- docs/TODO.md | 1 - .../session-manager-options.ts | 35 ++++ .../web/session-manager/session-manager.ts | 172 +++++++++++++++++- 3 files changed, 201 insertions(+), 7 deletions(-) diff --git a/docs/TODO.md b/docs/TODO.md index d490caa7b..b91b4e135 100644 --- a/docs/TODO.md +++ b/docs/TODO.md @@ -2,7 +2,6 @@ ## Next Release -- implement Session Timers or OPTIONS Ping to detect network failure - review and remove everything that was deprecated - complete more work in progress - more documentation diff --git a/src/platform/web/session-manager/session-manager-options.ts b/src/platform/web/session-manager/session-manager-options.ts index de3c4fd77..f95c848d6 100644 --- a/src/platform/web/session-manager/session-manager-options.ts +++ b/src/platform/web/session-manager/session-manager-options.ts @@ -115,6 +115,41 @@ export interface SessionManagerOptions { */ media?: SessionManagerMedia; + /** + * If defined, SIP OPTIONS pings will be sent separated by this interval in seconds. + * @remarks + * When this is defined, the user agent will periodically send an OPTIONS request to the destination + * to determine its reachability and will disconnect the transport if the destination is unreachable. + * A destination is considered to be "out of service" if it fails to respond to an OPTIONS request, + * if it sends a Service Unavailable (503) response or Request Timeout (408) response. The overall + * state is considered to be "in service" when a response other than a 408 or 503 is received. + * + * There is currently no Javascript API to send WebSocket Ping frames or receive Pong frames. + * A Ping frame may serve either as a keepalive or as a means to verify that the remote endpoint + * is still responsive. It is either supported by your browser, or not. There is also no API to + * enable, configure or detect whether the browser supports and is using ping/pong frames. + * As such, if a keepalive and/or a means to verify that the remote endpoint is responsive is + * desired, an alternative approach is needed. The intention of sending SIP OPTIONS pings + * herein is to provide an application level alternative. + * + * There is no golden rule or best practice here. For example, too low and these messages clutter + * log files and make more work for the system than is useful (10 seconds is arguably too low). + * Too high and it may take longer than expected to detect a server or otherwise unreachable + * (120 seconds is arguably too high). So choose a value that is reasonable for your environment. + * @defaultValue `undefined` + */ + optionsPingInterval?: number; + + /** + * The request URI to use for SIP OPTIONS pings. + * @remarks + * If this is not defined but the aor option has been defined, the aor host portion of + * the aor will be used to form the request URI (the assumption is this will target the + * registrar server assoicated with the AOR). + * @defaultValue `undefined` + */ + optionsPingRequestURI?: string; + /** * Maximum number of times to attempt to reconnection. * @remarks diff --git a/src/platform/web/session-manager/session-manager.ts b/src/platform/web/session-manager/session-manager.ts index c668b8c24..24a21a317 100644 --- a/src/platform/web/session-manager/session-manager.ts +++ b/src/platform/web/session-manager/session-manager.ts @@ -22,6 +22,8 @@ import { UserAgent } from "../../../api/user-agent.js"; import { UserAgentOptions } from "../../../api/user-agent-options.js"; import { UserAgentState } from "../../../api/user-agent-state.js"; import { Logger } from "../../../core/log/logger.js"; +import { OutgoingRequest } from "../../../core/messages/outgoing-request.js"; +import { URI } from "../../../grammar/uri.js"; import { SessionDescriptionHandler } from "../session-description-handler/session-description-handler.js"; import { SessionDescriptionHandlerOptions } from "../session-description-handler/session-description-handler-options.js"; import { Transport } from "../transport/transport.js"; @@ -47,9 +49,13 @@ export class SessionManager { private attemptingReconnection = false; private logger: Logger; private options: Required; + private optionsPingFailure = false; + private optionsPingRequest?: OutgoingRequest; + private optionsPingRunning = false; + private optionsPingTimeout?: ReturnType; private registrationAttemptTimeout?: ReturnType; - private registerer: Registerer | undefined; - private registererOptions: RegistererOptions | undefined; + private registerer?: Registerer; + private registererOptions?: RegistererOptions; private registererRegisterOptions: RegistererRegisterOptions; private shouldBeConnected = false; private shouldBeRegistered = false; @@ -74,6 +80,8 @@ export class SessionManager { managedSessionFactory: defaultManagedSessionFactory(), maxSimultaneousSessions: 2, media: {}, + optionsPingInterval: -1, + optionsPingRequestURI: "", reconnectionAttempts: 3, reconnectionDelay: 4, registrationRetry: false, @@ -127,21 +135,36 @@ export class SessionManager { if (this.delegate && this.delegate.onServerConnect) { this.delegate.onServerConnect(); } - // Attempt to register if we are supposed to be registered. + // Attempt to register if we are supposed to be registered if (this.shouldBeRegistered) { this.register(); } + // Start OPTIONS pings if we are to be pinging + if (this.options.optionsPingInterval > 0) { + this.optionsPingStart(); + } }, // Handle connection with server lost onDisconnect: async (error?: Error): Promise => { this.logger.log(`Disconnected`); + + // Stop OPTIONS ping if need be. + let optionsPingFailure = false; + if (this.options.optionsPingInterval > 0) { + optionsPingFailure = this.optionsPingFailure; + this.optionsPingFailure = false; + this.optionsPingStop(); + } + + // Let delgate know we have disconnected if (this.delegate && this.delegate.onServerDisconnect) { this.delegate.onServerDisconnect(error); } + // If the user called `disconnect` a graceful cleanup will be done therein. // Only cleanup if network/server dropped the connection. // Only reconnect if network/server dropped the connection - if (error) { + if (error || optionsPingFailure) { // There is no transport at this point, so we are not expecting to be able to // send messages much less get responses. So just dispose of everything without // waiting for anything to succeed. @@ -266,12 +289,25 @@ export class SessionManager { } }); - // Before unload, clean up and disconnect. + // NOTE: The autoStop option does not currently work as one likley expects. + // This code is here because the "autoStop behavior" and this assoicated + // implemenation has been a recurring request. So instead of removing + // the implementation again (because it doesn't work) and then having + // to explain agian the issue over and over again to those who want it, + // we have included it here to break that cycle. The implementation is + // harmless and serves to provide an explaination for those interested. if (this.options.autoStop) { + // Standard operation workflow will resume after this callback exits, meaning + // that any asynchronous operations are likely not going to be finished, especially + // if they are guaranteed to not be executed in the current tick (promises fall + // under this category, they will never be resolved synchronously by design). window.addEventListener("beforeunload", async () => { this.shouldBeConnected = false; this.shouldBeRegistered = false; - await this.userAgent.stop(); + if (this.userAgent.state !== UserAgentState.Stopped) { + // The stop() method returns a promise which will not resolve before the page unloads. + await this.userAgent.stop(); + } }); } } @@ -1167,6 +1203,130 @@ export class SessionManager { }; } + /** + * Periodically send OPTIONS pings and disconnect when a ping fails. + * @param requestURI - Request URI to target + * @param fromURI - From URI + * @param toURI - To URI + */ + private optionsPingRun(requestURI: URI, fromURI: URI, toURI: URI): void { + // Guard against nvalid interval + if (this.options.optionsPingInterval < 1) { + throw new Error("Invalid options ping interval."); + } + // Guard against sending a ping when there is one outstanading + if (this.optionsPingRunning) { + return; + } + this.optionsPingRunning = true; + + // Setup next ping to run in future + this.optionsPingTimeout = setTimeout(() => { + this.optionsPingTimeout = undefined; + + // If ping succeeds... + const onPingSuccess = () => { + // record success or failure + this.optionsPingFailure = false; + // if we are still running, queue up the next ping + if (this.optionsPingRunning) { + this.optionsPingRunning = false; + this.optionsPingRun(requestURI, fromURI, toURI); + } + }; + + // If ping fails... + const onPingFailure = () => { + this.logger.error("OPTIONS ping failed"); + // record success or failure + this.optionsPingFailure = true; + // stop running + this.optionsPingRunning = false; + // disconnect the transport + this.userAgent.transport.disconnect().catch((error) => this.logger.error(error)); + }; + + // Create an OPTIONS request message + const core = this.userAgent.userAgentCore; + const message = core.makeOutgoingRequestMessage("OPTIONS", requestURI, fromURI, toURI, {}); + + // Send the request message + this.optionsPingRequest = core.request(message, { + onAccept: () => { + this.optionsPingRequest = undefined; + onPingSuccess(); + }, + onReject: (response) => { + this.optionsPingRequest = undefined; + // Ping fails on following responses... + // - 408 Request Timeout (no response was received) + // - 503 Service Unavailable (a transport layer error occured) + if (response.message.statusCode === 408 || response.message.statusCode === 503) { + onPingFailure(); + } else { + onPingSuccess(); + } + } + }); + }, this.options.optionsPingInterval * 1000); + } + + /** + * Start sending OPTIONS pings. + */ + private optionsPingStart(): void { + this.logger.log(`OPTIONS pings started`); + + // Create the URIs needed to send OPTIONS pings + let requestURI, fromURI, toURI; + if (this.options.optionsPingRequestURI) { + // Use whatever specific RURI is provided. + requestURI = UserAgent.makeURI(this.options.optionsPingRequestURI); + if (!requestURI) { + throw new Error("Failed to create Request URI."); + } + // Use the user agent's contact URI for From and To URIs + fromURI = this.userAgent.contact.uri.clone(); + toURI = this.userAgent.contact.uri.clone(); + } else if (this.options.aor) { + // Otherwise use the AOR provided to target the assocated registrar server. + const uri = UserAgent.makeURI(this.options.aor); + if (!uri) { + throw new Error("Failed to create URI."); + } + requestURI = uri.clone(); + requestURI.user = undefined; // target the registrar server + fromURI = uri.clone(); + toURI = uri.clone(); + } else { + this.logger.error( + "You have enabled sending OPTIONS pings and as such you must provide either " + + "a) an AOR to register, or b) an RURI to use for the target of the OPTIONS ping requests. " + ); + return; + } + + // Send the OPTIONS pings + this.optionsPingRun(requestURI, fromURI, toURI); + } + + /** + * Stop sending OPTIONS pings. + */ + private optionsPingStop(): void { + this.logger.log(`OPTIONS pings stopped`); + this.optionsPingRunning = false; + this.optionsPingFailure = false; + if (this.optionsPingRequest) { + this.optionsPingRequest.dispose(); + this.optionsPingRequest = undefined; + } + if (this.optionsPingTimeout) { + clearTimeout(this.optionsPingTimeout); + this.optionsPingTimeout = undefined; + } + } + /** Helper function to init send then send invite. */ private async sendInvite( inviter: Inviter, From b6550bdef8b49a6240bc8b162dd12d618b3a0a04 Mon Sep 17 00:00:00 2001 From: John Riordan Date: Thu, 27 Oct 2022 14:06:41 -0400 Subject: [PATCH 71/73] Update docs --- docs/session-manager/sip.js.sessionmanageroptions.md | 2 ++ etc/session-manager/sip.js.api.md | 2 ++ 2 files changed, 4 insertions(+) diff --git a/docs/session-manager/sip.js.sessionmanageroptions.md b/docs/session-manager/sip.js.sessionmanageroptions.md index d1b07e26f..26c51475b 100644 --- a/docs/session-manager/sip.js.sessionmanageroptions.md +++ b/docs/session-manager/sip.js.sessionmanageroptions.md @@ -23,6 +23,8 @@ export interface SessionManagerOptions | [managedSessionFactory](./sip.js.sessionmanageroptions.managedsessionfactory.md) | | [ManagedSessionFactory](./sip.js.managedsessionfactory.md) | A factory for generating ManagedSession instances. | | [maxSimultaneousSessions](./sip.js.sessionmanageroptions.maxsimultaneoussessions.md) | | number | Maximum number of simultaneous sessions to manage. | | [media](./sip.js.sessionmanageroptions.media.md) | | [SessionManagerMedia](./sip.js.sessionmanagermedia.md) | Media options. | +| [optionsPingInterval](./sip.js.sessionmanageroptions.optionspinginterval.md) | | number | If defined, SIP OPTIONS pings will be sent separated by this interval in seconds. | +| [optionsPingRequestURI](./sip.js.sessionmanageroptions.optionspingrequesturi.md) | | string | The request URI to use for SIP OPTIONS pings. | | [reconnectionAttempts](./sip.js.sessionmanageroptions.reconnectionattempts.md) | | number | Maximum number of times to attempt to reconnection. | | [reconnectionDelay](./sip.js.sessionmanageroptions.reconnectiondelay.md) | | number | Seconds to wait between reconnection attempts. | | [registererOptions](./sip.js.sessionmanageroptions.registereroptions.md) | | RegistererOptions | Options for Registerer. | diff --git a/etc/session-manager/sip.js.api.md b/etc/session-manager/sip.js.api.md index 424bfe89f..a0c7bff23 100644 --- a/etc/session-manager/sip.js.api.md +++ b/etc/session-manager/sip.js.api.md @@ -123,6 +123,8 @@ export interface SessionManagerOptions { managedSessionFactory?: ManagedSessionFactory; maxSimultaneousSessions?: number; media?: SessionManagerMedia; + optionsPingInterval?: number; + optionsPingRequestURI?: string; reconnectionAttempts?: number; reconnectionDelay?: number; // Warning: (ae-forgotten-export) The symbol "RegistererOptions" needs to be exported by the entry point index.d.ts From 2e1c525279c8d6deebb6ecaf3d14477ab7b63310 Mon Sep 17 00:00:00 2001 From: John Riordan Date: Thu, 27 Oct 2022 14:07:20 -0400 Subject: [PATCH 72/73] Version 0.21.2 --- package-lock.json | 4 ++-- package.json | 2 +- src/version.ts | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index a1ca792b9..133419bcb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "sip.js", - "version": "0.21.1", + "version": "0.21.2", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "sip.js", - "version": "0.21.1", + "version": "0.21.2", "license": "MIT", "devDependencies": { "@microsoft/api-documenter": "^7.19.22", diff --git a/package.json b/package.json index 2e75aa900..6cbe5beb9 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "sip.js", "title": "SIP.js", "description": "A SIP library for JavaScript", - "version": "0.21.1", + "version": "0.21.2", "license": "MIT", "main": "./lib/index.js", "files": [ diff --git a/src/version.ts b/src/version.ts index f57edfb48..7e2107101 100644 --- a/src/version.ts +++ b/src/version.ts @@ -1 +1 @@ -export const LIBRARY_VERSION = "0.21.1"; +export const LIBRARY_VERSION = "0.21.2"; From c9a6e289209f7b2c5711483fa1c32e6ecd24f534 Mon Sep 17 00:00:00 2001 From: netdad1712 Date: Sun, 12 Mar 2023 12:48:16 +0200 Subject: [PATCH 73/73] align with source sipJS source --- src/api/user-agent-options.ts | 2 +- src/core/messages/digest-authentication.ts | 10 +++------- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/src/api/user-agent-options.ts b/src/api/user-agent-options.ts index 955d1b6f4..5eb037d72 100644 --- a/src/api/user-agent-options.ts +++ b/src/api/user-agent-options.ts @@ -49,7 +49,7 @@ export interface UserAgentOptions { * Authorization password. * @defaultValue `""` */ - authorizationPassword?: string | Function; + authorizationPassword?: string; /** * Authorization username. diff --git a/src/core/messages/digest-authentication.ts b/src/core/messages/digest-authentication.ts index dfc93ed64..d5ea2663e 100644 --- a/src/core/messages/digest-authentication.ts +++ b/src/core/messages/digest-authentication.ts @@ -20,7 +20,7 @@ export class DigestAuthentication { private logger: Logger; private ha1: string | undefined; private username: string | undefined; - private password: string | Function | undefined; + private password: string | undefined; private cnonce: string | undefined; private nc: number; private ncHex: string; @@ -43,7 +43,7 @@ export class DigestAuthentication { loggerFactory: LoggerFactory, ha1: string | undefined, username: string | undefined, - password: string | Function | undefined + password: string | undefined ) { this.logger = loggerFactory.getLogger("sipjs.digestauthentication"); this.username = username; @@ -168,11 +168,7 @@ export class DigestAuthentication { // HA1 = MD5(A1) = MD5(username:realm:password) ha1 = this.ha1; if (ha1 === "" || ha1 === undefined) { - if (typeof this.password === "function") { - ha1 = MD5(this.username + ":" + this.realm + ":" + this.password()); - } else { - ha1 = MD5(this.username + ":" + this.realm + ":" + this.password); - } + ha1 = MD5(this.username + ":" + this.realm + ":" + this.password); } if (this.qop === "auth") {