diff --git a/packages/conventional-changelog-cli/cli.js b/packages/conventional-changelog-cli/cli.mjs similarity index 78% rename from packages/conventional-changelog-cli/cli.js rename to packages/conventional-changelog-cli/cli.mjs index d0c862764..b93b217f0 100755 --- a/packages/conventional-changelog-cli/cli.js +++ b/packages/conventional-changelog-cli/cli.mjs @@ -1,12 +1,19 @@ #!/usr/bin/env node -'use strict' - -const addStream = require('add-stream') -const conventionalChangelog = require('conventional-changelog') -const fs = require('fs') -const meow = require('meow') -const tempfile = require('tempfile') -const resolve = require('path').resolve +import { resolve } from 'path' +import { pathToFileURL } from 'url' +import { + createReadStream, + createWriteStream +} from 'fs' +import { readFile } from 'fs/promises' +import addStream from 'add-stream' +import tempfile from 'tempfile' +import meow from 'meow' +import conventionalChangelog from 'conventional-changelog' + +function relativeResolve (filePath) { + return pathToFileURL(resolve(process.cwd(), filePath)) +} const cli = meow(` Usage @@ -51,61 +58,62 @@ const cli = meow(` -t, --tag-prefix Tag prefix to consider when reading the tags --commit-path Generate a changelog scoped to a specific directory `, { + importMeta: import.meta, booleanDefault: undefined, flags: { infile: { - alias: 'i', + shortFlag: 'i', type: 'string' }, outfile: { - alias: 'o', + shortFlag: 'o', type: 'string' }, - 'same-file': { - alias: 's', + sameFile: { + shortFlag: 's', type: 'boolean' }, preset: { - alias: 'p', + shortFlag: 'p', type: 'string' }, pkg: { - alias: 'k', + shortFlag: 'k', type: 'string' }, append: { - alias: 'a', + shortFlag: 'a', type: 'boolean' }, - 'release-count': { - alias: 'r', + releaseCount: { + shortFlag: 'r', type: 'number' }, - 'skip-unstable': { + skipUnstable: { type: 'boolean' }, - 'output-unreleased': { - alias: 'u', + outputUnreleased: { + shortFlag: 'u', type: 'boolean' }, verbose: { - alias: 'v', + shortFlag: 'v', type: 'boolean' }, config: { - alias: 'n', + shortFlag: 'n', type: 'string' }, context: { - alias: 'c', + shortFlag: 'c', type: 'string' }, - 'lerna-package': { - alias: 'l', + lernaPackage: { + shortFlag: 'l', type: 'string' }, - 'tag-prefix': { - alias: 't', + tagPrefix: { + shortFlag: 't', type: 'string' } } @@ -136,9 +144,9 @@ let options = { pkg: { path: flags.pkg }, - append: append, - releaseCount: releaseCount, - skipUnstable: skipUnstable, + append, + releaseCount, + skipUnstable, outputUnreleased: flags.outputUnreleased, lernaPackage: flags.lernaPackage, tagPrefix: flags.tagPrefix @@ -155,11 +163,11 @@ let outStream try { if (flags.context) { - templateContext = require(resolve(process.cwd(), flags.context)) + templateContext = JSON.parse(await readFile(relativeResolve(flags.context), 'utf8')) } if (flags.config) { - config = require(resolve(process.cwd(), flags.config)) + config = (await import(relativeResolve(flags.config))).default options.config = config if (config.options) { @@ -186,7 +194,7 @@ const gitRawCommitsOpts = { if (flags.commitPath) gitRawCommitsOpts.path = flags.commitPath const changelogStream = conventionalChangelog(options, templateContext, gitRawCommitsOpts, config.parserOpts, config.writerOpts) - .on('error', function (err) { + .on('error', (err) => { if (flags.verbose) { console.error(err.stack) } else { @@ -197,7 +205,7 @@ const changelogStream = conventionalChangelog(options, templateContext, gitRawCo function noInputFile () { if (outfile) { - outStream = fs.createWriteStream(outfile) + outStream = createWriteStream(outfile) } else { outStream = process.stdout } @@ -207,8 +215,8 @@ function noInputFile () { } if (infile && releaseCount !== 0) { - const readStream = fs.createReadStream(infile) - .on('error', function () { + const readStream = createReadStream(infile) + .on('error', () => { if (flags.verbose) { console.warn('infile does not exist.') } @@ -221,7 +229,7 @@ if (infile && releaseCount !== 0) { if (sameFile) { if (options.append) { changelogStream - .pipe(fs.createWriteStream(outfile, { + .pipe(createWriteStream(outfile, { flags: 'a' })) } else { @@ -229,15 +237,15 @@ if (infile && releaseCount !== 0) { changelogStream .pipe(addStream(readStream)) - .pipe(fs.createWriteStream(tmp)) - .on('finish', function () { - fs.createReadStream(tmp) - .pipe(fs.createWriteStream(outfile)) + .pipe(createWriteStream(tmp)) + .on('finish', () => { + createReadStream(tmp) + .pipe(createWriteStream(outfile)) }) } } else { if (outfile) { - outStream = fs.createWriteStream(outfile) + outStream = createWriteStream(outfile) } else { outStream = process.stdout } diff --git a/packages/conventional-changelog-cli/package.json b/packages/conventional-changelog-cli/package.json index 95df2e794..fbef212b4 100644 --- a/packages/conventional-changelog-cli/package.json +++ b/packages/conventional-changelog-cli/package.json @@ -16,10 +16,10 @@ "url": "https://github.com/stevemao" }, "bin": { - "conventional-changelog": "cli.js" + "conventional-changelog": "cli.mjs" }, "files": [ - "cli.js" + "cli.mjs" ], "keywords": [ "cli", @@ -35,7 +35,7 @@ "dependencies": { "add-stream": "^1.0.0", "conventional-changelog": "^4.0.0", - "meow": "^8.1.2", + "meow": "^12.0.1", "tempfile": "^3.0.0" }, "scripts": { diff --git a/packages/conventional-changelog-cli/test/index.spec.js b/packages/conventional-changelog-cli/test/index.spec.js index 8ccc3b802..11d98c46e 100644 --- a/packages/conventional-changelog-cli/test/index.spec.js +++ b/packages/conventional-changelog-cli/test/index.spec.js @@ -2,7 +2,7 @@ import { describe, beforeAll, afterAll, it, expect } from 'vitest' import path from 'path' import { TestTools } from '../../../tools/test-tools' -const CLI_PATH = path.join(__dirname, '../cli.js') +const CLI_PATH = path.join(__dirname, '../cli.mjs') const FIXTURE_CHANGELOG_PATH = path.join(__dirname, 'fixtures/_CHANGELOG.md') let testTools diff --git a/packages/conventional-changelog-core/lib/merge-config.js b/packages/conventional-changelog-core/lib/merge-config.js index 611c7dd97..71a0b4438 100644 --- a/packages/conventional-changelog-core/lib/merge-config.js +++ b/packages/conventional-changelog-core/lib/merge-config.js @@ -1,4 +1,5 @@ 'use strict' +const fs = require('fs/promises') const dateFormat = require('dateformat') const getPkgRepo = require('get-pkg-repo') const gitSemverTags = require('git-semver-tags') @@ -9,8 +10,6 @@ try { } catch (err) { gitRemoteOriginUrl = () => Promise.reject(err) } -const readPkg = require('read-pkg') -const readPkgUp = require('read-pkg-up') const { URL } = require('url') const rhosts = /github|bitbucket|gitlab/i @@ -117,9 +116,17 @@ async function mergeConfig (options, context, gitRawCommitsOpts, parserOpts, wri if (options.pkg) { if (options.pkg.path) { - pkgPromise = Promise.resolve(readPkg(options.pkg.path)) + pkgPromise = import('read-pkg').then(async ({ parsePackage }) => { + const json = await fs.readFile(options.pkg.path, 'utf-8') + + return parsePackage(json) + }) } else { - pkgPromise = Promise.resolve(readPkgUp({ cwd: options.cwd })) + pkgPromise = import('read-pkg-up').then(async ({ readPackageUp }) => { + const { packageJson } = await readPackageUp({ cwd: options.cwd }) + + return packageJson + }) } } @@ -163,12 +170,7 @@ async function mergeConfig (options, context, gitRawCommitsOpts, parserOpts, wri if (options.pkg) { if (pkgObj.status === 'fulfilled') { - if (options.pkg.path) { - pkg = pkgObj.value - } else { - pkg = pkgObj.value.pkg || {} - } - + pkg = pkgObj.value || {} pkg = options.pkg.transform(pkg) } else if (options.pkg.path) { options.warn(pkgObj.reason.toString()) diff --git a/packages/conventional-changelog-core/package.json b/packages/conventional-changelog-core/package.json index 37a254733..8f2e15030 100644 --- a/packages/conventional-changelog-core/package.json +++ b/packages/conventional-changelog-core/package.json @@ -35,8 +35,8 @@ "git-remote-origin-url": "^2.0.0", "git-semver-tags": "^5.0.0", "normalize-package-data": "^5.0.0", - "read-pkg": "^3.0.0", - "read-pkg-up": "^3.0.0" + "read-pkg": "^8.0.0", + "read-pkg-up": "^10.0.0" }, "scripts": { "test-windows": "mocha --timeout 30000" diff --git a/packages/conventional-changelog-writer/cli.js b/packages/conventional-changelog-writer/cli.mjs similarity index 74% rename from packages/conventional-changelog-writer/cli.js rename to packages/conventional-changelog-writer/cli.mjs index 2b69002cb..43d1d39f4 100755 --- a/packages/conventional-changelog-writer/cli.js +++ b/packages/conventional-changelog-writer/cli.mjs @@ -1,10 +1,15 @@ #!/usr/bin/env node -'use strict' -const conventionalChangelogWriter = require('./') -const fs = require('fs') -const meow = require('meow') -const path = require('path') -const split = require('split') +import { resolve } from 'path' +import { pathToFileURL } from 'url' +import { createReadStream } from 'fs' +import { readFile } from 'fs/promises' +import split from 'split' +import meow from 'meow' +import conventionalChangelogWriter from './index.js' + +function relativeResolve (filePath) { + return pathToFileURL(resolve(process.cwd(), filePath)) +} const cli = meow(` Usage @@ -19,13 +24,14 @@ const cli = meow(` -c, --context A filepath of a json that is used to define template variables -o, --options A filepath of a javascript object that is used to define options `, { + importMeta: import.meta, flags: { context: { - alias: 'c', + shortFlag: 'c', type: 'string' }, options: { - alias: 'o', + shortFlag: 'o', type: 'string' } } @@ -39,7 +45,7 @@ let templateContext const contextPath = flags.context if (contextPath) { try { - templateContext = require(path.resolve(process.cwd(), contextPath)) + templateContext = JSON.parse(await readFile(relativeResolve(contextPath), 'utf8')) } catch (err) { console.error('Failed to get context from file ' + contextPath + '\n' + err) process.exit(1) @@ -50,7 +56,7 @@ let options const optionsPath = flags.options if (optionsPath) { try { - options = require(path.resolve(process.cwd(), optionsPath)) + options = (await import(relativeResolve(optionsPath))).default } catch (err) { console.error('Failed to get options from file ' + optionsPath + '\n' + err) process.exit(1) @@ -67,25 +73,25 @@ try { function processFile (fileIndex) { const filePath = filePaths[fileIndex] - fs.createReadStream(filePath) - .on('error', function (err) { + createReadStream(filePath) + .on('error', (err) => { console.warn('Failed to read file ' + filePath + '\n' + err) if (++fileIndex < length) { processFile(fileIndex) } }) .pipe(split(JSON.parse)) - .on('error', function (err) { + .on('error', (err) => { console.warn('Failed to split commits in file ' + filePath + '\n' + err) }) .pipe(stream) - .on('error', function (err) { + .on('error', (err) => { console.warn('Failed to process file ' + filePath + '\n' + err) if (++fileIndex < length) { processFile(fileIndex) } }) - .on('end', function () { + .on('end', () => { if (++fileIndex < length) { processFile(fileIndex) } @@ -96,12 +102,12 @@ function processFile (fileIndex) { if (!process.stdin.isTTY) { process.stdin .pipe(split(JSON.parse)) - .on('error', function (err) { + .on('error', (err) => { console.error('Failed to split commits\n' + err) process.exit(1) }) .pipe(stream) - .on('error', function (err) { + .on('error', (err) => { console.error('Failed to process file\n' + err) process.exit(1) }) diff --git a/packages/conventional-changelog-writer/package.json b/packages/conventional-changelog-writer/package.json index 77738523d..85f52be27 100644 --- a/packages/conventional-changelog-writer/package.json +++ b/packages/conventional-changelog-writer/package.json @@ -21,7 +21,7 @@ }, "files": [ "index.js", - "cli.js", + "cli.mjs", "lib", "templates" ], @@ -40,7 +40,7 @@ "dateformat": "^3.0.3", "handlebars": "^4.7.7", "json-stringify-safe": "^5.0.1", - "meow": "^8.1.2", + "meow": "^12.0.1", "semver": "^7.5.2", "split": "^1.0.1" }, @@ -48,7 +48,7 @@ "test-windows": "echo 'make work on windows'" }, "bin": { - "conventional-changelog-writer": "cli.js" + "conventional-changelog-writer": "cli.mjs" }, "devDependencies": { "dedent": "^0.7.0", diff --git a/packages/conventional-changelog-writer/test/test-cli.js b/packages/conventional-changelog-writer/test/test-cli.js index e42968747..1149efad8 100644 --- a/packages/conventional-changelog-writer/test/test-cli.js +++ b/packages/conventional-changelog-writer/test/test-cli.js @@ -2,4 +2,4 @@ 'use strict' require('forceable-tty').override() -require('../cli') +import('../cli.mjs') diff --git a/packages/conventional-commits-parser/cli.js b/packages/conventional-commits-parser/cli.mjs similarity index 81% rename from packages/conventional-commits-parser/cli.js rename to packages/conventional-commits-parser/cli.mjs index 63ca54eb0..dfd045a58 100755 --- a/packages/conventional-commits-parser/cli.js +++ b/packages/conventional-commits-parser/cli.mjs @@ -1,16 +1,12 @@ #!/usr/bin/env node -'use strict' -const conventionalCommitsParser = require('./') -const fs = require('fs') -const { Transform } = require('stream') -const isTextPath = require('is-text-path') -const JSONStream = require('JSONStream') -const meow = require('meow') -const readline = require('readline') -const split = require('split2') - -const filePaths = [] -let separator = '\n\n\n' +import fs from 'fs' +import readline from 'readline' +import { Transform } from 'stream' +import isTextPath from 'is-text-path' +import JSONStream from 'JSONStream' +import split from 'split2' +import meow from 'meow' +import conventionalCommitsParser from './index.js' const cli = meow(` Practice writing commit messages or parse messages from files. @@ -41,48 +37,52 @@ const cli = meow(` --revert-correspondence Comma separated fields used to define what the commit reverts -v, --verbose Verbose output `, { + importMeta: import.meta, flags: { - 'header-pattern': { - alias: 'p', + headerPattern: { + shortFlag: 'p', type: 'string' }, - 'header-correspondence': { - alias: 'c', + headerCorrespondence: { + shortFlag: 'c', type: 'string' }, - 'reference-actions': { - alias: 'r', + referenceActions: { + shortFlag: 'r', type: 'string' }, - 'issue-prefixes': { - alias: 'i', + issuePrefixes: { + shortFlag: 'i', type: 'string' }, - 'issue-prefixes-case-sensitive': { + issuePrefixesCaseSensitive: { type: 'boolean' }, - 'note-keywords': { - alias: 'n', + noteKeywords: { + shortFlag: 'n', type: 'string' }, - 'field-pattern': { - alias: 'f', + fieldPattern: { + shortFlag: 'f', type: 'string' }, - 'revert-pattern': { + revertPattern: { type: 'string' }, - 'revert-correspondence': { + revertCorrespondence: { type: 'string' }, verbose: { - alias: 'v', + shortFlag: 'v', type: 'boolean' } } }) -cli.input.forEach(function (arg) { +const filePaths = [] +let separator = '\n\n\n' + +cli.input.forEach((arg) => { if (isTextPath(arg)) { filePaths.push(arg) } else { @@ -100,7 +100,7 @@ if (options.verbose) { function processFile (fileIndex) { const filePath = filePaths[fileIndex] fs.createReadStream(filePath) - .on('error', function (err) { + .on('error', (err) => { console.warn('Failed to read file ' + filePath + '\n' + err) if (++fileIndex < length) { processFile(fileIndex) @@ -109,7 +109,7 @@ function processFile (fileIndex) { .pipe(split(separator)) .pipe(conventionalCommitsParser(options)) .pipe(JSONStream.stringify()) - .on('end', function () { + .on('end', () => { if (++fileIndex < length) { processFile(fileIndex) } @@ -146,7 +146,7 @@ if (process.stdin.isTTY) { ) .pipe(process.stdout) - rl.on('line', function (line) { + rl.on('line', (line) => { commit += line + '\n' if (commit.indexOf(separator) === -1) { return @@ -161,7 +161,7 @@ if (process.stdin.isTTY) { process.stdin .pipe(split(separator)) .pipe(conventionalCommitsParser(options)) - .on('error', function (err) { + .on('error', (err) => { console.error(err.toString()) process.exit(1) }) diff --git a/packages/conventional-commits-parser/package.json b/packages/conventional-commits-parser/package.json index bcedf2de4..6a3ce149d 100644 --- a/packages/conventional-commits-parser/package.json +++ b/packages/conventional-commits-parser/package.json @@ -21,7 +21,7 @@ }, "files": [ "index.js", - "cli.js", + "cli.mjs", "lib" ], "keywords": [ @@ -35,14 +35,14 @@ "dependencies": { "JSONStream": "^1.3.5", "is-text-path": "^2.0.0", - "meow": "^8.1.2", + "meow": "^12.0.1", "split2": "^4.0.0" }, "scripts": { "test-windows": "echo 'make work on windows'" }, "bin": { - "conventional-commits-parser": "cli.js" + "conventional-commits-parser": "cli.mjs" }, "devDependencies": { "forceable-tty": "^0.1.0" diff --git a/packages/conventional-commits-parser/test/test-cli.js b/packages/conventional-commits-parser/test/test-cli.js index e42968747..1149efad8 100644 --- a/packages/conventional-commits-parser/test/test-cli.js +++ b/packages/conventional-commits-parser/test/test-cli.js @@ -2,4 +2,4 @@ 'use strict' require('forceable-tty').override() -require('../cli') +import('../cli.mjs') diff --git a/packages/conventional-recommended-bump/cli.js b/packages/conventional-recommended-bump/cli.mjs similarity index 71% rename from packages/conventional-recommended-bump/cli.js rename to packages/conventional-recommended-bump/cli.mjs index 41977e661..6d4b704bd 100755 --- a/packages/conventional-recommended-bump/cli.js +++ b/packages/conventional-recommended-bump/cli.mjs @@ -1,10 +1,12 @@ #!/usr/bin/env node +import { resolve } from 'path' +import { pathToFileURL } from 'url' +import meow from 'meow' +import conventionalRecommendedBump from './index.js' -'use strict' - -const meow = require('meow') -const conventionalRecommendedBump = require('./') -const path = require('path') +function relativeResolve (filePath) { + return pathToFileURL(resolve(process.cwd(), filePath)) +} const cli = meow(` Usage @@ -28,39 +30,40 @@ const cli = meow(` --commit-path Recommend a bump scoped to a specific directory --skip-unstable If given, unstable tags will be skipped, e.g., x.x.x-alpha.1, x.x.x-rc.2 `, { + importMeta: import.meta, flags: { preset: { - alias: 'p' + shortFlag: 'p' }, config: { - alias: 'g' + shortFlag: 'g' }, - 'header-pattern': { - alias: 'h' + headerPattern: { + shortFlag: 'h' }, - 'header-correspondence': { - alias: 'c' + headerCorrespondence: { + shortFlag: 'c' }, - 'reference-actions': { - alias: 'r' + referenceActions: { + shortFlag: 'r' }, - 'issue-prefixes': { - alias: 'i' + issuePrefixes: { + shortFlag: 'i' }, - 'note-keywords': { - alias: 'n' + noteKeywords: { + shortFlag: 'n' }, - 'field-pattern': { - alias: 'f' + fieldPattern: { + shortFlag: 'f' }, verbose: { - alias: 'v' + shortFlag: 'v' }, - 'lerna-package': { - alias: 'l' + lernaPackage: { + shortFlag: 'l' }, - 'tag-prefix': { - alias: 't' + tagPrefix: { + shortFlag: 't' } } }) @@ -79,7 +82,7 @@ if (preset) { options.preset = preset delete flags.preset } else if (config) { - options.config = require(path.resolve(process.cwd(), config)) + options.config = (await import(relativeResolve(config))).default delete flags.config } @@ -87,7 +90,7 @@ if (flags.verbose) { options.warn = console.warn.bind(console) } -conventionalRecommendedBump(options, flags, function (err, data) { +conventionalRecommendedBump(options, flags, (err, data) => { if (err) { console.error(err.toString()) process.exit(1) diff --git a/packages/conventional-recommended-bump/package.json b/packages/conventional-recommended-bump/package.json index 864867be9..3f8caf57e 100644 --- a/packages/conventional-recommended-bump/package.json +++ b/packages/conventional-recommended-bump/package.json @@ -21,7 +21,7 @@ }, "files": [ "index.js", - "cli.js" + "cli.mjs" ], "keywords": [ "conventional-recommended-bump", @@ -36,12 +36,12 @@ "conventional-commits-parser": "^4.0.0", "git-raw-commits": "^3.0.0", "git-semver-tags": "^5.0.0", - "meow": "^8.1.2" + "meow": "^12.0.1" }, "scripts": { "test-windows": "mocha --timeout 30000 ./test/preset-resolver.spec.js" }, - "bin": "cli.js", + "bin": "cli.mjs", "devDependencies": { "conventional-changelog-conventionalcommits": "^6.1.0" } diff --git a/packages/git-raw-commits/cli.js b/packages/git-raw-commits/cli.mjs similarity index 55% rename from packages/git-raw-commits/cli.js rename to packages/git-raw-commits/cli.mjs index 5f4babf32..b480117cc 100755 --- a/packages/git-raw-commits/cli.js +++ b/packages/git-raw-commits/cli.mjs @@ -1,18 +1,19 @@ #!/usr/bin/env node -'use strict' -const meow = require('meow') -const gitRawCommits = require('./') +import meow from 'meow' +import gitRawCommits from './index.js' const cli = meow(` Usage git-raw-commits [] Example - git-raw-commits --from HEAD~2 --to HEAD^` -) + git-raw-commits --from HEAD~2 --to HEAD^ +`, { + importMeta: import.meta +}) gitRawCommits(cli.flags) - .on('error', function (err) { + .on('error', (err) => { process.stderr.write(err) process.exit(1) }) diff --git a/packages/git-raw-commits/package.json b/packages/git-raw-commits/package.json index 00029cae3..91a50b33b 100644 --- a/packages/git-raw-commits/package.json +++ b/packages/git-raw-commits/package.json @@ -21,7 +21,7 @@ }, "files": [ "index.js", - "cli.js" + "cli.mjs" ], "keywords": [ "git-raw-commits", @@ -34,13 +34,13 @@ ], "dependencies": { "dargs": "^7.0.0", - "meow": "^8.1.2", + "meow": "^12.0.1", "split2": "^4.0.0" }, "scripts": { "test-windows": "mocha --timeout 30000" }, "bin": { - "git-raw-commits": "cli.js" + "git-raw-commits": "cli.mjs" } } diff --git a/packages/git-semver-tags/cli.js b/packages/git-semver-tags/cli.mjs similarity index 85% rename from packages/git-semver-tags/cli.js rename to packages/git-semver-tags/cli.mjs index c11e92fff..20324d709 100755 --- a/packages/git-semver-tags/cli.js +++ b/packages/git-semver-tags/cli.mjs @@ -1,7 +1,6 @@ #!/usr/bin/env node -'use strict' -const meow = require('meow') -const gitSemverTags = require('./') +import meow from 'meow' +import gitSemverTags from './index.js' const args = meow(` Usage @@ -10,8 +9,10 @@ const args = meow(` --cwd path to git repository to be searched --lerna parse lerna style git tags --package when listing lerna style tags, filter by a package - --tag-prefix prefix to remove from the tags during their processing`, + --tag-prefix prefix to remove from the tags during their processing +`, { + importMeta: import.meta, booleanDefault: undefined, flags: { cwd: { @@ -33,7 +34,7 @@ gitSemverTags({ lernaTags: args.flags.lerna, package: args.flags.package, tagPrefix: args.flags.tagPrefix -}, function (err, tags) { +}, (err, tags) => { if (err) { console.error(err.toString()) process.exit(1) diff --git a/packages/git-semver-tags/package.json b/packages/git-semver-tags/package.json index 11f054a08..c6fe256ad 100644 --- a/packages/git-semver-tags/package.json +++ b/packages/git-semver-tags/package.json @@ -21,7 +21,7 @@ }, "files": [ "index.js", - "cli.js" + "cli.mjs" ], "keywords": [ "git-semver-tags", @@ -32,13 +32,13 @@ "git" ], "dependencies": { - "meow": "^8.1.2", + "meow": "^12.0.1", "semver": "^7.5.2" }, "scripts": { "test-windows": "mocha --timeout 30000" }, "bin": { - "git-semver-tags": "cli.js" + "git-semver-tags": "cli.mjs" } } diff --git a/packages/standard-changelog/cli.js b/packages/standard-changelog/cli.mjs similarity index 69% rename from packages/standard-changelog/cli.js rename to packages/standard-changelog/cli.mjs index 4b997291b..e8dd5b8b7 100755 --- a/packages/standard-changelog/cli.js +++ b/packages/standard-changelog/cli.mjs @@ -1,14 +1,24 @@ #!/usr/bin/env node -'use strict' -const addStream = require('add-stream') -const chalk = require('chalk') -const standardChangelog = require('./') -const fs = require('fs') -const meow = require('meow') -const tempfile = require('tempfile') -const resolve = require('path').resolve -const Readable = require('stream').Readable -const rimraf = require('rimraf') +import { + createReadStream, + createWriteStream +} from 'fs' +import { + readFile, + rm +} from 'fs/promises' +import { resolve } from 'path' +import { pathToFileURL } from 'url' +import { Readable } from 'stream' +import addStream from 'add-stream' +import chalk from 'chalk' +import tempfile from 'tempfile' +import meow from 'meow' +import standardChangelog from './index.js' + +function relativeResolve (filePath) { + return pathToFileURL(resolve(process.cwd(), filePath)) +} const cli = meow(` Usage @@ -28,55 +38,56 @@ const cli = meow(` -l, --lerna-package Generate a changelog for a specific lerna package (:pkg-name@1.0.0) --commit-path Generate a changelog scoped to a specific directory `, { + importMeta: import.meta, booleanDefault: undefined, flags: { infile: { - alias: 'i', + shortFlag: 'i', default: 'CHANGELOG.md', type: 'string' }, help: { - alias: 'h' + shortFlag: 'h' }, outfile: { - alias: 'o', + shortFlag: 'o', type: 'string' }, - 'same-file': { - alias: 's', + sameFile: { + shortFlag: 's', default: true, type: 'boolean' }, preset: { - alias: 'p', + shortFlag: 'p', type: 'string' }, pkg: { - alias: 'k', + shortFlag: 'k', type: 'string' }, append: { - alias: 'a', + shortFlag: 'a', type: 'boolean' }, - 'release-count': { - alias: 'r', + releaseCount: { + shortFlag: 'r', type: 'number' }, verbose: { - alias: 'v', + shortFlag: 'v', type: 'boolean' }, context: { - alias: 'c', + shortFlag: 'c', type: 'string' }, - 'first-release': { - alias: 'f', + firstRelease: { + shortFlag: 'f', type: 'boolean' }, - 'lerna-package': { - alias: 'l', + lernaPackage: { + shortFlag: 'l', type: 'string' } } @@ -116,14 +127,14 @@ function outputError (err) { try { if (flags.context) { - templateContext = require(resolve(process.cwd(), flags.context)) + templateContext = JSON.parse(await readFile(relativeResolve(flags.context), 'utf8')) } } catch (err) { outputError(err) } const changelogStream = standardChangelog(options, templateContext, flags.commitPath ? { path: flags.commitPath } : {}) - .on('error', function (err) { + .on('error', (err) => { outputError(err) }) @@ -131,8 +142,8 @@ standardChangelog.createIfMissing(infile) let readStream = null if (releaseCount !== 0) { - readStream = fs.createReadStream(infile) - .on('error', function (err) { + readStream = createReadStream(infile) + .on('error', (err) => { outputError(err) }) } else { @@ -142,10 +153,10 @@ if (releaseCount !== 0) { if (options.append) { changelogStream - .pipe(fs.createWriteStream(outfile, { + .pipe(createWriteStream(outfile, { flags: 'a' })) - .on('finish', function () { + .on('finish', () => { standardChangelog.checkpoint('appended changes to %s', [outfile]) }) } else { @@ -153,13 +164,13 @@ if (options.append) { changelogStream .pipe(addStream(readStream)) - .pipe(fs.createWriteStream(tmp)) - .on('finish', function () { - fs.createReadStream(tmp) - .pipe(fs.createWriteStream(outfile)) - .on('finish', function () { + .pipe(createWriteStream(tmp)) + .on('finish', () => { + createReadStream(tmp) + .pipe(createWriteStream(outfile)) + .on('finish', () => { standardChangelog.checkpoint('output changes to %s', [outfile]) - rimraf.sync(tmp) + rm(tmp, { recursive: true }) }) }) } diff --git a/packages/standard-changelog/package.json b/packages/standard-changelog/package.json index 5febc178f..269113077 100644 --- a/packages/standard-changelog/package.json +++ b/packages/standard-changelog/package.json @@ -23,7 +23,7 @@ }, "files": [ "index.js", - "cli.js" + "cli.mjs" ], "dependencies": { "add-stream": "^1.0.0", @@ -32,13 +32,12 @@ "conventional-changelog-core": "^5.0.0", "figures": "^3.2.0", "fs-access": "^1.0.1", - "meow": "^8.1.2", - "rimraf": "^3.0.2", + "meow": "^12.0.1", "sprintf-js": "^1.1.2", "tempfile": "^3.0.0" }, "scripts": { "test-windows": "echo 'make work on windows'" }, - "bin": "cli.js" + "bin": "cli.mjs" } diff --git a/packages/standard-changelog/test/cli.spec.js b/packages/standard-changelog/test/cli.spec.js index edd67379e..8503c1153 100644 --- a/packages/standard-changelog/test/cli.spec.js +++ b/packages/standard-changelog/test/cli.spec.js @@ -1,9 +1,8 @@ -import { spawn } from 'child_process' import path from 'path' import { describe, beforeAll, beforeEach, afterAll, it, expect } from 'vitest' import { TestTools } from '../../../tools/test-tools' -const CLI_PATH = path.join(__dirname, '../cli.js') +const CLI_PATH = path.join(__dirname, '../cli.mjs') const FIXTURE_CHANGELOG_PATH = path.join(__dirname, 'fixtures/_CHANGELOG.md') let testTools @@ -29,306 +28,162 @@ describe('standard-changelog', () => { }) describe('without any argument', () => { - it('appends to changelog if it exists', () => { + it('appends to changelog if it exists', async () => { testTools.writeFileSync('CHANGELOG.md', '\nold content', 'utf-8') - return new Promise((resolve) => { - const cp = spawn(process.execPath, [CLI_PATH], { - cwd: testTools.cwd, - stdio: [null, null, null] - }) - - cp.on('close', (code) => { - expect(code).toBe(0) - const content = testTools.readFileSync('CHANGELOG.md', 'utf-8') - expect(content).toMatch(/First commit/) - expect(content).toMatch(/old content/) - resolve() - }) - }) - }) + const { exitCode } = await testTools.fork(CLI_PATH) - it('generates changelog if it does not exist', () => { - return new Promise((resolve) => { - const cp = spawn(process.execPath, [CLI_PATH], { - cwd: testTools.cwd, - stdio: [null, null, null] - }) - - cp.on('close', (code) => { - expect(code).toBe(0) - const content = testTools.readFileSync('CHANGELOG.md', 'utf-8') - expect(content).toMatch(/First commit/) - resolve() - }) - }) + expect(exitCode).toBe(0) + const content = testTools.readFileSync('CHANGELOG.md', 'utf-8') + expect(content).toMatch(/First commit/) + expect(content).toMatch(/old content/) }) - }) - it('should overwrite if `-s` presents when appending', () => { - return new Promise((resolve) => { - const cp = spawn(process.execPath, [CLI_PATH, '-i', FIXTURE_CHANGELOG_PATH, '-s', '--append'], { - cwd: testTools.cwd, - stdio: [null, null, null] - }) - - cp.on('close', (code) => { - expect(code).toBe(0) - const modified = testTools.readFileSync(FIXTURE_CHANGELOG_PATH, 'utf8') - expect(modified).toMatch(/Some previous changelog.(\s|.)*First commit/) - - originalChangelog() - resolve() - }) - }) - }) + it('generates changelog if it does not exist', async () => { + const { exitCode } = await testTools.fork(CLI_PATH) - it('should overwrite if `-s` presents when not appending', () => { - return new Promise((resolve) => { - const cp = spawn(process.execPath, [CLI_PATH, '-i', FIXTURE_CHANGELOG_PATH, '-s'], { - cwd: testTools.cwd, - stdio: [null, null, null] - }) - - cp.on('close', (code) => { - expect(code).toBe(0) - const modified = testTools.readFileSync(FIXTURE_CHANGELOG_PATH, 'utf8') - expect(modified).toMatch(/First commit(\s|.)*Some previous changelog./) - - originalChangelog() - resolve() - }) + expect(exitCode).toBe(0) + const content = testTools.readFileSync('CHANGELOG.md', 'utf-8') + expect(content).toMatch(/First commit/) }) }) - it('should overwrite if `infile` and `outfile` are the same', () => { - return new Promise((resolve) => { - const cp = spawn(process.execPath, [CLI_PATH, '-i', FIXTURE_CHANGELOG_PATH, '-o', FIXTURE_CHANGELOG_PATH], { - cwd: testTools.cwd, - stdio: [null, null, null] - }) - - cp.on('close', (code) => { - expect(code).toBe(0) - const modified = testTools.readFileSync(FIXTURE_CHANGELOG_PATH, 'utf8') - expect(modified).toContain('First commit') - expect(modified).toContain('Some previous changelog.\n') - - originalChangelog() - resolve() - }) - }) + it('should overwrite if `-s` presents when appending', async () => { + const { exitCode } = await testTools.fork(CLI_PATH, ['-i', FIXTURE_CHANGELOG_PATH, '-s', '--append']) + + expect(exitCode).toBe(0) + const modified = testTools.readFileSync(FIXTURE_CHANGELOG_PATH, 'utf8') + expect(modified).toMatch(/Some previous changelog.(\s|.)*First commit/) + + originalChangelog() }) - it('should work if `infile` is missing but `outfile` presets', () => { - return new Promise((resolve) => { - const cp = spawn(process.execPath, [CLI_PATH, '-o', path.join(testTools.cwd, '_CHANGELOG.md')], { - cwd: testTools.cwd, - stdio: [null, null, null] - }) + it('should overwrite if `-s` presents when not appending', async () => { + const { exitCode } = await testTools.fork(CLI_PATH, ['-i', FIXTURE_CHANGELOG_PATH, '-s']) - cp.on('close', (code) => { - expect(code).toBe(0) + expect(exitCode).toBe(0) + const modified = testTools.readFileSync(FIXTURE_CHANGELOG_PATH, 'utf8') + expect(modified).toMatch(/First commit(\s|.)*Some previous changelog./) - const modified = testTools.readFileSync(path.join(testTools.cwd, '_CHANGELOG.md'), 'utf8') - expect(modified).toContain('First commit') - resolve() - }) - }) + originalChangelog() }) - it('should work if both `infile` and `outfile` presets when not appending', () => { - return new Promise((resolve) => { - const cp = spawn(process.execPath, [CLI_PATH, '-i', FIXTURE_CHANGELOG_PATH, '-o', path.join(testTools.cwd, '_CHANGELOG.md')], { - cwd: testTools.cwd, - stdio: [null, null, null] - }) + it('should overwrite if `infile` and `outfile` are the same', async () => { + const { exitCode } = await testTools.fork(CLI_PATH, ['-i', FIXTURE_CHANGELOG_PATH, '-o', FIXTURE_CHANGELOG_PATH]) - cp.on('close', (code) => { - expect(code).toBe(0) - const modified = testTools.readFileSync(path.join(testTools.cwd, '_CHANGELOG.md'), 'utf8') - expect(modified).toMatch(/First commit(\s|.)*Some previous changelog./) + expect(exitCode).toBe(0) + const modified = testTools.readFileSync(FIXTURE_CHANGELOG_PATH, 'utf8') + expect(modified).toContain('First commit') + expect(modified).toContain('Some previous changelog.\n') - resolve() - }) - }) + originalChangelog() }) - it('should work if both `infile` and `outfile` presets when appending', () => { - return new Promise((resolve) => { - const cp = spawn(process.execPath, [CLI_PATH, '-i', FIXTURE_CHANGELOG_PATH, '-o', path.join(testTools.cwd, '_CHANGELOG.md'), '--append'], { - cwd: testTools.cwd, - stdio: [null, null, null] - }) - - cp.on('close', (code) => { - expect(code).toBe(0) - const modified = testTools.readFileSync(path.join(testTools.cwd, '_CHANGELOG.md'), 'utf8') - expect(modified).toMatch(/Some previous changelog.(\s|.)*First commit/) - resolve() - }) - }) + it('should work if `infile` is missing but `outfile` presets', async () => { + const { exitCode } = await testTools.fork(CLI_PATH, ['-o', path.join(testTools.cwd, '_CHANGELOG.md')]) + + expect(exitCode).toBe(0) + const modified = testTools.readFileSync(path.join(testTools.cwd, '_CHANGELOG.md'), 'utf8') + expect(modified).toContain('First commit') }) - it('should work if `infile` presets but `outfile` is missing when not appending', () => { - return new Promise((resolve) => { - const cp = spawn(process.execPath, [CLI_PATH, '-i', FIXTURE_CHANGELOG_PATH], { - cwd: testTools.cwd, - stdio: [null, null, null] - }) + it('should work if both `infile` and `outfile` presets when not appending', async () => { + const { exitCode } = await testTools.fork(CLI_PATH, ['-i', FIXTURE_CHANGELOG_PATH, '-o', path.join(testTools.cwd, '_CHANGELOG.md')]) + + expect(exitCode).toBe(0) + const modified = testTools.readFileSync(path.join(testTools.cwd, '_CHANGELOG.md'), 'utf8') + expect(modified).toMatch(/First commit(\s|.)*Some previous changelog./) + }) - cp.on('close', (code) => { - expect(code).toBe(0) - const modified = testTools.readFileSync(path.join(testTools.cwd, '_CHANGELOG.md'), 'utf8') - expect(modified).toMatch(/Some previous changelog.(\s|.)*First commit/) + it('should work if both `infile` and `outfile` presets when appending', async () => { + const { exitCode } = await testTools.fork(CLI_PATH, ['-i', FIXTURE_CHANGELOG_PATH, '-o', path.join(testTools.cwd, '_CHANGELOG.md'), '--append']) - resolve() - }) - }) + expect(exitCode).toBe(0) + const modified = testTools.readFileSync(path.join(testTools.cwd, '_CHANGELOG.md'), 'utf8') + expect(modified).toMatch(/Some previous changelog.(\s|.)*First commit/) }) - it('should work if `infile` presets but `outfile` is missing', () => { - return new Promise((resolve) => { - const cp = spawn(process.execPath, [CLI_PATH, '-i', 'no-such-file.md'], { - cwd: testTools.cwd, - stdio: [null, null, null] - }) - - cp.on('close', (code) => { - expect(code).toBe(0) - const modified = testTools.readFileSync('no-such-file.md', 'utf8') - expect(modified).toContain('First commit') - expect(modified).not.toContain('previous') - resolve() - }) - }) + it('should work if `infile` presets but `outfile` is missing when not appending', async () => { + const { exitCode } = await testTools.fork(CLI_PATH, ['-i', FIXTURE_CHANGELOG_PATH]) + + expect(exitCode).toBe(0) + const modified = testTools.readFileSync(path.join(testTools.cwd, '_CHANGELOG.md'), 'utf8') + expect(modified).toMatch(/Some previous changelog.(\s|.)*First commit/) }) - it('should create `infile` if `infile` is ENOENT and overwrite infile', () => { - return new Promise((resolve) => { - const cp = spawn(process.execPath, [CLI_PATH, '-i', path.join(testTools.cwd, 'no-such-file.md'), '-s'], { - cwd: testTools.cwd, - stdio: [null, null, null] - }) - - cp.on('close', (code) => { - expect(code).toBe(0) - const modified = testTools.readFileSync(path.join(testTools.cwd, 'no-such-file.md'), 'utf8') - expect(modified).toContain('First commit') - expect(modified).not.toContain('previous') - - originalChangelog() - resolve() - }) - }) + it('should work if `infile` presets but `outfile` is missing', async () => { + const { exitCode } = await testTools.fork(CLI_PATH, ['-i', 'no-such-file.md']) + + expect(exitCode).toBe(0) + const modified = testTools.readFileSync('no-such-file.md', 'utf8') + expect(modified).toContain('First commit') + expect(modified).not.toContain('previous') }) - it('should default to CHANGELOG.md if `-s` presents but `-i` is missing', () => { - return new Promise((resolve) => { - const cp = spawn(process.execPath, [CLI_PATH, '-s'], { - cwd: testTools.cwd, - stdio: [null, null, null] - }) - - cp.on('close', (code) => { - expect(code).toBe(0) - const modified = testTools.readFileSync('CHANGELOG.md', 'utf8') - expect(modified).toContain('First commit') - expect(modified).not.toContain('previous') - resolve() - }) - }) + it('should create `infile` if `infile` is ENOENT and overwrite infile', async () => { + const { exitCode } = await testTools.fork(CLI_PATH, ['-i', path.join(testTools.cwd, 'no-such-file.md'), '-s']) + + expect(exitCode).toBe(0) + const modified = testTools.readFileSync(path.join(testTools.cwd, 'no-such-file.md'), 'utf8') + expect(modified).toContain('First commit') + expect(modified).not.toContain('previous') + + originalChangelog() }) - it('-k should work', () => { - return new Promise((resolve) => { - const cp = spawn(process.execPath, [CLI_PATH, '-k', path.join(__dirname, 'fixtures/_package.json')], { - cwd: testTools.cwd, - stdio: [null, null, null] - }) - - cp.on('close', (code) => { - expect(code).toBe(0) - const modified = testTools.readFileSync('CHANGELOG.md', 'utf8') - expect(modified).toContain('0.0.17') - resolve() - }) - }) + it('should default to CHANGELOG.md if `-s` presents but `-i` is missing', async () => { + const { exitCode } = await testTools.fork(CLI_PATH, ['-s']) + + expect(exitCode).toBe(0) + const modified = testTools.readFileSync('CHANGELOG.md', 'utf8') + expect(modified).toContain('First commit') + expect(modified).not.toContain('previous') }) - it('--context should work with relative path', () => { - const context = path.relative(testTools.cwd, path.join(__dirname, 'fixtures/context.json')) - const config = path.relative(testTools.cwd, path.join(__dirname, 'fixtures/config.js')) + it('-k should work', async () => { + const { exitCode } = await testTools.fork(CLI_PATH, ['-k', path.join(__dirname, 'fixtures/_package.json')]) - return new Promise((resolve) => { - const cp = spawn(process.execPath, [CLI_PATH, '--context', context, '--config', config], { - cwd: testTools.cwd, - stdio: 'inherit' - }) - - cp.on('close', (code) => { - expect(code).toBe(0) - const modified = testTools.readFileSync('CHANGELOG.md', 'utf8') - expect(modified).toContain('my-repo') - resolve() - }) - }) + expect(exitCode).toBe(0) + const modified = testTools.readFileSync('CHANGELOG.md', 'utf8') + expect(modified).toContain('0.0.17') }) - it('--context should work with absolute path', () => { - return new Promise((resolve) => { - const cp = spawn(process.execPath, [CLI_PATH, '--context', path.join(__dirname, 'fixtures/context.json'), '--config', path.join(__dirname, 'fixtures/config.js')], { - cwd: testTools.cwd, - stdio: [null, null, null] - }) - - cp.on('close', (code) => { - expect(code).toBe(0) - const modified = testTools.readFileSync('CHANGELOG.md', 'utf8') - expect(modified).toContain('my-repo') - resolve() - }) + it('--context should work with relative path', async () => { + const context = path.relative(testTools.cwd, path.join(__dirname, 'fixtures/context.json')) + const config = path.relative(testTools.cwd, path.join(__dirname, 'fixtures/config.js')) + const { exitCode } = await testTools.fork(CLI_PATH, ['--context', context, '--config', config], { + stdio: 'inherit' }) + + expect(exitCode).toBe(0) + const modified = testTools.readFileSync('CHANGELOG.md', 'utf8') + expect(modified).toContain('my-repo') }) - it('generates full historical changelog on --first-release', () => { - testTools.exec('git tag -a v0.0.17 -m "old release"') + it('--context should work with absolute path', async () => { + const { exitCode } = await testTools.fork(CLI_PATH, ['--context', path.join(__dirname, 'fixtures/context.json'), '--config', path.join(__dirname, 'fixtures/config.js')]) - return new Promise((resolve) => { - const cp = spawn(process.execPath, [CLI_PATH, '-k', path.join(__dirname, 'fixtures/_package.json'), '--first-release'], { - cwd: testTools.cwd, - stdio: [null, null, null] - }) - - cp.on('close', (code) => { - expect(code).toBe(0) - const modified = testTools.readFileSync('CHANGELOG.md', 'utf8') - expect(modified).toContain('First commit') - testTools.exec('git tag -d v0.0.17') - resolve() - }) - }) + expect(exitCode).toBe(0) + const modified = testTools.readFileSync('CHANGELOG.md', 'utf8') + expect(modified).toContain('my-repo') }) - it('outputs an error if context file is not found', () => { - let output = '' + it('generates full historical changelog on --first-release', async () => { + testTools.exec('git tag -a v0.0.17 -m "old release"') + + const { exitCode } = await testTools.fork(CLI_PATH, ['-k', path.join(__dirname, 'fixtures/_package.json'), '--first-release']) - return new Promise((resolve) => { - const cp = spawn(process.execPath, [CLI_PATH, '--context', 'missing-file.txt'], { - cwd: testTools.cwd, - stdio: [null, null, null] - }) + expect(exitCode).toBe(0) + const modified = testTools.readFileSync('CHANGELOG.md', 'utf8') + expect(modified).toContain('First commit') + testTools.exec('git tag -d v0.0.17') + }) - cp.stderr.on('data', (data) => { - output += data.toString() - }) + it('outputs an error if context file is not found', async () => { + const { stderr, exitCode } = await testTools.fork(CLI_PATH, ['--context', 'missing-file.txt']) - cp.on('close', (code) => { - expect(code).toBe(1) - expect(output.toString()).toMatch(/Cannot find module/) - resolve() - }) - }) + expect(exitCode).toBe(1) + expect(stderr).toMatch(/no such file/) }) }) }) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ebcb5e014..2ed280a2a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -115,8 +115,8 @@ importers: specifier: ^4.0.0 version: link:../conventional-changelog meow: - specifier: ^8.1.2 - version: 8.1.2 + specifier: ^12.0.1 + version: 12.0.1 tempfile: specifier: ^3.0.0 version: 3.0.0 @@ -159,11 +159,11 @@ importers: specifier: ^5.0.0 version: 5.0.0 read-pkg: - specifier: ^3.0.0 - version: 3.0.0 + specifier: ^8.0.0 + version: 8.0.0 read-pkg-up: - specifier: ^3.0.0 - version: 3.0.0 + specifier: ^10.0.0 + version: 10.0.0 devDependencies: conventional-changelog-angular: specifier: ^6.0.0 @@ -210,8 +210,8 @@ importers: specifier: ^5.0.1 version: 5.0.1 meow: - specifier: ^8.1.2 - version: 8.1.2 + specifier: ^12.0.1 + version: 12.0.1 semver: specifier: ^7.5.2 version: 7.5.4 @@ -237,8 +237,8 @@ importers: specifier: ^2.0.0 version: 2.0.0 meow: - specifier: ^8.1.2 - version: 8.1.2 + specifier: ^12.0.1 + version: 12.0.1 split2: specifier: ^4.0.0 version: 4.2.0 @@ -268,8 +268,8 @@ importers: specifier: ^5.0.0 version: link:../git-semver-tags meow: - specifier: ^8.1.2 - version: 8.1.2 + specifier: ^12.0.1 + version: 12.0.1 devDependencies: conventional-changelog-conventionalcommits: specifier: ^6.1.0 @@ -281,8 +281,8 @@ importers: specifier: ^7.0.0 version: 7.0.0 meow: - specifier: ^8.1.2 - version: 8.1.2 + specifier: ^12.0.1 + version: 12.0.1 split2: specifier: ^4.0.0 version: 4.2.0 @@ -290,8 +290,8 @@ importers: packages/git-semver-tags: dependencies: meow: - specifier: ^8.1.2 - version: 8.1.2 + specifier: ^12.0.1 + version: 12.0.1 semver: specifier: ^7.5.2 version: 7.5.4 @@ -335,11 +335,8 @@ importers: specifier: ^1.0.1 version: 1.0.1 meow: - specifier: ^8.1.2 - version: 8.1.2 - rimraf: - specifier: ^3.0.2 - version: 3.0.2 + specifier: ^12.0.1 + version: 12.0.1 sprintf-js: specifier: ^1.1.2 version: 1.1.2 @@ -973,6 +970,7 @@ packages: /balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + dev: true /better-than-before@1.0.0: resolution: {integrity: sha512-ML+aQmprMvdjMBGW0RvWKgW7hEeLywYIJiSN4Gpu7GQDY+CCGkFDOCiwBlN/0PsmXQIlxsSjRW6pNXJwhlkwcg==} @@ -986,6 +984,7 @@ packages: dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 + dev: true /buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} @@ -1014,18 +1013,19 @@ packages: engines: {node: '>=6'} dev: true - /camelcase-keys@6.2.2: - resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} - engines: {node: '>=8'} + /camelcase-keys@8.0.2: + resolution: {integrity: sha512-qMKdlOfsjlezMqxkUGGMaWWs17i2HoL15tM+wtx8ld4nLrUwU58TFdvyGOz/piNP842KeO8yXvggVQSdQ828NA==} + engines: {node: '>=14.16'} dependencies: - camelcase: 5.3.1 + camelcase: 7.0.1 map-obj: 4.3.0 - quick-lru: 4.0.1 + quick-lru: 6.1.1 + type-fest: 2.19.0 dev: false - /camelcase@5.3.1: - resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} - engines: {node: '>=6'} + /camelcase@7.0.1: + resolution: {integrity: sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==} + engines: {node: '>=14.16'} dev: false /chai@4.3.7: @@ -1112,6 +1112,7 @@ packages: /concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + dev: true /concat-stream@2.0.0: resolution: {integrity: sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==} @@ -1172,17 +1173,19 @@ packages: ms: 2.1.2 dev: true - /decamelize-keys@1.1.1: - resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} - engines: {node: '>=0.10.0'} + /decamelize-keys@2.0.1: + resolution: {integrity: sha512-nrNeSCtU2gV3Apcmn/EZ+aR20zKDuNDStV67jPiupokD3sOAFeMzslLMCFdKv1sPqzwoe5ZUhsSW9IAVgKSL/Q==} + engines: {node: '>=14.16'} dependencies: - decamelize: 1.2.0 - map-obj: 1.0.1 + decamelize: 6.0.0 + map-obj: 4.3.0 + quick-lru: 6.1.1 + type-fest: 3.13.1 dev: false - /decamelize@1.2.0: - resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} - engines: {node: '>=0.10.0'} + /decamelize@6.0.0: + resolution: {integrity: sha512-Fv96DCsdOgB6mdGl67MT5JaTNKRzrzill5OH5s8bjYJXVlcXyPYGyPsUkWyGV5p1TXI5esYIYMMeDJL0hEIwaA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: false /dedent@0.7.0: @@ -1663,21 +1666,6 @@ packages: flat-cache: 3.0.4 dev: true - /find-up@2.1.0: - resolution: {integrity: sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==} - engines: {node: '>=4'} - dependencies: - locate-path: 2.0.0 - dev: false - - /find-up@4.1.0: - resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} - engines: {node: '>=8'} - dependencies: - locate-path: 5.0.0 - path-exists: 4.0.0 - dev: false - /find-up@5.0.0: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} @@ -1686,6 +1674,14 @@ packages: path-exists: 4.0.0 dev: true + /find-up@6.3.0: + resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + locate-path: 7.2.0 + path-exists: 5.0.0 + dev: false + /flat-cache@3.0.4: resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} engines: {node: ^10.12.0 || >=12.0.0} @@ -1719,6 +1715,7 @@ packages: /fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + dev: true /fsevents@2.3.2: resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} @@ -1812,6 +1809,7 @@ packages: minimatch: 3.1.2 once: 1.4.0 path-is-absolute: 1.0.1 + dev: true /globals@13.20.0: resolution: {integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==} @@ -1833,10 +1831,6 @@ packages: get-intrinsic: 1.2.1 dev: true - /graceful-fs@4.2.11: - resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - dev: false - /graphemer@1.4.0: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} dev: true @@ -1901,10 +1895,6 @@ packages: dependencies: function-bind: 1.1.1 - /hosted-git-info@2.8.9: - resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} - dev: false - /hosted-git-info@4.1.0: resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} engines: {node: '>=10'} @@ -1941,9 +1931,9 @@ packages: engines: {node: '>=0.8.19'} dev: true - /indent-string@4.0.0: - resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} - engines: {node: '>=8'} + /indent-string@5.0.0: + resolution: {integrity: sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==} + engines: {node: '>=12'} dev: false /inflight@1.0.6: @@ -1951,6 +1941,7 @@ packages: dependencies: once: 1.4.0 wrappy: 1.0.2 + dev: true /inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} @@ -2163,14 +2154,15 @@ packages: argparse: 2.0.1 dev: true - /json-parse-better-errors@1.0.2: - resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} - dev: false - /json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} dev: false + /json-parse-even-better-errors@3.0.0: + resolution: {integrity: sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: false + /json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} dev: true @@ -2220,14 +2212,9 @@ packages: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} dev: false - /load-json-file@4.0.0: - resolution: {integrity: sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==} - engines: {node: '>=4'} - dependencies: - graceful-fs: 4.2.11 - parse-json: 4.0.0 - pify: 3.0.0 - strip-bom: 3.0.0 + /lines-and-columns@2.0.3: + resolution: {integrity: sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: false /local-pkg@0.4.3: @@ -2235,21 +2222,6 @@ packages: engines: {node: '>=14'} dev: true - /locate-path@2.0.0: - resolution: {integrity: sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==} - engines: {node: '>=4'} - dependencies: - p-locate: 2.0.0 - path-exists: 3.0.0 - dev: false - - /locate-path@5.0.0: - resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} - engines: {node: '>=8'} - dependencies: - p-locate: 4.1.0 - dev: false - /locate-path@6.0.0: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} @@ -2257,6 +2229,13 @@ packages: p-locate: 5.0.0 dev: true + /locate-path@7.2.0: + resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + p-locate: 6.0.0 + dev: false + /lodash.get@4.4.2: resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} dev: true @@ -2296,31 +2275,27 @@ packages: semver: 6.3.0 dev: true - /map-obj@1.0.1: - resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} - engines: {node: '>=0.10.0'} - dev: false - /map-obj@4.3.0: resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} engines: {node: '>=8'} dev: false - /meow@8.1.2: - resolution: {integrity: sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==} - engines: {node: '>=10'} + /meow@12.0.1: + resolution: {integrity: sha512-/QOqMALNoKQcJAOOdIXjNLtfcCdLXbMFyB1fOOPdm6RzfBTlsuodOCTBDjVbeUSmgDQb8UI2oONqYGtq1PKKKA==} + engines: {node: '>=16.10'} dependencies: '@types/minimist': 1.2.2 - camelcase-keys: 6.2.2 - decamelize-keys: 1.1.1 + camelcase-keys: 8.0.2 + decamelize: 6.0.0 + decamelize-keys: 2.0.1 hard-rejection: 2.1.0 minimist-options: 4.1.0 - normalize-package-data: 3.0.3 - read-pkg-up: 7.0.1 - redent: 3.0.0 - trim-newlines: 3.0.1 - type-fest: 0.18.1 - yargs-parser: 20.2.9 + normalize-package-data: 5.0.0 + read-pkg-up: 9.1.0 + redent: 4.0.0 + trim-newlines: 5.0.0 + type-fest: 3.13.1 + yargs-parser: 21.1.1 dev: false /min-indent@1.0.1: @@ -2332,6 +2307,7 @@ packages: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: brace-expansion: 1.1.11 + dev: true /minimist-options@4.1.0: resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} @@ -2386,15 +2362,6 @@ packages: path-to-regexp: 1.8.0 dev: true - /normalize-package-data@2.5.0: - resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} - dependencies: - hosted-git-info: 2.8.9 - resolve: 1.22.2 - semver: 5.7.1 - validate-npm-package-license: 3.0.4 - dev: false - /normalize-package-data@3.0.3: resolution: {integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==} engines: {node: '>=10'} @@ -2452,6 +2419,7 @@ packages: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: wrappy: 1.0.2 + dev: true /optionator@0.9.3: resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} @@ -2465,20 +2433,6 @@ packages: type-check: 0.4.0 dev: true - /p-limit@1.3.0: - resolution: {integrity: sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==} - engines: {node: '>=4'} - dependencies: - p-try: 1.0.0 - dev: false - - /p-limit@2.3.0: - resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} - engines: {node: '>=6'} - dependencies: - p-try: 2.2.0 - dev: false - /p-limit@3.1.0: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} @@ -2491,21 +2445,6 @@ packages: engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: yocto-queue: 1.0.0 - dev: true - - /p-locate@2.0.0: - resolution: {integrity: sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==} - engines: {node: '>=4'} - dependencies: - p-limit: 1.3.0 - dev: false - - /p-locate@4.1.0: - resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} - engines: {node: '>=8'} - dependencies: - p-limit: 2.3.0 - dev: false /p-locate@5.0.0: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} @@ -2514,14 +2453,11 @@ packages: p-limit: 3.1.0 dev: true - /p-try@1.0.0: - resolution: {integrity: sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==} - engines: {node: '>=4'} - dev: false - - /p-try@2.2.0: - resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} - engines: {node: '>=6'} + /p-locate@6.0.0: + resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + p-limit: 4.0.0 dev: false /parent-module@1.0.1: @@ -2531,14 +2467,6 @@ packages: callsites: 3.1.0 dev: true - /parse-json@4.0.0: - resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} - engines: {node: '>=4'} - dependencies: - error-ex: 1.3.2 - json-parse-better-errors: 1.0.2 - dev: false - /parse-json@5.2.0: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} @@ -2549,18 +2477,31 @@ packages: lines-and-columns: 1.2.4 dev: false - /path-exists@3.0.0: - resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} - engines: {node: '>=4'} + /parse-json@7.0.0: + resolution: {integrity: sha512-kP+TQYAzAiVnzOlWOe0diD6L35s9bJh0SCn95PIbZFKrOYuIRQsQkeWEYxzVDuHTt9V9YqvYCJ2Qo4z9wdfZPw==} + engines: {node: '>=16'} + dependencies: + '@babel/code-frame': 7.21.4 + error-ex: 1.3.2 + json-parse-even-better-errors: 3.0.0 + lines-and-columns: 2.0.3 + type-fest: 3.13.1 dev: false /path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} + dev: true + + /path-exists@5.0.0: + resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: false /path-is-absolute@1.0.1: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} + dev: true /path-key@3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} @@ -2569,6 +2510,7 @@ packages: /path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + dev: true /path-to-regexp@1.8.0: resolution: {integrity: sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==} @@ -2576,13 +2518,6 @@ packages: isarray: 0.0.1 dev: true - /path-type@3.0.0: - resolution: {integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==} - engines: {node: '>=4'} - dependencies: - pify: 3.0.0 - dev: false - /pathe@1.1.1: resolution: {integrity: sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==} dev: true @@ -2600,11 +2535,6 @@ packages: engines: {node: '>=0.10.0'} dev: false - /pify@3.0.0: - resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} - engines: {node: '>=4'} - dev: false - /pkg-types@1.0.3: resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} dependencies: @@ -2660,49 +2590,51 @@ packages: resolution: {integrity: sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==} dev: true - /quick-lru@4.0.1: - resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} - engines: {node: '>=8'} + /quick-lru@6.1.1: + resolution: {integrity: sha512-S27GBT+F0NTRiehtbrgaSE1idUAJ5bX8dPAQTdylEyNlrdcH5X4Lz7Edz3DYzecbsCluD5zO8ZNEe04z3D3u6Q==} + engines: {node: '>=12'} dev: false /react-is@18.2.0: resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} dev: true - /read-pkg-up@3.0.0: - resolution: {integrity: sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw==} - engines: {node: '>=4'} + /read-pkg-up@10.0.0: + resolution: {integrity: sha512-jgmKiS//w2Zs+YbX039CorlkOp8FIVbSAN8r8GJHDsGlmNPXo+VeHkqAwCiQVTTx5/LwLZTcEw59z3DvcLbr0g==} + engines: {node: '>=16'} dependencies: - find-up: 2.1.0 - read-pkg: 3.0.0 + find-up: 6.3.0 + read-pkg: 8.0.0 + type-fest: 3.13.1 dev: false - /read-pkg-up@7.0.1: - resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} - engines: {node: '>=8'} + /read-pkg-up@9.1.0: + resolution: {integrity: sha512-vaMRR1AC1nrd5CQM0PhlRsO5oc2AAigqr7cCrZ/MW/Rsaflz4RlgzkpL4qoU/z1F6wrbd85iFv1OQj/y5RdGvg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: - find-up: 4.1.0 - read-pkg: 5.2.0 - type-fest: 0.8.1 + find-up: 6.3.0 + read-pkg: 7.1.0 + type-fest: 2.19.0 dev: false - /read-pkg@3.0.0: - resolution: {integrity: sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==} - engines: {node: '>=4'} + /read-pkg@7.1.0: + resolution: {integrity: sha512-5iOehe+WF75IccPc30bWTbpdDQLOCc3Uu8bi3Dte3Eueij81yx1Mrufk8qBx/YAbR4uL1FdUr+7BKXDwEtisXg==} + engines: {node: '>=12.20'} dependencies: - load-json-file: 4.0.0 - normalize-package-data: 2.5.0 - path-type: 3.0.0 + '@types/normalize-package-data': 2.4.1 + normalize-package-data: 3.0.3 + parse-json: 5.2.0 + type-fest: 2.19.0 dev: false - /read-pkg@5.2.0: - resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} - engines: {node: '>=8'} + /read-pkg@8.0.0: + resolution: {integrity: sha512-Ajb9oSjxXBw0YyOiwtQ2dKbAA/vMnUPnY63XcCk+mXo0BwIdQEMgZLZiMWGttQHcUhUgbK0mH85ethMPKXxziw==} + engines: {node: '>=16'} dependencies: '@types/normalize-package-data': 2.4.1 - normalize-package-data: 2.5.0 - parse-json: 5.2.0 - type-fest: 0.6.0 + normalize-package-data: 5.0.0 + parse-json: 7.0.0 + type-fest: 3.13.1 dev: false /readable-stream@2.3.8: @@ -2726,12 +2658,12 @@ packages: util-deprecate: 1.0.2 dev: false - /redent@3.0.0: - resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} - engines: {node: '>=8'} + /redent@4.0.0: + resolution: {integrity: sha512-tYkDkVVtYkSVhuQ4zBgfvciymHaeuel+zFKXShfDnFP5SyVEP7qo70Rf1jTOTCx3vGNAbnEi/xFkcfQVMIBWag==} + engines: {node: '>=12'} dependencies: - indent-string: 4.0.0 - strip-indent: 3.0.0 + indent-string: 5.0.0 + strip-indent: 4.0.0 dev: false /regexp.prototype.flags@1.5.0: @@ -2774,6 +2706,7 @@ packages: is-core-module: 2.12.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 + dev: true /reusify@1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} @@ -2785,6 +2718,7 @@ packages: hasBin: true dependencies: glob: 7.2.3 + dev: true /rollup@3.26.3: resolution: {integrity: sha512-7Tin0C8l86TkpcMtXvQu6saWH93nhG3dGQ1/+l5V2TDMceTxO7kDiK6GzbfLWNNxqJXm591PcEZUozZm51ogwQ==} @@ -2815,11 +2749,6 @@ packages: is-regex: 1.1.4 dev: true - /semver@5.7.1: - resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} - hasBin: true - dev: false - /semver@6.3.0: resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} hasBin: true @@ -2983,10 +2912,11 @@ packages: /strip-bom@3.0.0: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} + dev: true - /strip-indent@3.0.0: - resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} - engines: {node: '>=8'} + /strip-indent@4.0.0: + resolution: {integrity: sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==} + engines: {node: '>=12'} dependencies: min-indent: 1.0.1 dev: false @@ -3018,6 +2948,7 @@ packages: /supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} + dev: true /teex@1.0.1: resolution: {integrity: sha512-eYE6iEI62Ni1H8oIa7KlDU6uQBtqr4Eajni3wX7rpfXD8ysFx8z0+dri+KWEPWpBsxXfxu58x/0jvTVT1ekOSg==} @@ -3093,9 +3024,9 @@ packages: rimraf: 3.0.2 dev: true - /trim-newlines@3.0.1: - resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} - engines: {node: '>=8'} + /trim-newlines@5.0.0: + resolution: {integrity: sha512-kstfs+hgwmdsOadN3KgA+C68wPJwnZq4DN6WMDCvZapDWEF34W2TyPKN2v2+BJnZgIz5QOfxFeldLyYvdgRAwg==} + engines: {node: '>=14.16'} dev: false /tsconfig-paths@3.14.2: @@ -3119,24 +3050,19 @@ packages: engines: {node: '>=4'} dev: true - /type-fest@0.18.1: - resolution: {integrity: sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==} - engines: {node: '>=10'} - dev: false - /type-fest@0.20.2: resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} engines: {node: '>=10'} dev: true - /type-fest@0.6.0: - resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} - engines: {node: '>=8'} + /type-fest@2.19.0: + resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} + engines: {node: '>=12.20'} dev: false - /type-fest@0.8.1: - resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} - engines: {node: '>=8'} + /type-fest@3.13.1: + resolution: {integrity: sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==} + engines: {node: '>=14.16'} dev: false /typed-array-length@1.0.4: @@ -3393,6 +3319,7 @@ packages: /wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + dev: true /xtend@4.0.2: resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} @@ -3407,11 +3334,6 @@ packages: /yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - /yargs-parser@20.2.9: - resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} - engines: {node: '>=10'} - dev: false - /yargs-parser@21.1.1: resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} engines: {node: '>=12'} @@ -3438,4 +3360,3 @@ packages: /yocto-queue@1.0.0: resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} engines: {node: '>=12.20'} - dev: true