diff --git a/.eslintrc.json b/.eslintrc.json index 664d45e09e..7cc2b00fb9 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -7,7 +7,9 @@ "eslint:recommended", "plugin:prettier/recommended" ], - "plugins": [], + "plugins": [ + "unicorn" + ], "ignorePatterns": [ "**/doc", "**/build" @@ -72,10 +74,13 @@ "no-trailing-spaces": "error", "prettier/prettier": "error", "no-nested-ternary": "off", - "no-unneeded-ternary": "error" + "no-unneeded-ternary": "error", + "unicorn/prefer-module": "error", + "unicorn/prefer-node-protocol": "error" }, "parserOptions": { - "ecmaVersion": 2021 + "sourceType": "module", + "ecmaVersion": 2022 }, "overrides": [ { @@ -87,6 +92,8 @@ }, "files": [ "**/*.ts", + "**/*.cts", + "**/*.mts", "**/*.tsx" ], "extends": [ diff --git a/.github/workflows/ci-tests.yml b/.github/workflows/ci-tests.yml index 2b8905b4b0..f41aab6e5c 100644 --- a/.github/workflows/ci-tests.yml +++ b/.github/workflows/ci-tests.yml @@ -25,10 +25,10 @@ jobs: steps: - uses: actions/checkout@v4 - - name: Use Node.js 16 + - name: Use Node.js 18 uses: actions/setup-node@v4 with: - node-version: 16 + node-version: 18 - name: NPM install run: npm i --ignore-scripts # install typescript and @types do not `setup first` @@ -43,7 +43,7 @@ jobs: fail-fast: false matrix: os: [windows-latest, ubuntu-20.04, macos-latest] - node: [16, 18, 20] + node: [18, 20] steps: - uses: actions/checkout@v4 @@ -124,11 +124,11 @@ jobs: if: steps.automerge.outputs.mergeResult == 'merged' uses: actions/checkout@v4 - - name: Use Node.js 16 + - name: Use Node.js 18 if: steps.automerge.outputs.mergeResult == 'merged' uses: actions/setup-node@v4 with: - node-version: 16 + node-version: 18 - name: Determine version if: steps.automerge.outputs.mergeResult == 'merged' diff --git a/.github/workflows/nightly-dev-release.yml b/.github/workflows/nightly-dev-release.yml index 82f223a54e..0f956b51c5 100644 --- a/.github/workflows/nightly-dev-release.yml +++ b/.github/workflows/nightly-dev-release.yml @@ -11,7 +11,7 @@ jobs: strategy: matrix: - node: [16.x] # This should be LTS + node: [18.x] # This should be LTS steps: - name: Checkout code diff --git a/.github/workflows/official-release.yml b/.github/workflows/official-release.yml index 3d92978d3d..7cee35177a 100644 --- a/.github/workflows/official-release.yml +++ b/.github/workflows/official-release.yml @@ -19,7 +19,7 @@ jobs: strategy: matrix: - node: [16.x] # This should be LTS + node: [18.x] # This should be LTS steps: - name: Checkout code diff --git a/.mocharc.json b/.mocharc.json new file mode 100644 index 0000000000..239b766cc2 --- /dev/null +++ b/.mocharc.json @@ -0,0 +1,3 @@ +{ + "loader": "ts-node/esm" +} diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 0000000000..25bf17fc5a --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +18 \ No newline at end of file diff --git a/gulpfile.js b/gulpfile.js deleted file mode 100644 index 54d19fc2e9..0000000000 --- a/gulpfile.js +++ /dev/null @@ -1,292 +0,0 @@ -/** - * Gulp tasks: update default repo files, create template for news. - * - * Copyright 2018-2022 bluefox , - * MIT License - * - */ -'use strict'; - -const gulp = require('gulp'); -const fs = require('fs-extra'); -const path = require('path'); -const pkg = require('./package.json'); -const iopackage = require('./packages/controller/io-package.json'); -const version = pkg && pkg.version ? pkg.version : iopackage.common.version; -const request = require('request'); -const replace = require('gulp-replace'); -const jsdoc = require('gulp-jsdoc3'); - -const appName = getAppName(); -const srcDir = __dirname + '/'; - -function getAppName() { - const parts = __dirname.replace(/\\/g, '/').split('/'); - return parts[parts.length - 1].split('.')[0].toLowerCase(); -} - -function processAdapters(sources, adapters, callback, result) { - result = result || {}; - if (!adapters || !adapters.length) { - callback(result); - } else { - const adapter = adapters.shift(); - request(sources[adapter].meta, (err, status, body) => { - try { - result[adapter] = JSON.parse(body).common; - } catch (e) { - console.error('Cannot parse "' + adapter + '": ' + e); - } - setImmediate(processAdapters, sources, adapters, callback, result); - }); - } -} - -gulp.task('updateRepo', done => { - const sources = fs.readJSONSync(__dirname + '/conf/sources-dist.json'); - const adapters = Object.keys(sources); - - processAdapters(sources, adapters, result => { - for (const adapter of Object.keys(result)) { - const meta = sources[adapter].meta; - const url = sources[adapter].url; - sources[adapter] = result[adapter]; - sources[adapter].meta = meta; - sources[adapter].url = url; - sources[adapter].icon = sources[adapter].extIcon; - } - fs.writeFileSync(__dirname + '/conf/sources-dist.json', JSON.stringify(sources, null, 2)); - done(); - }); -}); - -gulp.task('renameFiles', done => { - fs.unlink(__dirname + '/iobroker.png'); - if (fs.existsSync(__dirname + '/iobroker')) { - fs.renameSync(__dirname + '/iobroker', __dirname + '/' + appName); - } - if (fs.existsSync(__dirname + '/_service_iobroker.bat')) { - fs.renameSync(__dirname + '/_service_iobroker.bat', __dirname + '/_service_' + appName + '.bat'); - } - if (fs.existsSync(__dirname + '/iobroker.bat')) { - fs.renameSync(__dirname + '/iobroker.bat', __dirname + '/' + appName + '.bat'); - } - if (fs.existsSync(__dirname + '/iobroker.js')) { - fs.renameSync(__dirname + '/iobroker.js', __dirname + '/' + appName + '.js'); - } - if (fs.existsSync(__dirname + '/conf/iobroker-dist.json')) { - fs.renameSync(__dirname + '/conf/iobroker-dist.json', __dirname + '/conf/' + appName + '-dist.json'); - } - done(); -}); - -gulp.task('replaceName', () => { - const patterns = [ - { - match: /iobroker/gi, - replacement: appName - }, - { - match: /"iobroker\.admin": "\*"/i, - replacement: '' - } - ]; - const files = [ - { - expand: true, - flatten: true, - src: [srcDir + '*.*', srcDir + '.travis.yml', srcDir + '.npmignore', srcDir + '.gitignore'], - dest: srcDir - }, - { - expand: true, - flatten: true, - src: [srcDir + 'admin/*.*', '!' + srcDir + 'admin/*.png'], - dest: srcDir + 'admin' - }, - { - expand: true, - flatten: true, - src: [srcDir + 'lib/*.*'], - dest: srcDir + 'lib' - }, - { - expand: true, - flatten: true, - src: [srcDir + 'example/*.*'], - dest: srcDir + 'example' - }, - { - expand: true, - flatten: true, - src: [srcDir + 'www/*.*'], - dest: srcDir + 'www' - }, - { - expand: true, - flatten: true, - src: [srcDir + 'conf/*.*'], - dest: srcDir + 'conf' - } - ]; - - const tasks = []; - - files.forEach(task => - tasks.push( - gulp - .src(task.src) - .pipe(replace(patterns[0].match, patterns[0].replacement)) - .pipe(replace(patterns[1].match, patterns[1].replacement)) - .pipe(gulp.dest(task.dest)) - ) - ); - - return Promise.all(tasks); -}); - -gulp.task('replaceCore', done => { - const patterns = [ - { - match: /var version = '[.0-9]*';/g, - replacement: "var version = '" + iopackage.common.version + "';" - }, - { - match: /"version": "[.0-9]*",/g, - replacement: '"version": "' + iopackage.common.version + '",' - } - ]; - const files = [srcDir + 'controller.js', srcDir + 'package.json']; - for (let f = 0; f < files.length; f++) { - if (fs.existsSync(files[f])) { - let text = fs.readFileSync(files[f], 'utf8'); - patterns.forEach(pattern => { - text = text.replace(pattern.match, pattern.replacement); - }); - fs.writeFileSync(files[f], text); - } - } - done(); -}); - -gulp.task('cleanRepo', done => { - const sources = fs.readJSONSync(__dirname + '/conf/sources-dist.json'); - for (const adapter of Object.keys(sources)) { - const meta = sources[adapter].meta; - const url = sources[adapter].url; - const icon = sources[adapter].icon; - - sources[adapter] = {}; - if (meta) { - sources[adapter].meta = meta; - } - if (url) { - sources[adapter].url = url; - } - if (icon) { - sources[adapter].icon = icon; - } - } - fs.writeFileSync(__dirname + '/conf/sources-dist.json', JSON.stringify(sources, null, 2)); - done(); -}); - -gulp.task('updateReadme', done => { - const readme = fs.readFileSync('CHANGELOG.md'); - if (readme.indexOf(version) === -1) { - const timestamp = new Date(); - const date = - timestamp.getFullYear() + - '-' + - ('0' + (timestamp.getMonth() + 1).toString(10)).slice(-2) + - '-' + - ('0' + timestamp.getDate().toString(10)).slice(-2); - - let news = ''; - if (iopackage.common.whatsNew) { - for (let i = 0; i < iopackage.common.whatsNew.length; i++) { - if (typeof iopackage.common.whatsNew[i] === 'string') { - news += '* ' + iopackage.common.whatsNew[i] + '\n'; - } else { - news += '* ' + iopackage.common.whatsNew[i].en + '\n'; - } - } - } - fs.writeFileSync('CHANGELOG.md', '# ' + version + ' (' + date + ')\n' + news + '\n' + readme); - } - done(); -}); - -gulp.task('jsdoc', done => { - gulp.src(['lib/adapter.js'], { read: false }).pipe( - jsdoc( - { - tags: { - allowUnknownTags: true - }, - opts: { - destination: './doc' - }, - plugins: ['plugins/markdown'], - templates: { - cleverLinks: false, - monospaceLinks: false, - default: { - outputSourceFiles: true - }, - path: 'ink-docstrap', - theme: 'cerulean', - navType: 'vertical', - linenums: true - //dateFormat: "MMMM Do YYYY, h:mm:ss a" - } - }, - done - ) - ); -}); - -// Creates symlinks in node_modules for all packages found in "./packages" directory -// WARNING: this task can be only started as Administrator (for Windows) -gulp.task('dev', done => { - // check if node_modules exists - const root = path.normalize(__dirname + '/../node_modules'); - if (fs.existsSync(__dirname + '/../node_modules')) { - !fs.existsSync(__dirname + '/../node_modules/@iobroker') && - fs.mkdirSync(__dirname + '/../node_modules/@iobroker'); - } - const packages = fs.readdirSync(__dirname + '/packages'); - packages.forEach(_package => { - if (fs.existsSync(`${__dirname}/packages/${_package}/package.json`)) { - const packName = require(`${__dirname}/packages/${_package}/package.json`).name; - if (fs.existsSync(root + '/' + packName)) { - console.log(`Directory "${root}/${packName}" already exists`); - const stats = fs.lstatSync(root + '/' + packName); - if (!stats.isSymbolicLink()) { - console.log(`Directory "${root}/${packName}" is not the symbolic link. Patching...`); - // delete whole directory - fs.rmSync(`${root}/${packName}`, { recursive: true, force: true }); - // create symlink - const relativePath = path - .relative(`${root}/${packName}`, `${__dirname}/packages/${_package}`) - .replace(/^\.\.[/\\]/, ''); - console.log(`Create symlink to "${root}/${packName}" => ${relativePath}`); - fs.symlinkSync(relativePath, `${root}/${packName}`, 'dir'); - } - } else { - // create symlink - const relativePath = path - .relative(`${root}/${packName}`, `${__dirname}/packages/${_package}`) - .replace(/^\.\.[/\\]/, ''); - console.log(`Create symlink to "${root}/${packName}" => ${relativePath}`); - fs.symlinkSync(relativePath, `${root}/${packName}`, 'dir'); - } - } - }); - done(); -}); - -gulp.task('default', gulp.series('replaceCore', 'updateReadme')); -gulp.task('p', gulp.series('replaceCore', 'updateReadme')); -gulp.task('rename', gulp.series('replaceName', 'renameFiles')); -gulp.task('doc', gulp.series('jsdoc')); diff --git a/package-lock.json b/package-lock.json index 9b2ac4f590..4f34566a25 100644 --- a/package-lock.json +++ b/package-lock.json @@ -42,7 +42,7 @@ "@types/ioredis": "^4.28.10", "@types/jsonwebtoken": "^8.5.9", "@types/mime-types": "^2.1.1", - "@types/mocha": "^10.0.1", + "@types/mocha": "^10.0.6", "@types/node": "^17.0.5", "@types/node-forge": "^1.3.0", "@types/node-schedule": "^2.1.0", @@ -61,17 +61,14 @@ "chai": "^4.3.4", "chai-as-promised": "^7.1.1", "cpy-cli": "^4.2.0", - "eslint": "^8.56.0", + "eslint": "^8.57.0", "eslint-config-prettier": "^9.1.0", "eslint-plugin-jsdoc": "^48.2.1", "eslint-plugin-prettier": "^5.1.3", + "eslint-plugin-unicorn": "^52.0.0", "fs-extra": "^11.1.0", - "get-spdx-license-ids": "^2.1.0", - "gulp": "^4.0.2", - "gulp-jsdoc3": "^3.0.0", - "gulp-replace": "^1.1.4", "lerna": "^7.1.4", - "mocha": "^10.1.0", + "mocha": "^10.4.0", "prettier": "^3.0.1", "semver": "^7.5.2", "sinon": "^15.0.0", @@ -528,9 +525,10 @@ } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.19.1", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", "dev": true, - "license": "MIT", "engines": { "node": ">=6.9.0" } @@ -612,17 +610,6 @@ "node": ">=4" } }, - "node_modules/@babel/parser": { - "version": "7.21.3", - "dev": true, - "license": "MIT", - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, "node_modules/@colors/colors": { "version": "1.5.0", "license": "MIT", @@ -755,30 +742,22 @@ } }, "node_modules/@eslint/js": { - "version": "8.56.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz", - "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==", + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", + "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/@greenlock/manager": { - "version": "3.1.0", - "license": "MPL-2.0", - "optional": true, - "dependencies": { - "greenlock-manager-fs": "^3.1.0" - } - }, "node_modules/@humanwhocodes/config-array": { - "version": "0.11.13", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", - "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==", + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", "dev": true, "dependencies": { - "@humanwhocodes/object-schema": "^2.0.1", - "debug": "^4.1.1", + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", "minimatch": "^3.0.5" }, "engines": { @@ -798,9 +777,9 @@ } }, "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz", - "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", "dev": true }, "node_modules/@hutson/parse-repository-url": { @@ -1781,126 +1760,6 @@ "url": "https://opencollective.com/unts" } }, - "node_modules/@root/acme": { - "version": "3.1.0", - "hasInstallScript": true, - "license": "MPL-2.0", - "optional": true, - "dependencies": { - "@root/csr": "^0.8.1", - "@root/encoding": "^1.0.1", - "@root/keypairs": "^0.10.0", - "@root/pem": "^1.0.4", - "@root/request": "^1.6.1", - "@root/x509": "^0.7.2" - } - }, - "node_modules/@root/acme/node_modules/@root/keypairs": { - "version": "0.10.3", - "license": "MPL-2.0", - "optional": true, - "dependencies": { - "@root/encoding": "^1.0.1", - "@root/pem": "^1.0.4", - "@root/x509": "^0.7.2" - } - }, - "node_modules/@root/asn1": { - "version": "1.0.0", - "license": "MPL-2.0", - "optional": true, - "dependencies": { - "@root/encoding": "^1.0.1" - } - }, - "node_modules/@root/csr": { - "version": "0.8.1", - "license": "MPL-2.0", - "optional": true, - "dependencies": { - "@root/asn1": "^1.0.0", - "@root/pem": "^1.0.4", - "@root/x509": "^0.7.2" - } - }, - "node_modules/@root/encoding": { - "version": "1.0.1", - "license": "MPL-2.0", - "optional": true - }, - "node_modules/@root/greenlock": { - "version": "4.0.5", - "license": "MPL-2.0", - "optional": true, - "dependencies": { - "@greenlock/manager": "^3.1.0", - "@root/acme": "^3.1.0", - "@root/csr": "^0.8.1", - "@root/keypairs": "^0.10.0", - "@root/mkdirp": "^1.0.0", - "@root/request": "^1.6.1", - "acme-http-01-standalone": "^3.0.5", - "cert-info": "^1.5.1", - "greenlock-store-fs": "^3.2.2", - "safe-replace": "^1.1.0" - }, - "bin": { - "greenlock": "bin/greenlock.js" - } - }, - "node_modules/@root/greenlock-express": { - "version": "4.0.4", - "license": "MPL-2.0", - "optional": true, - "dependencies": { - "@root/greenlock": "^4.0.5", - "redirect-https": "^1.3.1" - } - }, - "node_modules/@root/greenlock/node_modules/@root/keypairs": { - "version": "0.10.3", - "license": "MPL-2.0", - "optional": true, - "dependencies": { - "@root/encoding": "^1.0.1", - "@root/pem": "^1.0.4", - "@root/x509": "^0.7.2" - } - }, - "node_modules/@root/keypairs": { - "version": "0.9.0", - "license": "MPL-2.0", - "optional": true, - "dependencies": { - "@root/encoding": "^1.0.1", - "@root/pem": "^1.0.4", - "@root/x509": "^0.7.2" - } - }, - "node_modules/@root/mkdirp": { - "version": "1.0.0", - "license": "MPL-2.0", - "optional": true - }, - "node_modules/@root/pem": { - "version": "1.0.4", - "license": "MPL-2.0", - "optional": true - }, - "node_modules/@root/request": { - "version": "1.9.2", - "license": "(MIT OR Apache-2.0)", - "optional": true - }, - "node_modules/@root/x509": { - "version": "0.7.2", - "license": "MPL-2.0", - "optional": true, - "dependencies": { - "@root/asn1": "^1.0.0", - "@root/encoding": "^1.0.1" - } - }, "node_modules/@rushstack/node-core-library": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-4.0.2.tgz", @@ -2322,11 +2181,6 @@ "@types/node": "*" } }, - "node_modules/@types/expect": { - "version": "1.20.4", - "dev": true, - "license": "MIT" - }, "node_modules/@types/fs-extra": { "version": "11.0.1", "dev": true, @@ -2374,25 +2228,6 @@ "@types/node": "*" } }, - "node_modules/@types/linkify-it": { - "version": "3.0.2", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/markdown-it": { - "version": "12.2.3", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/linkify-it": "*", - "@types/mdurl": "*" - } - }, - "node_modules/@types/mdurl": { - "version": "1.0.2", - "dev": true, - "license": "MIT" - }, "node_modules/@types/mime-types": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/@types/mime-types/-/mime-types-2.1.1.tgz", @@ -2411,9 +2246,10 @@ "license": "MIT" }, "node_modules/@types/mocha": { - "version": "10.0.1", - "dev": true, - "license": "MIT" + "version": "10.0.6", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.6.tgz", + "integrity": "sha512-dJvrYWxP/UcXm36Qn36fxhUKu8A/xMRXVT2cliFF1Z7UA9liG5Psj3ezNSZw+5puH2czDXRLcXQxf8JbJt0ejg==", + "dev": true }, "node_modules/@types/ms": { "version": "0.7.31", @@ -2511,15 +2347,6 @@ "version": "1.3.2", "license": "MIT" }, - "node_modules/@types/vinyl": { - "version": "2.0.7", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/expect": "^1.20.4", - "@types/node": "*" - } - }, "node_modules/@types/winston-syslog": { "version": "2.4.0", "dev": true, @@ -2825,11 +2652,6 @@ "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", "dev": true }, - "node_modules/acme-http-01-standalone": { - "version": "3.0.5", - "license": "MPL-2.0", - "optional": true - }, "node_modules/acorn": { "version": "8.10.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", @@ -2906,7 +2728,7 @@ }, "node_modules/ajv": { "version": "6.12.6", - "devOptional": true, + "dev": true, "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", @@ -2962,17 +2784,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/ansi-gray": { - "version": "0.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-wrap": "0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/ansi-regex": { "version": "5.0.1", "license": "MIT", @@ -2999,168 +2810,12 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/ansi-wrap": { - "version": "0.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/anymatch": { - "version": "2.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - } - }, - "node_modules/anymatch/node_modules/define-property": { - "version": "2.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/anymatch/node_modules/extend-shallow": { - "version": "3.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/anymatch/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/anymatch/node_modules/is-data-descriptor": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/anymatch/node_modules/is-descriptor": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/anymatch/node_modules/is-extendable": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/anymatch/node_modules/is-plain-object": { - "version": "2.0.4", - "dev": true, - "license": "MIT", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/anymatch/node_modules/kind-of": { - "version": "6.0.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/anymatch/node_modules/micromatch": { - "version": "3.1.10", - "dev": true, - "license": "MIT", - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/anymatch/node_modules/normalize-path": { - "version": "2.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "remove-trailing-separator": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/append-buffer": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer-equal": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/aproba": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", "dev": true }, - "node_modules/archy": { - "version": "1.0.0", - "dev": true, - "license": "MIT" - }, "node_modules/are-docs-informative": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/are-docs-informative/-/are-docs-informative-0.0.2.tgz", @@ -3210,1330 +2865,1124 @@ "sprintf-js": "~1.0.2" } }, - "node_modules/arr-diff": { - "version": "4.0.0", + "node_modules/array-differ": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz", + "integrity": "sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==", "dev": true, - "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/arr-filter": { - "version": "1.1.2", + "node_modules/array-ify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", + "integrity": "sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==", + "dev": true + }, + "node_modules/array-union": { + "version": "2.1.0", "dev": true, "license": "MIT", - "dependencies": { - "make-iterator": "^1.0.0" - }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/arr-flatten": { - "version": "1.1.0", + "node_modules/arrify": { + "version": "3.0.0", "dev": true, "license": "MIT", "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arr-map": { - "version": "2.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "make-iterator": "^1.0.0" + "node": ">=12" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/arr-union": { - "version": "3.1.0", + "node_modules/assertion-error": { + "version": "1.1.0", "dev": true, "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": "*" } }, - "node_modules/array-differ": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz", - "integrity": "sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==", - "dev": true, - "engines": { - "node": ">=8" + "node_modules/async": { + "version": "3.2.4", + "license": "MIT" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "license": "MIT" + }, + "node_modules/axios": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.2.tgz", + "integrity": "sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==", + "dependencies": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" } }, - "node_modules/array-each": { - "version": "1.0.1", + "node_modules/balanced-match": { + "version": "1.0.2", "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } + "license": "MIT" }, - "node_modules/array-ify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", - "integrity": "sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==", + "node_modules/base64-js": { + "version": "1.5.1", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/before-after-hook": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz", + "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==", "dev": true }, - "node_modules/array-initial": { - "version": "1.1.0", - "dev": true, + "node_modules/bindings": { + "version": "1.5.0", "license": "MIT", + "optional": true, "dependencies": { - "array-slice": "^1.0.0", - "is-number": "^4.0.0" - }, - "engines": { - "node": ">=0.10.0" + "file-uri-to-path": "1.0.0" } }, - "node_modules/array-initial/node_modules/is-number": { - "version": "4.0.0", + "node_modules/bl": { + "version": "4.1.0", "dev": true, "license": "MIT", - "engines": { - "node": ">=0.10.0" + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" } }, - "node_modules/array-last": { - "version": "1.3.0", + "node_modules/bl/node_modules/readable-stream": { + "version": "3.6.2", "dev": true, "license": "MIT", "dependencies": { - "is-number": "^4.0.0" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">= 6" } }, - "node_modules/array-last/node_modules/is-number": { - "version": "4.0.0", + "node_modules/brace-expansion": { + "version": "1.1.11", "dev": true, "license": "MIT", - "engines": { - "node": ">=0.10.0" + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/array-slice": { - "version": "1.1.0", + "node_modules/browser-stdout": { + "version": "1.3.1", "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } + "license": "ISC" }, - "node_modules/array-sort": { - "version": "1.0.0", + "node_modules/browserslist": { + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", + "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", "dev": true, - "license": "MIT", + "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": { - "default-compare": "^1.0.0", - "get-value": "^2.0.6", - "kind-of": "^5.0.2" + "caniuse-lite": "^1.0.30001587", + "electron-to-chromium": "^1.4.668", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" + }, + "bin": { + "browserslist": "cli.js" }, "engines": { - "node": ">=0.10.0" + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "node_modules/array-union": { - "version": "2.1.0", + "node_modules/buffer": { + "version": "5.7.1", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], "license": "MIT", - "engines": { - "node": ">=8" + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" } }, - "node_modules/array-unique": { - "version": "0.3.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } + "node_modules/buffer-equal-constant-time": { + "version": "1.0.1", + "license": "BSD-3-Clause" }, - "node_modules/arrify": { - "version": "3.0.0", + "node_modules/buffer-from": { + "version": "1.1.2", + "license": "MIT" + }, + "node_modules/builtin-modules": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", + "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", "dev": true, - "license": "MIT", "engines": { - "node": ">=12" + "node": ">=6" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/asn1": { - "version": "0.2.6", - "license": "MIT", - "optional": true, + "node_modules/builtins": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", + "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", + "dev": true, "dependencies": { - "safer-buffer": "~2.1.0" - } - }, - "node_modules/assert-plus": { - "version": "1.0.0", - "license": "MIT", - "optional": true, - "engines": { - "node": ">=0.8" + "semver": "^7.0.0" } }, - "node_modules/assertion-error": { - "version": "1.1.0", + "node_modules/byte-size": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/byte-size/-/byte-size-8.1.1.tgz", + "integrity": "sha512-tUkzZWK0M/qdoLEqikxBWe4kumyuwjl3HO6zHTr4yEI23EojPtLYXdG1+AQY7MN0cGyNDvEaJ8wiYQm6P2bPxg==", "dev": true, - "license": "MIT", "engines": { - "node": "*" + "node": ">=12.17" } }, - "node_modules/assign-symbols": { - "version": "1.0.0", + "node_modules/cacache": { + "version": "17.1.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.3.tgz", + "integrity": "sha512-jAdjGxmPxZh0IipMdR7fK/4sDSrHMLUV0+GvVUsjwyGNKHsh79kW/otg+GkbXwl6Uzvy9wsvHOX4nUoWldeZMg==", "dev": true, - "license": "MIT", + "dependencies": { + "@npmcli/fs": "^3.1.0", + "fs-minipass": "^3.0.0", + "glob": "^10.2.2", + "lru-cache": "^7.7.1", + "minipass": "^5.0.0", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^4.0.0", + "ssri": "^10.0.0", + "tar": "^6.1.11", + "unique-filename": "^3.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/async": { - "version": "3.2.4", - "license": "MIT" - }, - "node_modules/async-done": { - "version": "1.3.2", + "node_modules/cacache/node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", "dev": true, - "license": "MIT", "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.2", - "process-nextick-args": "^2.0.0", - "stream-exhaust": "^1.0.1" + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" }, "engines": { - "node": ">= 0.10" + "node": ">=8" } }, - "node_modules/async-each": { - "version": "1.0.6", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "license": "MIT" - }, - "node_modules/async-settle": { - "version": "1.0.0", + "node_modules/cacache/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, - "license": "MIT", "dependencies": { - "async-done": "^1.2.2" - }, - "engines": { - "node": ">= 0.10" + "balanced-match": "^1.0.0" } }, - "node_modules/asynckit": { - "version": "0.4.0", - "license": "MIT" - }, - "node_modules/atob": { - "version": "2.1.2", + "node_modules/cacache/node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", "dev": true, - "license": "(MIT OR Apache-2.0)", - "bin": { - "atob": "bin/atob.js" - }, "engines": { - "node": ">= 4.5.0" + "node": ">=6" } }, - "node_modules/aws-sign2": { - "version": "0.7.0", - "license": "Apache-2.0", - "optional": true, + "node_modules/cacache/node_modules/glob": { + "version": "10.3.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.3.tgz", + "integrity": "sha512-92vPiMb/iqpmEgsOoIDvTjc50wf9CCCvMzsi6W0JLPeUKE8TWP1a73PgqSrqy7iAZxaSD1YdzU7QZR5LF51MJw==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.0.3", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/cjs/src/bin.js" + }, "engines": { - "node": "*" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/aws4": { - "version": "1.12.0", - "license": "MIT", - "optional": true - }, - "node_modules/axios": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.2.tgz", - "integrity": "sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==", - "dependencies": { - "follow-redirects": "^1.15.0", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" + "node_modules/cacache/node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "engines": { + "node": ">=8" } }, - "node_modules/bach": { - "version": "1.2.0", + "node_modules/cacache/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dev": true, - "license": "MIT", "dependencies": { - "arr-filter": "^1.1.1", - "arr-flatten": "^1.0.1", - "arr-map": "^2.0.0", - "array-each": "^1.0.0", - "array-initial": "^1.0.0", - "array-last": "^1.1.1", - "async-done": "^1.2.2", - "async-settle": "^1.0.0", - "now-and-later": "^2.0.0" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">= 0.10" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/balanced-match": { - "version": "1.0.2", + "node_modules/cacache/node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", "dev": true, - "license": "MIT" + "engines": { + "node": ">=8" + } }, - "node_modules/base": { - "version": "0.11.2", + "node_modules/cacache/node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", "dev": true, - "license": "MIT", "dependencies": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" + "aggregate-error": "^3.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/base/node_modules/define-property": { - "version": "1.0.0", + "node_modules/cacache/node_modules/ssri": { + "version": "10.0.4", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.4.tgz", + "integrity": "sha512-12+IR2CB2C28MMAw0Ncqwj5QbTcs0nGIhgJzYWzDkb21vWmfNI83KS4f3Ci6GI98WreIfG7o9UXp3C0qbpA8nQ==", "dev": true, - "license": "MIT", "dependencies": { - "is-descriptor": "^1.0.0" + "minipass": "^5.0.0" }, "engines": { - "node": ">=0.10.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/base/node_modules/is-accessor-descriptor": { + "node_modules/callsite": { "version": "1.0.0", + "engines": { + "node": "*" + } + }, + "node_modules/callsites": { + "version": "3.1.0", "dev": true, "license": "MIT", - "dependencies": { - "kind-of": "^6.0.0" - }, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/base/node_modules/is-data-descriptor": { - "version": "1.0.0", + "node_modules/camelcase": { + "version": "6.3.0", "dev": true, "license": "MIT", - "dependencies": { - "kind-of": "^6.0.0" - }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/base/node_modules/is-descriptor": { - "version": "1.0.2", + "node_modules/camelcase-keys": { + "version": "7.0.2", "dev": true, "license": "MIT", "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "camelcase": "^6.3.0", + "map-obj": "^4.1.0", + "quick-lru": "^5.1.1", + "type-fest": "^1.2.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/base/node_modules/kind-of": { - "version": "6.0.3", + "node_modules/camelcase-keys/node_modules/type-fest": { + "version": "1.4.0", "dev": true, - "license": "MIT", + "license": "(MIT OR CC0-1.0)", "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/base64-js": { - "version": "1.5.1", + "node_modules/caniuse-lite": { + "version": "1.0.30001610", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001610.tgz", + "integrity": "sha512-QFutAY4NgaelojVMjY63o6XlZyORPaLfyMnsl3HgnWdJUcX6K0oaJymHjH8PT5Gk7sTm8rvC/c5COUQKXqmOMA==", "dev": true, "funding": [ { - "type": "github", - "url": "https://github.com/sponsors/feross" + "type": "opencollective", + "url": "https://opencollective.com/browserslist" }, { - "type": "patreon", - "url": "https://www.patreon.com/feross" + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" }, { - "type": "consulting", - "url": "https://feross.org/support" + "type": "github", + "url": "https://github.com/sponsors/ai" } - ], - "license": "MIT" - }, - "node_modules/bcrypt-pbkdf": { - "version": "1.0.2", - "license": "BSD-3-Clause", - "optional": true, - "dependencies": { - "tweetnacl": "^0.14.3" - } + ] }, - "node_modules/beeper": { - "version": "2.1.0", + "node_modules/chai": { + "version": "4.3.7", "dev": true, "license": "MIT", "dependencies": { - "yoctodelay": "^1.1.0" + "assertion-error": "^1.1.0", + "check-error": "^1.0.2", + "deep-eql": "^4.1.2", + "get-func-name": "^2.0.0", + "loupe": "^2.3.1", + "pathval": "^1.1.1", + "type-detect": "^4.0.5" }, "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/before-after-hook": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz", - "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==", - "dev": true - }, - "node_modules/binary-extensions": { - "version": "1.13.1", + "node_modules/chai-as-promised": { + "version": "7.1.1", "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" + "license": "WTFPL", + "dependencies": { + "check-error": "^1.0.2" + }, + "peerDependencies": { + "chai": ">= 2.1.2 < 5" } }, - "node_modules/binaryextensions": { - "version": "2.3.0", + "node_modules/chalk": { + "version": "4.1.2", "dev": true, "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": ">=0.8" + "node": ">=10" }, "funding": { - "url": "https://bevry.me/fund" - } - }, - "node_modules/bindings": { - "version": "1.5.0", - "license": "MIT", - "optional": true, - "dependencies": { - "file-uri-to-path": "1.0.0" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/bl": { - "version": "4.1.0", + "node_modules/chardet": { + "version": "0.7.0", "dev": true, - "license": "MIT", - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } + "license": "MIT" }, - "node_modules/bl/node_modules/readable-stream": { - "version": "3.6.2", + "node_modules/check-error": { + "version": "1.0.2", "dev": true, "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, "engines": { - "node": ">= 6" + "node": "*" } }, - "node_modules/bluebird": { - "version": "3.7.2", - "dev": true, - "license": "MIT" + "node_modules/chownr": { + "version": "2.0.0", + "license": "ISC", + "engines": { + "node": ">=10" + } }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "node_modules/ci-info": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", + "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" } }, - "node_modules/braces": { - "version": "2.3.2", + "node_modules/clean-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clean-regexp/-/clean-regexp-1.0.0.tgz", + "integrity": "sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==", "dev": true, - "license": "MIT", "dependencies": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" + "escape-string-regexp": "^1.0.5" }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/browser-stdout": { - "version": "1.3.1", - "dev": true, - "license": "ISC" - }, - "node_modules/buffer": { - "version": "5.7.1", + "node_modules/clean-regexp/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" + "engines": { + "node": ">=0.8.0" } }, - "node_modules/buffer-equal": { - "version": "1.0.1", + "node_modules/clean-stack": { + "version": "4.2.0", "dev": true, "license": "MIT", + "dependencies": { + "escape-string-regexp": "5.0.0" + }, "engines": { - "node": ">=0.4" + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/buffer-equal-constant-time": { - "version": "1.0.1", - "license": "BSD-3-Clause" - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "license": "MIT" - }, - "node_modules/builtin-modules": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", - "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", + "node_modules/clean-stack/node_modules/escape-string-regexp": { + "version": "5.0.0", "dev": true, + "license": "MIT", "engines": { - "node": ">=6" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/builtins": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", - "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", + "node_modules/cli-cursor": { + "version": "3.1.0", "dev": true, + "license": "MIT", "dependencies": { - "semver": "^7.0.0" - } - }, - "node_modules/byte-size": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/byte-size/-/byte-size-8.1.1.tgz", - "integrity": "sha512-tUkzZWK0M/qdoLEqikxBWe4kumyuwjl3HO6zHTr4yEI23EojPtLYXdG1+AQY7MN0cGyNDvEaJ8wiYQm6P2bPxg==", - "dev": true, + "restore-cursor": "^3.1.0" + }, "engines": { - "node": ">=12.17" + "node": ">=8" } }, - "node_modules/cacache": { - "version": "17.1.3", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.3.tgz", - "integrity": "sha512-jAdjGxmPxZh0IipMdR7fK/4sDSrHMLUV0+GvVUsjwyGNKHsh79kW/otg+GkbXwl6Uzvy9wsvHOX4nUoWldeZMg==", + "node_modules/cli-spinners": { + "version": "2.6.1", "dev": true, - "dependencies": { - "@npmcli/fs": "^3.1.0", - "fs-minipass": "^3.0.0", - "glob": "^10.2.2", - "lru-cache": "^7.7.1", - "minipass": "^5.0.0", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "p-map": "^4.0.0", - "ssri": "^10.0.0", - "tar": "^6.1.11", - "unique-filename": "^3.0.0" - }, + "license": "MIT", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cacache/node_modules/aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "node_modules/cli-width": { + "version": "3.0.0", "dev": true, - "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - }, + "license": "ISC", "engines": { - "node": ">=8" + "node": ">= 10" } }, - "node_modules/cacache/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "node_modules/cliui": { + "version": "7.0.4", "dev": true, + "license": "ISC", "dependencies": { - "balanced-match": "^1.0.0" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" } }, - "node_modules/cacache/node_modules/clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, "engines": { "node": ">=6" } }, - "node_modules/cacache/node_modules/glob": { - "version": "10.3.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.3.tgz", - "integrity": "sha512-92vPiMb/iqpmEgsOoIDvTjc50wf9CCCvMzsi6W0JLPeUKE8TWP1a73PgqSrqy7iAZxaSD1YdzU7QZR5LF51MJw==", + "node_modules/clone-deep/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dev": true, "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.0.3", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - }, - "bin": { - "glob": "dist/cjs/src/bin.js" + "isobject": "^3.0.1" }, "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=0.10.0" } }, - "node_modules/cacache/node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "node_modules/clone-deep/node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/cacache/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, + "node_modules/cluster-key-slot": { + "version": "1.1.2", + "license": "Apache-2.0", "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=0.10.0" } }, - "node_modules/cacache/node_modules/minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "node_modules/cmd-shim": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/cmd-shim/-/cmd-shim-6.0.1.tgz", + "integrity": "sha512-S9iI9y0nKR4hwEQsVWpyxld/6kRfGepGfzff83FcaiEBpmvlbA2nnGe7Cylgrx2f/p1P5S5wpRm9oL8z1PbS3Q==", "dev": true, "engines": { - "node": ">=8" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/cacache/node_modules/p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, + "node_modules/color": { + "version": "3.2.1", + "license": "MIT", "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "color-convert": "^1.9.3", + "color-string": "^1.6.0" } }, - "node_modules/cacache/node_modules/ssri": { - "version": "10.0.4", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.4.tgz", - "integrity": "sha512-12+IR2CB2C28MMAw0Ncqwj5QbTcs0nGIhgJzYWzDkb21vWmfNI83KS4f3Ci6GI98WreIfG7o9UXp3C0qbpA8nQ==", - "dev": true, + "node_modules/color-convert": { + "version": "2.0.1", + "license": "MIT", "dependencies": { - "minipass": "^5.0.0" + "color-name": "~1.1.4" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=7.0.0" } }, - "node_modules/cache-base": { - "version": "1.0.1", - "dev": true, + "node_modules/color-name": { + "version": "1.1.4", + "license": "MIT" + }, + "node_modules/color-string": { + "version": "1.9.1", "license": "MIT", "dependencies": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" } }, - "node_modules/call-bind": { - "version": "1.0.2", + "node_modules/color-support": { + "version": "1.1.3", "dev": true, - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "license": "ISC", + "bin": { + "color-support": "bin.js" } }, - "node_modules/callsite": { - "version": "1.0.0", - "engines": { - "node": "*" + "node_modules/color/node_modules/color-convert": { + "version": "1.9.3", + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" } }, - "node_modules/callsites": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } + "node_modules/color/node_modules/color-name": { + "version": "1.1.3", + "license": "MIT" }, - "node_modules/camelcase": { - "version": "6.3.0", - "dev": true, + "node_modules/colorspace": { + "version": "1.1.4", "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "dependencies": { + "color": "^3.1.3", + "text-hex": "1.0.x" } }, - "node_modules/camelcase-keys": { - "version": "7.0.2", + "node_modules/columnify": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/columnify/-/columnify-1.6.0.tgz", + "integrity": "sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q==", "dev": true, - "license": "MIT", "dependencies": { - "camelcase": "^6.3.0", - "map-obj": "^4.1.0", - "quick-lru": "^5.1.1", - "type-fest": "^1.2.1" - }, - "engines": { - "node": ">=12" + "strip-ansi": "^6.0.1", + "wcwidth": "^1.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/camelcase-keys/node_modules/type-fest": { - "version": "1.4.0", - "dev": true, - "license": "(MIT OR CC0-1.0)", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8.0.0" } }, - "node_modules/caseless": { - "version": "0.12.0", - "license": "Apache-2.0", - "optional": true - }, - "node_modules/catharsis": { - "version": "0.9.0", - "dev": true, + "node_modules/combined-stream": { + "version": "1.0.8", "license": "MIT", "dependencies": { - "lodash": "^4.17.15" + "delayed-stream": "~1.0.0" }, "engines": { - "node": ">= 10" - } - }, - "node_modules/cert-info": { - "version": "1.5.1", - "license": "MPL-2.0", - "optional": true, - "bin": { - "cert-info": "bin/cert-info.js" + "node": ">= 0.8" } }, - "node_modules/chai": { - "version": "4.3.7", + "node_modules/commander": { + "version": "9.5.0", "dev": true, "license": "MIT", - "dependencies": { - "assertion-error": "^1.1.0", - "check-error": "^1.0.2", - "deep-eql": "^4.1.2", - "get-func-name": "^2.0.0", - "loupe": "^2.3.1", - "pathval": "^1.1.1", - "type-detect": "^4.0.5" - }, "engines": { - "node": ">=4" + "node": "^12.20.0 || >=14" } }, - "node_modules/chai-as-promised": { - "version": "7.1.1", + "node_modules/comment-parser": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.4.1.tgz", + "integrity": "sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==", "dev": true, - "license": "WTFPL", - "dependencies": { - "check-error": "^1.0.2" - }, - "peerDependencies": { - "chai": ">= 2.1.2 < 5" + "engines": { + "node": ">= 12.0.0" } }, - "node_modules/chalk": { - "version": "4.1.2", + "node_modules/compare-func": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", + "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", "dev": true, - "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "array-ify": "^1.0.0", + "dot-prop": "^5.1.0" } }, - "node_modules/chardet": { - "version": "0.7.0", + "node_modules/concat-map": { + "version": "0.0.1", "dev": true, "license": "MIT" }, - "node_modules/check-error": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - } + "node_modules/console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", + "dev": true }, - "node_modules/chokidar": { - "version": "2.1.8", + "node_modules/conventional-changelog-angular": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-6.0.0.tgz", + "integrity": "sha512-6qLgrBF4gueoC7AFVHu51nHL9pF9FRjXrH+ceVf7WmAfH3gs+gEYOkvxhjMPjZu57I4AGUGoNTY8V7Hrgf1uqg==", "dev": true, - "license": "MIT", "dependencies": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" + "compare-func": "^2.0.0" }, - "optionalDependencies": { - "fsevents": "^1.2.7" - } - }, - "node_modules/chokidar/node_modules/glob-parent": { - "version": "3.1.0", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" + "engines": { + "node": ">=14" } }, - "node_modules/chokidar/node_modules/glob-parent/node_modules/is-glob": { - "version": "3.1.0", + "node_modules/conventional-changelog-core": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-5.0.1.tgz", + "integrity": "sha512-Rvi5pH+LvgsqGwZPZ3Cq/tz4ty7mjijhr3qR4m9IBXNbxGGYgTVVO+duXzz9aArmHxFtwZ+LRkrNIMDQzgoY4A==", "dev": true, - "license": "MIT", "dependencies": { - "is-extglob": "^2.1.0" + "add-stream": "^1.0.0", + "conventional-changelog-writer": "^6.0.0", + "conventional-commits-parser": "^4.0.0", + "dateformat": "^3.0.3", + "get-pkg-repo": "^4.2.1", + "git-raw-commits": "^3.0.0", + "git-remote-origin-url": "^2.0.0", + "git-semver-tags": "^5.0.0", + "normalize-package-data": "^3.0.3", + "read-pkg": "^3.0.0", + "read-pkg-up": "^3.0.0" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/chownr": { - "version": "2.0.0", - "license": "ISC", - "engines": { - "node": ">=10" + "node": ">=14" } }, - "node_modules/ci-info": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", - "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], + "node_modules/conventional-changelog-preset-loader": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-3.0.0.tgz", + "integrity": "sha512-qy9XbdSLmVnwnvzEisjxdDiLA4OmV3o8db+Zdg4WiFw14fP3B6XNz98X0swPPpkTd/pc1K7+adKgEDM1JCUMiA==", + "dev": true, "engines": { - "node": ">=8" + "node": ">=14" } }, - "node_modules/class-utils": { - "version": "0.3.6", + "node_modules/conventional-changelog-writer": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-6.0.1.tgz", + "integrity": "sha512-359t9aHorPw+U+nHzUXHS5ZnPBOizRxfQsWT5ZDHBfvfxQOAik+yfuhKXG66CN5LEWPpMNnIMHUTCKeYNprvHQ==", "dev": true, - "license": "MIT", "dependencies": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" + "conventional-commits-filter": "^3.0.0", + "dateformat": "^3.0.3", + "handlebars": "^4.7.7", + "json-stringify-safe": "^5.0.1", + "meow": "^8.1.2", + "semver": "^7.0.0", + "split": "^1.0.1" + }, + "bin": { + "conventional-changelog-writer": "cli.js" }, "engines": { - "node": ">=0.10.0" + "node": ">=14" } }, - "node_modules/clean-stack": { - "version": "4.2.0", + "node_modules/conventional-changelog-writer/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, - "license": "MIT", - "dependencies": { - "escape-string-regexp": "5.0.0" - }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6" } }, - "node_modules/clean-stack/node_modules/escape-string-regexp": { - "version": "5.0.0", + "node_modules/conventional-changelog-writer/node_modules/camelcase-keys": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", + "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", "dev": true, - "license": "MIT", + "dependencies": { + "camelcase": "^5.3.1", + "map-obj": "^4.0.0", + "quick-lru": "^4.0.1" + }, "engines": { - "node": ">=12" + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cli-cursor": { - "version": "3.1.0", + "node_modules/conventional-changelog-writer/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, - "license": "MIT", "dependencies": { - "restore-cursor": "^3.1.0" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/cli-spinners": { - "version": "2.6.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "node_modules/conventional-changelog-writer/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true }, - "node_modules/cli-width": { - "version": "3.0.0", + "node_modules/conventional-changelog-writer/node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", "dev": true, - "license": "ISC", "engines": { - "node": ">= 10" + "node": ">=8" } }, - "node_modules/cliui": { - "version": "7.0.4", + "node_modules/conventional-changelog-writer/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, - "license": "ISC", "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "node_modules/clone": { - "version": "2.1.2", - "dev": true, - "license": "MIT", + "p-locate": "^4.1.0" + }, "engines": { - "node": ">=0.8" + "node": ">=8" } }, - "node_modules/clone-buffer": { - "version": "1.0.0", + "node_modules/conventional-changelog-writer/node_modules/meow": { + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", + "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", "dev": true, - "license": "MIT", + "dependencies": { + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" + }, "engines": { - "node": ">= 0.10" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "node_modules/conventional-changelog-writer/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": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" + "p-try": "^2.0.0" }, "engines": { "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/clone-deep/node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "node_modules/conventional-changelog-writer/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": { - "isobject": "^3.0.1" + "p-limit": "^2.2.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/clone-deep/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "node_modules/conventional-changelog-writer/node_modules/quick-lru": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", + "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/clone-stats": { - "version": "1.0.0", + "node_modules/conventional-changelog-writer/node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", "dev": true, - "license": "MIT" + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } }, - "node_modules/cloneable-readable": { - "version": "1.1.3", + "node_modules/conventional-changelog-writer/node_modules/read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", "dev": true, - "license": "MIT", "dependencies": { - "inherits": "^2.0.1", - "process-nextick-args": "^2.0.0", - "readable-stream": "^2.3.5" + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cluster-key-slot": { - "version": "1.1.2", - "license": "Apache-2.0", + "node_modules/conventional-changelog-writer/node_modules/read-pkg-up/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/cmd-shim": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/cmd-shim/-/cmd-shim-6.0.1.tgz", - "integrity": "sha512-S9iI9y0nKR4hwEQsVWpyxld/6kRfGepGfzff83FcaiEBpmvlbA2nnGe7Cylgrx2f/p1P5S5wpRm9oL8z1PbS3Q==", + "node_modules/conventional-changelog-writer/node_modules/read-pkg/node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", "dev": true, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" } }, - "node_modules/code-point-at": { - "version": "1.1.0", + "node_modules/conventional-changelog-writer/node_modules/read-pkg/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" + "bin": { + "semver": "bin/semver" } }, - "node_modules/collection-map": { - "version": "1.0.0", + "node_modules/conventional-changelog-writer/node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", "dev": true, - "license": "MIT", - "dependencies": { - "arr-map": "^2.0.2", - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" - }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/collection-visit": { - "version": "1.0.0", + "node_modules/conventional-changelog-writer/node_modules/redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", "dev": true, - "license": "MIT", "dependencies": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/color": { - "version": "3.2.1", - "license": "MIT", - "dependencies": { - "color-convert": "^1.9.3", - "color-string": "^1.6.0" + "node": ">=8" } }, - "node_modules/color-convert": { - "version": "2.0.1", - "license": "MIT", + "node_modules/conventional-changelog-writer/node_modules/strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, "dependencies": { - "color-name": "~1.1.4" + "min-indent": "^1.0.0" }, "engines": { - "node": ">=7.0.0" + "node": ">=8" } }, - "node_modules/color-name": { - "version": "1.1.4", - "license": "MIT" + "node_modules/conventional-changelog-writer/node_modules/trim-newlines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", + "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", + "dev": true, + "engines": { + "node": ">=8" + } }, - "node_modules/color-string": { - "version": "1.9.1", - "license": "MIT", - "dependencies": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" + "node_modules/conventional-changelog-writer/node_modules/type-fest": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/color-support": { - "version": "1.1.3", + "node_modules/conventional-changelog-writer/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", "dev": true, - "license": "ISC", - "bin": { - "color-support": "bin.js" + "engines": { + "node": ">=10" } }, - "node_modules/color/node_modules/color-convert": { - "version": "1.9.3", - "license": "MIT", + "node_modules/conventional-commits-filter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-3.0.0.tgz", + "integrity": "sha512-1ymej8b5LouPx9Ox0Dw/qAO2dVdfpRFq28e5Y0jJEU8ZrLdy0vOSkkIInwmxErFGhg6SALro60ZrwYFVTUDo4Q==", + "dev": true, "dependencies": { - "color-name": "1.1.3" + "lodash.ismatch": "^4.4.0", + "modify-values": "^1.0.1" + }, + "engines": { + "node": ">=14" } }, - "node_modules/color/node_modules/color-name": { - "version": "1.1.3", - "license": "MIT" - }, - "node_modules/colorspace": { - "version": "1.1.4", - "license": "MIT", - "dependencies": { - "color": "^3.1.3", - "text-hex": "1.0.x" - } - }, - "node_modules/columnify": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/columnify/-/columnify-1.6.0.tgz", - "integrity": "sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q==", - "dev": true, - "dependencies": { - "strip-ansi": "^6.0.1", - "wcwidth": "^1.0.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "license": "MIT", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/commander": { - "version": "9.5.0", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.20.0 || >=14" - } - }, - "node_modules/comment-parser": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.4.1.tgz", - "integrity": "sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==", - "dev": true, - "engines": { - "node": ">= 12.0.0" - } - }, - "node_modules/compare-func": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", - "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", - "dev": true, - "dependencies": { - "array-ify": "^1.0.0", - "dot-prop": "^5.1.0" - } - }, - "node_modules/component-emitter": { - "version": "1.3.0", - "dev": true, - "license": "MIT" - }, - "node_modules/concat-map": { - "version": "0.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/concat-stream": { - "version": "1.6.2", - "dev": true, - "engines": [ - "node >= 0.8" - ], - "license": "MIT", - "dependencies": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "node_modules/console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", - "dev": true - }, - "node_modules/conventional-changelog-angular": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-6.0.0.tgz", - "integrity": "sha512-6qLgrBF4gueoC7AFVHu51nHL9pF9FRjXrH+ceVf7WmAfH3gs+gEYOkvxhjMPjZu57I4AGUGoNTY8V7Hrgf1uqg==", - "dev": true, - "dependencies": { - "compare-func": "^2.0.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/conventional-changelog-core": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-5.0.1.tgz", - "integrity": "sha512-Rvi5pH+LvgsqGwZPZ3Cq/tz4ty7mjijhr3qR4m9IBXNbxGGYgTVVO+duXzz9aArmHxFtwZ+LRkrNIMDQzgoY4A==", - "dev": true, - "dependencies": { - "add-stream": "^1.0.0", - "conventional-changelog-writer": "^6.0.0", - "conventional-commits-parser": "^4.0.0", - "dateformat": "^3.0.3", - "get-pkg-repo": "^4.2.1", - "git-raw-commits": "^3.0.0", - "git-remote-origin-url": "^2.0.0", - "git-semver-tags": "^5.0.0", - "normalize-package-data": "^3.0.3", - "read-pkg": "^3.0.0", - "read-pkg-up": "^3.0.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/conventional-changelog-preset-loader": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-3.0.0.tgz", - "integrity": "sha512-qy9XbdSLmVnwnvzEisjxdDiLA4OmV3o8db+Zdg4WiFw14fP3B6XNz98X0swPPpkTd/pc1K7+adKgEDM1JCUMiA==", - "dev": true, - "engines": { - "node": ">=14" - } - }, - "node_modules/conventional-changelog-writer": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-6.0.1.tgz", - "integrity": "sha512-359t9aHorPw+U+nHzUXHS5ZnPBOizRxfQsWT5ZDHBfvfxQOAik+yfuhKXG66CN5LEWPpMNnIMHUTCKeYNprvHQ==", + "node_modules/conventional-commits-parser": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-4.0.0.tgz", + "integrity": "sha512-WRv5j1FsVM5FISJkoYMR6tPk07fkKT0UodruX4je86V4owk451yjXAKzKAPOs9l7y59E2viHUS9eQ+dfUA9NSg==", "dev": true, "dependencies": { - "conventional-commits-filter": "^3.0.0", - "dateformat": "^3.0.3", - "handlebars": "^4.7.7", - "json-stringify-safe": "^5.0.1", + "is-text-path": "^1.0.1", + "JSONStream": "^1.3.5", "meow": "^8.1.2", - "semver": "^7.0.0", - "split": "^1.0.1" + "split2": "^3.2.2" }, "bin": { - "conventional-changelog-writer": "cli.js" + "conventional-commits-parser": "cli.js" }, "engines": { "node": ">=14" } }, - "node_modules/conventional-changelog-writer/node_modules/camelcase": { + "node_modules/conventional-commits-parser/node_modules/camelcase": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", @@ -4542,7 +3991,7 @@ "node": ">=6" } }, - "node_modules/conventional-changelog-writer/node_modules/camelcase-keys": { + "node_modules/conventional-commits-parser/node_modules/camelcase-keys": { "version": "6.2.2", "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", @@ -4559,7 +4008,7 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/conventional-changelog-writer/node_modules/find-up": { + "node_modules/conventional-commits-parser/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==", @@ -4572,13 +4021,13 @@ "node": ">=8" } }, - "node_modules/conventional-changelog-writer/node_modules/hosted-git-info": { + "node_modules/conventional-commits-parser/node_modules/hosted-git-info": { "version": "2.8.9", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", "dev": true }, - "node_modules/conventional-changelog-writer/node_modules/indent-string": { + "node_modules/conventional-commits-parser/node_modules/indent-string": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", @@ -4587,7 +4036,7 @@ "node": ">=8" } }, - "node_modules/conventional-changelog-writer/node_modules/locate-path": { + "node_modules/conventional-commits-parser/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==", @@ -4599,7 +4048,7 @@ "node": ">=8" } }, - "node_modules/conventional-changelog-writer/node_modules/meow": { + "node_modules/conventional-commits-parser/node_modules/meow": { "version": "8.1.2", "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", @@ -4624,7 +4073,7 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/conventional-changelog-writer/node_modules/p-limit": { + "node_modules/conventional-commits-parser/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==", @@ -4639,7 +4088,7 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/conventional-changelog-writer/node_modules/p-locate": { + "node_modules/conventional-commits-parser/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==", @@ -4651,7 +4100,7 @@ "node": ">=8" } }, - "node_modules/conventional-changelog-writer/node_modules/quick-lru": { + "node_modules/conventional-commits-parser/node_modules/quick-lru": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", @@ -4660,7 +4109,7 @@ "node": ">=8" } }, - "node_modules/conventional-changelog-writer/node_modules/read-pkg": { + "node_modules/conventional-commits-parser/node_modules/read-pkg": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", @@ -4675,7 +4124,7 @@ "node": ">=8" } }, - "node_modules/conventional-changelog-writer/node_modules/read-pkg-up": { + "node_modules/conventional-commits-parser/node_modules/read-pkg-up": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", @@ -4692,7 +4141,7 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/conventional-changelog-writer/node_modules/read-pkg-up/node_modules/type-fest": { + "node_modules/conventional-commits-parser/node_modules/read-pkg-up/node_modules/type-fest": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", @@ -4701,7 +4150,7 @@ "node": ">=8" } }, - "node_modules/conventional-changelog-writer/node_modules/read-pkg/node_modules/normalize-package-data": { + "node_modules/conventional-commits-parser/node_modules/read-pkg/node_modules/normalize-package-data": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", @@ -4713,16 +4162,7 @@ "validate-npm-package-license": "^3.0.1" } }, - "node_modules/conventional-changelog-writer/node_modules/read-pkg/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/conventional-changelog-writer/node_modules/read-pkg/node_modules/type-fest": { + "node_modules/conventional-commits-parser/node_modules/read-pkg/node_modules/type-fest": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", @@ -4731,7 +4171,7 @@ "node": ">=8" } }, - "node_modules/conventional-changelog-writer/node_modules/redent": { + "node_modules/conventional-commits-parser/node_modules/redent": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", @@ -4744,7 +4184,16 @@ "node": ">=8" } }, - "node_modules/conventional-changelog-writer/node_modules/strip-indent": { + "node_modules/conventional-commits-parser/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/conventional-commits-parser/node_modules/strip-indent": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", @@ -4756,7 +4205,7 @@ "node": ">=8" } }, - "node_modules/conventional-changelog-writer/node_modules/trim-newlines": { + "node_modules/conventional-commits-parser/node_modules/trim-newlines": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", @@ -4765,7 +4214,7 @@ "node": ">=8" } }, - "node_modules/conventional-changelog-writer/node_modules/type-fest": { + "node_modules/conventional-commits-parser/node_modules/type-fest": { "version": "0.18.1", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", @@ -4777,7 +4226,7 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/conventional-changelog-writer/node_modules/yargs-parser": { + "node_modules/conventional-commits-parser/node_modules/yargs-parser": { "version": "20.2.9", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", @@ -4786,38 +4235,28 @@ "node": ">=10" } }, - "node_modules/conventional-commits-filter": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-3.0.0.tgz", - "integrity": "sha512-1ymej8b5LouPx9Ox0Dw/qAO2dVdfpRFq28e5Y0jJEU8ZrLdy0vOSkkIInwmxErFGhg6SALro60ZrwYFVTUDo4Q==", - "dev": true, - "dependencies": { - "lodash.ismatch": "^4.4.0", - "modify-values": "^1.0.1" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/conventional-commits-parser": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-4.0.0.tgz", - "integrity": "sha512-WRv5j1FsVM5FISJkoYMR6tPk07fkKT0UodruX4je86V4owk451yjXAKzKAPOs9l7y59E2viHUS9eQ+dfUA9NSg==", + "node_modules/conventional-recommended-bump": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/conventional-recommended-bump/-/conventional-recommended-bump-7.0.1.tgz", + "integrity": "sha512-Ft79FF4SlOFvX4PkwFDRnaNiIVX7YbmqGU0RwccUaiGvgp3S0a8ipR2/Qxk31vclDNM+GSdJOVs2KrsUCjblVA==", "dev": true, "dependencies": { - "is-text-path": "^1.0.1", - "JSONStream": "^1.3.5", - "meow": "^8.1.2", - "split2": "^3.2.2" + "concat-stream": "^2.0.0", + "conventional-changelog-preset-loader": "^3.0.0", + "conventional-commits-filter": "^3.0.0", + "conventional-commits-parser": "^4.0.0", + "git-raw-commits": "^3.0.0", + "git-semver-tags": "^5.0.0", + "meow": "^8.1.2" }, "bin": { - "conventional-commits-parser": "cli.js" + "conventional-recommended-bump": "cli.js" }, "engines": { "node": ">=14" } }, - "node_modules/conventional-commits-parser/node_modules/camelcase": { + "node_modules/conventional-recommended-bump/node_modules/camelcase": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", @@ -4826,7 +4265,7 @@ "node": ">=6" } }, - "node_modules/conventional-commits-parser/node_modules/camelcase-keys": { + "node_modules/conventional-recommended-bump/node_modules/camelcase-keys": { "version": "6.2.2", "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", @@ -4843,26 +4282,41 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/conventional-commits-parser/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==", + "node_modules/conventional-recommended-bump/node_modules/concat-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", + "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", "dev": true, + "engines": [ + "node >= 6.0" + ], "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.0.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/conventional-recommended-bump/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/conventional-commits-parser/node_modules/hosted-git-info": { + "node_modules/conventional-recommended-bump/node_modules/hosted-git-info": { "version": "2.8.9", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", "dev": true }, - "node_modules/conventional-commits-parser/node_modules/indent-string": { + "node_modules/conventional-recommended-bump/node_modules/indent-string": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", @@ -4871,7 +4325,7 @@ "node": ">=8" } }, - "node_modules/conventional-commits-parser/node_modules/locate-path": { + "node_modules/conventional-recommended-bump/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==", @@ -4883,7 +4337,7 @@ "node": ">=8" } }, - "node_modules/conventional-commits-parser/node_modules/meow": { + "node_modules/conventional-recommended-bump/node_modules/meow": { "version": "8.1.2", "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", @@ -4908,7 +4362,7 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/conventional-commits-parser/node_modules/p-limit": { + "node_modules/conventional-recommended-bump/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==", @@ -4923,7 +4377,7 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/conventional-commits-parser/node_modules/p-locate": { + "node_modules/conventional-recommended-bump/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==", @@ -4935,7 +4389,7 @@ "node": ">=8" } }, - "node_modules/conventional-commits-parser/node_modules/quick-lru": { + "node_modules/conventional-recommended-bump/node_modules/quick-lru": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", @@ -4944,7 +4398,7 @@ "node": ">=8" } }, - "node_modules/conventional-commits-parser/node_modules/read-pkg": { + "node_modules/conventional-recommended-bump/node_modules/read-pkg": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", @@ -4959,7 +4413,7 @@ "node": ">=8" } }, - "node_modules/conventional-commits-parser/node_modules/read-pkg-up": { + "node_modules/conventional-recommended-bump/node_modules/read-pkg-up": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", @@ -4976,7 +4430,7 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/conventional-commits-parser/node_modules/read-pkg-up/node_modules/type-fest": { + "node_modules/conventional-recommended-bump/node_modules/read-pkg-up/node_modules/type-fest": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", @@ -4985,7 +4439,7 @@ "node": ">=8" } }, - "node_modules/conventional-commits-parser/node_modules/read-pkg/node_modules/normalize-package-data": { + "node_modules/conventional-recommended-bump/node_modules/read-pkg/node_modules/normalize-package-data": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", @@ -4997,7 +4451,7 @@ "validate-npm-package-license": "^3.0.1" } }, - "node_modules/conventional-commits-parser/node_modules/read-pkg/node_modules/type-fest": { + "node_modules/conventional-recommended-bump/node_modules/read-pkg/node_modules/type-fest": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", @@ -5006,7 +4460,21 @@ "node": ">=8" } }, - "node_modules/conventional-commits-parser/node_modules/redent": { + "node_modules/conventional-recommended-bump/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/conventional-recommended-bump/node_modules/redent": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", @@ -5019,7 +4487,7 @@ "node": ">=8" } }, - "node_modules/conventional-commits-parser/node_modules/semver": { + "node_modules/conventional-recommended-bump/node_modules/semver": { "version": "5.7.2", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", @@ -5028,7 +4496,7 @@ "semver": "bin/semver" } }, - "node_modules/conventional-commits-parser/node_modules/strip-indent": { + "node_modules/conventional-recommended-bump/node_modules/strip-indent": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", @@ -5040,7 +4508,7 @@ "node": ">=8" } }, - "node_modules/conventional-commits-parser/node_modules/trim-newlines": { + "node_modules/conventional-recommended-bump/node_modules/trim-newlines": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", @@ -5049,7 +4517,7 @@ "node": ">=8" } }, - "node_modules/conventional-commits-parser/node_modules/type-fest": { + "node_modules/conventional-recommended-bump/node_modules/type-fest": { "version": "0.18.1", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", @@ -5061,7 +4529,7 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/conventional-commits-parser/node_modules/yargs-parser": { + "node_modules/conventional-recommended-bump/node_modules/yargs-parser": { "version": "20.2.9", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", @@ -5070,293 +4538,217 @@ "node": ">=10" } }, - "node_modules/conventional-recommended-bump": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/conventional-recommended-bump/-/conventional-recommended-bump-7.0.1.tgz", - "integrity": "sha512-Ft79FF4SlOFvX4PkwFDRnaNiIVX7YbmqGU0RwccUaiGvgp3S0a8ipR2/Qxk31vclDNM+GSdJOVs2KrsUCjblVA==", - "dev": true, - "dependencies": { - "concat-stream": "^2.0.0", - "conventional-changelog-preset-loader": "^3.0.0", - "conventional-commits-filter": "^3.0.0", - "conventional-commits-parser": "^4.0.0", - "git-raw-commits": "^3.0.0", - "git-semver-tags": "^5.0.0", - "meow": "^8.1.2" - }, - "bin": { - "conventional-recommended-bump": "cli.js" - }, + "node_modules/cookie": { + "version": "0.4.2", + "license": "MIT", "engines": { - "node": ">=14" + "node": ">= 0.6" } }, - "node_modules/conventional-recommended-bump/node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "node_modules/core-js-compat": { + "version": "3.36.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.36.1.tgz", + "integrity": "sha512-Dk997v9ZCt3X/npqzyGdTlq6t7lDBhZwGvV94PKzDArjp7BTRm7WlDAXYd/OWdeFHO8OChQYRJNJvUCqCbrtKA==", "dev": true, - "engines": { - "node": ">=6" + "dependencies": { + "browserslist": "^4.23.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" } }, - "node_modules/conventional-recommended-bump/node_modules/camelcase-keys": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", - "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", + "node_modules/core-util-is": { + "version": "1.0.3", + "license": "MIT" + }, + "node_modules/cosmiconfig": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.2.0.tgz", + "integrity": "sha512-3rTMnFJA1tCOPwRxtgF4wd7Ab2qvDbL8jX+3smjIbS4HlZBagTlpERbdN7iAbWlrfxE3M8c27kTwTawQ7st+OQ==", "dev": true, "dependencies": { - "camelcase": "^5.3.1", - "map-obj": "^4.0.0", - "quick-lru": "^4.0.1" + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0" }, "engines": { - "node": ">=8" + "node": ">=14" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/conventional-recommended-bump/node_modules/concat-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", - "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", - "dev": true, - "engines": [ - "node >= 6.0" - ], - "dependencies": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.0.2", - "typedarray": "^0.0.6" + "url": "https://github.com/sponsors/d-fischer" } }, - "node_modules/conventional-recommended-bump/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==", + "node_modules/cp-file": { + "version": "9.1.0", "dev": true, + "license": "MIT", "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "graceful-fs": "^4.1.2", + "make-dir": "^3.0.0", + "nested-error-stacks": "^2.0.0", + "p-event": "^4.1.0" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/conventional-recommended-bump/node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true - }, - "node_modules/conventional-recommended-bump/node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "node_modules/cpy": { + "version": "9.0.1", "dev": true, + "license": "MIT", + "dependencies": { + "arrify": "^3.0.0", + "cp-file": "^9.1.0", + "globby": "^13.1.1", + "junk": "^4.0.0", + "micromatch": "^4.0.4", + "nested-error-stacks": "^2.1.0", + "p-filter": "^3.0.0", + "p-map": "^5.3.0" + }, "engines": { - "node": ">=8" + "node": "^12.20.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/conventional-recommended-bump/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==", + "node_modules/cpy-cli": { + "version": "4.2.0", "dev": true, + "license": "MIT", "dependencies": { - "p-locate": "^4.1.0" + "cpy": "^9.0.0", + "meow": "^10.1.2" + }, + "bin": { + "cpy": "cli.js" }, "engines": { - "node": ">=8" + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/conventional-recommended-bump/node_modules/meow": { - "version": "8.1.2", - "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", - "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", + "node_modules/cpy/node_modules/globby": { + "version": "13.1.3", "dev": true, + "license": "MIT", "dependencies": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "4.1.0", - "normalize-package-data": "^3.0.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.18.0", - "yargs-parser": "^20.2.3" + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.11", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^4.0.0" }, "engines": { - "node": ">=10" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/conventional-recommended-bump/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==", + "node_modules/cpy/node_modules/slash": { + "version": "4.0.0", "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, + "license": "MIT", "engines": { - "node": ">=6" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/conventional-recommended-bump/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==", + "node_modules/create-require": { + "version": "1.1.1", "dev": true, + "license": "MIT" + }, + "node_modules/cron-parser": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/cron-parser/-/cron-parser-4.9.0.tgz", + "integrity": "sha512-p0SaNjrHOnQeR8/VnfGbmg9te2kfyYSQ7Sc/j/6DtPL3JQvKxmjO9TSjNFpujqV3vEYYBvNNvXSxzyksBWAx1Q==", "dependencies": { - "p-limit": "^2.2.0" + "luxon": "^3.2.1" }, "engines": { - "node": ">=8" + "node": ">=12.0.0" } }, - "node_modules/conventional-recommended-bump/node_modules/quick-lru": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", - "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/conventional-recommended-bump/node_modules/read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", - "dev": true, + "node_modules/cross-spawn": { + "version": "7.0.3", + "license": "MIT", "dependencies": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" }, "engines": { - "node": ">=8" + "node": ">= 8" } }, - "node_modules/conventional-recommended-bump/node_modules/read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", - "dev": true, - "dependencies": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" - }, + "node_modules/cycle": { + "version": "1.0.3", "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.4.0" } }, - "node_modules/conventional-recommended-bump/node_modules/read-pkg-up/node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true, + "node_modules/daemonize2": { + "version": "0.4.2", "engines": { - "node": ">=8" - } - }, - "node_modules/conventional-recommended-bump/node_modules/read-pkg/node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" + "node": ">0.8.x" } }, - "node_modules/conventional-recommended-bump/node_modules/read-pkg/node_modules/type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "node_modules/dargs": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz", + "integrity": "sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==", "dev": true, "engines": { "node": ">=8" } }, - "node_modules/conventional-recommended-bump/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "node_modules/dateformat": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", + "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, "engines": { - "node": ">= 6" + "node": "*" } }, - "node_modules/conventional-recommended-bump/node_modules/redent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", - "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", - "dev": true, + "node_modules/debug": { + "version": "4.3.4", + "license": "MIT", "dependencies": { - "indent-string": "^4.0.0", - "strip-indent": "^3.0.0" + "ms": "2.1.2" }, "engines": { - "node": ">=8" - } - }, - "node_modules/conventional-recommended-bump/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/conventional-recommended-bump/node_modules/strip-indent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", - "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", - "dev": true, - "dependencies": { - "min-indent": "^1.0.0" + "node": ">=6.0" }, - "engines": { - "node": ">=8" + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/conventional-recommended-bump/node_modules/trim-newlines": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", - "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", - "dev": true, - "engines": { - "node": ">=8" + "node_modules/decache": { + "version": "4.6.1", + "license": "MIT", + "dependencies": { + "callsite": "^1.0.0" } }, - "node_modules/conventional-recommended-bump/node_modules/type-fest": { - "version": "0.18.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", - "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", + "node_modules/decamelize": { + "version": "5.0.1", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -5364,3183 +4756,1893 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/conventional-recommended-bump/node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "node_modules/decamelize-keys": { + "version": "1.1.1", "dev": true, + "license": "MIT", + "dependencies": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + }, "engines": { - "node": ">=10" + "node": ">=0.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/convert-source-map": { - "version": "1.9.0", + "node_modules/decamelize-keys/node_modules/decamelize": { + "version": "1.2.0", "dev": true, - "license": "MIT" - }, - "node_modules/cookie": { - "version": "0.4.2", "license": "MIT", "engines": { - "node": ">= 0.6" + "node": ">=0.10.0" } }, - "node_modules/copy-descriptor": { - "version": "0.1.1", + "node_modules/decamelize-keys/node_modules/map-obj": { + "version": "1.0.1", "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/copy-props": { - "version": "2.0.5", - "dev": true, - "license": "MIT", - "dependencies": { - "each-props": "^1.3.2", - "is-plain-object": "^5.0.0" - } + "node_modules/dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", + "dev": true }, - "node_modules/core-util-is": { - "version": "1.0.3", + "node_modules/deep-clone": { + "version": "3.0.3", "license": "MIT" }, - "node_modules/cosmiconfig": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.2.0.tgz", - "integrity": "sha512-3rTMnFJA1tCOPwRxtgF4wd7Ab2qvDbL8jX+3smjIbS4HlZBagTlpERbdN7iAbWlrfxE3M8c27kTwTawQ7st+OQ==", + "node_modules/deep-eql": { + "version": "4.1.3", "dev": true, + "license": "MIT", "dependencies": { - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "parse-json": "^5.0.0", - "path-type": "^4.0.0" + "type-detect": "^4.0.0" }, "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/d-fischer" + "node": ">=6" } }, - "node_modules/cp-file": { - "version": "9.1.0", + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/defaults": { + "version": "1.0.4", "dev": true, "license": "MIT", "dependencies": { - "graceful-fs": "^4.1.2", - "make-dir": "^3.0.0", - "nested-error-stacks": "^2.0.0", - "p-event": "^4.1.0" - }, - "engines": { - "node": ">=10" + "clone": "^1.0.2" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cpy": { - "version": "9.0.1", + "node_modules/defaults/node_modules/clone": { + "version": "1.0.4", "dev": true, "license": "MIT", - "dependencies": { - "arrify": "^3.0.0", - "cp-file": "^9.1.0", - "globby": "^13.1.1", - "junk": "^4.0.0", - "micromatch": "^4.0.4", - "nested-error-stacks": "^2.1.0", - "p-filter": "^3.0.0", - "p-map": "^5.3.0" - }, "engines": { - "node": "^12.20.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.8" } }, - "node_modules/cpy-cli": { - "version": "4.2.0", + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", "dev": true, - "license": "MIT", - "dependencies": { - "cpy": "^9.0.0", - "meow": "^10.1.2" - }, - "bin": { - "cpy": "cli.js" - }, "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/cpy/node_modules/globby": { - "version": "13.1.3", - "dev": true, - "license": "MIT", - "dependencies": { - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.11", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cpy/node_modules/slash": { - "version": "4.0.0", - "dev": true, + "node_modules/delayed-stream": { + "version": "1.0.0", "license": "MIT", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.4.0" } }, - "node_modules/create-require": { - "version": "1.1.1", - "dev": true, - "license": "MIT" + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "dev": true }, - "node_modules/cron-parser": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/cron-parser/-/cron-parser-4.9.0.tgz", - "integrity": "sha512-p0SaNjrHOnQeR8/VnfGbmg9te2kfyYSQ7Sc/j/6DtPL3JQvKxmjO9TSjNFpujqV3vEYYBvNNvXSxzyksBWAx1Q==", - "dependencies": { - "luxon": "^3.2.1" - }, + "node_modules/denque": { + "version": "1.5.1", + "license": "Apache-2.0", "engines": { - "node": ">=12.0.0" + "node": ">=0.10" } }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, "engines": { - "node": ">= 8" + "node": ">= 0.8" } }, - "node_modules/cycle": { - "version": "1.0.3", - "engines": { - "node": ">=0.4.0" - } + "node_modules/deprecation": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", + "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", + "dev": true }, - "node_modules/d": { - "version": "1.0.1", + "node_modules/detect-indent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz", + "integrity": "sha512-rlpvsxUtM0PQvy9iZe640/IWwWYyBsTApREbA1pHOpmOUIl9MkP/U4z7vTtg4Oaojvqhxt7sdufnT0EzGaR31g==", "dev": true, - "license": "ISC", - "dependencies": { - "es5-ext": "^0.10.50", - "type": "^1.0.1" - } - }, - "node_modules/daemonize2": { - "version": "0.4.2", "engines": { - "node": ">0.8.x" + "node": ">=4" } }, - "node_modules/dargs": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz", - "integrity": "sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==", + "node_modules/diff": { + "version": "5.0.0", "dev": true, + "license": "BSD-3-Clause", "engines": { - "node": ">=8" - } - }, - "node_modules/dashdash": { - "version": "1.14.1", - "license": "MIT", - "optional": true, - "dependencies": { - "assert-plus": "^1.0.0" - }, - "engines": { - "node": ">=0.10" + "node": ">=0.3.1" } }, - "node_modules/dateformat": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", - "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", + "node_modules/diff-sequences": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.4.3.tgz", + "integrity": "sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==", "dev": true, "engines": { - "node": "*" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/debug": { - "version": "4.3.4", + "node_modules/dir-glob": { + "version": "3.0.1", + "dev": true, "license": "MIT", "dependencies": { - "ms": "2.1.2" + "path-type": "^4.0.0" }, "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "node": ">=8" } }, - "node_modules/decache": { - "version": "4.6.1", + "node_modules/diskusage": { + "version": "1.1.3", + "hasInstallScript": true, "license": "MIT", + "optional": true, "dependencies": { - "callsite": "^1.0.0" + "es6-promise": "^4.2.5", + "nan": "^2.14.0" } }, - "node_modules/decamelize": { - "version": "5.0.1", + "node_modules/doctrine": { + "version": "3.0.0", "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=6.0.0" } }, - "node_modules/decamelize-keys": { - "version": "1.1.1", + "node_modules/dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", "dev": true, - "license": "MIT", "dependencies": { - "decamelize": "^1.1.0", - "map-obj": "^1.0.0" + "is-obj": "^2.0.0" }, "engines": { - "node": ">=0.10.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/decamelize-keys/node_modules/decamelize": { - "version": "1.2.0", + "node_modules/dotenv": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", + "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==", "dev": true, - "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/decamelize-keys/node_modules/map-obj": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" + "node_modules/duplexer": { + "version": "0.1.2", + "license": "MIT" + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, + "node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", + "license": "Apache-2.0", + "dependencies": { + "safe-buffer": "^5.0.1" } }, - "node_modules/decode-uri-component": { - "version": "0.2.2", + "node_modules/ejs": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz", + "integrity": "sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==", "dev": true, - "license": "MIT", + "dependencies": { + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" + }, "engines": { - "node": ">=0.10" + "node": ">=0.10.0" } }, - "node_modules/dedent": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", + "node_modules/electron-to-chromium": { + "version": "1.4.737", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.737.tgz", + "integrity": "sha512-QvLTxaLHKdy5YxvixAw/FfHq2eWLUL9KvsPjp0aHK1gI5d3EDuDgITkvj0nFO2c6zUY3ZqVAJQiBYyQP9tQpfw==", "dev": true }, - "node_modules/deep-clone": { - "version": "3.0.3", + "node_modules/emoji-regex": { + "version": "8.0.0", "license": "MIT" }, - "node_modules/deep-eql": { - "version": "4.1.3", + "node_modules/enabled": { + "version": "2.0.0", + "license": "MIT" + }, + "node_modules/encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", "dev": true, - "license": "MIT", + "optional": true, "dependencies": { - "type-detect": "^4.0.0" - }, - "engines": { - "node": ">=6" + "iconv-lite": "^0.6.2" } }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "node_modules/default-compare": { - "version": "1.0.0", + "node_modules/encoding/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dev": true, - "license": "MIT", + "optional": true, "dependencies": { - "kind-of": "^5.0.2" + "safer-buffer": ">= 2.1.2 < 3.0.0" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/default-resolution": { - "version": "2.0.0", + "node_modules/end-of-stream": { + "version": "1.4.4", "dev": true, "license": "MIT", - "engines": { - "node": ">= 0.10" + "dependencies": { + "once": "^1.4.0" } }, - "node_modules/defaults": { - "version": "1.0.4", + "node_modules/enquirer": { + "version": "2.3.6", "dev": true, "license": "MIT", "dependencies": { - "clone": "^1.0.2" + "ansi-colors": "^4.1.1" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/defaults/node_modules/clone": { - "version": "1.0.4", - "dev": true, - "license": "MIT", "engines": { - "node": ">=0.8" + "node": ">=8.6" } }, - "node_modules/define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", "dev": true, "engines": { - "node": ">=8" + "node": ">=6" } }, - "node_modules/define-properties": { - "version": "1.2.0", + "node_modules/envinfo": { + "version": "7.8.1", "dev": true, "license": "MIT", - "dependencies": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" + "bin": { + "envinfo": "dist/cli.js" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=4" } }, - "node_modules/define-property": { - "version": "0.2.5", + "node_modules/err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "dev": true + }, + "node_modules/error-ex": { + "version": "1.3.2", "dev": true, "license": "MIT", "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" + "is-arrayish": "^0.2.1" } }, - "node_modules/delayed-stream": { - "version": "1.0.0", + "node_modules/es6-promise": { + "version": "4.2.8", "license": "MIT", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", - "dev": true + "optional": true }, - "node_modules/denque": { - "version": "1.5.1", - "license": "Apache-2.0", - "engines": { - "node": ">=0.10" + "node_modules/esbuild": { + "version": "0.11.23", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" } }, - "node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "node_modules/esbuild-android-64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.18.tgz", + "integrity": "sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA==", + "cpu": [ + "x64" + ], "dev": true, + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">= 0.8" + "node": ">=12" } }, - "node_modules/deprecation": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", - "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", - "dev": true - }, - "node_modules/detect-file": { - "version": "1.0.0", + "node_modules/esbuild-android-arm64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.18.tgz", + "integrity": "sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "MIT", + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=0.10.0" + "node": ">=12" } }, - "node_modules/detect-indent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz", - "integrity": "sha512-rlpvsxUtM0PQvy9iZe640/IWwWYyBsTApREbA1pHOpmOUIl9MkP/U4z7vTtg4Oaojvqhxt7sdufnT0EzGaR31g==", + "node_modules/esbuild-darwin-64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.18.tgz", + "integrity": "sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg==", + "cpu": [ + "x64" + ], "dev": true, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=4" + "node": ">=12" } }, - "node_modules/diff": { - "version": "5.0.0", + "node_modules/esbuild-darwin-arm64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.18.tgz", + "integrity": "sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "BSD-3-Clause", + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=0.3.1" + "node": ">=12" } }, - "node_modules/diff-sequences": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.4.3.tgz", - "integrity": "sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==", + "node_modules/esbuild-freebsd-64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.18.tgz", + "integrity": "sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA==", + "cpu": [ + "x64" + ], "dev": true, + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=12" } }, - "node_modules/dir-glob": { - "version": "3.0.1", + "node_modules/esbuild-freebsd-arm64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.18.tgz", + "integrity": "sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "MIT", - "dependencies": { - "path-type": "^4.0.0" - }, + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": ">=8" + "node": ">=12" } }, - "node_modules/diskusage": { - "version": "1.1.3", - "hasInstallScript": true, - "license": "MIT", + "node_modules/esbuild-linux-32": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.18.tgz", + "integrity": "sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg==", + "cpu": [ + "ia32" + ], + "dev": true, "optional": true, - "dependencies": { - "es6-promise": "^4.2.5", - "nan": "^2.14.0" + "os": [ + "linux" + ], + "engines": { + "node": ">=12" } }, - "node_modules/doctrine": { - "version": "3.0.0", + "node_modules/esbuild-linux-64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.18.tgz", + "integrity": "sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw==", + "cpu": [ + "x64" + ], "dev": true, - "license": "Apache-2.0", - "dependencies": { - "esutils": "^2.0.2" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6.0.0" + "node": ">=12" } }, - "node_modules/dom-serializer": { - "version": "1.4.1", + "node_modules/esbuild-linux-arm": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.18.tgz", + "integrity": "sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA==", + "cpu": [ + "arm" + ], "dev": true, - "license": "MIT", - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" } }, - "node_modules/dom-serializer/node_modules/domhandler": { - "version": "4.3.1", + "node_modules/esbuild-linux-arm64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.18.tgz", + "integrity": "sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "domelementtype": "^2.2.0" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" + "node": ">=12" } }, - "node_modules/domelementtype": { - "version": "2.3.0", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } + "node_modules/esbuild-linux-mips64le": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.18.tgz", + "integrity": "sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ==", + "cpu": [ + "mips64el" ], - "license": "BSD-2-Clause" - }, - "node_modules/domhandler": { - "version": "3.3.0", "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "domelementtype": "^2.0.1" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/domutils": { - "version": "2.8.0", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" + "node": ">=12" } }, - "node_modules/domutils/node_modules/domhandler": { - "version": "4.3.1", + "node_modules/esbuild-linux-ppc64le": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.18.tgz", + "integrity": "sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w==", + "cpu": [ + "ppc64" + ], "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "domelementtype": "^2.2.0" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" + "node": ">=12" } }, - "node_modules/dot-prop": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", - "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "node_modules/esbuild-linux-riscv64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.18.tgz", + "integrity": "sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg==", + "cpu": [ + "riscv64" + ], "dev": true, - "dependencies": { - "is-obj": "^2.0.0" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=8" + "node": ">=12" } }, - "node_modules/dotenv": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", - "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==", + "node_modules/esbuild-linux-s390x": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.18.tgz", + "integrity": "sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ==", + "cpu": [ + "s390x" + ], "dev": true, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=10" - } - }, - "node_modules/duplexer": { - "version": "0.1.2", - "license": "MIT" - }, - "node_modules/duplexify": { - "version": "3.7.1", - "dev": true, - "license": "MIT", - "dependencies": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" - } - }, - "node_modules/each-props": { - "version": "1.3.2", - "dev": true, - "license": "MIT", - "dependencies": { - "is-plain-object": "^2.0.1", - "object.defaults": "^1.1.0" + "node": ">=12" } }, - "node_modules/each-props/node_modules/is-plain-object": { - "version": "2.0.4", + "node_modules/esbuild-netbsd-64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.18.tgz", + "integrity": "sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg==", + "cpu": [ + "x64" + ], "dev": true, - "license": "MIT", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true - }, - "node_modules/ecc-jsbn": { - "version": "0.1.2", - "license": "MIT", - "optional": true, - "dependencies": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "node_modules/ecdsa-sig-formatter": { - "version": "1.0.11", - "license": "Apache-2.0", - "dependencies": { - "safe-buffer": "^5.0.1" - } - }, - "node_modules/eckles": { - "version": "1.4.1", - "license": "MPL-2.0", "optional": true, - "bin": { - "eckles": "bin/eckles.js" - } - }, - "node_modules/ejs": { - "version": "3.1.9", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz", - "integrity": "sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==", - "dev": true, - "dependencies": { - "jake": "^10.8.5" - }, - "bin": { - "ejs": "bin/cli.js" - }, + "os": [ + "netbsd" + ], "engines": { - "node": ">=0.10.0" + "node": ">=12" } }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "license": "MIT" - }, - "node_modules/enabled": { - "version": "2.0.0", - "license": "MIT" - }, - "node_modules/encoding": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", - "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "node_modules/esbuild-openbsd-64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.18.tgz", + "integrity": "sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ==", + "cpu": [ + "x64" + ], "dev": true, "optional": true, - "dependencies": { - "iconv-lite": "^0.6.2" + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" } }, - "node_modules/encoding/node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "node_modules/esbuild-sunos-64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.18.tgz", + "integrity": "sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw==", + "cpu": [ + "x64" + ], "dev": true, "optional": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, + "os": [ + "sunos" + ], "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "dev": true, - "license": "MIT", - "dependencies": { - "once": "^1.4.0" + "node": ">=12" } }, - "node_modules/enquirer": { - "version": "2.3.6", + "node_modules/esbuild-windows-32": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.18.tgz", + "integrity": "sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ==", + "cpu": [ + "ia32" + ], "dev": true, - "license": "MIT", - "dependencies": { - "ansi-colors": "^4.1.1" - }, + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=8.6" - } - }, - "node_modules/entities": { - "version": "2.1.0", - "dev": true, - "license": "BSD-2-Clause", - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" + "node": ">=12" } }, - "node_modules/env-paths": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "node_modules/esbuild-windows-64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.18.tgz", + "integrity": "sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw==", + "cpu": [ + "x64" + ], "dev": true, + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=6" + "node": ">=12" } }, - "node_modules/envinfo": { - "version": "7.8.1", - "dev": true, - "license": "MIT", - "bin": { - "envinfo": "dist/cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/err-code": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", - "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", - "dev": true - }, - "node_modules/error-ex": { - "version": "1.3.2", - "dev": true, - "license": "MIT", - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/es5-ext": { - "version": "0.10.62", - "dev": true, - "hasInstallScript": true, - "license": "ISC", - "dependencies": { - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.3", - "next-tick": "^1.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/es6-iterator": { - "version": "2.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" - } - }, - "node_modules/es6-promise": { - "version": "4.2.8", - "license": "MIT", - "optional": true - }, - "node_modules/es6-symbol": { - "version": "3.1.3", - "dev": true, - "license": "ISC", - "dependencies": { - "d": "^1.0.1", - "ext": "^1.1.2" - } - }, - "node_modules/es6-weak-map": { - "version": "2.0.3", - "dev": true, - "license": "ISC", - "dependencies": { - "d": "1", - "es5-ext": "^0.10.46", - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.1" - } - }, - "node_modules/esbuild": { - "version": "0.11.23", - "hasInstallScript": true, - "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" - } - }, - "node_modules/esbuild-android-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.18.tgz", - "integrity": "sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-android-arm64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.18.tgz", - "integrity": "sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-darwin-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.18.tgz", - "integrity": "sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-darwin-arm64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.18.tgz", - "integrity": "sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-freebsd-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.18.tgz", - "integrity": "sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-freebsd-arm64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.18.tgz", - "integrity": "sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-32": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.18.tgz", - "integrity": "sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.18.tgz", - "integrity": "sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-arm": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.18.tgz", - "integrity": "sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-arm64": { + "node_modules/esbuild-windows-arm64": { "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.18.tgz", - "integrity": "sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug==", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.18.tgz", + "integrity": "sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ==", "cpu": [ "arm64" ], "dev": true, "optional": true, "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-mips64le": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.18.tgz", - "integrity": "sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-ppc64le": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.18.tgz", - "integrity": "sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" + "win32" ], "engines": { "node": ">=12" } }, - "node_modules/esbuild-linux-riscv64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.18.tgz", - "integrity": "sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-linux-s390x": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.18.tgz", - "integrity": "sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-netbsd-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.18.tgz", - "integrity": "sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-openbsd-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.18.tgz", - "integrity": "sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-sunos-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.18.tgz", - "integrity": "sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-windows-32": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.18.tgz", - "integrity": "sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-windows-64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.18.tgz", - "integrity": "sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/esbuild-windows-arm64": { - "version": "0.15.18", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.18.tgz", - "integrity": "sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/escalade": { - "version": "3.1.1", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-html": { - "version": "1.0.3", - "license": "MIT", - "optional": true - }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint": { - "version": "8.56.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz", - "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.56.0", - "@humanwhocodes/config-array": "^0.11.13", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "@ungap/structured-clone": "^1.2.0", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-config-prettier": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz", - "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==", - "dev": true, - "bin": { - "eslint-config-prettier": "bin/cli.js" - }, - "peerDependencies": { - "eslint": ">=7.0.0" - } - }, - "node_modules/eslint-formatter-pretty": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/eslint": "^7.2.13", - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.0", - "eslint-rule-docs": "^1.1.5", - "log-symbols": "^4.0.0", - "plur": "^4.0.0", - "string-width": "^4.2.0", - "supports-hyperlinks": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint-formatter-pretty/node_modules/@types/eslint": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.29.0.tgz", - "integrity": "sha512-VNcvioYDH8/FxaeTKkM4/TiTwt6pBV9E3OfGmvaw8tPl0rrHCJ4Ll15HRT+pMiFAf/MLQvAzC+6RzUMEL9Ceng==", - "dev": true, - "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "node_modules/eslint-plugin-jsdoc": { - "version": "48.2.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-48.2.1.tgz", - "integrity": "sha512-iUvbcyDZSO/9xSuRv2HQBw++8VkV/pt3UWtX9cpPH0l7GKPq78QC/6+PmyQHHvNZaTjAce6QVciEbnc6J/zH5g==", - "dev": true, - "dependencies": { - "@es-joy/jsdoccomment": "~0.42.0", - "are-docs-informative": "^0.0.2", - "comment-parser": "1.4.1", - "debug": "^4.3.4", - "escape-string-regexp": "^4.0.0", - "esquery": "^1.5.0", - "is-builtin-module": "^3.2.1", - "semver": "^7.6.0", - "spdx-expression-parse": "^4.0.0" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0" - } - }, - "node_modules/eslint-plugin-jsdoc/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/eslint-plugin-jsdoc/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/eslint-plugin-jsdoc/node_modules/spdx-expression-parse": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-4.0.0.tgz", - "integrity": "sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==", - "dev": true, - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/eslint-plugin-prettier": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.1.3.tgz", - "integrity": "sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==", - "dev": true, - "dependencies": { - "prettier-linter-helpers": "^1.0.0", - "synckit": "^0.8.6" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint-plugin-prettier" - }, - "peerDependencies": { - "@types/eslint": ">=8.0.0", - "eslint": ">=8.0.0", - "eslint-config-prettier": "*", - "prettier": ">=3.0.0" - }, - "peerDependenciesMeta": { - "@types/eslint": { - "optional": true - }, - "eslint-config-prettier": { - "optional": true - } - } - }, - "node_modules/eslint-rule-docs": { - "version": "1.1.235", - "dev": true, - "license": "MIT" - }, - "node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", - "dev": true, - "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/esquery": { - "version": "1.5.0", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/event-stream": { - "version": "4.0.1", - "license": "MIT", - "dependencies": { - "duplexer": "^0.1.1", - "from": "^0.1.7", - "map-stream": "0.0.7", - "pause-stream": "^0.0.11", - "split": "^1.0.1", - "stream-combiner": "^0.2.2", - "through": "^2.3.8" - } - }, - "node_modules/eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "dev": true - }, - "node_modules/execa": { - "version": "5.1.1", - "license": "MIT", - "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/executing-npm-path": { - "version": "0.1.0", - "dev": true, - "license": "ISC" - }, - "node_modules/expand-brackets": { - "version": "2.1.4", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/debug": { - "version": "2.6.9", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/expand-brackets/node_modules/ms": { - "version": "2.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/expand-tilde": { - "version": "2.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "homedir-polyfill": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/exponential-backoff": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz", - "integrity": "sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==", - "dev": true - }, - "node_modules/ext": { - "version": "1.7.0", - "dev": true, - "license": "ISC", - "dependencies": { - "type": "^2.7.2" - } - }, - "node_modules/ext/node_modules/type": { - "version": "2.7.2", - "dev": true, - "license": "ISC" - }, - "node_modules/extend": { - "version": "3.0.2", - "devOptional": true, - "license": "MIT" - }, - "node_modules/extend-shallow": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/external-editor": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/external-editor/node_modules/tmp": { - "version": "0.0.33", - "dev": true, - "license": "MIT", - "dependencies": { - "os-tmpdir": "~1.0.2" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/extglob": { - "version": "2.0.4", - "dev": true, - "license": "MIT", - "dependencies": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/define-property": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/is-data-descriptor": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/is-descriptor": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/kind-of": { - "version": "6.0.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extsprintf": { - "version": "1.3.0", - "engines": [ - "node >=0.6.0" - ], - "license": "MIT", - "optional": true - }, - "node_modules/eyes": { - "version": "0.1.8", - "engines": { - "node": "> 0.1.90" - } - }, - "node_modules/fancy-log": { - "version": "1.3.3", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-gray": "^0.1.1", - "color-support": "^1.1.3", - "parse-node-version": "^1.0.0", - "time-stamp": "^1.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "devOptional": true, - "license": "MIT" - }, - "node_modules/fast-diff": { - "version": "1.2.0", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/fast-glob": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", - "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "devOptional": true, - "license": "MIT" - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, - "node_modules/fastq": { - "version": "1.15.0", - "dev": true, - "license": "ISC", - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/fecha": { - "version": "4.2.3", - "license": "MIT" - }, - "node_modules/fettuccine-class": { - "version": "1.0.5", - "dev": true, - "license": "ISC", - "dependencies": { - "load-request-from-cwd-or-npm": "^2.0.1" - } - }, - "node_modules/figures": { - "version": "3.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "escape-string-regexp": "^1.0.5" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/figures/node_modules/escape-string-regexp": { - "version": "1.0.5", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/file-stream-rotator": { - "version": "0.6.1", - "license": "MIT", - "dependencies": { - "moment": "^2.29.1" - } - }, - "node_modules/file-uri-to-path": { - "version": "1.0.0", - "license": "MIT", - "optional": true - }, - "node_modules/filelist": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", - "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", - "dev": true, - "dependencies": { - "minimatch": "^5.0.1" - } - }, - "node_modules/filelist/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/filelist/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/fill-range": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/find-up": { - "version": "5.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/findup-sync": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "detect-file": "^1.0.0", - "is-glob": "^4.0.0", - "micromatch": "^3.0.4", - "resolve-dir": "^1.0.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/findup-sync/node_modules/define-property": { - "version": "2.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/findup-sync/node_modules/extend-shallow": { - "version": "3.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/findup-sync/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/findup-sync/node_modules/is-data-descriptor": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/findup-sync/node_modules/is-descriptor": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/findup-sync/node_modules/is-extendable": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/findup-sync/node_modules/is-plain-object": { - "version": "2.0.4", - "dev": true, - "license": "MIT", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/findup-sync/node_modules/kind-of": { - "version": "6.0.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/findup-sync/node_modules/micromatch": { - "version": "3.1.10", - "dev": true, - "license": "MIT", - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fined": { - "version": "1.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "expand-tilde": "^2.0.2", - "is-plain-object": "^2.0.3", - "object.defaults": "^1.1.0", - "object.pick": "^1.2.0", - "parse-filepath": "^1.0.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/fined/node_modules/is-plain-object": { - "version": "2.0.4", - "dev": true, - "license": "MIT", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/flagged-respawn": { - "version": "1.0.1", - "dev": true, + "node_modules/escalade": { + "version": "3.1.1", "license": "MIT", "engines": { - "node": ">= 0.10" + "node": ">=6" } }, - "node_modules/flat": { - "version": "5.0.2", + "node_modules/escape-string-regexp": { + "version": "4.0.0", "dev": true, - "license": "BSD-3-Clause", - "bin": { - "flat": "cli.js" + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/flat-cache": { - "version": "3.0.4", + "node_modules/eslint": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", + "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", "dev": true, - "license": "MIT", "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.0", + "@humanwhocodes/config-array": "^0.11.14", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/flatted": { - "version": "3.2.7", + "node_modules/eslint-config-prettier": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz", + "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==", "dev": true, - "license": "ISC" + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } }, - "node_modules/flush-write-stream": { - "version": "1.1.1", + "node_modules/eslint-formatter-pretty": { + "version": "4.1.0", "dev": true, "license": "MIT", "dependencies": { - "inherits": "^2.0.3", - "readable-stream": "^2.3.6" - } - }, - "node_modules/fn.name": { - "version": "1.1.0", - "license": "MIT" - }, - "node_modules/follow-redirects": { - "version": "1.15.6", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", - "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], + "@types/eslint": "^7.2.13", + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.0", + "eslint-rule-docs": "^1.1.5", + "log-symbols": "^4.0.0", + "plur": "^4.0.0", + "string-width": "^4.2.0", + "supports-hyperlinks": "^2.0.0" + }, "engines": { - "node": ">=4.0" + "node": ">=10" }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/for-in": { - "version": "1.0.2", + "node_modules/eslint-formatter-pretty/node_modules/@types/eslint": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.29.0.tgz", + "integrity": "sha512-VNcvioYDH8/FxaeTKkM4/TiTwt6pBV9E3OfGmvaw8tPl0rrHCJ4Ll15HRT+pMiFAf/MLQvAzC+6RzUMEL9Ceng==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" } }, - "node_modules/for-own": { - "version": "1.0.0", + "node_modules/eslint-plugin-jsdoc": { + "version": "48.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-48.2.1.tgz", + "integrity": "sha512-iUvbcyDZSO/9xSuRv2HQBw++8VkV/pt3UWtX9cpPH0l7GKPq78QC/6+PmyQHHvNZaTjAce6QVciEbnc6J/zH5g==", "dev": true, - "license": "MIT", "dependencies": { - "for-in": "^1.0.1" + "@es-joy/jsdoccomment": "~0.42.0", + "are-docs-informative": "^0.0.2", + "comment-parser": "1.4.1", + "debug": "^4.3.4", + "escape-string-regexp": "^4.0.0", + "esquery": "^1.5.0", + "is-builtin-module": "^3.2.1", + "semver": "^7.6.0", + "spdx-expression-parse": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=18" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0" } }, - "node_modules/foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "node_modules/eslint-plugin-jsdoc/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": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" + "yallist": "^4.0.0" }, "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=10" } }, - "node_modules/foreground-child/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "node_modules/eslint-plugin-jsdoc/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, - "engines": { - "node": ">=14" + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/forever-agent": { - "version": "0.6.1", - "license": "Apache-2.0", - "optional": true, "engines": { - "node": "*" + "node": ">=10" } }, - "node_modules/form-data": { + "node_modules/eslint-plugin-jsdoc/node_modules/spdx-expression-parse": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-4.0.0.tgz", + "integrity": "sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==", + "dev": true, "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" } }, - "node_modules/fragment-cache": { - "version": "0.2.1", + "node_modules/eslint-plugin-prettier": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.1.3.tgz", + "integrity": "sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==", "dev": true, - "license": "MIT", "dependencies": { - "map-cache": "^0.2.2" + "prettier-linter-helpers": "^1.0.0", + "synckit": "^0.8.6" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/from": { - "version": "0.1.7", - "license": "MIT" - }, - "node_modules/fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", - "dev": true - }, - "node_modules/fs-extra": { - "version": "11.1.1", - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "node": "^14.18.0 || >=16.0.0" }, - "engines": { - "node": ">=14.14" - } - }, - "node_modules/fs-minipass": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.2.tgz", - "integrity": "sha512-2GAfyfoaCDRrM6jaOS3UsBts8yJ55VioXdWcOL7dK9zdAuKT71+WBA4ifnNYqVjYv+4SsPxjK0JT4yIIn4cA/g==", + "funding": { + "url": "https://opencollective.com/eslint-plugin-prettier" + }, + "peerDependencies": { + "@types/eslint": ">=8.0.0", + "eslint": ">=8.0.0", + "eslint-config-prettier": "*", + "prettier": ">=3.0.0" + }, + "peerDependenciesMeta": { + "@types/eslint": { + "optional": true + }, + "eslint-config-prettier": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-unicorn": { + "version": "52.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-52.0.0.tgz", + "integrity": "sha512-1Yzm7/m+0R4djH0tjDjfVei/ju2w3AzUGjG6q8JnuNIL5xIwsflyCooW5sfBvQp2pMYQFSWWCFONsjCax1EHng==", "dev": true, "dependencies": { - "minipass": "^5.0.0" + "@babel/helper-validator-identifier": "^7.22.20", + "@eslint-community/eslint-utils": "^4.4.0", + "@eslint/eslintrc": "^2.1.4", + "ci-info": "^4.0.0", + "clean-regexp": "^1.0.0", + "core-js-compat": "^3.34.0", + "esquery": "^1.5.0", + "indent-string": "^4.0.0", + "is-builtin-module": "^3.2.1", + "jsesc": "^3.0.2", + "pluralize": "^8.0.0", + "read-pkg-up": "^7.0.1", + "regexp-tree": "^0.1.27", + "regjsparser": "^0.10.0", + "semver": "^7.5.4", + "strip-indent": "^3.0.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sindresorhus/eslint-plugin-unicorn?sponsor=1" + }, + "peerDependencies": { + "eslint": ">=8.56.0" } }, - "node_modules/fs-minipass/node_modules/minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "node_modules/eslint-plugin-unicorn/node_modules/ci-info": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.0.0.tgz", + "integrity": "sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], "engines": { "node": ">=8" } }, - "node_modules/fs-mkdirp-stream": { - "version": "1.0.0", + "node_modules/eslint-plugin-unicorn/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, - "license": "MIT", "dependencies": { - "graceful-fs": "^4.1.11", - "through2": "^2.0.3" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">= 0.10" + "node": ">=8" } }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "dev": true, - "license": "ISC" + "node_modules/eslint-plugin-unicorn/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true }, - "node_modules/fsevents": { - "version": "1.2.13", + "node_modules/eslint-plugin-unicorn/node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "dependencies": { - "bindings": "^1.5.0", - "nan": "^2.12.1" - }, "engines": { - "node": ">= 4.0" + "node": ">=8" } }, - "node_modules/function-bind": { - "version": "1.1.1", - "license": "MIT" - }, - "node_modules/gauge": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", - "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", + "node_modules/eslint-plugin-unicorn/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": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.3", - "console-control-strings": "^1.1.0", - "has-unicode": "^2.0.1", - "signal-exit": "^3.0.7", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.5" + "p-locate": "^4.1.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=8" } }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "license": "ISC", - "engines": { - "node": "6.* || 8.* || >= 10.*" + "node_modules/eslint-plugin-unicorn/node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" } }, - "node_modules/get-func-name": { - "version": "2.0.0", + "node_modules/eslint-plugin-unicorn/node_modules/normalize-package-data/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, - "license": "MIT", - "engines": { - "node": "*" + "bin": { + "semver": "bin/semver" } }, - "node_modules/get-intrinsic": { - "version": "1.2.0", + "node_modules/eslint-plugin-unicorn/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, - "license": "MIT", "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/get-pkg-repo": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-4.2.1.tgz", - "integrity": "sha512-2+QbHjFRfGB74v/pYWjd5OhU3TDIC2Gv/YKUTk/tCvAz0pkn/Mz6P3uByuBimLOcPvN2jYdScl3xGFSrx0jEcA==", + "node_modules/eslint-plugin-unicorn/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": { - "@hutson/parse-repository-url": "^3.0.0", - "hosted-git-info": "^4.0.0", - "through2": "^2.0.0", - "yargs": "^16.2.0" - }, - "bin": { - "get-pkg-repo": "src/cli.js" + "p-limit": "^2.2.0" }, "engines": { - "node": ">=6.9.0" + "node": ">=8" } }, - "node_modules/get-pkg-repo/node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "node_modules/eslint-plugin-unicorn/node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", "dev": true, "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" }, - "engines": { - "node": ">=10" - } - }, - "node_modules/get-pkg-repo/node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/get-port": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz", - "integrity": "sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==", - "dev": true, "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/get-spdx-license-ids": { - "version": "2.1.0", + "node_modules/eslint-plugin-unicorn/node_modules/read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", "dev": true, - "license": "ISC", "dependencies": { - "fettuccine-class": "^1.0.5", - "inspect-with-kind": "^1.0.4" - } - }, - "node_modules/get-stream": { - "version": "6.0.1", - "license": "MIT", + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/get-value": { - "version": "2.0.6", + "node_modules/eslint-plugin-unicorn/node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", "dev": true, - "license": "MIT", "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/getpass": { - "version": "0.1.7", - "license": "MIT", - "optional": true, - "dependencies": { - "assert-plus": "^1.0.0" + "node": ">=8" } }, - "node_modules/git-raw-commits": { + "node_modules/eslint-plugin-unicorn/node_modules/strip-indent": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-3.0.0.tgz", - "integrity": "sha512-b5OHmZ3vAgGrDn/X0kS+9qCfNKWe4K/jFnhwzVWWg0/k5eLa3060tZShrRg8Dja5kPc+YjS0Gc6y7cRr44Lpjw==", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", "dev": true, "dependencies": { - "dargs": "^7.0.0", - "meow": "^8.1.2", - "split2": "^3.2.2" - }, - "bin": { - "git-raw-commits": "cli.js" + "min-indent": "^1.0.0" }, "engines": { - "node": ">=14" + "node": ">=8" } }, - "node_modules/git-raw-commits/node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "node_modules/eslint-plugin-unicorn/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", "dev": true, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/git-raw-commits/node_modules/camelcase-keys": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", - "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", + "node_modules/eslint-rule-docs": { + "version": "1.1.235", + "dev": true, + "license": "MIT" + }, + "node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, "dependencies": { - "camelcase": "^5.3.1", - "map-obj": "^4.0.0", - "quick-lru": "^4.0.1" + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" }, "engines": { - "node": ">=8" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://opencollective.com/eslint" } }, - "node_modules/git-raw-commits/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==", + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" }, "engines": { - "node": ">=8" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/git-raw-commits/node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true - }, - "node_modules/git-raw-commits/node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/git-raw-commits/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==", + "node_modules/esquery": { + "version": "1.5.0", "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "p-locate": "^4.1.0" + "estraverse": "^5.1.0" }, "engines": { - "node": ">=8" + "node": ">=0.10" } }, - "node_modules/git-raw-commits/node_modules/meow": { - "version": "8.1.2", - "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", - "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, "dependencies": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "4.1.0", - "normalize-package-data": "^3.0.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.18.0", - "yargs-parser": "^20.2.3" + "estraverse": "^5.2.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=4.0" } }, - "node_modules/git-raw-commits/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==", + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=4.0" } }, - "node_modules/git-raw-commits/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==", + "node_modules/esutils": { + "version": "2.0.3", "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, + "license": "BSD-2-Clause", "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/git-raw-commits/node_modules/quick-lru": { + "node_modules/event-stream": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", - "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", - "dev": true, + "license": "MIT", + "dependencies": { + "duplexer": "^0.1.1", + "from": "^0.1.7", + "map-stream": "0.0.7", + "pause-stream": "^0.0.11", + "split": "^1.0.1", + "stream-combiner": "^0.2.2", + "through": "^2.3.8" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "node_modules/execa": { + "version": "5.1.1", + "license": "MIT", + "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": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/git-raw-commits/node_modules/read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "node_modules/exponential-backoff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz", + "integrity": "sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==", + "dev": true + }, + "node_modules/external-editor": { + "version": "3.1.0", "dev": true, + "license": "MIT", "dependencies": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" }, "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/git-raw-commits/node_modules/read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "node_modules/external-editor/node_modules/tmp": { + "version": "0.0.33", "dev": true, + "license": "MIT", "dependencies": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" + "os-tmpdir": "~1.0.2" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.6.0" } }, - "node_modules/git-raw-commits/node_modules/read-pkg-up/node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true, + "node_modules/eyes": { + "version": "0.1.8", "engines": { - "node": ">=8" + "node": "> 0.1.90" } }, - "node_modules/git-raw-commits/node_modules/read-pkg/node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "node_modules/fast-deep-equal": { + "version": "3.1.3", "dev": true, - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } + "license": "MIT" }, - "node_modules/git-raw-commits/node_modules/read-pkg/node_modules/type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "node_modules/fast-diff": { + "version": "1.2.0", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/fast-glob": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", + "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, "engines": { - "node": ">=8" + "node": ">=8.6.0" } }, - "node_modules/git-raw-commits/node_modules/redent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", - "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", "dev": true, + "license": "ISC", "dependencies": { - "indent-string": "^4.0.0", - "strip-indent": "^3.0.0" + "is-glob": "^4.0.1" }, "engines": { - "node": ">=8" + "node": ">= 6" } }, - "node_modules/git-raw-commits/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", "dev": true, - "bin": { - "semver": "bin/semver" - } + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true }, - "node_modules/git-raw-commits/node_modules/strip-indent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", - "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "node_modules/fastq": { + "version": "1.15.0", "dev": true, + "license": "ISC", "dependencies": { - "min-indent": "^1.0.0" - }, - "engines": { - "node": ">=8" + "reusify": "^1.0.4" } }, - "node_modules/git-raw-commits/node_modules/trim-newlines": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", - "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", - "dev": true, - "engines": { - "node": ">=8" - } + "node_modules/fecha": { + "version": "4.2.3", + "license": "MIT" }, - "node_modules/git-raw-commits/node_modules/type-fest": { - "version": "0.18.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", - "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", + "node_modules/figures": { + "version": "3.2.0", "dev": true, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/git-raw-commits/node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "node_modules/figures/node_modules/escape-string-regexp": { + "version": "1.0.5", "dev": true, + "license": "MIT", "engines": { - "node": ">=10" + "node": ">=0.8.0" } }, - "node_modules/git-remote-origin-url": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz", - "integrity": "sha512-eU+GGrZgccNJcsDH5LkXR3PB9M958hxc7sbA8DFJjrv9j4L2P/eZfKhM+QD6wyzpiv+b1BpK0XrYCxkovtjSLw==", + "node_modules/file-entry-cache": { + "version": "6.0.1", "dev": true, + "license": "MIT", "dependencies": { - "gitconfiglocal": "^1.0.0", - "pify": "^2.3.0" + "flat-cache": "^3.0.4" }, "engines": { - "node": ">=4" + "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/git-remote-origin-url/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "node_modules/file-stream-rotator": { + "version": "0.6.1", + "license": "MIT", + "dependencies": { + "moment": "^2.29.1" + } + }, + "node_modules/file-uri-to-path": { + "version": "1.0.0", + "license": "MIT", + "optional": true + }, + "node_modules/filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", "dev": true, - "engines": { - "node": ">=0.10.0" + "dependencies": { + "minimatch": "^5.0.1" } }, - "node_modules/git-semver-tags": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-5.0.1.tgz", - "integrity": "sha512-hIvOeZwRbQ+7YEUmCkHqo8FOLQZCEn18yevLHADlFPZY02KJGsu5FZt9YW/lybfK2uhWFI7Qg/07LekJiTv7iA==", + "node_modules/filelist/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, "dependencies": { - "meow": "^8.1.2", - "semver": "^7.0.0" - }, - "bin": { - "git-semver-tags": "cli.js" - }, - "engines": { - "node": ">=14" + "balanced-match": "^1.0.0" } }, - "node_modules/git-semver-tags/node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "node_modules/filelist/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, "engines": { - "node": ">=6" + "node": ">=10" } }, - "node_modules/git-semver-tags/node_modules/camelcase-keys": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", - "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", + "node_modules/find-up": { + "version": "5.0.0", "dev": true, + "license": "MIT", "dependencies": { - "camelcase": "^5.3.1", - "map-obj": "^4.0.0", - "quick-lru": "^4.0.1" + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/git-semver-tags/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==", + "node_modules/flat": { + "version": "5.0.2", + "dev": true, + "license": "BSD-3-Clause", + "bin": { + "flat": "cli.js" + } + }, + "node_modules/flat-cache": { + "version": "3.0.4", "dev": true, + "license": "MIT", "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "flatted": "^3.1.0", + "rimraf": "^3.0.2" }, "engines": { - "node": ">=8" + "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/git-semver-tags/node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true - }, - "node_modules/git-semver-tags/node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "node_modules/flatted": { + "version": "3.2.7", "dev": true, + "license": "ISC" + }, + "node_modules/fn.name": { + "version": "1.1.0", + "license": "MIT" + }, + "node_modules/follow-redirects": { + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], "engines": { - "node": ">=8" + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } } }, - "node_modules/git-semver-tags/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==", + "node_modules/foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", "dev": true, "dependencies": { - "p-locate": "^4.1.0" + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" }, "engines": { - "node": ">=8" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/git-semver-tags/node_modules/meow": { - "version": "8.1.2", - "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", - "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", + "node_modules/foreground-child/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, - "dependencies": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "4.1.0", - "normalize-package-data": "^3.0.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.18.0", - "yargs-parser": "^20.2.3" - }, "engines": { - "node": ">=10" + "node": ">=14" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/git-semver-tags/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, + "node_modules/form-data": { + "version": "4.0.0", + "license": "MIT", "dependencies": { - "p-try": "^2.0.0" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" }, "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 6" } }, - "node_modules/git-semver-tags/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, + "node_modules/from": { + "version": "0.1.7", + "license": "MIT" + }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true + }, + "node_modules/fs-extra": { + "version": "11.1.1", + "license": "MIT", "dependencies": { - "p-limit": "^2.2.0" + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" }, "engines": { - "node": ">=8" - } - }, - "node_modules/git-semver-tags/node_modules/quick-lru": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", - "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", - "dev": true, - "engines": { - "node": ">=8" + "node": ">=14.14" } }, - "node_modules/git-semver-tags/node_modules/read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "node_modules/fs-minipass": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.2.tgz", + "integrity": "sha512-2GAfyfoaCDRrM6jaOS3UsBts8yJ55VioXdWcOL7dK9zdAuKT71+WBA4ifnNYqVjYv+4SsPxjK0JT4yIIn4cA/g==", "dev": true, "dependencies": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" + "minipass": "^5.0.0" }, "engines": { - "node": ">=8" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/git-semver-tags/node_modules/read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "node_modules/fs-minipass/node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", "dev": true, - "dependencies": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" - }, "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/git-semver-tags/node_modules/read-pkg-up/node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "node_modules/fs.realpath": { + "version": "1.0.0", "dev": true, - "engines": { - "node": ">=8" + "license": "ISC" + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/git-semver-tags/node_modules/read-pkg/node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "node_modules/gauge": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", + "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", "dev": true, "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^3.0.7", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/git-semver-tags/node_modules/read-pkg/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "bin": { - "semver": "bin/semver" + "node_modules/get-caller-file": { + "version": "2.0.5", + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" } }, - "node_modules/git-semver-tags/node_modules/read-pkg/node_modules/type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "node_modules/get-func-name": { + "version": "2.0.0", "dev": true, + "license": "MIT", "engines": { - "node": ">=8" + "node": "*" } }, - "node_modules/git-semver-tags/node_modules/redent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", - "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "node_modules/get-pkg-repo": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-4.2.1.tgz", + "integrity": "sha512-2+QbHjFRfGB74v/pYWjd5OhU3TDIC2Gv/YKUTk/tCvAz0pkn/Mz6P3uByuBimLOcPvN2jYdScl3xGFSrx0jEcA==", "dev": true, "dependencies": { - "indent-string": "^4.0.0", - "strip-indent": "^3.0.0" + "@hutson/parse-repository-url": "^3.0.0", + "hosted-git-info": "^4.0.0", + "through2": "^2.0.0", + "yargs": "^16.2.0" + }, + "bin": { + "get-pkg-repo": "src/cli.js" }, "engines": { - "node": ">=8" + "node": ">=6.9.0" } }, - "node_modules/git-semver-tags/node_modules/strip-indent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", - "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "node_modules/get-pkg-repo/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, "dependencies": { - "min-indent": "^1.0.0" + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" }, "engines": { - "node": ">=8" + "node": ">=10" } }, - "node_modules/git-semver-tags/node_modules/trim-newlines": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", - "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", + "node_modules/get-pkg-repo/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", "dev": true, "engines": { - "node": ">=8" + "node": ">=10" } }, - "node_modules/git-semver-tags/node_modules/type-fest": { - "version": "0.18.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", - "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", + "node_modules/get-port": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz", + "integrity": "sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==", "dev": true, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/git-semver-tags/node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true, + "node_modules/get-stream": { + "version": "6.0.1", + "license": "MIT", "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/git-up": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/git-up/-/git-up-7.0.0.tgz", - "integrity": "sha512-ONdIrbBCFusq1Oy0sC71F5azx8bVkvtZtMJAsv+a6lz5YAmbNnLD6HAB4gptHZVLPR8S2/kVN6Gab7lryq5+lQ==", - "dev": true, - "dependencies": { - "is-ssh": "^1.4.0", - "parse-url": "^8.1.0" - } - }, - "node_modules/git-url-parse": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/git-url-parse/-/git-url-parse-13.1.0.tgz", - "integrity": "sha512-5FvPJP/70WkIprlUZ33bm4UAaFdjcLkJLpWft1BeZKqwR0uhhNGoKwlUaPtVb4LxCSQ++erHapRak9kWGj+FCA==", + "node_modules/git-raw-commits": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-3.0.0.tgz", + "integrity": "sha512-b5OHmZ3vAgGrDn/X0kS+9qCfNKWe4K/jFnhwzVWWg0/k5eLa3060tZShrRg8Dja5kPc+YjS0Gc6y7cRr44Lpjw==", "dev": true, "dependencies": { - "git-up": "^7.0.0" + "dargs": "^7.0.0", + "meow": "^8.1.2", + "split2": "^3.2.2" + }, + "bin": { + "git-raw-commits": "cli.js" + }, + "engines": { + "node": ">=14" } }, - "node_modules/gitconfiglocal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz", - "integrity": "sha512-spLUXeTAVHxDtKsJc8FkFVgFtMdEN9qPGpL23VfSHx4fP4+Ds097IXLvymbnDH8FnmxX5Nr9bPw3A+AQ6mWEaQ==", + "node_modules/git-raw-commits/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, - "dependencies": { - "ini": "^1.3.2" + "engines": { + "node": ">=6" } }, - "node_modules/glob": { - "version": "9.3.2", + "node_modules/git-raw-commits/node_modules/camelcase-keys": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", + "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", "dev": true, - "license": "ISC", "dependencies": { - "fs.realpath": "^1.0.0", - "minimatch": "^7.4.1", - "minipass": "^4.2.4", - "path-scurry": "^1.6.1" + "camelcase": "^5.3.1", + "map-obj": "^4.0.0", + "quick-lru": "^4.0.1" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/glob-parent": { - "version": "6.0.2", + "node_modules/git-raw-commits/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, - "license": "ISC", "dependencies": { - "is-glob": "^4.0.3" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">=10.13.0" + "node": ">=8" + } + }, + "node_modules/git-raw-commits/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "node_modules/git-raw-commits/node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "engines": { + "node": ">=8" } }, - "node_modules/glob-stream": { - "version": "6.1.0", + "node_modules/git-raw-commits/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, - "license": "MIT", "dependencies": { - "extend": "^3.0.0", - "glob": "^7.1.1", - "glob-parent": "^3.1.0", - "is-negated-glob": "^1.0.0", - "ordered-read-streams": "^1.0.0", - "pumpify": "^1.3.5", - "readable-stream": "^2.1.5", - "remove-trailing-separator": "^1.0.1", - "to-absolute-glob": "^2.0.0", - "unique-stream": "^2.0.2" + "p-locate": "^4.1.0" }, "engines": { - "node": ">= 0.10" + "node": ">=8" } }, - "node_modules/glob-stream/node_modules/glob": { - "version": "7.2.3", + "node_modules/git-raw-commits/node_modules/meow": { + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", + "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", "dev": true, - "license": "ISC", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" }, "engines": { - "node": "*" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/glob-stream/node_modules/glob-parent": { - "version": "3.1.0", + "node_modules/git-raw-commits/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, - "license": "ISC", "dependencies": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/glob-stream/node_modules/is-glob": { - "version": "3.1.0", + "node_modules/git-raw-commits/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, - "license": "MIT", "dependencies": { - "is-extglob": "^2.1.0" + "p-limit": "^2.2.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/glob-watcher": { - "version": "5.0.5", + "node_modules/git-raw-commits/node_modules/quick-lru": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", + "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", "dev": true, - "license": "MIT", - "dependencies": { - "anymatch": "^2.0.0", - "async-done": "^1.2.0", - "chokidar": "^2.0.0", - "is-negated-glob": "^1.0.0", - "just-debounce": "^1.0.0", - "normalize-path": "^3.0.0", - "object.defaults": "^1.1.0" - }, "engines": { - "node": ">= 0.10" + "node": ">=8" } }, - "node_modules/glob/node_modules/brace-expansion": { - "version": "2.0.1", + "node_modules/git-raw-commits/node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", "dev": true, - "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0" + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/glob/node_modules/minimatch": { - "version": "7.4.3", + "node_modules/git-raw-commits/node_modules/read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", "dev": true, - "license": "ISC", "dependencies": { - "brace-expansion": "^2.0.1" + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" }, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/global-modules": { - "version": "1.0.0", + "node_modules/git-raw-commits/node_modules/read-pkg-up/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", "dev": true, - "license": "MIT", - "dependencies": { - "global-prefix": "^1.0.1", - "is-windows": "^1.0.1", - "resolve-dir": "^1.0.0" - }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/global-prefix": { - "version": "1.0.2", + "node_modules/git-raw-commits/node_modules/read-pkg/node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", "dev": true, - "license": "MIT", "dependencies": { - "expand-tilde": "^2.0.2", - "homedir-polyfill": "^1.0.1", - "ini": "^1.3.4", - "is-windows": "^1.0.1", - "which": "^1.2.14" - }, + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/git-raw-commits/node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/global-prefix/node_modules/which": { - "version": "1.3.1", + "node_modules/git-raw-commits/node_modules/redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", "dev": true, - "license": "ISC", "dependencies": { - "isexe": "^2.0.0" + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" }, + "engines": { + "node": ">=8" + } + }, + "node_modules/git-raw-commits/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, "bin": { - "which": "bin/which" + "semver": "bin/semver" } }, - "node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "node_modules/git-raw-commits/node_modules/strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", "dev": true, "dependencies": { - "type-fest": "^0.20.2" + "min-indent": "^1.0.0" }, "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/globalyzer": { - "version": "0.1.0", + "node_modules/git-raw-commits/node_modules/trim-newlines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", + "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", "dev": true, - "license": "MIT" + "engines": { + "node": ">=8" + } }, - "node_modules/globby": { - "version": "11.1.0", + "node_modules/git-raw-commits/node_modules/type-fest": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", "dev": true, - "license": "MIT", - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, "engines": { "node": ">=10" }, @@ -8548,230 +6650,226 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/globrex": { - "version": "0.1.2", + "node_modules/git-raw-commits/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", "dev": true, - "license": "MIT" + "engines": { + "node": ">=10" + } }, - "node_modules/glogg": { - "version": "1.0.2", + "node_modules/git-remote-origin-url": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz", + "integrity": "sha512-eU+GGrZgccNJcsDH5LkXR3PB9M958hxc7sbA8DFJjrv9j4L2P/eZfKhM+QD6wyzpiv+b1BpK0XrYCxkovtjSLw==", "dev": true, - "license": "MIT", "dependencies": { - "sparkles": "^1.0.0" + "gitconfiglocal": "^1.0.0", + "pify": "^2.3.0" }, "engines": { - "node": ">= 0.10" + "node": ">=4" } }, - "node_modules/glossy": { - "version": "0.1.7", - "optional": true, + "node_modules/git-remote-origin-url/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, "engines": { - "node": ">= 0.2.5" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "license": "ISC" - }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true - }, - "node_modules/greenlock": { - "version": "4.0.4", - "license": "MPL-2.0", - "optional": true, - "dependencies": { - "@greenlock/manager": "^3.1.0", - "@root/acme": "^3.0.9", - "@root/csr": "^0.8.1", - "@root/greenlock": "^4.0.4", - "@root/keypairs": "^0.9.0", - "@root/mkdirp": "^1.0.0", - "@root/request": "^1.4.2", - "acme-http-01-standalone": "^3.0.5", - "cert-info": "^1.5.1", - "greenlock-store-fs": "^3.2.2", - "safe-replace": "^1.1.0" - } - }, - "node_modules/greenlock-express": { - "version": "4.0.3", - "license": "MPL-2.0", - "optional": true, - "dependencies": { - "@root/greenlock": "^4.0.4", - "@root/greenlock-express": "^4.0.3", - "redirect-https": "^1.1.5" - } - }, - "node_modules/greenlock-manager-fs": { - "version": "3.1.1", - "license": "MPL-2.0", - "optional": true, - "dependencies": { - "@root/mkdirp": "^1.0.0", - "safe-replace": "^1.1.0" - } - }, - "node_modules/greenlock-store-fs": { - "version": "3.2.2", - "license": "MPL-2.0", - "optional": true, - "dependencies": { - "@root/mkdirp": "^1.0.0", - "safe-replace": "^1.1.0" + "node": ">=0.10.0" } }, - "node_modules/gulp": { - "version": "4.0.2", + "node_modules/git-semver-tags": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-5.0.1.tgz", + "integrity": "sha512-hIvOeZwRbQ+7YEUmCkHqo8FOLQZCEn18yevLHADlFPZY02KJGsu5FZt9YW/lybfK2uhWFI7Qg/07LekJiTv7iA==", "dev": true, - "license": "MIT", "dependencies": { - "glob-watcher": "^5.0.3", - "gulp-cli": "^2.2.0", - "undertaker": "^1.2.1", - "vinyl-fs": "^3.0.0" + "meow": "^8.1.2", + "semver": "^7.0.0" }, "bin": { - "gulp": "bin/gulp.js" + "git-semver-tags": "cli.js" }, "engines": { - "node": ">= 0.10" + "node": ">=14" } }, - "node_modules/gulp-cli": { - "version": "2.3.0", + "node_modules/git-semver-tags/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, - "license": "MIT", - "dependencies": { - "ansi-colors": "^1.0.1", - "archy": "^1.0.0", - "array-sort": "^1.0.0", - "color-support": "^1.1.3", - "concat-stream": "^1.6.0", - "copy-props": "^2.0.1", - "fancy-log": "^1.3.2", - "gulplog": "^1.0.0", - "interpret": "^1.4.0", - "isobject": "^3.0.1", - "liftoff": "^3.1.0", - "matchdep": "^2.0.0", - "mute-stdout": "^1.0.0", - "pretty-hrtime": "^1.0.0", - "replace-homedir": "^1.0.0", - "semver-greatest-satisfied-range": "^1.1.0", - "v8flags": "^3.2.0", - "yargs": "^7.1.0" - }, - "bin": { - "gulp": "bin/gulp.js" - }, "engines": { - "node": ">= 0.10" + "node": ">=6" } }, - "node_modules/gulp-cli/node_modules/ansi-colors": { - "version": "1.1.0", + "node_modules/git-semver-tags/node_modules/camelcase-keys": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", + "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", "dev": true, - "license": "MIT", "dependencies": { - "ansi-wrap": "^0.1.0" + "camelcase": "^5.3.1", + "map-obj": "^4.0.0", + "quick-lru": "^4.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/gulp-cli/node_modules/ansi-regex": { - "version": "2.1.1", + "node_modules/git-semver-tags/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, - "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/gulp-cli/node_modules/camelcase": { - "version": "3.0.0", + "node_modules/git-semver-tags/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "node_modules/git-semver-tags/node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", "dev": true, - "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/gulp-cli/node_modules/cliui": { - "version": "3.2.0", + "node_modules/git-semver-tags/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, - "license": "ISC", "dependencies": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/gulp-cli/node_modules/decamelize": { - "version": "1.2.0", + "node_modules/git-semver-tags/node_modules/meow": { + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", + "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", "dev": true, - "license": "MIT", + "dependencies": { + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" + }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/gulp-cli/node_modules/find-up": { - "version": "1.1.2", + "node_modules/git-semver-tags/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, - "license": "MIT", "dependencies": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" + "p-try": "^2.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/gulp-cli/node_modules/get-caller-file": { - "version": "1.0.3", + "node_modules/git-semver-tags/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, - "license": "ISC" + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } }, - "node_modules/gulp-cli/node_modules/hosted-git-info": { - "version": "2.8.9", + "node_modules/git-semver-tags/node_modules/quick-lru": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", + "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", "dev": true, - "license": "ISC" + "engines": { + "node": ">=8" + } }, - "node_modules/gulp-cli/node_modules/is-fullwidth-code-point": { - "version": "1.0.0", + "node_modules/git-semver-tags/node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", "dev": true, - "license": "MIT", "dependencies": { - "number-is-nan": "^1.0.0" + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/gulp-cli/node_modules/load-json-file": { - "version": "1.1.0", + "node_modules/git-semver-tags/node_modules/read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", "dev": true, - "license": "MIT", "dependencies": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/git-semver-tags/node_modules/read-pkg-up/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "engines": { + "node": ">=8" } }, - "node_modules/gulp-cli/node_modules/normalize-package-data": { + "node_modules/git-semver-tags/node_modules/read-pkg/node_modules/normalize-package-data": { "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "hosted-git-info": "^2.1.4", "resolve": "^1.10.0", @@ -8779,204 +6877,218 @@ "validate-npm-package-license": "^3.0.1" } }, - "node_modules/gulp-cli/node_modules/parse-json": { - "version": "2.2.0", + "node_modules/git-semver-tags/node_modules/read-pkg/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/git-semver-tags/node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", "dev": true, - "license": "MIT", - "dependencies": { - "error-ex": "^1.2.0" - }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/gulp-cli/node_modules/path-exists": { - "version": "2.1.0", + "node_modules/git-semver-tags/node_modules/redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", "dev": true, - "license": "MIT", "dependencies": { - "pinkie-promise": "^2.0.0" + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/gulp-cli/node_modules/path-type": { - "version": "1.1.0", + "node_modules/git-semver-tags/node_modules/strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", "dev": true, - "license": "MIT", "dependencies": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" + "min-indent": "^1.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/gulp-cli/node_modules/pify": { - "version": "2.3.0", + "node_modules/git-semver-tags/node_modules/trim-newlines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", + "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", "dev": true, - "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/gulp-cli/node_modules/read-pkg": { - "version": "1.1.0", + "node_modules/git-semver-tags/node_modules/type-fest": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", "dev": true, - "license": "MIT", - "dependencies": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/gulp-cli/node_modules/read-pkg-up": { - "version": "1.0.1", + "node_modules/git-semver-tags/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", "dev": true, - "license": "MIT", - "dependencies": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - }, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/gulp-cli/node_modules/semver": { - "version": "5.7.1", + "node_modules/git-up": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/git-up/-/git-up-7.0.0.tgz", + "integrity": "sha512-ONdIrbBCFusq1Oy0sC71F5azx8bVkvtZtMJAsv+a6lz5YAmbNnLD6HAB4gptHZVLPR8S2/kVN6Gab7lryq5+lQ==", "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver" + "dependencies": { + "is-ssh": "^1.4.0", + "parse-url": "^8.1.0" } }, - "node_modules/gulp-cli/node_modules/string-width": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" + "node_modules/git-url-parse": { + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/git-url-parse/-/git-url-parse-13.1.0.tgz", + "integrity": "sha512-5FvPJP/70WkIprlUZ33bm4UAaFdjcLkJLpWft1BeZKqwR0uhhNGoKwlUaPtVb4LxCSQ++erHapRak9kWGj+FCA==", + "dev": true, + "dependencies": { + "git-up": "^7.0.0" } }, - "node_modules/gulp-cli/node_modules/strip-ansi": { - "version": "3.0.1", + "node_modules/gitconfiglocal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz", + "integrity": "sha512-spLUXeTAVHxDtKsJc8FkFVgFtMdEN9qPGpL23VfSHx4fP4+Ds097IXLvymbnDH8FnmxX5Nr9bPw3A+AQ6mWEaQ==", "dev": true, - "license": "MIT", "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" + "ini": "^1.3.2" } }, - "node_modules/gulp-cli/node_modules/strip-bom": { - "version": "2.0.0", + "node_modules/glob": { + "version": "9.3.2", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "is-utf8": "^0.2.0" + "fs.realpath": "^1.0.0", + "minimatch": "^7.4.1", + "minipass": "^4.2.4", + "path-scurry": "^1.6.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/gulp-cli/node_modules/wrap-ansi": { - "version": "2.1.0", + "node_modules/glob-parent": { + "version": "6.0.2", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" + "is-glob": "^4.0.3" }, "engines": { - "node": ">=0.10.0" + "node": ">=10.13.0" } }, - "node_modules/gulp-cli/node_modules/y18n": { - "version": "3.2.2", - "dev": true, - "license": "ISC" - }, - "node_modules/gulp-cli/node_modules/yargs": { - "version": "7.1.2", + "node_modules/glob/node_modules/brace-expansion": { + "version": "2.0.1", "dev": true, "license": "MIT", "dependencies": { - "camelcase": "^3.0.0", - "cliui": "^3.2.0", - "decamelize": "^1.1.1", - "get-caller-file": "^1.0.1", - "os-locale": "^1.4.0", - "read-pkg-up": "^1.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^1.0.2", - "which-module": "^1.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^5.0.1" + "balanced-match": "^1.0.0" } }, - "node_modules/gulp-cli/node_modules/yargs-parser": { - "version": "5.0.1", + "node_modules/glob/node_modules/minimatch": { + "version": "7.4.3", "dev": true, "license": "ISC", "dependencies": { - "camelcase": "^3.0.0", - "object.assign": "^4.1.0" + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/gulp-jsdoc3": { - "version": "3.0.0", + "node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, - "license": "Apache-2.0", "dependencies": { - "ansi-colors": "^4.1.1", - "beeper": "^2.0.0", - "debug": "^4.1.1", - "fancy-log": "^1.3.3", - "ink-docstrap": "^1.3.2", - "jsdoc": "^3.6.3", - "map-stream": "0.0.7", - "tmp": "0.1.0" + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/gulp-replace": { - "version": "1.1.4", + "node_modules/globalyzer": { + "version": "0.1.0", + "dev": true, + "license": "MIT" + }, + "node_modules/globby": { + "version": "11.1.0", "dev": true, "license": "MIT", "dependencies": { - "@types/node": "*", - "@types/vinyl": "^2.0.4", - "istextorbinary": "^3.0.0", - "replacestream": "^4.0.3", - "yargs-parser": ">=5.0.0-security.0" + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/gulplog": { - "version": "1.0.0", + "node_modules/globrex": { + "version": "0.1.2", "dev": true, - "license": "MIT", - "dependencies": { - "glogg": "^1.0.0" - }, + "license": "MIT" + }, + "node_modules/glossy": { + "version": "0.1.7", + "optional": true, "engines": { - "node": ">= 0.10" + "node": ">= 0.2.5" } }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "license": "ISC" + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, "node_modules/handlebars": { "version": "4.7.7", "dev": true, @@ -8997,26 +7109,6 @@ "uglify-js": "^3.1.4" } }, - "node_modules/har-schema": { - "version": "2.0.0", - "license": "ISC", - "optional": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/har-validator": { - "version": "5.1.5", - "license": "MIT", - "optional": true, - "dependencies": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/hard-rejection": { "version": "2.1.0", "dev": true, @@ -9043,68 +7135,22 @@ "node": ">=8" } }, - "node_modules/has-property-descriptors": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.1.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/has-unicode": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", "dev": true }, - "node_modules/has-value": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values/node_modules/kind-of": { - "version": "4.0.0", + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "dev": true, - "license": "MIT", "dependencies": { - "is-buffer": "^1.1.5" + "function-bind": "^1.1.2" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, "node_modules/he": { @@ -9115,17 +7161,6 @@ "he": "bin/he" } }, - "node_modules/homedir-polyfill": { - "version": "1.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "parse-passwd": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/hosted-git-info": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", @@ -9150,17 +7185,6 @@ "node": ">=10" } }, - "node_modules/htmlparser2": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^3.0.0", - "domutils": "^2.0.0", - "entities": "^2.0.0" - } - }, "node_modules/http-cache-semantics": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", @@ -9181,20 +7205,6 @@ "node": ">= 6" } }, - "node_modules/http-signature": { - "version": "1.2.0", - "license": "MIT", - "optional": true, - "dependencies": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - }, - "engines": { - "node": ">=0.8", - "npm": ">=1.3.7" - } - }, "node_modules/https-proxy-agent": { "version": "5.0.1", "license": "MIT", @@ -9442,15 +7452,6 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/ink-docstrap": { - "version": "1.3.2", - "dev": true, - "license": "MIT", - "dependencies": { - "moment": "^2.14.1", - "sanitize-html": "^1.13.0" - } - }, "node_modules/inquirer": { "version": "8.2.5", "dev": true, @@ -9476,38 +7477,6 @@ "node": ">=12.0.0" } }, - "node_modules/inspect-with-kind": { - "version": "1.0.5", - "dev": true, - "license": "ISC", - "dependencies": { - "kind-of": "^6.0.2" - } - }, - "node_modules/inspect-with-kind/node_modules/kind-of": { - "version": "6.0.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/interpret": { - "version": "1.4.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/invert-kv": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/iobroker.js-controller": { "resolved": "packages/controller", "link": true @@ -9552,70 +7521,20 @@ "node_modules/irregular-plurals": { "version": "3.5.0", "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is": { - "version": "3.3.0", - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/is-absolute": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "is-relative": "^1.0.0", - "is-windows": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "dev": true, - "license": "MIT", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "dev": true, - "license": "MIT", - "dependencies": { - "is-buffer": "^1.1.5" - }, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "dev": true, - "license": "MIT" - }, - "node_modules/is-binary-path": { - "version": "1.0.1", - "dev": true, + "node_modules/is": { + "version": "3.3.0", "license": "MIT", - "dependencies": { - "binary-extensions": "^1.0.0" - }, "engines": { - "node": ">=0.10.0" + "node": "*" } }, - "node_modules/is-buffer": { - "version": "1.1.6", + "node_modules/is-arrayish": { + "version": "0.2.1", "dev": true, "license": "MIT" }, @@ -9647,51 +7566,17 @@ } }, "node_modules/is-core-module": { - "version": "2.11.0", + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", "dev": true, - "license": "MIT", "dependencies": { - "has": "^1.0.3" + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-data-descriptor": { - "version": "0.1.4", - "dev": true, - "license": "MIT", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "dev": true, - "license": "MIT", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-descriptor": { - "version": "0.1.6", - "dev": true, - "license": "MIT", - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-docker": { "version": "2.2.1", "dev": true, @@ -9706,14 +7591,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-extendable": { - "version": "0.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-extglob": { "version": "2.1.1", "license": "MIT", @@ -9752,36 +7629,6 @@ "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", "dev": true }, - "node_modules/is-negated-glob": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-number": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "dev": true, - "license": "MIT", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-obj": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", @@ -9815,17 +7662,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-relative": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "is-unc-path": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-ssh": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/is-ssh/-/is-ssh-1.4.0.tgz", @@ -9857,22 +7693,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "license": "MIT", - "optional": true - }, - "node_modules/is-unc-path": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "unc-path-regex": "^0.1.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-unicode-supported": { "version": "0.1.0", "dev": true, @@ -9884,27 +7704,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-utf8": { - "version": "0.2.1", - "dev": true, - "license": "MIT" - }, - "node_modules/is-valid-glob": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-windows": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-wsl": { "version": "2.2.0", "dev": true, @@ -9936,21 +7735,6 @@ "version": "0.1.2", "license": "MIT" }, - "node_modules/istextorbinary": { - "version": "3.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "binaryextensions": "^2.2.0", - "textextensions": "^3.2.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://bevry.me/fund" - } - }, "node_modules/jackspeak": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.2.2.tgz", @@ -10038,47 +7822,6 @@ "dev": true, "license": "Python-2.0" }, - "node_modules/js2xmlparser": { - "version": "4.0.2", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "xmlcreate": "^2.0.4" - } - }, - "node_modules/jsbn": { - "version": "0.1.1", - "license": "MIT", - "optional": true - }, - "node_modules/jsdoc": { - "version": "3.6.11", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@babel/parser": "^7.9.4", - "@types/markdown-it": "^12.2.3", - "bluebird": "^3.7.2", - "catharsis": "^0.9.0", - "escape-string-regexp": "^2.0.0", - "js2xmlparser": "^4.0.2", - "klaw": "^3.0.0", - "markdown-it": "^12.3.2", - "markdown-it-anchor": "^8.4.1", - "marked": "^4.0.10", - "mkdirp": "^1.0.4", - "requizzle": "^0.2.3", - "strip-json-comments": "^3.1.0", - "taffydb": "2.6.2", - "underscore": "~1.13.2" - }, - "bin": { - "jsdoc": "jsdoc.js" - }, - "engines": { - "node": ">=12.0.0" - } - }, "node_modules/jsdoc-type-pratt-parser": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.0.0.tgz", @@ -10088,24 +7831,16 @@ "node": ">=12.0.0" } }, - "node_modules/jsdoc/node_modules/escape-string-regexp": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/jsdoc/node_modules/marked": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz", - "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==", + "node_modules/jsesc": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", + "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", "dev": true, "bin": { - "marked": "bin/marked.js" + "jsesc": "bin/jsesc" }, "engines": { - "node": ">= 12" + "node": ">=6" } }, "node_modules/json-parse-better-errors": { @@ -10123,14 +7858,9 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/json-schema": { - "version": "0.4.0", - "license": "(AFL-2.1 OR BSD-3-Clause)", - "optional": true - }, "node_modules/json-schema-traverse": { "version": "0.4.1", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/json-stable-stringify-without-jsonify": { @@ -10140,7 +7870,7 @@ }, "node_modules/json-stringify-safe": { "version": "5.0.1", - "devOptional": true, + "dev": true, "license": "ISC" }, "node_modules/json5": { @@ -10207,167 +7937,53 @@ "npm": ">=6" } }, - "node_modules/jsprim": { - "version": "1.4.2", - "license": "MIT", - "optional": true, - "dependencies": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.4.0", - "verror": "1.10.0" - }, - "engines": { - "node": ">=0.6.0" - } - }, "node_modules/jszip": { - "version": "3.10.1", - "license": "(MIT OR GPL-3.0-or-later)", - "dependencies": { - "lie": "~3.3.0", - "pako": "~1.0.2", - "readable-stream": "~2.3.6", - "setimmediate": "^1.0.5" - } - }, - "node_modules/junk": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/just-debounce": { - "version": "1.1.0", - "dev": true, - "license": "MIT" - }, - "node_modules/just-extend": { - "version": "4.2.1", - "dev": true, - "license": "MIT" - }, - "node_modules/jwa": { - "version": "1.4.1", - "license": "MIT", - "dependencies": { - "buffer-equal-constant-time": "1.0.1", - "ecdsa-sig-formatter": "1.0.11", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/jws": { - "version": "3.2.2", - "license": "MIT", - "dependencies": { - "jwa": "^1.4.1", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/keypairs": { - "version": "1.2.14", - "license": "MPL-2.0", - "optional": true, - "dependencies": { - "eckles": "^1.4.1", - "rasha": "^1.2.4" - }, - "bin": { - "keypairs-install": "bin/keypairs.js" - } - }, - "node_modules/kind-of": { - "version": "5.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/klaw": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.1.9" - } - }, - "node_modules/kuler": { - "version": "2.0.0", - "license": "MIT" - }, - "node_modules/last-run": { - "version": "1.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "default-resolution": "^2.0.0", - "es6-weak-map": "^2.0.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/lazystream": { - "version": "1.0.1", - "dev": true, - "license": "MIT", + "version": "3.10.1", + "license": "(MIT OR GPL-3.0-or-later)", "dependencies": { - "readable-stream": "^2.0.5" - }, - "engines": { - "node": ">= 0.6.3" + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "setimmediate": "^1.0.5" } }, - "node_modules/lcid": { - "version": "1.0.0", + "node_modules/junk": { + "version": "4.0.0", "dev": true, "license": "MIT", - "dependencies": { - "invert-kv": "^1.0.0" - }, "engines": { - "node": ">=0.10.0" + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/le-acme-core": { - "version": "2.1.4", - "license": "MPL-2.0", - "optional": true, - "dependencies": { - "request": "^2.74.0", - "rsa-compat": "^1.3.2" - } + "node_modules/just-extend": { + "version": "4.2.1", + "dev": true, + "license": "MIT" }, - "node_modules/le-challenge-fs": { - "version": "2.0.9", - "license": "MPL-2.0", - "optional": true, + "node_modules/jwa": { + "version": "1.4.1", + "license": "MIT", "dependencies": { - "@root/mkdirp": "^1.0.0" + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" } }, - "node_modules/le-sni-auto": { - "version": "2.1.9", - "license": "(MIT OR Apache-2.0)", - "optional": true - }, - "node_modules/lead": { - "version": "1.0.0", - "dev": true, + "node_modules/jws": { + "version": "3.2.2", "license": "MIT", "dependencies": { - "flush-write-stream": "^1.0.2" - }, - "engines": { - "node": ">= 0.10" + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" } }, + "node_modules/kuler": { + "version": "2.0.0", + "license": "MIT" + }, "node_modules/lerna": { "version": "7.1.4", "resolved": "https://registry.npmjs.org/lerna/-/lerna-7.1.4.tgz", @@ -10816,35 +8432,6 @@ "immediate": "~3.0.5" } }, - "node_modules/liftoff": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "extend": "^3.0.0", - "findup-sync": "^3.0.0", - "fined": "^1.0.1", - "flagged-respawn": "^1.0.0", - "is-plain-object": "^2.0.4", - "object.map": "^1.0.0", - "rechoir": "^0.6.2", - "resolve": "^1.1.7" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/liftoff/node_modules/is-plain-object": { - "version": "2.0.4", - "dev": true, - "license": "MIT", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/lines-and-columns": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.3.tgz", @@ -10854,25 +8441,6 @@ "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } }, - "node_modules/linkify-it": { - "version": "3.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "uc.micro": "^1.0.1" - } - }, - "node_modules/load-from-cwd-or-npm": { - "version": "2.2.2", - "dev": true, - "license": "ISC", - "dependencies": { - "inspect-with-kind": "^1.0.4", - "npm-cli-dir": "^2.0.1", - "optional": "^0.1.4", - "resolve-from-npm": "^2.0.4" - } - }, "node_modules/load-json-file": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-6.2.0.tgz", @@ -10897,14 +8465,6 @@ "node": ">=8" } }, - "node_modules/load-request-from-cwd-or-npm": { - "version": "2.0.1", - "dev": true, - "license": "ISC", - "dependencies": { - "load-from-cwd-or-npm": "^2.2.1" - } - }, "node_modules/loadavg-windows": { "version": "1.1.1", "license": "MIT", @@ -11063,294 +8623,71 @@ "semver": "bin/semver.js" } }, - "node_modules/make-error": { - "version": "1.3.6", - "dev": true, - "license": "ISC" - }, - "node_modules/make-fetch-happen": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz", - "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==", - "dev": true, - "dependencies": { - "agentkeepalive": "^4.2.1", - "cacache": "^17.0.0", - "http-cache-semantics": "^4.1.1", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^7.7.1", - "minipass": "^5.0.0", - "minipass-fetch": "^3.0.0", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^7.0.0", - "ssri": "^10.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/make-fetch-happen/node_modules/minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/make-fetch-happen/node_modules/ssri": { - "version": "10.0.4", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.4.tgz", - "integrity": "sha512-12+IR2CB2C28MMAw0Ncqwj5QbTcs0nGIhgJzYWzDkb21vWmfNI83KS4f3Ci6GI98WreIfG7o9UXp3C0qbpA8nQ==", - "dev": true, - "dependencies": { - "minipass": "^5.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/make-iterator": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/make-iterator/node_modules/kind-of": { - "version": "6.0.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/map-cache": { - "version": "0.2.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/map-obj": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/map-stream": { - "version": "0.0.7", - "license": "MIT" - }, - "node_modules/map-visit": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "object-visit": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/markdown-it": { - "version": "12.3.2", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1", - "entities": "~2.1.0", - "linkify-it": "^3.0.1", - "mdurl": "^1.0.1", - "uc.micro": "^1.0.5" - }, - "bin": { - "markdown-it": "bin/markdown-it.js" - } - }, - "node_modules/markdown-it-anchor": { - "version": "8.6.7", - "dev": true, - "license": "Unlicense", - "peerDependencies": { - "@types/markdown-it": "*", - "markdown-it": "*" - } - }, - "node_modules/markdown-it/node_modules/argparse": { - "version": "2.0.1", - "dev": true, - "license": "Python-2.0" - }, - "node_modules/matchdep": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "findup-sync": "^2.0.0", - "micromatch": "^3.0.4", - "resolve": "^1.4.0", - "stack-trace": "0.0.10" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/matchdep/node_modules/define-property": { - "version": "2.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/matchdep/node_modules/extend-shallow": { - "version": "3.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/matchdep/node_modules/findup-sync": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "detect-file": "^1.0.0", - "is-glob": "^3.1.0", - "micromatch": "^3.0.4", - "resolve-dir": "^1.0.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/matchdep/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/matchdep/node_modules/is-data-descriptor": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/matchdep/node_modules/is-descriptor": { - "version": "1.0.2", + "node_modules/make-error": { + "version": "1.3.6", "dev": true, - "license": "MIT", - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } + "license": "ISC" }, - "node_modules/matchdep/node_modules/is-extendable": { - "version": "1.0.1", + "node_modules/make-fetch-happen": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz", + "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==", "dev": true, - "license": "MIT", "dependencies": { - "is-plain-object": "^2.0.4" + "agentkeepalive": "^4.2.1", + "cacache": "^17.0.0", + "http-cache-semantics": "^4.1.1", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^5.0.0", + "minipass-fetch": "^3.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^10.0.0" }, "engines": { - "node": ">=0.10.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/matchdep/node_modules/is-glob": { - "version": "3.1.0", + "node_modules/make-fetch-happen/node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", "dev": true, - "license": "MIT", - "dependencies": { - "is-extglob": "^2.1.0" - }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/matchdep/node_modules/is-plain-object": { - "version": "2.0.4", + "node_modules/make-fetch-happen/node_modules/ssri": { + "version": "10.0.4", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.4.tgz", + "integrity": "sha512-12+IR2CB2C28MMAw0Ncqwj5QbTcs0nGIhgJzYWzDkb21vWmfNI83KS4f3Ci6GI98WreIfG7o9UXp3C0qbpA8nQ==", "dev": true, - "license": "MIT", "dependencies": { - "isobject": "^3.0.1" + "minipass": "^5.0.0" }, "engines": { - "node": ">=0.10.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/matchdep/node_modules/kind-of": { - "version": "6.0.3", + "node_modules/map-obj": { + "version": "4.3.0", "dev": true, "license": "MIT", "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/matchdep/node_modules/micromatch": { - "version": "3.1.10", - "dev": true, - "license": "MIT", - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" + "node": ">=8" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/mdurl": { - "version": "1.0.1", - "dev": true, + "node_modules/map-stream": { + "version": "0.0.7", "license": "MIT" }, "node_modules/meow": { @@ -11748,40 +9085,6 @@ "node": ">=8" } }, - "node_modules/mixin-deep": { - "version": "1.3.2", - "dev": true, - "license": "MIT", - "dependencies": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/mixin-deep/node_modules/is-extendable": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/mixin-deep/node_modules/is-plain-object": { - "version": "2.0.4", - "dev": true, - "license": "MIT", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/mkdirp": { "version": "1.0.4", "license": "MIT", @@ -11793,9 +9096,10 @@ } }, "node_modules/mocha": { - "version": "10.2.0", + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.4.0.tgz", + "integrity": "sha512-eqhGB8JKapEYcC4ytX/xrzKforgEc3j1pGlAXVy3eRwrtAy5/nIfT1SvgGzfN0XZZxeLq0aQWkOUAmqIJiv+bA==", "dev": true, - "license": "MIT", "dependencies": { "ansi-colors": "4.1.1", "browser-stdout": "1.3.1", @@ -11804,13 +9108,12 @@ "diff": "5.0.0", "escape-string-regexp": "4.0.0", "find-up": "5.0.0", - "glob": "7.2.0", + "glob": "8.1.0", "he": "1.2.0", "js-yaml": "4.1.0", "log-symbols": "4.1.0", "minimatch": "5.0.1", "ms": "2.1.3", - "nanoid": "3.3.3", "serialize-javascript": "6.0.0", "strip-json-comments": "3.1.1", "supports-color": "8.1.1", @@ -11825,10 +9128,6 @@ }, "engines": { "node": ">= 14.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mochajs" } }, "node_modules/mocha/node_modules/ansi-colors": { @@ -11920,19 +9219,19 @@ } }, "node_modules/mocha/node_modules/glob": { - "version": "7.2.0", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", "dev": true, - "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "minimatch": "^5.0.1", + "once": "^1.3.0" }, "engines": { - "node": "*" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -11949,17 +9248,6 @@ "node": ">= 6" } }, - "node_modules/mocha/node_modules/glob/node_modules/minimatch": { - "version": "3.1.2", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, "node_modules/mocha/node_modules/is-binary-path": { "version": "2.1.0", "dev": true, @@ -12112,14 +9400,6 @@ "node": ">=8" } }, - "node_modules/mute-stdout": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.10" - } - }, "node_modules/mute-stream": { "version": "0.0.8", "license": "ISC" @@ -12142,127 +9422,6 @@ "license": "MIT", "optional": true }, - "node_modules/nanoid": { - "version": "3.3.3", - "dev": true, - "license": "MIT", - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/nanomatch": { - "version": "1.2.13", - "dev": true, - "license": "MIT", - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nanomatch/node_modules/define-property": { - "version": "2.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nanomatch/node_modules/extend-shallow": { - "version": "3.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nanomatch/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nanomatch/node_modules/is-data-descriptor": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nanomatch/node_modules/is-descriptor": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nanomatch/node_modules/is-extendable": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nanomatch/node_modules/is-plain-object": { - "version": "2.0.4", - "dev": true, - "license": "MIT", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nanomatch/node_modules/kind-of": { - "version": "6.0.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/natural-compare": { "version": "1.4.0", "dev": true, @@ -12287,11 +9446,6 @@ "dev": true, "license": "MIT" }, - "node_modules/next-tick": { - "version": "1.1.0", - "dev": true, - "license": "ISC" - }, "node_modules/nise": { "version": "5.1.4", "dev": true, @@ -12407,6 +9561,12 @@ "integrity": "sha512-QNABxbrPa3qEIfrE6GOJ7BYIuignnJw7iQ2YPbc3Nla1HzRJjXzZOiikfF8m7eAMfichLt3M4VgLOetqgDmgGQ==", "dev": true }, + "node_modules/node-releases": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", + "dev": true + }, "node_modules/node-schedule": { "version": "2.1.1", "license": "MIT", @@ -12461,47 +9621,18 @@ }, "node_modules/normalize-path": { "version": "3.0.0", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/now-and-later": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "once": "^1.3.2" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/npm-bundled": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz", - "integrity": "sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==", - "dev": true, - "dependencies": { - "npm-normalize-package-bin": "^1.0.1" - } - }, - "node_modules/npm-cli-dir": { - "version": "2.0.2", - "dev": true, - "license": "ISC", - "dependencies": { - "npm-cli-path": "^2.0.1" + "license": "MIT", + "engines": { + "node": ">=0.10.0" } }, - "node_modules/npm-cli-path": { - "version": "2.0.5", + "node_modules/npm-bundled": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz", + "integrity": "sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==", "dev": true, - "license": "ISC", "dependencies": { - "executing-npm-path": "^0.1.0", - "real-executable-path": "^2.0.2", - "win-user-installed-npm-cli-path": "^2.0.2" + "npm-normalize-package-bin": "^1.0.1" } }, "node_modules/npm-install-checks": { @@ -12763,14 +9894,6 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/number-is-nan": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/nx": { "version": "16.6.0", "resolved": "https://registry.npmjs.org/nx/-/nx-16.6.0.tgz", @@ -12944,46 +10067,6 @@ "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", "dev": true }, - "node_modules/oauth-sign": { - "version": "0.9.0", - "license": "Apache-2.0", - "optional": true, - "engines": { - "node": "*" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy": { - "version": "0.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/kind-of": { - "version": "3.2.2", - "dev": true, - "license": "MIT", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/object-hash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", @@ -12992,91 +10075,6 @@ "node": ">= 6" } }, - "node_modules/object-keys": { - "version": "1.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object-visit": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object.assign": { - "version": "4.1.4", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.defaults": { - "version": "1.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "array-each": "^1.0.1", - "array-slice": "^1.0.0", - "for-own": "^1.0.0", - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object.map": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object.pick": { - "version": "1.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object.reduce": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/once": { "version": "1.4.0", "dev": true, @@ -13122,11 +10120,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/optional": { - "version": "0.1.4", - "dev": true, - "license": "MIT" - }, "node_modules/optionator": { "version": "0.9.3", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", @@ -13166,25 +10159,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/ordered-read-streams": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "readable-stream": "^2.0.1" - } - }, - "node_modules/os-locale": { - "version": "1.4.0", - "dev": true, - "license": "MIT", - "dependencies": { - "lcid": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/os-tmpdir": { "version": "1.0.2", "dev": true, @@ -13493,19 +10467,6 @@ "node": ">=6" } }, - "node_modules/parse-filepath": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "is-absolute": "^1.0.0", - "map-cache": "^0.2.0", - "path-root": "^0.1.1" - }, - "engines": { - "node": ">=0.8" - } - }, "node_modules/parse-json": { "version": "5.2.0", "dev": true, @@ -13533,22 +10494,6 @@ "dev": true, "license": "MIT" }, - "node_modules/parse-node-version": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/parse-passwd": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/parse-path": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/parse-path/-/parse-path-7.0.0.tgz", @@ -13558,11 +10503,6 @@ "protocols": "^2.0.0" } }, - "node_modules/parse-srcset": { - "version": "1.0.2", - "dev": true, - "license": "MIT" - }, "node_modules/parse-url": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/parse-url/-/parse-url-8.1.0.tgz", @@ -13572,19 +10512,6 @@ "parse-path": "^7.0.0" } }, - "node_modules/pascalcase": { - "version": "0.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-dirname": { - "version": "1.0.2", - "dev": true, - "license": "MIT" - }, "node_modules/path-exists": { "version": "4.0.0", "dev": true, @@ -13613,25 +10540,6 @@ "dev": true, "license": "MIT" }, - "node_modules/path-root": { - "version": "0.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "path-root-regex": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-root-regex": { - "version": "0.1.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/path-scurry": { "version": "1.10.1", "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", @@ -13705,11 +10613,6 @@ "through": "~2.3" } }, - "node_modules/performance-now": { - "version": "2.1.0", - "license": "MIT", - "optional": true - }, "node_modules/picocolors": { "version": "1.0.0", "dev": true, @@ -13747,25 +10650,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/pinkie": { - "version": "2.0.4", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pinkie-promise": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "pinkie": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/pkg-dir": { "version": "4.2.0", "dev": true, @@ -13851,35 +10735,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/posix-character-classes": { - "version": "0.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss": { - "version": "7.0.39", + "node_modules/pluralize": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", + "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", "dev": true, - "license": "MIT", - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "node": ">=4" } }, - "node_modules/postcss/node_modules/picocolors": { - "version": "0.2.1", - "dev": true, - "license": "ISC" - }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -13941,14 +10805,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/pretty-hrtime": { - "version": "1.0.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/proc-log": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", @@ -14079,44 +10935,12 @@ "version": "1.1.0", "license": "MIT" }, - "node_modules/psl": { - "version": "1.9.0", - "license": "MIT", - "optional": true - }, - "node_modules/pump": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/pumpify": { - "version": "1.5.1", - "dev": true, - "license": "MIT", - "dependencies": { - "duplexify": "^3.6.0", - "inherits": "^2.0.3", - "pump": "^2.0.0" - } - }, "node_modules/punycode": { "version": "2.3.0", - "devOptional": true, + "dev": true, "license": "MIT", "engines": { - "node": ">=6" - } - }, - "node_modules/qs": { - "version": "6.5.3", - "license": "BSD-3-Clause", - "optional": true, - "engines": { - "node": ">=0.6" + "node": ">=6" } }, "node_modules/queue-lit": { @@ -14166,14 +10990,6 @@ "safe-buffer": "^5.1.0" } }, - "node_modules/rasha": { - "version": "1.2.5", - "license": "MPL-2.0", - "optional": true, - "bin": { - "rasha": "bin/rasha.js" - } - }, "node_modules/react-is": { "version": "18.2.0", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", @@ -14523,131 +11339,6 @@ "version": "5.1.2", "license": "MIT" }, - "node_modules/readdirp": { - "version": "2.2.1", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/readdirp/node_modules/define-property": { - "version": "2.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/readdirp/node_modules/extend-shallow": { - "version": "3.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/readdirp/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/readdirp/node_modules/is-data-descriptor": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/readdirp/node_modules/is-descriptor": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/readdirp/node_modules/is-extendable": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/readdirp/node_modules/is-plain-object": { - "version": "2.0.4", - "dev": true, - "license": "MIT", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/readdirp/node_modules/kind-of": { - "version": "6.0.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/readdirp/node_modules/micromatch": { - "version": "3.1.10", - "dev": true, - "license": "MIT", - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/readline": { "version": "1.3.0", "license": "BSD" @@ -14659,45 +11350,6 @@ "node": ">= 0.8.0" } }, - "node_modules/real-executable-path": { - "version": "2.0.2", - "dev": true, - "license": "ISC", - "dependencies": { - "real-executable-path-callback": "^2.1.2" - } - }, - "node_modules/real-executable-path-callback": { - "version": "2.1.2", - "dev": true, - "license": "ISC", - "dependencies": { - "inspect-with-kind": "^1.0.4", - "is-plain-obj": "^1.1.0", - "which": "^1.3.0" - } - }, - "node_modules/real-executable-path-callback/node_modules/which": { - "version": "1.3.1", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/rechoir": { - "version": "0.6.2", - "dev": true, - "dependencies": { - "resolve": "^1.1.6" - }, - "engines": { - "node": ">= 0.10" - } - }, "node_modules/redent": { "version": "4.0.0", "dev": true, @@ -14713,14 +11365,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/redirect-https": { - "version": "1.3.1", - "license": "(MIT OR Apache-2.0)", - "optional": true, - "dependencies": { - "escape-html": "^1.0.3" - } - }, "node_modules/redis-commands": { "version": "1.7.0", "license": "MIT" @@ -14742,186 +11386,34 @@ "node": ">=4" } }, - "node_modules/regex-not": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/regex-not/node_modules/extend-shallow": { - "version": "3.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/regex-not/node_modules/is-extendable": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/regex-not/node_modules/is-plain-object": { - "version": "2.0.4", - "dev": true, - "license": "MIT", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/remove-bom-buffer": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "is-buffer": "^1.1.5", - "is-utf8": "^0.2.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/remove-bom-stream": { - "version": "1.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "remove-bom-buffer": "^3.0.0", - "safe-buffer": "^5.1.0", - "through2": "^2.0.3" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/remove-trailing-separator": { - "version": "1.1.0", - "dev": true, - "license": "ISC" - }, - "node_modules/repeat-element": { - "version": "1.1.4", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/repeat-string": { - "version": "1.6.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10" - } - }, - "node_modules/replace-ext": { - "version": "1.0.1", + "node_modules/regexp-tree": { + "version": "0.1.27", + "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.27.tgz", + "integrity": "sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==", "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.10" + "bin": { + "regexp-tree": "bin/regexp-tree" } }, - "node_modules/replace-homedir": { - "version": "1.0.0", + "node_modules/regjsparser": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.10.0.tgz", + "integrity": "sha512-qx+xQGZVsy55CH0a1hiVwHmqjLryfh7wQyF5HO07XJ9f7dQMY/gPQHhlyDkIzJKC+x2fUCpCcUODUUUFrm7SHA==", "dev": true, - "license": "MIT", "dependencies": { - "homedir-polyfill": "^1.0.1", - "is-absolute": "^1.0.0", - "remove-trailing-separator": "^1.1.0" + "jsesc": "~0.5.0" }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/replacestream": { - "version": "4.0.3", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "escape-string-regexp": "^1.0.3", - "object-assign": "^4.0.1", - "readable-stream": "^2.0.2" + "bin": { + "regjsparser": "bin/parser" } }, - "node_modules/replacestream/node_modules/escape-string-regexp": { - "version": "1.0.5", + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/request": { - "version": "2.88.2", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/request/node_modules/form-data": { - "version": "2.3.3", - "license": "MIT", - "optional": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 0.12" - } - }, - "node_modules/request/node_modules/uuid": { - "version": "3.4.0", - "license": "MIT", - "optional": true, "bin": { - "uuid": "bin/uuid" + "jsesc": "bin/jsesc" } }, "node_modules/require-directory": { @@ -14931,25 +11423,13 @@ "node": ">=0.10.0" } }, - "node_modules/require-main-filename": { - "version": "1.0.1", - "dev": true, - "license": "ISC" - }, - "node_modules/requizzle": { - "version": "0.2.4", - "dev": true, - "license": "MIT", - "dependencies": { - "lodash": "^4.17.21" - } - }, "node_modules/resolve": { - "version": "1.22.1", + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "dev": true, - "license": "MIT", "dependencies": { - "is-core-module": "^2.9.0", + "is-core-module": "^2.13.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, @@ -14979,18 +11459,6 @@ "node": ">=8" } }, - "node_modules/resolve-dir": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "expand-tilde": "^2.0.0", - "global-modules": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/resolve-from": { "version": "4.0.0", "dev": true, @@ -14999,32 +11467,6 @@ "node": ">=4" } }, - "node_modules/resolve-from-npm": { - "version": "2.0.4", - "dev": true, - "license": "ISC", - "dependencies": { - "inspect-with-kind": "^1.0.3", - "npm-cli-dir": "^2.0.2", - "resolve-from": "^4.0.0" - } - }, - "node_modules/resolve-options": { - "version": "1.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "value-or-function": "^3.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/resolve-url": { - "version": "0.2.1", - "dev": true, - "license": "MIT" - }, "node_modules/respjs": { "version": "4.2.0", "engines": { @@ -15043,14 +11485,6 @@ "node": ">=8" } }, - "node_modules/ret": { - "version": "0.1.15", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.12" - } - }, "node_modules/retry": { "version": "0.12.0", "license": "MIT", @@ -15107,32 +11541,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/rsa-compat": { - "version": "1.9.4", - "license": "MPL-2.0", - "optional": true, - "dependencies": { - "keypairs": "^1.2.14" - }, - "bin": { - "rsa-keygen-js": "bin/rsa-keygen.js" - }, - "engines": { - "node": ">=10.12" - }, - "optionalDependencies": { - "node-forge": "^0.7.6", - "ursa-optional": "^0.9.10" - } - }, - "node_modules/rsa-compat/node_modules/node-forge": { - "version": "0.7.6", - "license": "(BSD-3-Clause OR GPL-2.0)", - "optional": true, - "engines": { - "node": "*" - } - }, "node_modules/run-async": { "version": "2.4.1", "dev": true, @@ -15194,19 +11602,6 @@ ], "license": "MIT" }, - "node_modules/safe-regex": { - "version": "1.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "ret": "~0.1.10" - } - }, - "node_modules/safe-replace": { - "version": "1.1.0", - "license": "(MIT OR Apache-2.0)", - "optional": true - }, "node_modules/safe-stable-stringify": { "version": "2.4.3", "license": "MIT", @@ -15216,19 +11611,8 @@ }, "node_modules/safer-buffer": { "version": "2.1.2", - "devOptional": true, - "license": "MIT" - }, - "node_modules/sanitize-html": { - "version": "1.27.5", "dev": true, - "license": "MIT", - "dependencies": { - "htmlparser2": "^4.1.0", - "lodash": "^4.17.15", - "parse-srcset": "^1.0.2", - "postcss": "^7.0.27" - } + "license": "MIT" }, "node_modules/semver": { "version": "7.5.4", @@ -15244,17 +11628,6 @@ "node": ">=10" } }, - "node_modules/semver-greatest-satisfied-range": { - "version": "1.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "sver-compat": "^1.5.0" - }, - "engines": { - "node": ">= 0.10" - } - }, "node_modules/semver/node_modules/lru-cache": { "version": "6.0.0", "license": "ISC", @@ -15283,31 +11656,6 @@ "dev": true, "license": "ISC" }, - "node_modules/set-value": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/set-value/node_modules/is-plain-object": { - "version": "2.0.4", - "dev": true, - "license": "MIT", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/setimmediate": { "version": "1.0.5", "license": "MIT" @@ -15447,134 +11795,6 @@ "npm": ">= 3.0.0" } }, - "node_modules/snapdragon": { - "version": "0.8.2", - "dev": true, - "license": "MIT", - "dependencies": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node": { - "version": "2.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/define-property": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/is-data-descriptor": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/is-descriptor": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/kind-of": { - "version": "6.0.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-util": { - "version": "3.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "kind-of": "^3.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-util/node_modules/kind-of": { - "version": "3.2.2", - "dev": true, - "license": "MIT", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/debug": { - "version": "2.6.9", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/snapdragon/node_modules/ms": { - "version": "2.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/snapdragon/node_modules/source-map": { - "version": "0.5.7", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/socks": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", @@ -15626,18 +11846,6 @@ "node": ">=0.10.0" } }, - "node_modules/source-map-resolve": { - "version": "0.5.3", - "dev": true, - "license": "MIT", - "dependencies": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, "node_modules/source-map-support": { "version": "0.5.21", "license": "MIT", @@ -15646,19 +11854,6 @@ "source-map": "^0.6.0" } }, - "node_modules/source-map-url": { - "version": "0.4.1", - "dev": true, - "license": "MIT" - }, - "node_modules/sparkles": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.10" - } - }, "node_modules/spdx-correct": { "version": "3.2.0", "dev": true, @@ -15697,51 +11892,6 @@ "node": "*" } }, - "node_modules/split-string": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "extend-shallow": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/split-string/node_modules/extend-shallow": { - "version": "3.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/split-string/node_modules/is-extendable": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/split-string/node_modules/is-plain-object": { - "version": "2.0.4", - "dev": true, - "license": "MIT", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/split2": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", @@ -15762,38 +11912,14 @@ "util-deprecate": "^1.0.1" }, "engines": { - "node": ">= 6" - } - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/sshpk": { - "version": "1.17.0", - "license": "MIT", - "optional": true, - "dependencies": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - }, - "bin": { - "sshpk-conv": "bin/sshpk-conv", - "sshpk-sign": "bin/sshpk-sign", - "sshpk-verify": "bin/sshpk-verify" - }, - "engines": { - "node": ">=0.10.0" + "node": ">= 6" } }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "dev": true, + "license": "BSD-3-Clause" + }, "node_modules/ssri": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", @@ -15829,18 +11955,6 @@ "version": "2.1.0", "license": "MIT" }, - "node_modules/static-extend": { - "version": "0.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/stream-combiner": { "version": "0.2.2", "license": "MIT", @@ -15849,16 +11963,6 @@ "through": "~2.3.4" } }, - "node_modules/stream-exhaust": { - "version": "1.0.2", - "dev": true, - "license": "MIT" - }, - "node_modules/stream-shift": { - "version": "1.0.1", - "dev": true, - "license": "MIT" - }, "node_modules/string_decoder": { "version": "1.1.1", "license": "MIT", @@ -16021,15 +12125,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/sver-compat": { - "version": "1.5.0", - "dev": true, - "license": "MIT", - "dependencies": { - "es6-iterator": "^2.0.1", - "es6-symbol": "^3.1.1" - } - }, "node_modules/synckit": { "version": "0.8.8", "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.8.tgz", @@ -16050,366 +12145,121 @@ "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true - }, - "node_modules/taffydb": { - "version": "2.6.2", - "dev": true - }, - "node_modules/tar": { - "version": "6.1.13", - "license": "ISC", - "dependencies": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^4.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", - "dev": true, - "dependencies": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/tar-stream/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/tar/node_modules/fs-minipass": { - "version": "2.1.0", - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/tar/node_modules/fs-minipass/node_modules/minipass": { - "version": "3.3.6", - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/temp-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", - "integrity": "sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/text-extensions": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz", - "integrity": "sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==", - "dev": true, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/text-hex": { - "version": "1.0.0", - "license": "MIT" - }, - "node_modules/text-table": { - "version": "0.2.0", - "dev": true, - "license": "MIT" - }, - "node_modules/textextensions": { - "version": "3.3.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://bevry.me/fund" - } - }, - "node_modules/through": { - "version": "2.3.8", - "license": "MIT" - }, - "node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "node_modules/through2-filter": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "through2": "~2.0.0", - "xtend": "~4.0.0" - } - }, - "node_modules/time-stamp": { - "version": "1.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/tiny-glob": { - "version": "0.2.9", - "dev": true, - "license": "MIT", - "dependencies": { - "globalyzer": "0.1.0", - "globrex": "^0.1.2" - } - }, - "node_modules/tmp": { - "version": "0.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "rimraf": "^2.6.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/tmp/node_modules/glob": { - "version": "7.2.3", - "dev": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/tmp/node_modules/rimraf": { - "version": "2.7.1", - "dev": true, - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/to-absolute-glob": { - "version": "2.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "is-absolute": "^1.0.0", - "is-negated-glob": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-object-path": { - "version": "0.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-object-path/node_modules/kind-of": { - "version": "3.2.2", - "dev": true, - "license": "MIT", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-regex": { - "version": "3.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-regex-range": { - "version": "2.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-regex/node_modules/define-property": { - "version": "2.0.2", - "dev": true, - "license": "MIT", + "dev": true + }, + "node_modules/tar": { + "version": "6.1.13", + "license": "ISC", "dependencies": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^4.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/to-regex/node_modules/extend-shallow": { - "version": "3.0.2", + "node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", "dev": true, - "license": "MIT", "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/to-regex/node_modules/is-accessor-descriptor": { - "version": "1.0.0", + "node_modules/tar-stream/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "dev": true, - "license": "MIT", "dependencies": { - "kind-of": "^6.0.0" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">= 6" } }, - "node_modules/to-regex/node_modules/is-data-descriptor": { - "version": "1.0.0", - "dev": true, - "license": "MIT", + "node_modules/tar/node_modules/fs-minipass": { + "version": "2.1.0", + "license": "ISC", "dependencies": { - "kind-of": "^6.0.0" + "minipass": "^3.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 8" } }, - "node_modules/to-regex/node_modules/is-descriptor": { - "version": "1.0.2", - "dev": true, - "license": "MIT", + "node_modules/tar/node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", + "license": "ISC", "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "yallist": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/to-regex/node_modules/is-extendable": { - "version": "1.0.1", + "node_modules/temp-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", + "integrity": "sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==", "dev": true, - "license": "MIT", - "dependencies": { - "is-plain-object": "^2.0.4" - }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/to-regex/node_modules/is-plain-object": { - "version": "2.0.4", + "node_modules/text-extensions": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz", + "integrity": "sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==", "dev": true, - "license": "MIT", - "dependencies": { - "isobject": "^3.0.1" - }, "engines": { - "node": ">=0.10.0" + "node": ">=0.10" } }, - "node_modules/to-regex/node_modules/kind-of": { - "version": "6.0.3", + "node_modules/text-hex": { + "version": "1.0.0", + "license": "MIT" + }, + "node_modules/text-table": { + "version": "0.2.0", "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } + "license": "MIT" }, - "node_modules/to-through": { - "version": "2.0.0", + "node_modules/through": { + "version": "2.3.8", + "license": "MIT" + }, + "node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", "dev": true, - "license": "MIT", "dependencies": { - "through2": "^2.0.3" - }, - "engines": { - "node": ">= 0.10" + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" } }, - "node_modules/tough-cookie": { - "version": "2.5.0", - "license": "BSD-3-Clause", - "optional": true, + "node_modules/tiny-glob": { + "version": "0.2.9", + "dev": true, + "license": "MIT", "dependencies": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=0.8" + "globalyzer": "0.1.0", + "globrex": "^0.1.2" } }, "node_modules/tr46": { @@ -17032,27 +12882,6 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/tunnel-agent": { - "version": "0.6.0", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": "*" - } - }, - "node_modules/tweetnacl": { - "version": "0.14.5", - "license": "Unlicense", - "optional": true - }, - "node_modules/type": { - "version": "1.2.0", - "dev": true, - "license": "ISC" - }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -17181,11 +13010,6 @@ "node": ">=14.17" } }, - "node_modules/uc.micro": { - "version": "1.0.6", - "dev": true, - "license": "MIT" - }, "node_modules/uglify-js": { "version": "3.17.4", "dev": true, @@ -17198,66 +13022,6 @@ "node": ">=0.8.0" } }, - "node_modules/unc-path-regex": { - "version": "0.1.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/underscore": { - "version": "1.13.6", - "dev": true, - "license": "MIT" - }, - "node_modules/undertaker": { - "version": "1.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "arr-flatten": "^1.0.1", - "arr-map": "^2.0.0", - "bach": "^1.0.0", - "collection-map": "^1.0.0", - "es6-weak-map": "^2.0.1", - "fast-levenshtein": "^1.0.0", - "last-run": "^1.1.0", - "object.defaults": "^1.0.0", - "object.reduce": "^1.0.0", - "undertaker-registry": "^1.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/undertaker-registry": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/undertaker/node_modules/fast-levenshtein": { - "version": "1.1.4", - "dev": true, - "license": "MIT" - }, - "node_modules/union-value": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/unique-filename": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", @@ -17282,15 +13046,6 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/unique-stream": { - "version": "2.3.1", - "dev": true, - "license": "MIT", - "dependencies": { - "json-stable-stringify-without-jsonify": "^1.0.1", - "through2-filter": "^3.0.0" - } - }, "node_modules/universal-user-agent": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", @@ -17317,93 +13072,44 @@ "node": ">=0.10.48" } }, - "node_modules/unset-value": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-value": { - "version": "0.3.1", + "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, - "license": "MIT", + "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": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" + "escalade": "^3.1.1", + "picocolors": "^1.0.0" }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "isarray": "1.0.0" + "bin": { + "update-browserslist-db": "cli.js" }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-values": { - "version": "0.1.4", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/upath": { - "version": "1.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4", - "yarn": "*" + "peerDependencies": { + "browserslist": ">= 4.21.0" } }, "node_modules/uri-js": { "version": "4.4.1", - "devOptional": true, + "dev": true, "license": "BSD-2-Clause", "dependencies": { "punycode": "^2.1.0" } }, - "node_modules/urix": { - "version": "0.1.0", - "dev": true, - "license": "MIT" - }, - "node_modules/ursa-optional": { - "version": "0.9.10", - "hasInstallScript": true, - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "bindings": "^1.3.0", - "nan": "^2.11.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/use": { - "version": "3.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/util-deprecate": { "version": "1.0.2", "license": "MIT" @@ -17424,20 +13130,9 @@ "dev": true }, "node_modules/v8-compile-cache-lib": { - "version": "3.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/v8flags": { - "version": "3.2.0", + "version": "3.0.1", "dev": true, - "license": "MIT", - "dependencies": { - "homedir-polyfill": "^1.0.1" - }, - "engines": { - "node": ">= 0.10" - } + "license": "MIT" }, "node_modules/validate-npm-package-license": { "version": "3.0.4", @@ -17469,103 +13164,6 @@ "node": ">= 0.10" } }, - "node_modules/value-or-function": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/verror": { - "version": "1.10.0", - "engines": [ - "node >=0.6.0" - ], - "license": "MIT", - "optional": true, - "dependencies": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "node_modules/verror/node_modules/core-util-is": { - "version": "1.0.2", - "license": "MIT", - "optional": true - }, - "node_modules/vinyl": { - "version": "2.2.1", - "dev": true, - "license": "MIT", - "dependencies": { - "clone": "^2.1.1", - "clone-buffer": "^1.0.0", - "clone-stats": "^1.0.0", - "cloneable-readable": "^1.0.0", - "remove-trailing-separator": "^1.0.1", - "replace-ext": "^1.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/vinyl-fs": { - "version": "3.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "fs-mkdirp-stream": "^1.0.0", - "glob-stream": "^6.1.0", - "graceful-fs": "^4.0.0", - "is-valid-glob": "^1.0.0", - "lazystream": "^1.0.0", - "lead": "^1.0.0", - "object.assign": "^4.0.4", - "pumpify": "^1.3.5", - "readable-stream": "^2.3.3", - "remove-bom-buffer": "^3.0.0", - "remove-bom-stream": "^1.2.0", - "resolve-options": "^1.1.0", - "through2": "^2.0.0", - "to-through": "^2.0.0", - "value-or-function": "^3.0.0", - "vinyl": "^2.0.0", - "vinyl-sourcemap": "^1.1.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/vinyl-sourcemap": { - "version": "1.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "append-buffer": "^1.0.2", - "convert-source-map": "^1.5.0", - "graceful-fs": "^4.1.6", - "normalize-path": "^2.1.1", - "now-and-later": "^2.0.0", - "remove-bom-buffer": "^3.0.0", - "vinyl": "^2.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/vinyl-sourcemap/node_modules/normalize-path": { - "version": "2.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "remove-trailing-separator": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/vscode-oniguruma": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz", @@ -17622,11 +13220,6 @@ "node": ">= 8" } }, - "node_modules/which-module": { - "version": "1.0.0", - "dev": true, - "license": "ISC" - }, "node_modules/wide-align": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", @@ -17636,11 +13229,6 @@ "string-width": "^1.0.2 || 2 || 3 || 4" } }, - "node_modules/win-user-installed-npm-cli-path": { - "version": "2.0.4", - "dev": true, - "license": "ISC" - }, "node_modules/winston": { "version": "3.8.2", "license": "MIT", @@ -17901,11 +13489,6 @@ "node": ">=6" } }, - "node_modules/xmlcreate": { - "version": "2.0.4", - "dev": true, - "license": "Apache-2.0" - }, "node_modules/xtend": { "version": "4.0.2", "dev": true, @@ -17926,8 +13509,9 @@ "license": "ISC" }, "node_modules/yargs": { - "version": "17.7.1", - "license": "MIT", + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", @@ -18012,14 +13596,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/yoctodelay": { - "version": "1.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/z-schema": { "version": "5.0.5", "resolved": "https://registry.npmjs.org/z-schema/-/z-schema-5.0.5.tgz", @@ -18063,7 +13639,8 @@ "node.extend": "^2.0.2", "pidusage": "^3.0.2", "readline": "^1.3.0", - "semver": "^7.5.2" + "semver": "^7.5.2", + "yargs": "^17.7.2" }, "engines": { "node": ">=18.0.0" @@ -18307,14 +13884,7 @@ "iobroker": "iobroker.js" }, "engines": { - "node": ">=16.4.0" - }, - "optionalDependencies": { - "greenlock": "^4.0.4", - "greenlock-express": "^4.0.3", - "le-acme-core": "^2.1.4", - "le-challenge-fs": "^2.0.9", - "le-sni-auto": "^2.1.9" + "node": ">=18.0.0" } }, "packages/db-base": { @@ -18787,7 +14357,9 @@ } }, "@babel/helper-validator-identifier": { - "version": "7.19.1", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", "dev": true }, "@babel/highlight": { @@ -18843,10 +14415,6 @@ } } }, - "@babel/parser": { - "version": "7.21.3", - "dev": true - }, "@colors/colors": { "version": "1.5.0" }, @@ -18929,26 +14497,19 @@ } }, "@eslint/js": { - "version": "8.56.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz", - "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==", + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", + "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", "dev": true }, - "@greenlock/manager": { - "version": "3.1.0", - "optional": true, - "requires": { - "greenlock-manager-fs": "^3.1.0" - } - }, "@humanwhocodes/config-array": { - "version": "0.11.13", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", - "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==", + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", "dev": true, "requires": { - "@humanwhocodes/object-schema": "^2.0.1", - "debug": "^4.1.1", + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", "minimatch": "^3.0.5" } }, @@ -18957,9 +14518,9 @@ "dev": true }, "@humanwhocodes/object-schema": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz", - "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", "dev": true }, "@hutson/parse-repository-url": { @@ -19052,7 +14613,8 @@ "node.extend": "^2.0.2", "pidusage": "^3.0.2", "readline": "^1.3.0", - "semver": "^7.5.2" + "semver": "^7.5.2", + "yargs": "^17.7.2" } }, "@iobroker/js-controller-cli": { @@ -19848,113 +15410,6 @@ "integrity": "sha512-Zwq5OCzuwJC2jwqmpEQt7Ds1DTi6BWSwoGkbb1n9pO3hzb35BoJELx7c0T23iDkBGkh2e7tvOtjF3tr3OaQHDQ==", "dev": true }, - "@root/acme": { - "version": "3.1.0", - "optional": true, - "requires": { - "@root/csr": "^0.8.1", - "@root/encoding": "^1.0.1", - "@root/keypairs": "^0.10.0", - "@root/pem": "^1.0.4", - "@root/request": "^1.6.1", - "@root/x509": "^0.7.2" - }, - "dependencies": { - "@root/keypairs": { - "version": "0.10.3", - "optional": true, - "requires": { - "@root/encoding": "^1.0.1", - "@root/pem": "^1.0.4", - "@root/x509": "^0.7.2" - } - } - } - }, - "@root/asn1": { - "version": "1.0.0", - "optional": true, - "requires": { - "@root/encoding": "^1.0.1" - } - }, - "@root/csr": { - "version": "0.8.1", - "optional": true, - "requires": { - "@root/asn1": "^1.0.0", - "@root/pem": "^1.0.4", - "@root/x509": "^0.7.2" - } - }, - "@root/encoding": { - "version": "1.0.1", - "optional": true - }, - "@root/greenlock": { - "version": "4.0.5", - "optional": true, - "requires": { - "@greenlock/manager": "^3.1.0", - "@root/acme": "^3.1.0", - "@root/csr": "^0.8.1", - "@root/keypairs": "^0.10.0", - "@root/mkdirp": "^1.0.0", - "@root/request": "^1.6.1", - "acme-http-01-standalone": "^3.0.5", - "cert-info": "^1.5.1", - "greenlock-store-fs": "^3.2.2", - "safe-replace": "^1.1.0" - }, - "dependencies": { - "@root/keypairs": { - "version": "0.10.3", - "optional": true, - "requires": { - "@root/encoding": "^1.0.1", - "@root/pem": "^1.0.4", - "@root/x509": "^0.7.2" - } - } - } - }, - "@root/greenlock-express": { - "version": "4.0.4", - "optional": true, - "requires": { - "@root/greenlock": "^4.0.5", - "redirect-https": "^1.3.1" - } - }, - "@root/keypairs": { - "version": "0.9.0", - "optional": true, - "requires": { - "@root/encoding": "^1.0.1", - "@root/pem": "^1.0.4", - "@root/x509": "^0.7.2" - } - }, - "@root/mkdirp": { - "version": "1.0.0", - "optional": true - }, - "@root/pem": { - "version": "1.0.4", - "optional": true - }, - "@root/request": { - "version": "1.9.2", - "optional": true - }, - "@root/x509": { - "version": "0.7.2", - "optional": true, - "requires": { - "@root/asn1": "^1.0.0", - "@root/encoding": "^1.0.1" - } - }, "@rushstack/node-core-library": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-4.0.2.tgz", @@ -20291,10 +15746,6 @@ "@types/node": "*" } }, - "@types/expect": { - "version": "1.20.4", - "dev": true - }, "@types/fs-extra": { "version": "11.0.1", "dev": true, @@ -20337,22 +15788,6 @@ "@types/node": "*" } }, - "@types/linkify-it": { - "version": "3.0.2", - "dev": true - }, - "@types/markdown-it": { - "version": "12.2.3", - "dev": true, - "requires": { - "@types/linkify-it": "*", - "@types/mdurl": "*" - } - }, - "@types/mdurl": { - "version": "1.0.2", - "dev": true - }, "@types/mime-types": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/@types/mime-types/-/mime-types-2.1.1.tgz", @@ -20370,7 +15805,9 @@ "dev": true }, "@types/mocha": { - "version": "10.0.1", + "version": "10.0.6", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.6.tgz", + "integrity": "sha512-dJvrYWxP/UcXm36Qn36fxhUKu8A/xMRXVT2cliFF1Z7UA9liG5Psj3ezNSZw+5puH2czDXRLcXQxf8JbJt0ejg==", "dev": true }, "@types/ms": { @@ -20455,14 +15892,6 @@ "@types/triple-beam": { "version": "1.3.2" }, - "@types/vinyl": { - "version": "2.0.7", - "dev": true, - "requires": { - "@types/expect": "^1.20.4", - "@types/node": "*" - } - }, "@types/winston-syslog": { "version": "2.4.0", "dev": true, @@ -20667,10 +16096,6 @@ "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", "dev": true }, - "acme-http-01-standalone": { - "version": "3.0.5", - "optional": true - }, "acorn": { "version": "8.10.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", @@ -20721,7 +16146,7 @@ }, "ajv": { "version": "6.12.6", - "devOptional": true, + "dev": true, "requires": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -20743,139 +16168,28 @@ "version": "4.3.2", "dev": true, "requires": { - "type-fest": "^0.21.3" - }, - "dependencies": { - "type-fest": { - "version": "0.21.3", - "dev": true - } - } - }, - "ansi-gray": { - "version": "0.1.1", - "dev": true, - "requires": { - "ansi-wrap": "0.1.0" - } - }, - "ansi-regex": { - "version": "5.0.1" - }, - "ansi-sequence-parser": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ansi-sequence-parser/-/ansi-sequence-parser-1.1.1.tgz", - "integrity": "sha512-vJXt3yiaUL4UU546s3rPXlsry/RnM730G1+HkpKE012AN0sx1eOrxSu95oKDIonskeLTijMgqWZ3uDEe3NFvyg==", - "dev": true - }, - "ansi-styles": { - "version": "4.3.0", - "requires": { - "color-convert": "^2.0.1" - } - }, - "ansi-wrap": { - "version": "0.1.0", - "dev": true - }, - "anymatch": { - "version": "2.0.0", - "dev": true, - "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - }, - "dependencies": { - "define-property": { - "version": "2.0.2", - "dev": true, - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - } - }, - "extend-shallow": { - "version": "3.0.2", - "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "is-extendable": { - "version": "1.0.1", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - }, - "is-plain-object": { - "version": "2.0.4", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "kind-of": { - "version": "6.0.3", + "type-fest": "^0.21.3" + }, + "dependencies": { + "type-fest": { + "version": "0.21.3", "dev": true - }, - "micromatch": { - "version": "3.1.10", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "normalize-path": { - "version": "2.1.1", - "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } } } }, - "append-buffer": { - "version": "1.0.2", - "dev": true, + "ansi-regex": { + "version": "5.0.1" + }, + "ansi-sequence-parser": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ansi-sequence-parser/-/ansi-sequence-parser-1.1.1.tgz", + "integrity": "sha512-vJXt3yiaUL4UU546s3rPXlsry/RnM730G1+HkpKE012AN0sx1eOrxSu95oKDIonskeLTijMgqWZ3uDEe3NFvyg==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", "requires": { - "buffer-equal": "^1.0.0" + "color-convert": "^2.0.1" } }, "aproba": { @@ -20884,10 +16198,6 @@ "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", "dev": true }, - "archy": { - "version": "1.0.0", - "dev": true - }, "are-docs-informative": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/are-docs-informative/-/are-docs-informative-0.0.2.tgz", @@ -20928,158 +16238,36 @@ "sprintf-js": "~1.0.2" } }, - "arr-diff": { - "version": "4.0.0", - "dev": true - }, - "arr-filter": { - "version": "1.1.2", - "dev": true, - "requires": { - "make-iterator": "^1.0.0" - } - }, - "arr-flatten": { - "version": "1.1.0", - "dev": true - }, - "arr-map": { - "version": "2.0.2", - "dev": true, - "requires": { - "make-iterator": "^1.0.0" - } - }, - "arr-union": { - "version": "3.1.0", - "dev": true - }, "array-differ": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz", "integrity": "sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==", "dev": true }, - "array-each": { - "version": "1.0.1", - "dev": true - }, "array-ify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", "integrity": "sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==", "dev": true }, - "array-initial": { - "version": "1.1.0", - "dev": true, - "requires": { - "array-slice": "^1.0.0", - "is-number": "^4.0.0" - }, - "dependencies": { - "is-number": { - "version": "4.0.0", - "dev": true - } - } - }, - "array-last": { - "version": "1.3.0", - "dev": true, - "requires": { - "is-number": "^4.0.0" - }, - "dependencies": { - "is-number": { - "version": "4.0.0", - "dev": true - } - } - }, - "array-slice": { - "version": "1.1.0", - "dev": true - }, - "array-sort": { - "version": "1.0.0", - "dev": true, - "requires": { - "default-compare": "^1.0.0", - "get-value": "^2.0.6", - "kind-of": "^5.0.2" - } - }, "array-union": { "version": "2.1.0", "dev": true }, - "array-unique": { - "version": "0.3.2", - "dev": true - }, "arrify": { "version": "3.0.0", "dev": true }, - "asn1": { - "version": "0.2.6", - "optional": true, - "requires": { - "safer-buffer": "~2.1.0" - } - }, - "assert-plus": { - "version": "1.0.0", - "optional": true - }, "assertion-error": { "version": "1.1.0", "dev": true }, - "assign-symbols": { - "version": "1.0.0", - "dev": true - }, "async": { "version": "3.2.4" }, - "async-done": { - "version": "1.3.2", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.2", - "process-nextick-args": "^2.0.0", - "stream-exhaust": "^1.0.1" - } - }, - "async-each": { - "version": "1.0.6", - "dev": true - }, - "async-settle": { - "version": "1.0.0", - "dev": true, - "requires": { - "async-done": "^1.2.2" - } - }, "asynckit": { "version": "0.4.0" }, - "atob": { - "version": "2.1.2", - "dev": true - }, - "aws-sign2": { - "version": "0.7.0", - "optional": true - }, - "aws4": { - "version": "1.12.0", - "optional": true - }, "axios": { "version": "1.6.2", "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.2.tgz", @@ -21090,106 +16278,20 @@ "proxy-from-env": "^1.1.0" } }, - "bach": { - "version": "1.2.0", - "dev": true, - "requires": { - "arr-filter": "^1.1.1", - "arr-flatten": "^1.0.1", - "arr-map": "^2.0.0", - "array-each": "^1.0.0", - "array-initial": "^1.0.0", - "array-last": "^1.1.1", - "async-done": "^1.2.2", - "async-settle": "^1.0.0", - "now-and-later": "^2.0.0" - } - }, "balanced-match": { "version": "1.0.2", "dev": true }, - "base": { - "version": "0.11.2", - "dev": true, - "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "kind-of": { - "version": "6.0.3", - "dev": true - } - } - }, "base64-js": { "version": "1.5.1", "dev": true }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "optional": true, - "requires": { - "tweetnacl": "^0.14.3" - } - }, - "beeper": { - "version": "2.1.0", - "dev": true, - "requires": { - "yoctodelay": "^1.1.0" - } - }, "before-after-hook": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz", "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==", "dev": true }, - "binary-extensions": { - "version": "1.13.1", - "dev": true - }, - "binaryextensions": { - "version": "2.3.0", - "dev": true - }, "bindings": { "version": "1.5.0", "optional": true, @@ -21217,10 +16319,6 @@ } } }, - "bluebird": { - "version": "3.7.2", - "dev": true - }, "brace-expansion": { "version": "1.1.11", "dev": true, @@ -21229,26 +16327,22 @@ "concat-map": "0.0.1" } }, - "braces": { - "version": "2.3.2", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - } - }, "browser-stdout": { "version": "1.3.1", "dev": true }, + "browserslist": { + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", + "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001587", + "electron-to-chromium": "^1.4.668", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" + } + }, "buffer": { "version": "5.7.1", "dev": true, @@ -21257,10 +16351,6 @@ "ieee754": "^1.1.13" } }, - "buffer-equal": { - "version": "1.0.1", - "dev": true - }, "buffer-equal-constant-time": { "version": "1.0.1" }, @@ -21387,29 +16477,6 @@ } } }, - "cache-base": { - "version": "1.0.1", - "dev": true, - "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - } - }, - "call-bind": { - "version": "1.0.2", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - } - }, "callsite": { "version": "1.0.0" }, @@ -21437,20 +16504,11 @@ } } }, - "caseless": { - "version": "0.12.0", - "optional": true - }, - "catharsis": { - "version": "0.9.0", - "dev": true, - "requires": { - "lodash": "^4.17.15" - } - }, - "cert-info": { - "version": "1.5.1", - "optional": true + "caniuse-lite": { + "version": "1.0.30001610", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001610.tgz", + "integrity": "sha512-QFutAY4NgaelojVMjY63o6XlZyORPaLfyMnsl3HgnWdJUcX6K0oaJymHjH8PT5Gk7sTm8rvC/c5COUQKXqmOMA==", + "dev": true }, "chai": { "version": "4.3.7", @@ -21488,43 +16546,6 @@ "version": "1.0.2", "dev": true }, - "chokidar": { - "version": "2.1.8", - "dev": true, - "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "fsevents": "^1.2.7", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - }, - "dependencies": { - "glob-parent": { - "version": "3.1.0", - "dev": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } - } - } - }, "chownr": { "version": "2.0.0" }, @@ -21533,14 +16554,21 @@ "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==" }, - "class-utils": { - "version": "0.3.6", + "clean-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clean-regexp/-/clean-regexp-1.0.0.tgz", + "integrity": "sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==", "dev": true, "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" + "escape-string-regexp": "^1.0.5" + }, + "dependencies": { + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + } } }, "clean-stack": { @@ -21580,14 +16608,6 @@ "wrap-ansi": "^7.0.0" } }, - "clone": { - "version": "2.1.2", - "dev": true - }, - "clone-buffer": { - "version": "1.0.0", - "dev": true - }, "clone-deep": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", @@ -21616,19 +16636,6 @@ } } }, - "clone-stats": { - "version": "1.0.0", - "dev": true - }, - "cloneable-readable": { - "version": "1.1.3", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "process-nextick-args": "^2.0.0", - "readable-stream": "^2.3.5" - } - }, "cluster-key-slot": { "version": "1.1.2" }, @@ -21638,27 +16645,6 @@ "integrity": "sha512-S9iI9y0nKR4hwEQsVWpyxld/6kRfGepGfzff83FcaiEBpmvlbA2nnGe7Cylgrx2f/p1P5S5wpRm9oL8z1PbS3Q==", "dev": true }, - "code-point-at": { - "version": "1.1.0", - "dev": true - }, - "collection-map": { - "version": "1.0.0", - "dev": true, - "requires": { - "arr-map": "^2.0.2", - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" - } - }, - "collection-visit": { - "version": "1.0.0", - "dev": true, - "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - } - }, "color": { "version": "3.2.1", "requires": { @@ -21740,24 +16726,10 @@ "dot-prop": "^5.1.0" } }, - "component-emitter": { - "version": "1.3.0", - "dev": true - }, "concat-map": { "version": "0.0.1", "dev": true }, - "concat-stream": { - "version": "1.6.2", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, "console-control-strings": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", @@ -22434,23 +17406,16 @@ } } }, - "convert-source-map": { - "version": "1.9.0", - "dev": true - }, "cookie": { "version": "0.4.2" }, - "copy-descriptor": { - "version": "0.1.1", - "dev": true - }, - "copy-props": { - "version": "2.0.5", + "core-js-compat": { + "version": "3.36.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.36.1.tgz", + "integrity": "sha512-Dk997v9ZCt3X/npqzyGdTlq6t7lDBhZwGvV94PKzDArjp7BTRm7WlDAXYd/OWdeFHO8OChQYRJNJvUCqCbrtKA==", "dev": true, "requires": { - "each-props": "^1.3.2", - "is-plain-object": "^5.0.0" + "browserslist": "^4.23.0" } }, "core-util-is": { @@ -22540,14 +17505,6 @@ "cycle": { "version": "1.0.3" }, - "d": { - "version": "1.0.1", - "dev": true, - "requires": { - "es5-ext": "^0.10.50", - "type": "^1.0.1" - } - }, "daemonize2": { "version": "0.4.2" }, @@ -22557,13 +17514,6 @@ "integrity": "sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==", "dev": true }, - "dashdash": { - "version": "1.14.1", - "optional": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, "dateformat": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", @@ -22604,10 +17554,6 @@ } } }, - "decode-uri-component": { - "version": "0.2.2", - "dev": true - }, "dedent": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", @@ -22630,17 +17576,6 @@ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true }, - "default-compare": { - "version": "1.0.0", - "dev": true, - "requires": { - "kind-of": "^5.0.2" - } - }, - "default-resolution": { - "version": "2.0.0", - "dev": true - }, "defaults": { "version": "1.0.4", "dev": true, @@ -22660,21 +17595,6 @@ "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", "dev": true }, - "define-properties": { - "version": "1.2.0", - "dev": true, - "requires": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - } - }, - "define-property": { - "version": "0.2.5", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, "delayed-stream": { "version": "1.0.0" }, @@ -22699,10 +17619,6 @@ "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", "dev": true }, - "detect-file": { - "version": "1.0.0", - "dev": true - }, "detect-indent": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz", @@ -22741,53 +17657,6 @@ "esutils": "^2.0.2" } }, - "dom-serializer": { - "version": "1.4.1", - "dev": true, - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - }, - "dependencies": { - "domhandler": { - "version": "4.3.1", - "dev": true, - "requires": { - "domelementtype": "^2.2.0" - } - } - } - }, - "domelementtype": { - "version": "2.3.0", - "dev": true - }, - "domhandler": { - "version": "3.3.0", - "dev": true, - "requires": { - "domelementtype": "^2.0.1" - } - }, - "domutils": { - "version": "2.8.0", - "dev": true, - "requires": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - }, - "dependencies": { - "domhandler": { - "version": "4.3.1", - "dev": true, - "requires": { - "domelementtype": "^2.2.0" - } - } - } - }, "dot-prop": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", @@ -22806,57 +17675,18 @@ "duplexer": { "version": "0.1.2" }, - "duplexify": { - "version": "3.7.1", - "dev": true, - "requires": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" - } - }, - "each-props": { - "version": "1.3.2", - "dev": true, - "requires": { - "is-plain-object": "^2.0.1", - "object.defaults": "^1.1.0" - }, - "dependencies": { - "is-plain-object": { - "version": "2.0.4", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - } - } - }, "eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", "dev": true }, - "ecc-jsbn": { - "version": "0.1.2", - "optional": true, - "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, "ecdsa-sig-formatter": { "version": "1.0.11", "requires": { "safe-buffer": "^5.0.1" } }, - "eckles": { - "version": "1.4.1", - "optional": true - }, "ejs": { "version": "3.1.9", "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz", @@ -22866,6 +17696,12 @@ "jake": "^10.8.5" } }, + "electron-to-chromium": { + "version": "1.4.737", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.737.tgz", + "integrity": "sha512-QvLTxaLHKdy5YxvixAw/FfHq2eWLUL9KvsPjp0aHK1gI5d3EDuDgITkvj0nFO2c6zUY3ZqVAJQiBYyQP9tQpfw==", + "dev": true + }, "emoji-regex": { "version": "8.0.0" }, @@ -22908,10 +17744,6 @@ "ansi-colors": "^4.1.1" } }, - "entities": { - "version": "2.1.0", - "dev": true - }, "env-paths": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", @@ -22935,46 +17767,10 @@ "is-arrayish": "^0.2.1" } }, - "es5-ext": { - "version": "0.10.62", - "dev": true, - "requires": { - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.3", - "next-tick": "^1.1.0" - } - }, - "es6-iterator": { - "version": "2.0.3", - "dev": true, - "requires": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" - } - }, "es6-promise": { "version": "4.2.8", "optional": true }, - "es6-symbol": { - "version": "3.1.3", - "dev": true, - "requires": { - "d": "^1.0.1", - "ext": "^1.1.2" - } - }, - "es6-weak-map": { - "version": "2.0.3", - "dev": true, - "requires": { - "d": "1", - "es5-ext": "^0.10.46", - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.1" - } - }, "esbuild": { "version": "0.11.23" }, @@ -23121,25 +17917,21 @@ "escalade": { "version": "3.1.1" }, - "escape-html": { - "version": "1.0.3", - "optional": true - }, "escape-string-regexp": { "version": "4.0.0", "dev": true }, "eslint": { - "version": "8.56.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz", - "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==", + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", + "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.56.0", - "@humanwhocodes/config-array": "^0.11.13", + "@eslint/js": "8.57.0", + "@humanwhocodes/config-array": "^0.11.14", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", "@ungap/structured-clone": "^1.2.0", @@ -23234,37 +18026,184 @@ "yallist": "^4.0.0" } }, - "semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "spdx-expression-parse": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-4.0.0.tgz", + "integrity": "sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + } + } + }, + "eslint-plugin-prettier": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.1.3.tgz", + "integrity": "sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==", + "dev": true, + "requires": { + "prettier-linter-helpers": "^1.0.0", + "synckit": "^0.8.6" + } + }, + "eslint-plugin-unicorn": { + "version": "52.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-52.0.0.tgz", + "integrity": "sha512-1Yzm7/m+0R4djH0tjDjfVei/ju2w3AzUGjG6q8JnuNIL5xIwsflyCooW5sfBvQp2pMYQFSWWCFONsjCax1EHng==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.22.20", + "@eslint-community/eslint-utils": "^4.4.0", + "@eslint/eslintrc": "^2.1.4", + "ci-info": "^4.0.0", + "clean-regexp": "^1.0.0", + "core-js-compat": "^3.34.0", + "esquery": "^1.5.0", + "indent-string": "^4.0.0", + "is-builtin-module": "^3.2.1", + "jsesc": "^3.0.2", + "pluralize": "^8.0.0", + "read-pkg-up": "^7.0.1", + "regexp-tree": "^0.1.27", + "regjsparser": "^0.10.0", + "semver": "^7.5.4", + "strip-indent": "^3.0.0" + }, + "dependencies": { + "ci-info": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.0.0.tgz", + "integrity": "sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg==", + "dev": true + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + }, + "dependencies": { + "semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true + } + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true + } + } + }, + "read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", "dev": true, "requires": { - "lru-cache": "^6.0.0" + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" } }, - "spdx-expression-parse": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-4.0.0.tgz", - "integrity": "sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==", + "strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", "dev": true, "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" + "min-indent": "^1.0.0" } + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true } } }, - "eslint-plugin-prettier": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.1.3.tgz", - "integrity": "sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==", - "dev": true, - "requires": { - "prettier-linter-helpers": "^1.0.0", - "synckit": "^0.8.6" - } - }, "eslint-rule-docs": { "version": "1.1.235", "dev": true @@ -23360,73 +18299,12 @@ "strip-final-newline": "^2.0.0" } }, - "executing-npm-path": { - "version": "0.1.0", - "dev": true - }, - "expand-brackets": { - "version": "2.1.4", - "dev": true, - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "dev": true - } - } - }, - "expand-tilde": { - "version": "2.0.2", - "dev": true, - "requires": { - "homedir-polyfill": "^1.0.1" - } - }, "exponential-backoff": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz", "integrity": "sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==", "dev": true }, - "ext": { - "version": "1.7.0", - "dev": true, - "requires": { - "type": "^2.7.2" - }, - "dependencies": { - "type": { - "version": "2.7.2", - "dev": true - } - } - }, - "extend": { - "version": "3.0.2", - "devOptional": true - }, - "extend-shallow": { - "version": "2.0.1", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, "external-editor": { "version": "3.1.0", "dev": true, @@ -23445,76 +18323,12 @@ } } }, - "extglob": { - "version": "2.0.4", - "dev": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "kind-of": { - "version": "6.0.3", - "dev": true - } - } - }, - "extsprintf": { - "version": "1.3.0", - "optional": true - }, "eyes": { "version": "0.1.8" }, - "fancy-log": { - "version": "1.3.3", - "dev": true, - "requires": { - "ansi-gray": "^0.1.1", - "color-support": "^1.1.3", - "parse-node-version": "^1.0.0", - "time-stamp": "^1.0.0" - } - }, "fast-deep-equal": { "version": "3.1.3", - "devOptional": true + "dev": true }, "fast-diff": { "version": "1.2.0", @@ -23544,7 +18358,7 @@ }, "fast-json-stable-stringify": { "version": "2.1.0", - "devOptional": true + "dev": true }, "fast-levenshtein": { "version": "2.0.6", @@ -23562,13 +18376,6 @@ "fecha": { "version": "4.2.3" }, - "fettuccine-class": { - "version": "1.0.5", - "dev": true, - "requires": { - "load-request-from-cwd-or-npm": "^2.0.1" - } - }, "figures": { "version": "3.2.0", "dev": true, @@ -23628,16 +18435,6 @@ } } }, - "fill-range": { - "version": "4.0.0", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - } - }, "find-up": { "version": "5.0.0", "dev": true, @@ -23646,118 +18443,6 @@ "path-exists": "^4.0.0" } }, - "findup-sync": { - "version": "3.0.0", - "dev": true, - "requires": { - "detect-file": "^1.0.0", - "is-glob": "^4.0.0", - "micromatch": "^3.0.4", - "resolve-dir": "^1.0.1" - }, - "dependencies": { - "define-property": { - "version": "2.0.2", - "dev": true, - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - } - }, - "extend-shallow": { - "version": "3.0.2", - "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "is-extendable": { - "version": "1.0.1", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - }, - "is-plain-object": { - "version": "2.0.4", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "kind-of": { - "version": "6.0.3", - "dev": true - }, - "micromatch": { - "version": "3.1.10", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - } - } - }, - "fined": { - "version": "1.2.0", - "dev": true, - "requires": { - "expand-tilde": "^2.0.2", - "is-plain-object": "^2.0.3", - "object.defaults": "^1.1.0", - "object.pick": "^1.2.0", - "parse-filepath": "^1.0.1" - }, - "dependencies": { - "is-plain-object": { - "version": "2.0.4", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - } - } - }, - "flagged-respawn": { - "version": "1.0.1", - "dev": true - }, "flat": { "version": "5.0.2", "dev": true @@ -23774,14 +18459,6 @@ "version": "3.2.7", "dev": true }, - "flush-write-stream": { - "version": "1.1.1", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "readable-stream": "^2.3.6" - } - }, "fn.name": { "version": "1.1.0" }, @@ -23790,17 +18467,6 @@ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==" }, - "for-in": { - "version": "1.0.2", - "dev": true - }, - "for-own": { - "version": "1.0.0", - "dev": true, - "requires": { - "for-in": "^1.0.1" - } - }, "foreground-child": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", @@ -23819,10 +18485,6 @@ } } }, - "forever-agent": { - "version": "0.6.1", - "optional": true - }, "form-data": { "version": "4.0.0", "requires": { @@ -23831,13 +18493,6 @@ "mime-types": "^2.1.12" } }, - "fragment-cache": { - "version": "0.2.1", - "dev": true, - "requires": { - "map-cache": "^0.2.2" - } - }, "from": { "version": "0.1.7" }, @@ -23872,29 +18527,14 @@ } } }, - "fs-mkdirp-stream": { - "version": "1.0.0", - "dev": true, - "requires": { - "graceful-fs": "^4.1.11", - "through2": "^2.0.3" - } - }, "fs.realpath": { "version": "1.0.0", "dev": true }, - "fsevents": { - "version": "1.2.13", - "dev": true, - "optional": true, - "requires": { - "bindings": "^1.5.0", - "nan": "^2.12.1" - } - }, "function-bind": { - "version": "1.1.1" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" }, "gauge": { "version": "4.0.4", @@ -23919,15 +18559,6 @@ "version": "2.0.0", "dev": true }, - "get-intrinsic": { - "version": "1.2.0", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" - } - }, "get-pkg-repo": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-4.2.1.tgz", @@ -23969,27 +18600,8 @@ "integrity": "sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==", "dev": true }, - "get-spdx-license-ids": { - "version": "2.1.0", - "dev": true, - "requires": { - "fettuccine-class": "^1.0.5", - "inspect-with-kind": "^1.0.4" - } - }, - "get-stream": { - "version": "6.0.1" - }, - "get-value": { - "version": "2.0.6", - "dev": true - }, - "getpass": { - "version": "0.1.7", - "optional": true, - "requires": { - "assert-plus": "^1.0.0" - } + "get-stream": { + "version": "6.0.1" }, "git-raw-commits": { "version": "3.0.0", @@ -24465,93 +19077,6 @@ "is-glob": "^4.0.3" } }, - "glob-stream": { - "version": "6.1.0", - "dev": true, - "requires": { - "extend": "^3.0.0", - "glob": "^7.1.1", - "glob-parent": "^3.1.0", - "is-negated-glob": "^1.0.0", - "ordered-read-streams": "^1.0.0", - "pumpify": "^1.3.5", - "readable-stream": "^2.1.5", - "remove-trailing-separator": "^1.0.1", - "to-absolute-glob": "^2.0.0", - "unique-stream": "^2.0.2" - }, - "dependencies": { - "glob": { - "version": "7.2.3", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "3.1.0", - "dev": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - } - }, - "is-glob": { - "version": "3.1.0", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, - "glob-watcher": { - "version": "5.0.5", - "dev": true, - "requires": { - "anymatch": "^2.0.0", - "async-done": "^1.2.0", - "chokidar": "^2.0.0", - "is-negated-glob": "^1.0.0", - "just-debounce": "^1.0.0", - "normalize-path": "^3.0.0", - "object.defaults": "^1.1.0" - } - }, - "global-modules": { - "version": "1.0.0", - "dev": true, - "requires": { - "global-prefix": "^1.0.1", - "is-windows": "^1.0.1", - "resolve-dir": "^1.0.0" - } - }, - "global-prefix": { - "version": "1.0.2", - "dev": true, - "requires": { - "expand-tilde": "^2.0.2", - "homedir-polyfill": "^1.0.1", - "ini": "^1.3.4", - "is-windows": "^1.0.1", - "which": "^1.2.14" - }, - "dependencies": { - "which": { - "version": "1.3.1", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, "globals": { "version": "13.24.0", "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", @@ -24581,13 +19106,6 @@ "version": "0.1.2", "dev": true }, - "glogg": { - "version": "1.0.2", - "dev": true, - "requires": { - "sparkles": "^1.0.0" - } - }, "glossy": { "version": "0.1.7", "optional": true @@ -24601,319 +19119,15 @@ "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "dev": true }, - "greenlock": { - "version": "4.0.4", - "optional": true, - "requires": { - "@greenlock/manager": "^3.1.0", - "@root/acme": "^3.0.9", - "@root/csr": "^0.8.1", - "@root/greenlock": "^4.0.4", - "@root/keypairs": "^0.9.0", - "@root/mkdirp": "^1.0.0", - "@root/request": "^1.4.2", - "acme-http-01-standalone": "^3.0.5", - "cert-info": "^1.5.1", - "greenlock-store-fs": "^3.2.2", - "safe-replace": "^1.1.0" - } - }, - "greenlock-express": { - "version": "4.0.3", - "optional": true, - "requires": { - "@root/greenlock": "^4.0.4", - "@root/greenlock-express": "^4.0.3", - "redirect-https": "^1.1.5" - } - }, - "greenlock-manager-fs": { - "version": "3.1.1", - "optional": true, - "requires": { - "@root/mkdirp": "^1.0.0", - "safe-replace": "^1.1.0" - } - }, - "greenlock-store-fs": { - "version": "3.2.2", - "optional": true, - "requires": { - "@root/mkdirp": "^1.0.0", - "safe-replace": "^1.1.0" - } - }, - "gulp": { - "version": "4.0.2", - "dev": true, - "requires": { - "glob-watcher": "^5.0.3", - "gulp-cli": "^2.2.0", - "undertaker": "^1.2.1", - "vinyl-fs": "^3.0.0" - } - }, - "gulp-cli": { - "version": "2.3.0", - "dev": true, - "requires": { - "ansi-colors": "^1.0.1", - "archy": "^1.0.0", - "array-sort": "^1.0.0", - "color-support": "^1.1.3", - "concat-stream": "^1.6.0", - "copy-props": "^2.0.1", - "fancy-log": "^1.3.2", - "gulplog": "^1.0.0", - "interpret": "^1.4.0", - "isobject": "^3.0.1", - "liftoff": "^3.1.0", - "matchdep": "^2.0.0", - "mute-stdout": "^1.0.0", - "pretty-hrtime": "^1.0.0", - "replace-homedir": "^1.0.0", - "semver-greatest-satisfied-range": "^1.1.0", - "v8flags": "^3.2.0", - "yargs": "^7.1.0" - }, - "dependencies": { - "ansi-colors": { - "version": "1.1.0", - "dev": true, - "requires": { - "ansi-wrap": "^0.1.0" - } - }, - "ansi-regex": { - "version": "2.1.1", - "dev": true - }, - "camelcase": { - "version": "3.0.0", - "dev": true - }, - "cliui": { - "version": "3.2.0", - "dev": true, - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" - } - }, - "decamelize": { - "version": "1.2.0", - "dev": true - }, - "find-up": { - "version": "1.1.2", - "dev": true, - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "get-caller-file": { - "version": "1.0.3", - "dev": true - }, - "hosted-git-info": { - "version": "2.8.9", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "load-json-file": { - "version": "1.1.0", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - } - }, - "normalize-package-data": { - "version": "2.5.0", - "dev": true, - "requires": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "parse-json": { - "version": "2.2.0", - "dev": true, - "requires": { - "error-ex": "^1.2.0" - } - }, - "path-exists": { - "version": "2.1.0", - "dev": true, - "requires": { - "pinkie-promise": "^2.0.0" - } - }, - "path-type": { - "version": "1.1.0", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "pify": { - "version": "2.3.0", - "dev": true - }, - "read-pkg": { - "version": "1.1.0", - "dev": true, - "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - } - }, - "read-pkg-up": { - "version": "1.0.1", - "dev": true, - "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - } - }, - "semver": { - "version": "5.7.1", - "dev": true - }, - "string-width": { - "version": "1.0.2", - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-bom": { - "version": "2.0.0", - "dev": true, - "requires": { - "is-utf8": "^0.2.0" - } - }, - "wrap-ansi": { - "version": "2.1.0", - "dev": true, - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" - } - }, - "y18n": { - "version": "3.2.2", - "dev": true - }, - "yargs": { - "version": "7.1.2", - "dev": true, - "requires": { - "camelcase": "^3.0.0", - "cliui": "^3.2.0", - "decamelize": "^1.1.1", - "get-caller-file": "^1.0.1", - "os-locale": "^1.4.0", - "read-pkg-up": "^1.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^1.0.2", - "which-module": "^1.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^5.0.1" - } - }, - "yargs-parser": { - "version": "5.0.1", - "dev": true, - "requires": { - "camelcase": "^3.0.0", - "object.assign": "^4.1.0" - } - } - } - }, - "gulp-jsdoc3": { - "version": "3.0.0", - "dev": true, - "requires": { - "ansi-colors": "^4.1.1", - "beeper": "^2.0.0", - "debug": "^4.1.1", - "fancy-log": "^1.3.3", - "ink-docstrap": "^1.3.2", - "jsdoc": "^3.6.3", - "map-stream": "0.0.7", - "tmp": "0.1.0" - } - }, - "gulp-replace": { - "version": "1.1.4", - "dev": true, - "requires": { - "@types/node": "*", - "@types/vinyl": "^2.0.4", - "istextorbinary": "^3.0.0", - "replacestream": "^4.0.3", - "yargs-parser": ">=5.0.0-security.0" - } - }, - "gulplog": { - "version": "1.0.0", - "dev": true, - "requires": { - "glogg": "^1.0.0" - } - }, "handlebars": { "version": "4.7.7", - "dev": true, - "requires": { - "minimist": "^1.2.5", - "neo-async": "^2.6.0", - "source-map": "^0.6.1", - "uglify-js": "^3.1.4", - "wordwrap": "^1.0.0" - } - }, - "har-schema": { - "version": "2.0.0", - "optional": true - }, - "har-validator": { - "version": "5.1.5", - "optional": true, + "dev": true, "requires": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" + "minimist": "^1.2.5", + "neo-async": "^2.6.0", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4", + "wordwrap": "^1.0.0" } }, "hard-rejection": { @@ -24930,60 +19144,25 @@ "version": "4.0.0", "dev": true }, - "has-property-descriptors": { - "version": "1.0.0", - "dev": true, - "requires": { - "get-intrinsic": "^1.1.1" - } - }, - "has-symbols": { - "version": "1.0.3", - "dev": true - }, "has-unicode": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", "dev": true }, - "has-value": { - "version": "1.0.0", - "dev": true, - "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "has-values": { - "version": "1.0.0", + "hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "dev": true, "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "kind-of": { - "version": "4.0.0", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } + "function-bind": "^1.1.2" } }, "he": { "version": "1.2.0", "dev": true }, - "homedir-polyfill": { - "version": "1.0.3", - "dev": true, - "requires": { - "parse-passwd": "^1.0.0" - } - }, "hosted-git-info": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", @@ -25004,16 +19183,6 @@ } } }, - "htmlparser2": { - "version": "4.1.0", - "dev": true, - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^3.0.0", - "domutils": "^2.0.0", - "entities": "^2.0.0" - } - }, "http-cache-semantics": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", @@ -25031,15 +19200,6 @@ "debug": "4" } }, - "http-signature": { - "version": "1.2.0", - "optional": true, - "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - } - }, "https-proxy-agent": { "version": "5.0.1", "requires": { @@ -25204,14 +19364,6 @@ } } }, - "ink-docstrap": { - "version": "1.3.2", - "dev": true, - "requires": { - "moment": "^2.14.1", - "sanitize-html": "^1.13.0" - } - }, "inquirer": { "version": "8.2.5", "dev": true, @@ -25233,27 +19385,6 @@ "wrap-ansi": "^7.0.0" } }, - "inspect-with-kind": { - "version": "1.0.5", - "dev": true, - "requires": { - "kind-of": "^6.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.3", - "dev": true - } - } - }, - "interpret": { - "version": "1.4.0", - "dev": true - }, - "invert-kv": { - "version": "1.0.0", - "dev": true - }, "iobroker.js-controller": { "version": "file:packages/controller", "requires": { @@ -25277,13 +19408,8 @@ "decache": "^4.6.1", "deep-clone": "^3.0.3", "fs-extra": "^11.1.0", - "greenlock": "^4.0.4", - "greenlock-express": "^4.0.3", "jsonwebtoken": "^9.0.0", "jszip": "^3.10.1", - "le-acme-core": "^2.1.4", - "le-challenge-fs": "^2.0.9", - "le-sni-auto": "^2.1.9", "loadavg-windows": "^1.1.1", "node-schedule": "^2.1.1", "pidusage": "^3.0.2", @@ -25328,45 +19454,10 @@ "is": { "version": "3.3.0" }, - "is-absolute": { - "version": "1.0.0", - "dev": true, - "requires": { - "is-relative": "^1.0.0", - "is-windows": "^1.0.1" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, "is-arrayish": { "version": "0.2.1", "dev": true }, - "is-binary-path": { - "version": "1.0.1", - "dev": true, - "requires": { - "binary-extensions": "^1.0.0" - } - }, - "is-buffer": { - "version": "1.1.6", - "dev": true - }, "is-builtin-module": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz", @@ -25386,45 +19477,18 @@ } }, "is-core-module": { - "version": "2.11.0", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", "dev": true, "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "hasown": "^2.0.0" } }, "is-docker": { "version": "2.2.1", "dev": true }, - "is-extendable": { - "version": "0.1.1", - "dev": true - }, "is-extglob": { "version": "2.1.1" }, @@ -25447,26 +19511,6 @@ "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", "dev": true }, - "is-negated-glob": { - "version": "1.0.0", - "dev": true - }, - "is-number": { - "version": "3.0.0", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, "is-obj": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", @@ -25485,13 +19529,6 @@ "version": "5.0.0", "dev": true }, - "is-relative": { - "version": "1.0.0", - "dev": true, - "requires": { - "is-unc-path": "^1.0.0" - } - }, "is-ssh": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/is-ssh/-/is-ssh-1.4.0.tgz", @@ -25513,33 +19550,10 @@ "text-extensions": "^1.0.0" } }, - "is-typedarray": { - "version": "1.0.0", - "optional": true - }, - "is-unc-path": { - "version": "1.0.0", - "dev": true, - "requires": { - "unc-path-regex": "^0.1.2" - } - }, "is-unicode-supported": { "version": "0.1.0", "dev": true }, - "is-utf8": { - "version": "0.2.1", - "dev": true - }, - "is-valid-glob": { - "version": "1.0.0", - "dev": true - }, - "is-windows": { - "version": "1.0.2", - "dev": true - }, "is-wsl": { "version": "2.2.0", "dev": true, @@ -25560,14 +19574,6 @@ "isstream": { "version": "0.1.2" }, - "istextorbinary": { - "version": "3.3.0", - "dev": true, - "requires": { - "binaryextensions": "^2.2.0", - "textextensions": "^3.2.0" - } - }, "jackspeak": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.2.2.tgz", @@ -25631,56 +19637,18 @@ } } }, - "js2xmlparser": { - "version": "4.0.2", - "dev": true, - "requires": { - "xmlcreate": "^2.0.4" - } - }, - "jsbn": { - "version": "0.1.1", - "optional": true - }, - "jsdoc": { - "version": "3.6.11", - "dev": true, - "requires": { - "@babel/parser": "^7.9.4", - "@types/markdown-it": "^12.2.3", - "bluebird": "^3.7.2", - "catharsis": "^0.9.0", - "escape-string-regexp": "^2.0.0", - "js2xmlparser": "^4.0.2", - "klaw": "^3.0.0", - "markdown-it": "^12.3.2", - "markdown-it-anchor": "^8.4.1", - "marked": "^4.0.10", - "mkdirp": "^1.0.4", - "requizzle": "^0.2.3", - "strip-json-comments": "^3.1.0", - "taffydb": "2.6.2", - "underscore": "~1.13.2" - }, - "dependencies": { - "escape-string-regexp": { - "version": "2.0.0", - "dev": true - }, - "marked": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz", - "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==", - "dev": true - } - } - }, "jsdoc-type-pratt-parser": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.0.0.tgz", "integrity": "sha512-YtOli5Cmzy3q4dP26GraSOeAhqecewG04hoO8DY56CH4KJ9Fvv5qKWUCCo3HZob7esJQHCv6/+bnTy72xZZaVQ==", "dev": true }, + "jsesc": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", + "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", + "dev": true + }, "json-parse-better-errors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", @@ -25693,13 +19661,9 @@ "integrity": "sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==", "dev": true }, - "json-schema": { - "version": "0.4.0", - "optional": true - }, "json-schema-traverse": { "version": "0.4.1", - "devOptional": true + "dev": true }, "json-stable-stringify-without-jsonify": { "version": "1.0.1", @@ -25707,7 +19671,7 @@ }, "json-stringify-safe": { "version": "5.0.1", - "devOptional": true + "dev": true }, "json5": { "version": "2.2.3", @@ -25739,131 +19703,50 @@ "through": ">=2.2.7 <3" } }, - "jsonwebtoken": { - "version": "9.0.0", - "requires": { - "jws": "^3.2.2", - "lodash": "^4.17.21", - "ms": "^2.1.1", - "semver": "^7.3.8" - } - }, - "jsprim": { - "version": "1.4.2", - "optional": true, - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.4.0", - "verror": "1.10.0" - } - }, - "jszip": { - "version": "3.10.1", - "requires": { - "lie": "~3.3.0", - "pako": "~1.0.2", - "readable-stream": "~2.3.6", - "setimmediate": "^1.0.5" - } - }, - "junk": { - "version": "4.0.0", - "dev": true - }, - "just-debounce": { - "version": "1.1.0", - "dev": true - }, - "just-extend": { - "version": "4.2.1", - "dev": true - }, - "jwa": { - "version": "1.4.1", - "requires": { - "buffer-equal-constant-time": "1.0.1", - "ecdsa-sig-formatter": "1.0.11", - "safe-buffer": "^5.0.1" - } - }, - "jws": { - "version": "3.2.2", - "requires": { - "jwa": "^1.4.1", - "safe-buffer": "^5.0.1" - } - }, - "keypairs": { - "version": "1.2.14", - "optional": true, - "requires": { - "eckles": "^1.4.1", - "rasha": "^1.2.4" - } - }, - "kind-of": { - "version": "5.1.0", - "dev": true - }, - "klaw": { - "version": "3.0.0", - "dev": true, - "requires": { - "graceful-fs": "^4.1.9" - } - }, - "kuler": { - "version": "2.0.0" - }, - "last-run": { - "version": "1.1.1", - "dev": true, - "requires": { - "default-resolution": "^2.0.0", - "es6-weak-map": "^2.0.1" - } - }, - "lazystream": { - "version": "1.0.1", - "dev": true, - "requires": { - "readable-stream": "^2.0.5" - } - }, - "lcid": { - "version": "1.0.0", - "dev": true, + "jsonwebtoken": { + "version": "9.0.0", "requires": { - "invert-kv": "^1.0.0" + "jws": "^3.2.2", + "lodash": "^4.17.21", + "ms": "^2.1.1", + "semver": "^7.3.8" } }, - "le-acme-core": { - "version": "2.1.4", - "optional": true, + "jszip": { + "version": "3.10.1", "requires": { - "request": "^2.74.0", - "rsa-compat": "^1.3.2" + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "setimmediate": "^1.0.5" } }, - "le-challenge-fs": { - "version": "2.0.9", - "optional": true, + "junk": { + "version": "4.0.0", + "dev": true + }, + "just-extend": { + "version": "4.2.1", + "dev": true + }, + "jwa": { + "version": "1.4.1", "requires": { - "@root/mkdirp": "^1.0.0" + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" } }, - "le-sni-auto": { - "version": "2.1.9", - "optional": true - }, - "lead": { - "version": "1.0.0", - "dev": true, + "jws": { + "version": "3.2.2", "requires": { - "flush-write-stream": "^1.0.2" + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" } }, + "kuler": { + "version": "2.0.0" + }, "lerna": { "version": "7.1.4", "resolved": "https://registry.npmjs.org/lerna/-/lerna-7.1.4.tgz", @@ -26190,52 +20073,12 @@ "immediate": "~3.0.5" } }, - "liftoff": { - "version": "3.1.0", - "dev": true, - "requires": { - "extend": "^3.0.0", - "findup-sync": "^3.0.0", - "fined": "^1.0.1", - "flagged-respawn": "^1.0.0", - "is-plain-object": "^2.0.4", - "object.map": "^1.0.0", - "rechoir": "^0.6.2", - "resolve": "^1.1.7" - }, - "dependencies": { - "is-plain-object": { - "version": "2.0.4", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - } - } - }, "lines-and-columns": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.3.tgz", "integrity": "sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w==", "dev": true }, - "linkify-it": { - "version": "3.0.3", - "dev": true, - "requires": { - "uc.micro": "^1.0.1" - } - }, - "load-from-cwd-or-npm": { - "version": "2.2.2", - "dev": true, - "requires": { - "inspect-with-kind": "^1.0.4", - "npm-cli-dir": "^2.0.1", - "optional": "^0.1.4", - "resolve-from-npm": "^2.0.4" - } - }, "load-json-file": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-6.2.0.tgz", @@ -26256,13 +20099,6 @@ } } }, - "load-request-from-cwd-or-npm": { - "version": "2.0.1", - "dev": true, - "requires": { - "load-from-cwd-or-npm": "^2.2.1" - } - }, "loadavg-windows": { "version": "1.1.1", "requires": { @@ -26422,23 +20258,6 @@ } } }, - "make-iterator": { - "version": "1.0.1", - "dev": true, - "requires": { - "kind-of": "^6.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.3", - "dev": true - } - } - }, - "map-cache": { - "version": "0.2.2", - "dev": true - }, "map-obj": { "version": "4.3.0", "dev": true @@ -26446,144 +20265,6 @@ "map-stream": { "version": "0.0.7" }, - "map-visit": { - "version": "1.0.0", - "dev": true, - "requires": { - "object-visit": "^1.0.0" - } - }, - "markdown-it": { - "version": "12.3.2", - "dev": true, - "requires": { - "argparse": "^2.0.1", - "entities": "~2.1.0", - "linkify-it": "^3.0.1", - "mdurl": "^1.0.1", - "uc.micro": "^1.0.5" - }, - "dependencies": { - "argparse": { - "version": "2.0.1", - "dev": true - } - } - }, - "markdown-it-anchor": { - "version": "8.6.7", - "dev": true, - "requires": {} - }, - "matchdep": { - "version": "2.0.0", - "dev": true, - "requires": { - "findup-sync": "^2.0.0", - "micromatch": "^3.0.4", - "resolve": "^1.4.0", - "stack-trace": "0.0.10" - }, - "dependencies": { - "define-property": { - "version": "2.0.2", - "dev": true, - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - } - }, - "extend-shallow": { - "version": "3.0.2", - "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - } - }, - "findup-sync": { - "version": "2.0.0", - "dev": true, - "requires": { - "detect-file": "^1.0.0", - "is-glob": "^3.1.0", - "micromatch": "^3.0.4", - "resolve-dir": "^1.0.1" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "is-extendable": { - "version": "1.0.1", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - }, - "is-glob": { - "version": "3.1.0", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - }, - "is-plain-object": { - "version": "2.0.4", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "kind-of": { - "version": "6.0.3", - "dev": true - }, - "micromatch": { - "version": "3.1.10", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - } - } - }, - "mdurl": { - "version": "1.0.1", - "dev": true - }, "meow": { "version": "10.1.5", "dev": true, @@ -26860,35 +20541,13 @@ } } }, - "mixin-deep": { - "version": "1.3.2", - "dev": true, - "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - }, - "is-plain-object": { - "version": "2.0.4", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - } - } - }, "mkdirp": { "version": "1.0.4" }, "mocha": { - "version": "10.2.0", + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.4.0.tgz", + "integrity": "sha512-eqhGB8JKapEYcC4ytX/xrzKforgEc3j1pGlAXVy3eRwrtAy5/nIfT1SvgGzfN0XZZxeLq0aQWkOUAmqIJiv+bA==", "dev": true, "requires": { "ansi-colors": "4.1.1", @@ -26898,13 +20557,12 @@ "diff": "5.0.0", "escape-string-regexp": "4.0.0", "find-up": "5.0.0", - "glob": "7.2.0", + "glob": "8.1.0", "he": "1.2.0", "js-yaml": "4.1.0", "log-symbols": "4.1.0", "minimatch": "5.0.1", "ms": "2.1.3", - "nanoid": "3.3.3", "serialize-javascript": "6.0.0", "strip-json-comments": "3.1.1", "supports-color": "8.1.1", @@ -26964,24 +20622,16 @@ "optional": true }, "glob": { - "version": "7.2.0", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "dependencies": { - "minimatch": { - "version": "3.1.2", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - } + "minimatch": "^5.0.1", + "once": "^1.3.0" } }, "glob-parent": { @@ -27095,10 +20745,6 @@ } } }, - "mute-stdout": { - "version": "1.0.1", - "dev": true - }, "mute-stream": { "version": "0.0.8" }, @@ -27108,89 +20754,9 @@ "integrity": "sha512-+MrqnJRtxdF+xngFfUUkIMQrUUL0KsxbADUkn23Z/4ibGg192Q+z+CQyiYwvWTsYjJygmMR8+w3ZDa98Zh6ESg==", "dev": true }, - "nan": { - "version": "2.17.0", - "optional": true - }, - "nanoid": { - "version": "3.3.3", - "dev": true - }, - "nanomatch": { - "version": "1.2.13", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "2.0.2", - "dev": true, - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - } - }, - "extend-shallow": { - "version": "3.0.2", - "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "is-extendable": { - "version": "1.0.1", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - }, - "is-plain-object": { - "version": "2.0.4", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "kind-of": { - "version": "6.0.3", - "dev": true - } - } + "nan": { + "version": "2.17.0", + "optional": true }, "natural-compare": { "version": "1.4.0", @@ -27210,10 +20776,6 @@ "version": "2.1.1", "dev": true }, - "next-tick": { - "version": "1.1.0", - "dev": true - }, "nise": { "version": "5.1.4", "dev": true, @@ -27299,6 +20861,12 @@ "integrity": "sha512-QNABxbrPa3qEIfrE6GOJ7BYIuignnJw7iQ2YPbc3Nla1HzRJjXzZOiikfF8m7eAMfichLt3M4VgLOetqgDmgGQ==", "dev": true }, + "node-releases": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", + "dev": true + }, "node-schedule": { "version": "2.1.1", "requires": { @@ -27336,13 +20904,6 @@ "normalize-path": { "version": "3.0.0" }, - "now-and-later": { - "version": "2.0.1", - "dev": true, - "requires": { - "once": "^1.3.2" - } - }, "npm-bundled": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz", @@ -27352,22 +20913,6 @@ "npm-normalize-package-bin": "^1.0.1" } }, - "npm-cli-dir": { - "version": "2.0.2", - "dev": true, - "requires": { - "npm-cli-path": "^2.0.1" - } - }, - "npm-cli-path": { - "version": "2.0.5", - "dev": true, - "requires": { - "executing-npm-path": "^0.1.0", - "real-executable-path": "^2.0.2", - "win-user-installed-npm-cli-path": "^2.0.2" - } - }, "npm-install-checks": { "version": "6.1.1", "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-6.1.1.tgz", @@ -27577,10 +21122,6 @@ "set-blocking": "^2.0.0" } }, - "number-is-nan": { - "version": "1.0.1", - "dev": true - }, "nx": { "version": "16.6.0", "resolved": "https://registry.npmjs.org/nx/-/nx-16.6.0.tgz", @@ -27714,91 +21255,11 @@ } } }, - "oauth-sign": { - "version": "0.9.0", - "optional": true - }, - "object-assign": { - "version": "4.1.1", - "dev": true - }, - "object-copy": { - "version": "0.1.0", - "dev": true, - "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, "object-hash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==" }, - "object-keys": { - "version": "1.1.1", - "dev": true - }, - "object-visit": { - "version": "1.0.1", - "dev": true, - "requires": { - "isobject": "^3.0.0" - } - }, - "object.assign": { - "version": "4.1.4", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - } - }, - "object.defaults": { - "version": "1.1.0", - "dev": true, - "requires": { - "array-each": "^1.0.1", - "array-slice": "^1.0.0", - "for-own": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "object.map": { - "version": "1.0.1", - "dev": true, - "requires": { - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" - } - }, - "object.pick": { - "version": "1.3.0", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "object.reduce": { - "version": "1.0.1", - "dev": true, - "requires": { - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" - } - }, "once": { "version": "1.4.0", "dev": true, @@ -27829,10 +21290,6 @@ "is-wsl": "^2.2.0" } }, - "optional": { - "version": "0.1.4", - "dev": true - }, "optionator": { "version": "0.9.3", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", @@ -27862,20 +21319,6 @@ "wcwidth": "^1.0.1" } }, - "ordered-read-streams": { - "version": "1.0.1", - "dev": true, - "requires": { - "readable-stream": "^2.0.1" - } - }, - "os-locale": { - "version": "1.4.0", - "dev": true, - "requires": { - "lcid": "^1.0.0" - } - }, "os-tmpdir": { "version": "1.0.2", "dev": true @@ -28075,15 +21518,6 @@ "callsites": "^3.0.0" } }, - "parse-filepath": { - "version": "1.0.2", - "dev": true, - "requires": { - "is-absolute": "^1.0.0", - "map-cache": "^0.2.0", - "path-root": "^0.1.1" - } - }, "parse-json": { "version": "5.2.0", "dev": true, @@ -28104,14 +21538,6 @@ } } }, - "parse-node-version": { - "version": "1.0.1", - "dev": true - }, - "parse-passwd": { - "version": "1.0.0", - "dev": true - }, "parse-path": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/parse-path/-/parse-path-7.0.0.tgz", @@ -28121,10 +21547,6 @@ "protocols": "^2.0.0" } }, - "parse-srcset": { - "version": "1.0.2", - "dev": true - }, "parse-url": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/parse-url/-/parse-url-8.1.0.tgz", @@ -28134,14 +21556,6 @@ "parse-path": "^7.0.0" } }, - "pascalcase": { - "version": "0.1.1", - "dev": true - }, - "path-dirname": { - "version": "1.0.2", - "dev": true - }, "path-exists": { "version": "4.0.0", "dev": true @@ -28157,17 +21571,6 @@ "version": "1.0.7", "dev": true }, - "path-root": { - "version": "0.1.1", - "dev": true, - "requires": { - "path-root-regex": "^0.1.0" - } - }, - "path-root-regex": { - "version": "0.1.2", - "dev": true - }, "path-scurry": { "version": "1.10.1", "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", @@ -28219,10 +21622,6 @@ "through": "~2.3" } }, - "performance-now": { - "version": "2.1.0", - "optional": true - }, "picocolors": { "version": "1.0.0", "dev": true @@ -28242,17 +21641,6 @@ "integrity": "sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==", "dev": true }, - "pinkie": { - "version": "2.0.4", - "dev": true - }, - "pinkie-promise": { - "version": "2.0.1", - "dev": true, - "requires": { - "pinkie": "^2.0.0" - } - }, "pkg-dir": { "version": "4.2.0", "dev": true, @@ -28307,24 +21695,12 @@ "irregular-plurals": "^3.2.0" } }, - "posix-character-classes": { - "version": "0.1.1", + "pluralize": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", + "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", "dev": true }, - "postcss": { - "version": "7.0.39", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "dependencies": { - "picocolors": { - "version": "0.2.1", - "dev": true - } - } - }, "prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -28363,10 +21739,6 @@ } } }, - "pretty-hrtime": { - "version": "1.0.3", - "dev": true - }, "proc-log": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", @@ -28469,34 +21841,9 @@ "proxy-from-env": { "version": "1.1.0" }, - "psl": { - "version": "1.9.0", - "optional": true - }, - "pump": { - "version": "2.0.1", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "pumpify": { - "version": "1.5.1", - "dev": true, - "requires": { - "duplexify": "^3.6.0", - "inherits": "^2.0.3", - "pump": "^2.0.0" - } - }, "punycode": { "version": "2.3.0", - "devOptional": true - }, - "qs": { - "version": "6.5.3", - "optional": true + "dev": true }, "queue-lit": { "version": "1.5.2", @@ -28519,10 +21866,6 @@ "safe-buffer": "^5.1.0" } }, - "rasha": { - "version": "1.2.5", - "optional": true - }, "react-is": { "version": "18.2.0", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", @@ -28774,152 +22117,33 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "dev": true - } - } - }, - "readable-stream": { - "version": "2.3.8", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - }, - "dependencies": { - "safe-buffer": { - "version": "5.1.2" - } - } - }, - "readdirp": { - "version": "2.2.1", - "dev": true, - "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - }, - "dependencies": { - "define-property": { - "version": "2.0.2", - "dev": true, - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - } - }, - "extend-shallow": { - "version": "3.0.2", - "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "is-extendable": { - "version": "1.0.1", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - }, - "is-plain-object": { - "version": "2.0.4", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "kind-of": { - "version": "6.0.3", - "dev": true - }, - "micromatch": { - "version": "3.1.10", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - } - } - }, - "readline": { - "version": "1.3.0" - }, - "readline-sync": { - "version": "1.4.10" - }, - "real-executable-path": { - "version": "2.0.2", - "dev": true, - "requires": { - "real-executable-path-callback": "^2.1.2" - } - }, - "real-executable-path-callback": { - "version": "2.1.2", - "dev": true, - "requires": { - "inspect-with-kind": "^1.0.4", - "is-plain-obj": "^1.1.0", - "which": "^1.3.0" - }, - "dependencies": { - "which": { - "version": "1.3.1", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } + "dev": true } } }, - "rechoir": { - "version": "0.6.2", - "dev": true, + "readable-stream": { + "version": "2.3.8", "requires": { - "resolve": "^1.1.6" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2" + } } }, + "readline": { + "version": "1.3.0" + }, + "readline-sync": { + "version": "1.4.10" + }, "redent": { "version": "4.0.0", "dev": true, @@ -28928,13 +22152,6 @@ "strip-indent": "^4.0.0" } }, - "redirect-https": { - "version": "1.3.1", - "optional": true, - "requires": { - "escape-html": "^1.0.3" - } - }, "redis-commands": { "version": "1.7.0" }, @@ -28947,155 +22164,39 @@ "redis-errors": "^1.0.0" } }, - "regex-not": { - "version": "1.0.2", - "dev": true, - "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "3.0.2", - "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - } - }, - "is-extendable": { - "version": "1.0.1", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - }, - "is-plain-object": { - "version": "2.0.4", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - } - } - }, - "remove-bom-buffer": { - "version": "3.0.0", - "dev": true, - "requires": { - "is-buffer": "^1.1.5", - "is-utf8": "^0.2.1" - } - }, - "remove-bom-stream": { - "version": "1.2.0", - "dev": true, - "requires": { - "remove-bom-buffer": "^3.0.0", - "safe-buffer": "^5.1.0", - "through2": "^2.0.3" - } - }, - "remove-trailing-separator": { - "version": "1.1.0", - "dev": true - }, - "repeat-element": { - "version": "1.1.4", - "dev": true - }, - "repeat-string": { - "version": "1.6.1", + "regexp-tree": { + "version": "0.1.27", + "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.27.tgz", + "integrity": "sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==", "dev": true }, - "replace-ext": { - "version": "1.0.1", - "dev": true - }, - "replace-homedir": { - "version": "1.0.0", - "dev": true, - "requires": { - "homedir-polyfill": "^1.0.1", - "is-absolute": "^1.0.0", - "remove-trailing-separator": "^1.1.0" - } - }, - "replacestream": { - "version": "4.0.3", + "regjsparser": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.10.0.tgz", + "integrity": "sha512-qx+xQGZVsy55CH0a1hiVwHmqjLryfh7wQyF5HO07XJ9f7dQMY/gPQHhlyDkIzJKC+x2fUCpCcUODUUUFrm7SHA==", "dev": true, "requires": { - "escape-string-regexp": "^1.0.3", - "object-assign": "^4.0.1", - "readable-stream": "^2.0.2" + "jsesc": "~0.5.0" }, "dependencies": { - "escape-string-regexp": { - "version": "1.0.5", + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", "dev": true } } }, - "request": { - "version": "2.88.2", - "optional": true, - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "dependencies": { - "form-data": { - "version": "2.3.3", - "optional": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - }, - "uuid": { - "version": "3.4.0", - "optional": true - } - } - }, "require-directory": { "version": "2.1.1" }, - "require-main-filename": { - "version": "1.0.1", - "dev": true - }, - "requizzle": { - "version": "0.2.4", - "dev": true, - "requires": { - "lodash": "^4.17.21" - } - }, "resolve": { - "version": "1.22.1", + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "dev": true, "requires": { - "is-core-module": "^2.9.0", + "is-core-module": "^2.13.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" } @@ -29113,38 +22214,10 @@ } } }, - "resolve-dir": { - "version": "1.0.1", - "dev": true, - "requires": { - "expand-tilde": "^2.0.0", - "global-modules": "^1.0.0" - } - }, "resolve-from": { "version": "4.0.0", "dev": true }, - "resolve-from-npm": { - "version": "2.0.4", - "dev": true, - "requires": { - "inspect-with-kind": "^1.0.3", - "npm-cli-dir": "^2.0.2", - "resolve-from": "^4.0.0" - } - }, - "resolve-options": { - "version": "1.1.0", - "dev": true, - "requires": { - "value-or-function": "^3.0.0" - } - }, - "resolve-url": { - "version": "0.2.1", - "dev": true - }, "respjs": { "version": "4.2.0" }, @@ -29156,10 +22229,6 @@ "signal-exit": "^3.0.2" } }, - "ret": { - "version": "0.1.15", - "dev": true - }, "retry": { "version": "0.12.0" }, @@ -29191,21 +22260,6 @@ } } }, - "rsa-compat": { - "version": "1.9.4", - "optional": true, - "requires": { - "keypairs": "^1.2.14", - "node-forge": "^0.7.6", - "ursa-optional": "^0.9.10" - }, - "dependencies": { - "node-forge": { - "version": "0.7.6", - "optional": true - } - } - }, "run-async": { "version": "2.4.1", "dev": true @@ -29233,33 +22287,12 @@ "safe-buffer": { "version": "5.2.1" }, - "safe-regex": { - "version": "1.1.0", - "dev": true, - "requires": { - "ret": "~0.1.10" - } - }, - "safe-replace": { - "version": "1.1.0", - "optional": true - }, "safe-stable-stringify": { "version": "2.4.3" }, "safer-buffer": { "version": "2.1.2", - "devOptional": true - }, - "sanitize-html": { - "version": "1.27.5", - "dev": true, - "requires": { - "htmlparser2": "^4.1.0", - "lodash": "^4.17.15", - "parse-srcset": "^1.0.2", - "postcss": "^7.0.27" - } + "dev": true }, "semver": { "version": "7.5.4", @@ -29277,13 +22310,6 @@ } } }, - "semver-greatest-satisfied-range": { - "version": "1.1.0", - "dev": true, - "requires": { - "sver-compat": "^1.5.0" - } - }, "seq-logging": { "version": "1.1.2", "optional": true @@ -29299,25 +22325,6 @@ "version": "2.0.0", "dev": true }, - "set-value": { - "version": "2.0.1", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "dependencies": { - "is-plain-object": { - "version": "2.0.4", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - } - } - }, "setimmediate": { "version": "1.0.5" }, @@ -29418,98 +22425,6 @@ "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", "dev": true }, - "snapdragon": { - "version": "0.8.2", - "dev": true, - "requires": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "dev": true - }, - "source-map": { - "version": "0.5.7", - "dev": true - } - } - }, - "snapdragon-node": { - "version": "2.1.1", - "dev": true, - "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "kind-of": { - "version": "6.0.3", - "dev": true - } - } - }, - "snapdragon-util": { - "version": "3.0.1", - "dev": true, - "requires": { - "kind-of": "^3.2.0" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, "socks": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", @@ -29546,17 +22461,6 @@ "source-map": { "version": "0.6.1" }, - "source-map-resolve": { - "version": "0.5.3", - "dev": true, - "requires": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, "source-map-support": { "version": "0.5.21", "requires": { @@ -29564,14 +22468,6 @@ "source-map": "^0.6.0" } }, - "source-map-url": { - "version": "0.4.1", - "dev": true - }, - "sparkles": { - "version": "1.0.1", - "dev": true - }, "spdx-correct": { "version": "3.2.0", "dev": true, @@ -29602,37 +22498,6 @@ "through": "2" } }, - "split-string": { - "version": "3.1.0", - "dev": true, - "requires": { - "extend-shallow": "^3.0.0" - }, - "dependencies": { - "extend-shallow": { - "version": "3.0.2", - "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - } - }, - "is-extendable": { - "version": "1.0.1", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - }, - "is-plain-object": { - "version": "2.0.4", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - } - } - }, "split2": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", @@ -29659,21 +22524,6 @@ "version": "1.0.3", "dev": true }, - "sshpk": { - "version": "1.17.0", - "optional": true, - "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - } - }, "ssri": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", @@ -29700,14 +22550,6 @@ "standard-as-callback": { "version": "2.1.0" }, - "static-extend": { - "version": "0.1.2", - "dev": true, - "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - } - }, "stream-combiner": { "version": "0.2.2", "requires": { @@ -29715,14 +22557,6 @@ "through": "~2.3.4" } }, - "stream-exhaust": { - "version": "1.0.2", - "dev": true - }, - "stream-shift": { - "version": "1.0.1", - "dev": true - }, "string_decoder": { "version": "1.1.1", "requires": { @@ -29824,14 +22658,6 @@ "version": "1.0.0", "dev": true }, - "sver-compat": { - "version": "1.5.0", - "dev": true, - "requires": { - "es6-iterator": "^2.0.1", - "es6-symbol": "^3.1.1" - } - }, "synckit": { "version": "0.8.8", "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.8.tgz", @@ -29850,10 +22676,6 @@ } } }, - "taffydb": { - "version": "2.6.2", - "dev": true - }, "tar": { "version": "6.1.13", "requires": { @@ -29926,10 +22748,6 @@ "version": "0.2.0", "dev": true }, - "textextensions": { - "version": "3.3.0", - "dev": true - }, "through": { "version": "2.3.8" }, @@ -29943,18 +22761,6 @@ "xtend": "~4.0.1" } }, - "through2-filter": { - "version": "3.0.0", - "dev": true, - "requires": { - "through2": "~2.0.0", - "xtend": "~4.0.0" - } - }, - "time-stamp": { - "version": "1.1.0", - "dev": true - }, "tiny-glob": { "version": "0.2.9", "dev": true, @@ -29963,150 +22769,6 @@ "globrex": "^0.1.2" } }, - "tmp": { - "version": "0.1.0", - "dev": true, - "requires": { - "rimraf": "^2.6.3" - }, - "dependencies": { - "glob": { - "version": "7.2.3", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "rimraf": { - "version": "2.7.1", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } - } - }, - "to-absolute-glob": { - "version": "2.0.2", - "dev": true, - "requires": { - "is-absolute": "^1.0.0", - "is-negated-glob": "^1.0.0" - } - }, - "to-object-path": { - "version": "0.3.0", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "to-regex": { - "version": "3.0.2", - "dev": true, - "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - }, - "dependencies": { - "define-property": { - "version": "2.0.2", - "dev": true, - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - } - }, - "extend-shallow": { - "version": "3.0.2", - "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "is-extendable": { - "version": "1.0.1", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - }, - "is-plain-object": { - "version": "2.0.4", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "kind-of": { - "version": "6.0.3", - "dev": true - } - } - }, - "to-regex-range": { - "version": "2.1.1", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - }, - "to-through": { - "version": "2.0.0", - "dev": true, - "requires": { - "through2": "^2.0.3" - } - }, - "tough-cookie": { - "version": "2.5.0", - "optional": true, - "requires": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - } - }, "tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", @@ -30512,21 +23174,6 @@ "make-fetch-happen": "^11.1.1" } }, - "tunnel-agent": { - "version": "0.6.0", - "optional": true, - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "tweetnacl": { - "version": "0.14.5", - "optional": true - }, - "type": { - "version": "1.2.0", - "dev": true - }, "type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -30610,59 +23257,11 @@ "integrity": "sha512-+2/g0Fds1ERlP6JsakQQDXjZdZMM+rqpamFZJEKh4kwTIn3iDkgKtby0CeNd5ATNZ4Ry1ax15TMx0W2V+miizQ==", "dev": true }, - "uc.micro": { - "version": "1.0.6", - "dev": true - }, "uglify-js": { "version": "3.17.4", "dev": true, "optional": true }, - "unc-path-regex": { - "version": "0.1.2", - "dev": true - }, - "underscore": { - "version": "1.13.6", - "dev": true - }, - "undertaker": { - "version": "1.3.0", - "dev": true, - "requires": { - "arr-flatten": "^1.0.1", - "arr-map": "^2.0.0", - "bach": "^1.0.0", - "collection-map": "^1.0.0", - "es6-weak-map": "^2.0.1", - "fast-levenshtein": "^1.0.0", - "last-run": "^1.1.0", - "object.defaults": "^1.0.0", - "object.reduce": "^1.0.0", - "undertaker-registry": "^1.0.0" - }, - "dependencies": { - "fast-levenshtein": { - "version": "1.1.4", - "dev": true - } - } - }, - "undertaker-registry": { - "version": "1.0.1", - "dev": true - }, - "union-value": { - "version": "1.0.1", - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" - } - }, "unique-filename": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", @@ -30681,14 +23280,6 @@ "imurmurhash": "^0.1.4" } }, - "unique-stream": { - "version": "2.3.1", - "dev": true, - "requires": { - "json-stable-stringify-without-jsonify": "^1.0.1", - "through2-filter": "^3.0.0" - } - }, "universal-user-agent": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", @@ -30706,65 +23297,23 @@ "nan": "^2.16.0" } }, - "unset-value": { - "version": "1.0.0", + "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, "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "dependencies": { - "has-value": { - "version": "0.3.1", - "dev": true, - "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "dev": true, - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "has-values": { - "version": "0.1.4", - "dev": true - } + "escalade": "^3.1.1", + "picocolors": "^1.0.0" } }, - "upath": { - "version": "1.2.0", - "dev": true - }, "uri-js": { "version": "4.4.1", - "devOptional": true, + "dev": true, "requires": { "punycode": "^2.1.0" } }, - "urix": { - "version": "0.1.0", - "dev": true - }, - "ursa-optional": { - "version": "0.9.10", - "optional": true, - "requires": { - "bindings": "^1.3.0", - "nan": "^2.11.1" - } - }, - "use": { - "version": "3.1.1", - "dev": true - }, "util-deprecate": { "version": "1.0.2" }, @@ -30784,13 +23333,6 @@ "version": "3.0.1", "dev": true }, - "v8flags": { - "version": "3.2.0", - "dev": true, - "requires": { - "homedir-polyfill": "^1.0.1" - } - }, "validate-npm-package-license": { "version": "3.0.4", "dev": true, @@ -30814,82 +23356,6 @@ "integrity": "sha512-Ii+sehpSfZy+At5nPdnyMhx78fEoPDkR2XW/zimHEL3MyGJQOCQ7WeP20jPYRz7ZCpcKLB21NxuXHF3bxjStBQ==", "dev": true }, - "value-or-function": { - "version": "3.0.0", - "dev": true - }, - "verror": { - "version": "1.10.0", - "optional": true, - "requires": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - }, - "dependencies": { - "core-util-is": { - "version": "1.0.2", - "optional": true - } - } - }, - "vinyl": { - "version": "2.2.1", - "dev": true, - "requires": { - "clone": "^2.1.1", - "clone-buffer": "^1.0.0", - "clone-stats": "^1.0.0", - "cloneable-readable": "^1.0.0", - "remove-trailing-separator": "^1.0.1", - "replace-ext": "^1.0.0" - } - }, - "vinyl-fs": { - "version": "3.0.3", - "dev": true, - "requires": { - "fs-mkdirp-stream": "^1.0.0", - "glob-stream": "^6.1.0", - "graceful-fs": "^4.0.0", - "is-valid-glob": "^1.0.0", - "lazystream": "^1.0.0", - "lead": "^1.0.0", - "object.assign": "^4.0.4", - "pumpify": "^1.3.5", - "readable-stream": "^2.3.3", - "remove-bom-buffer": "^3.0.0", - "remove-bom-stream": "^1.2.0", - "resolve-options": "^1.1.0", - "through2": "^2.0.0", - "to-through": "^2.0.0", - "value-or-function": "^3.0.0", - "vinyl": "^2.0.0", - "vinyl-sourcemap": "^1.1.0" - } - }, - "vinyl-sourcemap": { - "version": "1.1.0", - "dev": true, - "requires": { - "append-buffer": "^1.0.2", - "convert-source-map": "^1.5.0", - "graceful-fs": "^4.1.6", - "normalize-path": "^2.1.1", - "now-and-later": "^2.0.0", - "remove-bom-buffer": "^3.0.0", - "vinyl": "^2.0.0" - }, - "dependencies": { - "normalize-path": { - "version": "2.1.1", - "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - } - } - }, "vscode-oniguruma": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz", @@ -30934,10 +23400,6 @@ "isexe": "^2.0.0" } }, - "which-module": { - "version": "1.0.0", - "dev": true - }, "wide-align": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", @@ -30947,10 +23409,6 @@ "string-width": "^1.0.2 || 2 || 3 || 4" } }, - "win-user-installed-npm-cli-path": { - "version": "2.0.4", - "dev": true - }, "winston": { "version": "3.8.2", "requires": { @@ -31147,10 +23605,6 @@ } } }, - "xmlcreate": { - "version": "2.0.4", - "dev": true - }, "xtend": { "version": "4.0.2", "dev": true @@ -31162,7 +23616,9 @@ "version": "4.0.0" }, "yargs": { - "version": "17.7.1", + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "requires": { "cliui": "^8.0.1", "escalade": "^3.1.1", @@ -31214,10 +23670,6 @@ "version": "0.1.0", "dev": true }, - "yoctodelay": { - "version": "1.2.0", - "dev": true - }, "z-schema": { "version": "5.0.5", "resolved": "https://registry.npmjs.org/z-schema/-/z-schema-5.0.5.tgz", diff --git a/package.json b/package.json index 9031f08eec..c41b8bee5f 100644 --- a/package.json +++ b/package.json @@ -37,7 +37,7 @@ "@types/ioredis": "^4.28.10", "@types/jsonwebtoken": "^8.5.9", "@types/mime-types": "^2.1.1", - "@types/mocha": "^10.0.1", + "@types/mocha": "^10.0.6", "@types/node": "^17.0.5", "@types/node-forge": "^1.3.0", "@types/node-schedule": "^2.1.0", @@ -56,17 +56,14 @@ "chai": "^4.3.4", "chai-as-promised": "^7.1.1", "cpy-cli": "^4.2.0", - "eslint": "^8.56.0", + "eslint": "^8.57.0", "eslint-config-prettier": "^9.1.0", "eslint-plugin-jsdoc": "^48.2.1", "eslint-plugin-prettier": "^5.1.3", + "eslint-plugin-unicorn": "^52.0.0", "fs-extra": "^11.1.0", - "get-spdx-license-ids": "^2.1.0", - "gulp": "^4.0.2", - "gulp-jsdoc3": "^3.0.0", - "gulp-replace": "^1.1.4", "lerna": "^7.1.4", - "mocha": "^10.1.0", + "mocha": "^10.4.0", "prettier": "^3.0.1", "semver": "^7.5.2", "sinon": "^15.0.0", @@ -92,10 +89,10 @@ "update-schema": "ts-node schemas/updateSchemas.ts", "lint": "eslint .", "prettier": "eslint . --fix", - "test": "mocha -r ts-node/register packages/controller/test/*.ts --exit", - "test-jsonl": "mocha -r ts-node/register packages/controller/test/jsonl/*.ts --exit", - "test-redis-socket": "mocha -r ts-node/register packages/controller/test/redis-socket/*.ts --exit", - "test-redis-sentinel": "mocha -r ts-node/register packages/controller/test/redis-sentinel/*.ts --exit", + "test": "mocha packages/controller/test/*.ts --exit", + "test-jsonl": "mocha packages/controller/test/jsonl/*.ts --exit", + "test-redis-socket": "mocha packages/controller/test/redis-socket/*.ts --exit", + "test-redis-sentinel": "mocha packages/controller/test/redis-sentinel/*.ts --exit", "test-types-check": "tsc --project packages/controller/test/tsconfig.json", "test-types": "npm run test-types-check && npm run test --workspace=@iobroker/types" } diff --git a/packages/adapter/package.json b/packages/adapter/package.json index 1973431d96..0bdad663a0 100644 --- a/packages/adapter/package.json +++ b/packages/adapter/package.json @@ -1,5 +1,6 @@ { "name": "@iobroker/js-controller-adapter", + "type": "module", "version": "5.0.20-alpha.0-20240409-d68ed299", "engines": { "node": ">=18.0.0" @@ -23,7 +24,8 @@ "node.extend": "^2.0.2", "pidusage": "^3.0.2", "readline": "^1.3.0", - "semver": "^7.5.2" + "semver": "^7.5.2", + "yargs": "^17.7.2" }, "keywords": [ "ioBroker" @@ -40,7 +42,7 @@ }, "scripts": { "build": "tsc -b tsconfig.build.json && tsc-alias", - "postbuild": "esm2cjs --in build/esm --out build/cjs -l error && cpy ./cert ../build/esm --cwd=src && cpy ./cert ../build/cjs --cwd=src && cpy ./**/*.d.ts ./build/cjs/ --cwd=build/esm/", + "postbuild": "esm2cjs --in build/esm --out build/cjs -l error -t node18 && cpy ./cert ../build/esm --cwd=src && cpy ./cert ../build/cjs --cwd=src && cpy ./**/*.d.ts ./build/cjs/ --cwd=build/esm/", "build:doc": "typedoc --excludeExternals --excludeProtected --excludePrivate --plugin typedoc-plugin-missing-exports --plugin typedoc-plugin-markdown src/lib/adapter/adapter.ts --out ../controller/doc" }, "exports": { diff --git a/packages/adapter/src/index.ts b/packages/adapter/src/index.ts index edeac77251..321afde59e 100644 --- a/packages/adapter/src/index.ts +++ b/packages/adapter/src/index.ts @@ -1,3 +1,3 @@ -export { Adapter, AdapterClass } from './lib/adapter/adapter'; -export { Validator } from './lib/adapter/validator'; -export * from '@/lib/_Types'; +export { Adapter, AdapterClass } from '@/lib/adapter/adapter.js'; +export { Validator } from '@/lib/adapter/validator.js'; +export * from '@/lib/_Types.js'; diff --git a/packages/adapter/src/lib/adapter/adapter.ts b/packages/adapter/src/lib/adapter/adapter.ts index 454d2bb1ff..02bcc8e757 100644 --- a/packages/adapter/src/lib/adapter/adapter.ts +++ b/packages/adapter/src/lib/adapter/adapter.ts @@ -10,19 +10,22 @@ import { PluginHandler } from '@iobroker/plugin-base'; import semver from 'semver'; import path from 'node:path'; import { getObjectsConstructor, getStatesConstructor } from '@iobroker/js-controller-common-db'; -import { decryptArray, encryptArray, getSupportedFeatures, isMessageboxSupported } from '@/lib/adapter/utils'; -// eslint-disable-next-line @typescript-eslint/no-var-requires -const extend = require('node.extend'); +import { decryptArray, encryptArray, getSupportedFeatures, isMessageboxSupported } from '@/lib/adapter/utils.js'; +// @ts-expect-error no ts file +import extend from 'node.extend'; import type { Client as StatesInRedisClient } from '@iobroker/db-states-redis'; import type { Client as ObjectsInRedisClient } from '@iobroker/db-objects-redis'; import type Winston from 'winston'; import type NodeSchedule from 'node-schedule'; +import yargs from 'yargs/yargs'; // local version is always the same as controller version, since lerna exact: true is used -import { version as controllerVersion } from '@iobroker/js-controller-adapter/package.json'; +import packJson from '@iobroker/js-controller-adapter/package.json' assert { type: 'json' }; -import { Log } from '@/lib/adapter/log'; -import { Validator } from './validator'; +const controllerVersion = packJson.version; + +import { Log } from '@/lib/adapter/log.js'; +import { Validator } from './validator.js'; const { FORBIDDEN_CHARS } = tools; import { @@ -40,7 +43,7 @@ import { NO_PROTECT_ADAPTERS, STATE_QUALITY, type SupportedFeature -} from '@/lib/adapter/constants'; +} from '@/lib/adapter/constants.js'; import type { PluginHandlerSettings } from '@iobroker/plugin-base/types'; import type { AdapterOptions, @@ -109,10 +112,13 @@ import type { AllPropsUnknown, IoPackageInstanceObject, AliasTargetEntry -} from '@/lib/_Types'; -import { UserInterfaceMessagingController } from '@/lib/adapter/userInterfaceMessagingController'; +} from '@/lib/_Types.js'; +import { UserInterfaceMessagingController } from '@/lib/adapter/userInterfaceMessagingController.js'; import { SYSTEM_ADAPTER_PREFIX } from '@iobroker/js-controller-common/constants'; +import * as url from 'node:url'; +// eslint-disable-next-line unicorn/prefer-module +const thisDir = url.fileURLToPath(new URL('.', import.meta.url || 'file://' + __dirname)); tools.ensureDNSOrder(); /** @@ -675,7 +681,6 @@ export class AdapterClass extends EventEmitter { */ requireLog?: (isActive: boolean, options?: Partial) => Promise | void; private logOffTimer?: NodeJS.Timeout | null; - private logRedirect?: (isActive: boolean, id: string) => void; private logRequired?: boolean; private patterns?: Record; private statesConnectedTime?: number; @@ -724,48 +729,73 @@ export class AdapterClass extends EventEmitter { this._config = this._options.config || this._config; this.startedInCompactMode = !!this._options.compact; - // possible arguments - // 0,1,.. - instance - // info, debug, warn, error - log level - // --force - // --logs - // --silent - // --install - // --debug = --force + --logs - if (process.argv) { - for (const argument of process.argv) { - if ( - argument === 'info' || - argument === 'debug' || - argument === 'error' || - argument === 'warn' || - argument === 'silly' - ) { - this._config.log.level = argument; - this.overwriteLogLevel = true; - } else if (argument === '--silent') { - this._config.isInstall = true; - } else if (argument === '--install') { - this._config.isInstall = true; - } else if (argument === '--logs') { - this._config.consoleOutput = true; - } else if (argument === '--force') { - this._config.forceIfDisabled = true; - } else if (argument === '--debug') { - this._config.forceIfDisabled = true; - this._config.consoleOutput = true; - if (this._config.log.level !== 'silly') { - this._config.log.level = 'debug'; - this.overwriteLogLevel = true; - } - } else if (argument === '--console') { - this._config.consoleOutput = true; - } else if (parseInt(argument, 10).toString() === argument) { - this._config.instance = parseInt(argument, 10); + const parsedArgs = yargs(process.argv.slice(2)) + .options({ + loglevel: { + describe: 'Define adapter log level', + type: 'string' + }, + silent: { + describe: 'If is install run', + type: 'boolean' + }, + install: { + describe: 'If is install run', + type: 'boolean' + }, + logs: { + describe: 'If console output desired', + type: 'boolean' + }, + console: { + describe: 'If console output desired', + type: 'boolean' + }, + force: { + describe: 'If force start even if disabled', + type: 'boolean' + }, + debug: { + describe: 'Same as --force combined with --console', + type: 'boolean' + }, + instance: { + describe: 'Instance id, e.g. 0', + type: 'string' } + }) + .parseSync(); + + if (parsedArgs.loglevel && ['info', 'debug', 'error', 'warn', 'silly'].includes(parsedArgs.loglevel)) { + this._config.log.level = parsedArgs.loglevel; + this.overwriteLogLevel = true; + } + + if (parsedArgs.silent || parsedArgs.install) { + this._config.isInstall = true; + } + + if (parsedArgs.logs || parsedArgs.console) { + this._config.consoleOutput = true; + } + + if (parsedArgs.force) { + this._config.forceIfDisabled = true; + } + + if (parsedArgs.debug) { + this._config.forceIfDisabled = true; + this._config.consoleOutput = true; + if (this._config.log.level !== 'silly') { + this._config.log.level = 'debug'; + this.overwriteLogLevel = true; } } + if (parsedArgs.instance && parseInt(parsedArgs.instance, 10).toString() === parsedArgs.instance) { + this._config.instance = parseInt(parsedArgs.instance, 10); + } + this._config.log.level = this._config.log.level || 'info'; this._config.log.noStdout = !this._config.consoleOutput; @@ -10008,7 +10038,7 @@ export class AdapterClass extends EventEmitter { if (obj?.native?.licenses?.length) { const now = Date.now(); - const cert = fs.readFileSync(path.join(__dirname, '..', '..', 'cert', 'cloudCert.crt')); + const cert = fs.readFileSync(path.join(thisDir, '..', '..', 'cert', 'cloudCert.crt')); let adapterObj: ioBroker.AdapterObject | null | undefined; if (adapterName) { try { @@ -10097,6 +10127,27 @@ export class AdapterClass extends EventEmitter { return licenses; } + /** + * Add given id to log redirect list + * + * @param isActive if id should be added or removed + * @param id the id to add + */ + private logRedirect(isActive: boolean, id: string): void { + // ignore itself + if (id === `system.adapter.${this.namespace}`) { + return; + } + + if (isActive) { + if (!this.logList.has(id)) { + this.logList.add(id); + } + } else { + this.logList.delete(id); + } + } + private _reportStatus(): void { if (!this.#states) { return; @@ -10336,7 +10387,7 @@ export class AdapterClass extends EventEmitter { const id = keys[i].substring(0, keys[i].length - '.logging'.length); if (typeof objPart === 'object' && (objPart.val === true || objPart.val === 'true')) { - this.logRedirect!(true, id); + this.logRedirect(true, id); } } if (this.logList.size && messages?.length && this.#states) { @@ -10354,21 +10405,6 @@ export class AdapterClass extends EventEmitter { messages = null; } - this.logRedirect = (isActive, id): void => { - // ignore itself - if (id === `system.adapter.${this.namespace}`) { - return; - } - - if (isActive) { - if (!this.logList.has(id)) { - this.logList.add(id); - } - } else { - this.logList.delete(id); - } - }; - this._options.logTransporter = this._options.logTransporter || this.ioPack.common.logTransporter; if (this._options.logTransporter) { @@ -10704,7 +10740,7 @@ export class AdapterClass extends EventEmitter { this.pluginHandler.instanciatePlugin( pluginName, this.pluginHandler.getPluginConfig(pluginName) || {}, - __dirname + thisDir ); this.pluginHandler.setDatabaseForPlugin(pluginName, this.#objects, this.#states); this.pluginHandler.initPlugin(pluginName, this.adapterConfig || {}); @@ -11703,7 +11739,7 @@ export class AdapterClass extends EventEmitter { } this.inited = true; - this._initStates(this._prepareInitAdapter.bind(this)); + this._initStates(() => this._prepareInitAdapter()); }); }; @@ -11730,7 +11766,7 @@ export class AdapterClass extends EventEmitter { throw new Error(`Unknown states type: ${this._config.states.type}: ${err.message}`); } } else { - this.States = getStatesConstructor(); + this.States = await getStatesConstructor(); } if (this._config.objects && this._config.objects.type) { @@ -11740,7 +11776,7 @@ export class AdapterClass extends EventEmitter { throw new Error(`Unknown objects type: ${this._config.objects.type}: ${err.message}`); } } else { - this.Objects = getObjectsConstructor(); + this.Objects = await getObjectsConstructor(); } const ifaces = os.networkInterfaces(); @@ -11778,7 +11814,7 @@ export class AdapterClass extends EventEmitter { this.pluginHandler = new PluginHandler(pluginSettings); try { - this.pluginHandler.addPlugins(this.ioPack.common.plugins, [this.adapterDir, __dirname]); // first resolve from adapter directory, else from js-controller + this.pluginHandler.addPlugins(this.ioPack.common.plugins, [this.adapterDir, thisDir]); // first resolve from adapter directory, else from js-controller } catch (e) { this._logger.error(`Could not add plugins: ${e.message}`); } diff --git a/packages/adapter/src/lib/adapter/userInterfaceMessagingController.ts b/packages/adapter/src/lib/adapter/userInterfaceMessagingController.ts index 620567eb07..dfbba65a06 100644 --- a/packages/adapter/src/lib/adapter/userInterfaceMessagingController.ts +++ b/packages/adapter/src/lib/adapter/userInterfaceMessagingController.ts @@ -1,11 +1,11 @@ import type { Client as StatesInRedisClient } from '@iobroker/db-states-redis'; -import type { AdapterClass } from './adapter'; +import type { AdapterClass } from '@/lib/adapter/adapter.js'; import type { UserInterfaceClientRemoveMessage, UserInterfaceClientSubscribeHandler, UserInterfaceClientSubscribeReturnType, UserInterfaceClientUnsubscribeHandler -} from '../_Types'; +} from '@/lib/_Types.js'; export interface HeartbeatTimer { /** The actual timer */ diff --git a/packages/adapter/src/lib/adapter/utils.ts b/packages/adapter/src/lib/adapter/utils.ts index 05cb795260..75565ffc2b 100644 --- a/packages/adapter/src/lib/adapter/utils.ts +++ b/packages/adapter/src/lib/adapter/utils.ts @@ -1,5 +1,5 @@ import { isObject, isControllerUiUpgradeSupported, encrypt, decrypt } from '@iobroker/js-controller-common/tools'; -import { SUPPORTED_FEATURES, type SupportedFeature } from './constants'; +import { SUPPORTED_FEATURES, type SupportedFeature } from '@/lib/adapter/constants.js'; interface EncryptArrayOptions { /** The objects whose values should be en/decrypted */ diff --git a/packages/adapter/src/lib/adapter/validator.ts b/packages/adapter/src/lib/adapter/validator.ts index a07b72a18d..f2e7774e03 100644 --- a/packages/adapter/src/lib/adapter/validator.ts +++ b/packages/adapter/src/lib/adapter/validator.ts @@ -1,4 +1,4 @@ -import { MAX_TIMEOUT, SYSTEM_ADMIN_USER } from '@/lib/adapter/constants'; +import { MAX_TIMEOUT, SYSTEM_ADMIN_USER } from '@/lib/adapter/constants.js'; import { tools, EXIT_CODES } from '@iobroker/js-controller-common'; type Callback = (...args: any[]) => void | Promise; diff --git a/packages/cli/package.json b/packages/cli/package.json index ba4d510bde..09d7eb0551 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,5 +1,6 @@ { "name": "@iobroker/js-controller-cli", + "type": "module", "version": "5.0.20-alpha.0-20240409-d68ed299", "engines": { "node": ">=18.0.0" @@ -34,7 +35,7 @@ }, "scripts": { "build": "tsc -b tsconfig.build.json && tsc-alias", - "postbuild": "esm2cjs --in build/esm --out build/cjs -l error && cpy ./**/*.d.ts ./build/cjs/ --cwd=build/esm/" + "postbuild": "esm2cjs --in build/esm --out build/cjs -l error -t node18 && cpy ./**/*.d.ts ./build/cjs/ --cwd=build/esm/" }, "main": "build/cjs/index.js", "module": "build/esm/index.js", diff --git a/packages/cli/src/index.ts b/packages/cli/src/index.ts index 0e7b83b833..8dd8e3391e 100644 --- a/packages/cli/src/index.ts +++ b/packages/cli/src/index.ts @@ -1,8 +1,8 @@ -export { execute } from './lib/setup'; -export { dbConnectAsync } from './lib/setup/dbConnection'; -export { Vendor } from './lib/setup/setupVendor'; -export { Upload } from './lib/setup/setupUpload'; -export { Upgrade } from './lib/setup/setupUpgrade'; -export { BackupRestore } from './lib/setup/setupBackup'; -export { PacketManager, type UpgradePacket } from './lib/setup/setupPacketManager'; -export * from './lib/_Types'; +export { execute } from '@/lib/setup.js'; +export { dbConnectAsync } from '@/lib/setup/dbConnection.js'; +export { Vendor } from '@/lib/setup/setupVendor.js'; +export { Upload } from '@/lib/setup/setupUpload.js'; +export { Upgrade } from '@/lib/setup/setupUpgrade.js'; +export { BackupRestore } from '@/lib/setup/setupBackup.js'; +export { PacketManager, type UpgradePacket } from '@/lib/setup/setupPacketManager.js'; +export * from '@/lib/_Types.js'; diff --git a/packages/cli/src/lib/_Types.ts b/packages/cli/src/lib/_Types.ts index 5d1040ad59..56b2233e61 100644 --- a/packages/cli/src/lib/_Types.ts +++ b/packages/cli/src/lib/_Types.ts @@ -16,8 +16,8 @@ export interface DbConnectAsyncReturn { states: StatesRedisClient; isOffline?: boolean; objectsDBType: string; - /** the iobroker.json config file */ - config?: Record; + /** The iobroker.json config file */ + config: ioBroker.IoBrokerJson; } export type DbConnectAsync = (onlyCheck: boolean, params?: Record) => Promise; diff --git a/packages/cli/src/lib/cli/cliCert.ts b/packages/cli/src/lib/cli/cliCert.ts index cf4c13c04c..62378eadce 100644 --- a/packages/cli/src/lib/cli/cliCert.ts +++ b/packages/cli/src/lib/cli/cliCert.ts @@ -1,6 +1,6 @@ import { CLICommand, type CLICommandOptions } from './cliCommand.js'; -import { CLIObjects } from './cliObjects'; -import * as messages from './messages'; +import { CLIObjects } from './cliObjects.js'; +import * as messages from './messages.js'; import { tools, EXIT_CODES } from '@iobroker/js-controller-common'; /** Command ioBroker cert ... */ diff --git a/packages/cli/src/lib/cli/cliCommand.ts b/packages/cli/src/lib/cli/cliCommand.ts index da44f5182c..231d2dd268 100644 --- a/packages/cli/src/lib/cli/cliCommand.ts +++ b/packages/cli/src/lib/cli/cliCommand.ts @@ -1,4 +1,4 @@ -import type { DbConnectCallback } from '../_Types'; +import type { DbConnectCallback } from '../_Types.js'; export interface CLICommandContext { /** Invoke this before doing anything in the database */ @@ -37,9 +37,10 @@ export interface CLICommandParams { export type CLICommandOptions = CLICommandContext & CLICommandParams; /** The base class for any CLI command */ -export class CLICommand { - protected readonly options: CLICommandOptions; - constructor(options: CLICommandOptions) { +export class CLICommand { + protected readonly options: TCommandOptions; + + constructor(options: TCommandOptions) { if (options === null || options === undefined) { throw new Error(`No options given`); } diff --git a/packages/cli/src/lib/cli/cliDebug.ts b/packages/cli/src/lib/cli/cliDebug.ts index bb3f684584..1117593146 100644 --- a/packages/cli/src/lib/cli/cliDebug.ts +++ b/packages/cli/src/lib/cli/cliDebug.ts @@ -1,8 +1,8 @@ import * as CLI from './messages.js'; import { CLICommand, type CLICommandOptions } from './cliCommand.js'; -import * as CLITools from './cliTools'; +import * as CLITools from './cliTools.js'; import { tools, EXIT_CODES } from '@iobroker/js-controller-common'; -import { fork } from 'child_process'; +import { fork } from 'node:child_process'; /** Command ioBroker debug ... */ export class CLIDebug extends CLICommand { diff --git a/packages/cli/src/lib/cli/cliHost.ts b/packages/cli/src/lib/cli/cliHost.ts index 8184a8f2dd..6613b14565 100644 --- a/packages/cli/src/lib/cli/cliHost.ts +++ b/packages/cli/src/lib/cli/cliHost.ts @@ -1,9 +1,9 @@ -import * as CLI from './messages'; -import { CLICommand, type CLICommandOptions } from './cliCommand'; -import { enumHosts, enumObjects, getObjectFrom, enumInstances } from './cliTools'; +import * as CLI from './messages.js'; +import { CLICommand, type CLICommandOptions } from './cliCommand.js'; +import { enumHosts, enumObjects, getObjectFrom, enumInstances } from './cliTools.js'; import { tools, EXIT_CODES } from '@iobroker/js-controller-common'; import type { Client as ObjectsClient } from '@iobroker/db-objects-redis'; -import os from 'os'; +import os from 'node:os'; import fs from 'fs-extra'; /** Command iobroker host ... */ diff --git a/packages/cli/src/lib/cli/cliLogs.ts b/packages/cli/src/lib/cli/cliLogs.ts index 4fbb15f45a..22e093696a 100644 --- a/packages/cli/src/lib/cli/cliLogs.ts +++ b/packages/cli/src/lib/cli/cliLogs.ts @@ -1,9 +1,12 @@ -import { CLICommand, type CLICommandOptions } from './cliCommand'; +import { CLICommand, type CLICommandOptions } from './cliCommand.js'; import { tools, logger as toolsLogger } from '@iobroker/js-controller-common'; import chokidar from 'chokidar'; import fs from 'fs-extra'; -import os from 'os'; +import os from 'node:os'; import es from 'event-stream'; +import { createRequire } from 'node:module'; +// eslint-disable-next-line unicorn/prefer-module +const require = createRequire(import.meta.url || 'file://' + __dirname); const { getConfigFileName } = tools; diff --git a/packages/cli/src/lib/cli/cliMessage.js b/packages/cli/src/lib/cli/cliMessage.ts similarity index 76% rename from packages/cli/src/lib/cli/cliMessage.js rename to packages/cli/src/lib/cli/cliMessage.ts index 294daf0a03..72c4fafda4 100644 --- a/packages/cli/src/lib/cli/cliMessage.js +++ b/packages/cli/src/lib/cli/cliMessage.ts @@ -1,22 +1,21 @@ -'use strict'; -const CLI = require('./messages.js'); -const { CLICommand } = require('./cliCommand.js'); -const { enumInstances } = require('./cliTools'); +import * as CLI from './messages.js'; +import { CLICommand, type CLICommandOptions } from './cliCommand.js'; +import { enumInstances } from './cliTools.js'; +import type { Client as StatesClient } from '@iobroker/db-states-redis'; -/** Command iobroker object ... */ -module.exports = class CLIMessage extends CLICommand { - /** @param {import('./cliCommand').CLICommandOptions} options */ - constructor(options) { +export class CLIMessage extends CLICommand { + /** @param options The CLI Message options */ + constructor(options: CLICommandOptions) { super(options); } /** * Executes a command - * @param {any[]} args + * + * @param args parsed arguments */ - execute(args) { + execute(args: any[]): void { const { callback, dbConnect, showHelp } = this.options; - /** @type {[string, string, any?]} */ let [adapter, command, message] = args; if (adapter === null || adapter === undefined) { CLI.error.requiredArgumentMissing('adapter'); @@ -49,7 +48,6 @@ module.exports = class CLIMessage extends CLICommand { adapter = adapter.substring(0, pos); } let messageTargets = []; - /** @type {string[]} */ if (instance === null) { // This message wasn't meant for a specific instance, const adapterInstances = await enumInstances(objects, adapter); @@ -72,16 +70,15 @@ module.exports = class CLIMessage extends CLICommand { } }); } -}; +} /** - * @param {any} states The States DB - * @param {string} targetId The instance or adapter to send the message to - * @param {string} command The command to send - * @param {any} message The message to send - * @returns {Promise} + * @param states The States DB + * @param targetId The instance or adapter to send the message to + * @param command The command to send + * @param message The message to send */ -async function sendMessage(states, targetId, command, message) { +async function sendMessage(states: StatesClient, targetId: string, command: string, message: string): Promise { await states.pushMessage(targetId, { command, message, from: 'cli' }); CLI.success.messageSent(targetId, command, message); } diff --git a/packages/cli/src/lib/cli/cliObjects.ts b/packages/cli/src/lib/cli/cliObjects.ts index e6c20efe39..1739b51aee 100644 --- a/packages/cli/src/lib/cli/cliObjects.ts +++ b/packages/cli/src/lib/cli/cliObjects.ts @@ -1,7 +1,7 @@ -import { CLICommand, type CLICommandOptions } from './cliCommand'; +import { CLICommand, type CLICommandOptions } from './cliCommand.js'; import * as CLI from './messages.js'; -import { formatValue } from './cliTools'; +import { formatValue } from './cliTools.js'; import { tools, EXIT_CODES } from '@iobroker/js-controller-common'; import type { Client as ObjectsClient } from '@iobroker/db-objects-redis'; import type { Client as StatesClient } from '@iobroker/db-states-redis'; @@ -561,7 +561,7 @@ export class CLIObjects extends CLICommand { // if no auto confirmation, ask user if (!this.options.f && this.options.y && !this.options.yes) { - const rl = (await import('readline')).createInterface({ + const rl = (await import('node:readline')).createInterface({ input: process.stdin, output: process.stdout }); diff --git a/packages/cli/src/lib/cli/cliPlugin.js b/packages/cli/src/lib/cli/cliPlugin.ts similarity index 75% rename from packages/cli/src/lib/cli/cliPlugin.js rename to packages/cli/src/lib/cli/cliPlugin.ts index 35e8b33991..b9cae3edf2 100644 --- a/packages/cli/src/lib/cli/cliPlugin.js +++ b/packages/cli/src/lib/cli/cliPlugin.ts @@ -1,25 +1,34 @@ -'use strict'; -const CLI = require('./messages.js'); -const { CLICommand } = require('./cliCommand.js'); -const { getObjectFrom } = require('./cliTools'); -const { tools } = require('@iobroker/js-controller-common'); -const fs = require('fs'); -const path = require('path'); +import * as CLI from './messages.js'; +import { type CLICommandOptions, CLICommand } from './cliCommand.js'; +import { getObjectFrom } from './cliTools.js'; +import { tools } from '@iobroker/js-controller-common'; +import fs from 'fs-extra'; +import path from 'node:path'; +import { createRequire } from 'node:module'; +const require = createRequire(import.meta.url); const controllerIoPackPath = require.resolve('iobroker.js-controller/io-package.json'); +interface CLIPluginOptions extends CLICommandOptions { + /** If plugin is scoped on adapter */ + adapter?: string; + /** If plugin is scoped on instance */ + instance?: string; +} + /** Command iobroker plugin [--host this/hostname] ... */ -module.exports = class CLIPlugin extends CLICommand { - /** @param {CLICommandOptions} options */ - constructor(options) { +export class CLIPlugin extends CLICommand { + /** @param options the cli command options */ + constructor(options: CLIPluginOptions) { super(options); } /** * Executes a command - * @param {any[]} args + * + * @param args parsed cli args */ - execute(args) { + execute(args: any[]): void { const { callback, showHelp } = this.options; const command = args[0]; @@ -41,25 +50,23 @@ module.exports = class CLIPlugin extends CLICommand { /** * Enables or disables the given plugin - * @param {any[]} args - * @param {boolean} enabled + * + * @param args the parsed CLI args + * @param enabled if plugin should be enabled */ - set(args, enabled) { + set(args: any[], enabled: boolean): void { const { callback, dbConnect } = this.options; - /** @type {string} */ - const pluginName = args[1]; + const pluginName: string = args[1]; if (!pluginName) { CLI.error.requiredArgumentMissing('pluginName', 'plugin enable '); return void callback(34); } - /** @type {string | undefined} */ - let hostname; - /** @type {string | undefined} */ - let instance; + let hostname: string; + let instance: string; if (this.options.adapter || this.options.instance) { - instance = this.options.adapter || this.options.instance; + instance = (this.options.adapter || this.options.instance) as string; // default to instance 0 if (!/\.\d+$/.test(instance)) { instance += '.0'; @@ -77,7 +84,7 @@ module.exports = class CLIPlugin extends CLICommand { try { // Check if the host or instance exists - /** @type {string} */ let objectNamespace; + let objectNamespace: string; if (hostname) { objectNamespace = `system.host.${hostname}`; const hostObject = await objects.getObject(objectNamespace); @@ -154,24 +161,22 @@ module.exports = class CLIPlugin extends CLICommand { /** * Prints the status of the given plugin - * @param {any[]} args + * + * @param args the parsed CLI arguments */ - status(args) { + status(args: any[]): void { const { callback, dbConnect } = this.options; - /** @type {string} */ const pluginName = args[1]; if (!pluginName) { CLI.error.requiredArgumentMissing('pluginName', 'plugin status '); return void callback(34); } - /** @type {string | undefined} */ - let hostname; - /** @type {string | undefined} */ - let instance; + let hostname: string; + let instance: string; if (this.options.adapter || this.options.instance) { - instance = this.options.adapter || this.options.instance; + instance = (this.options.adapter || this.options.instance) as string; // default to instance 0 if (!/\.\d+$/.test(instance)) { instance += '.0'; @@ -189,7 +194,7 @@ module.exports = class CLIPlugin extends CLICommand { try { // Check if the host or instance exists - /** @type {string} */ let objectNamespace; + let objectNamespace: string; if (hostname) { objectNamespace = `system.host.${hostname}`; const hostObject = await objects.getObject(objectNamespace); @@ -216,7 +221,7 @@ module.exports = class CLIPlugin extends CLICommand { // Read the state try { - const { val } = await states.getStateAsync(pluginEnabledId); + const val = (await states.getStateAsync(pluginEnabledId))?.val; if (typeof val === 'boolean') { CLI.success.pluginStatus(pluginName, hostname, instance, val); @@ -241,21 +246,21 @@ module.exports = class CLIPlugin extends CLICommand { } }); } -}; +} /** * Checks if a plugin exists and can be configured - * @param {string} pluginName - * @param {Record} iobrokerJson The contents of iobroker.json - * @param {string} [adapter] (optional) - If passed, the adapter configuration will be searched for defined plugins instead of js-controller + * + * @param pluginName + * @param iobrokerJson The contents of iobroker.json + * @param [adapter] (optional) - If passed, the adapter configuration will be searched for defined plugins instead of js-controller */ -function pluginExists(pluginName, iobrokerJson, adapter) { +function pluginExists(pluginName: string, iobrokerJson?: ioBroker.IoBrokerJson, adapter?: string): boolean { // 1. check if the plugin is defined in io-package.json - // TODO: replace this with fs-extra methods #799 try { - const ioPackPath = adapter ? path.join(tools.getAdapterDir(adapter), 'io-package.json') : controllerIoPackPath; - const ioPack = JSON.parse(fs.readFileSync(ioPackPath, 'utf8')); - if (ioPack && ioPack.common && ioPack.common.plugins && pluginName in ioPack.common.plugins) { + const ioPackPath = adapter ? path.join(tools.getAdapterDir(adapter)!, 'io-package.json') : controllerIoPackPath; + const ioPack = fs.readJSONSync(ioPackPath, { encoding: 'utf8' }); + if (ioPack?.common?.plugins && pluginName in ioPack.common.plugins) { return true; } } catch { @@ -263,31 +268,34 @@ function pluginExists(pluginName, iobrokerJson, adapter) { } // 2. check if the plugin is defined in iobroker.json - return iobrokerJson && iobrokerJson.plugins && pluginName in iobrokerJson.plugins; + return !!(iobrokerJson?.plugins && pluginName in iobrokerJson.plugins); } /** * Checks if a plugin exists and can be configured - * @param {string} pluginName - * @param {string | undefined} adapter If defined, the adapter configuration will be searched for defined plugins instead of js-controller - * @param {Record} systemConfig The system.config object - * @param {Record} iobrokerJson The contents of iobroker.json + * + * @param pluginName name of the plugin, e.g. `sentry` + * @param adapter If defined, the adapter configuration will be searched for defined plugins instead of js-controller + * @param systemConfig The system.config object + * @param iobrokerJson The contents of iobroker.json */ -function pluginEnabled(pluginName, adapter, systemConfig, iobrokerJson) { +function pluginEnabled( + pluginName: string, + adapter?: string, + systemConfig?: ioBroker.SystemConfigObject | null, + iobrokerJson?: ioBroker.IoBrokerJson +): boolean { // 1. check if diagnostics are disabled in ioBroker - if (systemConfig && systemConfig.common && systemConfig.common.diag === 'none') { + if (systemConfig?.common?.diag === 'none') { return false; } // 2. check if the plugin is disabled in io-package.json - // TODO: replace this with fs-extra methods #799 try { - const ioPackPath = adapter ? path.join(tools.getAdapterDir(adapter), 'io-package.json') : controllerIoPackPath; - const ioPack = JSON.parse(fs.readFileSync(ioPackPath, 'utf8')); + const ioPackPath = adapter ? path.join(tools.getAdapterDir(adapter)!, 'io-package.json') : controllerIoPackPath; + const ioPack = fs.readJSONSync(ioPackPath, { encoding: 'utf8' }); if ( - ioPack && - ioPack.common && - ioPack.common.plugins && + ioPack?.common?.plugins && pluginName in ioPack.common.plugins && ioPack.common.plugins[pluginName].enabled === false ) { @@ -299,8 +307,7 @@ function pluginEnabled(pluginName, adapter, systemConfig, iobrokerJson) { // 3. check if the plugin is disabled in iobroker.json if ( - iobrokerJson && - iobrokerJson.plugins && + iobrokerJson?.plugins && pluginName in iobrokerJson.plugins && iobrokerJson.plugins[pluginName].enabled === false ) { diff --git a/packages/cli/src/lib/cli/cliProcess.js b/packages/cli/src/lib/cli/cliProcess.ts similarity index 64% rename from packages/cli/src/lib/cli/cliProcess.js rename to packages/cli/src/lib/cli/cliProcess.ts index 5b184cf2a1..ed09fa980c 100644 --- a/packages/cli/src/lib/cli/cliProcess.js +++ b/packages/cli/src/lib/cli/cliProcess.ts @@ -1,22 +1,26 @@ -'use strict'; -const fs = require('fs'); -const path = require('path'); -const CLI = require('./messages.js'); -const { CLICommand } = require('./cliCommand.js'); -const { tools } = require('@iobroker/js-controller-common'); -const dbTools = require('@iobroker/js-controller-common-db').tools; -const deepClone = require('deep-clone'); -const { EXIT_CODES } = require('@iobroker/js-controller-common'); +import type { CLICommandOptions } from '@/lib/cli/cliCommand.js'; -const { getObjectFrom, getInstanceName, normalizeAdapterName, enumInstances } = require('./cliTools.js'); +import fs from 'fs-extra'; +import path from 'node:path'; +import * as CLI from '@/lib/cli/messages.js'; +import { CLICommand } from '@/lib/cli/cliCommand.js'; +import { tools, EXIT_CODES } from '@iobroker/js-controller-common'; +import { tools as dbTools } from '@iobroker/js-controller-common-db'; +import deepClone from 'deep-clone'; +import { getObjectFrom, getInstanceName, normalizeAdapterName, enumInstances } from '@/lib/cli/cliTools.js'; +import type { Client as ObjectsClient } from '@iobroker/db-objects-redis'; +import type { Client as StatesClient } from '@iobroker/db-states-redis'; +import os from 'node:os'; +import { spawn } from 'node:child_process'; +// @ts-expect-error has no types but probably no longer needed as start/stop commands are no longer handled from this code +import daemonize2 from 'daemonize2'; // The root of this project. Change this when moving code to another directory const rootDir = tools.getControllerDir(); const killAllScriptPath = path.join(rootDir, 'killall.sh'); -module.exports = class CLIProcess extends CLICommand { - /** @param {import('./cliCommand').CLICommandOptions} options */ - constructor(options) { +export class CLIProcess extends CLICommand { + constructor(options: CLICommandOptions) { super(options); } @@ -25,9 +29,10 @@ module.exports = class CLIProcess extends CLICommand { /** * Starts one or more adapters or the js-controller - * @param {any[]} args + * + * @param args parsed cli arguments */ - start(args) { + start(args: any[]): void { const adapterName = normalizeAdapterName(args[0]); if (!adapterName) { this.startJSController(); @@ -42,9 +47,10 @@ module.exports = class CLIProcess extends CLICommand { /** * Restarts one or more instances or the js-controller - * @param {any[]} args + * + * @param args parsed cli arguments */ - restart(args) { + restart(args: any[]): void { const adapterName = normalizeAdapterName(args[0]); if (!adapterName) { this.restartJSController(); @@ -57,9 +63,10 @@ module.exports = class CLIProcess extends CLICommand { /** * Stops one or more adapters or the js-controller - * @param {any[]} args + * + * @param args parsed cli arguments */ - stop(args) { + stop(args: any[]): void { const adapterName = normalizeAdapterName(args[0]); if (adapterName === undefined) { this.stopJSController(); @@ -74,9 +81,10 @@ module.exports = class CLIProcess extends CLICommand { /** * Starts or stops all adapters - * @param {boolean} enabled + * + * @param enabled if adapters should be started or stopped */ - setAllAdaptersEnabled(enabled) { + setAllAdaptersEnabled(enabled: boolean): void { const { callback, dbConnect } = this.options; dbConnect(async params => { const { objects } = params; @@ -95,11 +103,12 @@ module.exports = class CLIProcess extends CLICommand { /** * Starts or stops a single or all instances of adapter. * If there are multiple instances all will be started/stopped/restarted - * @param {string} adapter The adapter to start - * @param {boolean} enabled - * @param {boolean} [restartIfRunning=false] Whether running instances should be restarted + * + * @param adapter The adapter to start + * @param enabled If adapter should be started or stopped + * @param [restartIfRunning] Whether running instances should be restarted */ - setAdapterEnabled(adapter, enabled, restartIfRunning) { + setAdapterEnabled(adapter: string, enabled: boolean, restartIfRunning?: boolean): void { const { callback, dbConnect } = this.options; dbConnect(async params => { const { objects } = params; @@ -124,50 +133,53 @@ module.exports = class CLIProcess extends CLICommand { /** * Starts or stops a specific adapter instance - * @param {string} instance The instance to start, e.g. "adaptername.0" - * @param {boolean} enabled - * @param {boolean} [restartIfRunning=false] Whether running instances should be restarted + * + * @param instance The instance to start, e.g. "adaptername.0" + * @param enabled If the instance should be started or stopped + * @param [restartIfRunning] Whether running instances should be restarted */ - setAdapterInstanceEnabled(instance, enabled, restartIfRunning) { + setAdapterInstanceEnabled(instance: string, enabled: boolean, restartIfRunning?: boolean): void { const { callback, dbConnect } = this.options; - dbConnect(params => { + dbConnect(async params => { const { objects } = params; - objects.getObject(`system.adapter.${instance}`, async (err, obj) => { - if (err || !obj || obj.type !== 'instance') { - CLI.error.invalidInstance(instance); - return void callback(); - } + const obj = (await objects.getObject(`system.adapter.${instance}`)) as + | ioBroker.InstanceObject + | ioBroker.AdapterObject; - try { - await setInstanceEnabled(objects, obj, enabled, restartIfRunning); - return void callback(); - } catch (e) { - CLI.error.unknown(e.message); - return void callback(EXIT_CODES.UNKNOWN_ERROR); - } - }); + if (!obj || obj.type !== 'instance') { + CLI.error.invalidInstance(instance); + return void callback(); + } + + try { + await setInstanceEnabled(objects, obj, enabled, restartIfRunning); + return void callback(); + } catch (e) { + CLI.error.unknown(e.message); + return void callback(EXIT_CODES.UNKNOWN_ERROR); + } }); } /** Starts the JS controller */ - startJSController() { + startJSController(): void { const daemon = setupDaemonize(); daemon.start(); } /** Stops the JS controller */ - stopJSController() { + stopJSController(): void { const { callback } = this.options; const daemon = setupDaemonize(); // On non-Windows OSes start KILLALL script // to make sure nothing keeps running - if (!require('os').platform().startsWith('win')) { + if (!os.platform().startsWith('win')) { daemon.on('stopped', () => { let data = ''; if (fs.existsSync(killAllScriptPath)) { fs.chmodSync(killAllScriptPath, '777'); - const child = require('child_process').spawn(killAllScriptPath, [], { windowsHide: true }); + const child = spawn(killAllScriptPath, [], { windowsHide: true }); child.stdout.on('data', _data => (data += _data.toString().replace(/\n/g, ''))); child.stderr.on('data', _data => (data += _data.toString().replace(/\n/g, ''))); child.on('exit', exitCode => { @@ -183,7 +195,7 @@ module.exports = class CLIProcess extends CLICommand { } /** Restarts the JS controller */ - restartJSController() { + restartJSController(): void { const daemon = setupDaemonize(); daemon.on('stopped', () => daemon.start()).on('notrunning', () => daemon.start()); daemon.stop(); @@ -191,9 +203,10 @@ module.exports = class CLIProcess extends CLICommand { /** * Checks if ioBroker is running or not - * @param {any[]} args + * + * @param args parsed cli arguments */ - status(args) { + status(args: any[]): void { const { callback, dbConnect } = this.options; const adapterName = normalizeAdapterName(args[0]); const showEntireConfig = adapterName === 'all'; @@ -203,28 +216,28 @@ module.exports = class CLIProcess extends CLICommand { if (!adapterName || showEntireConfig) { // we want host info or/and whole config - states.getState(`system.host.${tools.getHostName()}.alive`, async (err, hostAlive) => { - const alive = hostAlive ? hostAlive.val : false; - CLI.success.controllerStatus(alive); - console.log(); - if ( - !dbTools.isLocalStatesDbServer(config.states.type, config.states.host) && - !dbTools.isLocalObjectsDbServer(config.objects.type, config.objects.host) - ) { - CLI.success.systemStatus(!isOffline); - } + const hostAlive = await states.getState(`system.host.${tools.getHostName()}.alive`); + + const alive = hostAlive ? (hostAlive.val as boolean) : false; + CLI.success.controllerStatus(alive); + console.log(); + if ( + !dbTools.isLocalStatesDbServer(config.states.type, config.states.host) && + !dbTools.isLocalObjectsDbServer(config.objects.type, config.objects.host) + ) { + CLI.success.systemStatus(!isOffline); + } + console.log(); + if (showEntireConfig) { + await showAllInstancesStatus(states, objects); console.log(); - if (showEntireConfig) { - await showAllInstancesStatus(states, objects); - console.log(); - showConfig(config); - } else { - console.log(`Objects type: ${config.objects.type}`); - console.log(`States type: ${config.states.type}`); - } - return void callback(isOffline ? EXIT_CODES.CONTROLLER_NOT_RUNNING : undefined); - }); + showConfig(config); + } else { + console.log(`Objects type: ${config.objects.type}`); + console.log(`States type: ${config.states.type}`); + } + return void callback(isOffline ? EXIT_CODES.CONTROLLER_NOT_RUNNING : undefined); } else { // we want to know the status of an adapter if (/\.\d+$/.test(adapterName)) { @@ -252,15 +265,15 @@ module.exports = class CLIProcess extends CLICommand { } }); } -}; +} /** * Outputs the status of all existing adapter instances - * @param {object} states The States DB - * @param {object} objects The Objects DB - * @returns {Promise} + * + * @param states The States DB + * @param objects The Objects DB */ -async function showAllInstancesStatus(states, objects) { +async function showAllInstancesStatus(states: StatesClient, objects: ObjectsClient): Promise { const allInstances = await enumInstances(objects); for (const instance of allInstances) { const instanceId = instance._id.split('.').pop(); @@ -271,11 +284,12 @@ async function showAllInstancesStatus(states, objects) { /** * Outputs the status of an adapter instance - * @param {object} states the states object - * @param {string} adapterInstance . - * @returns {Promise} + * + * @param states the states object + * @param adapterInstance . + * @returns */ -function showInstanceStatus(states, adapterInstance) { +function showInstanceStatus(states: StatesClient, adapterInstance: string): Promise { return new Promise(resolve => { states.getState(`system.adapter.${adapterInstance}.alive`, (err, state) => { if (state && state.val === true) { @@ -288,8 +302,13 @@ function showInstanceStatus(states, adapterInstance) { }); } -/** Prints the config file to the console */ -function showConfig(config, root) { +/** + * Prints the config file to the console + * + * @param config + * @param root + */ +function showConfig(config: Record, root?: string[]): void { if (!tools.isObject(config)) { return; } @@ -304,20 +323,25 @@ function showConfig(config, root) { nextRoot.push(attr); showConfig(config[attr], nextRoot); } else { - console.log(`${prefix}${(prefix ? '/' : '') + attr}: ` + config[attr]); + console.log(`${prefix}${(prefix ? '/' : '') + attr}: ${config[attr]}`); } } } /** * Sets the enabled state of an instance to the given value - * @param {any} objects The objects DB - * @param {any} instanceObj The instance object to change - * @param {boolean} enabled Whether the instance should be enabled or not - * @param {boolean} [force=false] Whether the object should be updated always - * @returns {Promise} + * + * @param objects The objects DB + * @param instanceObj The instance object to change + * @param enabled Whether the instance should be enabled or not + * @param [force] Whether the object should be updated always */ -function setInstanceEnabled(objects, instanceObj, enabled, force) { +function setInstanceEnabled( + objects: ObjectsClient, + instanceObj: ioBroker.InstanceObject, + enabled: boolean, + force?: boolean +): Promise { return new Promise(resolve => { if (!!force || instanceObj.common.enabled !== enabled) { instanceObj.common.enabled = enabled; @@ -338,12 +362,12 @@ function setInstanceEnabled(objects, instanceObj, enabled, force) { }); } -function setupDaemonize() { +function setupDaemonize(): typeof daemonize2 { let memoryLimitMB = 0; try { - const config = require(tools.getConfigFileName()); - if (config && config.system && config.system.memoryLimitMB) { - memoryLimitMB = parseInt(config.system.memoryLimitMB, 10); + const config: ioBroker.IoBrokerJson = fs.readJSONSync(tools.getConfigFileName(), { encoding: 'utf-8' }); + if (config?.system?.memoryLimitMB) { + memoryLimitMB = Math.round(config.system.memoryLimitMB); } } catch { console.warn('Cannot read memoryLimitMB'); @@ -351,18 +375,18 @@ function setupDaemonize() { `May be config file does not exist.\nPlease call "${tools.appName} setup first" to initialize the settings.` ); } - const startObj = { + const startObj: Record = { main: path.join(rootDir, 'controller.js'), name: `${tools.appName} controller`, pidfile: path.join(rootDir, `${tools.appName}.pid`), cwd: rootDir, - stopTimeout: 6000 + stopTimeout: 6_000 }; if (memoryLimitMB) { startObj.args = `--max-old-space-size=${memoryLimitMB}`; } - const daemon = require('daemonize2').setup(startObj); - daemon.on('error', error => CLI.error.unknown(error)); + const daemon = daemonize2.setup(startObj); + daemon.on('error', (error: string) => CLI.error.unknown(error)); return daemon; } diff --git a/packages/cli/src/lib/cli/cliStates.ts b/packages/cli/src/lib/cli/cliStates.ts index c2bf055077..0de7dc1f45 100644 --- a/packages/cli/src/lib/cli/cliStates.ts +++ b/packages/cli/src/lib/cli/cliStates.ts @@ -2,7 +2,7 @@ import { tools } from '@iobroker/js-controller-common'; import { CLICommand, type CLICommandOptions } from './cliCommand.js'; import type { Client as ObjectsClient } from '@iobroker/db-objects-redis'; import * as CLI from '@/lib/cli/messages.js'; -import { formatValue } from '@/lib/cli/cliTools'; +import { formatValue } from '@/lib/cli/cliTools.js'; import * as rl from 'readline-sync'; const ALIAS_STARTS_WITH = 'alias.'; diff --git a/packages/cli/src/lib/cli/cliTools.ts b/packages/cli/src/lib/cli/cliTools.ts index 2da885f506..af6fd3fb9a 100644 --- a/packages/cli/src/lib/cli/cliTools.ts +++ b/packages/cli/src/lib/cli/cliTools.ts @@ -44,7 +44,7 @@ export function validateAdapterIdentifier(name: string): boolean { * Ensures that the given string contains a valid identifier for * an adapter (without instance number) or instance (with instance number) * - * @param name + * @param name the adapter name or instance */ export function validateAdapterOrInstanceIdentifier(name: string): boolean { return /^[a-z0-9\-_]+(\.\d+)?$/.test(name); @@ -54,7 +54,7 @@ export function validateAdapterOrInstanceIdentifier(name: string): boolean { * Ensures that the given string contains a valid identifier for * an adapter (without instance number) or instance (with instance number) * - * @param name + * @param name the adapter name or instance */ export function splitAdapterOrInstanceIdentifierWithVersion( name: string @@ -87,15 +87,12 @@ export function getInstanceName(instanceObjID: string): string { * @param adapter (optional) The adapter whose instances should be enumerated * @returns An array of instance objects */ -export async function enumInstances( - objects: ObjectsClient, - adapter?: string -): Promise<(ioBroker.InferGetObjectViewItemType<'system', 'instance'> | null)[]> { +export async function enumInstances(objects: ObjectsClient, adapter?: string): Promise { // if no adapter given all instances should be returned const startkey = `system.adapter.${adapter ? `${adapter}.` : ''}`; const data = await enumObjects(objects, 'instance', startkey); // because of startkey logic not only receive objects with the dot at the end, so filter them! - return data.filter(it => it && it._id.startsWith(startkey)); + return data.filter((it): it is ioBroker.InstanceObject => !!(it && it._id.startsWith(startkey))); } /** diff --git a/packages/cli/src/lib/setup.ts b/packages/cli/src/lib/setup.ts index 1598955601..1ae6332ac2 100644 --- a/packages/cli/src/lib/setup.ts +++ b/packages/cli/src/lib/setup.ts @@ -2,45 +2,41 @@ import fs from 'fs-extra'; import { tools } from '@iobroker/js-controller-common'; import { EXIT_CODES } from '@iobroker/js-controller-common'; import deepClone from 'deep-clone'; -import { isDeepStrictEqual } from 'util'; +import { isDeepStrictEqual } from 'node:util'; import Debug from 'debug'; import { tools as dbTools } from '@iobroker/js-controller-common-db'; -import path from 'path'; -import yargs from 'yargs'; -import * as CLITools from './cli/cliTools'; -import { CLIHost } from './cli/cliHost'; -import { CLIStates } from './cli/cliStates'; -import { CLIDebug } from './cli/cliDebug'; -import { CLICert } from './cli/cliCert'; -import { CLIObjects } from './cli/cliObjects'; -import { CLICompact } from './cli/cliCompact'; -import { CLILogs } from './cli/cliLogs'; -import { error as CLIError } from './cli/messages'; -import type { CLICommandContext, CLICommandOptions } from './cli/cliCommand'; -import { getRepository } from './setup/utils'; -import { dbConnect, dbConnectAsync, exitApplicationSave } from './setup/dbConnection'; -import { IoBrokerError } from './setup/customError'; +import path from 'node:path'; +import yargs from 'yargs/yargs'; +import * as CLITools from '@/lib/cli/cliTools.js'; +import { CLIHost } from '@/lib/cli/cliHost.js'; +import { CLIStates } from '@/lib/cli/cliStates.js'; +import { CLIDebug } from '@/lib/cli/cliDebug.js'; +import { CLICert } from '@/lib/cli/cliCert.js'; +import { CLIObjects } from '@/lib/cli/cliObjects.js'; +import { CLICompact } from '@/lib/cli/cliCompact.js'; +import { CLILogs } from '@/lib/cli/cliLogs.js'; +import { CLIProcess } from '@/lib/cli/cliProcess.js'; +import { CLIMessage } from '@/lib/cli/cliMessage.js'; +import { CLIPlugin } from '@/lib/cli/cliPlugin.js'; +import { error as CLIError } from '@/lib/cli/messages.js'; +import type { CLICommandContext, CLICommandOptions } from '@/lib/cli/cliCommand.js'; +import { getRepository } from '@/lib/setup/utils.js'; +import { dbConnect, dbConnectAsync, exitApplicationSave } from '@/lib/setup/dbConnection.js'; +import { IoBrokerError } from '@/lib/setup/customError.js'; +import * as url from 'node:url'; +// eslint-disable-next-line unicorn/prefer-module +const thisDir = url.fileURLToPath(new URL('.', import.meta.url || 'file://' + __dirname)); +import { createRequire } from 'node:module'; +const require = createRequire(import.meta.url || 'file://' + thisDir); tools.ensureDNSOrder(); -/** - * Polyfill until everything ported to TS - */ -const cli = { - command: { - process: require('./cli/cliProcess.js'), - message: require('./cli/cliMessage.js'), - plugin: require('./cli/cliPlugin.js') - } -} as const; - const debug = Debug('iobroker:cli'); -// eslint-disable-next-line @typescript-eslint/no-var-requires -require('events').EventEmitter.prototype._maxListeners = 100; +require('node:events').EventEmitter.prototype._maxListeners = 100; process.setMaxListeners(0); -let _yargs: yargs.Argv; +let _yargs: ReturnType; type ExitCodeCb = (exitCode?: number) => void; @@ -50,8 +46,11 @@ interface InternalRebuildOptions { debug: boolean; } -function initYargs(): yargs.Argv { - _yargs = yargs +/** + * Initialize Yargs to parse commands correctly and be able to output correct help + */ +function initYargs(): ReturnType { + _yargs = yargs(process.argv.slice(2)) .scriptName(tools.appName) .locale('en') // otherwise it could be mixed, because our implementations are in english .version(false) // disable yargs own version handling, because we have our own depending on passed instances @@ -491,14 +490,10 @@ function initYargs(): yargs.Argv { /** * Show yargs help, if processCommand is used as import, yargs won't be initialized - * - * @param _yargs - yargs instance */ -function showHelp(_yargs?: yargs.Argv): void { +function showHelp(): void { if (_yargs) { _yargs.showHelp(); - } else { - yargs.showHelp(); } } @@ -524,7 +519,7 @@ async function processCommand( switch (command) { case 'start': case 'stop': { - const procCommand = new cli.command.process(commandOptions); + const procCommand = new CLIProcess(commandOptions); procCommand[command](args); break; } @@ -537,14 +532,14 @@ async function processCommand( case 'status': case 'isrun': { - const procCommand = new cli.command.process(commandOptions); + const procCommand = new CLIProcess(commandOptions); procCommand.status(args); break; } case 'r': case 'restart': { - const procCommand = new cli.command.process(commandOptions); + const procCommand = new CLIProcess(commandOptions); procCommand.restart(args); break; } @@ -617,10 +612,7 @@ async function processCommand( for (const instance of initialInstances) { try { const adapterInstalled = !!require.resolve( - `${tools.appName.toLowerCase()}.${instance}`, - { - paths: tools.getDefaultRequireResolvePaths(module) - } + `${tools.appName.toLowerCase()}.${instance}` ); if (adapterInstalled) { @@ -709,7 +701,11 @@ async function processCommand( if (config.states.type === 'file') { config.states.type = 'jsonl'; - if (dbTools.isLocalStatesDbServer('file', config.states.host)) { + const hasLocalStatesServer = await dbTools.isLocalStatesDbServer( + 'file', + config.states.host + ); + if (hasLocalStatesServer) { // silent config change on secondaries console.log('States DB type migrated from "file" to "jsonl"'); migrated += 'States'; @@ -718,7 +714,12 @@ async function processCommand( if (config.objects.type === 'file') { config.objects.type = 'jsonl'; - if (dbTools.isLocalObjectsDbServer('file', config.objects.host)) { + + const hasLocalObjectsServer = await dbTools.isLocalObjectsDbServer( + 'file', + config.objects.host + ); + if (hasLocalObjectsServer) { // silent config change on secondaries console.log('Objects DB type migrated from "file" to "jsonl"'); migrated += migrated ? ' and Objects' : 'Objects'; @@ -1122,7 +1123,7 @@ async function processCommand( break; } case 'unsetup': { - const rl = (await import('readline')).createInterface({ + const rl = (await import('node:readline')).createInterface({ input: process.stdin, output: process.stdout }); @@ -1160,7 +1161,7 @@ async function processCommand( case 'msg': case 'message': { - const messageCommand = new cli.command.message(commandOptions); + const messageCommand = new CLIMessage(commandOptions); messageCommand.execute(args); break; } @@ -2472,8 +2473,9 @@ async function processCommand( } case 'checklog': { - dbConnect(params, ({ objects, states, isOffline, objectsDBType }) => { - if (isOffline && dbTools.objectsDbHasServer(objectsDBType)) { + dbConnect(params, async ({ objects, states, isOffline, objectsDBType }) => { + const hasLocalObjectsServer = await dbTools.objectsDbHasServer(objectsDBType); + if (isOffline && hasLocalObjectsServer) { console.log(`${tools.appName} is not running`); return void callback(EXIT_CODES.CONTROLLER_NOT_RUNNING); } else { @@ -2731,7 +2733,7 @@ async function processCommand( } case 'plugin': { - const pluginCommand = new cli.command.plugin(commandOptions); + const pluginCommand = new CLIPlugin(commandOptions); pluginCommand.execute(args); break; } @@ -2905,9 +2907,9 @@ function unsetup(params: Record, callback: ExitCodeCb): void { */ async function restartController(): Promise { console.log('Starting node restart.js'); - const { spawn } = await import('child_process'); + const { spawn } = await import('node:child_process'); - const child = spawn('node', [`${__dirname}/restart.js`], { + const child = spawn('node', [`${thisDir}/restart.js`], { detached: true, stdio: ['ignore', 'ignore', 'ignore'], windowsHide: true diff --git a/packages/cli/src/lib/setup/dbConnection.ts b/packages/cli/src/lib/setup/dbConnection.ts index 1c9595d23a..6628878a23 100644 --- a/packages/cli/src/lib/setup/dbConnection.ts +++ b/packages/cli/src/lib/setup/dbConnection.ts @@ -1,4 +1,4 @@ -import type { DbConnectAsyncReturn, DbConnectCallback } from '../_Types'; +import type { DbConnectAsyncReturn, DbConnectCallback } from '../_Types.js'; import fs from 'fs-extra'; import { getObjectsConstructor, getStatesConstructor, tools as dbTools } from '@iobroker/js-controller-common-db'; import { EXIT_CODES } from '@iobroker/js-controller-common'; @@ -6,7 +6,7 @@ import { tools } from '@iobroker/js-controller-common'; import { setTimeout as wait } from 'node:timers/promises'; import type { Client as StatesRedisClient } from '@iobroker/db-states-redis'; import type { Client as ObjectsInRedisClient } from '@iobroker/db-objects-redis'; -import path from 'path'; +import path from 'node:path'; import type { PluginHandlerSettings } from '@iobroker/plugin-base/types'; import { PluginHandler } from '@iobroker/plugin-base'; @@ -31,11 +31,11 @@ export function dbConnect(onlyCheck: boolean, params: Record, callb * @param params * @param callback */ -export function dbConnect( +export async function dbConnect( onlyCheck: boolean | Record | DbConnectCallback, params?: DbConnectParams | DbConnectCallback, callback?: DbConnectCallback -): void { +): Promise { if (typeof onlyCheck === 'object') { callback = params as DbConnectCallback; params = onlyCheck; @@ -56,7 +56,7 @@ export function dbConnect( params = params || {}; - const config = fs.readJSONSync(tools.getConfigFileName()); + const config: ioBroker.IoBrokerJson = fs.readJSONSync(tools.getConfigFileName()); if (objects && states) { return void callback({ objects, states, isOffline: false, objectsDBType: config.objects.type, config }); @@ -69,8 +69,8 @@ export function dbConnect( config.states.connectTimeout = Math.max(config.states.connectTimeout || 0, 5_000); config.objects.connectTimeout = Math.max(config.objects.connectTimeout || 0, 5_000); - Objects = getObjectsConstructor(); // Objects DB Client object - States = getStatesConstructor(); // States DB Client object + Objects = await getObjectsConstructor(); // Objects DB Client object + States = await getStatesConstructor(); // States DB Client object let isObjectConnected = false; let isStatesConnected = false; @@ -88,7 +88,10 @@ export function dbConnect( await objects.destroy(); objects = null; } - if (dbTools.objectsDbHasServer(config.objects.type)) { + + const hasObjectsServer = await dbTools.objectsDbHasServer(config.objects.type); + + if (hasObjectsServer) { // Just open in memory DB itself Objects = (await import(`@iobroker/db-objects-${config.objects.type}`)).Server; objects = new Objects!({ @@ -150,7 +153,10 @@ export function dbConnect( await states.destroy(); states = null; } - if (dbTools.statesDbHasServer(config.states.type)) { + + const hasStatesServer = await dbTools.statesDbHasServer(config.states.type); + + if (hasStatesServer) { // Just open in memory DB itself States = (await import(`@iobroker/db-states-${config.states.type}`)).Server; diff --git a/packages/cli/src/lib/setup/multihostClient.ts b/packages/cli/src/lib/setup/multihostClient.ts index 8903368752..2e305526a8 100644 --- a/packages/cli/src/lib/setup/multihostClient.ts +++ b/packages/cli/src/lib/setup/multihostClient.ts @@ -1,6 +1,6 @@ -import dgram from 'dgram'; +import dgram from 'node:dgram'; import { tools } from '@iobroker/js-controller-common'; -import crypto from 'crypto'; +import crypto from 'node:crypto'; const PORT = 50005; const MULTICAST_ADDR = '239.255.255.250'; diff --git a/packages/cli/src/lib/setup/setupBackup.ts b/packages/cli/src/lib/setup/setupBackup.ts index 1caaaf3709..6af6210471 100644 --- a/packages/cli/src/lib/setup/setupBackup.ts +++ b/packages/cli/src/lib/setup/setupBackup.ts @@ -1,14 +1,14 @@ import fs from 'fs-extra'; import { EXIT_CODES, tools } from '@iobroker/js-controller-common'; -import path from 'path'; -import { Upload } from './setupUpload'; +import path from 'node:path'; +import { Upload } from './setupUpload.js'; import { exec as execAsync } from 'promisify-child-process'; import tar from 'tar'; import type { Client as StatesRedisClient } from '@iobroker/db-states-redis'; import type { Client as ObjectsRedisClient } from '@iobroker/db-objects-redis'; -import type { CleanDatabaseHandler, ProcessExitCallback, RestartController } from '../_Types'; -import { dbConnectAsync, resetDbConnect } from './dbConnection'; -import { IoBrokerError } from './customError'; +import type { CleanDatabaseHandler, ProcessExitCallback, RestartController } from '../_Types.js'; +import { dbConnectAsync, resetDbConnect } from './dbConnection.js'; +import { IoBrokerError } from './customError.js'; export interface CLIBackupRestoreOptions { dbMigration?: boolean; @@ -887,8 +887,7 @@ export class BackupRestore { * Validates the backup.json and all json files inside the backup after (in temporary directory), here we only abort if backup.json is corrupted */ private _validateBackupAfterCreation(): void { - // eslint-disable-next-line @typescript-eslint/no-var-requires - const backupJSON = require(`${this.tmpDir}/backup/backup.json`); + const backupJSON = fs.readJSONSync(`${this.tmpDir}/backup/backup.json`); if (!backupJSON.objects || !backupJSON.objects.length) { throw new Error('Backup does not contain valid objects'); } @@ -991,7 +990,7 @@ export class BackupRestore { console.log(`host.${this.hostname} Starting validation ...`); let backupJSON; try { - backupJSON = require(`${this.tmpDir}/backup/backup.json`); + backupJSON = fs.readJSONSync(`${this.tmpDir}/backup/backup.json`); } catch (err) { console.error( `host.${this.hostname} Backup corrupted. Backup ${name} does not contain a valid backup.json file: ${err.message}` @@ -1048,7 +1047,7 @@ export class BackupRestore { this._checkDirectory(filePath, verbose); } else if (file.endsWith('.json')) { try { - require(filePath); + fs.readJSONSync(filePath); if (verbose) { console.log(`host.${this.hostname} ${file} OK`); } @@ -1138,7 +1137,7 @@ export class BackupRestore { cwd: this.tmpDir }, undefined, - err => { + async err => { if (err) { console.error(`host.${this.hostname} Cannot extract from file "${name}": ${err.message}`); return void this.processExit(9); @@ -1150,14 +1149,15 @@ export class BackupRestore { return void this.processExit(9); } // Stop controller - // eslint-disable-next-line @typescript-eslint/no-var-requires - const daemon = require('daemonize2').setup({ + // @ts-expect-error not a ts module + const daemon = (await import('daemonize2')).setup({ main: path.join(controllerDir, 'controller.js'), name: `${tools.appName} controller`, pidfile: path.join(controllerDir, `${tools.appName}.pid`), cwd: controllerDir, stopTimeout: 1_000 }); + daemon.on('error', async () => { const exitCode = await this._restoreAfterStop({ restartOnFinish: false, diff --git a/packages/cli/src/lib/setup/setupInstall.ts b/packages/cli/src/lib/setup/setupInstall.ts index b33e6b190d..0228a55e41 100644 --- a/packages/cli/src/lib/setup/setupInstall.ts +++ b/packages/cli/src/lib/setup/setupInstall.ts @@ -9,20 +9,27 @@ import { tools, EXIT_CODES } from '@iobroker/js-controller-common'; import fs from 'fs-extra'; -import path from 'path'; +import path from 'node:path'; import semver from 'semver'; -import child_process from 'child_process'; +import child_process from 'node:child_process'; import axios from 'axios'; -import { URL } from 'url'; -import { Upload } from './setupUpload'; -import { PacketManager } from './setupPacketManager'; -import { getRepository } from './utils'; +import { URL } from 'node:url'; +import { Upload } from './setupUpload.js'; +import { PacketManager } from './setupPacketManager.js'; +import { getRepository } from './utils.js'; import type { Client as StatesRedisClient } from '@iobroker/db-states-redis'; import type { Client as ObjectsRedisClient } from '@iobroker/db-objects-redis'; -import type { ProcessExitCallback } from '../_Types'; +import type { ProcessExitCallback } from '../_Types.js'; import type { CommandResult } from '@alcalzone/pak'; import { SYSTEM_ADAPTER_PREFIX } from '@iobroker/js-controller-common/constants'; -import { IoBrokerError } from './customError'; +import { IoBrokerError } from './customError.js'; +import { createRequire } from 'node:module'; +import * as url from 'node:url'; + +// eslint-disable-next-line unicorn/prefer-module +const thisDir = url.fileURLToPath(new URL('.', import.meta.url || 'file://' + __dirname)); + +const require = createRequire(import.meta.url || 'file://' + thisDir); const hostname = tools.getHostName(); const osPlatform = process.platform; @@ -1536,9 +1543,7 @@ export class Install { try { // find the adapter's io-package.json const adapterNpm = `${tools.appName.toLowerCase()}.${adapter}`; - const ioPackPath = require.resolve(`${adapterNpm}/io-package.json`, { - paths: tools.getDefaultRequireResolvePaths(module) - }); + const ioPackPath = require.resolve(`${adapterNpm}/io-package.json`); const ioPack = await fs.readJSON(ioPackPath); if (!ioPack.common || !ioPack.common.nondeletable) { diff --git a/packages/cli/src/lib/setup/setupMultihost.ts b/packages/cli/src/lib/setup/setupMultihost.ts index e6b88d1e20..f90ec5f82f 100644 --- a/packages/cli/src/lib/setup/setupMultihost.ts +++ b/packages/cli/src/lib/setup/setupMultihost.ts @@ -1,10 +1,10 @@ import fs from 'fs-extra'; -import path from 'path'; +import path from 'node:path'; import { tools } from '@iobroker/js-controller-common'; import { tools as dbTools } from '@iobroker/js-controller-common-db'; import type { Client as ObjectsRedisClient } from '@iobroker/db-objects-redis'; -import { MHClient, type BrowseResultEntry } from './multihostClient'; -import readline from 'readline'; +import { MHClient, type BrowseResultEntry } from './multihostClient.js'; +import readline from 'node:readline'; import prompt from 'prompt'; interface MHParams { @@ -94,10 +94,16 @@ export class Multihost { * @param config iob config * @param changed if config has changed */ - private showMHState(config: ioBroker.IoBrokerJson, changed: boolean): void { + private async showMHState(config: ioBroker.IoBrokerJson, changed: boolean): Promise { if (config.multihostService.enabled) { let warningShown = false; - if (dbTools.isLocalObjectsDbServer(config.objects.type, config.objects.host, true)) { + const hasLocalObjectsServer = await dbTools.isLocalObjectsDbServer( + config.objects.type, + config.objects.host, + true + ); + + if (hasLocalObjectsServer) { console.log('Changing objects server to accept connections on all IP addresses.'); config.objects.host = tools.getListenAllAddress(); changed = true; @@ -112,7 +118,14 @@ export class Multihost { `Please check the binding of the configured ${config.objects.type} server to allow remote connections.` ); } - if (dbTools.isLocalStatesDbServer(config.states.type, config.states.host, true)) { + + const hasLocalStatesServer = await dbTools.isLocalStatesDbServer( + config.states.type, + config.states.host, + true + ); + + if (hasLocalStatesServer) { console.log('Changing states server to accept connections on all IP addresses.'); config.states.host = tools.getListenAllAddress(); changed = true; @@ -297,17 +310,26 @@ export class Multihost { * @param callback */ connectHelper(mhClient: MHClient, ip: string, pass: string, callback: (err?: Error) => void): void { - mhClient.connect(ip, pass, (err, oObjects, oStates, ipHost) => { + mhClient.connect(ip, pass, async (err, oObjects, oStates, ipHost) => { if (err) { callback(new Error(`Cannot connect to "${ip}": ${err.message}`)); } else if (oObjects && oStates) { const config = this.getConfig(); config.objects = oObjects; config.states = oStates; - if ( - dbTools.isLocalObjectsDbServer(config.objects.type, config.objects.host, true) || - dbTools.isLocalStatesDbServer(config.states.type, config.states.host, true) - ) { + + const hasLocalObjectsServer = await dbTools.isLocalObjectsDbServer( + config.objects.type, + config.objects.host, + true + ); + const hasLocalStatesServer = await dbTools.isLocalStatesDbServer( + config.states.type, + config.states.host, + true + ); + + if (hasLocalObjectsServer || hasLocalStatesServer) { callback( new Error( `IP Address of the remote host is ${tools.getLocalAddress()}. Connections from this host will not be accepted. Please change the configuration of this host to accept remote connections.` diff --git a/packages/cli/src/lib/setup/setupRepo.ts b/packages/cli/src/lib/setup/setupRepo.ts index 841e7b83d4..605959884c 100644 --- a/packages/cli/src/lib/setup/setupRepo.ts +++ b/packages/cli/src/lib/setup/setupRepo.ts @@ -3,7 +3,7 @@ import axios from 'axios'; import fs from 'fs-extra'; import type { Client as ObjectsRedisClient } from '@iobroker/db-objects-redis'; import type { Client as StatesRedisClient } from '@iobroker/db-states-redis'; -import path from 'path'; +import path from 'node:path'; export interface CLIRepoOptions { objects: ObjectsRedisClient; diff --git a/packages/cli/src/lib/setup/setupSetup.ts b/packages/cli/src/lib/setup/setupSetup.ts index d699515b89..266e1be549 100644 --- a/packages/cli/src/lib/setup/setupSetup.ts +++ b/packages/cli/src/lib/setup/setupSetup.ts @@ -7,24 +7,31 @@ * */ -import type { CleanDatabaseHandler, IoPackage, ProcessExitCallback, RestartController } from '@/lib/_Types'; +import type { CleanDatabaseHandler, IoPackage, ProcessExitCallback, RestartController } from '@/lib/_Types.js'; import type { Client as StatesRedisClient } from '@iobroker/db-states-redis'; import type { Client as ObjectsRedisClient } from '@iobroker/db-objects-redis'; import fs from 'fs-extra'; -import path from 'path'; +import path from 'node:path'; import { EXIT_CODES, tools } from '@iobroker/js-controller-common'; import { tools as dbTools } from '@iobroker/js-controller-common-db'; -import { resetDbConnect, dbConnectAsync } from '@/lib/setup/dbConnection'; -import { BackupRestore } from '@/lib/setup/setupBackup'; -import crypto from 'crypto'; +import { resetDbConnect, dbConnectAsync } from '@/lib/setup/dbConnection.js'; +import { BackupRestore } from '@/lib/setup/setupBackup.js'; +import crypto from 'node:crypto'; import deepClone from 'deep-clone'; -import * as pluginInfos from '@/lib/setup/pluginInfos'; +import * as pluginInfos from '@/lib/setup/pluginInfos.js'; import rl from 'readline-sync'; -import os from 'os'; +import os from 'node:os'; import { FORBIDDEN_CHARS } from '@iobroker/js-controller-common/tools'; import { SYSTEM_ADAPTER_PREFIX, SYSTEM_HOST_PREFIX } from '@iobroker/js-controller-common/constants'; -import { Upload } from '@/lib/setup/setupUpload'; +import { Upload } from '@/lib/setup/setupUpload.js'; +import { createRequire } from 'node:module'; +import * as url from 'node:url'; + +// eslint-disable-next-line unicorn/prefer-module +const thisDir = url.fileURLToPath(new URL('.', import.meta.url || 'file://' + __dirname)); + +const require = createRequire(import.meta.url || 'file://' + thisDir); const COLOR_RED = '\x1b[31m'; const COLOR_YELLOW = '\x1b[33m'; @@ -392,15 +399,21 @@ Please DO NOT copy files manually into ioBroker storage directories!` */ async migrateObjects(newConfig: ioBroker.IoBrokerJson, oldConfig: ioBroker.IoBrokerJson): Promise { // allow migration if one of the db types changed or host changed of redis - const oldStatesHasServer = dbTools.statesDbHasServer(oldConfig.states.type); - const oldObjectsHasServer = dbTools.statesDbHasServer(oldConfig.objects.type); - const newStatesHasServer = dbTools.statesDbHasServer(newConfig.states.type); - const newObjectsHasServer = dbTools.statesDbHasServer(newConfig.objects.type); - - const oldStatesLocalServer = dbTools.isLocalStatesDbServer(oldConfig.states.type, oldConfig.states.host); - const oldObjectsLocalServer = dbTools.isLocalObjectsDbServer(oldConfig.objects.type, oldConfig.objects.host); - const newStatesLocalServer = dbTools.isLocalStatesDbServer(newConfig.states.type, newConfig.states.host); - const newObjectsLocalServer = dbTools.isLocalObjectsDbServer(newConfig.objects.type, newConfig.objects.host); + const oldStatesHasServer = await dbTools.statesDbHasServer(oldConfig.states.type); + const oldObjectsHasServer = await dbTools.statesDbHasServer(oldConfig.objects.type); + const newStatesHasServer = await dbTools.statesDbHasServer(newConfig.states.type); + const newObjectsHasServer = await dbTools.statesDbHasServer(newConfig.objects.type); + + const oldStatesLocalServer = await dbTools.isLocalStatesDbServer(oldConfig.states.type, oldConfig.states.host); + const oldObjectsLocalServer = await dbTools.isLocalObjectsDbServer( + oldConfig.objects.type, + oldConfig.objects.host + ); + const newStatesLocalServer = await dbTools.isLocalStatesDbServer(newConfig.states.type, newConfig.states.host); + const newObjectsLocalServer = await dbTools.isLocalObjectsDbServer( + newConfig.objects.type, + newConfig.objects.host + ); if ( oldConfig && @@ -684,10 +697,11 @@ Please DO NOT copy files manually into ioBroker storage directories!` }` ); } - if ( - dbTools.objectsDbHasServer(originalConfig.objects.type) || - dbTools.statesDbHasServer(originalConfig.states.type) - ) { + + const hasObjectsServer = await dbTools.objectsDbHasServer(originalConfig.objects.type); + const hasStatesServer = await dbTools.statesDbHasServer(originalConfig.states.type); + + if (hasObjectsServer || hasStatesServer) { console.log(`- Data Directory: ${tools.getDefaultDataDir()}`); } if (originalConfig && originalConfig.system && originalConfig.system.hostname) { @@ -713,10 +727,8 @@ Please DO NOT copy files manually into ioBroker storage directories!` let getDefaultObjectsPort; try { - const path = require.resolve(`@iobroker/db-objects-${otype}`, { - paths: tools.getDefaultRequireResolvePaths(module) - }); - // eslint-disable-next-line @typescript-eslint/no-var-requires + const path = require.resolve(`@iobroker/db-objects-${otype}`); + getDefaultObjectsPort = require(path).getDefaultPort; } catch { console.log(`${COLOR_RED}Unknown objects type: ${otype}${COLOR_RESET}`); @@ -809,9 +821,7 @@ Please DO NOT copy files manually into ioBroker storage directories!` let defaultStatesType = currentStatesType; try { - require.resolve(`@iobroker/db-states-${otype}`, { - paths: tools.getDefaultRequireResolvePaths(module) - }); + require.resolve(`@iobroker/db-states-${otype}`); defaultStatesType = otype; // if states db is also available with same type we use as default } catch { // ignore, unchanged @@ -835,10 +845,8 @@ Please DO NOT copy files manually into ioBroker storage directories!` let getDefaultStatesPort; try { - const path = require.resolve(`@iobroker/db-states-${stype}`, { - paths: tools.getDefaultRequireResolvePaths(module) - }); - // eslint-disable-next-line @typescript-eslint/no-var-requires + const path = require.resolve(`@iobroker/db-states-${stype}`); + getDefaultStatesPort = require(path).getDefaultPort; } catch { console.log(`${COLOR_RED}Unknown states type: ${stype}${COLOR_RESET}`); @@ -936,7 +944,10 @@ Please DO NOT copy files manually into ioBroker storage directories!` let dir; let hname; - if (dbTools.isLocalStatesDbServer(stype, sHost) || dbTools.isLocalObjectsDbServer(otype, oHost)) { + const hasLocalObjectsServer = await dbTools.isLocalObjectsDbServer(otype, oHost); + const hasLocalStatesServer = await dbTools.isLocalStatesDbServer(stype, sHost); + + if (hasLocalStatesServer || hasLocalObjectsServer) { let validDataDir = false; while (!validDataDir) { @@ -1358,7 +1369,7 @@ Please DO NOT copy files manually into ioBroker storage directories!` // copy scripts to root directory if (fs.existsSync(path.join(CONTROLLER_DIR, '..', '..', 'node_modules'))) { const startFile = `#!/usr/bin/env node -require('${path.normalize(__dirname + '/..')}/setup').execute();`; +require('${path.normalize(thisDir + '/..')}/setup').execute();`; try { if (fs.existsSync(path.join(CONTROLLER_DIR, 'killall.sh'))) { @@ -1453,7 +1464,7 @@ require('${path.normalize(__dirname + '/..')}/setup').execute();`; try { // Create if ( - __dirname + thisDir .toLowerCase() .replace(/\\/g, '/') .includes(`node_modules/${tools.appName.toLowerCase()}.js-controller`) diff --git a/packages/cli/src/lib/setup/setupUpgrade.ts b/packages/cli/src/lib/setup/setupUpgrade.ts index 93acb87187..b060d3b99f 100644 --- a/packages/cli/src/lib/setup/setupUpgrade.ts +++ b/packages/cli/src/lib/setup/setupUpgrade.ts @@ -2,16 +2,16 @@ import Debug from 'debug'; import * as fs from 'fs-extra'; import { tools, EXIT_CODES } from '@iobroker/js-controller-common'; import semver from 'semver'; -import { Upload } from './setupUpload'; -import { Install } from './setupInstall'; +import { Upload } from './setupUpload.js'; +import { Install } from './setupInstall.js'; import rl from 'readline-sync'; -import tty from 'tty'; -import path from 'path'; -import { getRepository } from './utils'; +import tty from 'node:tty'; +import path from 'node:path'; +import { getRepository } from './utils.js'; import type { Client as ObjectsInRedisClient } from '@iobroker/db-objects-redis'; import type { Client as StatesInRedisClient } from '@iobroker/db-states-redis'; -import type { ProcessExitCallback } from '../_Types'; -import { IoBrokerError } from './customError'; +import type { ProcessExitCallback } from '../_Types.js'; +import { IoBrokerError } from './customError.js'; const debug = Debug('iobroker:cli'); @@ -537,10 +537,21 @@ export class Upgrade { if (!showUpgradeDialog(installedVersion, targetVersion, adapter)) { return console.log(`No upgrade of "${adapter}" desired.`); } - } catch (err) { - console.log(`Can not check version information to display upgrade infos: ${err.message}`); + } catch (e) { + console.log(`Can not check version information to display upgrade infos: ${e.message}`); } console.log(`Update ${adapter} from @${installedVersion} to @${targetVersion}`); + const npmPacketName = `${tools.appNameLowerCase}.${adapter}`; + + try { + if (!semver.diff(installedVersion, targetVersion)) { + console.log(`Uninstall npm packet "${npmPacketName}" for a clean re-installation`); + await tools.uninstallNodeModule(npmPacketName, { debug: false }); + } + } catch (e) { + console.warn(`Could not uninstall npm packet "${npmPacketName}": ${e.message}`); + } + // Get the adapter from website // @ts-expect-error it could also call processExit internally, but we want change it in future anyway const { packetName, stoppedList } = await this.install.downloadPacket( @@ -601,8 +612,8 @@ export class Upgrade { if (!showUpgradeDialog(installedVersion, version, adapter)) { return console.log(`No upgrade of "${adapter}" desired.`); } - } catch (err) { - console.log(`Can not check version information to display upgrade infos: ${err.message}`); + } catch (e) { + console.log(`Can not check version information to display upgrade infos: ${e.message}`); } console.warn(`Unable to get version for "${adapter}". Update anyway.`); console.log(`Update ${adapter} from @${installedVersion} to @${version}`); @@ -690,17 +701,14 @@ export class Upgrade { `Cannot read version. Write "${tools.appName} upgrade self --force" to upgrade controller anyway.` ); } - let version = ioPack && ioPack.common ? ioPack.common.version : ''; + let version = ioPack?.common ? ioPack.common.version : ''; if (version) { version = `@${version}`; } if ( - (ioPack && ioPack.common && ioPack.common.version === installed.common.version) || - (!forceDowngrade && - ioPack && - ioPack.common && - tools.upToDate(ioPack.common.version, installed.common.version)) + (ioPack?.common && ioPack.common.version === installed.common.version) || + (!forceDowngrade && ioPack?.common && tools.upToDate(ioPack.common.version, installed.common.version)) ) { console.log( `Host "${this.hostname}"${ @@ -710,7 +718,7 @@ export class Upgrade { } else if (controllerRunning) { console.warn(`Controller is running. Please stop ioBroker first.`); } else { - const name = ioPack && ioPack.common && ioPack.common.name ? ioPack.common.name : controllerName; + const name = ioPack?.common?.name ? ioPack.common.name : controllerName; console.log(`Update ${name} from @${installed.common.version} to ${version}`); // Get the controller from web site await this.install.downloadPacket(sources, name + version, { stopDb: true }); diff --git a/packages/cli/src/lib/setup/setupUpload.ts b/packages/cli/src/lib/setup/setupUpload.ts index 9e19122108..bc1abfbb40 100644 --- a/packages/cli/src/lib/setup/setupUpload.ts +++ b/packages/cli/src/lib/setup/setupUpload.ts @@ -10,10 +10,10 @@ import * as fs from 'fs-extra'; import { tools } from '@iobroker/js-controller-common'; import deepClone from 'deep-clone'; -import { isDeepStrictEqual } from 'util'; +import { isDeepStrictEqual } from 'node:util'; import axios from 'axios'; import mime from 'mime-types'; -import { join } from 'path'; +import { join } from 'node:path'; import type { Client as StatesRedisClient } from '@iobroker/db-states-redis'; import type { Client as ObjectsRedisClient } from '@iobroker/db-objects-redis'; import type { InternalLogger } from '@iobroker/js-controller-common/tools'; @@ -794,7 +794,7 @@ export class Upload { * * @param name * @param ioPack - * @param _logger + * @param logger */ async upgradeAdapterObjects( name: string, diff --git a/packages/cli/src/lib/setup/setupUsers.ts b/packages/cli/src/lib/setup/setupUsers.ts index 2538fbcf54..8384cf7099 100644 --- a/packages/cli/src/lib/setup/setupUsers.ts +++ b/packages/cli/src/lib/setup/setupUsers.ts @@ -1,5 +1,5 @@ import { password, tools, EXIT_CODES } from '@iobroker/js-controller-common'; -import type { ProcessExitCallback } from '../_Types'; +import type { ProcessExitCallback } from '../_Types.js'; import type { Client as ObjectsRedisClient } from '@iobroker/db-objects-redis'; import prompt from 'prompt'; diff --git a/packages/cli/src/lib/setup/setupVendor.ts b/packages/cli/src/lib/setup/setupVendor.ts index 422deeda08..38911e1d7c 100644 --- a/packages/cli/src/lib/setup/setupVendor.ts +++ b/packages/cli/src/lib/setup/setupVendor.ts @@ -2,7 +2,7 @@ import type { Client as ObjectsRedisClient } from '@iobroker/db-objects-redis'; import { tools } from '@iobroker/js-controller-common'; import fs from 'fs-extra'; import deepClone from 'deep-clone'; -import { isDeepStrictEqual } from 'util'; +import { isDeepStrictEqual } from 'node:util'; export interface CLIVendorOptions { objects: ObjectsRedisClient; diff --git a/packages/cli/src/lib/setup/setupVisDebug.ts b/packages/cli/src/lib/setup/setupVisDebug.ts index 247d90987d..71f73fd77d 100644 --- a/packages/cli/src/lib/setup/setupVisDebug.ts +++ b/packages/cli/src/lib/setup/setupVisDebug.ts @@ -1,10 +1,10 @@ import fs from 'fs-extra'; import { tools } from '@iobroker/js-controller-common'; -import path from 'path'; +import path from 'node:path'; import { EXIT_CODES } from '@iobroker/js-controller-common'; import type { Client as ObjectsRedisClient } from '@iobroker/db-objects-redis'; -import type { ProcessExitCallback } from '../_Types'; +import type { ProcessExitCallback } from '../_Types.js'; export interface CLIVisDebugOptions { objects: ObjectsRedisClient; diff --git a/packages/cli/src/lib/setup/utils.ts b/packages/cli/src/lib/setup/utils.ts index 6450530c2a..1b7d1a2a3e 100644 --- a/packages/cli/src/lib/setup/utils.ts +++ b/packages/cli/src/lib/setup/utils.ts @@ -1,7 +1,7 @@ import { EXIT_CODES } from '@iobroker/js-controller-common'; import { tools } from '@iobroker/js-controller-common'; import type { Client as ObjectsClient } from '@iobroker/db-objects-redis'; -import { IoBrokerError } from './customError'; +import { IoBrokerError } from './customError.js'; interface GetRepositoryOptions { /** The objects DB client */ diff --git a/packages/common-db/package.json b/packages/common-db/package.json index ed0cccf85a..6e51e0a292 100644 --- a/packages/common-db/package.json +++ b/packages/common-db/package.json @@ -1,5 +1,6 @@ { "name": "@iobroker/js-controller-common-db", + "type": "module", "version": "5.0.20-alpha.0-20240409-d68ed299", "engines": { "node": ">=12.0.0" @@ -32,8 +33,8 @@ "url": "https://github.com/ioBroker/ioBroker.js-controller/tree/master/packages/common-db" }, "scripts": { - "build": "tsc -b tsconfig.build.json", - "postbuild": "esm2cjs --in build/esm --out build/cjs -l error && cpy ./**/*.d.ts ./build/cjs/ --cwd=build/esm/" + "build": "tsc -b tsconfig.build.json && tsc-alias", + "postbuild": "esm2cjs --in build/esm --out build/cjs -l error -t node18 && cpy ./**/*.d.ts ./build/cjs/ --cwd=build/esm/" }, "main": "build/cjs/index.js", "module": "build/esm/index.js", diff --git a/packages/common-db/src/index.ts b/packages/common-db/src/index.ts index 9162cbd52a..eeeafafb6b 100644 --- a/packages/common-db/src/index.ts +++ b/packages/common-db/src/index.ts @@ -1,4 +1,4 @@ -export * as tools from './lib/common/tools'; -export { getStatesConstructor } from './lib/common/states'; -export { getObjectsConstructor } from './lib/common/objects'; -export { NotificationHandler } from './lib/common/notificationHandler'; +export * as tools from '@/lib/common/tools.js'; +export { getStatesConstructor } from '@/lib/common/states.js'; +export { getObjectsConstructor } from '@/lib/common/objects.js'; +export { NotificationHandler } from '@/lib/common/notificationHandler.js'; diff --git a/packages/common-db/src/lib/common/notificationHandler.ts b/packages/common-db/src/lib/common/notificationHandler.ts index beacf073b9..6ddf6b9609 100644 --- a/packages/common-db/src/lib/common/notificationHandler.ts +++ b/packages/common-db/src/lib/common/notificationHandler.ts @@ -6,7 +6,7 @@ import fs from 'fs-extra'; import { tools } from '@iobroker/js-controller-common'; -import path from 'path'; +import path from 'node:path'; import type { Client as StatesInRedisClient } from '@iobroker/db-states-redis'; import type { Client as ObjectsInRedisClient } from '@iobroker/db-objects-redis'; import type Winston from 'winston'; diff --git a/packages/common-db/src/lib/common/objects.ts b/packages/common-db/src/lib/common/objects.ts index 9e8593d1da..97ba0c47c2 100644 --- a/packages/common-db/src/lib/common/objects.ts +++ b/packages/common-db/src/lib/common/objects.ts @@ -1,17 +1,18 @@ -import * as fs from 'fs-extra'; +import fs from 'fs-extra'; import { tools } from '@iobroker/js-controller-common'; -export function getObjectsConstructor(): any { +export async function getObjectsConstructor(): Promise { const config = fs.readJSONSync(tools.getConfigFileName()); if (!config.objects) { config.objects = { type: 'jsonl' }; } try { - // eslint-disable-next-line @typescript-eslint/no-var-requires - return require(`@iobroker/db-objects-${config.objects.type}`).Client; - } catch { - console.error(`Installation broken or unknown objects type: ${config.objects.type} configured.`); + const Client = (await import(`@iobroker/db-objects-${config.objects.type}`)).Client; + return Client; + } catch (e) { + console.error(e.stack); + console.error(`Installation broken or unknown objects type: ${config.objects.type} configured`); process.exit(101); } } diff --git a/packages/common-db/src/lib/common/states.ts b/packages/common-db/src/lib/common/states.ts index 8c9f5a0eb2..b48a011c2c 100644 --- a/packages/common-db/src/lib/common/states.ts +++ b/packages/common-db/src/lib/common/states.ts @@ -1,16 +1,17 @@ -import * as fs from 'fs-extra'; +import fs from 'fs-extra'; import { tools } from '@iobroker/js-controller-common'; -export function getStatesConstructor(): any { +export async function getStatesConstructor(): Promise { const config = fs.readJSONSync(tools.getConfigFileName()); if (!config.states) { config.states = { type: 'jsonl' }; } try { - // eslint-disable-next-line @typescript-eslint/no-var-requires - return require(`@iobroker/db-states-${config.states.type}`).Client; - } catch { + const Client = (await import(`@iobroker/db-states-${config.states.type}`)).Client; + return Client; + } catch (e) { + console.error(e.stack); console.error(`Installation broken or unknown states type: ${config.states.type} configured.`); process.exit(101); } diff --git a/packages/common-db/src/lib/common/tools.ts b/packages/common-db/src/lib/common/tools.ts index 5194042d82..debbae0227 100644 --- a/packages/common-db/src/lib/common/tools.ts +++ b/packages/common-db/src/lib/common/tools.ts @@ -6,10 +6,10 @@ import { tools } from '@iobroker/js-controller-common'; * @param dbType database type * @returns true if a server class is available */ -export function statesDbHasServer(dbType: string): boolean { +export async function statesDbHasServer(dbType: string): Promise { try { - // eslint-disable-next-line @typescript-eslint/no-var-requires - return !!require(`@iobroker/db-states-${dbType}`).Server; + const states = await import(`@iobroker/db-states-${dbType}`); + return !!states.Server; } catch { throw new Error(`Installation error or unknown states database type: ${dbType}`); } @@ -23,12 +23,13 @@ export function statesDbHasServer(dbType: string): boolean { * @param checkIfLocalOnly if true the method checks if the server listens to local connections only; else also external connection options are checked * @returns true if a server listens on this host (locally or globally/by IP) */ -export function isLocalObjectsDbServer( +export async function isLocalObjectsDbServer( dbType: string, host: string | string[], checkIfLocalOnly: boolean = false -): boolean { - if (!objectsDbHasServer(dbType)) { +): Promise { + const hasServer = await objectsDbHasServer(dbType); + if (!hasServer) { return false; // if no server it can not be a local server } @@ -53,8 +54,13 @@ export function isLocalObjectsDbServer( * @param checkIfLocalOnly if true the method checks if the server listens to local connections only; else also external connection options are checked * @returns true if a server listens on this host (locally or globally/by IP) */ -export function isLocalStatesDbServer(dbType: string, host: string | string[], checkIfLocalOnly = false): boolean { - if (!statesDbHasServer(dbType)) { +export async function isLocalStatesDbServer( + dbType: string, + host: string | string[], + checkIfLocalOnly = false +): Promise { + const hasServer = await statesDbHasServer(dbType); + if (!hasServer) { return false; // if no server it can not be a local server } @@ -77,11 +83,12 @@ export function isLocalStatesDbServer(dbType: string, host: string | string[], c * @param dbType database type * @returns true if a server class is available */ -export function objectsDbHasServer(dbType: string): boolean { +export async function objectsDbHasServer(dbType: string): Promise { try { - // eslint-disable-next-line @typescript-eslint/no-var-requires - return !!require(`@iobroker/db-objects-${dbType}`).Server; - } catch { + const objects = await import(`@iobroker/db-objects-${dbType}`); + return !!objects.Server; + } catch (e) { + console.error(e); throw new Error(`Installation error or unknown objects database type: ${dbType}`); } } diff --git a/packages/common-db/tsconfig.json b/packages/common-db/tsconfig.json index 037b03fb5a..3fbcc5eb36 100644 --- a/packages/common-db/tsconfig.json +++ b/packages/common-db/tsconfig.json @@ -4,7 +4,12 @@ "outDir": "build/esm", "module": "NodeNext", "rootDir": "src", - "noEmit": false + "noEmit": false, + "paths": { + "@/*": [ + "./src/*" + ] + } }, "references": [ { diff --git a/packages/common/package.json b/packages/common/package.json index e96044b4dc..d4903c312d 100644 --- a/packages/common/package.json +++ b/packages/common/package.json @@ -1,5 +1,6 @@ { "name": "@iobroker/js-controller-common", + "type": "module", "version": "5.0.20-alpha.0-20240409-d68ed299", "engines": { "node": ">=18.0.0" @@ -41,8 +42,8 @@ "url": "https://github.com/ioBroker/ioBroker.js-controller/tree/master/packages/common" }, "scripts": { - "build": "tsc -b tsconfig.build.json", - "postbuild": "esm2cjs --in build/esm --out build/cjs -l error && cpy ./**/*.d.ts ./build/cjs/ --cwd=build/esm/" + "build": "tsc -b tsconfig.build.json && tsc-alias", + "postbuild": "esm2cjs --in build/esm --out build/cjs -l error -t node18 && cpy ./**/*.d.ts ./build/cjs/ --cwd=build/esm/" }, "main": "build/cjs/index.js", "module": "build/esm/index.js", diff --git a/packages/common/src/index.ts b/packages/common/src/index.ts index 3b392ebf85..8bece2d4ae 100644 --- a/packages/common/src/index.ts +++ b/packages/common/src/index.ts @@ -1,6 +1,6 @@ /// -export * as tools from './lib/common/tools'; -export { EXIT_CODES } from './lib/common/exitCodes'; -export { password } from './lib/common/password'; -export { logger } from './lib/common/logger'; -export * as constants from './lib/common/constants'; +export * as tools from '@/lib/common/tools.js'; +export { EXIT_CODES } from '@/lib/common/exitCodes.js'; +export { password } from '@/lib/common/password.js'; +export { logger } from '@/lib/common/logger.js'; +export * as constants from '@/lib/common/constants.js'; diff --git a/packages/common/src/lib/common/logger.ts b/packages/common/src/lib/common/logger.ts index 65d643f1e3..401e9acae3 100644 --- a/packages/common/src/lib/common/logger.ts +++ b/packages/common/src/lib/common/logger.ts @@ -1,20 +1,27 @@ import winston from 'winston'; import DailyRotateFile from 'winston-daily-rotate-file'; -import fs from 'fs'; -import path from 'path'; -import os from 'os'; -import * as tools from './tools'; +import fs from 'node:fs'; +import path from 'node:path'; +import os from 'node:os'; +import * as tools from '@/lib/common/tools.js'; import Transport from 'winston-transport'; import { LEVEL } from 'triple-beam'; import deepClone from 'deep-clone'; import type { Syslog } from 'winston-syslog'; import type { SeqTransport } from '@datalust/winston-seq'; +import * as url from 'node:url'; +import { createRequire } from 'node:module'; + +// eslint-disable-next-line unicorn/prefer-module +const thisDir = url.fileURLToPath(new URL('.', import.meta.url || 'file://' + __dirname)); + +// eslint-disable-next-line unicorn/prefer-module +const require = createRequire(import.meta.url || 'file://' + __dirname); const hostname = tools.getHostName(); let SysLog: typeof Syslog | undefined; try { - // eslint-disable-next-line @typescript-eslint/no-var-requires SysLog = require('winston-syslog').Syslog; } catch { //console.log('No syslog support'); @@ -22,7 +29,6 @@ try { let Seq: typeof SeqTransport | undefined; try { - // eslint-disable-next-line @typescript-eslint/no-var-requires Seq = require('@datalust/winston-seq').SeqTransport; } catch { //console.log('No seq support'); @@ -154,7 +160,7 @@ export function logger( files = files || []; // indicator which is used to determine the log dir for developing, where it should be inside the repository - const isNpm = !__dirname + const isNpm = !thisDir .replace(/\\/g, '/') .toLowerCase() .includes(`${tools.appName.toLowerCase()}.js-controller/packages/`); @@ -362,7 +368,7 @@ export function logger( const opt = { name: i ? `dailyRotateFile${i}` : tools.appName, filename: path.normalize( - isNpm ? `${__dirname}/../../../log/${files[i]}` : `${__dirname}/../log/${files[i]}` + isNpm ? `${thisDir}/../../../log/${files[i]}` : `${thisDir}/../log/${files[i]}` ), extension: '.log', datePattern: 'YYYY-MM-DD', diff --git a/packages/common/src/lib/common/maybeCallback.test.ts b/packages/common/src/lib/common/maybeCallback.test.ts index c12b9d4ad4..8d35ff3825 100644 --- a/packages/common/src/lib/common/maybeCallback.test.ts +++ b/packages/common/src/lib/common/maybeCallback.test.ts @@ -1,7 +1,7 @@ /* eslint-disable require-await */ /* eslint-disable @typescript-eslint/no-unused-vars */ -import { maybeCallback, maybeCallbackWithError, maybeCallbackWithRedisError } from './maybeCallback'; +import { maybeCallback, maybeCallbackWithError, maybeCallbackWithRedisError } from '@/lib/common/maybeCallback.js'; // ============================================================ // maybeCallbackWithError => Callback diff --git a/packages/common/src/lib/common/maybeCallback.ts b/packages/common/src/lib/common/maybeCallback.ts index 7b2f0dd617..d03db9cceb 100644 --- a/packages/common/src/lib/common/maybeCallback.ts +++ b/packages/common/src/lib/common/maybeCallback.ts @@ -1,6 +1,6 @@ // Beware, below be TypeScript dragons! -import { ERRORS } from './tools'; +import { ERRORS } from '@/lib/common/tools.js'; type MaybeCbCallback = (...args: T) => void; type MaybeCbErrCallback = (error: Error | null | undefined, ...args: T) => void; diff --git a/packages/common/src/lib/common/password.ts b/packages/common/src/lib/common/password.ts index a41dd1ffc0..fb5af0b276 100644 --- a/packages/common/src/lib/common/password.ts +++ b/packages/common/src/lib/common/password.ts @@ -29,7 +29,7 @@ * */ -import crypto from 'crypto'; +import crypto from 'node:crypto'; export interface PasswordReturnValue { complexity: (password: string, callback: (isComplex: boolean) => void) => boolean; diff --git a/packages/common/src/lib/common/tools.ts b/packages/common/src/lib/common/tools.ts index ff69bd8d16..4344b50e50 100644 --- a/packages/common/src/lib/common/tools.ts +++ b/packages/common/src/lib/common/tools.ts @@ -1,30 +1,41 @@ import fs from 'fs-extra'; -import path from 'path'; +import path from 'node:path'; import semver from 'semver'; -import os from 'os'; +import os from 'node:os'; import forge from 'node-forge'; import deepClone from 'deep-clone'; import { type ChildProcessPromise, exec as cpExecAsync } from 'promisify-child-process'; -import { createInterface } from 'readline'; -import { PassThrough } from 'stream'; +import { createInterface } from 'node:readline'; +import { PassThrough } from 'node:stream'; import type { CommandResult, InstallOptions, PackageManager } from '@alcalzone/pak'; import { detectPackageManager, packageManagers } from '@alcalzone/pak'; -import { EXIT_CODES } from './exitCodes'; -import zlib from 'zlib'; -import { password } from './password'; +import { EXIT_CODES } from '@/lib/common/exitCodes.js'; +import zlib from 'node:zlib'; +import { password } from '@/lib/common/password.js'; import jwt from 'jsonwebtoken'; import axios from 'axios'; -import crypto from 'crypto'; -import type { ExecOptions } from 'child_process'; -import { exec } from 'child_process'; -import { URLSearchParams } from 'url'; -import events from 'events'; -import { maybeCallbackWithError } from './maybeCallback'; -// eslint-disable-next-line @typescript-eslint/no-var-requires -const extend = require('node.extend'); -import { setDefaultResultOrder } from 'dns'; -import { applyAliasAutoScaling, applyAliasConvenienceConversion, applyAliasTransformer } from './aliasProcessing'; +import crypto from 'node:crypto'; +import type { ExecOptions } from 'node:child_process'; +import { exec } from 'node:child_process'; +import { URLSearchParams } from 'node:url'; +import events from 'node:events'; +import { maybeCallbackWithError } from '@/lib/common/maybeCallback.js'; +// @ts-expect-error has no types +import extend from 'node.extend'; +import { setDefaultResultOrder } from 'node:dns'; +import { + applyAliasAutoScaling, + applyAliasConvenienceConversion, + applyAliasTransformer +} from '@/lib/common/aliasProcessing.js'; import type * as DiskUsage from 'diskusage'; +import * as url from 'node:url'; +import { createRequire } from 'node:module'; + +// eslint-disable-next-line unicorn/prefer-module +const thisDir = url.fileURLToPath(new URL('.', import.meta.url || 'file://' + __dirname)); +// eslint-disable-next-line unicorn/prefer-module +const require = createRequire(import.meta.url || 'file://' + __dirname); type DockerInformation = | { @@ -327,7 +338,13 @@ function _isDevInstallation(): boolean { return fs.pathExistsSync(`${getControllerDir()}/../../packages/controller`); } -function getAppName(): string { +/** In dev installations with uppercase B to match GitHub repo name - try to get rid of it in the long run */ +type AppName = 'iobroker' | 'ioBroker'; + +/** + * Get the app name either for prod or for dev installation + */ +function getAppName(): AppName { if (_isDevInstallation()) { // dev install - GitHub folder is uppercase return 'ioBroker'; @@ -336,8 +353,8 @@ function getAppName(): string { return 'iobroker'; } +export const appNameLowerCase = 'iobroker'; export const appName = getAppName(); -export const appNameLowerCase = appName.toLowerCase(); export function findIPs(): string[] { if (!lastCalculationOfIps || Date.now() - lastCalculationOfIps > 10000) { @@ -367,9 +384,9 @@ function findPath(path: string, url: string): string { return (path + url).replace(/\/\//g, '/').replace('http:/', 'http://').replace('https:/', 'https://'); } else { if (url[0] === '/') { - return `${__dirname}/..${url}`; + return `${thisDir}/..${url}`; } else { - return `${__dirname}/../${path}${url}`; + return `${thisDir}/../${path}${url}`; } } } @@ -484,7 +501,7 @@ function uuid(givenMac: string | null, callback: (uuid: string) => void): void { const _isDocker = isDocker(); // return constant UUID for all CI environments to keep the statistics clean - // eslint-disable-next-line @typescript-eslint/no-var-requires + if (require('ci-info').isCI) { return callback('55travis-pipe-line-cior-githubaction'); } @@ -700,7 +717,7 @@ export async function getFile(urlOrPath: string, fileName: string, callback: (fi urlOrPath.substring(0, 'http://'.length) === 'http://' || urlOrPath.substring(0, 'https://'.length) === 'https://' ) { - const tmpFile = `${__dirname}/../tmp/${fileName || `${Math.floor(Math.random() * 0xffffffe)}.zip`}`; + const tmpFile = `${thisDir}/../tmp/${fileName || `${Math.floor(Math.random() * 0xffffffe)}.zip`}`; try { // Add some information to user-agent, like chrome, IE and Firefox do @@ -724,10 +741,10 @@ export async function getFile(urlOrPath: string, fileName: string, callback: (fi try { if (fs.existsSync(urlOrPath)) { callback && callback(urlOrPath); - } else if (fs.existsSync(`${__dirname}/../${urlOrPath}`)) { - callback && callback(`${__dirname}/../${urlOrPath}`); - } else if (fs.existsSync(`${__dirname}/../tmp/${urlOrPath}`)) { - callback && callback(`${__dirname}/../tmp/${urlOrPath}`); + } else if (fs.existsSync(`${thisDir}/../${urlOrPath}`)) { + callback && callback(`${thisDir}/../${urlOrPath}`); + } else if (fs.existsSync(`${thisDir}/../tmp/${urlOrPath}`)) { + callback && callback(`${thisDir}/../tmp/${urlOrPath}`); } else { console.log(`File not found: ${urlOrPath}`); process.exit(EXIT_CODES.FILE_NOT_FOUND); @@ -802,11 +819,11 @@ export async function getJson( if (callback) { callback(sources, urlOrPath); } - } else if (fs.existsSync(`${__dirname}/../${urlOrPath}`)) { + } else if (fs.existsSync(`${thisDir}/../${urlOrPath}`)) { try { - sources = fs.readJSONSync(`${__dirname}/../${urlOrPath}`); + sources = fs.readJSONSync(`${thisDir}/../${urlOrPath}`); } catch (e) { - console.log(`Cannot parse json file from ${__dirname}/../${urlOrPath}. Error: ${e.message}`); + console.log(`Cannot parse json file from ${thisDir}/../${urlOrPath}. Error: ${e.message}`); if (callback) { callback(null, urlOrPath); } @@ -815,11 +832,11 @@ export async function getJson( if (callback) { callback(sources, urlOrPath); } - } else if (fs.existsSync(`${__dirname}/../tmp/${urlOrPath}`)) { + } else if (fs.existsSync(`${thisDir}/../tmp/${urlOrPath}`)) { try { - sources = fs.readJSONSync(`${__dirname}/../tmp/${urlOrPath}`); + sources = fs.readJSONSync(`${thisDir}/../tmp/${urlOrPath}`); } catch (e) { - console.log(`Cannot parse json file from ${__dirname}/../tmp/${urlOrPath}. Error: ${e.message}`); + console.log(`Cannot parse json file from ${thisDir}/../tmp/${urlOrPath}. Error: ${e.message}`); if (callback) { callback(null, urlOrPath); } @@ -876,19 +893,19 @@ export async function getJsonAsync(urlOrPath: string, agent?: string): Promise }; } } catch (e) { - console.log( - `Cannot read or parse ${__dirname}/../node_modules/${dirs[i]}/io-package.json: ${e.message}` - ); + console.log(`Cannot read or parse ${thisDir}/../node_modules/${dirs[i]}/io-package.json: ${e.message}`); } } } @@ -1464,7 +1479,6 @@ export async function getRepositoryFileAsync( data = _actualRepo; } else { const agent = `${appName}, RND: ${randomID}, Node:${process.version}, V:${ - // eslint-disable-next-line @typescript-eslint/no-var-requires require('@iobroker/js-controller-common/package.json').version }`; try { @@ -1546,9 +1560,7 @@ export function getAdapterDir(adapter: string): string | null { adapterPath = path.join(getControllerDir(), 'node_modules', possibility); } else { try { - adapterPath = require.resolve(possibility, { - paths: getDefaultRequireResolvePaths(module) - }); + adapterPath = require.resolve(possibility); } catch { // not found } @@ -1595,8 +1607,7 @@ export function getHostName(): string { * */ function getSystemNpmVersion(callback?: (err?: Error, version?: string | null) => void): void { - // eslint-disable-next-line @typescript-eslint/no-var-requires - const { exec } = require('child_process'); + const { exec } = require('node:child_process'); // remove local node_modules\.bin dir from a path // or we potentially get a wrong npm version @@ -1670,7 +1681,7 @@ async function detectPackageManagerWithFallback(cwd?: string): Promise { + const adapterDir = getAdapterDir(adapter); + if (!adapterDir) { + throw new Error(`Could not find adapter dir of ${adapter}`); + } + + const packJson = await fs.readJSON(path.join(adapterDir, 'package.json'), { encoding: 'utf-8' }); + + return packJson.type === 'module'; +} + /** * Find the adapter main file as full path * @@ -3973,4 +3999,4 @@ export async function isIoBrokerInstalledAsSystemd(): Promise { } } -export * from './maybeCallback'; +export * from '@/lib/common/maybeCallback.js'; diff --git a/packages/common/tsconfig.json b/packages/common/tsconfig.json index 3eb55051be..178b3f6600 100644 --- a/packages/common/tsconfig.json +++ b/packages/common/tsconfig.json @@ -3,7 +3,12 @@ "compilerOptions": { "outDir": "build/esm", "rootDir": "src", - "module": "NodeNext" + "module": "NodeNext", + "paths": { + "@/*": [ + "./src/*" + ] + } }, "include": [ "src/**/*.ts" diff --git a/packages/controller/controller.js b/packages/controller/controller.js index 6319e36bc0..b3e4690487 100644 --- a/packages/controller/controller.js +++ b/packages/controller/controller.js @@ -6,4 +6,4 @@ * */ -require('./build/cjs/main').init(); +import('./build/esm/main.js').then(res => res.init()); diff --git a/packages/controller/iobroker.js b/packages/controller/iobroker.js index 42700e06b4..1e703a397d 100755 --- a/packages/controller/iobroker.js +++ b/packages/controller/iobroker.js @@ -1 +1 @@ -require('@iobroker/js-controller-cli').execute(); +import('@iobroker/js-controller-cli').then(res => res.execute()); diff --git a/packages/controller/package.json b/packages/controller/package.json index cbfb8ad579..a320691722 100644 --- a/packages/controller/package.json +++ b/packages/controller/package.json @@ -1,15 +1,9 @@ { "name": "iobroker.js-controller", + "type": "module", "version": "5.0.20-alpha.0-20240409-d68ed299", "engines": { - "node": ">=16.4.0" - }, - "optionalDependencies": { - "greenlock": "^4.0.4", - "greenlock-express": "^4.0.3", - "le-acme-core": "^2.1.4", - "le-challenge-fs": "^2.0.9", - "le-sni-auto": "^2.1.9" + "node": ">=18.0.0" }, "bin": { "iobroker": "./iobroker.js" @@ -83,8 +77,8 @@ }, "scripts": { "build": "tsc -b tsconfig.build.json && tsc-alias", - "postbuild": "esm2cjs --in build/esm --out build/cjs -l error && cpy ./**/*.d.ts ./build/cjs/ --cwd=build/esm/", - "preinstall": "node build/cjs/lib/preinstallCheck.js", + "postbuild": "esm2cjs --in build/esm --out build/cjs -l error -t node18 && cpy ./**/*.d.ts ./build/cjs/ --cwd=build/esm/", + "preinstall": "node build/esm/lib/preinstallCheck.js", "install": "node iobroker.js setup first", "start": "node iobroker.js start", "stop": "node iobroker.js stop", diff --git a/packages/controller/src/compactgroupController.ts b/packages/controller/src/compactgroupController.ts index d2f5b25e78..84afdb307e 100644 --- a/packages/controller/src/compactgroupController.ts +++ b/packages/controller/src/compactgroupController.ts @@ -5,7 +5,7 @@ * MIT License * */ -import { init } from '@/main'; +import { init } from '@/main.js'; const compactGroup = parseInt(process.argv[2], 10); if (isNaN(compactGroup) || compactGroup < 1) { diff --git a/packages/controller/src/lib/adapter.js b/packages/controller/src/lib/adapter.js deleted file mode 100644 index 348d72ab3f..0000000000 --- a/packages/controller/src/lib/adapter.js +++ /dev/null @@ -1,2 +0,0 @@ -// staying backward compatible -module.exports = require('@iobroker/js-controller-adapter').Adapter; diff --git a/packages/controller/src/lib/adapter.ts b/packages/controller/src/lib/adapter.ts new file mode 100644 index 0000000000..83bb2ee162 --- /dev/null +++ b/packages/controller/src/lib/adapter.ts @@ -0,0 +1,4 @@ +// staying backward compatible +import { Adapter } from '@iobroker/js-controller-adapter'; + +export default Adapter; diff --git a/packages/controller/src/lib/exitCodes.js b/packages/controller/src/lib/exitCodes.js deleted file mode 100644 index 9a8ff69f6d..0000000000 --- a/packages/controller/src/lib/exitCodes.js +++ /dev/null @@ -1,2 +0,0 @@ -// staying backward compatible -module.exports = require('@iobroker/js-controller-common').EXIT_CODES; diff --git a/packages/controller/src/lib/exitCodes.ts b/packages/controller/src/lib/exitCodes.ts new file mode 100644 index 0000000000..28406c09fc --- /dev/null +++ b/packages/controller/src/lib/exitCodes.ts @@ -0,0 +1,4 @@ +// staying backward compatible +import { EXIT_CODES } from '@iobroker/js-controller-common'; + +export default EXIT_CODES; diff --git a/packages/controller/src/lib/letsencrypt.js b/packages/controller/src/lib/letsencrypt.js deleted file mode 100644 index 5b67e87f19..0000000000 --- a/packages/controller/src/lib/letsencrypt.js +++ /dev/null @@ -1,239 +0,0 @@ -'use strict'; -const { tools } = require('@iobroker/js-controller-common'); -const fs = require('fs-extra'); - -/** - * This method initializes a web server with certificates if needed and returns a promise - * @param app - * @param settings - * @param certificates - * @param leSettings - * @param log - * @param adapter - * @returns {Promise} - */ -async function createServerAsync(app, settings, certificates, leSettings, log, adapter) { - log.warn( - `Information for Developer: Using the direct "Let's encrypt" module import is deprecated and will be removed in the next js-controller version, use @iobroker/webserver instead` - ); - - if (!settings.secure) { - log.debug('Using http createServer'); - return require('http').createServer(app); - } else if (!settings.leEnabled) { - log.debug('Using https createServer'); - return require('https').createServer(certificates, app); - } - // prepare domains - if (leSettings && typeof leSettings.domains === 'string') { - leSettings.domains = leSettings.domains - .split(',') - .map(d => d.trim()) - .filter(d => d); - } - - if (!leSettings || !leSettings.email || !Array.isArray(leSettings.domains) || !leSettings.domains.length) { - log.error( - "Please specify the email address and domains to use Let's Encrypt certificates! We reuse old certificates" - ); - return require('https').createServer(certificates, app); - } - - let leDir; - - let configPath = tools.getConfigFileName().replace(/\\/g, '/'); - const parts = configPath.split('/'); - parts.pop(); - configPath = parts.join('/'); - - if (leSettings.path && (leSettings.path[0] === '/' || leSettings.path.match(/^[A-Za-z]:/))) { - leDir = leSettings.path; - } else { - leDir = `${configPath}/${leSettings.path || 'letsencrypt'}`; - } - - try { - if (!fs.existsSync(leDir)) { - fs.mkdirSync(leDir); - } - } catch (err) { - log.error( - `Lets encrypt Directory does not exist and can not be created as ${leDir}: ${err.message}. We reuse old certificates` - ); - return require('https').createServer(certificates, app); - } - - // TODO? Tried adding sites in the gl create but that didn't work so is below with gl.add. - - const pkg = require(`${tools.getControllerDir()}/package.json`); - const glOpts = { - packageRoot: tools.getControllerDir(), - configDir: leDir, - maintainerEmail: leSettings.email, - cluster: false, - packageAgent: `${pkg.name}/${pkg.version}`, - renew: settings.leUpdate, - notify: (ev, params) => { - switch (ev) { - case 'warning': - log.warn(`[LE] ${typeof params === 'string' ? params : JSON.stringify(params)}`); - break; - - case 'error': - log.error(`[LE] ${typeof params === 'string' ? params : JSON.stringify(params)}`); - break; - - default: - // For all other event types, always debug - log.debug(`[LE] ${ev}: ${typeof params === 'string' ? params : JSON.stringify(params)}`); - - // Special cases for certificate issue/renewal notices - // TODO: possibly check for ev === 'cert_renewal' / 'cert_issue' - if (params.status === 'valid' && params.altname) { - log.info(`Received new certificate for ${params.altname} via ${params.type}`); - } else if (params.renewAt) { - log.info( - `Certificate for ${params.subject} is valid till ${new Date(params.renewAt).toISOString()}` - ); - adapter && - adapter.sendToHost(adapter.host, 'certsUpdated', { - validTill: params.renewAt, - domain: params.subject, - instance: adapter.namespace - }); - } - break; - } - } - }; - - if (settings.leStaging) { - log.debug('Greenlock staging enabled'); - glOpts.staging = true; - } - - const gl = require('greenlock').create(glOpts); - - let addedDomains = 0; - // Add sites. - // Allowed in leSettings.domains: - // * "String" with comma separated list of single domain names (parsing above) - // * each will be registered as own cert - // * "Array" with eighter - // * "String" that is the domain name and each will be registered as own cert - // * "Array of String where the first entry is the main domain name and others - // alternative names (alternative names also contain main domain for greenlock) - for (const domainEntry of leSettings.domains) { - let altnames; - let domain; - if (Array.isArray(domainEntry)) { - altnames = domainEntry; - domain = altnames[0]; - } else if (typeof domainEntry === 'string') { - altnames = [domainEntry]; - domain = domainEntry; - } - if (!domain || !altnames) { - continue; - } - - log.debug(`Adding to Greenlock: ${domain} with alternative names ${altnames.join(',')}`); - try { - await gl.add({ subject: domain, altnames }); - addedDomains++; - } catch (err) { - log.warn(`Failed to add "${domain}" into configuration: ${err.message}`); - } - } - - if (!addedDomains) { - log.error(`No domains available for Let's Encrypt, reuse old certificates`); - return require('https').createServer(certificates, app); - } - - await gl.manager.defaults({ - agreeToTerms: true, - subscriberEmail: leSettings.email - }); - - return new Promise((resolve, reject) => { - require('greenlock-express') - .init({ - greenlock: gl - }) - .ready(glx => { - // The below is from greenlock-express examples/https/server.js - - if (settings.leUpdate) { - // Start the challenge server. Wait for it before resolving (pass back https). - settings.lePort = parseInt(settings.lePort, 10) || 80; - const bind = - !settings.bind || tools.isListenAllAddress(settings.bind) - ? undefined - : settings.bind || undefined; - // Check port not in use, because catching EADDRINUSE from httpServer.listen not possible. - adapter.getPort(settings.lePort, bind, port => { - if (port !== settings.lePort) { - reject(new Error(`Challenge server port ${settings.lePort} already in use`)); - } else { - const httpServer = glx.httpServer(); - httpServer.listen(settings.lePort, bind, () => { - log.info(`Challenge server listening on port ${settings.lePort}`); - log.info( - `If something is not working and your adapter webpage is not reachable anymore you can turn off HTTPS with executing "iobroker set ${ - adapter ? adapter.namespace : 'admin' - } --secure false" in your shell.` - ); - resolve(glx.httpsServer(null, app)); - }); - } - }); - } else { - // Just resolve with https. - // Don't call listen here (or above) because caller will do that - resolve(glx.httpsServer(null, app)); - } - }); - }); -} - -/** - * This method initializes a web server with certificates if needed. No Let's encrypt support anymore - * @param app - * @param settings - * @param certificates - * @param leSettings - * @param log - * @deprecated - * @returns {object} - */ -function createServer(app, settings, certificates, leSettings, log) { - log.warn( - `Information for Developer: Using the direct "Let's encrypt" module import is deprecated and will be removed in the next js-controller version, use @iobroker/webserver instead` - ); - - let server; - - if (settings.secure) { - if (leSettings && settings.leEnabled) { - log.info( - 'Please update this adapter to the latest version to allow again to update your certificates. Using the current certificates' - ); - } - - try { - server = require('https').createServer(certificates, app); - } catch (err) { - log.error(`HTTPS server could not be started: ${err.message}`); - } - } else { - server = require('http').createServer(app); - } - - return server; -} - -module.exports = { - createServerAsync, - createServer -}; diff --git a/packages/controller/src/lib/multihostServer.js b/packages/controller/src/lib/multihostServer.js index a794381414..11a4d40686 100644 --- a/packages/controller/src/lib/multihostServer.js +++ b/packages/controller/src/lib/multihostServer.js @@ -8,14 +8,13 @@ * */ -'use strict'; -const dgram = require('dgram'); -const { tools: dbTools } = require('@iobroker/js-controller-common-db'); +import dgram from 'node:dgram'; +import { tools as dbTools } from '@iobroker/js-controller-common-db'; const PORT = 50005; const MULTICAST_ADDR = '239.255.255.250'; /** @class */ -function MHServer(hostname, logger, config, info, ips, secret) { +export default function MHServer(hostname, logger, config, info, ips, secret) { const count = 0; const buffer = {}; const lastFrame = {}; @@ -79,9 +78,9 @@ function MHServer(hostname, logger, config, info, ips, secret) { } } - function sha(secret, salt, callback) { + async function sha(secret, salt, callback) { // calculate sha256 - crypto = crypto || require('crypto'); + crypto = crypto || (await import('node:crypto')); const hash = crypto.createHash('sha256'); hash.on('readable', () => { @@ -308,5 +307,3 @@ function MHServer(hostname, logger, config, info, ips, secret) { return this; } - -module.exports = MHServer; diff --git a/packages/controller/src/lib/objects/objectsInMemClient.js b/packages/controller/src/lib/objects/objectsInMemClient.ts similarity index 68% rename from packages/controller/src/lib/objects/objectsInMemClient.js rename to packages/controller/src/lib/objects/objectsInMemClient.ts index 017e5288e6..2448c250c0 100644 --- a/packages/controller/src/lib/objects/objectsInMemClient.js +++ b/packages/controller/src/lib/objects/objectsInMemClient.ts @@ -1,4 +1,5 @@ -'use strict'; // Deprecated. This is only for back compatibility by tests! console.warn('Deprecated! Please use require("@iobroker/db-objects-redis").Client library in tests!'); -module.exports = require('@iobroker/db-objects-redis').Client; + +import { Client } from '@iobroker/db-objects-redis'; +export default Client; diff --git a/packages/controller/src/lib/objects/objectsInMemServer.js b/packages/controller/src/lib/objects/objectsInMemServer.ts similarity index 78% rename from packages/controller/src/lib/objects/objectsInMemServer.js rename to packages/controller/src/lib/objects/objectsInMemServer.ts index bf4e90bd06..2cefc642ba 100644 --- a/packages/controller/src/lib/objects/objectsInMemServer.js +++ b/packages/controller/src/lib/objects/objectsInMemServer.ts @@ -1,6 +1,7 @@ -'use strict'; // Deprecated. This is only for back compatibility by tests! console.warn( 'Deprecated! Please use require("@iobroker/db-objects-file").Server in tests to start a server and then use require("@iobroker/db-objects-file").Client to connect with a client against this server!' ); -module.exports = require('@iobroker/db-objects-file').Server; + +import { Server } from '@iobroker/db-objects-file'; +export default Server; diff --git a/packages/controller/src/lib/password.js b/packages/controller/src/lib/password.js deleted file mode 100644 index e4a9d79c93..0000000000 --- a/packages/controller/src/lib/password.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('@iobroker/js-controller-common').password; diff --git a/packages/controller/src/lib/password.ts b/packages/controller/src/lib/password.ts new file mode 100644 index 0000000000..83e8c3c679 --- /dev/null +++ b/packages/controller/src/lib/password.ts @@ -0,0 +1,3 @@ +import { password } from '@iobroker/js-controller-common'; + +export default password; diff --git a/packages/controller/src/lib/restart.ts b/packages/controller/src/lib/restart.ts index e4fd4d7a1c..adf5767bba 100644 --- a/packages/controller/src/lib/restart.ts +++ b/packages/controller/src/lib/restart.ts @@ -2,6 +2,7 @@ import { spawn } from 'node:child_process'; import os from 'node:os'; import { getRootDir } from '@iobroker/js-controller-common/tools'; import path from 'node:path'; +import url from 'node:url'; /** * Restarts the js-controller @@ -34,6 +35,8 @@ export default function restart(callback?: () => void): void { } } -if (require.main === module) { +// eslint-disable-next-line unicorn/prefer-module +const modulePath = url.fileURLToPath(import.meta.url || 'file://' + __filename); +if (process.argv[1] === modulePath) { restart(); } diff --git a/packages/controller/src/lib/session.js b/packages/controller/src/lib/session.js index 8c44269dcf..84a3b96489 100644 --- a/packages/controller/src/lib/session.js +++ b/packages/controller/src/lib/session.js @@ -1,80 +1,77 @@ -'use strict'; -/** @type any */ -module.exports = function (session, defaultTtl) { +export default function createAdapterStore(session, defaultTtl = 3600) { const Store = session.Store; - defaultTtl = defaultTtl || 3600; - /** @class */ - function AdapterStore(options) { - // const that = this; + class AdapterStore extends Store { + constructor(options) { + super(options); + // const that = this; - this.adapter = options.adapter; + this.adapter = options.adapter; - options = options || {}; - if (!options.cookie) { - options.cookie = { maxAge: defaultTtl }; + options = options || {}; + if (!options.cookie) { + options.cookie = { maxAge: defaultTtl }; + } + Store.call(this, options); } - Store.call(this, options); - } - - AdapterStore.prototype = Object.create(Store.prototype); - /** - * Attempt to fetch session by the given `sid`. - * - * @param {String} sid Session ID - * @param {Function} fn callback - * @api public - */ - AdapterStore.prototype.get = function (sid, fn) { - this.adapter.getSession(sid, obj => { - if (obj) { - if (fn) { - return fn(null, obj); + /** + * Attempt to fetch session by the given `sid`. + * + * @param {String} sid Session ID + * @param {Function} fn callback + * @api public + */ + get(sid, fn) { + this.adapter.getSession(sid, obj => { + if (obj) { + if (fn) { + return fn(null, obj); + } + } else { + if (fn) { + return fn(); + } } - } else { - if (fn) { - return fn(); - } - } - }); - }; + }); + } - /** - * Commit the given `sess` object associated with the given `sid`. - * - * @param {String} sid Session ID - * @param {Number} ttl Time to live - * @param {Session} sess - * @param {Function} fn callback - * @api public - */ - AdapterStore.prototype.set = function (sid, ttl, sess, fn) { - if (typeof ttl === 'object') { - fn = sess; - sess = ttl; - // analyse if the session is stored directly from express session - ttl = - sess && sess.cookie && sess.cookie.originalMaxAge - ? Math.round(sess.cookie.originalMaxAge / 1000) - : defaultTtl; + /** + * Commit the given `sess` object associated with the given `sid`. + * + * @param {String} sid Session ID + * @param {Number} ttl Time to live + * @param {Session} sess + * @param {Function} fn callback + * @api public + */ + set(sid, ttl, sess, fn) { + if (typeof ttl === 'object') { + fn = sess; + sess = ttl; + // analyse if the session is stored directly from express session + ttl = + sess && sess.cookie && sess.cookie.originalMaxAge + ? Math.round(sess.cookie.originalMaxAge / 1000) + : defaultTtl; + } + ttl = ttl || defaultTtl; + this.adapter.setSession(sid, ttl, sess, function () { + fn && fn.apply(this, arguments); + }); // do not use here => !!! } - ttl = ttl || defaultTtl; - this.adapter.setSession(sid, ttl, sess, function () { - fn && fn.apply(this, arguments); - }); // do not use here => !!! - }; - /** - * Destroy the session associated with the given `sid`. - * - * @param {String} sid Session ID - * @param {Function} fn callback - * @api public - */ - AdapterStore.prototype.destroy = function (sid, fn) { - this.adapter.destroySession(sid, fn); - }; + /** + * Destroy the session associated with the given `sid`. + * + * @param {String} sid Session ID + * @param {Function} fn callback + * @api public + */ + destroy(sid, fn) { + this.adapter.destroySession(sid, fn); + } + } return AdapterStore; -}; +} diff --git a/packages/controller/src/lib/states/statesInMemClient.js b/packages/controller/src/lib/states/statesInMemClient.ts similarity index 67% rename from packages/controller/src/lib/states/statesInMemClient.js rename to packages/controller/src/lib/states/statesInMemClient.ts index 6d0603688d..127dd1c4e8 100644 --- a/packages/controller/src/lib/states/statesInMemClient.js +++ b/packages/controller/src/lib/states/statesInMemClient.ts @@ -1,4 +1,6 @@ -'use strict'; // Deprecated. This is only for back compatibility by tests! console.warn('Deprecated! Please use require("@iobroker/db-states-redis").Client library in tests!'); -module.exports = require('@iobroker/db-states-redis').Client; + +import { Client } from '@iobroker/db-states-redis'; + +export default Client; diff --git a/packages/controller/src/lib/states/statesInMemServer.js b/packages/controller/src/lib/states/statesInMemServer.ts similarity index 78% rename from packages/controller/src/lib/states/statesInMemServer.js rename to packages/controller/src/lib/states/statesInMemServer.ts index 881b7cc15c..9b22290ef9 100644 --- a/packages/controller/src/lib/states/statesInMemServer.js +++ b/packages/controller/src/lib/states/statesInMemServer.ts @@ -1,6 +1,7 @@ -'use strict'; // Deprecated. This is only for back compatibility by tests! console.warn( 'Deprecated! Please use require("@iobroker/db-states-file").Server in tests to start a server and then use require("@iobroker/db-states-file").Client to connect with a client against this server!' ); -module.exports = require('@iobroker/db-states-file').Server; + +import { Server } from '@iobroker/db-states-file'; +export default Server; diff --git a/packages/controller/src/lib/tools.js b/packages/controller/src/lib/tools.js deleted file mode 100644 index 2464082b0e..0000000000 --- a/packages/controller/src/lib/tools.js +++ /dev/null @@ -1,2 +0,0 @@ -// backward compatibility -module.exports = require('@iobroker/js-controller-common').tools; diff --git a/packages/controller/src/lib/tools.ts b/packages/controller/src/lib/tools.ts new file mode 100644 index 0000000000..f31d035a50 --- /dev/null +++ b/packages/controller/src/lib/tools.ts @@ -0,0 +1,4 @@ +// backward compatibility +import { tools } from '@iobroker/js-controller-common'; + +export default tools; diff --git a/packages/controller/src/lib/upgradeManager.ts b/packages/controller/src/lib/upgradeManager.ts index a972f3911b..d5b9e5b586 100644 --- a/packages/controller/src/lib/upgradeManager.ts +++ b/packages/controller/src/lib/upgradeManager.ts @@ -10,6 +10,7 @@ import type { Logger } from 'winston'; import fs from 'fs-extra'; import type { Socket } from 'node:net'; import type { Duplex } from 'node:stream'; +import url from 'node:url'; export interface UpgradeArguments { /** Version of controller to upgrade too */ @@ -407,14 +408,6 @@ async function main(): Promise { await upgradeManager.setFinished(); } -/** - * This file always needs to be executed in a process different from js-controller - * else it will be canceled when the file itself stops the controller - */ -if (require.main === module) { - main(); -} - /** * Stream unhandled errors to the log files * @@ -429,3 +422,13 @@ function registerErrorHandlers(upgradeManager: UpgradeManager): void { upgradeManager.log(`Unhandled rejection: ${rej instanceof Error ? rej.stack : JSON.stringify(rej)}`, true); }); } + +/** + * This file always needs to be executed in a process different from js-controller + * else it will be canceled when the file itself stops the controller + */ +// eslint-disable-next-line unicorn/prefer-module +const modulePath = url.fileURLToPath(import.meta.url || 'file://' + __filename); +if (process.argv[1] === modulePath) { + main(); +} diff --git a/packages/controller/src/lib/vis/states.ts b/packages/controller/src/lib/vis/states.ts index 98c6ab9bfa..ba2375d707 100644 --- a/packages/controller/src/lib/vis/states.ts +++ b/packages/controller/src/lib/vis/states.ts @@ -1,5 +1,4 @@ -// eslint-disable-next-line @typescript-eslint/no-var-requires -const { getUsedObjectIDs } = require('./visUtils'); +import { getUsedObjectIDs } from './visUtils.js'; import type { Client as ObjectsClient } from '@iobroker/db-objects-redis'; interface CalculatedProject { diff --git a/packages/controller/src/lib/vis/visUtils.js b/packages/controller/src/lib/vis/visUtils.js index 7f632817b8..b67e373d6c 100644 --- a/packages/controller/src/lib/vis/visUtils.js +++ b/packages/controller/src/lib/vis/visUtils.js @@ -618,7 +618,7 @@ function getUsedObjectIDsInWidget(views, view, wid, linkContext) { } } -function getUsedObjectIDs(views, isByViews) { +export function getUsedObjectIDs(views, isByViews) { if (!views) { console.log('Check why views are not yet loaded!'); return null; @@ -681,5 +681,3 @@ function getUsedObjectIDs(views, isByViews) { return linkContext; } - -module.exports = { getUsedObjectIDs }; diff --git a/packages/controller/src/main.ts b/packages/controller/src/main.ts index 28be6a8969..fb518c3ac5 100644 --- a/packages/controller/src/main.ts +++ b/packages/controller/src/main.ts @@ -15,7 +15,7 @@ import fs from 'fs-extra'; import path from 'node:path'; import cp, { spawn, exec } from 'node:child_process'; import semver from 'semver'; -import restart from '@/lib/restart'; +import restart from '@/lib/restart.js'; import { tools as dbTools } from '@iobroker/js-controller-common-db'; import pidUsage from 'pidusage'; import deepClone from 'deep-clone'; @@ -24,19 +24,30 @@ import { tools, EXIT_CODES, logger as toolsLogger } from '@iobroker/js-controlle import { SYSTEM_ADAPTER_PREFIX } from '@iobroker/js-controller-common/constants'; import { PluginHandler } from '@iobroker/plugin-base'; import { NotificationHandler } from '@iobroker/js-controller-common-db'; -import * as zipFiles from '@/lib/zipFiles'; +import * as zipFiles from '@/lib/zipFiles.js'; import type { Client as ObjectsClient } from '@iobroker/db-objects-redis'; import type { Client as StatesClient } from '@iobroker/db-states-redis'; import { Upload, PacketManager, type UpgradePacket } from '@iobroker/js-controller-cli'; import decache from 'decache'; import cronParser from 'cron-parser'; import type { PluginHandlerSettings } from '@iobroker/plugin-base/types'; -import { AdapterAutoUpgradeManager } from '@/lib/adapterAutoUpgradeManager'; -import { getDefaultNodeArgs, type HostInfo, type RepositoryFile } from '@iobroker/js-controller-common/tools'; -import type { UpgradeArguments } from '@/lib/upgradeManager'; -import { AdapterUpgradeManager } from '@/lib/adapterUpgradeManager'; +import { AdapterAutoUpgradeManager } from '@/lib/adapterAutoUpgradeManager.js'; +import { + getDefaultNodeArgs, + type HostInfo, + isAdapterEsmModule, + type RepositoryFile +} from '@iobroker/js-controller-common/tools'; +import type { UpgradeArguments } from '@/lib/upgradeManager.js'; +import { AdapterUpgradeManager } from '@/lib/adapterUpgradeManager.js'; import { setTimeout as wait } from 'node:timers/promises'; -import { getHostObjects } from '@/lib/objects'; +import { getHostObjects } from '@/lib/objects.js'; +import * as url from 'node:url'; +import { createRequire } from 'node:module'; +// eslint-disable-next-line unicorn/prefer-module +const thisDir = url.fileURLToPath(new URL('.', import.meta.url || 'file://' + __dirname)); +// eslint-disable-next-line unicorn/prefer-module +const require = createRequire(import.meta.url || 'file://' + __dirname); type DiagInfoType = 'extended' | 'normal' | 'no-city' | 'none'; type Dependencies = string[] | Record[] | string | Record; @@ -240,7 +251,6 @@ function getConfig(): ioBroker.IoBrokerJson | never { * @param secret */ function _startMultihost(_config: Record, secret: string | false): void { - // eslint-disable-next-line @typescript-eslint/no-var-requires const MHService = require('./lib/multihostServer.js'); const cpus = os.cpus(); mhService = new MHService( @@ -289,15 +299,23 @@ async function startMultihost(__config?: Record): Promise { logger.error( - `${hostLogPrefix} Cannot execute "${__dirname}/${tools.appName.toLowerCase()}.js ${commandScope} ${name}: ${ + `${hostLogPrefix} Cannot execute "${thisDir}/${tools.appName.toLowerCase()}.js ${commandScope} ${name}: ${ err.message }` ); @@ -3569,7 +3587,7 @@ function installAdapters(): void { }); } catch (err) { logger.error( - `${hostLogPrefix} Cannot execute "${__dirname}/${tools.appName.toLowerCase()}.js ${commandScope} ${name}: ${err}` + `${hostLogPrefix} Cannot execute "${thisDir}/${tools.appName.toLowerCase()}.js ${commandScope} ${name}: ${err}` ); setTimeout(() => { installQueue.shift(); @@ -4338,6 +4356,7 @@ async function startInstance(id: ioBroker.ObjectIDs.Instance, wakeUp = false): P if (adapterMainFile!) { try { + // @ts-expect-error commonjs module TODO: validate decache(adapterMainFile); // Prior to requiring the main file, make sure that the esbuild require hook was loaded @@ -4346,10 +4365,13 @@ async function startInstance(id: ioBroker.ObjectIDs.Instance, wakeUp = false): P require('@alcalzone/esbuild-register'); } + const module = (await isAdapterEsmModule(name)) + ? await import(adapterMainFile) + : require(adapterMainFile); + proc.process = { // @ts-expect-error TODO type compact processes too - // eslint-disable-next-line @typescript-eslint/no-var-requires - logic: require(adapterMainFile)({ + logic: module({ logLevel, compactInstance: _instance, compact: true @@ -4420,7 +4442,7 @@ async function startInstance(id: ioBroker.ObjectIDs.Instance, wakeUp = false): P try { compactProc.process = cp.fork( - path.join(__dirname, 'compactgroupController.js'), + path.join(thisDir, 'compactgroupController.js'), compactControllerArgs, { execArgv, @@ -5153,7 +5175,7 @@ function stop(force?: boolean, callback?: () => void): void { * * @param compactGroupId the id of the compact group */ -export function init(compactGroupId?: number): void { +export async function init(compactGroupId?: number): Promise { if (compactGroupId) { compactGroupController = true; compactGroup = compactGroupId; @@ -5185,21 +5207,19 @@ export function init(compactGroupId?: number): void { // Get "objects" object // If "file" and on the local machine - if (dbTools.isLocalObjectsDbServer(config.objects.type, config.objects.host) && !compactGroupController) { - // eslint-disable-next-line @typescript-eslint/no-var-requires + const hasLocalObjectsServer = await dbTools.isLocalObjectsDbServer(config.objects.type, config.objects.host); + if (hasLocalObjectsServer && !compactGroupController) { Objects = require(`@iobroker/db-objects-${config.objects.type}`).Server; } else { - // eslint-disable-next-line @typescript-eslint/no-var-requires - Objects = require('@iobroker/js-controller-common-db').getObjectsConstructor(); + Objects = await require('@iobroker/js-controller-common-db').getObjectsConstructor(); } + const hasLocalStatesServer = await dbTools.isLocalStatesDbServer(config.states.type, config.states.host); // Get "states" object - if (dbTools.isLocalStatesDbServer(config.states.type, config.states.host) && !compactGroupController) { - // eslint-disable-next-line @typescript-eslint/no-var-requires + if (hasLocalStatesServer && !compactGroupController) { States = require(`@iobroker/db-states-${config.states.type}`).Server; } else { - // eslint-disable-next-line @typescript-eslint/no-var-requires - States = require('@iobroker/js-controller-common-db').getStatesConstructor(); + States = await require('@iobroker/js-controller-common-db').getStatesConstructor(); } // Detect if outputs to console are forced. By default, they are disabled and redirected to log file @@ -5774,10 +5794,8 @@ async function autoUpgradeAdapters(): Promise { } } -if (module === require.main) { - // for direct calls +// eslint-disable-next-line unicorn/prefer-module +const modulePath = url.fileURLToPath(import.meta.url || 'file://' + __filename); +if (process.argv[1] === modulePath) { init(); -} else { - // normally used for legacy compatibility and compact group support - module.exports.init = init; } diff --git a/packages/controller/test/jsonl/testAdapterObjectsInFileJsonl.ts b/packages/controller/test/jsonl/testAdapterObjectsInFileJsonl.ts index a794e74983..970094e904 100644 --- a/packages/controller/test/jsonl/testAdapterObjectsInFileJsonl.ts +++ b/packages/controller/test/jsonl/testAdapterObjectsInFileJsonl.ts @@ -1,20 +1,18 @@ import { expect } from 'chai'; -import { startController, stopController } from '../lib/setup4controller'; -import type { Client as ObjectsInRedisClient } from '@iobroker/db-objects-redis'; +import { startController, stopController } from '../lib/setup4controller.js'; +import { register } from './../lib/testObjects.js'; +import type { TestContext } from '../_Types.js'; +import * as url from 'node:url'; +// eslint-disable-next-line unicorn/prefer-module +const thisDir = url.fileURLToPath(new URL('.', import.meta.url || 'file://' + __dirname)); let objects = null; let states = null; const textName = 'Jsonl-File'; -// eslint-disable-next-line @typescript-eslint/no-var-requires -const tests = require('../lib/testObjects'); -interface Context { - objects: ObjectsInRedisClient | null; - name: string; -} - -const context: Context = { +const context: TestContext = { + // @ts-expect-error fix later objects: null, name: textName }; @@ -25,7 +23,7 @@ const objectsConfig = { retry_max_delay: 100, retry_max_count: 2 }, - dataDir: __dirname + '/../tmp/data', + dataDir: thisDir + '/../tmp/data', type: 'jsonl', host: '127.0.0.1', port: 19001, @@ -45,7 +43,7 @@ describe(textName + ' Test Objects File-Redis', function () { const { objects: _objects, states: _states } = await startController({ objects: objectsConfig, states: { - dataDir: `${__dirname}/../tmp/data`, + dataDir: `${thisDir}/../tmp/data`, onChange: function (id: string, _state: ioBroker.State) { console.log('state changed. ' + id); } @@ -54,12 +52,13 @@ describe(textName + ' Test Objects File-Redis', function () { objects = _objects; states = _states; + // @ts-expect-error fix later context.objects = _objects; expect(objects).to.be.ok; expect(states).to.be.ok; }); - tests.register(it, expect, context); + register(it, expect, context); after(textName + ' Stop js-controller', async function () { this.timeout(5_000); diff --git a/packages/controller/test/jsonl/testAdapterStatesInFilesJsonl.ts b/packages/controller/test/jsonl/testAdapterStatesInFilesJsonl.ts index be08bcea93..32401c26fa 100644 --- a/packages/controller/test/jsonl/testAdapterStatesInFilesJsonl.ts +++ b/packages/controller/test/jsonl/testAdapterStatesInFilesJsonl.ts @@ -1,7 +1,10 @@ -import path from 'path'; -// eslint-disable-next-line @typescript-eslint/no-var-requires -const testAdapter = require('../lib/testAdapter'); -const dataDir = path.join(__dirname, '..', 'tmp', 'data'); +import path from 'node:path'; +import testAdapter from './../lib/testAdapter.js'; +import * as url from 'node:url'; +// eslint-disable-next-line unicorn/prefer-module +const thisDir = url.fileURLToPath(new URL('.', import.meta.url || 'file://' + __dirname)); + +const dataDir = path.join(thisDir, '..', 'tmp', 'data'); const statesConfig = { options: { diff --git a/packages/controller/test/lib/package.json b/packages/controller/test/lib/package.json index d86267a5cf..c32fba798a 100644 --- a/packages/controller/test/lib/package.json +++ b/packages/controller/test/lib/package.json @@ -1,5 +1,6 @@ { "name": "iobroker.test", + "type": "module", "version": "0.1.0", "description": "Test adapter", "author": { diff --git a/packages/controller/test/lib/setup4controller.ts b/packages/controller/test/lib/setup4controller.ts index d080ce93e1..4aec2b4b70 100644 --- a/packages/controller/test/lib/setup4controller.ts +++ b/packages/controller/test/lib/setup4controller.ts @@ -1,21 +1,20 @@ import fs from 'fs-extra'; -import path from 'path'; +import path from 'node:path'; import type { Client as ObjectsInRedisClient } from '@iobroker/db-objects-redis'; import type { Client as StateRedisClient } from '@iobroker/db-states-redis'; +import * as url from 'node:url'; +import { appNameLowerCase } from '@iobroker/js-controller-common/tools'; +// eslint-disable-next-line unicorn/prefer-module +const thisDir = url.fileURLToPath(new URL('.', import.meta.url || 'file://' + __dirname)); -export const rootDir = path.normalize(`${__dirname}/../../`); +export const rootDir = path.normalize(`${thisDir}/../../`); interface StartControllerReturnObject { states: StateRedisClient | null; objects: ObjectsInRedisClient | null; } -function getAppName(): string { - const parts = __dirname.replace(/\\/g, '/').split('/'); - return parts[parts.length - 5].split('.')[0]; -} - -export const appName = getAppName().toLowerCase(); +export const appName = appNameLowerCase; let objects: ObjectsInRedisClient | null; let states: StateRedisClient | null; @@ -23,7 +22,7 @@ let states: StateRedisClient | null; // ensure the temp dir is empty, because content of data/files etc is created and checked for existence in some tests fs.emptyDirSync(`${rootDir}tmp`); -export function startController(options: Record): Promise { +export async function startController(options: Record): Promise { if (!options) { options = {}; } @@ -44,6 +43,42 @@ export function startController(options: Record): Promise { const settingsObjects = { connection: { @@ -82,52 +117,8 @@ export function startController(options: Record): Promise { chai.use(chaiAsPromised); }); -function testAdapter(options: Record): void { +export default function testAdapter(options: Record): void { const statesConfig = options.statesConfig; const objectsConfig = options.objectsConfig; options.name = options.name || 'Test'; const tests = [ - require('./testAdapterHelpers'), - require('./testEnums'), - require('./testFiles'), - require('./testHelperStates'), - require('./testMessages'), - require('./testObjectsFunctions'), - require('./testObjectsACL'), - require('./testStates'), - require('./testAliases'), - require('./testConsole') + testAdapterHelpers, + testEnums, + testFiles, + testHelperStates, + testMessages, + testObjectsFunctions, + testObjectsACL, + testStates, + testAliases, + testConsole ]; const context: TestContext = { @@ -78,7 +92,7 @@ function testAdapter(options: Record): void { objects: objectsConfig, consoleOutput: true }, - dirname: __dirname + '/', + dirname: thisDir + '/', name: context.adapterShortName, objectChange: (id, obj) => { context.onAdapterObjectChanged && context.onAdapterObjectChanged(id, obj); @@ -161,10 +175,10 @@ function testAdapter(options: Record): void { fs.mkdirSync(objectsConfig.dataDir); } if (objectsConfig.dataDir) { - fs.writeFileSync(objectsConfig.dataDir + '/objects.json', fs.readFileSync(__dirname + '/objects.json')); + fs.writeFileSync(objectsConfig.dataDir + '/objects.json', fs.readFileSync(thisDir + '/objects.json')); } if (statesConfig.dataDir) { - fs.writeFileSync(statesConfig.dataDir + '/states.json', fs.readFileSync(__dirname + '/states.json')); + fs.writeFileSync(statesConfig.dataDir + '/states.json', fs.readFileSync(thisDir + '/states.json')); } } @@ -200,7 +214,7 @@ function testAdapter(options: Record): void { expect(context.states).to.be.ok; if (objectsConfig.type !== 'file') { - const objs = fs.readJSONSync(path.join(__dirname, 'objects.json')); + const objs = fs.readJSONSync(path.join(thisDir, 'objects.json')); await addObjects(_objects!, objs); await startAdapter(); } else { @@ -296,7 +310,7 @@ function testAdapter(options: Record): void { ); for (const test of tests) { - test.register(it, expect, context); + test(it, expect, context); } after(`${options.name} ${context.adapterShortName} adapter: Stop js-controller`, async function () { @@ -335,4 +349,3 @@ function testAdapter(options: Record): void { }); }); } -module.exports = testAdapter; diff --git a/packages/controller/test/lib/testAdapterHelpers.ts b/packages/controller/test/lib/testAdapterHelpers.ts index ae6b78e9b9..ab92473431 100644 --- a/packages/controller/test/lib/testAdapterHelpers.ts +++ b/packages/controller/test/lib/testAdapterHelpers.ts @@ -1,4 +1,4 @@ -import type { TestContext } from '../_Types'; +import type { TestContext } from '../_Types.js'; import { Validator } from '@iobroker/js-controller-adapter'; import { spy } from 'sinon'; diff --git a/packages/controller/test/lib/testAliases.ts b/packages/controller/test/lib/testAliases.ts index 3465b16ab1..f724224c02 100644 --- a/packages/controller/test/lib/testAliases.ts +++ b/packages/controller/test/lib/testAliases.ts @@ -1,4 +1,4 @@ -import type { TestContext } from '../_Types'; +import type { TestContext } from '../_Types.js'; import type { Client as ObjectsInRedisClient } from '@iobroker/db-objects-redis'; async function prepareGroupsAndUsers(objects: ObjectsInRedisClient): Promise { diff --git a/packages/controller/test/lib/testConsole.ts b/packages/controller/test/lib/testConsole.ts index 15866666ae..287580a0c8 100644 --- a/packages/controller/test/lib/testConsole.ts +++ b/packages/controller/test/lib/testConsole.ts @@ -1,10 +1,13 @@ -import path from 'path'; +import path from 'node:path'; import { exec as execAsync } from 'promisify-child-process'; import { BackupRestore } from '@iobroker/js-controller-cli'; -import type { TestContext } from '../_Types'; +import type { TestContext } from '../_Types.js'; import fs from 'fs-extra'; +import * as url from 'node:url'; +// eslint-disable-next-line unicorn/prefer-module +const thisDir = url.fileURLToPath(new URL('.', import.meta.url || 'file://' + __dirname)); -const iobExecutable = path.join(__dirname, '..', '..', 'iobroker.js'); +const iobExecutable = path.join(thisDir, '..', '..', 'iobroker.js'); export function register(it: Mocha.TestFunction, expect: Chai.ExpectStatic, context: TestContext): void { const testName = `${context.name} ${context.adapterShortName} console: `; @@ -687,7 +690,7 @@ export function register(it: Mocha.TestFunction, expect: Chai.ExpectStatic, cont // test license const licenseText = 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1lIjoiaW9icm9rZXIudmlzIiwidHlwZSI6InRlc3QiLCJlbWFpbCI6InRlc3RAZ21haWwuY29tIiwiZXhwaXJlcyI6MjQ0NDM5ODA5NSwidmVyc2lvbiI6IjwyIiwiaWQiOiI5NTBkYWEwMC01MzcxLTExZTctYjQwNS14eHh4eHh4eHh4eHh4IiwiaWF0IjoxNDk3NzEzMjk1fQ.K9t9ZtvAsdeNFTJed4Sidq2jrr9UFOYpMt6VLmBdVzWueI9DnCXFS5PwBFTBTmF9WMhVk6LBw5ujIVl130B_5NrHl21PHkCLvJeW7jGsMgWDINuBK5F9k8LZABdsv7uDbqNDSOsVrFwEKOu2V3N5sMWYOVE4N_COIg9saaLvyN69oIP27PTgk1GHuyU4giFKGLPTp10L5p2hxLX0lEPjSdDggbl7dEqEe1-u5WwkyBizp03pMtHGYtjnACtP_KBuOly7QpmAnoPlfFoW79xgRjICbd41wT43IvhKAAo1zfnRAeWfQ7QoUViKsc6N1es87QC4KKw-eToLPXOO5UzWOg'; - let licenseFile = `${__dirname}/visLicense.data`; + let licenseFile = `${thisDir}/visLicense.data`; licenseFile = licenseFile.replace(/\\/g, '/'); fs.writeFileSync(licenseFile, licenseText); diff --git a/packages/controller/test/lib/testFiles.ts b/packages/controller/test/lib/testFiles.ts index 4fb4798ea2..10aa481c0e 100644 --- a/packages/controller/test/lib/testFiles.ts +++ b/packages/controller/test/lib/testFiles.ts @@ -1,4 +1,4 @@ -import type { TestContext } from '../_Types'; +import type { TestContext } from '../_Types.js'; export function register(it: Mocha.TestFunction, expect: Chai.ExpectStatic, context: TestContext): void { const testName = `${context.name} ${context.adapterShortName} files: `; @@ -335,5 +335,3 @@ export function register(it: Mocha.TestFunction, expect: Chai.ExpectStatic, cont }); }); } - -module.exports.register = register; diff --git a/packages/controller/test/lib/testHelperStates.ts b/packages/controller/test/lib/testHelperStates.ts index 2c81df6ee8..dd4506c9e7 100644 --- a/packages/controller/test/lib/testHelperStates.ts +++ b/packages/controller/test/lib/testHelperStates.ts @@ -1,4 +1,4 @@ -import type { TestContext } from '../_Types'; +import type { TestContext } from '../_Types.js'; export function register(it: Mocha.TestFunction, expect: Chai.ExpectStatic, context: TestContext): void { const testName = `${context.name} ${context.adapterShortName} state helpers: `; diff --git a/packages/controller/test/lib/testMessages.ts b/packages/controller/test/lib/testMessages.ts index da610b480b..98ac551bed 100644 --- a/packages/controller/test/lib/testMessages.ts +++ b/packages/controller/test/lib/testMessages.ts @@ -1,4 +1,4 @@ -import type { TestContext } from '../_Types'; +import type { TestContext } from '../_Types.js'; export function register(it: Mocha.TestFunction, expect: Chai.ExpectStatic, context: TestContext): void { const testName = context.name + ' ' + context.adapterShortName + ' adapter: '; diff --git a/packages/controller/test/lib/testObjects.ts b/packages/controller/test/lib/testObjects.ts index fe7ff2b655..b27b5ac3e9 100644 --- a/packages/controller/test/lib/testObjects.ts +++ b/packages/controller/test/lib/testObjects.ts @@ -1,4 +1,4 @@ -import type { TestContext } from '../_Types'; +import type { TestContext } from '../_Types.js'; /** * Contains tests directly interacting with DB diff --git a/packages/controller/test/lib/testObjectsACL.ts b/packages/controller/test/lib/testObjectsACL.ts index 0b5c9dae1c..dd7adfbbd5 100644 --- a/packages/controller/test/lib/testObjectsACL.ts +++ b/packages/controller/test/lib/testObjectsACL.ts @@ -1,4 +1,4 @@ -import type { TestContext } from '../_Types'; +import type { TestContext } from '../_Types.js'; export function register(it: Mocha.TestFunction, expect: Chai.ExpectStatic, context: TestContext): void { const textName = context.name + ' objects: '; diff --git a/packages/controller/test/lib/testObjectsFunctions.ts b/packages/controller/test/lib/testObjectsFunctions.ts index 60afefcb54..04e0be25af 100644 --- a/packages/controller/test/lib/testObjectsFunctions.ts +++ b/packages/controller/test/lib/testObjectsFunctions.ts @@ -1,4 +1,4 @@ -import type { TestContext } from '../_Types'; +import type { TestContext } from '../_Types.js'; /** * Contains tests interacting with DB via adapter.ts diff --git a/packages/controller/test/lib/testStates.ts b/packages/controller/test/lib/testStates.ts index 4df36cb367..1b2205fa3e 100644 --- a/packages/controller/test/lib/testStates.ts +++ b/packages/controller/test/lib/testStates.ts @@ -1,4 +1,4 @@ -import type { TestContext } from '../_Types'; +import type { TestContext } from '../_Types.js'; export function register(it: Mocha.TestFunction, expect: Chai.ExpectStatic, context: TestContext): void { const testName = context.name + ' ' + context.adapterShortName + ' adapter: '; diff --git a/packages/controller/test/redis-sentinel/testAdapterStatesRedis.ts b/packages/controller/test/redis-sentinel/testAdapterStatesRedis.ts index 52d044403a..79b09a7f85 100644 --- a/packages/controller/test/redis-sentinel/testAdapterStatesRedis.ts +++ b/packages/controller/test/redis-sentinel/testAdapterStatesRedis.ts @@ -1,17 +1,11 @@ -// eslint-disable-next-line @typescript-eslint/no-var-requires -const testAdapter = require(__dirname + '/../lib/testAdapter'); -const dataDir = __dirname + '/../../tmp/data-redis'; -import fs from 'fs'; +import testAdapter from './../lib/testAdapter.js'; +import fs from 'node:fs'; -let isExecute = fs.existsSync(__dirname + '/../lib/objects/objectsInRedis.js'); -if (!isExecute) { - try { - const path = require.resolve('iobroker.objects-redis'); - isExecute = !!path; - } catch { - /* OK */ - } -} +import * as url from 'node:url'; +// eslint-disable-next-line unicorn/prefer-module +const thisDir = url.fileURLToPath(new URL('.', import.meta.url || 'file://' + __dirname)); + +const dataDir = thisDir + '/../../tmp/data-redis'; const statesConfig = { options: { @@ -23,36 +17,21 @@ const statesConfig = { host: ['127.0.0.1', '127.0.0.1', '127.0.0.1'], port: [26380, 26381, 26382] }; -let objectsConfig; -if (!fs.existsSync(__dirname + '/../tmp')) { - fs.mkdirSync(__dirname + '/../tmp'); +if (!fs.existsSync(thisDir + '/../tmp')) { + fs.mkdirSync(thisDir + '/../tmp'); } -if (isExecute) { - objectsConfig = { - dataDir: __dirname + '/../tmp/data', - options: { - auth_pass: null, - retry_max_delay: 15000 - }, - redisNamespace: 'testObjectsCfg', - type: 'redis', - host: ['127.0.0.1', '127.0.0.1', '127.0.0.1'], - port: [26380, 26381, 26382] - }; -} else { - objectsConfig = { - dataDir: dataDir, - type: 'file', - host: '127.0.0.1', - port: 19002, - user: '', - pass: '', - noFileCache: true, - connectTimeout: 2000 - }; -} +const objectsConfig = { + dataDir: dataDir, + type: 'file', + host: '127.0.0.1', + port: 19002, + user: '', + pass: '', + noFileCache: true, + connectTimeout: 2000 +}; // states in REDIS, objects in files testAdapter({ diff --git a/packages/controller/test/redis-sentinel/testStatesRedis.ts b/packages/controller/test/redis-sentinel/testStatesRedis.ts index e9207c5430..4201bc38b1 100644 --- a/packages/controller/test/redis-sentinel/testStatesRedis.ts +++ b/packages/controller/test/redis-sentinel/testStatesRedis.ts @@ -1,12 +1,15 @@ -import fs from 'fs'; -import path from 'path'; +import fs from 'node:fs'; +import path from 'node:path'; import { expect } from 'chai'; -import { exec } from 'child_process'; +import { exec } from 'node:child_process'; import type { Client as ObjectsInRedisClient } from '@iobroker/db-objects-redis'; import type { Client as StateRedisClient } from '@iobroker/db-states-redis'; -import { startController, stopController } from '../lib/setup4controller'; +import { startController, stopController } from '../lib/setup4controller.js'; +import * as url from 'node:url'; +// eslint-disable-next-line unicorn/prefer-module +const thisDir = url.fileURLToPath(new URL('.', import.meta.url || 'file://' + __dirname)); -const dataDir = path.join(__dirname, '..', '..', 'tmp', 'data'); +const dataDir = path.join(thisDir, '..', '..', 'tmp', 'data'); let objects: ObjectsInRedisClient | null = null; let states: StateRedisClient | null = null; let onStatesChanged: ioBroker.StateChangeHandler | null = null; diff --git a/packages/controller/test/redis-socket/testAdapterStatesRedis.ts b/packages/controller/test/redis-socket/testAdapterStatesRedis.ts index cbee16c354..3eee05acd3 100644 --- a/packages/controller/test/redis-socket/testAdapterStatesRedis.ts +++ b/packages/controller/test/redis-socket/testAdapterStatesRedis.ts @@ -1,17 +1,10 @@ -// eslint-disable-next-line @typescript-eslint/no-var-requires -const testAdapter = require(__dirname + '/../lib/testAdapter'); -const dataDir = __dirname + '/../../tmp/data-redis'; -import fs from 'fs'; +import * as url from 'node:url'; +// eslint-disable-next-line unicorn/prefer-module +const thisDir = url.fileURLToPath(new URL('.', import.meta.url || 'file://' + __dirname)); -let isExecute = fs.existsSync(__dirname + '/../lib/objects/objectsInRedis.js'); -if (!isExecute) { - try { - const path = require.resolve('iobroker.objects-redis'); - isExecute = !!path; - } catch { - /* OK */ - } -} +import testAdapter from './../lib/testAdapter.js'; +const dataDir = thisDir + '/../../tmp/data-redis'; +import fs from 'node:fs'; const statesConfig = { options: { @@ -23,36 +16,21 @@ const statesConfig = { host: '/var/run/redis.sock', port: 0 }; -let objectsConfig; -if (!fs.existsSync(__dirname + '/../tmp')) { - fs.mkdirSync(__dirname + '/../tmp'); +if (!fs.existsSync(thisDir + '/../tmp')) { + fs.mkdirSync(thisDir + '/../tmp'); } -if (isExecute) { - objectsConfig = { - dataDir: __dirname + '/../tmp/data', - options: { - auth_pass: null, - retry_max_delay: 15000 - }, - redisNamespace: 'testObjectsCfg', - type: 'redis', - host: '/var/run/redis.sock', - port: 0 - }; -} else { - objectsConfig = { - dataDir: dataDir, - type: 'file', - host: '127.0.0.1', - port: 19002, - user: '', - pass: '', - noFileCache: true, - connectTimeout: 2000 - }; -} +const objectsConfig = { + dataDir: dataDir, + type: 'file', + host: '127.0.0.1', + port: 19002, + user: '', + pass: '', + noFileCache: true, + connectTimeout: 2000 +}; // states in REDIS, objects in files testAdapter({ diff --git a/packages/controller/test/redis-socket/testStatesRedis.ts b/packages/controller/test/redis-socket/testStatesRedis.ts index 00dcef6b36..18c372556b 100644 --- a/packages/controller/test/redis-socket/testStatesRedis.ts +++ b/packages/controller/test/redis-socket/testStatesRedis.ts @@ -1,11 +1,14 @@ -import fs from 'fs'; -import path from 'path'; +import fs from 'node:fs'; +import path from 'node:path'; import { expect } from 'chai'; -import { startController, stopController } from '../lib/setup4controller'; +import { startController, stopController } from '../lib/setup4controller.js'; import type { Client as ObjectsInRedisClient } from '@iobroker/db-objects-redis'; import type { Client as StateRedisClient } from '@iobroker/db-states-redis'; +import * as url from 'node:url'; +// eslint-disable-next-line unicorn/prefer-module +const thisDir = url.fileURLToPath(new URL('.', import.meta.url || 'file://' + __dirname)); -const dataDir = path.join(__dirname, '..', '..', 'tmp', 'data'); +const dataDir = path.join(thisDir, '..', '..', 'tmp', 'data'); let objects: ObjectsInRedisClient | null = null; let states: StateRedisClient | null = null; let onStatesChanged: ioBroker.StateChangeHandler | null = null; diff --git a/packages/controller/test/testAdapterObjectsInFile.ts b/packages/controller/test/testAdapterObjectsInFile.ts index 5d1144fa18..167105f9bc 100644 --- a/packages/controller/test/testAdapterObjectsInFile.ts +++ b/packages/controller/test/testAdapterObjectsInFile.ts @@ -1,36 +1,34 @@ import { expect } from 'chai'; -import { startController, stopController } from './lib/setup4controller'; -import type { Client as ObjectsInRedisClient } from '@iobroker/db-objects-redis'; +import { startController, stopController } from './lib/setup4controller.js'; let objects = null; let states = null; const textName = 'File'; -// eslint-disable-next-line @typescript-eslint/no-var-requires -const tests = require('./lib/testObjects'); - -interface Context { - objects: ObjectsInRedisClient | null; - name: string; -} - -const context: Context = { +import { register } from './lib/testObjects.js'; +import type { TestContext } from './_Types.js'; +import * as url from 'node:url'; +// eslint-disable-next-line unicorn/prefer-module +const thisDir = url.fileURLToPath(new URL('.', import.meta.url || 'file://' + __dirname)); + +const context: TestContext = { + // @ts-expect-error will be filled before usage objects: null, name: textName }; describe(textName + ' Test Objects File-Redis', function () { before(textName + ' Start js-controller', async function () { - this.timeout(10_000); + this.timeout(23_000); const { objects: _objects, states: _states } = await startController({ objects: { - dataDir: `${__dirname}/../tmp/data`, + dataDir: `${thisDir}/../tmp/data`, onChange: function (id: string, _obj: ioBroker.AnyObject) { console.log('object changed. ' + id); } }, states: { - dataDir: `${__dirname}/../tmp/data`, + dataDir: `${thisDir}/../tmp/data`, onChange: function (id: string, _state: ioBroker.State) { console.log('state changed. ' + id); } @@ -39,12 +37,13 @@ describe(textName + ' Test Objects File-Redis', function () { objects = _objects; states = _states; + // @ts-expect-error fix later context.objects = _objects; expect(objects).to.be.ok; expect(states).to.be.ok; }); - tests.register(it, expect, context); + register(it, expect, context); after(textName + ' Stop js-controller', async function () { this.timeout(5_000); diff --git a/packages/controller/test/testAdapterObjectsInRedis.ts b/packages/controller/test/testAdapterObjectsInRedis.ts index 5a840c43a2..b31dd5b689 100644 --- a/packages/controller/test/testAdapterObjectsInRedis.ts +++ b/packages/controller/test/testAdapterObjectsInRedis.ts @@ -1,28 +1,28 @@ import { expect } from 'chai'; -import { startController, stopController } from './lib/setup4controller'; +import { startController, stopController } from './lib/setup4controller.js'; let objects = null; let states = null; const textName = 'Redis '; -import fs from 'fs'; -import type { Client as ObjectsInRedisClient } from '@iobroker/db-objects-redis'; -// eslint-disable-next-line @typescript-eslint/no-var-requires -const tests = require('./lib/testObjects'); +import fs from 'node:fs'; +import { register } from './lib/testObjects.js'; -interface Context { - objects: ObjectsInRedisClient | null; - name: string; -} -const context: Context = { +import * as url from 'node:url'; +import type { TestContext } from './_Types.js'; +// eslint-disable-next-line unicorn/prefer-module +const thisDir = url.fileURLToPath(new URL('.', import.meta.url || 'file://' + __dirname)); + +const context: TestContext = { + // @ts-expect-error will be filled in time objects: null, name: textName }; -if (!fs.existsSync(__dirname + '/../tmp')) { - fs.mkdirSync(__dirname + '/../tmp'); +if (!fs.existsSync(thisDir + '/../tmp')) { + fs.mkdirSync(thisDir + '/../tmp'); } const objectsConfig = { - dataDir: __dirname + '/../tmp/data', + dataDir: thisDir + '/../tmp/data', type: 'redis', host: '127.0.0.1', port: 6379, @@ -43,7 +43,7 @@ describe(textName + 'Test Objects Redis', function () { const { objects: _objects, states: _states } = await startController({ objects: objectsConfig, states: { - dataDir: __dirname + '/../tmp/data', + dataDir: thisDir + '/../tmp/data', onChange: (id: string, _state: ioBroker.State) => { console.log('state changed. ' + id); } @@ -52,12 +52,13 @@ describe(textName + 'Test Objects Redis', function () { objects = _objects; states = _states; + // @ts-expect-error fix later context.objects = _objects; expect(objects).to.be.ok; expect(states).to.be.ok; }); - tests.register(it, expect, context); + register(it, expect, context); after(textName + 'Stop js-controller', async function () { this.timeout(5_000); diff --git a/packages/controller/test/testAdapterStatesInFile.ts b/packages/controller/test/testAdapterStatesInFile.ts index 83d5b3f07d..975e0960b3 100644 --- a/packages/controller/test/testAdapterStatesInFile.ts +++ b/packages/controller/test/testAdapterStatesInFile.ts @@ -1,7 +1,9 @@ -import path from 'path'; -// eslint-disable-next-line @typescript-eslint/no-var-requires -const testAdapter = require('./lib/testAdapter'); -const dataDir = path.join(__dirname, '..', 'tmp', 'data'); +import path from 'node:path'; +import * as url from 'node:url'; +// eslint-disable-next-line unicorn/prefer-module +const thisDir = url.fileURLToPath(new URL('.', import.meta.url || 'file://' + __dirname)); +import testAdapter from './lib/testAdapter.js'; +const dataDir = path.join(thisDir, '..', 'tmp', 'data'); const statesConfig = { options: { diff --git a/packages/controller/test/testAdapterStatesRedis.ts b/packages/controller/test/testAdapterStatesRedis.ts index 67c39bc0d4..5f6049bb66 100644 --- a/packages/controller/test/testAdapterStatesRedis.ts +++ b/packages/controller/test/testAdapterStatesRedis.ts @@ -1,5 +1,7 @@ -// eslint-disable-next-line @typescript-eslint/no-var-requires -const testAdapter = require('./lib/testAdapter'); +import testAdapter from './lib/testAdapter.js'; +import * as url from 'node:url'; +// eslint-disable-next-line unicorn/prefer-module +const thisDir = url.fileURLToPath(new URL('.', import.meta.url || 'file://' + __dirname)); const statesConfig = { options: { @@ -13,7 +15,7 @@ const statesConfig = { }; const objectsConfig = { - dataDir: __dirname + '/../tmp/data', + dataDir: thisDir + '/../tmp/data', options: { auth_pass: null, retry_max_delay: 100 diff --git a/packages/controller/test/testPackageFiles.ts b/packages/controller/test/testPackageFiles.ts index fdb02cf864..fb831ac581 100644 --- a/packages/controller/test/testPackageFiles.ts +++ b/packages/controller/test/testPackageFiles.ts @@ -1,14 +1,18 @@ import { expect } from 'chai'; -import fs from 'fs'; +import fs from 'node:fs'; + +import * as url from 'node:url'; +// eslint-disable-next-line unicorn/prefer-module +const thisDir = url.fileURLToPath(new URL('.', import.meta.url || 'file://' + __dirname)); describe('Test package.json and io-package.json', () => { it('Test package files', done => { console.log(); - const fileContentIOPackage = fs.readFileSync(__dirname + '/../io-package.json', 'utf8'); + const fileContentIOPackage = fs.readFileSync(thisDir + '/../io-package.json', 'utf8'); const ioPackage = JSON.parse(fileContentIOPackage); - const fileContentNPMPackage = fs.readFileSync(__dirname + '/../package.json', 'utf8'); + const fileContentNPMPackage = fs.readFileSync(thisDir + '/../package.json', 'utf8'); const npmPackage = JSON.parse(fileContentNPMPackage); expect(ioPackage).to.be.an('object'); @@ -60,7 +64,7 @@ describe('Test package.json and io-package.json', () => { console.log(); } expect( - fs.existsSync(__dirname + '/../README.md'), + fs.existsSync(thisDir + '/../README.md'), 'ERROR: README.md needs to exist! Please create one with description, detail information and changelog. English is mandatory.' ).to.be.true; if (!ioPackage.common.titleLang || typeof ioPackage.common.titleLang !== 'object') { @@ -82,22 +86,22 @@ describe('Test package.json and io-package.json', () => { if (!ioPackage.common.controller && !ioPackage.common.onlyWWW && !ioPackage.common.noConfig) { if ( !ioPackage.common.materialize || - !fs.existsSync(__dirname + '/../admin/index_m.html') || - !fs.existsSync(__dirname + '/../gulpfile.js') + !fs.existsSync(thisDir + '/../admin/index_m.html') || + !fs.existsSync(thisDir + '/../gulpfile.js') ) { console.log('WARNING: Admin3 support is missing! Please add it'); console.log(); } if (ioPackage.common.materialize) { expect( - fs.existsSync(__dirname + '/../admin/index_m.html'), + fs.existsSync(thisDir + '/../admin/index_m.html'), 'Admin3 support is enabled in io-package.json, but index_m.html is missing!' ).to.be.true; } } - const licenseFileExists = fs.existsSync(__dirname + '/../LICENSE'); - const fileContentReadme = fs.readFileSync(__dirname + '/../README.md', 'utf8'); + const licenseFileExists = fs.existsSync(thisDir + '/../LICENSE'); + const fileContentReadme = fs.readFileSync(thisDir + '/../README.md', 'utf8'); if (fileContentReadme.indexOf('## Changelog') === -1) { console.log('Warning: The README.md should have a section ## Changelog'); console.log(); diff --git a/packages/controller/test/testStates.ts b/packages/controller/test/testStates.ts index e2e22cfc17..c3a4f73783 100644 --- a/packages/controller/test/testStates.ts +++ b/packages/controller/test/testStates.ts @@ -1,13 +1,17 @@ import { expect } from 'chai'; -import { startController, stopController } from './lib/setup4controller'; -import fs from 'fs'; +import { startController, stopController } from './lib/setup4controller.js'; +import fs from 'node:fs'; +import path from 'node:path'; import type { Client as ObjectsInRedisClient } from '@iobroker/db-objects-redis'; import type { Client as StateRedisClient } from '@iobroker/db-states-redis'; let objects: ObjectsInRedisClient | null = null; let states: StateRedisClient | null = null; let onStatesChanged: ioBroker.StateChangeHandler | null = null; -const dataDir = __dirname + '/../tmp/data'; +import * as url from 'node:url'; +// eslint-disable-next-line unicorn/prefer-module +const thisDir = url.fileURLToPath(new URL('.', import.meta.url || 'file://' + __dirname)); +const dataDir = path.join(thisDir, '..', 'tmp', 'data'); function cleanDbs(): void { if (fs.existsSync(dataDir + '/objects.json')) { diff --git a/packages/controller/test/testStatesRedis.ts b/packages/controller/test/testStatesRedis.ts index 5f471f6952..a74a775ffd 100644 --- a/packages/controller/test/testStatesRedis.ts +++ b/packages/controller/test/testStatesRedis.ts @@ -1,12 +1,16 @@ import { expect } from 'chai'; -import { startController, stopController } from './lib/setup4controller'; -import fs from 'fs'; +import { startController, stopController } from './lib/setup4controller.js'; +import fs from 'node:fs'; +import path from 'node:path'; import type { Client as ObjectsInRedisClient } from '@iobroker/db-objects-redis'; import type { Client as StateRedisClient } from '@iobroker/db-states-redis'; let objects: ObjectsInRedisClient | null = null; let states: StateRedisClient | null = null; let onStatesChanged: ioBroker.StateChangeHandler | null = null; -const dataDir = `${__dirname}/../tmp/data`; +import * as url from 'node:url'; +// eslint-disable-next-line unicorn/prefer-module +const thisDir = url.fileURLToPath(new URL('.', import.meta.url || 'file://' + __dirname)); +const dataDir = path.join(thisDir, '..', 'tmp', 'data'); function cleanDbs(): void { if (fs.existsSync(dataDir + '/objects.json')) { @@ -104,7 +108,7 @@ describe('States-Redis: Test states in Redis', function () { } }; - states!.setStateAsync(testID, 2); + states!.setState(testID, 2); }).timeout(10_000); // todo: write more tests diff --git a/packages/db-base/package.json b/packages/db-base/package.json index 9d212019bc..8ac84702c1 100644 --- a/packages/db-base/package.json +++ b/packages/db-base/package.json @@ -1,5 +1,6 @@ { "name": "@iobroker/db-base", + "type": "module", "version": "5.0.20-alpha.0-20240409-d68ed299", "engines": { "node": ">=18.0.0" @@ -27,7 +28,7 @@ }, "scripts": { "build": "tsc -b tsconfig.build.json", - "postbuild": "esm2cjs --in build/esm --out build/cjs -l error && cpy ./**/*.d.ts ./build/cjs/ --cwd=build/esm/" + "postbuild": "esm2cjs --in build/esm --out build/cjs -l error -t node18 && cpy ./**/*.d.ts ./build/cjs/ --cwd=build/esm/" }, "main": "build/cjs/index.js", "module": "build/esm/index.js", diff --git a/packages/db-base/src/index.ts b/packages/db-base/src/index.ts index ee19839353..f8de9c54eb 100644 --- a/packages/db-base/src/index.ts +++ b/packages/db-base/src/index.ts @@ -1,3 +1,3 @@ -export { InMemoryFileDB } from './lib/inMemFileDB'; -export { RedisHandler } from './lib/redisHandler'; +export { InMemoryFileDB } from './lib/inMemFileDB.js'; +export { RedisHandler } from './lib/redisHandler.js'; export { tools } from '@iobroker/js-controller-common'; diff --git a/packages/db-base/src/lib/inMemFileDB.ts b/packages/db-base/src/lib/inMemFileDB.ts index 5698467381..bfceea6510 100644 --- a/packages/db-base/src/lib/inMemFileDB.ts +++ b/packages/db-base/src/lib/inMemFileDB.ts @@ -8,10 +8,10 @@ */ import fs from 'fs-extra'; -import path from 'path'; +import path from 'node:path'; import { tools } from '@iobroker/js-controller-common'; import type { InternalLogger } from '@iobroker/js-controller-common/tools'; -import { createGzip } from 'zlib'; +import { createGzip } from 'node:zlib'; // settings = { // change: function (id, state) {}, diff --git a/packages/db-base/src/lib/redisHandler.ts b/packages/db-base/src/lib/redisHandler.ts index 7967e69628..599145ef98 100644 --- a/packages/db-base/src/lib/redisHandler.ts +++ b/packages/db-base/src/lib/redisHandler.ts @@ -1,8 +1,8 @@ -import type { Socket } from 'net'; +import type { Socket } from 'node:net'; // @ts-expect-error no types import Resp from 'respjs'; -import { EventEmitter } from 'events'; -import { QUEUED_STR_BUF, OK_STR_BUF } from './constants'; +import { EventEmitter } from 'node:events'; +import { QUEUED_STR_BUF, OK_STR_BUF } from './constants.js'; import type { InternalLogger } from '@iobroker/js-controller-common/tools'; type NestedArray = T[] | NestedArray[]; @@ -14,7 +14,7 @@ interface RedisHandlerOptions { logScope?: string; // if data should be handled as buffer handleAsBuffers: boolean; - // additonal debug information + // additional debug information enhancedLogging?: boolean; } diff --git a/packages/db-objects-file/package.json b/packages/db-objects-file/package.json index 908ea59dbc..16da113488 100644 --- a/packages/db-objects-file/package.json +++ b/packages/db-objects-file/package.json @@ -1,5 +1,6 @@ { "name": "@iobroker/db-objects-file", + "type": "module", "version": "5.0.20-alpha.0-20240409-d68ed299", "engines": { "node": ">=12.0.0" @@ -27,7 +28,7 @@ }, "scripts": { "build": "tsc -b tsconfig.build.json", - "postbuild": "esm2cjs --in build/esm --out build/cjs -l error && cpy ./**/*.d.ts ./build/cjs/ --cwd=build/esm/" + "postbuild": "esm2cjs --in build/esm --out build/cjs -l error -t node18 && cpy ./**/*.d.ts ./build/cjs/ --cwd=build/esm/" }, "main": "build/cjs/index.js", "module": "build/esm/index.js", diff --git a/packages/db-objects-file/src/index.ts b/packages/db-objects-file/src/index.ts index d8165c156b..44e3341cc5 100644 --- a/packages/db-objects-file/src/index.ts +++ b/packages/db-objects-file/src/index.ts @@ -1,9 +1,10 @@ -// eslint-disable-next-line @typescript-eslint/no-var-requires -export const ObjectsInMemoryFileDB = require('./lib/objects/objectsInMemFileDB'); -// eslint-disable-next-line @typescript-eslint/no-var-requires -export const Client = require('@iobroker/db-objects-redis').Client; -// eslint-disable-next-line @typescript-eslint/no-var-requires -export const Server = require('./lib/objects/objectsInMemServerClass.js'); +import InMemoryFileDB from './lib/objects/objectsInMemFileDB.js'; +import { Client as ObjectsClient } from '@iobroker/db-objects-redis'; +import DBServer from './lib/objects/objectsInMemServerClass.js'; + +export const Server = DBServer; +export const Client = ObjectsClient; +export const ObjectsInMemoryFileDB = InMemoryFileDB; /** * Get the default port of the objects db diff --git a/packages/db-objects-file/src/lib/objects/objectsInMemFileDB.js b/packages/db-objects-file/src/lib/objects/objectsInMemFileDB.js index 7fbce22a70..f6e875eea1 100644 --- a/packages/db-objects-file/src/lib/objects/objectsInMemFileDB.js +++ b/packages/db-objects-file/src/lib/objects/objectsInMemFileDB.js @@ -7,24 +7,18 @@ * */ -/* jshint -W097 */ -/* jshint strict: false */ -/* jslint node: true */ -/* jshint -W061 */ -'use strict'; - -const fs = require('fs-extra'); -const path = require('path'); -const { InMemoryFileDB } = require('@iobroker/db-base'); -const tools = require('@iobroker/db-base').tools; -const utils = require('@iobroker/db-objects-redis').objectsUtils; -const deepClone = require('deep-clone'); +import fs from 'fs-extra'; +import path from 'node:path'; +import { InMemoryFileDB } from '@iobroker/db-base'; +import { tools } from '@iobroker/db-base'; +import { objectsUtils as utils } from '@iobroker/db-objects-redis'; +import deepClone from 'deep-clone'; /** * This class inherits InMemoryFileDB class and adds all relevant logic for objects * including the available methods for use by js-controller directly **/ -class ObjectsInMemoryFileDB extends InMemoryFileDB { +export default class ObjectsInMemoryFileDB extends InMemoryFileDB { constructor(settings) { settings = settings || {}; settings.fileDB = settings.fileDB || { @@ -1030,5 +1024,3 @@ class ObjectsInMemoryFileDB extends InMemoryFileDB { } } } - -module.exports = ObjectsInMemoryFileDB; diff --git a/packages/db-objects-file/src/lib/objects/objectsInMemServerClass.js b/packages/db-objects-file/src/lib/objects/objectsInMemServerClass.js index e6c80e3807..cd846d4bf2 100644 --- a/packages/db-objects-file/src/lib/objects/objectsInMemServerClass.js +++ b/packages/db-objects-file/src/lib/objects/objectsInMemServerClass.js @@ -7,17 +7,10 @@ * */ -/** @module statesInMemory */ +import { Client as ObjectsInRedisClient } from '@iobroker/db-objects-redis'; +import ObjectsInMemServer from './objectsInMemServerRedis.js'; -/* jshint -W097 */ -/* jshint strict:false */ -/* jslint node: true */ -'use strict'; - -const ObjectsInRedisClient = require('@iobroker/db-objects-redis').Client; -const ObjectsInMemServer = require('./objectsInMemServerRedis'); - -class ObjectsInMemoryServerClass extends ObjectsInRedisClient { +export default class ObjectsInMemoryServerClass extends ObjectsInRedisClient { constructor(settings) { settings.autoConnect = false; // delay Client connection to when we need it super(settings); @@ -51,4 +44,3 @@ class ObjectsInMemoryServerClass extends ObjectsInRedisClient { return this.objectsServer.dirExists(id, name); } } -module.exports = ObjectsInMemoryServerClass; diff --git a/packages/db-objects-file/src/lib/objects/objectsInMemServerRedis.js b/packages/db-objects-file/src/lib/objects/objectsInMemServerRedis.js index dbb6591467..8a0f46ec28 100644 --- a/packages/db-objects-file/src/lib/objects/objectsInMemServerRedis.js +++ b/packages/db-objects-file/src/lib/objects/objectsInMemServerRedis.js @@ -7,22 +7,16 @@ * */ -/** @module objectsInRedis */ - -/* jshint -W097 */ -/* jshint strict:false */ -/* jslint node: true */ -'use strict'; -const net = require('net'); -const fs = require('fs-extra'); -const path = require('path'); -const crypto = require('crypto'); -const utils = require('@iobroker/db-objects-redis').objectsUtils; -const tools = require('@iobroker/db-base').tools; -const { getLocalAddress } = require('@iobroker/js-controller-common/tools'); - -const { RedisHandler } = require('@iobroker/db-base'); -const ObjectsInMemoryFileDB = require('./objectsInMemFileDB'); +import net from 'node:net'; +import fs from 'fs-extra'; +import path from 'node:path'; +import crypto from 'node:crypto'; +import { objectsUtils as utils } from '@iobroker/db-objects-redis'; +import { tools } from '@iobroker/db-base'; +import { getLocalAddress } from '@iobroker/js-controller-common/tools'; + +import { RedisHandler } from '@iobroker/db-base'; +import ObjectsInMemoryFileDB from './objectsInMemFileDB.js'; // settings = { // change: function (id, state) {}, @@ -49,7 +43,7 @@ const ObjectsInMemoryFileDB = require('./objectsInMemFileDB'); * This class inherits statesInMemoryFileDB class and adds redis communication layer * to access the methods via redis protocol **/ -class ObjectsInMemoryServer extends ObjectsInMemoryFileDB { +export default class ObjectsInMemoryServer extends ObjectsInMemoryFileDB { /** * Constructor * @param settings State and InMem-DB settings @@ -1028,5 +1022,3 @@ class ObjectsInMemoryServer extends ObjectsInMemoryFileDB { }); } } - -module.exports = ObjectsInMemoryServer; diff --git a/packages/db-objects-file/tsconfig.json b/packages/db-objects-file/tsconfig.json index df32c5f716..da240758a5 100644 --- a/packages/db-objects-file/tsconfig.json +++ b/packages/db-objects-file/tsconfig.json @@ -15,7 +15,8 @@ } ], "include": [ - "src/**/*.ts" + "src/**/*.ts", + "src/**/*.js" ], "exclude": [ "build/**", diff --git a/packages/db-objects-jsonl/package.json b/packages/db-objects-jsonl/package.json index cc8afb7ea7..01de9cf093 100644 --- a/packages/db-objects-jsonl/package.json +++ b/packages/db-objects-jsonl/package.json @@ -1,5 +1,6 @@ { "name": "@iobroker/db-objects-jsonl", + "type": "module", "version": "5.0.20-alpha.0-20240409-d68ed299", "engines": { "node": ">=12.0.0" @@ -29,7 +30,7 @@ }, "scripts": { "build": "tsc -b tsconfig.build.json", - "postbuild": "esm2cjs --in build/esm --out build/cjs -l error && cpy ./**/*.d.ts ./build/cjs/ --cwd=build/esm/" + "postbuild": "esm2cjs --in build/esm --out build/cjs -l error -t node18 && cpy ./**/*.d.ts ./build/cjs/ --cwd=build/esm/" }, "main": "build/cjs/index.js", "module": "build/esm/index.js", diff --git a/packages/db-objects-jsonl/src/index.ts b/packages/db-objects-jsonl/src/index.ts index 7b22e1575d..288316b73c 100644 --- a/packages/db-objects-jsonl/src/index.ts +++ b/packages/db-objects-jsonl/src/index.ts @@ -1,7 +1,8 @@ -// eslint-disable-next-line @typescript-eslint/no-var-requires -export const Client = require('@iobroker/db-objects-redis').Client; -// eslint-disable-next-line @typescript-eslint/no-var-requires -export const Server = require('./lib/objects/objectsInMemServerClass.js'); +import { Client as ObjectsClient } from '@iobroker/db-objects-redis'; +import ObjectsServer from './lib/objects/objectsInMemServerClass.js'; + +export const Client = ObjectsClient; +export const Server = ObjectsServer; /** * Get the default port of the objects db diff --git a/packages/db-objects-jsonl/src/lib/objects/objectsInMemJsonlDB.js b/packages/db-objects-jsonl/src/lib/objects/objectsInMemJsonlDB.js index 5fa16d171a..761f54394f 100644 --- a/packages/db-objects-jsonl/src/lib/objects/objectsInMemJsonlDB.js +++ b/packages/db-objects-jsonl/src/lib/objects/objectsInMemJsonlDB.js @@ -7,18 +7,12 @@ * */ -/* jshint -W097 */ -/* jshint strict: false */ -/* jslint node: true */ -/* jshint -W061 */ -'use strict'; - -const { ObjectsInMemoryFileDB } = require('@iobroker/db-objects-file'); -const { JsonlDB } = require('@alcalzone/jsonl-db'); -const path = require('path'); -const fs = require('fs'); -const os = require('os'); -const { tools } = require('@iobroker/js-controller-common'); +import { ObjectsInMemoryFileDB } from '@iobroker/db-objects-file'; +import { JsonlDB } from '@alcalzone/jsonl-db'; +import path from 'node:path'; +import fs from 'node:fs'; +import os from 'node:os'; +import { tools } from '@iobroker/js-controller-common'; /** * Normalizes options for the JsonlDB @@ -90,7 +84,7 @@ function normalizeJsonlOptions(conf = {}) { * This class inherits InMemoryFileDB class and adds all relevant logic for objects * including the available methods for use by js-controller directly **/ -class ObjectsInMemoryJsonlDB extends ObjectsInMemoryFileDB { +export default class ObjectsInMemoryJsonlDB extends ObjectsInMemoryFileDB { constructor(settings) { settings = settings || {}; settings.fileDB = { @@ -277,5 +271,3 @@ class ObjectsInMemoryJsonlDB extends ObjectsInMemoryFileDB { } } } - -module.exports = ObjectsInMemoryJsonlDB; diff --git a/packages/db-objects-jsonl/src/lib/objects/objectsInMemServerClass.js b/packages/db-objects-jsonl/src/lib/objects/objectsInMemServerClass.js index e6c80e3807..cd846d4bf2 100644 --- a/packages/db-objects-jsonl/src/lib/objects/objectsInMemServerClass.js +++ b/packages/db-objects-jsonl/src/lib/objects/objectsInMemServerClass.js @@ -7,17 +7,10 @@ * */ -/** @module statesInMemory */ +import { Client as ObjectsInRedisClient } from '@iobroker/db-objects-redis'; +import ObjectsInMemServer from './objectsInMemServerRedis.js'; -/* jshint -W097 */ -/* jshint strict:false */ -/* jslint node: true */ -'use strict'; - -const ObjectsInRedisClient = require('@iobroker/db-objects-redis').Client; -const ObjectsInMemServer = require('./objectsInMemServerRedis'); - -class ObjectsInMemoryServerClass extends ObjectsInRedisClient { +export default class ObjectsInMemoryServerClass extends ObjectsInRedisClient { constructor(settings) { settings.autoConnect = false; // delay Client connection to when we need it super(settings); @@ -51,4 +44,3 @@ class ObjectsInMemoryServerClass extends ObjectsInRedisClient { return this.objectsServer.dirExists(id, name); } } -module.exports = ObjectsInMemoryServerClass; diff --git a/packages/db-objects-jsonl/src/lib/objects/objectsInMemServerRedis.js b/packages/db-objects-jsonl/src/lib/objects/objectsInMemServerRedis.js index 0850699016..d3c797d05c 100644 --- a/packages/db-objects-jsonl/src/lib/objects/objectsInMemServerRedis.js +++ b/packages/db-objects-jsonl/src/lib/objects/objectsInMemServerRedis.js @@ -7,22 +7,16 @@ * */ -/** @module objectsInRedis */ - -/* jshint -W097 */ -/* jshint strict:false */ -/* jslint node: true */ -'use strict'; -const net = require('net'); -const fs = require('fs-extra'); -const path = require('path'); -const crypto = require('crypto'); -const utils = require('@iobroker/db-objects-redis').objectsUtils; -const tools = require('@iobroker/db-base').tools; -const { getLocalAddress } = require('@iobroker/js-controller-common/tools'); - -const { RedisHandler } = require('@iobroker/db-base'); -const ObjectsInMemoryJsonlDB = require('./objectsInMemJsonlDB'); +import net from 'node:net'; +import fs from 'fs-extra'; +import path from 'node:path'; +import crypto from 'node:crypto'; +import { objectsUtils as utils } from '@iobroker/db-objects-redis'; +import { tools } from '@iobroker/db-base'; +import { getLocalAddress } from '@iobroker/js-controller-common/tools'; + +import { RedisHandler } from '@iobroker/db-base'; +import ObjectsInMemoryJsonlDB from './objectsInMemJsonlDB.js'; // settings = { // change: function (id, state) {}, @@ -49,7 +43,7 @@ const ObjectsInMemoryJsonlDB = require('./objectsInMemJsonlDB'); * This class inherits statesInMemoryJsonlDB class and adds redis communication layer * to access the methods via redis protocol **/ -class ObjectsInMemoryServer extends ObjectsInMemoryJsonlDB { +export default class ObjectsInMemoryServer extends ObjectsInMemoryJsonlDB { /** * Constructor * @param settings State and InMem-DB settings @@ -1028,5 +1022,3 @@ class ObjectsInMemoryServer extends ObjectsInMemoryJsonlDB { }); } } - -module.exports = ObjectsInMemoryServer; diff --git a/packages/db-objects-jsonl/tsconfig.json b/packages/db-objects-jsonl/tsconfig.json index 5878f36572..36b13d7f7a 100644 --- a/packages/db-objects-jsonl/tsconfig.json +++ b/packages/db-objects-jsonl/tsconfig.json @@ -18,7 +18,8 @@ } ], "include": [ - "src/**/*.ts" + "src/**/*.ts", + "src/**/*.js" ], "exclude": [ "build/**", diff --git a/packages/db-objects-redis/package.json b/packages/db-objects-redis/package.json index 3f60e7c7dd..03e594c4ce 100644 --- a/packages/db-objects-redis/package.json +++ b/packages/db-objects-redis/package.json @@ -1,5 +1,6 @@ { "name": "@iobroker/db-objects-redis", + "type": "module", "version": "5.0.20-alpha.0-20240409-d68ed299", "engines": { "node": ">=16.4.0" @@ -28,8 +29,8 @@ "url": "https://github.com/ioBroker/ioBroker.js-controller/tree/master/packages/db-objects-redis" }, "scripts": { - "build": "tsc -b tsconfig.build.json", - "postbuild": "esm2cjs --in build/esm --out build/cjs -l error && cpy ./lib/objects/**/*.lua ./build/esm/lib/objects/ --cwd=src && cpy ./lib/objects/**/*.lua ./build/cjs/lib/objects/ --cwd=src && cpy ./**/*.d.ts ./build/cjs/ --cwd=build/esm/" + "build": "tsc -b tsconfig.build.json && tsc-alias", + "postbuild": "esm2cjs --in build/esm --out build/cjs -l error -t node18 && cpy ./lib/objects/**/*.lua ./build/esm/lib/objects/ --cwd=src && cpy ./lib/objects/**/*.lua ./build/cjs/lib/objects/ --cwd=src && cpy ./**/*.d.ts ./build/cjs/ --cwd=build/esm/" }, "main": "build/cjs/index.js", "module": "build/esm/index.js", diff --git a/packages/db-objects-redis/src/index.ts b/packages/db-objects-redis/src/index.ts index c7f7e862b1..f3df8f34c7 100644 --- a/packages/db-objects-redis/src/index.ts +++ b/packages/db-objects-redis/src/index.ts @@ -6,5 +6,5 @@ export function getDefaultPort(host: string): number { return host.includes(',') ? 26379 : 6379; } export const Server = null; -export { ObjectsInRedisClient as Client } from './lib/objects/objectsInRedisClient'; -export * as objectsUtils from './lib/objects/objectsUtils'; +export { ObjectsInRedisClient as Client } from '@/lib/objects/objectsInRedisClient.js'; +export * as objectsUtils from '@/lib/objects/objectsUtils.js'; diff --git a/packages/db-objects-redis/src/lib/objects/objectsInRedisClient.ts b/packages/db-objects-redis/src/lib/objects/objectsInRedisClient.ts index c3c48c7920..5b62688716 100644 --- a/packages/db-objects-redis/src/lib/objects/objectsInRedisClient.ts +++ b/packages/db-objects-redis/src/lib/objects/objectsInRedisClient.ts @@ -5,23 +5,32 @@ * Written by bluefox , 2014-2022 * */ -// eslint-disable-next-line @typescript-eslint/no-var-requires -const extend = require('node.extend'); +// @ts-expect-error no ts module +import extend from 'node.extend'; import type IORedis from 'ioredis'; import Redis from 'ioredis'; import { tools } from '@iobroker/db-base'; -import fs from 'fs'; -import path from 'path'; -import crypto from 'crypto'; -import { isDeepStrictEqual } from 'util'; +import fs from 'node:fs'; +import path from 'node:path'; +import crypto from 'node:crypto'; +import { isDeepStrictEqual } from 'node:util'; import deepClone from 'deep-clone'; -import type { ACLObject, FileObject, CheckFileRightsCallback, GetUserGroupPromiseReturn } from './objectsUtils.js'; -import * as utils from './objectsUtils.js'; +import type { + ACLObject, + FileObject, + CheckFileRightsCallback, + GetUserGroupPromiseReturn +} from '@/lib/objects/objectsUtils.js'; +import * as utils from '@/lib/objects/objectsUtils.js'; import semver from 'semver'; -import * as CONSTS from './constants'; +import * as CONSTS from '@/lib/objects/constants.js'; import type { InternalLogger } from '@iobroker/js-controller-common/tools'; import type { ConnectionOptions, DbStatus } from '@iobroker/db-base/inMemFileDB'; +import * as url from 'node:url'; +// eslint-disable-next-line unicorn/prefer-module +const thisDir = url.fileURLToPath(new URL('.', import.meta.url || 'file://' + __dirname)); + const ERRORS = CONSTS.ERRORS; type ChangeFunction = (id: string, object: ioBroker.Object | null) => void; @@ -4968,7 +4977,7 @@ export class ObjectsInRedisClient { luaDirName = 'lua-v3'; } - const luaPath = path.join(__dirname, luaDirName); + const luaPath = path.join(thisDir, luaDirName); const scripts: Script[] = fs.readdirSync(luaPath).map(name => { const shasum = crypto.createHash('sha1'); const script = fs.readFileSync(path.join(luaPath, name)); diff --git a/packages/db-objects-redis/src/lib/objects/objectsUtils.ts b/packages/db-objects-redis/src/lib/objects/objectsUtils.ts index 326f4b20f3..b93229ccbb 100644 --- a/packages/db-objects-redis/src/lib/objects/objectsUtils.ts +++ b/packages/db-objects-redis/src/lib/objects/objectsUtils.ts @@ -10,10 +10,10 @@ import path from 'node:path'; import deepClone from 'deep-clone'; import { tools } from '@iobroker/db-base'; -import * as CONSTS from './constants'; +import * as CONSTS from '@/lib/objects/constants.js'; import mime from 'mime-types'; -export * as CONSTS from './constants'; +export * as CONSTS from '@/lib/objects/constants.js'; export const ERRORS = CONSTS.ERRORS; export const REG_CHECK_ID = CONSTS.REG_CHECK_ID; diff --git a/packages/db-objects-redis/tsconfig.json b/packages/db-objects-redis/tsconfig.json index 1aa777eceb..be7e795faa 100644 --- a/packages/db-objects-redis/tsconfig.json +++ b/packages/db-objects-redis/tsconfig.json @@ -3,7 +3,12 @@ "compilerOptions": { "outDir": "build/esm", "module": "NodeNext", - "rootDir": "src" + "rootDir": "src", + "paths": { + "@/*": [ + "./src/*" + ] + } }, "references": [ { diff --git a/packages/db-states-file/package.json b/packages/db-states-file/package.json index 6969d9ee39..72e6c39b6d 100644 --- a/packages/db-states-file/package.json +++ b/packages/db-states-file/package.json @@ -1,5 +1,6 @@ { "name": "@iobroker/db-states-file", + "type": "module", "version": "5.0.20-alpha.0-20240409-d68ed299", "engines": { "node": ">=12.0.0" @@ -25,7 +26,7 @@ }, "scripts": { "build": "tsc -b tsconfig.build.json", - "postbuild": "esm2cjs --in build/esm --out build/cjs -l error && cpy ./**/*.d.ts ./build/cjs/ --cwd=build/esm/" + "postbuild": "esm2cjs --in build/esm --out build/cjs -l error -t node18 && cpy ./**/*.d.ts ./build/cjs/ --cwd=build/esm/" }, "main": "build/cjs/index.js", "module": "build/esm/index.js", diff --git a/packages/db-states-file/src/index.ts b/packages/db-states-file/src/index.ts index 0645a259d0..415193ee8b 100644 --- a/packages/db-states-file/src/index.ts +++ b/packages/db-states-file/src/index.ts @@ -1,9 +1,11 @@ -// eslint-disable-next-line @typescript-eslint/no-var-requires -export const StatesInMemoryFileDB = require('./lib/states/statesInMemFileDB'); -// eslint-disable-next-line @typescript-eslint/no-var-requires -export const Client = require('@iobroker/db-states-redis').Client; -// eslint-disable-next-line @typescript-eslint/no-var-requires -export const Server = require('./lib/states/statesInMemServerClass.js'); +import InMemoryFileDB from './lib/states/statesInMemFileDB.js'; +import { Client as StatesClient } from '@iobroker/db-states-redis'; +import StatesServer from './lib/states/statesInMemServerClass.js'; + +export const StatesInMemoryFileDB = InMemoryFileDB; +export const Client = StatesClient; +export const Server = StatesServer; + /** * Get the default port of the objects db */ diff --git a/packages/db-states-file/src/lib/states/statesInMemFileDB.js b/packages/db-states-file/src/lib/states/statesInMemFileDB.js index f933c9ee0f..7c7b7f976f 100644 --- a/packages/db-states-file/src/lib/states/statesInMemFileDB.js +++ b/packages/db-states-file/src/lib/states/statesInMemFileDB.js @@ -7,15 +7,8 @@ * */ -/** @module StatesInMemoryFileDB */ - -/* jshint -W097 */ -/* jshint strict:false */ -/* jslint node: true */ -'use strict'; - -const { InMemoryFileDB } = require('@iobroker/db-base'); -const tools = require('@iobroker/db-base').tools; +import { InMemoryFileDB } from '@iobroker/db-base'; +import { tools } from '@iobroker/db-base'; // settings = { // change: function (id, state) {}, @@ -42,7 +35,7 @@ const tools = require('@iobroker/db-base').tools; * This class inherits InMemoryFileDB class and adds all relevant logic for states * including the available methods for use by js-controller directly **/ -class StatesInMemoryFileDB extends InMemoryFileDB { +export default class StatesInMemoryFileDB extends InMemoryFileDB { constructor(settings) { settings = settings || {}; settings.fileDB = settings.fileDB || { @@ -331,5 +324,3 @@ class StatesInMemoryFileDB extends InMemoryFileDB { } } } - -module.exports = StatesInMemoryFileDB; diff --git a/packages/db-states-file/src/lib/states/statesInMemServerClass.js b/packages/db-states-file/src/lib/states/statesInMemServerClass.js index 236d378ef8..2bdceaac05 100644 --- a/packages/db-states-file/src/lib/states/statesInMemServerClass.js +++ b/packages/db-states-file/src/lib/states/statesInMemServerClass.js @@ -7,17 +7,10 @@ * */ -/** @module statesInMemory */ +import { Client as StatesInRedisClient } from '@iobroker/db-states-redis'; +import StatesInMemServer from './statesInMemServerRedis.js'; -/* jshint -W097 */ -/* jshint strict:false */ -/* jslint node: true */ -'use strict'; - -const StatesInRedisClient = require('@iobroker/db-states-redis').Client; -const StatesInMemServer = require('./statesInMemServerRedis'); - -class StatesInMemoryServerClass extends StatesInRedisClient { +export default class StatesInMemoryServerClass extends StatesInRedisClient { constructor(settings) { settings.autoConnect = false; // delay Client connection to when we need it super(settings); @@ -43,5 +36,3 @@ class StatesInMemoryServerClass extends StatesInRedisClient { return this.statesServer.getStatus(); // return Status as Server } } - -module.exports = StatesInMemoryServerClass; diff --git a/packages/db-states-file/src/lib/states/statesInMemServerRedis.js b/packages/db-states-file/src/lib/states/statesInMemServerRedis.js index b2f3da34c6..2c3a7d9217 100644 --- a/packages/db-states-file/src/lib/states/statesInMemServerRedis.js +++ b/packages/db-states-file/src/lib/states/statesInMemServerRedis.js @@ -7,18 +7,12 @@ * */ -/** @module statesInMemory */ +import net from 'node:net'; +import { inspect } from 'node:util'; -/* jshint -W097 */ -/* jshint strict:false */ -/* jslint node: true */ -'use strict'; -const net = require('net'); -const { inspect } = require('util'); - -const { RedisHandler } = require('@iobroker/db-base'); -const StatesInMemoryFileDB = require('./statesInMemFileDB'); -const { getLocalAddress } = require('@iobroker/js-controller-common/tools'); +import { RedisHandler } from '@iobroker/db-base'; +import StatesInMemoryFileDB from './statesInMemFileDB.js'; +import { getLocalAddress } from '@iobroker/js-controller-common/tools'; // settings = { // change: function (id, state) {}, @@ -45,7 +39,7 @@ const { getLocalAddress } = require('@iobroker/js-controller-common/tools'); * This class inherits statesInMemoryFileDB class and adds socket.io communication layer * to access the methods via socket.io **/ -class StatesInMemoryServer extends StatesInMemoryFileDB { +export default class StatesInMemoryServer extends StatesInMemoryFileDB { /** * Constructor * @param settings State and InMem-DB settings @@ -554,5 +548,3 @@ class StatesInMemoryServer extends StatesInMemoryFileDB { }); } } - -module.exports = StatesInMemoryServer; diff --git a/packages/db-states-file/tsconfig.json b/packages/db-states-file/tsconfig.json index 53c1670733..e5736e5f11 100644 --- a/packages/db-states-file/tsconfig.json +++ b/packages/db-states-file/tsconfig.json @@ -4,7 +4,7 @@ "outDir": "build/esm", "module": "NodeNext", "rootDir": "src", - "noEmit": false + "noEmit": false, }, "references": [ { @@ -15,7 +15,8 @@ } ], "include": [ - "src/**/*.ts" + "src/**/*.ts", + "src/**/*.js" ], "exclude": [ "build/**", diff --git a/packages/db-states-jsonl/package.json b/packages/db-states-jsonl/package.json index f3770ee460..90545f4f73 100644 --- a/packages/db-states-jsonl/package.json +++ b/packages/db-states-jsonl/package.json @@ -1,5 +1,6 @@ { "name": "@iobroker/db-states-jsonl", + "type": "module", "version": "5.0.20-alpha.0-20240409-d68ed299", "engines": { "node": ">=12.0.0" @@ -27,7 +28,7 @@ }, "scripts": { "build": "tsc -b tsconfig.build.json", - "postbuild": "esm2cjs --in build/esm --out build/cjs -l error && cpy ./**/*.d.ts ./build/cjs/ --cwd=build/esm/" + "postbuild": "esm2cjs --in build/esm --out build/cjs -l error -t node18 && cpy ./**/*.d.ts ./build/cjs/ --cwd=build/esm/" }, "main": "build/cjs/index.js", "module": "build/esm/index.js", diff --git a/packages/db-states-jsonl/src/index.ts b/packages/db-states-jsonl/src/index.ts index 34bcc34486..19accf05d4 100644 --- a/packages/db-states-jsonl/src/index.ts +++ b/packages/db-states-jsonl/src/index.ts @@ -1,7 +1,8 @@ -// eslint-disable-next-line @typescript-eslint/no-var-requires -export const Client = require('@iobroker/db-states-redis').Client; -// eslint-disable-next-line @typescript-eslint/no-var-requires -export const Server = require('./lib/states/statesInMemServerClass.js'); +import { Client as StatesClient } from '@iobroker/db-states-redis'; +import StatesServer from './lib/states/statesInMemServerClass.js'; + +export const Client = StatesClient; +export const Server = StatesServer; /** * Get the default port of the objects db diff --git a/packages/db-states-jsonl/src/lib/states/statesInMemJsonlDB.js b/packages/db-states-jsonl/src/lib/states/statesInMemJsonlDB.js index 36d6fc68e1..e4ea27e9ae 100644 --- a/packages/db-states-jsonl/src/lib/states/statesInMemJsonlDB.js +++ b/packages/db-states-jsonl/src/lib/states/statesInMemJsonlDB.js @@ -7,19 +7,12 @@ * */ -/** @module StatesInMemoryFileDB */ - -/* jshint -W097 */ -/* jshint strict:false */ -/* jslint node: true */ -'use strict'; - -const { StatesInMemoryFileDB } = require('@iobroker/db-states-file'); -const { JsonlDB } = require('@alcalzone/jsonl-db'); -const path = require('path'); -const fs = require('fs'); -const os = require('os'); -const { tools } = require('@iobroker/js-controller-common'); +import { StatesInMemoryFileDB } from '@iobroker/db-states-file'; +import { JsonlDB } from '@alcalzone/jsonl-db'; +import path from 'node:path'; +import fs from 'node:fs'; +import os from 'node:os'; +import { tools } from '@iobroker/js-controller-common'; // settings = { // change: function (id, state) {}, @@ -112,7 +105,7 @@ function normalizeJsonlOptions(conf = {}) { * This class inherits InMemoryFileDB class and adds all relevant logic for states * including the available methods for use by js-controller directly **/ -class StatesInMemoryJsonlDB extends StatesInMemoryFileDB { +export default class StatesInMemoryJsonlDB extends StatesInMemoryFileDB { constructor(settings) { settings = settings || {}; // Not really used @@ -300,5 +293,3 @@ class StatesInMemoryJsonlDB extends StatesInMemoryFileDB { } } } - -module.exports = StatesInMemoryJsonlDB; diff --git a/packages/db-states-jsonl/src/lib/states/statesInMemServerClass.js b/packages/db-states-jsonl/src/lib/states/statesInMemServerClass.js index 236d378ef8..2bdceaac05 100644 --- a/packages/db-states-jsonl/src/lib/states/statesInMemServerClass.js +++ b/packages/db-states-jsonl/src/lib/states/statesInMemServerClass.js @@ -7,17 +7,10 @@ * */ -/** @module statesInMemory */ +import { Client as StatesInRedisClient } from '@iobroker/db-states-redis'; +import StatesInMemServer from './statesInMemServerRedis.js'; -/* jshint -W097 */ -/* jshint strict:false */ -/* jslint node: true */ -'use strict'; - -const StatesInRedisClient = require('@iobroker/db-states-redis').Client; -const StatesInMemServer = require('./statesInMemServerRedis'); - -class StatesInMemoryServerClass extends StatesInRedisClient { +export default class StatesInMemoryServerClass extends StatesInRedisClient { constructor(settings) { settings.autoConnect = false; // delay Client connection to when we need it super(settings); @@ -43,5 +36,3 @@ class StatesInMemoryServerClass extends StatesInRedisClient { return this.statesServer.getStatus(); // return Status as Server } } - -module.exports = StatesInMemoryServerClass; diff --git a/packages/db-states-jsonl/src/lib/states/statesInMemServerRedis.js b/packages/db-states-jsonl/src/lib/states/statesInMemServerRedis.js index 0f914a13dc..efcd448e5e 100644 --- a/packages/db-states-jsonl/src/lib/states/statesInMemServerRedis.js +++ b/packages/db-states-jsonl/src/lib/states/statesInMemServerRedis.js @@ -7,18 +7,12 @@ * */ -/** @module statesInMemory */ +import net from 'node:net'; +import { inspect } from 'node:util'; -/* jshint -W097 */ -/* jshint strict:false */ -/* jslint node: true */ -'use strict'; -const net = require('net'); -const { inspect } = require('util'); - -const { RedisHandler } = require('@iobroker/db-base'); -const StatesInMemoryJsonlDB = require('./statesInMemJsonlDB'); -const { getLocalAddress } = require('@iobroker/js-controller-common/tools'); +import { RedisHandler } from '@iobroker/db-base'; +import StatesInMemoryJsonlDB from './statesInMemJsonlDB.js'; +import { getLocalAddress } from '@iobroker/js-controller-common/tools'; // settings = { // change: function (id, state) {}, @@ -45,7 +39,7 @@ const { getLocalAddress } = require('@iobroker/js-controller-common/tools'); * This class inherits statesInMemoryFileDB class and adds socket.io communication layer * to access the methods via socket.io */ -class StatesInMemoryServer extends StatesInMemoryJsonlDB { +export default class StatesInMemoryServer extends StatesInMemoryJsonlDB { /** * Constructor * @@ -557,5 +551,3 @@ class StatesInMemoryServer extends StatesInMemoryJsonlDB { }); } } - -module.exports = StatesInMemoryServer; diff --git a/packages/db-states-jsonl/tsconfig.json b/packages/db-states-jsonl/tsconfig.json index d5af5a1f45..49addc1035 100644 --- a/packages/db-states-jsonl/tsconfig.json +++ b/packages/db-states-jsonl/tsconfig.json @@ -18,7 +18,8 @@ } ], "include": [ - "src/**/*.ts" + "src/**/*.ts", + "src/**/*.js" ], "exclude": [ "build/**", diff --git a/packages/db-states-redis/package.json b/packages/db-states-redis/package.json index 5e24e7f696..0c91c54413 100644 --- a/packages/db-states-redis/package.json +++ b/packages/db-states-redis/package.json @@ -1,5 +1,6 @@ { "name": "@iobroker/db-states-redis", + "type": "module", "version": "5.0.20-alpha.0-20240409-d68ed299", "engines": { "node": ">=12.0.0" @@ -24,8 +25,8 @@ "url": "https://github.com/ioBroker/ioBroker.js-controller/tree/master/packages/db-states-redis" }, "scripts": { - "build": "tsc -b tsconfig.build.json", - "postbuild": "esm2cjs --in build/esm --out build/cjs -l error && cpy ./**/*.d.ts ./build/cjs/ --cwd=build/esm/" + "build": "tsc -b tsconfig.build.json && tsc-alias", + "postbuild": "esm2cjs --in build/esm --out build/cjs -l error -t node18 && cpy ./**/*.d.ts ./build/cjs/ --cwd=build/esm/" }, "main": "build/cjs/index.js", "module": "build/esm/index.js", diff --git a/packages/db-states-redis/src/index.ts b/packages/db-states-redis/src/index.ts index 828a083344..64940d9417 100644 --- a/packages/db-states-redis/src/index.ts +++ b/packages/db-states-redis/src/index.ts @@ -1,4 +1,4 @@ -export { StateRedisClient as Client } from './lib/states/statesInRedisClient.js'; +export { StateRedisClient as Client } from '@/lib/states/statesInRedisClient.js'; export function getDefaultPort(host: string): number { return host.includes(',') ? 26379 : 6379; } diff --git a/packages/db-states-redis/src/lib/states/statesInRedisClient.ts b/packages/db-states-redis/src/lib/states/statesInRedisClient.ts index 328ed024cc..8e2f6ea920 100644 --- a/packages/db-states-redis/src/lib/states/statesInRedisClient.ts +++ b/packages/db-states-redis/src/lib/states/statesInRedisClient.ts @@ -10,7 +10,7 @@ import Redis from 'ioredis'; import { tools } from '@iobroker/db-base'; -import { isDeepStrictEqual } from 'util'; +import { isDeepStrictEqual } from 'node:util'; import type { InternalLogger } from '@iobroker/js-controller-common/tools'; import type IORedis from 'ioredis'; import type { DbStatus, ConnectionOptions } from '@iobroker/db-base/inMemFileDB'; diff --git a/packages/db-states-redis/tsconfig.json b/packages/db-states-redis/tsconfig.json index 768af0ed82..4e8f44fea5 100644 --- a/packages/db-states-redis/tsconfig.json +++ b/packages/db-states-redis/tsconfig.json @@ -3,7 +3,12 @@ "compilerOptions": { "outDir": "build/esm", "module": "NodeNext", - "rootDir": "src" + "rootDir": "src", + "paths": { + "@/*": [ + "./src/*" + ] + } }, "references": [ { diff --git a/packages/types-dev/index.d.ts b/packages/types-dev/index.d.ts index a9adbbb150..e6fa24171f 100644 --- a/packages/types-dev/index.d.ts +++ b/packages/types-dev/index.d.ts @@ -1,6 +1,6 @@ // Types which are safe to share within this repository AND publicly -import type * as fs from 'fs'; +import type * as fs from 'node:fs'; import './objects'; import type { IoBJson, DatabaseOptions, ObjectsDatabaseOptions as ObjectsDbOptions } from './config'; diff --git a/packages/types-dev/objects.d.ts b/packages/types-dev/objects.d.ts index 7f50c66d15..e6c3261577 100644 --- a/packages/types-dev/objects.d.ts +++ b/packages/types-dev/objects.d.ts @@ -1,4 +1,4 @@ -import type * as os from 'os'; +import type * as os from 'node:os'; declare global { namespace ioBroker { diff --git a/packages/types-public/build.ts b/packages/types-public/build.ts index 219c1c9c0c..bc05bbddc1 100644 --- a/packages/types-public/build.ts +++ b/packages/types-public/build.ts @@ -1,8 +1,10 @@ -import * as path from 'path'; -import fs from 'fs'; +import * as path from 'node:path'; +import fs from 'node:fs'; import { Extractor, ExtractorConfig, type ExtractorResult } from '@microsoft/api-extractor'; -const apiExtractorJsonPath: string = path.join(__dirname, 'api-extractor.json'); +// eslint-disable-next-line unicorn/prefer-module +const thisDir = __dirname; +const apiExtractorJsonPath: string = path.join(thisDir, 'api-extractor.json'); // Load and parse the api-extractor.json file const extractorConfig: ExtractorConfig = ExtractorConfig.loadFileAndPrepare(apiExtractorJsonPath); @@ -27,9 +29,9 @@ if (extractorResult.succeeded) { fs.writeFileSync(outputPath, content); // Copy outputs from types-dev to here - fs.copyFileSync(path.join(__dirname, '../types-dev/objects.d.ts'), path.join(__dirname, 'build/objects.d.ts')); - fs.copyFileSync(path.join(__dirname, '../types-dev/index.d.ts'), path.join(__dirname, 'build/shared.d.ts')); - fs.copyFileSync(path.join(__dirname, '../types-dev/config.d.ts'), path.join(__dirname, 'build/config.d.ts')); + fs.copyFileSync(path.join(thisDir, '../types-dev/objects.d.ts'), path.join(thisDir, 'build/objects.d.ts')); + fs.copyFileSync(path.join(thisDir, '../types-dev/index.d.ts'), path.join(thisDir, 'build/shared.d.ts')); + fs.copyFileSync(path.join(thisDir, '../types-dev/config.d.ts'), path.join(thisDir, 'build/config.d.ts')); // Ensure that the generated types don't contain any references to @iobroker/* if (content.includes('@iobroker/')) { diff --git a/schemas/updateSchemas.ts b/schemas/updateSchemas.ts index be5f274f7d..148d628154 100644 --- a/schemas/updateSchemas.ts +++ b/schemas/updateSchemas.ts @@ -1,17 +1,18 @@ import * as tjs from 'ts-json-schema-generator'; -import path from 'path'; +import path from 'node:path'; import fs from 'fs-extra'; +import axios from 'axios'; -// eslint-disable-next-line @typescript-eslint/no-var-requires -const getSpdxLicenseIds = require('get-spdx-license-ids'); +// eslint-disable-next-line unicorn/prefer-module +const thisDir = __dirname; /** * Update contents io iobroker.json schema */ function updateIobJSON(): void { const config: tjs.Config = { - path: path.join(__dirname, '..', 'types-dev', 'config.d.ts'), - tsconfig: path.join(__dirname, '..', 'tsconfig.json'), + path: path.join(thisDir, '..', 'types-dev', 'config.d.ts'), + tsconfig: path.join(thisDir, '..', 'tsconfig.json'), type: 'IoBJson', skipTypeCheck: true, additionalProperties: false @@ -19,7 +20,7 @@ function updateIobJSON(): void { const schema = tjs.createGenerator(config).createSchema(config.type); - fs.writeJSONSync(path.join(__dirname, 'iobroker.json'), schema, { spaces: 2 }); + fs.writeJSONSync(path.join(thisDir, 'iobroker.json'), schema, { spaces: 2 }); } /** @@ -28,9 +29,34 @@ function updateIobJSON(): void { async function updateLicenseArray(): Promise { // get all allowed licenses as array const licenses = await getSpdxLicenseIds(); - const ioPackSchema = fs.readJSONSync(path.join(__dirname, 'io-package.json')); + const ioPackSchema = fs.readJSONSync(path.join(thisDir, 'io-package.json')); ioPackSchema.definitions.license.enum = licenses; - fs.writeJSONSync(path.join(__dirname, 'io-package.json'), ioPackSchema, { spaces: 2 }); + fs.writeJSONSync(path.join(thisDir, 'io-package.json'), ioPackSchema, { spaces: 2 }); +} + +interface LicenseEntry { + /** If license is deprecated */ + isDeprecatedLicenseId: boolean; + /** License ID */ + licenseId: string; + /** Other unimportant properties */ + [other: string]: unknown; +} + +/** + * Get all valid and non deprecated spdx licenses + */ +async function getSpdxLicenseIds(): Promise { + const url = 'https://spdx.org/licenses/licenses.json'; + + const res = await axios.get(url); + + const { licenses } = res.data as { licenses: LicenseEntry[] }; + + // filter out deprecated and invalid licenses + return licenses + .filter(licenseEntry => !licenseEntry.licenseId.endsWith('+') && !licenseEntry.isDeprecatedLicenseId) + .map(licenseEntry => licenseEntry.licenseId); } updateIobJSON();