feat: pnpmfileChecksum (#7662)

* Squashed commit of the following:

commit 912ee1af4d954d192d42cf4a2e6dae56d5bef21d
Author: Zoltan Kochan <z@kochan.io>
Date:   Thu Feb 22 02:22:22 2024 +0100

    revert: moving tarballs to lfs

commit f8943bdfd422c77e27febda9d962e9937c83dd55
Author: khai96_ <hvksmr1996@gmail.com>
Date:   Wed Feb 21 20:35:38 2024 +0700

    refactor: move pnpmfileChecksum to requireHooks

commit 33c90e030f49aa9edf815708f846047d7dec25ca
Merge: d6e74263d 5f4b535be
Author: khai96_ <hvksmr1996@gmail.com>
Date:   Wed Feb 21 12:06:26 2024 +0700

    chore(git): merge

commit d6e74263de8ea474b1c16cd29aac2dbdef40d102
Author: khai96_ <hvksmr1996@gmail.com>
Date:   Wed Feb 21 12:03:13 2024 +0700

    refactor: reuse code

commit 5f4b535bed589bb5eb60ddbbb61534d62e75cfae
Author: Khải <hvksmr1996@gmail.com>
Date:   Wed Feb 21 10:21:35 2024 +0700

    refactor: revert unnecessary bumps

commit ebee6c825d08888413684856c7505d4708c960af
Merge: 82233556d c8e8eca3d
Author: khai96_ <hvksmr1996@gmail.com>
Date:   Wed Feb 21 00:37:50 2024 +0700

    chore(git): merge from main

commit c8e8eca3debb0fb081a614346b9b1a5786b87a5d
Author: Zoltan Kochan <z@kochan.io>
Date:   Tue Feb 20 18:36:11 2024 +0100

    test(mount-modules): use local pnpm in pretest

commit e0488e5ac443b62df3aef9a161c757bc16c1bda3
Author: Zoltan Kochan <z@kochan.io>
Date:   Tue Feb 20 18:28:21 2024 +0100

    fix: unpacking tarballs that appear to be not USTAR or GNU TAR (#7677)

    close #7120

commit 82233556d4162d90a38e11d15136461008169acd
Author: khai96_ <hvksmr1996@gmail.com>
Date:   Tue Feb 20 20:32:47 2024 +0700

    refactor: replace remove with add

commit 30293df6bdc8cc478b9d7b81cb5d09ca48855b89
Merge: 6eb0b3e81 7cb3cfb5b
Author: khai96_ <hvksmr1996@gmail.com>
Date:   Tue Feb 20 20:31:30 2024 +0700

    chore(git): merge from main

commit 6eb0b3e81dea7ced23b4e9683d9500b4a30499a5
Merge: c1fbc11ed e4caa114a
Author: khai96_ <hvksmr1996@gmail.com>
Date:   Tue Feb 20 16:45:23 2024 +0700

    chore(git): merge from main

commit c1fbc11eded093e923644454254b98eb0090292d
Author: khai96_ <hvksmr1996@gmail.com>
Date:   Tue Feb 20 13:59:15 2024 +0700

    fix: pruneLockfile

commit 39a8e75a1cccd8c6f5df838eaf2c07f98c2652dd
Author: khai96_ <hvksmr1996@gmail.com>
Date:   Tue Feb 20 02:46:41 2024 +0700

    lint: fix

commit 839de517487561ddf3d27bb77a1cfd8e373c4274
Author: khai96_ <hvksmr1996@gmail.com>
Date:   Mon Feb 19 20:24:25 2024 +0700

    style: fix

commit 1ec2c1a40fb050221b937878decd9eeef8e9c845
Author: khai96_ <hvksmr1996@gmail.com>
Date:   Mon Feb 19 20:01:00 2024 +0700

    feat: handle absolute path

commit 002edd4484a071638b6e2f43ab9ce76f186aa379
Author: khai96_ <hvksmr1996@gmail.com>
Date:   Mon Feb 19 19:51:33 2024 +0700

    fix: use opts instead of rawConfig

commit d55b687735b598e7a2b235eaed5675eaf1982a40
Author: khai96_ <hvksmr1996@gmail.com>
Date:   Mon Feb 19 19:41:51 2024 +0700

    refactor: remove an unnecessary await

commit bb595f315b8ba422128efc1ff753222c86e93fdf
Author: khai96_ <hvksmr1996@gmail.com>
Date:   Mon Feb 19 14:08:07 2024 +0700

    feat: rawConfig.ignorePnpmfile

commit 0a17c659d303054d770e72279019b9c39e85c95d
Author: khai96_ <hvksmr1996@gmail.com>
Date:   Mon Feb 19 14:04:13 2024 +0700

    feat: read from rawConfig

commit 276379a531163ca6271fa863c27f3c779a6849a4
Author: khai96_ <hvksmr1996@gmail.com>
Date:   Mon Feb 19 13:53:34 2024 +0700

    feat: move pnpmfileChecksum to the option region

commit 3868abdbb25194ef5b279cfea63fab6294d46a8c
Author: Zoltan Kochan <z@kochan.io>
Date:   Sat Feb 17 00:09:19 2024 +0100

    test: fix

commit 95e6554089d30dcee25da144719b28e369d11f10
Author: khai96_ <hvksmr1996@gmail.com>
Date:   Fri Feb 16 23:18:11 2024 +0700

    fix: test

commit 75a131aade4caa322330f6df017abd02aee0ccd9
Author: khai96_ <hvksmr1996@gmail.com>
Date:   Fri Feb 16 23:17:45 2024 +0700

    fix: pnpmfileChecksum not appearing in the lockfile

commit 297f920b0be4671b72481709af43193522b177b3
Merge: 8ac1725a8 c7d056422
Author: khai96_ <hvksmr1996@gmail.com>
Date:   Fri Feb 16 18:12:11 2024 +0700

    chore(git): merge from main

commit 8ac1725a83b3eccfe46b2972a77f7a780aef3564
Author: khai96_ <hvksmr1996@gmail.com>
Date:   Fri Feb 16 18:01:58 2024 +0700

    feat: pnpmfileChecksum

commit 83788d023d478d4e559ebfbaaf2aba6e355358b5
Author: khai96_ <hvksmr1996@gmail.com>
Date:   Fri Feb 16 17:04:02 2024 +0700

    refactor: add explicit type

* fix: update lockfile when new pnpmfile removes deps

* fix: always calculate pnpmfileChecksum

* test: getPnpmfileChecksum

* test(cli): add or change pnpmfile

* refactor: try catch and await

* refactor: pnpmfile hash

* docs: add changesets

---------

Co-authored-by: Zoltan Kochan <z@kochan.io>
This commit is contained in:
Khải
2024-02-24 01:17:38 +07:00
committed by GitHub
parent 3ded840001
commit 086b69cf60
20 changed files with 173 additions and 347 deletions

View File

@@ -0,0 +1,12 @@
---
"@pnpm/resolve-dependencies": minor
"@pnpm/merge-lockfile-changes": minor
"@pnpm/lockfile-types": minor
"@pnpm/prune-lockfile": minor
"@pnpm/lockfile-file": minor
"@pnpm/core": minor
"@pnpm/pnpmfile": minor
"pnpm": minor
---
The checksum of the `.pnpmfile.cjs` is saved into the lockfile. If the pnpmfile gets modified, the lockfile is reanalyzed to apply the changes [#7662](https://github.com/pnpm/pnpm/pull/7662).

View File

@@ -34,6 +34,7 @@
},
"dependencies": {
"@pnpm/core-loggers": "workspace:*",
"@pnpm/crypto.base32-hash": "workspace:*",
"@pnpm/error": "workspace:*",
"@pnpm/hooks.types": "workspace:*",
"@pnpm/lockfile-types": "workspace:*",

View File

@@ -0,0 +1,14 @@
import path from 'path'
import { getPnpmfilePath } from './getPnpmfilePath'
test('getPnpmfilePath() when pnpmfile is undefined', () => {
expect(getPnpmfilePath('PREFIX', undefined)).toBe(path.join('PREFIX', '.pnpmfile.cjs'))
})
test('getPnpmfilePath() when pnpmfile is a relative path', () => {
expect(getPnpmfilePath('PREFIX', 'hooks/pnpm.js')).toBe(path.join('PREFIX', 'hooks/pnpm.js'))
})
test('getPnpmfilePath() when pnpmfile is an absolute path', () => {
expect(getPnpmfilePath('PREFIX', '/global/pnpmfile.cjs')).toBe('/global/pnpmfile.cjs')
})

View File

@@ -0,0 +1,10 @@
import path from 'path'
export function getPnpmfilePath (prefix: string, pnpmfile?: string): string {
if (!pnpmfile) {
pnpmfile = '.pnpmfile.cjs'
} else if (path.isAbsolute(pnpmfile)) {
return pnpmfile
}
return path.join(prefix, pnpmfile)
}

View File

@@ -1,11 +1,12 @@
import path from 'path'
import type { PreResolutionHook, PreResolutionHookContext, PreResolutionHookLogger } from '@pnpm/hooks.types'
import { hookLogger } from '@pnpm/core-loggers'
import { createBase32HashFromFile } from '@pnpm/crypto.base32-hash'
import pathAbsolute from 'path-absolute'
import type { Lockfile } from '@pnpm/lockfile-types'
import type { Log } from '@pnpm/core-loggers'
import type { CustomFetchers } from '@pnpm/fetcher-base'
import { type ImportIndexedPackageAsync } from '@pnpm/store-controller-types'
import { getPnpmfilePath } from './getPnpmfilePath'
import { requirePnpmfile } from './requirePnpmfile'
interface HookContext {
@@ -36,6 +37,7 @@ export interface CookedHooks {
filterLog?: Array<Cook<Required<Hooks>['filterLog']>>
importPackage?: ImportIndexedPackageAsync
fetchers?: CustomFetchers
calculatePnpmfileChecksum?: () => Promise<string | undefined>
}
export function requireHooks (
@@ -48,17 +50,19 @@ export function requireHooks (
const globalPnpmfile = opts.globalPnpmfile && requirePnpmfile(pathAbsolute(opts.globalPnpmfile, prefix), prefix)
let globalHooks: Hooks = globalPnpmfile?.hooks
const pnpmFile = opts.pnpmfile && requirePnpmfile(pathAbsolute(opts.pnpmfile, prefix), prefix) ||
requirePnpmfile(path.join(prefix, '.pnpmfile.cjs'), prefix)
const pnpmfilePath = getPnpmfilePath(prefix, opts.pnpmfile)
const pnpmFile = requirePnpmfile(pnpmfilePath, prefix)
let hooks: Hooks = pnpmFile?.hooks
if (!globalHooks && !hooks) return { afterAllResolved: [], filterLog: [], readPackage: [] }
const calculatePnpmfileChecksum = hooks ? () => createBase32HashFromFile(pnpmfilePath) : undefined
globalHooks = globalHooks || {}
hooks = hooks || {}
const cookedHooks: CookedHooks & Required<Pick<CookedHooks, 'filterLog'>> = {
afterAllResolved: [],
filterLog: [],
readPackage: [],
calculatePnpmfileChecksum,
}
for (const hookName of ['readPackage', 'afterAllResolved'] as const) {
if (globalHooks[hookName]) {

View File

@@ -43,3 +43,20 @@ test('filterLog hook combines with the global hook', () => {
prefix: 'test',
})).toBeFalsy()
})
test('calculatePnpmfileChecksum is undefined when pnpmfile does not exist', async () => {
const hooks = requireHooks(__dirname, { pnpmfile: 'file-that-does-not-exist.js' })
expect(hooks.calculatePnpmfileChecksum).toBeUndefined()
})
test('calculatePnpmfileChecksum resolves to hash string for existing pnpmfile', async () => {
const pnpmfile = path.join(__dirname, 'pnpmfiles/readPackageNoObject.js')
const hooks = requireHooks(__dirname, { pnpmfile })
expect(typeof await hooks.calculatePnpmfileChecksum?.()).toBe('string')
})
test('calculatePnpmfileChecksum is undefined if pnpmfile even when it exports undefined', async () => {
const pnpmfile = path.join(__dirname, 'pnpmfiles/undefined.js')
const hooks = requireHooks(__dirname, { pnpmfile })
expect(hooks.calculatePnpmfileChecksum).toBeUndefined()
})

View File

@@ -18,6 +18,9 @@
{
"path": "../../packages/core-loggers"
},
{
"path": "../../packages/crypto.base32-hash"
},
{
"path": "../../packages/error"
},

View File

@@ -87,6 +87,9 @@ function normalizeLockfile (lockfile: InlineSpecifiersLockfile, opts: NormalizeL
if (!lockfileToSave.packageExtensionsChecksum) {
delete lockfileToSave.packageExtensionsChecksum
}
if (!lockfileToSave.pnpmfileChecksum) {
delete lockfileToSave.pnpmfileChecksum
}
return lockfileToSave
}

View File

@@ -137,7 +137,7 @@ export function createLockfileObject (
autoInstallPeers: boolean
excludeLinksFromLockfile: boolean
}
) {
): Lockfile {
const importers = importerIds.reduce((acc, importerId) => {
acc[importerId] = {
dependencies: {},

View File

@@ -39,6 +39,7 @@ const ROOT_KEYS: readonly RootKey[] = [
'onlyBuiltDependencies',
'overrides',
'packageExtensionsChecksum',
'pnpmfileChecksum',
'patchedDependencies',
'dependencies',
'optionalDependencies',

View File

@@ -19,6 +19,7 @@ export interface Lockfile {
overrides?: Record<string, string>
packageExtensionsChecksum?: string
patchedDependencies?: Record<string, PatchFile>
pnpmfileChecksum?: string
settings?: LockfileSettings
}

View File

@@ -9,6 +9,10 @@ export function mergeLockfileChanges (ours: Lockfile, theirs: Lockfile): Lockfil
? theirs.lockfileVersion
: ours.lockfileVersion,
}
const pnpmfileChecksum = ours.pnpmfileChecksum ?? theirs.pnpmfileChecksum // Install should automatically detect change later
if (pnpmfileChecksum) {
newLockfile.pnpmfileChecksum = pnpmfileChecksum
}
for (const importerId of Array.from(new Set([...Object.keys(ours.importers), ...Object.keys(theirs.importers)]))) {
newLockfile.importers[importerId] = {

View File

@@ -105,6 +105,9 @@ export function pruneLockfile (
if (!isEmpty(lockfileDevDependencies)) {
updatedImporter.devDependencies = lockfileDevDependencies
}
if (lockfile.pnpmfileChecksum) {
prunedLockfile.pnpmfileChecksum = lockfile.pnpmfileChecksum
}
return pruneSharedLockfile(prunedLockfile, opts)
}

View File

@@ -70,6 +70,8 @@ export interface StrictInstallOptions {
nodeLinker: 'isolated' | 'hoisted' | 'pnp'
nodeVersion: string
packageExtensions: Record<string, PackageExtension>
pnpmfile: string
ignorePnpmfile: boolean
packageManager: {
name: string
version: string
@@ -79,6 +81,7 @@ export interface StrictInstallOptions {
readPackage?: ReadPackageHook[]
preResolution?: (ctx: PreResolutionHookContext) => Promise<void>
afterAllResolved?: Array<(lockfile: Lockfile) => Lockfile | Promise<Lockfile>>
calculatePnpmfileChecksum?: () => Promise<string | undefined>
}
sideEffectsCacheRead: boolean
sideEffectsCacheWrite: boolean

View File

@@ -321,6 +321,7 @@ export async function mutateModules (
)
}
const packageExtensionsChecksum = isEmpty(opts.packageExtensions ?? {}) ? undefined : createObjectChecksum(opts.packageExtensions!)
const pnpmfileChecksum = await opts.hooks.calculatePnpmfileChecksum?.()
const patchedDependencies = opts.ignorePackageManifest
? ctx.wantedLockfile.patchedDependencies
: (opts.patchedDependencies ? await calcPatchHashes(opts.patchedDependencies, opts.lockfileDir) : {})
@@ -342,6 +343,7 @@ export async function mutateModules (
onlyBuiltDependencies: opts.onlyBuiltDependencies,
packageExtensionsChecksum,
patchedDependencies,
pnpmfileChecksum,
})
outdatedLockfileSettings = outdatedLockfileSettingName != null
if (frozenLockfile && outdatedLockfileSettings) {
@@ -361,6 +363,7 @@ export async function mutateModules (
ctx.wantedLockfile.neverBuiltDependencies = opts.neverBuiltDependencies
ctx.wantedLockfile.onlyBuiltDependencies = opts.onlyBuiltDependencies
ctx.wantedLockfile.packageExtensionsChecksum = packageExtensionsChecksum
ctx.wantedLockfile.pnpmfileChecksum = pnpmfileChecksum
ctx.wantedLockfile.patchedDependencies = patchedDependencies
} else if (!frozenLockfile) {
ctx.wantedLockfile.settings = {
@@ -715,6 +718,7 @@ function getOutdatedLockfileSetting (
patchedDependencies,
autoInstallPeers,
excludeLinksFromLockfile,
pnpmfileChecksum,
}: {
neverBuiltDependencies?: string[]
onlyBuiltDependencies?: string[]
@@ -723,6 +727,7 @@ function getOutdatedLockfileSetting (
patchedDependencies?: Record<string, PatchFile>
autoInstallPeers?: boolean
excludeLinksFromLockfile?: boolean
pnpmfileChecksum?: string
}
) {
if (!equals(lockfile.overrides ?? {}, overrides ?? {})) {
@@ -746,6 +751,9 @@ function getOutdatedLockfileSetting (
if (lockfile.settings?.excludeLinksFromLockfile != null && lockfile.settings.excludeLinksFromLockfile !== excludeLinksFromLockfile) {
return 'settings.excludeLinksFromLockfile'
}
if (lockfile.pnpmfileChecksum !== pnpmfileChecksum) {
return 'pnpmfileChecksum'
}
return null
}

View File

@@ -79,12 +79,12 @@ function toLockfileDependency (
opts.lockfileIncludeTarballUrl
)
const newResolvedDeps = updateResolvedDeps(
opts.prevSnapshot?.dependencies ?? {},
{},
opts.updatedDeps,
opts.depGraph
)
const newResolvedOptionalDeps = updateResolvedDeps(
opts.prevSnapshot?.optionalDependencies ?? {},
{},
opts.updatedOptionalDeps,
opts.depGraph
)

347
pnpm-lock.yaml generated
View File

@@ -1881,6 +1881,9 @@ importers:
'@pnpm/core-loggers':
specifier: workspace:*
version: link:../../packages/core-loggers
'@pnpm/crypto.base32-hash':
specifier: workspace:*
version: link:../../packages/crypto.base32-hash
'@pnpm/error':
specifier: workspace:*
version: link:../../packages/error
@@ -4466,6 +4469,9 @@ importers:
'@pnpm/core-loggers':
specifier: workspace:*
version: link:../packages/core-loggers
'@pnpm/crypto.base32-hash':
specifier: workspace:*
version: link:../packages/crypto.base32-hash
'@pnpm/default-reporter':
specifier: workspace:*
version: link:../cli/default-reporter
@@ -6704,7 +6710,6 @@ packages:
/@babel/plugin-proposal-dynamic-import@7.18.6(@babel/core@7.23.9):
resolution: {integrity: sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==}
engines: {node: '>=6.9.0'}
deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-dynamic-import instead.
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
@@ -6982,7 +6987,6 @@ packages:
/@changesets/cli@2.27.1:
resolution: {integrity: sha512-iJ91xlvRnnrJnELTp4eJJEOPjgpF3NOh4qeQehM6Ugiz9gJPRZ2t+TsXun6E3AMN4hScZKjqVXl0TX+C7AB3ZQ==}
hasBin: true
dependencies:
'@babel/runtime': 7.23.9
'@changesets/apply-release-plan': 7.0.0
@@ -7131,7 +7135,6 @@ packages:
/@commitlint/cli@17.8.1:
resolution: {integrity: sha512-ay+WbzQesE0Rv4EQKfNbSMiJJ12KdKTDzIt0tcK4k11FdsWmtwP0Kp1NWMOUswfIWo6Eb7p7Ln721Nx9FLNBjg==}
engines: {node: '>=v14'}
hasBin: true
dependencies:
'@commitlint/format': 17.8.1
'@commitlint/lint': 17.8.1
@@ -7246,7 +7249,6 @@ packages:
/@commitlint/prompt-cli@17.8.1:
resolution: {integrity: sha512-dkjxr0ah2R9P/vsz/s128kNEar/5zjr3TN3LOvA8kBiSrrbfF560gnoxAh+KgQ5sAc8lMrG+z4dVYvzSkXyfDQ==}
engines: {node: '>=v14'}
hasBin: true
dependencies:
'@commitlint/prompt': 17.8.1
execa: 5.1.1
@@ -8495,7 +8497,6 @@ packages:
/@pnpm/meta-updater@1.0.0:
resolution: {integrity: sha512-ifhDDFPGgM7OCVqX+XlpvLJzGzQVIjWyBcHTGTOR2q/b2rjxfIl9GDcfETkTjKOe8EotbXwMo2EAmbtXbjJ1Kg==}
engines: {node: '>=10.12'}
hasBin: true
dependencies:
'@pnpm/find-workspace-dir': 6.0.2
'@pnpm/find-workspace-packages': 6.0.9(@pnpm/logger@5.0.0)
@@ -8558,7 +8559,6 @@ packages:
/@pnpm/nopt@0.2.1:
resolution: {integrity: sha512-zkgDE6q3Y6KeZPjqXCk/hRQ2t6iw9JXbdnYZghwpe/HR73e4VmV5JZ5QSFypmSd5Sx4+gjNfAqME5BVAOBCk9g==}
engines: {node: '>=6'}
hasBin: true
dependencies:
abbrev: 1.1.1
@@ -8650,7 +8650,6 @@ packages:
/@pnpm/patch-package@0.0.0:
resolution: {integrity: sha512-B17ZK4hUAKHDSeSlOg0N+jd+5TuxiSB/2jJcHM0oncf+W5FXslILITpwyIWut4p2P2RCgtSgTF9cSXEX/dGYQA==}
engines: {node: '>=14', npm: '>5'}
hasBin: true
dependencies:
'@yarnpkg/lockfile': 1.1.0
chalk: 4.1.2
@@ -8710,7 +8709,6 @@ packages:
/@pnpm/registry-mock@3.25.0(typanion@3.14.0):
resolution: {integrity: sha512-rSKgbINc7T9s0hn8K/YHTJtMaUG2LWmXybzmiVNwDwrNx1SMHbLsZ+QafHz0wyktQhPQB2274BAd72jYLgFHFg==}
engines: {node: '>=10.13'}
hasBin: true
dependencies:
anonymous-npm-registry-client: 0.2.0
execa: 5.1.1
@@ -8745,7 +8743,6 @@ packages:
/@pnpm/self-installer@2.2.1:
resolution: {integrity: sha512-aefLe96wAWghkx6q1PwbVS1Iz1iGE+HKwkTmtzWLFXeGhbknaIdG2voMwaBGIYGCSxm8sDKR1uLO4aRRAYuc+Q==}
engines: {node: '>=4'}
hasBin: true
dev: false
/@pnpm/semver-diff@1.1.0:
@@ -8803,7 +8800,6 @@ packages:
/@pnpm/which@3.0.1:
resolution: {integrity: sha512-4ivtS12Oni9axgGefaq+gTPD+7N0VPCFdxFH8izCaWfnxLQblX3iVxba+25ZoagStlzUs8sQg8OMKlCVhyGWTw==}
engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
hasBin: true
dependencies:
isexe: 2.0.0
dev: false
@@ -9634,7 +9630,6 @@ packages:
/@yarnpkg/shell@4.0.0(typanion@3.14.0):
resolution: {integrity: sha512-Yk2gyiQvsoee/jXP9q0jMl412Nx27LYu+P1O4DHuxeutL9qtd6t3Ktuv+zZmOzFc6gMQ7+/6mQFPo3/LlXZM3w==}
engines: {node: '>=18.12.0'}
hasBin: true
dependencies:
'@yarnpkg/fslib': 3.0.2
'@yarnpkg/parsers': 3.0.0
@@ -9672,7 +9667,6 @@ packages:
/@zkochan/js-yaml@0.0.6:
resolution: {integrity: sha512-nzvgl3VfhcELQ8LyVrYOru+UtAy1nrygk2+AGbTm8a5YcO6o8lSjAT+pfg3vJWxIoZKOUhrK6UU7xW/+00kQrg==}
hasBin: true
dependencies:
argparse: 2.0.1
@@ -9700,13 +9694,11 @@ packages:
/@zkochan/which@2.0.3:
resolution: {integrity: sha512-C1ReN7vt2/2O0fyTsx5xnbQuxBrmG5NMSbcIkPKCCfCTJgpZBsuRYzFXHj3nVq8vTfK7vxHUmzfCpSHgO7j4rg==}
engines: {node: '>= 8'}
hasBin: true
dependencies:
isexe: 2.0.0
/JSONStream@1.3.5:
resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==}
hasBin: true
dependencies:
jsonparse: 1.3.1
through: 2.3.8
@@ -9741,7 +9733,6 @@ packages:
/acorn@8.11.3:
resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==}
engines: {node: '>=0.4.0'}
hasBin: true
/adm-zip@0.5.10:
resolution: {integrity: sha512-x0HvcHqVJNTPk/Bw8JbLWlWoo6Wwnsug0fnYYro1HBrjxZ3G7/AZk7Ahv8JwDe1uIcz8eBqvu86FuF1POiG7vQ==}
@@ -10281,7 +10272,6 @@ packages:
/browserslist@4.22.3:
resolution: {integrity: sha512-UAp55yfwNv0klWNapjs/ktHoguxuQNGnOzxYmfnXIS+8AsRDZkSDxg7R1AX3GKzn078SBI5dzwzj/Yx0Or0e3A==}
engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
hasBin: true
dependencies:
caniuse-lite: 1.0.30001587
electron-to-chromium: 1.4.668
@@ -10344,7 +10334,6 @@ packages:
/c8@7.14.0:
resolution: {integrity: sha512-i04rtkkcNcCf7zsQcSv/T9EbUn4RXQ6mropeMcjFOsQXQ0iGLAr/xT6TImQg4+U9hmNpN9XdvPkjUL1IzbgxJw==}
engines: {node: '>=10.12.0'}
hasBin: true
dependencies:
'@bcoe/v8-coverage': 0.2.3
'@istanbuljs/schema': 0.1.3
@@ -10763,7 +10752,6 @@ packages:
/concurrently@8.2.1:
resolution: {integrity: sha512-nVraf3aXOpIcNud5pB9M82p1tynmZkrSGQ1p6X/VY8cJ+2LMVqAgXsJxYYefACSHbTYlm92O1xuhdGTjwoEvbQ==}
engines: {node: ^14.13.0 || >=16.0.0}
hasBin: true
dependencies:
chalk: 4.1.2
date-fns: 2.30.0
@@ -10824,7 +10812,6 @@ packages:
/conventional-commits-parser@4.0.0:
resolution: {integrity: sha512-WRv5j1FsVM5FISJkoYMR6tPk07fkKT0UodruX4je86V4owk451yjXAKzKAPOs9l7y59E2viHUS9eQ+dfUA9NSg==}
engines: {node: '>=14'}
hasBin: true
dependencies:
JSONStream: 1.3.5
is-text-path: 1.0.1
@@ -10914,7 +10901,6 @@ packages:
/create-jest@29.7.0(@babel/types@7.23.9)(@types/node@18.19.15)(ts-node@10.9.2(@types/node@18.19.15)(typescript@5.3.3)):
resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
hasBin: true
dependencies:
'@jest/types': 29.6.3
chalk: 4.1.2
@@ -10938,7 +10924,6 @@ packages:
/cross-env@7.0.3:
resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==}
engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'}
hasBin: true
dependencies:
cross-spawn: 7.0.3
dev: true
@@ -10984,7 +10969,6 @@ packages:
/cspell-gitignore@7.3.8:
resolution: {integrity: sha512-vJzCOUEiw6/MwV/U4Ux3bgSdj9mXB+X5eHL+qzVoyFI7ArlvrkuGTL+iFJThQcS8McM3SGqtvaBNCiKBmAeCkA==}
engines: {node: '>=16'}
hasBin: true
dependencies:
cspell-glob: 7.3.8
find-up: 5.0.0
@@ -11000,7 +10984,6 @@ packages:
/cspell-grammar@7.3.8:
resolution: {integrity: sha512-nTjAlMAZAVSFhBd9U3MB9l5FfC5JCCr9DTOA2wWxusVOm+36MbSEH90ucLPkhPa9/+0HtbpDhqVMwXCZllRpsg==}
engines: {node: '>=16'}
hasBin: true
dependencies:
'@cspell/cspell-pipe': 7.3.8
'@cspell/cspell-types': 7.3.8
@@ -11058,7 +11041,6 @@ packages:
/cspell@7.3.8:
resolution: {integrity: sha512-8AkqsBQAMsKYV5XyJLB6rBs5hgspL4+MPOg6mBKG2j5EvQgRVc6dIfAPWDNLpIeW2a3+7K5BIWqKHapKPeiknQ==}
engines: {node: '>=16'}
hasBin: true
dependencies:
'@cspell/cspell-json-reporter': 7.3.8
'@cspell/cspell-pipe': 7.3.8
@@ -11470,7 +11452,6 @@ packages:
/envinfo@7.8.1:
resolution: {integrity: sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==}
engines: {node: '>=4'}
hasBin: true
/err-code@2.0.3:
resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==}
@@ -11565,7 +11546,6 @@ packages:
/esbuild@0.19.12:
resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==}
engines: {node: '>=12'}
hasBin: true
optionalDependencies:
'@esbuild/aix-ppc64': 0.19.12
'@esbuild/android-arm': 0.19.12
@@ -11826,7 +11806,6 @@ packages:
/eslint@8.56.0:
resolution: {integrity: sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
hasBin: true
dependencies:
'@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0)
'@eslint-community/regexpp': 4.10.0
@@ -11885,7 +11864,6 @@ packages:
/esprima@4.0.1:
resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==}
engines: {node: '>=4'}
hasBin: true
/esquery@1.5.0:
resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==}
@@ -12191,7 +12169,6 @@ packages:
/findup@0.1.5:
resolution: {integrity: sha512-Udxo3C9A6alt2GZ2MNsgnIvX7De0V3VGxeP/x98NSVgSlizcDHdmJza61LI7zJy4OEtSiJyE72s0/+tBl5/ZxA==}
engines: {node: '>=0.6'}
hasBin: true
dependencies:
colors: 0.6.2
commander: 2.1.0
@@ -12390,7 +12367,6 @@ packages:
/fuse-native@2.2.6:
resolution: {integrity: sha512-Y5wXd7vUsWWWIIHbjluv7jKZgPZaSVA5YWaW3I5fXIJfcGWL6IRUgoBUveQAq+D8cG9cCiGNahv9CeToccCXrw==}
hasBin: true
dependencies:
fuse-shared-library: 1.1.1
nanoresource: 1.3.0
@@ -12533,7 +12509,6 @@ packages:
/git-raw-commits@2.0.11:
resolution: {integrity: sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A==}
engines: {node: '>=10'}
hasBin: true
dependencies:
dargs: 7.0.0
lodash: 4.17.21
@@ -12577,7 +12552,6 @@ packages:
/glob@10.3.10:
resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==}
engines: {node: '>=16 || 14 >=14.17'}
hasBin: true
dependencies:
foreground-child: 3.1.1
jackspeak: 2.3.6
@@ -12722,7 +12696,6 @@ packages:
/handlebars@4.7.7:
resolution: {integrity: sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==}
engines: {node: '>=0.4.7'}
hasBin: true
dependencies:
minimist: 1.2.8
neo-async: 2.6.2
@@ -12738,7 +12711,6 @@ packages:
/har-validator@5.1.5:
resolution: {integrity: sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==}
engines: {node: '>=6'}
deprecated: this library is no longer supported
dependencies:
ajv: 6.12.6
har-schema: 2.0.0
@@ -13003,7 +12975,6 @@ packages:
/import-local@3.1.0:
resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==}
engines: {node: '>=8'}
hasBin: true
dependencies:
pkg-dir: 4.2.0
resolve-cwd: 3.0.0
@@ -13196,7 +13167,6 @@ packages:
/is-docker@2.2.1:
resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==}
engines: {node: '>=8'}
hasBin: true
dev: false
/is-extglob@2.1.1:
@@ -13902,7 +13872,6 @@ packages:
/js-yaml@3.14.1:
resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==}
hasBin: true
dependencies:
argparse: 1.0.10
esprima: 4.0.1
@@ -13917,7 +13886,6 @@ packages:
/jsesc@2.5.2:
resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==}
engines: {node: '>=4'}
hasBin: true
dev: true
/json-buffer@3.0.1:
@@ -13944,7 +13912,6 @@ packages:
/json5@2.2.3:
resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==}
engines: {node: '>=6'}
hasBin: true
/jsonfile@4.0.0:
resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==}
@@ -14039,7 +14006,6 @@ packages:
/lcov-result-merger@3.3.0:
resolution: {integrity: sha512-Krg9p24jGaIT93RBMA8b5qLHDEiAXTavaTiEdMAZaJS93PsBKIcg/89cw/8rgeSfRuQX+I9x7h73SHFjCZ6cHg==}
engines: {node: '>=10'}
hasBin: true
dependencies:
through2: 2.0.5
vinyl: 2.2.1
@@ -14520,12 +14486,10 @@ packages:
/mime@1.6.0:
resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==}
engines: {node: '>=4'}
hasBin: true
/mime@3.0.0:
resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==}
engines: {node: '>=10.0.0'}
hasBin: true
/mimic-fn@1.2.0:
resolution: {integrity: sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==}
@@ -14666,14 +14630,12 @@ packages:
/mkdirp@0.5.6:
resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==}
hasBin: true
dependencies:
minimist: 1.2.8
/mkdirp@1.0.4:
resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==}
engines: {node: '>=10'}
hasBin: true
/module-not-found-error@1.0.1:
resolution: {integrity: sha512-pEk4ECWQXV6z2zjhRZUongnLJNUeGQJ3w6OQ5ctGwD+i5o93qjRQUk2Rt6VdNeu3sEP0AB4LcfvdebpxBRVr4g==}
@@ -14728,12 +14690,10 @@ packages:
/ncp@2.0.0:
resolution: {integrity: sha512-zIdGUrPRFTUELUvr3Gmc7KZ2Sw/h1PiVM0Af/oHB6zgnV1ikqSfRk+TOufi79aHYCW3NiOXmr1BP5nWbzojLaA==}
hasBin: true
/ndjson@2.0.0:
resolution: {integrity: sha512-nGl7LRGrzugTtaFcJMhLbpzJM6XdivmbkdlaGcrk/LXg2KL/YBC6z1g70xh0/al+oFuVFP8N8kiWRucmeEH/qQ==}
engines: {node: '>=10'}
hasBin: true
dependencies:
json-stringify-safe: 5.0.1
minimist: 1.2.8
@@ -14770,7 +14730,6 @@ packages:
/nm-prune@5.0.0:
resolution: {integrity: sha512-DjLCuKmAP5OEPOn7H/UyigDSj0DeUO6qcrrSo2Y5jPTYbdKXqNpLafEFGoNNhH9v+ChBLlmc5CRN1YVvZIQsOQ==}
engines: {node: '>=10'}
hasBin: true
dependencies:
enquirer: 2.4.1
find-root: 1.1.0
@@ -14824,14 +14783,12 @@ packages:
/node-gyp-build@4.8.0:
resolution: {integrity: sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og==}
hasBin: true
dev: false
optional: true
/node-gyp@10.0.1:
resolution: {integrity: sha512-gg3/bHehQfZivQVfqIyy8wTdSymF9yTyP4CJifK73imyNMU8AIGQE2pUa7dNWfmMeG9cDVF2eehiRMv0LC1iAg==}
engines: {node: ^16.14.0 || >=18.0.0}
hasBin: true
dependencies:
env-paths: 2.2.1
exponential-backoff: 3.1.1
@@ -14857,14 +14814,12 @@ packages:
/nopt@1.0.10:
resolution: {integrity: sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==}
hasBin: true
dependencies:
abbrev: 1.1.1
/nopt@7.2.0:
resolution: {integrity: sha512-CVDtwCdhYIvnAzFoJ6NJ6dX3oga9/HyciQDnG1vQDjSLMeKLJ4A93ZqYKDrgYSr1FBY5/hMYC+2VCi24pgpkGA==}
engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
hasBin: true
dependencies:
abbrev: 2.0.0
dev: false
@@ -14955,7 +14910,6 @@ packages:
/npm-packlist@5.1.3:
resolution: {integrity: sha512-263/0NGrn32YFYi4J533qzrQ/krmmrWwhKkzwTuM4f/07ug51odoaNjUexxO4vxlzURHcmYMH1QjvHjsNDKLVg==}
engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
hasBin: true
dependencies:
glob: 8.1.0
ignore-walk: 5.0.1
@@ -15077,7 +15031,6 @@ packages:
/opt-cli@1.5.1:
resolution: {integrity: sha512-iRFQBiQjXZ+LX/8pis04prUhS6FOYcJiZRouofN3rUJEB282b/e0s3jp9vT7aHgXY6TUpgPwu12f0i+qF40Kjw==}
hasBin: true
dependencies:
commander: 2.9.0
lodash.clone: 4.3.2
@@ -15389,7 +15342,6 @@ packages:
/pidtree@0.6.0:
resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==}
engines: {node: '>=0.10'}
hasBin: true
dev: true
/pify@3.0.0:
@@ -15405,7 +15357,6 @@ packages:
/pino@6.14.0:
resolution: {integrity: sha512-iuhEDel3Z3hF9Jfe44DPXR8l07bhjuFY3GMHIXbjnY9XcafbyDDwl2sN2vw2GjMPf5Nkoe+OFao7ffn9SXaKDg==}
hasBin: true
dependencies:
fast-redact: 3.3.0
fast-safe-stringify: 2.1.1
@@ -15428,7 +15379,6 @@ packages:
/pkg-fetch@3.4.2:
resolution: {integrity: sha512-0+uijmzYcnhC0hStDjm/cl2VYdrmVVBpe7Q8k9YBojxmR5tG8mvR9/nooQq3QSXiQqORDVOTY3XqMEqJVIzkHA==}
hasBin: true
dependencies:
chalk: 4.1.2
fs-extra: 9.1.0
@@ -15479,7 +15429,6 @@ packages:
/prebuild-install@7.1.1:
resolution: {integrity: sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==}
engines: {node: '>=10'}
hasBin: true
dependencies:
detect-libc: 2.0.2
expand-template: 2.0.3
@@ -15514,7 +15463,6 @@ packages:
/prettier@2.8.8:
resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==}
engines: {node: '>=10.13.0'}
hasBin: true
dev: true
/pretty-bytes@4.0.2:
@@ -15655,7 +15603,6 @@ packages:
/publish-packed@4.1.2:
resolution: {integrity: sha512-jfgaVcWMSIY8Bw2iVVcSo25SFI72x9LwuWsAxrBcm7ZrdbLz2Y8gErhlEX7VZxJZeiCihcR7XAOyjU95MywFVw==}
engines: {node: '>=12.10'}
hasBin: true
dependencies:
all-module-paths: 0.10.7
execa: 5.1.1
@@ -15743,7 +15690,6 @@ packages:
/rc@1.2.8:
resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==}
hasBin: true
dependencies:
deep-extend: 0.6.0
ini: 1.3.8
@@ -15951,7 +15897,6 @@ packages:
/request@2.88.0:
resolution: {integrity: sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==}
engines: {node: '>= 4'}
deprecated: request has been deprecated, see https://github.com/request/request/issues/3142
dependencies:
aws-sign2: 0.7.0
aws4: 1.12.0
@@ -15977,7 +15922,6 @@ packages:
/request@2.88.2:
resolution: {integrity: sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==}
engines: {node: '>= 6'}
deprecated: request has been deprecated, see https://github.com/request/request/issues/3142
dependencies:
aws-sign2: 0.7.0
aws4: 1.12.0
@@ -16068,7 +16012,6 @@ packages:
/resolve@1.22.8:
resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==}
hasBin: true
dependencies:
is-core-module: 2.13.1
path-parse: 1.0.7
@@ -16117,19 +16060,16 @@ packages:
/rimraf@2.4.5:
resolution: {integrity: sha512-J5xnxTyqaiw06JjMftq7L9ouA448dw/E7dKghkP9WpKNuwmARNNg+Gk8/u5ryb9N/Yo2+z3MCwuqFK/+qPOPfQ==}
hasBin: true
dependencies:
glob: 6.0.4
/rimraf@2.7.1:
resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==}
hasBin: true
dependencies:
glob: 7.2.3
/rimraf@3.0.2:
resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==}
hasBin: true
dependencies:
glob: 7.2.3
@@ -16256,7 +16196,6 @@ packages:
/semver@7.5.4:
resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==}
engines: {node: '>=10'}
hasBin: true
dependencies:
lru-cache: 6.0.0
dev: true
@@ -16264,7 +16203,6 @@ packages:
/semver@7.6.0:
resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==}
engines: {node: '>=10'}
hasBin: true
dependencies:
lru-cache: 6.0.0
@@ -16353,7 +16291,6 @@ packages:
/shelljs@0.8.5:
resolution: {integrity: sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==}
engines: {node: '>=4'}
hasBin: true
dependencies:
glob: 7.2.3
interpret: 1.4.0
@@ -16371,7 +16308,6 @@ packages:
/shx@0.3.4:
resolution: {integrity: sha512-N6A9MLVqjxZYcVn8hLmtneQWIJtp8IKzMP4eMnx+nqkvXoqinUPCbUFLp2UcWTEIUONhlk0ewxr/jaVGlc+J+g==}
engines: {node: '>=6'}
hasBin: true
dependencies:
minimist: 1.2.8
shelljs: 0.8.5
@@ -16463,7 +16399,6 @@ packages:
/smartwrap@2.0.2:
resolution: {integrity: sha512-vCsKNQxb7PnCNd2wY1WClWifAc2lwqsG8OaswpJkVJsvMGcnEntdTCDajZCkk93Ay1U3t/9puJmb525Rg5MZBA==}
engines: {node: '>=6'}
hasBin: true
dependencies:
array.prototype.flat: 1.3.2
breakword: 1.0.6
@@ -16596,7 +16531,6 @@ packages:
/sshpk@1.18.0:
resolution: {integrity: sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==}
engines: {node: '>=0.10.0'}
hasBin: true
dependencies:
asn1: 0.2.6
assert-plus: 1.0.0
@@ -16852,7 +16786,6 @@ packages:
/symlink-dir@5.2.1:
resolution: {integrity: sha512-HfqqI7BoCx3+482BUfoR1sXAFx5G90KrWImT5/J/a+HZWvzMTTA/hYKh2030WFYn7OwRRUAoMCQvqlwBMnhBUw==}
engines: {node: '>=12.10'}
hasBin: true
dependencies:
better-path-resolve: 1.0.0
rename-overwrite: 5.0.0
@@ -16860,7 +16793,6 @@ packages:
/syncpack@8.5.14:
resolution: {integrity: sha512-+ESXgFXgLEievTVui2TQ/ejdPSX1hb+EXZYSrZfNOoFT2IvaAzGT9OQfiXYjka7ao3fRru9pRtsFoWTy1vyXCQ==}
engines: {node: '>=10'}
hasBin: true
dependencies:
chalk: 4.1.2
commander: 10.0.0
@@ -17020,7 +16952,6 @@ packages:
/touch@3.1.0:
resolution: {integrity: sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==}
hasBin: true
dependencies:
nopt: 1.0.10
@@ -17038,7 +16969,6 @@ packages:
/tree-kill@1.2.2:
resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==}
hasBin: true
/treeify@1.1.0:
resolution: {integrity: sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A==}
@@ -17202,7 +17132,6 @@ packages:
/tty-table@4.2.3:
resolution: {integrity: sha512-Fs15mu0vGzCrj8fmJNP7Ynxt5J7praPXqFN0leZeZBXJwkMxv9cb2D454k1ltrtUSJbZ4yH4e0CynsHLxmUfFA==}
engines: {node: '>=8.0.0'}
hasBin: true
dependencies:
chalk: 4.1.2
csv: 5.5.3
@@ -17332,12 +17261,10 @@ packages:
/typescript@5.3.3:
resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==}
engines: {node: '>=14.17'}
hasBin: true
/uglify-js@3.17.4:
resolution: {integrity: sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==}
engines: {node: '>=0.8.0'}
hasBin: true
optional: true
/uid-number@0.0.6:
@@ -17475,12 +17402,9 @@ packages:
/uuid@3.4.0:
resolution: {integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==}
deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.
hasBin: true
/uuid@9.0.1:
resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==}
hasBin: true
dev: false
/v8-compile-cache-lib@3.0.1:
@@ -17567,7 +17491,6 @@ packages:
/verdaccio@5.20.1(typanion@3.14.0):
resolution: {integrity: sha512-zKQXYubQOfl2w09gO9BR7U9ZZkFPPby8tvV+na86/2vGZnY79kNSVnSbK8CM1bpJHTCQ80AGsmIGovg2FgXhdQ==}
engines: {node: '>=12.18'}
hasBin: true
dependencies:
'@verdaccio/config': 6.0.0-6-next.55
'@verdaccio/core': 6.0.0-6-next.55
@@ -17765,7 +17688,6 @@ packages:
/which@1.3.1:
resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==}
hasBin: true
dependencies:
isexe: 2.0.0
dev: true
@@ -17773,14 +17695,12 @@ packages:
/which@2.0.2:
resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
engines: {node: '>= 8'}
hasBin: true
dependencies:
isexe: 2.0.0
/which@3.0.1:
resolution: {integrity: sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==}
engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
hasBin: true
dependencies:
isexe: 2.0.0
dev: true
@@ -17788,7 +17708,6 @@ packages:
/which@4.0.0:
resolution: {integrity: sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==}
engines: {node: ^16.13.0 || >=18.0.0}
hasBin: true
dependencies:
isexe: 3.1.1
@@ -18070,259 +17989,5 @@ packages:
dev: false
time:
/@babel/core@7.23.9: '2024-01-25T16:57:56.838Z'
/@babel/plugin-proposal-dynamic-import@7.18.6: '2022-06-27T19:49:50.843Z'
/@babel/plugin-transform-modules-commonjs@7.23.3: '2023-11-09T07:04:12.992Z'
/@babel/preset-typescript@7.23.3: '2023-11-09T07:04:16.375Z'
/@babel/types@7.23.9: '2024-01-25T16:57:51.834Z'
/@changesets/cli@2.27.1: '2023-11-28T11:18:23.079Z'
/@commitlint/cli@17.8.1: '2023-10-20T12:09:20.185Z'
/@commitlint/config-conventional@17.8.1: '2023-10-20T12:09:20.694Z'
/@commitlint/prompt-cli@17.8.1: '2023-10-20T12:09:23.467Z'
/@gwhitney/detect-indent@7.0.1: '2022-11-22T14:07:22.341Z'
/@pnpm/builder.policy@1.1.0: '2023-10-07T22:16:55.698Z'
/@pnpm/byline@1.0.0: '2021-10-31T23:25:00.031Z'
/@pnpm/colorize-semver-diff@1.0.1: '2020-10-25T15:50:17.812Z'
/@pnpm/config.env-replace@1.1.0: '2023-04-04T18:59:45.025Z'
/@pnpm/exec@2.0.0: '2020-10-29T23:51:01.271Z'
/@pnpm/fs.packlist@1.0.3: '2024-01-22T09:17:00.735Z'
/@pnpm/hosted-git-info@1.0.0: '2024-02-05T14:40:06.830Z'
/@pnpm/log.group@1.0.1: '2023-10-21T01:56:15.610Z'
/@pnpm/logger@5.0.0: '2022-10-14T13:56:04.285Z'
/@pnpm/meta-updater@1.0.0: '2023-08-02T15:08:06.459Z'
/@pnpm/network.agent@1.0.1: '2024-02-13T13:27:13.674Z'
/@pnpm/node-fetch@1.0.0: '2023-04-19T11:13:43.487Z'
/@pnpm/nopt@0.2.1: '2021-06-01T19:45:54.552Z'
/@pnpm/npm-conf@2.2.2: '2023-06-14T04:08:06.108Z'
/@pnpm/npm-lifecycle@3.0.1: '2024-02-12T21:42:14.112Z'
/@pnpm/npm-package-arg@1.0.0: '2022-06-28T12:48:31.287Z'
/@pnpm/os.env.path-extender@0.2.12: '2023-10-21T04:28:56.803Z'
/@pnpm/patch-package@0.0.0: '2023-06-17T11:49:20.604Z'
/@pnpm/ramda@0.28.1: '2022-08-03T13:56:59.597Z'
/@pnpm/registry-mock@3.25.0: '2024-02-08T22:03:39.172Z'
/@pnpm/semver-diff@1.1.0: '2021-11-16T12:40:59.941Z'
/@pnpm/tabtab@0.5.2: '2024-02-05T11:11:20.511Z'
/@pnpm/util.lex-comparator@1.0.0: '2022-11-04T01:03:46.134Z'
/@pnpm/which@3.0.1: '2023-05-14T22:08:27.551Z'
/@reflink/reflink@0.1.16: '2024-01-02T17:41:22.200Z'
/@rushstack/worker-pool@0.4.9: '2023-10-01T03:01:09.960Z'
/@types/adm-zip@0.5.5: '2023-11-20T23:37:23.167Z'
/@types/archy@0.0.33: '2023-09-22T20:01:08.161Z'
/@types/byline@4.2.36: '2023-11-07T00:13:37.410Z'
/@types/cross-spawn@6.0.6: '2023-11-20T23:55:06.550Z'
/@types/fs-extra@9.0.13: '2021-09-21T19:02:27.512Z'
/@types/graceful-fs@4.1.9: '2023-11-07T06:37:38.558Z'
/@types/hosted-git-info@3.0.5: '2023-11-07T07:29:23.149Z'
/@types/ini@1.3.31: '2021-10-07T21:01:49.672Z'
/@types/is-gzip@2.0.0: '2020-08-21T05:11:34.796Z'
/@types/is-windows@1.0.2: '2023-11-07T08:08:49.243Z'
/@types/isexe@2.0.2: '2023-09-26T15:11:19.397Z'
/@types/jest@29.5.12: '2024-02-01T17:07:05.881Z'
/@types/js-yaml@4.0.9: '2023-11-07T20:20:13.264Z'
/@types/lodash.clonedeep@4.5.9: '2023-11-07T09:58:37.962Z'
/@types/lodash.throttle@4.1.7: '2022-04-18T23:23:51.676Z'
/@types/micromatch@4.0.6: '2023-11-21T01:30:53.522Z'
/@types/mz@2.7.8: '2023-11-21T00:37:43.061Z'
/@types/node@18.19.15: '2024-02-08T20:37:07.254Z'
/@types/normalize-package-data@2.4.4: '2023-11-07T12:04:03.711Z'
/@types/normalize-path@3.0.2: '2023-11-07T12:04:09.416Z'
/@types/object-hash@3.0.6: '2023-11-07T12:14:41.852Z'
/@types/parse-json@4.0.2: '2023-11-07T12:35:13.182Z'
/@types/proxyquire@1.3.31: '2023-11-07T13:34:37.730Z'
/@types/ramda@0.28.20: '2022-11-11T10:32:59.530Z'
/@types/retry@0.12.5: '2023-11-07T15:32:02.572Z'
/@types/rimraf@3.0.2: '2021-08-18T21:02:03.570Z'
/@types/semver@7.5.3: '2023-09-25T14:19:37.089Z'
/@types/semver@7.5.7: '2024-02-11T14:35:16.597Z'
/@types/signal-exit@3.0.4: '2023-11-07T16:33:34.502Z'
/@types/sinon@10.0.20: '2023-10-18T15:02:12.573Z'
/@types/ssri@7.1.5: '2023-11-21T01:08:19.305Z'
/@types/table@6.0.0: '2020-09-17T17:56:44.787Z'
/@types/tar-stream@2.2.3: '2023-09-12T12:36:52.726Z'
/@types/tar@6.1.11: '2024-01-25T07:07:06.203Z'
/@types/touch@3.1.5: '2023-11-07T18:04:29.681Z'
/@types/uuid@8.3.4: '2022-01-06T07:32:21.196Z'
/@types/validate-npm-package-name@4.0.2: '2023-11-07T18:40:02.727Z'
/@types/which@2.0.2: '2023-02-14T10:32:38.403Z'
/@types/wrap-ansi@8.0.2: '2023-10-18T19:10:52.205Z'
/@types/write-file-atomic@4.0.3: '2023-11-07T19:26:42.209Z'
/@types/yarnpkg__lockfile@1.1.9: '2023-11-07T19:39:01.690Z'
/@typescript-eslint/eslint-plugin@6.18.1: '2024-01-08T22:37:31.558Z'
/@typescript-eslint/parser@6.18.1: '2024-01-08T22:36:56.059Z'
/@yarnpkg/core@4.0.3: '2024-01-30T15:48:34.196Z'
/@yarnpkg/extensions@2.0.1: '2024-01-30T15:47:23.585Z'
/@yarnpkg/lockfile@1.1.0: '2018-09-10T13:37:58.652Z'
/@yarnpkg/nm@4.0.2: '2024-01-30T15:48:54.376Z'
/@yarnpkg/parsers@3.0.0: '2023-10-22T16:54:15.950Z'
/@yarnpkg/pnp@2.3.2: '2020-11-30T14:45:51.504Z'
/@zkochan/cmd-shim@6.0.0: '2023-03-16T02:26:12.592Z'
/@zkochan/diable@1.0.2: '2020-07-07T02:01:35.635Z'
/@zkochan/js-yaml@0.0.6: '2022-05-10T14:42:39.813Z'
/@zkochan/retry@0.2.0: '2020-06-06T23:36:55.687Z'
/@zkochan/rimraf@2.1.3: '2023-08-19T10:36:23.394Z'
/@zkochan/table@2.0.1: '2023-03-20T00:49:51.928Z'
/adm-zip@0.5.10: '2022-12-20T11:08:08.848Z'
/ansi-diff@1.1.1: '2018-06-16T13:37:28.365Z'
/archy@1.0.0: '2014-09-14T07:57:58.806Z'
/better-path-resolve@1.0.0: '2019-03-01T23:22:26.750Z'
/bin-links@4.0.3: '2023-10-12T16:22:47.134Z'
/boxen@5.1.2: '2021-09-17T05:31:40.311Z'
/c8@7.14.0: '2023-05-28T16:35:16.590Z'
/camelcase-keys@6.2.2: '2020-04-03T03:51:03.816Z'
/camelcase@6.3.0: '2022-01-01T20:29:34.388Z'
/can-link@2.0.0: '2021-02-11T22:53:11.538Z'
/can-write-to-dir@1.1.1: '2021-04-01T00:51:46.475Z'
/chalk@4.1.2: '2021-07-30T12:02:52.839Z'
/ci-info@3.9.0: '2023-10-04T04:56:10.209Z'
/cli-columns@4.0.0: '2021-09-23T18:51:13.897Z'
/cli-truncate@2.1.0: '2019-12-06T07:47:55.662Z'
/cmd-extension@1.0.2: '2021-09-28T21:08:51.481Z'
/comver-to-semver@1.0.0: '2021-04-04T23:59:39.895Z'
/concurrently@8.2.1: '2023-08-22T07:23:44.734Z'
/cross-env@7.0.3: '2020-12-01T20:25:26.541Z'
/cross-spawn@7.0.3: '2020-05-25T15:35:07.209Z'
/cspell@7.3.8: '2023-10-13T17:12:23.371Z'
/deep-require-cwd@1.0.0: '2017-05-08T20:09:31.558Z'
/delay@5.0.0: '2021-02-01T15:29:35.501Z'
/detect-libc@2.0.2: '2023-07-18T08:38:01.781Z'
/didyoumean2@6.0.1: '2023-09-07T04:09:42.951Z'
/dint@5.1.0: '2021-02-12T01:22:54.214Z'
/dir-is-case-sensitive@2.0.0: '2021-02-11T22:53:28.072Z'
/encode-registry@3.0.1: '2023-09-19T12:19:16.127Z'
/enquirer@2.4.1: '2023-07-28T12:26:30.586Z'
/esbuild@0.19.12: '2024-01-23T17:41:40.695Z'
/escape-string-regexp@4.0.0: '2020-04-23T07:31:25.491Z'
/eslint-config-standard-with-typescript@39.1.1: '2023-10-07T08:26:15.756Z'
/eslint-plugin-import@2.29.1: '2023-12-14T18:54:57.111Z'
/eslint-plugin-n@16.6.2: '2024-01-09T03:28:40.565Z'
/eslint-plugin-node@11.1.0: '2020-03-28T11:46:46.795Z'
/eslint-plugin-promise@6.1.1: '2022-10-19T21:06:14.552Z'
/eslint@8.56.0: '2023-12-15T22:55:11.833Z'
/exists-link@2.0.0: '2017-03-02T20:50:23.918Z'
/fast-deep-equal@3.1.3: '2020-06-08T07:27:28.474Z'
/fast-glob@3.3.2: '2023-11-06T12:41:11.203Z'
/filenamify@4.3.0: '2021-04-26T16:15:18.365Z'
/find-up@5.0.0: '2020-08-11T18:44:24.748Z'
/fs-extra@11.2.0: '2023-11-28T00:46:35.100Z'
/fuse-native@2.2.6: '2020-06-03T19:26:36.838Z'
/get-npm-tarball-url@2.1.0: '2023-11-07T13:09:03.185Z'
/get-port@5.1.1: '2020-01-15T08:08:35.951Z'
/ghooks@2.0.4: '2018-04-29T00:47:15.439Z'
/graceful-git@3.1.2: '2021-09-16T00:23:26.185Z'
/graph-cycles@1.2.1: '2021-04-11T09:47:00.295Z'
/https-proxy-server-express@0.1.2: '2024-01-17T16:04:39.089Z'
/husky@9.0.11: '2024-02-13T23:01:43.987Z'
/hyperdrive-schemas@2.0.0: '2020-07-14T11:16:33.671Z'
/ini@4.1.1: '2023-05-16T17:58:46.240Z'
/is-gzip@2.0.0: '2017-08-13T15:56:02.298Z'
/is-inner-link@4.0.0: '2021-02-11T22:54:33.386Z'
/is-port-reachable@3.0.0: '2019-11-12T09:49:42.096Z'
/is-subdir@1.2.0: '2021-01-05T16:52:45.485Z'
/is-windows@1.0.2: '2018-02-14T07:36:43.207Z'
/isexe@2.0.0: '2017-03-23T00:53:16.356Z'
/jest-diff@29.7.0: '2023-09-12T06:43:43.883Z'
/jest@29.7.0: '2023-09-12T06:44:08.561Z'
/json5@2.2.3: '2022-12-31T17:11:32.047Z'
/keyv@4.5.4: '2023-10-07T16:53:54.487Z'
/lcov-result-merger@3.3.0: '2022-06-21T06:32:52.863Z'
/load-json-file@6.2.0: '2019-07-11T08:30:09.981Z'
/lodash.clonedeep@4.5.0: '2016-08-13T17:37:19.945Z'
/lodash.throttle@4.1.1: '2016-08-13T17:45:38.195Z'
/loud-rejection@2.2.0: '2019-09-28T16:02:58.271Z'
/lru-cache@10.2.0: '2024-01-25T21:11:56.776Z'
/make-empty-dir@2.1.0: '2023-08-19T10:36:58.989Z'
/mdast-util-to-string@2.0.0: '2020-11-11T09:15:26.835Z'
/mem@8.1.1: '2021-04-20T15:49:07.407Z'
/micromatch@4.0.5: '2022-03-24T19:31:47.722Z'
/nerf-dart@1.0.0: '2015-08-20T12:22:17.009Z'
/nock@13.3.4: '2023-10-10T23:18:23.819Z'
/node-gyp@10.0.1: '2023-11-02T18:13:42.360Z'
/normalize-newline@3.0.0: '2016-09-06T12:35:43.571Z'
/normalize-package-data@5.0.0: '2022-10-14T05:22:41.916Z'
/normalize-path@3.0.0: '2018-04-19T14:54:47.609Z'
/normalize-registry-url@2.0.0: '2021-11-22T21:36:37.421Z'
/npm-packlist@5.1.3: '2022-08-25T19:33:59.963Z'
/object-hash@3.0.0: '2022-02-18T15:10:47.040Z'
/p-any@3.0.0: '2020-02-22T14:44:06.005Z'
/p-defer@3.0.0: '2019-06-07T08:11:13.854Z'
/p-every@2.0.0: '2019-03-15T09:22:34.849Z'
/p-filter@2.1.0: '2019-04-04T04:54:11.010Z'
/p-limit@3.1.0: '2020-11-25T07:42:37.364Z'
/p-map-values@1.0.0: '2022-11-19T01:54:52.912Z'
/p-memoize@4.0.1: '2020-09-24T12:12:05.234Z'
/p-queue@6.6.2: '2020-10-11T19:09:45.773Z'
/p-settle@4.1.1: '2020-05-29T08:07:35.109Z'
/parse-json@5.2.0: '2021-01-18T11:15:13.459Z'
/parse-npm-tarball-url@3.0.0: '2019-05-27T23:50:09.183Z'
/path-absolute@1.0.1: '2018-11-28T20:25:53.253Z'
/path-exists@4.0.0: '2019-04-04T03:29:16.887Z'
/path-name@1.0.0: '2016-10-20T18:43:50.780Z'
/path-temp@2.1.0: '2023-07-16T21:25:05.258Z'
/pidtree@0.6.0: '2022-06-05T18:35:44.206Z'
/preferred-pm@3.1.2: '2023-09-05T00:02:00.039Z'
/pretty-bytes@5.6.0: '2021-02-21T14:04:35.036Z'
/pretty-ms@7.0.1: '2020-09-24T09:37:39.213Z'
/process-exists@4.1.0: '2021-07-09T07:06:51.313Z'
/promise-share@1.0.0: '2019-09-13T19:01:32.578Z'
/proxyquire@2.1.3: '2019-08-12T13:54:46.049Z'
/ps-list@7.2.0: '2020-06-17T09:02:36.119Z'
/publish-packed@4.1.2: '2023-12-24T23:27:28.807Z'
/read-ini-file@4.0.0: '2022-12-23T20:19:57.971Z'
/read-yaml-file@2.1.0: '2021-02-11T22:53:46.064Z'
/realpath-missing@1.1.0: '2021-02-11T22:53:50.718Z'
/remark-parse@9.0.0: '2020-10-14T08:48:35.392Z'
/remark-stringify@9.0.1: '2020-12-09T17:54:33.099Z'
/rename-overwrite@5.0.0: '2023-12-24T01:49:00.212Z'
/render-help@1.0.3: '2023-01-29T01:46:41.262Z'
/resolve-link-target@2.0.0: '2021-02-11T22:54:11.438Z'
/rfc4648@1.5.3: '2023-10-27T18:22:37.670Z'
/right-pad@1.0.1: '2016-08-04T20:06:31.415Z'
/rimraf@3.0.2: '2020-02-09T06:18:37.504Z'
/root-link-target@3.1.0: '2021-02-11T22:54:37.968Z'
/run-groups@3.0.1: '2020-06-06T16:33:09.423Z'
/rxjs@7.8.1: '2023-04-26T22:56:33.678Z'
/safe-buffer@5.2.1: '2020-05-10T16:37:30.776Z'
/safe-execa@0.1.2: '2022-07-18T01:09:17.517Z'
/safe-execa@0.1.3: '2023-01-04T13:29:20.746Z'
/safe-promise-defer@1.0.1: '2022-06-18T13:48:40.297Z'
/sanitize-filename@1.6.3: '2019-08-26T02:10:56.988Z'
/semver-range-intersect@0.3.1: '2019-07-20T15:11:40.243Z'
/semver-utils@1.1.4: '2018-10-09T04:14:32.485Z'
/semver@7.6.0: '2024-02-05T17:06:51.520Z'
/shx@0.3.4: '2022-01-10T02:16:53.953Z'
/signal-exit@3.0.7: '2022-02-03T21:05:34.544Z'
/sinon@16.1.3: '2023-10-19T06:07:46.164Z'
/sort-keys@4.2.0: '2020-12-30T07:11:45.350Z'
/split-cmd@1.1.0: '2023-12-21T02:01:15.343Z'
/ssri@10.0.5: '2023-08-14T18:54:54.458Z'
/stacktracey@2.1.8: '2022-01-10T09:22:17.926Z'
/string-length@4.0.2: '2021-03-17T06:47:19.439Z'
/strip-ansi@6.0.1: '2021-09-23T16:34:41.798Z'
/strip-bom@4.0.0: '2019-04-28T04:40:47.887Z'
/strip-comments-strings@1.2.0: '2022-06-12T23:34:53.852Z'
/symlink-dir@5.2.1: '2023-12-24T23:15:15.543Z'
/syncpack@8.5.14: '2023-02-07T19:51:38.723Z'
/tar-stream@2.2.0: '2020-12-29T10:22:57.508Z'
/tar@6.2.0: '2023-09-05T05:33:49.378Z'
/tempy@1.0.1: '2021-03-17T07:03:04.830Z'
/touch@3.1.0: '2017-06-30T23:40:39.606Z'
/tree-kill@1.2.2: '2019-12-11T18:34:21.876Z'
/ts-jest@29.1.1: '2023-06-30T07:49:33.771Z'
/ts-node@10.9.2: '2023-12-08T12:04:46.154Z'
/typescript@5.3.3: '2023-12-06T19:07:51.067Z'
/unified@9.2.2: '2021-07-01T16:39:11.345Z'
/unique-string@2.0.0: '2019-04-29T04:18:06.804Z'
/uuid@9.0.1: '2023-09-12T08:56:35.205Z'
/v8-compile-cache@2.4.0: '2023-08-14T21:38:46.534Z'
/validate-npm-package-name@5.0.0: '2022-10-14T05:22:33.343Z'
/verdaccio@5.20.1: '2023-01-29T15:45:43.205Z'
/version-selector-type@3.0.0: '2020-05-02T19:53:43.038Z'
/which@4.0.0: '2023-08-29T18:39:57.339Z'
/wrap-ansi@7.0.0: '2020-04-22T16:53:23.889Z'
/write-file-atomic@5.0.1: '2023-04-26T19:28:58.689Z'
/write-ini-file@4.0.1: '2022-12-23T20:19:59.977Z'
/write-json-file@4.3.0: '2020-02-07T08:54:49.528Z'
/write-json5-file@3.1.0: '2021-02-11T22:54:24.439Z'
/write-pkg@4.0.0: '2019-04-29T10:37:09.855Z'
/write-yaml-file@5.0.0: '2023-04-27T22:24:56.969Z'
/yaml-tag@1.1.0: '2017-06-06T16:19:00.523Z'

View File

@@ -32,6 +32,7 @@
"@pnpm/config": "workspace:*",
"@pnpm/constants": "workspace:*",
"@pnpm/core-loggers": "workspace:*",
"@pnpm/crypto.base32-hash": "workspace:*",
"@pnpm/default-reporter": "workspace:*",
"@pnpm/dependency-path": "workspace:*",
"@pnpm/filter-workspace-packages": "workspace:*",

View File

@@ -1,5 +1,6 @@
import fs from 'fs'
import path from 'path'
import { createBase32Hash } from '@pnpm/crypto.base32-hash'
import { type PackageManifest } from '@pnpm/types'
import { prepare, preparePackages } from '@pnpm/prepare'
import { REGISTRY_MOCK_PORT } from '@pnpm/registry-mock'
@@ -223,3 +224,75 @@ test('custom fetcher can call default fetcher', async () => {
expect(args.opts).toBeDefined()
})
test('adding or changing pnpmfile should change pnpmfileChecksum and module structure', async () => {
const project = prepare({
dependencies: {
'@pnpm.e2e/pkg-with-good-optional': '1.0.0',
},
})
await execPnpm(['install'])
const lockfile0 = project.readLockfile()
expect(lockfile0.pnpmfileChecksum).toBeUndefined()
expect(lockfile0.packages).toHaveProperty(['/@pnpm.e2e/pkg-with-good-optional@1.0.0'])
expect(lockfile0.packages).toHaveProperty(['/is-positive@1.0.0'])
const pnpmfile1 = `
function readPackage (pkg) {
if (pkg.optionalDependencies) {
pkg.optionalDependencies = {} // 'delete pkg.optionalDependencies' doesn't work here
}
return pkg
}
module.exports.hooks = { readPackage }
`
fs.writeFileSync('.pnpmfile.cjs', pnpmfile1)
await execPnpm(['install'])
const lockfile1 = project.readLockfile()
expect(lockfile1.pnpmfileChecksum).toBe(createBase32Hash(pnpmfile1))
expect(lockfile1.packages).toHaveProperty(['/@pnpm.e2e/pkg-with-good-optional@1.0.0'])
expect(lockfile1.packages).not.toHaveProperty(['/is-positive@1.0.0']) // this should be removed due to being optional dependency
const pnpmfile2 = `
function readPackage (pkg) {
if (pkg.name === '@pnpm.e2e/pkg-with-good-optional') {
pkg.dependencies['@pnpm.e2e/foo'] = '100.0.0'
}
if (pkg.name === 'is-positive') {
pkg.dependencies['@pnpm.e2e/bar'] = '100.0.0'
}
return pkg
}
module.exports.hooks = { readPackage }
`
fs.writeFileSync('.pnpmfile.cjs', pnpmfile2)
await execPnpm(['install'])
const lockfile2 = project.readLockfile()
expect(lockfile2.pnpmfileChecksum).toBe(createBase32Hash(pnpmfile2))
expect(lockfile2.packages).toMatchObject({
'/@pnpm.e2e/foo@100.0.0': expect.any(Object),
'/@pnpm.e2e/bar@100.0.0': expect.any(Object),
'/@pnpm.e2e/pkg-with-good-optional@1.0.0': {
dependencies: {
'@pnpm.e2e/foo': '100.0.0',
},
},
'/is-positive@1.0.0': {
dependencies: {
'@pnpm.e2e/bar': '100.0.0',
},
},
})
fs.unlinkSync('.pnpmfile.cjs')
await execPnpm(['install'])
const lockfile3 = project.readLockfile()
expect(lockfile3).toStrictEqual(lockfile0)
})

View File

@@ -79,6 +79,9 @@
{
"path": "../packages/core-loggers"
},
{
"path": "../packages/crypto.base32-hash"
},
{
"path": "../packages/dependency-path"
},