diff --git a/.eslintrc.json b/.eslintrc.json index 4947d302a0..7bfc0ac191 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -43,7 +43,12 @@ { "files": ["**/*.ts"], "extends": ["@malept/eslint-config/src/typescript"], + "parserOptions": { + "project": ["./tsconfig.base.json"] + }, "rules": { + "no-throw-literal": "off", + "@typescript-eslint/no-throw-literal": "error", "@typescript-eslint/no-unused-vars": [ "error", { diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000000..6313b56c57 --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +* text=auto eol=lf diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS new file mode 100644 index 0000000000..7639191417 --- /dev/null +++ b/.github/CODEOWNERS @@ -0,0 +1 @@ +* @electron/wg-ecosystem diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2ab3bba250..52007eebcb 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -34,6 +34,8 @@ jobs: run: yarn install - name: Lint run: yarn lint + - name: Ensure packages in sync + run: yarn syncpack - name: Build run: yarn build - name: Run tests @@ -74,6 +76,6 @@ jobs: - name: Build run: yarn build - name: Test - run: yarn test + run: yarn test:slow env: DEBUG: electron-installer-snap:snapcraft diff --git a/.github/workflows/semantic.yml b/.github/workflows/semantic.yml new file mode 100644 index 0000000000..c00f797d3d --- /dev/null +++ b/.github/workflows/semantic.yml @@ -0,0 +1,26 @@ +name: 'Check Semantic Commit' + +on: + pull_request_target: + types: + - opened + - edited + - synchronize + +permissions: + contents: read + +jobs: + main: + permissions: + pull-requests: read # for amannn/action-semantic-pull-request to analyze PRs + statuses: write # for amannn/action-semantic-pull-request to mark status of analyzed PR + name: Validate PR Title + runs-on: ubuntu-latest + steps: + - name: semantic-pull-request + uses: amannn/action-semantic-pull-request@01d5fd8a8ebb9aafe902c40c53f0f4744f7381eb # tag: v5 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + validateSingleCommit: false diff --git a/.gitignore b/.gitignore index 0787b4801c..29705ec8e8 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,7 @@ dist docs doc node_modules +lerna-debug.log yarn-error.log packages/**/.npmignore packages/**/tsconfig.json diff --git a/.husky/pre-commit b/.husky/pre-commit index 33d564852d..d2ae35e84b 100755 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -1,4 +1,4 @@ #!/bin/sh . "$(dirname "$0")/_/husky.sh" -"$(npm bin)"/lint-staged +yarn lint-staged diff --git a/.husky/pre-push b/.husky/pre-push new file mode 100755 index 0000000000..d5af4f6c64 --- /dev/null +++ b/.husky/pre-push @@ -0,0 +1,9 @@ +#!/bin/sh +. "$(dirname "$0")/_/husky.sh" + +BRANCH=`git rev-parse --abbrev-ref HEAD` +PROTECTED_BRANCH="main" + +if [ "$BRANCH" = $PROTECTED_BRANCH ]; then + node .husky/pre-push.js < /dev/tty +fi diff --git a/.husky/pre-push.js b/.husky/pre-push.js new file mode 100644 index 0000000000..215d04ef3a --- /dev/null +++ b/.husky/pre-push.js @@ -0,0 +1,14 @@ +const inquirer = require('inquirer'); + +const question = [ + { + type: 'confirm', + name: 'continuePush', + message: '[pre-push hook] Warning: this is a protected branch. Continue?', + }, +]; + +inquirer.prompt(question).then((answer) => { + if (!answer.continuePush) process.exit(1); + process.exit(0); +}); diff --git a/.prettierignore b/.prettierignore index da77045cf0..fb809fcd3d 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,6 +1,7 @@ .nyc_output dist/ docs/ +packages/tsconfig.json packages/*/*/dist packages/*/*/doc packages/*/*/index.d.ts diff --git a/.swcrc b/.swcrc deleted file mode 100644 index 2ed19bb2cd..0000000000 --- a/.swcrc +++ /dev/null @@ -1,20 +0,0 @@ -{ - "sourceMaps": "inline", - "exclude": ["/tmpl/"], - "env": { - "targets": { - "node": "12" - } - }, - "module": { - "type": "commonjs" - }, - "jsc": { - "parser": { - "syntax": "typescript", - "tsx": false, - "decorators": false, - "dynamicImport": false - } - } -} diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index a374a846bc..ebd99742f0 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -36,6 +36,33 @@ in the issue tracker to denote fairly-well-scoped-out bugs or feature requests t can pick up and work on. If any of those labeled issues do not have enough information, please feel free to ask constructive questions. (This applies to any open issue.) +## Running Forge locally + +The easiest way to test changes to Forge during development is by symlinking your local packages +to a sample Forge project. + +To create symlinks your local Forge packages, use the `yarn link:prepare` command after +building Forge. + +```sh +yarn build +yarn link:prepare +``` + +Then, you want to initialize a new project with the `electron-forge init` command (which is the +underlying CLI command for `create-electron-app`). To use the symlinks you created in the last step, +pass in the `LINK_FORGE_DEPENDENCIES_ON_INIT` environment variable. + +You can choose to run this command via your local build as shown below or run the production init +for versions 6.0.1 and up. + +```sh +LINK_FORGE_DEPENDENCIES_ON_INIT=1 node path/to/forge/packages/api/cli/dist/electron-forge-init.js my-app +``` + +Forge commands executed in your `my-app` sample project should reflect any changes in your local +Forge build. (Make sure to run `yarn build:fast` or `yarn build` between code changes.) + ## Documentation changes When changing the API documentation, here are some rules to keep in mind. @@ -71,17 +98,10 @@ Please ensure that all changes are committed using [semantic commit messages](ht ### Running the Tests The Electron Forge repository has a lot of tests, some of which take a decent -amount of time to run when uncached. The repository will automatically cache test results for future runs. -Adding `skip-nx-cache` will skip the cache. +amount of time to run. ```bash -lerna run test -``` - -Tests can also run within a specific scope. - -```bash -lerna run test --scope @electron-forge/core +yarn test ``` ## Filing Pull Requests @@ -105,27 +125,38 @@ Here are some things to keep in mind as you file pull requests to fix bugs, add - If you are continuing the work of another person's PR and need to rebase/squash, please retain the attribution of the original author(s) and continue the work in subsequent commits. -### Release process - -- Make sure the tests pass with `lerna run test` -- Run `git clean -fdx` - this will ensure unneeded build files (and potentially sensitive files) are not included in the npm package. -- Ensure that you are logged into npm via command line (`npm login`) -- `lerna publish --force-publish` - - **running this command without the `--force-publish` flag will only publish packages that have changes since - last release**. - - for beta releases, select `custom prerelease` when prompted, and enter `y` to increment the beta version. - - version numbers should be an un-prefixed [semantic version](https://semver.org/) number (e.g. `6.0.0-beta.67) - - The script will then ask you for your `npm` OTP password. - - The script will commit the changes automatically. Run `git log` to confirm that the changes have been - committed. -- The command will have published your packages to `npm`, and pushed an appropriate tag to github. -- After running the command, you should have a commit which: - - Updates the version field in the package.json file - - Updates the version fields in each of the submodule package.json files -- Push your commit upstream to the main/default branch. -- Create a new github release - - Go to releases tab - - Draft a new release and choose the appropriate tag - - Target default branch - - Generate release notes by copying in CHANGELOG.md contents into the release description or use - GitHub's [automatically generated release notes](https://docs.github.com/en/repositories/releasing-projects-on-github/automatically-generated-release-notes) +## Release process + +This guide is for maintainers who have: + +- Push access to the `electron/forge` repository. +- Collaborator access to the `@electron-forge` packages on npm. + +### 1. Prepare your local code checkout + +- Switch to the tip of the `main` branch with `git switch main && git pull`. +- Run tests locally with `yarn test`. +- Check that the latest CI run passed on `main` on [GitHub](https://github.com/electron/forge/actions?query=workflow:CI). +- Remove all untracked files and directories from your checkout with `git clean -fdx`. +- Install dependencies with `yarn install`. + +### 2. Publish all npm packages + +- Log into npm with `npm login`. +- Run the `yarn lerna:publish` command. +- Enter your npm account's time-based one-time password (TOTP). + +The `lerna:publish` script will automatically increment the next package version based on the +[Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) standard. From there, it does two things: + +1. It creates a tagged commit that bumps the version number in `package.json` at the root and package levels + and pushes the commit and tag to GitHub. +1. It publishes every `@electron-forge/` package to npm. + +### 3. Publish release to GitHub + +- Go to the repo's [New Release](https://github.com/electron/forge/releases/new) page. +- Select tag you just published. +- Target the `main` branch. +- [Automatically generated release notes](https://docs.github.com/en/repositories/releasing-projects-on-github/automatically-generated-release-notes) + against the previous Forge release. diff --git a/lerna.json b/lerna.json index ca82744232..b585cb83c0 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", "useWorkspaces": true, - "version": "6.0.3", + "version": "6.0.5", "npmClient": "yarn" } diff --git a/package.json b/package.json index d3b629846d..d90d35f193 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "electron-forge", - "version": "6.0.1", + "version": "0.0.0-development", "private": true, "license": "MIT", "engines": { @@ -8,19 +8,19 @@ }, "scripts": { "clean": "rimraf dist && lerna exec -- rimraf dist tsconfig.tsbuildinfo", - "build": "lerna exec -- tsc --emitDeclarationOnly && yarn build:fast", - "build:fast": "lerna exec -- swc src --out-dir dist --quiet --extensions \".ts\" --config-file ../../../.swcrc", - "build:full": "lerna exec -- tsc -b", + "build": "tsc -b packages", + "build:watch": "yarn build --watch", "postbuild": "ts-node tools/test-dist", - "docs": "yarn build:full && yarn docs:generate", + "docs": "yarn build && yarn docs:generate", "docs:generate": "yarn docs:plugin && node --max-old-space-size=8192 -r ts-node/register ./tools/gen-docs.ts", "docs:plugin": "cd ./tools/doc-plugin && yarn build", - "docs:deploy:build": "yarn docs", + "lerna:publish": "lerna publish --force-publish --conventional-commits --no-changelog --exact", "lint": "prettier --check . && eslint .", "lint:fix": "prettier --write .", "link:prepare": "lerna exec -- node ../../../tools/silent.js yarn link --link-folder ../../../.links --silent --no-bin-links", "test": "xvfb-maybe cross-env LINK_FORGE_DEPENDENCIES_ON_INIT=1 TS_NODE_PROJECT='./tsconfig.test.json' TS_NODE_FILES=1 mocha './tools/test-globber.ts'", "test:fast": "xvfb-maybe cross-env LINK_FORGE_DEPENDENCIES_ON_INIT=1 TS_NODE_PROJECT='./tsconfig.test.json' TEST_FAST_ONLY=1 TS_NODE_FILES=1 mocha './tools/test-globber.ts'", + "test:slow": "xvfb-maybe cross-env LINK_FORGE_DEPENDENCIES_ON_INIT=1 TS_NODE_PROJECT='./tsconfig.test.json' TEST_SLOW_ONLY=1 TS_NODE_FILES=1 mocha './tools/test-globber.ts'", "postinstall": "rimraf node_modules/.bin/*.ps1 && ts-node ./tools/gen-tsconfigs.ts && ts-node ./tools/gen-ts-glue.ts", "prepare": "husky install", "preversion": "yarn build" @@ -78,11 +78,9 @@ "yarn-or-npm": "^3.0.1" }, "devDependencies": { + "@electron/fuses": ">=1.0.0", "@knodes/typedoc-plugin-monorepo-readmes": "0.22.5", "@malept/eslint-config": "^2.0.0", - "@swc/cli": "^0.1.49", - "@swc/core": "^1.2.87", - "@swc/register": "^0.1.7", "@types/chai": "^4.2.12", "@types/chai-as-promised": "^7.1.2", "@types/cross-spawn": "^6.0.1", @@ -123,9 +121,10 @@ "fork-ts-checker-webpack-plugin": "^7.2.13", "generate-changelog": "^1.8.0", "husky": "^7.0.1", + "inquirer": "^8.0.0", "lerna": "^6.0.1", "lint-staged": "^12.1.7", - "listr2": "^4.0.4", + "listr2": "^5.0.3", "minimist": "^1.2.6", "mocha": "^9.0.1", "prettier": "^2.4.0", @@ -133,12 +132,14 @@ "rimraf": "^3.0.1", "sinon": "^13.0.1", "sinon-chai": "^3.6.0", + "syncpack": "^8.4.11", "ts-node": "^10.0.0", "typedoc": "^0.22.15", "typedoc-plugin-missing-exports": "^1.0.0", "typedoc-plugin-rename-defaults": "^0.6.4", "typescript": "^4.6.3", - "xvfb-maybe": "^0.2.1" + "xvfb-maybe": "^0.2.1", + "yaml-hook": "^1.0.0" }, "optionalDependencies": { "@malept/electron-installer-flatpak": "^0.11.2", @@ -151,12 +152,16 @@ "electron-wix-msi": "^5.0.0", "macos-alias": "^0.2.11" }, + "peerDependencies": { + "@electron/fuses": ">=1.0.0" + }, "lint-staged": { "*.{html,json,md,yml}": "prettier --write", "*.{js,ts}": [ "prettier --write", "eslint --fix" - ] + ], + "*.{json,lock}": "syncpack" }, "prettier": { "singleQuote": true diff --git a/packages/api/cli/package.json b/packages/api/cli/package.json index 4eed2984be..9ef86b9bba 100644 --- a/packages/api/cli/package.json +++ b/packages/api/cli/package.json @@ -1,6 +1,6 @@ { "name": "@electron-forge/cli", - "version": "6.0.3", + "version": "6.0.5", "description": "A complete tool for building modern Electron applications", "repository": "https://github.com/electron/forge", "author": "Samuel Attard", @@ -17,8 +17,8 @@ "mocha": "^9.0.1" }, "dependencies": { - "@electron-forge/core": "^6.0.3", - "@electron-forge/shared-types": "^6.0.3", + "@electron-forge/core": "6.0.5", + "@electron-forge/shared-types": "6.0.5", "@electron/get": "^2.0.0", "chalk": "^4.0.0", "commander": "^4.1.1", diff --git a/packages/api/cli/src/util/terminate.ts b/packages/api/cli/src/util/terminate.ts index b7c97327fd..142f6bc192 100644 --- a/packages/api/cli/src/util/terminate.ts +++ b/packages/api/cli/src/util/terminate.ts @@ -7,7 +7,6 @@ function redConsoleError(msg: string) { process.on('unhandledRejection', (reason: string, promise: Promise) => { redConsoleError('\nAn unhandled rejection has occurred inside Forge:'); redConsoleError(reason.toString().trim()); - redConsoleError('\nElectron Forge was terminated. Location:'); promise.catch((err: Error) => { if ('stack' in err) { const usefulStack = err.stack; diff --git a/packages/api/core/package.json b/packages/api/core/package.json index 65bc9ba8e0..dccbebeddd 100644 --- a/packages/api/core/package.json +++ b/packages/api/core/package.json @@ -1,6 +1,6 @@ { "name": "@electron-forge/core", - "version": "6.0.3", + "version": "6.0.5", "description": "A complete tool for building modern Electron applications", "repository": "https://github.com/electron/forge", "main": "dist/api/index.js", @@ -15,16 +15,16 @@ "test:slow": "yarn test:base test/slow/**/*_spec_slow.ts" }, "devDependencies": { - "@electron-forge/maker-appx": "^6.0.3", - "@electron-forge/maker-deb": "^6.0.3", - "@electron-forge/maker-dmg": "^6.0.3", - "@electron-forge/maker-flatpak": "^6.0.3", - "@electron-forge/maker-rpm": "^6.0.3", - "@electron-forge/maker-snap": "^6.0.3", - "@electron-forge/maker-squirrel": "^6.0.3", - "@electron-forge/maker-wix": "^6.0.3", - "@electron-forge/maker-zip": "^6.0.3", - "@electron-forge/test-utils": "^6.0.3", + "@electron-forge/maker-appx": "6.0.5", + "@electron-forge/maker-deb": "6.0.5", + "@electron-forge/maker-dmg": "6.0.5", + "@electron-forge/maker-flatpak": "6.0.5", + "@electron-forge/maker-rpm": "6.0.5", + "@electron-forge/maker-snap": "6.0.5", + "@electron-forge/maker-squirrel": "6.0.5", + "@electron-forge/maker-wix": "6.0.5", + "@electron-forge/maker-zip": "6.0.5", + "@electron-forge/test-utils": "6.0.5", "@types/interpret": "^1.1.1", "@types/progress": "^2.0.5", "@types/rechoir": "^0.6.1", @@ -36,17 +36,18 @@ "mocha": "^9.0.1", "proxyquire": "^2.1.3", "sinon": "^13.0.1", - "sinon-chai": "^3.6.0" + "sinon-chai": "^3.6.0", + "yaml-hook": "^1.0.0" }, "dependencies": { - "@electron-forge/core-utils": "^6.0.3", - "@electron-forge/maker-base": "^6.0.3", - "@electron-forge/plugin-base": "^6.0.3", - "@electron-forge/publisher-base": "^6.0.3", - "@electron-forge/shared-types": "^6.0.3", - "@electron-forge/template-base": "^6.0.3", - "@electron-forge/template-webpack": "^6.0.3", - "@electron-forge/template-webpack-typescript": "^6.0.3", + "@electron-forge/core-utils": "6.0.5", + "@electron-forge/maker-base": "6.0.5", + "@electron-forge/plugin-base": "6.0.5", + "@electron-forge/publisher-base": "6.0.5", + "@electron-forge/shared-types": "6.0.5", + "@electron-forge/template-base": "6.0.5", + "@electron-forge/template-webpack": "6.0.5", + "@electron-forge/template-webpack-typescript": "6.0.5", "@electron/get": "^2.0.0", "@electron/rebuild": "^3.2.10", "@malept/cross-spawn-promise": "^2.0.0", diff --git a/packages/api/core/src/api/import.ts b/packages/api/core/src/api/import.ts index d1db4e98b3..70bce074eb 100644 --- a/packages/api/core/src/api/import.ts +++ b/packages/api/core/src/api/import.ts @@ -66,7 +66,7 @@ export default async ({ collapseErrors: false, }, rendererSilent: !interactive, - rendererFallback: Boolean(process.env.DEBUG && process.env.DEBUG.includes('electron-forge')), + rendererFallback: Boolean(process.env.DEBUG), }; const runner = new Listr( diff --git a/packages/api/core/src/api/init.ts b/packages/api/core/src/api/init.ts index 2a44df4b9e..8e913ef9c2 100644 --- a/packages/api/core/src/api/init.ts +++ b/packages/api/core/src/api/init.ts @@ -137,7 +137,7 @@ export default async ({ dir = process.cwd(), interactive = false, copyCIFiles = { concurrent: false, rendererSilent: !interactive, - rendererFallback: Boolean(process.env.DEBUG && process.env.DEBUG.includes('electron-forge')), + rendererFallback: Boolean(process.env.DEBUG), } ); diff --git a/packages/api/core/src/api/make.ts b/packages/api/core/src/api/make.ts index d967ca6a9a..6a2844d473 100644 --- a/packages/api/core/src/api/make.ts +++ b/packages/api/core/src/api/make.ts @@ -106,7 +106,7 @@ export const listrMake = ( collapseErrors: false, }, rendererSilent: !interactive, - rendererFallback: Boolean(process.env.DEBUG && process.env.DEBUG.includes('electron-forge')), + rendererFallback: Boolean(process.env.DEBUG), }; const runner = new Listr( @@ -282,15 +282,10 @@ export const listrMake = ( arch: targetArch, }); } catch (err) { - if (err instanceof Error) { - throw { - message: `An error occured while making for target: ${maker.name}`, - stack: `${err.message}\n${err.stack}`, - }; - } else if (err) { + if (err) { throw err; } else { - throw new Error(`An unknown error occured while making for target: ${maker.name}`); + throw new Error(`An unknown error occurred while making for target: ${maker.name}`); } } }, diff --git a/packages/api/core/src/api/package.ts b/packages/api/core/src/api/package.ts index 6b704a3e7a..b58e34f2b3 100644 --- a/packages/api/core/src/api/package.ts +++ b/packages/api/core/src/api/package.ts @@ -165,11 +165,6 @@ export const listrPackage = ({ task.output = 'Determining targets...'; - let provideTargets: (targets: TargetDefinition[]) => void; - const targetsPromise = new Promise((resolve) => { - provideTargets = resolve; - }); - type StepDoneSignalMap = Map void)[]>; const signalCopyDone: StepDoneSignalMap = new Map(); const signalRebuildDone: StepDoneSignalMap = new Map(); @@ -186,6 +181,12 @@ export const listrPackage = ({ }); }; + let provideTargets: (targets: TargetDefinition[]) => void; + const targetsPromise = new Promise((resolve, reject) => { + provideTargets = resolve; + rejects.push(reject); + }); + const rebuildTasks = new Map>[]>(); const signalRebuildStart = new Map) => void)[]>(); @@ -309,7 +310,9 @@ export const listrPackage = ({ // rejects is populated by the reject handlers for every // signal based promise in every subtask ctx.packagerPromise.catch((err) => { - for (const reject of rejects) reject(err); + for (const reject of rejects) { + reject(err); + } }); const targets = await targetsPromise; @@ -430,7 +433,7 @@ export const listrPackage = ({ { concurrent: false, rendererSilent: !interactive, - rendererFallback: Boolean(process.env.DEBUG && process.env.DEBUG.includes('electron-forge')), + rendererFallback: Boolean(process.env.DEBUG), rendererOptions: { collapse: false, collapseErrors: false, diff --git a/packages/api/core/src/api/publish.ts b/packages/api/core/src/api/publish.ts index 6ffda99c0c..ca1e6d57eb 100644 --- a/packages/api/core/src/api/publish.ts +++ b/packages/api/core/src/api/publish.ts @@ -85,7 +85,7 @@ const publish = async ({ collapseErrors: false, }, rendererSilent: !interactive, - rendererFallback: Boolean(process.env.DEBUG && process.env.DEBUG.includes('electron-forge')), + rendererFallback: Boolean(process.env.DEBUG), }; const publishDistributablesTasks = [ diff --git a/packages/api/core/src/api/start.ts b/packages/api/core/src/api/start.ts index 6c5482e8b5..673ffc5e9e 100644 --- a/packages/api/core/src/api/start.ts +++ b/packages/api/core/src/api/start.ts @@ -41,7 +41,7 @@ export default async ({ collapseErrors: false, }, rendererSilent: !interactive, - rendererFallback: Boolean(process.env.DEBUG && process.env.DEBUG.includes('electron-forge')), + rendererFallback: Boolean(process.env.DEBUG), }; const runner = new Listr( diff --git a/packages/api/core/src/util/forge-config.ts b/packages/api/core/src/util/forge-config.ts index 3f9768b025..03b9a229cf 100644 --- a/packages/api/core/src/util/forge-config.ts +++ b/packages/api/core/src/util/forge-config.ts @@ -109,7 +109,7 @@ export default async (dir: string): Promise => { const packageJSON = await readRawPackageJson(dir); let forgeConfig: ForgeConfig | string | null = packageJSON.config && packageJSON.config.forge ? packageJSON.config.forge : null; - if (!forgeConfig) { + if (!forgeConfig || typeof forgeConfig === 'string') { for (const extension of ['.js', ...Object.keys(interpret.extensions)]) { const pathToConfig = path.resolve(dir, `forge.config${extension}`); if (await fs.pathExists(pathToConfig)) { diff --git a/packages/api/core/src/util/plugin-interface.ts b/packages/api/core/src/util/plugin-interface.ts index edd9bfeabe..cfb75532d8 100644 --- a/packages/api/core/src/util/plugin-interface.ts +++ b/packages/api/core/src/util/plugin-interface.ts @@ -98,7 +98,7 @@ export default class PluginInterface implements IForgePluginInterface { task: async (_, task) => { if ((hook as any).__hookName) { // Also give it the task - await (hook as any).call(task, ...(hookArgs as any[])); + await (hook as any).call(task, this.config, ...(hookArgs as any[])); } else { await hook(this.config, ...hookArgs); } diff --git a/packages/api/core/src/util/resolve-dir.ts b/packages/api/core/src/util/resolve-dir.ts index c2192d2f98..f023a5ec0c 100644 --- a/packages/api/core/src/util/resolve-dir.ts +++ b/packages/api/core/src/util/resolve-dir.ts @@ -53,7 +53,7 @@ export default async (dir: string): Promise => { return bestGuessDir; } if (lastError) { - throw lastError; + throw new Error(lastError); } return null; }; diff --git a/packages/api/core/test/fast/forge-config_spec.ts b/packages/api/core/test/fast/forge-config_spec.ts index e83791f5e7..99e3cfa5e0 100644 --- a/packages/api/core/test/fast/forge-config_spec.ts +++ b/packages/api/core/test/fast/forge-config_spec.ts @@ -114,6 +114,12 @@ describe('forge-config', () => { expect(conf.defaultResolved).to.equal(true); }); + it(`should resolve the yml config from forge.config.yml if it's specified in config.forge`, async () => { + type DefaultResolvedConfig = ResolvedForgeConfig; + const conf = (await findConfig(path.resolve(__dirname, '../fixture/dummy_ts_conf'))) as DefaultResolvedConfig; + expect(conf.buildIdentifier).to.equal('yml'); + }); + it('should resolve the TS file exports of forge.config.ts if config.forge does not exist and the TS config exists', async () => { type DefaultResolvedConfig = ResolvedForgeConfig; const conf = (await findConfig(path.resolve(__dirname, '../fixture/dummy_default_ts_conf'))) as DefaultResolvedConfig; diff --git a/packages/api/core/test/fixture/dummy_ts_conf/forge.config.yml b/packages/api/core/test/fixture/dummy_ts_conf/forge.config.yml new file mode 100644 index 0000000000..ee69896efa --- /dev/null +++ b/packages/api/core/test/fixture/dummy_ts_conf/forge.config.yml @@ -0,0 +1 @@ +buildIdentifier: 'yml' diff --git a/packages/api/core/test/fixture/dummy_ts_conf/package.json b/packages/api/core/test/fixture/dummy_ts_conf/package.json new file mode 100644 index 0000000000..df0eaf8be0 --- /dev/null +++ b/packages/api/core/test/fixture/dummy_ts_conf/package.json @@ -0,0 +1,20 @@ +{ + "name": "", + "productName": "", + "version": "1.0.0", + "description": "", + "main": "src/index.js", + "scripts": { + "start": "electron-forge start" + }, + "keywords": [], + "author": "", + "license": "MIT", + "config": { + "forge": "./forge.config.yml" + }, + "devDependencies": { + "@electron-forge/shared-types": "*", + "electron-prebuilt": "9.9.9" + } +} diff --git a/packages/external/create-electron-app/package.json b/packages/external/create-electron-app/package.json index 9d52f9873c..a0e9c34239 100644 --- a/packages/external/create-electron-app/package.json +++ b/packages/external/create-electron-app/package.json @@ -1,13 +1,13 @@ { "name": "create-electron-app", - "version": "6.0.3", + "version": "6.0.5", "description": "Create Electron App", "main": "dist/index.js", "typings": "dist/index.d.ts", "author": "Samuel Attard", "license": "MIT", "dependencies": { - "@electron-forge/cli": "^6.0.3" + "@electron-forge/cli": "6.0.5" }, "bin": { "create-electron-app": "dist/index.js" diff --git a/packages/maker/appx/package.json b/packages/maker/appx/package.json index f6cc5ca289..49f15ab04f 100644 --- a/packages/maker/appx/package.json +++ b/packages/maker/appx/package.json @@ -1,6 +1,6 @@ { "name": "@electron-forge/maker-appx", - "version": "6.0.3", + "version": "6.0.5", "description": "AppX maker for Electron Forge", "repository": "https://github.com/electron/forge", "author": "Samuel Attard", @@ -15,8 +15,8 @@ "node": ">= 14.17.5" }, "dependencies": { - "@electron-forge/maker-base": "^6.0.3", - "@electron-forge/shared-types": "^6.0.3", + "@electron-forge/maker-base": "6.0.5", + "@electron-forge/shared-types": "6.0.5", "cross-spawn": "^7.0.3", "fs-extra": "^10.0.0", "parse-author": "^2.0.0" diff --git a/packages/maker/base/package.json b/packages/maker/base/package.json index 6e7acc5d49..660e9b280c 100644 --- a/packages/maker/base/package.json +++ b/packages/maker/base/package.json @@ -1,6 +1,6 @@ { "name": "@electron-forge/maker-base", - "version": "6.0.3", + "version": "6.0.5", "description": "Base maker for Electron Forge", "repository": "https://github.com/electron/forge", "author": "Samuel Attard", @@ -16,7 +16,7 @@ "node": ">= 14.17.5" }, "dependencies": { - "@electron-forge/shared-types": "^6.0.3", + "@electron-forge/shared-types": "6.0.5", "fs-extra": "^10.0.0", "which": "^2.0.2" }, diff --git a/packages/maker/deb/README.md b/packages/maker/deb/README.md index 445b58765a..f06ab3553f 100644 --- a/packages/maker/deb/README.md +++ b/packages/maker/deb/README.md @@ -2,7 +2,7 @@ `@electron-forge/maker-deb` builds .deb packages, which are the standard package format for Debian-based Linux distributions such as Ubuntu. You can only build the deb target on Linux or macOS machines with the fakeroot and dpkg packages installed. -Configuration options are documented in [`MakerDebConfigOptions`](https://js.electronforge.io/interfaces/_electron_forge_maker_deb._internal_.MakerDebConfigOptions.html). +Configuration options are documented in [`MakerDebConfigOptions`](https://js.electronforge.io/interfaces/_electron_forge_maker_deb.InternalOptions.MakerDebConfigOptions.html). ``` { @@ -15,4 +15,4 @@ Configuration options are documented in [`MakerDebConfigOptions`](https://js.ele } } } -``` \ No newline at end of file +``` diff --git a/packages/maker/deb/package.json b/packages/maker/deb/package.json index 7926363bb7..b2402a95b8 100644 --- a/packages/maker/deb/package.json +++ b/packages/maker/deb/package.json @@ -1,6 +1,6 @@ { "name": "@electron-forge/maker-deb", - "version": "6.0.3", + "version": "6.0.5", "description": "Deb maker for Electron Forge", "repository": "https://github.com/electron/forge", "author": "Samuel Attard", @@ -18,8 +18,8 @@ "node": ">= 14.17.5" }, "dependencies": { - "@electron-forge/maker-base": "^6.0.3", - "@electron-forge/shared-types": "^6.0.3" + "@electron-forge/maker-base": "6.0.5", + "@electron-forge/shared-types": "6.0.5" }, "optionalDependencies": { "electron-installer-debian": "^3.0.0" diff --git a/packages/maker/dmg/package.json b/packages/maker/dmg/package.json index 16cf33abd7..cd7503c08c 100644 --- a/packages/maker/dmg/package.json +++ b/packages/maker/dmg/package.json @@ -1,6 +1,6 @@ { "name": "@electron-forge/maker-dmg", - "version": "6.0.3", + "version": "6.0.5", "description": "DMG maker for Electron Forge", "repository": "https://github.com/electron/forge", "author": "Samuel Attard", @@ -22,8 +22,8 @@ "node": ">= 14.17.5" }, "dependencies": { - "@electron-forge/maker-base": "^6.0.3", - "@electron-forge/shared-types": "^6.0.3", + "@electron-forge/maker-base": "6.0.5", + "@electron-forge/shared-types": "6.0.5", "fs-extra": "^10.0.0" }, "optionalDependencies": { diff --git a/packages/maker/flatpak/README.md b/packages/maker/flatpak/README.md index 47cffae9fc..9f1d629a26 100644 --- a/packages/maker/flatpak/README.md +++ b/packages/maker/flatpak/README.md @@ -4,7 +4,7 @@ You can only build the Flatpak target if you have `flatpak`, `flatpak-builder`, and `eu-strip` _\(usually part of the `elfutils` package\)_ installed on your system. -Configuration options are documented in [`MakerFlatpakOptionsConfig`](https://js.electronforge.io/interfaces/_electron_forge_maker_flatpak._internal_.MakerFlatpakOptionsConfig.html). +Configuration options are documented in [`MakerFlatpakOptionsConfig`](https://js.electronforge.io/interfaces/_electron_forge_maker_flatpak.InternalOptions.MakerFlatpakOptionsConfig.html). ```javascript { diff --git a/packages/maker/flatpak/package.json b/packages/maker/flatpak/package.json index 41b81a507a..76e7b99bc5 100644 --- a/packages/maker/flatpak/package.json +++ b/packages/maker/flatpak/package.json @@ -1,6 +1,6 @@ { "name": "@electron-forge/maker-flatpak", - "version": "6.0.3", + "version": "6.0.5", "description": "Flatpak maker for Electron Forge", "repository": "https://github.com/electron/forge", "author": "Samuel Attard", @@ -22,8 +22,8 @@ "node": ">= 14.17.5" }, "dependencies": { - "@electron-forge/maker-base": "^6.0.3", - "@electron-forge/shared-types": "^6.0.3", + "@electron-forge/maker-base": "6.0.5", + "@electron-forge/shared-types": "6.0.5", "fs-extra": "^10.0.0" }, "optionalDependencies": { diff --git a/packages/maker/pkg/package.json b/packages/maker/pkg/package.json index 572766a385..5874ac7475 100644 --- a/packages/maker/pkg/package.json +++ b/packages/maker/pkg/package.json @@ -1,6 +1,6 @@ { "name": "@electron-forge/maker-pkg", - "version": "6.0.3", + "version": "6.0.5", "description": "PKG maker for Electron Forge", "repository": "https://github.com/electron/forge", "license": "MIT", @@ -17,8 +17,8 @@ "node": ">= 14.17.5" }, "dependencies": { - "@electron-forge/maker-base": "^6.0.3", - "@electron-forge/shared-types": "^6.0.3", + "@electron-forge/maker-base": "6.0.5", + "@electron-forge/shared-types": "6.0.5", "@electron/osx-sign": "^1.0.1" }, "publishConfig": { diff --git a/packages/maker/rpm/README.md b/packages/maker/rpm/README.md index e644adf0c1..9171676957 100644 --- a/packages/maker/rpm/README.md +++ b/packages/maker/rpm/README.md @@ -4,7 +4,7 @@ You can only build the RPM target on Linux machines with the `rpm` or `rpm-build` packages installed. -Configuration options are documented in [`MakerRpmConfigOptions`](https://js.electronforge.io/interfaces/_electron_forge_maker_rpm._internal_.MakerRpmConfigOptions.html). +Configuration options are documented in [`MakerRpmConfigOptions`](https://js.electronforge.io/interfaces/_electron_forge_maker_rpm.InternalOptions.MakerRpmConfigOptions.html). ```javascript { diff --git a/packages/maker/rpm/package.json b/packages/maker/rpm/package.json index 9f3145ea63..9006f97f39 100644 --- a/packages/maker/rpm/package.json +++ b/packages/maker/rpm/package.json @@ -1,6 +1,6 @@ { "name": "@electron-forge/maker-rpm", - "version": "6.0.3", + "version": "6.0.5", "description": "Rpm maker for Electron Forge", "repository": "https://github.com/electron/forge", "author": "Samuel Attard", @@ -22,8 +22,8 @@ "node": ">= 14.17.5" }, "dependencies": { - "@electron-forge/maker-base": "^6.0.3", - "@electron-forge/shared-types": "^6.0.3" + "@electron-forge/maker-base": "6.0.5", + "@electron-forge/shared-types": "6.0.5" }, "optionalDependencies": { "electron-installer-redhat": "^3.2.0" diff --git a/packages/maker/rpm/src/MakerRpm.ts b/packages/maker/rpm/src/MakerRpm.ts index c5d9328bac..47bb2f4774 100644 --- a/packages/maker/rpm/src/MakerRpm.ts +++ b/packages/maker/rpm/src/MakerRpm.ts @@ -5,12 +5,18 @@ import { ForgeArch, ForgePlatform } from '@electron-forge/shared-types'; import { MakerRpmConfig } from './Config'; +function renameRpm(dest: string, _src: string): string { + return path.join(dest, '<%= name %>-<%= version %>-<%= revision %>.<%= arch === "aarch64" ? "arm64" : arch %>.rpm'); +} + export function rpmArch(nodeArch: ForgeArch): string { switch (nodeArch) { case 'ia32': return 'i386'; case 'x64': return 'x86_64'; + case 'arm64': + return 'aarch64'; case 'armv7l': return 'armv7hl'; case 'arm': @@ -43,7 +49,7 @@ export default class MakerRpm extends MakerBase { arch: rpmArch(targetArch), src: dir, dest: outDir, - rename: undefined, + rename: renameRpm, }); return packagePaths; } diff --git a/packages/maker/rpm/test/MakerRpm_spec.ts b/packages/maker/rpm/test/MakerRpm_spec.ts index 3c237a6c6c..d2998ececb 100644 --- a/packages/maker/rpm/test/MakerRpm_spec.ts +++ b/packages/maker/rpm/test/MakerRpm_spec.ts @@ -56,11 +56,11 @@ describe('MakerRpm', () => { packageJSON, }); const opts = eirStub.firstCall.args[0]; + delete opts.rename; expect(opts).to.deep.equal({ arch: rpmArch(process.arch as ForgeArch), src: dir, dest: path.join(makeDir, 'rpm', process.arch), - rename: undefined, }); }); @@ -81,6 +81,7 @@ describe('MakerRpm', () => { packageJSON, }); const opts = eirStub.firstCall.args[0]; + delete opts.rename; expect(opts).to.deep.equal({ arch: rpmArch(process.arch as ForgeArch), options: { @@ -88,7 +89,6 @@ describe('MakerRpm', () => { }, src: dir, dest: path.join(makeDir, 'rpm', process.arch), - rename: undefined, }); }); @@ -101,6 +101,10 @@ describe('MakerRpm', () => { expect(rpmArch('x64')).to.equal('x86_64'); }); + it('should convert arm64 to aarch64', () => { + expect(rpmArch('arm64')).to.equal('aarch64'); + }); + it('should convert arm to armv6hl', () => { expect(rpmArch('arm')).to.equal('armv6hl'); }); diff --git a/packages/maker/snap/package.json b/packages/maker/snap/package.json index e624fdf408..0fb0062ac5 100644 --- a/packages/maker/snap/package.json +++ b/packages/maker/snap/package.json @@ -1,6 +1,6 @@ { "name": "@electron-forge/maker-snap", - "version": "6.0.3", + "version": "6.0.5", "description": "Snap maker for Electron Forge", "repository": "https://github.com/electron/forge", "license": "MIT", @@ -21,8 +21,8 @@ "node": ">= 14.17.5" }, "dependencies": { - "@electron-forge/maker-base": "^6.0.3", - "@electron-forge/shared-types": "^6.0.3" + "@electron-forge/maker-base": "6.0.5", + "@electron-forge/shared-types": "6.0.5" }, "optionalDependencies": { "electron-installer-snap": "^5.1.0" diff --git a/packages/maker/squirrel/README.md b/packages/maker/squirrel/README.md index 811489ab4d..4223d5e141 100644 --- a/packages/maker/squirrel/README.md +++ b/packages/maker/squirrel/README.md @@ -6,7 +6,7 @@ Pre-requisites: * Windows machine * MacOS /Linux machine with `mono` and `wine` installed. -Configuration options are documented in [`MakerSquirrelConfigOptions`](https://js.electronforge.io/interfaces/_electron_forge_maker_squirrel._internal_.Options.html). +Configuration options are documented in [`MakerSquirrelConfigOptions`](https://js.electronforge.io/interfaces/_electron_forge_maker_squirrel.InternalOptions.Options.html). ```javascript { diff --git a/packages/maker/squirrel/package.json b/packages/maker/squirrel/package.json index 7875a1b386..982fbdbc74 100644 --- a/packages/maker/squirrel/package.json +++ b/packages/maker/squirrel/package.json @@ -1,6 +1,6 @@ { "name": "@electron-forge/maker-squirrel", - "version": "6.0.3", + "version": "6.0.5", "description": "Squirrel maker for Electron Forge", "repository": "https://github.com/electron/forge", "author": "Samuel Attard", @@ -15,8 +15,8 @@ "node": ">= 14.17.5" }, "dependencies": { - "@electron-forge/maker-base": "^6.0.3", - "@electron-forge/shared-types": "^6.0.3", + "@electron-forge/maker-base": "6.0.5", + "@electron-forge/shared-types": "6.0.5", "fs-extra": "^10.0.0" }, "optionalDependencies": { diff --git a/packages/maker/wix/package.json b/packages/maker/wix/package.json index eae068ee71..80c5a724d6 100644 --- a/packages/maker/wix/package.json +++ b/packages/maker/wix/package.json @@ -1,6 +1,6 @@ { "name": "@electron-forge/maker-wix", - "version": "6.0.3", + "version": "6.0.5", "description": "Wix maker for Electron Forge", "repository": "https://github.com/electron/forge", "author": "Samuel Attard", @@ -15,8 +15,8 @@ "node": ">= 14.17.5" }, "dependencies": { - "@electron-forge/maker-base": "^6.0.3", - "@electron-forge/shared-types": "^6.0.3", + "@electron-forge/maker-base": "6.0.5", + "@electron-forge/shared-types": "6.0.5", "chalk": "^4.0.0", "electron-wix-msi": "^5.0.0", "log-symbols": "^4.0.0", diff --git a/packages/maker/zip/package.json b/packages/maker/zip/package.json index 10e444365a..7f1b526507 100644 --- a/packages/maker/zip/package.json +++ b/packages/maker/zip/package.json @@ -1,6 +1,6 @@ { "name": "@electron-forge/maker-zip", - "version": "6.0.3", + "version": "6.0.5", "description": "ZIP maker for Electron Forge", "repository": "https://github.com/electron/forge", "author": "Samuel Attard", @@ -15,8 +15,8 @@ "node": ">= 14.17.5" }, "dependencies": { - "@electron-forge/maker-base": "^6.0.3", - "@electron-forge/shared-types": "^6.0.3", + "@electron-forge/maker-base": "6.0.5", + "@electron-forge/shared-types": "6.0.5", "cross-zip": "^4.0.0", "fs-extra": "^10.0.0" }, diff --git a/packages/plugin/auto-unpack-natives/package.json b/packages/plugin/auto-unpack-natives/package.json index 587813bcbb..32a4c2a2eb 100644 --- a/packages/plugin/auto-unpack-natives/package.json +++ b/packages/plugin/auto-unpack-natives/package.json @@ -1,6 +1,6 @@ { "name": "@electron-forge/plugin-auto-unpack-natives", - "version": "6.0.3", + "version": "6.0.5", "description": "Auto Unpack Natives plugin for Electron Forge, automatically adds native node modules to asar.unpacked", "repository": "https://github.com/electron/forge", "author": "Samuel Attard", @@ -11,8 +11,8 @@ "node": ">= 14.17.5" }, "dependencies": { - "@electron-forge/plugin-base": "^6.0.3", - "@electron-forge/shared-types": "^6.0.3" + "@electron-forge/plugin-base": "6.0.5", + "@electron-forge/shared-types": "6.0.5" }, "publishConfig": { "access": "public" diff --git a/packages/plugin/base/package.json b/packages/plugin/base/package.json index e767c8aa3f..ef4524e179 100644 --- a/packages/plugin/base/package.json +++ b/packages/plugin/base/package.json @@ -1,6 +1,6 @@ { "name": "@electron-forge/plugin-base", - "version": "6.0.3", + "version": "6.0.5", "description": "Base plugin for Electron Forge", "repository": "https://github.com/electron/forge", "author": "Samuel Attard", @@ -15,7 +15,7 @@ "node": ">= 14.17.5" }, "dependencies": { - "@electron-forge/shared-types": "^6.0.3" + "@electron-forge/shared-types": "6.0.5" }, "publishConfig": { "access": "public" diff --git a/packages/plugin/compile/package.json b/packages/plugin/compile/package.json index ddbda24fed..5fd2d68125 100644 --- a/packages/plugin/compile/package.json +++ b/packages/plugin/compile/package.json @@ -1,6 +1,6 @@ { "name": "@electron-forge/plugin-compile", - "version": "6.0.3", + "version": "6.0.5", "description": "Electron Compile plugin for Electron Forge", "repository": "https://github.com/electron/forge", "author": "Samuel Attard", @@ -15,8 +15,8 @@ "node": ">= 14.17.5" }, "dependencies": { - "@electron-forge/plugin-base": "^6.0.3", - "@electron-forge/shared-types": "^6.0.3", + "@electron-forge/plugin-base": "6.0.5", + "@electron-forge/shared-types": "6.0.5", "fs-extra": "^10.0.0" }, "publishConfig": { diff --git a/packages/plugin/electronegativity/package.json b/packages/plugin/electronegativity/package.json index 0181f70831..16e7f2e4cb 100644 --- a/packages/plugin/electronegativity/package.json +++ b/packages/plugin/electronegativity/package.json @@ -1,6 +1,6 @@ { "name": "@electron-forge/plugin-electronegativity", - "version": "6.0.3", + "version": "6.0.5", "description": "Integrate Electronegativity into the Electron Forge workflow", "repository": { "type": "git", @@ -16,8 +16,8 @@ }, "dependencies": { "@doyensec/electronegativity": "^1.9.1", - "@electron-forge/plugin-base": "^6.0.3", - "@electron-forge/shared-types": "^6.0.3" + "@electron-forge/plugin-base": "6.0.5", + "@electron-forge/shared-types": "6.0.5" }, "publishConfig": { "access": "public" diff --git a/packages/plugin/fuses/README.md b/packages/plugin/fuses/README.md new file mode 100644 index 0000000000..3d93ab4d57 --- /dev/null +++ b/packages/plugin/fuses/README.md @@ -0,0 +1,34 @@ +@electron-forge/plugin-fuses +===== + +This plugin allows flipping [Electron Fuses](https://github.com/electron/fuses) when packaging your app with Electron Forge. + +## Usage + +Install `@electron-forge/plugin-fuses` and `@electron/fuses` as dev dependencies and add this plugin to the `plugins` array in your Forge configuration:: +```shell +# Yarn +yarn add --dev @electron-forge/plugin-fuses @electron/fuses + +# npm +npm i -D @electron-forge/plugin-fuses @electron/fuses +``` + +```js +// forge.config.js + +const { FusesPlugin } = require('@electron-forge/plugin-fuses'); +const { FuseV1Options, FuseVersion } = require('@electron/fuses'); + +const forgeConfig = { + plugins: [ + new FusesPlugin({ + version: FuseVersion.V1, + [FuseV1Options.RunAsNode]: false, + // ...any other options supported by @electron/fuses + }), + ], +}; + +module.exports = forgeConfig; +``` diff --git a/packages/plugin/fuses/package.json b/packages/plugin/fuses/package.json new file mode 100644 index 0000000000..25d8db1799 --- /dev/null +++ b/packages/plugin/fuses/package.json @@ -0,0 +1,39 @@ +{ + "name": "@electron-forge/plugin-fuses", + "version": "6.0.4", + "description": "A plugin for flipping Electron Fuses in Electron Forge", + "repository": "https://github.com/electron/forge", + "author": "Erik Moura ", + "license": "MIT", + "main": "dist/FusesPlugin.js", + "files": [ + "dist", + "package.json", + "README.md" + ], + "typings": "dist/FusesPlugin.d.ts", + "scripts": { + "test": "xvfb-maybe mocha --config ../../../.mocharc.js test/**/*_spec*.ts" + }, + "devDependencies": { + "@electron/fuses": ">=1.0.0", + "@malept/cross-spawn-promise": "^2.0.0", + "chai": "^4.3.3", + "fs-extra": "^10.0.0", + "mocha": "^9.0.1", + "xvfb-maybe": "^0.2.1" + }, + "peerDependencies": { + "@electron/fuses": ">=1.0.0" + }, + "engines": { + "node": ">= 14.17.5" + }, + "dependencies": { + "@electron-forge/plugin-base": "6.0.4", + "@electron-forge/shared-types": "6.0.4" + }, + "publishConfig": { + "access": "public" + } +} diff --git a/packages/plugin/fuses/src/FusesPlugin.ts b/packages/plugin/fuses/src/FusesPlugin.ts new file mode 100644 index 0000000000..392ccdac80 --- /dev/null +++ b/packages/plugin/fuses/src/FusesPlugin.ts @@ -0,0 +1,45 @@ +import path from 'path'; + +import { namedHookWithTaskFn, PluginBase } from '@electron-forge/plugin-base'; +import { ForgeMultiHookMap } from '@electron-forge/shared-types'; +import { flipFuses, FuseConfig } from '@electron/fuses'; + +import { getElectronExecutablePath } from './util/getElectronExecutablePath'; + +export default class FusesPlugin extends PluginBase { + name = 'fuses'; + + fusesConfig = {} as FuseConfig; + + constructor(fusesConfig: FuseConfig) { + super(fusesConfig); + + this.fusesConfig = fusesConfig; + } + + getHooks(): ForgeMultiHookMap { + return { + packageAfterCopy: namedHookWithTaskFn<'packageAfterCopy'>(async (listrTask, resolvedForgeConfig, resourcesPath, electronVersion, platform, arch) => { + const { fusesConfig } = this; + + if (Object.keys(fusesConfig).length) { + const pathToElectronExecutable = getElectronExecutablePath({ + appName: ['darwin', 'mas'].includes(platform) ? 'Electron' : 'electron', + basePath: path.resolve(resourcesPath, '../..'), + platform, + }); + + const osxSignConfig = resolvedForgeConfig.packagerConfig.osxSign; + const hasOSXSignConfig = (typeof osxSignConfig === 'object' && Boolean(Object.keys(osxSignConfig).length)) || Boolean(osxSignConfig); + + await flipFuses(pathToElectronExecutable, { + resetAdHocDarwinSignature: !hasOSXSignConfig && platform === 'darwin' && arch === 'arm64', + ...this.fusesConfig, + }); + } + }, 'Flipping Fuses'), + }; + } +} + +export { FusesPlugin }; diff --git a/packages/plugin/fuses/src/util/getElectronExecutablePath.ts b/packages/plugin/fuses/src/util/getElectronExecutablePath.ts new file mode 100644 index 0000000000..003a542b85 --- /dev/null +++ b/packages/plugin/fuses/src/util/getElectronExecutablePath.ts @@ -0,0 +1,16 @@ +import path from 'path'; + +import { ForgePlatform } from '@electron-forge/shared-types'; + +type GetElectronExecutablePathParams = { + appName: string; + basePath: string; + platform: ForgePlatform; +}; + +export function getElectronExecutablePath({ appName, basePath, platform }: GetElectronExecutablePathParams): string { + return path.join( + basePath, + ['darwin', 'mas'].includes(platform) ? path.join('MacOS', appName) : [appName, process.platform === 'win32' ? '.exe' : ''].join('') + ); +} diff --git a/packages/plugin/fuses/test/FusesPlugin_spec_slow.ts b/packages/plugin/fuses/test/FusesPlugin_spec_slow.ts new file mode 100644 index 0000000000..3a4e1e0d5e --- /dev/null +++ b/packages/plugin/fuses/test/FusesPlugin_spec_slow.ts @@ -0,0 +1,67 @@ +import fs from 'fs'; +import path from 'path'; + +import { CrossSpawnOptions, spawn } from '@malept/cross-spawn-promise'; +import { expect } from 'chai'; +import fsExtra from 'fs-extra'; + +import { getElectronExecutablePath } from '../src/util/getElectronExecutablePath'; + +describe('FusesPlugin', () => { + const appPath = path.join(__dirname, 'fixtures', 'app'); + + const spawnOptions: CrossSpawnOptions = { + cwd: appPath, + shell: true, + }; + + const packageJSON = JSON.parse( + fs.readFileSync(path.join(appPath, 'package.json'), { + encoding: 'utf-8', + }) + ); + + const { name: appName } = packageJSON; + + // @TODO get rid of this once https://github.com/electron/forge/pull/3123 lands + const platformArchSuffix = `${process.platform}-x64`; + + const outDir = path.join(appPath, 'out', `${appName}-${platformArchSuffix}`); + + before(async () => { + delete process.env.TS_NODE_PROJECT; + await spawn('yarn', ['install'], spawnOptions); + }); + + after(async () => { + await fsExtra.remove(path.resolve(outDir, '../')); + + // @TODO this can be removed once the mock app installs a published version of @electron-forge/plugin-fuses instead of a local package + await fsExtra.remove(path.join(__dirname, './fixtures/app/node_modules')); + }); + + it('should flip Fuses', async () => { + await spawn('yarn', ['package'], spawnOptions); + + const electronExecutablePath = getElectronExecutablePath({ + appName, + basePath: path.join(outDir, ...(process.platform === 'darwin' ? [`${appName}.app`, 'Contents'] : [])), + platform: process.platform, + }); + + /** + * If the `RunAsNode` fuse had not been flipped, + * this would return the Node.js version (e.g. `v14.16.0`) + * instead of the `console.log` from `main.js`. + */ + const output = ( + await spawn(electronExecutablePath, ['-v'], { + env: { + ELECTRON_RUN_AS_NODE: '1', + }, + }) + ).trim(); + + expect(output).to.equals('The Fuses plugin is working'); + }); +}); diff --git a/packages/plugin/fuses/test/fixtures/app/forge.config.ts b/packages/plugin/fuses/test/fixtures/app/forge.config.ts new file mode 100644 index 0000000000..cbdc03c5ef --- /dev/null +++ b/packages/plugin/fuses/test/fixtures/app/forge.config.ts @@ -0,0 +1,31 @@ +import path from 'path'; + +import { FusesPlugin } from '@electron-forge/plugin-fuses'; +import { ForgeConfig } from '@electron-forge/shared-types'; +import { FuseV1Options, FuseVersion } from '@electron/fuses'; +import fsExtra from 'fs-extra'; + +const forgeConfig: ForgeConfig = { + packagerConfig: { + afterComplete: [ + // makes tests a bit simpler by having a single output directory in every platform/arch + async (packagedAppLocation, _electronVersion, _targetPlatform, _targetArch, done) => { + const parentDir = path.resolve(packagedAppLocation, '..'); + await fsExtra.move(packagedAppLocation, path.join(parentDir, 'fuses-test-app'), { + overwrite: true, + }); + + done(); + }, + ], + }, + + plugins: [ + new FusesPlugin({ + version: FuseVersion.V1, + [FuseV1Options.RunAsNode]: false, + }), + ], +}; + +export default forgeConfig; diff --git a/packages/plugin/fuses/test/fixtures/app/package.json b/packages/plugin/fuses/test/fixtures/app/package.json new file mode 100644 index 0000000000..e018e85766 --- /dev/null +++ b/packages/plugin/fuses/test/fixtures/app/package.json @@ -0,0 +1,18 @@ +{ + "name": "fuses-test-app", + "version": "1.0.0", + "main": "./src/main.js", + "scripts": { + "package": "electron-forge package" + }, + "dependencies": { + "@electron-forge/plugin-fuses": "file:./../../../../fuses", + "@electron-forge/shared-types": "6.0.4", + "@electron/fuses": "^1.6.1", + "fs-extra": "^10.0.0" + }, + "devDependencies": { + "@electron-forge/cli": "6.0.4", + "electron": "12.0.0" + } +} diff --git a/packages/plugin/fuses/test/fixtures/app/src/main.js b/packages/plugin/fuses/test/fixtures/app/src/main.js new file mode 100644 index 0000000000..3ef07df595 --- /dev/null +++ b/packages/plugin/fuses/test/fixtures/app/src/main.js @@ -0,0 +1,5 @@ +const { app } = require('electron'); + +console.log('The Fuses plugin is working'); + +app.exit(0); diff --git a/packages/plugin/local-electron/package.json b/packages/plugin/local-electron/package.json index e631469b17..dda51aa90b 100644 --- a/packages/plugin/local-electron/package.json +++ b/packages/plugin/local-electron/package.json @@ -1,6 +1,6 @@ { "name": "@electron-forge/plugin-local-electron", - "version": "6.0.3", + "version": "6.0.5", "description": "Local Electron plugin for Electron Forge, let's you use a local build of Electron", "repository": "https://github.com/electron/forge", "author": "Samuel Attard", @@ -11,8 +11,8 @@ "node": ">= 14.17.5" }, "dependencies": { - "@electron-forge/plugin-base": "^6.0.3", - "@electron-forge/shared-types": "^6.0.3", + "@electron-forge/plugin-base": "6.0.5", + "@electron-forge/shared-types": "6.0.5", "fs-extra": "^10.0.0" }, "devDependencies": { diff --git a/packages/plugin/webpack/package.json b/packages/plugin/webpack/package.json index 2f524e16b9..ab61516a23 100644 --- a/packages/plugin/webpack/package.json +++ b/packages/plugin/webpack/package.json @@ -1,6 +1,6 @@ { "name": "@electron-forge/plugin-webpack", - "version": "6.0.3", + "version": "6.0.5", "description": "Webpack plugin for Electron Forge, lets you use Webpack directly in your tooling", "repository": "https://github.com/electron/forge", "author": "Samuel Attard", @@ -24,10 +24,10 @@ "node": ">= 14.17.5" }, "dependencies": { - "@electron-forge/core-utils": "^6.0.3", - "@electron-forge/plugin-base": "^6.0.3", - "@electron-forge/shared-types": "^6.0.3", - "@electron-forge/web-multi-logger": "^6.0.3", + "@electron-forge/core-utils": "6.0.5", + "@electron-forge/plugin-base": "6.0.5", + "@electron-forge/shared-types": "6.0.5", + "@electron-forge/web-multi-logger": "6.0.5", "chalk": "^4.0.0", "debug": "^4.3.1", "fs-extra": "^10.0.0", diff --git a/packages/publisher/base/package.json b/packages/publisher/base/package.json index 0724328a8a..56e42003b3 100644 --- a/packages/publisher/base/package.json +++ b/packages/publisher/base/package.json @@ -1,6 +1,6 @@ { "name": "@electron-forge/publisher-base", - "version": "6.0.3", + "version": "6.0.5", "description": "Base publisher for Electron Forge", "repository": "https://github.com/electron/forge", "author": "Samuel Attard", @@ -12,7 +12,7 @@ "test:base": "cross-env TS_NODE_FILES=1 mocha --config ../../../.mocharc.js" }, "dependencies": { - "@electron-forge/shared-types": "^6.0.3" + "@electron-forge/shared-types": "6.0.5" }, "devDependencies": { "chai": "^4.3.3", diff --git a/packages/publisher/bitbucket/package.json b/packages/publisher/bitbucket/package.json index 714e5a349d..88b4999440 100644 --- a/packages/publisher/bitbucket/package.json +++ b/packages/publisher/bitbucket/package.json @@ -1,6 +1,6 @@ { "name": "@electron-forge/publisher-bitbucket", - "version": "6.0.3", + "version": "6.0.5", "description": "Bitbucket publisher for Electron Forge", "repository": "https://github.com/electron/forge", "author": "Luke Batchelor", @@ -15,7 +15,7 @@ "node": ">= 14.17.5" }, "dependencies": { - "@electron-forge/publisher-base": "^6.0.3", + "@electron-forge/publisher-base": "6.0.5", "form-data": "^4.0.0", "fs-extra": "^10.0.0", "node-fetch": "^2.6.7" diff --git a/packages/publisher/electron-release-server/package.json b/packages/publisher/electron-release-server/package.json index 2ac9916e1c..e381ac8da3 100644 --- a/packages/publisher/electron-release-server/package.json +++ b/packages/publisher/electron-release-server/package.json @@ -1,6 +1,6 @@ { "name": "@electron-forge/publisher-electron-release-server", - "version": "6.0.3", + "version": "6.0.5", "description": "Electron release server publisher for Electron Forge", "repository": "https://github.com/electron/forge", "author": "Samuel Attard", @@ -18,8 +18,8 @@ "node": ">= 14.17.5" }, "dependencies": { - "@electron-forge/publisher-base": "^6.0.3", - "@electron-forge/shared-types": "^6.0.3", + "@electron-forge/publisher-base": "6.0.5", + "@electron-forge/shared-types": "6.0.5", "debug": "^4.3.1", "form-data": "^4.0.0", "fs-extra": "^10.0.0", diff --git a/packages/publisher/electron-release-server/src/PublisherERS.ts b/packages/publisher/electron-release-server/src/PublisherERS.ts index 3902cf9d97..891801e11d 100644 --- a/packages/publisher/electron-release-server/src/PublisherERS.ts +++ b/packages/publisher/electron-release-server/src/PublisherERS.ts @@ -11,10 +11,19 @@ import { PublisherERSConfig } from './Config'; const d = debug('electron-forge:publish:ers'); +interface ERSAsset { + name: string; + platform: string; +} + +interface ERSFlavor { + name: string; +} + interface ERSVersion { name: string; - assets: { name: string }[]; - flavor?: string; + assets: ERSAsset[]; + flavor: ERSFlavor; } const fetchAndCheckStatus = async (url: RequestInfo, init?: RequestInit): Promise => { @@ -71,20 +80,21 @@ export default class PublisherERS extends PublisherBase { const authFetch = (apiPath: string, options?: RequestInit) => fetchAndCheckStatus(api(apiPath), { ...(options || {}), headers: { ...(options || {}).headers, Authorization: `Bearer ${token}` } }); - const versions: ERSVersion[] = await (await authFetch('api/version')).json(); const flavor = config.flavor || 'default'; for (const makeResult of makeResults) { const { packageJSON } = makeResult; const artifacts = makeResult.artifacts.filter((artifactPath) => path.basename(artifactPath).toLowerCase() !== 'releases'); - const existingVersion = versions.find((version) => { - return version.name === packageJSON.version && (!version.flavor || version.flavor === flavor); - }); + const versions: ERSVersion[] = await (await authFetch('api/version')).json(); + // Find the version with the same name and flavor + const existingVersion = versions.find((version) => version.name === packageJSON.version && version.flavor.name === flavor); let channel = 'stable'; if (config.channel) { channel = config.channel; + } else if (packageJSON.version.includes('rc')) { + channel = 'rc'; } else if (packageJSON.version.includes('beta')) { channel = 'beta'; } else if (packageJSON.version.includes('alpha')) { @@ -95,12 +105,11 @@ export default class PublisherERS extends PublisherBase { await authFetch('api/version', { method: 'POST', body: JSON.stringify({ - channel: { - name: channel, - }, - flavor: config.flavor, + channel: channel, + flavor: flavor, name: packageJSON.version, notes: '', + id: packageJSON.version + '_' + channel, }), headers: { 'Content-Type': 'application/json', @@ -113,10 +122,10 @@ export default class PublisherERS extends PublisherBase { updateStatusLine(); await Promise.all( - artifacts.map(async (artifactPath) => { + artifacts.map(async (artifactPath: string) => { + const platform = ersPlatform(makeResult.platform, makeResult.arch); if (existingVersion) { - const existingAsset = existingVersion.assets.find((asset) => asset.name === path.basename(artifactPath)); - + const existingAsset = existingVersion.assets.find((asset) => asset.name === path.basename(artifactPath) && asset.platform === platform); if (existingAsset) { d('asset at path:', artifactPath, 'already exists on server'); uploaded += 1; @@ -127,9 +136,8 @@ export default class PublisherERS extends PublisherBase { d('attempting to upload asset:', artifactPath); const artifactForm = new FormData(); artifactForm.append('token', token); - artifactForm.append('version', packageJSON.version); - artifactForm.append('platform', ersPlatform(makeResult.platform, makeResult.arch)); - + artifactForm.append('version', `${packageJSON.version}_${flavor}`); + artifactForm.append('platform', platform); // see https://github.com/form-data/form-data/issues/426 const fileOptions = { knownLength: fs.statSync(artifactPath).size, diff --git a/packages/publisher/electron-release-server/test/PublisherERS_spec.ts b/packages/publisher/electron-release-server/test/PublisherERS_spec.ts index ccc36d3f5e..52a79d4c2c 100644 --- a/packages/publisher/electron-release-server/test/PublisherERS_spec.ts +++ b/packages/publisher/electron-release-server/test/PublisherERS_spec.ts @@ -35,7 +35,7 @@ describe('PublisherERS', () => { // mock login fetch.postOnce('path:/api/auth/login', { body: { token }, status: 200 }); // mock fetch all existing versions - fetch.getOnce('path:/api/version', { body: [{ name: '2.0.0', assets: [], flavor: 'default' }], status: 200 }); + fetch.getOnce('path:/api/version', { body: [{ name: '2.0.0', assets: [], flavor: { name: 'default' } }], status: 200 }); // mock creating a new version fetch.postOnce('path:/api/version', { status: 200 }); // mock asset upload @@ -65,7 +65,7 @@ describe('PublisherERS', () => { // creates a new version with the correct flavor, name, and channel expect(calls[2][0]).to.equal(`${baseUrl}/api/version`); - expect(calls[2][1]?.body).to.equal(`{"channel":{"name":"stable"},"flavor":"${flavor}","name":"${version}","notes":""}`); + expect(calls[2][1]?.body).to.equal(`{"channel":"stable","flavor":"${flavor}","name":"${version}","notes":"","id":"${version}_stable"}`); // uploads asset successfully expect(calls[3][0]).to.equal(`${baseUrl}/api/asset`); @@ -83,7 +83,7 @@ describe('PublisherERS', () => { // mock login fetch.postOnce('path:/api/auth/login', { body: { token }, status: 200 }); // mock fetch all existing versions - fetch.getOnce('path:/api/version', { body: [{ name: '2.0.0', assets: [], flavor: 'lite' }], status: 200 }); + fetch.getOnce('path:/api/version', { body: [{ name: '2.0.0', assets: [], flavor: { name: 'lite' } }], status: 200 }); // mock asset upload fetch.post('path:/api/asset', { status: 200 }); @@ -123,7 +123,10 @@ describe('PublisherERS', () => { // mock login fetch.postOnce('path:/api/auth/login', { body: { token }, status: 200 }); // mock fetch all existing versions - fetch.getOnce('path:/api/version', { body: [{ name: '2.0.0', assets: [{ name: 'existing-artifact' }], flavor: 'default' }], status: 200 }); + fetch.getOnce('path:/api/version', { + body: [{ name: '2.0.0', assets: [{ name: 'existing-artifact', platform: 'linux_64' }], flavor: { name: 'default' } }], + status: 200, + }); const publisher = new PublisherERS({ baseUrl, @@ -158,7 +161,7 @@ describe('PublisherERS', () => { // mock login fetch.postOnce('path:/api/auth/login', { body: { token }, status: 200 }); // mock fetch all existing versions - fetch.getOnce('path:/api/version', { body: [{ name: '2.0.0', assets: [{ name: 'existing-artifact' }], flavor: 'default' }], status: 200 }); + fetch.getOnce('path:/api/version', { body: [{ name: '2.0.0', assets: [{ name: 'existing-artifact' }], flavor: { name: 'default' } }], status: 200 }); // mock creating a new version fetch.postOnce('path:/api/version', { status: 200 }); // mock asset upload @@ -188,7 +191,7 @@ describe('PublisherERS', () => { // creates a new version with the correct flavor, name, and channel expect(calls[2][0]).to.equal(`${baseUrl}/api/version`); - expect(calls[2][1]?.body).to.equal(`{"channel":{"name":"stable"},"flavor":"${flavor}","name":"${version}","notes":""}`); + expect(calls[2][1]?.body).to.equal(`{"channel":"stable","flavor":"${flavor}","name":"${version}","notes":"","id":"${version}_stable"}`); // uploads asset successfully expect(calls[3][0]).to.equal(`${baseUrl}/api/asset`); diff --git a/packages/publisher/github/package.json b/packages/publisher/github/package.json index 6670bcedbd..cccf2fa06f 100644 --- a/packages/publisher/github/package.json +++ b/packages/publisher/github/package.json @@ -1,6 +1,6 @@ { "name": "@electron-forge/publisher-github", - "version": "6.0.3", + "version": "6.0.5", "description": "Github publisher for Electron Forge", "repository": "https://github.com/electron/forge", "author": "Samuel Attard", @@ -21,8 +21,8 @@ "node": ">= 14.17.5" }, "dependencies": { - "@electron-forge/publisher-base": "^6.0.3", - "@electron-forge/shared-types": "^6.0.3", + "@electron-forge/publisher-base": "6.0.5", + "@electron-forge/shared-types": "6.0.5", "@octokit/core": "^3.2.4", "@octokit/plugin-retry": "^3.0.9", "@octokit/rest": "^18.0.11", diff --git a/packages/publisher/nucleus/package.json b/packages/publisher/nucleus/package.json index 7db9f37d5a..9be4818cd7 100644 --- a/packages/publisher/nucleus/package.json +++ b/packages/publisher/nucleus/package.json @@ -1,6 +1,6 @@ { "name": "@electron-forge/publisher-nucleus", - "version": "6.0.3", + "version": "6.0.5", "description": "Nucleus publisher for Electron Forge", "repository": "https://github.com/electron/forge", "author": "Samuel Attard", @@ -15,8 +15,8 @@ "node": ">= 14.17.5" }, "dependencies": { - "@electron-forge/publisher-base": "^6.0.3", - "@electron-forge/shared-types": "^6.0.3", + "@electron-forge/publisher-base": "6.0.5", + "@electron-forge/shared-types": "6.0.5", "debug": "^4.3.1", "form-data": "^4.0.0", "node-fetch": "^2.6.7" diff --git a/packages/publisher/s3/package.json b/packages/publisher/s3/package.json index 208560cd35..10c104a579 100644 --- a/packages/publisher/s3/package.json +++ b/packages/publisher/s3/package.json @@ -1,6 +1,6 @@ { "name": "@electron-forge/publisher-s3", - "version": "6.0.3", + "version": "6.0.5", "description": "S3 publisher for Electron Forge", "repository": "https://github.com/electron/forge", "author": "Samuel Attard", @@ -19,8 +19,8 @@ "@aws-sdk/client-s3": "^3.28.0", "@aws-sdk/lib-storage": "^3.28.0", "@aws-sdk/types": "^3.25.0", - "@electron-forge/publisher-base": "^6.0.3", - "@electron-forge/shared-types": "^6.0.3", + "@electron-forge/publisher-base": "6.0.5", + "@electron-forge/shared-types": "6.0.5", "debug": "^4.3.1" }, "publishConfig": { diff --git a/packages/publisher/snapcraft/package.json b/packages/publisher/snapcraft/package.json index 047d57235b..cfc36bc806 100644 --- a/packages/publisher/snapcraft/package.json +++ b/packages/publisher/snapcraft/package.json @@ -1,6 +1,6 @@ { "name": "@electron-forge/publisher-snapcraft", - "version": "6.0.3", + "version": "6.0.5", "description": "Snapcraft publisher for Electron Forge", "repository": "https://github.com/electron/forge", "author": "Samuel Attard", @@ -15,7 +15,7 @@ "node": ">= 14.17.5" }, "dependencies": { - "@electron-forge/publisher-base": "^6.0.3", + "@electron-forge/publisher-base": "6.0.5", "fs-extra": "^10.0.0" }, "optionalDependencies": { diff --git a/packages/template/base/package.json b/packages/template/base/package.json index a1d01d83ba..5f8585b220 100644 --- a/packages/template/base/package.json +++ b/packages/template/base/package.json @@ -1,6 +1,6 @@ { "name": "@electron-forge/template-base", - "version": "6.0.3", + "version": "6.0.5", "description": "Base template for Electron Forge", "repository": "https://github.com/electron/forge", "author": "Samuel Attard", @@ -14,14 +14,14 @@ "node": ">= 14.17.5" }, "dependencies": { - "@electron-forge/shared-types": "^6.0.3", + "@electron-forge/shared-types": "6.0.5", "@malept/cross-spawn-promise": "^2.0.0", "debug": "^4.3.1", "fs-extra": "^10.0.0", "username": "^5.1.0" }, "devDependencies": { - "@electron-forge/test-utils": "^6.0.3", + "@electron-forge/test-utils": "6.0.5", "chai": "^4.3.3", "mocha": "^9.0.1", "proxyquire": "^2.1.3", diff --git a/packages/template/webpack-typescript/package.json b/packages/template/webpack-typescript/package.json index 0f7bf979ed..40cd73a6d2 100644 --- a/packages/template/webpack-typescript/package.json +++ b/packages/template/webpack-typescript/package.json @@ -1,6 +1,6 @@ { "name": "@electron-forge/template-webpack-typescript", - "version": "6.0.3", + "version": "6.0.5", "description": "Webpack-TypeScript template for Electron Forge", "repository": "https://github.com/electron/forge", "author": "Shelley Vohr ", @@ -14,19 +14,18 @@ "node": ">= 14.17.5" }, "dependencies": { - "@electron-forge/shared-types": "^6.0.3", - "@electron-forge/template-base": "^6.0.3", + "@electron-forge/shared-types": "6.0.5", + "@electron-forge/template-base": "6.0.5", "fs-extra": "^10.0.0" }, "devDependencies": { - "@electron-forge/core-utils": "^6.0.3", - "@electron-forge/maker-deb": "^6.0.3", - "@electron-forge/maker-rpm": "^6.0.3", - "@electron-forge/maker-squirrel": "^6.0.3", - "@electron-forge/maker-zip": "^6.0.3", - "@electron-forge/plugin-auto-unpack-natives": "^6.0.3", - "@electron-forge/plugin-webpack": "^6.0.3", - "@electron-forge/test-utils": "^6.0.3", + "@electron-forge/core-utils": "6.0.5", + "@electron-forge/maker-deb": "6.0.5", + "@electron-forge/maker-rpm": "6.0.5", + "@electron-forge/maker-squirrel": "6.0.5", + "@electron-forge/maker-zip": "6.0.5", + "@electron-forge/plugin-webpack": "6.0.5", + "@electron-forge/test-utils": "6.0.5", "chai": "^4.3.3", "fast-glob": "^3.2.7", "fork-ts-checker-webpack-plugin": "^7.2.13", diff --git a/packages/template/webpack/package.json b/packages/template/webpack/package.json index 658abf5eb5..ce6a3506f7 100644 --- a/packages/template/webpack/package.json +++ b/packages/template/webpack/package.json @@ -1,6 +1,6 @@ { "name": "@electron-forge/template-webpack", - "version": "6.0.3", + "version": "6.0.5", "description": "Webpack template for Electron Forge, gets you started with Webpack really quickly", "repository": "https://github.com/electron/forge", "author": "Samuel Attard", @@ -14,12 +14,12 @@ "node": ">= 14.17.5" }, "dependencies": { - "@electron-forge/shared-types": "^6.0.3", - "@electron-forge/template-base": "^6.0.3", + "@electron-forge/shared-types": "6.0.5", + "@electron-forge/template-base": "6.0.5", "fs-extra": "^10.0.0" }, "devDependencies": { - "@electron-forge/test-utils": "^6.0.3", + "@electron-forge/test-utils": "6.0.5", "chai": "^4.3.3", "listr2": "^5.0.3" }, diff --git a/packages/utils/core-utils/package.json b/packages/utils/core-utils/package.json index 14eadbadb6..c7494886c1 100644 --- a/packages/utils/core-utils/package.json +++ b/packages/utils/core-utils/package.json @@ -1,14 +1,14 @@ { "name": "@electron-forge/core-utils", - "version": "6.0.3", + "version": "6.0.5", "description": "Core utilities for the Electron Forge packages", - "repository": "https://github.com/electron-userland/electron-forge", + "repository": "https://github.com/electron/forge", "author": "Samuel Attard", "license": "MIT", "main": "dist/index.js", "typings": "dist/index.d.ts", "dependencies": { - "@electron-forge/shared-types": "^6.0.3", + "@electron-forge/shared-types": "6.0.5", "@electron/rebuild": "^3.2.10", "@malept/cross-spawn-promise": "^2.0.0", "chalk": "^4.0.0", diff --git a/packages/utils/test-utils/package.json b/packages/utils/test-utils/package.json index e4233a52d9..43294175f9 100644 --- a/packages/utils/test-utils/package.json +++ b/packages/utils/test-utils/package.json @@ -1,6 +1,6 @@ { "name": "@electron-forge/test-utils", - "version": "6.0.3", + "version": "6.0.5", "description": "Helper utilities for the Electron Forge testsuite", "repository": "https://github.com/electron/forge", "author": "Mark Lee", diff --git a/packages/utils/types/package.json b/packages/utils/types/package.json index 1cad14a135..8fc78047dc 100644 --- a/packages/utils/types/package.json +++ b/packages/utils/types/package.json @@ -1,6 +1,6 @@ { "name": "@electron-forge/shared-types", - "version": "6.0.3", + "version": "6.0.5", "description": "Shared types across Electron Forge", "repository": "https://github.com/electron/forge", "author": "Samuel Attard", diff --git a/packages/utils/web-multi-logger/package.json b/packages/utils/web-multi-logger/package.json index 527f317c28..f1fb17a500 100644 --- a/packages/utils/web-multi-logger/package.json +++ b/packages/utils/web-multi-logger/package.json @@ -1,6 +1,6 @@ { "name": "@electron-forge/web-multi-logger", - "version": "6.0.3", + "version": "6.0.5", "description": "Display multiple streams of logs in one window", "repository": "https://github.com/electron/forge", "author": "Samuel Attard", diff --git a/tools/gen-docs.ts b/tools/gen-docs.ts index 3d3b6d79aa..be7574c93e 100644 --- a/tools/gen-docs.ts +++ b/tools/gen-docs.ts @@ -39,7 +39,6 @@ function generatedSidebarGroups(projReflection: typedoc.ProjectReflection) { excludeProtected: true, externalPattern: ['**/node_modules/@types/node/**', '**/node_modules/typescript/**'], hideGenerator: true, - includeVersion: true, name: 'Electron Forge', plugin: ['typedoc-plugin-rename-defaults', 'typedoc-plugin-missing-exports', './tools/doc-plugin/dist/index.js', '@knodes/typedoc-plugin-monorepo-readmes'], theme: 'forge-theme', diff --git a/tools/gen-tsconfigs.ts b/tools/gen-tsconfigs.ts index ee24eeeeff..6bc7325db6 100644 --- a/tools/gen-tsconfigs.ts +++ b/tools/gen-tsconfigs.ts @@ -3,25 +3,6 @@ import * as path from 'path'; import { getPackageInfo } from './utils'; -const BASE_TS_CONFIG = { - '//': '⚠️ AUTOGENERATED ⚠️ This file was automatically generated by tools/gen-tsconfigs.ts, do not edit manually.', - compilerOptions: { - module: 'commonjs', - target: 'es2019', - outDir: 'dist', - lib: ['dom', 'es2019'], - sourceMap: true, - rootDir: 'src', - experimentalDecorators: true, - strict: true, - esModuleInterop: true, - declaration: true, - composite: true, - declarationMap: true, - }, - exclude: ['node_modules', 'dist', 'test', 'index.ts', 'tmpl'], -}; - /** * Filters out non-unique items in an array. */ @@ -30,8 +11,23 @@ function filterDupes(arr: readonly T[]): T[] { } (async () => { + const BASE_TS_CONFIG = JSON.parse(await fs.readFile(path.resolve(__dirname, '../tsconfig.base.json'), 'utf-8')); const packages = await getPackageInfo(); + // Generate a root tsconfig.json for project references + const rootPackagesConfig = { + files: [], + references: packages.map((p) => { + const pathArr = p.path.split(path.sep); + const pathFromPackages = pathArr.slice(pathArr.indexOf('packages') + 1).join(path.sep); + return { + path: pathFromPackages, + }; + }), + }; + + fs.writeFile(path.resolve(__dirname, '../packages/tsconfig.json'), JSON.stringify(rootPackagesConfig, null, 2)); + // Do each package in parallel await Promise.all( packages.map((pkg) => { diff --git a/tools/test-dist.ts b/tools/test-dist.ts index 0ade3cd7d4..d76aa80cb1 100644 --- a/tools/test-dist.ts +++ b/tools/test-dist.ts @@ -7,11 +7,19 @@ const BASE_DIR = path.resolve(__dirname, '..'); const PACKAGES_DIR = path.resolve(BASE_DIR, 'packages'); (async () => { - const dirsToCheck = []; + const dirsToCheck: string[] = []; for (const subDir of await fs.readdir(PACKAGES_DIR)) { - for (const packageDir of await fs.readdir(path.resolve(PACKAGES_DIR, subDir))) { - dirsToCheck.push(path.resolve(PACKAGES_DIR, subDir, packageDir)); + const subDirPath = path.resolve(PACKAGES_DIR, subDir); + const stat = await fs.lstat(subDirPath); + if (stat.isDirectory()) { + for (const packageDir of await fs.readdir(subDirPath)) { + const packageDirPath = path.resolve(PACKAGES_DIR, subDir, packageDir); + const stat = await fs.lstat(packageDirPath); + if (stat.isDirectory()) { + dirsToCheck.push(packageDirPath); + } + } } } diff --git a/tools/test-globber.ts b/tools/test-globber.ts index 8a3076b547..c1a2ee1019 100644 --- a/tools/test-globber.ts +++ b/tools/test-globber.ts @@ -7,6 +7,7 @@ import { getPackageInfoSync } from './utils'; const argv = minimist(process.argv.slice(process.argv.findIndex((arg) => arg === 'mocha.opts'))); +const isSlow = argv.slow || process.env.TEST_SLOW_ONLY; const isFast = argv.fast || process.env.TEST_FAST_ONLY; const packages = getPackageInfoSync(); @@ -22,7 +23,7 @@ for (const p of packages) { if (argv.glob) { specGlob.push(path.posix.join(packagePath, argv.glob)); } else { - specGlob.push(path.posix.join(packagePath, 'test', '**', `*_spec${isFast ? '' : '*'}.ts`)); + specGlob.push(path.posix.join(packagePath, 'test', '**', `*_spec${isFast ? '' : isSlow ? '_slow' : '*'}.ts`)); } testFiles.push(...glob.sync(specGlob)); } diff --git a/tools/utils.ts b/tools/utils.ts index dcd1c1711f..849a2299e8 100644 --- a/tools/utils.ts +++ b/tools/utils.ts @@ -15,14 +15,19 @@ export const getPackageInfo = async (): Promise => { const packages: Package[] = []; for (const subDir of await fs.readdir(PACKAGES_DIR)) { - for (const packageDir of await fs.readdir(path.resolve(PACKAGES_DIR, subDir))) { - const packagePath = path.resolve(PACKAGES_DIR, subDir, packageDir); - const pkg = await fs.readJson(path.resolve(packagePath, 'package.json')); - packages.push({ - path: packagePath, - name: pkg.name, - manifest: pkg, - }); + const subDirPath = path.resolve(PACKAGES_DIR, subDir); + const stat = await fs.lstat(subDirPath); + + if (stat.isDirectory()) { + for (const packageDir of await fs.readdir(subDirPath)) { + const packagePath = path.resolve(subDirPath, packageDir); + const pkg = await fs.readJson(path.resolve(packagePath, 'package.json')); + packages.push({ + path: packagePath, + name: pkg.name, + manifest: pkg, + }); + } } } @@ -33,14 +38,18 @@ export const getPackageInfoSync = (): Package[] => { const packages: Package[] = []; for (const subDir of fs.readdirSync(PACKAGES_DIR)) { - for (const packageDir of fs.readdirSync(path.resolve(PACKAGES_DIR, subDir))) { - const packagePath = path.resolve(PACKAGES_DIR, subDir, packageDir); - const pkg = fs.readJsonSync(path.resolve(packagePath, 'package.json')); - packages.push({ - path: packagePath, - name: pkg.name, - manifest: pkg, - }); + const subDirPath = path.resolve(PACKAGES_DIR, subDir); + const stat = fs.lstatSync(subDirPath); + if (stat.isDirectory()) { + for (const packageDir of fs.readdirSync(subDirPath)) { + const packagePath = path.resolve(subDirPath, packageDir); + const pkg = fs.readJsonSync(path.resolve(packagePath, 'package.json')); + packages.push({ + path: packagePath, + name: pkg.name, + manifest: pkg, + }); + } } } diff --git a/tsconfig.base.json b/tsconfig.base.json new file mode 100644 index 0000000000..e788478fce --- /dev/null +++ b/tsconfig.base.json @@ -0,0 +1,17 @@ +{ + "compilerOptions": { + "module": "commonjs", + "target": "es2019", + "outDir": "dist", + "lib": ["dom", "es2019"], + "inlineSourceMap": true, + "rootDir": "src", + "experimentalDecorators": true, + "strict": true, + "esModuleInterop": true, + "declaration": true, + "composite": true, + "declarationMap": true + }, + "exclude": ["node_modules", "dist", "test", "index.ts", "tmpl"] +} diff --git a/yarn.lock b/yarn.lock index 2719308b38..82e8fdd782 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1081,17 +1081,17 @@ integrity sha512-Nz2QxdGiYh7nHgRU4R5/v6NDGW+IYv7j7dyQgpjtl4aJzrwHAdoZ0yxz7/YO8bgIOyDJJlF7jbUqjYpPClk9ZQ== "@doyensec/electronegativity@^1.9.1": - version "1.9.1" - resolved "https://registry.yarnpkg.com/@doyensec/electronegativity/-/electronegativity-1.9.1.tgz#fc528b775cfb8416e8791a5c51d39d08b4d9686e" - integrity sha512-G2gnxQRgpRoVJkqS22YntY509XOE5Ix4Y5mrw3S/vqLnF4XwCDpnfofyOYP1mmNgdOD9YS4hYxQ/5VT+iY5Orw== + version "1.10.1" + resolved "https://registry.yarnpkg.com/@doyensec/electronegativity/-/electronegativity-1.10.1.tgz#3cad691ad512845396a580187f8a2c5e6d04950e" + integrity sha512-fozYcSPQya6VnunxSJy7/ZlUVvX/Haak/vAzUQSPKK0D5WKE3CqkbyrAYzYPUSZEFeopWLx5whvk2RSJO2XFVw== dependencies: "@babel/parser" "^7.14.3" "@babel/traverse" "^7.14.2" "@doyensec/csp-evaluator" "^1.0.3" + "@electron/asar" "^3.0.3" "@mapbox/node-pre-gyp" "^1.0.5" "@typescript-eslint/typescript-estree" "^4.24.0" "@yarnpkg/lockfile" "^1.1.0" - asar "^3.0.3" chalk "^4.1.1" cheerio "^1.0.0-rc.9" cli-progress "^3.9.0" @@ -1102,10 +1102,10 @@ estraverse "^5.2.0" estraverse-fb "^1.3.2" got "^11.8.2" + i18n "^0.15.1" ini "^1.3.8" linenumber "^1.0.1" lodash "^4.17.21" - mocha "^8.4.0" node-dir "^0.1.17" read-package-tree "^5.3.1" semver "^7.3.5" @@ -1113,6 +1113,18 @@ typescript "~4.2.4" winston "^2.3.1" +"@electron/asar@^3.0.3": + version "3.2.2" + resolved "https://registry.yarnpkg.com/@electron/asar/-/asar-3.2.2.tgz#f6ae4eb4343ad00b994c40db3f09f71f968ff9c0" + integrity sha512-32fMU68x8a6zvxtC1IC/BhPDKTh8rQjdmwEplj3CDpnkcwBzZVN9v/8cK0LJqQ0FOQQVZW8BWZ1S6UU53TYR4w== + dependencies: + chromium-pickle-js "^0.2.0" + commander "^5.0.0" + glob "^7.1.6" + minimatch "^3.0.4" + optionalDependencies: + "@types/glob" "^7.1.1" + "@electron/asar@^3.2.1": version "3.2.1" resolved "https://registry.yarnpkg.com/@electron/asar/-/asar-3.2.1.tgz#c4143896f3dd43b59a80a9c9068d76f77efb62ea" @@ -1182,14 +1194,14 @@ yargs "^17.0.1" "@electron/universal@^1.3.2": - version "1.3.3" - resolved "https://registry.yarnpkg.com/@electron/universal/-/universal-1.3.3.tgz#f22088dce7f2e808130fd1bbcd43925246adfa59" - integrity sha512-79yc61D5QWaQpia+sLQbIIi5iVoV4y9HtgOTlE0fYT0xoyg+ChwndBl4a0Q7yJfDsqq+/nLEPE655F0bTpDiCg== + version "1.3.4" + resolved "https://registry.yarnpkg.com/@electron/universal/-/universal-1.3.4.tgz#bccd94b635d7c85eeed5eabba457eb4ed2be2777" + integrity sha512-BdhBgm2ZBnYyYRLRgOjM5VHkyFItsbggJ0MHycOjKWdFGYwK97ZFXH54dTvUWEfha81vfvwr5On6XBjt99uDcg== dependencies: "@electron/asar" "^3.2.1" "@malept/cross-spawn-promise" "^1.1.0" debug "^4.3.1" - dir-compare "^2.4.0" + dir-compare "^3.0.0" fs-extra "^9.0.1" minimatch "^3.0.4" plist "^3.0.4" @@ -2075,6 +2087,42 @@ semver "^7.3.5" tar "^6.1.11" +"@messageformat/core@^3.0.0": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@messageformat/core/-/core-3.0.1.tgz#191e12cf9643704d1fd32e592a3fbdc194dd588e" + integrity sha512-yxj2+0e46hcZqJfNf0ZYbC2q6WlcGoh4g11mCyRtTueR0AD8F9z4JMYAS1aOiFG8Vl1LZg/h5hZHKmWTAyZq8g== + dependencies: + "@messageformat/date-skeleton" "^1.0.0" + "@messageformat/number-skeleton" "^1.0.0" + "@messageformat/parser" "^5.0.0" + "@messageformat/runtime" "^3.0.1" + make-plural "^7.0.0" + safe-identifier "^0.4.1" + +"@messageformat/date-skeleton@^1.0.0": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@messageformat/date-skeleton/-/date-skeleton-1.0.1.tgz#980b8babe21a11433b6e1e8f6dc8c4cae4f5f56b" + integrity sha512-jPXy8fg+WMPIgmGjxSlnGJn68h/2InfT0TNSkVx0IGXgp4ynnvYkbZ51dGWmGySEK+pBiYUttbQdu5XEqX5CRg== + +"@messageformat/number-skeleton@^1.0.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@messageformat/number-skeleton/-/number-skeleton-1.1.0.tgz#eb636738da8abbd35ccbeb84f7d84d63302aeb61" + integrity sha512-F0Io+GOSvFFxvp9Ze3L5kAoZ2NnOAT0Mr/jpGNd3fqo8A0t4NxNIAcCdggtl2B/gN2ErkIKSBVPrF7xcW1IGvA== + +"@messageformat/parser@^5.0.0": + version "5.0.0" + resolved "https://registry.yarnpkg.com/@messageformat/parser/-/parser-5.0.0.tgz#5737e69d7d4a469998b527710f1891174fc1b262" + integrity sha512-WiDKhi8F0zQaFU8cXgqq69eYFarCnTVxKcvhAONufKf0oUxbqLMW6JX6rV4Hqh+BEQWGyKKKHY4g1XA6bCLylA== + dependencies: + moo "^0.5.1" + +"@messageformat/runtime@^3.0.1": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@messageformat/runtime/-/runtime-3.0.1.tgz#94d1f6c43265c28ef7aed98ecfcc0968c6c849ac" + integrity sha512-6RU5ol2lDtO8bD9Yxe6CZkl0DArdv0qkuoZC+ZwowU+cdRlVE1157wjCmlA5Rsf1Xc/brACnsZa5PZpEDfTFFg== + dependencies: + make-plural "^7.0.0" + "@microsoft/tsdoc-config@0.15.2": version "0.15.2" resolved "https://registry.yarnpkg.com/@microsoft/tsdoc-config/-/tsdoc-config-0.15.2.tgz#eb353c93f3b62ab74bdc9ab6f4a82bcf80140f14" @@ -2528,109 +2576,6 @@ resolved "https://registry.yarnpkg.com/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz#8da5c6530915653f3a1f38fd5f101d8c3f8079c5" integrity sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ== -"@swc/cli@^0.1.49": - version "0.1.55" - resolved "https://registry.yarnpkg.com/@swc/cli/-/cli-0.1.55.tgz#6c00b836ae56f35b4a5243f7fad5f9674470b016" - integrity sha512-akkLuRexFq8XTi6JNZ27mXD4wcKXLDSLj4g7YMU+/upFM8IeD1IEp1Mxtre7MzCZn+QOQgPF8N8IReJoHuSn3g== - dependencies: - commander "^7.1.0" - fast-glob "^3.2.5" - slash "3.0.0" - source-map "^0.7.3" - -"@swc/core-android-arm-eabi@1.2.139": - version "1.2.139" - resolved "https://registry.yarnpkg.com/@swc/core-android-arm-eabi/-/core-android-arm-eabi-1.2.139.tgz#87a216fd40c0f8f482c92cf3eef85771140bcb1e" - integrity sha512-ceZNzueo6iazeO9b8txKFk/v1MOmHuCm53Cv0SMJdtEBLIs6GqpLnPzRBswnQEdL4Ge+EGD5YRtw3mAdSLcTzQ== - -"@swc/core-android-arm64@1.2.139": - version "1.2.139" - resolved "https://registry.yarnpkg.com/@swc/core-android-arm64/-/core-android-arm64-1.2.139.tgz#41ce38212c38d7574aae8450e65b91fc66f45d8a" - integrity sha512-94kdkt+1zWJbxavSlTkTbTIklKjNByiCGYf920a/D5Nb0cuRXUHfxVPToHhzetFRMoNfnQPVhL3Wid/Gt02tBw== - -"@swc/core-darwin-arm64@1.2.139": - version "1.2.139" - resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.2.139.tgz#dc9085557d3f55650ec649221e0f6279ab8fa9df" - integrity sha512-l3C6ItB4OX1QEART1TnaUNzHeviDinbRQQZKJI8xo23HnhV0pvDjYl0D62R+1/7e8KiSweEG8BuKEtXPEYCBlw== - -"@swc/core-darwin-x64@1.2.139": - version "1.2.139" - resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.2.139.tgz#0e51a1be584e60deb7465b016db0797dd6aa2a7b" - integrity sha512-4KMTARit3LiJ+IZtxRAfiv7V7rrqryIxs+uZJmOfjenGIp3A+ygYzbm9PT/wfRiefL9Ds1nLBSAA1tQ6jiwObA== - -"@swc/core-freebsd-x64@1.2.139": - version "1.2.139" - resolved "https://registry.yarnpkg.com/@swc/core-freebsd-x64/-/core-freebsd-x64-1.2.139.tgz#b43ab6a8f6d97c4e2c9a0fac2dc9b09d1625a818" - integrity sha512-qZFIV98J7IS692JSSsTWmhBB9jVv0zmqHm+65xAblitlZ06wyFpOF7cLBuJQPdEXxrmoD3z6skD879U5q89NGw== - -"@swc/core-linux-arm-gnueabihf@1.2.139": - version "1.2.139" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.2.139.tgz#53bc7ee2fa8d408dba1b1613756e92ebd39ba53f" - integrity sha512-DX/yRuOrDRoddvofDgbuXmJXFHtGL+M0TgQll+7M2bW293jTGT1D1dkQuTQ/oxiVyA5bXShm+/Rrh8ozNf/ieA== - -"@swc/core-linux-arm64-gnu@1.2.139": - version "1.2.139" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.2.139.tgz#c7a29b2c5326a15425239b12c800894568e2fb98" - integrity sha512-ScLMFY121bzO4yOALxHlHut8Gj/cfJ74NL0JOzwtzL4lUJ1wkgmkHFJQNn5gXXrkTcfKR7o9D00R0WsbCfJGYA== - -"@swc/core-linux-arm64-musl@1.2.139": - version "1.2.139" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.2.139.tgz#f788bb33039408374190d206378be72304404002" - integrity sha512-uSdVTMkBJtkfgKBAQxMz+lV/Kjx2IggWG1G57NIHJGNE2NMTBvpynjljLrL8jVBPAWxks4qANSsN4yixPmw7LA== - -"@swc/core-linux-x64-gnu@1.2.139": - version "1.2.139" - resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.2.139.tgz#1161a5ce59b7c4a5adfe6c5aa0d673cc2bdb10c5" - integrity sha512-qpD9HQB50zZRIB/i21RjThUk7FRo7tLiHjcnSxZBnPcPYTM5sdzatrnO6b5/NnKngM1HW75OfJ1tvyccrU3Ufg== - -"@swc/core-linux-x64-musl@1.2.139": - version "1.2.139" - resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.2.139.tgz#f713b33355f0e165a0b928d0b824c4d21564535e" - integrity sha512-ILm4Z+StN+spNrhA6P6m9lXkmU0Ban4GeWaI2ErslyTFNaybQiwKlXlCNmsylzKlpEQd4nCpYy3vIFoeOoyJlQ== - -"@swc/core-win32-arm64-msvc@1.2.139": - version "1.2.139" - resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.2.139.tgz#17a5a20be0bf8f3ebbd6a29a912faa67f4db56d9" - integrity sha512-hIckLZ08lqWlHdJyFQG4tZCMdnvqqBQTB/6FYUU0pWB5bTMIixFfMV8XytWZJinNgXVgi6PApU4IHbWksUrHdg== - -"@swc/core-win32-ia32-msvc@1.2.139": - version "1.2.139" - resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.2.139.tgz#47973072fe603c9a9e846f675f89909e9a7fac51" - integrity sha512-rN5XmVXW+Y/GZ/5FiV99R/0QejuN6YwDH/LoiEE85I8ytbLPBlpL2yhSe48BPhSeHgAwLpgeaK2NOKSeuhsHrA== - -"@swc/core-win32-x64-msvc@1.2.139": - version "1.2.139" - resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.2.139.tgz#d028873939e677c0ed86471e15aeff8d4288c39b" - integrity sha512-N1zvgp/xlSEgi6msYI2zkyY/B9RlIuLjuyUu5VmFY6dylCwwukCHu6Vi6kYYKEtNoZCGWvSCgKbg87TMydetxQ== - -"@swc/core@^1.2.87": - version "1.2.139" - resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.2.139.tgz#b7e042eaf102bebdfaf56a0c11196e2caa4ecf89" - integrity sha512-VlISQI7H6kIJT0Hhl6UVEOAb1HcuqWCnsoMHxVGdEQZlxt8g+ggyrY7F4AZoTvfgnSEayeIdpV8Xq52Zg+zjYw== - optionalDependencies: - "@swc/core-android-arm-eabi" "1.2.139" - "@swc/core-android-arm64" "1.2.139" - "@swc/core-darwin-arm64" "1.2.139" - "@swc/core-darwin-x64" "1.2.139" - "@swc/core-freebsd-x64" "1.2.139" - "@swc/core-linux-arm-gnueabihf" "1.2.139" - "@swc/core-linux-arm64-gnu" "1.2.139" - "@swc/core-linux-arm64-musl" "1.2.139" - "@swc/core-linux-x64-gnu" "1.2.139" - "@swc/core-linux-x64-musl" "1.2.139" - "@swc/core-win32-arm64-msvc" "1.2.139" - "@swc/core-win32-ia32-msvc" "1.2.139" - "@swc/core-win32-x64-msvc" "1.2.139" - -"@swc/register@^0.1.7": - version "0.1.10" - resolved "https://registry.yarnpkg.com/@swc/register/-/register-0.1.10.tgz#74a20b7559669e03479b05e9e5c6d1524d4d92a2" - integrity sha512-6STwH/q4dc3pitXLVkV7sP0Hiy+zBsU2wOF1aXpXR95pnH3RYHKIsDC+gvesfyB7jxNT9OOZgcqOp9RPxVTx9A== - dependencies: - lodash.clonedeep "^4.5.0" - pirates "^4.0.1" - source-map-support "^0.5.13" - "@szmarczak/http-timer@^4.0.5": version "4.0.6" resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-4.0.6.tgz#b4a914bb62e7c272d4e5989fe4440f812ab1d807" @@ -3319,7 +3264,7 @@ abbrev@1, abbrev@^1.0.0: resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== -accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7, accepts@~1.3.8: +accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8: version "1.3.8" resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== @@ -3453,9 +3398,9 @@ ansi-regex@^3.0.0: integrity sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw== ansi-regex@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" - integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== + version "4.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.1.tgz#164daac87ab2d6f6db3a29875e2d1766582dabed" + integrity sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g== ansi-regex@^5.0.1: version "5.0.1" @@ -3486,7 +3431,7 @@ ansi-styles@^6.0.0: resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.1.0.tgz#87313c102b8118abd57371afab34618bf7350ed3" integrity sha512-VbqNsoz55SYGczauuup0MFUyXNQviSpFTj1RQtFzmQLk18qbVSpTFFGMT293rmDaQuKCT6InmbuEyUne4mTuxQ== -anymatch@~3.1.1, anymatch@~3.1.2: +anymatch@~3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== @@ -3648,18 +3593,6 @@ asar@^3.0.0: optionalDependencies: "@types/glob" "^7.1.1" -asar@^3.0.3: - version "3.2.0" - resolved "https://registry.yarnpkg.com/asar/-/asar-3.2.0.tgz#e6edb5edd6f627ebef04db62f771c61bea9c1221" - integrity sha512-COdw2ZQvKdFGFxXwX3oYh2/sOsJWJegrdJCGxnN4MZ7IULgRBp9P6665aqj9z1v9VwP4oP1hRBojRDQ//IGgAg== - dependencies: - chromium-pickle-js "^0.2.0" - commander "^5.0.0" - glob "^7.1.6" - minimatch "^3.0.4" - optionalDependencies: - "@types/glob" "^7.1.1" - assertion-error@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" @@ -3762,22 +3695,6 @@ bluebird@^3.0.6, bluebird@^3.1.1, bluebird@^3.5.0: resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== -body-parser@1.19.1: - version "1.19.1" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.1.tgz#1499abbaa9274af3ecc9f6f10396c995943e31d4" - integrity sha512-8ljfQi5eBk8EJfECMrgqNGWPEY5jWP+1IzkzkGdFFEwFQZZyaZ21UqdaHktgiMlH0xLHqIFtE/u2OYE5dOtViA== - dependencies: - bytes "3.1.1" - content-type "~1.0.4" - debug "2.6.9" - depd "~1.1.2" - http-errors "1.8.1" - iconv-lite "0.4.24" - on-finished "~2.3.0" - qs "6.9.6" - raw-body "2.4.2" - type-is "~1.6.18" - body-parser@1.20.1: version "1.20.1" resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668" @@ -3816,6 +3733,11 @@ boolean@^3.0.1: resolved "https://registry.yarnpkg.com/boolean/-/boolean-3.1.4.tgz#f51a2fb5838a99e06f9b6ec1edb674de67026435" integrity sha512-3hx0kwU3uzG6ReQ3pnaFQPSktpBw6RHN3/ivDKEuU8g1XSfafowyvDnadjv1xp8IZqhtSukxlwv9bF6FhX8m0w== +boolean@^3.1.4: + version "3.2.0" + resolved "https://registry.yarnpkg.com/boolean/-/boolean-3.2.0.tgz#9e5294af4e98314494cbb17979fa54ca159f116b" + integrity sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw== + bottleneck@^2.15.3: version "2.19.5" resolved "https://registry.yarnpkg.com/bottleneck/-/bottleneck-2.19.5.tgz#5df0b90f59fd47656ebe63c78a98419205cadd91" @@ -3876,10 +3798,10 @@ buffer-crc32@~0.2.3: resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI= -buffer-equal@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/buffer-equal/-/buffer-equal-1.0.0.tgz#59616b498304d556abd466966b22eeda3eca5fbe" - integrity sha512-tcBWO2Dl4e7Asr9hTGcpVrCe+F7DubpmqWCTbj4FHLmjqO2hIaC383acQubWtRJhdceqs5uBHs6Es+Sk//RKiQ== +buffer-equal@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/buffer-equal/-/buffer-equal-1.0.1.tgz#2f7651be5b1b3f057fcd6e7ee16cf34767077d90" + integrity sha512-QoV3ptgEaQpvVwbXdSO39iqPQTCxSF7A5U99AxbHYqUdCizL/lH2Z0A2y6nbZucxMEOtNyZfG2s6gsVugGpKkg== buffer-from@^1.0.0: version "1.1.2" @@ -3924,11 +3846,6 @@ bytes@3.0.0: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" integrity sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw== -bytes@3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.1.tgz#3f018291cb4cbad9accb6e6970bca9c8889e879a" - integrity sha512-dWe4nWO/ruEOY7HkUJ5gFt1DCFV9zPRoJr8pV0/ASQermOZjtq8jMjOprC0Kd10GLN+l7xaUPvxzJFWtxGu8Fg== - bytes@3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" @@ -4049,6 +3966,14 @@ chalk@4.1.0: ansi-styles "^4.1.0" supports-color "^7.1.0" +chalk@4.1.2, chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + chalk@^2.0.0, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" @@ -4058,14 +3983,6 @@ chalk@^2.0.0, chalk@^2.4.1, chalk@^2.4.2: escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - chardet@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" @@ -4101,21 +4018,6 @@ cheerio@^1.0.0-rc.9: parse5 "^7.0.0" parse5-htmlparser2-tree-adapter "^7.0.0" -chokidar@3.5.1: - version "3.5.1" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a" - integrity sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw== - dependencies: - anymatch "~3.1.1" - braces "~3.0.2" - glob-parent "~5.1.0" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.5.0" - optionalDependencies: - fsevents "~2.3.1" - chokidar@3.5.3, chokidar@^3.5.1, chokidar@^3.5.3: version "3.5.3" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" @@ -4323,7 +4225,7 @@ colorette@^2.0.16: resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.16.tgz#713b9af84fdb000139f04546bd4a93f62a5085da" integrity sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g== -colors@1.0.3, colors@1.0.x: +colors@1.0.x: version "1.0.3" resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b" integrity sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs= @@ -4343,12 +4245,10 @@ combined-stream@^1.0.8: dependencies: delayed-stream "~1.0.0" -commander@2.9.0: - version "2.9.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4" - integrity sha512-bmkUukX8wAOjHdN26xj5c4ctEV22TQ7dQYhSmuckKhToXrkUn0iIaolHdIxYYqD55nhpSPA9zPQ1yP57GdXP2A== - dependencies: - graceful-readlink ">= 1.0.0" +commander@9.4.1, commander@^9.3.0: + version "9.4.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-9.4.1.tgz#d1dd8f2ce6faf93147295c0df13c7c21141cfbdd" + integrity sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw== commander@^2.19.0, commander@^2.20.0, commander@^2.9.0: version "2.20.3" @@ -4365,21 +4265,11 @@ commander@^5.0.0: resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== -commander@^7.1.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" - integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== - commander@^8.3.0: version "8.3.0" resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== -commander@^9.3.0: - version "9.4.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-9.4.1.tgz#d1dd8f2ce6faf93147295c0df13c7c21141cfbdd" - integrity sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw== - common-ancestor-path@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz#4f7d2d1394d91b7abdf51871c62f71eadb0182a7" @@ -4557,11 +4447,6 @@ cookie-signature@1.0.6: resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= -cookie@0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.1.tgz#afd713fe26ebd21ba95ceb61f9a8116e50a537d1" - integrity sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA== - cookie@0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" @@ -4577,10 +4462,10 @@ core-util-is@~1.0.0: resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== -cosmiconfig@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.1.0.tgz#1443b9afa596b670082ea46cbd8f6a62b84635f6" - integrity sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA== +cosmiconfig@7.0.1, cosmiconfig@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.1.tgz#714d756522cace867867ccb4474c5d01bbae5d6d" + integrity sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ== dependencies: "@types/parse-json" "^4.0.0" import-fresh "^3.2.1" @@ -4588,10 +4473,10 @@ cosmiconfig@^7.0.0: path-type "^4.0.0" yaml "^1.10.0" -cosmiconfig@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.1.tgz#714d756522cace867867ccb4474c5d01bbae5d6d" - integrity sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ== +cosmiconfig@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.1.0.tgz#1443b9afa596b670082ea46cbd8f6a62b84635f6" + integrity sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA== dependencies: "@types/parse-json" "^4.0.0" import-fresh "^3.2.1" @@ -4714,13 +4599,6 @@ debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.3, debug@^4.3.4: dependencies: ms "2.1.2" -debug@4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" - integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== - dependencies: - ms "2.1.2" - debug@4.3.3, debug@^4.3.1, debug@^4.3.2: version "4.3.3" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" @@ -4849,11 +4727,6 @@ destroy@1.2.0: resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== -destroy@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" - integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= - detect-indent@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d" @@ -4892,15 +4765,13 @@ diff@^4.0.1: resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== -dir-compare@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/dir-compare/-/dir-compare-2.4.0.tgz#785c41dc5f645b34343a4eafc50b79bac7f11631" - integrity sha512-l9hmu8x/rjVC9Z2zmGzkhOEowZvW7pmYws5CWHutg8u1JgvsKWMx7Q/UODeu4djLZ4FgW5besw5yvMQnBHzuCA== +dir-compare@^3.0.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/dir-compare/-/dir-compare-3.3.0.tgz#2c749f973b5c4b5d087f11edaae730db31788416" + integrity sha512-J7/et3WlGUCxjdnD3HAAzQ6nsnc0WL6DD7WcwJb7c39iH1+AWfg+9OqzJNaI6PkBwBvm1mhZNL9iY/nRiZXlPg== dependencies: - buffer-equal "1.0.0" - colors "1.0.3" - commander "2.9.0" - minimatch "3.0.4" + buffer-equal "^1.0.0" + minimatch "^3.0.4" dir-glob@^3.0.1: version "3.0.1" @@ -5763,6 +5634,11 @@ expand-tilde@^2.0.0, expand-tilde@^2.0.2: dependencies: homedir-polyfill "^1.0.1" +expect-more@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/expect-more/-/expect-more-1.2.0.tgz#cc7b3b6ad194ee54deaf601cf5c80449ed7a276d" + integrity sha512-AVnjc5oh2jgiJjOrjbiKxbwLlNA/zsl2044Nbd09H4+2KwThtSLYKhdOusLYOrcToFAa2uBOWR1ExCN4kOWgbQ== + express-ws@^5.0.2: version "5.0.2" resolved "https://registry.yarnpkg.com/express-ws/-/express-ws-5.0.2.tgz#5b02d41b937d05199c6c266d7cc931c823bda8eb" @@ -5770,43 +5646,7 @@ express-ws@^5.0.2: dependencies: ws "^7.4.6" -express@^4.17.1: - version "4.17.2" - resolved "https://registry.yarnpkg.com/express/-/express-4.17.2.tgz#c18369f265297319beed4e5558753cc8c1364cb3" - integrity sha512-oxlxJxcQlYwqPWKVJJtvQiwHgosH/LrLSPA+H4UxpyvSS6jC5aH+5MoHFM+KABgTOt0APue4w66Ha8jCUo9QGg== - dependencies: - accepts "~1.3.7" - array-flatten "1.1.1" - body-parser "1.19.1" - content-disposition "0.5.4" - content-type "~1.0.4" - cookie "0.4.1" - cookie-signature "1.0.6" - debug "2.6.9" - depd "~1.1.2" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - finalhandler "~1.1.2" - fresh "0.5.2" - merge-descriptors "1.0.1" - methods "~1.1.2" - on-finished "~2.3.0" - parseurl "~1.3.3" - path-to-regexp "0.1.7" - proxy-addr "~2.0.7" - qs "6.9.6" - range-parser "~1.2.1" - safe-buffer "5.2.1" - send "0.17.2" - serve-static "1.14.2" - setprototypeof "1.2.0" - statuses "~1.5.0" - type-is "~1.6.18" - utils-merge "1.0.1" - vary "~1.1.2" - -express@^4.17.3: +express@^4.17.1, express@^4.17.3: version "4.18.2" resolved "https://registry.yarnpkg.com/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59" integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ== @@ -5896,7 +5736,7 @@ fast-glob@3.2.7: merge2 "^1.3.0" micromatch "^4.0.4" -fast-glob@^3.2.5, fast-glob@^3.2.7: +fast-glob@^3.2.7: version "3.2.11" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9" integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew== @@ -5928,6 +5768,13 @@ fast-levenshtein@^2.0.6: resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== +fast-printf@^1.6.9: + version "1.6.9" + resolved "https://registry.yarnpkg.com/fast-printf/-/fast-printf-1.6.9.tgz#212f56570d2dc8ccdd057ee93d50dd414d07d676" + integrity sha512-FChq8hbz65WMj4rstcQsFB0O7Cy++nmbNfLYnD9cYv2cRn8EG6k/MGn9kO/tjO66t09DLDugj3yL+V2o6Qftrg== + dependencies: + boolean "^3.1.4" + fast-xml-parser@3.19.0: version "3.19.0" resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-3.19.0.tgz#cb637ec3f3999f51406dd8ff0e6fc4d83e520d01" @@ -6040,19 +5887,6 @@ finalhandler@1.2.0: statuses "2.0.1" unpipe "~1.0.0" -finalhandler@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" - integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== - dependencies: - debug "2.6.9" - encodeurl "~1.0.2" - escape-html "~1.0.3" - on-finished "~2.3.0" - parseurl "~1.3.3" - statuses "~1.5.0" - unpipe "~1.0.0" - find-up@5.0.0, find-up@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" @@ -6162,6 +5996,11 @@ forwarded@0.2.0: resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== +fp-ts@2.13.1: + version "2.13.1" + resolved "https://registry.yarnpkg.com/fp-ts/-/fp-ts-2.13.1.tgz#1bf2b24136cca154846af16752dc29e8fa506f2a" + integrity sha512-0eu5ULPS2c/jsa1lGFneEFFEdTbembJv8e4QKXeVJ3lm/5hyve06dlKZrpxmMwJt6rYen7sxmHHK2CLaXvWuWQ== + fresh@0.5.2: version "0.5.2" resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" @@ -6172,19 +6011,19 @@ fs-constants@^1.0.0: resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== -fs-extra@^10.0.0: - version "10.0.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.0.0.tgz#9ff61b655dde53fb34a82df84bb214ce802e17c1" - integrity sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ== +fs-extra@10.1.0, fs-extra@^10.0.1, fs-extra@^10.1.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" + integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== dependencies: graceful-fs "^4.2.0" jsonfile "^6.0.1" universalify "^2.0.0" -fs-extra@^10.0.1, fs-extra@^10.1.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" - integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== +fs-extra@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.0.0.tgz#9ff61b655dde53fb34a82df84bb214ce802e17c1" + integrity sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ== dependencies: graceful-fs "^4.2.0" jsonfile "^6.0.1" @@ -6256,7 +6095,7 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== -fsevents@~2.3.1, fsevents@~2.3.2: +fsevents@~2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== @@ -6512,7 +6351,7 @@ github-url-from-git@^1.4.0: resolved "https://registry.yarnpkg.com/github-url-from-git/-/github-url-from-git-1.5.0.tgz#f985fedcc0a9aa579dc88d7aff068d55cc6251a0" integrity sha1-+YX+3MCpqledyI16/waNVcxiUaA= -glob-parent@^5.1.1, glob-parent@^5.1.2, glob-parent@~5.1.0, glob-parent@~5.1.2: +glob-parent@^5.1.1, glob-parent@^5.1.2, glob-parent@~5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== @@ -6543,10 +6382,10 @@ glob@7.1.4: once "^1.3.0" path-is-absolute "^1.0.0" -glob@7.1.6: - version "7.1.6" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" - integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== +glob@7.2.0, glob@^7.1.4, glob@^7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" + integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" @@ -6555,17 +6394,16 @@ glob@7.1.6: once "^1.3.0" path-is-absolute "^1.0.0" -glob@7.2.0, glob@^7.1.4, glob@^7.2.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" - integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== +glob@8.0.3, glob@^8.0.1: + version "8.0.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-8.0.3.tgz#415c6eb2deed9e502c68fa44a272e6da6eeca42e" + integrity sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" inherits "2" - minimatch "^3.0.4" + minimatch "^5.0.1" once "^1.3.0" - path-is-absolute "^1.0.0" glob@^7.1.1, glob@^7.1.3, glob@^7.1.6: version "7.2.3" @@ -6579,17 +6417,6 @@ glob@^7.1.1, glob@^7.1.3, glob@^7.1.6: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^8.0.1: - version "8.0.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-8.0.3.tgz#415c6eb2deed9e502c68fa44a272e6da6eeca42e" - integrity sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^5.0.1" - once "^1.3.0" - global-agent@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/global-agent/-/global-agent-3.0.0.tgz#ae7cd31bd3583b93c5a16437a1afe27cc33a1ab6" @@ -6690,11 +6517,6 @@ graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.9: resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.9.tgz#041b05df45755e587a24942279b9d113146e1c96" integrity sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ== -"graceful-readlink@>= 1.0.0": - version "1.0.1" - resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" - integrity sha512-8tLu60LgxF6XpdbK8OW3FA+IfTNBn1ZHGHKF4KQbEeSkajYw5PlYJcKluntgegDPTg8UkHjpet1T82vk6TQ68w== - growl@1.10.5: version "1.10.5" resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" @@ -6866,26 +6688,15 @@ htmlparser2@^8.0.1: entities "^4.3.0" http-cache-semantics@^4.0.0, http-cache-semantics@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" - integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== + version "4.1.1" + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a" + integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ== http-deceiver@^1.2.7: version "1.2.7" resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" integrity sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw== -http-errors@1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.8.1.tgz#7c3f28577cbc8a207388455dbd62295ed07bd68c" - integrity sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g== - dependencies: - depd "~1.1.2" - inherits "2.0.4" - setprototypeof "1.2.0" - statuses ">= 1.5.0 < 2" - toidentifier "1.0.1" - http-errors@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" @@ -6974,6 +6785,18 @@ husky@^7.0.1: resolved "https://registry.yarnpkg.com/husky/-/husky-7.0.4.tgz#242048245dc49c8fb1bf0cc7cfb98dd722531535" integrity sha512-vbaCKN2QLtP/vD4yvs6iz6hBEo6wkSzs8HpRah1Z6aGmF2KW5PdYuAd7uX5a+OyBZHBhd+TFLqgjUgytQr4RvQ== +i18n@^0.15.1: + version "0.15.1" + resolved "https://registry.yarnpkg.com/i18n/-/i18n-0.15.1.tgz#68fb8993c461cc440bc2485d82f72019f2b92de8" + integrity sha512-yue187t8MqUPMHdKjiZGrX+L+xcUsDClGO0Cz4loaKUOK9WrGw5pgan4bv130utOwX7fHE9w2iUeHFalVQWkXA== + dependencies: + "@messageformat/core" "^3.0.0" + debug "^4.3.3" + fast-printf "^1.6.9" + make-plural "^7.0.0" + math-interval-parser "^2.0.1" + mustache "^4.2.0" + iconv-lite@0.4.24, iconv-lite@^0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" @@ -7106,7 +6929,7 @@ inquirer@^6.2.0: strip-ansi "^5.1.0" through "^2.3.6" -inquirer@^8.2.4: +inquirer@^8.0.0, inquirer@^8.2.4: version "8.2.5" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-8.2.5.tgz#d8654a7542c35a9b9e069d27e2df4858784d54f8" integrity sha512-QAgPDQMEgrDssk1XiwwHoOGYF9BAbUcc1+j+FhEvaOt8/cKRqyLn0U5qA6F74fGhTMGxf92pOvPBeh29jQJDTQ== @@ -7479,21 +7302,14 @@ js-tokens@^4.0.0: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-yaml@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.0.0.tgz#f426bc0ff4b4051926cd588c71113183409a121f" - integrity sha512-pqon0s+4ScYUvX30wxQi3PogGFAlUyH0awepWvwkj4jD4v+ova3RiYw8bmA6x2rDrEaj8i/oWKoRxpVNW+Re8Q== - dependencies: - argparse "^2.0.1" - -js-yaml@4.1.0, js-yaml@^4.1.0: +js-yaml@4.1.0, js-yaml@^4.0.0, js-yaml@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== dependencies: argparse "^2.0.1" -js-yaml@^3.10.0, js-yaml@^3.13.1: +js-yaml@^3.10.0, js-yaml@^3.12.2, js-yaml@^3.13.1: version "3.14.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== @@ -7547,18 +7363,16 @@ json-stringify-safe@^5.0.1: integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= json5@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" - integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== + version "1.0.2" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" + integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== dependencies: minimist "^1.2.0" json5@^2.1.2: - version "2.2.0" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3" - integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA== - dependencies: - minimist "^1.2.5" + version "2.2.3" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== jsonc-parser@3.2.0: version "3.2.0" @@ -7726,7 +7540,7 @@ lint-staged@^12.1.7: supports-color "^9.2.2" yaml "^1.10.2" -listr2@^4.0.4, listr2@^4.0.5: +listr2@^4.0.5: version "4.0.5" resolved "https://registry.yarnpkg.com/listr2/-/listr2-4.0.5.tgz#9dcc50221583e8b4c71c43f9c7dfd0ef546b75d5" integrity sha512-juGHV1doQdpNT3GSTs9IUN43QJb7KHdF9uqg7Vufs/tG9VTzpFphqF4pm/ICdAABGQxsyNn9CiYA3StkI6jpwA== @@ -7824,11 +7638,6 @@ lodash._reinterpolate@^3.0.0: resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0= -lodash.clonedeep@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" - integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= - lodash.defaults@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" @@ -7884,13 +7693,6 @@ lodash@^4.17.10, lodash@^4.17.12, lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17 resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== -log-symbols@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.0.0.tgz#69b3cc46d20f448eccdb75ea1fa733d9e821c920" - integrity sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA== - dependencies: - chalk "^4.0.0" - log-symbols@4.1.0, log-symbols@^4.0.0, log-symbols@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" @@ -8008,6 +7810,11 @@ make-fetch-happen@^10.0.3, make-fetch-happen@^10.0.6: socks-proxy-agent "^7.0.0" ssri "^9.0.0" +make-plural@^7.0.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/make-plural/-/make-plural-7.2.0.tgz#93174b1419672a48a2340db6c1d3fb217530c684" + integrity sha512-WkdI+iaWaBCFM2wUXwos8Z7spg5Dt64Xe/VI6NpRaly21cDtD76N6S97K//UtzV0dHOiXX+E90TnszdXHG0aMg== + map-age-cleaner@^0.1.1: version "0.1.3" resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" @@ -8037,6 +7844,11 @@ matcher@^3.0.0: dependencies: escape-string-regexp "^4.0.0" +math-interval-parser@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/math-interval-parser/-/math-interval-parser-2.0.1.tgz#e22cd6d15a0a7f4c03aec560db76513da615bed4" + integrity sha512-VmlAmb0UJwlvMyx8iPhXUDnVW1F9IrGEd9CIOmv+XL8AErCUUuozoDMrgImvnYt2A+53qVX/tPW6YJurMKYsvA== + media-typer@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" @@ -8162,13 +7974,6 @@ minimalistic-assert@^1.0.0: resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== -minimatch@3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== - dependencies: - brace-expansion "^1.1.7" - minimatch@3.0.5: version "3.0.5" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.5.tgz#4da8f1290ee0f0f8e83d60ca69f8f134068604a3" @@ -8183,6 +7988,13 @@ minimatch@4.2.1: dependencies: brace-expansion "^1.1.7" +minimatch@5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.0.tgz#1717b464f4971b144f6aabe8f2d0b8e4511e09c7" + integrity sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg== + dependencies: + brace-expansion "^2.0.1" + minimatch@^3.0.2, minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" @@ -8191,9 +8003,9 @@ minimatch@^3.0.2, minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: brace-expansion "^1.1.7" minimatch@^5.0.1: - version "5.1.0" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.0.tgz#1717b464f4971b144f6aabe8f2d0b8e4511e09c7" - integrity sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg== + version "5.1.1" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.1.tgz#6c9dffcf9927ff2a31e74b5af11adf8b9604b022" + integrity sha512-362NP+zlprccbEt/SkxKfRMHnNY85V74mVnpUpNyr3F35covl09Kec7/sEFLt3RA4oXmewtoaanoIf67SE5Y5g== dependencies: brace-expansion "^2.0.1" @@ -8206,21 +8018,11 @@ minimist-options@4.1.0: is-plain-obj "^1.1.0" kind-of "^6.0.3" -minimist@^1.1.1, minimist@^1.1.3: - version "1.2.5" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" - integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== - -minimist@^1.2.0, minimist@^1.2.5: +minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6: version "1.2.7" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.7.tgz#daa1c4d91f507390437c6a8bc01078e7000c4d18" integrity sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g== -minimist@^1.2.6: - version "1.2.6" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" - integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== - minipass-collect@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" @@ -8311,37 +8113,6 @@ mkdirp@^1.0.3, mkdirp@^1.0.4: resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== -mocha@^8.4.0: - version "8.4.0" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-8.4.0.tgz#677be88bf15980a3cae03a73e10a0fc3997f0cff" - integrity sha512-hJaO0mwDXmZS4ghXsvPVriOhsxQ7ofcpQdm8dE+jISUOKopitvnXFQmpRR7jd2K6VBG6E26gU3IAbXXGIbu4sQ== - dependencies: - "@ungap/promise-all-settled" "1.1.2" - ansi-colors "4.1.1" - browser-stdout "1.3.1" - chokidar "3.5.1" - debug "4.3.1" - diff "5.0.0" - escape-string-regexp "4.0.0" - find-up "5.0.0" - glob "7.1.6" - growl "1.10.5" - he "1.2.0" - js-yaml "4.0.0" - log-symbols "4.0.0" - minimatch "3.0.4" - ms "2.1.3" - nanoid "3.1.20" - serialize-javascript "5.0.1" - strip-json-comments "3.1.1" - supports-color "8.1.1" - which "2.0.2" - wide-align "1.1.3" - workerpool "6.1.0" - yargs "16.2.0" - yargs-parser "20.2.4" - yargs-unparser "2.0.0" - mocha@^9.0.1: version "9.2.2" resolved "https://registry.yarnpkg.com/mocha/-/mocha-9.2.2.tgz#d70db46bdb93ca57402c809333e5a84977a88fb9" @@ -8382,6 +8153,11 @@ module-not-found-error@^1.0.1: resolved "https://registry.yarnpkg.com/module-not-found-error/-/module-not-found-error-1.0.1.tgz#cf8b4ff4f29640674d6cdd02b0e3bc523c2bbdc0" integrity sha1-z4tP9PKWQGdNbN0CsOO8UjwrvcA= +moo@^0.5.1: + version "0.5.2" + resolved "https://registry.yarnpkg.com/moo/-/moo-0.5.2.tgz#f9fe82473bc7c184b0d32e2215d3f6e67278733c" + integrity sha512-iSAJLHYKnX41mKcJKjqvnAN9sf0LMDTXDEvFv+ffuRR9a1MIuXLjMNL6EsnDHSkKLTWNqQQ5uo61P4EbU4NU+Q== + ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" @@ -8432,6 +8208,11 @@ multimatch@^5.0.0: fmix "^0.1.0" imul "^1.0.0" +mustache@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/mustache/-/mustache-4.2.0.tgz#e5892324d60a12ec9c2a73359edca52972bf6f64" + integrity sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ== + mute-stream@0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" @@ -8447,11 +8228,6 @@ nan@^2.4.0: resolved "https://registry.yarnpkg.com/nan/-/nan-2.15.0.tgz#3f34a473ff18e15c1b5626b62903b5ad6e665fee" integrity sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ== -nanoid@3.1.20: - version "3.1.20" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.20.tgz#badc263c6b1dcf14b71efaa85f6ab4c1d6cfc788" - integrity sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw== - nanoid@3.3.1: version "3.3.1" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.1.tgz#6347a18cac88af88f58af0b3594b723d5e99bb35" @@ -8868,13 +8644,6 @@ on-finished@2.4.1: dependencies: ee-first "1.1.1" -on-finished@~2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" - integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= - dependencies: - ee-first "1.1.1" - on-headers@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" @@ -9495,11 +9264,6 @@ qs@6.11.0: dependencies: side-channel "^1.0.4" -qs@6.9.6: - version "6.9.6" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.6.tgz#26ed3c8243a431b2924aca84cc90471f35d5a0ee" - integrity sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ== - querystring@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.1.tgz#40d77615bb09d16902a85c3e38aa8b5ed761c2dd" @@ -9545,16 +9309,6 @@ range-parser@^1.2.1, range-parser@~1.2.1: resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== -raw-body@2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.2.tgz#baf3e9c21eebced59dd6533ac872b71f7b61cb32" - integrity sha512-RPMAFUJP19WIet/99ngh6Iv8fzAbqum4Li7AD6DtGaW2RpMB/11xDoalPiJMTbu6I3hkbMVkATvZrqb9EEqeeQ== - dependencies: - bytes "3.1.1" - http-errors "1.8.1" - iconv-lite "0.4.24" - unpipe "1.0.0" - raw-body@2.5.1: version "2.5.1" resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857" @@ -9672,6 +9426,14 @@ read-pkg@^5.2.0: parse-json "^5.0.0" type-fest "^0.6.0" +read-yaml-file@2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/read-yaml-file/-/read-yaml-file-2.1.0.tgz#c5866712db9ef5343b4d02c2413bada53c41c4a9" + integrity sha512-UkRNRIwnhG+y7hpqnycCL/xbTk7+ia9VuVTC0S+zVbwd65DI9eUpRMfsWIGrCWxTU/mi+JW8cHQCrv+zfCbEPQ== + dependencies: + js-yaml "^4.0.0" + strip-bom "^4.0.0" + read@1, read@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/read/-/read-1.0.7.tgz#b3da19bd052431a97671d44a42634adf710b40c4" @@ -9711,13 +9473,6 @@ readdir-scoped-modules@^1.0.0, readdir-scoped-modules@^1.1.0: graceful-fs "^4.1.2" once "^1.3.0" -readdirp@~3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e" - integrity sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ== - dependencies: - picomatch "^2.2.1" - readdirp@~3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" @@ -9975,6 +9730,11 @@ safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.1.0, safe-buffer@~5.2.0: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== +safe-identifier@^0.4.1: + version "0.4.2" + resolved "https://registry.yarnpkg.com/safe-identifier/-/safe-identifier-0.4.2.tgz#cf6bfca31c2897c588092d1750d30ef501d59fcb" + integrity sha512-6pNbSMW6OhAi9j+N8V+U715yBQsaWJ7eyEUaOrawX+isg5ZxhUlV1NipNtgaKHmFGiABwt+ZF04Ii+3Xjkg+8w== + safe-regex-test@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.0.tgz#793b874d524eb3640d1873aad03596db2d4f2295" @@ -10037,18 +9797,18 @@ semver@7.3.4: dependencies: lru-cache "^6.0.0" -semver@^6.0.0, semver@^6.1.0, semver@^6.2.0, semver@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== - -semver@^7.0.0, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7: +semver@7.3.8, semver@^7.0.0, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7: version "7.3.8" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798" integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A== dependencies: lru-cache "^6.0.0" +semver@^6.0.0, semver@^6.1.0, semver@^6.2.0, semver@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + semver@^7.1.1, semver@^7.1.3, semver@^7.2.1, semver@^7.3.2: version "7.3.5" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" @@ -10056,25 +9816,6 @@ semver@^7.1.1, semver@^7.1.3, semver@^7.2.1, semver@^7.3.2: dependencies: lru-cache "^6.0.0" -send@0.17.2: - version "0.17.2" - resolved "https://registry.yarnpkg.com/send/-/send-0.17.2.tgz#926622f76601c41808012c8bf1688fe3906f7820" - integrity sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww== - dependencies: - debug "2.6.9" - depd "~1.1.2" - destroy "~1.0.4" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - fresh "0.5.2" - http-errors "1.8.1" - mime "1.6.0" - ms "2.1.3" - on-finished "~2.3.0" - range-parser "~1.2.1" - statuses "~1.5.0" - send@0.18.0: version "0.18.0" resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" @@ -10101,13 +9842,6 @@ serialize-error@^7.0.1: dependencies: type-fest "^0.13.1" -serialize-javascript@5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-5.0.1.tgz#7886ec848049a462467a97d3d918ebb2aaf934f4" - integrity sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA== - dependencies: - randombytes "^2.1.0" - serialize-javascript@6.0.0, serialize-javascript@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" @@ -10128,16 +9862,6 @@ serve-index@^1.9.1: mime-types "~2.1.17" parseurl "~1.3.2" -serve-static@1.14.2: - version "1.14.2" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.2.tgz#722d6294b1d62626d41b43a013ece4598d292bfa" - integrity sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ== - dependencies: - encodeurl "~1.0.2" - escape-html "~1.0.3" - parseurl "~1.3.3" - send "0.17.2" - serve-static@1.15.0: version "1.15.0" resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" @@ -10234,7 +9958,7 @@ sinon@^13.0.1: nise "^5.1.1" supports-color "^7.2.0" -slash@3.0.0, slash@^3.0.0: +slash@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== @@ -10323,11 +10047,6 @@ source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -source-map@^0.7.3: - version "0.7.3" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" - integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== - spdx-correct@^3.0.0: version "3.1.1" resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" @@ -10418,7 +10137,7 @@ statuses@2.0.1: resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== -"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@~1.5.0: +"statuses@>= 1.4.0 < 2": version "1.5.0" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= @@ -10441,14 +10160,6 @@ string-argv@^0.3.1: resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da" integrity sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg== -"string-width@^1.0.2 || 2", string-width@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" - integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== - dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" - "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" @@ -10458,6 +10169,14 @@ string-argv@^0.3.1: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" +string-width@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + string-width@^5.0.0: version "5.1.0" resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.0.tgz#5ab00980cfb29f43e736b113a120a73a0fb569d3" @@ -10623,6 +10342,22 @@ supports-preserve-symlinks-flag@^1.0.0: resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== +syncpack@^8.4.11: + version "8.4.11" + resolved "https://registry.yarnpkg.com/syncpack/-/syncpack-8.4.11.tgz#06b32e099483cd3cff1d5eb8de367d0cabdc8fb8" + integrity sha512-qYhkDvPr0goemEqykGaUKF4TD9sRlPQXNy0wn60SXsatAVaZPrNn/nFtfYBLGBp4gNlrpVzixnzBOTihQZxhmg== + dependencies: + chalk "4.1.2" + commander "9.4.1" + cosmiconfig "7.0.1" + expect-more "1.2.0" + fp-ts "2.13.1" + fs-extra "10.1.0" + glob "8.0.3" + minimatch "5.1.0" + read-yaml-file "2.1.0" + semver "7.3.8" + table@^6.0.9: version "6.8.0" resolved "https://registry.yarnpkg.com/table/-/table-6.8.0.tgz#87e28f14fa4321c3377ba286f07b79b281a3b3ca" @@ -11358,13 +11093,6 @@ which@^1.2.14, which@^1.2.4, which@^1.2.9: dependencies: isexe "^2.0.0" -wide-align@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" - integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== - dependencies: - string-width "^1.0.2 || 2" - wide-align@^1.1.2, wide-align@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" @@ -11399,11 +11127,6 @@ wordwrap@^1.0.0: resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q== -workerpool@6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.1.0.tgz#a8e038b4c94569596852de7a8ea4228eefdeb37b" - integrity sha512-toV7q9rWNYha963Pl/qyeZ6wG+3nnsyvolaNUS8+R5Wtw6qJPTxIlOP1ZSvcGhEJw+l3HMMmtiNo9Gl61G4GVg== - workerpool@6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.0.tgz#827d93c9ba23ee2019c3ffaff5c27fccea289e8b" @@ -11555,6 +11278,14 @@ yallist@^4.0.0: resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== +yaml-hook@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/yaml-hook/-/yaml-hook-1.0.0.tgz#14d682e949a9cf6f041e2af8278a4d349ccb52b7" + integrity sha512-iqSS5Mk1F3yBtrfx94hWzmEk0Wxs5QoBRvngAe39t0XA2JJ3jhQN6Snwv/shH1VoZr+ntdhf4EDLmW0WUWBjdQ== + dependencies: + js-yaml "^3.12.2" + pirates "^4.0.1" + yaml@^1.10.0, yaml@^1.10.2: version "1.10.2" resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b"