@pnpm/npm-resolver
Advanced tools
Comparing version
import { PnpmError } from '@pnpm/error'; | ||
import { type FetchFromRegistry, type GetAuthHeader, type RetryTimeoutOptions } from '@pnpm/fetching-types'; | ||
import { type PreferredVersions, type ResolveResult, type WantedDependency, type WorkspacePackages } from '@pnpm/resolver-base'; | ||
import { type Registries } from '@pnpm/types'; | ||
import { type PackageMeta, type PackageMetaCache } from './pickPackage'; | ||
import { parsePref, type RegistryPackageSpec } from './parsePref'; | ||
import { type Registries, type PinnedVersion } from '@pnpm/types'; | ||
import { type PackageMeta, type PackageMetaCache, type PickPackageOptions, pickPackage } from './pickPackage'; | ||
import { parseBareSpecifier, type RegistryPackageSpec } from './parseBareSpecifier'; | ||
import { RegistryResponseError } from './fetch'; | ||
@@ -17,3 +17,3 @@ import { workspacePrefToNpm } from './workspacePrefToNpm'; | ||
} | ||
export { parsePref, workspacePrefToNpm, type PackageMeta, type PackageMetaCache, type RegistryPackageSpec, RegistryResponseError, }; | ||
export { parseBareSpecifier, workspacePrefToNpm, type PackageMeta, type PackageMetaCache, type RegistryPackageSpec, RegistryResponseError, }; | ||
export interface ResolverFactoryOptions { | ||
@@ -28,2 +28,3 @@ cacheDir: string; | ||
registries: Registries; | ||
saveWorkspaceProtocol?: boolean | 'rolling'; | ||
} | ||
@@ -33,4 +34,11 @@ export type NpmResolver = (wantedDependency: WantedDependency, opts: ResolveFromNpmOptions) => Promise<ResolveResult | null>; | ||
resolveFromNpm: NpmResolver; | ||
resolveFromJsr: NpmResolver; | ||
clearCache: () => void; | ||
}; | ||
export interface ResolveFromNpmContext { | ||
pickPackage: (spec: RegistryPackageSpec, opts: PickPackageOptions) => ReturnType<typeof pickPackage>; | ||
getAuthHeaderValueByURI: (registry: string) => string | undefined; | ||
registries: Registries; | ||
saveWorkspaceProtocol?: boolean | 'rolling'; | ||
} | ||
export type ResolveFromNpmOptions = { | ||
@@ -47,2 +55,4 @@ alwaysTryWorkspacePackages?: boolean; | ||
injectWorkspacePackages?: boolean; | ||
calcSpecifier?: boolean; | ||
pinnedVersion?: PinnedVersion; | ||
} & ({ | ||
@@ -49,0 +59,0 @@ projectDir?: string; |
222
lib/index.js
@@ -6,3 +6,3 @@ "use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.RegistryResponseError = exports.workspacePrefToNpm = exports.parsePref = exports.NoMatchingVersionError = void 0; | ||
exports.RegistryResponseError = exports.workspacePrefToNpm = exports.parseBareSpecifier = exports.NoMatchingVersionError = void 0; | ||
exports.createNpmResolver = createNpmResolver; | ||
@@ -20,5 +20,6 @@ const path_1 = __importDefault(require("path")); | ||
const ssri_1 = __importDefault(require("ssri")); | ||
const version_selector_type_1 = __importDefault(require("version-selector-type")); | ||
const pickPackage_1 = require("./pickPackage"); | ||
const parsePref_1 = require("./parsePref"); | ||
Object.defineProperty(exports, "parsePref", { enumerable: true, get: function () { return parsePref_1.parsePref; } }); | ||
const parseBareSpecifier_1 = require("./parseBareSpecifier"); | ||
Object.defineProperty(exports, "parseBareSpecifier", { enumerable: true, get: function () { return parseBareSpecifier_1.parseBareSpecifier; } }); | ||
const fetch_1 = require("./fetch"); | ||
@@ -28,7 +29,8 @@ Object.defineProperty(exports, "RegistryResponseError", { enumerable: true, get: function () { return fetch_1.RegistryResponseError; } }); | ||
Object.defineProperty(exports, "workspacePrefToNpm", { enumerable: true, get: function () { return workspacePrefToNpm_1.workspacePrefToNpm; } }); | ||
const whichVersionIsPinned_1 = require("./whichVersionIsPinned"); | ||
class NoMatchingVersionError extends error_1.PnpmError { | ||
constructor(opts) { | ||
const dep = opts.wantedDependency.alias | ||
? `${opts.wantedDependency.alias}@${opts.wantedDependency.pref ?? ''}` | ||
: opts.wantedDependency.pref; | ||
? `${opts.wantedDependency.alias}@${opts.wantedDependency.bareSpecifier ?? ''}` | ||
: opts.wantedDependency.bareSpecifier; | ||
super('NO_MATCHING_VERSION', `No matching version found for ${dep} while fetching it from ${opts.registry}`); | ||
@@ -55,16 +57,19 @@ this.packageMeta = opts.packageMeta; | ||
}); | ||
const ctx = { | ||
getAuthHeaderValueByURI: getAuthHeader, | ||
pickPackage: pickPackage_1.pickPackage.bind(null, { | ||
fetch, | ||
filterMetadata: opts.filterMetadata, | ||
metaCache, | ||
metaDir: opts.fullMetadata ? (opts.filterMetadata ? constants_1.FULL_FILTERED_META_DIR : constants_1.FULL_META_DIR) : constants_1.ABBREVIATED_META_DIR, | ||
offline: opts.offline, | ||
preferOffline: opts.preferOffline, | ||
cacheDir: opts.cacheDir, | ||
}), | ||
registries: opts.registries, | ||
saveWorkspaceProtocol: opts.saveWorkspaceProtocol, | ||
}; | ||
return { | ||
resolveFromNpm: resolveNpm.bind(null, { | ||
getAuthHeaderValueByURI: getAuthHeader, | ||
pickPackage: pickPackage_1.pickPackage.bind(null, { | ||
fetch, | ||
filterMetadata: opts.filterMetadata, | ||
metaCache, | ||
metaDir: opts.fullMetadata ? (opts.filterMetadata ? constants_1.FULL_FILTERED_META_DIR : constants_1.FULL_META_DIR) : constants_1.ABBREVIATED_META_DIR, | ||
offline: opts.offline, | ||
preferOffline: opts.preferOffline, | ||
cacheDir: opts.cacheDir, | ||
}), | ||
registries: opts.registries, | ||
}), | ||
resolveFromNpm: resolveNpm.bind(null, ctx), | ||
resolveFromJsr: resolveJsr.bind(null, ctx), | ||
clearCache: () => { | ||
@@ -78,6 +83,6 @@ metaCache.clear(); | ||
const registry = wantedDependency.alias | ||
? (0, pick_registry_for_package_1.pickRegistryForPackage)(ctx.registries, wantedDependency.alias, wantedDependency.pref) | ||
? (0, pick_registry_for_package_1.pickRegistryForPackage)(ctx.registries, wantedDependency.alias, wantedDependency.bareSpecifier) | ||
: ctx.registries.default; | ||
if (wantedDependency.pref?.startsWith('workspace:')) { | ||
if (wantedDependency.pref.startsWith('workspace:.')) | ||
if (wantedDependency.bareSpecifier?.startsWith('workspace:')) { | ||
if (wantedDependency.bareSpecifier.startsWith('workspace:.')) | ||
return null; | ||
@@ -92,2 +97,5 @@ const resolvedFromWorkspace = tryResolveFromWorkspace(wantedDependency, { | ||
update: Boolean(opts.update), | ||
saveWorkspaceProtocol: ctx.saveWorkspaceProtocol !== false ? ctx.saveWorkspaceProtocol : true, | ||
calcSpecifier: opts.calcSpecifier, | ||
pinnedVersion: opts.pinnedVersion, | ||
}); | ||
@@ -99,4 +107,4 @@ if (resolvedFromWorkspace != null) { | ||
const workspacePackages = opts.alwaysTryWorkspacePackages !== false ? opts.workspacePackages : undefined; | ||
const spec = wantedDependency.pref | ||
? (0, parsePref_1.parsePref)(wantedDependency.pref, wantedDependency.alias, defaultTag, registry) | ||
const spec = wantedDependency.bareSpecifier | ||
? (0, parseBareSpecifier_1.parseBareSpecifier)(wantedDependency.bareSpecifier, wantedDependency.alias, defaultTag, registry) | ||
: defaultTagForAlias(wantedDependency.alias, defaultTag); | ||
@@ -127,2 +135,5 @@ if (spec == null) | ||
update: Boolean(opts.update), | ||
saveWorkspaceProtocol: ctx.saveWorkspaceProtocol, | ||
calcSpecifier: opts.calcSpecifier, | ||
pinnedVersion: opts.pinnedVersion, | ||
}); | ||
@@ -147,2 +158,5 @@ } | ||
update: Boolean(opts.update), | ||
saveWorkspaceProtocol: ctx.saveWorkspaceProtocol, | ||
calcSpecifier: opts.calcSpecifier, | ||
pinnedVersion: opts.pinnedVersion, | ||
}); | ||
@@ -161,6 +175,10 @@ } | ||
return { | ||
...resolveFromLocalPackage(matchedPkg, spec.normalizedPref, { | ||
...resolveFromLocalPackage(matchedPkg, spec, { | ||
wantedDependency, | ||
projectDir: opts.projectDir, | ||
lockfileDir: opts.lockfileDir, | ||
hardLinkLocalPackages: opts.injectWorkspacePackages === true || wantedDependency.injected, | ||
saveWorkspaceProtocol: ctx.saveWorkspaceProtocol, | ||
calcSpecifier: opts.calcSpecifier, | ||
pinnedVersion: opts.pinnedVersion, | ||
}), | ||
@@ -173,6 +191,10 @@ latest: meta['dist-tags'].latest, | ||
return { | ||
...resolveFromLocalPackage(workspacePkgsMatchingName.get(localVersion), spec.normalizedPref, { | ||
...resolveFromLocalPackage(workspacePkgsMatchingName.get(localVersion), spec, { | ||
wantedDependency, | ||
projectDir: opts.projectDir, | ||
lockfileDir: opts.lockfileDir, | ||
hardLinkLocalPackages: opts.injectWorkspacePackages === true || wantedDependency.injected, | ||
saveWorkspaceProtocol: ctx.saveWorkspaceProtocol, | ||
calcSpecifier: opts.calcSpecifier, | ||
pinnedVersion: opts.pinnedVersion, | ||
}), | ||
@@ -188,2 +210,11 @@ latest: meta['dist-tags'].latest, | ||
}; | ||
let normalizedBareSpecifier; | ||
if (opts.calcSpecifier) { | ||
normalizedBareSpecifier = spec.normalizedBareSpecifier ?? calcSpecifier({ | ||
wantedDependency, | ||
spec, | ||
version: pickedPackage.version, | ||
defaultPinnedVersion: opts.pinnedVersion, | ||
}); | ||
} | ||
return { | ||
@@ -193,16 +224,84 @@ id, | ||
manifest: pickedPackage, | ||
normalizedPref: spec.normalizedPref, | ||
resolution, | ||
resolvedVia: 'npm-registry', | ||
publishedAt: meta.time?.[pickedPackage.version], | ||
normalizedBareSpecifier, | ||
}; | ||
} | ||
async function resolveJsr(ctx, wantedDependency, opts) { | ||
if (!wantedDependency.bareSpecifier) | ||
return null; | ||
const defaultTag = opts.defaultTag ?? 'latest'; | ||
const registry = ctx.registries['@jsr']; // '@jsr' is always defined | ||
const spec = (0, parseBareSpecifier_1.parseJsrSpecifierToRegistryPackageSpec)(wantedDependency.bareSpecifier, wantedDependency.alias, defaultTag); | ||
if (spec == null) | ||
return null; | ||
const authHeaderValue = ctx.getAuthHeaderValueByURI(registry); | ||
const { meta, pickedPackage } = await ctx.pickPackage(spec, { | ||
pickLowestVersion: opts.pickLowestVersion, | ||
publishedBy: opts.publishedBy, | ||
authHeaderValue, | ||
dryRun: opts.dryRun === true, | ||
preferredVersionSelectors: opts.preferredVersions?.[spec.name], | ||
registry, | ||
updateToLatest: opts.update === 'latest', | ||
}); | ||
if (pickedPackage == null) { | ||
throw new NoMatchingVersionError({ wantedDependency, packageMeta: meta, registry }); | ||
} | ||
const id = `${pickedPackage.name}@${pickedPackage.version}`; | ||
const resolution = { | ||
integrity: getIntegrity(pickedPackage.dist), | ||
tarball: pickedPackage.dist.tarball, | ||
}; | ||
return { | ||
id, | ||
latest: meta['dist-tags'].latest, | ||
manifest: pickedPackage, | ||
normalizedBareSpecifier: opts.calcSpecifier | ||
? calcJsrSpecifier({ | ||
wantedDependency, | ||
spec, | ||
version: pickedPackage.version, | ||
defaultPinnedVersion: opts.pinnedVersion, | ||
}) | ||
: undefined, | ||
resolution, | ||
resolvedVia: 'jsr-registry', | ||
publishedAt: meta.time?.[pickedPackage.version], | ||
alias: spec.jsrPkgName, | ||
}; | ||
} | ||
function calcJsrSpecifier({ wantedDependency, spec, version, defaultPinnedVersion, }) { | ||
const range = calcRange(version, wantedDependency, defaultPinnedVersion); | ||
if (!wantedDependency.alias || spec.jsrPkgName === wantedDependency.alias) | ||
return `jsr:${range}`; | ||
return `jsr:${spec.jsrPkgName}@${range}`; | ||
} | ||
function calcSpecifier({ wantedDependency, spec, version, defaultPinnedVersion, }) { | ||
if (wantedDependency.prevSpecifier === wantedDependency.bareSpecifier && wantedDependency.prevSpecifier && (0, version_selector_type_1.default)(wantedDependency.prevSpecifier)?.type === 'tag') { | ||
return wantedDependency.prevSpecifier; | ||
} | ||
const range = calcRange(version, wantedDependency, defaultPinnedVersion); | ||
if (!wantedDependency.alias || spec.name === wantedDependency.alias) | ||
return range; | ||
return `npm:${spec.name}@${range}`; | ||
} | ||
function calcRange(version, wantedDependency, defaultPinnedVersion) { | ||
if (semver_1.default.parse(version)?.prerelease.length) { | ||
return version; | ||
} | ||
const pinnedVersion = (wantedDependency.prevSpecifier ? (0, whichVersionIsPinned_1.whichVersionIsPinned)(wantedDependency.prevSpecifier) : undefined) ?? | ||
(wantedDependency.bareSpecifier ? (0, whichVersionIsPinned_1.whichVersionIsPinned)(wantedDependency.bareSpecifier) : undefined) ?? | ||
defaultPinnedVersion; | ||
return createVersionSpec(version, pinnedVersion); | ||
} | ||
function tryResolveFromWorkspace(wantedDependency, opts) { | ||
if (!wantedDependency.pref?.startsWith('workspace:')) { | ||
if (!wantedDependency.bareSpecifier?.startsWith('workspace:')) { | ||
return null; | ||
} | ||
const pref = (0, workspacePrefToNpm_1.workspacePrefToNpm)(wantedDependency.pref); | ||
const spec = (0, parsePref_1.parsePref)(pref, wantedDependency.alias, opts.defaultTag, opts.registry); | ||
const bareSpecifier = (0, workspacePrefToNpm_1.workspacePrefToNpm)(wantedDependency.bareSpecifier); | ||
const spec = (0, parseBareSpecifier_1.parseBareSpecifier)(bareSpecifier, wantedDependency.alias, opts.defaultTag, opts.registry); | ||
if (spec == null) | ||
throw new Error(`Invalid workspace: spec (${wantedDependency.pref})`); | ||
throw new Error(`Invalid workspace: spec (${wantedDependency.bareSpecifier})`); | ||
if (opts.workspacePackages == null) { | ||
@@ -220,2 +319,5 @@ throw new Error('Cannot resolve package from workspace because opts.workspacePackages is not defined'); | ||
update: opts.update, | ||
saveWorkspaceProtocol: opts.saveWorkspaceProtocol, | ||
calcSpecifier: opts.calcSpecifier, | ||
pinnedVersion: opts.pinnedVersion, | ||
}); | ||
@@ -226,3 +328,3 @@ } | ||
if (!workspacePkgsMatchingName) { | ||
throw new error_1.PnpmError('WORKSPACE_PKG_NOT_FOUND', `In ${path_1.default.relative(process.cwd(), opts.projectDir)}: "${spec.name}@${opts.wantedDependency.pref ?? ''}" is in the dependencies but no package named "${spec.name}" is present in the workspace`, { | ||
throw new error_1.PnpmError('WORKSPACE_PKG_NOT_FOUND', `In ${path_1.default.relative(process.cwd(), opts.projectDir)}: "${spec.name}@${opts.wantedDependency.bareSpecifier ?? ''}" is in the dependencies but no package named "${spec.name}" is present in the workspace`, { | ||
hint: 'Packages found in the workspace: ' + Object.keys(workspacePackages).join(', '), | ||
@@ -233,5 +335,5 @@ }); | ||
if (!localVersion) { | ||
throw new error_1.PnpmError('NO_MATCHING_VERSION_INSIDE_WORKSPACE', `In ${path_1.default.relative(process.cwd(), opts.projectDir)}: No matching version found for ${opts.wantedDependency.alias ?? ''}@${opts.wantedDependency.pref ?? ''} inside the workspace`); | ||
throw new error_1.PnpmError('NO_MATCHING_VERSION_INSIDE_WORKSPACE', `In ${path_1.default.relative(process.cwd(), opts.projectDir)}: No matching version found for ${opts.wantedDependency.alias ?? ''}@${opts.wantedDependency.bareSpecifier ?? ''} inside the workspace`); | ||
} | ||
return resolveFromLocalPackage(workspacePkgsMatchingName.get(localVersion), spec.normalizedPref, opts); | ||
return resolveFromLocalPackage(workspacePkgsMatchingName.get(localVersion), spec, opts); | ||
} | ||
@@ -252,3 +354,3 @@ function pickMatchingLocalVersionOrNull(versions, spec) { | ||
} | ||
function resolveFromLocalPackage(localPackage, normalizedPref, opts) { | ||
function resolveFromLocalPackage(localPackage, spec, opts) { | ||
let id; | ||
@@ -265,6 +367,15 @@ let directory; | ||
} | ||
let normalizedBareSpecifier; | ||
if (opts.calcSpecifier) { | ||
normalizedBareSpecifier = spec.normalizedBareSpecifier ?? calcSpecifierForWorkspaceDep({ | ||
wantedDependency: opts.wantedDependency, | ||
spec, | ||
saveWorkspaceProtocol: opts.saveWorkspaceProtocol, | ||
version: localPackage.manifest.version, | ||
defaultPinnedVersion: opts.pinnedVersion, | ||
}); | ||
} | ||
return { | ||
id, | ||
manifest: (0, clone_1.default)(localPackage.manifest), | ||
normalizedPref, | ||
resolution: { | ||
@@ -275,4 +386,32 @@ directory, | ||
resolvedVia: 'workspace', | ||
normalizedBareSpecifier, | ||
}; | ||
} | ||
function calcSpecifierForWorkspaceDep({ wantedDependency, spec, saveWorkspaceProtocol, version, defaultPinnedVersion, }) { | ||
if (!saveWorkspaceProtocol && !wantedDependency.bareSpecifier?.startsWith('workspace:')) { | ||
return calcSpecifier({ wantedDependency, spec, version, defaultPinnedVersion }); | ||
} | ||
const prefix = (!wantedDependency.alias || spec.name === wantedDependency.alias) ? 'workspace:' : `workspace:${spec.name}@`; | ||
if (saveWorkspaceProtocol === 'rolling') { | ||
const specifier = wantedDependency.prevSpecifier ?? wantedDependency.bareSpecifier; | ||
if (specifier) { | ||
if ([`${prefix}*`, `${prefix}^`, `${prefix}~`].includes(specifier)) | ||
return specifier; | ||
const pinnedVersion = (0, whichVersionIsPinned_1.whichVersionIsPinned)(specifier); | ||
switch (pinnedVersion) { | ||
case 'major': return `${prefix}^`; | ||
case 'minor': return `${prefix}~`; | ||
case 'patch': | ||
case 'none': return `${prefix}*`; | ||
} | ||
} | ||
return `${prefix}^`; | ||
} | ||
if (semver_1.default.parse(version)?.prerelease.length) { | ||
return `${prefix}${version}`; | ||
} | ||
const pinnedVersion = (wantedDependency.prevSpecifier ? (0, whichVersionIsPinned_1.whichVersionIsPinned)(wantedDependency.prevSpecifier) : undefined) ?? defaultPinnedVersion; | ||
const range = createVersionSpec(version, pinnedVersion); | ||
return `${prefix}${range}`; | ||
} | ||
function resolveLocalPackageDir(localPackage) { | ||
@@ -304,2 +443,15 @@ if (localPackage.manifest.publishConfig?.directory == null || | ||
} | ||
function createVersionSpec(version, pinnedVersion) { | ||
switch (pinnedVersion ?? 'major') { | ||
case 'none': | ||
case 'major': | ||
return `^${version}`; | ||
case 'minor': | ||
return `~${version}`; | ||
case 'patch': | ||
return version; | ||
default: | ||
throw new error_1.PnpmError('BAD_PINNED_VERSION', `Cannot pin '${pinnedVersion ?? 'undefined'}'`); | ||
} | ||
} | ||
//# sourceMappingURL=index.js.map |
import { type VersionSelectors } from '@pnpm/resolver-base'; | ||
import { type PackageManifest } from '@pnpm/types'; | ||
import { type RegistryPackageSpec } from './parsePref'; | ||
import { type RegistryPackageSpec } from './parseBareSpecifier'; | ||
export interface PackageMeta { | ||
@@ -5,0 +5,0 @@ name: string; |
import { type VersionSelectors } from '@pnpm/resolver-base'; | ||
import { type RegistryPackageSpec } from './parsePref'; | ||
import { type RegistryPackageSpec } from './parseBareSpecifier'; | ||
import { type PackageInRegistry, type PackageMeta } from './pickPackage'; | ||
@@ -4,0 +4,0 @@ export type PickVersionByVersionRange = (meta: PackageMeta, versionRange: string, preferredVerSels?: VersionSelectors, publishedBy?: Date) => string | null; |
@@ -1,2 +0,2 @@ | ||
import { type RegistryPackageSpec } from './parsePref'; | ||
import { type RegistryPackageSpec } from './parseBareSpecifier'; | ||
export declare function toRaw(spec: RegistryPackageSpec): string; |
@@ -1,1 +0,1 @@ | ||
export declare function workspacePrefToNpm(workspacePref: string): string; | ||
export declare function workspacePrefToNpm(workspaceBareSpecifier: string): string; |
@@ -5,6 +5,6 @@ "use strict"; | ||
const workspace_spec_parser_1 = require("@pnpm/workspace.spec-parser"); | ||
function workspacePrefToNpm(workspacePref) { | ||
const parseResult = workspace_spec_parser_1.WorkspaceSpec.parse(workspacePref); | ||
function workspacePrefToNpm(workspaceBareSpecifier) { | ||
const parseResult = workspace_spec_parser_1.WorkspaceSpec.parse(workspaceBareSpecifier); | ||
if (parseResult == null) { | ||
throw new Error(`Invalid workspace spec: ${workspacePref}`); | ||
throw new Error(`Invalid workspace spec: ${workspaceBareSpecifier}`); | ||
} | ||
@@ -11,0 +11,0 @@ const { alias, version } = parseResult; |
{ | ||
"name": "@pnpm/npm-resolver", | ||
"version": "1003.0.0", | ||
"version": "1004.0.0", | ||
"description": "Resolver for npm-hosted packages", | ||
@@ -40,14 +40,16 @@ "keywords": [ | ||
"semver": "^7.7.1", | ||
"semver-utils": "^1.1.4", | ||
"ssri": "10.0.5", | ||
"version-selector-type": "^3.0.0", | ||
"@pnpm/core-loggers": "1001.0.0", | ||
"@pnpm/crypto.hash": "1000.1.1", | ||
"@pnpm/constants": "1001.1.0", | ||
"@pnpm/core-loggers": "1000.2.0", | ||
"@pnpm/crypto.hash": "1000.1.1", | ||
"@pnpm/error": "1000.0.2", | ||
"@pnpm/fetching-types": "1000.1.0", | ||
"@pnpm/graceful-fs": "1000.0.0", | ||
"@pnpm/error": "1000.0.2", | ||
"@pnpm/pick-registry-for-package": "1000.0.6", | ||
"@pnpm/resolver-base": "1002.0.0", | ||
"@pnpm/pick-registry-for-package": "1000.0.7", | ||
"@pnpm/resolve-workspace-range": "1000.0.0", | ||
"@pnpm/types": "1000.4.0", | ||
"@pnpm/resolving.jsr-specifier-parser": "1000.0.0", | ||
"@pnpm/resolver-base": "1003.0.0", | ||
"@pnpm/types": "1000.5.0", | ||
"@pnpm/workspace.spec-parser": "1000.0.0" | ||
@@ -65,5 +67,5 @@ }, | ||
"tempy": "^1.0.1", | ||
"@pnpm/fetch": "1000.2.0", | ||
"@pnpm/logger": "1000.0.0", | ||
"@pnpm/npm-resolver": "1003.0.0", | ||
"@pnpm/fetch": "1000.2.1", | ||
"@pnpm/logger": "1001.0.0", | ||
"@pnpm/npm-resolver": "1004.0.0", | ||
"@pnpm/test-fixtures": "0.1.37" | ||
@@ -70,0 +72,0 @@ }, |
@@ -30,3 +30,3 @@ # @pnpm/npm-resolver | ||
resolveFromNpm({alias: 'is-positive', pref: '1.0.0'}, { | ||
resolveFromNpm({alias: 'is-positive', bareSpecifier: '1.0.0'}, { | ||
registry: 'https://registry.npmjs.org/', | ||
@@ -33,0 +33,0 @@ }) |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
95252
22.71%27
12.5%1230
21.3%28
7.69%+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
- Removed
- Removed
- Removed
- Removed
Updated
Updated
Updated