From 60106874f9a69c35ed0ede2e3d3c7cd096867dec Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 7 Jan 2023 15:23:39 +0000 Subject: [PATCH 01/66] chore(deps): update dependency prettier to v2.8.2 (#906) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- pnpm-lock.yaml | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index f2e7cb94c..a4d0f6a02 100644 --- a/package.json +++ b/package.json @@ -34,7 +34,7 @@ "jest": "^29.3.1", "lerna-changelog": "2.2.0", "node-fetch": "^3.3.0", - "prettier": "2.8.1", + "prettier": "2.8.2", "pv": "1.0.1", "shell-escape": "^0.2.0", "svg-term-cli": "2.1.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 55b7e2bf4..1ac5a2cc6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -13,7 +13,7 @@ specifiers: jest: ^29.3.1 lerna-changelog: 2.2.0 node-fetch: ^3.3.0 - prettier: 2.8.1 + prettier: 2.8.2 pv: 1.0.1 shell-escape: ^0.2.0 svg-term-cli: 2.1.1 @@ -36,7 +36,7 @@ devDependencies: jest: 29.3.1_@types+node@18.11.9 lerna-changelog: 2.2.0 node-fetch: 3.3.0 - prettier: 2.8.1 + prettier: 2.8.2 pv: 1.0.1 shell-escape: 0.2.0 svg-term-cli: 2.1.1 @@ -407,7 +407,7 @@ packages: fs-extra: 7.0.1 lodash.startcase: 4.4.0 outdent: 0.5.0 - prettier: 2.8.1 + prettier: 2.8.2 resolve-from: 5.0.0 semver: 5.7.1 dev: true @@ -584,7 +584,7 @@ packages: '@changesets/types': 5.2.1 fs-extra: 7.0.1 human-id: 1.0.2 - prettier: 2.8.1 + prettier: 2.8.2 dev: true /@gar/promisify/1.1.3: @@ -3997,8 +3997,8 @@ packages: which-pm: 2.0.0 dev: true - /prettier/2.8.1: - resolution: {integrity: sha512-lqGoSJBQNJidqCHE80vqZJHWHRFoNYsSpP9AjFhlhi9ODCJA541svILes/+/1GM3VaL/abZi7cpFzOpdR9UPKg==} + /prettier/2.8.2: + resolution: {integrity: sha512-BtRV9BcncDyI2tsuS19zzhzoxD8Dh8LiCx7j7tHzrkz8GFXAexeWFdi22mjE1d16dftH2qNaytVxqiRTGlMfpw==} engines: {node: '>=10.13.0'} hasBin: true dev: true From 0b83003ac16b1bac0622139547a516c2b7c648e7 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 12 Jan 2023 01:34:04 +0000 Subject: [PATCH 02/66] chore(deps): update dependency @svitejs/changesets-changelog-github-compact to v1.1.0 (#910) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- pnpm-lock.yaml | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package.json b/package.json index a4d0f6a02..6c6acb956 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,7 @@ }, "devDependencies": { "@changesets/cli": "2.26.0", - "@svitejs/changesets-changelog-github-compact": "1.0.0", + "@svitejs/changesets-changelog-github-compact": "1.1.0", "@types/jest": "^29.2.3", "@types/node": "^18.11.9", "@types/shell-escape": "^0.2.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1ac5a2cc6..a030fc363 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -2,7 +2,7 @@ lockfileVersion: 5.4 specifiers: '@changesets/cli': 2.26.0 - '@svitejs/changesets-changelog-github-compact': 1.0.0 + '@svitejs/changesets-changelog-github-compact': 1.1.0 '@types/jest': ^29.2.3 '@types/node': ^18.11.9 '@types/shell-escape': ^0.2.1 @@ -25,7 +25,7 @@ specifiers: devDependencies: '@changesets/cli': 2.26.0 - '@svitejs/changesets-changelog-github-compact': 1.0.0 + '@svitejs/changesets-changelog-github-compact': 1.1.0 '@types/jest': 29.2.3 '@types/node': 18.11.9 '@types/shell-escape': 0.2.1 @@ -496,8 +496,8 @@ packages: semver: 5.7.1 dev: true - /@changesets/get-github-info/0.5.1: - resolution: {integrity: sha512-w2yl3AuG+hFuEEmT6j1zDlg7GQLM/J2UxTmk0uJBMdRqHni4zXGe/vUlPfLom5KfX3cRfHc0hzGvloDPjWFNZw==} + /@changesets/get-github-info/0.5.2: + resolution: {integrity: sha512-JppheLu7S114aEs157fOZDjFqUDpm7eHdq5E8SSR0gUBTEK0cNSHsrSR5a66xs0z3RWuo46QvA3vawp8BxDHvg==} dependencies: dataloader: 1.4.0 node-fetch: 2.6.7 @@ -1034,11 +1034,11 @@ packages: resolution: {integrity: sha512-8RRAMOB+vEC8FknZtoNKQnttATUN9uERYFC7+qjsd3X3UTb3o2oqVmLFU/kUY5Q72PxbBQqX7u0NAEnEytuMtA==} dev: true - /@svitejs/changesets-changelog-github-compact/1.0.0: - resolution: {integrity: sha512-h9pvZ3Bkk1K9bVr707OlWMtjreBPmXnh/GsxbiIp3ukNu9RjmkxlLmyD+h/DCkr8e0l3UpOlDDAUvbUHYNfGnA==} + /@svitejs/changesets-changelog-github-compact/1.1.0: + resolution: {integrity: sha512-qhUGGDHcpbY2zpjW3SwqchuW8J/5EzlPFud7xNntHKA7f3a/mx5+g+ruJKFHSAiVZYo30PALt+AyhmPUNKH/Og==} engines: {node: ^14.13.1 || ^16.0.0 || >=18} dependencies: - '@changesets/get-github-info': 0.5.1 + '@changesets/get-github-info': 0.5.2 dotenv: 16.0.3 transitivePeerDependencies: - encoding From 5e075f05d4920b4afe35edec448765d1fa02dc32 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 14 Jan 2023 10:15:50 +0000 Subject: [PATCH 03/66] chore(deps): update dependency prettier to v2.8.3 (#913) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- pnpm-lock.yaml | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index 6c6acb956..255651a8a 100644 --- a/package.json +++ b/package.json @@ -34,7 +34,7 @@ "jest": "^29.3.1", "lerna-changelog": "2.2.0", "node-fetch": "^3.3.0", - "prettier": "2.8.2", + "prettier": "2.8.3", "pv": "1.0.1", "shell-escape": "^0.2.0", "svg-term-cli": "2.1.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a030fc363..48499ecca 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -13,7 +13,7 @@ specifiers: jest: ^29.3.1 lerna-changelog: 2.2.0 node-fetch: ^3.3.0 - prettier: 2.8.2 + prettier: 2.8.3 pv: 1.0.1 shell-escape: ^0.2.0 svg-term-cli: 2.1.1 @@ -36,7 +36,7 @@ devDependencies: jest: 29.3.1_@types+node@18.11.9 lerna-changelog: 2.2.0 node-fetch: 3.3.0 - prettier: 2.8.2 + prettier: 2.8.3 pv: 1.0.1 shell-escape: 0.2.0 svg-term-cli: 2.1.1 @@ -407,7 +407,7 @@ packages: fs-extra: 7.0.1 lodash.startcase: 4.4.0 outdent: 0.5.0 - prettier: 2.8.2 + prettier: 2.8.3 resolve-from: 5.0.0 semver: 5.7.1 dev: true @@ -584,7 +584,7 @@ packages: '@changesets/types': 5.2.1 fs-extra: 7.0.1 human-id: 1.0.2 - prettier: 2.8.2 + prettier: 2.8.3 dev: true /@gar/promisify/1.1.3: @@ -3997,8 +3997,8 @@ packages: which-pm: 2.0.0 dev: true - /prettier/2.8.2: - resolution: {integrity: sha512-BtRV9BcncDyI2tsuS19zzhzoxD8Dh8LiCx7j7tHzrkz8GFXAexeWFdi22mjE1d16dftH2qNaytVxqiRTGlMfpw==} + /prettier/2.8.3: + resolution: {integrity: sha512-tJ/oJ4amDihPoufT5sM0Z1SKEuKay8LfVAMlbbhnnkvt6BUserZylqo2PN+p9KeljLr0OHa2rXHU1T8reeoTrw==} engines: {node: '>=10.13.0'} hasBin: true dev: true From 696134ad7cb166c3c54f2e0323ace76b18411bb1 Mon Sep 17 00:00:00 2001 From: Adam Mitz Date: Sat, 29 Apr 2023 00:21:38 -0500 Subject: [PATCH 04/66] Update README.md (#952) In the "using a release binary" steps, use the same link to shell-setup. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d1b2464b8..ae259d4e6 100644 --- a/README.md +++ b/README.md @@ -96,7 +96,7 @@ Then, [set up your shell for fnm](#shell-setup) - Download the [latest release binary](https://github.com/Schniz/fnm/releases) for your system - Make it available globally on `PATH` environment variable -- Configure your shell profile: +- [Set up your shell for fnm](#shell-setup) ### Removing To remove fnm (😒), just delete the `.fnm` folder in your home directory. You should also edit your shell configuration to remove any references to fnm (ie. read [Shell Setup](#shell-setup), and do the opposite). From c80d8cab74f8ed3a7d3cb041106b2c5b4e3e7fd6 Mon Sep 17 00:00:00 2001 From: Fadi Hania Date: Sat, 6 May 2023 13:53:49 +0300 Subject: [PATCH 05/66] Add winget as installation method on Windows (#948) --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index ae259d4e6..9128b90c0 100644 --- a/README.md +++ b/README.md @@ -68,6 +68,12 @@ brew install fnm Then, [set up your shell for fnm](#shell-setup) +#### Using Winget (Windows) + +```sh +winget install Schniz.fnm +``` + #### Using Scoop (Windows) ```sh From 9940513c5139cf3b2cecff277e6a7e694dfaff98 Mon Sep 17 00:00:00 2001 From: Gal Schlezinger Date: Thu, 29 Jun 2023 08:08:57 +0300 Subject: [PATCH 06/66] fix clippy (#972) * fix clippy * cargo fmt --- src/arch.rs | 2 +- src/commands/env.rs | 9 ++++----- src/version_file_strategy.rs | 12 +++--------- 3 files changed, 8 insertions(+), 15 deletions(-) diff --git a/src/arch.rs b/src/arch.rs index 82bda1b66..88985a6d7 100644 --- a/src/arch.rs +++ b/src/arch.rs @@ -25,7 +25,7 @@ pub fn get_safe_arch<'a>(arch: &'a Arch, version: &Version) -> &'a Arch { #[cfg(windows)] /// handle common case: Apple Silicon / Node < 16 pub fn get_safe_arch<'a>(arch: &'a Arch, _version: &Version) -> &'a Arch { - return &arch; + arch } impl Default for Arch { diff --git a/src/commands/env.rs b/src/commands/env.rs index fc82a9e00..f8f8655bf 100644 --- a/src/commands/env.rs +++ b/src/commands/env.rs @@ -64,17 +64,16 @@ impl Command for Env { } let multishell_path = make_symlink(config)?; + let multishell_path_str = multishell_path.to_str().unwrap().to_owned(); + let binary_path = if cfg!(windows) { - multishell_path.clone() + multishell_path } else { multishell_path.join("bin") }; let env_vars = HashMap::from([ - ( - "FNM_MULTISHELL_PATH", - multishell_path.to_str().unwrap().to_owned(), - ), + ("FNM_MULTISHELL_PATH", multishell_path_str), ( "FNM_VERSION_FILE_STRATEGY", config.version_file_strategy().as_str().to_owned(), diff --git a/src/version_file_strategy.rs b/src/version_file_strategy.rs index 89005be45..f55f10f44 100644 --- a/src/version_file_strategy.rs +++ b/src/version_file_strategy.rs @@ -1,7 +1,8 @@ use std::str::FromStr; -#[derive(Debug)] +#[derive(Debug, Default)] pub enum VersionFileStrategy { + #[default] Local, Recursive, } @@ -19,12 +20,6 @@ impl VersionFileStrategy { } } -impl Default for VersionFileStrategy { - fn default() -> Self { - VersionFileStrategy::Local - } -} - impl FromStr for VersionFileStrategy { type Err = String; @@ -33,8 +28,7 @@ impl FromStr for VersionFileStrategy { "local" => Ok(VersionFileStrategy::Local), "recursive" => Ok(VersionFileStrategy::Recursive), _ => Err(format!( - "Invalid strategy: {}. Expected one of: local, recursive", - s + "Invalid strategy: {s}. Expected one of: local, recursive" )), } } From c29f315f185a5e15d3c1b08378076fb6bf399906 Mon Sep 17 00:00:00 2001 From: Gal Schlezinger Date: Thu, 29 Jun 2023 18:25:38 +0300 Subject: [PATCH 07/66] allow to automatically enable corepack (#960) * allow to automatically enable corepack * update command docs * add changeset * fix clippy * don't show the value of corepack * fix test * test against more shells * Make exec handle errors more nicely * nicer i think * set corepack as debug * fix windows-style paths in Bash #390 * fix clippy * run cygpath on `use` validation too * trim whitespace * fix test? * fix test * add changeset --- .changeset/dry-rocks-smash.md | 5 ++ .changeset/rare-otters-perform.md | 5 ++ docs/commands.md | 91 +++++++++++++++++++++++++ e2e/__snapshots__/corepack.test.ts.snap | 28 ++++++++ e2e/corepack.test.ts | 54 +++++++++++++++ e2e/env.test.ts | 1 + e2e/shellcode/script.ts | 20 ++++-- e2e/shellcode/shells/cmdEnv.ts | 9 ++- package.json | 1 + pnpm-lock.yaml | 10 +++ src/commands/env.rs | 4 ++ src/commands/exec.rs | 31 ++++++++- src/commands/install.rs | 30 +++++++- src/commands/use.rs | 6 +- src/config.rs | 16 +++++ src/shell/bash.rs | 2 + src/shell/fish.rs | 2 + src/shell/mod.rs | 2 + src/shell/windows_compat.rs | 21 ++++++ src/shell/zsh.rs | 2 + src/version.rs | 3 + 21 files changed, 331 insertions(+), 12 deletions(-) create mode 100644 .changeset/dry-rocks-smash.md create mode 100644 .changeset/rare-otters-perform.md create mode 100644 e2e/__snapshots__/corepack.test.ts.snap create mode 100644 e2e/corepack.test.ts create mode 100644 src/shell/windows_compat.rs diff --git a/.changeset/dry-rocks-smash.md b/.changeset/dry-rocks-smash.md new file mode 100644 index 000000000..c327ecc6c --- /dev/null +++ b/.changeset/dry-rocks-smash.md @@ -0,0 +1,5 @@ +--- +"fnm": minor +--- + +Add --corepack-enabled flag for automatically enabling corepack on fnm install diff --git a/.changeset/rare-otters-perform.md b/.changeset/rare-otters-perform.md new file mode 100644 index 000000000..8d8562cbb --- /dev/null +++ b/.changeset/rare-otters-perform.md @@ -0,0 +1,5 @@ +--- +"fnm": patch +--- + +use cygwinpath to make the path posix-like on Windows Bash usage diff --git a/docs/commands.md b/docs/commands.md index 6209dfa9a..698b93da5 100644 --- a/docs/commands.md +++ b/docs/commands.md @@ -13,6 +13,13 @@ OPTIONS: [env: FNM_ARCH] + --corepack-enabled + Enable corepack support for each new installation. This will make fnm call `corepack + enable` on every Node.js installation. For more information about corepack see + https://nodejs.org/api/corepack.html + + [env: FNM_COREPACK_ENABLED] + --fnm-dir The root directory of fnm installations @@ -101,6 +108,13 @@ OPTIONS: [env: FNM_ARCH] + --corepack-enabled + Enable corepack support for each new installation. This will make fnm call `corepack + enable` on every Node.js installation. For more information about corepack see + https://nodejs.org/api/corepack.html + + [env: FNM_COREPACK_ENABLED] + --fnm-dir The root directory of fnm installations @@ -151,6 +165,13 @@ OPTIONS: [env: FNM_ARCH] + --corepack-enabled + Enable corepack support for each new installation. This will make fnm call `corepack + enable` on every Node.js installation. For more information about corepack see + https://nodejs.org/api/corepack.html + + [env: FNM_COREPACK_ENABLED] + --fnm-dir The root directory of fnm installations @@ -204,6 +225,13 @@ OPTIONS: [env: FNM_ARCH] + --corepack-enabled + Enable corepack support for each new installation. This will make fnm call `corepack + enable` on every Node.js installation. For more information about corepack see + https://nodejs.org/api/corepack.html + + [env: FNM_COREPACK_ENABLED] + --fnm-dir The root directory of fnm installations @@ -260,6 +288,13 @@ OPTIONS: [env: FNM_ARCH] + --corepack-enabled + Enable corepack support for each new installation. This will make fnm call `corepack + enable` on every Node.js installation. For more information about corepack see + https://nodejs.org/api/corepack.html + + [env: FNM_COREPACK_ENABLED] + --fnm-dir The root directory of fnm installations @@ -317,6 +352,13 @@ OPTIONS: [env: FNM_ARCH] + --corepack-enabled + Enable corepack support for each new installation. This will make fnm call `corepack + enable` on every Node.js installation. For more information about corepack see + https://nodejs.org/api/corepack.html + + [env: FNM_COREPACK_ENABLED] + --fnm-dir The root directory of fnm installations @@ -387,6 +429,13 @@ OPTIONS: [env: FNM_ARCH] + --corepack-enabled + Enable corepack support for each new installation. This will make fnm call `corepack + enable` on every Node.js installation. For more information about corepack see + https://nodejs.org/api/corepack.html + + [env: FNM_COREPACK_ENABLED] + --fnm-dir The root directory of fnm installations @@ -450,6 +499,13 @@ OPTIONS: [env: FNM_ARCH] + --corepack-enabled + Enable corepack support for each new installation. This will make fnm call `corepack + enable` on every Node.js installation. For more information about corepack see + https://nodejs.org/api/corepack.html + + [env: FNM_COREPACK_ENABLED] + --fnm-dir The root directory of fnm installations @@ -506,6 +562,13 @@ OPTIONS: [env: FNM_ARCH] + --corepack-enabled + Enable corepack support for each new installation. This will make fnm call `corepack + enable` on every Node.js installation. For more information about corepack see + https://nodejs.org/api/corepack.html + + [env: FNM_COREPACK_ENABLED] + --fnm-dir The root directory of fnm installations @@ -556,6 +619,13 @@ OPTIONS: [env: FNM_ARCH] + --corepack-enabled + Enable corepack support for each new installation. This will make fnm call `corepack + enable` on every Node.js installation. For more information about corepack see + https://nodejs.org/api/corepack.html + + [env: FNM_COREPACK_ENABLED] + --fnm-dir The root directory of fnm installations @@ -610,6 +680,13 @@ OPTIONS: [env: FNM_ARCH] + --corepack-enabled + Enable corepack support for each new installation. This will make fnm call `corepack + enable` on every Node.js installation. For more information about corepack see + https://nodejs.org/api/corepack.html + + [env: FNM_COREPACK_ENABLED] + --fnm-dir The root directory of fnm installations @@ -667,6 +744,13 @@ OPTIONS: [env: FNM_ARCH] + --corepack-enabled + Enable corepack support for each new installation. This will make fnm call `corepack + enable` on every Node.js installation. For more information about corepack see + https://nodejs.org/api/corepack.html + + [env: FNM_COREPACK_ENABLED] + --fnm-dir The root directory of fnm installations @@ -721,6 +805,13 @@ OPTIONS: [env: FNM_ARCH] + --corepack-enabled + Enable corepack support for each new installation. This will make fnm call `corepack + enable` on every Node.js installation. For more information about corepack see + https://nodejs.org/api/corepack.html + + [env: FNM_COREPACK_ENABLED] + --fnm-dir The root directory of fnm installations diff --git a/e2e/__snapshots__/corepack.test.ts.snap b/e2e/__snapshots__/corepack.test.ts.snap new file mode 100644 index 000000000..03b21b911 --- /dev/null +++ b/e2e/__snapshots__/corepack.test.ts.snap @@ -0,0 +1,28 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Bash installs corepack: Bash 1`] = ` +"set -e +eval "$(fnm env --corepack-enabled)" +fnm install 18 +fnm exec --using=18 node test-pnpm-corepack.js" +`; + +exports[`Fish installs corepack: Fish 1`] = ` +"fnm env --corepack-enabled | source +fnm install 18 +fnm exec --using=18 node test-pnpm-corepack.js" +`; + +exports[`PowerShell installs corepack: PowerShell 1`] = ` +"$ErrorActionPreference = "Stop" +fnm env --corepack-enabled | Out-String | Invoke-Expression +fnm install 18 +fnm exec --using=18 node test-pnpm-corepack.js" +`; + +exports[`Zsh installs corepack: Zsh 1`] = ` +"set -e +eval "$(fnm env --corepack-enabled)" +fnm install 18 +fnm exec --using=18 node test-pnpm-corepack.js" +`; diff --git a/e2e/corepack.test.ts b/e2e/corepack.test.ts new file mode 100644 index 000000000..6917ea1ea --- /dev/null +++ b/e2e/corepack.test.ts @@ -0,0 +1,54 @@ +import fs from "fs" +import { script } from "./shellcode/script.js" +import { Bash, Fish, PowerShell, Zsh } from "./shellcode/shells.js" +import describe from "./describe.js" +import path from "path" +import testCwd from "./shellcode/test-cwd.js" +import { createRequire } from "module" + +const require = createRequire(import.meta.url) +const whichPath = require.resolve("which") + +const nodescript = ` + const which = require(${JSON.stringify(whichPath)}); + const pnpmBinary = which.sync('pnpm') + const nodeBinary = which.sync('node') + + const binPath = require('path').dirname(nodeBinary); + + if (!pnpmBinary.includes(binPath)) { + console.log('pnpm not found in current Node.js bin', { binPath, pnpmBinary }); + process.exit(1); + } + const scriptContents = require('fs').readFileSync(pnpmBinary, 'utf8'); + console.log('scriptContents', scriptContents) + if (!scriptContents.includes('corepack')) { + console.log('corepack not found in pnpm script'); + process.exit(1); + } +` + +for (const shell of [Bash, Fish, PowerShell, Zsh]) { + describe(shell, () => { + test(`installs corepack`, async () => { + const cwd = testCwd() + const filepath = path.join(cwd, "test-pnpm-corepack.js") + fs.writeFileSync(filepath, nodescript) + + await script(shell) + .then(shell.env({ corepackEnabled: true })) + .then(shell.call("fnm", ["install", "18"])) + .then( + shell.call("fnm", [ + "exec", + "--using=18", + "node", + "test-pnpm-corepack.js", + ]) + ) + .takeSnapshot(shell) + // .addExtraEnvVar("RUST_LOG", "fnm=debug") + .execute(shell) + }) + }) +} diff --git a/e2e/env.test.ts b/e2e/env.test.ts index d07ad6a39..95fe48c38 100644 --- a/e2e/env.test.ts +++ b/e2e/env.test.ts @@ -26,6 +26,7 @@ for (const shell of [Bash, Zsh, Fish, PowerShell, WinCmd]) { FNM_LOGLEVEL: "info", FNM_MULTISHELL_PATH: expect.any(String), FNM_NODE_DIST_MIRROR: expect.any(String), + FNM_COREPACK_ENABLED: "false", FNM_VERSION_FILE_STRATEGY: "local", }) } diff --git a/e2e/shellcode/script.ts b/e2e/shellcode/script.ts index 3c6a7da2b..142f88f8b 100644 --- a/e2e/shellcode/script.ts +++ b/e2e/shellcode/script.ts @@ -15,7 +15,8 @@ class Script { private readonly config: { fnmDir: string }, - private readonly lines: ScriptLine[] + private readonly lines: ScriptLine[], + private readonly extraEnvVars: Record = {} ) {} then(line: ScriptLine): Script { return new Script(this.config, [...this.lines, line]) @@ -28,6 +29,14 @@ class Script { return this } + addExtraEnvVar(name: string, value: string): this { + return new Script( + this.config, + this.lines, + Object.assign({}, this.extraEnvVars, { [name]: value }) + ) as this + } + async execute( shell: Pick< Shell, @@ -54,6 +63,7 @@ class Script { cwd: testCwd(), env: (() => { const newProcessEnv: Record = { + ...this.extraEnvVars, ...removeAllFnmEnvVars(process.env), PATH: [testBinDir(), fnmTargetDir(), process.env.PATH] .filter(Boolean) @@ -119,8 +129,8 @@ function streamOutputsAndBuffer(child: ExecaChildProcess) { if (child.stdout) { child.stdout.on("data", (data) => { - const line = data.toString().trim() - if (line) { + const lines = data.toString().trim().split(/\r?\n/) + for (const line of lines) { process.stdout.write(`${stdoutPrefix}${line}\n`) } stdout.push(data.toString()) @@ -129,8 +139,8 @@ function streamOutputsAndBuffer(child: ExecaChildProcess) { if (child.stderr) { child.stderr.on("data", (data) => { - const line = data.toString().trim() - if (line) { + const lines = data.toString().trim().split(/\r?\n/) + for (const line of lines) { process.stdout.write(`${stderrPrefix}${line}\n`) } stderr.push(data.toString()) diff --git a/e2e/shellcode/shells/cmdEnv.ts b/e2e/shellcode/shells/cmdEnv.ts index 581965f5d..82564ec8f 100644 --- a/e2e/shellcode/shells/cmdEnv.ts +++ b/e2e/shellcode/shells/cmdEnv.ts @@ -1,14 +1,19 @@ import { ScriptLine, define } from "./types.js" -type EnvConfig = { useOnCd: boolean; logLevel: string } +type EnvConfig = { + useOnCd: boolean + logLevel: string + corepackEnabled: boolean +} export type HasEnv = { env(cfg: Partial): ScriptLine } function stringify(envConfig: Partial = {}) { - const { useOnCd, logLevel } = envConfig + const { useOnCd, logLevel, corepackEnabled } = envConfig return [ `fnm env`, useOnCd && "--use-on-cd", logLevel && `--log-level=${logLevel}`, + corepackEnabled && "--corepack-enabled", ] .filter(Boolean) .join(" ") diff --git a/package.json b/package.json index 255651a8a..cedbdd0dd 100644 --- a/package.json +++ b/package.json @@ -42,6 +42,7 @@ "ts-dedent": "^2.2.0", "ts-jest": "^29.0.3", "typescript": "^4.8.4", + "which": "^3.0.1", "zod": "^3.19.1" }, "prettier": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 48499ecca..ae1b92df3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -21,6 +21,7 @@ specifiers: ts-dedent: ^2.2.0 ts-jest: ^29.0.3 typescript: ^4.8.4 + which: ^3.0.1 zod: ^3.19.1 devDependencies: @@ -44,6 +45,7 @@ devDependencies: ts-dedent: 2.2.0 ts-jest: 29.0.3_4f6uxrzmuwipl5rr3bcogf6k74 typescript: 4.9.3 + which: 3.0.1 zod: 3.19.1 packages: @@ -5057,6 +5059,14 @@ packages: isexe: 2.0.0 dev: true + /which/3.0.1: + resolution: {integrity: sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + hasBin: true + dependencies: + isexe: 2.0.0 + dev: true + /wrap-ansi/6.2.0: resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} engines: {node: '>=8'} diff --git a/src/commands/env.rs b/src/commands/env.rs index f8f8655bf..fb1b949a3 100644 --- a/src/commands/env.rs +++ b/src/commands/env.rs @@ -90,6 +90,10 @@ impl Command for Env { "FNM_NODE_DIST_MIRROR", config.node_dist_mirror.as_str().to_owned(), ), + ( + "FNM_COREPACK_ENABLED", + config.corepack_enabled().to_string(), + ), ("FNM_ARCH", config.arch.to_string()), ]); diff --git a/src/commands/exec.rs b/src/commands/exec.rs index d23b1f094..972b81d94 100644 --- a/src/commands/exec.rs +++ b/src/commands/exec.rs @@ -23,6 +23,25 @@ pub struct Exec { arguments: Vec, } +impl Exec { + pub(crate) fn new_for_version( + version: &crate::version::Version, + cmd: &str, + arguments: &[&str], + ) -> Self { + let reader = UserVersionReader::Direct(UserVersion::Full(version.clone())); + let args: Vec<_> = std::iter::once(cmd) + .chain(arguments.iter().copied()) + .map(String::from) + .collect(); + Self { + version: Some(reader), + using_file: false, + arguments: args, + } + } +} + impl Cmd for Exec { type Error = Error; @@ -69,6 +88,8 @@ impl Cmd for Exec { .map_err(|source| Error::CantAddPathToEnvironment { source })? }; + log::debug!("Running {} with PATH={:?}", binary, path_env); + let exit_status = Command::new(binary) .args(arguments) .stdin(Stdio::inherit()) @@ -76,7 +97,10 @@ impl Cmd for Exec { .stderr(Stdio::inherit()) .env("PATH", path_env) .spawn() - .expect("Can't spawn program") + .map_err(|source| Error::CantSpawnProgram { + source, + binary: binary.to_string(), + })? .wait() .expect("Failed to grab exit code"); @@ -87,6 +111,11 @@ impl Cmd for Exec { #[derive(Debug, Error)] pub enum Error { + #[error("Can't spawn program: {source}\nMaybe the program {} does not exist on not available in PATH?", binary.bold())] + CantSpawnProgram { + source: std::io::Error, + binary: String, + }, #[error("Can't read path environment variable")] CantReadPathVariable, #[error("Can't add path to environment variable: {}", source)] diff --git a/src/commands/install.rs b/src/commands/install.rs index ee22ebfe4..2c553844b 100644 --- a/src/commands/install.rs +++ b/src/commands/install.rs @@ -1,3 +1,4 @@ +use super::command::Command; use crate::alias::create_alias; use crate::arch::get_safe_arch; use crate::config::FnmConfig; @@ -49,7 +50,7 @@ impl Install { } } -impl super::command::Command for Install { +impl Command for Install { type Error = Error; fn apply(self, config: &FnmConfig) -> Result<(), Self::Error> { @@ -134,9 +135,15 @@ impl super::command::Command for Install { Err(err @ DownloaderError::VersionAlreadyInstalled { .. }) => { outln!(config, Error, "{} {}", "warning:".bold().yellow(), err); } - other_err => other_err.map_err(|source| Error::DownloadError { source })?, + Err(source) => Err(Error::DownloadError { source })?, + Ok(_) => {} }; + if config.corepack_enabled() { + outln!(config, Info, "Enabling corepack for {}", version_str.cyan()); + enable_corepack(&version, config)?; + } + if let UserVersion::Full(Version::Lts(lts_type)) = current_version { let alias_name = Version::Lts(lts_type).v_str(); debug!( @@ -156,6 +163,19 @@ impl super::command::Command for Install { } } +fn enable_corepack(version: &Version, config: &FnmConfig) -> Result<(), Error> { + let corepack_path = version.installation_path(config); + let corepack_path = if cfg!(windows) { + corepack_path.join("corepack.cmd") + } else { + corepack_path.join("bin").join("corepack") + }; + super::exec::Exec::new_for_version(version, corepack_path.to_str().unwrap(), &["enable"]) + .apply(config) + .map_err(|source| Error::CorepackError { source })?; + Ok(()) +} + #[derive(Debug, Error)] pub enum Error { #[error("Can't download the requested binary: {}", source)] @@ -165,6 +185,11 @@ pub enum Error { #[from] source: std::io::Error, }, + #[error("Can't enable corepack: {source}")] + CorepackError { + #[from] + source: super::exec::Error, + }, #[error("Can't find version in dotfiles. Please provide a version manually to the command.")] CantInferVersion, #[error("Having a hard time listing the remote versions: {}", source)] @@ -186,7 +211,6 @@ pub enum Error { #[cfg(test)] mod tests { - use super::super::command::Command; use super::*; use pretty_assertions::assert_eq; use std::str::FromStr; diff --git a/src/commands/use.rs b/src/commands/use.rs index 70375dd8c..64539c0e4 100644 --- a/src/commands/use.rs +++ b/src/commands/use.rs @@ -4,6 +4,7 @@ use crate::current_version::current_version; use crate::fs; use crate::installed_versions; use crate::outln; +use crate::shell; use crate::system_version; use crate::user_version::UserVersion; use crate::version::Version; @@ -190,8 +191,11 @@ fn warn_if_multishell_path_not_in_path_env_var( multishell_path.to_path_buf() }; + let fixed_path = bin_path.to_str().and_then(shell::maybe_fix_windows_path); + let fixed_path = fixed_path.as_ref().map(|x| &x[..]); + for path in std::env::split_paths(&std::env::var("PATH").unwrap_or_default()) { - if bin_path == path { + if bin_path == path || fixed_path == path.to_str() { return; } } diff --git a/src/config.rs b/src/config.rs index f0644156f..e94c38957 100644 --- a/src/config.rs +++ b/src/config.rs @@ -70,6 +70,17 @@ pub struct FnmConfig { hide_env_values = true, )] version_file_strategy: VersionFileStrategy, + + /// Enable corepack support for each new installation. + /// This will make fnm call `corepack enable` on every Node.js installation. + /// For more information about corepack see https://nodejs.org/api/corepack.html + #[clap( + long, + env = "FNM_COREPACK_ENABLED", + global = true, + hide_env_values = true + )] + corepack_enabled: bool, } impl Default for FnmConfig { @@ -81,6 +92,7 @@ impl Default for FnmConfig { log_level: LogLevel::Info, arch: Arch::default(), version_file_strategy: VersionFileStrategy::default(), + corepack_enabled: false, } } } @@ -90,6 +102,10 @@ impl FnmConfig { &self.version_file_strategy } + pub fn corepack_enabled(&self) -> bool { + self.corepack_enabled + } + pub fn multishell_path(&self) -> Option<&std::path::Path> { match &self.multishell_path { None => None, diff --git a/src/shell/bash.rs b/src/shell/bash.rs index 8f91a689f..cada96dce 100644 --- a/src/shell/bash.rs +++ b/src/shell/bash.rs @@ -16,6 +16,8 @@ impl Shell for Bash { let path = path .to_str() .ok_or_else(|| anyhow::anyhow!("Can't convert path to string"))?; + let path = + super::windows_compat::maybe_fix_windows_path(path).unwrap_or_else(|| path.to_string()); Ok(format!("export PATH={path:?}:$PATH")) } diff --git a/src/shell/fish.rs b/src/shell/fish.rs index 078f966d2..18f6b32c2 100644 --- a/src/shell/fish.rs +++ b/src/shell/fish.rs @@ -16,6 +16,8 @@ impl Shell for Fish { let path = path .to_str() .ok_or_else(|| anyhow::anyhow!("Can't convert path to string"))?; + let path = + super::windows_compat::maybe_fix_windows_path(path).unwrap_or_else(|| path.to_string()); Ok(format!("set -gx PATH {path:?} $PATH;")) } diff --git a/src/shell/mod.rs b/src/shell/mod.rs index 4e27cd0cb..2460b7a11 100644 --- a/src/shell/mod.rs +++ b/src/shell/mod.rs @@ -7,6 +7,7 @@ mod zsh; #[allow(clippy::module_inception)] mod shell; +mod windows_compat; pub use bash::Bash; pub use fish::Fish; @@ -14,4 +15,5 @@ pub use infer::infer_shell; pub use powershell::PowerShell; pub use shell::{Shell, AVAILABLE_SHELLS}; pub use windows_cmd::WindowsCmd; +pub use windows_compat::maybe_fix_windows_path; pub use zsh::Zsh; diff --git a/src/shell/windows_compat.rs b/src/shell/windows_compat.rs new file mode 100644 index 000000000..d35f8153a --- /dev/null +++ b/src/shell/windows_compat.rs @@ -0,0 +1,21 @@ +/// On Bash for Windows, we need to convert the path from a Windows-style +/// path to a Unix-style path. This is because Bash for Windows doesn't +/// understand Windows-style paths. We use `cygpath` to do this conversion. +/// If `cygpath` fails, we assume we're not on Bash for Windows and just +/// return the original path. +pub fn maybe_fix_windows_path(path: &str) -> Option { + if !cfg!(windows) { + return None; + } + + let output = std::process::Command::new("cygpath") + .arg(path) + .output() + .ok()?; + if output.status.success() { + let output = String::from_utf8(output.stdout).ok()?; + Some(output.trim().to_string()) + } else { + None + } +} diff --git a/src/shell/zsh.rs b/src/shell/zsh.rs index 44ff5572c..01e039cbe 100644 --- a/src/shell/zsh.rs +++ b/src/shell/zsh.rs @@ -16,6 +16,8 @@ impl Shell for Zsh { let path = path .to_str() .ok_or_else(|| anyhow::anyhow!("Path is not valid UTF-8"))?; + let path = + super::windows_compat::maybe_fix_windows_path(path).unwrap_or_else(|| path.to_string()); Ok(format!("export PATH={path:?}:$PATH")) } diff --git a/src/version.rs b/src/version.rs index 35b479d1e..b5f50d701 100644 --- a/src/version.rs +++ b/src/version.rs @@ -77,6 +77,9 @@ impl Version { } } +// TODO: add a trait called BinPath that &Path and PathBuf implements +// which adds the `.bin_path()` which works both on windows and unix :) + impl<'de> serde::Deserialize<'de> for Version { fn deserialize(deserializer: D) -> Result where From f3a2247868b049728050fa449e620c6bcd7d4cd3 Mon Sep 17 00:00:00 2001 From: Gal Schlezinger Date: Thu, 29 Jun 2023 19:55:04 +0300 Subject: [PATCH 08/66] fix workflow arguments (#977) --- .github/workflows/rust.yml | 585 ++++++++++++++++++------------------- 1 file changed, 292 insertions(+), 293 deletions(-) diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index e02ad1c07..46984f6bd 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -14,24 +14,24 @@ jobs: fmt: runs-on: ubuntu-latest steps: - - uses: hecrj/setup-rust-action@v1 - with: - rust-version: stable - - uses: Swatinem/rust-cache@v2 - - uses: actions/checkout@v3 - - name: cargo fmt - run: cargo fmt -- --check + - uses: hecrj/setup-rust-action@v1 + with: + rust-version: stable + - uses: Swatinem/rust-cache@v2 + - uses: actions/checkout@v3 + - name: cargo fmt + run: cargo fmt -- --check clippy: runs-on: ubuntu-latest steps: - - uses: hecrj/setup-rust-action@v1 - with: - rust-version: stable - - uses: Swatinem/rust-cache@v2 - - uses: actions/checkout@v3 - - name: cargo clippy - run: cargo clippy -- -D warnings + - uses: hecrj/setup-rust-action@v1 + with: + rust-version: stable + - uses: Swatinem/rust-cache@v2 + - uses: actions/checkout@v3 + - name: cargo clippy + run: cargo clippy -- -D warnings unit_tests: runs-on: ${{ matrix.os }} @@ -39,125 +39,125 @@ jobs: matrix: os: [ubuntu-latest, macOS-latest, windows-latest] steps: - - uses: hecrj/setup-rust-action@v1 - with: - rust-version: stable - - uses: Swatinem/rust-cache@v2 - - uses: actions/checkout@v3 - - name: Run tests - run: cargo test + - uses: hecrj/setup-rust-action@v1 + with: + rust-version: stable + - uses: Swatinem/rust-cache@v2 + - uses: actions/checkout@v3 + - name: Run tests + run: cargo test build_release: runs-on: windows-latest name: "Release build for Windows" steps: - - uses: hecrj/setup-rust-action@v1 - with: - rust-version: stable - - uses: Swatinem/rust-cache@v2 - - uses: actions/checkout@v3 - - name: Build release binary - run: cargo build --release - env: - RUSTFLAGS: "-C target-feature=+crt-static" - - uses: actions/upload-artifact@v3 - with: - name: fnm-windows - path: target/release/fnm.exe + - uses: hecrj/setup-rust-action@v1 + with: + rust-version: stable + - uses: Swatinem/rust-cache@v2 + - uses: actions/checkout@v3 + - name: Build release binary + run: cargo build --release + env: + RUSTFLAGS: "-C target-feature=+crt-static" + - uses: actions/upload-artifact@v3 + with: + name: fnm-windows + path: target/release/fnm.exe build_macos_release: runs-on: macos-latest name: "Release build for macOS" steps: - - uses: hecrj/setup-rust-action@v1 - with: - rust-version: stable - - uses: Swatinem/rust-cache@v2 - - uses: actions/checkout@v3 - - name: Build release binary - run: cargo build --release - env: - LZMA_API_STATIC: "true" - - name: Strip binary from debug symbols - run: strip target/release/fnm - - name: List dynamically linked libraries - run: otool -L target/release/fnm - - uses: actions/upload-artifact@v3 - with: - name: fnm-macos - path: target/release/fnm + - uses: hecrj/setup-rust-action@v1 + with: + rust-version: stable + - uses: Swatinem/rust-cache@v2 + - uses: actions/checkout@v3 + - name: Build release binary + run: cargo build --release + env: + LZMA_API_STATIC: "true" + - name: Strip binary from debug symbols + run: strip target/release/fnm + - name: List dynamically linked libraries + run: otool -L target/release/fnm + - uses: actions/upload-artifact@v3 + with: + name: fnm-macos + path: target/release/fnm e2e_macos: runs-on: macos-latest needs: [build_macos_release] name: "e2e/macos" steps: - - name: install necessary shells - run: brew install fish zsh bash - - uses: actions/checkout@v3 - - uses: actions/download-artifact@v3 - with: - name: fnm-macos - path: target/release - - name: mark binary as executable - run: chmod +x target/release/fnm - - uses: pnpm/action-setup@v2.2.4 - with: - run_install: false - - uses: actions/setup-node@v3 - with: - node-version: 18.x - cache: 'pnpm' - - name: Get pnpm store directory - id: pnpm-cache - run: | - echo "::set-output name=pnpm_cache_dir::$(pnpm store path)" - - uses: actions/cache@v3 - name: Setup pnpm cache - with: - path: ${{ steps.pnpm-cache.outputs.pnpm_cache_dir }} - key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} - restore-keys: | - ${{ runner.os }}-pnpm-store- - - run: pnpm install - - run: pnpm test - env: - FNM_TARGET_NAME: "release" - FORCE_COLOR: "1" + - name: install necessary shells + run: brew install fish zsh bash + - uses: actions/checkout@v3 + - uses: actions/download-artifact@v3 + with: + name: fnm-macos + path: target/release + - name: mark binary as executable + run: chmod +x target/release/fnm + - uses: pnpm/action-setup@v2.2.4 + with: + run_install: false + - uses: actions/setup-node@v3 + with: + node-version: 18.x + cache: "pnpm" + - name: Get pnpm store directory + id: pnpm-cache + run: | + echo "::set-output name=pnpm_cache_dir::$(pnpm store path)" + - uses: actions/cache@v3 + name: Setup pnpm cache + with: + path: ${{ steps.pnpm-cache.outputs.pnpm_cache_dir }} + key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} + restore-keys: | + ${{ runner.os }}-pnpm-store- + - run: pnpm install + - run: pnpm test + env: + FNM_TARGET_NAME: "release" + FORCE_COLOR: "1" e2e_windows: runs-on: windows-latest needs: [build_release] name: "e2e/windows" steps: - - uses: actions/checkout@v3 - - uses: actions/download-artifact@v3 - with: - name: fnm-windows - path: target/release - - uses: pnpm/action-setup@v2.2.4 - with: - run_install: false - - uses: actions/setup-node@v3 - with: - node-version: 18.x - cache: 'pnpm' - - name: Get pnpm store directory - id: pnpm-cache - run: | - echo "::set-output name=pnpm_cache_dir::$(pnpm store path)" - - uses: actions/cache@v3 - name: Setup pnpm cache - with: - path: ${{ steps.pnpm-cache.outputs.pnpm_cache_dir }} - key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} - restore-keys: | - ${{ runner.os }}-pnpm-store- - - run: pnpm install - - run: pnpm test - env: - FNM_TARGET_NAME: "release" - FORCE_COLOR: "1" + - uses: actions/checkout@v3 + - uses: actions/download-artifact@v3 + with: + name: fnm-windows + path: target/release + - uses: pnpm/action-setup@v2.2.4 + with: + run_install: false + - uses: actions/setup-node@v3 + with: + node-version: 18.x + cache: "pnpm" + - name: Get pnpm store directory + id: pnpm-cache + run: | + echo "::set-output name=pnpm_cache_dir::$(pnpm store path)" + - uses: actions/cache@v3 + name: Setup pnpm cache + with: + path: ${{ steps.pnpm-cache.outputs.pnpm_cache_dir }} + key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} + restore-keys: | + ${{ runner.os }}-pnpm-store- + - run: pnpm install + - run: pnpm test + env: + FNM_TARGET_NAME: "release" + FORCE_COLOR: "1" # e2e_windows_debug: # runs-on: windows-latest @@ -198,63 +198,63 @@ jobs: needs: [build_static_linux_binary] name: "e2e/linux" steps: - - name: install necessary shells - run: sudo apt-get update && sudo apt-get install -y fish zsh bash - - uses: actions/checkout@v3 - - uses: actions/download-artifact@v3 - with: - name: fnm-linux - path: target/release - - name: mark binary as executable - run: chmod +x target/release/fnm - - uses: pnpm/action-setup@v2.2.4 - with: - run_install: false - - uses: actions/setup-node@v3 - with: - node-version: 18.x - cache: 'pnpm' - - name: Get pnpm store directory - id: pnpm-cache - run: | - echo "::set-output name=pnpm_cache_dir::$(pnpm store path)" - - uses: actions/cache@v3 - name: Setup pnpm cache - with: - path: ${{ steps.pnpm-cache.outputs.pnpm_cache_dir }} - key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} - restore-keys: | - ${{ runner.os }}-pnpm-store- - - run: pnpm install - - run: pnpm test - env: - FNM_TARGET_NAME: "release" - FORCE_COLOR: "1" + - name: install necessary shells + run: sudo apt-get update && sudo apt-get install -y fish zsh bash + - uses: actions/checkout@v3 + - uses: actions/download-artifact@v3 + with: + name: fnm-linux + path: target/release + - name: mark binary as executable + run: chmod +x target/release/fnm + - uses: pnpm/action-setup@v2.2.4 + with: + run_install: false + - uses: actions/setup-node@v3 + with: + node-version: 18.x + cache: "pnpm" + - name: Get pnpm store directory + id: pnpm-cache + run: | + echo "::set-output name=pnpm_cache_dir::$(pnpm store path)" + - uses: actions/cache@v3 + name: Setup pnpm cache + with: + path: ${{ steps.pnpm-cache.outputs.pnpm_cache_dir }} + key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} + restore-keys: | + ${{ runner.os }}-pnpm-store- + - run: pnpm install + - run: pnpm test + env: + FNM_TARGET_NAME: "release" + FORCE_COLOR: "1" build_static_linux_binary: name: "Build static Linux binary" runs-on: ubuntu-latest steps: - - uses: hecrj/setup-rust-action@v1 - with: - rust-version: stable - targets: x86_64-unknown-linux-musl - - uses: Swatinem/rust-cache@v2 - with: - key: static-linux-binary - - name: Install musl tools - run: | - sudo apt-get update - sudo apt-get install -y --no-install-recommends musl-tools - - uses: actions/checkout@v3 - - name: Build release binary - run: cargo build --release --target x86_64-unknown-linux-musl - - name: Strip binary from debug symbols - run: strip target/x86_64-unknown-linux-musl/release/fnm - - uses: actions/upload-artifact@v3 - with: - name: fnm-linux - path: target/x86_64-unknown-linux-musl/release/fnm + - uses: hecrj/setup-rust-action@v1 + with: + rust-version: stable + targets: x86_64-unknown-linux-musl + - uses: Swatinem/rust-cache@v2 + with: + key: static-linux-binary + - name: Install musl tools + run: | + sudo apt-get update + sudo apt-get install -y --no-install-recommends musl-tools + - uses: actions/checkout@v3 + - name: Build release binary + run: cargo build --release --target x86_64-unknown-linux-musl + - name: Strip binary from debug symbols + run: strip target/x86_64-unknown-linux-musl/release/fnm + - uses: actions/upload-artifact@v3 + with: + name: fnm-linux + path: target/x86_64-unknown-linux-musl/release/fnm build_static_arm_binary: name: "Build ARM binary" @@ -273,90 +273,90 @@ jobs: env: RUST_TARGET: ${{ matrix.rust_target }} steps: - - name: Set up QEMU - id: qemu - uses: docker/setup-qemu-action@v2 - - uses: hecrj/setup-rust-action@v1 - with: - rust-version: stable - - uses: Swatinem/rust-cache@v2 - with: - key: arm-binary-${{ matrix.arch }} - - name: 'Download `cross` crate' - run: cargo install cross - - uses: actions/checkout@v3 - - name: "Build release" - run: cross build --target $RUST_TARGET --release - - uses: uraimo/run-on-arch-action@v2.1.2 - name: Sanity test - with: - arch: ${{matrix.docker_platform}} - distro: ubuntu18.04 + - name: Set up QEMU + id: qemu + uses: docker/setup-qemu-action@v2 + - uses: hecrj/setup-rust-action@v1 + with: + rust-version: stable + - uses: Swatinem/rust-cache@v2 + with: + key: arm-binary-${{ matrix.arch }} + - name: "Download `cross` crate" + run: cargo install cross + - uses: actions/checkout@v3 + - name: "Build release" + run: cross build --target $RUST_TARGET --release + - uses: uraimo/run-on-arch-action@v2.1.2 + name: Sanity test + with: + arch: ${{matrix.docker_platform}} + distro: ubuntu18.04 - # Not required, but speeds up builds by storing container images in - # a GitHub package registry. - githubToken: ${{ github.token }} + # Not required, but speeds up builds by storing container images in + # a GitHub package registry. + githubToken: ${{ github.token }} - env: | - RUST_LOG: fnm=debug + env: | + RUST_LOG: fnm=debug - dockerRunArgs: | + dockerRunArgs: | --volume "${PWD}/target/${{matrix.rust_target}}/release:/artifacts" - # Set an output parameter `uname` for use in subsequent steps - run: | - echo "Hello from $(uname -a)" - /artifacts/fnm --version - echo "fnm install 12.0.0" - /artifacts/fnm install 12.0.0 - echo "fnm exec --using=12 -- node --version" - /artifacts/fnm exec --using=12 -- node --version + # Set an output parameter `uname` for use in subsequent steps + run: | + echo "Hello from $(uname -a)" + /artifacts/fnm --version + echo "fnm install 12.0.0" + /artifacts/fnm install 12.0.0 + echo "fnm exec --using=12 -- node --version" + /artifacts/fnm exec --using=12 -- node --version - - uses: actions/upload-artifact@v3 - with: - name: fnm-${{ matrix.arch }} - path: target/${{ env.RUST_TARGET }}/release/fnm + - uses: actions/upload-artifact@v3 + with: + name: fnm-${{ matrix.arch }} + path: target/${{ env.RUST_TARGET }}/release/fnm ensure_commands_markdown_is_up_to_date: runs-on: ubuntu-latest name: Ensure command docs are up-to-date needs: [build_static_linux_binary] steps: - - name: install necessary shells - run: sudo apt-get update && sudo apt-get install -y fish zsh bash - - uses: actions/checkout@v3 - - uses: actions/download-artifact@v3 - with: - name: fnm-linux - path: target/release - - name: mark binary as executable - run: chmod +x target/release/fnm - - name: install fnm as binary - run: | - sudo install target/release/fnm /bin - fnm --version - - uses: pnpm/action-setup@v2.2.4 - with: - run_install: false - - uses: actions/setup-node@v3 - with: - node-version: 18.x - cache: 'pnpm' - - name: Get pnpm store directory - id: pnpm-cache - run: | - echo "::set-output name=pnpm_cache_dir::$(pnpm store path)" - - uses: actions/cache@v3 - name: Setup pnpm cache - with: - path: ${{ steps.pnpm-cache.outputs.pnpm_cache_dir }} - key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} - restore-keys: | - ${{ runner.os }}-pnpm-store- - - run: pnpm install - - name: Generate command markdown - run: | - pnpm run generate-command-docs --check --binary-path=$(which fnm) + - name: install necessary shells + run: sudo apt-get update && sudo apt-get install -y fish zsh bash + - uses: actions/checkout@v3 + - uses: actions/download-artifact@v3 + with: + name: fnm-linux + path: target/release + - name: mark binary as executable + run: chmod +x target/release/fnm + - name: install fnm as binary + run: | + sudo install target/release/fnm /bin + fnm --version + - uses: pnpm/action-setup@v2.2.4 + with: + run_install: false + - uses: actions/setup-node@v3 + with: + node-version: 18.x + cache: "pnpm" + - name: Get pnpm store directory + id: pnpm-cache + run: | + echo "::set-output name=pnpm_cache_dir::$(pnpm store path)" + - uses: actions/cache@v3 + name: Setup pnpm cache + with: + path: ${{ steps.pnpm-cache.outputs.pnpm_cache_dir }} + key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} + restore-keys: | + ${{ runner.os }}-pnpm-store- + - run: pnpm install + - name: Generate command markdown + run: | + pnpm run generate-command-docs --check --binary-path=$(which fnm) run_e2e_benchmarks: runs-on: ubuntu-latest @@ -366,63 +366,62 @@ jobs: contents: write pull-requests: write steps: - - name: install necessary shells - run: sudo apt-get update && sudo apt-get install -y fish zsh bash hyperfine - - uses: actions/checkout@v3 - - uses: actions/download-artifact@v3 - with: - name: fnm-linux - path: target/release - - name: mark binary as executable - run: chmod +x target/release/fnm - - name: install fnm as binary - run: | - sudo install target/release/fnm /bin - fnm --version - - uses: pnpm/action-setup@v2.2.4 - with: - run_install: false - - uses: actions/setup-node@v3 - with: - node-version: 18.x - cache: 'pnpm' - - name: Get pnpm store directory - id: pnpm-cache - run: | - echo "::set-output name=pnpm_cache_dir::$(pnpm store path)" - - uses: actions/cache@v3 - name: Setup pnpm cache - with: - path: ${{ steps.pnpm-cache.outputs.pnpm_cache_dir }} - key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} - restore-keys: | - ${{ runner.os }}-pnpm-store- - - run: pnpm install - - name: Run benchmarks - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - SHOULD_STORE: ${{ toJson(!github.event.pull_request) }} - id: benchmark - run: | - delimiter="$(openssl rand -hex 8)" - echo "markdown<<${delimiter}" >> "${GITHUB_OUTPUT}" - node benchmarks/run.mjs --store=$SHOULD_STORE >> "${GITHUB_OUTPUT}" - echo "${delimiter}" >> "${GITHUB_OUTPUT}" + - name: install necessary shells + run: sudo apt-get update && sudo apt-get install -y fish zsh bash hyperfine + - uses: actions/checkout@v3 + - uses: actions/download-artifact@v3 + with: + name: fnm-linux + path: target/release + - name: mark binary as executable + run: chmod +x target/release/fnm + - name: install fnm as binary + run: | + sudo install target/release/fnm /bin + fnm --version + - uses: pnpm/action-setup@v2.2.4 + with: + run_install: false + - uses: actions/setup-node@v3 + with: + node-version: 18.x + cache: "pnpm" + - name: Get pnpm store directory + id: pnpm-cache + run: | + echo "::set-output name=pnpm_cache_dir::$(pnpm store path)" + - uses: actions/cache@v3 + name: Setup pnpm cache + with: + path: ${{ steps.pnpm-cache.outputs.pnpm_cache_dir }} + key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} + restore-keys: | + ${{ runner.os }}-pnpm-store- + - run: pnpm install + - name: Run benchmarks + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + SHOULD_STORE: ${{ toJson(!github.event.pull_request) }} + id: benchmark + run: | + delimiter="$(openssl rand -hex 8)" + echo "markdown<<${delimiter}" >> "${GITHUB_OUTPUT}" + node benchmarks/run.mjs --store=$SHOULD_STORE >> "${GITHUB_OUTPUT}" + echo "${delimiter}" >> "${GITHUB_OUTPUT}" - - name: Create a PR comment - if: ${{ github.event.pull_request }} - uses: thollander/actions-comment-pull-request@v2 - with: - message: | - - ## Linux Benchmarks for ${{ github.event.pull_request.head.sha }} - ${{ steps.benchmark.outputs.markdown }} - comment_includes: '' + - name: Create a PR comment + if: ${{ github.event.pull_request }} + uses: thollander/actions-comment-pull-request@v2 + with: + message: | + ## Linux Benchmarks for ${{ github.event.pull_request.head.sha }} + ${{ steps.benchmark.outputs.markdown }} + comment_tag: "benchy comment" - - name: Create a commit comment - if: ${{ !github.event.pull_request }} - uses: peter-evans/commit-comment@v2 - with: - body: | - ## Linux Benchmarks - ${{ steps.benchmark.outputs.markdown }} + - name: Create a commit comment + if: ${{ !github.event.pull_request }} + uses: peter-evans/commit-comment@v2 + with: + body: | + ## Linux Benchmarks + ${{ steps.benchmark.outputs.markdown }} From ea867f3350d95e8922dbe1f30846685296ff1ca0 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 29 Jun 2023 22:30:22 +0300 Subject: [PATCH 09/66] chore(deps): lock file maintenance (#874) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 951 ++++++++++++++------------- pnpm-lock.yaml | 1690 ++++++++++++++++++++++++++---------------------- 2 files changed, 1384 insertions(+), 1257 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 73fe5ee60..3a32a77df 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,6 +2,15 @@ # It is not intended for manual editing. version = 3 +[[package]] +name = "addr2line" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a76fd60b23679b7d19bd066031410fb7e458ccc5e958eb5c325888ce4baedc97" +dependencies = [ + "gimli", +] + [[package]] name = "adler" version = "1.0.2" @@ -10,21 +19,20 @@ checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" [[package]] name = "aes" -version = "0.7.5" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e8b47f52ea9bae42228d07ec09eb676433d7c4ed1ebdf0f1d1c29ed446f1ab8" +checksum = "ac1f845298e95f983ff1944b728ae08b8cebab80d684f0a832ed0fc74dfa27e2" dependencies = [ "cfg-if", "cipher", "cpufeatures", - "opaque-debug", ] [[package]] name = "aho-corasick" -version = "0.7.19" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4f55bd91a0978cbfd91c457a164bab8b4001c833b7f323132c0a4e1922dd44e" +checksum = "43f6cb1bf222025340178f382c426f13757b2960e89779dfcb319c32542a5a41" dependencies = [ "memchr", ] @@ -44,6 +52,12 @@ dependencies = [ "alloc-no-stdlib", ] +[[package]] +name = "android-tzdata" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" + [[package]] name = "android_system_properties" version = "0.1.5" @@ -55,15 +69,15 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.66" +version = "1.0.71" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "216261ddc8289130e551ddcd5ce8a064710c0d064a4d2895c67151c92b5443f6" +checksum = "9c7d0618f0e0b7e8ff11427422b64564d5fb0be1940354bfe2e0529b18a9d9b8" [[package]] name = "async-compression" -version = "0.3.15" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "942c7cd7ae39e91bde4820d74132e9862e62c2f386c3aa90ccf55949f5bad63a" +checksum = "5b0122885821398cc923ece939e24d1056a2384ee719432397fa9db87230ff11" dependencies = [ "brotli", "futures-core", @@ -89,17 +103,32 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +[[package]] +name = "backtrace" +version = "0.3.67" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "233d376d6d185f2a3093e58f283f60f880315b6c60075b01f36b3b85154564ca" +dependencies = [ + "addr2line", + "cc", + "cfg-if", + "libc", + "miniz_oxide 0.6.2", + "object", + "rustc-demangle", +] + [[package]] name = "base64" -version = "0.13.1" +version = "0.21.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" +checksum = "604178f6c5c21f02dc555784810edfb88d34ac2c73b2eae109655649ee73ce3d" [[package]] name = "base64ct" -version = "1.5.3" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b645a089122eccb6111b4f81cbc1a49f5900ac4666bb93ac027feaecf15607bf" +checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" [[package]] name = "bitflags" @@ -109,9 +138,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "block-buffer" -version = "0.10.3" +version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69cce20737498f97b993470a6e536b8523f0af7892a4f928cceb1ac5e52ebe7e" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" dependencies = [ "generic-array", ] @@ -129,31 +158,19 @@ dependencies = [ [[package]] name = "brotli-decompressor" -version = "2.3.2" +version = "2.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59ad2d4653bf5ca36ae797b1f4bb4dbddb60ce49ca4aed8a2ce4829f60425b80" +checksum = "4b6561fd3f895a11e8f72af2cb7d22e08366bebc2b6b57f7744c4bda27034744" dependencies = [ "alloc-no-stdlib", "alloc-stdlib", ] -[[package]] -name = "bstr" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba3569f383e8f1598449f1a423e72e99569137b47740b1da11ef19af3d5c3223" -dependencies = [ - "lazy_static", - "memchr", - "regex-automata", - "serde", -] - [[package]] name = "bumpalo" -version = "3.11.1" +version = "3.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "572f695136211188308f16ad2ca5c851a712c464060ae6974944458eb83880ba" +checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1" [[package]] name = "bytecount" @@ -169,15 +186,15 @@ checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" [[package]] name = "bytes" -version = "1.2.1" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec8a7b6a70fde80372154c65702f00a0f56f3e1c36abbc6c440484be248856db" +checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" [[package]] name = "bzip2" -version = "0.4.3" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6afcd980b5f3a45017c57e57a2fcccbb351cc43a356ce117ef760ef8052b89b0" +checksum = "bdb116a6ef3f6c3698828873ad02c3014b3c85cadb88496095628e3ef1e347f8" dependencies = [ "bzip2-sys", "libc", @@ -196,9 +213,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.77" +version = "1.0.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9f73505338f7d905b19d18738976aae232eb46b8efc15554ffc56deb5d9ebe4" +checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" dependencies = [ "jobserver", ] @@ -211,34 +228,35 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chrono" -version = "0.4.23" +version = "0.4.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16b0a3d9ed01224b22057780a37bb8c5dbfe1be8ba48678e7bf57ec4b385411f" +checksum = "ec837a71355b28f6556dbd569b37b3f363091c0bd4b2e735674521b4c5fd9bc5" dependencies = [ + "android-tzdata", "iana-time-zone", "js-sys", - "num-integer", "num-traits", "serde", - "time 0.1.44", + "time 0.1.45", "wasm-bindgen", "winapi", ] [[package]] name = "cipher" -version = "0.3.0" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ee52072ec15386f770805afd189a01c8841be8696bed250fa2f13c4c0d6dfb7" +checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" dependencies = [ - "generic-array", + "crypto-common", + "inout", ] [[package]] name = "clap" -version = "3.2.23" +version = "3.2.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71655c45cb9845d3270c9d6df84ebe72b4dad3c2ba3f7023ad47c144e4e473a5" +checksum = "4ea181bf566f71cb9a5d17a59e1871af638180a18fb0035c92ae62b705207123" dependencies = [ "atty", "bitflags", @@ -262,15 +280,15 @@ dependencies = [ [[package]] name = "clap_derive" -version = "3.2.18" +version = "3.2.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea0c8bce528c4be4da13ea6fead8965e95b6073585a2f05204bd8f4119f82a65" +checksum = "ae6371b8bdc8b7d3959e9cf7b22d4435ef3e79e138688421ec654acf8c81b008" dependencies = [ "heck", "proc-macro-error", "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] @@ -282,16 +300,6 @@ dependencies = [ "os_str_bytes", ] -[[package]] -name = "codespan-reporting" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e" -dependencies = [ - "termcolor", - "unicode-width", -] - [[package]] name = "colored" version = "2.0.0" @@ -321,15 +329,15 @@ dependencies = [ [[package]] name = "core-foundation-sys" -version = "0.8.3" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc" +checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" [[package]] name = "cpufeatures" -version = "0.2.5" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28d997bd5e24a5928dd43e46dc529867e207907fe0b239c3477d924f7f2ca320" +checksum = "03e69e28e9f7f77debdedbaafa2866e1de9ba56df55a8bd7cfc724c25a09987c" dependencies = [ "libc", ] @@ -345,9 +353,9 @@ dependencies = [ [[package]] name = "crossbeam-channel" -version = "0.5.6" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2dd04ddaf88237dc3b8d8f9a3c1004b506b54b3313403944054d23c0870c521" +checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200" dependencies = [ "cfg-if", "crossbeam-utils", @@ -355,9 +363,9 @@ dependencies = [ [[package]] name = "crossbeam-deque" -version = "0.8.2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "715e8152b692bba2d374b53d4875445368fdf21a94751410af607a5ac677d1fc" +checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef" dependencies = [ "cfg-if", "crossbeam-epoch", @@ -366,9 +374,9 @@ dependencies = [ [[package]] name = "crossbeam-epoch" -version = "0.9.12" +version = "0.9.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96bf8df95e795db1a4aca2957ad884a2df35413b24bbeb3114422f3cc21498e8" +checksum = "ae211234986c545741a7dc064309f67ee1e5ad243d0e48335adc0484d960bcc7" dependencies = [ "autocfg", "cfg-if", @@ -379,9 +387,9 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.13" +version = "0.8.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "422f23e724af1240ec469ea1e834d87a4b59ce2efe2c6a96256b0c47e2fd86aa" +checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294" dependencies = [ "cfg-if", ] @@ -398,13 +406,12 @@ dependencies = [ [[package]] name = "csv" -version = "1.1.6" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22813a6dc45b335f9bade10bf7271dc477e81113e89eb251a0bc2a8a81c536e1" +checksum = "626ae34994d3d8d668f4269922248239db4ae42d538b14c398b74a52208e8086" dependencies = [ - "bstr", "csv-core", - "itoa 0.4.8", + "itoa", "ryu", "serde", ] @@ -425,51 +432,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6d2301688392eb071b0bf1a37be05c469d3cc4dbbd95df672fe28ab021e6a096" dependencies = [ "quote", - "syn", -] - -[[package]] -name = "cxx" -version = "1.0.82" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4a41a86530d0fe7f5d9ea779916b7cadd2d4f9add748b99c2c029cbbdfaf453" -dependencies = [ - "cc", - "cxxbridge-flags", - "cxxbridge-macro", - "link-cplusplus", -] - -[[package]] -name = "cxx-build" -version = "1.0.82" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06416d667ff3e3ad2df1cd8cd8afae5da26cf9cec4d0825040f88b5ca659a2f0" -dependencies = [ - "cc", - "codespan-reporting", - "once_cell", - "proc-macro2", - "quote", - "scratch", - "syn", -] - -[[package]] -name = "cxxbridge-flags" -version = "1.0.82" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "820a9a2af1669deeef27cb271f476ffd196a2c4b6731336011e0ba63e2c7cf71" - -[[package]] -name = "cxxbridge-macro" -version = "1.0.82" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a08a6e2fcc370a089ad3b4aaf54db3b1b4cee38ddabce5896b33eb693275f470" -dependencies = [ - "proc-macro2", - "quote", - "syn", + "syn 1.0.109", ] [[package]] @@ -480,9 +443,9 @@ checksum = "56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8" [[package]] name = "digest" -version = "0.10.6" +version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8168378f4e5023e7218c89c891c0fd8ecdb5e5e4f18cb78f38cf245dd021e76f" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ "block-buffer", "crypto-common", @@ -523,9 +486,9 @@ dependencies = [ [[package]] name = "either" -version = "1.8.0" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90e5c1c8368803113bf0c9584fc495a58b86dc8a29edbf8fe877d21d9507e797" +checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91" [[package]] name = "embed-resource" @@ -542,9 +505,9 @@ dependencies = [ [[package]] name = "encoding_rs" -version = "0.8.31" +version = "0.8.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9852635589dc9f9ea1b6fe9f05b50ef208c85c834a562f0c6abb1c475736ec2b" +checksum = "071a31f4ee85403370b58aca746f01041ede6f0da2730960ad001edc2b71b394" dependencies = [ "cfg-if", ] @@ -573,13 +536,13 @@ dependencies = [ [[package]] name = "errno" -version = "0.2.8" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f639046355ee4f37944e44f60642c6f3a7efa3cf6b78c78a0d989a8ce6c396a1" +checksum = "4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a" dependencies = [ "errno-dragonfly", "libc", - "winapi", + "windows-sys 0.48.0", ] [[package]] @@ -594,33 +557,33 @@ dependencies = [ [[package]] name = "fastrand" -version = "1.8.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7a407cfaa3385c4ae6b23e84623d48c2798d06e3e6a1878f7f59f17b3f86499" +checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" dependencies = [ "instant", ] [[package]] name = "filetime" -version = "0.2.18" +version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b9663d381d07ae25dc88dbdf27df458faa83a9b25336bcac83d5e452b5fc9d3" +checksum = "5cbc844cecaee9d4443931972e1289c8ff485cb4cc2767cb03ca139ed6885153" dependencies = [ "cfg-if", "libc", - "redox_syscall", - "windows-sys 0.42.0", + "redox_syscall 0.2.16", + "windows-sys 0.48.0", ] [[package]] name = "flate2" -version = "1.0.24" +version = "1.0.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f82b0f4c27ad9f8bfd1f3208d882da2b09c301bc1c828fd3a00d0216d2fbbff6" +checksum = "3b9429470923de8e8cbd4d2dc513535400b4b3fef0319fb5c4e1f520a7bef743" dependencies = [ "crc32fast", - "miniz_oxide", + "miniz_oxide 0.7.1", ] [[package]] @@ -665,51 +628,51 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "form_urlencoded" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8" +checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652" dependencies = [ "percent-encoding", ] [[package]] name = "futures-channel" -version = "0.3.25" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52ba265a92256105f45b719605a571ffe2d1f0fea3807304b522c1d778f79eed" +checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2" dependencies = [ "futures-core", ] [[package]] name = "futures-core" -version = "0.3.25" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04909a7a7e4633ae6c4a9ab280aeb86da1236243a77b694a49eacd659a4bd3ac" +checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c" [[package]] name = "futures-io" -version = "0.3.25" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00f5fb52a06bdcadeb54e8d3671f8888a39697dcb0b81b23b55174030427f4eb" +checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964" [[package]] name = "futures-sink" -version = "0.3.25" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39c15cf1a4aa79df40f1bb462fb39676d0ad9e366c2a33b590d7c66f4f81fcf9" +checksum = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e" [[package]] name = "futures-task" -version = "0.3.25" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ffb393ac5d9a6eaa9d3fdf37ae2776656b706e200c8e16b1bdb227f5198e6ea" +checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65" [[package]] name = "futures-util" -version = "0.3.25" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "197676987abd2f9cadff84926f410af1c183608d36641465df73ae8211dc65d6" +checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533" dependencies = [ "futures-core", "futures-io", @@ -722,9 +685,9 @@ dependencies = [ [[package]] name = "generic-array" -version = "0.14.6" +version = "0.14.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bff49e947297f3312447abdca79f45f4738097cc82b06e72054d2223f601f1b9" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" dependencies = [ "typenum", "version_check", @@ -732,20 +695,26 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.8" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31" +checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" dependencies = [ "cfg-if", "libc", "wasi 0.11.0+wasi-snapshot-preview1", ] +[[package]] +name = "gimli" +version = "0.27.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c80984affa11d98d1b88b66ac8853f143217b399d3c74116778ff8fdb4ed2e" + [[package]] name = "h2" -version = "0.3.15" +version = "0.3.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f9f29bc9dda355256b2916cf526ab02ce0aeaaaf2bad60d65ef3f12f11dd0f4" +checksum = "97ec8491ebaf99c8eaa73058b045fe58073cd6be7f596ac993ced0b0a0c01049" dependencies = [ "bytes", "fnv", @@ -768,9 +737,9 @@ checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" [[package]] name = "heck" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2540771e65fc8cb83cd6e8a237f70c319bd5c29f78ed1084ba5d50eeac86f7f9" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" [[package]] name = "hermit-abi" @@ -783,12 +752,9 @@ dependencies = [ [[package]] name = "hermit-abi" -version = "0.2.6" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7" -dependencies = [ - "libc", -] +checksum = "fed44880c466736ef9a5c5b5facefb5ed0785676d0c02d612db14e54f0d84286" [[package]] name = "hmac" @@ -801,13 +767,13 @@ dependencies = [ [[package]] name = "http" -version = "0.2.8" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75f43d41e26995c17e71ee126451dd3941010b0514a81a9d11f3b341debc2399" +checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482" dependencies = [ "bytes", "fnv", - "itoa 1.0.4", + "itoa", ] [[package]] @@ -841,9 +807,9 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "hyper" -version = "0.14.23" +version = "0.14.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "034711faac9d2166cb1baf1a2fb0b60b1f277f8492fd72176c17f3515e1abd3c" +checksum = "ffb1cfd654a8219eaef89881fdb3bb3b1cdc5fa75ded05d6933b2b382e395468" dependencies = [ "bytes", "futures-channel", @@ -854,7 +820,7 @@ dependencies = [ "http-body", "httparse", "httpdate", - "itoa 1.0.4", + "itoa", "pin-project-lite", "socket2", "tokio", @@ -865,9 +831,9 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.23.1" +version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59df7c4e19c950e6e0e868dcc0a300b09a9b88e9ec55bd879ca819087a77355d" +checksum = "0646026eb1b3eea4cd9ba47912ea5ce9cc07713d105b1a14698f4e6433d348b7" dependencies = [ "http", "hyper", @@ -878,33 +844,32 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.53" +version = "0.1.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64c122667b287044802d6ce17ee2ddf13207ed924c712de9a66a5814d5b64765" +checksum = "2fad5b825842d2b38bd206f3e81d6957625fd7f0a361e345c30e01a0ae2dd613" dependencies = [ "android_system_properties", "core-foundation-sys", "iana-time-zone-haiku", "js-sys", "wasm-bindgen", - "winapi", + "windows", ] [[package]] name = "iana-time-zone-haiku" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0703ae284fc167426161c2e3f1da3ea71d94b21bedbcc9494e92b28e334e3dca" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" dependencies = [ - "cxx", - "cxx-build", + "cc", ] [[package]] name = "idna" -version = "0.3.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6" +checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" dependencies = [ "unicode-bidi", "unicode-normalization", @@ -912,9 +877,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "1.9.2" +version = "1.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" dependencies = [ "autocfg", "hashbrown", @@ -922,9 +887,18 @@ dependencies = [ [[package]] name = "indoc" -version = "1.0.8" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da2d6f23ffea9d7e76c53eee25dfb67bcd8fde7f1198b0855350698c9f07c780" +checksum = "bfa799dd5ed20a7e349f3b4639aa80d74549c81716d9ec4f994c9b5815598306" + +[[package]] +name = "inout" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" +dependencies = [ + "generic-array", +] [[package]] name = "instant" @@ -937,67 +911,62 @@ dependencies = [ [[package]] name = "io-lifetimes" -version = "1.0.3" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46112a93252b123d31a119a8d1a1ac19deac4fac6e0e8b0df58f0d4e5870e63c" +checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" dependencies = [ + "hermit-abi 0.3.1", "libc", - "windows-sys 0.42.0", + "windows-sys 0.48.0", ] [[package]] name = "ipnet" -version = "2.5.1" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f88c5561171189e69df9d98bcf18fd5f9558300f7ea7b801eb8a0fd748bd8745" +checksum = "28b29a3cd74f0f4598934efe3aeba42bae0eb4680554128851ebbecb02af14e6" [[package]] name = "is-terminal" -version = "0.4.1" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "927609f78c2913a6f6ac3c27a4fe87f43e2a35367c0c4b0f8265e8f49a104330" +checksum = "adcf93614601c8129ddf72e2d5633df827ba6551541c6d8c59520a371475be1f" dependencies = [ - "hermit-abi 0.2.6", + "hermit-abi 0.3.1", "io-lifetimes", "rustix", - "windows-sys 0.42.0", + "windows-sys 0.48.0", ] [[package]] name = "itoa" -version = "0.4.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4" - -[[package]] -name = "itoa" -version = "1.0.4" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4217ad341ebadf8d8e724e264f13e593e0648f5b3e94b3896a5df283be015ecc" +checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6" [[package]] name = "jobserver" -version = "0.1.25" +version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "068b1ee6743e4d11fb9c6a1e6064b3693a1b600e7f5f5988047d98b3dc9fb90b" +checksum = "936cfd212a0155903bcbc060e316fb6cc7cbf2e1907329391ebadc1fe0ce77c2" dependencies = [ "libc", ] [[package]] name = "js-sys" -version = "0.3.60" +version = "0.3.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49409df3e3bf0856b916e2ceaca09ee28e6871cf7d9ce97a692cacfdb2a25a47" +checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a" dependencies = [ "wasm-bindgen", ] [[package]] name = "junction" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be39922b087cecaba4e2d5592dedfc8bda5d4a5a1231f143337cca207950b61d" +checksum = "1bcc2cc77f63a374d3a17011d943b081f7cb60c942d1ddaf3504430378597385" dependencies = [ "scopeguard", "winapi", @@ -1011,33 +980,21 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.137" +version = "0.2.147" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc7fcc620a3bff7cdd7a365be3376c97191aeaccc2a603e600951e452615bf89" - -[[package]] -name = "link-cplusplus" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9272ab7b96c9046fbc5bc56c06c117cb639fe2d509df0c421cad82d2915cf369" -dependencies = [ - "cc", -] +checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" [[package]] name = "linux-raw-sys" -version = "0.1.4" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f051f77a7c8e6957c0696eac88f26b0117e54f52d3fc682ab19397a8812846a4" +checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" [[package]] name = "log" -version = "0.4.17" +version = "0.4.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" -dependencies = [ - "cfg-if", -] +checksum = "b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4" [[package]] name = "lzma-sys" @@ -1058,18 +1015,18 @@ checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" [[package]] name = "memoffset" -version = "0.7.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4" +checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" dependencies = [ "autocfg", ] [[package]] name = "miette" -version = "5.4.1" +version = "5.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a24c4b4063c21e037dffb4de388ee85e400bff299803aba9513d9c52de8116b" +checksum = "a236ff270093b0b67451bc50a509bd1bad302cb1d3c7d37d5efe931238581fa9" dependencies = [ "miette-derive", "once_cell", @@ -1079,20 +1036,20 @@ dependencies = [ [[package]] name = "miette-derive" -version = "5.4.1" +version = "5.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "827d18edee5d43dc309eb0ac565f2b8e2fdc89b986b2d929e924a0f6e7f23835" +checksum = "4901771e1d44ddb37964565c654a3223ba41a594d02b8da471cc4464912b5cfa" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.22", ] [[package]] name = "mime" -version = "0.3.16" +version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" [[package]] name = "minimal-lexical" @@ -1102,23 +1059,31 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.5.4" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b275950c28b37e794e8c55d88aeb5e139d0ce23fdbbeda68f8d7174abdf9e8fa" +dependencies = [ + "adler", +] + +[[package]] +name = "miniz_oxide" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96590ba8f175222643a85693f33d26e9c8a015f599c216509b1a6894af675d34" +checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" dependencies = [ "adler", ] [[package]] name = "mio" -version = "0.8.5" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5d732bc30207a6423068df043e3d02e0735b155ad7ce1a6f76fe2baa5b158de" +checksum = "927a765cd3fc26206e66b296465fa9d3e5ab003e651c1b3c060e7956d96b19d2" dependencies = [ "libc", - "log", "wasi 0.11.0+wasi-snapshot-preview1", - "windows-sys 0.42.0", + "windows-sys 0.48.0", ] [[package]] @@ -1136,9 +1101,9 @@ dependencies = [ [[package]] name = "nom" -version = "7.1.1" +version = "7.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8903e5a29a317527874d0402f867152a3d21c908bb0b933e416c65e301d4c36" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" dependencies = [ "memchr", "minimal-lexical", @@ -1146,23 +1111,13 @@ dependencies = [ [[package]] name = "ntapi" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc51db7b362b205941f71232e56c625156eb9a929f8cf74a428fd5bc094a4afc" +checksum = "e8a3895c6391c39d7fe7ebc444a87eb2991b2a0bc718fdabd071eec617fc68e4" dependencies = [ "winapi", ] -[[package]] -name = "num-integer" -version = "0.1.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" -dependencies = [ - "autocfg", - "num-traits", -] - [[package]] name = "num-traits" version = "0.2.15" @@ -1174,25 +1129,28 @@ dependencies = [ [[package]] name = "num_cpus" -version = "1.14.0" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6058e64324c71e02bc2b150e4f3bc8286db6c83092132ffa3f6b1eab0f9def5" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" dependencies = [ - "hermit-abi 0.1.19", + "hermit-abi 0.3.1", "libc", ] [[package]] -name = "once_cell" -version = "1.16.0" +name = "object" +version = "0.30.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86f0b0d4bf799edbc74508c1e8bf170ff5f41238e5f8225603ca7caaae2b7860" +checksum = "03b4680b86d9cfafba8fc491dc9b6df26b68cf40e9e6cd73909194759a63c385" +dependencies = [ + "memchr", +] [[package]] -name = "opaque-debug" -version = "0.3.0" +name = "once_cell" +version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" +checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" [[package]] name = "openssl-probe" @@ -1202,19 +1160,19 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "os_pipe" -version = "1.1.2" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6a252f1f8c11e84b3ab59d7a488e48e4478a93937e027076638c49536204639" +checksum = "0ae859aa07428ca9a929b936690f8b12dc5f11dd8c6992a18ca93919f28bc177" dependencies = [ "libc", - "windows-sys 0.42.0", + "windows-sys 0.48.0", ] [[package]] name = "os_str_bytes" -version = "6.4.1" +version = "6.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b7820b9daea5457c9f21c69448905d723fbd21136ccf521748f23fd49e723ee" +checksum = "4d5d9eb14b174ee9aa2ef96dc2b94637a2d4b6e7cb873c7e171f0c20c6cf3eac" [[package]] name = "output_vt100" @@ -1250,9 +1208,9 @@ dependencies = [ [[package]] name = "percent-encoding" -version = "2.2.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" +checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" [[package]] name = "pin-project-lite" @@ -1268,9 +1226,9 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "pkg-config" -version = "0.3.26" +version = "0.3.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160" +checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" [[package]] name = "pretty_assertions" @@ -1293,7 +1251,7 @@ dependencies = [ "proc-macro-error-attr", "proc-macro2", "quote", - "syn", + "syn 1.0.109", "version_check", ] @@ -1310,18 +1268,18 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.47" +version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ea3d908b0e36316caf9e9e2c4625cdde190a7e6f440d794667ed17a1855e725" +checksum = "7b368fba921b0dce7e60f5e04ec15e565b3303972b42bcfde1d0713b881959eb" dependencies = [ "unicode-ident", ] [[package]] name = "quote" -version = "1.0.21" +version = "1.0.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbe448f377a7d6961e30f5955f9b8d106c3f5e449d493ee1b125c1d43c2b5179" +checksum = "573015e8ab27661678357f27dc26460738fd2b6c86e46f386fde94cb5d913105" dependencies = [ "proc-macro2", ] @@ -1334,20 +1292,19 @@ checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" [[package]] name = "rayon" -version = "1.6.0" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e060280438193c554f654141c9ea9417886713b7acd75974c85b18a69a88e0b" +checksum = "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b" dependencies = [ - "crossbeam-deque", "either", "rayon-core", ] [[package]] name = "rayon-core" -version = "1.10.1" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cac410af5d00ab6884528b4ab69d1e8e146e8d471201800fa1b4524126de6ad3" +checksum = "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d" dependencies = [ "crossbeam-channel", "crossbeam-deque", @@ -1364,6 +1321,15 @@ dependencies = [ "bitflags", ] +[[package]] +name = "redox_syscall" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" +dependencies = [ + "bitflags", +] + [[package]] name = "redox_users" version = "0.4.3" @@ -1371,47 +1337,32 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" dependencies = [ "getrandom", - "redox_syscall", + "redox_syscall 0.2.16", "thiserror", ] [[package]] name = "regex" -version = "1.7.0" +version = "1.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e076559ef8e241f2ae3479e36f97bd5741c0330689e217ad51ce2c76808b868a" +checksum = "d0ab3ca65655bb1e41f2a8c8cd662eb4fb035e67c3f78da1d61dffe89d07300f" dependencies = [ "aho-corasick", "memchr", "regex-syntax", ] -[[package]] -name = "regex-automata" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" - [[package]] name = "regex-syntax" -version = "0.6.28" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "456c603be3e8d448b072f410900c09faf164fbce2d480456f50eea6e25f9c848" - -[[package]] -name = "remove_dir_all" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7" -dependencies = [ - "winapi", -] +checksum = "436b050e76ed2903236f032a59761c1eb99e1b0aead2c257922771dab1fc8c78" [[package]] name = "reqwest" -version = "0.11.13" +version = "0.11.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68cc60575865c7831548863cc02356512e3f1dc2f3f82cb837d7fc4cc8f3c97c" +checksum = "cde824a14b7c14f85caff81225f411faacc04a2013f41670f41443742b1c1c55" dependencies = [ "async-compression", "base64", @@ -1464,6 +1415,12 @@ dependencies = [ "winapi", ] +[[package]] +name = "rustc-demangle" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" + [[package]] name = "rustc_version" version = "0.4.0" @@ -1475,35 +1432,35 @@ dependencies = [ [[package]] name = "rustix" -version = "0.36.5" +version = "0.37.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3807b5d10909833d3e9acd1eb5fb988f79376ff10fce42937de71a449c4c588" +checksum = "b96e891d04aa506a6d1f318d2771bcb1c7dfda84e126660ace067c9b474bb2c0" dependencies = [ "bitflags", "errno", "io-lifetimes", "libc", "linux-raw-sys", - "windows-sys 0.42.0", + "windows-sys 0.48.0", ] [[package]] name = "rustls" -version = "0.20.7" +version = "0.21.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "539a2bfe908f471bfa933876bd1eb6a19cf2176d375f82ef7f99530a40e48c2c" +checksum = "e32ca28af694bc1bbf399c33a516dbdf1c90090b8ab23c2bc24f834aa2247f5f" dependencies = [ "log", "ring", + "rustls-webpki", "sct", - "webpki", ] [[package]] name = "rustls-native-certs" -version = "0.6.2" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0167bac7a9f490495f3c33013e7722b53cb087ecbe082fb0c6387c96f634ea50" +checksum = "a9aace74cb666635c918e9c12bc0d348266037aa8eb599b5cba565709a8dff00" dependencies = [ "openssl-probe", "rustls-pemfile", @@ -1513,27 +1470,36 @@ dependencies = [ [[package]] name = "rustls-pemfile" -version = "1.0.1" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0864aeff53f8c05aa08d86e5ef839d3dfcf07aeba2db32f12db0ef716e87bd55" +checksum = "2d3987094b1d07b653b7dfdc3f70ce9a1da9c51ac18c1b06b662e4f9a0e9f4b2" dependencies = [ "base64", ] +[[package]] +name = "rustls-webpki" +version = "0.100.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6207cd5ed3d8dca7816f8f3725513a34609c0c765bf652b8c3cb4cfd87db46b" +dependencies = [ + "ring", + "untrusted", +] + [[package]] name = "ryu" -version = "1.0.11" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4501abdff3ae82a1c1b477a17252eb69cee9e66eb915c1abaa4f44d873df9f09" +checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041" [[package]] name = "schannel" -version = "0.1.20" +version = "0.1.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88d6731146462ea25d9244b2ed5fd1d716d25c52e4d54aa4fb0f3c4e9854dbe2" +checksum = "713cfb06c7059f3588fb8044c0fad1d09e3c01d225e25b9220dbfdcf16dbb1b3" dependencies = [ - "lazy_static", - "windows-sys 0.36.1", + "windows-sys 0.42.0", ] [[package]] @@ -1542,12 +1508,6 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" -[[package]] -name = "scratch" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8132065adcfd6e02db789d9285a0deb2f3fcb04002865ab67d5fb103533898" - [[package]] name = "sct" version = "0.7.0" @@ -1560,9 +1520,9 @@ dependencies = [ [[package]] name = "security-framework" -version = "2.7.0" +version = "2.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bc1bb97804af6631813c55739f771071e0f2ed33ee20b68c86ec505d906356c" +checksum = "1fc758eb7bffce5b308734e9b0c1468893cae9ff70ebf13e7090be8dcbcc83a8" dependencies = [ "bitflags", "core-foundation", @@ -1573,9 +1533,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.6.1" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0160a13a177a45bfb43ce71c01580998474f556ad854dcbca936dd2841a5c556" +checksum = "f51d0c0d83bec45f16480d0ce0058397a69e48fcdc52d1dc8855fb68acbd31a7" dependencies = [ "core-foundation-sys", "libc", @@ -1583,37 +1543,37 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.14" +version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e25dfac463d778e353db5be2449d1cce89bd6fd23c9f1ea21310ce6e5a1b29c4" +checksum = "bebd363326d05ec3e2f532ab7660680f3b02130d780c299bca73469d521bc0ed" [[package]] name = "serde" -version = "1.0.149" +version = "1.0.164" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "256b9932320c590e707b94576e3cc1f7c9024d0ee6612dfbcf1cb106cbe8e055" +checksum = "9e8c8cf938e98f769bc164923b06dce91cea1751522f46f8466461af04c9027d" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.149" +version = "1.0.164" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4eae9b04cbffdfd550eb462ed33bc6a1b68c935127d008b27444d08380f94e4" +checksum = "d9735b638ccc51c28bf6914d90a2e9725b377144fc612c49a611fddd1b631d68" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.22", ] [[package]] name = "serde_json" -version = "1.0.89" +version = "1.0.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "020ff22c755c2ed3f8cf162dbb41a7268d934702f3ed3631656ea597e08fc3db" +checksum = "46266871c240a00b8f503b877622fe33430b3c7d963bdc0f2adc511e54a1eae3" dependencies = [ - "itoa 1.0.4", + "itoa", "ryu", "serde", ] @@ -1625,7 +1585,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" dependencies = [ "form_urlencoded", - "itoa 1.0.4", + "itoa", "ryu", "serde", ] @@ -1643,9 +1603,9 @@ dependencies = [ [[package]] name = "sha2" -version = "0.10.6" +version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82e6b795fe2e3b1e845bafcb27aa35405c4d47cdfc92af5fc8d3002f76cebdc0" +checksum = "479fb9d862239e610720565ca91403019f2f00410f1864c5aa7479b950a76ed8" dependencies = [ "cfg-if", "cpufeatures", @@ -1664,18 +1624,18 @@ dependencies = [ [[package]] name = "slab" -version = "0.4.7" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4614a76b2a8be0058caa9dbbaf66d988527d86d003c11a94fbd335d7661edcef" +checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d" dependencies = [ "autocfg", ] [[package]] name = "socket2" -version = "0.4.7" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02e2d2db9033d13a1567121ddd7a095ee144db4e1ca1b1bda3419bc0da294ebd" +checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662" dependencies = [ "libc", "winapi", @@ -1695,15 +1655,26 @@ checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" [[package]] name = "subtle" -version = "2.4.1" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" +checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" [[package]] name = "syn" -version = "1.0.105" +version = "1.0.109" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60b9b43d45702de4c839cb9b51d9f529c5dd26a4aff255b42b1ebc03e88ee908" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2efbeae7acf4eabd6bcdcbd11c92f45231ddda7539edc7806bd1a04a03b24616" dependencies = [ "proc-macro2", "quote", @@ -1712,9 +1683,9 @@ dependencies = [ [[package]] name = "sysinfo" -version = "0.27.1" +version = "0.27.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccb297c0afb439440834b4bcf02c5c9da8ec2e808e70f36b0d8e815ff403bd24" +checksum = "a902e9050fca0a5d6877550b769abd2bd1ce8c04634b941dbe2809735e1a1e33" dependencies = [ "cfg-if", "core-foundation-sys", @@ -1738,36 +1709,36 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.3.0" +version = "3.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cdb1ef4eaeeaddc8fbd371e5017057064af0911902ef36b39801f67cc6d79e4" +checksum = "31c0432476357e58790aaa47a8efb0c5138f137343f3b5f23bd36a27e3b0a6d6" dependencies = [ + "autocfg", "cfg-if", "fastrand", - "libc", - "redox_syscall", - "remove_dir_all", - "winapi", + "redox_syscall 0.3.5", + "rustix", + "windows-sys 0.48.0", ] [[package]] name = "termcolor" -version = "1.1.3" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755" +checksum = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6" dependencies = [ "winapi-util", ] [[package]] name = "test-log" -version = "0.2.11" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38f0c854faeb68a048f0f2dc410c5ddae3bf83854ef0e4977d58306a5edef50e" +checksum = "d9601d162c1d77e62c1ea0bc8116cd1caf143ce3af947536c3c9052a1677fe0c" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] @@ -1778,29 +1749,29 @@ checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d" [[package]] name = "thiserror" -version = "1.0.37" +version = "1.0.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10deb33631e3c9018b9baf9dcbbc4f737320d2b576bac10f6aefa048fa407e3e" +checksum = "978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.37" +version = "1.0.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "982d17546b47146b28f7c22e3d08465f6b8903d0ea13c1660d9d84a6e7adcdbb" +checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.22", ] [[package]] name = "time" -version = "0.1.44" +version = "0.1.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6db9e6914ab8b1ae1c260a4ae7a49b6c5611b40328a735b21862567685e73255" +checksum = "1b797afad3f312d1c66a56d11d0316f916356d11bd158fbc6ca6389ff6bf805a" dependencies = [ "libc", "wasi 0.10.0+wasi-snapshot-preview1", @@ -1809,30 +1780,19 @@ dependencies = [ [[package]] name = "time" -version = "0.3.17" +version = "0.3.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a561bf4617eebd33bca6434b988f39ed798e527f51a1e797d0ee4f61c0a38376" +checksum = "ea9e1b3cf1243ae005d9e74085d4d542f3125458f3a81af210d901dcd7411efd" dependencies = [ - "itoa 1.0.4", "serde", "time-core", - "time-macros", ] [[package]] name = "time-core" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e153e1f1acaef8acc537e68b44906d2db6436e2b35ac2c6b42640fff91f00fd" - -[[package]] -name = "time-macros" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d967f99f534ca7e495c575c62638eebc2898a8c84c119b89e250477bc4ba16b2" -dependencies = [ - "time-core", -] +checksum = "7300fbefb4dadc1af235a9cef3737cea692a9d97e1b9cbcd4ebdae6f8868e6fb" [[package]] name = "tinyvec" @@ -1845,43 +1805,42 @@ dependencies = [ [[package]] name = "tinyvec_macros" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.22.0" +version = "1.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d76ce4a75fb488c605c54bf610f221cea8b0dafb53333c1a67e8ee199dcd2ae3" +checksum = "374442f06ee49c3a28a8fc9f01a2596fed7559c6b99b31279c3261778e77d84f" dependencies = [ "autocfg", + "backtrace", "bytes", "libc", - "memchr", "mio", "num_cpus", "pin-project-lite", "socket2", - "winapi", + "windows-sys 0.48.0", ] [[package]] name = "tokio-rustls" -version = "0.23.4" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c43ee83903113e03984cb9e5cebe6c04a5116269e900e3ddba8f068a62adda59" +checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" dependencies = [ "rustls", "tokio", - "webpki", ] [[package]] name = "tokio-util" -version = "0.7.4" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bb2e075f03b3d66d8d8785356224ba688d2906a371015e225beeb65ca92c740" +checksum = "806fe8c2c87eccc8b3267cbae29ed3ab2d0bd37fca70ab622e46aaa9375ddb7d" dependencies = [ "bytes", "futures-core", @@ -1893,9 +1852,9 @@ dependencies = [ [[package]] name = "toml" -version = "0.5.8" +version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a31142970826733df8241ef35dc040ef98c679ab14d7c3e54d827099b3acecaa" +checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" dependencies = [ "serde", ] @@ -1919,36 +1878,36 @@ dependencies = [ [[package]] name = "tracing-core" -version = "0.1.30" +version = "0.1.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24eb03ba0eab1fd845050058ce5e616558e8f8d8fca633e6b163fe25c797213a" +checksum = "0955b8137a1df6f1a2e9a37d8a6656291ff0297c1a97c24e0d8425fe2312f79a" dependencies = [ "once_cell", ] [[package]] name = "try-lock" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" +checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" [[package]] name = "typenum" -version = "1.15.0" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987" +checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" [[package]] name = "unicode-bidi" -version = "0.3.8" +version = "0.3.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "099b7128301d285f79ddd55b9a83d5e6b9e97c92e0ea0daebee7263e932de992" +checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" [[package]] name = "unicode-ident" -version = "1.0.5" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ceab39d59e4c9499d4e5a8ee0e2735b891bb7308ac83dfb4e80cad195c9f6f3" +checksum = "b15811caf2415fb889178633e7724bad2509101cde276048e013b9def5e51fa0" [[package]] name = "unicode-normalization" @@ -1973,9 +1932,9 @@ checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" [[package]] name = "url" -version = "2.3.1" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643" +checksum = "50bff7831e19200a85b17131d085c25d7811bc4e186efdaf54bbd132994a88cb" dependencies = [ "form_urlencoded", "idna", @@ -2000,9 +1959,9 @@ dependencies = [ [[package]] name = "vswhom-sys" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22025f6d8eb903ebf920ea6933b70b1e495be37e2cb4099e62c80454aaf57c39" +checksum = "d3b17ae1f6c8a2b28506cd96d412eebf83b4a0ff2cbefeeb952f2f9dfa44ba18" dependencies = [ "cc", "libc", @@ -2010,11 +1969,10 @@ dependencies = [ [[package]] name = "want" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" dependencies = [ - "log", "try-lock", ] @@ -2032,9 +1990,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.83" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eaf9f5aceeec8be17c128b2e93e031fb8a4d469bb9c4ae2d7dc1888b26887268" +checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -2042,24 +2000,24 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.83" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c8ffb332579b0557b52d268b91feab8df3615f265d5270fec2a8c95b17c1142" +checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn", + "syn 2.0.22", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.33" +version = "0.4.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23639446165ca5a5de86ae1d8896b737ae80319560fbaa4c2887b7da6e7ebd7d" +checksum = "c02dbc21516f9f1f04f187958890d7e6026df8d16540b7ad9492bc34a67cea03" dependencies = [ "cfg-if", "js-sys", @@ -2069,9 +2027,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.83" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "052be0f94026e6cbc75cdefc9bae13fd6052cdcaf532fa6c45e7ae33a1e6c810" +checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -2079,28 +2037,28 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.83" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07bc0c051dc5f23e307b13285f9d75df86bfdf816c5721e573dec1f9b8aa193c" +checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.22", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.83" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c38c045535d93ec4f0b4defec448e4291638ee608530863b1e2ba115d4fff7f" +checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" [[package]] name = "web-sys" -version = "0.3.60" +version = "0.3.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcda906d8be16e728fd5adc5b729afad4e444e106ab28cd1c7256e54fa61510f" +checksum = "9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249b" dependencies = [ "js-sys", "wasm-bindgen", @@ -2118,9 +2076,9 @@ dependencies = [ [[package]] name = "webpki-roots" -version = "0.22.5" +version = "0.22.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "368bfe657969fb01238bb756d351dcade285e0f6fcbd36dcb23359a5169975be" +checksum = "b6c71e40d7d2c34a5106301fb632274ca37242cd0c9d3e64dbece371a40a2d87" dependencies = [ "webpki", ] @@ -2157,16 +2115,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] -name = "windows-sys" -version = "0.36.1" +name = "windows" +version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea04155a16a59f9eab786fe12a4a450e75cdb175f9e0d80da1e17db09f55b8d2" +checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" dependencies = [ - "windows_aarch64_msvc 0.36.1", - "windows_i686_gnu 0.36.1", - "windows_i686_msvc 0.36.1", - "windows_x86_64_gnu 0.36.1", - "windows_x86_64_msvc 0.36.1", + "windows-targets", ] [[package]] @@ -2175,86 +2129,122 @@ version = "0.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7" dependencies = [ - "windows_aarch64_gnullvm", - "windows_aarch64_msvc 0.42.0", - "windows_i686_gnu 0.42.0", - "windows_i686_msvc 0.42.0", - "windows_x86_64_gnu 0.42.0", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc 0.42.0", + "windows_aarch64_gnullvm 0.42.2", + "windows_aarch64_msvc 0.42.2", + "windows_i686_gnu 0.42.2", + "windows_i686_msvc 0.42.2", + "windows_x86_64_gnu 0.42.2", + "windows_x86_64_gnullvm 0.42.2", + "windows_x86_64_msvc 0.42.2", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-targets" +version = "0.48.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05d4b17490f70499f20b9e791dcf6a299785ce8af4d709018206dc5b4953e95f" +dependencies = [ + "windows_aarch64_gnullvm 0.48.0", + "windows_aarch64_msvc 0.48.0", + "windows_i686_gnu 0.48.0", + "windows_i686_msvc 0.48.0", + "windows_x86_64_gnu 0.48.0", + "windows_x86_64_gnullvm 0.48.0", + "windows_x86_64_msvc 0.48.0", ] [[package]] name = "windows_aarch64_gnullvm" -version = "0.42.0" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41d2aa71f6f0cbe00ae5167d90ef3cfe66527d6f613ca78ac8024c3ccab9a19e" +checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" [[package]] name = "windows_aarch64_msvc" -version = "0.36.1" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9bb8c3fd39ade2d67e9874ac4f3db21f0d710bee00fe7cab16949ec184eeaa47" +checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" [[package]] name = "windows_aarch64_msvc" -version = "0.42.0" +version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd0f252f5a35cac83d6311b2e795981f5ee6e67eb1f9a7f64eb4500fbc4dcdb4" +checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" [[package]] name = "windows_i686_gnu" -version = "0.36.1" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "180e6ccf01daf4c426b846dfc66db1fc518f074baa793aa7d9b9aaeffad6a3b6" +checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" [[package]] name = "windows_i686_gnu" -version = "0.42.0" +version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbeae19f6716841636c28d695375df17562ca208b2b7d0dc47635a50ae6c5de7" +checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" [[package]] name = "windows_i686_msvc" -version = "0.36.1" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2e7917148b2812d1eeafaeb22a97e4813dfa60a3f8f78ebe204bcc88f12f024" +checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" [[package]] name = "windows_i686_msvc" -version = "0.42.0" +version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84c12f65daa39dd2babe6e442988fc329d6243fdce47d7d2d155b8d874862246" +checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" [[package]] name = "windows_x86_64_gnu" -version = "0.36.1" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dcd171b8776c41b97521e5da127a2d86ad280114807d0b2ab1e462bc764d9e1" +checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" [[package]] name = "windows_x86_64_gnu" -version = "0.42.0" +version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf7b1b21b5362cbc318f686150e5bcea75ecedc74dd157d874d754a2ca44b0ed" +checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" [[package]] name = "windows_x86_64_gnullvm" -version = "0.42.0" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09d525d2ba30eeb3297665bd434a54297e4170c7f1a44cad4ef58095b4cd2028" +checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" [[package]] name = "windows_x86_64_msvc" -version = "0.36.1" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c811ca4a8c853ef420abd8592ba53ddbbac90410fab6903b3e79972a631f7680" +checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" [[package]] name = "windows_x86_64_msvc" -version = "0.42.0" +version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f40009d85759725a34da6d89a94e63d7bdc50a862acf0dbc7c8e488f1edcb6f5" +checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" [[package]] name = "winreg" @@ -2291,9 +2281,9 @@ checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec" [[package]] name = "zip" -version = "0.6.3" +version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "537ce7411d25e54e8ae21a7ce0b15840e7bfcff15b51d697ec3266cc76bdf080" +checksum = "760394e246e4c28189f19d488c058bf16f564016aefac5d32bb1f3b51d5e9261" dependencies = [ "aes", "byteorder", @@ -2305,7 +2295,7 @@ dependencies = [ "hmac", "pbkdf2", "sha1", - "time 0.3.17", + "time 0.3.22", "zstd", ] @@ -2330,10 +2320,11 @@ dependencies = [ [[package]] name = "zstd-sys" -version = "2.0.1+zstd.1.5.2" +version = "2.0.8+zstd.1.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fd07cbbc53846d9145dbffdf6dd09a7a0aa52be46741825f5c97bdd4f73f12b" +checksum = "5556e6ee25d32df2586c098bbfa278803692a20d0ab9565e049480d52707ec8c" dependencies = [ "cc", "libc", + "pkg-config", ] diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ae1b92df3..4ae3ab634 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -27,368 +27,370 @@ specifiers: devDependencies: '@changesets/cli': 2.26.0 '@svitejs/changesets-changelog-github-compact': 1.1.0 - '@types/jest': 29.2.3 - '@types/node': 18.11.9 + '@types/jest': 29.5.2 + '@types/node': 18.16.18 '@types/shell-escape': 0.2.1 - chalk: 5.1.2 + chalk: 5.3.0 cmd-ts: 0.11.0 cross-env: 7.0.3 execa: 6.1.0 - jest: 29.3.1_@types+node@18.11.9 + jest: 29.5.0_@types+node@18.16.18 lerna-changelog: 2.2.0 - node-fetch: 3.3.0 + node-fetch: 3.3.1 prettier: 2.8.3 pv: 1.0.1 shell-escape: 0.2.0 svg-term-cli: 2.1.1 toml: 3.0.0 ts-dedent: 2.2.0 - ts-jest: 29.0.3_4f6uxrzmuwipl5rr3bcogf6k74 - typescript: 4.9.3 + ts-jest: 29.1.0_doipufordlnvh5g4adbwayvyvy + typescript: 4.9.5 which: 3.0.1 - zod: 3.19.1 + zod: 3.21.4 packages: - /@ampproject/remapping/2.2.0: - resolution: {integrity: sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==} + /@ampproject/remapping/2.2.1: + resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} engines: {node: '>=6.0.0'} dependencies: - '@jridgewell/gen-mapping': 0.1.1 - '@jridgewell/trace-mapping': 0.3.17 + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.18 dev: true - /@babel/code-frame/7.18.6: - resolution: {integrity: sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==} + /@babel/code-frame/7.22.5: + resolution: {integrity: sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/highlight': 7.18.6 + '@babel/highlight': 7.22.5 dev: true - /@babel/compat-data/7.20.1: - resolution: {integrity: sha512-EWZ4mE2diW3QALKvDMiXnbZpRvlj+nayZ112nK93SnhqOtpdsbVD4W+2tEoT3YNBAG9RBR0ISY758ZkOgsn6pQ==} + /@babel/compat-data/7.22.5: + resolution: {integrity: sha512-4Jc/YuIaYqKnDDz892kPIledykKg12Aw1PYX5i/TY28anJtacvM1Rrr8wbieB9GfEJwlzqT0hUEao0CxEebiDA==} engines: {node: '>=6.9.0'} dev: true - /@babel/core/7.20.2: - resolution: {integrity: sha512-w7DbG8DtMrJcFOi4VrLm+8QM4az8Mo+PuLBKLp2zrYRCow8W/f9xiXm5sN53C8HksCyDQwCKha9JiDoIyPjT2g==} + /@babel/core/7.22.5: + resolution: {integrity: sha512-SBuTAjg91A3eKOvD+bPEz3LlhHZRNu1nFOVts9lzDJTXshHTjII0BAtDS3Y2DAkdZdDKWVZGVwkDfc4Clxn1dg==} engines: {node: '>=6.9.0'} dependencies: - '@ampproject/remapping': 2.2.0 - '@babel/code-frame': 7.18.6 - '@babel/generator': 7.20.4 - '@babel/helper-compilation-targets': 7.20.0_@babel+core@7.20.2 - '@babel/helper-module-transforms': 7.20.2 - '@babel/helpers': 7.20.1 - '@babel/parser': 7.20.3 - '@babel/template': 7.18.10 - '@babel/traverse': 7.20.1 - '@babel/types': 7.20.2 + '@ampproject/remapping': 2.2.1 + '@babel/code-frame': 7.22.5 + '@babel/generator': 7.22.5 + '@babel/helper-compilation-targets': 7.22.5_@babel+core@7.22.5 + '@babel/helper-module-transforms': 7.22.5 + '@babel/helpers': 7.22.5 + '@babel/parser': 7.22.5 + '@babel/template': 7.22.5 + '@babel/traverse': 7.22.5 + '@babel/types': 7.22.5 convert-source-map: 1.9.0 debug: 4.3.4 gensync: 1.0.0-beta.2 - json5: 2.2.1 + json5: 2.2.3 semver: 6.3.0 transitivePeerDependencies: - supports-color dev: true - /@babel/generator/7.20.4: - resolution: {integrity: sha512-luCf7yk/cm7yab6CAW1aiFnmEfBJplb/JojV56MYEK7ziWfGmFlTfmL9Ehwfy4gFhbjBfWO1wj7/TuSbVNEEtA==} + /@babel/generator/7.22.5: + resolution: {integrity: sha512-+lcUbnTRhd0jOewtFSedLyiPsD5tswKkbgcezOqqWFUVNEwoUTlpPOBmvhG7OXWLR4jMdv0czPGH5XbflnD1EA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.20.2 - '@jridgewell/gen-mapping': 0.3.2 + '@babel/types': 7.22.5 + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.18 jsesc: 2.5.2 dev: true - /@babel/helper-compilation-targets/7.20.0_@babel+core@7.20.2: - resolution: {integrity: sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==} + /@babel/helper-compilation-targets/7.22.5_@babel+core@7.22.5: + resolution: {integrity: sha512-Ji+ywpHeuqxB8WDxraCiqR0xfhYjiDE/e6k7FuIaANnoOFxAHskHChz4vA1mJC9Lbm01s1PVAGhQY4FUKSkGZw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/compat-data': 7.20.1 - '@babel/core': 7.20.2 - '@babel/helper-validator-option': 7.18.6 - browserslist: 4.21.4 + '@babel/compat-data': 7.22.5 + '@babel/core': 7.22.5 + '@babel/helper-validator-option': 7.22.5 + browserslist: 4.21.9 + lru-cache: 5.1.1 semver: 6.3.0 dev: true - /@babel/helper-environment-visitor/7.18.9: - resolution: {integrity: sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==} + /@babel/helper-environment-visitor/7.22.5: + resolution: {integrity: sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==} engines: {node: '>=6.9.0'} dev: true - /@babel/helper-function-name/7.19.0: - resolution: {integrity: sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==} + /@babel/helper-function-name/7.22.5: + resolution: {integrity: sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.18.10 - '@babel/types': 7.20.2 + '@babel/template': 7.22.5 + '@babel/types': 7.22.5 dev: true - /@babel/helper-hoist-variables/7.18.6: - resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==} + /@babel/helper-hoist-variables/7.22.5: + resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.20.2 + '@babel/types': 7.22.5 dev: true - /@babel/helper-module-imports/7.18.6: - resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} + /@babel/helper-module-imports/7.22.5: + resolution: {integrity: sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.20.2 + '@babel/types': 7.22.5 dev: true - /@babel/helper-module-transforms/7.20.2: - resolution: {integrity: sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA==} + /@babel/helper-module-transforms/7.22.5: + resolution: {integrity: sha512-+hGKDt/Ze8GFExiVHno/2dvG5IdstpzCq0y4Qc9OJ25D4q3pKfiIP/4Vp3/JvhDkLKsDK2api3q3fpIgiIF5bw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-module-imports': 7.18.6 - '@babel/helper-simple-access': 7.20.2 - '@babel/helper-split-export-declaration': 7.18.6 - '@babel/helper-validator-identifier': 7.19.1 - '@babel/template': 7.18.10 - '@babel/traverse': 7.20.1 - '@babel/types': 7.20.2 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-module-imports': 7.22.5 + '@babel/helper-simple-access': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.5 + '@babel/helper-validator-identifier': 7.22.5 + '@babel/template': 7.22.5 + '@babel/traverse': 7.22.5 + '@babel/types': 7.22.5 transitivePeerDependencies: - supports-color dev: true - /@babel/helper-plugin-utils/7.20.2: - resolution: {integrity: sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==} + /@babel/helper-plugin-utils/7.22.5: + resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==} engines: {node: '>=6.9.0'} dev: true - /@babel/helper-simple-access/7.20.2: - resolution: {integrity: sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==} + /@babel/helper-simple-access/7.22.5: + resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.20.2 + '@babel/types': 7.22.5 dev: true - /@babel/helper-split-export-declaration/7.18.6: - resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==} + /@babel/helper-split-export-declaration/7.22.5: + resolution: {integrity: sha512-thqK5QFghPKWLhAV321lxF95yCg2K3Ob5yw+M3VHWfdia0IkPXUtoLH8x/6Fh486QUvzhb8YOWHChTVen2/PoQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.20.2 + '@babel/types': 7.22.5 dev: true - /@babel/helper-string-parser/7.19.4: - resolution: {integrity: sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==} + /@babel/helper-string-parser/7.22.5: + resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==} engines: {node: '>=6.9.0'} dev: true - /@babel/helper-validator-identifier/7.19.1: - resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} + /@babel/helper-validator-identifier/7.22.5: + resolution: {integrity: sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==} engines: {node: '>=6.9.0'} dev: true - /@babel/helper-validator-option/7.18.6: - resolution: {integrity: sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==} + /@babel/helper-validator-option/7.22.5: + resolution: {integrity: sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==} engines: {node: '>=6.9.0'} dev: true - /@babel/helpers/7.20.1: - resolution: {integrity: sha512-J77mUVaDTUJFZ5BpP6mMn6OIl3rEWymk2ZxDBQJUG3P+PbmyMcF3bYWvz0ma69Af1oobDqT/iAsvzhB58xhQUg==} + /@babel/helpers/7.22.5: + resolution: {integrity: sha512-pSXRmfE1vzcUIDFQcSGA5Mr+GxBV9oiRKDuDxXvWQQBCh8HoIjs/2DlDB7H8smac1IVrB9/xdXj2N3Wol9Cr+Q==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.18.10 - '@babel/traverse': 7.20.1 - '@babel/types': 7.20.2 + '@babel/template': 7.22.5 + '@babel/traverse': 7.22.5 + '@babel/types': 7.22.5 transitivePeerDependencies: - supports-color dev: true - /@babel/highlight/7.18.6: - resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} + /@babel/highlight/7.22.5: + resolution: {integrity: sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-validator-identifier': 7.19.1 + '@babel/helper-validator-identifier': 7.22.5 chalk: 2.4.2 js-tokens: 4.0.0 dev: true - /@babel/parser/7.20.3: - resolution: {integrity: sha512-OP/s5a94frIPXwjzEcv5S/tpQfc6XhxYUnmWpgdqMWGgYCuErA3SzozaRAMQgSZWKeTJxht9aWAkUY+0UzvOFg==} + /@babel/parser/7.22.5: + resolution: {integrity: sha512-DFZMC9LJUG9PLOclRC32G63UXwzqS2koQC8dkx+PLdmt1xSePYpbT/NbsrJy8Q/muXz7o/h/d4A7Fuyixm559Q==} engines: {node: '>=6.0.0'} hasBin: true dependencies: - '@babel/types': 7.20.2 + '@babel/types': 7.22.5 dev: true - /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.20.2: + /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.22.5: resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.2 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-bigint/7.8.3_@babel+core@7.20.2: + /@babel/plugin-syntax-bigint/7.8.3_@babel+core@7.22.5: resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.2 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.20.2: + /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.22.5: resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.2 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-import-meta/7.10.4_@babel+core@7.20.2: + /@babel/plugin-syntax-import-meta/7.10.4_@babel+core@7.22.5: resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.2 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.20.2: + /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.22.5: resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.2 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-jsx/7.18.6_@babel+core@7.20.2: - resolution: {integrity: sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==} + /@babel/plugin-syntax-jsx/7.22.5_@babel+core@7.22.5: + resolution: {integrity: sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.2 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.20.2: + /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.22.5: resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.2 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.20.2: + /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.22.5: resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.2 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.20.2: + /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.22.5: resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.2 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.20.2: + /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.22.5: resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.2 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.20.2: + /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.22.5: resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.2 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.20.2: + /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.22.5: resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.2 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-top-level-await/7.14.5_@babel+core@7.20.2: + /@babel/plugin-syntax-top-level-await/7.14.5_@babel+core@7.22.5: resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.2 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-typescript/7.20.0_@babel+core@7.20.2: - resolution: {integrity: sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==} + /@babel/plugin-syntax-typescript/7.22.5_@babel+core@7.22.5: + resolution: {integrity: sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.2 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/runtime/7.20.1: - resolution: {integrity: sha512-mrzLkl6U9YLF8qpqI7TB82PESyEGjm/0Ly91jG575eVxMMlb8fYfOXFZIJ8XfLrJZQbm7dlKry2bJmXBUEkdFg==} + /@babel/runtime/7.22.5: + resolution: {integrity: sha512-ecjvYlnAaZ/KVneE/OdKYBYfgXV3Ptu6zQWmgEF7vwKhQnvVS6bjMD2XYgj+SNvQ1GfK/pjgokfPkC/2CO8CuA==} engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.13.11 dev: true - /@babel/template/7.18.10: - resolution: {integrity: sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==} + /@babel/template/7.22.5: + resolution: {integrity: sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.18.6 - '@babel/parser': 7.20.3 - '@babel/types': 7.20.2 + '@babel/code-frame': 7.22.5 + '@babel/parser': 7.22.5 + '@babel/types': 7.22.5 dev: true - /@babel/traverse/7.20.1: - resolution: {integrity: sha512-d3tN8fkVJwFLkHkBN479SOsw4DMZnz8cdbL/gvuDuzy3TS6Nfw80HuQqhw1pITbIruHyh7d1fMA47kWzmcUEGA==} + /@babel/traverse/7.22.5: + resolution: {integrity: sha512-7DuIjPgERaNo6r+PZwItpjCZEa5vyw4eJGufeLxrPdBXBoLcCJCIasvK6pK/9DVNrLZTLFhUGqaC6X/PA007TQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.18.6 - '@babel/generator': 7.20.4 - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-function-name': 7.19.0 - '@babel/helper-hoist-variables': 7.18.6 - '@babel/helper-split-export-declaration': 7.18.6 - '@babel/parser': 7.20.3 - '@babel/types': 7.20.2 + '@babel/code-frame': 7.22.5 + '@babel/generator': 7.22.5 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-function-name': 7.22.5 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.5 + '@babel/parser': 7.22.5 + '@babel/types': 7.22.5 debug: 4.3.4 globals: 11.12.0 transitivePeerDependencies: - supports-color dev: true - /@babel/types/7.20.2: - resolution: {integrity: sha512-FnnvsNWgZCr232sqtXggapvlkk/tuwR/qhGzcmxI0GXLCjmPYQPzio2FbdlWuY6y1sHFfQKk+rRbUZ9VStQMog==} + /@babel/types/7.22.5: + resolution: {integrity: sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-string-parser': 7.19.4 - '@babel/helper-validator-identifier': 7.19.1 + '@babel/helper-string-parser': 7.22.5 + '@babel/helper-validator-identifier': 7.22.5 to-fast-properties: 2.0.0 dev: true @@ -396,11 +398,11 @@ packages: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} dev: true - /@changesets/apply-release-plan/6.1.3: - resolution: {integrity: sha512-ECDNeoc3nfeAe1jqJb5aFQX7CqzQhD2klXRez2JDb/aVpGUbX673HgKrnrgJRuQR/9f2TtLoYIzrGB9qwD77mg==} + /@changesets/apply-release-plan/6.1.4: + resolution: {integrity: sha512-FMpKF1fRlJyCZVYHr3CbinpZZ+6MwvOtWUuO8uo+svcATEoc1zRDcj23pAurJ2TZ/uVz1wFHH6K3NlACy0PLew==} dependencies: - '@babel/runtime': 7.20.1 - '@changesets/config': 2.3.0 + '@babel/runtime': 7.22.5 + '@changesets/config': 2.3.1 '@changesets/get-version-range-type': 0.3.2 '@changesets/git': 2.0.0 '@changesets/types': 5.2.1 @@ -411,18 +413,18 @@ packages: outdent: 0.5.0 prettier: 2.8.3 resolve-from: 5.0.0 - semver: 5.7.1 + semver: 7.5.3 dev: true - /@changesets/assemble-release-plan/5.2.3: - resolution: {integrity: sha512-g7EVZCmnWz3zMBAdrcKhid4hkHT+Ft1n0mLussFMcB1dE2zCuwcvGoy9ec3yOgPGF4hoMtgHaMIk3T3TBdvU9g==} + /@changesets/assemble-release-plan/5.2.4: + resolution: {integrity: sha512-xJkWX+1/CUaOUWTguXEbCDTyWJFECEhmdtbkjhn5GVBGxdP/JwaHBIU9sW3FR6gD07UwZ7ovpiPclQZs+j+mvg==} dependencies: - '@babel/runtime': 7.20.1 + '@babel/runtime': 7.22.5 '@changesets/errors': 0.1.4 - '@changesets/get-dependents-graph': 1.3.5 + '@changesets/get-dependents-graph': 1.3.6 '@changesets/types': 5.2.1 '@manypkg/get-packages': 1.1.3 - semver: 5.7.1 + semver: 7.5.3 dev: true /@changesets/changelog-git/0.1.14: @@ -435,14 +437,14 @@ packages: resolution: {integrity: sha512-0cbTiDms+ICTVtEwAFLNW0jBNex9f5+fFv3I771nBvdnV/mOjd1QJ4+f8KtVSOrwD9SJkk9xbDkWFb0oXd8d1Q==} hasBin: true dependencies: - '@babel/runtime': 7.20.1 - '@changesets/apply-release-plan': 6.1.3 - '@changesets/assemble-release-plan': 5.2.3 + '@babel/runtime': 7.22.5 + '@changesets/apply-release-plan': 6.1.4 + '@changesets/assemble-release-plan': 5.2.4 '@changesets/changelog-git': 0.1.14 - '@changesets/config': 2.3.0 + '@changesets/config': 2.3.1 '@changesets/errors': 0.1.4 - '@changesets/get-dependents-graph': 1.3.5 - '@changesets/get-release-plan': 3.0.16 + '@changesets/get-dependents-graph': 1.3.6 + '@changesets/get-release-plan': 3.0.17 '@changesets/git': 2.0.0 '@changesets/logger': 0.0.5 '@changesets/pre': 1.0.14 @@ -467,14 +469,14 @@ packages: semver: 5.7.1 spawndamnit: 2.0.0 term-size: 2.2.1 - tty-table: 4.1.6 + tty-table: 4.2.1 dev: true - /@changesets/config/2.3.0: - resolution: {integrity: sha512-EgP/px6mhCx8QeaMAvWtRrgyxW08k/Bx2tpGT+M84jEdX37v3VKfh4Cz1BkwrYKuMV2HZKeHOh8sHvja/HcXfQ==} + /@changesets/config/2.3.1: + resolution: {integrity: sha512-PQXaJl82CfIXddUOppj4zWu+987GCw2M+eQcOepxN5s+kvnsZOwjEJO3DH9eVy+OP6Pg/KFEWdsECFEYTtbg6w==} dependencies: '@changesets/errors': 0.1.4 - '@changesets/get-dependents-graph': 1.3.5 + '@changesets/get-dependents-graph': 1.3.6 '@changesets/logger': 0.0.5 '@changesets/types': 5.2.1 '@manypkg/get-packages': 1.1.3 @@ -488,31 +490,31 @@ packages: extendable-error: 0.1.7 dev: true - /@changesets/get-dependents-graph/1.3.5: - resolution: {integrity: sha512-w1eEvnWlbVDIY8mWXqWuYE9oKhvIaBhzqzo4ITSJY9hgoqQ3RoBqwlcAzg11qHxv/b8ReDWnMrpjpKrW6m1ZTA==} + /@changesets/get-dependents-graph/1.3.6: + resolution: {integrity: sha512-Q/sLgBANmkvUm09GgRsAvEtY3p1/5OCzgBE5vX3vgb5CvW0j7CEljocx5oPXeQSNph6FXulJlXV3Re/v3K3P3Q==} dependencies: '@changesets/types': 5.2.1 '@manypkg/get-packages': 1.1.3 chalk: 2.4.2 fs-extra: 7.0.1 - semver: 5.7.1 + semver: 7.5.3 dev: true /@changesets/get-github-info/0.5.2: resolution: {integrity: sha512-JppheLu7S114aEs157fOZDjFqUDpm7eHdq5E8SSR0gUBTEK0cNSHsrSR5a66xs0z3RWuo46QvA3vawp8BxDHvg==} dependencies: dataloader: 1.4.0 - node-fetch: 2.6.7 + node-fetch: 2.6.11 transitivePeerDependencies: - encoding dev: true - /@changesets/get-release-plan/3.0.16: - resolution: {integrity: sha512-OpP9QILpBp1bY2YNIKFzwigKh7Qe9KizRsZomzLe6pK8IUo8onkAAVUD8+JRKSr8R7d4+JRuQrfSSNlEwKyPYg==} + /@changesets/get-release-plan/3.0.17: + resolution: {integrity: sha512-6IwKTubNEgoOZwDontYc2x2cWXfr6IKxP3IhKeK+WjyD6y3M4Gl/jdQvBw+m/5zWILSOCAaGLu2ZF6Q+WiPniw==} dependencies: - '@babel/runtime': 7.20.1 - '@changesets/assemble-release-plan': 5.2.3 - '@changesets/config': 2.3.0 + '@babel/runtime': 7.22.5 + '@changesets/assemble-release-plan': 5.2.4 + '@changesets/config': 2.3.1 '@changesets/pre': 1.0.14 '@changesets/read': 0.5.9 '@changesets/types': 5.2.1 @@ -526,7 +528,7 @@ packages: /@changesets/git/2.0.0: resolution: {integrity: sha512-enUVEWbiqUTxqSnmesyJGWfzd51PY4H7mH9yUw0hPVpZBJ6tQZFMU3F3mT/t9OJ/GjyiM4770i+sehAn6ymx6A==} dependencies: - '@babel/runtime': 7.20.1 + '@babel/runtime': 7.22.5 '@changesets/errors': 0.1.4 '@changesets/types': 5.2.1 '@manypkg/get-packages': 1.1.3 @@ -551,7 +553,7 @@ packages: /@changesets/pre/1.0.14: resolution: {integrity: sha512-dTsHmxQWEQekHYHbg+M1mDVYFvegDh9j/kySNuDKdylwfMEevTeDouR7IfHNyVodxZXu17sXoJuf2D0vi55FHQ==} dependencies: - '@babel/runtime': 7.20.1 + '@babel/runtime': 7.22.5 '@changesets/errors': 0.1.4 '@changesets/types': 5.2.1 '@manypkg/get-packages': 1.1.3 @@ -561,7 +563,7 @@ packages: /@changesets/read/0.5.9: resolution: {integrity: sha512-T8BJ6JS6j1gfO1HFq50kU3qawYxa4NTbI/ASNVVCBTsKquy2HYwM9r7ZnzkiMe8IEObAJtUVGSrePCOxAK2haQ==} dependencies: - '@babel/runtime': 7.20.1 + '@babel/runtime': 7.22.5 '@changesets/git': 2.0.0 '@changesets/logger': 0.0.5 '@changesets/parse': 0.3.16 @@ -582,7 +584,7 @@ packages: /@changesets/write/0.2.3: resolution: {integrity: sha512-Dbamr7AIMvslKnNYsLFafaVORx4H0pvCA2MHqgtNCySMe1blImEyAEOzDmcgKAkgz4+uwoLz7demIrX+JBr/Xw==} dependencies: - '@babel/runtime': 7.20.1 + '@babel/runtime': 7.22.5 '@changesets/types': 5.2.1 fs-extra: 7.0.1 human-id: 1.0.2 @@ -609,20 +611,20 @@ packages: engines: {node: '>=8'} dev: true - /@jest/console/29.3.1: - resolution: {integrity: sha512-IRE6GD47KwcqA09RIWrabKdHPiKDGgtAL31xDxbi/RjQMsr+lY+ppxmHwY0dUEV3qvvxZzoe5Hl0RXZJOjQNUg==} + /@jest/console/29.5.0: + resolution: {integrity: sha512-NEpkObxPwyw/XxZVLPmAGKE89IQRp4puc6IQRPru6JKd1M3fW9v1xM1AnzIJE65hbCkzQAdnL8P47e9hzhiYLQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.3.1 - '@types/node': 18.11.9 + '@jest/types': 29.5.0 + '@types/node': 18.16.18 chalk: 4.1.2 - jest-message-util: 29.3.1 - jest-util: 29.3.1 + jest-message-util: 29.5.0 + jest-util: 29.5.0 slash: 3.0.0 dev: true - /@jest/core/29.3.1: - resolution: {integrity: sha512-0ohVjjRex985w5MmO5L3u5GR1O30DexhBSpuwx2P+9ftyqHdJXnk7IUWiP80oHMvt7ubHCJHxV0a0vlKVuZirw==} + /@jest/core/29.5.0: + resolution: {integrity: sha512-28UzQc7ulUrOQw1IsN/kv1QES3q2kkbl/wGslyhAclqZ/8cMdB5M68BffkIdSJgKBUt50d3hbwJ92XESlE7LiQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 @@ -630,32 +632,32 @@ packages: node-notifier: optional: true dependencies: - '@jest/console': 29.3.1 - '@jest/reporters': 29.3.1 - '@jest/test-result': 29.3.1 - '@jest/transform': 29.3.1 - '@jest/types': 29.3.1 - '@types/node': 18.11.9 + '@jest/console': 29.5.0 + '@jest/reporters': 29.5.0 + '@jest/test-result': 29.5.0 + '@jest/transform': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 18.16.18 ansi-escapes: 4.3.2 chalk: 4.1.2 - ci-info: 3.6.1 + ci-info: 3.8.0 exit: 0.1.2 - graceful-fs: 4.2.10 - jest-changed-files: 29.2.0 - jest-config: 29.3.1_@types+node@18.11.9 - jest-haste-map: 29.3.1 - jest-message-util: 29.3.1 - jest-regex-util: 29.2.0 - jest-resolve: 29.3.1 - jest-resolve-dependencies: 29.3.1 - jest-runner: 29.3.1 - jest-runtime: 29.3.1 - jest-snapshot: 29.3.1 - jest-util: 29.3.1 - jest-validate: 29.3.1 - jest-watcher: 29.3.1 + graceful-fs: 4.2.11 + jest-changed-files: 29.5.0 + jest-config: 29.5.0_@types+node@18.16.18 + jest-haste-map: 29.5.0 + jest-message-util: 29.5.0 + jest-regex-util: 29.4.3 + jest-resolve: 29.5.0 + jest-resolve-dependencies: 29.5.0 + jest-runner: 29.5.0 + jest-runtime: 29.5.0 + jest-snapshot: 29.5.0 + jest-util: 29.5.0 + jest-validate: 29.5.0 + jest-watcher: 29.5.0 micromatch: 4.0.5 - pretty-format: 29.3.1 + pretty-format: 29.5.0 slash: 3.0.0 strip-ansi: 6.0.1 transitivePeerDependencies: @@ -663,59 +665,59 @@ packages: - ts-node dev: true - /@jest/environment/29.3.1: - resolution: {integrity: sha512-pMmvfOPmoa1c1QpfFW0nXYtNLpofqo4BrCIk6f2kW4JFeNlHV2t3vd+3iDLf31e2ot2Mec0uqZfmI+U0K2CFag==} + /@jest/environment/29.5.0: + resolution: {integrity: sha512-5FXw2+wD29YU1d4I2htpRX7jYnAyTRjP2CsXQdo9SAM8g3ifxWPSV0HnClSn71xwctr0U3oZIIH+dtbfmnbXVQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/fake-timers': 29.3.1 - '@jest/types': 29.3.1 - '@types/node': 18.11.9 - jest-mock: 29.3.1 + '@jest/fake-timers': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 18.16.18 + jest-mock: 29.5.0 dev: true - /@jest/expect-utils/29.3.1: - resolution: {integrity: sha512-wlrznINZI5sMjwvUoLVk617ll/UYfGIZNxmbU+Pa7wmkL4vYzhV9R2pwVqUh4NWWuLQWkI8+8mOkxs//prKQ3g==} + /@jest/expect-utils/29.5.0: + resolution: {integrity: sha512-fmKzsidoXQT2KwnrwE0SQq3uj8Z763vzR8LnLBwC2qYWEFpjX8daRsk6rHUM1QvNlEW/UJXNXm59ztmJJWs2Mg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - jest-get-type: 29.2.0 + jest-get-type: 29.4.3 dev: true - /@jest/expect/29.3.1: - resolution: {integrity: sha512-QivM7GlSHSsIAWzgfyP8dgeExPRZ9BIe2LsdPyEhCGkZkoyA+kGsoIzbKAfZCvvRzfZioKwPtCZIt5SaoxYCvg==} + /@jest/expect/29.5.0: + resolution: {integrity: sha512-PueDR2HGihN3ciUNGr4uelropW7rqUfTiOn+8u0leg/42UhblPxHkfoh0Ruu3I9Y1962P3u2DY4+h7GVTSVU6g==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - expect: 29.3.1 - jest-snapshot: 29.3.1 + expect: 29.5.0 + jest-snapshot: 29.5.0 transitivePeerDependencies: - supports-color dev: true - /@jest/fake-timers/29.3.1: - resolution: {integrity: sha512-iHTL/XpnDlFki9Tq0Q1GGuVeQ8BHZGIYsvCO5eN/O/oJaRzofG9Xndd9HuSDBI/0ZS79pg0iwn07OMTQ7ngF2A==} + /@jest/fake-timers/29.5.0: + resolution: {integrity: sha512-9ARvuAAQcBwDAqOnglWq2zwNIRUDtk/SCkp/ToGEhFv5r86K21l+VEs0qNTaXtyiY0lEePl3kylijSYJQqdbDg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.3.1 - '@sinonjs/fake-timers': 9.1.2 - '@types/node': 18.11.9 - jest-message-util: 29.3.1 - jest-mock: 29.3.1 - jest-util: 29.3.1 + '@jest/types': 29.5.0 + '@sinonjs/fake-timers': 10.3.0 + '@types/node': 18.16.18 + jest-message-util: 29.5.0 + jest-mock: 29.5.0 + jest-util: 29.5.0 dev: true - /@jest/globals/29.3.1: - resolution: {integrity: sha512-cTicd134vOcwO59OPaB6AmdHQMCtWOe+/DitpTZVxWgMJ+YvXL1HNAmPyiGbSHmF/mXVBkvlm8YYtQhyHPnV6Q==} + /@jest/globals/29.5.0: + resolution: {integrity: sha512-S02y0qMWGihdzNbUiqSAiKSpSozSuHX5UYc7QbnHP+D9Lyw8DgGGCinrN9uSuHPeKgSSzvPom2q1nAtBvUsvPQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/environment': 29.3.1 - '@jest/expect': 29.3.1 - '@jest/types': 29.3.1 - jest-mock: 29.3.1 + '@jest/environment': 29.5.0 + '@jest/expect': 29.5.0 + '@jest/types': 29.5.0 + jest-mock: 29.5.0 transitivePeerDependencies: - supports-color dev: true - /@jest/reporters/29.3.1: - resolution: {integrity: sha512-GhBu3YFuDrcAYW/UESz1JphEAbvUjaY2vShRZRoRY1mxpCMB3yGSJ4j9n0GxVlEOdCf7qjvUfBCrTUUqhVfbRA==} + /@jest/reporters/29.5.0: + resolution: {integrity: sha512-D05STXqj/M8bP9hQNSICtPqz97u7ffGzZu+9XLucXhkOFBqKcXe04JLZOgIekOxdb73MAoBUFnqvf7MCpKk5OA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 @@ -724,119 +726,111 @@ packages: optional: true dependencies: '@bcoe/v8-coverage': 0.2.3 - '@jest/console': 29.3.1 - '@jest/test-result': 29.3.1 - '@jest/transform': 29.3.1 - '@jest/types': 29.3.1 - '@jridgewell/trace-mapping': 0.3.17 - '@types/node': 18.11.9 + '@jest/console': 29.5.0 + '@jest/test-result': 29.5.0 + '@jest/transform': 29.5.0 + '@jest/types': 29.5.0 + '@jridgewell/trace-mapping': 0.3.18 + '@types/node': 18.16.18 chalk: 4.1.2 collect-v8-coverage: 1.0.1 exit: 0.1.2 glob: 7.2.3 - graceful-fs: 4.2.10 + graceful-fs: 4.2.11 istanbul-lib-coverage: 3.2.0 istanbul-lib-instrument: 5.2.1 istanbul-lib-report: 3.0.0 istanbul-lib-source-maps: 4.0.1 istanbul-reports: 3.1.5 - jest-message-util: 29.3.1 - jest-util: 29.3.1 - jest-worker: 29.3.1 + jest-message-util: 29.5.0 + jest-util: 29.5.0 + jest-worker: 29.5.0 slash: 3.0.0 string-length: 4.0.2 strip-ansi: 6.0.1 - v8-to-istanbul: 9.0.1 + v8-to-istanbul: 9.1.0 transitivePeerDependencies: - supports-color dev: true - /@jest/schemas/29.0.0: - resolution: {integrity: sha512-3Ab5HgYIIAnS0HjqJHQYZS+zXc4tUmTmBH3z83ajI6afXp8X3ZtdLX+nXx+I7LNkJD7uN9LAVhgnjDgZa2z0kA==} + /@jest/schemas/29.4.3: + resolution: {integrity: sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@sinclair/typebox': 0.24.51 + '@sinclair/typebox': 0.25.24 dev: true - /@jest/source-map/29.2.0: - resolution: {integrity: sha512-1NX9/7zzI0nqa6+kgpSdKPK+WU1p+SJk3TloWZf5MzPbxri9UEeXX5bWZAPCzbQcyuAzubcdUHA7hcNznmRqWQ==} + /@jest/source-map/29.4.3: + resolution: {integrity: sha512-qyt/mb6rLyd9j1jUts4EQncvS6Yy3PM9HghnNv86QBlV+zdL2inCdK1tuVlL+J+lpiw2BI67qXOrX3UurBqQ1w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jridgewell/trace-mapping': 0.3.17 + '@jridgewell/trace-mapping': 0.3.18 callsites: 3.1.0 - graceful-fs: 4.2.10 + graceful-fs: 4.2.11 dev: true - /@jest/test-result/29.3.1: - resolution: {integrity: sha512-qeLa6qc0ddB0kuOZyZIhfN5q0e2htngokyTWsGriedsDhItisW7SDYZ7ceOe57Ii03sL988/03wAcBh3TChMGw==} + /@jest/test-result/29.5.0: + resolution: {integrity: sha512-fGl4rfitnbfLsrfx1uUpDEESS7zM8JdgZgOCQuxQvL1Sn/I6ijeAVQWGfXI9zb1i9Mzo495cIpVZhA0yr60PkQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/console': 29.3.1 - '@jest/types': 29.3.1 + '@jest/console': 29.5.0 + '@jest/types': 29.5.0 '@types/istanbul-lib-coverage': 2.0.4 collect-v8-coverage: 1.0.1 dev: true - /@jest/test-sequencer/29.3.1: - resolution: {integrity: sha512-IqYvLbieTv20ArgKoAMyhLHNrVHJfzO6ARZAbQRlY4UGWfdDnLlZEF0BvKOMd77uIiIjSZRwq3Jb3Fa3I8+2UA==} + /@jest/test-sequencer/29.5.0: + resolution: {integrity: sha512-yPafQEcKjkSfDXyvtgiV4pevSeyuA6MQr6ZIdVkWJly9vkqjnFfcfhRQqpD5whjoU8EORki752xQmjaqoFjzMQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/test-result': 29.3.1 - graceful-fs: 4.2.10 - jest-haste-map: 29.3.1 + '@jest/test-result': 29.5.0 + graceful-fs: 4.2.11 + jest-haste-map: 29.5.0 slash: 3.0.0 dev: true - /@jest/transform/29.3.1: - resolution: {integrity: sha512-8wmCFBTVGYqFNLWfcOWoVuMuKYPUBTnTMDkdvFtAYELwDOl9RGwOsvQWGPFxDJ8AWY9xM/8xCXdqmPK3+Q5Lug==} + /@jest/transform/29.5.0: + resolution: {integrity: sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/core': 7.20.2 - '@jest/types': 29.3.1 - '@jridgewell/trace-mapping': 0.3.17 + '@babel/core': 7.22.5 + '@jest/types': 29.5.0 + '@jridgewell/trace-mapping': 0.3.18 babel-plugin-istanbul: 6.1.1 chalk: 4.1.2 convert-source-map: 2.0.0 fast-json-stable-stringify: 2.1.0 - graceful-fs: 4.2.10 - jest-haste-map: 29.3.1 - jest-regex-util: 29.2.0 - jest-util: 29.3.1 + graceful-fs: 4.2.11 + jest-haste-map: 29.5.0 + jest-regex-util: 29.4.3 + jest-util: 29.5.0 micromatch: 4.0.5 - pirates: 4.0.5 + pirates: 4.0.6 slash: 3.0.0 write-file-atomic: 4.0.2 transitivePeerDependencies: - supports-color dev: true - /@jest/types/29.3.1: - resolution: {integrity: sha512-d0S0jmmTpjnhCmNpApgX3jrUZgZ22ivKJRvL2lli5hpCRoNnp1f85r2/wpKfXuYu8E7Jjh1hGfhPyup1NM5AmA==} + /@jest/types/29.5.0: + resolution: {integrity: sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/schemas': 29.0.0 + '@jest/schemas': 29.4.3 '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 18.11.9 - '@types/yargs': 17.0.13 + '@types/node': 18.16.18 + '@types/yargs': 17.0.24 chalk: 4.1.2 dev: true - /@jridgewell/gen-mapping/0.1.1: - resolution: {integrity: sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==} + /@jridgewell/gen-mapping/0.3.3: + resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} engines: {node: '>=6.0.0'} dependencies: '@jridgewell/set-array': 1.1.2 - '@jridgewell/sourcemap-codec': 1.4.14 - dev: true - - /@jridgewell/gen-mapping/0.3.2: - resolution: {integrity: sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==} - engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/set-array': 1.1.2 - '@jridgewell/sourcemap-codec': 1.4.14 - '@jridgewell/trace-mapping': 0.3.17 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.18 dev: true /@jridgewell/resolve-uri/3.1.0: @@ -853,8 +847,12 @@ packages: resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} dev: true - /@jridgewell/trace-mapping/0.3.17: - resolution: {integrity: sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==} + /@jridgewell/sourcemap-codec/1.4.15: + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + dev: true + + /@jridgewell/trace-mapping/0.3.18: + resolution: {integrity: sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==} dependencies: '@jridgewell/resolve-uri': 3.1.0 '@jridgewell/sourcemap-codec': 1.4.14 @@ -863,7 +861,7 @@ packages: /@manypkg/find-root/1.1.0: resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} dependencies: - '@babel/runtime': 7.20.1 + '@babel/runtime': 7.22.5 '@types/node': 12.20.55 find-up: 4.1.0 fs-extra: 8.1.0 @@ -872,7 +870,7 @@ packages: /@manypkg/get-packages/1.1.3: resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} dependencies: - '@babel/runtime': 7.20.1 + '@babel/runtime': 7.22.5 '@changesets/types': 4.1.0 '@manypkg/find-root': 1.1.0 fs-extra: 8.1.0 @@ -902,7 +900,7 @@ packages: /@marionebl/sander/0.6.1: resolution: {integrity: sha512-7f3zZddAk92G1opoX/glbDO6YbrzmMAJAw0RJAcvunnV7sR4L9llyBUAABptKoF1Jf37UQ1QTJy5p2H4J4rBNA==} dependencies: - graceful-fs: 4.2.10 + graceful-fs: 4.2.11 mkdirp: 0.5.6 rimraf: 2.7.1 dev: true @@ -925,14 +923,14 @@ packages: engines: {node: '>= 8'} dependencies: '@nodelib/fs.scandir': 2.1.5 - fastq: 1.13.0 + fastq: 1.15.0 dev: true /@npmcli/fs/1.1.1: resolution: {integrity: sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==} dependencies: '@gar/promisify': 1.1.3 - semver: 7.3.8 + semver: 7.5.3 dev: true /@npmcli/move-file/1.1.2: @@ -944,20 +942,20 @@ packages: rimraf: 3.0.2 dev: true - /@sinclair/typebox/0.24.51: - resolution: {integrity: sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==} + /@sinclair/typebox/0.25.24: + resolution: {integrity: sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==} dev: true - /@sinonjs/commons/1.8.5: - resolution: {integrity: sha512-rTpCA0wG1wUxglBSFdMMY0oTrKYvgf4fNgv/sXbfCVAdf+FnPBdKJR/7XbpTCwbCrvCbdPYnlWaUUYz4V2fPDA==} + /@sinonjs/commons/3.0.0: + resolution: {integrity: sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==} dependencies: type-detect: 4.0.8 dev: true - /@sinonjs/fake-timers/9.1.2: - resolution: {integrity: sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==} + /@sinonjs/fake-timers/10.3.0: + resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} dependencies: - '@sinonjs/commons': 1.8.5 + '@sinonjs/commons': 3.0.0 dev: true /@stiligita/constants/1.0.0-0: @@ -1041,7 +1039,7 @@ packages: engines: {node: ^14.13.1 || ^16.0.0 || >=18} dependencies: '@changesets/get-github-info': 0.5.2 - dotenv: 16.0.3 + dotenv: 16.3.1 transitivePeerDependencies: - encoding dev: true @@ -1051,52 +1049,52 @@ packages: engines: {node: '>= 6'} dev: true - /@types/babel__core/7.1.20: - resolution: {integrity: sha512-PVb6Bg2QuscZ30FvOU7z4guG6c926D9YRvOxEaelzndpMsvP+YM74Q/dAFASpg2l6+XLalxSGxcq/lrgYWZtyQ==} + /@types/babel__core/7.20.1: + resolution: {integrity: sha512-aACu/U/omhdk15O4Nfb+fHgH/z3QsfQzpnvRZhYhThms83ZnAOZz7zZAWO7mn2yyNQaA4xTO8GLK3uqFU4bYYw==} dependencies: - '@babel/parser': 7.20.3 - '@babel/types': 7.20.2 + '@babel/parser': 7.22.5 + '@babel/types': 7.22.5 '@types/babel__generator': 7.6.4 '@types/babel__template': 7.4.1 - '@types/babel__traverse': 7.18.2 + '@types/babel__traverse': 7.20.1 dev: true /@types/babel__generator/7.6.4: resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==} dependencies: - '@babel/types': 7.20.2 + '@babel/types': 7.22.5 dev: true /@types/babel__template/7.4.1: resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} dependencies: - '@babel/parser': 7.20.3 - '@babel/types': 7.20.2 + '@babel/parser': 7.22.5 + '@babel/types': 7.22.5 dev: true - /@types/babel__traverse/7.18.2: - resolution: {integrity: sha512-FcFaxOr2V5KZCviw1TnutEMVUVsGt4D2hP1TAfXZAMKuHYW3xQhe3jTxNPWutgCJ3/X1c5yX8ZoGVEItxKbwBg==} + /@types/babel__traverse/7.20.1: + resolution: {integrity: sha512-MitHFXnhtgwsGZWtT68URpOvLN4EREih1u3QtQiN4VdAxWKRVvGCSvw/Qth0M0Qq3pJpnGOu5JaM/ydK7OGbqg==} dependencies: - '@babel/types': 7.20.2 + '@babel/types': 7.22.5 dev: true - /@types/glob/8.0.0: - resolution: {integrity: sha512-l6NQsDDyQUVeoTynNpC9uRvCUint/gSUXQA2euwmTuWGvPY5LSDUu6tkCtJB2SvGQlJQzLaKqcGZP4//7EDveA==} + /@types/glob/8.1.0: + resolution: {integrity: sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w==} dependencies: '@types/minimatch': 5.1.2 - '@types/node': 18.11.9 + '@types/node': 18.16.18 dev: true /@types/globby/6.1.0: resolution: {integrity: sha512-j3XSDNoK4LO5T+ZviQD6PqfEjm07QFEacOTbJR3hnLWuWX0ZMLJl9oRPgj1PyrfGbXhfHFkksC9QZ9HFltJyrw==} dependencies: - '@types/glob': 8.0.0 + '@types/glob': 8.1.0 dev: true - /@types/graceful-fs/4.1.5: - resolution: {integrity: sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==} + /@types/graceful-fs/4.1.6: + resolution: {integrity: sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==} dependencies: - '@types/node': 18.11.9 + '@types/node': 18.16.18 dev: true /@types/ini/1.3.31: @@ -1106,7 +1104,7 @@ packages: /@types/is-ci/3.0.0: resolution: {integrity: sha512-Q0Op0hdWbYd1iahB+IFNQcWXFq4O0Q5MwQP7uN0souuQ4rPg1vEYcnIOfr1gY+M+6rc8FGoRaBO1mOOvL29sEQ==} dependencies: - ci-info: 3.6.1 + ci-info: 3.8.0 dev: true /@types/istanbul-lib-coverage/2.0.4: @@ -1129,15 +1127,15 @@ packages: resolution: {integrity: sha512-qDyqzbcyNgW2RgWbl606xCYQ+5fK9khOW5+Hl3wH7RggVES0dB6GcZvpmPs/XIty5qpu1xYCwpiK+iRkJ3xFBw==} dev: true - /@types/jest/29.2.3: - resolution: {integrity: sha512-6XwoEbmatfyoCjWRX7z0fKMmgYKe9+/HrviJ5k0X/tjJWHGAezZOfYaxqQKuzG/TvQyr+ktjm4jgbk0s4/oF2w==} + /@types/jest/29.5.2: + resolution: {integrity: sha512-mSoZVJF5YzGVCk+FsDxzDuH7s+SCkzrgKZzf0Z0T2WudhBUPoF6ktoTPC4R0ZoCPCV5xUvuU6ias5NvxcBcMMg==} dependencies: - expect: 29.3.1 - pretty-format: 29.3.1 + expect: 29.5.0 + pretty-format: 29.5.0 dev: true - /@types/lodash/4.14.189: - resolution: {integrity: sha512-kb9/98N6X8gyME9Cf7YaqIMvYGnBSWqEci6tiettE6iJWH1XdJz/PO8LB0GtLCG7x8dU3KWhZT+lA1a35127tA==} + /@types/lodash/4.14.195: + resolution: {integrity: sha512-Hwx9EUgdwf2GLarOjQp5ZH8ZmblzcbTBC2wtQWNKARBSxM9ezRIAUpeDTgoQRAFB0+8CNWXVA9+MaSOzOF3nPg==} dev: true /@types/minimatch/5.1.2: @@ -1152,8 +1150,8 @@ packages: resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} dev: true - /@types/node/18.11.9: - resolution: {integrity: sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==} + /@types/node/18.16.18: + resolution: {integrity: sha512-/aNaQZD0+iSBAGnvvN2Cx92HqE5sZCPZtx2TsK+4nvV23fFe09jVDvpArXr2j9DnYlzuU9WuoykDDc6wqvpNcw==} dev: true /@types/node/8.10.66: @@ -1164,8 +1162,8 @@ packages: resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} dev: true - /@types/prettier/2.7.1: - resolution: {integrity: sha512-ri0UmynRRvZiiUJdiz38MmIblKK+oH30MztdBVR95dv/Ubw6neWSb8u1XpRb72L4qsZOhz+L+z9JD40SJmfWow==} + /@types/prettier/2.7.3: + resolution: {integrity: sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==} dev: true /@types/q/1.5.5: @@ -1188,8 +1186,8 @@ packages: resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} dev: true - /@types/yargs/17.0.13: - resolution: {integrity: sha512-9sWaruZk2JGxIQU+IhI1fhPYRcQ0UuTNuKuCW9bR5fp7qi2Llf7WDzNa17Cy7TKnh3cdxDOiyTu6gaLS0eDatg==} + /@types/yargs/17.0.24: + resolution: {integrity: sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==} dependencies: '@types/yargs-parser': 21.0.0 dev: true @@ -1209,12 +1207,12 @@ packages: - supports-color dev: true - /agentkeepalive/4.2.1: - resolution: {integrity: sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==} + /agentkeepalive/4.3.0: + resolution: {integrity: sha512-7Epl1Blf4Sy37j4v9f9FjICCh4+KAQOyXgHEwlyBiAQLbhKdq/i2QQU3amQalS/wPhdPzDXPL5DMR5bkn+YeWg==} engines: {node: '>= 8.0.0'} dependencies: debug: 4.3.4 - depd: 1.1.2 + depd: 2.0.0 humanize-ms: 1.2.1 transitivePeerDependencies: - supports-color @@ -1280,8 +1278,8 @@ packages: resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} dev: true - /anymatch/3.1.2: - resolution: {integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==} + /anymatch/3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} dependencies: normalize-path: 3.0.0 @@ -1294,6 +1292,13 @@ packages: sprintf-js: 1.0.3 dev: true + /array-buffer-byte-length/1.0.0: + resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} + dependencies: + call-bind: 1.0.2 + is-array-buffer: 3.0.2 + dev: true + /array-find-index/1.0.2: resolution: {integrity: sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw==} engines: {node: '>=0.10.0'} @@ -1309,8 +1314,8 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.1.4 - es-abstract: 1.20.4 + define-properties: 1.2.0 + es-abstract: 1.21.2 es-shim-unscopables: 1.0.0 dev: true @@ -1319,8 +1324,8 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.1.4 - es-abstract: 1.20.4 + define-properties: 1.2.0 + es-abstract: 1.21.2 es-array-method-boxes-properly: 1.0.0 is-string: 1.0.7 dev: true @@ -1330,19 +1335,24 @@ packages: engines: {node: '>=0.10.0'} dev: true - /babel-jest/29.3.1_@babel+core@7.20.2: - resolution: {integrity: sha512-aard+xnMoxgjwV70t0L6wkW/3HQQtV+O0PEimxKgzNqCJnbYmroPojdP2tqKSOAt8QAKV/uSZU8851M7B5+fcA==} + /available-typed-arrays/1.0.5: + resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} + engines: {node: '>= 0.4'} + dev: true + + /babel-jest/29.5.0_@babel+core@7.22.5: + resolution: {integrity: sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@babel/core': ^7.8.0 dependencies: - '@babel/core': 7.20.2 - '@jest/transform': 29.3.1 - '@types/babel__core': 7.1.20 + '@babel/core': 7.22.5 + '@jest/transform': 29.5.0 + '@types/babel__core': 7.20.1 babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 29.2.0_@babel+core@7.20.2 + babel-preset-jest: 29.5.0_@babel+core@7.22.5 chalk: 4.1.2 - graceful-fs: 4.2.10 + graceful-fs: 4.2.11 slash: 3.0.0 transitivePeerDependencies: - supports-color @@ -1352,7 +1362,7 @@ packages: resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} engines: {node: '>=8'} dependencies: - '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-plugin-utils': 7.22.5 '@istanbuljs/load-nyc-config': 1.1.0 '@istanbuljs/schema': 0.1.3 istanbul-lib-instrument: 5.2.1 @@ -1361,45 +1371,45 @@ packages: - supports-color dev: true - /babel-plugin-jest-hoist/29.2.0: - resolution: {integrity: sha512-TnspP2WNiR3GLfCsUNHqeXw0RoQ2f9U5hQ5L3XFpwuO8htQmSrhh8qsB6vi5Yi8+kuynN1yjDjQsPfkebmB6ZA==} + /babel-plugin-jest-hoist/29.5.0: + resolution: {integrity: sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/template': 7.18.10 - '@babel/types': 7.20.2 - '@types/babel__core': 7.1.20 - '@types/babel__traverse': 7.18.2 + '@babel/template': 7.22.5 + '@babel/types': 7.22.5 + '@types/babel__core': 7.20.1 + '@types/babel__traverse': 7.20.1 dev: true - /babel-preset-current-node-syntax/1.0.1_@babel+core@7.20.2: + /babel-preset-current-node-syntax/1.0.1_@babel+core@7.22.5: resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.20.2 - '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.20.2 - '@babel/plugin-syntax-bigint': 7.8.3_@babel+core@7.20.2 - '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.20.2 - '@babel/plugin-syntax-import-meta': 7.10.4_@babel+core@7.20.2 - '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.20.2 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.20.2 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.20.2 - '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.20.2 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.20.2 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.20.2 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.20.2 - '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.20.2 - dev: true - - /babel-preset-jest/29.2.0_@babel+core@7.20.2: - resolution: {integrity: sha512-z9JmMJppMxNv8N7fNRHvhMg9cvIkMxQBXgFkane3yKVEvEOP+kB50lk8DFRvF9PGqbyXxlmebKWhuDORO8RgdA==} + '@babel/core': 7.22.5 + '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.22.5 + '@babel/plugin-syntax-bigint': 7.8.3_@babel+core@7.22.5 + '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.22.5 + '@babel/plugin-syntax-import-meta': 7.10.4_@babel+core@7.22.5 + '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.22.5 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.22.5 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.22.5 + '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.22.5 + '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.22.5 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.22.5 + '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.22.5 + '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.22.5 + dev: true + + /babel-preset-jest/29.5.0_@babel+core@7.22.5: + resolution: {integrity: sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.20.2 - babel-plugin-jest-hoist: 29.2.0 - babel-preset-current-node-syntax: 1.0.1_@babel+core@7.20.2 + '@babel/core': 7.22.5 + babel-plugin-jest-hoist: 29.5.0 + babel-preset-current-node-syntax: 1.0.1_@babel+core@7.22.5 dev: true /balanced-match/1.0.2: @@ -1446,21 +1456,21 @@ packages: fill-range: 7.0.1 dev: true - /breakword/1.0.5: - resolution: {integrity: sha512-ex5W9DoOQ/LUEU3PMdLs9ua/CYZl1678NUkKOdUSi8Aw5F1idieaiRURCBFJCwVcrD1J8Iy3vfWSloaMwO2qFg==} + /breakword/1.0.6: + resolution: {integrity: sha512-yjxDAYyK/pBvws9H4xKYpLDpYKEH6CzrBPAuXq3x18I+c/2MkVtT3qAr7Oloi6Dss9qNhPVueAAVU1CSeNDIXw==} dependencies: wcwidth: 1.0.1 dev: true - /browserslist/4.21.4: - resolution: {integrity: sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==} + /browserslist/4.21.9: + resolution: {integrity: sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001431 - electron-to-chromium: 1.4.284 - node-releases: 2.0.6 - update-browserslist-db: 1.0.10_browserslist@4.21.4 + caniuse-lite: 1.0.30001509 + electron-to-chromium: 1.4.445 + node-releases: 2.0.12 + update-browserslist-db: 1.0.11_browserslist@4.21.9 dev: true /bs-logger/0.2.6: @@ -1496,7 +1506,7 @@ packages: glob: 7.2.3 infer-owner: 1.0.4 lru-cache: 6.0.0 - minipass: 3.3.4 + minipass: 3.3.6 minipass-collect: 1.0.2 minipass-flush: 1.0.5 minipass-pipeline: 1.2.4 @@ -1505,7 +1515,7 @@ packages: promise-inflight: 1.0.1 rimraf: 3.0.2 ssri: 8.0.1 - tar: 6.1.12 + tar: 6.1.15 unique-filename: 1.1.1 transitivePeerDependencies: - bluebird @@ -1515,7 +1525,7 @@ packages: resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} dependencies: function-bind: 1.1.1 - get-intrinsic: 1.1.3 + get-intrinsic: 1.2.1 dev: true /callsites/3.1.0: @@ -1555,8 +1565,8 @@ packages: engines: {node: '>=10'} dev: true - /caniuse-lite/1.0.30001431: - resolution: {integrity: sha512-zBUoFU0ZcxpvSt9IU66dXVT/3ctO1cy4y9cscs1szkPlcWb6pasYM144GqrUygUbT+k7cmUCW61cvskjcv0enQ==} + /caniuse-lite/1.0.30001509: + resolution: {integrity: sha512-2uDDk+TRiTX5hMcUYT/7CSyzMZxjfGu0vAUjS2g0LSD8UoXOv0LtpH4LxGMemsiPq6LCVIUjNwVM0erkOkGCDA==} dev: true /chalk/2.4.2: @@ -1576,8 +1586,8 @@ packages: supports-color: 7.2.0 dev: true - /chalk/5.1.2: - resolution: {integrity: sha512-E5CkT4jWURs1Vy5qGJye+XwCkNj7Od3Af7CP6SujMetSMkLs8Do2RWJK5yx1wamHV/op8Rz+9rltjaTQWDnEFQ==} + /chalk/5.3.0: + resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} dev: true @@ -1595,13 +1605,13 @@ packages: engines: {node: '>=10'} dev: true - /ci-info/3.6.1: - resolution: {integrity: sha512-up5ggbaDqOqJ4UqLKZ2naVkyqSJQgJi5lwD6b6mM748ysrghDBX0bx/qJTUHzw7zu6Mq4gycviSF5hJnwceD8w==} + /ci-info/3.8.0: + resolution: {integrity: sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==} engines: {node: '>=8'} dev: true - /cjs-module-lexer/1.2.2: - resolution: {integrity: sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==} + /cjs-module-lexer/1.2.3: + resolution: {integrity: sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==} dev: true /clean-stack/1.3.0: @@ -1849,8 +1859,8 @@ packages: array-find-index: 1.0.2 dev: true - /data-uri-to-buffer/4.0.0: - resolution: {integrity: sha512-Vr3mLBA8qWmcuschSLAOogKgQ/Jwxulv3RNE4FXnYWRGujzrRWQI4m12fQqRkwX06C0KanhLr4hK+GydchZsaA==} + /data-uri-to-buffer/4.0.1: + resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} engines: {node: '>= 12'} dev: true @@ -1887,8 +1897,8 @@ packages: resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} dev: true - /deepmerge/4.2.2: - resolution: {integrity: sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==} + /deepmerge/4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} engines: {node: '>=0.10.0'} dev: true @@ -1898,17 +1908,17 @@ packages: clone: 1.0.4 dev: true - /define-properties/1.1.4: - resolution: {integrity: sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==} + /define-properties/1.2.0: + resolution: {integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==} engines: {node: '>= 0.4'} dependencies: has-property-descriptors: 1.0.0 object-keys: 1.1.1 dev: true - /depd/1.1.2: - resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} - engines: {node: '>= 0.6'} + /depd/2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} dev: true /detect-indent/6.1.0: @@ -1925,8 +1935,8 @@ packages: resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} dev: true - /diff-sequences/29.3.1: - resolution: {integrity: sha512-hlM3QR272NXCi4pq+N4Kok4kOp6EsgOM3ZSpJI7Da3UAs+Ttsi8MRmB6trM/lhyzUxGfOgnpkHtgqm5Q/CTcfQ==} + /diff-sequences/29.4.3: + resolution: {integrity: sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true @@ -1959,13 +1969,13 @@ packages: domelementtype: 1.3.1 dev: true - /dotenv/16.0.3: - resolution: {integrity: sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==} + /dotenv/16.3.1: + resolution: {integrity: sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==} engines: {node: '>=12'} dev: true - /electron-to-chromium/1.4.284: - resolution: {integrity: sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==} + /electron-to-chromium/1.4.445: + resolution: {integrity: sha512-++DB+9VK8SBJwC+X1zlMfJ1tMA3F0ipi39GdEp+x3cV2TyBihqAgad8cNMWtLDEkbH39nlDQP7PfGrDr3Dr7HA==} dev: true /emittery/0.13.1: @@ -2004,40 +2014,59 @@ packages: is-arrayish: 0.2.1 dev: true - /es-abstract/1.20.4: - resolution: {integrity: sha512-0UtvRN79eMe2L+UNEF1BwRe364sj/DXhQ/k5FmivgoSdpM90b8Jc0mDzKMGo7QS0BVbOP/bTwBKNnDc9rNzaPA==} + /es-abstract/1.21.2: + resolution: {integrity: sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==} engines: {node: '>= 0.4'} dependencies: + array-buffer-byte-length: 1.0.0 + available-typed-arrays: 1.0.5 call-bind: 1.0.2 + es-set-tostringtag: 2.0.1 es-to-primitive: 1.2.1 - function-bind: 1.1.1 function.prototype.name: 1.1.5 - get-intrinsic: 1.1.3 + get-intrinsic: 1.2.1 get-symbol-description: 1.0.0 + globalthis: 1.0.3 + gopd: 1.0.1 has: 1.0.3 has-property-descriptors: 1.0.0 + has-proto: 1.0.1 has-symbols: 1.0.3 - internal-slot: 1.0.3 + internal-slot: 1.0.5 + is-array-buffer: 3.0.2 is-callable: 1.2.7 is-negative-zero: 2.0.2 is-regex: 1.1.4 is-shared-array-buffer: 1.0.2 is-string: 1.0.7 + is-typed-array: 1.1.10 is-weakref: 1.0.2 - object-inspect: 1.12.2 + object-inspect: 1.12.3 object-keys: 1.1.1 object.assign: 4.1.4 - regexp.prototype.flags: 1.4.3 + regexp.prototype.flags: 1.5.0 safe-regex-test: 1.0.0 + string.prototype.trim: 1.2.7 string.prototype.trimend: 1.0.6 string.prototype.trimstart: 1.0.6 + typed-array-length: 1.0.4 unbox-primitive: 1.0.2 + which-typed-array: 1.1.9 dev: true /es-array-method-boxes-properly/1.0.0: resolution: {integrity: sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==} dev: true + /es-set-tostringtag/2.0.1: + resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.1 + has: 1.0.3 + has-tostringtag: 1.0.0 + dev: true + /es-shim-unscopables/1.0.0: resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} dependencies: @@ -2134,15 +2163,15 @@ packages: engines: {node: '>= 0.8.0'} dev: true - /expect/29.3.1: - resolution: {integrity: sha512-gGb1yTgU30Q0O/tQq+z30KBWv24ApkMgFUpvKBkyLUBL68Wv8dHdJxTBZFl/iT8K/bqDHvUYRH6IIN3rToopPA==} + /expect/29.5.0: + resolution: {integrity: sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/expect-utils': 29.3.1 - jest-get-type: 29.2.0 - jest-matcher-utils: 29.3.1 - jest-message-util: 29.3.1 - jest-util: 29.3.1 + '@jest/expect-utils': 29.5.0 + jest-get-type: 29.4.3 + jest-matcher-utils: 29.5.0 + jest-message-util: 29.5.0 + jest-util: 29.5.0 dev: true /extendable-error/0.1.7: @@ -2173,8 +2202,8 @@ packages: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} dev: true - /fastq/1.13.0: - resolution: {integrity: sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==} + /fastq/1.15.0: + resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} dependencies: reusify: 1.0.4 dev: true @@ -2231,6 +2260,12 @@ packages: pkg-dir: 4.2.0 dev: true + /for-each/0.3.3: + resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + dependencies: + is-callable: 1.2.7 + dev: true + /formdata-polyfill/4.0.10: resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} engines: {node: '>=12.20.0'} @@ -2242,7 +2277,7 @@ packages: resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} engines: {node: '>=6 <7 || >=8'} dependencies: - graceful-fs: 4.2.10 + graceful-fs: 4.2.11 jsonfile: 4.0.0 universalify: 0.1.2 dev: true @@ -2251,7 +2286,7 @@ packages: resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} engines: {node: '>=6 <7 || >=8'} dependencies: - graceful-fs: 4.2.10 + graceful-fs: 4.2.11 jsonfile: 4.0.0 universalify: 0.1.2 dev: true @@ -2260,7 +2295,7 @@ packages: resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} engines: {node: '>= 8'} dependencies: - minipass: 3.3.4 + minipass: 3.3.6 dev: true /fs.realpath/1.0.0: @@ -2284,8 +2319,8 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.1.4 - es-abstract: 1.20.4 + define-properties: 1.2.0 + es-abstract: 1.21.2 functions-have-names: 1.2.3 dev: true @@ -2303,11 +2338,12 @@ packages: engines: {node: 6.* || 8.* || >= 10.*} dev: true - /get-intrinsic/1.1.3: - resolution: {integrity: sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==} + /get-intrinsic/1.2.1: + resolution: {integrity: sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==} dependencies: function-bind: 1.1.1 has: 1.0.3 + has-proto: 1.0.1 has-symbols: 1.0.3 dev: true @@ -2341,7 +2377,7 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - get-intrinsic: 1.1.3 + get-intrinsic: 1.2.1 dev: true /glob-parent/5.1.2: @@ -2367,6 +2403,13 @@ packages: engines: {node: '>=4'} dev: true + /globalthis/1.0.3: + resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} + engines: {node: '>= 0.4'} + dependencies: + define-properties: 1.2.0 + dev: true + /globby/11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} engines: {node: '>=10'} @@ -2374,13 +2417,19 @@ packages: array-union: 2.1.0 dir-glob: 3.0.1 fast-glob: 3.2.12 - ignore: 5.2.0 + ignore: 5.2.4 merge2: 1.4.1 slash: 3.0.0 dev: true - /graceful-fs/4.2.10: - resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} + /gopd/1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + dependencies: + get-intrinsic: 1.2.1 + dev: true + + /graceful-fs/4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} dev: true /grapheme-splitter/1.0.4: @@ -2414,7 +2463,12 @@ packages: /has-property-descriptors/1.0.0: resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} dependencies: - get-intrinsic: 1.1.3 + get-intrinsic: 1.2.1 + dev: true + + /has-proto/1.0.1: + resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} + engines: {node: '>= 0.4'} dev: true /has-symbols/1.0.3: @@ -2460,8 +2514,8 @@ packages: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} dev: true - /http-cache-semantics/4.1.0: - resolution: {integrity: sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==} + /http-cache-semantics/4.1.1: + resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} dev: true /http-proxy-agent/4.0.1: @@ -2519,8 +2573,8 @@ packages: safer-buffer: 2.1.2 dev: true - /ignore/5.2.0: - resolution: {integrity: sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==} + /ignore/5.2.4: + resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} engines: {node: '>= 4'} dev: true @@ -2574,11 +2628,11 @@ packages: resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} dev: true - /internal-slot/1.0.3: - resolution: {integrity: sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==} + /internal-slot/1.0.5: + resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==} engines: {node: '>= 0.4'} dependencies: - get-intrinsic: 1.1.3 + get-intrinsic: 1.2.1 has: 1.0.3 side-channel: 1.0.4 dev: true @@ -2587,6 +2641,14 @@ packages: resolution: {integrity: sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==} dev: true + /is-array-buffer/3.0.2: + resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.1 + is-typed-array: 1.1.10 + dev: true + /is-arrayish/0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} dev: true @@ -2618,11 +2680,11 @@ packages: resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} hasBin: true dependencies: - ci-info: 3.6.1 + ci-info: 3.8.0 dev: true - /is-core-module/2.11.0: - resolution: {integrity: sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==} + /is-core-module/2.12.1: + resolution: {integrity: sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==} dependencies: has: 1.0.3 dev: true @@ -2737,6 +2799,17 @@ packages: has-symbols: 1.0.3 dev: true + /is-typed-array/1.1.10: + resolution: {integrity: sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.5 + call-bind: 1.0.2 + for-each: 0.3.3 + gopd: 1.0.1 + has-tostringtag: 1.0.0 + dev: true + /is-utf8/0.2.1: resolution: {integrity: sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==} dev: true @@ -2756,6 +2829,10 @@ packages: resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} dev: true + /isarray/2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + dev: true + /isexe/2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} dev: true @@ -2769,8 +2846,8 @@ packages: resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} engines: {node: '>=8'} dependencies: - '@babel/core': 7.20.2 - '@babel/parser': 7.20.3 + '@babel/core': 7.22.5 + '@babel/parser': 7.22.5 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.0 semver: 6.3.0 @@ -2806,43 +2883,44 @@ packages: istanbul-lib-report: 3.0.0 dev: true - /jest-changed-files/29.2.0: - resolution: {integrity: sha512-qPVmLLyBmvF5HJrY7krDisx6Voi8DmlV3GZYX0aFNbaQsZeoz1hfxcCMbqDGuQCxU1dJy9eYc2xscE8QrCCYaA==} + /jest-changed-files/29.5.0: + resolution: {integrity: sha512-IFG34IUMUaNBIxjQXF/iu7g6EcdMrGRRxaUSw92I/2g2YC6vCdTltl4nHvt7Ci5nSJwXIkCu8Ka1DKF+X7Z1Ag==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: execa: 5.1.1 p-limit: 3.1.0 dev: true - /jest-circus/29.3.1: - resolution: {integrity: sha512-wpr26sEvwb3qQQbdlmei+gzp6yoSSoSL6GsLPxnuayZSMrSd5Ka7IjAvatpIernBvT2+Ic6RLTg+jSebScmasg==} + /jest-circus/29.5.0: + resolution: {integrity: sha512-gq/ongqeQKAplVxqJmbeUOJJKkW3dDNPY8PjhJ5G0lBRvu0e3EWGxGy5cI4LAGA7gV2UHCtWBI4EMXK8c9nQKA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/environment': 29.3.1 - '@jest/expect': 29.3.1 - '@jest/test-result': 29.3.1 - '@jest/types': 29.3.1 - '@types/node': 18.11.9 + '@jest/environment': 29.5.0 + '@jest/expect': 29.5.0 + '@jest/test-result': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 18.16.18 chalk: 4.1.2 co: 4.6.0 dedent: 0.7.0 is-generator-fn: 2.1.0 - jest-each: 29.3.1 - jest-matcher-utils: 29.3.1 - jest-message-util: 29.3.1 - jest-runtime: 29.3.1 - jest-snapshot: 29.3.1 - jest-util: 29.3.1 + jest-each: 29.5.0 + jest-matcher-utils: 29.5.0 + jest-message-util: 29.5.0 + jest-runtime: 29.5.0 + jest-snapshot: 29.5.0 + jest-util: 29.5.0 p-limit: 3.1.0 - pretty-format: 29.3.1 + pretty-format: 29.5.0 + pure-rand: 6.0.2 slash: 3.0.0 stack-utils: 2.0.6 transitivePeerDependencies: - supports-color dev: true - /jest-cli/29.3.1_@types+node@18.11.9: - resolution: {integrity: sha512-TO/ewvwyvPOiBBuWZ0gm04z3WWP8TIK8acgPzE4IxgsLKQgb377NYGrQLc3Wl/7ndWzIH2CDNNsUjGxwLL43VQ==} + /jest-cli/29.5.0_@types+node@18.16.18: + resolution: {integrity: sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true peerDependencies: @@ -2851,26 +2929,26 @@ packages: node-notifier: optional: true dependencies: - '@jest/core': 29.3.1 - '@jest/test-result': 29.3.1 - '@jest/types': 29.3.1 + '@jest/core': 29.5.0 + '@jest/test-result': 29.5.0 + '@jest/types': 29.5.0 chalk: 4.1.2 exit: 0.1.2 - graceful-fs: 4.2.10 + graceful-fs: 4.2.11 import-local: 3.1.0 - jest-config: 29.3.1_@types+node@18.11.9 - jest-util: 29.3.1 - jest-validate: 29.3.1 + jest-config: 29.5.0_@types+node@18.16.18 + jest-util: 29.5.0 + jest-validate: 29.5.0 prompts: 2.4.2 - yargs: 17.6.2 + yargs: 17.7.2 transitivePeerDependencies: - '@types/node' - supports-color - ts-node dev: true - /jest-config/29.3.1_@types+node@18.11.9: - resolution: {integrity: sha512-y0tFHdj2WnTEhxmGUK1T7fgLen7YK4RtfvpLFBXfQkh2eMJAQq24Vx9472lvn5wg0MAO6B+iPfJfzdR9hJYalg==} + /jest-config/29.5.0_@types+node@18.16.18: + resolution: {integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@types/node': '*' @@ -2881,140 +2959,140 @@ packages: ts-node: optional: true dependencies: - '@babel/core': 7.20.2 - '@jest/test-sequencer': 29.3.1 - '@jest/types': 29.3.1 - '@types/node': 18.11.9 - babel-jest: 29.3.1_@babel+core@7.20.2 + '@babel/core': 7.22.5 + '@jest/test-sequencer': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 18.16.18 + babel-jest: 29.5.0_@babel+core@7.22.5 chalk: 4.1.2 - ci-info: 3.6.1 - deepmerge: 4.2.2 + ci-info: 3.8.0 + deepmerge: 4.3.1 glob: 7.2.3 - graceful-fs: 4.2.10 - jest-circus: 29.3.1 - jest-environment-node: 29.3.1 - jest-get-type: 29.2.0 - jest-regex-util: 29.2.0 - jest-resolve: 29.3.1 - jest-runner: 29.3.1 - jest-util: 29.3.1 - jest-validate: 29.3.1 + graceful-fs: 4.2.11 + jest-circus: 29.5.0 + jest-environment-node: 29.5.0 + jest-get-type: 29.4.3 + jest-regex-util: 29.4.3 + jest-resolve: 29.5.0 + jest-runner: 29.5.0 + jest-util: 29.5.0 + jest-validate: 29.5.0 micromatch: 4.0.5 parse-json: 5.2.0 - pretty-format: 29.3.1 + pretty-format: 29.5.0 slash: 3.0.0 strip-json-comments: 3.1.1 transitivePeerDependencies: - supports-color dev: true - /jest-diff/29.3.1: - resolution: {integrity: sha512-vU8vyiO7568tmin2lA3r2DP8oRvzhvRcD4DjpXc6uGveQodyk7CKLhQlCSiwgx3g0pFaE88/KLZ0yaTWMc4Uiw==} + /jest-diff/29.5.0: + resolution: {integrity: sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: chalk: 4.1.2 - diff-sequences: 29.3.1 - jest-get-type: 29.2.0 - pretty-format: 29.3.1 + diff-sequences: 29.4.3 + jest-get-type: 29.4.3 + pretty-format: 29.5.0 dev: true - /jest-docblock/29.2.0: - resolution: {integrity: sha512-bkxUsxTgWQGbXV5IENmfiIuqZhJcyvF7tU4zJ/7ioTutdz4ToB5Yx6JOFBpgI+TphRY4lhOyCWGNH/QFQh5T6A==} + /jest-docblock/29.4.3: + resolution: {integrity: sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: detect-newline: 3.1.0 dev: true - /jest-each/29.3.1: - resolution: {integrity: sha512-qrZH7PmFB9rEzCSl00BWjZYuS1BSOH8lLuC0azQE9lQrAx3PWGKHTDudQiOSwIy5dGAJh7KA0ScYlCP7JxvFYA==} + /jest-each/29.5.0: + resolution: {integrity: sha512-HM5kIJ1BTnVt+DQZ2ALp3rzXEl+g726csObrW/jpEGl+CDSSQpOJJX2KE/vEg8cxcMXdyEPu6U4QX5eruQv5hA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.3.1 + '@jest/types': 29.5.0 chalk: 4.1.2 - jest-get-type: 29.2.0 - jest-util: 29.3.1 - pretty-format: 29.3.1 + jest-get-type: 29.4.3 + jest-util: 29.5.0 + pretty-format: 29.5.0 dev: true - /jest-environment-node/29.3.1: - resolution: {integrity: sha512-xm2THL18Xf5sIHoU7OThBPtuH6Lerd+Y1NLYiZJlkE3hbE+7N7r8uvHIl/FkZ5ymKXJe/11SQuf3fv4v6rUMag==} + /jest-environment-node/29.5.0: + resolution: {integrity: sha512-ExxuIK/+yQ+6PRGaHkKewYtg6hto2uGCgvKdb2nfJfKXgZ17DfXjvbZ+jA1Qt9A8EQSfPnt5FKIfnOO3u1h9qw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/environment': 29.3.1 - '@jest/fake-timers': 29.3.1 - '@jest/types': 29.3.1 - '@types/node': 18.11.9 - jest-mock: 29.3.1 - jest-util: 29.3.1 + '@jest/environment': 29.5.0 + '@jest/fake-timers': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 18.16.18 + jest-mock: 29.5.0 + jest-util: 29.5.0 dev: true - /jest-get-type/29.2.0: - resolution: {integrity: sha512-uXNJlg8hKFEnDgFsrCjznB+sTxdkuqiCL6zMgA75qEbAJjJYTs9XPrvDctrEig2GDow22T/LvHgO57iJhXB/UA==} + /jest-get-type/29.4.3: + resolution: {integrity: sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true - /jest-haste-map/29.3.1: - resolution: {integrity: sha512-/FFtvoG1xjbbPXQLFef+WSU4yrc0fc0Dds6aRPBojUid7qlPqZvxdUBA03HW0fnVHXVCnCdkuoghYItKNzc/0A==} + /jest-haste-map/29.5.0: + resolution: {integrity: sha512-IspOPnnBro8YfVYSw6yDRKh/TiCdRngjxeacCps1cQ9cgVN6+10JUcuJ1EabrgYLOATsIAigxA0rLR9x/YlrSA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.3.1 - '@types/graceful-fs': 4.1.5 - '@types/node': 18.11.9 - anymatch: 3.1.2 + '@jest/types': 29.5.0 + '@types/graceful-fs': 4.1.6 + '@types/node': 18.16.18 + anymatch: 3.1.3 fb-watchman: 2.0.2 - graceful-fs: 4.2.10 - jest-regex-util: 29.2.0 - jest-util: 29.3.1 - jest-worker: 29.3.1 + graceful-fs: 4.2.11 + jest-regex-util: 29.4.3 + jest-util: 29.5.0 + jest-worker: 29.5.0 micromatch: 4.0.5 walker: 1.0.8 optionalDependencies: fsevents: 2.3.2 dev: true - /jest-leak-detector/29.3.1: - resolution: {integrity: sha512-3DA/VVXj4zFOPagGkuqHnSQf1GZBmmlagpguxEERO6Pla2g84Q1MaVIB3YMxgUaFIaYag8ZnTyQgiZ35YEqAQA==} + /jest-leak-detector/29.5.0: + resolution: {integrity: sha512-u9YdeeVnghBUtpN5mVxjID7KbkKE1QU4f6uUwuxiY0vYRi9BUCLKlPEZfDGR67ofdFmDz9oPAy2G92Ujrntmow==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - jest-get-type: 29.2.0 - pretty-format: 29.3.1 + jest-get-type: 29.4.3 + pretty-format: 29.5.0 dev: true - /jest-matcher-utils/29.3.1: - resolution: {integrity: sha512-fkRMZUAScup3txIKfMe3AIZZmPEjWEdsPJFK3AIy5qRohWqQFg1qrmKfYXR9qEkNc7OdAu2N4KPHibEmy4HPeQ==} + /jest-matcher-utils/29.5.0: + resolution: {integrity: sha512-lecRtgm/rjIK0CQ7LPQwzCs2VwW6WAahA55YBuI+xqmhm7LAaxokSB8C97yJeYyT+HvQkH741StzpU41wohhWw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: chalk: 4.1.2 - jest-diff: 29.3.1 - jest-get-type: 29.2.0 - pretty-format: 29.3.1 + jest-diff: 29.5.0 + jest-get-type: 29.4.3 + pretty-format: 29.5.0 dev: true - /jest-message-util/29.3.1: - resolution: {integrity: sha512-lMJTbgNcDm5z+6KDxWtqOFWlGQxD6XaYwBqHR8kmpkP+WWWG90I35kdtQHY67Ay5CSuydkTBbJG+tH9JShFCyA==} + /jest-message-util/29.5.0: + resolution: {integrity: sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/code-frame': 7.18.6 - '@jest/types': 29.3.1 + '@babel/code-frame': 7.22.5 + '@jest/types': 29.5.0 '@types/stack-utils': 2.0.1 chalk: 4.1.2 - graceful-fs: 4.2.10 + graceful-fs: 4.2.11 micromatch: 4.0.5 - pretty-format: 29.3.1 + pretty-format: 29.5.0 slash: 3.0.0 stack-utils: 2.0.6 dev: true - /jest-mock/29.3.1: - resolution: {integrity: sha512-H8/qFDtDVMFvFP4X8NuOT3XRDzOUTz+FeACjufHzsOIBAxivLqkB1PoLCaJx9iPPQ8dZThHPp/G3WRWyMgA3JA==} + /jest-mock/29.5.0: + resolution: {integrity: sha512-GqOzvdWDE4fAV2bWQLQCkujxYWL7RxjCnj71b5VhDAGOevB3qj3Ovg26A5NI84ZpODxyzaozXLOh2NCgkbvyaw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.3.1 - '@types/node': 18.11.9 - jest-util: 29.3.1 + '@jest/types': 29.5.0 + '@types/node': 18.16.18 + jest-util: 29.5.0 dev: true - /jest-pnp-resolver/1.2.3_jest-resolve@29.3.1: + /jest-pnp-resolver/1.2.3_jest-resolve@29.5.0: resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} engines: {node: '>=6'} peerDependencies: @@ -3023,180 +3101,179 @@ packages: jest-resolve: optional: true dependencies: - jest-resolve: 29.3.1 + jest-resolve: 29.5.0 dev: true - /jest-regex-util/29.2.0: - resolution: {integrity: sha512-6yXn0kg2JXzH30cr2NlThF+70iuO/3irbaB4mh5WyqNIvLLP+B6sFdluO1/1RJmslyh/f9osnefECflHvTbwVA==} + /jest-regex-util/29.4.3: + resolution: {integrity: sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true - /jest-resolve-dependencies/29.3.1: - resolution: {integrity: sha512-Vk0cYq0byRw2WluNmNWGqPeRnZ3p3hHmjJMp2dyyZeYIfiBskwq4rpiuGFR6QGAdbj58WC7HN4hQHjf2mpvrLA==} + /jest-resolve-dependencies/29.5.0: + resolution: {integrity: sha512-sjV3GFr0hDJMBpYeUuGduP+YeCRbd7S/ck6IvL3kQ9cpySYKqcqhdLLC2rFwrcL7tz5vYibomBrsFYWkIGGjOg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - jest-regex-util: 29.2.0 - jest-snapshot: 29.3.1 + jest-regex-util: 29.4.3 + jest-snapshot: 29.5.0 transitivePeerDependencies: - supports-color dev: true - /jest-resolve/29.3.1: - resolution: {integrity: sha512-amXJgH/Ng712w3Uz5gqzFBBjxV8WFLSmNjoreBGMqxgCz5cH7swmBZzgBaCIOsvb0NbpJ0vgaSFdJqMdT+rADw==} + /jest-resolve/29.5.0: + resolution: {integrity: sha512-1TzxJ37FQq7J10jPtQjcc+MkCkE3GBpBecsSUWJ0qZNJpmg6m0D9/7II03yJulm3H/fvVjgqLh/k2eYg+ui52w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: chalk: 4.1.2 - graceful-fs: 4.2.10 - jest-haste-map: 29.3.1 - jest-pnp-resolver: 1.2.3_jest-resolve@29.3.1 - jest-util: 29.3.1 - jest-validate: 29.3.1 - resolve: 1.22.1 - resolve.exports: 1.1.0 + graceful-fs: 4.2.11 + jest-haste-map: 29.5.0 + jest-pnp-resolver: 1.2.3_jest-resolve@29.5.0 + jest-util: 29.5.0 + jest-validate: 29.5.0 + resolve: 1.22.2 + resolve.exports: 2.0.2 slash: 3.0.0 dev: true - /jest-runner/29.3.1: - resolution: {integrity: sha512-oFvcwRNrKMtE6u9+AQPMATxFcTySyKfLhvso7Sdk/rNpbhg4g2GAGCopiInk1OP4q6gz3n6MajW4+fnHWlU3bA==} + /jest-runner/29.5.0: + resolution: {integrity: sha512-m7b6ypERhFghJsslMLhydaXBiLf7+jXy8FwGRHO3BGV1mcQpPbwiqiKUR2zU2NJuNeMenJmlFZCsIqzJCTeGLQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/console': 29.3.1 - '@jest/environment': 29.3.1 - '@jest/test-result': 29.3.1 - '@jest/transform': 29.3.1 - '@jest/types': 29.3.1 - '@types/node': 18.11.9 + '@jest/console': 29.5.0 + '@jest/environment': 29.5.0 + '@jest/test-result': 29.5.0 + '@jest/transform': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 18.16.18 chalk: 4.1.2 emittery: 0.13.1 - graceful-fs: 4.2.10 - jest-docblock: 29.2.0 - jest-environment-node: 29.3.1 - jest-haste-map: 29.3.1 - jest-leak-detector: 29.3.1 - jest-message-util: 29.3.1 - jest-resolve: 29.3.1 - jest-runtime: 29.3.1 - jest-util: 29.3.1 - jest-watcher: 29.3.1 - jest-worker: 29.3.1 + graceful-fs: 4.2.11 + jest-docblock: 29.4.3 + jest-environment-node: 29.5.0 + jest-haste-map: 29.5.0 + jest-leak-detector: 29.5.0 + jest-message-util: 29.5.0 + jest-resolve: 29.5.0 + jest-runtime: 29.5.0 + jest-util: 29.5.0 + jest-watcher: 29.5.0 + jest-worker: 29.5.0 p-limit: 3.1.0 source-map-support: 0.5.13 transitivePeerDependencies: - supports-color dev: true - /jest-runtime/29.3.1: - resolution: {integrity: sha512-jLzkIxIqXwBEOZx7wx9OO9sxoZmgT2NhmQKzHQm1xwR1kNW/dn0OjxR424VwHHf1SPN6Qwlb5pp1oGCeFTQ62A==} + /jest-runtime/29.5.0: + resolution: {integrity: sha512-1Hr6Hh7bAgXQP+pln3homOiEZtCDZFqwmle7Ew2j8OlbkIu6uE3Y/etJQG8MLQs3Zy90xrp2C0BRrtPHG4zryw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/environment': 29.3.1 - '@jest/fake-timers': 29.3.1 - '@jest/globals': 29.3.1 - '@jest/source-map': 29.2.0 - '@jest/test-result': 29.3.1 - '@jest/transform': 29.3.1 - '@jest/types': 29.3.1 - '@types/node': 18.11.9 + '@jest/environment': 29.5.0 + '@jest/fake-timers': 29.5.0 + '@jest/globals': 29.5.0 + '@jest/source-map': 29.4.3 + '@jest/test-result': 29.5.0 + '@jest/transform': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 18.16.18 chalk: 4.1.2 - cjs-module-lexer: 1.2.2 + cjs-module-lexer: 1.2.3 collect-v8-coverage: 1.0.1 glob: 7.2.3 - graceful-fs: 4.2.10 - jest-haste-map: 29.3.1 - jest-message-util: 29.3.1 - jest-mock: 29.3.1 - jest-regex-util: 29.2.0 - jest-resolve: 29.3.1 - jest-snapshot: 29.3.1 - jest-util: 29.3.1 + graceful-fs: 4.2.11 + jest-haste-map: 29.5.0 + jest-message-util: 29.5.0 + jest-mock: 29.5.0 + jest-regex-util: 29.4.3 + jest-resolve: 29.5.0 + jest-snapshot: 29.5.0 + jest-util: 29.5.0 slash: 3.0.0 strip-bom: 4.0.0 transitivePeerDependencies: - supports-color dev: true - /jest-snapshot/29.3.1: - resolution: {integrity: sha512-+3JOc+s28upYLI2OJM4PWRGK9AgpsMs/ekNryUV0yMBClT9B1DF2u2qay8YxcQd338PPYSFNb0lsar1B49sLDA==} + /jest-snapshot/29.5.0: + resolution: {integrity: sha512-x7Wolra5V0tt3wRs3/ts3S6ciSQVypgGQlJpz2rsdQYoUKxMxPNaoHMGJN6qAuPJqS+2iQ1ZUn5kl7HCyls84g==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/core': 7.20.2 - '@babel/generator': 7.20.4 - '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.20.2 - '@babel/plugin-syntax-typescript': 7.20.0_@babel+core@7.20.2 - '@babel/traverse': 7.20.1 - '@babel/types': 7.20.2 - '@jest/expect-utils': 29.3.1 - '@jest/transform': 29.3.1 - '@jest/types': 29.3.1 - '@types/babel__traverse': 7.18.2 - '@types/prettier': 2.7.1 - babel-preset-current-node-syntax: 1.0.1_@babel+core@7.20.2 + '@babel/core': 7.22.5 + '@babel/generator': 7.22.5 + '@babel/plugin-syntax-jsx': 7.22.5_@babel+core@7.22.5 + '@babel/plugin-syntax-typescript': 7.22.5_@babel+core@7.22.5 + '@babel/traverse': 7.22.5 + '@babel/types': 7.22.5 + '@jest/expect-utils': 29.5.0 + '@jest/transform': 29.5.0 + '@jest/types': 29.5.0 + '@types/babel__traverse': 7.20.1 + '@types/prettier': 2.7.3 + babel-preset-current-node-syntax: 1.0.1_@babel+core@7.22.5 chalk: 4.1.2 - expect: 29.3.1 - graceful-fs: 4.2.10 - jest-diff: 29.3.1 - jest-get-type: 29.2.0 - jest-haste-map: 29.3.1 - jest-matcher-utils: 29.3.1 - jest-message-util: 29.3.1 - jest-util: 29.3.1 + expect: 29.5.0 + graceful-fs: 4.2.11 + jest-diff: 29.5.0 + jest-get-type: 29.4.3 + jest-matcher-utils: 29.5.0 + jest-message-util: 29.5.0 + jest-util: 29.5.0 natural-compare: 1.4.0 - pretty-format: 29.3.1 - semver: 7.3.8 + pretty-format: 29.5.0 + semver: 7.5.3 transitivePeerDependencies: - supports-color dev: true - /jest-util/29.3.1: - resolution: {integrity: sha512-7YOVZaiX7RJLv76ZfHt4nbNEzzTRiMW/IiOG7ZOKmTXmoGBxUDefgMAxQubu6WPVqP5zSzAdZG0FfLcC7HOIFQ==} + /jest-util/29.5.0: + resolution: {integrity: sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.3.1 - '@types/node': 18.11.9 + '@jest/types': 29.5.0 + '@types/node': 18.16.18 chalk: 4.1.2 - ci-info: 3.6.1 - graceful-fs: 4.2.10 + ci-info: 3.8.0 + graceful-fs: 4.2.11 picomatch: 2.3.1 dev: true - /jest-validate/29.3.1: - resolution: {integrity: sha512-N9Lr3oYR2Mpzuelp1F8negJR3YE+L1ebk1rYA5qYo9TTY3f9OWdptLoNSPP9itOCBIRBqjt/S5XHlzYglLN67g==} + /jest-validate/29.5.0: + resolution: {integrity: sha512-pC26etNIi+y3HV8A+tUGr/lph9B18GnzSRAkPaaZJIE1eFdiYm6/CewuiJQ8/RlfHd1u/8Ioi8/sJ+CmbA+zAQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.3.1 + '@jest/types': 29.5.0 camelcase: 6.3.0 chalk: 4.1.2 - jest-get-type: 29.2.0 + jest-get-type: 29.4.3 leven: 3.1.0 - pretty-format: 29.3.1 + pretty-format: 29.5.0 dev: true - /jest-watcher/29.3.1: - resolution: {integrity: sha512-RspXG2BQFDsZSRKGCT/NiNa8RkQ1iKAjrO0//soTMWx/QUt+OcxMqMSBxz23PYGqUuWm2+m2mNNsmj0eIoOaFg==} + /jest-watcher/29.5.0: + resolution: {integrity: sha512-KmTojKcapuqYrKDpRwfqcQ3zjMlwu27SYext9pt4GlF5FUgB+7XE1mcCnSm6a4uUpFyQIkb6ZhzZvHl+jiBCiA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/test-result': 29.3.1 - '@jest/types': 29.3.1 - '@types/node': 18.11.9 + '@jest/test-result': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 18.16.18 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 - jest-util: 29.3.1 + jest-util: 29.5.0 string-length: 4.0.2 dev: true - /jest-worker/29.3.1: - resolution: {integrity: sha512-lY4AnnmsEWeiXirAIA0c9SDPbuCBq8IYuDVL8PMm0MZ2PEs2yPvRA/J64QBXuZp7CYKrDM/rmNrc9/i3KJQncw==} + /jest-worker/29.5.0: + resolution: {integrity: sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@types/node': 18.11.9 - jest-util: 29.3.1 + '@types/node': 18.16.18 + jest-util: 29.5.0 merge-stream: 2.0.0 supports-color: 8.1.1 dev: true - /jest/29.3.1_@types+node@18.11.9: - resolution: {integrity: sha512-6iWfL5DTT0Np6UYs/y5Niu7WIfNv/wRTtN5RSXt2DIEft3dx3zPuw/3WJQBCJfmEzvDiEKwoqMbGD9n49+qLSA==} + /jest/29.5.0_@types+node@18.16.18: + resolution: {integrity: sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true peerDependencies: @@ -3205,10 +3282,10 @@ packages: node-notifier: optional: true dependencies: - '@jest/core': 29.3.1 - '@jest/types': 29.3.1 + '@jest/core': 29.5.0 + '@jest/types': 29.5.0 import-local: 3.1.0 - jest-cli: 29.3.1_@types+node@18.11.9 + jest-cli: 29.5.0_@types+node@18.16.18 transitivePeerDependencies: - '@types/node' - supports-color @@ -3237,8 +3314,8 @@ packages: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} dev: true - /json5/2.2.1: - resolution: {integrity: sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==} + /json5/2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} engines: {node: '>=6'} hasBin: true dev: true @@ -3246,7 +3323,7 @@ packages: /jsonfile/4.0.0: resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} optionalDependencies: - graceful-fs: 4.2.10 + graceful-fs: 4.2.11 dev: true /kind-of/6.0.3: @@ -3276,7 +3353,7 @@ packages: make-fetch-happen: 9.1.0 p-map: 3.0.0 progress: 2.0.3 - yargs: 17.6.2 + yargs: 17.7.2 transitivePeerDependencies: - bluebird - supports-color @@ -3299,7 +3376,7 @@ packages: resolution: {integrity: sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==} engines: {node: '>=0.10.0'} dependencies: - graceful-fs: 4.2.10 + graceful-fs: 4.2.11 parse-json: 2.2.0 pify: 2.3.0 pinkie-promise: 2.0.1 @@ -3310,7 +3387,7 @@ packages: resolution: {integrity: sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==} engines: {node: '>=6'} dependencies: - graceful-fs: 4.2.10 + graceful-fs: 4.2.11 js-yaml: 3.14.1 pify: 4.0.1 strip-bom: 3.0.0 @@ -3364,6 +3441,12 @@ packages: yallist: 2.1.2 dev: true + /lru-cache/5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + dependencies: + yallist: 3.1.1 + dev: true + /lru-cache/6.0.0: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} engines: {node: '>=10'} @@ -3396,14 +3479,14 @@ packages: resolution: {integrity: sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==} engines: {node: '>= 10'} dependencies: - agentkeepalive: 4.2.1 + agentkeepalive: 4.3.0 cacache: 15.3.0 - http-cache-semantics: 4.1.0 + http-cache-semantics: 4.1.1 http-proxy-agent: 4.0.1 https-proxy-agent: 5.0.1 is-lambda: 1.0.1 lru-cache: 6.0.0 - minipass: 3.3.4 + minipass: 3.3.6 minipass-collect: 1.0.2 minipass-fetch: 1.4.1 minipass-flush: 1.0.5 @@ -3449,7 +3532,7 @@ packages: decamelize: 1.2.0 loud-rejection: 1.6.0 map-obj: 1.0.1 - minimist: 1.2.7 + minimist: 1.2.8 normalize-package-data: 2.5.0 object-assign: 4.1.1 read-pkg-up: 1.0.1 @@ -3521,22 +3604,22 @@ packages: kind-of: 6.0.3 dev: true - /minimist/1.2.7: - resolution: {integrity: sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==} + /minimist/1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} dev: true /minipass-collect/1.0.2: resolution: {integrity: sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==} engines: {node: '>= 8'} dependencies: - minipass: 3.3.4 + minipass: 3.3.6 dev: true /minipass-fetch/1.4.1: resolution: {integrity: sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==} engines: {node: '>=8'} dependencies: - minipass: 3.3.4 + minipass: 3.3.6 minipass-sized: 1.0.3 minizlib: 2.1.2 optionalDependencies: @@ -3547,40 +3630,45 @@ packages: resolution: {integrity: sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==} engines: {node: '>= 8'} dependencies: - minipass: 3.3.4 + minipass: 3.3.6 dev: true /minipass-pipeline/1.2.4: resolution: {integrity: sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==} engines: {node: '>=8'} dependencies: - minipass: 3.3.4 + minipass: 3.3.6 dev: true /minipass-sized/1.0.3: resolution: {integrity: sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==} engines: {node: '>=8'} dependencies: - minipass: 3.3.4 + minipass: 3.3.6 dev: true - /minipass/3.3.4: - resolution: {integrity: sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==} + /minipass/3.3.6: + resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} engines: {node: '>=8'} dependencies: yallist: 4.0.0 dev: true + /minipass/5.0.0: + resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} + engines: {node: '>=8'} + dev: true + /minizlib/2.1.2: resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} engines: {node: '>= 8'} dependencies: - minipass: 3.3.4 + minipass: 3.3.6 yallist: 4.0.0 dev: true - /mixme/0.5.4: - resolution: {integrity: sha512-3KYa4m4Vlqx98GPdOHghxSdNtTvcP8E0kkaJ5Dlh+h2DRzF7zpuVVcA8B0QpKd11YJeP9QQ7ASkKzOeu195Wzw==} + /mixme/0.5.9: + resolution: {integrity: sha512-VC5fg6ySUscaWUpI4gxCBTQMH2RdUpNrk+MsbpCYtIvf9SBJdiUey4qE7BXviJsJR4nDQxCZ+3yaYNW3guz/Pw==} engines: {node: '>= 8.0.0'} dev: true @@ -3588,7 +3676,7 @@ packages: resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} hasBin: true dependencies: - minimist: 1.2.7 + minimist: 1.2.8 dev: true /mkdirp/1.0.4: @@ -3634,8 +3722,8 @@ packages: is-stream: 1.1.0 dev: true - /node-fetch/2.6.7: - resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==} + /node-fetch/2.6.11: + resolution: {integrity: sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w==} engines: {node: 4.x || >=6.0.0} peerDependencies: encoding: ^0.1.0 @@ -3646,11 +3734,11 @@ packages: whatwg-url: 5.0.0 dev: true - /node-fetch/3.3.0: - resolution: {integrity: sha512-BKwRP/O0UvoMKp7GNdwPlObhYGB5DQqwhEDQlNKuoqwVYSxkSZCSbHjnFFmUEtwSKRPU4kNK8PbDYYitwaE3QA==} + /node-fetch/3.3.1: + resolution: {integrity: sha512-cRVc/kyto/7E5shrWca1Wsea4y6tL9iYJE5FBCius3JQfb/4P4I295PfhgbJQBLTx6lATE4z+wK0rPM4VS2uow==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: - data-uri-to-buffer: 4.0.0 + data-uri-to-buffer: 4.0.1 fetch-blob: 3.2.0 formdata-polyfill: 4.0.10 dev: true @@ -3659,15 +3747,15 @@ packages: resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} dev: true - /node-releases/2.0.6: - resolution: {integrity: sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==} + /node-releases/2.0.12: + resolution: {integrity: sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==} dev: true /normalize-package-data/2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} dependencies: hosted-git-info: 2.8.9 - resolve: 1.22.1 + resolve: 1.22.2 semver: 5.7.1 validate-npm-package-license: 3.0.4 dev: true @@ -3721,8 +3809,8 @@ packages: engines: {node: '>= 0.10.0'} dev: true - /object-inspect/1.12.2: - resolution: {integrity: sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==} + /object-inspect/1.12.3: + resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==} dev: true /object-keys/1.1.1: @@ -3735,19 +3823,20 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.1.4 + define-properties: 1.2.0 has-symbols: 1.0.3 object-keys: 1.1.1 dev: true - /object.getownpropertydescriptors/2.1.5: - resolution: {integrity: sha512-yDNzckpM6ntyQiGTik1fKV1DcVDRS+w8bvpWNCBanvH5LfRX9O8WTHqQzG4RZwRAM4I0oU7TV11Lj5v0g20ibw==} + /object.getownpropertydescriptors/2.1.6: + resolution: {integrity: sha512-lq+61g26E/BgHv0ZTFgRvi7NMEPuAxLkFU7rukXjc/AlwH4Am5xXVnIXy3un1bg/JPbXHrixRkK1itUzzPiIjQ==} engines: {node: '>= 0.8'} dependencies: array.prototype.reduce: 1.0.5 call-bind: 1.0.2 - define-properties: 1.1.4 - es-abstract: 1.20.4 + define-properties: 1.2.0 + es-abstract: 1.21.2 + safe-array-concat: 1.0.0 dev: true /object.values/1.1.6: @@ -3755,8 +3844,8 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.1.4 - es-abstract: 1.20.4 + define-properties: 1.2.0 + es-abstract: 1.21.2 dev: true /once/1.4.0: @@ -3863,7 +3952,7 @@ packages: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} dependencies: - '@babel/code-frame': 7.18.6 + '@babel/code-frame': 7.22.5 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 @@ -3928,7 +4017,7 @@ packages: resolution: {integrity: sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==} engines: {node: '>=0.10.0'} dependencies: - graceful-fs: 4.2.10 + graceful-fs: 4.2.11 pify: 2.3.0 pinkie-promise: 2.0.1 dev: true @@ -3969,8 +4058,8 @@ packages: engines: {node: '>=0.10.0'} dev: true - /pirates/4.0.5: - resolution: {integrity: sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==} + /pirates/4.0.6: + resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} engines: {node: '>= 6'} dev: true @@ -4005,11 +4094,11 @@ packages: hasBin: true dev: true - /pretty-format/29.3.1: - resolution: {integrity: sha512-FyLnmb1cYJV8biEIiRyzRFvs2lry7PPIvOqKVe1GCUEYg4YGmlx1qG9EJNMxArYm7piII4qb8UV1Pncq5dxmcg==} + /pretty-format/29.5.0: + resolution: {integrity: sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/schemas': 29.0.0 + '@jest/schemas': 29.4.3 ansi-styles: 5.2.0 react-is: 18.2.0 dev: true @@ -4067,12 +4156,16 @@ packages: resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} dev: true + /pure-rand/6.0.2: + resolution: {integrity: sha512-6Yg0ekpKICSjPswYOuC5sku/TSWaRYlA0qsXqJgM/d/4pLPHPuTxK7Nbf7jFKzAeedUhR8C7K9Uv63FBsSo8xQ==} + dev: true + /pv/1.0.1: resolution: {integrity: sha512-b+Okkpm5q5RMxdhPvP9gcZyH7PhlmcIdZblJh5fZjo8aw84bQ015m0oeMwVZOdCOLBxQZBLkz25NT74LwHzoAw==} hasBin: true dependencies: bytes: 3.1.2 - minimist: 1.2.7 + minimist: 1.2.8 progress-stream: 2.0.0 dev: true @@ -4159,14 +4252,14 @@ packages: resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} engines: {node: '>=6'} dependencies: - graceful-fs: 4.2.10 + graceful-fs: 4.2.11 js-yaml: 3.14.1 pify: 4.0.1 strip-bom: 3.0.0 dev: true - /readable-stream/2.3.7: - resolution: {integrity: sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==} + /readable-stream/2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} dependencies: core-util-is: 1.0.3 inherits: 2.0.4 @@ -4197,12 +4290,12 @@ packages: resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} dev: true - /regexp.prototype.flags/1.4.3: - resolution: {integrity: sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==} + /regexp.prototype.flags/1.5.0: + resolution: {integrity: sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.1.4 + define-properties: 1.2.0 functions-have-names: 1.2.3 dev: true @@ -4244,16 +4337,16 @@ packages: engines: {node: '>=8'} dev: true - /resolve.exports/1.1.0: - resolution: {integrity: sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==} + /resolve.exports/2.0.2: + resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==} engines: {node: '>=10'} dev: true - /resolve/1.22.1: - resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} + /resolve/1.22.2: + resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==} hasBin: true dependencies: - is-core-module: 2.11.0 + is-core-module: 2.12.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 dev: true @@ -4288,6 +4381,16 @@ packages: queue-microtask: 1.2.3 dev: true + /safe-array-concat/1.0.0: + resolution: {integrity: sha512-9dVEFruWIsnie89yym+xWTAYASdpw3CJV7Li/6zBewGf9z2i1j31rP6jnY0pHEO4QZh6N0K11bFjWmdR8UGdPQ==} + engines: {node: '>=0.4'} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.1 + has-symbols: 1.0.3 + isarray: 2.0.5 + dev: true + /safe-buffer/5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} dev: true @@ -4296,7 +4399,7 @@ packages: resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} dependencies: call-bind: 1.0.2 - get-intrinsic: 1.1.3 + get-intrinsic: 1.2.1 is-regex: 1.1.4 dev: true @@ -4325,8 +4428,8 @@ packages: hasBin: true dev: true - /semver/7.3.8: - resolution: {integrity: sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==} + /semver/7.5.3: + resolution: {integrity: sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==} engines: {node: '>=10'} hasBin: true dependencies: @@ -4369,8 +4472,8 @@ packages: resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} dependencies: call-bind: 1.0.2 - get-intrinsic: 1.1.3 - object-inspect: 1.12.2 + get-intrinsic: 1.2.1 + object-inspect: 1.12.3 dev: true /signal-exit/3.0.7: @@ -4403,7 +4506,7 @@ packages: hasBin: true dependencies: array.prototype.flat: 1.3.1 - breakword: 1.0.5 + breakword: 1.0.6 grapheme-splitter: 1.0.4 strip-ansi: 6.0.1 wcwidth: 1.0.1 @@ -4448,11 +4551,11 @@ packages: signal-exit: 3.0.7 dev: true - /spdx-correct/3.1.1: - resolution: {integrity: sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==} + /spdx-correct/3.2.0: + resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} dependencies: spdx-expression-parse: 3.0.1 - spdx-license-ids: 3.0.12 + spdx-license-ids: 3.0.13 dev: true /spdx-exceptions/2.3.0: @@ -4463,11 +4566,11 @@ packages: resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} dependencies: spdx-exceptions: 2.3.0 - spdx-license-ids: 3.0.12 + spdx-license-ids: 3.0.13 dev: true - /spdx-license-ids/3.0.12: - resolution: {integrity: sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==} + /spdx-license-ids/3.0.13: + resolution: {integrity: sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==} dev: true /speedometer/1.0.0: @@ -4482,7 +4585,7 @@ packages: resolution: {integrity: sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==} engines: {node: '>= 8'} dependencies: - minipass: 3.3.4 + minipass: 3.3.6 dev: true /stable/0.1.8: @@ -4500,7 +4603,7 @@ packages: /stream-transform/2.1.3: resolution: {integrity: sha512-9GHUiM5hMiCi6Y03jD2ARC1ettBXkQBoQAe7nJsPknnI0ow10aXjTnew8QtYQmLjzn974BnmWEAJgCY6ZP1DeQ==} dependencies: - mixme: 0.5.4 + mixme: 0.5.9 dev: true /string-length/4.0.2: @@ -4520,20 +4623,29 @@ packages: strip-ansi: 6.0.1 dev: true + /string.prototype.trim/1.2.7: + resolution: {integrity: sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.21.2 + dev: true + /string.prototype.trimend/1.0.6: resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==} dependencies: call-bind: 1.0.2 - define-properties: 1.1.4 - es-abstract: 1.20.4 + define-properties: 1.2.0 + es-abstract: 1.21.2 dev: true /string.prototype.trimstart/1.0.6: resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==} dependencies: call-bind: 1.0.2 - define-properties: 1.1.4 - es-abstract: 1.20.4 + define-properties: 1.2.0 + es-abstract: 1.21.2 dev: true /string_decoder/1.1.1: @@ -4691,13 +4803,13 @@ packages: resolution: {integrity: sha512-pQD+6Kief8nO5saFecplPWnV//FlSF+s7nIjgbLi+qJYd5L/3nrNUGMn6HmtG41mdkkWZXvTkOGlqWcFki3yEg==} dev: true - /tar/6.1.12: - resolution: {integrity: sha512-jU4TdemS31uABHd+Lt5WEYJuzn+TJTCBLljvIAHZOz6M9Os5pJ4dD+vRFLxPa/n3T0iEFzpi+0x1UfuDZYbRMw==} + /tar/6.1.15: + resolution: {integrity: sha512-/zKt9UyngnxIT/EAGYuxaMYgOIJiP81ab9ZfkILq4oNLPFX50qyYmu7jRj9qeXoxmJHjGlbH0+cm2uy1WCs10A==} engines: {node: '>=10'} dependencies: chownr: 2.0.0 fs-minipass: 2.1.0 - minipass: 3.3.4 + minipass: 5.0.0 minizlib: 2.1.2 mkdirp: 1.0.4 yallist: 4.0.0 @@ -4731,7 +4843,7 @@ packages: '@types/globby': 6.1.0 '@types/ini': 1.3.31 '@types/jest': 21.1.10 - '@types/lodash': 4.14.189 + '@types/lodash': 4.14.195 '@types/node': 8.10.66 aggregate-error: 1.0.0 bplist-parser: 0.1.1 @@ -4779,7 +4891,7 @@ packages: /through2/2.0.5: resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} dependencies: - readable-stream: 2.3.7 + readable-stream: 2.3.8 xtend: 4.0.2 dev: true @@ -4829,8 +4941,8 @@ packages: engines: {node: '>=6.10'} dev: true - /ts-jest/29.0.3_4f6uxrzmuwipl5rr3bcogf6k74: - resolution: {integrity: sha512-Ibygvmuyq1qp/z3yTh9QTwVVAbFdDy/+4BtIQR2sp6baF2SJU/8CKK/hhnGIDY2L90Az2jIqTwZPnN2p+BweiQ==} + /ts-jest/29.1.0_doipufordlnvh5g4adbwayvyvy: + resolution: {integrity: sha512-ZhNr7Z4PcYa+JjMl62ir+zPiNJfXJN6E8hSLnaUKhOgqcn8vb3e537cpkd0FuAfRK3sR1LSqM1MOhliXNgOFPA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true peerDependencies: @@ -4839,7 +4951,7 @@ packages: babel-jest: ^29.0.0 esbuild: '*' jest: ^29.0.0 - typescript: '>=4.3' + typescript: '>=4.3 <6' peerDependenciesMeta: '@babel/core': optional: true @@ -4852,13 +4964,13 @@ packages: dependencies: bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 - jest: 29.3.1_@types+node@18.11.9 - jest-util: 29.3.1 - json5: 2.2.1 + jest: 29.5.0_@types+node@18.16.18 + jest-util: 29.5.0 + json5: 2.2.3 lodash.memoize: 4.1.2 make-error: 1.3.6 - semver: 7.3.8 - typescript: 4.9.3 + semver: 7.5.3 + typescript: 4.9.5 yargs-parser: 21.1.1 dev: true @@ -4866,8 +4978,8 @@ packages: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} dev: true - /tty-table/4.1.6: - resolution: {integrity: sha512-kRj5CBzOrakV4VRRY5kUWbNYvo/FpOsz65DzI5op9P+cHov3+IqPbo1JE1ZnQGkHdZgNFDsrEjrfqqy/Ply9fw==} + /tty-table/4.2.1: + resolution: {integrity: sha512-xz0uKo+KakCQ+Dxj1D/tKn2FSyreSYWzdkL/BYhgN6oMW808g8QRMuh1atAV9fjTPbWBjfbkKQpI/5rEcnAc7g==} engines: {node: '>=8.0.0'} hasBin: true dependencies: @@ -4877,7 +4989,7 @@ packages: smartwrap: 2.0.2 strip-ansi: 6.0.1 wcwidth: 1.0.1 - yargs: 17.6.2 + yargs: 17.7.2 dev: true /type-detect/4.0.8: @@ -4905,8 +5017,16 @@ packages: engines: {node: '>=8'} dev: true - /typescript/4.9.3: - resolution: {integrity: sha512-CIfGzTelbKNEnLpLdGFgdyKhG23CKdKgQPOBc+OUNrkJ2vr+KSzsSV5kq5iWhEQbok+quxgGzrAtGWCyU7tHnA==} + /typed-array-length/1.0.4: + resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} + dependencies: + call-bind: 1.0.2 + for-each: 0.3.3 + is-typed-array: 1.1.10 + dev: true + + /typescript/4.9.5: + resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} engines: {node: '>=4.2.0'} hasBin: true dev: true @@ -4948,13 +5068,13 @@ packages: resolution: {integrity: sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==} dev: true - /update-browserslist-db/1.0.10_browserslist@4.21.4: - resolution: {integrity: sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==} + /update-browserslist-db/1.0.11_browserslist@4.21.9: + resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' dependencies: - browserslist: 4.21.4 + browserslist: 4.21.9 escalade: 3.1.1 picocolors: 1.0.0 dev: true @@ -4966,10 +5086,10 @@ packages: /util.promisify/1.0.1: resolution: {integrity: sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==} dependencies: - define-properties: 1.1.4 - es-abstract: 1.20.4 + define-properties: 1.2.0 + es-abstract: 1.21.2 has-symbols: 1.0.3 - object.getownpropertydescriptors: 2.1.5 + object.getownpropertydescriptors: 2.1.6 dev: true /uuid/3.4.0: @@ -4978,11 +5098,11 @@ packages: hasBin: true dev: true - /v8-to-istanbul/9.0.1: - resolution: {integrity: sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w==} + /v8-to-istanbul/9.1.0: + resolution: {integrity: sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==} engines: {node: '>=10.12.0'} dependencies: - '@jridgewell/trace-mapping': 0.3.17 + '@jridgewell/trace-mapping': 0.3.18 '@types/istanbul-lib-coverage': 2.0.4 convert-source-map: 1.9.0 dev: true @@ -4990,7 +5110,7 @@ packages: /validate-npm-package-license/3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} dependencies: - spdx-correct: 3.1.1 + spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 dev: true @@ -5032,8 +5152,8 @@ packages: is-symbol: 1.0.4 dev: true - /which-module/2.0.0: - resolution: {integrity: sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==} + /which-module/2.0.1: + resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} dev: true /which-pm/2.0.0: @@ -5044,6 +5164,18 @@ packages: path-exists: 4.0.0 dev: true + /which-typed-array/1.1.9: + resolution: {integrity: sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.5 + call-bind: 1.0.2 + for-each: 0.3.3 + gopd: 1.0.1 + has-tostringtag: 1.0.0 + is-typed-array: 1.1.10 + dev: true + /which/1.3.1: resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} hasBin: true @@ -5126,6 +5258,10 @@ packages: resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} dev: true + /yallist/3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + dev: true + /yallist/4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} dev: true @@ -5160,7 +5296,7 @@ packages: require-main-filename: 2.0.0 set-blocking: 2.0.0 string-width: 4.2.3 - which-module: 2.0.0 + which-module: 2.0.1 y18n: 4.0.3 yargs-parser: 18.1.3 dev: true @@ -5178,8 +5314,8 @@ packages: yargs-parser: 20.2.9 dev: true - /yargs/17.6.2: - resolution: {integrity: sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==} + /yargs/17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} engines: {node: '>=12'} dependencies: cliui: 8.0.1 @@ -5196,6 +5332,6 @@ packages: engines: {node: '>=10'} dev: true - /zod/3.19.1: - resolution: {integrity: sha512-LYjZsEDhCdYET9ikFu6dVPGp2YH9DegXjdJToSzD9rO6fy4qiRYFoyEYwps88OseJlPyl2NOe2iJuhEhL7IpEA==} + /zod/3.21.4: + resolution: {integrity: sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==} dev: true From 014a19e4164647f950aea35efaf00fd482e7cbd7 Mon Sep 17 00:00:00 2001 From: MPThLee Date: Fri, 30 Jun 2023 04:33:30 +0900 Subject: [PATCH 10/66] docs(readme): Fix build status badge (#898) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9128b90c0..cd59c38a8 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@

Fast Node Manager (fnm) Amount of downloads - GitHub Actions workflow status + GitHub Actions workflow status

> :rocket: Fast and simple Node.js version manager, built in Rust From 1788762e4ae243215be3841df29413cffce4fd44 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 29 Jun 2023 21:37:54 +0000 Subject: [PATCH 11/66] chore(deps): update all dev dependencies (#918) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.toml | 2 +- package.json | 6 +++--- pnpm-lock.yaml | 36 ++++++++++++++++++------------------ 3 files changed, 22 insertions(+), 22 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index ba832bccb..736d0600f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -35,7 +35,7 @@ anyhow = "1.0.66" [dev-dependencies] pretty_assertions = "1.3.0" duct = "0.13.6" -test-log = "0.2.11" +test-log = "0.2.12" [build-dependencies] embed-resource = "1.8.0" diff --git a/package.json b/package.json index cedbdd0dd..f152968e7 100644 --- a/package.json +++ b/package.json @@ -22,19 +22,19 @@ } }, "devDependencies": { - "@changesets/cli": "2.26.0", + "@changesets/cli": "2.26.2", "@svitejs/changesets-changelog-github-compact": "1.1.0", "@types/jest": "^29.2.3", "@types/node": "^18.11.9", "@types/shell-escape": "^0.2.1", "chalk": "^5.1.2", - "cmd-ts": "0.11.0", + "cmd-ts": "0.12.1", "cross-env": "^7.0.3", "execa": "6.1.0", "jest": "^29.3.1", "lerna-changelog": "2.2.0", "node-fetch": "^3.3.0", - "prettier": "2.8.3", + "prettier": "2.8.8", "pv": "1.0.1", "shell-escape": "^0.2.0", "svg-term-cli": "2.1.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4ae3ab634..186a8e56d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,19 +1,19 @@ lockfileVersion: 5.4 specifiers: - '@changesets/cli': 2.26.0 + '@changesets/cli': 2.26.2 '@svitejs/changesets-changelog-github-compact': 1.1.0 '@types/jest': ^29.2.3 '@types/node': ^18.11.9 '@types/shell-escape': ^0.2.1 chalk: ^5.1.2 - cmd-ts: 0.11.0 + cmd-ts: 0.12.1 cross-env: ^7.0.3 execa: 6.1.0 jest: ^29.3.1 lerna-changelog: 2.2.0 node-fetch: ^3.3.0 - prettier: 2.8.3 + prettier: 2.8.8 pv: 1.0.1 shell-escape: ^0.2.0 svg-term-cli: 2.1.1 @@ -25,19 +25,19 @@ specifiers: zod: ^3.19.1 devDependencies: - '@changesets/cli': 2.26.0 + '@changesets/cli': 2.26.2 '@svitejs/changesets-changelog-github-compact': 1.1.0 '@types/jest': 29.5.2 '@types/node': 18.16.18 '@types/shell-escape': 0.2.1 chalk: 5.3.0 - cmd-ts: 0.11.0 + cmd-ts: 0.12.1 cross-env: 7.0.3 execa: 6.1.0 jest: 29.5.0_@types+node@18.16.18 lerna-changelog: 2.2.0 node-fetch: 3.3.1 - prettier: 2.8.3 + prettier: 2.8.8 pv: 1.0.1 shell-escape: 0.2.0 svg-term-cli: 2.1.1 @@ -411,7 +411,7 @@ packages: fs-extra: 7.0.1 lodash.startcase: 4.4.0 outdent: 0.5.0 - prettier: 2.8.3 + prettier: 2.8.8 resolve-from: 5.0.0 semver: 7.5.3 dev: true @@ -433,8 +433,8 @@ packages: '@changesets/types': 5.2.1 dev: true - /@changesets/cli/2.26.0: - resolution: {integrity: sha512-0cbTiDms+ICTVtEwAFLNW0jBNex9f5+fFv3I771nBvdnV/mOjd1QJ4+f8KtVSOrwD9SJkk9xbDkWFb0oXd8d1Q==} + /@changesets/cli/2.26.2: + resolution: {integrity: sha512-dnWrJTmRR8bCHikJHl9b9HW3gXACCehz4OasrXpMp7sx97ECuBGGNjJhjPhdZNCvMy9mn4BWdplI323IbqsRig==} hasBin: true dependencies: '@babel/runtime': 7.22.5 @@ -453,7 +453,7 @@ packages: '@changesets/write': 0.2.3 '@manypkg/get-packages': 1.1.3 '@types/is-ci': 3.0.0 - '@types/semver': 6.2.3 + '@types/semver': 7.5.0 ansi-colors: 4.1.3 chalk: 2.4.2 enquirer: 2.3.6 @@ -466,7 +466,7 @@ packages: p-limit: 2.3.0 preferred-pm: 3.0.3 resolve-from: 5.0.0 - semver: 5.7.1 + semver: 7.5.3 spawndamnit: 2.0.0 term-size: 2.2.1 tty-table: 4.2.1 @@ -588,7 +588,7 @@ packages: '@changesets/types': 5.2.1 fs-extra: 7.0.1 human-id: 1.0.2 - prettier: 2.8.3 + prettier: 2.8.8 dev: true /@gar/promisify/1.1.3: @@ -1170,8 +1170,8 @@ packages: resolution: {integrity: sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ==} dev: true - /@types/semver/6.2.3: - resolution: {integrity: sha512-KQf+QAMWKMrtBMsB8/24w53tEsxllMj6TuA80TT/5igJalLI/zm0L3oXRbIAl4Ohfc85gyHX/jhMwsVkmhLU4A==} + /@types/semver/7.5.0: + resolution: {integrity: sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==} dev: true /@types/shell-escape/0.2.1: @@ -1667,8 +1667,8 @@ packages: engines: {node: '>=0.8'} dev: true - /cmd-ts/0.11.0: - resolution: {integrity: sha512-6RvjD+f9oGPeWoMS53oavafmQ9qC839PjP3CyvPkAIfqMEXTbrclni7t3fnyVJFNWxuBexnLshcotY0RuNrI8Q==} + /cmd-ts/0.12.1: + resolution: {integrity: sha512-k93f6LgFEzx7/vBy5qV+tu1VI8YuH0DZmwNXPvRaDR4Qp7Fl9+pUSylX/CKHrWoKqHMJjNOLb1NeYTvHOjQ2Kw==} dependencies: chalk: 4.1.2 debug: 4.3.4 @@ -4088,8 +4088,8 @@ packages: which-pm: 2.0.0 dev: true - /prettier/2.8.3: - resolution: {integrity: sha512-tJ/oJ4amDihPoufT5sM0Z1SKEuKay8LfVAMlbbhnnkvt6BUserZylqo2PN+p9KeljLr0OHa2rXHU1T8reeoTrw==} + /prettier/2.8.8: + resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} engines: {node: '>=10.13.0'} hasBin: true dev: true From 1abd736bf303c0ba83a425ded526d69407b6c752 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 30 Jun 2023 07:31:41 +0300 Subject: [PATCH 12/66] fix(deps): update all non-major dependencies (#894) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .node-version | 2 +- Cargo.lock | 4 ++-- Cargo.toml | 8 ++++---- package.json | 2 +- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.node-version b/.node-version index b460d6f2d..3876fd498 100644 --- a/.node-version +++ b/.node-version @@ -1 +1 @@ -18.12.1 +18.16.1 diff --git a/Cargo.lock b/Cargo.lock index 3a32a77df..50510ffb8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1683,9 +1683,9 @@ dependencies = [ [[package]] name = "sysinfo" -version = "0.27.8" +version = "0.29.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a902e9050fca0a5d6877550b769abd2bd1ce8c04634b941dbe2809735e1a1e33" +checksum = "5bcd0346f90b6bc83526c7b180039a8acd26a5c848cc556d457f6472eb148122" dependencies = [ "cfg-if", "core-foundation-sys", diff --git a/Cargo.toml b/Cargo.toml index 736d0600f..a06e01b7b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -19,15 +19,15 @@ node-semver = "2.1.0" dirs = "4.0.0" colored = "2.0.0" zip = "0.6.3" -tempfile = "3.3.0" +tempfile = "3.6.0" indoc = "1.0.8" log = "0.4.17" env_logger = "0.10.0" atty = "0.2.14" encoding_rs_io = "0.1.7" reqwest = { version = "0.11.13", features = ["blocking", "json", "rustls-tls", "rustls-tls-native-roots", "brotli"], default-features = false } -url = "2.3.1" -sysinfo = "0.27.1" +url = "2.4.0" +sysinfo = "0.29.3" thiserror = "1.0.37" clap_complete = "3.2.5" anyhow = "1.0.66" @@ -41,7 +41,7 @@ test-log = "0.2.12" embed-resource = "1.8.0" [target.'cfg(windows)'.dependencies] -csv = "1.1.6" +csv = "1.2.2" junction = "0.2.0" [features] diff --git a/package.json b/package.json index f152968e7..45dcfdbf6 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "repository": "git@github.com:Schniz/fnm.git", "author": "Gal Schlezinger ", "type": "module", - "packageManager": "pnpm@7.18.2", + "packageManager": "pnpm@7.33.2", "license": "GPLv3", "scripts": { "test": "cross-env NODE_OPTIONS='--experimental-vm-modules' jest", From 4c5aca7b3603a9892a45f564fb38445908d66df9 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 30 Jun 2023 07:32:00 +0300 Subject: [PATCH 13/66] fix(deps): update serde (#881) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index a06e01b7b..819714595 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -9,9 +9,9 @@ repository = "https://github.com/Schniz/fnm" description = "Fast and simple Node.js version manager" [dependencies] -serde = { version = "1.0.149", features = ["derive"] } +serde = { version = "1.0.164", features = ["derive"] } clap = { version = "3.2.23", features = ["derive", "env"] } -serde_json = "1.0.89" +serde_json = "1.0.99" chrono = { version = "0.4.23", features = ["serde"] } tar = "0.4.38" xz2 = "0.1.7" From 10ad6889ce205f860ad088d5f8001e7e1b1190d4 Mon Sep 17 00:00:00 2001 From: Gal Schlezinger Date: Fri, 30 Jun 2023 07:53:02 +0300 Subject: [PATCH 14/66] Add a test proxy server so we won't hit Node.js dist so much (#976) --- .gitignore | 1 + e2e/shellcode/script.ts | 1 + jest.config.cjs | 3 ++ jest.global-setup.js | 5 +++ jest.global-teardown.js | 5 +++ tests/proxy-server/index.mjs | 65 ++++++++++++++++++++++++++++++++++++ 6 files changed, 80 insertions(+) create mode 100644 jest.global-setup.js create mode 100644 jest.global-teardown.js create mode 100644 tests/proxy-server/index.mjs diff --git a/.gitignore b/.gitignore index aea3f202b..f72fd21ff 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,4 @@ feature_tests/.tmp *.log /site/public .vercel +.proxy diff --git a/e2e/shellcode/script.ts b/e2e/shellcode/script.ts index 142f88f8b..2b118d45d 100644 --- a/e2e/shellcode/script.ts +++ b/e2e/shellcode/script.ts @@ -69,6 +69,7 @@ class Script { .filter(Boolean) .join(path.delimiter), FNM_DIR: this.config.fnmDir, + FNM_NODE_DIST_MIRROR: "http://localhost:8080", } delete newProcessEnv.NODE_OPTIONS diff --git a/jest.config.cjs b/jest.config.cjs index 10e45aae7..e15f18a21 100644 --- a/jest.config.cjs +++ b/jest.config.cjs @@ -1,9 +1,12 @@ /** @type {import('ts-jest').JestConfigWithTsJest} */ module.exports = { preset: "ts-jest/presets/default-esm", + globalSetup: "./jest.global-setup.js", + globalTeardown: "./jest.global-teardown.js", testEnvironment: "node", testTimeout: 120000, extensionsToTreatAsEsm: [".ts"], + testPathIgnorePatterns: ["/node_modules/", "/dist/", "/target/"], moduleNameMapper: { "^(\\.{1,2}/.*)\\.js$": "$1", "#ansi-styles": "ansi-styles/index.js", diff --git a/jest.global-setup.js b/jest.global-setup.js new file mode 100644 index 000000000..7c52a6be1 --- /dev/null +++ b/jest.global-setup.js @@ -0,0 +1,5 @@ +import { server } from "./tests/proxy-server/index.mjs" + +export default function () { + server.listen(8080) +} diff --git a/jest.global-teardown.js b/jest.global-teardown.js new file mode 100644 index 000000000..d16c255d9 --- /dev/null +++ b/jest.global-teardown.js @@ -0,0 +1,5 @@ +import { server } from "./tests/proxy-server/index.mjs" + +export default () => { + server.close() +} diff --git a/tests/proxy-server/index.mjs b/tests/proxy-server/index.mjs new file mode 100644 index 000000000..b306a6f7f --- /dev/null +++ b/tests/proxy-server/index.mjs @@ -0,0 +1,65 @@ +// @ts-check + +import { createServer } from "node:http" +import path from "node:path" +import fs from "node:fs" +import crypto from "node:crypto" +import fetch from "node-fetch" +import chalk from "chalk" + +const baseDir = path.join(process.cwd(), ".proxy") +try { + fs.mkdirSync(baseDir, { recursive: true }) +} catch (e) {} + +/** @type {Map, body: ArrayBuffer }>>} */ +const cache = new Map() + +export const server = createServer((req, res) => { + const pathname = req.url ?? "/" + const hash = crypto + .createHash("sha1") + .update(pathname ?? "/") + .digest("hex") + const extension = path.extname(pathname) + const filename = path.join(baseDir, hash) + extension + const headersFilename = path.join(baseDir, hash) + ".headers.json" + try { + const headers = JSON.parse(fs.readFileSync(headersFilename, "utf-8")) + const body = fs.createReadStream(filename) + console.log(chalk.green.dim(`[proxy] hit: ${pathname} -> ${filename}`)) + res.writeHead(200, headers) + body.pipe(res) + } catch { + let promise = cache.get(filename) + if (!promise) { + console.log(chalk.red.dim(`[proxy] miss: ${pathname} -> ${filename}`)) + promise = fetch( + "https://nodejs.org/dist/" + pathname.replace(/^\/+/, ""), + { + compress: false, + } + ).then(async (response) => { + const headers = Object.fromEntries(response.headers.entries()) + const body = await response.arrayBuffer() + fs.writeFileSync(headersFilename, JSON.stringify(headers)) + fs.writeFileSync(filename, Buffer.from(body)) + return { headers, body } + }) + cache.set(filename, promise) + promise.finally(() => cache.delete(filename)) + } + + promise.then( + ({ headers, body }) => { + res.writeHead(200, headers) + res.end(Buffer.from(body)) + }, + (err) => { + console.error(err) + res.writeHead(500) + res.end() + } + ) + } +}) From 710fc576118b30722513a37bc02bf650b470e7a5 Mon Sep 17 00:00:00 2001 From: Gal Schlezinger Date: Fri, 30 Jun 2023 07:53:46 +0300 Subject: [PATCH 15/66] dont infer shell in benchmarks (#891) --- benchmarks/basic/fnm | 2 +- benchmarks/basic/fnm_latest_master | 6 ------ benchmarks/basic/fnm_reason | 6 ------ 3 files changed, 1 insertion(+), 13 deletions(-) delete mode 100755 benchmarks/basic/fnm_latest_master delete mode 100755 benchmarks/basic/fnm_reason diff --git a/benchmarks/basic/fnm b/benchmarks/basic/fnm index 3f25cfcf6..1fefe7b50 100755 --- a/benchmarks/basic/fnm +++ b/benchmarks/basic/fnm @@ -1,6 +1,6 @@ #!/bin/bash -eval "$(fnm env --multi)" +eval "$(fnm env --shell=bash)" fnm install v10.11.0 fnm use v10.11.0 node -v diff --git a/benchmarks/basic/fnm_latest_master b/benchmarks/basic/fnm_latest_master deleted file mode 100755 index c3f0f686b..000000000 --- a/benchmarks/basic/fnm_latest_master +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/bash - -eval "$(~/.fnm-latest/fnm env --multi)" -~/.fnm-latest/fnm install v10.11.0 -~/.fnm-latest/fnm use v10.11.0 -node -v diff --git a/benchmarks/basic/fnm_reason b/benchmarks/basic/fnm_reason deleted file mode 100755 index 7833821bc..000000000 --- a/benchmarks/basic/fnm_reason +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/bash - -eval "$(~/.fnm/fnm env --multi)" -~/.fnm/fnm install v10.11.0 -~/.fnm/fnm use v10.11.0 -node -v From 7ed191f7a9e205f12f2564454e17783bf0773c4b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 30 Jun 2023 05:11:10 +0000 Subject: [PATCH 16/66] fix(deps): update rust crate log to 0.4.19 (#982) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 819714595..18db205b3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -21,7 +21,7 @@ colored = "2.0.0" zip = "0.6.3" tempfile = "3.6.0" indoc = "1.0.8" -log = "0.4.17" +log = "0.4.19" env_logger = "0.10.0" atty = "0.2.14" encoding_rs_io = "0.1.7" From 181bd48be7ae16e2da7a717e09b3ed74035ebca0 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 30 Jun 2023 05:13:12 +0000 Subject: [PATCH 17/66] fix(deps): update rust crate chrono to 0.4.26 (#978) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 18db205b3..366c3c213 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -12,7 +12,7 @@ description = "Fast and simple Node.js version manager" serde = { version = "1.0.164", features = ["derive"] } clap = { version = "3.2.23", features = ["derive", "env"] } serde_json = "1.0.99" -chrono = { version = "0.4.23", features = ["serde"] } +chrono = { version = "0.4.26", features = ["serde"] } tar = "0.4.38" xz2 = "0.1.7" node-semver = "2.1.0" From 7beee13abc4ff2b028dc8ccf403c3a686108a93d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 30 Jun 2023 05:13:25 +0000 Subject: [PATCH 18/66] fix(deps): update rust crate thiserror to 1.0.40 (#889) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 366c3c213..b5109c572 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -28,7 +28,7 @@ encoding_rs_io = "0.1.7" reqwest = { version = "0.11.13", features = ["blocking", "json", "rustls-tls", "rustls-tls-native-roots", "brotli"], default-features = false } url = "2.4.0" sysinfo = "0.29.3" -thiserror = "1.0.37" +thiserror = "1.0.40" clap_complete = "3.2.5" anyhow = "1.0.66" From db18074c0b0806bee9d42ac2110edab64229464b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 30 Jun 2023 05:13:40 +0000 Subject: [PATCH 19/66] fix(deps): update rust crate reqwest to 0.11.18 (#917) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index b5109c572..5459dfda1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -25,7 +25,7 @@ log = "0.4.19" env_logger = "0.10.0" atty = "0.2.14" encoding_rs_io = "0.1.7" -reqwest = { version = "0.11.13", features = ["blocking", "json", "rustls-tls", "rustls-tls-native-roots", "brotli"], default-features = false } +reqwest = { version = "0.11.18", features = ["blocking", "json", "rustls-tls", "rustls-tls-native-roots", "brotli"], default-features = false } url = "2.4.0" sysinfo = "0.29.3" thiserror = "1.0.40" From 447f66e9151697058d0a4f697ecd3710ee4579c9 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 30 Jun 2023 10:24:20 +0300 Subject: [PATCH 20/66] chore(deps): update all dev dependencies (#983) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 4 ++-- pnpm-lock.yaml | 34 +++++++++++++++++----------------- 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/package.json b/package.json index 45dcfdbf6..6d0ebcea8 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,7 @@ "chalk": "^5.1.2", "cmd-ts": "0.12.1", "cross-env": "^7.0.3", - "execa": "6.1.0", + "execa": "7.1.1", "jest": "^29.3.1", "lerna-changelog": "2.2.0", "node-fetch": "^3.3.0", @@ -41,7 +41,7 @@ "toml": "3.0.0", "ts-dedent": "^2.2.0", "ts-jest": "^29.0.3", - "typescript": "^4.8.4", + "typescript": "^5.0.0", "which": "^3.0.1", "zod": "^3.19.1" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 186a8e56d..3a3464229 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,7 +9,7 @@ specifiers: chalk: ^5.1.2 cmd-ts: 0.12.1 cross-env: ^7.0.3 - execa: 6.1.0 + execa: 7.1.1 jest: ^29.3.1 lerna-changelog: 2.2.0 node-fetch: ^3.3.0 @@ -20,7 +20,7 @@ specifiers: toml: 3.0.0 ts-dedent: ^2.2.0 ts-jest: ^29.0.3 - typescript: ^4.8.4 + typescript: ^5.0.0 which: ^3.0.1 zod: ^3.19.1 @@ -33,7 +33,7 @@ devDependencies: chalk: 5.3.0 cmd-ts: 0.12.1 cross-env: 7.0.3 - execa: 6.1.0 + execa: 7.1.1 jest: 29.5.0_@types+node@18.16.18 lerna-changelog: 2.2.0 node-fetch: 3.3.1 @@ -43,8 +43,8 @@ devDependencies: svg-term-cli: 2.1.1 toml: 3.0.0 ts-dedent: 2.2.0 - ts-jest: 29.1.0_doipufordlnvh5g4adbwayvyvy - typescript: 4.9.5 + ts-jest: 29.1.0_tiloc3ejst55n76oty5rbi22ra + typescript: 5.1.6 which: 3.0.1 zod: 3.21.4 @@ -2143,13 +2143,13 @@ packages: strip-final-newline: 2.0.0 dev: true - /execa/6.1.0: - resolution: {integrity: sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + /execa/7.1.1: + resolution: {integrity: sha512-wH0eMf/UXckdUYnO21+HDztteVv05rq2GXksxT4fCGeHkBhw1DROXh40wcjMcRqDOWE7iPJ4n3M7e2+YFP+76Q==} + engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} dependencies: cross-spawn: 7.0.3 get-stream: 6.0.1 - human-signals: 3.0.1 + human-signals: 4.3.1 is-stream: 3.0.0 merge-stream: 2.0.0 npm-run-path: 5.1.0 @@ -2548,9 +2548,9 @@ packages: engines: {node: '>=10.17.0'} dev: true - /human-signals/3.0.1: - resolution: {integrity: sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==} - engines: {node: '>=12.20.0'} + /human-signals/4.3.1: + resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==} + engines: {node: '>=14.18.0'} dev: true /humanize-ms/1.2.1: @@ -4941,7 +4941,7 @@ packages: engines: {node: '>=6.10'} dev: true - /ts-jest/29.1.0_doipufordlnvh5g4adbwayvyvy: + /ts-jest/29.1.0_tiloc3ejst55n76oty5rbi22ra: resolution: {integrity: sha512-ZhNr7Z4PcYa+JjMl62ir+zPiNJfXJN6E8hSLnaUKhOgqcn8vb3e537cpkd0FuAfRK3sR1LSqM1MOhliXNgOFPA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -4970,7 +4970,7 @@ packages: lodash.memoize: 4.1.2 make-error: 1.3.6 semver: 7.5.3 - typescript: 4.9.5 + typescript: 5.1.6 yargs-parser: 21.1.1 dev: true @@ -5025,9 +5025,9 @@ packages: is-typed-array: 1.1.10 dev: true - /typescript/4.9.5: - resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} - engines: {node: '>=4.2.0'} + /typescript/5.1.6: + resolution: {integrity: sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==} + engines: {node: '>=14.17'} hasBin: true dev: true From a31419c1c2013e436adc6efa21fda00eb47317da Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 30 Jun 2023 10:24:36 +0300 Subject: [PATCH 21/66] fix(deps): update rust crate indoc to 1.0.9 (#922) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 5459dfda1..d6a843a96 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -20,7 +20,7 @@ dirs = "4.0.0" colored = "2.0.0" zip = "0.6.3" tempfile = "3.6.0" -indoc = "1.0.8" +indoc = "1.0.9" log = "0.4.19" env_logger = "0.10.0" atty = "0.2.14" From 7da5c339ed94acf756f935bb84a18f50fed13459 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 30 Jun 2023 13:57:16 +0300 Subject: [PATCH 22/66] fix(deps): update rust crate indoc to v2 (#987) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 50510ffb8..4787afe76 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -887,9 +887,9 @@ dependencies = [ [[package]] name = "indoc" -version = "1.0.9" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa799dd5ed20a7e349f3b4639aa80d74549c81716d9ec4f994c9b5815598306" +checksum = "9f2cb48b81b1dc9f39676bf99f5499babfec7cd8fe14307f7b3d747208fb5690" [[package]] name = "inout" diff --git a/Cargo.toml b/Cargo.toml index d6a843a96..a16677382 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -20,7 +20,7 @@ dirs = "4.0.0" colored = "2.0.0" zip = "0.6.3" tempfile = "3.6.0" -indoc = "1.0.9" +indoc = "2.0.1" log = "0.4.19" env_logger = "0.10.0" atty = "0.2.14" From 3d9f3a53755a863a15fdd177d04ef7d78f6b1706 Mon Sep 17 00:00:00 2001 From: Joshua Hollander <66529773+Joshuahuahua@users.noreply.github.com> Date: Fri, 30 Jun 2023 19:01:30 +0800 Subject: [PATCH 23/66] Capitalised "n" to reflect default option (#963) Co-authored-by: Joshua Hollander Co-authored-by: Gal Schlezinger --- src/commands/use.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/commands/use.rs b/src/commands/use.rs index 64539c0e4..3807d6794 100644 --- a/src/commands/use.rs +++ b/src/commands/use.rs @@ -170,7 +170,7 @@ fn should_install_interactively(requested_version: &UserVersion) -> bool { requested_version.to_string().italic() ); eprintln!("{}", error_message.red()); - let do_you_want = format!("Do you want to install it? {} [y/n]:", "answer".bold()); + let do_you_want = format!("Do you want to install it? {} [y/N]:", "answer".bold()); eprint!("{} ", do_you_want.yellow()); std::io::stdout().flush().unwrap(); let mut s = String::new(); From 1b0dffb15225f4187febc140c3c06a0ed8e28fd9 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 30 Jun 2023 14:40:12 +0300 Subject: [PATCH 24/66] fix(deps): update rust crate junction to v1 (#988) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 4787afe76..9c96d01a7 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -964,9 +964,9 @@ dependencies = [ [[package]] name = "junction" -version = "0.2.1" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bcc2cc77f63a374d3a17011d943b081f7cb60c942d1ddaf3504430378597385" +checksum = "ca39ef0d69b18e6a2fd14c2f0a1d593200f4a4ed949b240b5917ab51fac754cb" dependencies = [ "scopeguard", "winapi", diff --git a/Cargo.toml b/Cargo.toml index a16677382..70cc227e8 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -42,6 +42,6 @@ embed-resource = "1.8.0" [target.'cfg(windows)'.dependencies] csv = "1.2.2" -junction = "0.2.0" +junction = "1.0.0" [features] From b847928315f9e755a439eb5e542d839f01e668dc Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 30 Jun 2023 12:07:08 +0000 Subject: [PATCH 25/66] fix(deps): update rust crate dirs to v5 (#986) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 17 ++++++++++++----- Cargo.toml | 2 +- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9c96d01a7..8e3ca55f4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -454,22 +454,23 @@ dependencies = [ [[package]] name = "dirs" -version = "4.0.0" +version = "5.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca3aa72a6f96ea37bbc5aa912f6788242832f75369bdfdadcb0e38423f100059" +checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" dependencies = [ "dirs-sys", ] [[package]] name = "dirs-sys" -version = "0.3.7" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6" +checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" dependencies = [ "libc", + "option-ext", "redox_users", - "winapi", + "windows-sys 0.48.0", ] [[package]] @@ -1158,6 +1159,12 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" +[[package]] +name = "option-ext" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" + [[package]] name = "os_pipe" version = "1.1.4" diff --git a/Cargo.toml b/Cargo.toml index 70cc227e8..9d8c2bec0 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -16,7 +16,7 @@ chrono = { version = "0.4.26", features = ["serde"] } tar = "0.4.38" xz2 = "0.1.7" node-semver = "2.1.0" -dirs = "4.0.0" +dirs = "5.0.1" colored = "2.0.0" zip = "0.6.3" tempfile = "3.6.0" From 8eb68d48ebefbe860ac20247dd4262c12cb5480b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 30 Jun 2023 16:23:23 +0000 Subject: [PATCH 26/66] fix(deps): update rust crate zip to 0.6.6 (#930) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 9d8c2bec0..8e39a2c0c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -18,7 +18,7 @@ xz2 = "0.1.7" node-semver = "2.1.0" dirs = "5.0.1" colored = "2.0.0" -zip = "0.6.3" +zip = "0.6.6" tempfile = "3.6.0" indoc = "2.0.1" log = "0.4.19" From 6147d42937ac01b74d42d264614681f368db4413 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 1 Jul 2023 16:11:37 +0000 Subject: [PATCH 27/66] fix(deps): update rust crate clap to 3.2.25 (#979) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 8e39a2c0c..ee3921253 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -10,7 +10,7 @@ description = "Fast and simple Node.js version manager" [dependencies] serde = { version = "1.0.164", features = ["derive"] } -clap = { version = "3.2.23", features = ["derive", "env"] } +clap = { version = "3.2.25", features = ["derive", "env"] } serde_json = "1.0.99" chrono = { version = "0.4.26", features = ["serde"] } tar = "0.4.38" From ef2bf6e5121bcce7d1e67771db5d360de2b62af1 Mon Sep 17 00:00:00 2001 From: tottoto Date: Sun, 2 Jul 2023 01:13:07 +0900 Subject: [PATCH 28/66] Replace atty with std::io::IsTerminal (#973) Co-authored-by: Gal Schlezinger --- Cargo.lock | 1 - Cargo.toml | 1 - src/commands/use.rs | 4 ++-- 3 files changed, 2 insertions(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 8e3ca55f4..8df884914 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -592,7 +592,6 @@ name = "fnm" version = "1.33.1" dependencies = [ "anyhow", - "atty", "chrono", "clap", "clap_complete", diff --git a/Cargo.toml b/Cargo.toml index ee3921253..e44145002 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -23,7 +23,6 @@ tempfile = "3.6.0" indoc = "2.0.1" log = "0.4.19" env_logger = "0.10.0" -atty = "0.2.14" encoding_rs_io = "0.1.7" reqwest = { version = "0.11.18", features = ["blocking", "json", "rustls-tls", "rustls-tls-native-roots", "brotli"], default-features = false } url = "2.4.0" diff --git a/src/commands/use.rs b/src/commands/use.rs index 3807d6794..14bbfb4b9 100644 --- a/src/commands/use.rs +++ b/src/commands/use.rs @@ -159,9 +159,9 @@ fn replace_symlink(from: &std::path::Path, to: &std::path::Path) -> std::io::Res } fn should_install_interactively(requested_version: &UserVersion) -> bool { - use std::io::Write; + use std::io::{IsTerminal, Write}; - if !(atty::is(atty::Stream::Stdout) && atty::is(atty::Stream::Stdin)) { + if !(std::io::stdout().is_terminal() && std::io::stdin().is_terminal()) { return false; } From 192eebafd525976ae54017a821e24c6ce247abc2 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 1 Jul 2023 16:19:08 +0000 Subject: [PATCH 29/66] fix(deps): update rust crate anyhow to 1.0.71 (#887) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index e44145002..915c12027 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -29,7 +29,7 @@ url = "2.4.0" sysinfo = "0.29.3" thiserror = "1.0.40" clap_complete = "3.2.5" -anyhow = "1.0.66" +anyhow = "1.0.71" [dev-dependencies] pretty_assertions = "1.3.0" From 650aafb7e8c4a88be343a5c101049d226b9920d0 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 1 Jul 2023 19:52:06 +0300 Subject: [PATCH 30/66] chore(deps): update pnpm to v7.33.3 (#989) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 6d0ebcea8..a82dc8a5d 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "repository": "git@github.com:Schniz/fnm.git", "author": "Gal Schlezinger ", "type": "module", - "packageManager": "pnpm@7.33.2", + "packageManager": "pnpm@7.33.3", "license": "GPLv3", "scripts": { "test": "cross-env NODE_OPTIONS='--experimental-vm-modules' jest", From 48b2611e4b1c205f07dcbd50f2fff436becb77c1 Mon Sep 17 00:00:00 2001 From: Gal Schlezinger Date: Sat, 1 Jul 2023 19:58:33 +0300 Subject: [PATCH 31/66] add missing changesets --- .changeset/new-avocados-camp.md | 5 +++++ .changeset/warm-ducks-float.md | 5 +++++ 2 files changed, 10 insertions(+) create mode 100644 .changeset/new-avocados-camp.md create mode 100644 .changeset/warm-ducks-float.md diff --git a/.changeset/new-avocados-camp.md b/.changeset/new-avocados-camp.md new file mode 100644 index 000000000..fb2d9939a --- /dev/null +++ b/.changeset/new-avocados-camp.md @@ -0,0 +1,5 @@ +--- +"fnm": patch +--- + +modernize tty check (#973 by @tottoto) diff --git a/.changeset/warm-ducks-float.md b/.changeset/warm-ducks-float.md new file mode 100644 index 000000000..28ffb2433 --- /dev/null +++ b/.changeset/warm-ducks-float.md @@ -0,0 +1,5 @@ +--- +"fnm": patch +--- + +capitalize "n" to show default (#963 by @Joshuahuahua) From 806286226e3f9988f6bba331b24d1f52ae6404e1 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 1 Jul 2023 17:15:43 +0000 Subject: [PATCH 32/66] chore(deps): update pnpm to v8 (#984) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- pnpm-lock.yaml | 1601 ++++++++++++++++++++++++------------------------ 2 files changed, 814 insertions(+), 789 deletions(-) diff --git a/package.json b/package.json index a82dc8a5d..1362ddf34 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "repository": "git@github.com:Schniz/fnm.git", "author": "Gal Schlezinger ", "type": "module", - "packageManager": "pnpm@7.33.3", + "packageManager": "pnpm@8.6.5", "license": "GPLv3", "scripts": { "test": "cross-env NODE_OPTIONS='--experimental-vm-modules' jest", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3a3464229..0f05b80b1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,56 +1,80 @@ -lockfileVersion: 5.4 - -specifiers: - '@changesets/cli': 2.26.2 - '@svitejs/changesets-changelog-github-compact': 1.1.0 - '@types/jest': ^29.2.3 - '@types/node': ^18.11.9 - '@types/shell-escape': ^0.2.1 - chalk: ^5.1.2 - cmd-ts: 0.12.1 - cross-env: ^7.0.3 - execa: 7.1.1 - jest: ^29.3.1 - lerna-changelog: 2.2.0 - node-fetch: ^3.3.0 - prettier: 2.8.8 - pv: 1.0.1 - shell-escape: ^0.2.0 - svg-term-cli: 2.1.1 - toml: 3.0.0 - ts-dedent: ^2.2.0 - ts-jest: ^29.0.3 - typescript: ^5.0.0 - which: ^3.0.1 - zod: ^3.19.1 +lockfileVersion: '6.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false devDependencies: - '@changesets/cli': 2.26.2 - '@svitejs/changesets-changelog-github-compact': 1.1.0 - '@types/jest': 29.5.2 - '@types/node': 18.16.18 - '@types/shell-escape': 0.2.1 - chalk: 5.3.0 - cmd-ts: 0.12.1 - cross-env: 7.0.3 - execa: 7.1.1 - jest: 29.5.0_@types+node@18.16.18 - lerna-changelog: 2.2.0 - node-fetch: 3.3.1 - prettier: 2.8.8 - pv: 1.0.1 - shell-escape: 0.2.0 - svg-term-cli: 2.1.1 - toml: 3.0.0 - ts-dedent: 2.2.0 - ts-jest: 29.1.0_tiloc3ejst55n76oty5rbi22ra - typescript: 5.1.6 - which: 3.0.1 - zod: 3.21.4 + '@changesets/cli': + specifier: 2.26.2 + version: 2.26.2 + '@svitejs/changesets-changelog-github-compact': + specifier: 1.1.0 + version: 1.1.0 + '@types/jest': + specifier: ^29.2.3 + version: 29.5.2 + '@types/node': + specifier: ^18.11.9 + version: 18.16.18 + '@types/shell-escape': + specifier: ^0.2.1 + version: 0.2.1 + chalk: + specifier: ^5.1.2 + version: 5.3.0 + cmd-ts: + specifier: 0.12.1 + version: 0.12.1 + cross-env: + specifier: ^7.0.3 + version: 7.0.3 + execa: + specifier: 7.1.1 + version: 7.1.1 + jest: + specifier: ^29.3.1 + version: 29.5.0(@types/node@18.16.18) + lerna-changelog: + specifier: 2.2.0 + version: 2.2.0 + node-fetch: + specifier: ^3.3.0 + version: 3.3.1 + prettier: + specifier: 2.8.8 + version: 2.8.8 + pv: + specifier: 1.0.1 + version: 1.0.1 + shell-escape: + specifier: ^0.2.0 + version: 0.2.0 + svg-term-cli: + specifier: 2.1.1 + version: 2.1.1 + toml: + specifier: 3.0.0 + version: 3.0.0 + ts-dedent: + specifier: ^2.2.0 + version: 2.2.0 + ts-jest: + specifier: ^29.0.3 + version: 29.1.0(@babel/core@7.22.5)(jest@29.5.0)(typescript@5.1.6) + typescript: + specifier: ^5.0.0 + version: 5.1.6 + which: + specifier: ^3.0.1 + version: 3.0.1 + zod: + specifier: ^3.19.1 + version: 3.21.4 packages: - /@ampproject/remapping/2.2.1: + /@ampproject/remapping@2.2.1: resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} engines: {node: '>=6.0.0'} dependencies: @@ -58,26 +82,26 @@ packages: '@jridgewell/trace-mapping': 0.3.18 dev: true - /@babel/code-frame/7.22.5: + /@babel/code-frame@7.22.5: resolution: {integrity: sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==} engines: {node: '>=6.9.0'} dependencies: '@babel/highlight': 7.22.5 dev: true - /@babel/compat-data/7.22.5: + /@babel/compat-data@7.22.5: resolution: {integrity: sha512-4Jc/YuIaYqKnDDz892kPIledykKg12Aw1PYX5i/TY28anJtacvM1Rrr8wbieB9GfEJwlzqT0hUEao0CxEebiDA==} engines: {node: '>=6.9.0'} dev: true - /@babel/core/7.22.5: + /@babel/core@7.22.5: resolution: {integrity: sha512-SBuTAjg91A3eKOvD+bPEz3LlhHZRNu1nFOVts9lzDJTXshHTjII0BAtDS3Y2DAkdZdDKWVZGVwkDfc4Clxn1dg==} engines: {node: '>=6.9.0'} dependencies: '@ampproject/remapping': 2.2.1 '@babel/code-frame': 7.22.5 '@babel/generator': 7.22.5 - '@babel/helper-compilation-targets': 7.22.5_@babel+core@7.22.5 + '@babel/helper-compilation-targets': 7.22.5(@babel/core@7.22.5) '@babel/helper-module-transforms': 7.22.5 '@babel/helpers': 7.22.5 '@babel/parser': 7.22.5 @@ -93,7 +117,7 @@ packages: - supports-color dev: true - /@babel/generator/7.22.5: + /@babel/generator@7.22.5: resolution: {integrity: sha512-+lcUbnTRhd0jOewtFSedLyiPsD5tswKkbgcezOqqWFUVNEwoUTlpPOBmvhG7OXWLR4jMdv0czPGH5XbflnD1EA==} engines: {node: '>=6.9.0'} dependencies: @@ -103,7 +127,7 @@ packages: jsesc: 2.5.2 dev: true - /@babel/helper-compilation-targets/7.22.5_@babel+core@7.22.5: + /@babel/helper-compilation-targets@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-Ji+ywpHeuqxB8WDxraCiqR0xfhYjiDE/e6k7FuIaANnoOFxAHskHChz4vA1mJC9Lbm01s1PVAGhQY4FUKSkGZw==} engines: {node: '>=6.9.0'} peerDependencies: @@ -117,12 +141,12 @@ packages: semver: 6.3.0 dev: true - /@babel/helper-environment-visitor/7.22.5: + /@babel/helper-environment-visitor@7.22.5: resolution: {integrity: sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==} engines: {node: '>=6.9.0'} dev: true - /@babel/helper-function-name/7.22.5: + /@babel/helper-function-name@7.22.5: resolution: {integrity: sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==} engines: {node: '>=6.9.0'} dependencies: @@ -130,21 +154,21 @@ packages: '@babel/types': 7.22.5 dev: true - /@babel/helper-hoist-variables/7.22.5: + /@babel/helper-hoist-variables@7.22.5: resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.22.5 dev: true - /@babel/helper-module-imports/7.22.5: + /@babel/helper-module-imports@7.22.5: resolution: {integrity: sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.22.5 dev: true - /@babel/helper-module-transforms/7.22.5: + /@babel/helper-module-transforms@7.22.5: resolution: {integrity: sha512-+hGKDt/Ze8GFExiVHno/2dvG5IdstpzCq0y4Qc9OJ25D4q3pKfiIP/4Vp3/JvhDkLKsDK2api3q3fpIgiIF5bw==} engines: {node: '>=6.9.0'} dependencies: @@ -160,41 +184,41 @@ packages: - supports-color dev: true - /@babel/helper-plugin-utils/7.22.5: + /@babel/helper-plugin-utils@7.22.5: resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==} engines: {node: '>=6.9.0'} dev: true - /@babel/helper-simple-access/7.22.5: + /@babel/helper-simple-access@7.22.5: resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.22.5 dev: true - /@babel/helper-split-export-declaration/7.22.5: + /@babel/helper-split-export-declaration@7.22.5: resolution: {integrity: sha512-thqK5QFghPKWLhAV321lxF95yCg2K3Ob5yw+M3VHWfdia0IkPXUtoLH8x/6Fh486QUvzhb8YOWHChTVen2/PoQ==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.22.5 dev: true - /@babel/helper-string-parser/7.22.5: + /@babel/helper-string-parser@7.22.5: resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==} engines: {node: '>=6.9.0'} dev: true - /@babel/helper-validator-identifier/7.22.5: + /@babel/helper-validator-identifier@7.22.5: resolution: {integrity: sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==} engines: {node: '>=6.9.0'} dev: true - /@babel/helper-validator-option/7.22.5: + /@babel/helper-validator-option@7.22.5: resolution: {integrity: sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==} engines: {node: '>=6.9.0'} dev: true - /@babel/helpers/7.22.5: + /@babel/helpers@7.22.5: resolution: {integrity: sha512-pSXRmfE1vzcUIDFQcSGA5Mr+GxBV9oiRKDuDxXvWQQBCh8HoIjs/2DlDB7H8smac1IVrB9/xdXj2N3Wol9Cr+Q==} engines: {node: '>=6.9.0'} dependencies: @@ -205,7 +229,7 @@ packages: - supports-color dev: true - /@babel/highlight/7.22.5: + /@babel/highlight@7.22.5: resolution: {integrity: sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==} engines: {node: '>=6.9.0'} dependencies: @@ -214,7 +238,7 @@ packages: js-tokens: 4.0.0 dev: true - /@babel/parser/7.22.5: + /@babel/parser@7.22.5: resolution: {integrity: sha512-DFZMC9LJUG9PLOclRC32G63UXwzqS2koQC8dkx+PLdmt1xSePYpbT/NbsrJy8Q/muXz7o/h/d4A7Fuyixm559Q==} engines: {node: '>=6.0.0'} hasBin: true @@ -222,7 +246,7 @@ packages: '@babel/types': 7.22.5 dev: true - /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.22.5: + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.22.5): resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -231,7 +255,7 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-bigint/7.8.3_@babel+core@7.22.5: + /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.22.5): resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -240,7 +264,7 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.22.5: + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.22.5): resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -249,7 +273,7 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-import-meta/7.10.4_@babel+core@7.22.5: + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.22.5): resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -258,7 +282,7 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.22.5: + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.22.5): resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -267,7 +291,7 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-jsx/7.22.5_@babel+core@7.22.5: + /@babel/plugin-syntax-jsx@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==} engines: {node: '>=6.9.0'} peerDependencies: @@ -277,7 +301,7 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.22.5: + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.22.5): resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -286,7 +310,7 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.22.5: + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.22.5): resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -295,7 +319,7 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.22.5: + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.22.5): resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -304,7 +328,7 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.22.5: + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.22.5): resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -313,7 +337,7 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.22.5: + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.22.5): resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -322,7 +346,7 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.22.5: + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.22.5): resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -331,7 +355,7 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-top-level-await/7.14.5_@babel+core@7.22.5: + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.22.5): resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} engines: {node: '>=6.9.0'} peerDependencies: @@ -341,7 +365,7 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-typescript/7.22.5_@babel+core@7.22.5: + /@babel/plugin-syntax-typescript@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==} engines: {node: '>=6.9.0'} peerDependencies: @@ -351,14 +375,14 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/runtime/7.22.5: + /@babel/runtime@7.22.5: resolution: {integrity: sha512-ecjvYlnAaZ/KVneE/OdKYBYfgXV3Ptu6zQWmgEF7vwKhQnvVS6bjMD2XYgj+SNvQ1GfK/pjgokfPkC/2CO8CuA==} engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.13.11 dev: true - /@babel/template/7.22.5: + /@babel/template@7.22.5: resolution: {integrity: sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==} engines: {node: '>=6.9.0'} dependencies: @@ -367,7 +391,7 @@ packages: '@babel/types': 7.22.5 dev: true - /@babel/traverse/7.22.5: + /@babel/traverse@7.22.5: resolution: {integrity: sha512-7DuIjPgERaNo6r+PZwItpjCZEa5vyw4eJGufeLxrPdBXBoLcCJCIasvK6pK/9DVNrLZTLFhUGqaC6X/PA007TQ==} engines: {node: '>=6.9.0'} dependencies: @@ -385,7 +409,7 @@ packages: - supports-color dev: true - /@babel/types/7.22.5: + /@babel/types@7.22.5: resolution: {integrity: sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==} engines: {node: '>=6.9.0'} dependencies: @@ -394,11 +418,11 @@ packages: to-fast-properties: 2.0.0 dev: true - /@bcoe/v8-coverage/0.2.3: + /@bcoe/v8-coverage@0.2.3: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} dev: true - /@changesets/apply-release-plan/6.1.4: + /@changesets/apply-release-plan@6.1.4: resolution: {integrity: sha512-FMpKF1fRlJyCZVYHr3CbinpZZ+6MwvOtWUuO8uo+svcATEoc1zRDcj23pAurJ2TZ/uVz1wFHH6K3NlACy0PLew==} dependencies: '@babel/runtime': 7.22.5 @@ -416,7 +440,7 @@ packages: semver: 7.5.3 dev: true - /@changesets/assemble-release-plan/5.2.4: + /@changesets/assemble-release-plan@5.2.4: resolution: {integrity: sha512-xJkWX+1/CUaOUWTguXEbCDTyWJFECEhmdtbkjhn5GVBGxdP/JwaHBIU9sW3FR6gD07UwZ7ovpiPclQZs+j+mvg==} dependencies: '@babel/runtime': 7.22.5 @@ -427,13 +451,13 @@ packages: semver: 7.5.3 dev: true - /@changesets/changelog-git/0.1.14: + /@changesets/changelog-git@0.1.14: resolution: {integrity: sha512-+vRfnKtXVWsDDxGctOfzJsPhaCdXRYoe+KyWYoq5X/GqoISREiat0l3L8B0a453B2B4dfHGcZaGyowHbp9BSaA==} dependencies: '@changesets/types': 5.2.1 dev: true - /@changesets/cli/2.26.2: + /@changesets/cli@2.26.2: resolution: {integrity: sha512-dnWrJTmRR8bCHikJHl9b9HW3gXACCehz4OasrXpMp7sx97ECuBGGNjJhjPhdZNCvMy9mn4BWdplI323IbqsRig==} hasBin: true dependencies: @@ -472,7 +496,7 @@ packages: tty-table: 4.2.1 dev: true - /@changesets/config/2.3.1: + /@changesets/config@2.3.1: resolution: {integrity: sha512-PQXaJl82CfIXddUOppj4zWu+987GCw2M+eQcOepxN5s+kvnsZOwjEJO3DH9eVy+OP6Pg/KFEWdsECFEYTtbg6w==} dependencies: '@changesets/errors': 0.1.4 @@ -484,13 +508,13 @@ packages: micromatch: 4.0.5 dev: true - /@changesets/errors/0.1.4: + /@changesets/errors@0.1.4: resolution: {integrity: sha512-HAcqPF7snsUJ/QzkWoKfRfXushHTu+K5KZLJWPb34s4eCZShIf8BFO3fwq6KU8+G7L5KdtN2BzQAXOSXEyiY9Q==} dependencies: extendable-error: 0.1.7 dev: true - /@changesets/get-dependents-graph/1.3.6: + /@changesets/get-dependents-graph@1.3.6: resolution: {integrity: sha512-Q/sLgBANmkvUm09GgRsAvEtY3p1/5OCzgBE5vX3vgb5CvW0j7CEljocx5oPXeQSNph6FXulJlXV3Re/v3K3P3Q==} dependencies: '@changesets/types': 5.2.1 @@ -500,7 +524,7 @@ packages: semver: 7.5.3 dev: true - /@changesets/get-github-info/0.5.2: + /@changesets/get-github-info@0.5.2: resolution: {integrity: sha512-JppheLu7S114aEs157fOZDjFqUDpm7eHdq5E8SSR0gUBTEK0cNSHsrSR5a66xs0z3RWuo46QvA3vawp8BxDHvg==} dependencies: dataloader: 1.4.0 @@ -509,7 +533,7 @@ packages: - encoding dev: true - /@changesets/get-release-plan/3.0.17: + /@changesets/get-release-plan@3.0.17: resolution: {integrity: sha512-6IwKTubNEgoOZwDontYc2x2cWXfr6IKxP3IhKeK+WjyD6y3M4Gl/jdQvBw+m/5zWILSOCAaGLu2ZF6Q+WiPniw==} dependencies: '@babel/runtime': 7.22.5 @@ -521,11 +545,11 @@ packages: '@manypkg/get-packages': 1.1.3 dev: true - /@changesets/get-version-range-type/0.3.2: + /@changesets/get-version-range-type@0.3.2: resolution: {integrity: sha512-SVqwYs5pULYjYT4op21F2pVbcrca4qA/bAA3FmFXKMN7Y+HcO8sbZUTx3TAy2VXulP2FACd1aC7f2nTuqSPbqg==} dev: true - /@changesets/git/2.0.0: + /@changesets/git@2.0.0: resolution: {integrity: sha512-enUVEWbiqUTxqSnmesyJGWfzd51PY4H7mH9yUw0hPVpZBJ6tQZFMU3F3mT/t9OJ/GjyiM4770i+sehAn6ymx6A==} dependencies: '@babel/runtime': 7.22.5 @@ -537,20 +561,20 @@ packages: spawndamnit: 2.0.0 dev: true - /@changesets/logger/0.0.5: + /@changesets/logger@0.0.5: resolution: {integrity: sha512-gJyZHomu8nASHpaANzc6bkQMO9gU/ib20lqew1rVx753FOxffnCrJlGIeQVxNWCqM+o6OOleCo/ivL8UAO5iFw==} dependencies: chalk: 2.4.2 dev: true - /@changesets/parse/0.3.16: + /@changesets/parse@0.3.16: resolution: {integrity: sha512-127JKNd167ayAuBjUggZBkmDS5fIKsthnr9jr6bdnuUljroiERW7FBTDNnNVyJ4l69PzR57pk6mXQdtJyBCJKg==} dependencies: '@changesets/types': 5.2.1 js-yaml: 3.14.1 dev: true - /@changesets/pre/1.0.14: + /@changesets/pre@1.0.14: resolution: {integrity: sha512-dTsHmxQWEQekHYHbg+M1mDVYFvegDh9j/kySNuDKdylwfMEevTeDouR7IfHNyVodxZXu17sXoJuf2D0vi55FHQ==} dependencies: '@babel/runtime': 7.22.5 @@ -560,7 +584,7 @@ packages: fs-extra: 7.0.1 dev: true - /@changesets/read/0.5.9: + /@changesets/read@0.5.9: resolution: {integrity: sha512-T8BJ6JS6j1gfO1HFq50kU3qawYxa4NTbI/ASNVVCBTsKquy2HYwM9r7ZnzkiMe8IEObAJtUVGSrePCOxAK2haQ==} dependencies: '@babel/runtime': 7.22.5 @@ -573,15 +597,15 @@ packages: p-filter: 2.1.0 dev: true - /@changesets/types/4.1.0: + /@changesets/types@4.1.0: resolution: {integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==} dev: true - /@changesets/types/5.2.1: + /@changesets/types@5.2.1: resolution: {integrity: sha512-myLfHbVOqaq9UtUKqR/nZA/OY7xFjQMdfgfqeZIBK4d0hA6pgxArvdv8M+6NUzzBsjWLOtvApv8YHr4qM+Kpfg==} dev: true - /@changesets/write/0.2.3: + /@changesets/write@0.2.3: resolution: {integrity: sha512-Dbamr7AIMvslKnNYsLFafaVORx4H0pvCA2MHqgtNCySMe1blImEyAEOzDmcgKAkgz4+uwoLz7demIrX+JBr/Xw==} dependencies: '@babel/runtime': 7.22.5 @@ -591,11 +615,11 @@ packages: prettier: 2.8.8 dev: true - /@gar/promisify/1.1.3: + /@gar/promisify@1.1.3: resolution: {integrity: sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==} dev: true - /@istanbuljs/load-nyc-config/1.1.0: + /@istanbuljs/load-nyc-config@1.1.0: resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} engines: {node: '>=8'} dependencies: @@ -606,12 +630,12 @@ packages: resolve-from: 5.0.0 dev: true - /@istanbuljs/schema/0.1.3: + /@istanbuljs/schema@0.1.3: resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} engines: {node: '>=8'} dev: true - /@jest/console/29.5.0: + /@jest/console@29.5.0: resolution: {integrity: sha512-NEpkObxPwyw/XxZVLPmAGKE89IQRp4puc6IQRPru6JKd1M3fW9v1xM1AnzIJE65hbCkzQAdnL8P47e9hzhiYLQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -623,7 +647,7 @@ packages: slash: 3.0.0 dev: true - /@jest/core/29.5.0: + /@jest/core@29.5.0: resolution: {integrity: sha512-28UzQc7ulUrOQw1IsN/kv1QES3q2kkbl/wGslyhAclqZ/8cMdB5M68BffkIdSJgKBUt50d3hbwJ92XESlE7LiQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -644,7 +668,7 @@ packages: exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.5.0 - jest-config: 29.5.0_@types+node@18.16.18 + jest-config: 29.5.0(@types/node@18.16.18) jest-haste-map: 29.5.0 jest-message-util: 29.5.0 jest-regex-util: 29.4.3 @@ -665,7 +689,7 @@ packages: - ts-node dev: true - /@jest/environment/29.5.0: + /@jest/environment@29.5.0: resolution: {integrity: sha512-5FXw2+wD29YU1d4I2htpRX7jYnAyTRjP2CsXQdo9SAM8g3ifxWPSV0HnClSn71xwctr0U3oZIIH+dtbfmnbXVQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -675,14 +699,14 @@ packages: jest-mock: 29.5.0 dev: true - /@jest/expect-utils/29.5.0: + /@jest/expect-utils@29.5.0: resolution: {integrity: sha512-fmKzsidoXQT2KwnrwE0SQq3uj8Z763vzR8LnLBwC2qYWEFpjX8daRsk6rHUM1QvNlEW/UJXNXm59ztmJJWs2Mg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: jest-get-type: 29.4.3 dev: true - /@jest/expect/29.5.0: + /@jest/expect@29.5.0: resolution: {integrity: sha512-PueDR2HGihN3ciUNGr4uelropW7rqUfTiOn+8u0leg/42UhblPxHkfoh0Ruu3I9Y1962P3u2DY4+h7GVTSVU6g==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -692,7 +716,7 @@ packages: - supports-color dev: true - /@jest/fake-timers/29.5.0: + /@jest/fake-timers@29.5.0: resolution: {integrity: sha512-9ARvuAAQcBwDAqOnglWq2zwNIRUDtk/SCkp/ToGEhFv5r86K21l+VEs0qNTaXtyiY0lEePl3kylijSYJQqdbDg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -704,7 +728,7 @@ packages: jest-util: 29.5.0 dev: true - /@jest/globals/29.5.0: + /@jest/globals@29.5.0: resolution: {integrity: sha512-S02y0qMWGihdzNbUiqSAiKSpSozSuHX5UYc7QbnHP+D9Lyw8DgGGCinrN9uSuHPeKgSSzvPom2q1nAtBvUsvPQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -716,7 +740,7 @@ packages: - supports-color dev: true - /@jest/reporters/29.5.0: + /@jest/reporters@29.5.0: resolution: {integrity: sha512-D05STXqj/M8bP9hQNSICtPqz97u7ffGzZu+9XLucXhkOFBqKcXe04JLZOgIekOxdb73MAoBUFnqvf7MCpKk5OA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -753,14 +777,14 @@ packages: - supports-color dev: true - /@jest/schemas/29.4.3: + /@jest/schemas@29.4.3: resolution: {integrity: sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@sinclair/typebox': 0.25.24 dev: true - /@jest/source-map/29.4.3: + /@jest/source-map@29.4.3: resolution: {integrity: sha512-qyt/mb6rLyd9j1jUts4EQncvS6Yy3PM9HghnNv86QBlV+zdL2inCdK1tuVlL+J+lpiw2BI67qXOrX3UurBqQ1w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -769,7 +793,7 @@ packages: graceful-fs: 4.2.11 dev: true - /@jest/test-result/29.5.0: + /@jest/test-result@29.5.0: resolution: {integrity: sha512-fGl4rfitnbfLsrfx1uUpDEESS7zM8JdgZgOCQuxQvL1Sn/I6ijeAVQWGfXI9zb1i9Mzo495cIpVZhA0yr60PkQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -779,7 +803,7 @@ packages: collect-v8-coverage: 1.0.1 dev: true - /@jest/test-sequencer/29.5.0: + /@jest/test-sequencer@29.5.0: resolution: {integrity: sha512-yPafQEcKjkSfDXyvtgiV4pevSeyuA6MQr6ZIdVkWJly9vkqjnFfcfhRQqpD5whjoU8EORki752xQmjaqoFjzMQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -789,7 +813,7 @@ packages: slash: 3.0.0 dev: true - /@jest/transform/29.5.0: + /@jest/transform@29.5.0: resolution: {integrity: sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -812,7 +836,7 @@ packages: - supports-color dev: true - /@jest/types/29.5.0: + /@jest/types@29.5.0: resolution: {integrity: sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -824,7 +848,7 @@ packages: chalk: 4.1.2 dev: true - /@jridgewell/gen-mapping/0.3.3: + /@jridgewell/gen-mapping@0.3.3: resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} engines: {node: '>=6.0.0'} dependencies: @@ -833,32 +857,32 @@ packages: '@jridgewell/trace-mapping': 0.3.18 dev: true - /@jridgewell/resolve-uri/3.1.0: + /@jridgewell/resolve-uri@3.1.0: resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} engines: {node: '>=6.0.0'} dev: true - /@jridgewell/set-array/1.1.2: + /@jridgewell/set-array@1.1.2: resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} engines: {node: '>=6.0.0'} dev: true - /@jridgewell/sourcemap-codec/1.4.14: + /@jridgewell/sourcemap-codec@1.4.14: resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} dev: true - /@jridgewell/sourcemap-codec/1.4.15: + /@jridgewell/sourcemap-codec@1.4.15: resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} dev: true - /@jridgewell/trace-mapping/0.3.18: + /@jridgewell/trace-mapping@0.3.18: resolution: {integrity: sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==} dependencies: '@jridgewell/resolve-uri': 3.1.0 '@jridgewell/sourcemap-codec': 1.4.14 dev: true - /@manypkg/find-root/1.1.0: + /@manypkg/find-root@1.1.0: resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} dependencies: '@babel/runtime': 7.22.5 @@ -867,7 +891,7 @@ packages: fs-extra: 8.1.0 dev: true - /@manypkg/get-packages/1.1.3: + /@manypkg/get-packages@1.1.3: resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} dependencies: '@babel/runtime': 7.22.5 @@ -878,26 +902,26 @@ packages: read-yaml-file: 1.1.0 dev: true - /@marionebl/bundle-id/2.0.1: + /@marionebl/bundle-id@2.0.1: resolution: {integrity: sha512-Mfj4xyHpfmIh45Hd7AaW1+YT2u39p7OxSsZiFkzg3f02QDTXXdyG8aBbgWnQZCBrfheMmJkYX9/gYkxAn7BioQ==} engines: {node: '>=4'} dependencies: '@marionebl/run-applescript': 3.0.0 dev: true - /@marionebl/is/0.5.1-0: + /@marionebl/is@0.5.1-0: resolution: {integrity: sha512-EEU1UUsQQzMaH7nyzB7VzasjtAAMJyN7QNXYL4ghhmcvbrvrHbfcTWCiyjkPjorADxI2gUCINMNiXQc46UFxUA==} engines: {node: '>=4'} dev: true - /@marionebl/run-applescript/3.0.0: + /@marionebl/run-applescript@3.0.0: resolution: {integrity: sha512-dhNj9Y8e+vxWvguBJMK1gSqyR9P5l9QeKtWS+yDDPu2GOb1EgLqvVS9KtPyGnpmvHNiEh+toiwrTuvbbO8bB7A==} engines: {node: '>=4'} dependencies: execa: 0.4.0 dev: true - /@marionebl/sander/0.6.1: + /@marionebl/sander@0.6.1: resolution: {integrity: sha512-7f3zZddAk92G1opoX/glbDO6YbrzmMAJAw0RJAcvunnV7sR4L9llyBUAABptKoF1Jf37UQ1QTJy5p2H4J4rBNA==} dependencies: graceful-fs: 4.2.11 @@ -905,7 +929,7 @@ packages: rimraf: 2.7.1 dev: true - /@nodelib/fs.scandir/2.1.5: + /@nodelib/fs.scandir@2.1.5: resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} dependencies: @@ -913,12 +937,12 @@ packages: run-parallel: 1.2.0 dev: true - /@nodelib/fs.stat/2.0.5: + /@nodelib/fs.stat@2.0.5: resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} engines: {node: '>= 8'} dev: true - /@nodelib/fs.walk/1.2.8: + /@nodelib/fs.walk@1.2.8: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} dependencies: @@ -926,14 +950,14 @@ packages: fastq: 1.15.0 dev: true - /@npmcli/fs/1.1.1: + /@npmcli/fs@1.1.1: resolution: {integrity: sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==} dependencies: '@gar/promisify': 1.1.3 semver: 7.5.3 dev: true - /@npmcli/move-file/1.1.2: + /@npmcli/move-file@1.1.2: resolution: {integrity: sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==} engines: {node: '>=10'} deprecated: This functionality has been moved to @npmcli/fs @@ -942,27 +966,27 @@ packages: rimraf: 3.0.2 dev: true - /@sinclair/typebox/0.25.24: + /@sinclair/typebox@0.25.24: resolution: {integrity: sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==} dev: true - /@sinonjs/commons/3.0.0: + /@sinonjs/commons@3.0.0: resolution: {integrity: sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==} dependencies: type-detect: 4.0.8 dev: true - /@sinonjs/fake-timers/10.3.0: + /@sinonjs/fake-timers@10.3.0: resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} dependencies: '@sinonjs/commons': 3.0.0 dev: true - /@stiligita/constants/1.0.0-0: + /@stiligita/constants@1.0.0-0: resolution: {integrity: sha512-lDrQuFkKRiG/YHa71hWLOiRpiAvsG9stTb3yizjNBV27QRi5TqLjrM1WEkprvrjeZpiEjXNXH3Kz7Jnng7JTCQ==} dev: true - /@stiligita/core/1.0.0-0: + /@stiligita/core@1.0.0-0: resolution: {integrity: sha512-9vFUJARAQQzljemVKvrJTQ1xb1ZDhzjH1MP722tlDjygd8CPgi0m6WIVXXpqLFGG2h5gFxWSzcAZI/a/AKAGzw==} dependencies: '@stiligita/constants': 1.0.0-0 @@ -970,23 +994,23 @@ packages: '@stiligita/dom-elements': 1.0.0-0 dev: true - /@stiligita/dom-elements/1.0.0-0: + /@stiligita/dom-elements@1.0.0-0: resolution: {integrity: sha512-WFjVHN8bm/6GxmxgPuVjOjtT41Azn4QaMn090F2BCYx8vh/AvN2TpHXJiuCfOYtdDtZ1AQK2x7qdpF7BAZ5ILg==} dependencies: '@stiligita/utils': 1.0.0-0 dev: true - /@stiligita/dom/1.0.0-0: + /@stiligita/dom@1.0.0-0: resolution: {integrity: sha512-7tAugrbH5V8a44qB00tqasbfPuhQv4UCNr88l+BjzPffluqDvKa3N2m3m7XGOQBVkVMYHi8HGlLZnWSVSu5xig==} dependencies: '@stiligita/constants': 1.0.0-0 dev: true - /@stiligita/hash-code/1.0.0-0: + /@stiligita/hash-code@1.0.0-0: resolution: {integrity: sha512-ZDKVLZVmwtA+/e5WyidITspB+nH9LQ1RSfj43CwDubuWXgqJT3u6ya/9r0eu5JRhTzsLWUHHPveqFLzBozUpDg==} dev: true - /@stiligita/keyframes/1.0.0-0: + /@stiligita/keyframes@1.0.0-0: resolution: {integrity: sha512-T5fB0Ff0Fgj4JJTqBjugHpoWzB6bGrBJj3zpu7xxsbq2+Sw6sg/3bPQF6Dk7j1FaNk2KeEL9GDCiLh2oZKyghg==} dependencies: '@stiligita/hash-code': 1.0.0-0 @@ -994,7 +1018,7 @@ packages: '@stiligita/templates': 1.0.0-0 dev: true - /@stiligita/react/1.0.0-0: + /@stiligita/react@1.0.0-0: resolution: {integrity: sha512-Lk3pK6OEGu2bBTt4ZZaE/SEPpIYiUpIQN7LwCJWKpsnfbaqs6dD1rqrD/GUH/OJs2jM3ZUc3c+rMej/zxV0MpA==} dependencies: '@stiligita/constants': 1.0.0-0 @@ -1008,7 +1032,7 @@ packages: '@stiligita/utils': 1.0.0-0 dev: true - /@stiligita/store/1.0.0-0: + /@stiligita/store@1.0.0-0: resolution: {integrity: sha512-kFKC9bEYt5142N07P3b8Ly0r5R0yF3V2aAQHjf2oq6iY/ZFeDKzQ+pVUf+KKL7nRiVk9dnXltAVKmtsVaBebeg==} dependencies: '@stiligita/dom': 1.0.0-0 @@ -1016,7 +1040,7 @@ packages: '@stiligita/utils': 1.0.0-0 dev: true - /@stiligita/stylesheets/1.0.0-0: + /@stiligita/stylesheets@1.0.0-0: resolution: {integrity: sha512-tOPRnUyZtbBmz50y28BKD3Ip4IxPxKMwFqcFc92qiy5XDNH84Q6duLFlcVM0EMUdNiL0/UMbf7+jBIboZn4Lfg==} dependencies: '@stiligita/constants': 1.0.0-0 @@ -1024,17 +1048,17 @@ packages: '@stiligita/store': 1.0.0-0 dev: true - /@stiligita/templates/1.0.0-0: + /@stiligita/templates@1.0.0-0: resolution: {integrity: sha512-2GpffrhWKX1xGgmKss1dG4xcNTiRNwB5oJQCVnL8Ikc5jQDjsd2wGpp78DY1bcMepSD/me+0q1CsjM5hgFbjdw==} dependencies: '@stiligita/utils': 1.0.0-0 dev: true - /@stiligita/utils/1.0.0-0: + /@stiligita/utils@1.0.0-0: resolution: {integrity: sha512-8RRAMOB+vEC8FknZtoNKQnttATUN9uERYFC7+qjsd3X3UTb3o2oqVmLFU/kUY5Q72PxbBQqX7u0NAEnEytuMtA==} dev: true - /@svitejs/changesets-changelog-github-compact/1.1.0: + /@svitejs/changesets-changelog-github-compact@1.1.0: resolution: {integrity: sha512-qhUGGDHcpbY2zpjW3SwqchuW8J/5EzlPFud7xNntHKA7f3a/mx5+g+ruJKFHSAiVZYo30PALt+AyhmPUNKH/Og==} engines: {node: ^14.13.1 || ^16.0.0 || >=18} dependencies: @@ -1044,12 +1068,12 @@ packages: - encoding dev: true - /@tootallnate/once/1.1.2: + /@tootallnate/once@1.1.2: resolution: {integrity: sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==} engines: {node: '>= 6'} dev: true - /@types/babel__core/7.20.1: + /@types/babel__core@7.20.1: resolution: {integrity: sha512-aACu/U/omhdk15O4Nfb+fHgH/z3QsfQzpnvRZhYhThms83ZnAOZz7zZAWO7mn2yyNQaA4xTO8GLK3uqFU4bYYw==} dependencies: '@babel/parser': 7.22.5 @@ -1059,146 +1083,146 @@ packages: '@types/babel__traverse': 7.20.1 dev: true - /@types/babel__generator/7.6.4: + /@types/babel__generator@7.6.4: resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==} dependencies: '@babel/types': 7.22.5 dev: true - /@types/babel__template/7.4.1: + /@types/babel__template@7.4.1: resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} dependencies: '@babel/parser': 7.22.5 '@babel/types': 7.22.5 dev: true - /@types/babel__traverse/7.20.1: + /@types/babel__traverse@7.20.1: resolution: {integrity: sha512-MitHFXnhtgwsGZWtT68URpOvLN4EREih1u3QtQiN4VdAxWKRVvGCSvw/Qth0M0Qq3pJpnGOu5JaM/ydK7OGbqg==} dependencies: '@babel/types': 7.22.5 dev: true - /@types/glob/8.1.0: + /@types/glob@8.1.0: resolution: {integrity: sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w==} dependencies: '@types/minimatch': 5.1.2 '@types/node': 18.16.18 dev: true - /@types/globby/6.1.0: + /@types/globby@6.1.0: resolution: {integrity: sha512-j3XSDNoK4LO5T+ZviQD6PqfEjm07QFEacOTbJR3hnLWuWX0ZMLJl9oRPgj1PyrfGbXhfHFkksC9QZ9HFltJyrw==} dependencies: '@types/glob': 8.1.0 dev: true - /@types/graceful-fs/4.1.6: + /@types/graceful-fs@4.1.6: resolution: {integrity: sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==} dependencies: '@types/node': 18.16.18 dev: true - /@types/ini/1.3.31: + /@types/ini@1.3.31: resolution: {integrity: sha512-8ecxxaG4AlVEM1k9+BsziMw8UsX0qy3jYI1ad/71RrDZ+rdL6aZB0wLfAuflQiDhkD5o4yJ0uPK3OSUic3fG0w==} dev: true - /@types/is-ci/3.0.0: + /@types/is-ci@3.0.0: resolution: {integrity: sha512-Q0Op0hdWbYd1iahB+IFNQcWXFq4O0Q5MwQP7uN0souuQ4rPg1vEYcnIOfr1gY+M+6rc8FGoRaBO1mOOvL29sEQ==} dependencies: ci-info: 3.8.0 dev: true - /@types/istanbul-lib-coverage/2.0.4: + /@types/istanbul-lib-coverage@2.0.4: resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} dev: true - /@types/istanbul-lib-report/3.0.0: + /@types/istanbul-lib-report@3.0.0: resolution: {integrity: sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==} dependencies: '@types/istanbul-lib-coverage': 2.0.4 dev: true - /@types/istanbul-reports/3.0.1: + /@types/istanbul-reports@3.0.1: resolution: {integrity: sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==} dependencies: '@types/istanbul-lib-report': 3.0.0 dev: true - /@types/jest/21.1.10: + /@types/jest@21.1.10: resolution: {integrity: sha512-qDyqzbcyNgW2RgWbl606xCYQ+5fK9khOW5+Hl3wH7RggVES0dB6GcZvpmPs/XIty5qpu1xYCwpiK+iRkJ3xFBw==} dev: true - /@types/jest/29.5.2: + /@types/jest@29.5.2: resolution: {integrity: sha512-mSoZVJF5YzGVCk+FsDxzDuH7s+SCkzrgKZzf0Z0T2WudhBUPoF6ktoTPC4R0ZoCPCV5xUvuU6ias5NvxcBcMMg==} dependencies: expect: 29.5.0 pretty-format: 29.5.0 dev: true - /@types/lodash/4.14.195: + /@types/lodash@4.14.195: resolution: {integrity: sha512-Hwx9EUgdwf2GLarOjQp5ZH8ZmblzcbTBC2wtQWNKARBSxM9ezRIAUpeDTgoQRAFB0+8CNWXVA9+MaSOzOF3nPg==} dev: true - /@types/minimatch/5.1.2: + /@types/minimatch@5.1.2: resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} dev: true - /@types/minimist/1.2.2: + /@types/minimist@1.2.2: resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} dev: true - /@types/node/12.20.55: + /@types/node@12.20.55: resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} dev: true - /@types/node/18.16.18: + /@types/node@18.16.18: resolution: {integrity: sha512-/aNaQZD0+iSBAGnvvN2Cx92HqE5sZCPZtx2TsK+4nvV23fFe09jVDvpArXr2j9DnYlzuU9WuoykDDc6wqvpNcw==} dev: true - /@types/node/8.10.66: + /@types/node@8.10.66: resolution: {integrity: sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw==} dev: true - /@types/normalize-package-data/2.4.1: + /@types/normalize-package-data@2.4.1: resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} dev: true - /@types/prettier/2.7.3: + /@types/prettier@2.7.3: resolution: {integrity: sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==} dev: true - /@types/q/1.5.5: + /@types/q@1.5.5: resolution: {integrity: sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ==} dev: true - /@types/semver/7.5.0: + /@types/semver@7.5.0: resolution: {integrity: sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==} dev: true - /@types/shell-escape/0.2.1: + /@types/shell-escape@0.2.1: resolution: {integrity: sha512-95hZXmBvwtvsLMPefKT9xquUSAJXsVDUaipyUiYoYi3ZdLhZ3w30w230Ugs96IdoJQb5ECvj0D82Jj/op00qWQ==} dev: true - /@types/stack-utils/2.0.1: + /@types/stack-utils@2.0.1: resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==} dev: true - /@types/yargs-parser/21.0.0: + /@types/yargs-parser@21.0.0: resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} dev: true - /@types/yargs/17.0.24: + /@types/yargs@17.0.24: resolution: {integrity: sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==} dependencies: '@types/yargs-parser': 21.0.0 dev: true - /abcq/1.0.2: + /abcq@1.0.2: resolution: {integrity: sha512-Fjk/LXe1aHL7zQcjqDoKhYuIdB3iyv1S3/YJNPe6D0QjJuKXKq+N6ei5kVZtsr0Rp6ueTmhW4yZlLQaIKptyFg==} dependencies: tslib: 1.14.1 dev: true - /agent-base/6.0.2: + /agent-base@6.0.2: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} engines: {node: '>= 6.0.0'} dependencies: @@ -1207,7 +1231,7 @@ packages: - supports-color dev: true - /agentkeepalive/4.3.0: + /agentkeepalive@4.3.0: resolution: {integrity: sha512-7Epl1Blf4Sy37j4v9f9FjICCh4+KAQOyXgHEwlyBiAQLbhKdq/i2QQU3amQalS/wPhdPzDXPL5DMR5bkn+YeWg==} engines: {node: '>= 8.0.0'} dependencies: @@ -1218,7 +1242,7 @@ packages: - supports-color dev: true - /aggregate-error/1.0.0: + /aggregate-error@1.0.0: resolution: {integrity: sha512-7heCOdGepPfjajU0Hi8wJypLsZIB6AeDN/YzW+Mmy8QU7iaEW579WzA9cWbke3cGYwmBazCVL2Zzdhq+iQ6pBg==} engines: {node: '>=4'} dependencies: @@ -1226,7 +1250,7 @@ packages: indent-string: 3.2.0 dev: true - /aggregate-error/3.1.0: + /aggregate-error@3.1.0: resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} engines: {node: '>=8'} dependencies: @@ -1234,51 +1258,51 @@ packages: indent-string: 4.0.0 dev: true - /ansi-colors/4.1.3: + /ansi-colors@4.1.3: resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} engines: {node: '>=6'} dev: true - /ansi-escapes/4.3.2: + /ansi-escapes@4.3.2: resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} engines: {node: '>=8'} dependencies: type-fest: 0.21.3 dev: true - /ansi-regex/5.0.1: + /ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} dev: true - /ansi-styles/3.2.1: + /ansi-styles@3.2.1: resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} engines: {node: '>=4'} dependencies: color-convert: 1.9.3 dev: true - /ansi-styles/4.3.0: + /ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} dependencies: color-convert: 2.0.1 dev: true - /ansi-styles/5.2.0: + /ansi-styles@5.2.0: resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} engines: {node: '>=10'} dev: true - /ansi-to-rgb/1.0.0: + /ansi-to-rgb@1.0.0: resolution: {integrity: sha512-Si3NA3kWxKg12Aj+IVElMbYZ1l0OC0g+goa6Xn0sA2vp8GMiGp6AnVbMvwNQjkEB6WSb4SVyGflxuoTaNucQIw==} dev: true - /any-promise/1.3.0: + /any-promise@1.3.0: resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} dev: true - /anymatch/3.1.3: + /anymatch@3.1.3: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} dependencies: @@ -1286,30 +1310,30 @@ packages: picomatch: 2.3.1 dev: true - /argparse/1.0.10: + /argparse@1.0.10: resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} dependencies: sprintf-js: 1.0.3 dev: true - /array-buffer-byte-length/1.0.0: + /array-buffer-byte-length@1.0.0: resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} dependencies: call-bind: 1.0.2 is-array-buffer: 3.0.2 dev: true - /array-find-index/1.0.2: + /array-find-index@1.0.2: resolution: {integrity: sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw==} engines: {node: '>=0.10.0'} dev: true - /array-union/2.1.0: + /array-union@2.1.0: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} dev: true - /array.prototype.flat/1.3.1: + /array.prototype.flat@1.3.1: resolution: {integrity: sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==} engines: {node: '>= 0.4'} dependencies: @@ -1319,7 +1343,7 @@ packages: es-shim-unscopables: 1.0.0 dev: true - /array.prototype.reduce/1.0.5: + /array.prototype.reduce@1.0.5: resolution: {integrity: sha512-kDdugMl7id9COE8R7MHF5jWk7Dqt/fs4Pv+JXoICnYwqpjjjbUurz6w5fT5IG6brLdJhv6/VoHB0H7oyIBXd+Q==} engines: {node: '>= 0.4'} dependencies: @@ -1330,17 +1354,17 @@ packages: is-string: 1.0.7 dev: true - /arrify/1.0.1: + /arrify@1.0.1: resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} engines: {node: '>=0.10.0'} dev: true - /available-typed-arrays/1.0.5: + /available-typed-arrays@1.0.5: resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} engines: {node: '>= 0.4'} dev: true - /babel-jest/29.5.0_@babel+core@7.22.5: + /babel-jest@29.5.0(@babel/core@7.22.5): resolution: {integrity: sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -1350,7 +1374,7 @@ packages: '@jest/transform': 29.5.0 '@types/babel__core': 7.20.1 babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 29.5.0_@babel+core@7.22.5 + babel-preset-jest: 29.5.0(@babel/core@7.22.5) chalk: 4.1.2 graceful-fs: 4.2.11 slash: 3.0.0 @@ -1358,7 +1382,7 @@ packages: - supports-color dev: true - /babel-plugin-istanbul/6.1.1: + /babel-plugin-istanbul@6.1.1: resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} engines: {node: '>=8'} dependencies: @@ -1371,7 +1395,7 @@ packages: - supports-color dev: true - /babel-plugin-jest-hoist/29.5.0: + /babel-plugin-jest-hoist@29.5.0: resolution: {integrity: sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -1381,27 +1405,27 @@ packages: '@types/babel__traverse': 7.20.1 dev: true - /babel-preset-current-node-syntax/1.0.1_@babel+core@7.22.5: + /babel-preset-current-node-syntax@1.0.1(@babel/core@7.22.5): resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} peerDependencies: '@babel/core': ^7.0.0 dependencies: '@babel/core': 7.22.5 - '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.22.5 - '@babel/plugin-syntax-bigint': 7.8.3_@babel+core@7.22.5 - '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.22.5 - '@babel/plugin-syntax-import-meta': 7.10.4_@babel+core@7.22.5 - '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.22.5 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.22.5 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.22.5 - '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.22.5 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.22.5 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.22.5 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.22.5 - '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.22.5 - dev: true - - /babel-preset-jest/29.5.0_@babel+core@7.22.5: + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.5) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.22.5) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.22.5) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.22.5) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.5) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.5) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.5) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.5) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.5) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.5) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.5) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.22.5) + dev: true + + /babel-preset-jest@29.5.0(@babel/core@7.22.5): resolution: {integrity: sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -1409,60 +1433,60 @@ packages: dependencies: '@babel/core': 7.22.5 babel-plugin-jest-hoist: 29.5.0 - babel-preset-current-node-syntax: 1.0.1_@babel+core@7.22.5 + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.5) dev: true - /balanced-match/1.0.2: + /balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} dev: true - /base64-js/1.2.0: + /base64-js@1.2.0: resolution: {integrity: sha512-hURVuTTGLOppKhjSe9lZy4NCjnvaIAF/juwazv4WtHwsk5rxKrU1WbxN+XtwKDSvkrNbIIaTBQd9wUsSwruZUg==} dev: true - /better-path-resolve/1.0.0: + /better-path-resolve@1.0.0: resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} engines: {node: '>=4'} dependencies: is-windows: 1.0.2 dev: true - /big-integer/1.6.51: + /big-integer@1.6.51: resolution: {integrity: sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==} engines: {node: '>=0.6'} dev: true - /boolbase/1.0.0: + /boolbase@1.0.0: resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} dev: true - /bplist-parser/0.1.1: + /bplist-parser@0.1.1: resolution: {integrity: sha512-2AEM0FXy8ZxVLBuqX0hqt1gDwcnz2zygEkQ6zaD5Wko/sB9paUNwlpawrFtKeHUAQUOzjVy9AO4oeonqIHKA9Q==} dependencies: big-integer: 1.6.51 dev: true - /brace-expansion/1.1.11: + /brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 dev: true - /braces/3.0.2: + /braces@3.0.2: resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} engines: {node: '>=8'} dependencies: fill-range: 7.0.1 dev: true - /breakword/1.0.6: + /breakword@1.0.6: resolution: {integrity: sha512-yjxDAYyK/pBvws9H4xKYpLDpYKEH6CzrBPAuXq3x18I+c/2MkVtT3qAr7Oloi6Dss9qNhPVueAAVU1CSeNDIXw==} dependencies: wcwidth: 1.0.1 dev: true - /browserslist/4.21.9: + /browserslist@4.21.9: resolution: {integrity: sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true @@ -1470,32 +1494,32 @@ packages: caniuse-lite: 1.0.30001509 electron-to-chromium: 1.4.445 node-releases: 2.0.12 - update-browserslist-db: 1.0.11_browserslist@4.21.9 + update-browserslist-db: 1.0.11(browserslist@4.21.9) dev: true - /bs-logger/0.2.6: + /bs-logger@0.2.6: resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} engines: {node: '>= 6'} dependencies: fast-json-stable-stringify: 2.1.0 dev: true - /bser/2.1.1: + /bser@2.1.1: resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} dependencies: node-int64: 0.4.0 dev: true - /buffer-from/1.1.2: + /buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} dev: true - /bytes/3.1.2: + /bytes@3.1.2: resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} engines: {node: '>= 0.8'} dev: true - /cacache/15.3.0: + /cacache@15.3.0: resolution: {integrity: sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==} engines: {node: '>= 10'} dependencies: @@ -1521,19 +1545,19 @@ packages: - bluebird dev: true - /call-bind/1.0.2: + /call-bind@1.0.2: resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} dependencies: function-bind: 1.1.1 get-intrinsic: 1.2.1 dev: true - /callsites/3.1.0: + /callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} dev: true - /camelcase-keys/2.1.0: + /camelcase-keys@2.1.0: resolution: {integrity: sha512-bA/Z/DERHKqoEOrp+qeGKw1QlvEQkGZSc0XaY6VnTxZr+Kv1G5zFwttpjv8qxZ/sBPT4nthwZaAcsAZTJlSKXQ==} engines: {node: '>=0.10.0'} dependencies: @@ -1541,7 +1565,7 @@ packages: map-obj: 1.0.1 dev: true - /camelcase-keys/6.2.2: + /camelcase-keys@6.2.2: resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} engines: {node: '>=8'} dependencies: @@ -1550,26 +1574,26 @@ packages: quick-lru: 4.0.1 dev: true - /camelcase/2.1.1: + /camelcase@2.1.1: resolution: {integrity: sha512-DLIsRzJVBQu72meAKPkWQOLcujdXT32hwdfnkI1frSiSRMK1MofjKHf+MEx0SB6fjEFXL8fBDv1dKymBlOp4Qw==} engines: {node: '>=0.10.0'} dev: true - /camelcase/5.3.1: + /camelcase@5.3.1: resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} engines: {node: '>=6'} dev: true - /camelcase/6.3.0: + /camelcase@6.3.0: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} dev: true - /caniuse-lite/1.0.30001509: + /caniuse-lite@1.0.30001509: resolution: {integrity: sha512-2uDDk+TRiTX5hMcUYT/7CSyzMZxjfGu0vAUjS2g0LSD8UoXOv0LtpH4LxGMemsiPq6LCVIUjNwVM0erkOkGCDA==} dev: true - /chalk/2.4.2: + /chalk@2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} engines: {node: '>=4'} dependencies: @@ -1578,7 +1602,7 @@ packages: supports-color: 5.5.0 dev: true - /chalk/4.1.2: + /chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} dependencies: @@ -1586,45 +1610,45 @@ packages: supports-color: 7.2.0 dev: true - /chalk/5.3.0: + /chalk@5.3.0: resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} dev: true - /char-regex/1.0.2: + /char-regex@1.0.2: resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} engines: {node: '>=10'} dev: true - /chardet/0.7.0: + /chardet@0.7.0: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} dev: true - /chownr/2.0.0: + /chownr@2.0.0: resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} engines: {node: '>=10'} dev: true - /ci-info/3.8.0: + /ci-info@3.8.0: resolution: {integrity: sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==} engines: {node: '>=8'} dev: true - /cjs-module-lexer/1.2.3: + /cjs-module-lexer@1.2.3: resolution: {integrity: sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==} dev: true - /clean-stack/1.3.0: + /clean-stack@1.3.0: resolution: {integrity: sha512-4CCmhqt4yqbQQI9REDKCf+N6U3SToC5o7PoKCq4veHvr30TJ2Vmz1mYYF23VC0E7Z13tf4CXh9jXY0VC+Jtdng==} engines: {node: '>=4'} dev: true - /clean-stack/2.2.0: + /clean-stack@2.2.0: resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} engines: {node: '>=6'} dev: true - /cli-highlight/2.1.11: + /cli-highlight@2.1.11: resolution: {integrity: sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg==} engines: {node: '>=8.0.0', npm: '>=5.0.0'} hasBin: true @@ -1637,7 +1661,7 @@ packages: yargs: 16.2.0 dev: true - /cliui/6.0.0: + /cliui@6.0.0: resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} dependencies: string-width: 4.2.3 @@ -1645,7 +1669,7 @@ packages: wrap-ansi: 6.2.0 dev: true - /cliui/7.0.4: + /cliui@7.0.4: resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} dependencies: string-width: 4.2.3 @@ -1653,7 +1677,7 @@ packages: wrap-ansi: 7.0.0 dev: true - /cliui/8.0.1: + /cliui@8.0.1: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} engines: {node: '>=12'} dependencies: @@ -1662,12 +1686,12 @@ packages: wrap-ansi: 7.0.0 dev: true - /clone/1.0.4: + /clone@1.0.4: resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} engines: {node: '>=0.8'} dev: true - /cmd-ts/0.12.1: + /cmd-ts@0.12.1: resolution: {integrity: sha512-k93f6LgFEzx7/vBy5qV+tu1VI8YuH0DZmwNXPvRaDR4Qp7Fl9+pUSylX/CKHrWoKqHMJjNOLb1NeYTvHOjQ2Kw==} dependencies: chalk: 4.1.2 @@ -1678,12 +1702,12 @@ packages: - supports-color dev: true - /co/4.6.0: + /co@4.6.0: resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} dev: true - /coa/2.0.2: + /coa@2.0.2: resolution: {integrity: sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==} engines: {node: '>= 4.0'} dependencies: @@ -1692,66 +1716,66 @@ packages: q: 1.5.1 dev: true - /collect-v8-coverage/1.0.1: + /collect-v8-coverage@1.0.1: resolution: {integrity: sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==} dev: true - /color-convert/1.9.3: + /color-convert@1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} dependencies: color-name: 1.1.3 dev: true - /color-convert/2.0.1: + /color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} dependencies: color-name: 1.1.4 dev: true - /color-name/1.1.3: + /color-name@1.1.3: resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} dev: true - /color-name/1.1.4: + /color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} dev: true - /color-string/1.9.1: + /color-string@1.9.1: resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} dependencies: color-name: 1.1.4 simple-swizzle: 0.2.2 dev: true - /color/2.0.1: + /color@2.0.1: resolution: {integrity: sha512-ubUCVVKfT7r2w2D3qtHakj8mbmKms+tThR8gI8zEYCbUBl8/voqFGt3kgBqGwXAopgXybnkuOq+qMYCRrp4cXw==} dependencies: color-convert: 1.9.3 color-string: 1.9.1 dev: true - /command-exists/1.2.9: + /command-exists@1.2.9: resolution: {integrity: sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==} dev: true - /concat-map/0.0.1: + /concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} dev: true - /convert-source-map/1.9.0: + /convert-source-map@1.9.0: resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} dev: true - /convert-source-map/2.0.0: + /convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} dev: true - /core-util-is/1.0.3: + /core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} dev: true - /cross-env/7.0.3: + /cross-env@7.0.3: resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==} engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'} hasBin: true @@ -1759,7 +1783,7 @@ packages: cross-spawn: 7.0.3 dev: true - /cross-spawn-async/2.2.5: + /cross-spawn-async@2.2.5: resolution: {integrity: sha512-snteb3aVrxYYOX9e8BabYFK9WhCDhTlw1YQktfTthBogxri4/2r9U2nQc0ffY73ZAxezDc+U8gvHAeU1wy1ubQ==} deprecated: cross-spawn no longer requires a build toolchain, use it instead dependencies: @@ -1767,7 +1791,7 @@ packages: which: 1.3.1 dev: true - /cross-spawn/5.1.0: + /cross-spawn@5.1.0: resolution: {integrity: sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==} dependencies: lru-cache: 4.1.5 @@ -1775,7 +1799,7 @@ packages: which: 1.3.1 dev: true - /cross-spawn/7.0.3: + /cross-spawn@7.0.3: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} engines: {node: '>= 8'} dependencies: @@ -1784,16 +1808,16 @@ packages: which: 2.0.2 dev: true - /crypto-random-string/1.0.0: + /crypto-random-string@1.0.0: resolution: {integrity: sha512-GsVpkFPlycH7/fRR7Dhcmnoii54gV1nz7y4CWyeFS14N+JVBBhY+r8amRHE4BwSYal7BPTDp8isvAlCxyFt3Hg==} engines: {node: '>=4'} dev: true - /css-select-base-adapter/0.1.1: + /css-select-base-adapter@0.1.1: resolution: {integrity: sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==} dev: true - /css-select/2.1.0: + /css-select@2.1.0: resolution: {integrity: sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==} dependencies: boolbase: 1.0.0 @@ -1802,7 +1826,7 @@ packages: nth-check: 1.0.2 dev: true - /css-tree/1.0.0-alpha.37: + /css-tree@1.0.0-alpha.37: resolution: {integrity: sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==} engines: {node: '>=8.0.0'} dependencies: @@ -1810,7 +1834,7 @@ packages: source-map: 0.6.1 dev: true - /css-tree/1.1.3: + /css-tree@1.1.3: resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==} engines: {node: '>=8.0.0'} dependencies: @@ -1818,31 +1842,31 @@ packages: source-map: 0.6.1 dev: true - /css-what/3.4.2: + /css-what@3.4.2: resolution: {integrity: sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==} engines: {node: '>= 6'} dev: true - /csso/4.2.0: + /csso@4.2.0: resolution: {integrity: sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==} engines: {node: '>=8.0.0'} dependencies: css-tree: 1.1.3 dev: true - /csv-generate/3.4.3: + /csv-generate@3.4.3: resolution: {integrity: sha512-w/T+rqR0vwvHqWs/1ZyMDWtHHSJaN06klRqJXBEpDJaM/+dZkso0OKh1VcuuYvK3XM53KysVNq8Ko/epCK8wOw==} dev: true - /csv-parse/4.16.3: + /csv-parse@4.16.3: resolution: {integrity: sha512-cO1I/zmz4w2dcKHVvpCr7JVRu8/FymG5OEpmvsZYlccYolPBLoVGKUHgNoc4ZGkFeFlWGEDmMyBM+TTqRdW/wg==} dev: true - /csv-stringify/5.6.5: + /csv-stringify@5.6.5: resolution: {integrity: sha512-PjiQ659aQ+fUTQqSrd1XEDnOr52jh30RBurfzkscaE2tPaFsDH5wOAHJiw8XAHphRknCwMUE9KRayc4K/NbO8A==} dev: true - /csv/5.5.3: + /csv@5.5.3: resolution: {integrity: sha512-QTaY0XjjhTQOdguARF0lGKm5/mEq9PD9/VhZZegHDIBq2tQwgNpHc3dneD4mGo2iJs+fTKv5Bp0fZ+BRuY3Z0g==} engines: {node: '>= 0.1.90'} dependencies: @@ -1852,23 +1876,23 @@ packages: stream-transform: 2.1.3 dev: true - /currently-unhandled/0.4.1: + /currently-unhandled@0.4.1: resolution: {integrity: sha512-/fITjgjGU50vjQ4FH6eUoYu+iUoUKIXws2hL15JJpIR+BbTxaXQsMuuyjtNh2WqsSBS5nsaZHFsFecyw5CCAng==} engines: {node: '>=0.10.0'} dependencies: array-find-index: 1.0.2 dev: true - /data-uri-to-buffer/4.0.1: + /data-uri-to-buffer@4.0.1: resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} engines: {node: '>= 12'} dev: true - /dataloader/1.4.0: + /dataloader@1.4.0: resolution: {integrity: sha512-68s5jYdlvasItOJnCuI2Q9s4q98g0pCyL3HrcKJu8KNugUl8ahgmZYg38ysLTgQjjXX3H8CJLkAvWrclWfcalw==} dev: true - /debug/4.3.4: + /debug@4.3.4: resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} peerDependencies: @@ -1880,7 +1904,7 @@ packages: ms: 2.1.2 dev: true - /decamelize-keys/1.1.1: + /decamelize-keys@1.1.1: resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} engines: {node: '>=0.10.0'} dependencies: @@ -1888,27 +1912,27 @@ packages: map-obj: 1.0.1 dev: true - /decamelize/1.2.0: + /decamelize@1.2.0: resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} engines: {node: '>=0.10.0'} dev: true - /dedent/0.7.0: + /dedent@0.7.0: resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} dev: true - /deepmerge/4.3.1: + /deepmerge@4.3.1: resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} engines: {node: '>=0.10.0'} dev: true - /defaults/1.0.4: + /defaults@1.0.4: resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} dependencies: clone: 1.0.4 dev: true - /define-properties/1.2.0: + /define-properties@1.2.0: resolution: {integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==} engines: {node: '>= 0.4'} dependencies: @@ -1916,105 +1940,105 @@ packages: object-keys: 1.1.1 dev: true - /depd/2.0.0: + /depd@2.0.0: resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} engines: {node: '>= 0.8'} dev: true - /detect-indent/6.1.0: + /detect-indent@6.1.0: resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} engines: {node: '>=8'} dev: true - /detect-newline/3.1.0: + /detect-newline@3.1.0: resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} engines: {node: '>=8'} dev: true - /didyoumean/1.2.2: + /didyoumean@1.2.2: resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} dev: true - /diff-sequences/29.4.3: + /diff-sequences@29.4.3: resolution: {integrity: sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true - /dir-glob/3.0.1: + /dir-glob@3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} dependencies: path-type: 4.0.0 dev: true - /dom-serializer/0.2.2: + /dom-serializer@0.2.2: resolution: {integrity: sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==} dependencies: domelementtype: 2.3.0 entities: 2.2.0 dev: true - /domelementtype/1.3.1: + /domelementtype@1.3.1: resolution: {integrity: sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==} dev: true - /domelementtype/2.3.0: + /domelementtype@2.3.0: resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} dev: true - /domutils/1.7.0: + /domutils@1.7.0: resolution: {integrity: sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==} dependencies: dom-serializer: 0.2.2 domelementtype: 1.3.1 dev: true - /dotenv/16.3.1: + /dotenv@16.3.1: resolution: {integrity: sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==} engines: {node: '>=12'} dev: true - /electron-to-chromium/1.4.445: + /electron-to-chromium@1.4.445: resolution: {integrity: sha512-++DB+9VK8SBJwC+X1zlMfJ1tMA3F0ipi39GdEp+x3cV2TyBihqAgad8cNMWtLDEkbH39nlDQP7PfGrDr3Dr7HA==} dev: true - /emittery/0.13.1: + /emittery@0.13.1: resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} engines: {node: '>=12'} dev: true - /emoji-regex/8.0.0: + /emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} dev: true - /encoding/0.1.13: + /encoding@0.1.13: resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} dependencies: iconv-lite: 0.6.3 dev: true - /enquirer/2.3.6: + /enquirer@2.3.6: resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} engines: {node: '>=8.6'} dependencies: ansi-colors: 4.1.3 dev: true - /entities/2.2.0: + /entities@2.2.0: resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} dev: true - /err-code/2.0.3: + /err-code@2.0.3: resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==} dev: true - /error-ex/1.3.2: + /error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} dependencies: is-arrayish: 0.2.1 dev: true - /es-abstract/1.21.2: + /es-abstract@1.21.2: resolution: {integrity: sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==} engines: {node: '>= 0.4'} dependencies: @@ -2054,11 +2078,11 @@ packages: which-typed-array: 1.1.9 dev: true - /es-array-method-boxes-properly/1.0.0: + /es-array-method-boxes-properly@1.0.0: resolution: {integrity: sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==} dev: true - /es-set-tostringtag/2.0.1: + /es-set-tostringtag@2.0.1: resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==} engines: {node: '>= 0.4'} dependencies: @@ -2067,13 +2091,13 @@ packages: has-tostringtag: 1.0.0 dev: true - /es-shim-unscopables/1.0.0: + /es-shim-unscopables@1.0.0: resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} dependencies: has: 1.0.3 dev: true - /es-to-primitive/1.2.1: + /es-to-primitive@1.2.1: resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} engines: {node: '>= 0.4'} dependencies: @@ -2082,28 +2106,28 @@ packages: is-symbol: 1.0.4 dev: true - /escalade/3.1.1: + /escalade@3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} engines: {node: '>=6'} dev: true - /escape-string-regexp/1.0.5: + /escape-string-regexp@1.0.5: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} engines: {node: '>=0.8.0'} dev: true - /escape-string-regexp/2.0.0: + /escape-string-regexp@2.0.0: resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} engines: {node: '>=8'} dev: true - /esprima/4.0.1: + /esprima@4.0.1: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} engines: {node: '>=4'} hasBin: true dev: true - /execa/0.4.0: + /execa@0.4.0: resolution: {integrity: sha512-QPexBaNjeOjyiZ47q0FCukTO1kX3F+HMM0EWpnxXddcr3MZtElILMkz9Y38nmSZtp03+ZiSRMffrKWBPOIoSIg==} engines: {node: '>=0.12'} dependencies: @@ -2115,7 +2139,7 @@ packages: strip-eof: 1.0.0 dev: true - /execa/0.8.0: + /execa@0.8.0: resolution: {integrity: sha512-zDWS+Rb1E8BlqqhALSt9kUhss8Qq4nN3iof3gsOdyINksElaPyNBtKUMTR62qhvgVWR0CqCX7sdnKe4MnUbFEA==} engines: {node: '>=4'} dependencies: @@ -2128,7 +2152,7 @@ packages: strip-eof: 1.0.0 dev: true - /execa/5.1.1: + /execa@5.1.1: resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} engines: {node: '>=10'} dependencies: @@ -2143,7 +2167,7 @@ packages: strip-final-newline: 2.0.0 dev: true - /execa/7.1.1: + /execa@7.1.1: resolution: {integrity: sha512-wH0eMf/UXckdUYnO21+HDztteVv05rq2GXksxT4fCGeHkBhw1DROXh40wcjMcRqDOWE7iPJ4n3M7e2+YFP+76Q==} engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} dependencies: @@ -2158,12 +2182,12 @@ packages: strip-final-newline: 3.0.0 dev: true - /exit/0.1.2: + /exit@0.1.2: resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} engines: {node: '>= 0.8.0'} dev: true - /expect/29.5.0: + /expect@29.5.0: resolution: {integrity: sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -2174,11 +2198,11 @@ packages: jest-util: 29.5.0 dev: true - /extendable-error/0.1.7: + /extendable-error@0.1.7: resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} dev: true - /external-editor/3.1.0: + /external-editor@3.1.0: resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} engines: {node: '>=4'} dependencies: @@ -2187,7 +2211,7 @@ packages: tmp: 0.0.33 dev: true - /fast-glob/3.2.12: + /fast-glob@3.2.12: resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} engines: {node: '>=8.6.0'} dependencies: @@ -2198,23 +2222,23 @@ packages: micromatch: 4.0.5 dev: true - /fast-json-stable-stringify/2.1.0: + /fast-json-stable-stringify@2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} dev: true - /fastq/1.15.0: + /fastq@1.15.0: resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} dependencies: reusify: 1.0.4 dev: true - /fb-watchman/2.0.2: + /fb-watchman@2.0.2: resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} dependencies: bser: 2.1.1 dev: true - /fetch-blob/3.2.0: + /fetch-blob@3.2.0: resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} engines: {node: ^12.20 || >= 14.13} dependencies: @@ -2222,14 +2246,14 @@ packages: web-streams-polyfill: 3.2.1 dev: true - /fill-range/7.0.1: + /fill-range@7.0.1: resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} engines: {node: '>=8'} dependencies: to-regex-range: 5.0.1 dev: true - /find-up/1.1.2: + /find-up@1.1.2: resolution: {integrity: sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==} engines: {node: '>=0.10.0'} dependencies: @@ -2237,7 +2261,7 @@ packages: pinkie-promise: 2.0.1 dev: true - /find-up/4.1.0: + /find-up@4.1.0: resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} engines: {node: '>=8'} dependencies: @@ -2245,7 +2269,7 @@ packages: path-exists: 4.0.0 dev: true - /find-up/5.0.0: + /find-up@5.0.0: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} dependencies: @@ -2253,27 +2277,27 @@ packages: path-exists: 4.0.0 dev: true - /find-yarn-workspace-root2/1.2.16: + /find-yarn-workspace-root2@1.2.16: resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==} dependencies: micromatch: 4.0.5 pkg-dir: 4.2.0 dev: true - /for-each/0.3.3: + /for-each@0.3.3: resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} dependencies: is-callable: 1.2.7 dev: true - /formdata-polyfill/4.0.10: + /formdata-polyfill@4.0.10: resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} engines: {node: '>=12.20.0'} dependencies: fetch-blob: 3.2.0 dev: true - /fs-extra/7.0.1: + /fs-extra@7.0.1: resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} engines: {node: '>=6 <7 || >=8'} dependencies: @@ -2282,7 +2306,7 @@ packages: universalify: 0.1.2 dev: true - /fs-extra/8.1.0: + /fs-extra@8.1.0: resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} engines: {node: '>=6 <7 || >=8'} dependencies: @@ -2291,18 +2315,18 @@ packages: universalify: 0.1.2 dev: true - /fs-minipass/2.1.0: + /fs-minipass@2.1.0: resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} engines: {node: '>= 8'} dependencies: minipass: 3.3.6 dev: true - /fs.realpath/1.0.0: + /fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} dev: true - /fsevents/2.3.2: + /fsevents@2.3.2: resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] @@ -2310,11 +2334,11 @@ packages: dev: true optional: true - /function-bind/1.1.1: + /function-bind@1.1.1: resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} dev: true - /function.prototype.name/1.1.5: + /function.prototype.name@1.1.5: resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} engines: {node: '>= 0.4'} dependencies: @@ -2324,21 +2348,21 @@ packages: functions-have-names: 1.2.3 dev: true - /functions-have-names/1.2.3: + /functions-have-names@1.2.3: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} dev: true - /gensync/1.0.0-beta.2: + /gensync@1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} dev: true - /get-caller-file/2.0.5: + /get-caller-file@2.0.5: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} dev: true - /get-intrinsic/1.2.1: + /get-intrinsic@1.2.1: resolution: {integrity: sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==} dependencies: function-bind: 1.1.1 @@ -2347,32 +2371,32 @@ packages: has-symbols: 1.0.3 dev: true - /get-package-type/0.1.0: + /get-package-type@0.1.0: resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} engines: {node: '>=8.0.0'} dev: true - /get-stdin/4.0.1: + /get-stdin@4.0.1: resolution: {integrity: sha512-F5aQMywwJ2n85s4hJPTT9RPxGmubonuB10MNYo17/xph174n2MIR33HRguhzVag10O/npM7SPk73LMZNP+FaWw==} engines: {node: '>=0.10.0'} dev: true - /get-stdin/5.0.1: + /get-stdin@5.0.1: resolution: {integrity: sha512-jZV7n6jGE3Gt7fgSTJoz91Ak5MuTLwMwkoYdjxuJ/AmjIsE1UC03y/IWkZCQGEvVNS9qoRNwy5BCqxImv0FVeA==} engines: {node: '>=0.12.0'} dev: true - /get-stream/3.0.0: + /get-stream@3.0.0: resolution: {integrity: sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==} engines: {node: '>=4'} dev: true - /get-stream/6.0.1: + /get-stream@6.0.1: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} dev: true - /get-symbol-description/1.0.0: + /get-symbol-description@1.0.0: resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} engines: {node: '>= 0.4'} dependencies: @@ -2380,14 +2404,14 @@ packages: get-intrinsic: 1.2.1 dev: true - /glob-parent/5.1.2: + /glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} dependencies: is-glob: 4.0.3 dev: true - /glob/7.2.3: + /glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} dependencies: fs.realpath: 1.0.0 @@ -2398,19 +2422,19 @@ packages: path-is-absolute: 1.0.1 dev: true - /globals/11.12.0: + /globals@11.12.0: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} dev: true - /globalthis/1.0.3: + /globalthis@1.0.3: resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} engines: {node: '>= 0.4'} dependencies: define-properties: 1.2.0 dev: true - /globby/11.1.0: + /globby@11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} engines: {node: '>=10'} dependencies: @@ -2422,103 +2446,103 @@ packages: slash: 3.0.0 dev: true - /gopd/1.0.1: + /gopd@1.0.1: resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} dependencies: get-intrinsic: 1.2.1 dev: true - /graceful-fs/4.2.11: + /graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} dev: true - /grapheme-splitter/1.0.4: + /grapheme-splitter@1.0.4: resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} dev: true - /guess-terminal/1.0.0: + /guess-terminal@1.0.0: resolution: {integrity: sha512-CuErhdmGIkLiIveV6MiGoe7jqQBNGK67Khn8VgZHyQasVwcOEzG3WW/YTE8i5B5SY+T0xbgR4Nq+Asb6xMlTJQ==} engines: {node: '>= 6'} dev: true - /hard-rejection/2.1.0: + /hard-rejection@2.1.0: resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} engines: {node: '>=6'} dev: true - /has-bigints/1.0.2: + /has-bigints@1.0.2: resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} dev: true - /has-flag/3.0.0: + /has-flag@3.0.0: resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} engines: {node: '>=4'} dev: true - /has-flag/4.0.0: + /has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} dev: true - /has-property-descriptors/1.0.0: + /has-property-descriptors@1.0.0: resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} dependencies: get-intrinsic: 1.2.1 dev: true - /has-proto/1.0.1: + /has-proto@1.0.1: resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} engines: {node: '>= 0.4'} dev: true - /has-symbols/1.0.3: + /has-symbols@1.0.3: resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} engines: {node: '>= 0.4'} dev: true - /has-tostringtag/1.0.0: + /has-tostringtag@1.0.0: resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} engines: {node: '>= 0.4'} dependencies: has-symbols: 1.0.3 dev: true - /has/1.0.3: + /has@1.0.3: resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} engines: {node: '>= 0.4.0'} dependencies: function-bind: 1.1.1 dev: true - /hex-rgb/1.0.0: + /hex-rgb@1.0.0: resolution: {integrity: sha512-RXIfX+4KhhQQM1XWFaMghHtVj7LfKhpFhV8PlrSTyFwGN25q8hMQ5/QoqPj0j1l58TluQj3cqOFdSB30sb/iQA==} engines: {node: '>=0.10.0'} dev: true - /highlight.js/10.7.3: + /highlight.js@10.7.3: resolution: {integrity: sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==} dev: true - /hosted-git-info/2.8.9: + /hosted-git-info@2.8.9: resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} dev: true - /hosted-git-info/4.1.0: + /hosted-git-info@4.1.0: resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} engines: {node: '>=10'} dependencies: lru-cache: 6.0.0 dev: true - /html-escaper/2.0.2: + /html-escaper@2.0.2: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} dev: true - /http-cache-semantics/4.1.1: + /http-cache-semantics@4.1.1: resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} dev: true - /http-proxy-agent/4.0.1: + /http-proxy-agent@4.0.1: resolution: {integrity: sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==} engines: {node: '>= 6'} dependencies: @@ -2529,7 +2553,7 @@ packages: - supports-color dev: true - /https-proxy-agent/5.0.1: + /https-proxy-agent@5.0.1: resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} engines: {node: '>= 6'} dependencies: @@ -2539,46 +2563,46 @@ packages: - supports-color dev: true - /human-id/1.0.2: + /human-id@1.0.2: resolution: {integrity: sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw==} dev: true - /human-signals/2.1.0: + /human-signals@2.1.0: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} engines: {node: '>=10.17.0'} dev: true - /human-signals/4.3.1: + /human-signals@4.3.1: resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==} engines: {node: '>=14.18.0'} dev: true - /humanize-ms/1.2.1: + /humanize-ms@1.2.1: resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} dependencies: ms: 2.1.3 dev: true - /iconv-lite/0.4.24: + /iconv-lite@0.4.24: resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} engines: {node: '>=0.10.0'} dependencies: safer-buffer: 2.1.2 dev: true - /iconv-lite/0.6.3: + /iconv-lite@0.6.3: resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} engines: {node: '>=0.10.0'} dependencies: safer-buffer: 2.1.2 dev: true - /ignore/5.2.4: + /ignore@5.2.4: resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} engines: {node: '>= 4'} dev: true - /import-local/3.1.0: + /import-local@3.1.0: resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} engines: {node: '>=8'} hasBin: true @@ -2587,48 +2611,48 @@ packages: resolve-cwd: 3.0.0 dev: true - /imurmurhash/0.1.4: + /imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} dev: true - /indent-string/2.1.0: + /indent-string@2.1.0: resolution: {integrity: sha512-aqwDFWSgSgfRaEwao5lg5KEcVd/2a+D1rvoG7NdilmYz0NwRk6StWpWdz/Hpk34MKPpx7s8XxUqimfcQK6gGlg==} engines: {node: '>=0.10.0'} dependencies: repeating: 2.0.1 dev: true - /indent-string/3.2.0: + /indent-string@3.2.0: resolution: {integrity: sha512-BYqTHXTGUIvg7t1r4sJNKcbDZkL92nkXA8YtRpbjFHRHGDL/NtUeiBJMeE60kIFN/Mg8ESaWQvftaYMGJzQZCQ==} engines: {node: '>=4'} dev: true - /indent-string/4.0.0: + /indent-string@4.0.0: resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} engines: {node: '>=8'} dev: true - /infer-owner/1.0.4: + /infer-owner@1.0.4: resolution: {integrity: sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==} dev: true - /inflight/1.0.6: + /inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} dependencies: once: 1.4.0 wrappy: 1.0.2 dev: true - /inherits/2.0.4: + /inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} dev: true - /ini/1.3.8: + /ini@1.3.8: resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} dev: true - /internal-slot/1.0.5: + /internal-slot@1.0.5: resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==} engines: {node: '>= 0.4'} dependencies: @@ -2637,11 +2661,11 @@ packages: side-channel: 1.0.4 dev: true - /ip/2.0.0: + /ip@2.0.0: resolution: {integrity: sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==} dev: true - /is-array-buffer/3.0.2: + /is-array-buffer@3.0.2: resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} dependencies: call-bind: 1.0.2 @@ -2649,21 +2673,21 @@ packages: is-typed-array: 1.1.10 dev: true - /is-arrayish/0.2.1: + /is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} dev: true - /is-arrayish/0.3.2: + /is-arrayish@0.3.2: resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} dev: true - /is-bigint/1.0.4: + /is-bigint@1.0.4: resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} dependencies: has-bigints: 1.0.2 dev: true - /is-boolean-object/1.1.2: + /is-boolean-object@1.1.2: resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} engines: {node: '>= 0.4'} dependencies: @@ -2671,85 +2695,85 @@ packages: has-tostringtag: 1.0.0 dev: true - /is-callable/1.2.7: + /is-callable@1.2.7: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} dev: true - /is-ci/3.0.1: + /is-ci@3.0.1: resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} hasBin: true dependencies: ci-info: 3.8.0 dev: true - /is-core-module/2.12.1: + /is-core-module@2.12.1: resolution: {integrity: sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==} dependencies: has: 1.0.3 dev: true - /is-date-object/1.0.5: + /is-date-object@1.0.5: resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 dev: true - /is-extglob/2.1.1: + /is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} dev: true - /is-finite/1.1.0: + /is-finite@1.1.0: resolution: {integrity: sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==} engines: {node: '>=0.10.0'} dev: true - /is-fullwidth-code-point/3.0.0: + /is-fullwidth-code-point@3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} dev: true - /is-generator-fn/2.1.0: + /is-generator-fn@2.1.0: resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} engines: {node: '>=6'} dev: true - /is-glob/4.0.3: + /is-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} dependencies: is-extglob: 2.1.1 dev: true - /is-lambda/1.0.1: + /is-lambda@1.0.1: resolution: {integrity: sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==} dev: true - /is-negative-zero/2.0.2: + /is-negative-zero@2.0.2: resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} engines: {node: '>= 0.4'} dev: true - /is-number-object/1.0.7: + /is-number-object@1.0.7: resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 dev: true - /is-number/7.0.0: + /is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} dev: true - /is-plain-obj/1.1.0: + /is-plain-obj@1.1.0: resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} engines: {node: '>=0.10.0'} dev: true - /is-regex/1.1.4: + /is-regex@1.1.4: resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} engines: {node: '>= 0.4'} dependencies: @@ -2757,49 +2781,49 @@ packages: has-tostringtag: 1.0.0 dev: true - /is-shared-array-buffer/1.0.2: + /is-shared-array-buffer@1.0.2: resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} dependencies: call-bind: 1.0.2 dev: true - /is-stream/1.1.0: + /is-stream@1.1.0: resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==} engines: {node: '>=0.10.0'} dev: true - /is-stream/2.0.1: + /is-stream@2.0.1: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} dev: true - /is-stream/3.0.0: + /is-stream@3.0.0: resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: true - /is-string/1.0.7: + /is-string@1.0.7: resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 dev: true - /is-subdir/1.2.0: + /is-subdir@1.2.0: resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==} engines: {node: '>=4'} dependencies: better-path-resolve: 1.0.0 dev: true - /is-symbol/1.0.4: + /is-symbol@1.0.4: resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} engines: {node: '>= 0.4'} dependencies: has-symbols: 1.0.3 dev: true - /is-typed-array/1.1.10: + /is-typed-array@1.1.10: resolution: {integrity: sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==} engines: {node: '>= 0.4'} dependencies: @@ -2810,39 +2834,39 @@ packages: has-tostringtag: 1.0.0 dev: true - /is-utf8/0.2.1: + /is-utf8@0.2.1: resolution: {integrity: sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==} dev: true - /is-weakref/1.0.2: + /is-weakref@1.0.2: resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} dependencies: call-bind: 1.0.2 dev: true - /is-windows/1.0.2: + /is-windows@1.0.2: resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} engines: {node: '>=0.10.0'} dev: true - /isarray/1.0.0: + /isarray@1.0.0: resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} dev: true - /isarray/2.0.5: + /isarray@2.0.5: resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} dev: true - /isexe/2.0.0: + /isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} dev: true - /istanbul-lib-coverage/3.2.0: + /istanbul-lib-coverage@3.2.0: resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==} engines: {node: '>=8'} dev: true - /istanbul-lib-instrument/5.2.1: + /istanbul-lib-instrument@5.2.1: resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} engines: {node: '>=8'} dependencies: @@ -2855,7 +2879,7 @@ packages: - supports-color dev: true - /istanbul-lib-report/3.0.0: + /istanbul-lib-report@3.0.0: resolution: {integrity: sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==} engines: {node: '>=8'} dependencies: @@ -2864,7 +2888,7 @@ packages: supports-color: 7.2.0 dev: true - /istanbul-lib-source-maps/4.0.1: + /istanbul-lib-source-maps@4.0.1: resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} engines: {node: '>=10'} dependencies: @@ -2875,7 +2899,7 @@ packages: - supports-color dev: true - /istanbul-reports/3.1.5: + /istanbul-reports@3.1.5: resolution: {integrity: sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==} engines: {node: '>=8'} dependencies: @@ -2883,7 +2907,7 @@ packages: istanbul-lib-report: 3.0.0 dev: true - /jest-changed-files/29.5.0: + /jest-changed-files@29.5.0: resolution: {integrity: sha512-IFG34IUMUaNBIxjQXF/iu7g6EcdMrGRRxaUSw92I/2g2YC6vCdTltl4nHvt7Ci5nSJwXIkCu8Ka1DKF+X7Z1Ag==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -2891,7 +2915,7 @@ packages: p-limit: 3.1.0 dev: true - /jest-circus/29.5.0: + /jest-circus@29.5.0: resolution: {integrity: sha512-gq/ongqeQKAplVxqJmbeUOJJKkW3dDNPY8PjhJ5G0lBRvu0e3EWGxGy5cI4LAGA7gV2UHCtWBI4EMXK8c9nQKA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -2919,7 +2943,7 @@ packages: - supports-color dev: true - /jest-cli/29.5.0_@types+node@18.16.18: + /jest-cli@29.5.0(@types/node@18.16.18): resolution: {integrity: sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -2936,7 +2960,7 @@ packages: exit: 0.1.2 graceful-fs: 4.2.11 import-local: 3.1.0 - jest-config: 29.5.0_@types+node@18.16.18 + jest-config: 29.5.0(@types/node@18.16.18) jest-util: 29.5.0 jest-validate: 29.5.0 prompts: 2.4.2 @@ -2947,7 +2971,7 @@ packages: - ts-node dev: true - /jest-config/29.5.0_@types+node@18.16.18: + /jest-config@29.5.0(@types/node@18.16.18): resolution: {integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -2963,7 +2987,7 @@ packages: '@jest/test-sequencer': 29.5.0 '@jest/types': 29.5.0 '@types/node': 18.16.18 - babel-jest: 29.5.0_@babel+core@7.22.5 + babel-jest: 29.5.0(@babel/core@7.22.5) chalk: 4.1.2 ci-info: 3.8.0 deepmerge: 4.3.1 @@ -2986,7 +3010,7 @@ packages: - supports-color dev: true - /jest-diff/29.5.0: + /jest-diff@29.5.0: resolution: {integrity: sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -2996,14 +3020,14 @@ packages: pretty-format: 29.5.0 dev: true - /jest-docblock/29.4.3: + /jest-docblock@29.4.3: resolution: {integrity: sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: detect-newline: 3.1.0 dev: true - /jest-each/29.5.0: + /jest-each@29.5.0: resolution: {integrity: sha512-HM5kIJ1BTnVt+DQZ2ALp3rzXEl+g726csObrW/jpEGl+CDSSQpOJJX2KE/vEg8cxcMXdyEPu6U4QX5eruQv5hA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -3014,7 +3038,7 @@ packages: pretty-format: 29.5.0 dev: true - /jest-environment-node/29.5.0: + /jest-environment-node@29.5.0: resolution: {integrity: sha512-ExxuIK/+yQ+6PRGaHkKewYtg6hto2uGCgvKdb2nfJfKXgZ17DfXjvbZ+jA1Qt9A8EQSfPnt5FKIfnOO3u1h9qw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -3026,12 +3050,12 @@ packages: jest-util: 29.5.0 dev: true - /jest-get-type/29.4.3: + /jest-get-type@29.4.3: resolution: {integrity: sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true - /jest-haste-map/29.5.0: + /jest-haste-map@29.5.0: resolution: {integrity: sha512-IspOPnnBro8YfVYSw6yDRKh/TiCdRngjxeacCps1cQ9cgVN6+10JUcuJ1EabrgYLOATsIAigxA0rLR9x/YlrSA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -3050,7 +3074,7 @@ packages: fsevents: 2.3.2 dev: true - /jest-leak-detector/29.5.0: + /jest-leak-detector@29.5.0: resolution: {integrity: sha512-u9YdeeVnghBUtpN5mVxjID7KbkKE1QU4f6uUwuxiY0vYRi9BUCLKlPEZfDGR67ofdFmDz9oPAy2G92Ujrntmow==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -3058,7 +3082,7 @@ packages: pretty-format: 29.5.0 dev: true - /jest-matcher-utils/29.5.0: + /jest-matcher-utils@29.5.0: resolution: {integrity: sha512-lecRtgm/rjIK0CQ7LPQwzCs2VwW6WAahA55YBuI+xqmhm7LAaxokSB8C97yJeYyT+HvQkH741StzpU41wohhWw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -3068,7 +3092,7 @@ packages: pretty-format: 29.5.0 dev: true - /jest-message-util/29.5.0: + /jest-message-util@29.5.0: resolution: {integrity: sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -3083,7 +3107,7 @@ packages: stack-utils: 2.0.6 dev: true - /jest-mock/29.5.0: + /jest-mock@29.5.0: resolution: {integrity: sha512-GqOzvdWDE4fAV2bWQLQCkujxYWL7RxjCnj71b5VhDAGOevB3qj3Ovg26A5NI84ZpODxyzaozXLOh2NCgkbvyaw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -3092,7 +3116,7 @@ packages: jest-util: 29.5.0 dev: true - /jest-pnp-resolver/1.2.3_jest-resolve@29.5.0: + /jest-pnp-resolver@1.2.3(jest-resolve@29.5.0): resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} engines: {node: '>=6'} peerDependencies: @@ -3104,12 +3128,12 @@ packages: jest-resolve: 29.5.0 dev: true - /jest-regex-util/29.4.3: + /jest-regex-util@29.4.3: resolution: {integrity: sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true - /jest-resolve-dependencies/29.5.0: + /jest-resolve-dependencies@29.5.0: resolution: {integrity: sha512-sjV3GFr0hDJMBpYeUuGduP+YeCRbd7S/ck6IvL3kQ9cpySYKqcqhdLLC2rFwrcL7tz5vYibomBrsFYWkIGGjOg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -3119,14 +3143,14 @@ packages: - supports-color dev: true - /jest-resolve/29.5.0: + /jest-resolve@29.5.0: resolution: {integrity: sha512-1TzxJ37FQq7J10jPtQjcc+MkCkE3GBpBecsSUWJ0qZNJpmg6m0D9/7II03yJulm3H/fvVjgqLh/k2eYg+ui52w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: chalk: 4.1.2 graceful-fs: 4.2.11 jest-haste-map: 29.5.0 - jest-pnp-resolver: 1.2.3_jest-resolve@29.5.0 + jest-pnp-resolver: 1.2.3(jest-resolve@29.5.0) jest-util: 29.5.0 jest-validate: 29.5.0 resolve: 1.22.2 @@ -3134,7 +3158,7 @@ packages: slash: 3.0.0 dev: true - /jest-runner/29.5.0: + /jest-runner@29.5.0: resolution: {integrity: sha512-m7b6ypERhFghJsslMLhydaXBiLf7+jXy8FwGRHO3BGV1mcQpPbwiqiKUR2zU2NJuNeMenJmlFZCsIqzJCTeGLQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -3163,7 +3187,7 @@ packages: - supports-color dev: true - /jest-runtime/29.5.0: + /jest-runtime@29.5.0: resolution: {integrity: sha512-1Hr6Hh7bAgXQP+pln3homOiEZtCDZFqwmle7Ew2j8OlbkIu6uE3Y/etJQG8MLQs3Zy90xrp2C0BRrtPHG4zryw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -3193,14 +3217,14 @@ packages: - supports-color dev: true - /jest-snapshot/29.5.0: + /jest-snapshot@29.5.0: resolution: {integrity: sha512-x7Wolra5V0tt3wRs3/ts3S6ciSQVypgGQlJpz2rsdQYoUKxMxPNaoHMGJN6qAuPJqS+2iQ1ZUn5kl7HCyls84g==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@babel/core': 7.22.5 '@babel/generator': 7.22.5 - '@babel/plugin-syntax-jsx': 7.22.5_@babel+core@7.22.5 - '@babel/plugin-syntax-typescript': 7.22.5_@babel+core@7.22.5 + '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-syntax-typescript': 7.22.5(@babel/core@7.22.5) '@babel/traverse': 7.22.5 '@babel/types': 7.22.5 '@jest/expect-utils': 29.5.0 @@ -3208,7 +3232,7 @@ packages: '@jest/types': 29.5.0 '@types/babel__traverse': 7.20.1 '@types/prettier': 2.7.3 - babel-preset-current-node-syntax: 1.0.1_@babel+core@7.22.5 + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.5) chalk: 4.1.2 expect: 29.5.0 graceful-fs: 4.2.11 @@ -3224,7 +3248,7 @@ packages: - supports-color dev: true - /jest-util/29.5.0: + /jest-util@29.5.0: resolution: {integrity: sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -3236,7 +3260,7 @@ packages: picomatch: 2.3.1 dev: true - /jest-validate/29.5.0: + /jest-validate@29.5.0: resolution: {integrity: sha512-pC26etNIi+y3HV8A+tUGr/lph9B18GnzSRAkPaaZJIE1eFdiYm6/CewuiJQ8/RlfHd1u/8Ioi8/sJ+CmbA+zAQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -3248,7 +3272,7 @@ packages: pretty-format: 29.5.0 dev: true - /jest-watcher/29.5.0: + /jest-watcher@29.5.0: resolution: {integrity: sha512-KmTojKcapuqYrKDpRwfqcQ3zjMlwu27SYext9pt4GlF5FUgB+7XE1mcCnSm6a4uUpFyQIkb6ZhzZvHl+jiBCiA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -3262,7 +3286,7 @@ packages: string-length: 4.0.2 dev: true - /jest-worker/29.5.0: + /jest-worker@29.5.0: resolution: {integrity: sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -3272,7 +3296,7 @@ packages: supports-color: 8.1.1 dev: true - /jest/29.5.0_@types+node@18.16.18: + /jest@29.5.0(@types/node@18.16.18): resolution: {integrity: sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -3285,18 +3309,18 @@ packages: '@jest/core': 29.5.0 '@jest/types': 29.5.0 import-local: 3.1.0 - jest-cli: 29.5.0_@types+node@18.16.18 + jest-cli: 29.5.0(@types/node@18.16.18) transitivePeerDependencies: - '@types/node' - supports-color - ts-node dev: true - /js-tokens/4.0.0: + /js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} dev: true - /js-yaml/3.14.1: + /js-yaml@3.14.1: resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} hasBin: true dependencies: @@ -3304,44 +3328,44 @@ packages: esprima: 4.0.1 dev: true - /jsesc/2.5.2: + /jsesc@2.5.2: resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} engines: {node: '>=4'} hasBin: true dev: true - /json-parse-even-better-errors/2.3.1: + /json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} dev: true - /json5/2.2.3: + /json5@2.2.3: resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} engines: {node: '>=6'} hasBin: true dev: true - /jsonfile/4.0.0: + /jsonfile@4.0.0: resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} optionalDependencies: graceful-fs: 4.2.11 dev: true - /kind-of/6.0.3: + /kind-of@6.0.3: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} dev: true - /kleur/3.0.3: + /kleur@3.0.3: resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} engines: {node: '>=6'} dev: true - /kleur/4.1.5: + /kleur@4.1.5: resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} engines: {node: '>=6'} dev: true - /lerna-changelog/2.2.0: + /lerna-changelog@2.2.0: resolution: {integrity: sha512-yjYNAHrbnw8xYFKmYWJEP52Tk4xSdlNmzpYr26+3glbSGDmpe8UMo8f9DlEntjGufL+opup421oVTXcLshwAaQ==} engines: {node: 12.* || 14.* || >= 16} hasBin: true @@ -3359,20 +3383,20 @@ packages: - supports-color dev: true - /leven/3.1.0: + /leven@3.1.0: resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} engines: {node: '>=6'} dev: true - /lines-and-columns/1.2.4: + /lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} dev: true - /load-asciicast/2.1.0: + /load-asciicast@2.1.0: resolution: {integrity: sha512-O/M86p6XAZLzlsQVNzbpyFMD2dZcFVcUPaaG7m4R8IQW9S2W4yh86AZbvoy5vDqOhS9rVacPMNdXkNMRQJXazQ==} dev: true - /load-json-file/1.1.0: + /load-json-file@1.1.0: resolution: {integrity: sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==} engines: {node: '>=0.10.0'} dependencies: @@ -3383,7 +3407,7 @@ packages: strip-bom: 2.0.0 dev: true - /load-yaml-file/0.2.0: + /load-yaml-file@0.2.0: resolution: {integrity: sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==} engines: {node: '>=6'} dependencies: @@ -3393,40 +3417,40 @@ packages: strip-bom: 3.0.0 dev: true - /locate-path/5.0.0: + /locate-path@5.0.0: resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} engines: {node: '>=8'} dependencies: p-locate: 4.1.0 dev: true - /locate-path/6.0.0: + /locate-path@6.0.0: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} dependencies: p-locate: 5.0.0 dev: true - /lodash.memoize/4.1.2: + /lodash.memoize@4.1.2: resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} dev: true - /lodash.startcase/4.4.0: + /lodash.startcase@4.4.0: resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} dev: true - /lodash/4.17.21: + /lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} dev: true - /loose-envify/1.4.0: + /loose-envify@1.4.0: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true dependencies: js-tokens: 4.0.0 dev: true - /loud-rejection/1.6.0: + /loud-rejection@1.6.0: resolution: {integrity: sha512-RPNliZOFkqFumDhvYqOaNY4Uz9oJM2K9tC6JWsJJsNdhuONW4LQHRBpb0qf4pJApVffI5N39SwzWZJuEhfd7eQ==} engines: {node: '>=0.10.0'} dependencies: @@ -3434,27 +3458,27 @@ packages: signal-exit: 3.0.7 dev: true - /lru-cache/4.1.5: + /lru-cache@4.1.5: resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} dependencies: pseudomap: 1.0.2 yallist: 2.1.2 dev: true - /lru-cache/5.1.1: + /lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} dependencies: yallist: 3.1.1 dev: true - /lru-cache/6.0.0: + /lru-cache@6.0.0: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} engines: {node: '>=10'} dependencies: yallist: 4.0.0 dev: true - /macos-app-config/1.0.1: + /macos-app-config@1.0.1: resolution: {integrity: sha512-uwq7imlYgHL8KTMRh3klKegSLAU8UN+CbZjExNZ/npoIi4RG2XSk5Ol04A08ttcqr0YZ+0tQZzpy4mtGJBSYgg==} engines: {node: '>= 6'} dependencies: @@ -3464,18 +3488,18 @@ packages: execa: 0.8.0 dev: true - /make-dir/3.1.0: + /make-dir@3.1.0: resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} engines: {node: '>=8'} dependencies: semver: 6.3.0 dev: true - /make-error/1.3.6: + /make-error@1.3.6: resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} dev: true - /make-fetch-happen/9.1.0: + /make-fetch-happen@9.1.0: resolution: {integrity: sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==} engines: {node: '>= 10'} dependencies: @@ -3500,31 +3524,31 @@ packages: - supports-color dev: true - /makeerror/1.0.12: + /makeerror@1.0.12: resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} dependencies: tmpl: 1.0.5 dev: true - /map-obj/1.0.1: + /map-obj@1.0.1: resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} engines: {node: '>=0.10.0'} dev: true - /map-obj/4.3.0: + /map-obj@4.3.0: resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} engines: {node: '>=8'} dev: true - /mdn-data/2.0.14: + /mdn-data@2.0.14: resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} dev: true - /mdn-data/2.0.4: + /mdn-data@2.0.4: resolution: {integrity: sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==} dev: true - /meow/3.7.0: + /meow@3.7.0: resolution: {integrity: sha512-TNdwZs0skRlpPpCUK25StC4VH+tP5GgeY1HQOOGP+lQ2xtdkN2VtT/5tiX9k3IWpkBPV9b3LsAWXn4GGi/PrSA==} engines: {node: '>=0.10.0'} dependencies: @@ -3540,7 +3564,7 @@ packages: trim-newlines: 1.0.0 dev: true - /meow/6.1.1: + /meow@6.1.1: resolution: {integrity: sha512-3YffViIt2QWgTy6Pale5QpopX/IvU3LPL03jOTqp6pGj3VjesdO/U8CuHMKpnQr4shCNCM5fd5XFFvIIl6JBHg==} engines: {node: '>=8'} dependencies: @@ -3557,16 +3581,16 @@ packages: yargs-parser: 18.1.3 dev: true - /merge-stream/2.0.0: + /merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} dev: true - /merge2/1.4.1: + /merge2@1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} dev: true - /micromatch/4.0.5: + /micromatch@4.0.5: resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} engines: {node: '>=8.6'} dependencies: @@ -3574,28 +3598,28 @@ packages: picomatch: 2.3.1 dev: true - /mimic-fn/2.1.0: + /mimic-fn@2.1.0: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} dev: true - /mimic-fn/4.0.0: + /mimic-fn@4.0.0: resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} engines: {node: '>=12'} dev: true - /min-indent/1.0.1: + /min-indent@1.0.1: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} engines: {node: '>=4'} dev: true - /minimatch/3.1.2: + /minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: brace-expansion: 1.1.11 dev: true - /minimist-options/4.1.0: + /minimist-options@4.1.0: resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} engines: {node: '>= 6'} dependencies: @@ -3604,18 +3628,18 @@ packages: kind-of: 6.0.3 dev: true - /minimist/1.2.8: + /minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} dev: true - /minipass-collect/1.0.2: + /minipass-collect@1.0.2: resolution: {integrity: sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==} engines: {node: '>= 8'} dependencies: minipass: 3.3.6 dev: true - /minipass-fetch/1.4.1: + /minipass-fetch@1.4.1: resolution: {integrity: sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==} engines: {node: '>=8'} dependencies: @@ -3626,40 +3650,40 @@ packages: encoding: 0.1.13 dev: true - /minipass-flush/1.0.5: + /minipass-flush@1.0.5: resolution: {integrity: sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==} engines: {node: '>= 8'} dependencies: minipass: 3.3.6 dev: true - /minipass-pipeline/1.2.4: + /minipass-pipeline@1.2.4: resolution: {integrity: sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==} engines: {node: '>=8'} dependencies: minipass: 3.3.6 dev: true - /minipass-sized/1.0.3: + /minipass-sized@1.0.3: resolution: {integrity: sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==} engines: {node: '>=8'} dependencies: minipass: 3.3.6 dev: true - /minipass/3.3.6: + /minipass@3.3.6: resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} engines: {node: '>=8'} dependencies: yallist: 4.0.0 dev: true - /minipass/5.0.0: + /minipass@5.0.0: resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} engines: {node: '>=8'} dev: true - /minizlib/2.1.2: + /minizlib@2.1.2: resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} engines: {node: '>= 8'} dependencies: @@ -3667,33 +3691,33 @@ packages: yallist: 4.0.0 dev: true - /mixme/0.5.9: + /mixme@0.5.9: resolution: {integrity: sha512-VC5fg6ySUscaWUpI4gxCBTQMH2RdUpNrk+MsbpCYtIvf9SBJdiUey4qE7BXviJsJR4nDQxCZ+3yaYNW3guz/Pw==} engines: {node: '>= 8.0.0'} dev: true - /mkdirp/0.5.6: + /mkdirp@0.5.6: resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} hasBin: true dependencies: minimist: 1.2.8 dev: true - /mkdirp/1.0.4: + /mkdirp@1.0.4: resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} engines: {node: '>=10'} hasBin: true dev: true - /ms/2.1.2: + /ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} dev: true - /ms/2.1.3: + /ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} dev: true - /mz/2.7.0: + /mz@2.7.0: resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} dependencies: any-promise: 1.3.0 @@ -3701,28 +3725,28 @@ packages: thenify-all: 1.6.0 dev: true - /natural-compare/1.4.0: + /natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} dev: true - /negotiator/0.6.3: + /negotiator@0.6.3: resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} engines: {node: '>= 0.6'} dev: true - /node-domexception/1.0.0: + /node-domexception@1.0.0: resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} engines: {node: '>=10.5.0'} dev: true - /node-fetch/1.7.3: + /node-fetch@1.7.3: resolution: {integrity: sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==} dependencies: encoding: 0.1.13 is-stream: 1.1.0 dev: true - /node-fetch/2.6.11: + /node-fetch@2.6.11: resolution: {integrity: sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w==} engines: {node: 4.x || >=6.0.0} peerDependencies: @@ -3734,7 +3758,7 @@ packages: whatwg-url: 5.0.0 dev: true - /node-fetch/3.3.1: + /node-fetch@3.3.1: resolution: {integrity: sha512-cRVc/kyto/7E5shrWca1Wsea4y6tL9iYJE5FBCius3JQfb/4P4I295PfhgbJQBLTx6lATE4z+wK0rPM4VS2uow==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: @@ -3743,15 +3767,15 @@ packages: formdata-polyfill: 4.0.10 dev: true - /node-int64/0.4.0: + /node-int64@0.4.0: resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} dev: true - /node-releases/2.0.12: + /node-releases@2.0.12: resolution: {integrity: sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==} dev: true - /normalize-package-data/2.5.0: + /normalize-package-data@2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} dependencies: hosted-git-info: 2.8.9 @@ -3760,65 +3784,65 @@ packages: validate-npm-package-license: 3.0.4 dev: true - /normalize-path/3.0.0: + /normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} dev: true - /npm-run-path/1.0.0: + /npm-run-path@1.0.0: resolution: {integrity: sha512-PrGAi1SLlqNvKN5uGBjIgnrTb8fl0Jz0a3JJmeMcGnIBh7UE9Gc4zsAMlwDajOMg2b1OgP6UPvoLUboTmMZPFA==} engines: {node: '>=0.10.0'} dependencies: path-key: 1.0.0 dev: true - /npm-run-path/2.0.2: + /npm-run-path@2.0.2: resolution: {integrity: sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==} engines: {node: '>=4'} dependencies: path-key: 2.0.1 dev: true - /npm-run-path/4.0.1: + /npm-run-path@4.0.1: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} engines: {node: '>=8'} dependencies: path-key: 3.1.1 dev: true - /npm-run-path/5.1.0: + /npm-run-path@5.1.0: resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: path-key: 4.0.0 dev: true - /nth-check/1.0.2: + /nth-check@1.0.2: resolution: {integrity: sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==} dependencies: boolbase: 1.0.0 dev: true - /object-assign/4.1.1: + /object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} dev: true - /object-hash/1.3.1: + /object-hash@1.3.1: resolution: {integrity: sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA==} engines: {node: '>= 0.10.0'} dev: true - /object-inspect/1.12.3: + /object-inspect@1.12.3: resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==} dev: true - /object-keys/1.1.1: + /object-keys@1.1.1: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} engines: {node: '>= 0.4'} dev: true - /object.assign/4.1.4: + /object.assign@4.1.4: resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} engines: {node: '>= 0.4'} dependencies: @@ -3828,7 +3852,7 @@ packages: object-keys: 1.1.1 dev: true - /object.getownpropertydescriptors/2.1.6: + /object.getownpropertydescriptors@2.1.6: resolution: {integrity: sha512-lq+61g26E/BgHv0ZTFgRvi7NMEPuAxLkFU7rukXjc/AlwH4Am5xXVnIXy3un1bg/JPbXHrixRkK1itUzzPiIjQ==} engines: {node: '>= 0.8'} dependencies: @@ -3839,7 +3863,7 @@ packages: safe-array-concat: 1.0.0 dev: true - /object.values/1.1.6: + /object.values@1.1.6: resolution: {integrity: sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==} engines: {node: '>= 0.4'} dependencies: @@ -3848,107 +3872,107 @@ packages: es-abstract: 1.21.2 dev: true - /once/1.4.0: + /once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: wrappy: 1.0.2 dev: true - /onetime/5.1.2: + /onetime@5.1.2: resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} engines: {node: '>=6'} dependencies: mimic-fn: 2.1.0 dev: true - /onetime/6.0.0: + /onetime@6.0.0: resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} engines: {node: '>=12'} dependencies: mimic-fn: 4.0.0 dev: true - /os-tmpdir/1.0.2: + /os-tmpdir@1.0.2: resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} engines: {node: '>=0.10.0'} dev: true - /outdent/0.5.0: + /outdent@0.5.0: resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} dev: true - /p-filter/2.1.0: + /p-filter@2.1.0: resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} engines: {node: '>=8'} dependencies: p-map: 2.1.0 dev: true - /p-finally/1.0.0: + /p-finally@1.0.0: resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} engines: {node: '>=4'} dev: true - /p-limit/2.3.0: + /p-limit@2.3.0: resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} engines: {node: '>=6'} dependencies: p-try: 2.2.0 dev: true - /p-limit/3.1.0: + /p-limit@3.1.0: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} dependencies: yocto-queue: 0.1.0 dev: true - /p-locate/4.1.0: + /p-locate@4.1.0: resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} engines: {node: '>=8'} dependencies: p-limit: 2.3.0 dev: true - /p-locate/5.0.0: + /p-locate@5.0.0: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} dependencies: p-limit: 3.1.0 dev: true - /p-map/2.1.0: + /p-map@2.1.0: resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} engines: {node: '>=6'} dev: true - /p-map/3.0.0: + /p-map@3.0.0: resolution: {integrity: sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==} engines: {node: '>=8'} dependencies: aggregate-error: 3.1.0 dev: true - /p-map/4.0.0: + /p-map@4.0.0: resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} engines: {node: '>=10'} dependencies: aggregate-error: 3.1.0 dev: true - /p-try/2.2.0: + /p-try@2.2.0: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} dev: true - /parse-json/2.2.0: + /parse-json@2.2.0: resolution: {integrity: sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==} engines: {node: '>=0.10.0'} dependencies: error-ex: 1.3.2 dev: true - /parse-json/5.2.0: + /parse-json@5.2.0: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} dependencies: @@ -3958,62 +3982,62 @@ packages: lines-and-columns: 1.2.4 dev: true - /parse5-htmlparser2-tree-adapter/6.0.1: + /parse5-htmlparser2-tree-adapter@6.0.1: resolution: {integrity: sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==} dependencies: parse5: 6.0.1 dev: true - /parse5/5.1.1: + /parse5@5.1.1: resolution: {integrity: sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==} dev: true - /parse5/6.0.1: + /parse5@6.0.1: resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} dev: true - /path-exists/2.1.0: + /path-exists@2.1.0: resolution: {integrity: sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==} engines: {node: '>=0.10.0'} dependencies: pinkie-promise: 2.0.1 dev: true - /path-exists/4.0.0: + /path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} dev: true - /path-is-absolute/1.0.1: + /path-is-absolute@1.0.1: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} dev: true - /path-key/1.0.0: + /path-key@1.0.0: resolution: {integrity: sha512-T3hWy7tyXlk3QvPFnT+o2tmXRzU4GkitkUWLp/WZ0S/FXd7XMx176tRurgTvHTNMJOQzTcesHNpBqetH86mQ9g==} engines: {node: '>=0.10.0'} dev: true - /path-key/2.0.1: + /path-key@2.0.1: resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==} engines: {node: '>=4'} dev: true - /path-key/3.1.1: + /path-key@3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} dev: true - /path-key/4.0.0: + /path-key@4.0.0: resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} engines: {node: '>=12'} dev: true - /path-parse/1.0.7: + /path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} dev: true - /path-type/1.1.0: + /path-type@1.1.0: resolution: {integrity: sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==} engines: {node: '>=0.10.0'} dependencies: @@ -4022,55 +4046,55 @@ packages: pinkie-promise: 2.0.1 dev: true - /path-type/4.0.0: + /path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} dev: true - /picocolors/1.0.0: + /picocolors@1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} dev: true - /picomatch/2.3.1: + /picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} dev: true - /pify/2.3.0: + /pify@2.3.0: resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} engines: {node: '>=0.10.0'} dev: true - /pify/4.0.1: + /pify@4.0.1: resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} engines: {node: '>=6'} dev: true - /pinkie-promise/2.0.1: + /pinkie-promise@2.0.1: resolution: {integrity: sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==} engines: {node: '>=0.10.0'} dependencies: pinkie: 2.0.4 dev: true - /pinkie/2.0.4: + /pinkie@2.0.4: resolution: {integrity: sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==} engines: {node: '>=0.10.0'} dev: true - /pirates/4.0.6: + /pirates@4.0.6: resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} engines: {node: '>= 6'} dev: true - /pkg-dir/4.2.0: + /pkg-dir@4.2.0: resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} engines: {node: '>=8'} dependencies: find-up: 4.1.0 dev: true - /plist/2.1.0: + /plist@2.1.0: resolution: {integrity: sha512-yirJ+8SSb8o7pkfyNv+fTzUP0GbK52HMvh0MjMycCxvpL8rHiAfKhXU/3R5znSJnrGakV0WNZhr8yTR4//PjyA==} dependencies: base64-js: 1.2.0 @@ -4078,7 +4102,7 @@ packages: xmldom: 0.1.31 dev: true - /preferred-pm/3.0.3: + /preferred-pm@3.0.3: resolution: {integrity: sha512-+wZgbxNES/KlJs9q40F/1sfOd/j7f1O9JaHcW5Dsn3aUUOZg3L2bjpVUcKV2jvtElYfoTuQiNeMfQJ4kwUAhCQ==} engines: {node: '>=10'} dependencies: @@ -4088,13 +4112,13 @@ packages: which-pm: 2.0.0 dev: true - /prettier/2.8.8: + /prettier@2.8.8: resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} engines: {node: '>=10.13.0'} hasBin: true dev: true - /pretty-format/29.5.0: + /pretty-format@29.5.0: resolution: {integrity: sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: @@ -4103,23 +4127,23 @@ packages: react-is: 18.2.0 dev: true - /process-nextick-args/2.0.1: + /process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} dev: true - /progress-stream/2.0.0: + /progress-stream@2.0.0: resolution: {integrity: sha512-xJwOWR46jcXUq6EH9yYyqp+I52skPySOeHfkxOZ2IY1AiBi/sFJhbhAKHoV3OTw/omQ45KTio9215dRJ2Yxd3Q==} dependencies: speedometer: 1.0.0 through2: 2.0.5 dev: true - /progress/2.0.3: + /progress@2.0.3: resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} engines: {node: '>=0.4.0'} dev: true - /promise-inflight/1.0.1: + /promise-inflight@1.0.1: resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==} peerDependencies: bluebird: '*' @@ -4128,7 +4152,7 @@ packages: optional: true dev: true - /promise-retry/2.0.1: + /promise-retry@2.0.1: resolution: {integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==} engines: {node: '>=10'} dependencies: @@ -4136,7 +4160,7 @@ packages: retry: 0.12.0 dev: true - /prompts/2.4.2: + /prompts@2.4.2: resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} engines: {node: '>= 6'} dependencies: @@ -4144,7 +4168,7 @@ packages: sisteransi: 1.0.5 dev: true - /prop-types/15.8.1: + /prop-types@15.8.1: resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} dependencies: loose-envify: 1.4.0 @@ -4152,15 +4176,15 @@ packages: react-is: 16.13.1 dev: true - /pseudomap/1.0.2: + /pseudomap@1.0.2: resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} dev: true - /pure-rand/6.0.2: + /pure-rand@6.0.2: resolution: {integrity: sha512-6Yg0ekpKICSjPswYOuC5sku/TSWaRYlA0qsXqJgM/d/4pLPHPuTxK7Nbf7jFKzAeedUhR8C7K9Uv63FBsSo8xQ==} dev: true - /pv/1.0.1: + /pv@1.0.1: resolution: {integrity: sha512-b+Okkpm5q5RMxdhPvP9gcZyH7PhlmcIdZblJh5fZjo8aw84bQ015m0oeMwVZOdCOLBxQZBLkz25NT74LwHzoAw==} hasBin: true dependencies: @@ -4169,21 +4193,21 @@ packages: progress-stream: 2.0.0 dev: true - /q/1.5.1: + /q@1.5.1: resolution: {integrity: sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==} engines: {node: '>=0.6.0', teleport: '>=0.2.0'} dev: true - /queue-microtask/1.2.3: + /queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} dev: true - /quick-lru/4.0.1: + /quick-lru@4.0.1: resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} engines: {node: '>=8'} dev: true - /react-dom/16.14.0_react@16.14.0: + /react-dom@16.14.0(react@16.14.0): resolution: {integrity: sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==} peerDependencies: react: ^16.14.0 @@ -4195,15 +4219,15 @@ packages: scheduler: 0.19.1 dev: true - /react-is/16.13.1: + /react-is@16.13.1: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} dev: true - /react-is/18.2.0: + /react-is@18.2.0: resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} dev: true - /react/16.14.0: + /react@16.14.0: resolution: {integrity: sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==} engines: {node: '>=0.10.0'} dependencies: @@ -4212,7 +4236,7 @@ packages: prop-types: 15.8.1 dev: true - /read-pkg-up/1.0.1: + /read-pkg-up@1.0.1: resolution: {integrity: sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==} engines: {node: '>=0.10.0'} dependencies: @@ -4220,7 +4244,7 @@ packages: read-pkg: 1.1.0 dev: true - /read-pkg-up/7.0.1: + /read-pkg-up@7.0.1: resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} engines: {node: '>=8'} dependencies: @@ -4229,7 +4253,7 @@ packages: type-fest: 0.8.1 dev: true - /read-pkg/1.1.0: + /read-pkg@1.1.0: resolution: {integrity: sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==} engines: {node: '>=0.10.0'} dependencies: @@ -4238,7 +4262,7 @@ packages: path-type: 1.1.0 dev: true - /read-pkg/5.2.0: + /read-pkg@5.2.0: resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} engines: {node: '>=8'} dependencies: @@ -4248,7 +4272,7 @@ packages: type-fest: 0.6.0 dev: true - /read-yaml-file/1.1.0: + /read-yaml-file@1.1.0: resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} engines: {node: '>=6'} dependencies: @@ -4258,7 +4282,7 @@ packages: strip-bom: 3.0.0 dev: true - /readable-stream/2.3.8: + /readable-stream@2.3.8: resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} dependencies: core-util-is: 1.0.3 @@ -4270,7 +4294,7 @@ packages: util-deprecate: 1.0.2 dev: true - /redent/1.0.0: + /redent@1.0.0: resolution: {integrity: sha512-qtW5hKzGQZqKoh6JNSD+4lfitfPKGz42e6QwiRmPM5mmKtR0N41AbJRYu0xJi7nhOJ4WDgRkKvAk6tw4WIwR4g==} engines: {node: '>=0.10.0'} dependencies: @@ -4278,7 +4302,7 @@ packages: strip-indent: 1.0.1 dev: true - /redent/3.0.0: + /redent@3.0.0: resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} engines: {node: '>=8'} dependencies: @@ -4286,11 +4310,11 @@ packages: strip-indent: 3.0.0 dev: true - /regenerator-runtime/0.13.11: + /regenerator-runtime@0.13.11: resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} dev: true - /regexp.prototype.flags/1.5.0: + /regexp.prototype.flags@1.5.0: resolution: {integrity: sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==} engines: {node: '>= 0.4'} dependencies: @@ -4299,50 +4323,50 @@ packages: functions-have-names: 1.2.3 dev: true - /repeating/2.0.1: + /repeating@2.0.1: resolution: {integrity: sha512-ZqtSMuVybkISo2OWvqvm7iHSWngvdaW3IpsT9/uP8v4gMi591LY6h35wdOfvQdWCKFWZWm2Y1Opp4kV7vQKT6A==} engines: {node: '>=0.10.0'} dependencies: is-finite: 1.1.0 dev: true - /require-directory/2.1.1: + /require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} dev: true - /require-from-string/2.0.2: + /require-from-string@2.0.2: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} engines: {node: '>=0.10.0'} dev: true - /require-main-filename/2.0.0: + /require-main-filename@2.0.0: resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} dev: true - /resolve-cwd/3.0.0: + /resolve-cwd@3.0.0: resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} engines: {node: '>=8'} dependencies: resolve-from: 5.0.0 dev: true - /resolve-from/4.0.0: + /resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} dev: true - /resolve-from/5.0.0: + /resolve-from@5.0.0: resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} engines: {node: '>=8'} dev: true - /resolve.exports/2.0.2: + /resolve.exports@2.0.2: resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==} engines: {node: '>=10'} dev: true - /resolve/1.22.2: + /resolve@1.22.2: resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==} hasBin: true dependencies: @@ -4351,37 +4375,37 @@ packages: supports-preserve-symlinks-flag: 1.0.0 dev: true - /retry/0.12.0: + /retry@0.12.0: resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} engines: {node: '>= 4'} dev: true - /reusify/1.0.4: + /reusify@1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} dev: true - /rimraf/2.7.1: + /rimraf@2.7.1: resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} hasBin: true dependencies: glob: 7.2.3 dev: true - /rimraf/3.0.2: + /rimraf@3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} hasBin: true dependencies: glob: 7.2.3 dev: true - /run-parallel/1.2.0: + /run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} dependencies: queue-microtask: 1.2.3 dev: true - /safe-array-concat/1.0.0: + /safe-array-concat@1.0.0: resolution: {integrity: sha512-9dVEFruWIsnie89yym+xWTAYASdpw3CJV7Li/6zBewGf9z2i1j31rP6jnY0pHEO4QZh6N0K11bFjWmdR8UGdPQ==} engines: {node: '>=0.4'} dependencies: @@ -4391,11 +4415,11 @@ packages: isarray: 2.0.5 dev: true - /safe-buffer/5.1.2: + /safe-buffer@5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} dev: true - /safe-regex-test/1.0.0: + /safe-regex-test@1.0.0: resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} dependencies: call-bind: 1.0.2 @@ -4403,32 +4427,32 @@ packages: is-regex: 1.1.4 dev: true - /safer-buffer/2.1.2: + /safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} dev: true - /sax/1.2.4: + /sax@1.2.4: resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==} dev: true - /scheduler/0.19.1: + /scheduler@0.19.1: resolution: {integrity: sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==} dependencies: loose-envify: 1.4.0 object-assign: 4.1.1 dev: true - /semver/5.7.1: + /semver@5.7.1: resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} hasBin: true dev: true - /semver/6.3.0: + /semver@6.3.0: resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} hasBin: true dev: true - /semver/7.5.3: + /semver@7.5.3: resolution: {integrity: sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==} engines: {node: '>=10'} hasBin: true @@ -4436,39 +4460,39 @@ packages: lru-cache: 6.0.0 dev: true - /set-blocking/2.0.0: + /set-blocking@2.0.0: resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} dev: true - /shebang-command/1.2.0: + /shebang-command@1.2.0: resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} engines: {node: '>=0.10.0'} dependencies: shebang-regex: 1.0.0 dev: true - /shebang-command/2.0.0: + /shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} dependencies: shebang-regex: 3.0.0 dev: true - /shebang-regex/1.0.0: + /shebang-regex@1.0.0: resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} engines: {node: '>=0.10.0'} dev: true - /shebang-regex/3.0.0: + /shebang-regex@3.0.0: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} dev: true - /shell-escape/0.2.0: + /shell-escape@0.2.0: resolution: {integrity: sha512-uRRBT2MfEOyxuECseCZd28jC1AJ8hmqqneWQ4VWUTgCAFvb3wKU1jLqj6egC4Exrr88ogg3dp+zroH4wJuaXzw==} dev: true - /side-channel/1.0.4: + /side-channel@1.0.4: resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} dependencies: call-bind: 1.0.2 @@ -4476,31 +4500,31 @@ packages: object-inspect: 1.12.3 dev: true - /signal-exit/3.0.7: + /signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} dev: true - /simple-swizzle/0.2.2: + /simple-swizzle@0.2.2: resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} dependencies: is-arrayish: 0.3.2 dev: true - /sisteransi/1.0.5: + /sisteransi@1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} dev: true - /slash/3.0.0: + /slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} dev: true - /smart-buffer/4.2.0: + /smart-buffer@4.2.0: resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} dev: true - /smartwrap/2.0.2: + /smartwrap@2.0.2: resolution: {integrity: sha512-vCsKNQxb7PnCNd2wY1WClWifAc2lwqsG8OaswpJkVJsvMGcnEntdTCDajZCkk93Ay1U3t/9puJmb525Rg5MZBA==} engines: {node: '>=6'} hasBin: true @@ -4513,7 +4537,7 @@ packages: yargs: 15.4.1 dev: true - /socks-proxy-agent/6.2.1: + /socks-proxy-agent@6.2.1: resolution: {integrity: sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==} engines: {node: '>= 10'} dependencies: @@ -4524,7 +4548,7 @@ packages: - supports-color dev: true - /socks/2.7.1: + /socks@2.7.1: resolution: {integrity: sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==} engines: {node: '>= 10.13.0', npm: '>= 3.0.0'} dependencies: @@ -4532,81 +4556,81 @@ packages: smart-buffer: 4.2.0 dev: true - /source-map-support/0.5.13: + /source-map-support@0.5.13: resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} dependencies: buffer-from: 1.1.2 source-map: 0.6.1 dev: true - /source-map/0.6.1: + /source-map@0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} dev: true - /spawndamnit/2.0.0: + /spawndamnit@2.0.0: resolution: {integrity: sha512-j4JKEcncSjFlqIwU5L/rp2N5SIPsdxaRsIv678+TZxZ0SRDJTm8JrxJMjE/XuiEZNEir3S8l0Fa3Ke339WI4qA==} dependencies: cross-spawn: 5.1.0 signal-exit: 3.0.7 dev: true - /spdx-correct/3.2.0: + /spdx-correct@3.2.0: resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} dependencies: spdx-expression-parse: 3.0.1 spdx-license-ids: 3.0.13 dev: true - /spdx-exceptions/2.3.0: + /spdx-exceptions@2.3.0: resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} dev: true - /spdx-expression-parse/3.0.1: + /spdx-expression-parse@3.0.1: resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} dependencies: spdx-exceptions: 2.3.0 spdx-license-ids: 3.0.13 dev: true - /spdx-license-ids/3.0.13: + /spdx-license-ids@3.0.13: resolution: {integrity: sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==} dev: true - /speedometer/1.0.0: + /speedometer@1.0.0: resolution: {integrity: sha512-lgxErLl/7A5+vgIIXsh9MbeukOaCb2axgQ+bKCdIE+ibNT4XNYGNCR1qFEGq6F+YDASXK3Fh/c5FgtZchFolxw==} dev: true - /sprintf-js/1.0.3: + /sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} dev: true - /ssri/8.0.1: + /ssri@8.0.1: resolution: {integrity: sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==} engines: {node: '>= 8'} dependencies: minipass: 3.3.6 dev: true - /stable/0.1.8: + /stable@0.1.8: resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==} deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility' dev: true - /stack-utils/2.0.6: + /stack-utils@2.0.6: resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} engines: {node: '>=10'} dependencies: escape-string-regexp: 2.0.0 dev: true - /stream-transform/2.1.3: + /stream-transform@2.1.3: resolution: {integrity: sha512-9GHUiM5hMiCi6Y03jD2ARC1ettBXkQBoQAe7nJsPknnI0ow10aXjTnew8QtYQmLjzn974BnmWEAJgCY6ZP1DeQ==} dependencies: mixme: 0.5.9 dev: true - /string-length/4.0.2: + /string-length@4.0.2: resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} engines: {node: '>=10'} dependencies: @@ -4614,7 +4638,7 @@ packages: strip-ansi: 6.0.1 dev: true - /string-width/4.2.3: + /string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} dependencies: @@ -4623,7 +4647,7 @@ packages: strip-ansi: 6.0.1 dev: true - /string.prototype.trim/1.2.7: + /string.prototype.trim@1.2.7: resolution: {integrity: sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==} engines: {node: '>= 0.4'} dependencies: @@ -4632,7 +4656,7 @@ packages: es-abstract: 1.21.2 dev: true - /string.prototype.trimend/1.0.6: + /string.prototype.trimend@1.0.6: resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==} dependencies: call-bind: 1.0.2 @@ -4640,7 +4664,7 @@ packages: es-abstract: 1.21.2 dev: true - /string.prototype.trimstart/1.0.6: + /string.prototype.trimstart@1.0.6: resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==} dependencies: call-bind: 1.0.2 @@ -4648,52 +4672,52 @@ packages: es-abstract: 1.21.2 dev: true - /string_decoder/1.1.1: + /string_decoder@1.1.1: resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} dependencies: safe-buffer: 5.1.2 dev: true - /strip-ansi/6.0.1: + /strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} dependencies: ansi-regex: 5.0.1 dev: true - /strip-bom/2.0.0: + /strip-bom@2.0.0: resolution: {integrity: sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==} engines: {node: '>=0.10.0'} dependencies: is-utf8: 0.2.1 dev: true - /strip-bom/3.0.0: + /strip-bom@3.0.0: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} dev: true - /strip-bom/4.0.0: + /strip-bom@4.0.0: resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} engines: {node: '>=8'} dev: true - /strip-eof/1.0.0: + /strip-eof@1.0.0: resolution: {integrity: sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==} engines: {node: '>=0.10.0'} dev: true - /strip-final-newline/2.0.0: + /strip-final-newline@2.0.0: resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} engines: {node: '>=6'} dev: true - /strip-final-newline/3.0.0: + /strip-final-newline@3.0.0: resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} engines: {node: '>=12'} dev: true - /strip-indent/1.0.1: + /strip-indent@1.0.1: resolution: {integrity: sha512-I5iQq6aFMM62fBEAIB/hXzwJD6EEZ0xEGCX2t7oXqaKPIRgt4WruAQ285BISgdkP+HLGWyeGmNJcpIwFeRYRUA==} engines: {node: '>=0.10.0'} hasBin: true @@ -4701,45 +4725,45 @@ packages: get-stdin: 4.0.1 dev: true - /strip-indent/3.0.0: + /strip-indent@3.0.0: resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} engines: {node: '>=8'} dependencies: min-indent: 1.0.1 dev: true - /strip-json-comments/3.1.1: + /strip-json-comments@3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} dev: true - /supports-color/5.5.0: + /supports-color@5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} engines: {node: '>=4'} dependencies: has-flag: 3.0.0 dev: true - /supports-color/7.2.0: + /supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} dependencies: has-flag: 4.0.0 dev: true - /supports-color/8.1.1: + /supports-color@8.1.1: resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} engines: {node: '>=10'} dependencies: has-flag: 4.0.0 dev: true - /supports-preserve-symlinks-flag/1.0.0: + /supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} dev: true - /svg-term-cli/2.1.1: + /svg-term-cli@2.1.1: resolution: {integrity: sha512-aL5uAMiF0XtFq9uolRdmBtOzGKYMS8uMTvHKcF5E4iUdcD1N3fjiIMJQr6C6KFvXsW7ZKmRXNeEnXURE4/Jdbg==} hasBin: true dependencies: @@ -4760,7 +4784,7 @@ packages: term-schemes: 1.2.1 dev: true - /svg-term/1.3.1: + /svg-term@1.3.1: resolution: {integrity: sha512-8VYxa+fmkP0hkqTGCRSTkTorJ/oqutY6frkghTnmLaxTTAX6j+U99bCX0M21MP4jyVwdbXthukLEyg+LSY/0EA==} dependencies: '@stiligita/constants': 1.0.0-0 @@ -4774,11 +4798,11 @@ packages: lodash: 4.17.21 object-hash: 1.3.1 react: 16.14.0 - react-dom: 16.14.0_react@16.14.0 + react-dom: 16.14.0(react@16.14.0) tag-hoc: 1.0.0 dev: true - /svgo/1.3.2: + /svgo@1.3.2: resolution: {integrity: sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==} engines: {node: '>=4.0.0'} deprecated: This SVGO version is no longer supported. Upgrade to v2.x.x. @@ -4799,11 +4823,11 @@ packages: util.promisify: 1.0.1 dev: true - /tag-hoc/1.0.0: + /tag-hoc@1.0.0: resolution: {integrity: sha512-pQD+6Kief8nO5saFecplPWnV//FlSF+s7nIjgbLi+qJYd5L/3nrNUGMn6HmtG41mdkkWZXvTkOGlqWcFki3yEg==} dev: true - /tar/6.1.15: + /tar@6.1.15: resolution: {integrity: sha512-/zKt9UyngnxIT/EAGYuxaMYgOIJiP81ab9ZfkILq4oNLPFX50qyYmu7jRj9qeXoxmJHjGlbH0+cm2uy1WCs10A==} engines: {node: '>=10'} dependencies: @@ -4815,12 +4839,12 @@ packages: yallist: 4.0.0 dev: true - /temp-dir/1.0.0: + /temp-dir@1.0.0: resolution: {integrity: sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==} engines: {node: '>=4'} dev: true - /tempfile/2.0.0: + /tempfile@2.0.0: resolution: {integrity: sha512-ZOn6nJUgvgC09+doCEF3oB+r3ag7kUvlsXEGX069QRD60p+P3uP7XG9N2/at+EyIRGSN//ZY3LyEotA1YpmjuA==} engines: {node: '>=4'} dependencies: @@ -4828,7 +4852,7 @@ packages: uuid: 3.4.0 dev: true - /tempy/0.2.1: + /tempy@0.2.1: resolution: {integrity: sha512-LB83o9bfZGrntdqPuRdanIVCPReam9SOZKW0fOy5I9X3A854GGWi0tjCqoXEk84XIEYBc/x9Hq3EFop/H5wJaw==} engines: {node: '>=4'} dependencies: @@ -4836,7 +4860,7 @@ packages: unique-string: 1.0.0 dev: true - /term-schemes/1.2.1: + /term-schemes@1.2.1: resolution: {integrity: sha512-pv+lTR5WhV7rPRI4lpcxXf58tCZTefPdeowmNQqX0uTcJp6mhiKzsDwEPX2uL6wHKzb2OnrN8Mrq1gVLsPueng==} dependencies: '@marionebl/is': 0.5.1-0 @@ -4857,16 +4881,16 @@ packages: terminal-default-colors: 1.0.2 dev: true - /term-size/2.2.1: + /term-size@2.2.1: resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} engines: {node: '>=8'} dev: true - /terminal-default-colors/1.0.2: + /terminal-default-colors@1.0.2: resolution: {integrity: sha512-auu1piVOZjAQUb7aYmnk2uw/hUd9+WtWp1+3kGftWcnjVMZPAB88nhZo1tlIaxncBqblVUPFZwITdKOHY2eBmQ==} dev: true - /test-exclude/6.0.0: + /test-exclude@6.0.0: resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} engines: {node: '>=8'} dependencies: @@ -4875,73 +4899,73 @@ packages: minimatch: 3.1.2 dev: true - /thenify-all/1.6.0: + /thenify-all@1.6.0: resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} engines: {node: '>=0.8'} dependencies: thenify: 3.3.1 dev: true - /thenify/3.3.1: + /thenify@3.3.1: resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} dependencies: any-promise: 1.3.0 dev: true - /through2/2.0.5: + /through2@2.0.5: resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} dependencies: readable-stream: 2.3.8 xtend: 4.0.2 dev: true - /tmp/0.0.33: + /tmp@0.0.33: resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} engines: {node: '>=0.6.0'} dependencies: os-tmpdir: 1.0.2 dev: true - /tmpl/1.0.5: + /tmpl@1.0.5: resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} dev: true - /to-fast-properties/2.0.0: + /to-fast-properties@2.0.0: resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} engines: {node: '>=4'} dev: true - /to-regex-range/5.0.1: + /to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} dependencies: is-number: 7.0.0 dev: true - /toml/3.0.0: + /toml@3.0.0: resolution: {integrity: sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==} dev: true - /tr46/0.0.3: + /tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} dev: true - /trim-newlines/1.0.0: + /trim-newlines@1.0.0: resolution: {integrity: sha512-Nm4cF79FhSTzrLKGDMi3I4utBtFv8qKy4sq1enftf2gMdpqI8oVQTAfySkTz5r49giVzDj88SVZXP4CeYQwjaw==} engines: {node: '>=0.10.0'} dev: true - /trim-newlines/3.0.1: + /trim-newlines@3.0.1: resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} engines: {node: '>=8'} dev: true - /ts-dedent/2.2.0: + /ts-dedent@2.2.0: resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==} engines: {node: '>=6.10'} dev: true - /ts-jest/29.1.0_tiloc3ejst55n76oty5rbi22ra: + /ts-jest@29.1.0(@babel/core@7.22.5)(jest@29.5.0)(typescript@5.1.6): resolution: {integrity: sha512-ZhNr7Z4PcYa+JjMl62ir+zPiNJfXJN6E8hSLnaUKhOgqcn8vb3e537cpkd0FuAfRK3sR1LSqM1MOhliXNgOFPA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -4962,9 +4986,10 @@ packages: esbuild: optional: true dependencies: + '@babel/core': 7.22.5 bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 - jest: 29.5.0_@types+node@18.16.18 + jest: 29.5.0(@types/node@18.16.18) jest-util: 29.5.0 json5: 2.2.3 lodash.memoize: 4.1.2 @@ -4974,11 +4999,11 @@ packages: yargs-parser: 21.1.1 dev: true - /tslib/1.14.1: + /tslib@1.14.1: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} dev: true - /tty-table/4.2.1: + /tty-table@4.2.1: resolution: {integrity: sha512-xz0uKo+KakCQ+Dxj1D/tKn2FSyreSYWzdkL/BYhgN6oMW808g8QRMuh1atAV9fjTPbWBjfbkKQpI/5rEcnAc7g==} engines: {node: '>=8.0.0'} hasBin: true @@ -4992,32 +5017,32 @@ packages: yargs: 17.7.2 dev: true - /type-detect/4.0.8: + /type-detect@4.0.8: resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} engines: {node: '>=4'} dev: true - /type-fest/0.13.1: + /type-fest@0.13.1: resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==} engines: {node: '>=10'} dev: true - /type-fest/0.21.3: + /type-fest@0.21.3: resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} engines: {node: '>=10'} dev: true - /type-fest/0.6.0: + /type-fest@0.6.0: resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} engines: {node: '>=8'} dev: true - /type-fest/0.8.1: + /type-fest@0.8.1: resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} engines: {node: '>=8'} dev: true - /typed-array-length/1.0.4: + /typed-array-length@1.0.4: resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} dependencies: call-bind: 1.0.2 @@ -5025,13 +5050,13 @@ packages: is-typed-array: 1.1.10 dev: true - /typescript/5.1.6: + /typescript@5.1.6: resolution: {integrity: sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==} engines: {node: '>=14.17'} hasBin: true dev: true - /unbox-primitive/1.0.2: + /unbox-primitive@1.0.2: resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} dependencies: call-bind: 1.0.2 @@ -5040,35 +5065,35 @@ packages: which-boxed-primitive: 1.0.2 dev: true - /unique-filename/1.1.1: + /unique-filename@1.1.1: resolution: {integrity: sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==} dependencies: unique-slug: 2.0.2 dev: true - /unique-slug/2.0.2: + /unique-slug@2.0.2: resolution: {integrity: sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==} dependencies: imurmurhash: 0.1.4 dev: true - /unique-string/1.0.0: + /unique-string@1.0.0: resolution: {integrity: sha512-ODgiYu03y5g76A1I9Gt0/chLCzQjvzDy7DsZGsLOE/1MrF6wriEskSncj1+/C58Xk/kPZDppSctDybCwOSaGAg==} engines: {node: '>=4'} dependencies: crypto-random-string: 1.0.0 dev: true - /universalify/0.1.2: + /universalify@0.1.2: resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} engines: {node: '>= 4.0.0'} dev: true - /unquote/1.1.1: + /unquote@1.1.1: resolution: {integrity: sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==} dev: true - /update-browserslist-db/1.0.11_browserslist@4.21.9: + /update-browserslist-db@1.0.11(browserslist@4.21.9): resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==} hasBin: true peerDependencies: @@ -5079,11 +5104,11 @@ packages: picocolors: 1.0.0 dev: true - /util-deprecate/1.0.2: + /util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} dev: true - /util.promisify/1.0.1: + /util.promisify@1.0.1: resolution: {integrity: sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==} dependencies: define-properties: 1.2.0 @@ -5092,13 +5117,13 @@ packages: object.getownpropertydescriptors: 2.1.6 dev: true - /uuid/3.4.0: + /uuid@3.4.0: resolution: {integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==} deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. hasBin: true dev: true - /v8-to-istanbul/9.1.0: + /v8-to-istanbul@9.1.0: resolution: {integrity: sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==} engines: {node: '>=10.12.0'} dependencies: @@ -5107,42 +5132,42 @@ packages: convert-source-map: 1.9.0 dev: true - /validate-npm-package-license/3.0.4: + /validate-npm-package-license@3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} dependencies: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 dev: true - /walker/1.0.8: + /walker@1.0.8: resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} dependencies: makeerror: 1.0.12 dev: true - /wcwidth/1.0.1: + /wcwidth@1.0.1: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} dependencies: defaults: 1.0.4 dev: true - /web-streams-polyfill/3.2.1: + /web-streams-polyfill@3.2.1: resolution: {integrity: sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==} engines: {node: '>= 8'} dev: true - /webidl-conversions/3.0.1: + /webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} dev: true - /whatwg-url/5.0.0: + /whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} dependencies: tr46: 0.0.3 webidl-conversions: 3.0.1 dev: true - /which-boxed-primitive/1.0.2: + /which-boxed-primitive@1.0.2: resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} dependencies: is-bigint: 1.0.4 @@ -5152,11 +5177,11 @@ packages: is-symbol: 1.0.4 dev: true - /which-module/2.0.1: + /which-module@2.0.1: resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} dev: true - /which-pm/2.0.0: + /which-pm@2.0.0: resolution: {integrity: sha512-Lhs9Pmyph0p5n5Z3mVnN0yWcbQYUAD7rbQUiMsQxOJ3T57k7RFe35SUwWMf7dsbDZks1uOmw4AecB/JMDj3v/w==} engines: {node: '>=8.15'} dependencies: @@ -5164,7 +5189,7 @@ packages: path-exists: 4.0.0 dev: true - /which-typed-array/1.1.9: + /which-typed-array@1.1.9: resolution: {integrity: sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==} engines: {node: '>= 0.4'} dependencies: @@ -5176,14 +5201,14 @@ packages: is-typed-array: 1.1.10 dev: true - /which/1.3.1: + /which@1.3.1: resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} hasBin: true dependencies: isexe: 2.0.0 dev: true - /which/2.0.2: + /which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} hasBin: true @@ -5191,7 +5216,7 @@ packages: isexe: 2.0.0 dev: true - /which/3.0.1: + /which@3.0.1: resolution: {integrity: sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} hasBin: true @@ -5199,7 +5224,7 @@ packages: isexe: 2.0.0 dev: true - /wrap-ansi/6.2.0: + /wrap-ansi@6.2.0: resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} engines: {node: '>=8'} dependencies: @@ -5208,7 +5233,7 @@ packages: strip-ansi: 6.0.1 dev: true - /wrap-ansi/7.0.0: + /wrap-ansi@7.0.0: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} dependencies: @@ -5217,11 +5242,11 @@ packages: strip-ansi: 6.0.1 dev: true - /wrappy/1.0.2: + /wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} dev: true - /write-file-atomic/4.0.2: + /write-file-atomic@4.0.2: resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} dependencies: @@ -5229,44 +5254,44 @@ packages: signal-exit: 3.0.7 dev: true - /xmlbuilder/8.2.2: + /xmlbuilder@8.2.2: resolution: {integrity: sha512-eKRAFz04jghooy8muekqzo8uCSVNeyRedbuJrp0fovbLIi7wlsYtdUn3vBAAPq2Y3/0xMz2WMEUQ8yhVVO9Stw==} engines: {node: '>=4.0'} dev: true - /xmldom/0.1.31: + /xmldom@0.1.31: resolution: {integrity: sha512-yS2uJflVQs6n+CyjHoaBmVSqIDevTAWrzMmjG1Gc7h1qQ7uVozNhEPJAwZXWyGQ/Gafo3fCwrcaokezLPupVyQ==} engines: {node: '>=0.1'} deprecated: Deprecated due to CVE-2021-21366 resolved in 0.5.0 dev: true - /xtend/4.0.2: + /xtend@4.0.2: resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} engines: {node: '>=0.4'} dev: true - /y18n/4.0.3: + /y18n@4.0.3: resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} dev: true - /y18n/5.0.8: + /y18n@5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} dev: true - /yallist/2.1.2: + /yallist@2.1.2: resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} dev: true - /yallist/3.1.1: + /yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} dev: true - /yallist/4.0.0: + /yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} dev: true - /yargs-parser/18.1.3: + /yargs-parser@18.1.3: resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} engines: {node: '>=6'} dependencies: @@ -5274,17 +5299,17 @@ packages: decamelize: 1.2.0 dev: true - /yargs-parser/20.2.9: + /yargs-parser@20.2.9: resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} engines: {node: '>=10'} dev: true - /yargs-parser/21.1.1: + /yargs-parser@21.1.1: resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} engines: {node: '>=12'} dev: true - /yargs/15.4.1: + /yargs@15.4.1: resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} engines: {node: '>=8'} dependencies: @@ -5301,7 +5326,7 @@ packages: yargs-parser: 18.1.3 dev: true - /yargs/16.2.0: + /yargs@16.2.0: resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} engines: {node: '>=10'} dependencies: @@ -5314,7 +5339,7 @@ packages: yargs-parser: 20.2.9 dev: true - /yargs/17.7.2: + /yargs@17.7.2: resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} engines: {node: '>=12'} dependencies: @@ -5327,11 +5352,11 @@ packages: yargs-parser: 21.1.1 dev: true - /yocto-queue/0.1.0: + /yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} dev: true - /zod/3.21.4: + /zod@3.21.4: resolution: {integrity: sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==} dev: true From 8c76ca64a2688e541f690ba0d3da3c6785b9187f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 1 Jul 2023 20:23:27 +0300 Subject: [PATCH 33/66] Version Packages (#974) Co-authored-by: github-actions[bot] --- .changeset/dry-rocks-smash.md | 5 ----- .changeset/new-avocados-camp.md | 5 ----- .changeset/rare-otters-perform.md | 5 ----- .changeset/warm-ducks-float.md | 5 ----- CHANGELOG.md | 14 ++++++++++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- docs/commands.md | 2 +- docs/fnm.svg | 2 +- package.json | 2 +- 10 files changed, 19 insertions(+), 25 deletions(-) delete mode 100644 .changeset/dry-rocks-smash.md delete mode 100644 .changeset/new-avocados-camp.md delete mode 100644 .changeset/rare-otters-perform.md delete mode 100644 .changeset/warm-ducks-float.md diff --git a/.changeset/dry-rocks-smash.md b/.changeset/dry-rocks-smash.md deleted file mode 100644 index c327ecc6c..000000000 --- a/.changeset/dry-rocks-smash.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"fnm": minor ---- - -Add --corepack-enabled flag for automatically enabling corepack on fnm install diff --git a/.changeset/new-avocados-camp.md b/.changeset/new-avocados-camp.md deleted file mode 100644 index fb2d9939a..000000000 --- a/.changeset/new-avocados-camp.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"fnm": patch ---- - -modernize tty check (#973 by @tottoto) diff --git a/.changeset/rare-otters-perform.md b/.changeset/rare-otters-perform.md deleted file mode 100644 index 8d8562cbb..000000000 --- a/.changeset/rare-otters-perform.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"fnm": patch ---- - -use cygwinpath to make the path posix-like on Windows Bash usage diff --git a/.changeset/warm-ducks-float.md b/.changeset/warm-ducks-float.md deleted file mode 100644 index 28ffb2433..000000000 --- a/.changeset/warm-ducks-float.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"fnm": patch ---- - -capitalize "n" to show default (#963 by @Joshuahuahua) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9cf2c48d6..2726b1c55 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,19 @@ ## 1.31.0 (2022-02-16) +## 1.34.0 + +### Minor Changes + +- Add --corepack-enabled flag for automatically enabling corepack on fnm install ([#960](https://github.com/Schniz/fnm/pull/960)) + +### Patch Changes + +- modernize tty check (#973 by @tottoto) ([`48b2611`](https://github.com/Schniz/fnm/commit/48b2611e4b1c205f07dcbd50f2fff436becb77c1)) + +- use cygwinpath to make the path posix-like on Windows Bash usage ([#960](https://github.com/Schniz/fnm/pull/960)) + +- capitalize "n" to show default (#963 by @Joshuahuahua) ([`48b2611`](https://github.com/Schniz/fnm/commit/48b2611e4b1c205f07dcbd50f2fff436becb77c1)) + ## 1.33.1 ### Patch Changes diff --git a/Cargo.lock b/Cargo.lock index 8df884914..b7024b5c6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -589,7 +589,7 @@ dependencies = [ [[package]] name = "fnm" -version = "1.33.1" +version = "1.34.0" dependencies = [ "anyhow", "chrono", diff --git a/Cargo.toml b/Cargo.toml index 915c12027..cb8f5034c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "fnm" -version = "1.33.1" +version = "1.34.0" authors = ["Gal Schlezinger "] edition = "2021" build = "build.rs" diff --git a/docs/commands.md b/docs/commands.md index 698b93da5..a5bab312b 100644 --- a/docs/commands.md +++ b/docs/commands.md @@ -1,7 +1,7 @@ # `fnm` ``` -fnm 1.33.1 +fnm 1.34.0 A fast and simple Node.js manager USAGE: diff --git a/docs/fnm.svg b/docs/fnm.svg index 42c6cd313..aa458ff40 100644 --- a/docs/fnm.svg +++ b/docs/fnm.svg @@ -1 +1 @@ -✑✑eval✑eval"$(fnm✑eval"$(fnmenv)"✑f✑fn✑fnm✑fnm--versionfnm1.33.1✑cat✑cat.node-version18.12.1✑fnminstallInstallingNodev18.12.1(x64)✑fnmuseUsingNodev18.12.1✑node✑node-vv18.12.1✑e✑ev✑eva✑eval"✑eval"$✑eval"$(✑eval"$(f✑eval"$(fn✑eval"$(fnme✑eval"$(fnmen✑eval"$(fnmenv✑eval"$(fnmenv)✑fnm-✑fnm--✑fnm--v✑fnm--ve✑fnm--ver✑fnm--vers✑fnm--versi✑fnm--versio✑c✑ca✑cat.✑cat.n✑cat.no✑cat.nod✑cat.node✑cat.node-✑cat.node-v✑cat.node-ve✑cat.node-ver✑cat.node-vers✑cat.node-versi✑cat.node-versio✑fnmi✑fnmin✑fnmins✑fnminst✑fnminsta✑fnminstal✑fnmu✑fnmus✑n✑no✑nod✑node- \ No newline at end of file +✑✑eval✑eval"$(fnm✑eval"$(fnmenv)"✑f✑fn✑fnm✑fnm--versionfnm1.34.0✑cat✑cat.node-version18.16.1✑fnminstallInstallingNodev18.16.1(x64)✑fnmuseUsingNodev18.16.1✑node✑node-vv18.16.1✑e✑ev✑eva✑eval"✑eval"$✑eval"$(✑eval"$(f✑eval"$(fn✑eval"$(fnme✑eval"$(fnmen✑eval"$(fnmenv✑eval"$(fnmenv)✑fnm-✑fnm--✑fnm--v✑fnm--ve✑fnm--ver✑fnm--vers✑fnm--versi✑fnm--versio✑c✑ca✑cat.✑cat.n✑cat.no✑cat.nod✑cat.node✑cat.node-✑cat.node-v✑cat.node-ve✑cat.node-ver✑cat.node-vers✑cat.node-versi✑cat.node-versio✑fnmi✑fnmin✑fnmins✑fnminst✑fnminsta✑fnminstal✑fnmu✑fnmus✑n✑no✑nod✑node- \ No newline at end of file diff --git a/package.json b/package.json index 1362ddf34..ae4f74038 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "fnm", - "version": "1.33.1", + "version": "1.34.0", "private": true, "repository": "git@github.com:Schniz/fnm.git", "author": "Gal Schlezinger ", From b19eb29b26323f0b9fb427d3d9271c9cc13a58f8 Mon Sep 17 00:00:00 2001 From: Amit Dahan Date: Mon, 3 Jul 2023 22:55:05 +0300 Subject: [PATCH 34/66] Bump Clap 3 -> 4 (#991) * fix(deps): update clap-rs to v4 * Define enums for multi-choice clap args * fix test * Update command docs * Add `all` alias to log-level * remove unused thing * Add changeset * Use `Shells` instead of `Box` everywhere * Revert "Use `Shells` instead of `Box` everywhere" This reverts commit 7781b5d87354c1f9500ecfafde1aba43d6dd5e37. --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .changeset/breezy-olives-appear.md | 5 + .ci/print-command-docs.js | 7 +- Cargo.lock | 137 ++-- Cargo.toml | 4 +- docs/commands.md | 1067 +++++++++++++--------------- src/commands/completions.rs | 16 +- src/commands/env.rs | 22 +- src/config.rs | 14 +- src/log_level.rs | 31 +- src/shell/mod.rs | 2 +- src/shell/shell.rs | 49 +- src/user_version_reader.rs | 2 +- src/version_file_strategy.rs | 32 +- 13 files changed, 662 insertions(+), 726 deletions(-) create mode 100644 .changeset/breezy-olives-appear.md diff --git a/.changeset/breezy-olives-appear.md b/.changeset/breezy-olives-appear.md new file mode 100644 index 000000000..3fd267b23 --- /dev/null +++ b/.changeset/breezy-olives-appear.md @@ -0,0 +1,5 @@ +--- +"fnm": patch +--- + +Bump Clap 3 -> 4 diff --git a/.ci/print-command-docs.js b/.ci/print-command-docs.js index df61c6f34..53d176ef4 100755 --- a/.ci/print-command-docs.js +++ b/.ci/print-command-docs.js @@ -106,11 +106,14 @@ async function getCommandHelp(fnmPath, command) { const result = await run(fnmPath, [...cmdArg, "--help"]) const text = result.stdout const rows = text.split("\n") - const headerIndex = rows.findIndex((x) => x.includes("SUBCOMMANDS")) + const headerIndex = rows.findIndex((x) => x.includes("Commands:")) /** @type {string[]} */ const subcommands = [] if (!command) { - for (const row of rows.slice(headerIndex + 1)) { + for (const row of rows.slice( + headerIndex + 1, + rows.indexOf("", headerIndex + 1) + )) { const [, word] = row.split(/\s+/) if (word && word[0].toLowerCase() === word[0]) { subcommands.push(word) diff --git a/Cargo.lock b/Cargo.lock index b7024b5c6..3aaef9a3e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -67,6 +67,55 @@ dependencies = [ "libc", ] +[[package]] +name = "anstream" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ca84f3628370c59db74ee214b3263d58f9aadd9b4fe7e711fd87dc452b7f163" +dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "is-terminal", + "utf8parse", +] + +[[package]] +name = "anstyle" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a30da5c5f2d5e72842e00bcb57657162cdabef0931f40e2deb9b4140440cecd" + +[[package]] +name = "anstyle-parse" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "938874ff5980b03a87c5524b3ae5b59cf99b1d6bc836848df7bc5ada9643c333" +dependencies = [ + "utf8parse", +] + +[[package]] +name = "anstyle-query" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b" +dependencies = [ + "windows-sys 0.48.0", +] + +[[package]] +name = "anstyle-wincon" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "180abfa45703aebe0093f79badacc01b8fd4ea2e35118747e5811127f926e188" +dependencies = [ + "anstyle", + "windows-sys 0.48.0", +] + [[package]] name = "anyhow" version = "1.0.71" @@ -254,51 +303,59 @@ dependencies = [ [[package]] name = "clap" -version = "3.2.25" +version = "4.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ea181bf566f71cb9a5d17a59e1871af638180a18fb0035c92ae62b705207123" +checksum = "384e169cc618c613d5e3ca6404dda77a8685a63e08660dcc64abaf7da7cb0c7a" dependencies = [ - "atty", - "bitflags", + "clap_builder", "clap_derive", - "clap_lex", - "indexmap", "once_cell", +] + +[[package]] +name = "clap_builder" +version = "4.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef137bbe35aab78bdb468ccfba75a5f4d8321ae011d34063770780545176af2d" +dependencies = [ + "anstream", + "anstyle", + "clap_lex", "strsim", - "termcolor", - "textwrap", ] [[package]] name = "clap_complete" -version = "3.2.5" +version = "4.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f7a2e0a962c45ce25afce14220bc24f9dade0a1787f185cecf96bfba7847cd8" +checksum = "7f6b5c519bab3ea61843a7923d074b04245624bb84a64a8c150f5deb014e388b" dependencies = [ "clap", ] [[package]] name = "clap_derive" -version = "3.2.25" +version = "4.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae6371b8bdc8b7d3959e9cf7b22d4435ef3e79e138688421ec654acf8c81b008" +checksum = "b8cd2b2a819ad6eec39e8f1d6b53001af1e5469f8c177579cdaeb313115b825f" dependencies = [ "heck", - "proc-macro-error", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.22", ] [[package]] name = "clap_lex" -version = "0.2.4" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5" -dependencies = [ - "os_str_bytes", -] +checksum = "2da6da31387c7e4ef160ffab6d5e7f00c42626fe39aea70a7b0f1773f7dd6c1b" + +[[package]] +name = "colorchoice" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" [[package]] name = "colored" @@ -1174,12 +1231,6 @@ dependencies = [ "windows-sys 0.48.0", ] -[[package]] -name = "os_str_bytes" -version = "6.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d5d9eb14b174ee9aa2ef96dc2b94637a2d4b6e7cb873c7e171f0c20c6cf3eac" - [[package]] name = "output_vt100" version = "0.1.3" @@ -1248,30 +1299,6 @@ dependencies = [ "yansi", ] -[[package]] -name = "proc-macro-error" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" -dependencies = [ - "proc-macro-error-attr", - "proc-macro2", - "quote", - "syn 1.0.109", - "version_check", -] - -[[package]] -name = "proc-macro-error-attr" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" -dependencies = [ - "proc-macro2", - "quote", - "version_check", -] - [[package]] name = "proc-macro2" version = "1.0.63" @@ -1747,12 +1774,6 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "textwrap" -version = "0.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d" - [[package]] name = "thiserror" version = "1.0.40" @@ -1947,6 +1968,12 @@ dependencies = [ "percent-encoding", ] +[[package]] +name = "utf8parse" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" + [[package]] name = "version_check" version = "0.9.4" diff --git a/Cargo.toml b/Cargo.toml index cb8f5034c..7f45ed118 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -10,7 +10,7 @@ description = "Fast and simple Node.js version manager" [dependencies] serde = { version = "1.0.164", features = ["derive"] } -clap = { version = "3.2.25", features = ["derive", "env"] } +clap = { version = "4.3.10", features = ["derive", "env"] } serde_json = "1.0.99" chrono = { version = "0.4.26", features = ["serde"] } tar = "0.4.38" @@ -28,7 +28,7 @@ reqwest = { version = "0.11.18", features = ["blocking", "json", "rustls-tls", " url = "2.4.0" sysinfo = "0.29.3" thiserror = "1.0.40" -clap_complete = "3.2.5" +clap_complete = "4.3.1" anyhow = "1.0.71" [dev-dependencies] diff --git a/docs/commands.md b/docs/commands.md index a5bab312b..078c59459 100644 --- a/docs/commands.md +++ b/docs/commands.md @@ -1,855 +1,748 @@ # `fnm` ``` -fnm 1.34.0 A fast and simple Node.js manager -USAGE: - fnm [OPTIONS] - -OPTIONS: - --arch - Override the architecture of the installed Node binary. Defaults to arch of fnm binary - - [env: FNM_ARCH] - - --corepack-enabled - Enable corepack support for each new installation. This will make fnm call `corepack - enable` on every Node.js installation. For more information about corepack see - https://nodejs.org/api/corepack.html - - [env: FNM_COREPACK_ENABLED] - - --fnm-dir - The root directory of fnm installations - - [env: FNM_DIR] - - -h, --help - Print help information - - --log-level - The log level of fnm commands - - [env: FNM_LOGLEVEL] - [default: info] - [possible values: quiet, info, all, error] - - --node-dist-mirror - https://nodejs.org/dist/ mirror - - [env: FNM_NODE_DIST_MIRROR] - [default: https://nodejs.org/dist] - - -V, --version - Print version information - - --version-file-strategy - A strategy for how to resolve the Node version. Used whenever `fnm use` or `fnm install` - is called without a version, or when `--use-on-cd` is configured on evaluation. - - * `local`: Use the local version of Node defined within the current directory - - * `recursive`: Use the version of Node defined within the current directory and all - parent directories - - [env: FNM_VERSION_FILE_STRATEGY] - [default: local] - [possible values: local, recursive] - -SUBCOMMANDS: - alias - Alias a version to a common name - completions - Print shell completions to stdout - current - Print the current Node.js version - default - Set a version as the default version - env - Print and set up required environment variables for fnm - exec - Run a command within fnm context - help - Print this message or the help of the given subcommand(s) - install - Install a new Node.js version - list - List all locally installed Node.js versions [aliases: ls] - list-remote - List all remote Node.js versions [aliases: ls-remote] - unalias - Remove an alias definition - uninstall - Uninstall a Node.js version - use - Change Node.js version -``` +Usage: fnm [OPTIONS] -# `fnm alias` +Commands: + list-remote List all remote Node.js versions [aliases: ls-remote] + list List all locally installed Node.js versions [aliases: ls] + install Install a new Node.js version + use Change Node.js version + env Print and set up required environment variables for fnm + completions Print shell completions to stdout + alias Alias a version to a common name + unalias Remove an alias definition + default Set a version as the default version + current Print the current Node.js version + exec Run a command within fnm context + uninstall Uninstall a Node.js version + help Print this message or the help of the given subcommand(s) -``` -fnm-alias -Alias a version to a common name +Options: + --node-dist-mirror + https://nodejs.org/dist/ mirror + + [env: FNM_NODE_DIST_MIRROR] + [default: https://nodejs.org/dist] + + --fnm-dir + The root directory of fnm installations -USAGE: - fnm alias [OPTIONS] + [env: FNM_DIR] -ARGS: - + --log-level + The log level of fnm commands + [env: FNM_LOGLEVEL] + [default: info] + [possible values: quiet, error, info] - + --arch + Override the architecture of the installed Node binary. Defaults to arch of fnm binary + [env: FNM_ARCH] -OPTIONS: - --arch - Override the architecture of the installed Node binary. Defaults to arch of fnm binary + --version-file-strategy + A strategy for how to resolve the Node version. Used whenever `fnm use` or `fnm install` is called without a version, or when `--use-on-cd` is configured on evaluation - [env: FNM_ARCH] + [env: FNM_VERSION_FILE_STRATEGY] + [default: local] - --corepack-enabled - Enable corepack support for each new installation. This will make fnm call `corepack - enable` on every Node.js installation. For more information about corepack see - https://nodejs.org/api/corepack.html + Possible values: + - local: Use the local version of Node defined within the current directory + - recursive: Use the version of Node defined within the current directory and all parent directories - [env: FNM_COREPACK_ENABLED] + --corepack-enabled + Enable corepack support for each new installation. This will make fnm call `corepack enable` on every Node.js installation. For more information about corepack see https://nodejs.org/api/corepack.html - --fnm-dir - The root directory of fnm installations + [env: FNM_COREPACK_ENABLED] - [env: FNM_DIR] + -h, --help + Print help (see a summary with '-h') - -h, --help - Print help information + -V, --version + Print version +``` - --log-level - The log level of fnm commands +# `fnm list-remote` - [env: FNM_LOGLEVEL] - [default: info] - [possible values: quiet, info, all, error] +``` +List all remote Node.js versions - --node-dist-mirror - https://nodejs.org/dist/ mirror +Usage: fnm list-remote [OPTIONS] - [env: FNM_NODE_DIST_MIRROR] - [default: https://nodejs.org/dist] +Options: + --node-dist-mirror + https://nodejs.org/dist/ mirror - --version-file-strategy - A strategy for how to resolve the Node version. Used whenever `fnm use` or `fnm install` - is called without a version, or when `--use-on-cd` is configured on evaluation. + [env: FNM_NODE_DIST_MIRROR] + [default: https://nodejs.org/dist] - * `local`: Use the local version of Node defined within the current directory + --fnm-dir + The root directory of fnm installations - * `recursive`: Use the version of Node defined within the current directory and all - parent directories + [env: FNM_DIR] - [env: FNM_VERSION_FILE_STRATEGY] - [default: local] - [possible values: local, recursive] -``` + --log-level + The log level of fnm commands -# `fnm completions` + [env: FNM_LOGLEVEL] + [default: info] + [possible values: quiet, error, info] + --arch + Override the architecture of the installed Node binary. Defaults to arch of fnm binary + + [env: FNM_ARCH] + + --version-file-strategy + A strategy for how to resolve the Node version. Used whenever `fnm use` or `fnm install` is called without a version, or when `--use-on-cd` is configured on evaluation + + [env: FNM_VERSION_FILE_STRATEGY] + [default: local] + + Possible values: + - local: Use the local version of Node defined within the current directory + - recursive: Use the version of Node defined within the current directory and all parent directories + + --corepack-enabled + Enable corepack support for each new installation. This will make fnm call `corepack enable` on every Node.js installation. For more information about corepack see https://nodejs.org/api/corepack.html + + [env: FNM_COREPACK_ENABLED] + + -h, --help + Print help (see a summary with '-h') ``` -fnm-completions -Print shell completions to stdout -USAGE: - fnm completions [OPTIONS] +# `fnm list` -OPTIONS: - --arch - Override the architecture of the installed Node binary. Defaults to arch of fnm binary +``` +List all locally installed Node.js versions - [env: FNM_ARCH] +Usage: fnm list [OPTIONS] - --corepack-enabled - Enable corepack support for each new installation. This will make fnm call `corepack - enable` on every Node.js installation. For more information about corepack see - https://nodejs.org/api/corepack.html +Options: + --node-dist-mirror + https://nodejs.org/dist/ mirror - [env: FNM_COREPACK_ENABLED] + [env: FNM_NODE_DIST_MIRROR] + [default: https://nodejs.org/dist] - --fnm-dir - The root directory of fnm installations + --fnm-dir + The root directory of fnm installations - [env: FNM_DIR] + [env: FNM_DIR] - -h, --help - Print help information + --log-level + The log level of fnm commands - --log-level - The log level of fnm commands + [env: FNM_LOGLEVEL] + [default: info] + [possible values: quiet, error, info] - [env: FNM_LOGLEVEL] - [default: info] - [possible values: quiet, info, all, error] + --arch + Override the architecture of the installed Node binary. Defaults to arch of fnm binary - --node-dist-mirror - https://nodejs.org/dist/ mirror + [env: FNM_ARCH] - [env: FNM_NODE_DIST_MIRROR] - [default: https://nodejs.org/dist] + --version-file-strategy + A strategy for how to resolve the Node version. Used whenever `fnm use` or `fnm install` is called without a version, or when `--use-on-cd` is configured on evaluation - --shell - The shell syntax to use. Infers when missing + [env: FNM_VERSION_FILE_STRATEGY] + [default: local] - --version-file-strategy - A strategy for how to resolve the Node version. Used whenever `fnm use` or `fnm install` - is called without a version, or when `--use-on-cd` is configured on evaluation. + Possible values: + - local: Use the local version of Node defined within the current directory + - recursive: Use the version of Node defined within the current directory and all parent directories - * `local`: Use the local version of Node defined within the current directory + --corepack-enabled + Enable corepack support for each new installation. This will make fnm call `corepack enable` on every Node.js installation. For more information about corepack see https://nodejs.org/api/corepack.html - * `recursive`: Use the version of Node defined within the current directory and all - parent directories + [env: FNM_COREPACK_ENABLED] - [env: FNM_VERSION_FILE_STRATEGY] - [default: local] - [possible values: local, recursive] + -h, --help + Print help (see a summary with '-h') ``` -# `fnm current` +# `fnm install` ``` -fnm-current -Print the current Node.js version +Install a new Node.js version + +Usage: fnm install [OPTIONS] [VERSION] + +Arguments: + [VERSION] + A version string. Can be a partial semver or a LTS version name by the format lts/NAME -USAGE: - fnm current [OPTIONS] +Options: + --lts + Install latest LTS -OPTIONS: - --arch - Override the architecture of the installed Node binary. Defaults to arch of fnm binary + --node-dist-mirror + https://nodejs.org/dist/ mirror - [env: FNM_ARCH] + [env: FNM_NODE_DIST_MIRROR] + [default: https://nodejs.org/dist] - --corepack-enabled - Enable corepack support for each new installation. This will make fnm call `corepack - enable` on every Node.js installation. For more information about corepack see - https://nodejs.org/api/corepack.html + --fnm-dir + The root directory of fnm installations - [env: FNM_COREPACK_ENABLED] + [env: FNM_DIR] - --fnm-dir - The root directory of fnm installations + --latest + Install latest version - [env: FNM_DIR] + --log-level + The log level of fnm commands - -h, --help - Print help information + [env: FNM_LOGLEVEL] + [default: info] + [possible values: quiet, error, info] - --log-level - The log level of fnm commands + --arch + Override the architecture of the installed Node binary. Defaults to arch of fnm binary - [env: FNM_LOGLEVEL] - [default: info] - [possible values: quiet, info, all, error] + [env: FNM_ARCH] - --node-dist-mirror - https://nodejs.org/dist/ mirror + --version-file-strategy + A strategy for how to resolve the Node version. Used whenever `fnm use` or `fnm install` is called without a version, or when `--use-on-cd` is configured on evaluation - [env: FNM_NODE_DIST_MIRROR] - [default: https://nodejs.org/dist] + [env: FNM_VERSION_FILE_STRATEGY] + [default: local] - --version-file-strategy - A strategy for how to resolve the Node version. Used whenever `fnm use` or `fnm install` - is called without a version, or when `--use-on-cd` is configured on evaluation. + Possible values: + - local: Use the local version of Node defined within the current directory + - recursive: Use the version of Node defined within the current directory and all parent directories - * `local`: Use the local version of Node defined within the current directory + --corepack-enabled + Enable corepack support for each new installation. This will make fnm call `corepack enable` on every Node.js installation. For more information about corepack see https://nodejs.org/api/corepack.html - * `recursive`: Use the version of Node defined within the current directory and all - parent directories + [env: FNM_COREPACK_ENABLED] - [env: FNM_VERSION_FILE_STRATEGY] - [default: local] - [possible values: local, recursive] + -h, --help + Print help (see a summary with '-h') ``` -# `fnm default` +# `fnm use` ``` -fnm-default -Set a version as the default version +Change Node.js version -This is a shorthand for `fnm alias VERSION default` +Usage: fnm use [OPTIONS] [VERSION] -USAGE: - fnm default [OPTIONS] +Arguments: + [VERSION] -ARGS: - +Options: + --install-if-missing + Install the version if it isn't installed yet -OPTIONS: - --arch - Override the architecture of the installed Node binary. Defaults to arch of fnm binary + --node-dist-mirror + https://nodejs.org/dist/ mirror - [env: FNM_ARCH] + [env: FNM_NODE_DIST_MIRROR] + [default: https://nodejs.org/dist] - --corepack-enabled - Enable corepack support for each new installation. This will make fnm call `corepack - enable` on every Node.js installation. For more information about corepack see - https://nodejs.org/api/corepack.html + --fnm-dir + The root directory of fnm installations - [env: FNM_COREPACK_ENABLED] + [env: FNM_DIR] - --fnm-dir - The root directory of fnm installations + --silent-if-unchanged + Don't output a message identifying the version being used if it will not change due to execution of this command - [env: FNM_DIR] + --log-level + The log level of fnm commands - -h, --help - Print help information + [env: FNM_LOGLEVEL] + [default: info] + [possible values: quiet, error, info] - --log-level - The log level of fnm commands + --arch + Override the architecture of the installed Node binary. Defaults to arch of fnm binary - [env: FNM_LOGLEVEL] - [default: info] - [possible values: quiet, info, all, error] + [env: FNM_ARCH] - --node-dist-mirror - https://nodejs.org/dist/ mirror + --version-file-strategy + A strategy for how to resolve the Node version. Used whenever `fnm use` or `fnm install` is called without a version, or when `--use-on-cd` is configured on evaluation - [env: FNM_NODE_DIST_MIRROR] - [default: https://nodejs.org/dist] + [env: FNM_VERSION_FILE_STRATEGY] + [default: local] - --version-file-strategy - A strategy for how to resolve the Node version. Used whenever `fnm use` or `fnm install` - is called without a version, or when `--use-on-cd` is configured on evaluation. + Possible values: + - local: Use the local version of Node defined within the current directory + - recursive: Use the version of Node defined within the current directory and all parent directories - * `local`: Use the local version of Node defined within the current directory + --corepack-enabled + Enable corepack support for each new installation. This will make fnm call `corepack enable` on every Node.js installation. For more information about corepack see https://nodejs.org/api/corepack.html - * `recursive`: Use the version of Node defined within the current directory and all - parent directories + [env: FNM_COREPACK_ENABLED] - [env: FNM_VERSION_FILE_STRATEGY] - [default: local] - [possible values: local, recursive] + -h, --help + Print help (see a summary with '-h') ``` # `fnm env` ``` -fnm-env Print and set up required environment variables for fnm -This command generates a series of shell commands that should be evaluated by your shell to create a -fnm-ready environment. +This command generates a series of shell commands that should be evaluated by your shell to create a fnm-ready environment. -Each shell has its own syntax of evaluating a dynamic expression. For example, evaluating fnm on -Bash and Zsh would look like `eval "$(fnm env)"`. In Fish, evaluating would look like `fnm env | -source` +Each shell has its own syntax of evaluating a dynamic expression. For example, evaluating fnm on Bash and Zsh would look like `eval "$(fnm env)"`. In Fish, evaluating would look like `fnm env | source` -USAGE: - fnm env [OPTIONS] +Usage: fnm env [OPTIONS] -OPTIONS: - --arch - Override the architecture of the installed Node binary. Defaults to arch of fnm binary +Options: + --node-dist-mirror + https://nodejs.org/dist/ mirror - [env: FNM_ARCH] + [env: FNM_NODE_DIST_MIRROR] + [default: https://nodejs.org/dist] - --corepack-enabled - Enable corepack support for each new installation. This will make fnm call `corepack - enable` on every Node.js installation. For more information about corepack see - https://nodejs.org/api/corepack.html + --shell + The shell syntax to use. Infers when missing - [env: FNM_COREPACK_ENABLED] + [possible values: bash, zsh, fish, power-shell] - --fnm-dir - The root directory of fnm installations + --fnm-dir + The root directory of fnm installations - [env: FNM_DIR] + [env: FNM_DIR] - -h, --help - Print help information + --json + Print JSON instead of shell commands - --json - Print JSON instead of shell commands + --log-level + The log level of fnm commands - --log-level - The log level of fnm commands + [env: FNM_LOGLEVEL] + [default: info] + [possible values: quiet, error, info] - [env: FNM_LOGLEVEL] - [default: info] - [possible values: quiet, info, all, error] + --use-on-cd + Print the script to change Node versions every directory change - --node-dist-mirror - https://nodejs.org/dist/ mirror + --arch + Override the architecture of the installed Node binary. Defaults to arch of fnm binary - [env: FNM_NODE_DIST_MIRROR] - [default: https://nodejs.org/dist] + [env: FNM_ARCH] - --shell - The shell syntax to use. Infers when missing + --version-file-strategy + A strategy for how to resolve the Node version. Used whenever `fnm use` or `fnm install` is called without a version, or when `--use-on-cd` is configured on evaluation - [possible values: bash, zsh, fish, powershell] + [env: FNM_VERSION_FILE_STRATEGY] + [default: local] - --use-on-cd - Print the script to change Node versions every directory change + Possible values: + - local: Use the local version of Node defined within the current directory + - recursive: Use the version of Node defined within the current directory and all parent directories - --version-file-strategy - A strategy for how to resolve the Node version. Used whenever `fnm use` or `fnm install` - is called without a version, or when `--use-on-cd` is configured on evaluation. + --corepack-enabled + Enable corepack support for each new installation. This will make fnm call `corepack enable` on every Node.js installation. For more information about corepack see https://nodejs.org/api/corepack.html - * `local`: Use the local version of Node defined within the current directory + [env: FNM_COREPACK_ENABLED] - * `recursive`: Use the version of Node defined within the current directory and all - parent directories - - [env: FNM_VERSION_FILE_STRATEGY] - [default: local] - [possible values: local, recursive] + -h, --help + Print help (see a summary with '-h') ``` -# `fnm exec` +# `fnm completions` ``` -fnm-exec -Run a command within fnm context - -Example: --------- -fnm exec --using=v12.0.0 node --version -=> v12.0.0 - -USAGE: - fnm exec [OPTIONS] [ARGUMENTS]... - -ARGS: - ... - The command to run - -OPTIONS: - --arch - Override the architecture of the installed Node binary. Defaults to arch of fnm binary - - [env: FNM_ARCH] +Print shell completions to stdout - --corepack-enabled - Enable corepack support for each new installation. This will make fnm call `corepack - enable` on every Node.js installation. For more information about corepack see - https://nodejs.org/api/corepack.html +Usage: fnm completions [OPTIONS] - [env: FNM_COREPACK_ENABLED] +Options: + --node-dist-mirror + https://nodejs.org/dist/ mirror - --fnm-dir - The root directory of fnm installations + [env: FNM_NODE_DIST_MIRROR] + [default: https://nodejs.org/dist] - [env: FNM_DIR] + --shell + The shell syntax to use. Infers when missing - -h, --help - Print help information + [possible values: bash, zsh, fish, power-shell] - --log-level - The log level of fnm commands + --fnm-dir + The root directory of fnm installations - [env: FNM_LOGLEVEL] - [default: info] - [possible values: quiet, info, all, error] + [env: FNM_DIR] - --node-dist-mirror - https://nodejs.org/dist/ mirror + --log-level + The log level of fnm commands - [env: FNM_NODE_DIST_MIRROR] - [default: https://nodejs.org/dist] + [env: FNM_LOGLEVEL] + [default: info] + [possible values: quiet, error, info] - --using - Either an explicit version, or a filename with the version written in it + --arch + Override the architecture of the installed Node binary. Defaults to arch of fnm binary - --version-file-strategy - A strategy for how to resolve the Node version. Used whenever `fnm use` or `fnm install` - is called without a version, or when `--use-on-cd` is configured on evaluation. + [env: FNM_ARCH] - * `local`: Use the local version of Node defined within the current directory + --version-file-strategy + A strategy for how to resolve the Node version. Used whenever `fnm use` or `fnm install` is called without a version, or when `--use-on-cd` is configured on evaluation - * `recursive`: Use the version of Node defined within the current directory and all - parent directories + [env: FNM_VERSION_FILE_STRATEGY] + [default: local] - [env: FNM_VERSION_FILE_STRATEGY] - [default: local] - [possible values: local, recursive] -``` + Possible values: + - local: Use the local version of Node defined within the current directory + - recursive: Use the version of Node defined within the current directory and all parent directories -# `fnm help` + --corepack-enabled + Enable corepack support for each new installation. This will make fnm call `corepack enable` on every Node.js installation. For more information about corepack see https://nodejs.org/api/corepack.html -``` + [env: FNM_COREPACK_ENABLED] + -h, --help + Print help (see a summary with '-h') ``` -# `fnm install` +# `fnm alias` ``` -fnm-install -Install a new Node.js version +Alias a version to a common name -USAGE: - fnm install [OPTIONS] [VERSION] +Usage: fnm alias [OPTIONS] -ARGS: - - A version string. Can be a partial semver or a LTS version name by the format lts/NAME +Arguments: + -OPTIONS: - --arch - Override the architecture of the installed Node binary. Defaults to arch of fnm binary - [env: FNM_ARCH] + - --corepack-enabled - Enable corepack support for each new installation. This will make fnm call `corepack - enable` on every Node.js installation. For more information about corepack see - https://nodejs.org/api/corepack.html - [env: FNM_COREPACK_ENABLED] +Options: + --node-dist-mirror + https://nodejs.org/dist/ mirror - --fnm-dir - The root directory of fnm installations + [env: FNM_NODE_DIST_MIRROR] + [default: https://nodejs.org/dist] - [env: FNM_DIR] + --fnm-dir + The root directory of fnm installations - -h, --help - Print help information + [env: FNM_DIR] - --latest - Install latest version + --log-level + The log level of fnm commands - --log-level - The log level of fnm commands + [env: FNM_LOGLEVEL] + [default: info] + [possible values: quiet, error, info] - [env: FNM_LOGLEVEL] - [default: info] - [possible values: quiet, info, all, error] + --arch + Override the architecture of the installed Node binary. Defaults to arch of fnm binary - --lts - Install latest LTS + [env: FNM_ARCH] - --node-dist-mirror - https://nodejs.org/dist/ mirror + --version-file-strategy + A strategy for how to resolve the Node version. Used whenever `fnm use` or `fnm install` is called without a version, or when `--use-on-cd` is configured on evaluation - [env: FNM_NODE_DIST_MIRROR] - [default: https://nodejs.org/dist] + [env: FNM_VERSION_FILE_STRATEGY] + [default: local] - --version-file-strategy - A strategy for how to resolve the Node version. Used whenever `fnm use` or `fnm install` - is called without a version, or when `--use-on-cd` is configured on evaluation. + Possible values: + - local: Use the local version of Node defined within the current directory + - recursive: Use the version of Node defined within the current directory and all parent directories - * `local`: Use the local version of Node defined within the current directory + --corepack-enabled + Enable corepack support for each new installation. This will make fnm call `corepack enable` on every Node.js installation. For more information about corepack see https://nodejs.org/api/corepack.html - * `recursive`: Use the version of Node defined within the current directory and all - parent directories + [env: FNM_COREPACK_ENABLED] - [env: FNM_VERSION_FILE_STRATEGY] - [default: local] - [possible values: local, recursive] + -h, --help + Print help (see a summary with '-h') ``` -# `fnm list` +# `fnm unalias` ``` -fnm-list -List all locally installed Node.js versions +Remove an alias definition -USAGE: - fnm list [OPTIONS] +Usage: fnm unalias [OPTIONS] -OPTIONS: - --arch - Override the architecture of the installed Node binary. Defaults to arch of fnm binary +Arguments: + - [env: FNM_ARCH] - --corepack-enabled - Enable corepack support for each new installation. This will make fnm call `corepack - enable` on every Node.js installation. For more information about corepack see - https://nodejs.org/api/corepack.html +Options: + --node-dist-mirror + https://nodejs.org/dist/ mirror - [env: FNM_COREPACK_ENABLED] + [env: FNM_NODE_DIST_MIRROR] + [default: https://nodejs.org/dist] - --fnm-dir - The root directory of fnm installations + --fnm-dir + The root directory of fnm installations - [env: FNM_DIR] + [env: FNM_DIR] - -h, --help - Print help information + --log-level + The log level of fnm commands - --log-level - The log level of fnm commands + [env: FNM_LOGLEVEL] + [default: info] + [possible values: quiet, error, info] - [env: FNM_LOGLEVEL] - [default: info] - [possible values: quiet, info, all, error] + --arch + Override the architecture of the installed Node binary. Defaults to arch of fnm binary - --node-dist-mirror - https://nodejs.org/dist/ mirror + [env: FNM_ARCH] - [env: FNM_NODE_DIST_MIRROR] - [default: https://nodejs.org/dist] + --version-file-strategy + A strategy for how to resolve the Node version. Used whenever `fnm use` or `fnm install` is called without a version, or when `--use-on-cd` is configured on evaluation - --version-file-strategy - A strategy for how to resolve the Node version. Used whenever `fnm use` or `fnm install` - is called without a version, or when `--use-on-cd` is configured on evaluation. + [env: FNM_VERSION_FILE_STRATEGY] + [default: local] - * `local`: Use the local version of Node defined within the current directory + Possible values: + - local: Use the local version of Node defined within the current directory + - recursive: Use the version of Node defined within the current directory and all parent directories - * `recursive`: Use the version of Node defined within the current directory and all - parent directories + --corepack-enabled + Enable corepack support for each new installation. This will make fnm call `corepack enable` on every Node.js installation. For more information about corepack see https://nodejs.org/api/corepack.html - [env: FNM_VERSION_FILE_STRATEGY] - [default: local] - [possible values: local, recursive] + [env: FNM_COREPACK_ENABLED] + + -h, --help + Print help (see a summary with '-h') ``` -# `fnm list-remote` +# `fnm default` ``` -fnm-list-remote -List all remote Node.js versions +Set a version as the default version -USAGE: - fnm list-remote [OPTIONS] +This is a shorthand for `fnm alias VERSION default` -OPTIONS: - --arch - Override the architecture of the installed Node binary. Defaults to arch of fnm binary +Usage: fnm default [OPTIONS] - [env: FNM_ARCH] +Arguments: + - --corepack-enabled - Enable corepack support for each new installation. This will make fnm call `corepack - enable` on every Node.js installation. For more information about corepack see - https://nodejs.org/api/corepack.html - [env: FNM_COREPACK_ENABLED] +Options: + --node-dist-mirror + https://nodejs.org/dist/ mirror - --fnm-dir - The root directory of fnm installations + [env: FNM_NODE_DIST_MIRROR] + [default: https://nodejs.org/dist] - [env: FNM_DIR] + --fnm-dir + The root directory of fnm installations - -h, --help - Print help information + [env: FNM_DIR] - --log-level - The log level of fnm commands + --log-level + The log level of fnm commands - [env: FNM_LOGLEVEL] - [default: info] - [possible values: quiet, info, all, error] + [env: FNM_LOGLEVEL] + [default: info] + [possible values: quiet, error, info] - --node-dist-mirror - https://nodejs.org/dist/ mirror + --arch + Override the architecture of the installed Node binary. Defaults to arch of fnm binary - [env: FNM_NODE_DIST_MIRROR] - [default: https://nodejs.org/dist] + [env: FNM_ARCH] - --version-file-strategy - A strategy for how to resolve the Node version. Used whenever `fnm use` or `fnm install` - is called without a version, or when `--use-on-cd` is configured on evaluation. + --version-file-strategy + A strategy for how to resolve the Node version. Used whenever `fnm use` or `fnm install` is called without a version, or when `--use-on-cd` is configured on evaluation - * `local`: Use the local version of Node defined within the current directory + [env: FNM_VERSION_FILE_STRATEGY] + [default: local] - * `recursive`: Use the version of Node defined within the current directory and all - parent directories + Possible values: + - local: Use the local version of Node defined within the current directory + - recursive: Use the version of Node defined within the current directory and all parent directories - [env: FNM_VERSION_FILE_STRATEGY] - [default: local] - [possible values: local, recursive] -``` + --corepack-enabled + Enable corepack support for each new installation. This will make fnm call `corepack enable` on every Node.js installation. For more information about corepack see https://nodejs.org/api/corepack.html -# `fnm unalias` + [env: FNM_COREPACK_ENABLED] + -h, --help + Print help (see a summary with '-h') ``` -fnm-unalias -Remove an alias definition - -USAGE: - fnm unalias [OPTIONS] -ARGS: - +# `fnm current` +``` +Print the current Node.js version -OPTIONS: - --arch - Override the architecture of the installed Node binary. Defaults to arch of fnm binary +Usage: fnm current [OPTIONS] - [env: FNM_ARCH] +Options: + --node-dist-mirror + https://nodejs.org/dist/ mirror - --corepack-enabled - Enable corepack support for each new installation. This will make fnm call `corepack - enable` on every Node.js installation. For more information about corepack see - https://nodejs.org/api/corepack.html + [env: FNM_NODE_DIST_MIRROR] + [default: https://nodejs.org/dist] - [env: FNM_COREPACK_ENABLED] + --fnm-dir + The root directory of fnm installations - --fnm-dir - The root directory of fnm installations + [env: FNM_DIR] - [env: FNM_DIR] + --log-level + The log level of fnm commands - -h, --help - Print help information + [env: FNM_LOGLEVEL] + [default: info] + [possible values: quiet, error, info] - --log-level - The log level of fnm commands + --arch + Override the architecture of the installed Node binary. Defaults to arch of fnm binary - [env: FNM_LOGLEVEL] - [default: info] - [possible values: quiet, info, all, error] + [env: FNM_ARCH] - --node-dist-mirror - https://nodejs.org/dist/ mirror + --version-file-strategy + A strategy for how to resolve the Node version. Used whenever `fnm use` or `fnm install` is called without a version, or when `--use-on-cd` is configured on evaluation - [env: FNM_NODE_DIST_MIRROR] - [default: https://nodejs.org/dist] + [env: FNM_VERSION_FILE_STRATEGY] + [default: local] - --version-file-strategy - A strategy for how to resolve the Node version. Used whenever `fnm use` or `fnm install` - is called without a version, or when `--use-on-cd` is configured on evaluation. + Possible values: + - local: Use the local version of Node defined within the current directory + - recursive: Use the version of Node defined within the current directory and all parent directories - * `local`: Use the local version of Node defined within the current directory + --corepack-enabled + Enable corepack support for each new installation. This will make fnm call `corepack enable` on every Node.js installation. For more information about corepack see https://nodejs.org/api/corepack.html - * `recursive`: Use the version of Node defined within the current directory and all - parent directories + [env: FNM_COREPACK_ENABLED] - [env: FNM_VERSION_FILE_STRATEGY] - [default: local] - [possible values: local, recursive] + -h, --help + Print help (see a summary with '-h') ``` -# `fnm uninstall` +# `fnm exec` ``` -fnm-uninstall -Uninstall a Node.js version - -> Warning: when providing an alias, it will remove the Node version the alias is pointing to, along -with the other aliases that point to the same version. +Run a command within fnm context -USAGE: - fnm uninstall [OPTIONS] [VERSION] +Example: +-------- +fnm exec --using=v12.0.0 node --version +=> v12.0.0 -ARGS: - +Usage: fnm exec [OPTIONS] [ARGUMENTS]... +Arguments: + [ARGUMENTS]... + The command to run -OPTIONS: - --arch - Override the architecture of the installed Node binary. Defaults to arch of fnm binary +Options: + --node-dist-mirror + https://nodejs.org/dist/ mirror - [env: FNM_ARCH] + [env: FNM_NODE_DIST_MIRROR] + [default: https://nodejs.org/dist] - --corepack-enabled - Enable corepack support for each new installation. This will make fnm call `corepack - enable` on every Node.js installation. For more information about corepack see - https://nodejs.org/api/corepack.html + --using + Either an explicit version, or a filename with the version written in it - [env: FNM_COREPACK_ENABLED] + --fnm-dir + The root directory of fnm installations - --fnm-dir - The root directory of fnm installations + [env: FNM_DIR] - [env: FNM_DIR] + --log-level + The log level of fnm commands - -h, --help - Print help information + [env: FNM_LOGLEVEL] + [default: info] + [possible values: quiet, error, info] - --log-level - The log level of fnm commands + --arch + Override the architecture of the installed Node binary. Defaults to arch of fnm binary - [env: FNM_LOGLEVEL] - [default: info] - [possible values: quiet, info, all, error] + [env: FNM_ARCH] - --node-dist-mirror - https://nodejs.org/dist/ mirror + --version-file-strategy + A strategy for how to resolve the Node version. Used whenever `fnm use` or `fnm install` is called without a version, or when `--use-on-cd` is configured on evaluation - [env: FNM_NODE_DIST_MIRROR] - [default: https://nodejs.org/dist] + [env: FNM_VERSION_FILE_STRATEGY] + [default: local] - --version-file-strategy - A strategy for how to resolve the Node version. Used whenever `fnm use` or `fnm install` - is called without a version, or when `--use-on-cd` is configured on evaluation. + Possible values: + - local: Use the local version of Node defined within the current directory + - recursive: Use the version of Node defined within the current directory and all parent directories - * `local`: Use the local version of Node defined within the current directory + --corepack-enabled + Enable corepack support for each new installation. This will make fnm call `corepack enable` on every Node.js installation. For more information about corepack see https://nodejs.org/api/corepack.html - * `recursive`: Use the version of Node defined within the current directory and all - parent directories + [env: FNM_COREPACK_ENABLED] - [env: FNM_VERSION_FILE_STRATEGY] - [default: local] - [possible values: local, recursive] + -h, --help + Print help (see a summary with '-h') ``` -# `fnm use` +# `fnm uninstall` ``` -fnm-use -Change Node.js version +Uninstall a Node.js version -USAGE: - fnm use [OPTIONS] [VERSION] +> Warning: when providing an alias, it will remove the Node version the alias is pointing to, along with the other aliases that point to the same version. -ARGS: - +Usage: fnm uninstall [OPTIONS] [VERSION] +Arguments: + [VERSION] -OPTIONS: - --arch - Override the architecture of the installed Node binary. Defaults to arch of fnm binary - [env: FNM_ARCH] +Options: + --node-dist-mirror + https://nodejs.org/dist/ mirror - --corepack-enabled - Enable corepack support for each new installation. This will make fnm call `corepack - enable` on every Node.js installation. For more information about corepack see - https://nodejs.org/api/corepack.html + [env: FNM_NODE_DIST_MIRROR] + [default: https://nodejs.org/dist] - [env: FNM_COREPACK_ENABLED] + --fnm-dir + The root directory of fnm installations - --fnm-dir - The root directory of fnm installations + [env: FNM_DIR] - [env: FNM_DIR] + --log-level + The log level of fnm commands - -h, --help - Print help information + [env: FNM_LOGLEVEL] + [default: info] + [possible values: quiet, error, info] - --install-if-missing - Install the version if it isn't installed yet + --arch + Override the architecture of the installed Node binary. Defaults to arch of fnm binary - --log-level - The log level of fnm commands + [env: FNM_ARCH] - [env: FNM_LOGLEVEL] - [default: info] - [possible values: quiet, info, all, error] + --version-file-strategy + A strategy for how to resolve the Node version. Used whenever `fnm use` or `fnm install` is called without a version, or when `--use-on-cd` is configured on evaluation - --node-dist-mirror - https://nodejs.org/dist/ mirror + [env: FNM_VERSION_FILE_STRATEGY] + [default: local] - [env: FNM_NODE_DIST_MIRROR] - [default: https://nodejs.org/dist] + Possible values: + - local: Use the local version of Node defined within the current directory + - recursive: Use the version of Node defined within the current directory and all parent directories - --silent-if-unchanged - Don't output a message identifying the version being used if it will not change due to - execution of this command + --corepack-enabled + Enable corepack support for each new installation. This will make fnm call `corepack enable` on every Node.js installation. For more information about corepack see https://nodejs.org/api/corepack.html - --version-file-strategy - A strategy for how to resolve the Node version. Used whenever `fnm use` or `fnm install` - is called without a version, or when `--use-on-cd` is configured on evaluation. + [env: FNM_COREPACK_ENABLED] - * `local`: Use the local version of Node defined within the current directory + -h, --help + Print help (see a summary with '-h') +``` - * `recursive`: Use the version of Node defined within the current directory and all - parent directories +# `fnm help` + +``` - [env: FNM_VERSION_FILE_STRATEGY] - [default: local] - [possible values: local, recursive] ``` diff --git a/src/commands/completions.rs b/src/commands/completions.rs index 605944ee7..9f4a335ed 100644 --- a/src/commands/completions.rs +++ b/src/commands/completions.rs @@ -1,16 +1,16 @@ use super::command::Command; -use crate::cli::Cli; use crate::config::FnmConfig; -use crate::shell::{infer_shell, AVAILABLE_SHELLS}; -use clap::{IntoApp, Parser}; -use clap_complete::{Generator, Shell}; +use crate::shell::{infer_shell, Shell}; +use crate::{cli::Cli, shell::Shells}; +use clap::{CommandFactory, Parser, ValueEnum}; +use clap_complete::{Generator, Shell as ClapShell}; use thiserror::Error; #[derive(Parser, Debug)] pub struct Completions { /// The shell syntax to use. Infers when missing. #[clap(long)] - shell: Option, + shell: Option, } impl Command for Completions { @@ -18,10 +18,12 @@ impl Command for Completions { fn apply(self, _config: &FnmConfig) -> Result<(), Self::Error> { let mut stdio = std::io::stdout(); - let shell = self + let shell: Box = self .shell + .map(Into::into) .or_else(|| infer_shell().map(Into::into)) .ok_or(Error::CantInferShell)?; + let shell: ClapShell = shell.into(); let app = Cli::command(); shell.generate(&app, &mut stdio); Ok(()) @@ -41,7 +43,7 @@ pub enum Error { } fn shells_as_string() -> String { - AVAILABLE_SHELLS + Shells::value_variants() .iter() .map(|x| format!("* {x}")) .collect::>() diff --git a/src/commands/env.rs b/src/commands/env.rs index fb1b949a3..29f56aa0a 100644 --- a/src/commands/env.rs +++ b/src/commands/env.rs @@ -4,7 +4,8 @@ use crate::directories; use crate::fs::symlink_dir; use crate::outln; use crate::path_ext::PathExt; -use crate::shell::{infer_shell, Shell, AVAILABLE_SHELLS}; +use crate::shell::{infer_shell, Shell, Shells}; +use clap::ValueEnum; use colored::Colorize; use std::collections::HashMap; use std::fmt::Debug; @@ -14,8 +15,7 @@ use thiserror::Error; pub struct Env { /// The shell syntax to use. Infers when missing. #[clap(long)] - #[clap(possible_values = AVAILABLE_SHELLS)] - shell: Option>, + shell: Option, /// Print JSON instead of shell commands. #[clap(long, conflicts_with = "shell")] json: bool, @@ -104,6 +104,7 @@ impl Command for Env { let shell: Box = self .shell + .map(Into::into) .or_else(infer_shell) .ok_or(Error::CantInferShell)?; @@ -148,7 +149,7 @@ pub enum Error { } fn shells_as_string() -> String { - AVAILABLE_SHELLS + Shells::value_variants() .iter() .map(|x| format!("* {x}")) .collect::>() @@ -161,16 +162,13 @@ mod tests { #[test] fn test_smoke() { - use crate::shell; let config = FnmConfig::default(); - let shell: Box = if cfg!(windows) { - Box::from(shell::WindowsCmd) - } else { - Box::from(shell::Bash) - }; Env { - shell: Some(shell), - ..Env::default() + #[cfg(windows)] + shell: Some(Shells::Cmd), + #[cfg(not(windows))] + shell: Some(Shells::Bash), + ..Default::default() } .call(config); } diff --git a/src/config.rs b/src/config.rs index e94c38957..5b71ced86 100644 --- a/src/config.rs +++ b/src/config.rs @@ -36,10 +36,9 @@ pub struct FnmConfig { #[clap( long, env = "FNM_LOGLEVEL", - default_value = "info", + default_value_t, global = true, - hide_env_values = true, - possible_values = LogLevel::possible_values() + hide_env_values = true )] log_level: LogLevel, @@ -57,17 +56,12 @@ pub struct FnmConfig { /// A strategy for how to resolve the Node version. Used whenever `fnm use` or `fnm install` is /// called without a version, or when `--use-on-cd` is configured on evaluation. - /// - /// * `local`: Use the local version of Node defined within the current directory - /// - /// * `recursive`: Use the version of Node defined within the current directory and all parent directories #[clap( long, env = "FNM_VERSION_FILE_STRATEGY", - possible_values = VersionFileStrategy::possible_values(), - default_value = "local", + default_value_t, global = true, - hide_env_values = true, + hide_env_values = true )] version_file_strategy: VersionFileStrategy, diff --git a/src/log_level.rs b/src/log_level.rs index 61d03f50e..34f9304fe 100644 --- a/src/log_level.rs +++ b/src/log_level.rs @@ -1,10 +1,26 @@ -#[derive(Debug, PartialEq, PartialOrd, Eq, Ord, Clone)] +use std::fmt::Display; + +use clap::ValueEnum; + +#[derive(Debug, Default, PartialEq, PartialOrd, Eq, Ord, Clone, ValueEnum)] pub enum LogLevel { Quiet, Error, + #[default] + #[value(alias("all"))] Info, } +impl Display for LogLevel { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + match self { + LogLevel::Quiet => write!(f, "quiet"), + LogLevel::Error => write!(f, "error"), + LogLevel::Info => write!(f, "info"), + } + } +} + impl LogLevel { pub fn is_writable(&self, logging: &Self) -> bool { use std::cmp::Ordering; @@ -37,19 +53,6 @@ impl From for &'static str { } } -impl std::str::FromStr for LogLevel { - type Err = &'static str; - - fn from_str(s: &str) -> Result { - match s { - "quiet" => Ok(Self::Quiet), - "info" | "all" => Ok(Self::Info), - "error" => Ok(Self::Error), - _ => Err("Unsupported log level"), - } - } -} - #[macro_export] macro_rules! outln { ($config:ident, $level:path, $($expr:expr),+) => {{ diff --git a/src/shell/mod.rs b/src/shell/mod.rs index 2460b7a11..15b2ed78d 100644 --- a/src/shell/mod.rs +++ b/src/shell/mod.rs @@ -13,7 +13,7 @@ pub use bash::Bash; pub use fish::Fish; pub use infer::infer_shell; pub use powershell::PowerShell; -pub use shell::{Shell, AVAILABLE_SHELLS}; +pub use shell::{Shell, Shells}; pub use windows_cmd::WindowsCmd; pub use windows_compat::maybe_fix_windows_path; pub use zsh::Zsh; diff --git a/src/shell/shell.rs b/src/shell/shell.rs index bd0e3203c..c66b99484 100644 --- a/src/shell/shell.rs +++ b/src/shell/shell.rs @@ -1,6 +1,8 @@ -use std::fmt::Debug; +use std::fmt::{Debug, Display}; use std::path::Path; +use clap::ValueEnum; + pub trait Shell: Debug { fn path(&self, path: &Path) -> anyhow::Result; fn set_env_var(&self, name: &str, value: &str) -> String; @@ -11,23 +13,38 @@ pub trait Shell: Debug { fn to_clap_shell(&self) -> clap_complete::Shell; } -#[cfg(windows)] -pub const AVAILABLE_SHELLS: &[&str; 5] = &["cmd", "powershell", "bash", "zsh", "fish"]; - -#[cfg(unix)] -pub const AVAILABLE_SHELLS: &[&str; 4] = &["bash", "zsh", "fish", "powershell"]; +#[derive(Debug, Clone, ValueEnum)] +pub enum Shells { + Bash, + Zsh, + Fish, + PowerShell, + #[cfg(windows)] + Cmd, +} -impl std::str::FromStr for Box { - type Err = String; +impl Display for Shells { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + match self { + Shells::Bash => write!(f, "bash"), + Shells::Zsh => write!(f, "zsh"), + Shells::Fish => write!(f, "fish"), + Shells::PowerShell => write!(f, "powershell"), + #[cfg(windows)] + Shells::Cmd => write!(f, "cmd"), + } + } +} - fn from_str(s: &str) -> Result, Self::Err> { - match s { - "cmd" => Ok(Box::from(super::windows_cmd::WindowsCmd)), - "zsh" => Ok(Box::from(super::zsh::Zsh)), - "bash" => Ok(Box::from(super::bash::Bash)), - "fish" => Ok(Box::from(super::fish::Fish)), - "powershell" => Ok(Box::from(super::powershell::PowerShell)), - shell_type => Err(format!("I don't know the shell type of {shell_type:?}",)), +impl From for Box { + fn from(shell: Shells) -> Box { + match shell { + Shells::Zsh => Box::from(super::zsh::Zsh), + Shells::Bash => Box::from(super::bash::Bash), + Shells::Fish => Box::from(super::fish::Fish), + Shells::PowerShell => Box::from(super::powershell::PowerShell), + #[cfg(windows)] + Shells::Cmd => Box::from(super::windows_cmd::WindowsCmd), } } } diff --git a/src/user_version_reader.rs b/src/user_version_reader.rs index 6af4605ee..cc109ea07 100644 --- a/src/user_version_reader.rs +++ b/src/user_version_reader.rs @@ -4,7 +4,7 @@ use crate::version_files::{get_user_version_for_directory, get_user_version_for_ use std::path::PathBuf; use std::str::FromStr; -#[derive(Debug)] +#[derive(Debug, Clone)] pub enum UserVersionReader { Direct(UserVersion), Path(PathBuf), diff --git a/src/version_file_strategy.rs b/src/version_file_strategy.rs index f55f10f44..b01f7e85b 100644 --- a/src/version_file_strategy.rs +++ b/src/version_file_strategy.rs @@ -1,17 +1,25 @@ -use std::str::FromStr; +use clap::ValueEnum; +use std::fmt::Display; -#[derive(Debug, Default)] +#[derive(Debug, Clone, Default, ValueEnum)] pub enum VersionFileStrategy { + /// Use the local version of Node defined within the current directory #[default] Local, + /// Use the version of Node defined within the current directory and all parent directories Recursive, } -impl VersionFileStrategy { - pub fn possible_values() -> &'static [&'static str] { - &["local", "recursive"] +impl Display for VersionFileStrategy { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + match self { + VersionFileStrategy::Local => write!(f, "local"), + VersionFileStrategy::Recursive => write!(f, "recursive"), + } } +} +impl VersionFileStrategy { pub fn as_str(&self) -> &'static str { match self { VersionFileStrategy::Local => "local", @@ -19,17 +27,3 @@ impl VersionFileStrategy { } } } - -impl FromStr for VersionFileStrategy { - type Err = String; - - fn from_str(s: &str) -> Result { - match s { - "local" => Ok(VersionFileStrategy::Local), - "recursive" => Ok(VersionFileStrategy::Recursive), - _ => Err(format!( - "Invalid strategy: {s}. Expected one of: local, recursive" - )), - } - } -} From 30deaf96e3542939a8b0c1aa780d156571dacaad Mon Sep 17 00:00:00 2001 From: Gal Schlezinger Date: Mon, 3 Jul 2023 22:57:37 +0300 Subject: [PATCH 35/66] Fix powershell profile paths in readme (#990) fixes #969 Co-authored by: Mike Schweitzer --- README.md | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index cd59c38a8..6fa4e76c4 100644 --- a/README.md +++ b/README.md @@ -105,6 +105,7 @@ Then, [set up your shell for fnm](#shell-setup) - [Set up your shell for fnm](#shell-setup) ### Removing + To remove fnm (😒), just delete the `.fnm` folder in your home directory. You should also edit your shell configuration to remove any references to fnm (ie. read [Shell Setup](#shell-setup), and do the opposite). ## Completions @@ -131,6 +132,7 @@ This is done by evaluating the output of `fnm env`. To automatically run `fnm use` when a directory contains a `.node-version` or `.nvmrc` file, add the `--use-on-cd` option to your shell setup. Adding a `.node-version` to your project is as simple as: + ```bash $ node --version v14.18.3 @@ -171,8 +173,10 @@ Add the following to the end of your profile file: fnm env --use-on-cd | Out-String | Invoke-Expression ``` -- On Windows, the profile is located at `~\Documents\PowerShell\Microsoft.PowerShell_profile.ps1` or `$PROFILE` - For macOS/Linux, the profile is located at `~/.config/powershell/Microsoft.PowerShell_profile.ps1` +- On Windows, PowerShell comes pre-installed, but there are two versions of it. [Read more about it here](https://learn.microsoft.com/en-us/powershell/scripting/windows-powershell/install/installing-windows-powershell). The profile is located at different places depending on which version you're using: + - Built in PowerShell (aka "Windows PowerShell"): `~\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1` + - The newer, PowerShell >= 7, that's not built in: `~\Documents\PowerShell\Microsoft.PowerShell_profile.ps1` #### Windows Command Prompt aka Batch aka WinCMD @@ -181,6 +185,7 @@ fnm is also supported but is not entirely covered. [You can set up a startup scr ```batch FOR /f "tokens=*" %i IN ('fnm env --use-on-cd') DO CALL %i ``` + ⚠️ If you get the error `i was unexpected at this time`, please make a .cmd file as suggested by the first step in the Usage with Cmder secton add it's path to the `AutoRun` registry key. #### Usage with Cmder @@ -189,16 +194,20 @@ Usage is very similar to the normal WinCMD install, apart for a few tweaks to al Then you can do something like this: - Make a .cmd file to invoke it + ```batch :: %CMDER_ROOT%\bin\fnm_init.cmd @echo off FOR /f "tokens=*" %%z IN ('fnm env --use-on-cd') DO CALL %%z ``` + - Add it to the startup script + ```batch :: %CMDER_ROOT%\config\user_profile.cmd call "%CMDER_ROOT%\bin\fnm_init.cmd" ``` + You can replace `%CMDER_ROOT%` with any other convenient path too. ## [Usage](./docs/commands.md) From 97be792a4410d8f121e03a1f81f60c48cbfdee2c Mon Sep 17 00:00:00 2001 From: Amit Dahan Date: Thu, 6 Jul 2023 10:01:44 +0300 Subject: [PATCH 36/66] experimental: support `package.json#engines` for `use` and `install` (#839) Co-authored-by: Gal Schlezinger --- .changeset/warm-parrots-drive.md | 5 ++ docs/commands.md | 91 ++++++++++++++++++++++++++++ e2e/__snapshots__/basic.test.ts.snap | 82 +++++++++++++++++++++++++ e2e/basic.test.ts | 28 +++++++++ e2e/env.test.ts | 1 + e2e/shellcode/shells.ts | 2 +- e2e/shellcode/shells/cmdEnv.ts | 4 +- src/commands/env.rs | 1 + src/config.rs | 17 ++++++ src/main.rs | 1 + src/package_json.rs | 19 ++++++ src/user_version.rs | 3 + src/user_version_reader.rs | 2 +- src/version_files.rs | 59 +++++++++++++----- 14 files changed, 296 insertions(+), 19 deletions(-) create mode 100644 .changeset/warm-parrots-drive.md create mode 100644 src/package_json.rs diff --git a/.changeset/warm-parrots-drive.md b/.changeset/warm-parrots-drive.md new file mode 100644 index 000000000..3830587a7 --- /dev/null +++ b/.changeset/warm-parrots-drive.md @@ -0,0 +1,5 @@ +--- +"fnm": minor +--- + +Support resolving `engines.node` field via experimental `--resolve-engines` flag diff --git a/docs/commands.md b/docs/commands.md index 078c59459..00a98d3de 100644 --- a/docs/commands.md +++ b/docs/commands.md @@ -59,6 +59,13 @@ Options: [env: FNM_COREPACK_ENABLED] + --resolve-engines + Resolve `engines.node` field in `package.json` whenever a `.node-version` or `.nvmrc` file is not present. + Experimental: This feature is subject to change. + Note: `engines.node` can be any semver range, with the latest satisfying version being resolved. + + [env: FNM_RESOLVE_ENGINES] + -h, --help Print help (see a summary with '-h') @@ -112,6 +119,13 @@ Options: [env: FNM_COREPACK_ENABLED] + --resolve-engines + Resolve `engines.node` field in `package.json` whenever a `.node-version` or `.nvmrc` file is not present. + Experimental: This feature is subject to change. + Note: `engines.node` can be any semver range, with the latest satisfying version being resolved. + + [env: FNM_RESOLVE_ENGINES] + -h, --help Print help (see a summary with '-h') ``` @@ -162,6 +176,13 @@ Options: [env: FNM_COREPACK_ENABLED] + --resolve-engines + Resolve `engines.node` field in `package.json` whenever a `.node-version` or `.nvmrc` file is not present. + Experimental: This feature is subject to change. + Note: `engines.node` can be any semver range, with the latest satisfying version being resolved. + + [env: FNM_RESOLVE_ENGINES] + -h, --help Print help (see a summary with '-h') ``` @@ -222,6 +243,13 @@ Options: [env: FNM_COREPACK_ENABLED] + --resolve-engines + Resolve `engines.node` field in `package.json` whenever a `.node-version` or `.nvmrc` file is not present. + Experimental: This feature is subject to change. + Note: `engines.node` can be any semver range, with the latest satisfying version being resolved. + + [env: FNM_RESOLVE_ENGINES] + -h, --help Print help (see a summary with '-h') ``` @@ -282,6 +310,13 @@ Options: [env: FNM_COREPACK_ENABLED] + --resolve-engines + Resolve `engines.node` field in `package.json` whenever a `.node-version` or `.nvmrc` file is not present. + Experimental: This feature is subject to change. + Note: `engines.node` can be any semver range, with the latest satisfying version being resolved. + + [env: FNM_RESOLVE_ENGINES] + -h, --help Print help (see a summary with '-h') ``` @@ -347,6 +382,13 @@ Options: [env: FNM_COREPACK_ENABLED] + --resolve-engines + Resolve `engines.node` field in `package.json` whenever a `.node-version` or `.nvmrc` file is not present. + Experimental: This feature is subject to change. + Note: `engines.node` can be any semver range, with the latest satisfying version being resolved. + + [env: FNM_RESOLVE_ENGINES] + -h, --help Print help (see a summary with '-h') ``` @@ -402,6 +444,13 @@ Options: [env: FNM_COREPACK_ENABLED] + --resolve-engines + Resolve `engines.node` field in `package.json` whenever a `.node-version` or `.nvmrc` file is not present. + Experimental: This feature is subject to change. + Note: `engines.node` can be any semver range, with the latest satisfying version being resolved. + + [env: FNM_RESOLVE_ENGINES] + -h, --help Print help (see a summary with '-h') ``` @@ -459,6 +508,13 @@ Options: [env: FNM_COREPACK_ENABLED] + --resolve-engines + Resolve `engines.node` field in `package.json` whenever a `.node-version` or `.nvmrc` file is not present. + Experimental: This feature is subject to change. + Note: `engines.node` can be any semver range, with the latest satisfying version being resolved. + + [env: FNM_RESOLVE_ENGINES] + -h, --help Print help (see a summary with '-h') ``` @@ -513,6 +569,13 @@ Options: [env: FNM_COREPACK_ENABLED] + --resolve-engines + Resolve `engines.node` field in `package.json` whenever a `.node-version` or `.nvmrc` file is not present. + Experimental: This feature is subject to change. + Note: `engines.node` can be any semver range, with the latest satisfying version being resolved. + + [env: FNM_RESOLVE_ENGINES] + -h, --help Print help (see a summary with '-h') ``` @@ -569,6 +632,13 @@ Options: [env: FNM_COREPACK_ENABLED] + --resolve-engines + Resolve `engines.node` field in `package.json` whenever a `.node-version` or `.nvmrc` file is not present. + Experimental: This feature is subject to change. + Note: `engines.node` can be any semver range, with the latest satisfying version being resolved. + + [env: FNM_RESOLVE_ENGINES] + -h, --help Print help (see a summary with '-h') ``` @@ -619,6 +689,13 @@ Options: [env: FNM_COREPACK_ENABLED] + --resolve-engines + Resolve `engines.node` field in `package.json` whenever a `.node-version` or `.nvmrc` file is not present. + Experimental: This feature is subject to change. + Note: `engines.node` can be any semver range, with the latest satisfying version being resolved. + + [env: FNM_RESOLVE_ENGINES] + -h, --help Print help (see a summary with '-h') ``` @@ -681,6 +758,13 @@ Options: [env: FNM_COREPACK_ENABLED] + --resolve-engines + Resolve `engines.node` field in `package.json` whenever a `.node-version` or `.nvmrc` file is not present. + Experimental: This feature is subject to change. + Note: `engines.node` can be any semver range, with the latest satisfying version being resolved. + + [env: FNM_RESOLVE_ENGINES] + -h, --help Print help (see a summary with '-h') ``` @@ -737,6 +821,13 @@ Options: [env: FNM_COREPACK_ENABLED] + --resolve-engines + Resolve `engines.node` field in `package.json` whenever a `.node-version` or `.nvmrc` file is not present. + Experimental: This feature is subject to change. + Note: `engines.node` can be any semver range, with the latest satisfying version being resolved. + + [env: FNM_RESOLVE_ENGINES] + -h, --help Print help (see a summary with '-h') ``` diff --git a/e2e/__snapshots__/basic.test.ts.snap b/e2e/__snapshots__/basic.test.ts.snap index bfc43fc38..7b5d77efb 100644 --- a/e2e/__snapshots__/basic.test.ts.snap +++ b/e2e/__snapshots__/basic.test.ts.snap @@ -42,6 +42,28 @@ if [ "$(node --version)" != "v8.11.3" ]; then fi" `; +exports[`Bash package.json engines.node with semver range: Bash 1`] = ` +"set -e +eval "$(fnm env --resolve-engines)" +fnm install +fnm use +if [ "$(node --version)" != "v6.17.0" ]; then + echo "Expected node version to be v6.17.0. Got $(node --version)" + exit 1 +fi" +`; + +exports[`Bash package.json engines.node: Bash 1`] = ` +"set -e +eval "$(fnm env --resolve-engines)" +fnm install +fnm use +if [ "$(node --version)" != "v8.11.3" ]; then + echo "Expected node version to be v8.11.3. Got $(node --version)" + exit 1 +fi" +`; + exports[`Bash resolves partial semver: Bash 1`] = ` "set -e eval "$(fnm env)" @@ -118,6 +140,28 @@ if test "$____test____" != "v8.11.3" end" `; +exports[`Fish package.json engines.node with semver range: Fish 1`] = ` +"fnm env --resolve-engines | source +fnm install +fnm use +set ____test____ (node --version) +if test "$____test____" != "v6.17.0" + echo "Expected node version to be v6.17.0. Got $____test____" + exit 1 +end" +`; + +exports[`Fish package.json engines.node: Fish 1`] = ` +"fnm env --resolve-engines | source +fnm install +fnm use +set ____test____ (node --version) +if test "$____test____" != "v8.11.3" + echo "Expected node version to be v8.11.3. Got $____test____" + exit 1 +end" +`; + exports[`Fish resolves partial semver: Fish 1`] = ` "fnm env | source fnm install 6 @@ -182,6 +226,22 @@ fnm use v8.11.3 if ( "$(node --version)" -ne "v8.11.3" ) { echo "Expected node version to be v8.11.3. Got $(node --version)"; exit 1 }" `; +exports[`PowerShell package.json engines.node with semver range: PowerShell 1`] = ` +"$ErrorActionPreference = "Stop" +fnm env --resolve-engines | Out-String | Invoke-Expression +fnm install +fnm use +if ( "$(node --version)" -ne "v6.17.0" ) { echo "Expected node version to be v6.17.0. Got $(node --version)"; exit 1 }" +`; + +exports[`PowerShell package.json engines.node: PowerShell 1`] = ` +"$ErrorActionPreference = "Stop" +fnm env --resolve-engines | Out-String | Invoke-Expression +fnm install +fnm use +if ( "$(node --version)" -ne "v8.11.3" ) { echo "Expected node version to be v8.11.3. Got $(node --version)"; exit 1 }" +`; + exports[`PowerShell resolves partial semver: PowerShell 1`] = ` "$ErrorActionPreference = "Stop" fnm env | Out-String | Invoke-Expression @@ -249,6 +309,28 @@ if [ "$(node --version)" != "v8.11.3" ]; then fi" `; +exports[`Zsh package.json engines.node with semver range: Zsh 1`] = ` +"set -e +eval "$(fnm env --resolve-engines)" +fnm install +fnm use +if [ "$(node --version)" != "v6.17.0" ]; then + echo "Expected node version to be v6.17.0. Got $(node --version)" + exit 1 +fi" +`; + +exports[`Zsh package.json engines.node: Zsh 1`] = ` +"set -e +eval "$(fnm env --resolve-engines)" +fnm install +fnm use +if [ "$(node --version)" != "v8.11.3" ]; then + echo "Expected node version to be v8.11.3. Got $(node --version)" + exit 1 +fi" +`; + exports[`Zsh resolves partial semver: Zsh 1`] = ` "set -e eval "$(fnm env)" diff --git a/e2e/basic.test.ts b/e2e/basic.test.ts index d269c5ffb..17040d0b0 100644 --- a/e2e/basic.test.ts +++ b/e2e/basic.test.ts @@ -40,6 +40,34 @@ for (const shell of [Bash, Zsh, Fish, PowerShell, WinCmd]) { .execute(shell) }) + test(`package.json engines.node`, async () => { + await writeFile( + join(testCwd(), "package.json"), + JSON.stringify({ engines: { node: "8.11.3" } }) + ) + await script(shell) + .then(shell.env({ resolveEngines: true })) + .then(shell.call("fnm", ["install"])) + .then(shell.call("fnm", ["use"])) + .then(testNodeVersion(shell, "v8.11.3")) + .takeSnapshot(shell) + .execute(shell) + }) + + test(`package.json engines.node with semver range`, async () => { + await writeFile( + join(testCwd(), "package.json"), + JSON.stringify({ engines: { node: "^6 < 6.17.1" } }) + ) + await script(shell) + .then(shell.env({ resolveEngines: true })) + .then(shell.call("fnm", ["install"])) + .then(shell.call("fnm", ["use"])) + .then(testNodeVersion(shell, "v6.17.0")) + .takeSnapshot(shell) + .execute(shell) + }) + test(`use on cd`, async () => { await mkdir(join(testCwd(), "subdir"), { recursive: true }) await writeFile(join(testCwd(), "subdir", ".node-version"), "v12.22.12") diff --git a/e2e/env.test.ts b/e2e/env.test.ts index 95fe48c38..4c056c8e6 100644 --- a/e2e/env.test.ts +++ b/e2e/env.test.ts @@ -26,6 +26,7 @@ for (const shell of [Bash, Zsh, Fish, PowerShell, WinCmd]) { FNM_LOGLEVEL: "info", FNM_MULTISHELL_PATH: expect.any(String), FNM_NODE_DIST_MIRROR: expect.any(String), + FNM_RESOLVE_ENGINES: "false", FNM_COREPACK_ENABLED: "false", FNM_VERSION_FILE_STRATEGY: "local", }) diff --git a/e2e/shellcode/shells.ts b/e2e/shellcode/shells.ts index 10fd0affa..0fc3705d2 100644 --- a/e2e/shellcode/shells.ts +++ b/e2e/shellcode/shells.ts @@ -61,7 +61,7 @@ export const PowerShell = { ...define({ binaryName: () => "pwsh", forceFile: ".ps1", - currentlySupported: () => true, + currentlySupported: () => process.platform === "win32", name: () => "PowerShell", launchArgs: () => ["-NoProfile"], escapeText: (x) => x, diff --git a/e2e/shellcode/shells/cmdEnv.ts b/e2e/shellcode/shells/cmdEnv.ts index 82564ec8f..5edbf5ae8 100644 --- a/e2e/shellcode/shells/cmdEnv.ts +++ b/e2e/shellcode/shells/cmdEnv.ts @@ -4,16 +4,18 @@ type EnvConfig = { useOnCd: boolean logLevel: string corepackEnabled: boolean + resolveEngines: boolean } export type HasEnv = { env(cfg: Partial): ScriptLine } function stringify(envConfig: Partial = {}) { - const { useOnCd, logLevel, corepackEnabled } = envConfig + const { useOnCd, logLevel, corepackEnabled, resolveEngines } = envConfig return [ `fnm env`, useOnCd && "--use-on-cd", logLevel && `--log-level=${logLevel}`, corepackEnabled && "--corepack-enabled", + resolveEngines && `--resolve-engines`, ] .filter(Boolean) .join(" ") diff --git a/src/commands/env.rs b/src/commands/env.rs index 29f56aa0a..d8cf2b325 100644 --- a/src/commands/env.rs +++ b/src/commands/env.rs @@ -94,6 +94,7 @@ impl Command for Env { "FNM_COREPACK_ENABLED", config.corepack_enabled().to_string(), ), + ("FNM_RESOLVE_ENGINES", config.resolve_engines().to_string()), ("FNM_ARCH", config.arch.to_string()), ]); diff --git a/src/config.rs b/src/config.rs index 5b71ced86..1c653993e 100644 --- a/src/config.rs +++ b/src/config.rs @@ -75,6 +75,18 @@ pub struct FnmConfig { hide_env_values = true )] corepack_enabled: bool, + + /// Resolve `engines.node` field in `package.json` whenever a `.node-version` or `.nvmrc` file is not present. + /// Experimental: This feature is subject to change. + /// Note: `engines.node` can be any semver range, with the latest satisfying version being resolved. + #[clap( + long, + env = "FNM_RESOLVE_ENGINES", + global = true, + hide_env_values = true, + verbatim_doc_comment + )] + resolve_engines: bool, } impl Default for FnmConfig { @@ -87,6 +99,7 @@ impl Default for FnmConfig { arch: Arch::default(), version_file_strategy: VersionFileStrategy::default(), corepack_enabled: false, + resolve_engines: false, } } } @@ -100,6 +113,10 @@ impl FnmConfig { self.corepack_enabled } + pub fn resolve_engines(&self) -> bool { + self.resolve_engines + } + pub fn multishell_path(&self) -> Option<&std::path::Path> { match &self.multishell_path { None => None, diff --git a/src/main.rs b/src/main.rs index 18cc24ebb..cbc4f0fb3 100644 --- a/src/main.rs +++ b/src/main.rs @@ -20,6 +20,7 @@ mod fs; mod http; mod installed_versions; mod lts; +mod package_json; mod path_ext; mod remote_node_index; mod shell; diff --git a/src/package_json.rs b/src/package_json.rs new file mode 100644 index 000000000..285badd8b --- /dev/null +++ b/src/package_json.rs @@ -0,0 +1,19 @@ +use serde::Deserialize; + +#[derive(Debug, Deserialize, Default)] +struct EnginesField { + node: Option, +} + +#[derive(Debug, Deserialize, Default)] +pub struct PackageJson { + engines: Option, +} + +impl PackageJson { + pub fn node_range(&self) -> Option<&node_semver::Range> { + self.engines + .as_ref() + .and_then(|engines| engines.node.as_ref()) + } +} diff --git a/src/user_version.rs b/src/user_version.rs index c66d1f1b9..52c69a12f 100644 --- a/src/user_version.rs +++ b/src/user_version.rs @@ -5,6 +5,7 @@ use std::str::FromStr; pub enum UserVersion { OnlyMajor(u64), MajorMinor(u64, u64), + SemverRange(node_semver::Range), Full(Version), } @@ -41,6 +42,7 @@ impl UserVersion { } } } + (Self::SemverRange(range), Version::Semver(semver)) => semver.satisfies(range), (_, Version::Bypassed | Version::Lts(_) | Version::Alias(_) | Version::Latest) => false, (Self::OnlyMajor(major), Version::Semver(other)) => *major == other.major, (Self::MajorMinor(major, minor), Version::Semver(other)) => { @@ -59,6 +61,7 @@ impl std::fmt::Display for UserVersion { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { match self { Self::Full(x) => x.fmt(f), + Self::SemverRange(x) => x.fmt(f), Self::OnlyMajor(major) => write!(f, "v{major}.x.x"), Self::MajorMinor(major, minor) => write!(f, "v{major}.{minor}.x"), } diff --git a/src/user_version_reader.rs b/src/user_version_reader.rs index cc109ea07..4fc8a8fab 100644 --- a/src/user_version_reader.rs +++ b/src/user_version_reader.rs @@ -14,7 +14,7 @@ impl UserVersionReader { pub fn into_user_version(self, config: &FnmConfig) -> Option { match self { Self::Direct(uv) => Some(uv), - Self::Path(pathbuf) if pathbuf.is_file() => get_user_version_for_file(pathbuf), + Self::Path(pathbuf) if pathbuf.is_file() => get_user_version_for_file(pathbuf, config), Self::Path(pathbuf) => get_user_version_for_directory(pathbuf, config), } } diff --git a/src/version_files.rs b/src/version_files.rs index f002a6867..59c54adb0 100644 --- a/src/version_files.rs +++ b/src/version_files.rs @@ -1,5 +1,6 @@ use crate::config::FnmConfig; use crate::default_version; +use crate::package_json::PackageJson; use crate::user_version::UserVersion; use crate::version_file_strategy::VersionFileStrategy; use encoding_rs_io::DecodeReaderBytes; @@ -8,28 +9,30 @@ use std::io::Read; use std::path::Path; use std::str::FromStr; -const PATH_PARTS: [&str; 2] = [".nvmrc", ".node-version"]; +const PATH_PARTS: [&str; 3] = [".nvmrc", ".node-version", "package.json"]; pub fn get_user_version_for_directory( path: impl AsRef, config: &FnmConfig, ) -> Option { match config.version_file_strategy() { - VersionFileStrategy::Local => get_user_version_for_single_directory(path), - VersionFileStrategy::Recursive => { - get_user_version_for_directory_recursive(path).or_else(|| { + VersionFileStrategy::Local => get_user_version_for_single_directory(path, config), + VersionFileStrategy::Recursive => get_user_version_for_directory_recursive(path, config) + .or_else(|| { info!("Did not find anything recursively. Falling back to default alias."); default_version::find_default_version(config).map(UserVersion::Full) - }) - } + }), } } -fn get_user_version_for_directory_recursive(path: impl AsRef) -> Option { +fn get_user_version_for_directory_recursive( + path: impl AsRef, + config: &FnmConfig, +) -> Option { let mut current_path = Some(path.as_ref()); while let Some(child_path) = current_path { - if let Some(version) = get_user_version_for_single_directory(child_path) { + if let Some(version) = get_user_version_for_single_directory(child_path, config) { return Some(version); } @@ -39,7 +42,10 @@ fn get_user_version_for_directory_recursive(path: impl AsRef) -> Option) -> Option { +fn get_user_version_for_single_directory( + path: impl AsRef, + config: &FnmConfig, +) -> Option { let path = path.as_ref(); for path_part in &PATH_PARTS { @@ -49,7 +55,7 @@ pub fn get_user_version_for_single_directory(path: impl AsRef) -> Option) -> Option) -> Option { +pub fn get_user_version_for_file( + path: impl AsRef, + config: &FnmConfig, +) -> Option { + let is_pkg_json = match path.as_ref().file_name() { + Some(name) => name == "package.json", + None => false, + }; let file = std::fs::File::open(path).ok()?; - let version = { + let file = { let mut reader = DecodeReaderBytes::new(file); let mut version = String::new(); reader.read_to_string(&mut version).map(|_| version) }; - match version { - Err(err) => { + match (file, is_pkg_json, config.resolve_engines()) { + (_, true, false) => None, + (Err(err), _, _) => { info!("Can't read file: {}", err); None } - Ok(version) => { - info!("Found string {:?} in version file", version); + (Ok(version), false, _) => { + info!("Found string {:?} in version file", version); UserVersion::from_str(version.trim()).ok() } + (Ok(pkg_json), true, true) => { + let pkg_json = serde_json::from_str::(&pkg_json).ok(); + let range: Option = + pkg_json.as_ref().and_then(PackageJson::node_range).cloned(); + + if let Some(range) = range { + info!("Found package.json with {:?} in engines.node field", range); + Some(UserVersion::SemverRange(range)) + } else { + info!("No engines.node range found in package.json"); + None + } + } } } From 73ac4679bad502fabe2ca6927e6de934f01bf82e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 6 Jul 2023 07:02:41 +0000 Subject: [PATCH 37/66] fix(deps): update rust crate colored to 2.0.4 (#995) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 34 +++++++--------------------------- Cargo.toml | 2 +- 2 files changed, 8 insertions(+), 28 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 3aaef9a3e..dce30db7c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -135,17 +135,6 @@ dependencies = [ "tokio", ] -[[package]] -name = "atty" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" -dependencies = [ - "hermit-abi 0.1.19", - "libc", - "winapi", -] - [[package]] name = "autocfg" version = "1.1.0" @@ -359,13 +348,13 @@ checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" [[package]] name = "colored" -version = "2.0.0" +version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3616f750b84d8f0de8a58bda93e08e2a81ad3f523089b05f1dffecab48c6cbd" +checksum = "2674ec482fbc38012cf31e6c42ba0177b431a0cb6f15fe40efa5aab1bda516f6" dependencies = [ - "atty", + "is-terminal", "lazy_static", - "winapi", + "windows-sys 0.48.0", ] [[package]] @@ -798,15 +787,6 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" -[[package]] -name = "hermit-abi" -version = "0.1.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" -dependencies = [ - "libc", -] - [[package]] name = "hermit-abi" version = "0.3.1" @@ -972,7 +952,7 @@ version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" dependencies = [ - "hermit-abi 0.3.1", + "hermit-abi", "libc", "windows-sys 0.48.0", ] @@ -989,7 +969,7 @@ version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "adcf93614601c8129ddf72e2d5633df827ba6551541c6d8c59520a371475be1f" dependencies = [ - "hermit-abi 0.3.1", + "hermit-abi", "io-lifetimes", "rustix", "windows-sys 0.48.0", @@ -1190,7 +1170,7 @@ version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" dependencies = [ - "hermit-abi 0.3.1", + "hermit-abi", "libc", ] diff --git a/Cargo.toml b/Cargo.toml index 7f45ed118..be3a87682 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -17,7 +17,7 @@ tar = "0.4.38" xz2 = "0.1.7" node-semver = "2.1.0" dirs = "5.0.1" -colored = "2.0.0" +colored = "2.0.4" zip = "0.6.6" tempfile = "3.6.0" indoc = "2.0.1" From d7248af2c0253921da3505f55b95d307a4d0a600 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 6 Jul 2023 07:04:21 +0000 Subject: [PATCH 38/66] fix(deps): update rust crate indoc to 2.0.2 (#999) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index dce30db7c..9aff8d03c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -924,9 +924,9 @@ dependencies = [ [[package]] name = "indoc" -version = "2.0.1" +version = "2.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f2cb48b81b1dc9f39676bf99f5499babfec7cd8fe14307f7b3d747208fb5690" +checksum = "761cde40c27e2a9877f8c928fd248b7eec9dd48623dd514b256858ca593fbba7" [[package]] name = "inout" diff --git a/Cargo.toml b/Cargo.toml index be3a87682..9893b6945 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -20,7 +20,7 @@ dirs = "5.0.1" colored = "2.0.4" zip = "0.6.6" tempfile = "3.6.0" -indoc = "2.0.1" +indoc = "2.0.2" log = "0.4.19" env_logger = "0.10.0" encoding_rs_io = "0.1.7" From a041c499379b18984072c3091026aa8983c3c5b1 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 6 Jul 2023 07:04:35 +0000 Subject: [PATCH 39/66] fix(deps): update serde (#996) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 12 ++++++------ Cargo.toml | 4 ++-- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9aff8d03c..49ee04b66 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1562,18 +1562,18 @@ checksum = "bebd363326d05ec3e2f532ab7660680f3b02130d780c299bca73469d521bc0ed" [[package]] name = "serde" -version = "1.0.164" +version = "1.0.166" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e8c8cf938e98f769bc164923b06dce91cea1751522f46f8466461af04c9027d" +checksum = "d01b7404f9d441d3ad40e6a636a7782c377d2abdbe4fa2440e2edcc2f4f10db8" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.164" +version = "1.0.166" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9735b638ccc51c28bf6914d90a2e9725b377144fc612c49a611fddd1b631d68" +checksum = "5dd83d6dde2b6b2d466e14d9d1acce8816dedee94f735eac6395808b3483c6d6" dependencies = [ "proc-macro2", "quote", @@ -1582,9 +1582,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.99" +version = "1.0.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46266871c240a00b8f503b877622fe33430b3c7d963bdc0f2adc511e54a1eae3" +checksum = "0f1e14e89be7aa4c4b78bdbdc9eb5bf8517829a600ae8eaa39a6e1d960b5185c" dependencies = [ "itoa", "ryu", diff --git a/Cargo.toml b/Cargo.toml index 9893b6945..a1cd15c98 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -9,9 +9,9 @@ repository = "https://github.com/Schniz/fnm" description = "Fast and simple Node.js version manager" [dependencies] -serde = { version = "1.0.164", features = ["derive"] } +serde = { version = "1.0.166", features = ["derive"] } clap = { version = "4.3.10", features = ["derive", "env"] } -serde_json = "1.0.99" +serde_json = "1.0.100" chrono = { version = "0.4.26", features = ["serde"] } tar = "0.4.38" xz2 = "0.1.7" From e282d3cdc54567a34763c0a96222b3a577e28317 Mon Sep 17 00:00:00 2001 From: Gal Schlezinger Date: Thu, 6 Jul 2023 12:27:50 +0300 Subject: [PATCH 40/66] migrate to @changesets/changelog-github for having 'thank you @\user' (#1003) --- .changeset/config.json | 5 +---- package.json | 2 +- pnpm-lock.yaml | 32 ++++++++++++++++---------------- 3 files changed, 18 insertions(+), 21 deletions(-) diff --git a/.changeset/config.json b/.changeset/config.json index 3857bdebe..e464175c9 100644 --- a/.changeset/config.json +++ b/.changeset/config.json @@ -1,9 +1,6 @@ { "$schema": "https://unpkg.com/@changesets/config@2.0.0/schema.json", - "changelog": [ - "@svitejs/changesets-changelog-github-compact", - { "repo": "Schniz/fnm" } - ], + "changelog": ["@changesets/changelog-github", { "repo": "Schniz/fnm" }], "commit": false, "fixed": [], "linked": [], diff --git a/package.json b/package.json index ae4f74038..0066679d2 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,7 @@ }, "devDependencies": { "@changesets/cli": "2.26.2", - "@svitejs/changesets-changelog-github-compact": "1.1.0", + "@changesets/changelog-github": "0.4.8", "@types/jest": "^29.2.3", "@types/node": "^18.11.9", "@types/shell-escape": "^0.2.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0f05b80b1..0e63113f7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5,12 +5,12 @@ settings: excludeLinksFromLockfile: false devDependencies: + '@changesets/changelog-github': + specifier: 0.4.8 + version: 0.4.8 '@changesets/cli': specifier: 2.26.2 version: 2.26.2 - '@svitejs/changesets-changelog-github-compact': - specifier: 1.1.0 - version: 1.1.0 '@types/jest': specifier: ^29.2.3 version: 29.5.2 @@ -457,6 +457,16 @@ packages: '@changesets/types': 5.2.1 dev: true + /@changesets/changelog-github@0.4.8: + resolution: {integrity: sha512-jR1DHibkMAb5v/8ym77E4AMNWZKB5NPzw5a5Wtqm1JepAuIF+hrKp2u04NKM14oBZhHglkCfrla9uq8ORnK/dw==} + dependencies: + '@changesets/get-github-info': 0.5.2 + '@changesets/types': 5.2.1 + dotenv: 8.6.0 + transitivePeerDependencies: + - encoding + dev: true + /@changesets/cli@2.26.2: resolution: {integrity: sha512-dnWrJTmRR8bCHikJHl9b9HW3gXACCehz4OasrXpMp7sx97ECuBGGNjJhjPhdZNCvMy9mn4BWdplI323IbqsRig==} hasBin: true @@ -1058,16 +1068,6 @@ packages: resolution: {integrity: sha512-8RRAMOB+vEC8FknZtoNKQnttATUN9uERYFC7+qjsd3X3UTb3o2oqVmLFU/kUY5Q72PxbBQqX7u0NAEnEytuMtA==} dev: true - /@svitejs/changesets-changelog-github-compact@1.1.0: - resolution: {integrity: sha512-qhUGGDHcpbY2zpjW3SwqchuW8J/5EzlPFud7xNntHKA7f3a/mx5+g+ruJKFHSAiVZYo30PALt+AyhmPUNKH/Og==} - engines: {node: ^14.13.1 || ^16.0.0 || >=18} - dependencies: - '@changesets/get-github-info': 0.5.2 - dotenv: 16.3.1 - transitivePeerDependencies: - - encoding - dev: true - /@tootallnate/once@1.1.2: resolution: {integrity: sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==} engines: {node: '>= 6'} @@ -1993,9 +1993,9 @@ packages: domelementtype: 1.3.1 dev: true - /dotenv@16.3.1: - resolution: {integrity: sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==} - engines: {node: '>=12'} + /dotenv@8.6.0: + resolution: {integrity: sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==} + engines: {node: '>=10'} dev: true /electron-to-chromium@1.4.445: From 3da0fda313724d38a77fe28fae33caae2df0de08 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 6 Jul 2023 14:26:56 +0300 Subject: [PATCH 41/66] Version Packages (#998) Co-authored-by: github-actions[bot] --- .changeset/breezy-olives-appear.md | 5 ----- .changeset/warm-parrots-drive.md | 5 ----- CHANGELOG.md | 10 ++++++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- docs/fnm.svg | 2 +- package.json | 2 +- 7 files changed, 14 insertions(+), 14 deletions(-) delete mode 100644 .changeset/breezy-olives-appear.md delete mode 100644 .changeset/warm-parrots-drive.md diff --git a/.changeset/breezy-olives-appear.md b/.changeset/breezy-olives-appear.md deleted file mode 100644 index 3fd267b23..000000000 --- a/.changeset/breezy-olives-appear.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"fnm": patch ---- - -Bump Clap 3 -> 4 diff --git a/.changeset/warm-parrots-drive.md b/.changeset/warm-parrots-drive.md deleted file mode 100644 index 3830587a7..000000000 --- a/.changeset/warm-parrots-drive.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"fnm": minor ---- - -Support resolving `engines.node` field via experimental `--resolve-engines` flag diff --git a/CHANGELOG.md b/CHANGELOG.md index 2726b1c55..29a66c62f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,15 @@ ## 1.31.0 (2022-02-16) +## 1.35.0 + +### Minor Changes + +- [#839](https://github.com/Schniz/fnm/pull/839) [`97be792`](https://github.com/Schniz/fnm/commit/97be792a4410d8f121e03a1f81f60c48cbfdee2c) Thanks [@amitdahan](https://github.com/amitdahan)! - Support resolving `engines.node` field via experimental `--resolve-engines` flag + +### Patch Changes + +- [#991](https://github.com/Schniz/fnm/pull/991) [`b19eb29`](https://github.com/Schniz/fnm/commit/b19eb29b26323f0b9fb427d3d9271c9cc13a58f8) Thanks [@amitdahan](https://github.com/amitdahan)! - Bump Clap 3 -> 4 + ## 1.34.0 ### Minor Changes diff --git a/Cargo.lock b/Cargo.lock index 49ee04b66..893d5c5e1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -635,7 +635,7 @@ dependencies = [ [[package]] name = "fnm" -version = "1.34.0" +version = "1.35.0" dependencies = [ "anyhow", "chrono", diff --git a/Cargo.toml b/Cargo.toml index a1cd15c98..9c84d1479 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "fnm" -version = "1.34.0" +version = "1.35.0" authors = ["Gal Schlezinger "] edition = "2021" build = "build.rs" diff --git a/docs/fnm.svg b/docs/fnm.svg index aa458ff40..028286e4a 100644 --- a/docs/fnm.svg +++ b/docs/fnm.svg @@ -1 +1 @@ -✑✑eval✑eval"$(fnm✑eval"$(fnmenv)"✑f✑fn✑fnm✑fnm--versionfnm1.34.0✑cat✑cat.node-version18.16.1✑fnminstallInstallingNodev18.16.1(x64)✑fnmuseUsingNodev18.16.1✑node✑node-vv18.16.1✑e✑ev✑eva✑eval"✑eval"$✑eval"$(✑eval"$(f✑eval"$(fn✑eval"$(fnme✑eval"$(fnmen✑eval"$(fnmenv✑eval"$(fnmenv)✑fnm-✑fnm--✑fnm--v✑fnm--ve✑fnm--ver✑fnm--vers✑fnm--versi✑fnm--versio✑c✑ca✑cat.✑cat.n✑cat.no✑cat.nod✑cat.node✑cat.node-✑cat.node-v✑cat.node-ve✑cat.node-ver✑cat.node-vers✑cat.node-versi✑cat.node-versio✑fnmi✑fnmin✑fnmins✑fnminst✑fnminsta✑fnminstal✑fnmu✑fnmus✑n✑no✑nod✑node- \ No newline at end of file +✑✑eval✑eval"$(fnm✑eval"$(fnmenv)"✑f✑fn✑fnm✑fnm--versionfnm1.35.0✑cat✑cat.node-version18.16.1✑fnminstallInstallingNodev18.16.1(x64)✑fnmuseUsingNodev18.16.1✑node✑node-vv18.16.1✑e✑ev✑eva✑eval"✑eval"$✑eval"$(✑eval"$(f✑eval"$(fn✑eval"$(fnme✑eval"$(fnmen✑eval"$(fnmenv✑eval"$(fnmenv)✑fnm-✑fnm--✑fnm--v✑fnm--ve✑fnm--ver✑fnm--vers✑fnm--versi✑fnm--versio✑c✑ca✑cat.✑cat.n✑cat.no✑cat.nod✑cat.node✑cat.node-✑cat.node-v✑cat.node-ve✑cat.node-ver✑cat.node-vers✑cat.node-versi✑cat.node-versio✑fnmi✑fnmin✑fnmins✑fnminst✑fnminsta✑fnminstal✑fnmu✑fnmus✑n✑no✑nod✑node- \ No newline at end of file diff --git a/package.json b/package.json index 0066679d2..6bead36f0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "fnm", - "version": "1.34.0", + "version": "1.35.0", "private": true, "repository": "git@github.com:Schniz/fnm.git", "author": "Gal Schlezinger ", From 0373fb8d829a00e128bff24c612a5b3398ac3fa3 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 21 Jul 2023 08:34:40 +0000 Subject: [PATCH 42/66] fix(deps): update rust crate thiserror to 1.0.44 (#1000) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 24 ++++++++++++------------ Cargo.toml | 2 +- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 893d5c5e1..695300443 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -331,7 +331,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.22", + "syn 2.0.27", ] [[package]] @@ -1079,7 +1079,7 @@ checksum = "4901771e1d44ddb37964565c654a3223ba41a594d02b8da471cc4464912b5cfa" dependencies = [ "proc-macro2", "quote", - "syn 2.0.22", + "syn 2.0.27", ] [[package]] @@ -1577,7 +1577,7 @@ checksum = "5dd83d6dde2b6b2d466e14d9d1acce8816dedee94f735eac6395808b3483c6d6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.22", + "syn 2.0.27", ] [[package]] @@ -1685,9 +1685,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.22" +version = "2.0.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2efbeae7acf4eabd6bcdcbd11c92f45231ddda7539edc7806bd1a04a03b24616" +checksum = "b60f673f44a8255b9c8c657daf66a596d435f2da81a555b06dc644d080ba45e0" dependencies = [ "proc-macro2", "quote", @@ -1756,22 +1756,22 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.40" +version = "1.0.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac" +checksum = "611040a08a0439f8248d1990b111c95baa9c704c805fa1f62104b39655fd7f90" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.40" +version = "1.0.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f" +checksum = "090198534930841fab3a5d1bb637cde49e339654e606195f8d9c76eeb081dc96" dependencies = [ "proc-macro2", "quote", - "syn 2.0.22", + "syn 2.0.27", ] [[package]] @@ -2022,7 +2022,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.22", + "syn 2.0.27", "wasm-bindgen-shared", ] @@ -2056,7 +2056,7 @@ checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.22", + "syn 2.0.27", "wasm-bindgen-backend", "wasm-bindgen-shared", ] diff --git a/Cargo.toml b/Cargo.toml index 9c84d1479..1695e0686 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -27,7 +27,7 @@ encoding_rs_io = "0.1.7" reqwest = { version = "0.11.18", features = ["blocking", "json", "rustls-tls", "rustls-tls-native-roots", "brotli"], default-features = false } url = "2.4.0" sysinfo = "0.29.3" -thiserror = "1.0.40" +thiserror = "1.0.44" clap_complete = "4.3.1" anyhow = "1.0.71" From 52313bc2a94563a565b2c0caa7210ea12366b123 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 27 Jul 2023 03:03:41 +0000 Subject: [PATCH 43/66] chore(deps): update all dev dependencies (#1004) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 25 ++----------------------- Cargo.toml | 2 +- package.json | 4 ++-- pnpm-lock.yaml | 16 ++++++++-------- 4 files changed, 13 insertions(+), 34 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 695300443..43bf2d38e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -471,16 +471,6 @@ dependencies = [ "memchr", ] -[[package]] -name = "ctor" -version = "0.1.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d2301688392eb071b0bf1a37be05c469d3cc4dbbd95df672fe28ab021e6a096" -dependencies = [ - "quote", - "syn 1.0.109", -] - [[package]] name = "diff" version = "0.1.13" @@ -1211,15 +1201,6 @@ dependencies = [ "windows-sys 0.48.0", ] -[[package]] -name = "output_vt100" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "628223faebab4e3e40667ee0b2336d34a5b960ff60ea743ddfdbcf7770bcfb66" -dependencies = [ - "winapi", -] - [[package]] name = "password-hash" version = "0.4.2" @@ -1269,13 +1250,11 @@ checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" [[package]] name = "pretty_assertions" -version = "1.3.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a25e9bcb20aa780fd0bb16b72403a9064d6b3f22f026946029acb941a50af755" +checksum = "af7cee1a6c8a5b9208b3cb1061f10c0cb689087b3d8ce85fb9d2dd7a29b6ba66" dependencies = [ - "ctor", "diff", - "output_vt100", "yansi", ] diff --git a/Cargo.toml b/Cargo.toml index 1695e0686..1c71e24a0 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -32,7 +32,7 @@ clap_complete = "4.3.1" anyhow = "1.0.71" [dev-dependencies] -pretty_assertions = "1.3.0" +pretty_assertions = "1.4.0" duct = "0.13.6" test-log = "0.2.12" diff --git a/package.json b/package.json index 6bead36f0..a192635d6 100644 --- a/package.json +++ b/package.json @@ -28,9 +28,9 @@ "@types/node": "^18.11.9", "@types/shell-escape": "^0.2.1", "chalk": "^5.1.2", - "cmd-ts": "0.12.1", + "cmd-ts": "0.13.0", "cross-env": "^7.0.3", - "execa": "7.1.1", + "execa": "7.2.0", "jest": "^29.3.1", "lerna-changelog": "2.2.0", "node-fetch": "^3.3.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0e63113f7..92e3a7e78 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -24,14 +24,14 @@ devDependencies: specifier: ^5.1.2 version: 5.3.0 cmd-ts: - specifier: 0.12.1 - version: 0.12.1 + specifier: 0.13.0 + version: 0.13.0 cross-env: specifier: ^7.0.3 version: 7.0.3 execa: - specifier: 7.1.1 - version: 7.1.1 + specifier: 7.2.0 + version: 7.2.0 jest: specifier: ^29.3.1 version: 29.5.0(@types/node@18.16.18) @@ -1691,8 +1691,8 @@ packages: engines: {node: '>=0.8'} dev: true - /cmd-ts@0.12.1: - resolution: {integrity: sha512-k93f6LgFEzx7/vBy5qV+tu1VI8YuH0DZmwNXPvRaDR4Qp7Fl9+pUSylX/CKHrWoKqHMJjNOLb1NeYTvHOjQ2Kw==} + /cmd-ts@0.13.0: + resolution: {integrity: sha512-nsnxf6wNIM/JAS7T/x/1JmbEsjH0a8tezXqqpaL0O6+eV0/aDEnRxwjxpu0VzDdRcaC1ixGSbRlUuf/IU59I4g==} dependencies: chalk: 4.1.2 debug: 4.3.4 @@ -2167,8 +2167,8 @@ packages: strip-final-newline: 2.0.0 dev: true - /execa@7.1.1: - resolution: {integrity: sha512-wH0eMf/UXckdUYnO21+HDztteVv05rq2GXksxT4fCGeHkBhw1DROXh40wcjMcRqDOWE7iPJ4n3M7e2+YFP+76Q==} + /execa@7.2.0: + resolution: {integrity: sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==} engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} dependencies: cross-spawn: 7.0.3 From a4432e6482ce0a671ebecdcb17b9a2a14e709ffe Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 3 Aug 2023 09:13:30 +0000 Subject: [PATCH 44/66] chore(deps): update dependency prettier to v3 (#1001) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- pnpm-lock.yaml | 10 ++++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index a192635d6..cbd24176b 100644 --- a/package.json +++ b/package.json @@ -34,7 +34,7 @@ "jest": "^29.3.1", "lerna-changelog": "2.2.0", "node-fetch": "^3.3.0", - "prettier": "2.8.8", + "prettier": "3.0.1", "pv": "1.0.1", "shell-escape": "^0.2.0", "svg-term-cli": "2.1.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 92e3a7e78..5e80e434e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -42,8 +42,8 @@ devDependencies: specifier: ^3.3.0 version: 3.3.1 prettier: - specifier: 2.8.8 - version: 2.8.8 + specifier: 3.0.1 + version: 3.0.1 pv: specifier: 1.0.1 version: 1.0.1 @@ -4118,6 +4118,12 @@ packages: hasBin: true dev: true + /prettier@3.0.1: + resolution: {integrity: sha512-fcOWSnnpCrovBsmFZIGIy9UqK2FaI7Hqax+DIO0A9UxeVoY4iweyaFjS5TavZN97Hfehph0nhsZnjlVKzEQSrQ==} + engines: {node: '>=14'} + hasBin: true + dev: true + /pretty-format@29.5.0: resolution: {integrity: sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} From b185446cfa08d4d6e2552db53937762a3c38d4db Mon Sep 17 00:00:00 2001 From: Devin Christensen Date: Tue, 15 Aug 2023 01:48:25 -0600 Subject: [PATCH 45/66] fix: panic on completions (#1010) * fix(#1006): panic on completions as far as i can tell, this was broken by the clap upgrade (#991). * fix: add smoke test for completions * skip test on windows * Create dull-bottles-try.md --------- Co-authored-by: Gal Schlezinger --- .changeset/dull-bottles-try.md | 5 +++++ src/commands/completions.rs | 18 +++++++++++++++++- 2 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 .changeset/dull-bottles-try.md diff --git a/.changeset/dull-bottles-try.md b/.changeset/dull-bottles-try.md new file mode 100644 index 000000000..5e3cab681 --- /dev/null +++ b/.changeset/dull-bottles-try.md @@ -0,0 +1,5 @@ +--- +"fnm": patch +--- + +fix: panic on `fnm completions` diff --git a/src/commands/completions.rs b/src/commands/completions.rs index 9f4a335ed..e4726ee44 100644 --- a/src/commands/completions.rs +++ b/src/commands/completions.rs @@ -24,7 +24,8 @@ impl Command for Completions { .or_else(|| infer_shell().map(Into::into)) .ok_or(Error::CantInferShell)?; let shell: ClapShell = shell.into(); - let app = Cli::command(); + let mut app = Cli::command(); + app.build(); shell.generate(&app, &mut stdio); Ok(()) } @@ -49,3 +50,18 @@ fn shells_as_string() -> String { .collect::>() .join("\n") } + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + #[cfg(not(windows))] + fn test_smoke() { + let config = FnmConfig::default(); + Completions { + shell: Some(Shells::Bash), + } + .call(config); + } +} From 11ef0909e5a015981e420f6c69f344fc2f80c174 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 15 Aug 2023 10:53:19 +0300 Subject: [PATCH 46/66] Version Packages (#1025) Co-authored-by: github-actions[bot] --- .changeset/dull-bottles-try.md | 5 ----- CHANGELOG.md | 6 ++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- docs/fnm.svg | 2 +- package.json | 2 +- 6 files changed, 10 insertions(+), 9 deletions(-) delete mode 100644 .changeset/dull-bottles-try.md diff --git a/.changeset/dull-bottles-try.md b/.changeset/dull-bottles-try.md deleted file mode 100644 index 5e3cab681..000000000 --- a/.changeset/dull-bottles-try.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"fnm": patch ---- - -fix: panic on `fnm completions` diff --git a/CHANGELOG.md b/CHANGELOG.md index 29a66c62f..413ae7a75 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ ## 1.31.0 (2022-02-16) +## 1.35.1 + +### Patch Changes + +- [#1010](https://github.com/Schniz/fnm/pull/1010) [`b185446`](https://github.com/Schniz/fnm/commit/b185446cfa08d4d6e2552db53937762a3c38d4db) Thanks [@quixoten](https://github.com/quixoten)! - fix: panic on `fnm completions` + ## 1.35.0 ### Minor Changes diff --git a/Cargo.lock b/Cargo.lock index 43bf2d38e..c8ad86ed9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -625,7 +625,7 @@ dependencies = [ [[package]] name = "fnm" -version = "1.35.0" +version = "1.35.1" dependencies = [ "anyhow", "chrono", diff --git a/Cargo.toml b/Cargo.toml index 1c71e24a0..b9c3a135e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "fnm" -version = "1.35.0" +version = "1.35.1" authors = ["Gal Schlezinger "] edition = "2021" build = "build.rs" diff --git a/docs/fnm.svg b/docs/fnm.svg index 028286e4a..bacae272a 100644 --- a/docs/fnm.svg +++ b/docs/fnm.svg @@ -1 +1 @@ -✑✑eval✑eval"$(fnm✑eval"$(fnmenv)"✑f✑fn✑fnm✑fnm--versionfnm1.35.0✑cat✑cat.node-version18.16.1✑fnminstallInstallingNodev18.16.1(x64)✑fnmuseUsingNodev18.16.1✑node✑node-vv18.16.1✑e✑ev✑eva✑eval"✑eval"$✑eval"$(✑eval"$(f✑eval"$(fn✑eval"$(fnme✑eval"$(fnmen✑eval"$(fnmenv✑eval"$(fnmenv)✑fnm-✑fnm--✑fnm--v✑fnm--ve✑fnm--ver✑fnm--vers✑fnm--versi✑fnm--versio✑c✑ca✑cat.✑cat.n✑cat.no✑cat.nod✑cat.node✑cat.node-✑cat.node-v✑cat.node-ve✑cat.node-ver✑cat.node-vers✑cat.node-versi✑cat.node-versio✑fnmi✑fnmin✑fnmins✑fnminst✑fnminsta✑fnminstal✑fnmu✑fnmus✑n✑no✑nod✑node- \ No newline at end of file +✑✑eval✑eval"$(fnm✑eval"$(fnmenv)"✑f✑fn✑fnm✑fnm--versionfnm1.35.1✑cat✑cat.node-version18.16.1✑fnminstallInstallingNodev18.16.1(x64)✑fnmuseUsingNodev18.16.1✑node✑node-vv18.16.1✑e✑ev✑eva✑eval"✑eval"$✑eval"$(✑eval"$(f✑eval"$(fn✑eval"$(fnme✑eval"$(fnmen✑eval"$(fnmenv✑eval"$(fnmenv)✑fnm-✑fnm--✑fnm--v✑fnm--ve✑fnm--ver✑fnm--vers✑fnm--versi✑fnm--versio✑c✑ca✑cat.✑cat.n✑cat.no✑cat.nod✑cat.node✑cat.node-✑cat.node-v✑cat.node-ve✑cat.node-ver✑cat.node-vers✑cat.node-versi✑cat.node-versio✑fnmi✑fnmin✑fnmins✑fnminst✑fnminsta✑fnminstal✑fnmu✑fnmus✑n✑no✑nod✑node- \ No newline at end of file diff --git a/package.json b/package.json index cbd24176b..e37e84593 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "fnm", - "version": "1.35.0", + "version": "1.35.1", "private": true, "repository": "git@github.com:Schniz/fnm.git", "author": "Gal Schlezinger ", From 595043f7441420e60a6ef548a560fbdd872e7533 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 27 Aug 2023 00:00:18 +0000 Subject: [PATCH 47/66] chore(deps): update all dev dependencies (#1030) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- pnpm-lock.yaml | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index e37e84593..af6fc9ab7 100644 --- a/package.json +++ b/package.json @@ -34,7 +34,7 @@ "jest": "^29.3.1", "lerna-changelog": "2.2.0", "node-fetch": "^3.3.0", - "prettier": "3.0.1", + "prettier": "3.0.2", "pv": "1.0.1", "shell-escape": "^0.2.0", "svg-term-cli": "2.1.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5e80e434e..04d20536f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -42,8 +42,8 @@ devDependencies: specifier: ^3.3.0 version: 3.3.1 prettier: - specifier: 3.0.1 - version: 3.0.1 + specifier: 3.0.2 + version: 3.0.2 pv: specifier: 1.0.1 version: 1.0.1 @@ -4118,8 +4118,8 @@ packages: hasBin: true dev: true - /prettier@3.0.1: - resolution: {integrity: sha512-fcOWSnnpCrovBsmFZIGIy9UqK2FaI7Hqax+DIO0A9UxeVoY4iweyaFjS5TavZN97Hfehph0nhsZnjlVKzEQSrQ==} + /prettier@3.0.2: + resolution: {integrity: sha512-o2YR9qtniXvwEZlOKbveKfDQVyqxbEIWn48Z8m3ZJjBjcCmUy3xZGIv+7AkaeuaTr6yPXJjwv07ZWlsWbEy1rQ==} engines: {node: '>=14'} hasBin: true dev: true From d6c132adfd1c29c48acb0b9de42538146e23cf18 Mon Sep 17 00:00:00 2001 From: Jake Hansen <34637103+JakeHandsome@users.noreply.github.com> Date: Thu, 12 Oct 2023 08:12:57 -0500 Subject: [PATCH 48/66] Allow for cd /D on windows (#1050) --- .changeset/many-paws-fetch.md | 5 +++++ src/shell/windows_cmd/cd.cmd | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 .changeset/many-paws-fetch.md diff --git a/.changeset/many-paws-fetch.md b/.changeset/many-paws-fetch.md new file mode 100644 index 000000000..60048f900 --- /dev/null +++ b/.changeset/many-paws-fetch.md @@ -0,0 +1,5 @@ +--- +"fnm": patch +--- + +Fix `cd /D` on windows with `--use-on-cd` diff --git a/src/shell/windows_cmd/cd.cmd b/src/shell/windows_cmd/cd.cmd index 3e7817696..027bce13e 100644 --- a/src/shell/windows_cmd/cd.cmd +++ b/src/shell/windows_cmd/cd.cmd @@ -1,5 +1,5 @@ @echo off -cd %1 +cd %* if "%FNM_VERSION_FILE_STRATEGY%" == "recursive" ( fnm use --silent-if-unchanged ) else ( From 734df47795c3b71d104ec9638034447cc4ef47cc Mon Sep 17 00:00:00 2001 From: Kyle Bloom Date: Sat, 20 Jan 2024 19:54:15 +0000 Subject: [PATCH 49/66] fix: return default version if canonicalize fails (#1058) --- .changeset/rotten-pumpkins-search.md | 5 +++++ src/default_version.rs | 9 ++++++--- 2 files changed, 11 insertions(+), 3 deletions(-) create mode 100644 .changeset/rotten-pumpkins-search.md diff --git a/.changeset/rotten-pumpkins-search.md b/.changeset/rotten-pumpkins-search.md new file mode 100644 index 000000000..11e723cb0 --- /dev/null +++ b/.changeset/rotten-pumpkins-search.md @@ -0,0 +1,5 @@ +--- +"fnm": patch +--- + +fix: return default version if canonicalize fails diff --git a/src/default_version.rs b/src/default_version.rs index dc42eb96e..b4da8729e 100644 --- a/src/default_version.rs +++ b/src/default_version.rs @@ -3,7 +3,10 @@ use crate::version::Version; use std::str::FromStr; pub fn find_default_version(config: &FnmConfig) -> Option { - let version_path = config.default_version_dir().canonicalize().ok()?; - let file_name = version_path.parent()?.file_name()?; - Version::from_str(file_name.to_str()?).ok()?.into() + if let Ok(version_path) = config.default_version_dir().canonicalize() { + let file_name = version_path.parent()?.file_name()?; + Version::from_str(file_name.to_str()?).ok()?.into() + } else { + Some(Version::Alias("default".into())) + } } From 96de70d18015ed5f7967d929bde94b5817f4b7da Mon Sep 17 00:00:00 2001 From: Alexey Ten Date: Sat, 20 Jan 2024 20:54:49 +0100 Subject: [PATCH 50/66] Update README.md (#1086) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 6fa4e76c4..f6112567a 100644 --- a/README.md +++ b/README.md @@ -42,7 +42,7 @@ On other operating systems, upgrading `fnm` is almost the same as installing it. `--install-dir` -Set a custom directory for fnm to be installed. The default is `$HOME/.fnm`. +Set a custom directory for fnm to be installed. The default is `$XDG_DATA_HOME/fnm` (if `$XDG_DATA_HOME` is not defined it falls back to `$HOME/.local/share/fnm` on linux and `$HOME/Library/Application Support/fnm` on MacOS). `--skip-shell` From 0d993899b394539e473dfea1ffaea055714b1d7a Mon Sep 17 00:00:00 2001 From: Carter Date: Sat, 20 Jan 2024 12:56:23 -0700 Subject: [PATCH 51/66] chore(readme): use unicode emojis (#1053) --- README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index f6112567a..7a5508813 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ GitHub Actions workflow status -> :rocket: Fast and simple Node.js version manager, built in Rust +> πŸš€ Fast and simple Node.js version manager, built in Rust
Blazing fast! @@ -12,13 +12,13 @@ ## Features -:earth_americas: Cross-platform support (macOS, Windows, Linux) +🌎 Cross-platform support (macOS, Windows, Linux) -:sparkles: Single file, easy installation, instant startup +✨ Single file, easy installation, instant startup -:rocket: Built with speed in mind +πŸš€ Built with speed in mind -:open_file_folder: Works with `.node-version` and `.nvmrc` files +πŸ“‚ Works with `.node-version` and `.nvmrc` files ## Installation From d12488e14fd3c93ff338f4e9edc3f4c1ece665d4 Mon Sep 17 00:00:00 2001 From: Siddharth Date: Tue, 12 Mar 2024 08:50:14 +0000 Subject: [PATCH 52/66] chore: updates powershell to power-shell as per the CLI app (#1095) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 7a5508813..f0349a6bf 100644 --- a/README.md +++ b/README.md @@ -121,7 +121,7 @@ Where `` can be one of the supported shells: - `bash` - `zsh` - `fish` -- `powershell` +- `power-shell` Please follow your shell instructions to install them. From a5a497b7e2c4cc615fedf366f9eeab4e322443ed Mon Sep 17 00:00:00 2001 From: Megamannen Date: Tue, 12 Mar 2024 09:50:33 +0100 Subject: [PATCH 53/66] README.md - Simplified Windows PowerShell setup (#1047) * Update README.md docs: replaced section about profile location on Windows In now uses the built in env variable $profile * Update README.md style: styled section about windows profile --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index f0349a6bf..1f1611329 100644 --- a/README.md +++ b/README.md @@ -174,10 +174,10 @@ fnm env --use-on-cd | Out-String | Invoke-Expression ``` - For macOS/Linux, the profile is located at `~/.config/powershell/Microsoft.PowerShell_profile.ps1` -- On Windows, PowerShell comes pre-installed, but there are two versions of it. [Read more about it here](https://learn.microsoft.com/en-us/powershell/scripting/windows-powershell/install/installing-windows-powershell). The profile is located at different places depending on which version you're using: - - Built in PowerShell (aka "Windows PowerShell"): `~\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1` - - The newer, PowerShell >= 7, that's not built in: `~\Documents\PowerShell\Microsoft.PowerShell_profile.ps1` - +- On Windows to edit your profile you can run this in a PowerShell + ```powershell + notepad $profile + ``` #### Windows Command Prompt aka Batch aka WinCMD fnm is also supported but is not entirely covered. [You can set up a startup script](https://superuser.com/a/144348) and append the following line: From 990f3d06cf81091d511ecfc67f23842c2b82ca5f Mon Sep 17 00:00:00 2001 From: Ulf Kamp <49397600+ukamp@users.noreply.github.com> Date: Fri, 24 May 2024 07:21:38 +0200 Subject: [PATCH 54/66] Updated README.md => Fixed infite Loop from Windows console startup script (#1124) This startup script does not produce the error "i was unexpected at this time" and also won't freeze the console because of an infite loop => "for /F" will launch a new instance of cmd. --- README.md | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 1f1611329..558bedfb7 100644 --- a/README.md +++ b/README.md @@ -178,16 +178,20 @@ fnm env --use-on-cd | Out-String | Invoke-Expression ```powershell notepad $profile ``` + #### Windows Command Prompt aka Batch aka WinCMD -fnm is also supported but is not entirely covered. [You can set up a startup script](https://superuser.com/a/144348) and append the following line: +fnm is also supported but is not entirely covered. [You can set up a startup script](https://superuser.com/a/144348) and append the following lines: ```batch -FOR /f "tokens=*" %i IN ('fnm env --use-on-cd') DO CALL %i +@echo off +:: for /F will launch a new instance of cmd so we create a guard to prevent an infnite loop +if not defined FNM_AUTORUN_GUARD ( + set "FNM_AUTORUN_GUARD=AutorunGuard" + FOR /f "tokens=*" %%z IN ('fnm env --use-on-cd') DO CALL %%z +) ``` -⚠️ If you get the error `i was unexpected at this time`, please make a .cmd file as suggested by the first step in the Usage with Cmder secton add it's path to the `AutoRun` registry key. - #### Usage with Cmder Usage is very similar to the normal WinCMD install, apart for a few tweaks to allow being called from the cmder startup script. The example **assumes** that the `CMDER_ROOT` environment variable is **set** to the **root directory** of your Cmder installation. From 463cc90007b26490180b38fea921fd045e377de6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=98=BF=E8=B1=AA?= <504595380@qq.com> Date: Fri, 24 May 2024 13:24:20 +0800 Subject: [PATCH 55/66] fix(install.sh): support windows mingw platform (#1112) --- .ci/install.sh | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.ci/install.sh b/.ci/install.sh index 1494da5f6..e86ae7a97 100755 --- a/.ci/install.sh +++ b/.ci/install.sh @@ -5,6 +5,10 @@ set -e RELEASE="latest" OS="$(uname -s)" +case "${OS}" in + MINGW* | Win*) OS="Windows" ;; +esac + if [ -d "$HOME/.fnm" ]; then INSTALL_DIR="$HOME/.fnm" elif [ -n "$XDG_DATA_HOME" ]; then @@ -70,6 +74,9 @@ set_filename() { elif [ "$OS" = "Darwin" ]; then USE_HOMEBREW="true" echo "Downloading fnm using Homebrew..." + elif [ "$OS" = "Windows" ] ; then + FILENAME="fnm-windows" + echo "Downloading the latest fnm binary from GitHub..." else echo "OS $OS is not supported." echo "If you think that's a bug - please file an issue to https://github.com/Schniz/fnm/issues" @@ -180,6 +187,7 @@ setup_shell() { echo ' set PATH "'"$INSTALL_DIR"'" $PATH' echo ' fnm env | source' + echo '' >>$CONF_FILE echo '# fnm' >>$CONF_FILE echo 'set PATH "'"$INSTALL_DIR"'" $PATH' >>$CONF_FILE echo 'fnm env | source' >>$CONF_FILE From 8f3acbb8ee4991b838ce3fe146d62864aaa290b9 Mon Sep 17 00:00:00 2001 From: Vinfall <91039000+Vinfall@users.noreply.github.com> Date: Fri, 24 May 2024 05:24:40 +0000 Subject: [PATCH 56/66] fix: support x64-musl (#1109) * fix: support x64-musl Yes, an easy fix as silly as bypassing the hardcoded check and then set `FNM_NODE_DIST_MIRROR` & `FNM_ARCH` in shell rc. * Create poor-otters-cheer.md --------- Co-authored-by: Gal Schlezinger --- .changeset/poor-otters-cheer.md | 5 +++++ src/arch.rs | 3 +++ 2 files changed, 8 insertions(+) create mode 100644 .changeset/poor-otters-cheer.md diff --git a/.changeset/poor-otters-cheer.md b/.changeset/poor-otters-cheer.md new file mode 100644 index 000000000..86d6aca3d --- /dev/null +++ b/.changeset/poor-otters-cheer.md @@ -0,0 +1,5 @@ +--- +"fnm": patch +--- + +support `x64-musl` arch by adding a `--arch x64-musl` to fnm env diff --git a/src/arch.rs b/src/arch.rs index 88985a6d7..080552c91 100644 --- a/src/arch.rs +++ b/src/arch.rs @@ -4,6 +4,7 @@ use crate::version::Version; pub enum Arch { X86, X64, + X64Musl, Arm64, Armv7l, Ppc64le, @@ -43,6 +44,7 @@ impl std::str::FromStr for Arch { match s { "x86" => Ok(Arch::X86), "x64" => Ok(Arch::X64), + "x64-musl" => Ok(Arch::X64Musl), "arm64" => Ok(Arch::Arm64), "armv7l" => Ok(Arch::Armv7l), "ppc64le" => Ok(Arch::Ppc64le), @@ -58,6 +60,7 @@ impl std::fmt::Display for Arch { let arch_str = match self { Arch::X86 => String::from("x86"), Arch::X64 => String::from("x64"), + Arch::X64Musl => String::from("x64-musl"), Arch::Arm64 => String::from("arm64"), Arch::Armv7l => String::from("armv7l"), Arch::Ppc64le => String::from("ppc64le"), From 66efc5b90c71f2f24592dbf8d7e28c9f53bcf5f9 Mon Sep 17 00:00:00 2001 From: eblocha <55192399+eblocha@users.noreply.github.com> Date: Sat, 25 May 2024 14:10:52 -0400 Subject: [PATCH 57/66] Add progress bar to install command (#1028) --- .changeset/show-download-progress.md | 5 + Cargo.lock | 74 +++++++++++++- Cargo.toml | 2 + docs/commands.md | 3 + src/commands/install.rs | 13 +++ src/downloader.rs | 21 ++-- src/main.rs | 1 + src/progress.rs | 147 +++++++++++++++++++++++++++ 8 files changed, 258 insertions(+), 8 deletions(-) create mode 100644 .changeset/show-download-progress.md create mode 100644 src/progress.rs diff --git a/.changeset/show-download-progress.md b/.changeset/show-download-progress.md new file mode 100644 index 000000000..552f42391 --- /dev/null +++ b/.changeset/show-download-progress.md @@ -0,0 +1,5 @@ +--- +"fnm": minor +--- + +Show a progress bar when downloading and extracting node diff --git a/Cargo.lock b/Cargo.lock index c8ad86ed9..fbc969f53 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -357,6 +357,19 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "console" +version = "0.15.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c926e00cc70edefdc64d3a5ff31cc65bb97a3460097762bd23afb4d8145fccf8" +dependencies = [ + "encode_unicode", + "lazy_static", + "libc", + "unicode-width", + "windows-sys 0.45.0", +] + [[package]] name = "constant_time_eq" version = "0.1.5" @@ -540,6 +553,12 @@ dependencies = [ "winreg", ] +[[package]] +name = "encode_unicode" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" + [[package]] name = "encoding_rs" version = "0.8.32" @@ -638,6 +657,8 @@ dependencies = [ "embed-resource", "encoding_rs_io", "env_logger", + "http", + "indicatif", "indoc", "junction", "log", @@ -912,6 +933,19 @@ dependencies = [ "hashbrown", ] +[[package]] +name = "indicatif" +version = "0.17.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b297dc40733f23a0e52728a58fa9489a5b7638a324932de16b41adc3ef80730" +dependencies = [ + "console", + "instant", + "number_prefix", + "portable-atomic", + "unicode-width", +] + [[package]] name = "indoc" version = "2.0.2" @@ -1164,6 +1198,12 @@ dependencies = [ "libc", ] +[[package]] +name = "number_prefix" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" + [[package]] name = "object" version = "0.30.4" @@ -1248,6 +1288,12 @@ version = "0.3.27" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" +[[package]] +name = "portable-atomic" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f32154ba0af3a075eefa1eda8bb414ee928f62303a54ea85b8d6638ff1a6ee9e" + [[package]] name = "pretty_assertions" version = "1.4.0" @@ -2112,7 +2158,7 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" dependencies = [ - "windows-targets", + "windows-targets 0.48.1", ] [[package]] @@ -2130,13 +2176,37 @@ dependencies = [ "windows_x86_64_msvc 0.42.2", ] +[[package]] +name = "windows-sys" +version = "0.45.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" +dependencies = [ + "windows-targets 0.42.2", +] + [[package]] name = "windows-sys" version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" dependencies = [ - "windows-targets", + "windows-targets 0.48.1", +] + +[[package]] +name = "windows-targets" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" +dependencies = [ + "windows_aarch64_gnullvm 0.42.2", + "windows_aarch64_msvc 0.42.2", + "windows_i686_gnu 0.42.2", + "windows_i686_msvc 0.42.2", + "windows_x86_64_gnu 0.42.2", + "windows_x86_64_gnullvm 0.42.2", + "windows_x86_64_msvc 0.42.2", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index b9c3a135e..f6f9326c9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -30,11 +30,13 @@ sysinfo = "0.29.3" thiserror = "1.0.44" clap_complete = "4.3.1" anyhow = "1.0.71" +indicatif = "0.17.6" [dev-dependencies] pretty_assertions = "1.4.0" duct = "0.13.6" test-log = "0.2.12" +http = "0.2.9" [build-dependencies] embed-resource = "1.8.0" diff --git a/docs/commands.md b/docs/commands.md index 00a98d3de..d3072aacc 100644 --- a/docs/commands.md +++ b/docs/commands.md @@ -216,6 +216,9 @@ Options: --latest Install latest version + --no-progress + Do not display a progress bar + --log-level The log level of fnm commands diff --git a/src/commands/install.rs b/src/commands/install.rs index 2c553844b..ed20fe997 100644 --- a/src/commands/install.rs +++ b/src/commands/install.rs @@ -3,6 +3,7 @@ use crate::alias::create_alias; use crate::arch::get_safe_arch; use crate::config::FnmConfig; use crate::downloader::{install_node_dist, Error as DownloaderError}; +use crate::log_level::LogLevel; use crate::lts::LtsType; use crate::outln; use crate::remote_node_index; @@ -25,6 +26,10 @@ pub struct Install { /// Install latest version #[clap(long, conflicts_with_all = &["version", "lts"])] pub latest: bool, + + /// Do not display a progress bar + #[clap(long)] + pub no_progress: bool, } impl Install { @@ -34,16 +39,19 @@ impl Install { version: v, lts: false, latest: false, + no_progress: _, } => Ok(v), Self { version: None, lts: true, latest: false, + no_progress: _, } => Ok(Some(UserVersion::Full(Version::Lts(LtsType::Latest)))), Self { version: None, lts: false, latest: true, + no_progress: _, } => Ok(Some(UserVersion::Full(Version::Latest))), _ => Err(Error::TooManyVersionsProvided), } @@ -56,6 +64,8 @@ impl Command for Install { fn apply(self, config: &FnmConfig) -> Result<(), Self::Error> { let current_dir = std::env::current_dir().unwrap(); + let show_progress = !self.no_progress && config.log_level().is_writable(&LogLevel::Info); + let current_version = self .version()? .or_else(|| get_user_version_for_directory(current_dir, config)) @@ -131,6 +141,7 @@ impl Command for Install { &config.node_dist_mirror, config.installations_dir(), safe_arch, + show_progress, ) { Err(err @ DownloaderError::VersionAlreadyInstalled { .. }) => { outln!(config, Error, "{} {}", "warning:".bold().yellow(), err); @@ -225,6 +236,7 @@ mod tests { version: UserVersion::from_str("12.0.0").ok(), lts: false, latest: false, + no_progress: true, } .apply(&config) .expect("Can't install"); @@ -250,6 +262,7 @@ mod tests { version: None, lts: false, latest: true, + no_progress: true, } .apply(&config) .expect("Can't install"); diff --git a/src/downloader.rs b/src/downloader.rs index 3e470390d..a020f57e0 100644 --- a/src/downloader.rs +++ b/src/downloader.rs @@ -2,8 +2,11 @@ use crate::arch::Arch; use crate::archive; use crate::archive::{Error as ExtractError, Extract}; use crate::directory_portal::DirectoryPortal; +use crate::progress::ResponseProgress; use crate::version::Version; +use indicatif::ProgressDrawTarget; use log::debug; +use std::io::Read; use std::path::Path; use std::path::PathBuf; use thiserror::Error; @@ -63,10 +66,7 @@ fn download_url(base_url: &Url, version: &Version, arch: &Arch) -> Url { .unwrap() } -pub fn extract_archive_into>( - path: P, - response: crate::http::Response, -) -> Result<(), Error> { +fn extract_archive_into(path: impl AsRef, response: impl Read) -> Result<(), Error> { #[cfg(unix)] let extractor = archive::TarXz::new(response); #[cfg(windows)] @@ -81,6 +81,7 @@ pub fn install_node_dist>( node_dist_mirror: &Url, installations_dir: P, arch: &Arch, + show_progress: bool, ) -> Result<(), Error> { let installation_dir = PathBuf::from(installations_dir.as_ref()).join(version.v_str()); @@ -109,7 +110,14 @@ pub fn install_node_dist>( } debug!("Extracting response..."); - extract_archive_into(&portal, response)?; + if show_progress { + extract_archive_into( + &portal, + ResponseProgress::new(response, ProgressDrawTarget::stderr()), + )?; + } else { + extract_archive_into(&portal, response)?; + } debug!("Extraction completed"); let installed_directory = std::fs::read_dir(&portal)? @@ -171,7 +179,8 @@ mod tests { let version = Version::parse("12.0.0").unwrap(); let arch = Arch::X64; let node_dist_mirror = Url::parse("https://nodejs.org/dist/").unwrap(); - install_node_dist(&version, &node_dist_mirror, path, &arch).expect("Can't install Node 12"); + install_node_dist(&version, &node_dist_mirror, path, &arch, false) + .expect("Can't install Node 12"); let mut location_path = path.join(version.v_str()).join("installation"); diff --git a/src/main.rs b/src/main.rs index cbc4f0fb3..cfb2a64d7 100644 --- a/src/main.rs +++ b/src/main.rs @@ -22,6 +22,7 @@ mod installed_versions; mod lts; mod package_json; mod path_ext; +mod progress; mod remote_node_index; mod shell; mod system_info; diff --git a/src/progress.rs b/src/progress.rs new file mode 100644 index 000000000..ec8e301e8 --- /dev/null +++ b/src/progress.rs @@ -0,0 +1,147 @@ +use std::io::Read; + +use indicatif::{ProgressBar, ProgressDrawTarget, ProgressStyle}; +use reqwest::blocking::Response; + +pub struct ResponseProgress { + progress: Option, + response: Response, +} + +fn make_progress_bar(size: u64, target: ProgressDrawTarget) -> ProgressBar { + let bar = ProgressBar::with_draw_target(Some(size), target); + + bar.set_style( + ProgressStyle::with_template( + "[{elapsed_precise}] [{bar:40}] {bytes}/{total_bytes} ({bytes_per_sec}, {eta})", + ) + .unwrap() + .progress_chars("#>-"), + ); + + bar +} + +impl ResponseProgress { + pub fn new(response: Response, target: ProgressDrawTarget) -> Self { + Self { + progress: response + .content_length() + .map(|len| make_progress_bar(len, target)), + response, + } + } + + pub fn finish(&self) { + if let Some(ref bar) = self.progress { + bar.finish(); + } + } +} + +impl Read for ResponseProgress { + fn read(&mut self, buf: &mut [u8]) -> std::io::Result { + let size = self.response.read(buf)?; + + if let Some(ref bar) = self.progress { + bar.inc(size as u64); + } + + Ok(size) + } +} + +impl Drop for ResponseProgress { + fn drop(&mut self) { + self.finish(); + } +} + +#[cfg(test)] +mod tests { + use indicatif::{ProgressDrawTarget, TermLike}; + use reqwest::blocking::Response; + use std::{ + io::Read, + sync::{Arc, Mutex}, + }; + + use super::ResponseProgress; + + const CONTENT_LENGTH: usize = 100; + + #[derive(Debug)] + struct MockedTerm { + pub buf: Arc>, + } + + impl TermLike for MockedTerm { + fn width(&self) -> u16 { + 80 + } + + fn move_cursor_up(&self, _n: usize) -> std::io::Result<()> { + Ok(()) + } + + fn move_cursor_down(&self, _n: usize) -> std::io::Result<()> { + Ok(()) + } + + fn move_cursor_right(&self, _n: usize) -> std::io::Result<()> { + Ok(()) + } + + fn move_cursor_left(&self, _n: usize) -> std::io::Result<()> { + Ok(()) + } + + fn write_line(&self, s: &str) -> std::io::Result<()> { + self.buf.lock().unwrap().push_str(s); + Ok(()) + } + + fn write_str(&self, s: &str) -> std::io::Result<()> { + self.buf.lock().unwrap().push_str(s); + Ok(()) + } + + fn clear_line(&self) -> std::io::Result<()> { + Ok(()) + } + + fn flush(&self) -> std::io::Result<()> { + Ok(()) + } + } + + #[test] + fn test_reads_data_and_shows_progress() { + let response: Response = http::Response::builder() + .header("Content-Length", CONTENT_LENGTH) + .body("a".repeat(CONTENT_LENGTH)) + .unwrap() + .into(); + + let mut buf = [0; CONTENT_LENGTH]; + + let out_buf = Arc::new(Mutex::new(String::new())); + + let mut progress = ResponseProgress::new( + response, + ProgressDrawTarget::term_like(Box::new(MockedTerm { + buf: out_buf.clone(), + })), + ); + let size = progress.read(&mut buf[..]).unwrap(); + + drop(progress); + + assert_eq!(size, CONTENT_LENGTH); + assert_eq!(buf, "a".repeat(CONTENT_LENGTH).as_bytes()); + assert!(out_buf + .lock() + .unwrap() + .contains(&format!("[{}]", &"#".repeat(40)))); + } +} From 7c713f2d0bfbc2cacae54ccd22e9309a47bf9203 Mon Sep 17 00:00:00 2001 From: Gal Schlezinger Date: Sat, 25 May 2024 22:34:27 +0300 Subject: [PATCH 58/66] add configuration documentation (#1127) * add configuration documentation * add markdown heading * add satisfying --- README.md | 11 +++++-- docs/configuration.md | 72 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 81 insertions(+), 2 deletions(-) create mode 100644 docs/configuration.md diff --git a/README.md b/README.md index 558bedfb7..76decc054 100644 --- a/README.md +++ b/README.md @@ -129,7 +129,10 @@ Please follow your shell instructions to install them. Environment variables need to be setup before you can start using fnm. This is done by evaluating the output of `fnm env`. -To automatically run `fnm use` when a directory contains a `.node-version` or `.nvmrc` file, add the `--use-on-cd` option to your shell setup. + +> [!NOTE] +> Check out the [Configuration](./docs/configuration.md) section to enable highly +> recommended features, like automatic version switching. Adding a `.node-version` to your project is as simple as: @@ -178,7 +181,7 @@ fnm env --use-on-cd | Out-String | Invoke-Expression ```powershell notepad $profile ``` - + #### Windows Command Prompt aka Batch aka WinCMD fnm is also supported but is not entirely covered. [You can set up a startup script](https://superuser.com/a/144348) and append the following lines: @@ -214,6 +217,10 @@ call "%CMDER_ROOT%\bin\fnm_init.cmd" You can replace `%CMDER_ROOT%` with any other convenient path too. +## [Configuration](./docs/configuration.md) + +[See the available configuration options for an extended configuration documentation](./docs/configuration.md) + ## [Usage](./docs/commands.md) [See the available commands for an extended usage documentation](./docs/commands.md) diff --git a/docs/configuration.md b/docs/configuration.md new file mode 100644 index 000000000..d64af8865 --- /dev/null +++ b/docs/configuration.md @@ -0,0 +1,72 @@ +# Configuration + +fnm comes with many features out of the box. Some of them are not activated by default as they’re changing your shell default behavior, and some are just a feature flag to avoid breaking changes or just experimental until we decide it is worthwhile to introduce them. + +All these features can be configured by adding flags to the `fnm env` call when initializing the shell. For instance, if your shell set up looks like `eval "$(fnm env)"` then you can add a flag to it by changing it to `eval "$(fnm env --my-flag=value)"` + +Here’s a list of these features and capabilities: + +### `--use-on-cd` + +**βœ… Highly recommended** + +`--use-on-cd` appends output to `fnm env`'s output that will hook into your shell upon changing directories, and will switch the Node.js version based on the requirements of the current directory, based on `.node-version` or `.nvmrc` (or `packages.json#engines#node` if `--resolve-engines` was enabled). + +This allows you do avoid thinking about `fnm use`, and only `cd ` to make it work. + +### `--version-file-strategy=recursive` + +**βœ… Highly recommended** + +Makes `fnm use` and `fnm install` take parent directories into account when looking for a version file ("dotfile")--when no argument was given. + +So, let's say we have the following directory structure: + +``` +repo/ +β”œβ”€β”€ package.json +β”œβ”€β”€ .node-version <- with content: `20.0.0` +└── packages/ + └── my-package/ <- I am here + └── package.json +``` + +And I'm running the following command: + +```sh-session +repo/packages/my-package$ fnm use +``` + +Then fnm will switch to Node.js v20.0.0. + +Without the explicit flag, the value is set to `local`, which will not traverse the directory tree and therefore will print: + +```sh-session +repo/packages/my-package$ fnm use +error: Can't find version in dotfiles. Please provide a version manually to the command. +``` + +### `--enable-corepack` + +**πŸ§ͺ Experimental** + +Runs [`corepack enable`](https://nodejs.org/api/corepack.html#enabling-the-feature) when a new version of Node.js is installed. Experimental due to the fact Corepack itself is experimental. + +### `--resolve-engines` + +**πŸ§ͺ Experimental** + +Treats `package.json#engines#node` as a valid Node.js version file ("dotfile"). So, if you have a package.json with the following content: + +```json +{ + "engines": { + "node": ">=20 <21" + } +} +``` + +Then: + +- `fnm install` will install the latest satisfying Node.js 20.x version available in the Node.js dist server +- `fnm use` will use the latest satisfying Node.js 20.x version available on your system, or prompt to install if no version matched. From ced2f306b0598706a73eb677ec0ac93622b6b7eb Mon Sep 17 00:00:00 2001 From: Gal Schlezinger Date: Sun, 26 May 2024 07:43:25 +0300 Subject: [PATCH 59/66] fix clippy (#1126) * run cargo clippy --fix * cargo fmt * add rust-toolchain.toml * force rust version * fixup! run cargo clippy --fix fix urls * add clippy and rustfmt * update command docs * export Zip on Windows * remove benchmarking for a while --- .github/workflows/rust.yml | 151 +++++++++++++++++++------------------ docs/commands.md | 52 ++++++------- rust-toolchain.toml | 3 + src/arch.rs | 4 +- src/archive/mod.rs | 4 + src/commands/env.rs | 2 +- src/commands/install.rs | 2 +- src/commands/use.rs | 2 +- src/config.rs | 4 +- src/shell/bash.rs | 6 +- src/shell/fish.rs | 6 +- src/shell/infer/mod.rs | 2 +- src/shell/powershell.rs | 6 +- src/shell/zsh.rs | 6 +- 14 files changed, 130 insertions(+), 120 deletions(-) create mode 100644 rust-toolchain.toml diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index 46984f6bd..9046956f5 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -10,13 +10,16 @@ concurrency: group: ci-${{ github.head_ref }} cancel-in-progress: true +env: + RUST_VERSION: "1.78" + jobs: fmt: runs-on: ubuntu-latest steps: - uses: hecrj/setup-rust-action@v1 with: - rust-version: stable + rust-version: ${{env.RUST_VERSION}} - uses: Swatinem/rust-cache@v2 - uses: actions/checkout@v3 - name: cargo fmt @@ -27,7 +30,7 @@ jobs: steps: - uses: hecrj/setup-rust-action@v1 with: - rust-version: stable + rust-version: ${{env.RUST_VERSION}} - uses: Swatinem/rust-cache@v2 - uses: actions/checkout@v3 - name: cargo clippy @@ -41,7 +44,7 @@ jobs: steps: - uses: hecrj/setup-rust-action@v1 with: - rust-version: stable + rust-version: ${{env.RUST_VERSION}} - uses: Swatinem/rust-cache@v2 - uses: actions/checkout@v3 - name: Run tests @@ -53,7 +56,7 @@ jobs: steps: - uses: hecrj/setup-rust-action@v1 with: - rust-version: stable + rust-version: ${{env.RUST_VERSION}} - uses: Swatinem/rust-cache@v2 - uses: actions/checkout@v3 - name: Build release binary @@ -71,7 +74,7 @@ jobs: steps: - uses: hecrj/setup-rust-action@v1 with: - rust-version: stable + rust-version: ${{env.RUST_VERSION}} - uses: Swatinem/rust-cache@v2 - uses: actions/checkout@v3 - name: Build release binary @@ -237,7 +240,7 @@ jobs: steps: - uses: hecrj/setup-rust-action@v1 with: - rust-version: stable + rust-version: ${{env.RUST_VERSION}} targets: x86_64-unknown-linux-musl - uses: Swatinem/rust-cache@v2 with: @@ -278,7 +281,7 @@ jobs: uses: docker/setup-qemu-action@v2 - uses: hecrj/setup-rust-action@v1 with: - rust-version: stable + rust-version: ${{env.RUST_VERSION}} - uses: Swatinem/rust-cache@v2 with: key: arm-binary-${{ matrix.arch }} @@ -358,70 +361,70 @@ jobs: run: | pnpm run generate-command-docs --check --binary-path=$(which fnm) - run_e2e_benchmarks: - runs-on: ubuntu-latest - name: bench/linux - needs: [build_static_linux_binary] - permissions: - contents: write - pull-requests: write - steps: - - name: install necessary shells - run: sudo apt-get update && sudo apt-get install -y fish zsh bash hyperfine - - uses: actions/checkout@v3 - - uses: actions/download-artifact@v3 - with: - name: fnm-linux - path: target/release - - name: mark binary as executable - run: chmod +x target/release/fnm - - name: install fnm as binary - run: | - sudo install target/release/fnm /bin - fnm --version - - uses: pnpm/action-setup@v2.2.4 - with: - run_install: false - - uses: actions/setup-node@v3 - with: - node-version: 18.x - cache: "pnpm" - - name: Get pnpm store directory - id: pnpm-cache - run: | - echo "::set-output name=pnpm_cache_dir::$(pnpm store path)" - - uses: actions/cache@v3 - name: Setup pnpm cache - with: - path: ${{ steps.pnpm-cache.outputs.pnpm_cache_dir }} - key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} - restore-keys: | - ${{ runner.os }}-pnpm-store- - - run: pnpm install - - name: Run benchmarks - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - SHOULD_STORE: ${{ toJson(!github.event.pull_request) }} - id: benchmark - run: | - delimiter="$(openssl rand -hex 8)" - echo "markdown<<${delimiter}" >> "${GITHUB_OUTPUT}" - node benchmarks/run.mjs --store=$SHOULD_STORE >> "${GITHUB_OUTPUT}" - echo "${delimiter}" >> "${GITHUB_OUTPUT}" - - - name: Create a PR comment - if: ${{ github.event.pull_request }} - uses: thollander/actions-comment-pull-request@v2 - with: - message: | - ## Linux Benchmarks for ${{ github.event.pull_request.head.sha }} - ${{ steps.benchmark.outputs.markdown }} - comment_tag: "benchy comment" - - - name: Create a commit comment - if: ${{ !github.event.pull_request }} - uses: peter-evans/commit-comment@v2 - with: - body: | - ## Linux Benchmarks - ${{ steps.benchmark.outputs.markdown }} + # TODO: use bnz + # run_e2e_benchmarks: + # runs-on: ubuntu-latest + # name: bench/linux + # needs: [build_static_linux_binary] + # permissions: + # contents: write + # pull-requests: write + # steps: + # - name: install necessary shells + # run: sudo apt-get update && sudo apt-get install -y fish zsh bash hyperfine + # - uses: actions/checkout@v3 + # - uses: actions/download-artifact@v3 + # with: + # name: fnm-linux + # path: target/release + # - name: mark binary as executable + # run: chmod +x target/release/fnm + # - name: install fnm as binary + # run: | + # sudo install target/release/fnm /bin + # fnm --version + # - uses: pnpm/action-setup@v2.2.4 + # with: + # run_install: false + # - uses: actions/setup-node@v3 + # with: + # node-version: 18.x + # cache: "pnpm" + # - name: Get pnpm store directory + # id: pnpm-cache + # run: | + # echo "::set-output name=pnpm_cache_dir::$(pnpm store path)" + # - uses: actions/cache@v3 + # name: Setup pnpm cache + # with: + # path: ${{ steps.pnpm-cache.outputs.pnpm_cache_dir }} + # key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} + # restore-keys: | + # ${{ runner.os }}-pnpm-store- + # - run: pnpm install + # - name: Run benchmarks + # env: + # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + # SHOULD_STORE: ${{ toJson(!github.event.pull_request) }} + # id: benchmark + # run: | + # delimiter="$(openssl rand -hex 8)" + # echo "markdown<<${delimiter}" >> "${GITHUB_OUTPUT}" + # node benchmarks/run.mjs --store=$SHOULD_STORE >> "${GITHUB_OUTPUT}" + # echo "${delimiter}" >> "${GITHUB_OUTPUT}" + # - name: Create a PR comment + # if: ${{ github.event.pull_request }} + # uses: thollander/actions-comment-pull-request@v2 + # with: + # message: | + # ## Linux Benchmarks for ${{ github.event.pull_request.head.sha }} + # ${{ steps.benchmark.outputs.markdown }} + # comment_tag: "benchy comment" + # + # - name: Create a commit comment + # if: ${{ !github.event.pull_request }} + # uses: peter-evans/commit-comment@v2 + # with: + # body: | + # ## Linux Benchmarks + # ${{ steps.benchmark.outputs.markdown }} diff --git a/docs/commands.md b/docs/commands.md index d3072aacc..631f17032 100644 --- a/docs/commands.md +++ b/docs/commands.md @@ -22,7 +22,7 @@ Commands: Options: --node-dist-mirror - https://nodejs.org/dist/ mirror + mirror [env: FNM_NODE_DIST_MIRROR] [default: https://nodejs.org/dist] @@ -55,7 +55,7 @@ Options: - recursive: Use the version of Node defined within the current directory and all parent directories --corepack-enabled - Enable corepack support for each new installation. This will make fnm call `corepack enable` on every Node.js installation. For more information about corepack see https://nodejs.org/api/corepack.html + Enable corepack support for each new installation. This will make fnm call `corepack enable` on every Node.js installation. For more information about corepack see [env: FNM_COREPACK_ENABLED] @@ -82,7 +82,7 @@ Usage: fnm list-remote [OPTIONS] Options: --node-dist-mirror - https://nodejs.org/dist/ mirror + mirror [env: FNM_NODE_DIST_MIRROR] [default: https://nodejs.org/dist] @@ -115,7 +115,7 @@ Options: - recursive: Use the version of Node defined within the current directory and all parent directories --corepack-enabled - Enable corepack support for each new installation. This will make fnm call `corepack enable` on every Node.js installation. For more information about corepack see https://nodejs.org/api/corepack.html + Enable corepack support for each new installation. This will make fnm call `corepack enable` on every Node.js installation. For more information about corepack see [env: FNM_COREPACK_ENABLED] @@ -139,7 +139,7 @@ Usage: fnm list [OPTIONS] Options: --node-dist-mirror - https://nodejs.org/dist/ mirror + mirror [env: FNM_NODE_DIST_MIRROR] [default: https://nodejs.org/dist] @@ -172,7 +172,7 @@ Options: - recursive: Use the version of Node defined within the current directory and all parent directories --corepack-enabled - Enable corepack support for each new installation. This will make fnm call `corepack enable` on every Node.js installation. For more information about corepack see https://nodejs.org/api/corepack.html + Enable corepack support for each new installation. This will make fnm call `corepack enable` on every Node.js installation. For more information about corepack see [env: FNM_COREPACK_ENABLED] @@ -203,7 +203,7 @@ Options: Install latest LTS --node-dist-mirror - https://nodejs.org/dist/ mirror + mirror [env: FNM_NODE_DIST_MIRROR] [default: https://nodejs.org/dist] @@ -242,7 +242,7 @@ Options: - recursive: Use the version of Node defined within the current directory and all parent directories --corepack-enabled - Enable corepack support for each new installation. This will make fnm call `corepack enable` on every Node.js installation. For more information about corepack see https://nodejs.org/api/corepack.html + Enable corepack support for each new installation. This will make fnm call `corepack enable` on every Node.js installation. For more information about corepack see [env: FNM_COREPACK_ENABLED] @@ -273,7 +273,7 @@ Options: Install the version if it isn't installed yet --node-dist-mirror - https://nodejs.org/dist/ mirror + mirror [env: FNM_NODE_DIST_MIRROR] [default: https://nodejs.org/dist] @@ -309,7 +309,7 @@ Options: - recursive: Use the version of Node defined within the current directory and all parent directories --corepack-enabled - Enable corepack support for each new installation. This will make fnm call `corepack enable` on every Node.js installation. For more information about corepack see https://nodejs.org/api/corepack.html + Enable corepack support for each new installation. This will make fnm call `corepack enable` on every Node.js installation. For more information about corepack see [env: FNM_COREPACK_ENABLED] @@ -337,7 +337,7 @@ Usage: fnm env [OPTIONS] Options: --node-dist-mirror - https://nodejs.org/dist/ mirror + mirror [env: FNM_NODE_DIST_MIRROR] [default: https://nodejs.org/dist] @@ -381,7 +381,7 @@ Options: - recursive: Use the version of Node defined within the current directory and all parent directories --corepack-enabled - Enable corepack support for each new installation. This will make fnm call `corepack enable` on every Node.js installation. For more information about corepack see https://nodejs.org/api/corepack.html + Enable corepack support for each new installation. This will make fnm call `corepack enable` on every Node.js installation. For more information about corepack see [env: FNM_COREPACK_ENABLED] @@ -405,7 +405,7 @@ Usage: fnm completions [OPTIONS] Options: --node-dist-mirror - https://nodejs.org/dist/ mirror + mirror [env: FNM_NODE_DIST_MIRROR] [default: https://nodejs.org/dist] @@ -443,7 +443,7 @@ Options: - recursive: Use the version of Node defined within the current directory and all parent directories --corepack-enabled - Enable corepack support for each new installation. This will make fnm call `corepack enable` on every Node.js installation. For more information about corepack see https://nodejs.org/api/corepack.html + Enable corepack support for each new installation. This will make fnm call `corepack enable` on every Node.js installation. For more information about corepack see [env: FNM_COREPACK_ENABLED] @@ -474,7 +474,7 @@ Arguments: Options: --node-dist-mirror - https://nodejs.org/dist/ mirror + mirror [env: FNM_NODE_DIST_MIRROR] [default: https://nodejs.org/dist] @@ -507,7 +507,7 @@ Options: - recursive: Use the version of Node defined within the current directory and all parent directories --corepack-enabled - Enable corepack support for each new installation. This will make fnm call `corepack enable` on every Node.js installation. For more information about corepack see https://nodejs.org/api/corepack.html + Enable corepack support for each new installation. This will make fnm call `corepack enable` on every Node.js installation. For more information about corepack see [env: FNM_COREPACK_ENABLED] @@ -535,7 +535,7 @@ Arguments: Options: --node-dist-mirror - https://nodejs.org/dist/ mirror + mirror [env: FNM_NODE_DIST_MIRROR] [default: https://nodejs.org/dist] @@ -568,7 +568,7 @@ Options: - recursive: Use the version of Node defined within the current directory and all parent directories --corepack-enabled - Enable corepack support for each new installation. This will make fnm call `corepack enable` on every Node.js installation. For more information about corepack see https://nodejs.org/api/corepack.html + Enable corepack support for each new installation. This will make fnm call `corepack enable` on every Node.js installation. For more information about corepack see [env: FNM_COREPACK_ENABLED] @@ -598,7 +598,7 @@ Arguments: Options: --node-dist-mirror - https://nodejs.org/dist/ mirror + mirror [env: FNM_NODE_DIST_MIRROR] [default: https://nodejs.org/dist] @@ -631,7 +631,7 @@ Options: - recursive: Use the version of Node defined within the current directory and all parent directories --corepack-enabled - Enable corepack support for each new installation. This will make fnm call `corepack enable` on every Node.js installation. For more information about corepack see https://nodejs.org/api/corepack.html + Enable corepack support for each new installation. This will make fnm call `corepack enable` on every Node.js installation. For more information about corepack see [env: FNM_COREPACK_ENABLED] @@ -655,7 +655,7 @@ Usage: fnm current [OPTIONS] Options: --node-dist-mirror - https://nodejs.org/dist/ mirror + mirror [env: FNM_NODE_DIST_MIRROR] [default: https://nodejs.org/dist] @@ -688,7 +688,7 @@ Options: - recursive: Use the version of Node defined within the current directory and all parent directories --corepack-enabled - Enable corepack support for each new installation. This will make fnm call `corepack enable` on every Node.js installation. For more information about corepack see https://nodejs.org/api/corepack.html + Enable corepack support for each new installation. This will make fnm call `corepack enable` on every Node.js installation. For more information about corepack see [env: FNM_COREPACK_ENABLED] @@ -721,7 +721,7 @@ Arguments: Options: --node-dist-mirror - https://nodejs.org/dist/ mirror + mirror [env: FNM_NODE_DIST_MIRROR] [default: https://nodejs.org/dist] @@ -757,7 +757,7 @@ Options: - recursive: Use the version of Node defined within the current directory and all parent directories --corepack-enabled - Enable corepack support for each new installation. This will make fnm call `corepack enable` on every Node.js installation. For more information about corepack see https://nodejs.org/api/corepack.html + Enable corepack support for each new installation. This will make fnm call `corepack enable` on every Node.js installation. For more information about corepack see [env: FNM_COREPACK_ENABLED] @@ -787,7 +787,7 @@ Arguments: Options: --node-dist-mirror - https://nodejs.org/dist/ mirror + mirror [env: FNM_NODE_DIST_MIRROR] [default: https://nodejs.org/dist] @@ -820,7 +820,7 @@ Options: - recursive: Use the version of Node defined within the current directory and all parent directories --corepack-enabled - Enable corepack support for each new installation. This will make fnm call `corepack enable` on every Node.js installation. For more information about corepack see https://nodejs.org/api/corepack.html + Enable corepack support for each new installation. This will make fnm call `corepack enable` on every Node.js installation. For more information about corepack see [env: FNM_COREPACK_ENABLED] diff --git a/rust-toolchain.toml b/rust-toolchain.toml new file mode 100644 index 000000000..d38fc8205 --- /dev/null +++ b/rust-toolchain.toml @@ -0,0 +1,3 @@ +[toolchain] +channel = "1.78" +components = ["rustfmt", "clippy"] diff --git a/src/arch.rs b/src/arch.rs index 080552c91..b1ed94136 100644 --- a/src/arch.rs +++ b/src/arch.rs @@ -17,10 +17,10 @@ pub enum Arch { pub fn get_safe_arch<'a>(arch: &'a Arch, version: &Version) -> &'a Arch { use crate::system_info::{platform_arch, platform_name}; - return match (platform_name(), platform_arch(), version) { + match (platform_name(), platform_arch(), version) { ("darwin", "arm64", Version::Semver(v)) if v.major < 16 => &Arch::X64, _ => arch, - }; + } } #[cfg(windows)] diff --git a/src/archive/mod.rs b/src/archive/mod.rs index e3cf33f4c..ac44763b9 100644 --- a/src/archive/mod.rs +++ b/src/archive/mod.rs @@ -3,5 +3,9 @@ pub mod tar_xz; pub mod zip; pub use self::extract::{Error, Extract}; + +#[cfg(unix)] pub use self::tar_xz::TarXz; + +#[cfg(windows)] pub use self::zip::Zip; diff --git a/src/commands/env.rs b/src/commands/env.rs index d8cf2b325..f0eacb799 100644 --- a/src/commands/env.rs +++ b/src/commands/env.rs @@ -44,7 +44,7 @@ fn make_symlink(config: &FnmConfig) -> Result { } match symlink_dir(config.default_version_dir(), &temp_dir) { - Ok(_) => Ok(temp_dir), + Ok(()) => Ok(temp_dir), Err(source) => Err(Error::CantCreateSymlink { source, temp_dir }), } } diff --git a/src/commands/install.rs b/src/commands/install.rs index ed20fe997..4ca15a0a1 100644 --- a/src/commands/install.rs +++ b/src/commands/install.rs @@ -147,7 +147,7 @@ impl Command for Install { outln!(config, Error, "{} {}", "warning:".bold().yellow(), err); } Err(source) => Err(Error::DownloadError { source })?, - Ok(_) => {} + Ok(()) => {} }; if config.corepack_enabled() { diff --git a/src/commands/use.rs b/src/commands/use.rs index 14bbfb4b9..3f2751fb3 100644 --- a/src/commands/use.rs +++ b/src/commands/use.rs @@ -153,7 +153,7 @@ fn install_new_version( fn replace_symlink(from: &std::path::Path, to: &std::path::Path) -> std::io::Result<()> { let symlink_deletion_result = fs::remove_symlink_dir(to); match fs::symlink_dir(from, to) { - ok @ Ok(_) => ok, + ok @ Ok(()) => ok, err @ Err(_) => symlink_deletion_result.and(err), } } diff --git a/src/config.rs b/src/config.rs index 1c653993e..2f68a9d71 100644 --- a/src/config.rs +++ b/src/config.rs @@ -7,7 +7,7 @@ use url::Url; #[derive(clap::Parser, Debug)] pub struct FnmConfig { - /// https://nodejs.org/dist/ mirror + /// mirror #[clap( long, env = "FNM_NODE_DIST_MIRROR", @@ -67,7 +67,7 @@ pub struct FnmConfig { /// Enable corepack support for each new installation. /// This will make fnm call `corepack enable` on every Node.js installation. - /// For more information about corepack see https://nodejs.org/api/corepack.html + /// For more information about corepack see #[clap( long, env = "FNM_COREPACK_ENABLED", diff --git a/src/shell/bash.rs b/src/shell/bash.rs index cada96dce..016809e9f 100644 --- a/src/shell/bash.rs +++ b/src/shell/bash.rs @@ -28,13 +28,13 @@ impl Shell for Bash { fn use_on_cd(&self, config: &crate::config::FnmConfig) -> anyhow::Result { let autoload_hook = match config.version_file_strategy() { VersionFileStrategy::Local => indoc!( - r#" + r" if [[ -f .node-version || -f .nvmrc ]]; then fnm use --silent-if-unchanged fi - "# + " ), - VersionFileStrategy::Recursive => r#"fnm use --silent-if-unchanged"#, + VersionFileStrategy::Recursive => r"fnm use --silent-if-unchanged", }; Ok(formatdoc!( r#" diff --git a/src/shell/fish.rs b/src/shell/fish.rs index 18f6b32c2..0b3db7f59 100644 --- a/src/shell/fish.rs +++ b/src/shell/fish.rs @@ -28,13 +28,13 @@ impl Shell for Fish { fn use_on_cd(&self, config: &crate::config::FnmConfig) -> anyhow::Result { let autoload_hook = match config.version_file_strategy() { VersionFileStrategy::Local => indoc!( - r#" + r" if test -f .node-version -o -f .nvmrc fnm use --silent-if-unchanged end - "# + " ), - VersionFileStrategy::Recursive => r#"fnm use --silent-if-unchanged"#, + VersionFileStrategy::Recursive => r"fnm use --silent-if-unchanged", }; Ok(formatdoc!( r#" diff --git a/src/shell/infer/mod.rs b/src/shell/infer/mod.rs index e0c22c627..e7b1a1b5f 100644 --- a/src/shell/infer/mod.rs +++ b/src/shell/infer/mod.rs @@ -7,7 +7,7 @@ pub use self::unix::infer_shell; #[cfg(not(unix))] pub use self::windows::infer_shell; -pub(self) fn shell_from_string(shell: &str) -> Option> { +fn shell_from_string(shell: &str) -> Option> { use super::{Bash, Fish, PowerShell, WindowsCmd, Zsh}; match shell { "sh" | "bash" => return Some(Box::from(Bash)), diff --git a/src/shell/powershell.rs b/src/shell/powershell.rs index be77c9bfd..99f115fe0 100644 --- a/src/shell/powershell.rs +++ b/src/shell/powershell.rs @@ -28,11 +28,11 @@ impl Shell for PowerShell { fn use_on_cd(&self, config: &crate::config::FnmConfig) -> anyhow::Result { let autoload_hook = match config.version_file_strategy() { VersionFileStrategy::Local => indoc!( - r#" + r" If ((Test-Path .nvmrc) -Or (Test-Path .node-version)) { & fnm use --silent-if-unchanged } - "# + " ), - VersionFileStrategy::Recursive => r#"fnm use --silent-if-unchanged"#, + VersionFileStrategy::Recursive => r"fnm use --silent-if-unchanged", }; Ok(formatdoc!( r#" diff --git a/src/shell/zsh.rs b/src/shell/zsh.rs index 01e039cbe..f138f22c7 100644 --- a/src/shell/zsh.rs +++ b/src/shell/zsh.rs @@ -32,13 +32,13 @@ impl Shell for Zsh { fn use_on_cd(&self, config: &crate::config::FnmConfig) -> anyhow::Result { let autoload_hook = match config.version_file_strategy() { VersionFileStrategy::Local => indoc!( - r#" + r" if [[ -f .node-version || -f .nvmrc ]]; then fnm use --silent-if-unchanged fi - "# + " ), - VersionFileStrategy::Recursive => r#"fnm use --silent-if-unchanged"#, + VersionFileStrategy::Recursive => r"fnm use --silent-if-unchanged", }; Ok(formatdoc!( r#" From d9af62ff432e57398efdd812e218f3fb390c5243 Mon Sep 17 00:00:00 2001 From: Gal Schlezinger Date: Sun, 26 May 2024 08:26:23 +0300 Subject: [PATCH 60/66] improve progress bar in install (#1125) * update indicatif version * add a eprintln after it finishes * make it prettier * update progress bar docs * add changeset * s/no_progress: true/progress: ProgressConfig::Never/g * styling the progress bar * fix test --- .changeset/poor-poets-compete.md | 5 +++++ Cargo.lock | 4 ++-- Cargo.toml | 2 +- docs/commands.md | 7 +++++-- src/commands/install.rs | 23 ++++++++++++----------- src/progress.rs | 30 ++++++++++++++++++++++++------ 6 files changed, 49 insertions(+), 22 deletions(-) create mode 100644 .changeset/poor-poets-compete.md diff --git a/.changeset/poor-poets-compete.md b/.changeset/poor-poets-compete.md new file mode 100644 index 000000000..1d8287f88 --- /dev/null +++ b/.changeset/poor-poets-compete.md @@ -0,0 +1,5 @@ +--- +"fnm": patch +--- + +make nicer styling in progress bar (add newline, make it unicode) diff --git a/Cargo.lock b/Cargo.lock index fbc969f53..49143d4ad 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -935,9 +935,9 @@ dependencies = [ [[package]] name = "indicatif" -version = "0.17.6" +version = "0.17.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b297dc40733f23a0e52728a58fa9489a5b7638a324932de16b41adc3ef80730" +checksum = "763a5a8f45087d6bcea4222e7b72c291a054edf80e4ef6efd2a4979878c7bea3" dependencies = [ "console", "instant", diff --git a/Cargo.toml b/Cargo.toml index f6f9326c9..161b4ef72 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -30,7 +30,7 @@ sysinfo = "0.29.3" thiserror = "1.0.44" clap_complete = "4.3.1" anyhow = "1.0.71" -indicatif = "0.17.6" +indicatif = "0.17.8" [dev-dependencies] pretty_assertions = "1.4.0" diff --git a/docs/commands.md b/docs/commands.md index 631f17032..8468c8673 100644 --- a/docs/commands.md +++ b/docs/commands.md @@ -216,8 +216,11 @@ Options: --latest Install latest version - --no-progress - Do not display a progress bar + --progress + Show an interactive progress bar for the download status + + [default: auto] + [possible values: auto, never, always] --log-level The log level of fnm commands diff --git a/src/commands/install.rs b/src/commands/install.rs index 4ca15a0a1..79013ad1d 100644 --- a/src/commands/install.rs +++ b/src/commands/install.rs @@ -3,9 +3,9 @@ use crate::alias::create_alias; use crate::arch::get_safe_arch; use crate::config::FnmConfig; use crate::downloader::{install_node_dist, Error as DownloaderError}; -use crate::log_level::LogLevel; use crate::lts::LtsType; use crate::outln; +use crate::progress::ProgressConfig; use crate::remote_node_index; use crate::user_version::UserVersion; use crate::version::Version; @@ -27,9 +27,11 @@ pub struct Install { #[clap(long, conflicts_with_all = &["version", "lts"])] pub latest: bool, - /// Do not display a progress bar - #[clap(long)] - pub no_progress: bool, + /// Show an interactive progress bar for the download + /// status. + #[clap(long, default_value_t)] + #[arg(value_enum)] + pub progress: ProgressConfig, } impl Install { @@ -39,19 +41,19 @@ impl Install { version: v, lts: false, latest: false, - no_progress: _, + .. } => Ok(v), Self { version: None, lts: true, latest: false, - no_progress: _, + .. } => Ok(Some(UserVersion::Full(Version::Lts(LtsType::Latest)))), Self { version: None, lts: false, latest: true, - no_progress: _, + .. } => Ok(Some(UserVersion::Full(Version::Latest))), _ => Err(Error::TooManyVersionsProvided), } @@ -63,8 +65,7 @@ impl Command for Install { fn apply(self, config: &FnmConfig) -> Result<(), Self::Error> { let current_dir = std::env::current_dir().unwrap(); - - let show_progress = !self.no_progress && config.log_level().is_writable(&LogLevel::Info); + let show_progress = self.progress.enabled(config); let current_version = self .version()? @@ -236,7 +237,7 @@ mod tests { version: UserVersion::from_str("12.0.0").ok(), lts: false, latest: false, - no_progress: true, + progress: ProgressConfig::Never, } .apply(&config) .expect("Can't install"); @@ -262,7 +263,7 @@ mod tests { version: None, lts: false, latest: true, - no_progress: true, + progress: ProgressConfig::Never, } .apply(&config) .expect("Can't install"); diff --git a/src/progress.rs b/src/progress.rs index ec8e301e8..aaaeea887 100644 --- a/src/progress.rs +++ b/src/progress.rs @@ -8,15 +8,35 @@ pub struct ResponseProgress { response: Response, } +#[derive(Default, Clone, Debug, clap::ValueEnum)] +pub enum ProgressConfig { + #[default] + Auto, + Never, + Always, +} + +impl ProgressConfig { + pub fn enabled(&self, config: &crate::config::FnmConfig) -> bool { + match self { + Self::Never => false, + Self::Always => true, + Self::Auto => config + .log_level() + .is_writable(&crate::log_level::LogLevel::Info), + } + } +} + fn make_progress_bar(size: u64, target: ProgressDrawTarget) -> ProgressBar { let bar = ProgressBar::with_draw_target(Some(size), target); bar.set_style( ProgressStyle::with_template( - "[{elapsed_precise}] [{bar:40}] {bytes}/{total_bytes} ({bytes_per_sec}, {eta})", + "{elapsed_precise:.white.dim} {wide_bar:.cyan} {bytes}/{total_bytes} ({bytes_per_sec}, {eta})", ) .unwrap() - .progress_chars("#>-"), + .progress_chars("β–ˆβ–‰β–Šβ–‹β–Œβ–β–Žβ– "), ); bar @@ -54,6 +74,7 @@ impl Read for ResponseProgress { impl Drop for ResponseProgress { fn drop(&mut self) { self.finish(); + eprintln!(); } } @@ -139,9 +160,6 @@ mod tests { assert_eq!(size, CONTENT_LENGTH); assert_eq!(buf, "a".repeat(CONTENT_LENGTH).as_bytes()); - assert!(out_buf - .lock() - .unwrap() - .contains(&format!("[{}]", &"#".repeat(40)))); + assert!(out_buf.lock().unwrap().contains(&"β–ˆ".repeat(40))); } } From 098bd52f4750d69d6afa468a928e34b04825bfec Mon Sep 17 00:00:00 2001 From: Gal Schlezinger Date: Mon, 27 May 2024 11:10:19 +0300 Subject: [PATCH 61/66] fix screen recording terminal sizing (#1130) --- .ci/record_screen.sh | 6 +++++- Cargo.lock | 7 +++++++ Cargo.toml | 2 +- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/.ci/record_screen.sh b/.ci/record_screen.sh index 8ee6f412d..5d372febb 100755 --- a/.ci/record_screen.sh +++ b/.ci/record_screen.sh @@ -20,7 +20,11 @@ RECORDING_PATH=$DIRECTORY/screen_recording (rm -rf "$RECORDING_PATH" &> /dev/null || true) -asciinema rec -c "$DIRECTORY/recorded_screen_script.sh" "$RECORDING_PATH" +asciinema rec \ + --command "$DIRECTORY/recorded_screen_script.sh" \ + --cols 70 \ + --rows 17 \ + "$RECORDING_PATH" sed "s@$TEMP_DIR@~@g" "$RECORDING_PATH" | \ svg-term \ --window \ diff --git a/Cargo.lock b/Cargo.lock index 49143d4ad..25ffbd635 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -943,6 +943,7 @@ dependencies = [ "instant", "number_prefix", "portable-atomic", + "unicode-segmentation", "unicode-width", ] @@ -1950,6 +1951,12 @@ dependencies = [ "tinyvec", ] +[[package]] +name = "unicode-segmentation" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" + [[package]] name = "unicode-width" version = "0.1.10" diff --git a/Cargo.toml b/Cargo.toml index 161b4ef72..131ddfca7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -30,7 +30,7 @@ sysinfo = "0.29.3" thiserror = "1.0.44" clap_complete = "4.3.1" anyhow = "1.0.71" -indicatif = "0.17.8" +indicatif = { version = "0.17.8", features = ["improved_unicode"] } [dev-dependencies] pretty_assertions = "1.4.0" From 536fcebee29cf20364c923570a04dab0eca9a134 Mon Sep 17 00:00:00 2001 From: Gal Schlezinger Date: Mon, 27 May 2024 11:23:41 +0300 Subject: [PATCH 62/66] try to fix release script --- .github/workflows/release.yml | 94 +++++++++++++++++------------------ 1 file changed, 46 insertions(+), 48 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index cd4059969..15e353ad7 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -8,54 +8,52 @@ on: concurrency: ${{ github.workflow }}-${{ github.ref }} jobs: - create_pull_request: runs-on: ubuntu-latest steps: - # set up - - uses: actions/checkout@v3 - - - uses: hecrj/setup-rust-action@v1 - with: - rust-version: stable - - - uses: Swatinem/rust-cache@v2 - - - uses: pnpm/action-setup@v2.2.4 - with: - run_install: false - - # pnpm - - uses: actions/setup-node@v3 - with: - node-version: 16.x - cache: 'pnpm' - - - name: Get pnpm store directory - id: pnpm-cache - run: | - echo "::set-output name=pnpm_cache_dir::$(pnpm store path)" - - - uses: actions/cache@v3 - name: Setup pnpm cache - with: - path: ${{ steps.pnpm-cache.outputs.pnpm_cache_dir }} - key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} - restore-keys: | - ${{ runner.os }}-pnpm-store- - - - name: Install script dependencies - run: | - sudo apt-get update - sudo apt-get install -y asciinema - - - name: Install Node.js project dependencies - run: pnpm install - - - name: Create Release Pull Request - uses: changesets/action@v1 - with: - version: "pnpm version:prepare" - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - TERM: xterm + # set up + - uses: actions/checkout@v3 + + - uses: hecrj/setup-rust-action@v1 + with: + rust-version: stable + + - uses: Swatinem/rust-cache@v2 + + - uses: pnpm/action-setup@v2.2.4 + with: + run_install: false + + # pnpm + - uses: actions/setup-node@v3 + with: + node-version: 16.x + cache: "pnpm" + + - name: Get pnpm store directory + id: pnpm-cache + run: | + echo "::set-output name=pnpm_cache_dir::$(pnpm store path)" + + - uses: actions/cache@v3 + name: Setup pnpm cache + with: + path: ${{ steps.pnpm-cache.outputs.pnpm_cache_dir }} + key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} + restore-keys: | + ${{ runner.os }}-pnpm-store- + + - name: Install Asciinema + run: | + pipx install asciinema + + - name: Install Node.js project dependencies + run: pnpm install + + - name: Create Release Pull Request + uses: changesets/action@v1 + with: + version: "pnpm version:prepare" + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + TERM: xterm From 121128f42bc27583c2cf9a77b14f60f456af4a82 Mon Sep 17 00:00:00 2001 From: Ryan Cao <70191398+ryanccn@users.noreply.github.com> Date: Mon, 27 May 2024 17:46:26 +0800 Subject: [PATCH 63/66] feat: add filtering options to `ls-remote` (#1063) * feat: add remote version sorting and filtering * use `UserVersion` for filtering * add additional lts filter * refactor: use `Vec::retain` instead of filtering and collecting * fix docstring for sort option * change docstring for filter argument * refactor vec filtering Co-authored-by: Brennan Kinney <5098581+polarathene@users.noreply.github.com> * refactor to use `sort_by_key` and `reverse` Co-authored-by: Brennan Kinney <5098581+polarathene@users.noreply.github.com> * add latest flag * make filter an option as well * move sort into command as it is presentational * fix getting latest version * refactors * update docs/commands.md * sort upon installation * fix clippy * don't mention rust structs in the cli docs * sort by default * remove leftover temp dir from test --------- Co-authored-by: Brennan Kinney <5098581+polarathene@users.noreply.github.com> Co-authored-by: Gal Schlezinger --- .changeset/fifty-emus-type.md | 5 +++ docs/commands.md | 18 ++++++++++ src/commands/ls_remote.rs | 67 ++++++++++++++++++++++++++++++++--- 3 files changed, 86 insertions(+), 4 deletions(-) create mode 100644 .changeset/fifty-emus-type.md diff --git a/.changeset/fifty-emus-type.md b/.changeset/fifty-emus-type.md new file mode 100644 index 000000000..406a88ae0 --- /dev/null +++ b/.changeset/fifty-emus-type.md @@ -0,0 +1,5 @@ +--- +"fnm": minor +--- + +feat: add remote version sorting and filtering diff --git a/docs/commands.md b/docs/commands.md index 8468c8673..616d520ea 100644 --- a/docs/commands.md +++ b/docs/commands.md @@ -81,6 +81,9 @@ List all remote Node.js versions Usage: fnm list-remote [OPTIONS] Options: + --filter + Filter versions by a user-defined version or a semver range + --node-dist-mirror mirror @@ -92,6 +95,21 @@ Options: [env: FNM_DIR] + --lts [] + Show only LTS versions (optionally filter by LTS codename) + + --sort + Version sorting order + + [default: asc] + + Possible values: + - desc: Sort versions in descending order (latest to earliest) + - asc: Sort versions in ascending order (earliest to latest) + + --latest + Only show the latest matching version + --log-level The log level of fnm commands diff --git a/src/commands/ls_remote.rs b/src/commands/ls_remote.rs index 015b3ac5f..32f744931 100644 --- a/src/commands/ls_remote.rs +++ b/src/commands/ls_remote.rs @@ -1,20 +1,79 @@ use crate::config::FnmConfig; use crate::remote_node_index; +use crate::user_version::UserVersion; + +use colored::Colorize; use thiserror::Error; #[derive(clap::Parser, Debug)] -pub struct LsRemote {} +pub struct LsRemote { + /// Filter versions by a user-defined version or a semver range + #[arg(long)] + filter: Option, + + /// Show only LTS versions (optionally filter by LTS codename) + #[arg(long)] + #[allow(clippy::option_option)] + lts: Option>, + + /// Version sorting order + #[arg(long, default_value = "asc")] + sort: SortingMethod, + + /// Only show the latest matching version + #[arg(long)] + latest: bool, +} + +#[derive(clap::ValueEnum, Clone, Debug, PartialEq)] +pub enum SortingMethod { + #[clap(name = "desc")] + /// Sort versions in descending order (latest to earliest) + Descending, + #[clap(name = "asc")] + /// Sort versions in ascending order (earliest to latest) + Ascending, +} impl super::command::Command for LsRemote { type Error = Error; fn apply(self, config: &FnmConfig) -> Result<(), Self::Error> { - let all_versions = remote_node_index::list(&config.node_dist_mirror)?; + let mut all_versions = remote_node_index::list(&config.node_dist_mirror)?; + + if let Some(lts) = &self.lts { + match lts { + Some(codename) => all_versions.retain(|v| { + v.lts + .as_ref() + .is_some_and(|v_lts| v_lts.eq_ignore_ascii_case(codename)) + }), + None => all_versions.retain(|v| v.lts.is_some()), + }; + } + + if let Some(filter) = &self.filter { + all_versions.retain(|v| filter.matches(&v.version, config)); + } + + if self.latest { + all_versions.truncate(1); + } + + all_versions.sort_by_key(|v| v.version.clone()); + if let SortingMethod::Descending = self.sort { + all_versions.reverse(); + } + + if all_versions.is_empty() { + eprintln!("{}", "No versions were found!".red()); + return Ok(()); + } - for version in all_versions { + for version in &all_versions { print!("{}", version.version); if let Some(lts) = &version.lts { - print!(" ({lts})"); + print!("{}", format!(" ({lts})").cyan()); } println!(); } From 6be23c868f5ddb2a4508a1f302c345298401d674 Mon Sep 17 00:00:00 2001 From: tottoto Date: Mon, 27 May 2024 22:37:53 +0900 Subject: [PATCH 64/66] Disable unused chrono features (#1014) Co-authored-by: Gal Schlezinger --- .changeset/disable-unused-chrono-features.md | 5 ++ Cargo.lock | 80 ++------------------ Cargo.toml | 2 +- 3 files changed, 11 insertions(+), 76 deletions(-) create mode 100644 .changeset/disable-unused-chrono-features.md diff --git a/.changeset/disable-unused-chrono-features.md b/.changeset/disable-unused-chrono-features.md new file mode 100644 index 000000000..77fc2226d --- /dev/null +++ b/.changeset/disable-unused-chrono-features.md @@ -0,0 +1,5 @@ +--- +"fnm": patch +--- + +Disable unused chrono features (#1014) diff --git a/Cargo.lock b/Cargo.lock index 25ffbd635..b7100a3ba 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -52,21 +52,6 @@ dependencies = [ "alloc-no-stdlib", ] -[[package]] -name = "android-tzdata" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" - -[[package]] -name = "android_system_properties" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" -dependencies = [ - "libc", -] - [[package]] name = "anstream" version = "0.3.2" @@ -266,18 +251,12 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chrono" -version = "0.4.26" +version = "0.4.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec837a71355b28f6556dbd569b37b3f363091c0bd4b2e735674521b4c5fd9bc5" +checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" dependencies = [ - "android-tzdata", - "iana-time-zone", - "js-sys", "num-traits", "serde", - "time 0.1.45", - "wasm-bindgen", - "winapi", ] [[package]] @@ -758,7 +737,7 @@ checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" dependencies = [ "cfg-if", "libc", - "wasi 0.11.0+wasi-snapshot-preview1", + "wasi", ] [[package]] @@ -890,29 +869,6 @@ dependencies = [ "tokio-rustls", ] -[[package]] -name = "iana-time-zone" -version = "0.1.57" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fad5b825842d2b38bd206f3e81d6957625fd7f0a361e345c30e01a0ae2dd613" -dependencies = [ - "android_system_properties", - "core-foundation-sys", - "iana-time-zone-haiku", - "js-sys", - "wasm-bindgen", - "windows", -] - -[[package]] -name = "iana-time-zone-haiku" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" -dependencies = [ - "cc", -] - [[package]] name = "idna" version = "0.4.0" @@ -1144,7 +1100,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "927a765cd3fc26206e66b296465fa9d3e5ab003e651c1b3c060e7956d96b19d2" dependencies = [ "libc", - "wasi 0.11.0+wasi-snapshot-preview1", + "wasi", "windows-sys 0.48.0", ] @@ -1800,17 +1756,6 @@ dependencies = [ "syn 2.0.27", ] -[[package]] -name = "time" -version = "0.1.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b797afad3f312d1c66a56d11d0316f916356d11bd158fbc6ca6389ff6bf805a" -dependencies = [ - "libc", - "wasi 0.10.0+wasi-snapshot-preview1", - "winapi", -] - [[package]] name = "time" version = "0.3.22" @@ -2021,12 +1966,6 @@ dependencies = [ "try-lock", ] -[[package]] -name = "wasi" -version = "0.10.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" - [[package]] name = "wasi" version = "0.11.0+wasi-snapshot-preview1" @@ -2159,15 +2098,6 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" -[[package]] -name = "windows" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" -dependencies = [ - "windows-targets 0.48.1", -] - [[package]] name = "windows-sys" version = "0.42.0" @@ -2364,7 +2294,7 @@ dependencies = [ "hmac", "pbkdf2", "sha1", - "time 0.3.22", + "time", "zstd", ] diff --git a/Cargo.toml b/Cargo.toml index 131ddfca7..e3a874c23 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -12,7 +12,7 @@ description = "Fast and simple Node.js version manager" serde = { version = "1.0.166", features = ["derive"] } clap = { version = "4.3.10", features = ["derive", "env"] } serde_json = "1.0.100" -chrono = { version = "0.4.26", features = ["serde"] } +chrono = { version = "0.4.38", features = ["serde", "now"], default-features = false } tar = "0.4.38" xz2 = "0.1.7" node-semver = "2.1.0" From 9ff98da93c69013274322c3a63dfdb1beaf73875 Mon Sep 17 00:00:00 2001 From: Charles Bayley Date: Mon, 27 May 2024 10:28:53 -0400 Subject: [PATCH 65/66] This $PATH should be wrapped in quotes so it will work with spaces (#1066) * This $PATH should be wrapped in quotes so it will work with spaces * patch changeset for 1066 --------- Co-authored-by: Gal Schlezinger --- .changeset/violet-rice-brake.md | 5 +++++ src/shell/bash.rs | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 .changeset/violet-rice-brake.md diff --git a/.changeset/violet-rice-brake.md b/.changeset/violet-rice-brake.md new file mode 100644 index 000000000..e6fb4eb3e --- /dev/null +++ b/.changeset/violet-rice-brake.md @@ -0,0 +1,5 @@ +--- +"fnm": patch +--- + +Fixes a bug when running `eval $(fnm env)` in sh when there a spaces in the $PATH diff --git a/src/shell/bash.rs b/src/shell/bash.rs index 016809e9f..81851e4d2 100644 --- a/src/shell/bash.rs +++ b/src/shell/bash.rs @@ -18,7 +18,7 @@ impl Shell for Bash { .ok_or_else(|| anyhow::anyhow!("Can't convert path to string"))?; let path = super::windows_compat::maybe_fix_windows_path(path).unwrap_or_else(|| path.to_string()); - Ok(format!("export PATH={path:?}:$PATH")) + Ok(format!("export PATH={path:?}:\"$PATH\"")) } fn set_env_var(&self, name: &str, value: &str) -> String { From 1b86087cf197ac8937064d92ac36c7ff57ad01a2 Mon Sep 17 00:00:00 2001 From: Emilio Vesprini <82109173+emivespa@users.noreply.github.com> Date: Mon, 27 May 2024 11:29:27 -0300 Subject: [PATCH 66/66] Check if fnm is installed before shell setup (#937) * Make install.sh tee instead of echoing twice Also, fish bit was the only one that didn't print a newline to $CONF_FILE, now they're all the same. * Check if fnm is installed before shell setup Change $CONF_FILE append strings to check whether $INSTALL_DIR exists before doing any setup. This way whenever a user syncs their shell config across machines, the machines without fnm installed won't throw errors. --------- Co-authored-by: Gal Schlezinger --- .ci/install.sh | 54 +++++++++++++++++++++++++------------------------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/.ci/install.sh b/.ci/install.sh index e86ae7a97..81c2f401b 100755 --- a/.ci/install.sh +++ b/.ci/install.sh @@ -168,29 +168,29 @@ setup_shell() { CONF_FILE=${ZDOTDIR:-$HOME}/.zshrc ensure_containing_dir_exists "$CONF_FILE" echo "Installing for Zsh. Appending the following to $CONF_FILE:" - echo "" - echo ' # fnm' - echo ' export PATH="'"$INSTALL_DIR"':$PATH"' - echo ' eval "`fnm env`"' - - echo '' >>$CONF_FILE - echo '# fnm' >>$CONF_FILE - echo 'export PATH="'$INSTALL_DIR':$PATH"' >>$CONF_FILE - echo 'eval "`fnm env`"' >>$CONF_FILE + { + echo '' + echo '# fnm' + echo 'FNM_PATH="'"$INSTALL_DIR"'"' + echo 'if [ -d "$FNM_PATH" ]; then' + echo ' export PATH="'$INSTALL_DIR':$PATH"' + echo ' eval "`fnm env`"' + echo 'fi' + } | tee -a "$CONF_FILE" elif [ "$CURRENT_SHELL" = "fish" ]; then CONF_FILE=$HOME/.config/fish/conf.d/fnm.fish ensure_containing_dir_exists "$CONF_FILE" echo "Installing for Fish. Appending the following to $CONF_FILE:" - echo "" - echo ' # fnm' - echo ' set PATH "'"$INSTALL_DIR"'" $PATH' - echo ' fnm env | source' - - echo '' >>$CONF_FILE - echo '# fnm' >>$CONF_FILE - echo 'set PATH "'"$INSTALL_DIR"'" $PATH' >>$CONF_FILE - echo 'fnm env | source' >>$CONF_FILE + { + echo '' + echo '# fnm' + echo 'set FNM_PATH "'"$INSTALL_DIR"'"' + echo 'if [ -d "$FNM_PATH" ]' + echo ' set PATH "$FNM_PATH" $PATH' + echo ' fnm env | source' + echo 'end' + } | tee -a "$CONF_FILE" elif [ "$CURRENT_SHELL" = "bash" ]; then if [ "$OS" = "Darwin" ]; then @@ -200,15 +200,15 @@ setup_shell() { fi ensure_containing_dir_exists "$CONF_FILE" echo "Installing for Bash. Appending the following to $CONF_FILE:" - echo "" - echo ' # fnm' - echo ' export PATH="'"$INSTALL_DIR"':$PATH"' - echo ' eval "`fnm env`"' - - echo '' >>$CONF_FILE - echo '# fnm' >>$CONF_FILE - echo 'export PATH="'"$INSTALL_DIR"':$PATH"' >>$CONF_FILE - echo 'eval "`fnm env`"' >>$CONF_FILE + { + echo '' + echo '# fnm' + echo 'FNM_PATH="'"$INSTALL_DIR"'"' + echo 'if [ -d "$FNM_PATH" ]; then' + echo ' export PATH="$FNM_PATH:$PATH"' + echo ' eval "`fnm env`"' + echo 'fi' + } | tee -a "$CONF_FILE" else echo "Could not infer shell type. Please set up manually."