Repository: keithamus/sort-package-json
Pull request #316 (2024-03-29 21:42:40)

Add dual release support
fix: #315



Patch:
diff --git a/.eslintignore b/.eslintignore
new file mode 100644
index 0000000..8d0deb7
--- /dev/null
+++ b/.eslintignore
@@ -0,0 +1,1 @@
+cjs
\ No newline at end of file
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 731ca74..b3b1a6b 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -14,12 +14,8 @@ jobs:
       - name: Setup Node.js
         uses: actions/setup-node@v3
 
-      # https://github.com/bahmutov/npm-install/issues/103#issuecomment-931226602
-      - name: Update NPM
-        run: npm install --global npm
-
       - name: Install dependencies
-        run: npm ci
+        run: npm i
 
       - name: Release
         env:
diff --git a/.gitignore b/.gitignore
index e56d706..e4249e1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,4 @@
 node_modules
 /.nyc_output
-/coverage
+/cjs
+/coverage
\ No newline at end of file
diff --git a/.prettierignore b/.prettierignore
index 23abab4..96c6fff 100644
--- a/.prettierignore
+++ b/.prettierignore
@@ -1,2 +1,3 @@
 .nyc_output/
-tests/snapshots/
+cjs/
+tests/snapshots/
\ No newline at end of file
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..5220040
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2015 Keith Cirkel
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/README.md b/README.md
index e5750f8..2ffc0b8 100644
--- a/README.md
+++ b/README.md
@@ -97,6 +97,12 @@ To read from `stdin` and output the result to `stdout` use the `--stdin` flag.
 $ cat package.json | sort-package-json --stdin
 ```
 
+This can, for instance, be used to generate a diff before changing `package.json`.
+
+```bash
+$ ( PKG="./package.json" ; cat "${PKG?}" | sort-package-json --stdin | diff "${PKG?}" - ; )
+```
+
 ## API
 
 ### Install
diff --git a/cli.js b/cli.js
index 8263ffa..91e63d6 100755
--- a/cli.js
+++ b/cli.js
@@ -1,5 +1,5 @@
 #!/usr/bin/env node
-import { globbySync } from 'globby'
+import { globSync } from 'tinyglobby'
 import fs from 'node:fs'
 import getStdin from 'get-stdin'
 import sortPackageJson from './index.js'
@@ -44,7 +44,7 @@ function sortPackageJsonFile(file, reporter, isCheck) {
 }
 
 function sortPackageJsonFiles(patterns, options) {
-  const files = globbySync(patterns)
+  const files = globSync(patterns)
   const reporter = new Reporter(files, options)
   const { isCheck } = options
 
diff --git a/git-hooks-list_shim.cjs b/git-hooks-list_shim.cjs
new file mode 100644
index 0000000..7a966d2
--- /dev/null
+++ b/git-hooks-list_shim.cjs
@@ -0,0 +1,2 @@
+const gitHooksList = require('git-hooks-list')
+module.exports = gitHooksList
diff --git a/index.d.ts b/index.d.ts
index 561d8ff..694e195 100644
--- a/index.d.ts
+++ b/index.d.ts
@@ -6,7 +6,7 @@ interface Options {
   readonly sortOrder?: readonly string[] | ComparatorFunction
 }
 
-interface SortPackageJson {
+export interface SortPackageJson {
   /**
    * Sort packageJson object.
    *
diff --git a/index.js b/index.js
index 2558022..d5da5e4 100755
--- a/index.js
+++ b/index.js
@@ -3,6 +3,7 @@ import detectIndent from 'detect-indent'
 import { detectNewlineGraceful as detectNewline } from 'detect-newline'
 import gitHooks from 'git-hooks-list'
 import isPlainObject from 'is-plain-obj'
+import semver from 'semver'
 
 const hasOwn =
   Object.hasOwn ||
@@ -54,6 +55,60 @@ const overProperty =
       : object
 const sortGitHooks = sortObjectBy(gitHooks)
 
+const parseNameAndVersionRange = (specifier) => {
+  // Ignore anything after > & rely on fallback alphanumeric sorting for that
+  const [nameAndVersion] = specifier.split('>')
+  const atMatches = [...nameAndVersion.matchAll('@')]
+  if (
+    !atMatches.length ||
+    (atMatches.length === 1 && atMatches[0].index === 0)
+  ) {
+    return { name: specifier }
+  }
+  const splitIndex = atMatches.pop().index
+  return {
+    name: nameAndVersion.substring(0, splitIndex),
+    range: nameAndVersion.substring(splitIndex + 1),
+  }
+}
+
+const sortObjectBySemver = sortObjectBy((a, b) => {
+  const { name: aName, range: aRange } = parseNameAndVersionRange(a)
+  const { name: bName, range: bRange } = parseNameAndVersionRange(b)
+
+  if (aName !== bName) {
+    return aName.localeCompare(bName, 'en')
+  }
+  if (!aRange) {
+    return -1
+  }
+  if (!bRange) {
+    return 1
+  }
+  return semver.compare(semver.minVersion(aRange), semver.minVersion(bRange))
+})
+
+const getPackageName = (ident) => {
+  const parts = ident.split('@')
+
+  if (ident.startsWith('@')) {
+    // Handle cases where package name starts with '@'
+    return parts.length > 2 ? parts.slice(0, -1).join('@') : ident
+  }
+
+  // Handle cases where package name doesn't start with '@'
+  return parts.length > 1 ? parts.slice(0, -1).join('@') : ident
+}
+
+const sortObjectByIdent = (a, b) => {
+  const PackageNameA = getPackageName(a)
+  const PackageNameB = getPackageName(b)
+
+  if (PackageNameA < PackageNameB) return -1
+  if (PackageNameA > PackageNameB) return 1
+  return 0
+}
+
 // https://github.com/eslint/eslint/blob/acc0e47572a9390292b4e313b4a4bf360d236358/conf/config-schema.js
 const eslintBaseConfigProperties = [
   // `files` and `excludedFiles` are only on `overrides[]`
@@ -128,6 +183,29 @@ const sortPrettierConfig = onObject(
 
 const sortVolta = sortObjectBy(['node', 'npm', 'yarn'])
 
+const pnpmBaseConfigProperties = [
+  'peerDependencyRules',
+  'neverBuiltDependencies',
+  'onlyBuiltDependencies',
+  'onlyBuiltDependenciesFile',
+  'allowedDeprecatedVersions',
+  'allowNonAppliedPatches',
+  'updateConfig',
+  'auditConfig',
+  'requiredScripts',
+  'supportedArchitectures',
+  'overrides',
+  'patchedDependencies',
+  'packageExtensions',
+]
+
+const sortPnpmConfig = onObject(
+  pipe([
+    sortObjectBy(pnpmBaseConfigProperties, true),
+    overProperty('overrides', sortObjectBySemver),
+  ]),
+)
+
 // See https://docs.npmjs.com/misc/scripts
 const defaultNpmScripts = new Set([
   'install',
@@ -285,7 +363,7 @@ const fields = [
   { key: 'resolutions', over: sortObject },
   { key: 'dependencies', over: sortObject },
   { key: 'devDependencies', over: sortObject },
-  { key: 'dependenciesMeta', over: sortObjectBy(undefined, true) },
+  { key: 'dependenciesMeta', over: sortObjectBy(sortObjectByIdent, true) },
   { key: 'peerDependencies', over: sortObject },
   // TODO: only sort depth = 2
   { key: 'peerDependenciesMeta', over: sortObjectBy(undefined, true) },
@@ -312,7 +390,7 @@ const fields = [
   /* vscode */ { key: 'galleryBanner', over: sortObject },
   /* vscode */ { key: 'preview' },
   /* vscode */ { key: 'markdown' },
-  { key: 'pnpm', over: sortObjectBy(undefined, true) },
+  { key: 'pnpm', over: sortPnpmConfig },
 ]
 
 const defaultSortOrder = fields.map(({ key }) => key)
@@ -324,12 +402,14 @@ const overFields = pipe(
 
 function editStringJSON(json, over) {
   if (typeof json === 'string') {
-    const { indent } = detectIndent(json)
+    const { indent, type } = detectIndent(json)
     const endCharacters = json.slice(-1) === '\n' ? '\n' : ''
     const newline = detectNewline(json)
     json = JSON.parse(json)
 
-    let result = JSON.stringify(over(json), null, indent) + endCharacters
+    let result =
+      JSON.stringify(over(json), null, type === 'tab' ? '\t' : indent) +
+      endCharacters
     if (newline === '\r\n') {
       result = result.replace(/\n/g, newline)
     }
diff --git a/package-lock.json b/package-lock.json
index a55696f..764b2a0 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -13,9 +13,10 @@
         "detect-newline": "^4.0.0",
         "get-stdin": "^9.0.0",
         "git-hooks-list": "^3.0.0",
-        "globby": "^13.1.2",
         "is-plain-obj": "^4.1.0",
-        "sort-object-keys": "^1.1.3"
+        "semver": "^7.6.0",
+        "sort-object-keys": "^1.1.3",
+        "tinyglobby": "^0.2.9"
       },
       "bin": {
         "sort-package-json": "cli.js"
@@ -27,6 +28,7 @@
         "del": "^7.0.0",
         "dot-prop": "^7.2.0",
         "dtslint": "^4.2.1",
+        "esbuild": "^0.20.2",
         "eslint": "^8.24.0",
         "eslint-config-prettier": "^8.5.0",
         "eslint-config-standard": "^17.0.0",
@@ -37,6 +39,7 @@
         "husky": "^8.0.1",
         "lint-staged": "^13.0.3",
         "make-dir": "^3.1.0",
+        "ncp": "^2.0.0",
         "nyc": "^15.1.0",
         "prettier": "^2.7.1",
         "resolve": "^1.22.1",
@@ -109,6 +112,15 @@
         "url": "https://opencollective.com/babel"
       }
     },
+    "node_modules/@babel/core/node_modules/semver": {
+      "version": "6.3.1",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+      "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+      "dev": true,
+      "bin": {
+        "semver": "bin/semver.js"
+      }
+    },
     "node_modules/@babel/generator": {
       "version": "7.23.6",
       "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz",
@@ -152,6 +164,15 @@
         "@babel/core": "^7.0.0"
       }
     },
+    "node_modules/@babel/helper-compilation-targets/node_modules/semver": {
+      "version": "6.3.1",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+      "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+      "dev": true,
+      "bin": {
+        "semver": "bin/semver.js"
+      }
+    },
     "node_modules/@babel/helper-environment-visitor": {
       "version": "7.22.20",
       "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz",
@@ -1004,6 +1025,374 @@
         "node": ">=6 <7 || >=8"
       }
     },
+    "node_modules/@esbuild/aix-ppc64": {
+      "version": "0.20.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz",
+      "integrity": "sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==",
+      "cpu": [
+        "ppc64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "aix"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/android-arm": {
+      "version": "0.20.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.20.2.tgz",
+      "integrity": "sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==",
+      "cpu": [
+        "arm"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "android"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/android-arm64": {
+      "version": "0.20.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.20.2.tgz",
+      "integrity": "sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "android"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/android-x64": {
+      "version": "0.20.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.20.2.tgz",
+      "integrity": "sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "android"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/darwin-arm64": {
+      "version": "0.20.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.20.2.tgz",
+      "integrity": "sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "darwin"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/darwin-x64": {
+      "version": "0.20.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.20.2.tgz",
+      "integrity": "sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "darwin"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/freebsd-arm64": {
+      "version": "0.20.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.2.tgz",
+      "integrity": "sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "freebsd"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/freebsd-x64": {
+      "version": "0.20.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.20.2.tgz",
+      "integrity": "sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "freebsd"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/linux-arm": {
+      "version": "0.20.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.20.2.tgz",
+      "integrity": "sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==",
+      "cpu": [
+        "arm"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/linux-arm64": {
+      "version": "0.20.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.20.2.tgz",
+      "integrity": "sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/linux-ia32": {
+      "version": "0.20.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.20.2.tgz",
+      "integrity": "sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==",
+      "cpu": [
+        "ia32"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/linux-loong64": {
+      "version": "0.20.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.20.2.tgz",
+      "integrity": "sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==",
+      "cpu": [
+        "loong64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/linux-mips64el": {
+      "version": "0.20.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.20.2.tgz",
+      "integrity": "sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==",
+      "cpu": [
+        "mips64el"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/linux-ppc64": {
+      "version": "0.20.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.20.2.tgz",
+      "integrity": "sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==",
+      "cpu": [
+        "ppc64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/linux-riscv64": {
+      "version": "0.20.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.20.2.tgz",
+      "integrity": "sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==",
+      "cpu": [
+        "riscv64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/linux-s390x": {
+      "version": "0.20.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.20.2.tgz",
+      "integrity": "sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==",
+      "cpu": [
+        "s390x"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/linux-x64": {
+      "version": "0.20.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.20.2.tgz",
+      "integrity": "sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/netbsd-x64": {
+      "version": "0.20.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.20.2.tgz",
+      "integrity": "sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "netbsd"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/openbsd-x64": {
+      "version": "0.20.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.20.2.tgz",
+      "integrity": "sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "openbsd"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/sunos-x64": {
+      "version": "0.20.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.20.2.tgz",
+      "integrity": "sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "sunos"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/win32-arm64": {
+      "version": "0.20.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.20.2.tgz",
+      "integrity": "sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "win32"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/win32-ia32": {
+      "version": "0.20.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.20.2.tgz",
+      "integrity": "sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==",
+      "cpu": [
+        "ia32"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "win32"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/win32-x64": {
+      "version": "0.20.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz",
+      "integrity": "sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "win32"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
     "node_modules/@eslint/eslintrc": {
       "version": "1.3.2",
       "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.2.tgz",
@@ -1199,6 +1588,7 @@
       "version": "2.1.5",
       "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
       "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+      "dev": true,
       "dependencies": {
         "@nodelib/fs.stat": "2.0.5",
         "run-parallel": "^1.1.9"
@@ -1211,6 +1601,7 @@
       "version": "2.0.5",
       "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
       "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
+      "dev": true,
       "engines": {
         "node": ">= 8"
       }
@@ -1219,6 +1610,7 @@
       "version": "1.2.8",
       "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
       "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+      "dev": true,
       "dependencies": {
         "@nodelib/fs.scandir": "2.1.5",
         "fastq": "^1.6.0"
@@ -1381,21 +1773,6 @@
         "npmlog": "2 || ^3.1.0 || ^4.0.0"
       }
     },
-    "node_modules/@qiwi/npm-registry-client/node_modules/semver": {
-      "version": "7.3.7",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz",
-      "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==",
-      "dev": true,
-      "dependencies": {
-        "lru-cache": "^6.0.0"
-      },
-      "bin": {
-        "semver": "bin/semver.js"
-      },
-      "engines": {
-        "node": ">=10"
-      }
-    },
     "node_modules/@semantic-release/commit-analyzer": {
       "version": "9.0.2",
       "resolved": "https://registry.npmjs.org/@semantic-release/commit-analyzer/-/commit-analyzer-9.0.2.tgz",
@@ -1731,21 +2108,6 @@
         "url": "https://github.com/sponsors/isaacs"
       }
     },
-    "node_modules/@semantic-release/npm/node_modules/semver": {
-      "version": "7.3.5",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
-      "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
-      "dev": true,
-      "dependencies": {
-        "lru-cache": "^6.0.0"
-      },
-      "bin": {
-        "semver": "bin/semver.js"
-      },
-      "engines": {
-        "node": ">=10"
-      }
-    },
     "node_modules/@semantic-release/npm/node_modules/tempy": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/tempy/-/tempy-1.0.1.tgz",
@@ -2627,11 +2989,12 @@
       }
     },
     "node_modules/braces": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
-      "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+      "version": "3.0.3",
+      "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
+      "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
+      "dev": true,
       "dependencies": {
-        "fill-range": "^7.0.1"
+        "fill-range": "^7.1.1"
       },
       "engines": {
         "node": ">=8"
@@ -2714,21 +3077,6 @@
         "semver": "^7.0.0"
       }
     },
-    "node_modules/builtins/node_modules/semver": {
-      "version": "7.3.7",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz",
-      "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==",
-      "dev": true,
-      "dependencies": {
-        "lru-cache": "^6.0.0"
-      },
-      "bin": {
-        "semver": "bin/semver.js"
-      },
-      "engines": {
-        "node": ">=10"
-      }
-    },
     "node_modules/caching-transform": {
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz",
@@ -3287,21 +3635,6 @@
         "node": ">=10.18.0 <11 || >=12.14.0 <13 || >=14"
       }
     },
-    "node_modules/concordance/node_modules/semver": {
-      "version": "7.3.5",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
-      "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
-      "dev": true,
-      "dependencies": {
-        "lru-cache": "^6.0.0"
-      },
-      "bin": {
-        "semver": "bin/semver.js"
-      },
-      "engines": {
-        "node": ">=10"
-      }
-    },
     "node_modules/console-control-strings": {
       "version": "1.1.0",
       "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
@@ -3359,6 +3692,15 @@
         "node": ">=10"
       }
     },
+    "node_modules/conventional-changelog-writer/node_modules/semver": {
+      "version": "6.3.1",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+      "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+      "dev": true,
+      "bin": {
+        "semver": "bin/semver.js"
+      }
+    },
     "node_modules/conventional-commits-filter": {
       "version": "2.0.7",
       "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-2.0.7.tgz",
@@ -3769,6 +4111,7 @@
       "version": "3.0.1",
       "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
       "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
+      "dev": true,
       "dependencies": {
         "path-type": "^4.0.0"
       },
@@ -3918,6 +4261,15 @@
         "url": "https://github.com/sponsors/isaacs"
       }
     },
+    "node_modules/dts-critic/node_modules/semver": {
+      "version": "6.3.1",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+      "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+      "dev": true,
+      "bin": {
+        "semver": "bin/semver.js"
+      }
+    },
     "node_modules/dts-critic/node_modules/string-width": {
       "version": "4.2.3",
       "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
@@ -4357,6 +4709,44 @@
       "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==",
       "dev": true
     },
+    "node_modules/esbuild": {
+      "version": "0.20.2",
+      "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.2.tgz",
+      "integrity": "sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==",
+      "dev": true,
+      "hasInstallScript": true,
+      "bin": {
+        "esbuild": "bin/esbuild"
+      },
+      "engines": {
+        "node": ">=12"
+      },
+      "optionalDependencies": {
+        "@esbuild/aix-ppc64": "0.20.2",
+        "@esbuild/android-arm": "0.20.2",
+        "@esbuild/android-arm64": "0.20.2",
+        "@esbuild/android-x64": "0.20.2",
+        "@esbuild/darwin-arm64": "0.20.2",
+        "@esbuild/darwin-x64": "0.20.2",
+        "@esbuild/freebsd-arm64": "0.20.2",
+        "@esbuild/freebsd-x64": "0.20.2",
+        "@esbuild/linux-arm": "0.20.2",
+        "@esbuild/linux-arm64": "0.20.2",
+        "@esbuild/linux-ia32": "0.20.2",
+        "@esbuild/linux-loong64": "0.20.2",
+        "@esbuild/linux-mips64el": "0.20.2",
+        "@esbuild/linux-ppc64": "0.20.2",
+        "@esbuild/linux-riscv64": "0.20.2",
+        "@esbuild/linux-s390x": "0.20.2",
+        "@esbuild/linux-x64": "0.20.2",
+        "@esbuild/netbsd-x64": "0.20.2",
+        "@esbuild/openbsd-x64": "0.20.2",
+        "@esbuild/sunos-x64": "0.20.2",
+        "@esbuild/win32-arm64": "0.20.2",
+        "@esbuild/win32-ia32": "0.20.2",
+        "@esbuild/win32-x64": "0.20.2"
+      }
+    },
     "node_modules/escalade": {
       "version": "3.1.1",
       "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
@@ -4699,21 +5089,6 @@
         "eslint": ">=7.0.0"
       }
     },
-    "node_modules/eslint-plugin-n/node_modules/semver": {
-      "version": "7.3.7",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz",
-      "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==",
-      "dev": true,
-      "dependencies": {
-        "lru-cache": "^6.0.0"
-      },
-      "bin": {
-        "semver": "bin/semver.js"
-      },
-      "engines": {
-        "node": ">=10"
-      }
-    },
     "node_modules/eslint-plugin-prettier": {
       "version": "4.2.1",
       "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz",
@@ -5191,6 +5566,7 @@
       "version": "3.2.11",
       "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz",
       "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==",
+      "dev": true,
       "dependencies": {
         "@nodelib/fs.stat": "^2.0.2",
         "@nodelib/fs.walk": "^1.2.3",
@@ -5218,6 +5594,7 @@
       "version": "1.13.0",
       "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz",
       "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==",
+      "dev": true,
       "dependencies": {
         "reusify": "^1.0.4"
       }
@@ -5263,9 +5640,10 @@
       }
     },
     "node_modules/fill-range": {
-      "version": "7.0.1",
-      "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
-      "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+      "version": "7.1.1",
+      "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
+      "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
+      "dev": true,
       "dependencies": {
         "to-regex-range": "^5.0.1"
       },
@@ -5495,6 +5873,20 @@
       "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
       "dev": true
     },
+    "node_modules/fsevents": {
+      "version": "2.3.3",
+      "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+      "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+      "dev": true,
+      "hasInstallScript": true,
+      "optional": true,
+      "os": [
+        "darwin"
+      ],
+      "engines": {
+        "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+      }
+    },
     "node_modules/fstream": {
       "version": "1.0.12",
       "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz",
@@ -5787,6 +6179,7 @@
       "version": "5.1.2",
       "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
       "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+      "dev": true,
       "dependencies": {
         "is-glob": "^4.0.1"
       },
@@ -5825,6 +6218,7 @@
       "version": "13.1.2",
       "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.2.tgz",
       "integrity": "sha512-LKSDZXToac40u8Q1PQtZihbNdTYSNMuWe+K5l+oa6KgDzSvVrHXlJy40hUP522RjAIoNLJYBJi7ow+rbFpIhHQ==",
+      "dev": true,
       "dependencies": {
         "dir-glob": "^3.0.1",
         "fast-glob": "^3.2.11",
@@ -5843,6 +6237,7 @@
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz",
       "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==",
+      "dev": true,
       "engines": {
         "node": ">=12"
       },
@@ -6173,6 +6568,7 @@
       "version": "5.2.0",
       "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz",
       "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==",
+      "dev": true,
       "engines": {
         "node": ">= 4"
       }
@@ -6400,6 +6796,7 @@
       "version": "2.1.1",
       "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
       "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
+      "dev": true,
       "engines": {
         "node": ">=0.10.0"
       }
@@ -6420,6 +6817,7 @@
       "version": "4.0.3",
       "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
       "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+      "dev": true,
       "dependencies": {
         "is-extglob": "^2.1.1"
       },
@@ -6443,6 +6841,7 @@
       "version": "7.0.0",
       "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
       "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+      "dev": true,
       "engines": {
         "node": ">=0.12.0"
       }
@@ -6712,6 +7111,15 @@
         "node": ">=8"
       }
     },
+    "node_modules/istanbul-lib-instrument/node_modules/semver": {
+      "version": "6.3.1",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+      "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+      "dev": true,
+      "bin": {
+        "semver": "bin/semver.js"
+      }
+    },
     "node_modules/istanbul-lib-processinfo": {
       "version": "2.0.2",
       "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.2.tgz",
@@ -7606,7 +8014,6 @@
       "version": "6.0.0",
       "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
       "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
-      "dev": true,
       "dependencies": {
         "yallist": "^4.0.0"
       },
@@ -7629,6 +8036,15 @@
         "url": "https://github.com/sponsors/sindresorhus"
       }
     },
+    "node_modules/make-dir/node_modules/semver": {
+      "version": "6.3.1",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+      "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+      "dev": true,
+      "bin": {
+        "semver": "bin/semver.js"
+      }
+    },
     "node_modules/make-error": {
       "version": "1.3.6",
       "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz",
@@ -7832,16 +8248,18 @@
       "version": "1.4.1",
       "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
       "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+      "dev": true,
       "engines": {
         "node": ">= 8"
       }
     },
     "node_modules/micromatch": {
-      "version": "4.0.5",
-      "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
-      "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
+      "version": "4.0.8",
+      "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
+      "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
+      "dev": true,
       "dependencies": {
-        "braces": "^3.0.2",
+        "braces": "^3.0.3",
         "picomatch": "^2.3.1"
       },
       "engines": {
@@ -8010,6 +8428,15 @@
       "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
       "dev": true
     },
+    "node_modules/ncp": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz",
+      "integrity": "sha512-zIdGUrPRFTUELUvr3Gmc7KZ2Sw/h1PiVM0Af/oHB6zgnV1ikqSfRk+TOufi79aHYCW3NiOXmr1BP5nWbzojLaA==",
+      "dev": true,
+      "bin": {
+        "ncp": "bin/ncp"
+      }
+    },
     "node_modules/neo-async": {
       "version": "2.6.2",
       "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
@@ -8093,21 +8520,6 @@
         "node": ">=10"
       }
     },
-    "node_modules/normalize-package-data/node_modules/semver": {
-      "version": "7.3.5",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
-      "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
-      "dev": true,
-      "dependencies": {
-        "lru-cache": "^6.0.0"
-      },
-      "bin": {
-        "semver": "bin/semver.js"
-      },
-      "engines": {
-        "node": ">=10"
-      }
-    },
     "node_modules/normalize-path": {
       "version": "3.0.0",
       "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
@@ -8308,21 +8720,6 @@
         "node": ">=10"
       }
     },
-    "node_modules/npm-package-arg/node_modules/semver": {
-      "version": "7.3.7",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz",
-      "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==",
-      "dev": true,
-      "dependencies": {
-        "lru-cache": "^6.0.0"
-      },
-      "bin": {
-        "semver": "bin/semver.js"
-      },
-      "engines": {
-        "node": ">=10"
-      }
-    },
     "node_modules/npm-run-path": {
       "version": "4.0.1",
       "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
@@ -11391,6 +11788,7 @@
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
       "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
+      "dev": true,
       "engines": {
         "node": ">=8"
       }
@@ -11411,6 +11809,7 @@
       "version": "2.3.1",
       "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
       "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+      "dev": true,
       "engines": {
         "node": ">=8.6"
       },
@@ -11647,6 +12046,7 @@
       "version": "1.2.3",
       "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
       "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
+      "dev": true,
       "funding": [
         {
           "type": "github",
@@ -12006,6 +12406,7 @@
       "version": "1.0.4",
       "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
       "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
+      "dev": true,
       "engines": {
         "iojs": ">=1.0.0",
         "node": ">=0.10.0"
@@ -12033,6 +12434,7 @@
       "version": "1.2.0",
       "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
       "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
+      "dev": true,
       "funding": [
         {
           "type": "github",
@@ -12198,21 +12600,6 @@
         "node": ">=8"
       }
     },
-    "node_modules/semantic-release/node_modules/semver": {
-      "version": "7.3.5",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
-      "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
-      "dev": true,
-      "dependencies": {
-        "lru-cache": "^6.0.0"
-      },
-      "bin": {
-        "semver": "bin/semver.js"
-      },
-      "engines": {
-        "node": ">=10"
-      }
-    },
     "node_modules/semantic-release/node_modules/string-width": {
       "version": "4.2.3",
       "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
@@ -12258,12 +12645,17 @@
       }
     },
     "node_modules/semver": {
-      "version": "6.3.0",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
-      "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
-      "dev": true,
+      "version": "7.6.0",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
+      "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
+      "dependencies": {
+        "lru-cache": "^6.0.0"
+      },
       "bin": {
         "semver": "bin/semver.js"
+      },
+      "engines": {
+        "node": ">=10"
       }
     },
     "node_modules/semver-diff": {
@@ -12278,6 +12670,15 @@
         "node": ">=8"
       }
     },
+    "node_modules/semver-diff/node_modules/semver": {
+      "version": "6.3.1",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+      "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+      "dev": true,
+      "bin": {
+        "semver": "bin/semver.js"
+      }
+    },
     "node_modules/semver-regex": {
       "version": "3.1.4",
       "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-3.1.4.tgz",
@@ -13182,6 +13583,45 @@
         "node": ">=4"
       }
     },
+    "node_modules/tinyglobby": {
+      "version": "0.2.9",
+      "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.9.tgz",
+      "integrity": "sha512-8or1+BGEdk1Zkkw2ii16qSS7uVrQJPre5A9o/XkWPATkk23FZh/15BKFxPnlTy6vkljZxLqYCzzBMj30ZrSvjw==",
+      "license": "MIT",
+      "dependencies": {
+        "fdir": "^6.4.0",
+        "picomatch": "^4.0.2"
+      },
+      "engines": {
+        "node": ">=12.0.0"
+      }
+    },
+    "node_modules/tinyglobby/node_modules/fdir": {
+      "version": "6.4.0",
+      "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.0.tgz",
+      "integrity": "sha512-3oB133prH1o4j/L5lLW7uOCF1PlD+/It2L0eL/iAqWMB91RBbqTewABqxhj0ibBd90EEmWZq7ntIWzVaWcXTGQ==",
+      "license": "MIT",
+      "peerDependencies": {
+        "picomatch": "^3 || ^4"
+      },
+      "peerDependenciesMeta": {
+        "picomatch": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/tinyglobby/node_modules/picomatch": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz",
+      "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=12"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/jonschlinkert"
+      }
+    },
     "node_modules/tmp": {
       "version": "0.2.1",
       "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz",
@@ -13222,6 +13662,7 @@
       "version": "5.0.1",
       "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
       "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+      "dev": true,
       "dependencies": {
         "is-number": "^7.0.0"
       },
@@ -13909,8 +14350,7 @@
     "node_modules/yallist": {
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
-      "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
-      "dev": true
+      "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
     },
     "node_modules/yaml": {
       "version": "1.10.2",
@@ -14076,6 +14516,14 @@
         "gensync": "^1.0.0-beta.2",
         "json5": "^2.1.2",
         "semver": "^6.3.0"
+      },
+      "dependencies": {
+        "semver": {
+          "version": "6.3.1",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+          "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+          "dev": true
+        }
       }
     },
     "@babel/generator": {
@@ -14112,6 +14560,14 @@
         "@babel/helper-validator-option": "^7.16.7",
         "browserslist": "^4.17.5",
         "semver": "^6.3.0"
+      },
+      "dependencies": {
+        "semver": {
+          "version": "6.3.1",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+          "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+          "dev": true
+        }
       }
     },
     "@babel/helper-environment-visitor": {
@@ -14761,6 +15217,167 @@
         }
       }
     },
+    "@esbuild/aix-ppc64": {
+      "version": "0.20.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz",
+      "integrity": "sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/android-arm": {
+      "version": "0.20.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.20.2.tgz",
+      "integrity": "sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/android-arm64": {
+      "version": "0.20.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.20.2.tgz",
+      "integrity": "sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/android-x64": {
+      "version": "0.20.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.20.2.tgz",
+      "integrity": "sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/darwin-arm64": {
+      "version": "0.20.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.20.2.tgz",
+      "integrity": "sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/darwin-x64": {
+      "version": "0.20.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.20.2.tgz",
+      "integrity": "sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/freebsd-arm64": {
+      "version": "0.20.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.2.tgz",
+      "integrity": "sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/freebsd-x64": {
+      "version": "0.20.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.20.2.tgz",
+      "integrity": "sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/linux-arm": {
+      "version": "0.20.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.20.2.tgz",
+      "integrity": "sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/linux-arm64": {
+      "version": "0.20.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.20.2.tgz",
+      "integrity": "sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/linux-ia32": {
+      "version": "0.20.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.20.2.tgz",
+      "integrity": "sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/linux-loong64": {
+      "version": "0.20.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.20.2.tgz",
+      "integrity": "sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/linux-mips64el": {
+      "version": "0.20.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.20.2.tgz",
+      "integrity": "sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/linux-ppc64": {
+      "version": "0.20.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.20.2.tgz",
+      "integrity": "sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/linux-riscv64": {
+      "version": "0.20.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.20.2.tgz",
+      "integrity": "sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/linux-s390x": {
+      "version": "0.20.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.20.2.tgz",
+      "integrity": "sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/linux-x64": {
+      "version": "0.20.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.20.2.tgz",
+      "integrity": "sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/netbsd-x64": {
+      "version": "0.20.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.20.2.tgz",
+      "integrity": "sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/openbsd-x64": {
+      "version": "0.20.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.20.2.tgz",
+      "integrity": "sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/sunos-x64": {
+      "version": "0.20.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.20.2.tgz",
+      "integrity": "sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/win32-arm64": {
+      "version": "0.20.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.20.2.tgz",
+      "integrity": "sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/win32-ia32": {
+      "version": "0.20.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.20.2.tgz",
+      "integrity": "sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/win32-x64": {
+      "version": "0.20.2",
+      "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz",
+      "integrity": "sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==",
+      "dev": true,
+      "optional": true
+    },
     "@eslint/eslintrc": {
       "version": "1.3.2",
       "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.2.tgz",
@@ -14910,6 +15527,7 @@
       "version": "2.1.5",
       "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
       "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+      "dev": true,
       "requires": {
         "@nodelib/fs.stat": "2.0.5",
         "run-parallel": "^1.1.9"
@@ -14918,12 +15536,14 @@
     "@nodelib/fs.stat": {
       "version": "2.0.5",
       "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
-      "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A=="
+      "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
+      "dev": true
     },
     "@nodelib/fs.walk": {
       "version": "1.2.8",
       "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
       "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+      "dev": true,
       "requires": {
         "@nodelib/fs.scandir": "2.1.5",
         "fastq": "^1.6.0"
@@ -15071,17 +15691,6 @@
         "semver": "2 >=2.2.1 || 3.x || 4 || 5 || 7",
         "slide": "^1.1.6",
         "ssri": "^8.0.0"
-      },
-      "dependencies": {
-        "semver": {
-          "version": "7.3.7",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz",
-          "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==",
-          "dev": true,
-          "requires": {
-            "lru-cache": "^6.0.0"
-          }
-        }
       }
     },
     "@semantic-release/commit-analyzer": {
@@ -15330,15 +15939,6 @@
             "glob": "^7.1.3"
           }
         },
-        "semver": {
-          "version": "7.3.5",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
-          "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
-          "dev": true,
-          "requires": {
-            "lru-cache": "^6.0.0"
-          }
-        },
         "tempy": {
           "version": "1.0.1",
           "resolved": "https://registry.npmjs.org/tempy/-/tempy-1.0.1.tgz",
@@ -16025,11 +16625,12 @@
       }
     },
     "braces": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
-      "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+      "version": "3.0.3",
+      "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
+      "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
+      "dev": true,
       "requires": {
-        "fill-range": "^7.0.1"
+        "fill-range": "^7.1.1"
       }
     },
     "browserslist": {
@@ -16074,17 +16675,6 @@
       "dev": true,
       "requires": {
         "semver": "^7.0.0"
-      },
-      "dependencies": {
-        "semver": {
-          "version": "7.3.7",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz",
-          "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==",
-          "dev": true,
-          "requires": {
-            "lru-cache": "^6.0.0"
-          }
-        }
       }
     },
     "caching-transform": {
@@ -16521,17 +17111,6 @@
         "md5-hex": "^3.0.1",
         "semver": "^7.3.2",
         "well-known-symbols": "^2.0.0"
-      },
-      "dependencies": {
-        "semver": {
-          "version": "7.3.5",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
-          "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
-          "dev": true,
-          "requires": {
-            "lru-cache": "^6.0.0"
-          }
-        }
       }
     },
     "console-control-strings": {
@@ -16577,6 +17156,14 @@
         "semver": "^6.0.0",
         "split": "^1.0.0",
         "through2": "^4.0.0"
+      },
+      "dependencies": {
+        "semver": {
+          "version": "6.3.1",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+          "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+          "dev": true
+        }
       }
     },
     "conventional-commits-filter": {
@@ -16882,6 +17469,7 @@
       "version": "3.0.1",
       "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
       "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
+      "dev": true,
       "requires": {
         "path-type": "^4.0.0"
       }
@@ -16988,6 +17576,12 @@
             "glob": "^7.1.3"
           }
         },
+        "semver": {
+          "version": "6.3.1",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+          "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+          "dev": true
+        },
         "string-width": {
           "version": "4.2.3",
           "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
@@ -17355,6 +17949,37 @@
       "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==",
       "dev": true
     },
+    "esbuild": {
+      "version": "0.20.2",
+      "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.2.tgz",
+      "integrity": "sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==",
+      "dev": true,
+      "requires": {
+        "@esbuild/aix-ppc64": "0.20.2",
+        "@esbuild/android-arm": "0.20.2",
+        "@esbuild/android-arm64": "0.20.2",
+        "@esbuild/android-x64": "0.20.2",
+        "@esbuild/darwin-arm64": "0.20.2",
+        "@esbuild/darwin-x64": "0.20.2",
+        "@esbuild/freebsd-arm64": "0.20.2",
+        "@esbuild/freebsd-x64": "0.20.2",
+        "@esbuild/linux-arm": "0.20.2",
+        "@esbuild/linux-arm64": "0.20.2",
+        "@esbuild/linux-ia32": "0.20.2",
+        "@esbuild/linux-loong64": "0.20.2",
+        "@esbuild/linux-mips64el": "0.20.2",
+        "@esbuild/linux-ppc64": "0.20.2",
+        "@esbuild/linux-riscv64": "0.20.2",
+        "@esbuild/linux-s390x": "0.20.2",
+        "@esbuild/linux-x64": "0.20.2",
+        "@esbuild/netbsd-x64": "0.20.2",
+        "@esbuild/openbsd-x64": "0.20.2",
+        "@esbuild/sunos-x64": "0.20.2",
+        "@esbuild/win32-arm64": "0.20.2",
+        "@esbuild/win32-ia32": "0.20.2",
+        "@esbuild/win32-x64": "0.20.2"
+      }
+    },
     "escalade": {
       "version": "3.1.1",
       "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
@@ -17790,17 +18415,6 @@
         "minimatch": "^3.1.2",
         "resolve": "^1.22.1",
         "semver": "^7.3.7"
-      },
-      "dependencies": {
-        "semver": {
-          "version": "7.3.7",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz",
-          "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==",
-          "dev": true,
-          "requires": {
-            "lru-cache": "^6.0.0"
-          }
-        }
       }
     },
     "eslint-plugin-prettier": {
@@ -17944,6 +18558,7 @@
       "version": "3.2.11",
       "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz",
       "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==",
+      "dev": true,
       "requires": {
         "@nodelib/fs.stat": "^2.0.2",
         "@nodelib/fs.walk": "^1.2.3",
@@ -17968,6 +18583,7 @@
       "version": "1.13.0",
       "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz",
       "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==",
+      "dev": true,
       "requires": {
         "reusify": "^1.0.4"
       }
@@ -18000,9 +18616,10 @@
       }
     },
     "fill-range": {
-      "version": "7.0.1",
-      "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
-      "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+      "version": "7.1.1",
+      "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
+      "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
+      "dev": true,
       "requires": {
         "to-regex-range": "^5.0.1"
       }
@@ -18182,6 +18799,13 @@
       "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
       "dev": true
     },
+    "fsevents": {
+      "version": "2.3.3",
+      "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+      "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+      "dev": true,
+      "optional": true
+    },
     "fstream": {
       "version": "1.0.12",
       "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz",
@@ -18418,6 +19042,7 @@
       "version": "5.1.2",
       "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
       "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+      "dev": true,
       "requires": {
         "is-glob": "^4.0.1"
       }
@@ -18444,6 +19069,7 @@
       "version": "13.1.2",
       "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.2.tgz",
       "integrity": "sha512-LKSDZXToac40u8Q1PQtZihbNdTYSNMuWe+K5l+oa6KgDzSvVrHXlJy40hUP522RjAIoNLJYBJi7ow+rbFpIhHQ==",
+      "dev": true,
       "requires": {
         "dir-glob": "^3.0.1",
         "fast-glob": "^3.2.11",
@@ -18455,7 +19081,8 @@
         "slash": {
           "version": "4.0.0",
           "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz",
-          "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew=="
+          "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==",
+          "dev": true
         }
       }
     },
@@ -18686,7 +19313,8 @@
     "ignore": {
       "version": "5.2.0",
       "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz",
-      "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ=="
+      "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==",
+      "dev": true
     },
     "ignore-by-default": {
       "version": "2.1.0",
@@ -18846,7 +19474,8 @@
     "is-extglob": {
       "version": "2.1.1",
       "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
-      "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI="
+      "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
+      "dev": true
     },
     "is-fullwidth-code-point": {
       "version": "4.0.0",
@@ -18858,6 +19487,7 @@
       "version": "4.0.3",
       "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
       "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+      "dev": true,
       "requires": {
         "is-extglob": "^2.1.1"
       }
@@ -18871,7 +19501,8 @@
     "is-number": {
       "version": "7.0.0",
       "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
-      "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="
+      "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+      "dev": true
     },
     "is-number-object": {
       "version": "1.0.7",
@@ -19052,6 +19683,14 @@
         "@istanbuljs/schema": "^0.1.2",
         "istanbul-lib-coverage": "^3.0.0",
         "semver": "^6.3.0"
+      },
+      "dependencies": {
+        "semver": {
+          "version": "6.3.1",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+          "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+          "dev": true
+        }
       }
     },
     "istanbul-lib-processinfo": {
@@ -19727,7 +20366,6 @@
       "version": "6.0.0",
       "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
       "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
-      "dev": true,
       "requires": {
         "yallist": "^4.0.0"
       }
@@ -19739,6 +20377,14 @@
       "dev": true,
       "requires": {
         "semver": "^6.0.0"
+      },
+      "dependencies": {
+        "semver": {
+          "version": "6.3.1",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+          "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+          "dev": true
+        }
       }
     },
     "make-error": {
@@ -19877,14 +20523,16 @@
     "merge2": {
       "version": "1.4.1",
       "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
-      "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg=="
+      "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+      "dev": true
     },
     "micromatch": {
-      "version": "4.0.5",
-      "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
-      "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
+      "version": "4.0.8",
+      "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
+      "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
+      "dev": true,
       "requires": {
-        "braces": "^3.0.2",
+        "braces": "^3.0.3",
         "picomatch": "^2.3.1"
       }
     },
@@ -20007,6 +20655,12 @@
       "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
       "dev": true
     },
+    "ncp": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz",
+      "integrity": "sha512-zIdGUrPRFTUELUvr3Gmc7KZ2Sw/h1PiVM0Af/oHB6zgnV1ikqSfRk+TOufi79aHYCW3NiOXmr1BP5nWbzojLaA==",
+      "dev": true
+    },
     "neo-async": {
       "version": "2.6.2",
       "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
@@ -20068,17 +20722,6 @@
         "is-core-module": "^2.5.0",
         "semver": "^7.3.4",
         "validate-npm-package-license": "^3.0.1"
-      },
-      "dependencies": {
-        "semver": {
-          "version": "7.3.5",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
-          "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
-          "dev": true,
-          "requires": {
-            "lru-cache": "^6.0.0"
-          }
-        }
       }
     },
     "normalize-path": {
@@ -21891,17 +22534,6 @@
         "hosted-git-info": "^4.0.1",
         "semver": "^7.3.4",
         "validate-npm-package-name": "^3.0.0"
-      },
-      "dependencies": {
-        "semver": {
-          "version": "7.3.7",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz",
-          "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==",
-          "dev": true,
-          "requires": {
-            "lru-cache": "^6.0.0"
-          }
-        }
       }
     },
     "npm-run-path": {
@@ -22402,7 +23034,8 @@
     "path-type": {
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
-      "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw=="
+      "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
+      "dev": true
     },
     "performance-now": {
       "version": "2.1.0",
@@ -22419,7 +23052,8 @@
     "picomatch": {
       "version": "2.3.1",
       "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
-      "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="
+      "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+      "dev": true
     },
     "pidtree": {
       "version": "0.6.0",
@@ -22569,7 +23203,8 @@
     "queue-microtask": {
       "version": "1.2.3",
       "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
-      "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A=="
+      "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
+      "dev": true
     },
     "quick-lru": {
       "version": "4.0.1",
@@ -22835,7 +23470,8 @@
     "reusify": {
       "version": "1.0.4",
       "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
-      "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw=="
+      "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
+      "dev": true
     },
     "rfdc": {
       "version": "1.3.0",
@@ -22856,6 +23492,7 @@
       "version": "1.2.0",
       "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
       "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
+      "dev": true,
       "requires": {
         "queue-microtask": "^1.2.2"
       }
@@ -22966,15 +23603,6 @@
           "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
           "dev": true
         },
-        "semver": {
-          "version": "7.3.5",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
-          "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
-          "dev": true,
-          "requires": {
-            "lru-cache": "^6.0.0"
-          }
-        },
         "string-width": {
           "version": "4.2.3",
           "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
@@ -23013,10 +23641,12 @@
       }
     },
     "semver": {
-      "version": "6.3.0",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
-      "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
-      "dev": true
+      "version": "7.6.0",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
+      "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
+      "requires": {
+        "lru-cache": "^6.0.0"
+      }
     },
     "semver-diff": {
       "version": "3.1.1",
@@ -23025,6 +23655,14 @@
       "dev": true,
       "requires": {
         "semver": "^6.3.0"
+      },
+      "dependencies": {
+        "semver": {
+          "version": "6.3.1",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+          "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+          "dev": true
+        }
       }
     },
     "semver-regex": {
@@ -23716,6 +24354,28 @@
       "integrity": "sha1-mcW/VZWJZq9tBtg73zgA3IL67F0=",
       "dev": true
     },
+    "tinyglobby": {
+      "version": "0.2.9",
+      "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.9.tgz",
+      "integrity": "sha512-8or1+BGEdk1Zkkw2ii16qSS7uVrQJPre5A9o/XkWPATkk23FZh/15BKFxPnlTy6vkljZxLqYCzzBMj30ZrSvjw==",
+      "requires": {
+        "fdir": "^6.4.0",
+        "picomatch": "^4.0.2"
+      },
+      "dependencies": {
+        "fdir": {
+          "version": "6.4.0",
+          "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.0.tgz",
+          "integrity": "sha512-3oB133prH1o4j/L5lLW7uOCF1PlD+/It2L0eL/iAqWMB91RBbqTewABqxhj0ibBd90EEmWZq7ntIWzVaWcXTGQ==",
+          "requires": {}
+        },
+        "picomatch": {
+          "version": "4.0.2",
+          "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz",
+          "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg=="
+        }
+      }
+    },
     "tmp": {
       "version": "0.2.1",
       "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz",
@@ -23746,6 +24406,7 @@
       "version": "5.0.1",
       "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
       "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+      "dev": true,
       "requires": {
         "is-number": "^7.0.0"
       }
@@ -24285,8 +24946,7 @@
     "yallist": {
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
-      "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
-      "dev": true
+      "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
     },
     "yaml": {
       "version": "1.10.2",
diff --git a/package.cjs.json b/package.cjs.json
new file mode 100644
index 0000000..a3c15a7
--- /dev/null
+++ b/package.cjs.json
@@ -0,0 +1,1 @@
+{ "type": "commonjs" }
diff --git a/package.json b/package.json
index b437f73..109bee9 100644
--- a/package.json
+++ b/package.json
@@ -18,19 +18,33 @@
   "license": "MIT",
   "author": "Keith Cirkel <npm@keithcirkel.co.uk> (http://keithcirkel.co.uk/)",
   "type": "module",
-  "exports": "./index.js",
+  "exports": {
+    ".": {
+      "import": {
+        "types": "./index.d.ts",
+        "default": "./index.js"
+      },
+      "require": {
+        "types": "./index.d.ts",
+        "default": "./cjs/index.js"
+      }
+    }
+  },
   "types": "index.d.ts",
   "bin": "cli.js",
   "files": [
+    "cjs",
     "index.js",
     "index.d.ts",
     "cli.js",
     "reporter.js"
   ],
   "scripts": {
+    "build": "esbuild index.js --bundle --platform=node --alias:git-hooks-list=./git-hooks-list_shim.cjs --outfile=./cjs/index.js && ncp package.cjs.json ./cjs/package.json",
     "fix": "eslint . --fix && prettier . \"!**/*.js\" --write && node cli.js \"package.json\"",
     "lint": "eslint . && prettier . \"!**/*.js\" --check && node cli.js \"package.json\" --check",
     "prepare": "husky install",
+    "prepublishOnly": "npm run build",
     "semantic-release": "semantic-release",
     "test": "ava && dtslint --localTs node_modules/typescript/lib",
     "test-coverage": "nyc ava",
@@ -71,9 +85,10 @@
     "detect-newline": "^4.0.0",
     "get-stdin": "^9.0.0",
     "git-hooks-list": "^3.0.0",
-    "globby": "^13.1.2",
     "is-plain-obj": "^4.1.0",
-    "sort-object-keys": "^1.1.3"
+    "semver": "^7.6.0",
+    "sort-object-keys": "^1.1.3",
+    "tinyglobby": "^0.2.9"
   },
   "devDependencies": {
     "@commitlint/cli": "^17.1.2",
@@ -82,6 +97,7 @@
     "del": "^7.0.0",
     "dot-prop": "^7.2.0",
     "dtslint": "^4.2.1",
+    "esbuild": "^0.20.2",
     "eslint": "^8.24.0",
     "eslint-config-prettier": "^8.5.0",
     "eslint-config-standard": "^17.0.0",
@@ -92,6 +108,7 @@
     "husky": "^8.0.1",
     "lint-staged": "^13.0.3",
     "make-dir": "^3.1.0",
+    "ncp": "^2.0.0",
     "nyc": "^15.1.0",
     "prettier": "^2.7.1",
     "resolve": "^1.22.1",


Test patch:
diff --git a/tests/_helpers.js b/tests/_helpers.js
index 711e562..0b8862b 100644
--- a/tests/_helpers.js
+++ b/tests/_helpers.js
@@ -53,8 +53,50 @@ function sortObjectAlphabetically(t, options = {}) {
   for (let depth = 1; depth < maxDepth + 1; depth++) {
     sortObject(t, {
       ...options,
-      value: keysToObject(['z', 'a'], depth),
-      expect: expect || keysToObject(['a', 'z'], depth),
+      value: keysToObject(['z', 'e', 'ch', 'a'], depth),
+      expect: expect || keysToObject(['a', 'ch', 'e', 'z'], depth),
+    })
+  }
+}
+
+function sortObjectWithRangeAlphabetically(t, options = {}) {
+  const { maxDepth = 1, expect } = options
+
+  for (let depth = 1; depth < maxDepth + 1; depth++) {
+    sortObject(t, {
+      ...options,
+      value: keysToObject(
+        [
+          '@z-package@1.2.3',
+          'c-package@1.2.3',
+          'b-package-package@1.2.3',
+          '@a-package@1.2.3',
+          'b-package@1.2.3',
+          '@b-package',
+          '@e-package@1.2.3',
+          '@ch-package@1.2.3',
+          'e-package@1.2.3',
+          'ch-package@1.2.3',
+        ],
+        depth,
+      ),
+      expect:
+        expect ||
+        keysToObject(
+          [
+            '@a-package@1.2.3',
+            '@b-package',
+            '@ch-package@1.2.3',
+            '@e-package@1.2.3',
+            '@z-package@1.2.3',
+            'b-package@1.2.3',
+            'b-package-package@1.2.3',
+            'c-package@1.2.3',
+            'ch-package@1.2.3',
+            'e-package@1.2.3',
+          ],
+          depth,
+        ),
     })
   }
 }
@@ -211,6 +253,7 @@ export const macro = {
   sortObject,
   asItIs,
   sortObjectAlphabetically,
+  sortObjectWithRangeAlphabetically,
   testCLI,
   uniqueArray,
   uniqueAndSort,
diff --git a/tests/deps.js b/tests/deps.js
index c263554..6885d7a 100644
--- a/tests/deps.js
+++ b/tests/deps.js
@@ -30,10 +30,24 @@ test('peerDependenciesMeta', macro.sortObjectAlphabetically, {
   expect: 'snapshot',
 })
 
-// peerDependenciesMeta
+// dependenciesMeta
 test('dependenciesMeta', macro.sortObjectAlphabetically, {
   path: 'dependenciesMeta',
   maxDepth: 2,
   // TODO: don't use snapshot, find a esaier way for review
   expect: 'snapshot',
 })
+
+test('dependenciesMetaRange', macro.sortObjectWithRangeAlphabetically, {
+  path: 'dependenciesMeta',
+  maxDepth: 2,
+  // TODO: don't use snapshot, find a esaier way for review
+  expect: 'snapshot',
+})
+
+test('pnpm.overrides', macro.sortObjectWithRangeAlphabetically, {
+  path: 'pnpm.overrides',
+  maxDepth: 2,
+  // TODO: don't use snapshot, find a esaier way for review
+  expect: 'snapshot',
+})
diff --git a/tests/fields.js b/tests/fields.js
index bc6bc1b..458c8ae 100644
--- a/tests/fields.js
+++ b/tests/fields.js
@@ -263,9 +263,16 @@ test('pnpm', macro.sortObject, {
   path: 'pnpm',
   value: {
     overrides: {
+      '@react-stately/selection@~3.10.3': '3.10.3',
       'aws-sdk@1.2345.0': '1.123.0',
       'react-native-notifications@^3.4.5': '3.4.5',
       'antd@^2.23.4': '2.23.4',
+      '@react-stately/select@~3.1.3': '3.1.3',
+      '@react-stately/selection@~3.7.0': '3.7.0',
+      '@react-stately/select@3': '3.3.1',
+      '@react-aria/selection@3.10.1>@react-stately/selection': '3.10.3',
+      '@react-aria/selection@3.10.1>@react-aria/focus': '3.8.0',
+      '@react-aria/selection@3.5.1>@react-stately/selection': '3.10.3',
     },
     patchedDependencies: {
       'esbuild-sass-plugin@1.20.0': 'foo.patch',
@@ -289,10 +296,22 @@ test('pnpm', macro.sortObject, {
   expect: {
     allowNonAppliedPatches: true,
     overrides: {
+      '@react-aria/selection@3.5.1>@react-stately/selection': '3.10.3',
+      '@react-aria/selection@3.10.1>@react-aria/focus': '3.8.0',
+      '@react-aria/selection@3.10.1>@react-stately/selection': '3.10.3',
+      '@react-stately/select@3': '3.3.1',
+      '@react-stately/select@~3.1.3': '3.1.3',
+      '@react-stately/selection@~3.7.0': '3.7.0',
+      '@react-stately/selection@~3.10.3': '3.10.3',
       'antd@^2.23.4': '2.23.4',
       'aws-sdk@1.2345.0': '1.123.0',
       'react-native-notifications@^3.4.5': '3.4.5',
     },
+    patchedDependencies: {
+      'domino@4.5.6': 'bar.patch',
+      'es5-ext@0.12.3': 'baz.patch',
+      'esbuild-sass-plugin@1.20.0': 'foo.patch',
+    },
     packageExtensions: {
       '@rjsf/core': {
         dependencies: {
@@ -305,10 +324,5 @@ test('pnpm', macro.sortObject, {
         },
       },
     },
-    patchedDependencies: {
-      'domino@4.5.6': 'bar.patch',
-      'es5-ext@0.12.3': 'baz.patch',
-      'esbuild-sass-plugin@1.20.0': 'foo.patch',
-    },
   },
 })
diff --git a/tests/main.js b/tests/main.js
index d86355f..6c2952c 100644
--- a/tests/main.js
+++ b/tests/main.js
@@ -17,6 +17,16 @@ test('main', (t) => {
     '{"name":"sort-package-json","version":"1.0.0"}',
     'Accepts string, returns sorted string',
   )
+  t.is(
+    sortPackageJson(JSON.stringify(packageJson, null, 4)),
+    '{\n    "name": "sort-package-json",\n    "version": "1.0.0"\n}',
+    'Detect indent',
+  )
+  t.is(
+    sortPackageJson(JSON.stringify(packageJson, null, '\t')),
+    '{\n\t"name": "sort-package-json",\n\t"version": "1.0.0"\n}',
+    'Detect tab indent',
+  )
 
   const array = ['foo', 'bar']
   const string = JSON.stringify(array)
diff --git a/tests/snapshots/deps.js.md b/tests/snapshots/deps.js.md
index 4dc7c8b..71b43b5 100644
--- a/tests/snapshots/deps.js.md
+++ b/tests/snapshots/deps.js.md
@@ -12,6 +12,8 @@ Generated by [AVA](https://avajs.dev).
       input: `{␊
         "peerDependenciesMeta": {␊
           "z": "z",␊
+          "e": "e",␊
+          "ch": "ch",␊
           "a": "a"␊
         }␊
       }`,
@@ -19,6 +21,8 @@ Generated by [AVA](https://avajs.dev).
       output: `{␊
         "peerDependenciesMeta": {␊
           "a": "a",␊
+          "ch": "ch",␊
+          "e": "e",␊
           "z": "z"␊
         }␊
       }`,
@@ -32,10 +36,26 @@ Generated by [AVA](https://avajs.dev).
         "peerDependenciesMeta": {␊
           "z": {␊
             "z": "z",␊
+            "e": "e",␊
+            "ch": "ch",␊
+            "a": "a"␊
+          },␊
+          "e": {␊
+            "z": "z",␊
+            "e": "e",␊
+            "ch": "ch",␊
+            "a": "a"␊
+          },␊
+          "ch": {␊
+            "z": "z",␊
+            "e": "e",␊
+            "ch": "ch",␊
             "a": "a"␊
           },␊
           "a": {␊
             "z": "z",␊
+            "e": "e",␊
+            "ch": "ch",␊
             "a": "a"␊
           }␊
         }␊
@@ -45,10 +65,26 @@ Generated by [AVA](https://avajs.dev).
         "peerDependenciesMeta": {␊
           "a": {␊
             "a": "a",␊
+            "ch": "ch",␊
+            "e": "e",␊
+            "z": "z"␊
+          },␊
+          "ch": {␊
+            "a": "a",␊
+            "ch": "ch",␊
+            "e": "e",␊
+            "z": "z"␊
+          },␊
+          "e": {␊
+            "a": "a",␊
+            "ch": "ch",␊
+            "e": "e",␊
             "z": "z"␊
           },␊
           "z": {␊
             "a": "a",␊
+            "ch": "ch",␊
+            "e": "e",␊
             "z": "z"␊
           }␊
         }␊
@@ -64,6 +100,8 @@ Generated by [AVA](https://avajs.dev).
       input: `{␊
         "dependenciesMeta": {␊
           "z": "z",␊
+          "e": "e",␊
+          "ch": "ch",␊
           "a": "a"␊
         }␊
       }`,
@@ -71,6 +109,8 @@ Generated by [AVA](https://avajs.dev).
       output: `{␊
         "dependenciesMeta": {␊
           "a": "a",␊
+          "ch": "ch",␊
+          "e": "e",␊
           "z": "z"␊
         }␊
       }`,
@@ -84,10 +124,26 @@ Generated by [AVA](https://avajs.dev).
         "dependenciesMeta": {␊
           "z": {␊
             "z": "z",␊
+            "e": "e",␊
+            "ch": "ch",␊
+            "a": "a"␊
+          },␊
+          "e": {␊
+            "z": "z",␊
+            "e": "e",␊
+            "ch": "ch",␊
+            "a": "a"␊
+          },␊
+          "ch": {␊
+            "z": "z",␊
+            "e": "e",␊
+            "ch": "ch",␊
             "a": "a"␊
           },␊
           "a": {␊
             "z": "z",␊
+            "e": "e",␊
+            "ch": "ch",␊
             "a": "a"␊
           }␊
         }␊
@@ -97,13 +153,621 @@ Generated by [AVA](https://avajs.dev).
         "dependenciesMeta": {␊
           "a": {␊
             "a": "a",␊
+            "ch": "ch",␊
+            "e": "e",␊
+            "z": "z"␊
+          },␊
+          "ch": {␊
+            "a": "a",␊
+            "ch": "ch",␊
+            "e": "e",␊
+            "z": "z"␊
+          },␊
+          "e": {␊
+            "a": "a",␊
+            "ch": "ch",␊
+            "e": "e",␊
             "z": "z"␊
           },␊
           "z": {␊
             "a": "a",␊
+            "ch": "ch",␊
+            "e": "e",␊
             "z": "z"␊
           }␊
         }␊
       }`,
       pretty: true,
     }
+
+## dependenciesMetaRange
+
+> Should sort `dependenciesMeta` as object.
+
+    {
+      input: `{␊
+        "dependenciesMeta": {␊
+          "@z-package@1.2.3": "@z-package@1.2.3",␊
+          "c-package@1.2.3": "c-package@1.2.3",␊
+          "b-package-package@1.2.3": "b-package-package@1.2.3",␊
+          "@a-package@1.2.3": "@a-package@1.2.3",␊
+          "b-package@1.2.3": "b-package@1.2.3",␊
+          "@b-package": "@b-package",␊
+          "@e-package@1.2.3": "@e-package@1.2.3",␊
+          "@ch-package@1.2.3": "@ch-package@1.2.3",␊
+          "e-package@1.2.3": "e-package@1.2.3",␊
+          "ch-package@1.2.3": "ch-package@1.2.3"␊
+        }␊
+      }`,
+      options: undefined,
+      output: `{␊
+        "dependenciesMeta": {␊
+          "@a-package@1.2.3": "@a-package@1.2.3",␊
+          "@b-package": "@b-package",␊
+          "@ch-package@1.2.3": "@ch-package@1.2.3",␊
+          "@e-package@1.2.3": "@e-package@1.2.3",␊
+          "@z-package@1.2.3": "@z-package@1.2.3",␊
+          "b-package@1.2.3": "b-package@1.2.3",␊
+          "b-package-package@1.2.3": "b-package-package@1.2.3",␊
+          "c-package@1.2.3": "c-package@1.2.3",␊
+          "ch-package@1.2.3": "ch-package@1.2.3",␊
+          "e-package@1.2.3": "e-package@1.2.3"␊
+        }␊
+      }`,
+      pretty: true,
+    }
+
+> Should sort `dependenciesMeta` as object.
+
+    {
+      input: `{␊
+        "dependenciesMeta": {␊
+          "@z-package@1.2.3": {␊
+            "@z-package@1.2.3": "@z-package@1.2.3",␊
+            "c-package@1.2.3": "c-package@1.2.3",␊
+            "b-package-package@1.2.3": "b-package-package@1.2.3",␊
+            "@a-package@1.2.3": "@a-package@1.2.3",␊
+            "b-package@1.2.3": "b-package@1.2.3",␊
+            "@b-package": "@b-package",␊
+            "@e-package@1.2.3": "@e-package@1.2.3",␊
+            "@ch-package@1.2.3": "@ch-package@1.2.3",␊
+            "e-package@1.2.3": "e-package@1.2.3",␊
+            "ch-package@1.2.3": "ch-package@1.2.3"␊
+          },␊
+          "c-package@1.2.3": {␊
+            "@z-package@1.2.3": "@z-package@1.2.3",␊
+            "c-package@1.2.3": "c-package@1.2.3",␊
+            "b-package-package@1.2.3": "b-package-package@1.2.3",␊
+            "@a-package@1.2.3": "@a-package@1.2.3",␊
+            "b-package@1.2.3": "b-package@1.2.3",␊
+            "@b-package": "@b-package",␊
+            "@e-package@1.2.3": "@e-package@1.2.3",␊
+            "@ch-package@1.2.3": "@ch-package@1.2.3",␊
+            "e-package@1.2.3": "e-package@1.2.3",␊
+            "ch-package@1.2.3": "ch-package@1.2.3"␊
+          },␊
+          "b-package-package@1.2.3": {␊
+            "@z-package@1.2.3": "@z-package@1.2.3",␊
+            "c-package@1.2.3": "c-package@1.2.3",␊
+            "b-package-package@1.2.3": "b-package-package@1.2.3",␊
+            "@a-package@1.2.3": "@a-package@1.2.3",␊
+            "b-package@1.2.3": "b-package@1.2.3",␊
+            "@b-package": "@b-package",␊
+            "@e-package@1.2.3": "@e-package@1.2.3",␊
+            "@ch-package@1.2.3": "@ch-package@1.2.3",␊
+            "e-package@1.2.3": "e-package@1.2.3",␊
+            "ch-package@1.2.3": "ch-package@1.2.3"␊
+          },␊
+          "@a-package@1.2.3": {␊
+            "@z-package@1.2.3": "@z-package@1.2.3",␊
+            "c-package@1.2.3": "c-package@1.2.3",␊
+            "b-package-package@1.2.3": "b-package-package@1.2.3",␊
+            "@a-package@1.2.3": "@a-package@1.2.3",␊
+            "b-package@1.2.3": "b-package@1.2.3",␊
+            "@b-package": "@b-package",␊
+            "@e-package@1.2.3": "@e-package@1.2.3",␊
+            "@ch-package@1.2.3": "@ch-package@1.2.3",␊
+            "e-package@1.2.3": "e-package@1.2.3",␊
+            "ch-package@1.2.3": "ch-package@1.2.3"␊
+          },␊
+          "b-package@1.2.3": {␊
+            "@z-package@1.2.3": "@z-package@1.2.3",␊
+            "c-package@1.2.3": "c-package@1.2.3",␊
+            "b-package-package@1.2.3": "b-package-package@1.2.3",␊
+            "@a-package@1.2.3": "@a-package@1.2.3",␊
+            "b-package@1.2.3": "b-package@1.2.3",␊
+            "@b-package": "@b-package",␊
+            "@e-package@1.2.3": "@e-package@1.2.3",␊
+            "@ch-package@1.2.3": "@ch-package@1.2.3",␊
+            "e-package@1.2.3": "e-package@1.2.3",␊
+            "ch-package@1.2.3": "ch-package@1.2.3"␊
+          },␊
+          "@b-package": {␊
+            "@z-package@1.2.3": "@z-package@1.2.3",␊
+            "c-package@1.2.3": "c-package@1.2.3",␊
+            "b-package-package@1.2.3": "b-package-package@1.2.3",␊
+            "@a-package@1.2.3": "@a-package@1.2.3",␊
+            "b-package@1.2.3": "b-package@1.2.3",␊
+            "@b-package": "@b-package",␊
+            "@e-package@1.2.3": "@e-package@1.2.3",␊
+            "@ch-package@1.2.3": "@ch-package@1.2.3",␊
+            "e-package@1.2.3": "e-package@1.2.3",␊
+            "ch-package@1.2.3": "ch-package@1.2.3"␊
+          },␊
+          "@e-package@1.2.3": {␊
+            "@z-package@1.2.3": "@z-package@1.2.3",␊
+            "c-package@1.2.3": "c-package@1.2.3",␊
+            "b-package-package@1.2.3": "b-package-package@1.2.3",␊
+            "@a-package@1.2.3": "@a-package@1.2.3",␊
+            "b-package@1.2.3": "b-package@1.2.3",␊
+            "@b-package": "@b-package",␊
+            "@e-package@1.2.3": "@e-package@1.2.3",␊
+            "@ch-package@1.2.3": "@ch-package@1.2.3",␊
+            "e-package@1.2.3": "e-package@1.2.3",␊
+            "ch-package@1.2.3": "ch-package@1.2.3"␊
+          },␊
+          "@ch-package@1.2.3": {␊
+            "@z-package@1.2.3": "@z-package@1.2.3",␊
+            "c-package@1.2.3": "c-package@1.2.3",␊
+            "b-package-package@1.2.3": "b-package-package@1.2.3",␊
+            "@a-package@1.2.3": "@a-package@1.2.3",␊
+            "b-package@1.2.3": "b-package@1.2.3",␊
+            "@b-package": "@b-package",␊
+            "@e-package@1.2.3": "@e-package@1.2.3",␊
+            "@ch-package@1.2.3": "@ch-package@1.2.3",␊
+            "e-package@1.2.3": "e-package@1.2.3",␊
+            "ch-package@1.2.3": "ch-package@1.2.3"␊
+          },␊
+          "e-package@1.2.3": {␊
+            "@z-package@1.2.3": "@z-package@1.2.3",␊
+            "c-package@1.2.3": "c-package@1.2.3",␊
+            "b-package-package@1.2.3": "b-package-package@1.2.3",␊
+            "@a-package@1.2.3": "@a-package@1.2.3",␊
+            "b-package@1.2.3": "b-package@1.2.3",␊
+            "@b-package": "@b-package",␊
+            "@e-package@1.2.3": "@e-package@1.2.3",␊
+            "@ch-package@1.2.3": "@ch-package@1.2.3",␊
+            "e-package@1.2.3": "e-package@1.2.3",␊
+            "ch-package@1.2.3": "ch-package@1.2.3"␊
+          },␊
+          "ch-package@1.2.3": {␊
+            "@z-package@1.2.3": "@z-package@1.2.3",␊
+            "c-package@1.2.3": "c-package@1.2.3",␊
+            "b-package-package@1.2.3": "b-package-package@1.2.3",␊
+            "@a-package@1.2.3": "@a-package@1.2.3",␊
+            "b-package@1.2.3": "b-package@1.2.3",␊
+            "@b-package": "@b-package",␊
+            "@e-package@1.2.3": "@e-package@1.2.3",␊
+            "@ch-package@1.2.3": "@ch-package@1.2.3",␊
+            "e-package@1.2.3": "e-package@1.2.3",␊
+            "ch-package@1.2.3": "ch-package@1.2.3"␊
+          }␊
+        }␊
+      }`,
+      options: undefined,
+      output: `{␊
+        "dependenciesMeta": {␊
+          "@a-package@1.2.3": {␊
+            "@a-package@1.2.3": "@a-package@1.2.3",␊
+            "@b-package": "@b-package",␊
+            "@ch-package@1.2.3": "@ch-package@1.2.3",␊
+            "@e-package@1.2.3": "@e-package@1.2.3",␊
+            "@z-package@1.2.3": "@z-package@1.2.3",␊
+            "b-package@1.2.3": "b-package@1.2.3",␊
+            "b-package-package@1.2.3": "b-package-package@1.2.3",␊
+            "c-package@1.2.3": "c-package@1.2.3",␊
+            "ch-package@1.2.3": "ch-package@1.2.3",␊
+            "e-package@1.2.3": "e-package@1.2.3"␊
+          },␊
+          "@b-package": {␊
+            "@a-package@1.2.3": "@a-package@1.2.3",␊
+            "@b-package": "@b-package",␊
+            "@ch-package@1.2.3": "@ch-package@1.2.3",␊
+            "@e-package@1.2.3": "@e-package@1.2.3",␊
+            "@z-package@1.2.3": "@z-package@1.2.3",␊
+            "b-package@1.2.3": "b-package@1.2.3",␊
+            "b-package-package@1.2.3": "b-package-package@1.2.3",␊
+            "c-package@1.2.3": "c-package@1.2.3",␊
+            "ch-package@1.2.3": "ch-package@1.2.3",␊
+            "e-package@1.2.3": "e-package@1.2.3"␊
+          },␊
+          "@ch-package@1.2.3": {␊
+            "@a-package@1.2.3": "@a-package@1.2.3",␊
+            "@b-package": "@b-package",␊
+            "@ch-package@1.2.3": "@ch-package@1.2.3",␊
+            "@e-package@1.2.3": "@e-package@1.2.3",␊
+            "@z-package@1.2.3": "@z-package@1.2.3",␊
+            "b-package@1.2.3": "b-package@1.2.3",␊
+            "b-package-package@1.2.3": "b-package-package@1.2.3",␊
+            "c-package@1.2.3": "c-package@1.2.3",␊
+            "ch-package@1.2.3": "ch-package@1.2.3",␊
+            "e-package@1.2.3": "e-package@1.2.3"␊
+          },␊
+          "@e-package@1.2.3": {␊
+            "@a-package@1.2.3": "@a-package@1.2.3",␊
+            "@b-package": "@b-package",␊
+            "@ch-package@1.2.3": "@ch-package@1.2.3",␊
+            "@e-package@1.2.3": "@e-package@1.2.3",␊
+            "@z-package@1.2.3": "@z-package@1.2.3",␊
+            "b-package@1.2.3": "b-package@1.2.3",␊
+            "b-package-package@1.2.3": "b-package-package@1.2.3",␊
+            "c-package@1.2.3": "c-package@1.2.3",␊
+            "ch-package@1.2.3": "ch-package@1.2.3",␊
+            "e-package@1.2.3": "e-package@1.2.3"␊
+          },␊
+          "@z-package@1.2.3": {␊
+            "@a-package@1.2.3": "@a-package@1.2.3",␊
+            "@b-package": "@b-package",␊
+            "@ch-package@1.2.3": "@ch-package@1.2.3",␊
+            "@e-package@1.2.3": "@e-package@1.2.3",␊
+            "@z-package@1.2.3": "@z-package@1.2.3",␊
+            "b-package@1.2.3": "b-package@1.2.3",␊
+            "b-package-package@1.2.3": "b-package-package@1.2.3",␊
+            "c-package@1.2.3": "c-package@1.2.3",␊
+            "ch-package@1.2.3": "ch-package@1.2.3",␊
+            "e-package@1.2.3": "e-package@1.2.3"␊
+          },␊
+          "b-package@1.2.3": {␊
+            "@a-package@1.2.3": "@a-package@1.2.3",␊
+            "@b-package": "@b-package",␊
+            "@ch-package@1.2.3": "@ch-package@1.2.3",␊
+            "@e-package@1.2.3": "@e-package@1.2.3",␊
+            "@z-package@1.2.3": "@z-package@1.2.3",␊
+            "b-package@1.2.3": "b-package@1.2.3",␊
+            "b-package-package@1.2.3": "b-package-package@1.2.3",␊
+            "c-package@1.2.3": "c-package@1.2.3",␊
+            "ch-package@1.2.3": "ch-package@1.2.3",␊
+            "e-package@1.2.3": "e-package@1.2.3"␊
+          },␊
+          "b-package-package@1.2.3": {␊
+            "@a-package@1.2.3": "@a-package@1.2.3",␊
+            "@b-package": "@b-package",␊
+            "@ch-package@1.2.3": "@ch-package@1.2.3",␊
+            "@e-package@1.2.3": "@e-package@1.2.3",␊
+            "@z-package@1.2.3": "@z-package@1.2.3",␊
+            "b-package@1.2.3": "b-package@1.2.3",␊
+            "b-package-package@1.2.3": "b-package-package@1.2.3",␊
+            "c-package@1.2.3": "c-package@1.2.3",␊
+            "ch-package@1.2.3": "ch-package@1.2.3",␊
+            "e-package@1.2.3": "e-package@1.2.3"␊
+          },␊
+          "c-package@1.2.3": {␊
+            "@a-package@1.2.3": "@a-package@1.2.3",␊
+            "@b-package": "@b-package",␊
+            "@ch-package@1.2.3": "@ch-package@1.2.3",␊
+            "@e-package@1.2.3": "@e-package@1.2.3",␊
+            "@z-package@1.2.3": "@z-package@1.2.3",␊
+            "b-package@1.2.3": "b-package@1.2.3",␊
+            "b-package-package@1.2.3": "b-package-package@1.2.3",␊
+            "c-package@1.2.3": "c-package@1.2.3",␊
+            "ch-package@1.2.3": "ch-package@1.2.3",␊
+            "e-package@1.2.3": "e-package@1.2.3"␊
+          },␊
+          "ch-package@1.2.3": {␊
+            "@a-package@1.2.3": "@a-package@1.2.3",␊
+            "@b-package": "@b-package",␊
+            "@ch-package@1.2.3": "@ch-package@1.2.3",␊
+            "@e-package@1.2.3": "@e-package@1.2.3",␊
+            "@z-package@1.2.3": "@z-package@1.2.3",␊
+            "b-package@1.2.3": "b-package@1.2.3",␊
+            "b-package-package@1.2.3": "b-package-package@1.2.3",␊
+            "c-package@1.2.3": "c-package@1.2.3",␊
+            "ch-package@1.2.3": "ch-package@1.2.3",␊
+            "e-package@1.2.3": "e-package@1.2.3"␊
+          },␊
+          "e-package@1.2.3": {␊
+            "@a-package@1.2.3": "@a-package@1.2.3",␊
+            "@b-package": "@b-package",␊
+            "@ch-package@1.2.3": "@ch-package@1.2.3",␊
+            "@e-package@1.2.3": "@e-package@1.2.3",␊
+            "@z-package@1.2.3": "@z-package@1.2.3",␊
+            "b-package@1.2.3": "b-package@1.2.3",␊
+            "b-package-package@1.2.3": "b-package-package@1.2.3",␊
+            "c-package@1.2.3": "c-package@1.2.3",␊
+            "ch-package@1.2.3": "ch-package@1.2.3",␊
+            "e-package@1.2.3": "e-package@1.2.3"␊
+          }␊
+        }␊
+      }`,
+      pretty: true,
+    }
+
+## pnpm.overrides
+
+> Should sort `pnpm.overrides` as object.
+
+    {
+      input: `{␊
+        "pnpm": {␊
+          "overrides": {␊
+            "@z-package@1.2.3": "@z-package@1.2.3",␊
+            "c-package@1.2.3": "c-package@1.2.3",␊
+            "b-package-package@1.2.3": "b-package-package@1.2.3",␊
+            "@a-package@1.2.3": "@a-package@1.2.3",␊
+            "b-package@1.2.3": "b-package@1.2.3",␊
+            "@b-package": "@b-package",␊
+            "@e-package@1.2.3": "@e-package@1.2.3",␊
+            "@ch-package@1.2.3": "@ch-package@1.2.3",␊
+            "e-package@1.2.3": "e-package@1.2.3",␊
+            "ch-package@1.2.3": "ch-package@1.2.3"␊
+          }␊
+        }␊
+      }`,
+      options: undefined,
+      output: `{␊
+        "pnpm": {␊
+          "overrides": {␊
+            "@a-package@1.2.3": "@a-package@1.2.3",␊
+            "@b-package": "@b-package",␊
+            "@ch-package@1.2.3": "@ch-package@1.2.3",␊
+            "@e-package@1.2.3": "@e-package@1.2.3",␊
+            "@z-package@1.2.3": "@z-package@1.2.3",␊
+            "b-package@1.2.3": "b-package@1.2.3",␊
+            "b-package-package@1.2.3": "b-package-package@1.2.3",␊
+            "c-package@1.2.3": "c-package@1.2.3",␊
+            "ch-package@1.2.3": "ch-package@1.2.3",␊
+            "e-package@1.2.3": "e-package@1.2.3"␊
+          }␊
+        }␊
+      }`,
+      pretty: true,
+    }
+
+> Should sort `pnpm.overrides` as object.
+
+    {
+      input: `{␊
+        "pnpm": {␊
+          "overrides": {␊
+            "@z-package@1.2.3": {␊
+              "@z-package@1.2.3": "@z-package@1.2.3",␊
+              "c-package@1.2.3": "c-package@1.2.3",␊
+              "b-package-package@1.2.3": "b-package-package@1.2.3",␊
+              "@a-package@1.2.3": "@a-package@1.2.3",␊
+              "b-package@1.2.3": "b-package@1.2.3",␊
+              "@b-package": "@b-package",␊
+              "@e-package@1.2.3": "@e-package@1.2.3",␊
+              "@ch-package@1.2.3": "@ch-package@1.2.3",␊
+              "e-package@1.2.3": "e-package@1.2.3",␊
+              "ch-package@1.2.3": "ch-package@1.2.3"␊
+            },␊
+            "c-package@1.2.3": {␊
+              "@z-package@1.2.3": "@z-package@1.2.3",␊
+              "c-package@1.2.3": "c-package@1.2.3",␊
+              "b-package-package@1.2.3": "b-package-package@1.2.3",␊
+              "@a-package@1.2.3": "@a-package@1.2.3",␊
+              "b-package@1.2.3": "b-package@1.2.3",␊
+              "@b-package": "@b-package",␊
+              "@e-package@1.2.3": "@e-package@1.2.3",␊
+              "@ch-package@1.2.3": "@ch-package@1.2.3",␊
+              "e-package@1.2.3": "e-package@1.2.3",␊
+              "ch-package@1.2.3": "ch-package@1.2.3"␊
+            },␊
+            "b-package-package@1.2.3": {␊
+              "@z-package@1.2.3": "@z-package@1.2.3",␊
+              "c-package@1.2.3": "c-package@1.2.3",␊
+              "b-package-package@1.2.3": "b-package-package@1.2.3",␊
+              "@a-package@1.2.3": "@a-package@1.2.3",␊
+              "b-package@1.2.3": "b-package@1.2.3",␊
+              "@b-package": "@b-package",␊
+              "@e-package@1.2.3": "@e-package@1.2.3",␊
+              "@ch-package@1.2.3": "@ch-package@1.2.3",␊
+              "e-package@1.2.3": "e-package@1.2.3",␊
+              "ch-package@1.2.3": "ch-package@1.2.3"␊
+            },␊
+            "@a-package@1.2.3": {␊
+              "@z-package@1.2.3": "@z-package@1.2.3",␊
+              "c-package@1.2.3": "c-package@1.2.3",␊
+              "b-package-package@1.2.3": "b-package-package@1.2.3",␊
+              "@a-package@1.2.3": "@a-package@1.2.3",␊
+              "b-package@1.2.3": "b-package@1.2.3",␊
+              "@b-package": "@b-package",␊
+              "@e-package@1.2.3": "@e-package@1.2.3",␊
+              "@ch-package@1.2.3": "@ch-package@1.2.3",␊
+              "e-package@1.2.3": "e-package@1.2.3",␊
+              "ch-package@1.2.3": "ch-package@1.2.3"␊
+            },␊
+            "b-package@1.2.3": {␊
+              "@z-package@1.2.3": "@z-package@1.2.3",␊
+              "c-package@1.2.3": "c-package@1.2.3",␊
+              "b-package-package@1.2.3": "b-package-package@1.2.3",␊
+              "@a-package@1.2.3": "@a-package@1.2.3",␊
+              "b-package@1.2.3": "b-package@1.2.3",␊
+              "@b-package": "@b-package",␊
+              "@e-package@1.2.3": "@e-package@1.2.3",␊
+              "@ch-package@1.2.3": "@ch-package@1.2.3",␊
+              "e-package@1.2.3": "e-package@1.2.3",␊
+              "ch-package@1.2.3": "ch-package@1.2.3"␊
+            },␊
+            "@b-package": {␊
+              "@z-package@1.2.3": "@z-package@1.2.3",␊
+              "c-package@1.2.3": "c-package@1.2.3",␊
+              "b-package-package@1.2.3": "b-package-package@1.2.3",␊
+              "@a-package@1.2.3": "@a-package@1.2.3",␊
+              "b-package@1.2.3": "b-package@1.2.3",␊
+              "@b-package": "@b-package",␊
+              "@e-package@1.2.3": "@e-package@1.2.3",␊
+              "@ch-package@1.2.3": "@ch-package@1.2.3",␊
+              "e-package@1.2.3": "e-package@1.2.3",␊
+              "ch-package@1.2.3": "ch-package@1.2.3"␊
+            },␊
+            "@e-package@1.2.3": {␊
+              "@z-package@1.2.3": "@z-package@1.2.3",␊
+              "c-package@1.2.3": "c-package@1.2.3",␊
+              "b-package-package@1.2.3": "b-package-package@1.2.3",␊
+              "@a-package@1.2.3": "@a-package@1.2.3",␊
+              "b-package@1.2.3": "b-package@1.2.3",␊
+              "@b-package": "@b-package",␊
+              "@e-package@1.2.3": "@e-package@1.2.3",␊
+              "@ch-package@1.2.3": "@ch-package@1.2.3",␊
+              "e-package@1.2.3": "e-package@1.2.3",␊
+              "ch-package@1.2.3": "ch-package@1.2.3"␊
+            },␊
+            "@ch-package@1.2.3": {␊
+              "@z-package@1.2.3": "@z-package@1.2.3",␊
+              "c-package@1.2.3": "c-package@1.2.3",␊
+              "b-package-package@1.2.3": "b-package-package@1.2.3",␊
+              "@a-package@1.2.3": "@a-package@1.2.3",␊
+              "b-package@1.2.3": "b-package@1.2.3",␊
+              "@b-package": "@b-package",␊
+              "@e-package@1.2.3": "@e-package@1.2.3",␊
+              "@ch-package@1.2.3": "@ch-package@1.2.3",␊
+              "e-package@1.2.3": "e-package@1.2.3",␊
+              "ch-package@1.2.3": "ch-package@1.2.3"␊
+            },␊
+            "e-package@1.2.3": {␊
+              "@z-package@1.2.3": "@z-package@1.2.3",␊
+              "c-package@1.2.3": "c-package@1.2.3",␊
+              "b-package-package@1.2.3": "b-package-package@1.2.3",␊
+              "@a-package@1.2.3": "@a-package@1.2.3",␊
+              "b-package@1.2.3": "b-package@1.2.3",␊
+              "@b-package": "@b-package",␊
+              "@e-package@1.2.3": "@e-package@1.2.3",␊
+              "@ch-package@1.2.3": "@ch-package@1.2.3",␊
+              "e-package@1.2.3": "e-package@1.2.3",␊
+              "ch-package@1.2.3": "ch-package@1.2.3"␊
+            },␊
+            "ch-package@1.2.3": {␊
+              "@z-package@1.2.3": "@z-package@1.2.3",␊
+              "c-package@1.2.3": "c-package@1.2.3",␊
+              "b-package-package@1.2.3": "b-package-package@1.2.3",␊
+              "@a-package@1.2.3": "@a-package@1.2.3",␊
+              "b-package@1.2.3": "b-package@1.2.3",␊
+              "@b-package": "@b-package",␊
+              "@e-package@1.2.3": "@e-package@1.2.3",␊
+              "@ch-package@1.2.3": "@ch-package@1.2.3",␊
+              "e-package@1.2.3": "e-package@1.2.3",␊
+              "ch-package@1.2.3": "ch-package@1.2.3"␊
+            }␊
+          }␊
+        }␊
+      }`,
+      options: undefined,
+      output: `{␊
+        "pnpm": {␊
+          "overrides": {␊
+            "@a-package@1.2.3": {␊
+              "@a-package@1.2.3": "@a-package@1.2.3",␊
+              "@b-package": "@b-package",␊
+              "@ch-package@1.2.3": "@ch-package@1.2.3",␊
+              "@e-package@1.2.3": "@e-package@1.2.3",␊
+              "@z-package@1.2.3": "@z-package@1.2.3",␊
+              "b-package-package@1.2.3": "b-package-package@1.2.3",␊
+              "b-package@1.2.3": "b-package@1.2.3",␊
+              "c-package@1.2.3": "c-package@1.2.3",␊
+              "ch-package@1.2.3": "ch-package@1.2.3",␊
+              "e-package@1.2.3": "e-package@1.2.3"␊
+            },␊
+            "@b-package": {␊
+              "@a-package@1.2.3": "@a-package@1.2.3",␊
+              "@b-package": "@b-package",␊
+              "@ch-package@1.2.3": "@ch-package@1.2.3",␊
+              "@e-package@1.2.3": "@e-package@1.2.3",␊
+              "@z-package@1.2.3": "@z-package@1.2.3",␊
+              "b-package-package@1.2.3": "b-package-package@1.2.3",␊
+              "b-package@1.2.3": "b-package@1.2.3",␊
+              "c-package@1.2.3": "c-package@1.2.3",␊
+              "ch-package@1.2.3": "ch-package@1.2.3",␊
+              "e-package@1.2.3": "e-package@1.2.3"␊
+            },␊
+            "@ch-package@1.2.3": {␊
+              "@a-package@1.2.3": "@a-package@1.2.3",␊
+              "@b-package": "@b-package",␊
+              "@ch-package@1.2.3": "@ch-package@1.2.3",␊
+              "@e-package@1.2.3": "@e-package@1.2.3",␊
+              "@z-package@1.2.3": "@z-package@1.2.3",␊
+              "b-package-package@1.2.3": "b-package-package@1.2.3",␊
+              "b-package@1.2.3": "b-package@1.2.3",␊
+              "c-package@1.2.3": "c-package@1.2.3",␊
+              "ch-package@1.2.3": "ch-package@1.2.3",␊
+              "e-package@1.2.3": "e-package@1.2.3"␊
+            },␊
+            "@e-package@1.2.3": {␊
+              "@a-package@1.2.3": "@a-package@1.2.3",␊
+              "@b-package": "@b-package",␊
+              "@ch-package@1.2.3": "@ch-package@1.2.3",␊
+              "@e-package@1.2.3": "@e-package@1.2.3",␊
+              "@z-package@1.2.3": "@z-package@1.2.3",␊
+              "b-package-package@1.2.3": "b-package-package@1.2.3",␊
+              "b-package@1.2.3": "b-package@1.2.3",␊
+              "c-package@1.2.3": "c-package@1.2.3",␊
+              "ch-package@1.2.3": "ch-package@1.2.3",␊
+              "e-package@1.2.3": "e-package@1.2.3"␊
+            },␊
+            "@z-package@1.2.3": {␊
+              "@a-package@1.2.3": "@a-package@1.2.3",␊
+              "@b-package": "@b-package",␊
+              "@ch-package@1.2.3": "@ch-package@1.2.3",␊
+              "@e-package@1.2.3": "@e-package@1.2.3",␊
+              "@z-package@1.2.3": "@z-package@1.2.3",␊
+              "b-package-package@1.2.3": "b-package-package@1.2.3",␊
+              "b-package@1.2.3": "b-package@1.2.3",␊
+              "c-package@1.2.3": "c-package@1.2.3",␊
+              "ch-package@1.2.3": "ch-package@1.2.3",␊
+              "e-package@1.2.3": "e-package@1.2.3"␊
+            },␊
+            "b-package@1.2.3": {␊
+              "@a-package@1.2.3": "@a-package@1.2.3",␊
+              "@b-package": "@b-package",␊
+              "@ch-package@1.2.3": "@ch-package@1.2.3",␊
+              "@e-package@1.2.3": "@e-package@1.2.3",␊
+              "@z-package@1.2.3": "@z-package@1.2.3",␊
+              "b-package-package@1.2.3": "b-package-package@1.2.3",␊
+              "b-package@1.2.3": "b-package@1.2.3",␊
+              "c-package@1.2.3": "c-package@1.2.3",␊
+              "ch-package@1.2.3": "ch-package@1.2.3",␊
+              "e-package@1.2.3": "e-package@1.2.3"␊
+            },␊
+            "b-package-package@1.2.3": {␊
+              "@a-package@1.2.3": "@a-package@1.2.3",␊
+              "@b-package": "@b-package",␊
+              "@ch-package@1.2.3": "@ch-package@1.2.3",␊
+              "@e-package@1.2.3": "@e-package@1.2.3",␊
+              "@z-package@1.2.3": "@z-package@1.2.3",␊
+              "b-package-package@1.2.3": "b-package-package@1.2.3",␊
+              "b-package@1.2.3": "b-package@1.2.3",␊
+              "c-package@1.2.3": "c-package@1.2.3",␊
+              "ch-package@1.2.3": "ch-package@1.2.3",␊
+              "e-package@1.2.3": "e-package@1.2.3"␊
+            },␊
+            "c-package@1.2.3": {␊
+              "@a-package@1.2.3": "@a-package@1.2.3",␊
+              "@b-package": "@b-package",␊
+              "@ch-package@1.2.3": "@ch-package@1.2.3",␊
+              "@e-package@1.2.3": "@e-package@1.2.3",␊
+              "@z-package@1.2.3": "@z-package@1.2.3",␊
+              "b-package-package@1.2.3": "b-package-package@1.2.3",␊
+              "b-package@1.2.3": "b-package@1.2.3",␊
+              "c-package@1.2.3": "c-package@1.2.3",␊
+              "ch-package@1.2.3": "ch-package@1.2.3",␊
+              "e-package@1.2.3": "e-package@1.2.3"␊
+            },␊
+            "ch-package@1.2.3": {␊
+              "@a-package@1.2.3": "@a-package@1.2.3",␊
+              "@b-package": "@b-package",␊
+              "@ch-package@1.2.3": "@ch-package@1.2.3",␊
+              "@e-package@1.2.3": "@e-package@1.2.3",␊
+              "@z-package@1.2.3": "@z-package@1.2.3",␊
+              "b-package-package@1.2.3": "b-package-package@1.2.3",␊
+              "b-package@1.2.3": "b-package@1.2.3",␊
+              "c-package@1.2.3": "c-package@1.2.3",␊
+              "ch-package@1.2.3": "ch-package@1.2.3",␊
+              "e-package@1.2.3": "e-package@1.2.3"␊
+            },␊
+            "e-package@1.2.3": {␊
+              "@a-package@1.2.3": "@a-package@1.2.3",␊
+              "@b-package": "@b-package",␊
+              "@ch-package@1.2.3": "@ch-package@1.2.3",␊
+              "@e-package@1.2.3": "@e-package@1.2.3",␊
+              "@z-package@1.2.3": "@z-package@1.2.3",␊
+              "b-package-package@1.2.3": "b-package-package@1.2.3",␊
+              "b-package@1.2.3": "b-package@1.2.3",␊
+              "c-package@1.2.3": "c-package@1.2.3",␊
+              "ch-package@1.2.3": "ch-package@1.2.3",␊
+              "e-package@1.2.3": "e-package@1.2.3"␊
+            }␊
+          }␊
+        }␊
+      }`,
+      pretty: true,
+    }