diff --git a/.bin/ets.js b/.bin/ets.js index 2d10271..435d02b 100755 --- a/.bin/ets.js +++ b/.bin/ets.js @@ -54,6 +54,14 @@ program deploy(env); }); +program + .command("snippets") + .requiredOption("-t, --type ", "There are two sets of snippets, eluna: server side events and wowapi: used for building UIs for AIO/Addons", 'eluna') + .description("This installs snippets that enable shortcuts to generating code in vscode. The snippets are copied to the current vscode project directory prefixed by type") + .action(async ({type}) => { + installSnippets(type); + }); + program.parse(process.argv); /** @@ -348,6 +356,31 @@ function buildModules(luaDir, moduleDir, watch, liveReload) { } + /** + * This will install snippets into the current project + * @param {string} type - eluna | wowapi + */ + async function installSnippets(type) { + if(type !== 'eluna' && type !== 'wowapi') { + log.error("Invalid snippet type. Must be eluna or wowapi"); + process.exit(1); + } + + if(type === 'wowapi') { + log.error("wowapi snippets not yet implemented, in development add a comment to existing feature request to raise priority."); + process.exit(1); + } + + const snippetsFile = path.resolve(__dirname, `../dist/.vscode/${type}.code-snippets`); + const vscodeDir = path.resolve(process.cwd(), '.vscode'); + + if(!fs.existsSync(vscodeDir)) { + fs.mkdirSync(vscodeDir); + } + + fs.copyFileSync(snippetsFile, path.resolve(vscodeDir, `${type}.code-snippets`)); + } + /** * Get Environment Variable if found or return false. * @param {string} name diff --git a/.gitignore b/.gitignore index 10ddd3b..7d71468 100644 --- a/.gitignore +++ b/.gitignore @@ -30,3 +30,6 @@ node_modules/ examples old-modules +.vscode/eluna.code-snippets + +deprecated diff --git a/package-lock.json b/package-lock.json index 0f94e3b..a6072b7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,15 +1,15 @@ { "name": "wow-eluna-ts-module", - "version": "1.9.6", + "version": "1.10.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "wow-eluna-ts-module", - "version": "1.9.6", + "version": "1.10.0", "license": "AGPL-3.0-or-later", "dependencies": { - "@araxiaonline/wow-wotlk-declarations": "^3.3.5-3", + "@araxiaonline/wow-wotlk-declarations": "^3.3.5-7", "@typescript-to-lua/language-extensions": "^1.19.0", "commander": "^7.2.0", "dotenv": "^9.0.2", @@ -26,30 +26,15 @@ "ets": ".bin/ets.js" }, "devDependencies": { - "@golevelup/ts-jest": "^0.3.1", - "@types/jest": "^29.5.4", - "jest": "^29.6.4", + "@types/jest": "^29.5.12", "tslint": "^6.1.3", "typescript": "^5.2.2" } }, - "node_modules/@ampproject/remapping": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", - "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", - "dev": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, "node_modules/@araxiaonline/wow-wotlk-declarations": { - "version": "3.3.5-3", - "resolved": "https://registry.npmjs.org/@araxiaonline/wow-wotlk-declarations/-/wow-wotlk-declarations-3.3.5-3.tgz", - "integrity": "sha512-iZ85TJWDgWwqMf7dWB/x42bwTorqGdHqxBhkySyUbp/zhe5oq/AKok9RG5+FTsRNFhuWiWR0z2Aoi9yK2QjARQ==" + "version": "3.3.5-8", + "resolved": "https://registry.npmjs.org/@araxiaonline/wow-wotlk-declarations/-/wow-wotlk-declarations-3.3.5-8.tgz", + "integrity": "sha512-E8xoJph6EddGBu+9hI6VZ5FJNeVYWQog3GXV5MyIILchS5aDhJaix/2trhe8NWWyhZqaPJQrzB+psCFp76HY0A==" }, "node_modules/@babel/code-frame": { "version": "7.22.13", @@ -135,183 +120,6 @@ "node": ">=4" } }, - "node_modules/@babel/compat-data": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.3.tgz", - "integrity": "sha512-BmR4bWbDIoFJmJ9z2cZ8Gmm2MXgEDgjdWgpKmKWUt54UGFJdlj31ECtbaDvCG/qVdG3AQ1SfpZEs01lUFbzLOQ==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.3.tgz", - "integrity": "sha512-Jg+msLuNuCJDyBvFv5+OKOUjWMZgd85bKjbICd3zWrKAo+bJ49HJufi7CQE0q0uR8NGyO6xkCACScNqyjHSZew==", - "dev": true, - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.22.13", - "@babel/generator": "^7.23.3", - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helpers": "^7.23.2", - "@babel/parser": "^7.23.3", - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.3", - "@babel/types": "^7.23.3", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/generator": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.3.tgz", - "integrity": "sha512-keeZWAV4LU3tW0qRi19HRpabC/ilM0HRBBzf9/k8FFiG4KVpiv0FIy4hHfLfFQZNhziCTPTmd59zoyv6DNISzg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.23.3", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz", - "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.22.9", - "@babel/helper-validator-option": "^7.22.15", - "browserslist": "^4.21.9", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", - "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", - "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", - "dev": true, - "dependencies": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", - "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", - "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.15" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", - "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", - "dev": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/helper-validator-identifier": "^7.22.20" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", - "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-simple-access": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", - "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", - "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-validator-identifier": { "version": "7.22.20", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", @@ -321,29 +129,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-validator-option": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz", - "integrity": "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.2.tgz", - "integrity": "sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ==", - "dev": true, - "dependencies": { - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.2", - "@babel/types": "^7.23.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/highlight": { "version": "7.22.20", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", @@ -429,250 +214,6 @@ "node": ">=4" } }, - "node_modules/@babel/parser": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.3.tgz", - "integrity": "sha512-uVsWNvlVsIninV2prNz/3lHCb+5CJ+e+IUBfbjToAHODtfGYLfCFuY4AU7TskI+dAKk+njsPiBjq1gKTvZOBaw==", - "dev": true, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-bigint": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", - "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz", - "integrity": "sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.23.3.tgz", - "integrity": "sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/template": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", - "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/parser": "^7.22.15", - "@babel/types": "^7.22.15" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.3.tgz", - "integrity": "sha512-+K0yF1/9yR0oHdE0StHuEj3uTPzwwbrLGfNOndVJVV2TqA5+j3oljJUb4nmB954FLGjNem976+B+eDuLIjesiQ==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/generator": "^7.23.3", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.3", - "@babel/types": "^7.23.3", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/types": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.3.tgz", - "integrity": "sha512-OZnvoH2l8PK5eUvEcUyCt/sXgr/h+UWpVuBbOljwcrAgUl6lpchoQ++PHGyQy1AtYnVA6CEq3y5xeEI10brpXw==", - "dev": true, - "dependencies": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.20", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true - }, "node_modules/@cspotcode/source-map-support": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", @@ -693,129 +234,6 @@ "@jridgewell/sourcemap-codec": "^1.4.10" } }, - "node_modules/@golevelup/ts-jest": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/@golevelup/ts-jest/-/ts-jest-0.3.8.tgz", - "integrity": "sha512-2H4XzpCHwoUs2P13tzwVzj+AYspbFGKwMr94WK5eHiDBKgx0j4QGgLQh1wgM18DjhN7jdntrzVMoQRie6kZhnw==", - "dev": true - }, - "node_modules/@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "dev": true, - "dependencies": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/console": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", - "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", - "dev": true, - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/core": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", - "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", - "dev": true, - "dependencies": { - "@jest/console": "^29.7.0", - "@jest/reporters": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-changed-files": "^29.7.0", - "jest-config": "^29.7.0", - "jest-haste-map": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-resolve-dependencies": "^29.7.0", - "jest-runner": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "jest-watcher": "^29.7.0", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/@jest/environment": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", - "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", - "dev": true, - "dependencies": { - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-mock": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/expect": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", - "dev": true, - "dependencies": { - "expect": "^29.7.0", - "jest-snapshot": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, "node_modules/@jest/expect-utils": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", @@ -828,81 +246,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jest/fake-timers": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", - "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", - "dev": true, - "dependencies": { - "@jest/types": "^29.6.3", - "@sinonjs/fake-timers": "^10.0.2", - "@types/node": "*", - "jest-message-util": "^29.7.0", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/globals": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", - "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", - "dev": true, - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/expect": "^29.7.0", - "@jest/types": "^29.6.3", - "jest-mock": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/reporters": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", - "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", - "dev": true, - "dependencies": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@jridgewell/trace-mapping": "^0.3.18", - "@types/node": "*", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^6.0.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.1.3", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "jest-worker": "^29.7.0", - "slash": "^3.0.0", - "string-length": "^4.0.1", - "strip-ansi": "^6.0.0", - "v8-to-istanbul": "^9.0.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, "node_modules/@jest/schemas": { "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", @@ -915,76 +258,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jest/source-map": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", - "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", - "dev": true, - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.18", - "callsites": "^3.0.0", - "graceful-fs": "^4.2.9" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/test-result": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", - "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", - "dev": true, - "dependencies": { - "@jest/console": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/test-sequencer": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", - "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", - "dev": true, - "dependencies": { - "@jest/test-result": "^29.7.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/transform": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", - "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", - "dev": true, - "dependencies": { - "@babel/core": "^7.11.6", - "@jest/types": "^29.6.3", - "@jridgewell/trace-mapping": "^0.3.18", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^2.0.0", - "fast-json-stable-stringify": "^2.1.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "write-file-atomic": "^4.0.2" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, "node_modules/@jest/types": { "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", @@ -1002,20 +275,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", - "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.1", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", @@ -1024,54 +283,17 @@ "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/sourcemap-codec": { "version": "1.4.15", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.20", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", - "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, "node_modules/@sinclair/typebox": { "version": "0.27.8", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", "dev": true }, - "node_modules/@sinonjs/commons": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz", - "integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==", - "dev": true, - "dependencies": { - "type-detect": "4.0.8" - } - }, - "node_modules/@sinonjs/fake-timers": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", - "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", - "dev": true, - "dependencies": { - "@sinonjs/commons": "^3.0.0" - } - }, "node_modules/@tsconfig/node10": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", @@ -1092,56 +314,6 @@ "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==" }, - "node_modules/@types/babel__core": { - "version": "7.20.4", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.4.tgz", - "integrity": "sha512-mLnSC22IC4vcWiuObSRjrLd9XcBTGf59vUSoq2jkQDJ/QQ8PMI9rSuzE+aEV8karUMbskw07bKYoUJCKTUaygg==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "node_modules/@types/babel__generator": { - "version": "7.6.7", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.7.tgz", - "integrity": "sha512-6Sfsq+EaaLrw4RmdFWE9Onp63TOUue71AWb4Gpa6JxzgTYtimbM086WnYTy2U67AofR++QKCo08ZP6pwx8YFHQ==", - "dev": true, - "dependencies": { - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__template": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", - "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__traverse": { - "version": "7.20.4", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.4.tgz", - "integrity": "sha512-mSM/iKUk5fDDrEV/e83qY+Cr3I1+Q3qqTuEn++HAWYjEa1+NxZr6CNrcJGf2ZTnq4HoFGC3zaTPZTobCzCFukA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.20.7" - } - }, - "node_modules/@types/graceful-fs": { - "version": "4.1.9", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", - "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, "node_modules/@types/istanbul-lib-coverage": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", @@ -1167,9 +339,9 @@ } }, "node_modules/@types/jest": { - "version": "29.5.8", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.8.tgz", - "integrity": "sha512-fXEFTxMV2Co8ZF5aYFJv+YeA08RTYJfhtN5c9JSv/mFEMe+xxjufCb+PHL+bJcMs/ebPUsBu+UNTEz+ydXrR6g==", + "version": "29.5.12", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.12.tgz", + "integrity": "sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw==", "dev": true, "dependencies": { "expect": "^29.0.0", @@ -1191,9 +363,9 @@ "dev": true }, "node_modules/@types/yargs": { - "version": "17.0.31", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.31.tgz", - "integrity": "sha512-bocYSx4DI8TmdlvxqGpVNXOgCNR1Jj0gNPhhAY+iz1rgKDAaYrAYdFYnhDV1IFuiuVc9HkOwyDcFxaTElF3/wg==", + "version": "17.0.32", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", + "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", "dev": true, "dependencies": { "@types/yargs-parser": "*" @@ -1229,30 +401,6 @@ "node": ">=0.4.0" } }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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", @@ -1268,19 +416,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/arg": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", @@ -1303,113 +438,6 @@ "safer-buffer": "~2.1.0" } }, - "node_modules/babel-jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", - "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", - "dev": true, - "dependencies": { - "@jest/transform": "^29.7.0", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^29.6.3", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.8.0" - } - }, - "node_modules/babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", - "dev": true, - "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-plugin-jest-hoist": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", - "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", - "dev": true, - "dependencies": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.1.14", - "@types/babel__traverse": "^7.0.6" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/babel-preset-current-node-syntax": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", - "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", - "dev": true, - "dependencies": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.8.3", - "@babel/plugin-syntax-import-meta": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-top-level-await": "^7.8.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/babel-preset-jest": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", - "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", - "dev": true, - "dependencies": { - "babel-plugin-jest-hoist": "^29.6.3", - "babel-preset-current-node-syntax": "^1.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -1446,53 +474,6 @@ "node": ">=8" } }, - "node_modules/browserslist": { - "version": "4.22.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz", - "integrity": "sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.30001541", - "electron-to-chromium": "^1.4.535", - "node-releases": "^2.0.13", - "update-browserslist-db": "^1.0.13" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", - "dev": true, - "dependencies": { - "node-int64": "^0.4.0" - } - }, - "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/buildcheck": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/buildcheck/-/buildcheck-0.0.6.tgz", @@ -1511,44 +492,6 @@ "node": ">=0.10.0" } }, - "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/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001561", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001561.tgz", - "integrity": "sha512-NTt0DNoKe958Q0BE0j0c1V9jbUzhBxHIEJy7asmGrpE0yG63KTV7PLHPnK2E1O9RsQrQ081I3NLuXGS6zht3cw==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ] - }, "node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -1565,15 +508,6 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/char-regex": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", - "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, "node_modules/ci-info": { "version": "3.9.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", @@ -1589,42 +523,6 @@ "node": ">=8" } }, - "node_modules/cjs-module-lexer": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz", - "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==", - "dev": true - }, - "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", - "dev": true, - "engines": { - "iojs": ">= 1.0.0", - "node": ">= 0.12.0" - } - }, - "node_modules/collect-v8-coverage": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", - "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", - "dev": true - }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -1657,12 +555,6 @@ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true }, - "node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true - }, "node_modules/cpu-features": { "version": "0.0.9", "resolved": "https://registry.npmjs.org/cpu-features/-/cpu-features-0.0.9.tgz", @@ -1677,27 +569,6 @@ "node": ">=10.0.0" } }, - "node_modules/create-jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", - "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", - "dev": true, - "dependencies": { - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-config": "^29.7.0", - "jest-util": "^29.7.0", - "prompts": "^2.0.1" - }, - "bin": { - "create-jest": "bin/create-jest.js" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, "node_modules/create-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", @@ -1716,55 +587,6 @@ "node": ">= 8" } }, - "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/dedent": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.1.tgz", - "integrity": "sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==", - "dev": true, - "peerDependencies": { - "babel-plugin-macros": "^3.1.0" - }, - "peerDependenciesMeta": { - "babel-plugin-macros": { - "optional": true - } - } - }, - "node_modules/deepmerge": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/detect-newline": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", - "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/diff": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", @@ -1795,30 +617,6 @@ "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==" }, - "node_modules/electron-to-chromium": { - "version": "1.4.582", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.582.tgz", - "integrity": "sha512-89o0MGoocwYbzqUUjc+VNpeOFSOK9nIdC5wY4N+PVUarUK0MtjyTjks75AZS2bW4Kl8MdewdFsWaH0jLy+JNoA==", - "dev": true - }, - "node_modules/emittery": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", - "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sindresorhus/emittery?sponsor=1" - } - }, - "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/enhanced-resolve": { "version": "5.15.0", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", @@ -1831,24 +629,6 @@ "node": ">=10.13.0" } }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "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-string-regexp": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", @@ -1885,38 +665,6 @@ "through": "~2.3.1" } }, - "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "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/exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, "node_modules/expect": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", @@ -1933,21 +681,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "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/fb-watchman": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", - "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", - "dev": true, - "dependencies": { - "bser": "2.1.1" - } - }, "node_modules/fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -1960,19 +693,6 @@ "node": ">=8" } }, - "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/from": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz", @@ -1997,20 +717,6 @@ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "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.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", @@ -2019,45 +725,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "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-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "dev": true, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", @@ -2078,15 +745,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", @@ -2112,49 +770,6 @@ "node": ">= 0.4" } }, - "node_modules/html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true - }, - "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/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", @@ -2171,12 +786,6 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true - }, "node_modules/is-core-module": { "version": "2.13.1", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", @@ -2188,24 +797,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "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-generator-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -2215,271 +806,11 @@ "node": ">=0.12.0" } }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" }, - "node_modules/istanbul-lib-coverage": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", - "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-instrument": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.1.tgz", - "integrity": "sha512-EAMEJBsYuyyztxMxW3g7ugGPkrZsV57v0Hmv3mm1uQsmB+QnZuepg731CRaIgeUVSdmsTngOkSnauNF8p7FIhA==", - "dev": true, - "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^7.5.4" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-instrument/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/istanbul-lib-instrument/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-instrument/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/istanbul-lib-report": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", - "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", - "dev": true, - "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^4.0.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-source-maps": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", - "dev": true, - "dependencies": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-reports": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz", - "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==", - "dev": true, - "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", - "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", - "dev": true, - "dependencies": { - "@jest/core": "^29.7.0", - "@jest/types": "^29.6.3", - "import-local": "^3.0.2", - "jest-cli": "^29.7.0" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/jest-changed-files": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", - "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", - "dev": true, - "dependencies": { - "execa": "^5.0.0", - "jest-util": "^29.7.0", - "p-limit": "^3.1.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-circus": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", - "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", - "dev": true, - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/expect": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "dedent": "^1.0.0", - "is-generator-fn": "^2.0.0", - "jest-each": "^29.7.0", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "p-limit": "^3.1.0", - "pretty-format": "^29.7.0", - "pure-rand": "^6.0.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-cli": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", - "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", - "dev": true, - "dependencies": { - "@jest/core": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "create-jest": "^29.7.0", - "exit": "^0.1.2", - "import-local": "^3.0.2", - "jest-config": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "yargs": "^17.3.1" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/jest-config": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", - "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", - "dev": true, - "dependencies": { - "@babel/core": "^7.11.6", - "@jest/test-sequencer": "^29.7.0", - "@jest/types": "^29.6.3", - "babel-jest": "^29.7.0", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-circus": "^29.7.0", - "jest-environment-node": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-runner": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "micromatch": "^4.0.4", - "parse-json": "^5.2.0", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@types/node": "*", - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "ts-node": { - "optional": true - } - } - }, "node_modules/jest-diff": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", @@ -2495,51 +826,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-docblock": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", - "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", - "dev": true, - "dependencies": { - "detect-newline": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-each": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", - "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", - "dev": true, - "dependencies": { - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "jest-get-type": "^29.6.3", - "jest-util": "^29.7.0", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-environment-node": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", - "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", - "dev": true, - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, "node_modules/jest-get-type": { "version": "29.6.3", "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", @@ -2549,44 +835,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-haste-map": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", - "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", - "dev": true, - "dependencies": { - "@jest/types": "^29.6.3", - "@types/graceful-fs": "^4.1.3", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "jest-worker": "^29.7.0", - "micromatch": "^4.0.4", - "walker": "^1.0.8" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" - } - }, - "node_modules/jest-leak-detector": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", - "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", - "dev": true, - "dependencies": { - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, "node_modules/jest-matcher-utils": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", @@ -2622,208 +870,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-mock": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", - "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", - "dev": true, - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-util": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-pnp-resolver": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", - "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", - "dev": true, - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "jest-resolve": "*" - }, - "peerDependenciesMeta": { - "jest-resolve": { - "optional": true - } - } - }, - "node_modules/jest-regex-util": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", - "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", - "dev": true, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-resolve": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", - "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "resolve": "^1.20.0", - "resolve.exports": "^2.0.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-resolve-dependencies": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", - "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", - "dev": true, - "dependencies": { - "jest-regex-util": "^29.6.3", - "jest-snapshot": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-runner": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", - "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", - "dev": true, - "dependencies": { - "@jest/console": "^29.7.0", - "@jest/environment": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.13.1", - "graceful-fs": "^4.2.9", - "jest-docblock": "^29.7.0", - "jest-environment-node": "^29.7.0", - "jest-haste-map": "^29.7.0", - "jest-leak-detector": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-resolve": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-util": "^29.7.0", - "jest-watcher": "^29.7.0", - "jest-worker": "^29.7.0", - "p-limit": "^3.1.0", - "source-map-support": "0.5.13" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-runtime": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", - "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", - "dev": true, - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/fake-timers": "^29.7.0", - "@jest/globals": "^29.7.0", - "@jest/source-map": "^29.6.3", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "cjs-module-lexer": "^1.0.0", - "collect-v8-coverage": "^1.0.0", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-mock": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "slash": "^3.0.0", - "strip-bom": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-snapshot": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", - "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", - "dev": true, - "dependencies": { - "@babel/core": "^7.11.6", - "@babel/generator": "^7.7.2", - "@babel/plugin-syntax-jsx": "^7.7.2", - "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/types": "^7.3.3", - "@jest/expect-utils": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "babel-preset-current-node-syntax": "^1.0.0", - "chalk": "^4.0.0", - "expect": "^29.7.0", - "graceful-fs": "^4.2.9", - "jest-diff": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "natural-compare": "^1.4.0", - "pretty-format": "^29.7.0", - "semver": "^7.5.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-snapshot/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/jest-snapshot/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/jest-snapshot/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/jest-util": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", @@ -2841,84 +887,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-validate": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", - "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", - "dev": true, - "dependencies": { - "@jest/types": "^29.6.3", - "camelcase": "^6.2.0", - "chalk": "^4.0.0", - "jest-get-type": "^29.6.3", - "leven": "^3.1.0", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-validate/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-watcher": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", - "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", - "dev": true, - "dependencies": { - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "emittery": "^0.13.1", - "jest-util": "^29.7.0", - "string-length": "^4.0.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-worker": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", - "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", - "dev": true, - "dependencies": { - "@types/node": "*", - "jest-util": "^29.7.0", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.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/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -2938,36 +906,6 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "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/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/jsonfile": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", @@ -2979,134 +917,26 @@ "graceful-fs": "^4.1.6" } }, - "node_modules/kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true - }, - "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/lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, - "node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "dependencies": { - "yallist": "^3.0.2" - } - }, "node_modules/lua-types": { "version": "2.13.1", "resolved": "https://registry.npmjs.org/lua-types/-/lua-types-2.13.1.tgz", "integrity": "sha512-rRwtvX6kS+5MpuO3xpvKsnYjdSDDI064Qq1OqX8gY+r+0l7m3dFLiZPDFoHqH22jaBpEvcHcPs6+WD7qkdmFsA==" }, - "node_modules/make-dir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", - "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", - "dev": true, - "dependencies": { - "semver": "^7.5.3" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/make-dir/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/make-dir/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/make-dir/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/make-error": { "version": "1.3.6", "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==" }, - "node_modules/makeerror": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", - "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", - "dev": true, - "dependencies": { - "tmpl": "1.0.5" - } - }, "node_modules/map-stream": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz", "integrity": "sha512-CkYQrPYZfWnu/DAmVCpTSX/xHpKZ80eKh2lAkyA6AJTef6bW+6JpbQZN5rofum7da+SyN1bi5ctTm+lTfcCW3g==" }, - "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.5", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", @@ -3120,15 +950,6 @@ "node": ">=8.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.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -3162,41 +983,17 @@ "mkdirp": "bin/cmd.js" } }, - "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/nan": { "version": "2.18.0", "resolved": "https://registry.npmjs.org/nan/-/nan-2.18.0.tgz", "integrity": "sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w==", "optional": 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/node-cleanup": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/node-cleanup/-/node-cleanup-2.1.2.tgz", "integrity": "sha512-qN8v/s2PAJwGUtr1/hYTpNKlD6Y9rc4p8KSmJXyGdYGZsDGKXrGThikLFP9OCHFeLeEpQzPwiAtdIvBLqm//Hw==" }, - "node_modules/node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", - "dev": true - }, - "node_modules/node-releases": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", - "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", - "dev": true - }, "node_modules/node-scp": { "version": "0.0.23", "resolved": "https://registry.npmjs.org/node-scp/-/node-scp-0.0.23.tgz", @@ -3205,27 +1002,6 @@ "ssh2": "^1.14.0" } }, - "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/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -3235,99 +1011,6 @@ "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/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": "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/p-locate/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/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/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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", @@ -3358,12 +1041,6 @@ "through": "~2.3" } }, - "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", @@ -3375,27 +1052,6 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/pirates": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", - "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "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/pretty-format": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", @@ -3422,19 +1078,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/prompts": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", - "dev": true, - "dependencies": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/ps-tree": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/ps-tree/-/ps-tree-1.2.0.tgz", @@ -3449,37 +1092,12 @@ "node": ">= 0.10" } }, - "node_modules/pure-rand": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.4.tgz", - "integrity": "sha512-LA0Y9kxMYv47GIPJy6MI84fqTd2HmYZI83W/kM/SkKfDlajnZYfmXFTxkbY+xSBPkLJxltMa9hIkmdc29eguMA==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/dubzzz" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fast-check" - } - ] - }, "node_modules/react-is": { "version": "18.2.0", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", "dev": true }, - "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/resolve": { "version": "1.22.8", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", @@ -3496,50 +1114,11 @@ "url": "https://github.com/sponsors/ljharb" } }, - "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-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.exports": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", - "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", - "dev": true, - "engines": { - "node": ">=10" - } - }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, - "node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -3559,18 +1138,6 @@ "node": ">=8" } }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, - "node_modules/sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true - }, "node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -3580,25 +1147,6 @@ "node": ">=8" } }, - "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.13", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", - "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", - "dev": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, "node_modules/split": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz", @@ -3661,75 +1209,6 @@ "node": ">=0.6.19" } }, - "node_modules/string-length": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", - "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", - "dev": true, - "dependencies": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "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-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "dev": true, - "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": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -3761,40 +1240,11 @@ "node": ">=6" } }, - "node_modules/test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dev": true, - "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" }, - "node_modules/tmpl": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", - "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", - "dev": true - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -4009,27 +1459,6 @@ "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==" }, - "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/typescript": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", @@ -4084,64 +1513,11 @@ "node": ">= 10.0.0" } }, - "node_modules/update-browserslist-db": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", - "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, "node_modules/v8-compile-cache-lib": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==" }, - "node_modules/v8-to-istanbul": { - "version": "9.1.3", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.3.tgz", - "integrity": "sha512-9lDD+EVI2fjFsMWXc6dy5JJzBsVTcQ2fVkfBvncZ6xJWG9wtBhOldG+mHkSL0+V1K/xgZz0JDO5UT5hFwHUghg==", - "dev": true, - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.12", - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^2.0.0" - }, - "engines": { - "node": ">=10.12.0" - } - }, - "node_modules/walker": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", - "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", - "dev": true, - "dependencies": { - "makeerror": "1.0.12" - } - }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -4156,84 +1532,12 @@ "node": ">= 8" } }, - "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/write-file-atomic": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", - "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", - "dev": true, - "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "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": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - }, - "node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "dev": true, - "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true, - "engines": { - "node": ">=12" - } - }, "node_modules/yn": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", @@ -4241,18 +1545,6 @@ "engines": { "node": ">=6" } - }, - "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" - } } } } diff --git a/package.json b/package.json index 2152d79..fe61f4b 100644 --- a/package.json +++ b/package.json @@ -1,11 +1,14 @@ { "name": "wow-eluna-ts-module", - "version": "1.9.6", - "description": "Eluna-TS Module building package for mod-eluna for AzerothCore", + "version": "1.10.0", + "description": "ETS Module system for building package for mod-eluna for AzerothCore", "author": { "name": "@ben-of-codecraft (Volek)", "url": "https://github.com/orgs/araxiaonline/repositories" }, + "bugs": { + "url": "https://github.com/araxiaonline/wow-eluna-ts-module/issues" + }, "repository": { "type": "git", "url": "https://github.com/araxiaonline/wow-eluna-ts-module" @@ -29,7 +32,8 @@ "tsconfig.module.json", "tstl.schema.json", "modules/**/*", - "plugins/**/*" + "plugins/**/*", + "dist/.vscode/*" ], "types": "types/index.d.ts", "bin": { @@ -37,10 +41,12 @@ "eluna-reload": ".bin/send-reload-eluna.sh" }, "scripts": { + "prepublishOnly": "node scripts/build-snippets.js", "build": "tstl -p tsconfig.build.json" }, "main": "index.ts", "devDependencies": { + "@types/jest": "^29.5.12", "tslint": "^6.1.3", "typescript": "^5.2.2" }, diff --git a/scripts/build-snippets.js b/scripts/build-snippets.js new file mode 100755 index 0000000..878b26e --- /dev/null +++ b/scripts/build-snippets.js @@ -0,0 +1,40 @@ +#!/usr/bin/env node +const fs = require('fs-extra'); +const path = require('path'); + +/** + * This will combine all the snippets into the dist .vscode directory at publish time. + * @param {string} type + */ +async function buildSnippets(type) { + try { + const snippets = {}; + const snippetsDir = path.join(process.cwd(), 'snippets', type); + const files = await fs.readdir(snippetsDir); + + for (const file of files) { + if (file.endsWith('.code-snippets')) { + const content = await fs.readJson(path.join(snippetsDir, file)); + + Object.assign(snippets, content); + } + } + + const output = path.join(process.cwd(), 'dist', '.vscode'); + await fs.ensureDir(output); + await fs.writeJson(path.join(output, `${type}.code-snippets`),snippets, {spaces: 2}); + } catch (error) { + console.error('Error combining snippets:', error); + } +} + + +( async() => { +// Build Packaged Eluna snippets + await buildSnippets('eluna'); + // Build Package WoW API Snippets +})(); + + + + diff --git a/snippets/eluna/bgevents.code-snippets b/snippets/eluna/bgevents.code-snippets new file mode 100644 index 0000000..67438e5 --- /dev/null +++ b/snippets/eluna/bgevents.code-snippets @@ -0,0 +1,55 @@ +{ + "Battleground Start": { + "prefix": "bg_start", + "body": [ + "const $1: bg_event_on_start = (event: number, bg: BattleGround, bgId: BattleGroundTypeId, instanceId: number) => {", + "\t// Implementation", + "};", + "", + "// Register", + "RegisterBGEvent(BGEvents.BG_EVENT_ON_START, (...args) => $1(...args));" + ], + "description": "Battleground Event on Start", + "scope": "typescript" + }, + "Battleground End": { + "prefix": "bg_end", + "body": [ + "const $1: bg_event_on_end = (event: number, bg: BattleGround, bgId: BattleGroundTypeId, instanceId: number, winner: Team) => {", + "\t// Implementation", + "};", + "", + "// Register", + "RegisterBGEvent(BGEvents.BG_EVENT_ON_END, (...args) => $1(...args));" + ], + "description": "Battleground Event on End", + "scope": "typescript" + }, + "Battleground Create": { + "prefix": "bg_create", + "body": [ + "const $1: bg_event_on_create = (event: number, bg: BattleGround, bgId: BattleGroundTypeId, instanceId: number) => {", + "\t// Implementation", + "};", + "", + "// Register", + "RegisterBGEvent(BGEvents.BG_EVENT_ON_CREATE, (...args) => $1(...args));" + ], + "description": "Battleground Event on Create", + "scope": "typescript" + }, + "Battleground Pre-Destroy": { + "prefix": "bg_pre_destroy", + "body": [ + "const $1: bg_event_on_pre_destroy = (event: number, bg: BattleGround, bgId: BattleGroundTypeId, instanceId: number) => {", + "\t// Implementation", + "};", + "", + "// Register", + "RegisterBGEvent(BGEvents.BG_EVENT_ON_PRE_DESTROY, (...args) => $1(...args));" + ], + "description": "Battleground Event on Pre-Destroy", + "scope": "typescript" + } + } + \ No newline at end of file diff --git a/snippets/eluna/creatureeventes.code-snippets b/snippets/eluna/creatureeventes.code-snippets new file mode 100644 index 0000000..0190381 --- /dev/null +++ b/snippets/eluna/creatureeventes.code-snippets @@ -0,0 +1,398 @@ +{ + "Creature Enter Combat": { + "prefix": "creature_enter_combat", + "body": [ + "const $1: creature_event_on_enter_combat = (event: number, creature: Creature, target: Creature): boolean => {", + "\t// Implementation", + "\treturn false; // return true to stop normal action", + "};", + "", + "// Register Creature Event on Enter Combat", + "RegisterCreatureEvent(${2:MyCreatureEntry}, CreatureEvents.CREATURE_EVENT_ON_ENTER_COMBAT, (...args) => $1(...args));" + ], + "description": "Creature Enter Combat", + "scope": "typescript" + }, + "Creature Leave Combat": { + "prefix": "creature_leave_combat", + "body": [ + "const $1: creature_event_on_leave_combat = (event: number, creature: Creature): boolean => {", + "\t// Implementation", + "\treturn false; // return true to stop normal action", + "};", + "", + "// Register Creature Event on Leave Combat", + "RegisterCreatureEvent(${2:MyCreatureEntry}, CreatureEvents.CREATURE_EVENT_ON_LEAVE_COMBAT, (...args) => $1(...args));" + ], + "description": "Creature Leave Combat", + "scope": "typescript" + }, + "Creature Target Died": { + "prefix": "creature_target_died", + "body": [ + "const $1: creature_event_on_target_died = (event: number, creature: Creature, victim: Creature): boolean => {", + "\t// Implementation", + "\treturn false; // return true to stop normal action", + "};", + "", + "// Register Creature Event on Target Died", + "RegisterCreatureEvent(${2:MyCreatureEntry}, CreatureEvents.CREATURE_EVENT_ON_TARGET_DIED, (...args) => $1(...args));" + ], + "description": "Creature Target Died", + "scope": "typescript" + }, + "Creature Died": { + "prefix": "creature_died", + "body": [ + "const $1: creature_event_on_died = (event: number, creature: Creature, killer: Creature): boolean => {", + "\t// Implementation", + "\treturn false; // return true to stop normal action", + "};", + "", + "// Register Creature Event on Died", + "RegisterCreatureEvent(${2:MyCreatureEntry}, CreatureEvents.CREATURE_EVENT_ON_DIED, (...args) => $1(...args));" + ], + "description": "Creature Died", + "scope": "typescript" + }, + "Creature Spawn": { + "prefix": "creature_spawn", + "body": [ + "const $1: creature_event_on_spawn = (event: number, creature: Creature): boolean => {", + "\t// Implementation", + "\treturn false; // return true to stop normal action", + "};", + "", + "// Register Creature Event on Spawn", + "RegisterCreatureEvent(${2:MyCreatureEntry}, CreatureEvents.CREATURE_EVENT_ON_SPAWN, (...args) => $1(...args));" + ], + "description": "Creature Spawn", + "scope": "typescript" + }, + "Creature Reach Waypoint": { + "prefix": "creature_reach_waypoint", + "body": [ + "const $1: creature_event_on_reach_wp = (event: number, creature: Creature, type: number, id: number): boolean => {", + "\t// Implementation", + "\treturn false;", + "};", + "", + "// Register Creature Event on Reach Waypoint", + "RegisterCreatureEvent(${2:MyCreatureEntry}, CreatureEvents.CREATURE_EVENT_ON_REACH_WP, (...args) => $1(...args));" + ], + "description": "Creature Reach Waypoint", + "scope": "typescript" + }, + "Creature AI Update": { + "prefix": "creature_ai_update", + "body": [ + "const $1: creature_event_on_aiupdate = (event: number, creature: Creature, diff: number): boolean => {", + "\t// Implementation", + "\treturn false; // return true to stop normal action", + "};", + "", + "// Register Creature Event on AI Update", + "RegisterCreatureEvent(${2:MyCreatureEntry}, CreatureEvents.CREATURE_EVENT_ON_AIUPDATE, (...args) => $1(...args));" + ], + "description": "Creature AI Update", + "scope": "typescript" + }, + "Creature Receive Emote": { + "prefix": "creature_receive_emote", + "body": [ + "const $1: creature_event_on_receive_emote = (event: number, creature: Creature, player: Player, emoteId: number): boolean => {", + "\t// Implementation", + "\treturn false; // return true to stop normal action", + "};", + "", + "// Register Creature Event on Receive Emote", + "RegisterCreatureEvent(${2:MyCreatureEntry}, CreatureEvents.CREATURE_EVENT_ON_RECEIVE_EMOTE, (...args) => $1(...args));" + ], + "description": "Creature Receive Emote", + "scope": "typescript" + }, + "Creature Damage Taken": { + "prefix": "creature_damage_taken", + "body": [ + "const $1: creature_event_on_damage_taken = (event: number, creature: Creature, attacker: Creature, damage: number): boolean => {", + "\t// Implementation", + "\treturn false; // return true to stop normal action", + "};", + "", + "// Register Creature Event on Damage Taken", + "RegisterCreatureEvent(${2:MyCreatureEntry}, CreatureEvents.CREATURE_EVENT_ON_DAMAGE_TAKEN, (...args) => $1(...args));" + ], + "description": "Creature Damage Taken", + "scope": "typescript" + }, + "Creature Pre Combat": { + "prefix": "creature_pre_combat", + "body": [ + "const $1: creature_event_on_pre_combat = (event: number, creature: Creature, target: Creature): boolean => {", + "\t// Implementation", + "\treturn false; // return true to stop normal action", + "};", + "", + "// Register Creature Event on Pre Combat", + "RegisterCreatureEvent(${2:MyCreatureEntry}, CreatureEvents.CREATURE_EVENT_ON_PRE_COMBAT, (...args) => $1(...args));" + ], + "description": "Creature Pre Combat", + "scope": "typescript" + }, + "Creature Hit By Spell": { + "prefix": "creature_hit_by_spell", + "body": [ + "const $1: creature_event_on_hit_by_spell = (event: number, creature: Creature, caster: Creature, spellId: number): boolean => {", + "\t// Implementation", + "\treturn false; // return true to stop normal action", + "};", + "", + "// Register Creature Event on Hit By Spell", + "RegisterCreatureEvent(${2:MyCreatureEntry}, CreatureEvents.CREATURE_EVENT_ON_HIT_BY_SPELL, (...args) => $1(...args));" + ], + "description": "Creature Hit By Spell", + "scope": "typescript" + }, + "Creature Owner Attacked": { + "prefix": "creature_owner_attacked", + "body": [ + "const $1: creature_event_on_owner_attacked = (event: number, creature: Creature, target: Creature): boolean => {", + "\t// Implementation", + "\treturn false; // return true to stop normal action", + "};", + "", + "// Register Creature Event on Owner Attacked", + "RegisterCreatureEvent(${2:MyCreatureEntry}, CreatureEvents.CREATURE_EVENT_ON_OWNER_ATTACKED, (...args) => $1(...args));" + ], + "description": "Creature Owner Attacked", + "scope": "typescript" + }, + "Creature Owner Attacked At": { + "prefix": "creature_owner_attacked_at", + "body": [ + "const $1: creature_event_on_owner_attacked_at = (event: number, creature: Creature, attacker: Creature): boolean => {", + "\t// Implementation", + "\treturn false; // return true to stop normal action", + "};", + "", + "// Register Creature Event on Owner Attacked At", + "RegisterCreatureEvent(${2:MyCreatureEntry}, CreatureEvents.CREATURE_EVENT_ON_OWNER_ATTACKED_AT, (...args) => $1(...args));" + ], + "description": "Creature Owner Attacked At", + "scope": "typescript" + }, + "Creature Spell Hit Target": { + "prefix": "creature_spell_hit_target", + "body": [ + "const $1: creature_event_on_spell_hit_target = (event: number, creature: Creature, target: Creature, spellId: number): boolean => {", + "\t// Implementation", + "\treturn false; // return true to stop normal action", + "};", + "", + "// Register Creature Event on Spell Hit Target", + "RegisterCreatureEvent(${2:MyCreatureEntry}, CreatureEvents.CREATURE_EVENT_ON_SPELL_HIT_TARGET, (...args) => $1(...args));" + ], + "description": "Creature Spell Hit Target", + "scope": "typescript" + }, + "Creature Just Summoned Creature": { + "prefix": "creature_just_summoned_creature", + "body": [ + "const $1: creature_event_on_just_summoned_creature = (event: number, creature: Creature, summon: Creature): boolean => {", + "\t// Implementation", + "\treturn false; // return true to stop normal action", + "};", + "", + "// Register Creature Event on Just Summoned Creature", + "RegisterCreatureEvent(${2:MyCreatureEntry}, CreatureEvents.CREATURE_EVENT_ON_JUST_SUMMONED_CREATURE, (...args) => $1(...args));" + ], + "description": "Creature Just Summoned Creature", + "scope": "typescript" + }, + "Creature Summoned Creature Despawn": { + "prefix": "creature_summoned_creature_despawn", + "body": [ + "const $1: creature_event_on_summoned_creature_despawn = (event: number, creature: Creature, summon: Creature): boolean => {", + "\t// Implementation", + "\treturn false; // return true to stop normal action", + "};", + "", + "// Register Creature Event on Summoned Creature Despawn", + "RegisterCreatureEvent(${2:MyCreatureEntry}, CreatureEvents.CREATURE_EVENT_ON_SUMMONED_CREATURE_DESPAWN, (...args) => $1(...args));" + ], + "description": "Creature Summoned Creature Despawn", + "scope": "typescript" + }, + "Creature Summoned Creature Died": { + "prefix": "creature_summoned_creature_died", + "body": [ + "const $1: creature_event_on_summoned_creature_died = (event: number, creature: Creature, summon: Creature, killer: Creature): boolean => {", + "\t// Implementation", + "\treturn false; // return true to stop normal action", + "};", + "", + "// Register Creature Event on Summoned Creature Died", + "RegisterCreatureEvent(${2:MyCreatureEntry}, CreatureEvents.CREATURE_EVENT_ON_SUMMONED_CREATURE_DIED, (...args) => $1(...args));" + ], + "description": "Creature Summoned Creature Died", + "scope": "typescript" + }, + "Creature Summoned": { + "prefix": "creature_summoned", + "body": [ + "const $1: creature_event_on_summoned = (event: number, creature: Creature, summoner: Creature): boolean => {", + "\t// Implementation", + "\treturn false; // return true to stop normal action", + "};", + "", + "// Register Creature Event on Summoned", + "RegisterCreatureEvent(${2:MyCreatureEntry}, CreatureEvents.CREATURE_EVENT_ON_SUMMONED, (...args) => $1(...args));" + ], + "description": "Creature Summoned", + "scope": "typescript" + }, + + "Creature Reset": { + "prefix": "creature_reset", + "body": [ + "const $1: creature_event_on_reset = (event: number, creature: Creature): boolean => {", + "\t// Implementation", + "\treturn false; // return true to stop normal action", + "};", + "", + "// Register Creature Event on Reset", + "RegisterCreatureEvent(${2:MyCreatureEntry}, CreatureEvents.CREATURE_EVENT_ON_RESET, (...args) => $1(...args));" + ], + "description": "Creature Reset", + "scope": "typescript" + }, + "Creature Reach Home": { + "prefix": "creature_reach_home", + "body": [ + "const $1: creature_event_on_reach_home = (event: number, creature: Creature): boolean => {", + "\t// Implementation", + "\treturn false; // return true to stop normal action", + "};", + "", + "// Register Creature Event on Reach Home", + "RegisterCreatureEvent(${2:MyCreatureEntry}, CreatureEvents.CREATURE_EVENT_ON_REACH_HOME, (...args) => $1(...args));" + ], + "description": "Creature Reach Home", + "scope": "typescript" + }, + "Creature Corpse Removed": { + "prefix": "creature_corpse_removed", + "body": [ + "const $1: creature_event_on_corpse_removed = (event: number, creature: Creature, respawnDelay: number): boolean => {", + "\t// Implementation", + "\treturn false; // return true to stop normal action", + "};", + "", + "// Register Creature Event on Corpse Removed", + "RegisterCreatureEvent(${2:MyCreatureEntry}, CreatureEvents.CREATURE_EVENT_ON_CORPSE_REMOVED, (...args) => $1(...args));" + ], + "description": "Creature Corpse Removed", + "scope": "typescript" + }, + "Creature Move in Line of Sight": { + "prefix": "creature_move_in_los", + "body": [ + "const $1: creature_event_on_move_in_los = (event: number, creature: Creature, unit: Unit): boolean => {", + "\t// Implementation", + "\treturn false; // return true to stop normal action", + "};", + "", + "// Register Creature Event on Move in Line of Sight", + "RegisterCreatureEvent(${2:MyCreatureEntry}, CreatureEvents.CREATURE_EVENT_ON_MOVE_IN_LOS, (...args) => $1(...args));" + ], + "description": "Creature Move in Line of Sight", + "scope": "typescript" + }, + "Creature Dummy Effect": { + "prefix": "creature_dummy_effect", + "body": [ + "const $1: creature_event_on_dummy_effect = (event: number, caster: Unit, spellId: number, effIndex: number, creature: Creature): boolean => {", + "\t// Implementation", + "\treturn false; // return true to stop normal action", + "};", + "", + "// Register Creature Event on Dummy Effect", + "RegisterCreatureEvent(${2:MyCreatureEntry}, CreatureEvents.CREATURE_EVENT_ON_DUMMY_EFFECT, (...args) => $1(...args));" + ], + "description": "Creature Dummy Effect", + "scope": "typescript" + }, + "Creature Quest Accept": { + "prefix": "creature_quest_accept", + "body": [ + "const $1: creature_event_on_quest_accept = (event: number, player: Player, creature: Creature, quest: Quest): boolean => {", + "\t// Implementation", + "\treturn false; // return true to stop normal action", + "};", + "", + "// Register Creature Event on Quest Accept", + "RegisterCreatureEvent(${2:MyCreatureEntry}, CreatureEvents.CREATURE_EVENT_ON_QUEST_ACCEPT, (...args) => $1(...args));" + ], + "description": "Creature Quest Accept", + "scope": "typescript" + }, + "Creature Quest Reward": { + "prefix": "creature_quest_reward", + "body": [ + "const $1: creature_event_on_quest_reward = (event: number, player: Player, creature: Creature, quest: Quest, opt: number): boolean => {", + "\t// Implementation", + "\treturn false; // return true to stop normal action", + "};", + "", + "// Register Creature Event on Quest Reward", + "RegisterCreatureEvent(${2:MyCreatureEntry}, CreatureEvents.CREATURE_EVENT_ON_QUEST_REWARD, (...args) => $1(...args));" + ], + "description": "Creature Quest Reward", + "scope": "typescript" + }, + "Creature Dialog Status": { + "prefix": "creature_dialog_status", + "body": [ + "const $1: creature_event_on_dialog_status = (event: number, player: Player, creature: Creature): boolean => {", + "\t// Implementation", + "\treturn false; // return true to stop normal action", + "};", + "", + "// Register Creature Event on Dialog Status", + "RegisterCreatureEvent(${2:MyCreatureEntry}, CreatureEvents.CREATURE_EVENT_ON_DIALOG_STATUS, (...args) => $1(...args));" + ], + "description": "Creature Dialog Status", + "scope": "typescript" + }, + "Creature Add": { + "prefix": "creature_add", + "body": [ + "const $1: creature_event_on_add = (event: number, creature: Creature): boolean => {", + "\t// Implementation", + "\treturn false; // return true to stop normal action", + "};", + "", + "// Register Creature Event on Add", + "RegisterCreatureEvent(${2:MyCreatureEntry}, CreatureEvents.CREATURE_EVENT_ON_ADD, (...args) => $1(...args));" + ], + "description": "Creature Add", + "scope": "typescript" + }, + "Creature Remove": { + "prefix": "creature_remove", + "body": [ + "const $1: creature_event_on_remove = (event: number, creature: Creature): boolean => {", + "\t// Implementation", + "\treturn false; // return true to stop normal action", + "};", + "", + "// Register Creature Event on Remove", + "RegisterCreatureEvent(${2:MyCreatureEntry}, CreatureEvents.CREATURE_EVENT_ON_REMOVE, (...args) => $1(...args));" + ], + "description": "Creature Remove", + "scope": "typescript" + } + + + } + \ No newline at end of file diff --git a/snippets/eluna/gameobject.code-snippets b/snippets/eluna/gameobject.code-snippets new file mode 100644 index 0000000..404fa85 --- /dev/null +++ b/snippets/eluna/gameobject.code-snippets @@ -0,0 +1,176 @@ +{ + "GameObject AI Update": { + "prefix": "gameobject_on_aiupdate", + "body": [ + "const $1: gameobject_event_on_aiupdate = (event: number, gameObject: GameObject, diff: number) => {", + "\t// Implementation", + "};", + "", + "// Register GameObject Event on AI Update", + "RegisterGameObjectEvent(${2:MyGameObjectID},GameObjectEvents.GAMEOBJECT_EVENT_ON_AIUPDATE, (...args) => $1(...args));" + ], + "description": "GameObject AI Update", + "scope": "typescript" + }, + "GameObject Spawn": { + "prefix": "gameobject_on_spawn", + "body": [ + "const $1: gameobject_event_on_spawn = (event: number, gameObject: GameObject) => {", + "\t// Implementation", + "};", + "", + "// Register GameObject Event on Spawn", + "RegisterGameObjectEvent(${2:MyGameObjectID},GameObjectEvents.GAMEOBJECT_EVENT_ON_SPAWN, (...args) => $1(...args));" + ], + "description": "GameObject Spawn", + "scope": "typescript" + }, + "GameObject Dummy Effect": { + "prefix": "gameobject_on_dummy_effect", + "body": [ + "const $1: gameobject_event_on_dummy_effect = (event: number, caster: any, spellId: number, effectIndex: number, gameObject: GameObject): boolean => {", + "\t// Implementation", + "\treturn false;", + "};", + "", + "// Register GameObject Event on Dummy Effect", + "RegisterGameObjectEvent(${2:MyGameObjectID},GameObjectEvents.GAMEOBJECT_EVENT_ON_DUMMY_EFFECT, (...args) => $1(...args));" + ], + "description": "GameObject Dummy Effect", + "scope": "typescript" + }, + "GameObject Quest Accept": { + "prefix": "gameobject_on_quest_accept", + "body": [ + "const $1: gameobject_event_on_quest_accept = (event: number, player: Player, gameObject: GameObject, quest: any): boolean => {", + "\t// Implementation", + "\treturn false;", + "};", + "", + "// Register GameObject Event on Quest Accept", + "RegisterGameObjectEvent(${2:MyGameObjectID},GameObjectEvents.GAMEOBJECT_EVENT_ON_QUEST_ACCEPT, (...args) => $1(...args));" + ], + "description": "GameObject Quest Accept", + "scope": "typescript" + }, + "GameObject Quest Reward": { + "prefix": "gameobject_on_quest_reward", + "body": [ + "const $1: gameobject_event_on_quest_reward = (event: number, player: Player, gameObject: GameObject, quest: any, option: any): boolean => {", + "\t// Implementation", + "\treturn false;", + "};", + "", + "// Register GameObject Event on Quest Reward", + "RegisterGameObjectEvent(${2:MyGameObjectID},GameObjectEvents.GAMEOBJECT_EVENT_ON_QUEST_REWARD, (...args) => $1(...args));" + ], + "description": "GameObject Quest Reward", + "scope": "typescript" + }, + "GameObject Dialog Status": { + "prefix": "gameobject_on_dialog_status", + "body": [ + "const $1: gameobject_event_on_dialog_status = (event: number, player: Player, gameObject: GameObject) => {", + "\t// Implementation", + "};", + "", + "// Register GameObject Event on Dialog Status", + "RegisterGameObjectEvent(${2:MyGameObjectID},GameObjectEvents.GAMEOBJECT_EVENT_ON_DIALOG_STATUS, (...args) => $1(...args));" + ], + "description": "GameObject Dialog Status", + "scope": "typescript" + }, + "GameObject Destroyed": { + "prefix": "gameobject_on_destroyed", + "body": [ + "const $1: gameobject_event_on_destroyed = (event: number, gameObject: GameObject, attacker: any) => {", + "\t// Implementation", + "};", + "", + "// Register GameObject Event on Destroyed", + "RegisterGameObjectEvent(${2:MyGameObjectID},GameObjectEvents.GAMEOBJECT_EVENT_ON_DESTROYED, (...args) => $1(...args));" + ], + "description": "GameObject Destroyed", + "scope": "typescript" + }, + "GameObject Damaged": { + "prefix": "gameobject_on_damaged", + "body": [ + "const $1: gameobject_event_on_damaged = (event: number, gameObject: GameObject, attacker: any) => {", + "\t// Implementation", + "};", + "", + "// Register GameObject Event on Damaged", + "RegisterGameObjectEvent(${2:MyGameObjectID},GameObjectEvents.GAMEOBJECT_EVENT_ON_DAMAGED, (...args) => $1(...args));" + ], + "description": "GameObject Damaged", + "scope": "typescript" + }, + "GameObject Loot State Change": { + "prefix": "gameobject_on_loot_state_change", + "body": [ + "const $1: gameobject_event_on_loot_state_change = (event: number, gameObject: GameObject, state: any) => {", + "\t// Implementation", + "};", + "", + "// Register GameObject Event on Loot State Change", + "RegisterGameObjectEvent(${2:MyGameObjectID},GameObjectEvents.GAMEOBJECT_EVENT_ON_LOOT_STATE_CHANGE, (...args) => $1(...args));" + ], + "description": "GameObject Loot State Change", + "scope": "typescript" + }, + "GameObject State Changed": { + "prefix": "gameobject_on_state_changed", + "body": [ + "const $1: gameobject_event_on_go_state_changed = (event: number, gameObject: GameObject, state: any) => {", + "\t// Implementation", + "};", + "", + "// Register GameObject Event on State Changed", + "RegisterGameObjectEvent(${2:MyGameObjectID},GameObjectEvents.GAMEOBJECT_EVENT_ON_GO_STATE_CHANGED, (...args) => $1(...args));" + ], + "description": "GameObject State Changed", + "scope": "typescript" + }, + "GameObject Add": { + "prefix": "gameobject_on_add", + "body": [ + "const $1: gameobject_event_on_add = (event: number, gameObject: GameObject) => {", + "\t// Implementation", + "};", + "", + "// Register GameObject Event on Add", + "RegisterGameObjectEvent(${2:MyGameObjectID},GameObjectEvents.GAMEOBJECT_EVENT_ON_ADD, (...args) => $1(...args));" + ], + "description": "GameObject Add", + "scope": "typescript" + }, + "GameObject Remove": { + "prefix": "gameobject_on_remove", + "body": [ + "const $1: gameobject_event_on_remove = (event: number, gameObject: GameObject) => {", + "\t// Implementation", + "};", + "", + "// Register GameObject Event on Remove", + "RegisterGameObjectEvent(${2:MyGameObjectID},GameObjectEvents.GAMEOBJECT_EVENT_ON_REMOVE, (...args) => $1(...args));" + ], + "description": "GameObject Remove", + "scope": "typescript" + }, + "GameObject Use": { + "prefix": "gameobject_on_use", + "body": [ + "const $1: gameobject_event_on_use = (event: number, gameObject: GameObject, player: Player): boolean => {", + "\t// Implementation", + "\treturn false;", + "};", + "", + "// Register GameObject Event on Use", + "RegisterGameObjectEvent(${2:MyGameObjectID},GameObjectEvents.GAMEOBJECT_EVENT_ON_USE, (...args) => $1(...args));" + ], + "description": "GameObject Use", + "scope": "typescript" + } + } + \ No newline at end of file diff --git a/snippets/eluna/gossipevents copy.code-snippets b/snippets/eluna/gossipevents copy.code-snippets new file mode 100644 index 0000000..d64260b --- /dev/null +++ b/snippets/eluna/gossipevents copy.code-snippets @@ -0,0 +1,115 @@ +{ + "Item Gossip Hello": { + "prefix": "item_gossip_on_hello", + "body": [ + "const $1: gossip_event_on_hello = (event: number, player: Player, item: Item): boolean => {", + "\t// Implementation", + "\treturn true;", + "};", + "", + "// Register Item Gossip Event on Hello", + "RegisterItemGossipEvent(${2:MyItemEntry}, GossipEvents.GOSSIP_EVENT_ON_HELLO, (...args) => $1(...args));" + ], + "description": "Item Gossip Hello", + "scope": "typescript" + }, + "Item Gossip Select": { + "prefix": "item_gossip_on_select", + "body": [ + "const $1: gossip_event_on_select = (event: number, player: Player, item: Item, sender: number, intid: number, code: string, menuId?: number): boolean => {", + "\t// Implementation", + "\treturn true;", + "};", + "", + "// Register Item Gossip Event on Select", + "RegisterItemGossipEvent(${2:MyItemEntry}, GossipEvents.GOSSIP_EVENT_ON_SELECT, (...args) => $1(...args));" + ], + "description": "Item Gossip Select", + "scope": "typescript" + }, + "Player Gossip Hello": { + "prefix": "player_gossip_on_hello", + "body": [ + "const $1: gossip_event_on_hello = (event: number, player: Player, object: Object): boolean => {", + "\t// Implementation", + "\treturn true;", + "};", + "", + "// Register Player Gossip Event on Hello", + "RegisterPlayerGossipEvent(${2:MyMenuId}, GossipEvents.GOSSIP_EVENT_ON_HELLO, (...args) => $1(...args));" + ], + "description": "Player Gossip Hello", + "scope": "typescript" + }, + "Player Gossip Select": { + "prefix": "player_gossip_on_select", + "body": [ + "const $1: gossip_event_on_select = (event: number, player: Player, object: Object, sender: number, intid: number, code: string, menuId?: number): boolean => {", + "\t// Implementation", + "\treturn true;", + "};", + "", + "// Register Player Gossip Event on Select", + "RegisterItemGossipEvent(${2:MyMenuId}, GossipEvents.GOSSIP_EVENT_ON_SELECT, (...args) => $1(...args));" + ], + "description": "Player Gossip Select", + "scope": "typescript" + }, + "GameObject Gossip Hello": { + "prefix": "gameobject_gossip_on_hello", + "body": [ + "const $1: gossip_event_on_hello = (event: number, player: Player, gameObject: GameObject): boolean => {", + "\t// Implementation", + "\treturn true;", + "};", + "", + "// Register GameObject Gossip Event on Hello", + "RegisterGameObjectGossipEvent(${2:MyGameObjectEntry}, GossipEvents.GOSSIP_EVENT_ON_HELLO, (...args) => $1(...args));" + ], + "description": "GameObject Gossip Hello", + "scope": "typescript" + }, + "GameObject Gossip Select": { + "prefix": "gameobject_gossip_on_select", + "body": [ + "const $1: gossip_event_on_select = (event: number, player: Player, gameObject: GameObject, sender: number, intid: number, code: string, menuId?: number): boolean => {", + "\t// Implementation", + "\treturn true;", + "};", + "", + "// Register GameObject Gossip Event on Select", + "RegisterGameObjectGossipEvent(${2:MyGameObjectEntry}, GossipEvents.GOSSIP_EVENT_ON_SELECT, (...args) => $1(...args));" + ], + "description": "GameObject Gossip Select", + "scope": "typescript" + }, + "Creature Gossip Hello": { + "prefix": "creature_gossip_on_hello", + "body": [ + "const $1: gossip_event_on_hello = (event: number, player: Player, creature: Creature): boolean => {", + "\t// Implementation", + "\treturn true;", + "};", + "", + "// Register Creature Gossip Event on Hello", + "RegisterCreatureGossipEvent(${2:MyCreatureEntry}, GossipEvents.GOSSIP_EVENT_ON_HELLO, (...args) => $1(...args));" + ], + "description": "Creature Gossip Hello", + "scope": "typescript" + }, + "Creature Gossip Select": { + "prefix": "creature_gossip_on_select", + "body": [ + "const $1: gossip_event_on_select = (event: number, player: Player, creature: Creature, sender: number, intid: number, code: string, menuId?: number): boolean => {", + "\t// Implementation", + "\treturn true;", + "};", + "", + "// Register Creature Gossip Event on Select", + "RegisterCreatureGossipEvent(${2:MyCreatureEntry}, GossipEvents.GOSSIP_EVENT_ON_SELECT, (...args) => $1(...args));" + ], + "description": "Creature Gossip Select", + "scope": "typescript" + } + } + \ No newline at end of file diff --git a/snippets/eluna/groupevents.code-snippets b/snippets/eluna/groupevents.code-snippets new file mode 100644 index 0000000..8c5a61b --- /dev/null +++ b/snippets/eluna/groupevents.code-snippets @@ -0,0 +1,81 @@ +{ + "Group Member Add": { + "prefix": "group_member_add", + "body": [ + "const $1: group_event_on_member_add = (event: number, group: Group, guid: number) => {", + "\t// Implementation", + "};", + "", + "// Register", + "RegisterGroupEvent(GroupEvents.GROUP_EVENT_ON_MEMBER_ADD, (...args) => $1(...args));" + ], + "description": "Group Event on Member Add", + "scope": "typescript" + }, + "Group Member Invite": { + "prefix": "group_member_invite", + "body": [ + "const $1: group_event_on_member_invite = (event: number, group: Group, guid: number) => {", + "\t// Implementation", + "};", + "", + "// Register", + "RegisterGroupEvent(GroupEvents.GROUP_EVENT_ON_MEMBER_INVITE, (...args) => $1(...args));" + ], + "description": "Group Event on Member Invite", + "scope": "typescript" + }, + "Group Member Remove": { + "prefix": "group_member_remove", + "body": [ + "const $1: group_event_on_member_remove = (event: number, group: Group, guid: number, method: number) => {", + "\t// Implementation", + "};", + "", + "// Register", + "RegisterGroupEvent(GroupEvents.GROUP_EVENT_ON_MEMBER_REMOVE, (...args) => $1(...args));" + ], + "description": "Group Event on Member Remove", + "scope": "typescript" + }, + "Group Leader Change": { + "prefix": "group_leader_change", + "body": [ + "const $1: group_event_on_leader_change = (event: number, group: Group, newLeaderGuid: number, oldLeaderGuid: number) => {", + "\t// Implementation", + "};", + "", + "// Register", + "RegisterGroupEvent(GroupEvents.GROUP_EVENT_ON_LEADER_CHANGE, (...args) => $1(...args));" + ], + "description": "Group Event on Leader Change", + "scope": "typescript" + }, + "Group Disband": { + "prefix": "group_disband", + "body": [ + "const $1: group_event_on_disband = (event: number, group: Group) => {", + "\t// Implementation", + "};", + "", + "// Register", + "RegisterGroupEvent(GroupEvents.GROUP_EVENT_ON_DISBAND, (...args) => $1(...args));" + ], + "description": "Group Event on Disband", + "scope": "typescript" + }, + "Group Create": { + "prefix": "group_create", + "body": [ + "const $1: group_event_on_create = (event: number, group: Group, leaderGuid: number, groupType: number) => {", + "\t// Implementation", + "};", + "", + "// Register", + "RegisterGroupEvent(GroupEvents.GROUP_EVENT_ON_CREATE, (...args) => $1(...args));" + ], + "description": "Group Event on Create", + "scope": "typescript" + } + } + \ No newline at end of file diff --git a/snippets/eluna/guildevents.code-snippets b/snippets/eluna/guildevents.code-snippets new file mode 100644 index 0000000..075a80d --- /dev/null +++ b/snippets/eluna/guildevents.code-snippets @@ -0,0 +1,146 @@ +{ + "Guild Add Member": { + "prefix": "guild_add_member", + "body": [ + "const $1: guild_event_on_add_member = (event: number, guild: Guild, player: Player, rank: number) => {", + "\t// Implementation", + "};", + "", + "// Register", + "RegisterGuildEvent(GuildEvents.GUILD_EVENT_ON_ADD_MEMBER, (...args) => $1(...args));" + ], + "description": "Guild Event on Add Member", + "scope": "typescript" + }, + "Guild Remove Member": { + "prefix": "guild_remove_member", + "body": [ + "const $1: guild_event_on_remove_member = (event: number, guild: Guild, player: Player, isDisbanding: boolean) => {", + "\t// Implementation", + "};", + "", + "// Register", + "RegisterGuildEvent(GuildEvents.GUILD_EVENT_ON_REMOVE_MEMBER, (...args) => $1(...args));" + ], + "description": "Guild Event on Remove Member", + "scope": "typescript" + }, + "Guild MOTD Change": { + "prefix": "guild_motd_change", + "body": [ + "const $1: guild_event_on_motd_change = (event: number, guild: Guild, newMotd: string) => {", + "\t// Implementation", + "};", + "", + "// Register", + "RegisterGuildEvent(GuildEvents.GUILD_EVENT_ON_MOTD_CHANGE, (...args) => $1(...args));" + ], + "description": "Guild Event on MOTD Change", + "scope": "typescript" + }, + "Guild Info Change": { + "prefix": "guild_info_change", + "body": [ + "const $1: guild_event_on_info_change = (event: number, guild: Guild, newInfo: string) => {", + "\t// Implementation", + "};", + "", + "// Register", + "RegisterGuildEvent(GuildEvents.GUILD_EVENT_ON_INFO_CHANGE, (...args) => $1(...args));" + ], + "description": "Guild Event on Info Change", + "scope": "typescript" + }, + "Guild Create": { + "prefix": "guild_create", + "body": [ + "const $1: guild_event_on_create = (event: number, guild: Guild, leader: Player, name: string) => {", + "\t// Implementation", + "};", + "", + "// Register", + "RegisterGuildEvent(GuildEvents.GUILD_EVENT_ON_CREATE, (...args) => $1(...args));" + ], + "description": "Guild Event on Create", + "scope": "typescript" + }, + "Guild Disband": { + "prefix": "guild_disband", + "body": [ + "const $1: guild_event_on_disband = (event: number, guild: Guild) => {", + "\t// Implementation", + "};", + "", + "// Register", + "RegisterGuildEvent(GuildEvents.GUILD_EVENT_ON_DISBAND, (...args) => $1(...args));" + ], + "description": "Guild Event on Disband", + "scope": "typescript" + }, + "Guild Money Withdraw": { + "prefix": "guild_money_withdraw", + "body": [ + "const $1: guild_event_on_money_withdraw = (event: number, guild: Guild, player: Player, amount: number, isRepair: boolean) => {", + "\t// Implementation", + "};", + "", + "// Register", + "RegisterGuildEvent(GuildEvents.GUILD_EVENT_ON_MONEY_WITHDRAW, (...args) => $1(...args));" + ], + "description": "Guild Event on Money Withdraw", + "scope": "typescript" + }, + "Guild Money Deposit": { + "prefix": "guild_money_deposit", + "body": [ + "const $1: guild_event_on_money_deposit = (event: number, guild: Guild, player: Player, amount: number) => {", + "\t// Implementation", + "};", + "", + "// Register", + "RegisterGuildEvent(GuildEvents.GUILD_EVENT_ON_MONEY_DEPOSIT, (...args) => $1(...args));" + ], + "description": "Guild Event on Money Deposit", + "scope": "typescript" + }, + "Guild Item Move": { + "prefix": "guild_item_move", + "body": [ + "const $1: guild_event_on_item_move = (event: number, guild: Guild, player: Player, item: Item, isSrcBank: boolean, srcContainer: number, srcSlotId: number, isDestBank: boolean, destContainer: number, destSlotId: number) => {", + "\t// Implementation", + "};", + "", + "// Register", + "RegisterGuildEvent(GuildEvents.GUILD_EVENT_ON_ITEM_MOVE, (...args) => $1(...args));" + ], + "description": "Guild Event on Item Move", + "scope": "typescript" + }, + "Guild Event": { + "prefix": "guild_event", + "body": [ + "const $1: guild_event_on_event = (event: number, guild: Guild, eventType: number, plrGUIDLow1: number, plrGUIDLow2: number, newRank: GuildRank) => {", + "\t// Implementation", + "};", + "", + "// Register", + "RegisterGuildEvent(GuildEvents.GUILD_EVENT_ON_EVENT, (...args) => $1(...args));" + ], + "description": "Guild Event on Event", + "scope": "typescript" + }, + "Guild Bank Event": { + "prefix": "guild_bank_event", + "body": [ + "const $1: guild_event_on_bank_event = (event: number, guild: Guild, eventType: number, tabId: number, playerGUIDLow: number, itemOrMoney: number, itemStackCount: number, destTabId: number) => {", + "\t// Implementation", + "};", + "", + "// Register", + "RegisterGuildEvent(GuildEvents.GUILD_EVENT_ON_BANK_EVENT, (...args) => $1(...args));" + ], + "description": "Guild Event on Bank Event", + "scope": "typescript" + } + } + \ No newline at end of file diff --git a/snippets/eluna/instanceevents.code-snippets b/snippets/eluna/instanceevents.code-snippets new file mode 100644 index 0000000..a65a5c5 --- /dev/null +++ b/snippets/eluna/instanceevents.code-snippets @@ -0,0 +1,94 @@ +{ + "Instance Initialize": { + "prefix": "instance_initialize", + "body": [ + "const $1: instance_event_on_initialize = (event: number, instanceData: number[], map: EMap) => {", + "\t// Implementation", + "};", + "", + "// Register", + "RegisterMapEvent($2, InstanceEvents.INSTANCE_EVENT_ON_INITIALIZE, (...args) => $1(...args));" + ], + "description": "Instance Event on Initialize", + "scope": "typescript" + }, + "Instance Load": { + "prefix": "instance_load", + "body": [ + "const $1: instance_event_on_load = (event: number, instanceData: number[], map: EMap) => {", + "\t// Implementation", + "};", + "", + "// Register", + "RegisterMapEvent($2, InstanceEvents.INSTANCE_EVENT_ON_LOAD, (...args) => $1(...args));" + ], + "description": "Instance Event on Load", + "scope": "typescript" + }, + "Instance Update": { + "prefix": "instance_update", + "body": [ + "const $1: instance_event_on_update = (event: number, instanceData: number[], map: EMap, diff: number) => {", + "\t// Implementation", + "};", + "", + "// Register", + "RegisterMapEvent($2, InstanceEvents.INSTANCE_EVENT_ON_UPDATE, (...args) => $1(...args));" + ], + "description": "Instance Event on Update", + "scope": "typescript" + }, + "Instance Player Enter": { + "prefix": "instance_player_enter", + "body": [ + "const $1: instance_event_on_player_enter = (event: number, instanceData: number[], map: EMap, player: Player) => {", + "\t// Implementation", + "};", + "", + "// Register", + "RegisterMapEvent($2, InstanceEvents.INSTANCE_EVENT_ON_PLAYER_ENTER, (...args) => $1(...args));" + ], + "description": "Instance Event on Player Enter", + "scope": "typescript" + }, + "Instance Creature Create": { + "prefix": "instance_creature_create", + "body": [ + "const $1: instance_event_on_creature_create = (event: number, instanceData: number[], map: EMap, creature: Creature) => {", + "\t// Implementation", + "};", + "", + "// Register", + "RegisterMapEvent($2, InstanceEvents.INSTANCE_EVENT_ON_CREATURE_CREATE, (...args) => $1(...args));" + ], + "description": "Instance Event on Creature Create", + "scope": "typescript" + }, + "Instance GameObject Create": { + "prefix": "instance_gameobject_create", + "body": [ + "const $1: instance_event_on_gameobject_create = (event: number, instanceData: number[], map: EMap, gameObject: GameObject) => {", + "\t// Implementation", + "};", + "", + "// Register", + "RegisterMapEvent($2, InstanceEvents.INSTANCE_EVENT_ON_GAMEOBJECT_CREATE, (...args) => $1(...args));" + ], + "description": "Instance Event on GameObject Create", + "scope": "typescript" + }, + "Instance Check Encounter in Progress": { + "prefix": "instance_check_encounter_in_progress", + "body": [ + "const $1: instance_event_on_check_encounter_in_progress = (event: number, instanceData: number[], map: EMap): boolean => {", + "\t// Implementation", + "\treturn true;", + "};", + "", + "// Register", + "RegisterMapEvent($2, InstanceEvents.INSTANCE_EVENT_ON_CHECK_ENCOUNTER_IN_PROGRESS, (...args) => $1(...args));" + ], + "description": "Instance Event on Check Encounter in Progress", + "scope": "typescript" + } +} diff --git a/snippets/eluna/itemevents.code-snippets b/snippets/eluna/itemevents.code-snippets new file mode 100644 index 0000000..80770d9 --- /dev/null +++ b/snippets/eluna/itemevents.code-snippets @@ -0,0 +1,72 @@ +{ + "Item Dummy Effect": { + "prefix": "item_dummy_effect", + "body": [ + "const $1: item_event_on_dummy_effect = (event: number, caster: Player, spellId: number, effIndex: number, item: Item) => {", + "\t// Implementation", + "};", + "", + "// Register", + "RegisterItemEvent($2, ItemEvents.ITEM_EVENT_ON_DUMMY_EFFECT, (...args) => $1(...args));" + ], + "description": "Item Event on Dummy Effect", + "scope": "typescript" + }, + "Item Use": { + "prefix": "item_use", + "body": [ + "const $1: item_event_on_use = (event: number, player: Player, item: Item, target: Unit): boolean => {", + "\t// Implementation", + "\treturn true; // Return false to stop the spell casting", + "};", + "", + "// Register", + "RegisterItemEvent($2, ItemEvents.ITEM_EVENT_ON_USE, (...args) => $1(...args));" + ], + "description": "Item Event on Use", + "scope": "typescript" + }, + "Item Quest Accept": { + "prefix": "item_quest_accept", + "body": [ + "const $1: item_event_on_quest_accept = (event: number, player: Player, item: Item, quest: Quest): boolean => {", + "\t// Implementation", + "\treturn false; // Returning true will stop the action from happening", + "};", + "", + "// Register", + "RegisterItemEvent($2, ItemEvents.ITEM_EVENT_ON_QUEST_ACCEPT, (...args) => $1(...args));" + ], + "description": "Item Event on Quest Accept", + "scope": "typescript" + }, + "Item Expire": { + "prefix": "item_expire", + "body": [ + "const $1: item_event_on_expire = (event: number, player: Player, itemId: number): boolean => {", + "\t// Implementation", + "\treturn false; // Returning true will stop the action from happening", + "};", + "", + "// Register", + "RegisterItemEvent($2, ItemEvents.ITEM_EVENT_ON_EXPIRE, (...args) => $1(...args));" + ], + "description": "Item Event on Expire", + "scope": "typescript" + }, + "Item Remove": { + "prefix": "item_remove", + "body": [ + "const $1: item_event_on_remove = (event: number, player: Player, item: Item): boolean => {", + "\t// Implementation", + "\treturn false; // Returning true will stop the action from happening", + "};", + "", + "// Register", + "RegisterItemEvent($2, ItemEvents.ITEM_EVENT_ON_REMOVE, (...args) => $1(...args));" + ], + "description": "Item Event on Remove", + "scope": "typescript" + } + } + \ No newline at end of file diff --git a/snippets/eluna/playerevents.code-snippets b/snippets/eluna/playerevents.code-snippets new file mode 100644 index 0000000..0d3b3ec --- /dev/null +++ b/snippets/eluna/playerevents.code-snippets @@ -0,0 +1,378 @@ +{ + "Character Create": { + "prefix": "player_character_create", + "body": [ + "const $1: player_event_on_character_create = (event: number, player: Player) => {", + "\t// Implementation", + "};", + "", + "// Register", + "RegisterPlayerEvent(PlayerEvents.PLAYER_EVENT_ON_CHARACTER_CREATE, (...args) => $1(...args));" + ], + "description": "Player Event on Character Create", + "scope": "typescript" + }, + "Character Delete": { + "prefix": "player_character_delete", + "body": [ + "const $1: player_event_on_character_delete = (event: number, guid: number) => {", + "\t// Implementation", + "};", + "", + "// Register", + "RegisterPlayerEvent(PlayerEvents.PLAYER_EVENT_ON_CHARACTER_DELETE, (...args) => $1(...args));" + ], + "description": "Player Event on Character Delete", + "scope": "typescript" + }, + "Login": { + "prefix": "player_login", + "body": [ + "const $1: player_event_on_login = (event: number, player: Player) => {", + "\t// Implementation", + "};", + "", + "// Register", + "RegisterPlayerEvent(PlayerEvents.PLAYER_EVENT_ON_LOGIN, (...args) => $1(...args));" + ], + "description": "Player Event on Login", + "scope": "typescript" + }, + "Logout": { + "prefix": "player_logout", + "body": [ + "const $1: player_event_on_logout = (event: number, player: Player) => {", + "\t// Implementation", + "};", + "", + "// Register", + "RegisterPlayerEvent(PlayerEvents.PLAYER_EVENT_ON_LOGOUT, (...args) => $1(...args));" + ], + "description": "Player Event on Logout", + "scope": "typescript" + }, + "Spell Cast": { + "prefix": "player_spell_cast", + "body": [ + "const $1: player_event_on_spell_cast = (event: number, player: Player, spell: Spell, skipCheck: boolean) => {", + "\t// Implementation", + "};", + "", + "// Register", + "RegisterPlayerEvent(PlayerEvents.PLAYER_EVENT_ON_SPELL_CAST, (...args) => $1(...args));" + ], + "description": "Player Event on Spell Cast", + "scope": "typescript" + }, + "Kill Player": { + "prefix": "player_kill_player", + "body": [ + "const $1: player_event_on_kill_player = (event: number, killer: Player, killed: Player) => {", + "\t// Implementation", + "};", + "", + "// Register", + "RegisterPlayerEvent(PlayerEvents.PLAYER_EVENT_ON_KILL_PLAYER, (...args) => $1(...args));" + ], + "description": "Player Event on Kill Player", + "scope": "typescript" + }, + "Kill Creature": { + "prefix": "player_kill_creature", + "body": [ + "const $1: player_event_on_kill_creature = (event: number, killer: Player, killed: Creature) => {", + "\t// Implementation", + "};", + "", + "// Register", + "RegisterPlayerEvent(PlayerEvents.PLAYER_EVENT_ON_KILL_CREATURE, (...args) => $1(...args));" + ], + "description": "Player Event on Kill Creature", + "scope": "typescript" + }, + "Killed by Creature": { + "prefix": "player_killed_by_creature", + "body": [ + "const $1: player_event_on_killed_by_creature = (event: number, killer: Creature, killed: Player) => {", + "\t// Implementation", + "};", + "", + "// Register", + "RegisterPlayerEvent(PlayerEvents.PLAYER_EVENT_ON_KILLED_BY_CREATURE, (...args) => $1(...args));" + ], + "description": "Player Event on Killed by Creature", + "scope": "typescript" + }, + "Duel Request": { + "prefix": "player_duel_request", + "body": [ + "const $1: player_event_on_duel_request = (event: number, target: Player, challenger: Player) => {", + "\t// Implementation", + "};", + "", + "// Register", + "RegisterPlayerEvent(PlayerEvents.PLAYER_EVENT_ON_DUEL_REQUEST, (...args) => $1(...args));" + ], + "description": "Player Event on Duel Request", + "scope": "typescript" + }, + "Duel Start": { + "prefix": "player_duel_start", + "body": [ + "const $1: player_event_on_duel_start = (event: number, starter: Player, challenger: Player) => {", + "\t// Implementation", + "};", + "", + "// Register", + "RegisterPlayerEvent(PlayerEvents.PLAYER_EVENT_ON_DUEL_START, (...args) => $1(...args));" + ], + "description": "Player Event on Duel Start", + "scope": "typescript" + }, + "Duel End": { + "prefix": "player_duel_end", + "body": [ + "const $1: player_event_on_duel_end = (event: number, winner: Player, loser: Player, type: DuelCompleteType) => {", + "\t// Implementation", + "};", + "", + "// Register", + "RegisterPlayerEvent(PlayerEvents.PLAYER_EVENT_ON_DUEL_END, (...args) => $1(...args));" + ], + "description": "Player Event on Duel End", + "scope": "typescript" + }, + "Give XP": { + "prefix": "player_give_xp", + "body": [ + "const $1: player_event_on_give_xp = (event: number, player: Player, amount: number, victim: Player) => {", + "\t// Implementation", + "};", + "", + "// Register", + "RegisterPlayerEvent(PlayerEvents.PLAYER_EVENT_ON_GIVE_XP, (...args) => $1(...args));" + ], + "description": "Player Event on Give XP", + "scope": "typescript" + }, + "Level Change": { + "prefix": "player_level_change", + "body": [ + "const $1: player_event_on_level_change = (event: number, player: Player, oldLevel: number) => {", + "\t// Implementation", + "};", + "", + "// Register", + "RegisterPlayerEvent(PlayerEvents.PLAYER_EVENT_ON_LEVEL_CHANGE, (...args) => $1(...args));" + ], + "description": "Player Event on Level Change", + "scope": "typescript" + }, + "Money Change": { + "prefix": "player_money_change", + "body": [ + "const $1: player_event_on_money_change = (event: number, player: Player, amount: number) => {", + "\t// Implementation", + "};", + "", + "// Register", + "RegisterPlayerEvent(PlayerEvents.PLAYER_EVENT_ON_MONEY_CHANGE, (...args) => $1(...args));" + ], + "description": "Player Event on Money Change", + "scope": "typescript" + }, + "Reputation Change": { + "prefix": "player_reputation_change", + "body": [ + "const $1: player_event_on_reputation_change = (event: number, player: Player, factionId: number, standing: number, incremental: boolean) => {", + "\t// Implementation", + "};", + "", + "// Register", + "RegisterPlayerEvent(PlayerEvents.PLAYER_EVENT_ON_REPUTATION_CHANGE, (...args) => $1(...args));" + ], + "description": "Player Event on Reputation Change", + "scope": "typescript" + }, + "Talents Change": { + "prefix": "player_talents_change", + "body": [ + "const $1: player_event_on_talents_change = (event: number, player: Player, points: number) => {", + "\t// Implementation", + "};", + "", + "// Register", + "RegisterPlayerEvent(PlayerEvents.PLAYER_EVENT_ON_TALENTS_CHANGE, (...args) => $1(...args));" + ], + "description": "Player Event on Talents Change", + "scope": "typescript" + }, + "Talents Reset": { + "prefix": "player_talents_reset", + "body": [ + "const $1: player_event_on_talents_reset = (event: number, player: Player, noCost: boolean) => {", + "\t// Implementation", + "};", + "", + "// Register", + "RegisterPlayerEvent(PlayerEvents.PLAYER_EVENT_ON_TALENTS_RESET, (...args) => $1(...args));" + ], + "description": "Player Event on Talents Reset", + "scope": "typescript" + }, + "Chat": { + "prefix": "player_chat", + "body": [ + "const $1: player_event_on_chat = (event: number, player: Player, msg: string, Type: ChatMsg, lang: Language): string | boolean => {", + "\t// Implementation", + "\treturn '' // Return a string to override the message, or return nothing to keep the original message;", + "\treturn false // Return false to block the message, or return true to allow the message;", + "};", + "", + "// Register", + "RegisterPlayerEvent(PlayerEvents.PLAYER_EVENT_ON_CHAT, (...args) => $1(...args));" + ], + "description": "Player Event on Chat", + "scope": "typescript" + }, + "Whisper": { + "prefix": "player_whisper", + "body": [ + "const $1: player_event_on_whisper = (event: number, player: Player, msg: string, Type: ChatMsg, lang: Language, receiver: Player): string | boolean => {", + "\t// Implementation", + "\treturn '' // Return a string to override the message, or return nothing to keep the original message;", + "\treturn false // Return false to block the message, or return true to allow the message;", + "};", + "", + "// Register", + "RegisterPlayerEvent(PlayerEvents.PLAYER_EVENT_ON_WHISPER, (...args) => $1(...args));" + ], + "description": "Player Event on Whisper", + "scope": "typescript" + }, + "Group Chat": { + "prefix": "player_group_chat", + "body": [ + "const $1: player_event_on_group_chat = (event: number, player: Player, msg: string, Type: ChatMsg, lang: Language, group: Group): string | boolean => {", + "\t// Implementation", + "\treturn '' // Return a string to override the message, or return nothing to keep the original message;", + "\treturn false // Return false to block the message, or return true to allow the message;", + "};", + "", + "// Register", + "RegisterPlayerEvent(PlayerEvents.PLAYER_EVENT_ON_GROUP_CHAT, (...args) => $1(...args));" + ], + "description": "Player Event on Group Chat", + "scope": "typescript" + }, + "Guild Chat": { + "prefix": "player_guild_chat", + "body": [ + "const $1: player_event_on_guild_chat = (event: number, player: Player, msg: string, Type: ChatMsg, lang: Language, guild: Guild): string | boolean => {", + "\t// Implementation", + "\treturn '' // Return a string to override the message, or return nothing to keep the original message;", + "\treturn false // Return false to block the message, or return true to allow the message;", + "};", + "", + "// Register", + "RegisterPlayerEvent(PlayerEvents.PLAYER_EVENT_ON_GUILD_CHAT, (...args) => $1(...args));" + ], + "description": "Player Event on Guild Chat", + "scope": "typescript" + }, + "Channel Chat": { + "prefix": "player_channel_chat", + "body": [ + "const $1: player_event_on_channel_chat = (event: number, player: Player, msg: string, Type: ChatMsg, lang: Language, channel: number): string | boolean => {", + "\t// Implementation", + "\treturn '' // Return a string to override the message, or return nothing to keep the original message;", + "\treturn false // Return false to block the message, or return true to allow the message;", + "};", + "", + "// Register", + "RegisterPlayerEvent(PlayerEvents.PLAYER_EVENT_ON_CHANNEL_CHAT, (...args) => $1(...args));" + ], + "description": "Player Event on Channel Chat", + "scope": "typescript" + }, + "Emote": { + "prefix": "player_emote", + "body": [ + "const $1: player_event_on_emote = (event: number, player: Player, emote: EmoteType) => {", + "\t// Implementation", + "};", + "", + "// Register", + "RegisterPlayerEvent(PlayerEvents.PLAYER_EVENT_ON_EMOTE, (...args) => $1(...args));" + ], + "description": "Player Event on Emote", + "scope": "typescript" + }, + "Text Emote": { + "prefix": "player_text_emote", + "body": [ + "const $1: player_event_on_text_emote = (event: number, player: Player, textEmote: string, emoteNum: number, guid: number) => {", + "\t// Implementation", + "};", + "", + "// Register", + "RegisterPlayerEvent(PlayerEvents.PLAYER_EVENT_ON_TEXT_EMOTE, (...args) => $1(...args));" + ], + "description": "Player Event on Text Emote", + "scope": "typescript" + }, + "Save": { + "prefix": "player_save", + "body": [ + "const $1: player_event_on_save = (event: number, player: Player) => {", + "\t// Implementation", + "};", + "", + "// Register", + "RegisterPlayerEvent(PlayerEvents.PLAYER_EVENT_ON_SAVE, (...args) => $1(...args));" + ], + "description": "Player Event on Save", + "scope": "typescript" + }, + "Bind to Instance": { + "prefix": "player_bind_to_instance", + "body": [ + "const $1: player_event_on_bind_to_instance = (event: number, player: Player, difficulty: Difficulty, mapid: number, permanent: boolean) => {", + "\t// Implementation", + "};", + "", + "// Register", + "RegisterPlayerEvent(PlayerEvents.PLAYER_EVENT_ON_BIND_TO_INSTANCE, (...args) => $1(...args));" + ], + "description": "Player Event on Bind to Instance", + "scope": "typescript" + }, + "Update Zone": { + "prefix": "player_update_zone", + "body": [ + "const $1: player_event_on_update_zone = (event: number, player: Player, newZone: ZoneIdType, newArea: number) => {", + "\tif(newZone === ZoneIdType.Dalaran) {", + "\t\t// Implementation", + "\t}", + "};", + "", + "// Register", + "RegisterPlayerEvent(PlayerEvents.PLAYER_EVENT_ON_UPDATE_ZONE, (...args) => $1(...args));" + ], + "description": "Player Event on Update Zone", + "scope": "typescript" + }, + "Map Change": { + "prefix": "player_map_change", + "body": [ + "const $1: player_event_on_map_change = (event: number, player: Player) => {", + "\t// Implementation", + "};", + "", + "// Register", + "RegisterPlayerEvent(PlayerEvents.PLAYER_EVENT_ON_MAP_CHANGE, (...args) => $1(...args));" + ], + "description": "Player Event on Map Change", + "scope": "typescript" + } +} diff --git a/snippets/eluna/serverevents.code-snippets b/snippets/eluna/serverevents.code-snippets new file mode 100644 index 0000000..90fcaa2 --- /dev/null +++ b/snippets/eluna/serverevents.code-snippets @@ -0,0 +1,345 @@ +{ + "Server Packet Receive": { + "prefix": "server_packet_receive", + "body": [ + "const $1: server_event_on_packet_receive_any = (event: number, packet: WorldPacket, player?: Player): boolean | WorldPacket => {", + "\t// Implementation", + "\treturn false;", + "\treturn packet;", + "};", + "", + "// Register Server Event on Packet Receive", + "RegisterServerEvent(ServerEvents.SERVER_EVENT_ON_PACKET_RECEIVE, (...args) => $1(...args));" + ], + "description": "Server Event on Packet Receive", + "scope": "typescript" + }, + "Server Packet Send": { + "prefix": "server_packet_send", + "body": [ + "const $1: server_event_on_packet_send_any = (event: number, packet: WorldPacket, player?: Player): boolean | WorldPacket => {", + "\t// Implementation", + "\treturn false;", + "\treturn packet;", + "};", + "", + "// Register Server Event on Packet Send", + "RegisterServerEvent(ServerEvents.SERVER_EVENT_ON_PACKET_SEND, (...args) => $1(...args));" + ], + "description": "Server Event on Packet Send", + "scope": "typescript" + }, + "Server Open State Change": { + "prefix": "server_open_state_change", + "body": [ + "const $1: world_event_on_open_state_change = (event: number, open: boolean) => {", + "\t// Implementation", + "};", + "", + "// Register Server Event on Open State Change", + "RegisterServerEvent(ServerEvents.WORLD_EVENT_ON_OPEN_STATE_CHANGE, (...args) => $1(...args));" + ], + "description": "World Event on Open State Change", + "scope": "typescript" + }, + "Server Config Load": { + "prefix": "server_config_load", + "body": [ + "const $1: world_event_on_config_load = (event: number, reload: boolean) => {", + "\t// Implementation", + "};", + "", + "// Register Server Event on Config Load", + "RegisterServerEvent(ServerEvents.WORLD_EVENT_ON_CONFIG_LOAD, (...args) => $1(...args));" + ], + "description": "World Event on Config Load", + "scope": "typescript" + }, + "Server Shutdown Init": { + "prefix": "server_shutdown_init", + "body": [ + "const $1: world_event_on_shutdown_init = (event: number, code: number, mask: number) => {", + "\t// Implementation", + "};", + "", + "// Register Server Event on Shutdown Init", + "RegisterServerEvent(ServerEvents.WORLD_EVENT_ON_SHUTDOWN_INIT, (...args) => $1(...args));" + ], + "description": "World Event on Shutdown Init", + "scope": "typescript" + }, + "Server Shutdown Cancel": { + "prefix": "server_shutdown_cancel", + "body": [ + "const $1: world_event_on_shutdown_cancel = (event: number) => {", + "\t// Implementation", + "};", + "", + "// Register Server Event on Shutdown Cancel", + "RegisterServerEvent(ServerEvents.WORLD_EVENT_ON_SHUTDOWN_CANCEL, (...args) => $1(...args));" + ], + "description": "World Event on Shutdown Cancel", + "scope": "typescript" + }, + "Server Update": { + "prefix": "server_update", + "body": [ + "const $1: world_event_on_update = (event: number, diff: number) => {", + "\t// Implementation", + "};", + "", + "// Register Server Event on Update", + "RegisterServerEvent(ServerEvents.WORLD_EVENT_ON_UPDATE, (...args) => $1(...args));" + ], + "description": "World Event on Update", + "scope": "typescript" + }, + "Server Startup": { + "prefix": "server_startup", + "body": [ + "const $1: world_event_on_startup = (event: number) => {", + "\t// Implementation", + "};", + "", + "// Register Server Event on Startup", + "RegisterServerEvent(ServerEvents.WORLD_EVENT_ON_STARTUP, (...args) => $1(...args));" + ], + "description": "World Event on Startup", + "scope": "typescript" + }, + "Server Shutdown": { + "prefix": "server_shutdown", + "body": [ + "const $1: world_event_on_shutdown = (event: number) => {", + "\t// Implementation", + "};", + "", + "// Register Server Event on Shutdown", + "RegisterServerEvent(ServerEvents.WORLD_EVENT_ON_SHUTDOWN, (...args) => $1(...args));" + ], + "description": "World Event on Shutdown", + "scope": "typescript" + }, + "Server Lua State Open": { + "prefix": "server_lua_state_open", + "body": [ + "const $1: eluna_event_on_lua_state_open = (event: number) => {", + "\t// Implementation", + "};", + "", + "// Register Server Event on Lua State Open", + "RegisterServerEvent(ServerEvents.ELUNA_EVENT_ON_LUA_STATE_OPEN, (...args) => $1(...args));" + ], + "description": "Eluna Event on Lua State Open", + "scope": "typescript" + }, + "Server Delete Creature": { + "prefix": "server_delete_creature", + "body": [ + "const $1: world_event_on_delete_creature = (event: number, creature: Creature) => {", + "\t// Implementation", + "};", + "", + "// Register Server Event on Delete Creature", + "RegisterServerEvent(ServerEvents.WORLD_EVENT_ON_DELETE_CREATURE, (...args) => $1(...args));" + ], + "description": "World Event on Delete Creature", + "scope": "typescript" + }, + "Server Delete Gameobject": { + "prefix": "server_delete_gameobject", + "body": [ + "const $1: world_event_on_delete_gameobject = (event: number, gameObject: GameObject) => {", + "\t// Implementation", + "};", + "", + "// Register Server Event on Delete Gameobject", + "RegisterServerEvent(ServerEvents.WORLD_EVENT_ON_DELETE_GAMEOBJECT, (...args) => $1(...args));" + ], + "description": "World Event on Delete Gameobject", + "scope": "typescript" + }, + "Server Game Event Start": { + "prefix": "server_game_event_start", + "body": [ + "const $1: game_event_start = (event: number, gameEventId: number) => {", + "\t// Implementation", + "};", + "", + "// Register Server Event on Game Event Start", + "RegisterServerEvent(ServerEvents.GAME_EVENT_START, (...args) => $1(...args));" + ], + "description": "Game Event Start", + "scope": "typescript" + }, + "Server Game Event Stop": { + "prefix": "server_game_event_stop", + "body": [ + "const $1: game_event_stop = (event: number, gameEventId: number) => {", + "\t// Implementation", + "};", + "", + "// Register Server Event on Game Event Stop", + "RegisterServerEvent(ServerEvents.GAME_EVENT_STOP, (...args) => $1(...args));" + ], + "description": "Game Event Stop", + "scope": "typescript" + }, + "EMap Event on Create": { + "prefix": "server_map_on_create", + "body": [ + "const $1: map_event_on_create = (event: number, map: EMap) => {", + "\t// Implementation", + "};", + "", + "// Register Map Event on Create", + "RegisterServerEvent(ServerEvents.MAP_EVENT_ON_CREATE, (...args) => $1(...args));" + ], + "description": "Map Event on Create", + "scope": "typescript" + }, + "Map Event on Destroy": { + "prefix": "server_map_on_destroy", + "body": [ + "const $1: map_event_on_destroy = (event: number, map: EMap) => {", + "\t// Implementation", + "};", + "", + "// Register Map Event on Destroy", + "RegisterServerEvent(ServerEvents.MAP_EVENT_ON_DESTROY, (...args) => $1(...args));" + ], + "description": "Map Event on Destroy", + "scope": "typescript" + }, + "Map Event on Player Enter": { + "prefix": "server_map_on_player_enter", + "body": [ + "const $1: map_event_on_player_enter = (event: number, map: EMap, player: Player) => {", + "\t// Implementation", + "};", + "", + "// Register Map Event on Player Enter", + "RegisterServerEvent(ServerEvents.MAP_EVENT_ON_PLAYER_ENTER, (...args) => $1(...args));" + ], + "description": "Map Event on Player Enter", + "scope": "typescript" + }, + "Map Event on Player Leave": { + "prefix": "server_map_on_player_leave", + "body": [ + "const $1: map_event_on_player_leave = (event: number, map: EMap, player: Player) => {", + "\t// Implementation", + "};", + "", + "// Register Map Event on Player Leave", + "RegisterServerEvent(ServerEvents.MAP_EVENT_ON_PLAYER_LEAVE, (...args) => $1(...args));" + ], + "description": "Map Event on Player Leave", + "scope": "typescript" + }, + "Map Event on Update": { + "prefix": "server_map_on_update", + "body": [ + "const $1: map_event_on_update = (event: number, map: EMap, diff: number) => {", + "\t// Implementation", + "};", + "", + "// Register Map Event on Update", + "RegisterServerEvent(ServerEvents.MAP_EVENT_ON_UPDATE, (...args) => $1(...args));" + ], + "description": "Map Event on Update", + "scope": "typescript" + }, + "Trigger Event on Trigger": { + "prefix": "server_trigger", + "body": [ + "const $1: trigger_event_on_trigger = (event: number, player: Player, triggerId: number): boolean => {", + "\t// Implementation", + "\treturn false;", + "};", + "", + "// Register Trigger Event on Trigger", + "RegisterServerEvent(ServerEvents.TRIGGER_EVENT_ON_TRIGGER, (...args) => $1(...args));" + ], + "description": "Trigger Event on Trigger", + "scope": "typescript" + }, + "Weather Event on Change": { + "prefix": "weather_on_change", + "body": [ + "const $1: weather_event_on_change = (event: number, zoneId: number, state: WeatherState, grade: number) => {", + "\t// Implementation", + "};", + "", + "// Register Weather Event on Change", + "RegisterServerEvent(ServerEvents.WEATHER_EVENT_ON_CHANGE, (...args) => $1(...args));" + ], + "description": "Weather Event on Change", + "scope": "typescript" + }, + "Auction Event on Add": { + "prefix": "auction_on_add", + "body": [ + "const $1: auction_event_on_add = (event: number, auctionId: number, owner: Player, item: Item, expireTime: number, buyout: number, startBid: number, currentBid: number, bidderGUIDLow: number) => {", + "\t// Implementation", + "};", + "", + "// Register Auction Event on Add", + "RegisterServerEvent(ServerEvents.AUCTION_EVENT_ON_ADD, (...args) => $1(...args));" + ], + "description": "Auction Event on Add", + "scope": "typescript" + }, + "Auction Event on Remove": { + "prefix": "auction_on_remove", + "body": [ + "const $1: auction_event_on_remove = (event: number, auctionId: number, owner: Player, item: Item, expireTime: number, buyout: number, startBid: number, currentBid: number, bidderGUIDLow: number) => {", + "\t// Implementation", + "};", + "", + "// Register Auction Event on Remove", + "RegisterServerEvent(ServerEvents.AUCTION_EVENT_ON_REMOVE, (...args) => $1(...args));" + ], + "description": "Auction Event on Remove", + "scope": "typescript" + }, + "Auction Event on Successful": { + "prefix": "auction_on_successful", + "body": [ + "const $1: auction_event_on_successful = (event: number, auctionId: number, owner: Player, item: Item, expireTime: number, buyout: number, startBid: number, currentBid: number, bidderGUIDLow: number) => {", + "\t// Implementation", + "};", + "", + "// Register Auction Event on Successful", + "RegisterServerEvent(ServerEvents.AUCTION_EVENT_ON_SUCCESSFUL, (...args) => $1(...args));" + ], + "description": "Auction Event on Successful", + "scope": "typescript" + }, + "Auction Event on Expire": { + "prefix": "auction_on_expire", + "body": [ + "const $1: auction_event_on_expire = (event: number, auctionId: number, owner: Player, item: Item, expireTime: number, buyout: number, startBid: number, currentBid: number, bidderGUIDLow: number) => {", + "\t// Implementation", + "};", + "", + "// Register Auction Event on Expire", + "RegisterServerEvent(ServerEvents.AUCTION_EVENT_ON_EXPIRE, (...args) => $1(...args));" + ], + "description": "Auction Event on Expire", + "scope": "typescript" + }, + "AddOn Event on Message": { + "prefix": "addon_on_message", + "body": [ + "const $1: addon_event_on_message = (event: number, sender: string, type: AddonMessageType, prefix: string, msg: string, target?: string) => {", + "\t// Implementation", + "};", + "", + "// Register AddOn Event on Message", + "RegisterServerEvent(ServerEvents.ADDON_EVENT_ON_MESSAGE, (...args) => $1(...args));" + ], + "description": "AddOn Event on Message", + "scope": "typescript" + } +} \ No newline at end of file diff --git a/tsconfig.build.json b/tsconfig.build.json index 87d26be..8ea0aa2 100644 --- a/tsconfig.build.json +++ b/tsconfig.build.json @@ -27,8 +27,7 @@ "exclude": [ "common/src/declarations", "node_modules", - "**/node_modules", - "**/*spec.ts", + "**/node_modules", "**/__tests__", ], "tstl": { diff --git a/tsconfig.json b/tsconfig.json index 623a1bd..e2f5cfc 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -11,8 +11,7 @@ "esnext","DOM" ], "types": [ - "lua-types/5.2", - "jest" + "lua-types/5.2" ], "typeRoots": [ "./types", diff --git a/tsconfig.module.json b/tsconfig.module.json index 18b5c1b..d4280e8 100644 --- a/tsconfig.module.json +++ b/tsconfig.module.json @@ -6,7 +6,7 @@ "outDir": "[[module_output]]", "skipLibCheck": true, "lib": [ - "esnext","DOM" + "esnext" ], "moduleResolution": "node", "types": [ @@ -23,10 +23,8 @@ "exclude": [ "node_modules", "**/node_modules", - "test", - "**/*spec.ts", - "**/__tests__", - "**/__mocks__" + "test", + "**/__tests__" ], "tstl": { "luaTarget": "5.2",