@@ -8,13 +8,11 @@ import { getManifestData } from '@socketsecurity/registry'
88import meow from 'meow'
99import npa from 'npm-package-arg'
1010import ora from 'ora'
11- import pacote from 'pacote'
1211import semver from 'semver'
1312import { glob as tinyGlob } from 'tinyglobby'
1413import { parse as yamlParse } from 'yaml'
1514
16- //import { packumentCache, pacoteCachePath } from '../constants'
17- import { packumentCache } from '../constants'
15+ import { fetchPackageManifest } from '@socketsecurity/registry/lib/packages'
1816import { commonFlags } from '../flags'
1917import { printFlagList } from '../utils/formatting'
2018import { existsSync } from '../utils/fs'
@@ -24,10 +22,9 @@ import { pEach } from '@socketsecurity/registry/lib/promises'
2422import { escapeRegExp } from '@socketsecurity/registry/lib/regexps'
2523import { isNonEmptyString } from '@socketsecurity/registry/lib/strings'
2624
27- import type { Content as PackageJsonContent } from '@npmcli/package-json'
25+ import type { Content as NPMCliPackageJson } from '@npmcli/package-json'
2826import type { ManifestEntry } from '@socketsecurity/registry'
2927import type { Ora } from 'ora'
30- import type { PacoteOptions } from 'pacote'
3128import type { CliSubcommand } from '../utils/meow-with-subcommands'
3229import type {
3330 Agent ,
@@ -45,42 +42,42 @@ const manifestNpmOverrides = getManifestData('npm')!
4542type NpmOverrides = { [ key : string ] : string | StringKeyValueObject }
4643type PnpmOrYarnOverrides = { [ key : string ] : string }
4744type Overrides = NpmOverrides | PnpmOrYarnOverrides
48- type GetOverrides = ( pkgJson : PackageJsonContent ) => GetOverridesResult
45+ type GetOverrides = ( pkgJson : NPMCliPackageJson ) => GetOverridesResult
4946type GetOverridesResult = {
5047 type : Agent
5148 overrides : Overrides
5249}
5350
5451const getOverridesDataByAgent : Record < Agent , GetOverrides > = {
55- bun ( pkgJson : PackageJsonContent ) {
52+ bun ( pkgJson : NPMCliPackageJson ) {
5653 const overrides = ( pkgJson as any ) ?. resolutions ?? { }
5754 return { type : 'yarn/berry' , overrides }
5855 } ,
5956 // npm overrides documentation:
6057 // https://docs.npmjs.com/cli/v10/configuring-npm/package-json#overrides
61- npm ( pkgJson : PackageJsonContent ) {
58+ npm ( pkgJson : NPMCliPackageJson ) {
6259 const overrides = ( pkgJson as any ) ?. overrides ?? { }
6360 return { type : 'npm' , overrides }
6461 } ,
6562 // pnpm overrides documentation:
6663 // https://pnpm.io/package_json#pnpmoverrides
67- pnpm ( pkgJson : PackageJsonContent ) {
64+ pnpm ( pkgJson : NPMCliPackageJson ) {
6865 const overrides = ( pkgJson as any ) ?. pnpm ?. overrides ?? { }
6966 return { type : 'pnpm' , overrides }
7067 } ,
71- vlt ( pkgJson : PackageJsonContent ) {
68+ vlt ( pkgJson : NPMCliPackageJson ) {
7269 const overrides = ( pkgJson as any ) ?. overrides ?? { }
7370 return { type : 'vlt' , overrides }
7471 } ,
7572 // Yarn resolutions documentation:
7673 // https://yarnpkg.com/configuration/manifest#resolutions
77- 'yarn/berry' ( pkgJson : PackageJsonContent ) {
74+ 'yarn/berry' ( pkgJson : NPMCliPackageJson ) {
7875 const overrides = ( pkgJson as any ) ?. resolutions ?? { }
7976 return { type : 'yarn/berry' , overrides }
8077 } ,
8178 // Yarn resolutions documentation:
8279 // https://classic.yarnpkg.com/en/docs/selective-version-resolutions
83- 'yarn/classic' ( pkgJson : PackageJsonContent ) {
80+ 'yarn/classic' ( pkgJson : NPMCliPackageJson ) {
8481 const overrides = ( pkgJson as any ) ?. resolutions ?? { }
8582 return { type : 'yarn/classic' , overrides }
8683 }
@@ -335,7 +332,7 @@ function createActionMessage(
335332 return `${ verb } ${ overrideCount } Socket.dev optimized overrides${ workspaceCount ? ` in ${ workspaceCount } workspace${ workspaceCount > 1 ? 's' : '' } ` : '' } `
336333}
337334
338- function getDependencyEntries ( pkgJson : PackageJsonContent ) {
335+ function getDependencyEntries ( pkgJson : NPMCliPackageJson ) {
339336 const {
340337 dependencies,
341338 devDependencies,
@@ -367,7 +364,7 @@ function getDependencyEntries(pkgJson: PackageJsonContent) {
367364async function getWorkspaceGlobs (
368365 agent : Agent ,
369366 pkgPath : string ,
370- pkgJson : PackageJsonContent
367+ pkgJson : NPMCliPackageJson
371368) : Promise < string [ ] | undefined > {
372369 let workspacePatterns
373370 if ( agent === 'pnpm' ) {
@@ -471,7 +468,7 @@ async function addOverrides(
471468 editablePkgJson = await EditablePackageJson . load ( pkgPath )
472469 }
473470 const { spinner } = state
474- const pkgJson : Readonly < PackageJsonContent > = editablePkgJson . content
471+ const pkgJson : Readonly < NPMCliPackageJson > = editablePkgJson . content
475472 const isRoot = pkgPath === rootPath
476473 const isLockScanned = isRoot && ! prod
477474 const workspaceName = path . relative ( rootPath , pkgPath )
@@ -621,7 +618,7 @@ async function addOverrides(
621618 } )
622619 }
623620 if ( state . added . size > 0 || state . updated . size > 0 ) {
624- editablePkgJson . update ( < PackageJsonContent > Object . fromEntries ( depEntries ) )
621+ editablePkgJson . update ( < NPMCliPackageJson > Object . fromEntries ( depEntries ) )
625622 for ( const { overrides, type } of overridesDataObjects ) {
626623 updateManifestByAgent [ type ] ( editablePkgJson , toSortedObject ( overrides ) )
627624 }
@@ -630,61 +627,6 @@ async function addOverrides(
630627 return state
631628}
632629
633- // type ExtractOptions = pacote.Options & {
634- // tmpPrefix?: string
635- // [key: string]: any
636- // }
637-
638- // async function extractPackage(pkgNameOrId: string, options: ExtractOptions | undefined, callback: (tmpDirPath: string) => any) {
639- // if (arguments.length === 2 && typeof options === 'function') {
640- // callback = options
641- // options = undefined
642- // }
643- // const { tmpPrefix, ...extractOptions } = { __proto__: null, ...options }
644- // // cacache.tmp.withTmp DOES return a promise.
645- // await cacache.tmp.withTmp(
646- // pacoteCachePath,
647- // { tmpPrefix },
648- // // eslint-disable-next-line @typescript-eslint/no-misused-promises
649- // async tmpDirPath => {
650- // await pacote.extract(pkgNameOrId, tmpDirPath, {
651- // __proto__: null,
652- // packumentCache,
653- // preferOffline: true,
654- // ...<Omit<typeof extractOptions, '__proto__'>>extractOptions
655- // })
656- // await callback(tmpDirPath)
657- // }
658- // )
659- // }
660-
661- type FetchPackageManifestOptions = {
662- signal ?: AbortSignal
663- }
664-
665- async function fetchPackageManifest (
666- pkgNameOrId : string ,
667- options ?: FetchPackageManifestOptions
668- ) {
669- const pacoteOptions = < PacoteOptions & { signal ?: AbortSignal } > {
670- ...options ,
671- packumentCache,
672- preferOffline : true
673- }
674- const { signal } = pacoteOptions
675- if ( signal ?. aborted ) {
676- return null
677- }
678- let result
679- try {
680- result = await pacote . manifest ( pkgNameOrId , pacoteOptions )
681- } catch { }
682- if ( signal ?. aborted ) {
683- return null
684- }
685- return result
686- }
687-
688630export const optimize : CliSubcommand = {
689631 description : 'Optimize dependencies with @socketregistry overrides' ,
690632 async run ( argv , importMeta , { parentName } ) {
0 commit comments