From a1cdae3dc70a19eb82096fc7b941f3f6bf19fe4c Mon Sep 17 00:00:00 2001 From: Zoltan Kochan Date: Mon, 17 Aug 2020 00:59:42 +0300 Subject: [PATCH] refactor(npm-resolver): remove options.metaCache --- .changeset/weak-toes-behave.md | 7 +++ packages/client/test/index.ts | 1 - packages/default-resolver/test/index.ts | 1 - packages/headless/test/utils/testDefaults.ts | 1 - packages/npm-resolver/README.md | 1 - packages/npm-resolver/example.js | 1 - packages/npm-resolver/package.json | 2 + packages/npm-resolver/src/index.ts | 11 ++-- packages/npm-resolver/test/index.ts | 56 ------------------- packages/outdated/package.json | 2 - packages/outdated/src/createManifestGetter.ts | 10 +--- packages/package-requester/test/index.ts | 2 - packages/package-store/test/index.ts | 2 - .../plugin-commands-publishing/package.json | 2 - .../src/recursivePublish.ts | 5 -- packages/server/example/server.js | 1 - packages/server/test/index.ts | 1 - .../store-connection-manager/package.json | 2 - .../src/createNewStoreController.ts | 5 -- packages/supi/test/cache.ts | 6 +- packages/supi/test/utils/testDefaults.ts | 1 - pnpm-lock.yaml | 16 ++---- 22 files changed, 24 insertions(+), 112 deletions(-) create mode 100644 .changeset/weak-toes-behave.md diff --git a/.changeset/weak-toes-behave.md b/.changeset/weak-toes-behave.md new file mode 100644 index 0000000000..abfc58a744 --- /dev/null +++ b/.changeset/weak-toes-behave.md @@ -0,0 +1,7 @@ +--- +"@pnpm/npm-resolver": major +"@pnpm/default-resolver": major +"@pnpm/client": major +--- + +Does not accept a `metaCache` option anymore. Caching happens internally, using `lru-cache`. diff --git a/packages/client/test/index.ts b/packages/client/test/index.ts index 0517ae805f..c9ac9eacec 100644 --- a/packages/client/test/index.ts +++ b/packages/client/test/index.ts @@ -5,7 +5,6 @@ import test = require('tape') test('createClient()', t => { const client = createClient({ authConfig: { registry: 'https://registry.npmjs.org/' }, - metaCache: new Map(), storeDir: '', }) t.equal(typeof client, 'object') diff --git a/packages/default-resolver/test/index.ts b/packages/default-resolver/test/index.ts index 6db2ec4b51..1095b72738 100644 --- a/packages/default-resolver/test/index.ts +++ b/packages/default-resolver/test/index.ts @@ -6,7 +6,6 @@ import test = require('tape') test('createResolver()', t => { const getCredentials = () => ({ authHeaderValue: '', alwaysAuth: false }) const resolve = createResolver(createFetchFromRegistry({}), getCredentials, { - metaCache: new Map(), storeDir: '.store', }) t.equal(typeof resolve, 'function') diff --git a/packages/headless/test/utils/testDefaults.ts b/packages/headless/test/utils/testDefaults.ts index 8c564e93ef..4d83f19e8a 100644 --- a/packages/headless/test/utils/testDefaults.ts +++ b/packages/headless/test/utils/testDefaults.ts @@ -37,7 +37,6 @@ export default async function testDefaults ( const authConfig = { registry } const { resolve, fetchers } = createClient({ authConfig, - metaCache: new Map(), retry: retryOpts, storeDir, ...resolveOpts, diff --git a/packages/npm-resolver/README.md b/packages/npm-resolver/README.md index ce2657ae96..a71bbd8545 100644 --- a/packages/npm-resolver/README.md +++ b/packages/npm-resolver/README.md @@ -20,7 +20,6 @@ const createResolveFromNpm = require('@pnpm/npm-resolver').default const resolveFromNpm = createResolveFromNpm({ - metaCache: new Map(), store: '.store', offline: false, rawConfig: { diff --git a/packages/npm-resolver/example.js b/packages/npm-resolver/example.js index ba98bb28c8..1f08008c62 100644 --- a/packages/npm-resolver/example.js +++ b/packages/npm-resolver/example.js @@ -2,7 +2,6 @@ const createResolveFromNpm = require('@pnpm/npm-resolver').default const resolveFromNpm = createResolveFromNpm({ - metaCache: new Map(), storeDir: '.store', offline: false, rawConfig: { diff --git a/packages/npm-resolver/package.json b/packages/npm-resolver/package.json index c1aa8bf050..94c82b7e1b 100644 --- a/packages/npm-resolver/package.json +++ b/packages/npm-resolver/package.json @@ -41,6 +41,7 @@ "@pnpm/types": "workspace:6.2.0", "encode-registry": "^2.0.2", "load-json-file": "^6.2.0", + "lru-cache": "^6.0.0", "mz": "^2.7.0", "normalize-path": "^3.0.0", "p-limit": "^3.0.2", @@ -56,6 +57,7 @@ "@pnpm/fetch": "workspace:^2.1.3", "@pnpm/logger": "^3.2.2", "@pnpm/npm-resolver": "link:", + "@types/lru-cache": "^5.1.0", "@types/mz": "^2.7.1", "@types/normalize-path": "^3.0.0", "@types/semver": "^7.3.1", diff --git a/packages/npm-resolver/src/index.ts b/packages/npm-resolver/src/index.ts index 28f0503a55..bc0d434b92 100644 --- a/packages/npm-resolver/src/index.ts +++ b/packages/npm-resolver/src/index.ts @@ -12,6 +12,7 @@ import { WorkspacePackages, } from '@pnpm/resolver-base' import { DependencyManifest } from '@pnpm/types' +import LRU = require('lru-cache') import normalize = require('normalize-path') import pMemoize = require('p-memoize') import path = require('path') @@ -50,7 +51,6 @@ const META_DIR = 'metadata' const FULL_META_DIR = 'metadata-full' export interface ResolverFactoryOptions { - metaCache: PackageMetaCache, storeDir: string, fullMetadata?: boolean, offline?: boolean, @@ -63,9 +63,6 @@ export default function createResolver ( getCredentials: GetCredentials, opts: ResolverFactoryOptions ) { - if (typeof opts.metaCache !== 'object') { // tslint:disable-line - throw new TypeError('`opts.metaCache` is required and needs to be an object') - } if (typeof opts.storeDir !== 'string') { // tslint:disable-line throw new TypeError('`opts.storeDir` is required and needs to be a string') } @@ -74,11 +71,15 @@ export default function createResolver ( maxAge: 1000 * 20, // 20 seconds }) const getAuthHeaderValueByURI = (registry: string) => getCredentials(registry).authHeaderValue + const metaCache = new LRU({ + max: 10000, + maxAge: 120 * 1000, // 2 minutes + }) as any // tslint:disable-line:no-any return resolveNpm.bind(null, { getAuthHeaderValueByURI, pickPackage: pickPackage.bind(null, { fetch, - metaCache: opts.metaCache, + metaCache, metaDir: opts.fullMetadata ? FULL_META_DIR : META_DIR, offline: opts.offline, preferOffline: opts.preferOffline, diff --git a/packages/npm-resolver/test/index.ts b/packages/npm-resolver/test/index.ts index e61d4f42de..8cc67ad09d 100644 --- a/packages/npm-resolver/test/index.ts +++ b/packages/npm-resolver/test/index.ts @@ -44,7 +44,6 @@ test('resolveFromNpm()', async t => { const storeDir = tempy.directory() const resolve = createResolveFromNpm({ - metaCache: new Map(), rawConfig: { registry }, storeDir, }) @@ -80,7 +79,6 @@ test('dry run', async t => { const storeDir = tempy.directory() const resolve = createResolveFromNpm({ - metaCache: new Map(), rawConfig: { registry }, storeDir, }) @@ -114,7 +112,6 @@ test('resolve to latest when no pref specified', async t => { .reply(200, isPositiveMeta) const resolveFromNpm = createResolveFromNpm({ - metaCache: new Map(), rawConfig: { registry }, storeDir: tempy.directory(), }) @@ -131,7 +128,6 @@ test('resolve to defaultTag when no pref specified', async t => { .reply(200, isPositiveMeta) const resolveFromNpm = createResolveFromNpm({ - metaCache: new Map(), rawConfig: { registry }, storeDir: tempy.directory(), }) @@ -149,7 +145,6 @@ test('resolve to biggest non-deprecated version that satisfies the range', async .reply(200, isPositiveMetaWithDeprecated) const resolveFromNpm = createResolveFromNpm({ - metaCache: new Map(), rawConfig: { registry }, storeDir: tempy.directory(), }) @@ -166,7 +161,6 @@ test('resolve to a deprecated version if there are no non-deprecated ones that s .reply(200, isPositiveMetaWithDeprecated) const resolveFromNpm = createResolveFromNpm({ - metaCache: new Map(), rawConfig: { registry }, storeDir: tempy.directory(), }) @@ -183,7 +177,6 @@ test('can resolve aliased dependency', async t => { .reply(200, isPositiveMeta) const resolveFromNpm = createResolveFromNpm({ - metaCache: new Map(), rawConfig: { registry }, storeDir: tempy.directory(), }) @@ -200,7 +193,6 @@ test('can resolve aliased dependency w/o version specifier', async t => { .reply(200, isPositiveMeta) const resolveFromNpm = createResolveFromNpm({ - metaCache: new Map(), rawConfig: { registry }, storeDir: tempy.directory(), }) @@ -217,7 +209,6 @@ test('can resolve aliased dependency w/o version specifier to default tag', asyn .reply(200, isPositiveMeta) const resolveFromNpm = createResolveFromNpm({ - metaCache: new Map(), rawConfig: { registry }, storeDir: tempy.directory(), }) @@ -235,7 +226,6 @@ test('can resolve aliased scoped dependency', async t => { .reply(200, sindresorhusIsMeta) const resolveFromNpm = createResolveFromNpm({ - metaCache: new Map(), rawConfig: { registry }, storeDir: tempy.directory(), }) @@ -252,7 +242,6 @@ test('can resolve aliased scoped dependency w/o version specifier', async t => { .reply(200, sindresorhusIsMeta) const resolveFromNpm = createResolveFromNpm({ - metaCache: new Map(), rawConfig: { registry }, storeDir: tempy.directory(), }) @@ -269,7 +258,6 @@ test('can resolve package with version prefixed with v', async t => { .reply(200, isPositiveMeta) const resolveFromNpm = createResolveFromNpm({ - metaCache: new Map(), rawConfig: { registry }, storeDir: tempy.directory(), }) @@ -286,7 +274,6 @@ test('can resolve package version loosely', async t => { .reply(200, isPositiveMeta) const resolveFromNpm = createResolveFromNpm({ - metaCache: new Map(), rawConfig: { registry }, storeDir: tempy.directory(), }) @@ -306,7 +293,6 @@ test("resolves to latest if it's inside the wanted range. Even if there are newe }) const resolveFromNpm = createResolveFromNpm({ - metaCache: new Map(), rawConfig: { registry }, storeDir: tempy.directory(), }) @@ -331,7 +317,6 @@ test("resolves to latest if it's inside the preferred range. Even if there are n }) const resolveFromNpm = createResolveFromNpm({ - metaCache: new Map(), rawConfig: { registry }, storeDir: tempy.directory(), }) @@ -359,7 +344,6 @@ test("resolve using the wanted range, when it doesn't intersect with the preferr }) const resolveFromNpm = createResolveFromNpm({ - metaCache: new Map(), rawConfig: { registry }, storeDir: tempy.directory(), }) @@ -386,7 +370,6 @@ test("use the preferred version if it's inside the wanted range", async t => { }) const resolveFromNpm = createResolveFromNpm({ - metaCache: new Map(), rawConfig: { registry }, storeDir: tempy.directory(), }) @@ -414,7 +397,6 @@ test("ignore the preferred version if it's not inside the wanted range", async t }) const resolveFromNpm = createResolveFromNpm({ - metaCache: new Map(), rawConfig: { registry }, storeDir: tempy.directory(), }) @@ -440,7 +422,6 @@ test('use the preferred range if it intersects with the wanted range', async t = }) const resolveFromNpm = createResolveFromNpm({ - metaCache: new Map(), rawConfig: { registry }, storeDir: tempy.directory(), }) @@ -468,7 +449,6 @@ test('use the preferred range if it intersects with the wanted range (an array o }) const resolveFromNpm = createResolveFromNpm({ - metaCache: new Map(), rawConfig: { registry }, storeDir: tempy.directory(), }) @@ -499,7 +479,6 @@ test("ignore the preferred range if it doesn't intersect with the wanted range", }) const resolveFromNpm = createResolveFromNpm({ - metaCache: new Map(), rawConfig: { registry }, storeDir: tempy.directory(), }) @@ -528,7 +507,6 @@ test("use the preferred dist-tag if it's inside the wanted range", async t => { }) const resolveFromNpm = createResolveFromNpm({ - metaCache: new Map(), rawConfig: { registry }, storeDir: tempy.directory(), }) @@ -557,7 +535,6 @@ test("ignore the preferred dist-tag if it's not inside the wanted range", async }) const resolveFromNpm = createResolveFromNpm({ - metaCache: new Map(), rawConfig: { registry }, storeDir: tempy.directory(), }) @@ -585,7 +562,6 @@ test("prefer a version that is both inside the wanted and preferred ranges. Even }) const resolveFromNpm = createResolveFromNpm({ - metaCache: new Map(), rawConfig: { registry }, storeDir: tempy.directory(), }) @@ -604,7 +580,6 @@ test("prefer a version that is both inside the wanted and preferred ranges. Even test('offline resolution fails when package meta not found in the store', async t => { const resolve = createResolveFromNpm({ - metaCache: new Map(), offline: true, rawConfig: { registry }, storeDir: tempy.directory(), @@ -628,7 +603,6 @@ test('offline resolution succeeds when package meta is found in the store', asyn { const resolve = createResolveFromNpm({ - metaCache: new Map(), offline: false, rawConfig: { registry }, storeDir, @@ -640,7 +614,6 @@ test('offline resolution succeeds when package meta is found in the store', asyn { const resolve = createResolveFromNpm({ - metaCache: new Map(), offline: true, rawConfig: { registry }, storeDir, @@ -659,7 +632,6 @@ test('prefer offline resolution does not fail when package meta not found in the .reply(200, isPositiveMeta) const resolve = createResolveFromNpm({ - metaCache: new Map(), preferOffline: true, rawConfig: { registry }, storeDir: tempy.directory(), @@ -683,7 +655,6 @@ test('when prefer offline is used, meta from store is used, where latest might b { const resolve = createResolveFromNpm({ - metaCache: new Map(), rawConfig: { registry }, storeDir, }) @@ -701,7 +672,6 @@ test('when prefer offline is used, meta from store is used, where latest might b { const resolve = createResolveFromNpm({ - metaCache: new Map(), preferOffline: true, rawConfig: { registry }, storeDir, @@ -723,7 +693,6 @@ test('error is thrown when package is not found in the registry', async t => { .reply(404, {}) const resolveFromNpm = createResolveFromNpm({ - metaCache: new Map(), rawConfig: { registry }, storeDir: tempy.directory(), }) @@ -748,7 +717,6 @@ test('extra info is shown if package has valid semver appended', async t => { .reply(404, {}) const resolveFromNpm = createResolveFromNpm({ - metaCache: new Map(), rawConfig: { registry }, storeDir: tempy.directory(), }) @@ -771,7 +739,6 @@ test('error is thrown when there is no package found for the requested version', .reply(200, isPositiveMeta) const resolveFromNpm = createResolveFromNpm({ - metaCache: new Map(), rawConfig: { registry }, storeDir: tempy.directory(), }) @@ -792,7 +759,6 @@ test('error is thrown when package needs authorization', async t => { .reply(403) const resolveFromNpm = createResolveFromNpm({ - metaCache: new Map(), rawConfig: { registry }, storeDir: tempy.directory(), }) @@ -815,7 +781,6 @@ test('error is thrown when there is no package found for the requested range', a .reply(200, isPositiveMeta) const resolveFromNpm = createResolveFromNpm({ - metaCache: new Map(), rawConfig: { registry }, storeDir: tempy.directory(), }) @@ -834,7 +799,6 @@ test('error is thrown when there is no package found for the requested tag', asy .reply(200, isPositiveMeta) const resolveFromNpm = createResolveFromNpm({ - metaCache: new Map(), rawConfig: { registry }, storeDir: tempy.directory(), }) @@ -860,7 +824,6 @@ test('resolveFromNpm() loads full metadata even if non-full metadata is alread c { const resolve = createResolveFromNpm({ fullMetadata: false, - metaCache: new Map(), rawConfig: { registry }, storeDir, }) @@ -873,7 +836,6 @@ test('resolveFromNpm() loads full metadata even if non-full metadata is alread c { const resolve = createResolveFromNpm({ fullMetadata: true, - metaCache: new Map(), rawConfig: { registry }, storeDir, }) @@ -893,7 +855,6 @@ test('resolve when tarball URL is requested from the registry', async t => { const storeDir = tempy.directory() const resolve = createResolveFromNpm({ - metaCache: new Map(), rawConfig: { registry }, storeDir, }) @@ -930,7 +891,6 @@ test('resolve when tarball URL is requested from the registry and alias is not s const storeDir = tempy.directory() const resolve = createResolveFromNpm({ - metaCache: new Map(), rawConfig: { registry }, storeDir, }) @@ -967,7 +927,6 @@ test('resolve from local directory when it matches the latest version of the pac const storeDir = tempy.directory() const resolve = createResolveFromNpm({ - metaCache: new Map(), rawConfig: { registry }, storeDir, }) @@ -1008,7 +967,6 @@ test('do not resolve from local directory when alwaysTryWorkspacePackages is fal const storeDir = tempy.directory() const resolve = createResolveFromNpm({ - metaCache: new Map(), rawConfig: { registry }, storeDir, }) @@ -1047,7 +1005,6 @@ test('do not resolve from local directory when alwaysTryWorkspacePackages is fal test('resolve from local directory when alwaysTryWorkspacePackages is false but workspace: is used', async t => { const storeDir = tempy.directory() const resolve = createResolveFromNpm({ - metaCache: new Map(), rawConfig: { registry }, storeDir, }) @@ -1090,7 +1047,6 @@ test('use version from the registry if it is newer than the local one', async t }) const resolveFromNpm = createResolveFromNpm({ - metaCache: new Map(), rawConfig: { registry }, storeDir: tempy.directory(), }) @@ -1137,7 +1093,6 @@ test('use local version if it is newer than the latest in the registry', async t }) const resolveFromNpm = createResolveFromNpm({ - metaCache: new Map(), rawConfig: { registry }, storeDir: tempy.directory(), }) @@ -1181,7 +1136,6 @@ test('resolve from local directory when package is not found in the registry', a const storeDir = tempy.directory() const resolve = createResolveFromNpm({ - metaCache: new Map(), rawConfig: { registry }, storeDir, }) @@ -1236,7 +1190,6 @@ test('resolve from local directory when package is not found in the registry and const storeDir = tempy.directory() const resolve = createResolveFromNpm({ - metaCache: new Map(), rawConfig: { registry }, storeDir, }) @@ -1291,7 +1244,6 @@ test('resolve from local directory when package is not found in the registry and const storeDir = tempy.directory() const resolve = createResolveFromNpm({ - metaCache: new Map(), rawConfig: { registry }, storeDir, }) @@ -1346,7 +1298,6 @@ test('resolve from local directory when the requested version is not found in th const storeDir = tempy.directory() const resolve = createResolveFromNpm({ - metaCache: new Map(), rawConfig: { registry }, storeDir, }) @@ -1383,7 +1334,6 @@ test('resolve from local directory when the requested version is not found in th test('workspace protocol: resolve from local directory even when it does not match the latest version of the package', async t => { const storeDir = tempy.directory() const resolve = createResolveFromNpm({ - metaCache: new Map(), rawConfig: { registry }, storeDir, }) @@ -1420,7 +1370,6 @@ test('workspace protocol: resolve from local directory even when it does not mat test('workspace protocol: resolve from local package that has a pre-release version', async t => { const storeDir = tempy.directory() const resolve = createResolveFromNpm({ - metaCache: new Map(), rawConfig: { registry }, storeDir, }) @@ -1461,7 +1410,6 @@ test("workspace protocol: don't resolve from local package that has a pre-releas const storeDir = tempy.directory() const resolve = createResolveFromNpm({ - metaCache: new Map(), rawConfig: { registry }, storeDir, }) @@ -1494,7 +1442,6 @@ test("workspace protocol: don't resolve from local package that has a pre-releas test('workspace protocol: resolution fails if there is no matching local package', async t => { const storeDir = tempy.directory() const resolve = createResolveFromNpm({ - metaCache: new Map(), rawConfig: { registry }, storeDir, }) @@ -1521,7 +1468,6 @@ test('workspace protocol: resolution fails if there is no matching local package test('workspace protocol: resolution fails if there are no local packages', async t => { const storeDir = tempy.directory() const resolve = createResolveFromNpm({ - metaCache: new Map(), rawConfig: { registry }, storeDir, }) @@ -1544,7 +1490,6 @@ test('workspace protocol: resolution fails if there are no local packages', asyn test('throws error when package name has "/" but not starts with @scope', async t => { const resolveFromNpm = createResolveFromNpm({ - metaCache: new Map(), rawConfig: { registry }, storeDir: tempy.directory(), }) @@ -1565,7 +1510,6 @@ test('resolveFromNpm() should always return the name of the package that is spec const storeDir = tempy.directory() const resolve = createResolveFromNpm({ - metaCache: new Map(), rawConfig: { registry }, storeDir, }) diff --git a/packages/outdated/package.json b/packages/outdated/package.json index 2ef59d6b06..21e0f3ce7c 100644 --- a/packages/outdated/package.json +++ b/packages/outdated/package.json @@ -49,7 +49,6 @@ "@pnpm/types": "workspace:6.2.0", "credentials-by-uri": "^2.0.0", "dependency-path": "workspace:5.0.3", - "lru-cache": "^6.0.0", "mem": "^6.1.0", "ramda": "^0.27.1", "semver": "^7.3.2" @@ -57,7 +56,6 @@ "devDependencies": { "@pnpm/logger": "^3.2.2", "@pnpm/outdated": "link:", - "@types/lru-cache": "^5.1.0", "@types/ramda": "^0.27.14", "@types/semver": "^7.3.1", "npm-run-all": "^4.1.5" diff --git a/packages/outdated/src/createManifestGetter.ts b/packages/outdated/src/createManifestGetter.ts index 564d15dbf7..a1a8a243f8 100644 --- a/packages/outdated/src/createManifestGetter.ts +++ b/packages/outdated/src/createManifestGetter.ts @@ -3,7 +3,6 @@ import { createFetchFromRegistry } from '@pnpm/fetch' import pickRegistryForPackage from '@pnpm/pick-registry-for-package' import { DependencyManifest, Registries } from '@pnpm/types' import getCredentialsByURI = require('credentials-by-uri') -import LRU = require('lru-cache') import mem = require('mem') type GetManifestOpts = { @@ -13,19 +12,14 @@ type GetManifestOpts = { registries: Registries, } -export type ManifestGetterOptions = Omit & GetManifestOpts +export type ManifestGetterOptions = ResolverFactoryOptions & GetManifestOpts export function createManifestGetter ( opts: ManifestGetterOptions ): (packageName: string, pref: string) => Promise { const fetch = createFetchFromRegistry(opts) const getCredentials = mem((registry: string) => getCredentialsByURI(opts.rawConfig, registry)) - const resolve = createResolver(fetch, getCredentials, Object.assign(opts, { - metaCache: new LRU({ - max: 10000, - maxAge: 120 * 1000, // 2 minutes - }) as any, // tslint:disable-line:no-any - })) + const resolve = createResolver(fetch, getCredentials, opts) return getManifest.bind(null, resolve, opts) } diff --git a/packages/package-requester/test/index.ts b/packages/package-requester/test/index.ts index 628c6b3097..7449018356 100644 --- a/packages/package-requester/test/index.ts +++ b/packages/package-requester/test/index.ts @@ -24,7 +24,6 @@ const authConfig = { registry } const { resolve, fetchers } = createClient({ authConfig, - metaCache: new Map(), storeDir: '.store', }) @@ -473,7 +472,6 @@ test('fetchPackageToStore() does not cache errors', async (t) => { const noRetry = createClient({ authConfig, - metaCache: new Map(), retry: { retries: 0 }, storeDir: '.pnpm', }) diff --git a/packages/package-store/test/index.ts b/packages/package-store/test/index.ts index edd160ab6e..b671115aa6 100644 --- a/packages/package-store/test/index.ts +++ b/packages/package-store/test/index.ts @@ -12,7 +12,6 @@ test('store.importPackage()', async (t) => { const authConfig = { registry } const { resolve, fetchers } = createClient({ authConfig, - metaCache: new Map(), storeDir, }) const storeController = await createStore(resolve, fetchers, { @@ -45,7 +44,6 @@ test('store.importPackage() by copying', async (t) => { const authConfig = { registry } const { resolve, fetchers } = createClient({ authConfig, - metaCache: new Map(), storeDir, }) const storeController = await createStore(resolve, fetchers, { diff --git a/packages/plugin-commands-publishing/package.json b/packages/plugin-commands-publishing/package.json index 31c9293b7e..cb0dfdbe44 100644 --- a/packages/plugin-commands-publishing/package.json +++ b/packages/plugin-commands-publishing/package.json @@ -38,7 +38,6 @@ "@pnpm/plugin-commands-publishing": "link:", "@pnpm/prepare": "workspace:0.0.9", "@types/cross-spawn": "^6.0.2", - "@types/lru-cache": "^5.1.0", "@types/mz": "^2.7.1", "@types/proxyquire": "^1.3.28", "@types/ramda": "^0.27.14", @@ -70,7 +69,6 @@ "credentials-by-uri": "^2.0.0", "enquirer": "^2.3.6", "fast-glob": "^3.2.4", - "lru-cache": "^6.0.0", "mem": "^6.1.0", "mz": "^2.7.0", "p-filter": "^2.1.0", diff --git a/packages/plugin-commands-publishing/src/recursivePublish.ts b/packages/plugin-commands-publishing/src/recursivePublish.ts index f3f7eea9e6..8d56442a3f 100644 --- a/packages/plugin-commands-publishing/src/recursivePublish.ts +++ b/packages/plugin-commands-publishing/src/recursivePublish.ts @@ -8,7 +8,6 @@ import sortPackages from '@pnpm/sort-packages' import storePath from '@pnpm/store-path' import { Registries } from '@pnpm/types' import getCredentialsByURI = require('credentials-by-uri') -import LRU = require('lru-cache') import mem = require('mem') import pFilter = require('p-filter') import { handler as publish } from './publish' @@ -58,10 +57,6 @@ export default async function ( const fetch = createFetchFromRegistry(opts) const getCredentials = mem((registry: string) => getCredentialsByURI(opts.rawConfig, registry)) const resolve = createResolver(fetch, getCredentials, Object.assign(opts, { - metaCache: new LRU({ - max: 10000, - maxAge: 120 * 1000, // 2 minutes - }) as any, // tslint:disable-line:no-any storeDir, })) as unknown as ResolveFunction const pkgsToPublish = await pFilter(pkgs, async (pkg) => { diff --git a/packages/server/example/server.js b/packages/server/example/server.js index 7c530bfaac..47b4ae38d1 100644 --- a/packages/server/example/server.js +++ b/packages/server/example/server.js @@ -15,7 +15,6 @@ async function main() { const resolve = createResolver({ rawConfig, store, - metaCache: new Map(), }) const fetchers = createFetcher({ alwaysAuth: true, diff --git a/packages/server/test/index.ts b/packages/server/test/index.ts index 244e58d242..49b80db1fc 100644 --- a/packages/server/test/index.ts +++ b/packages/server/test/index.ts @@ -21,7 +21,6 @@ async function createStoreController (storeDir?: string) { const authConfig = { registry } const { resolve, fetchers } = createClient({ authConfig, - metaCache: new Map(), storeDir, }) return createStore(resolve, fetchers, { diff --git a/packages/store-connection-manager/package.json b/packages/store-connection-manager/package.json index a2c274dab4..e8048033a8 100644 --- a/packages/store-connection-manager/package.json +++ b/packages/store-connection-manager/package.json @@ -31,7 +31,6 @@ "devDependencies": { "@pnpm/logger": "^3.2.2", "@pnpm/store-connection-manager": "link:", - "@types/lru-cache": "^5.1.0", "@types/mz": "^2.7.1" }, "dependencies": { @@ -45,7 +44,6 @@ "@zkochan/diable": "^1.0.2", "delay": "^4.4.0", "dir-is-case-sensitive": "^1.0.2", - "lru-cache": "^6.0.0", "mz": "^2.7.0" }, "peerDependencies": { diff --git a/packages/store-connection-manager/src/createNewStoreController.ts b/packages/store-connection-manager/src/createNewStoreController.ts index 737e4e935b..e1a7192700 100644 --- a/packages/store-connection-manager/src/createNewStoreController.ts +++ b/packages/store-connection-manager/src/createNewStoreController.ts @@ -1,7 +1,6 @@ import createClient from '@pnpm/client' import { Config } from '@pnpm/config' import createStore from '@pnpm/package-store' -import LRU = require('lru-cache') import fs = require('mz/fs') import path = require('path') @@ -48,10 +47,6 @@ export default async ( httpsProxy: opts.httpsProxy, key: opts.key, localAddress: opts.localAddress, - metaCache: new LRU({ - max: 10000, - maxAge: 120 * 1000, // 2 minutes - }) as any, // tslint:disable-line:no-any noProxy: opts.noProxy, offline: opts.offline, preferOffline: opts.preferOffline, diff --git a/packages/supi/test/cache.ts b/packages/supi/test/cache.ts index cf215f4161..3202ab0efa 100644 --- a/packages/supi/test/cache.ts +++ b/packages/supi/test/cache.ts @@ -12,17 +12,17 @@ const test = promisifyTape(tape) test('should fail to update when requests are cached', async (t) => { const project = prepareEmpty(t) - const metaCache = new Map() + const opts = await testDefaults() await addDistTag('dep-of-pkg-with-1-dep', '100.0.0', 'latest') - const manifest = await addDependenciesToPackage({}, ['pkg-with-1-dep'], await testDefaults({ save: true, metaCache })) + const manifest = await addDependenciesToPackage({}, ['pkg-with-1-dep'], opts) await project.storeHas('dep-of-pkg-with-1-dep', '100.0.0') await addDistTag('dep-of-pkg-with-1-dep', '100.1.0', 'latest') - await install(manifest, await testDefaults({ depth: 1, metaCache, update: true })) + await install(manifest, { ...opts, depth: 1, update: true }) await project.storeHas('dep-of-pkg-with-1-dep', '100.0.0') }) diff --git a/packages/supi/test/utils/testDefaults.ts b/packages/supi/test/utils/testDefaults.ts index bab67cfb4e..1d819b91e0 100644 --- a/packages/supi/test/utils/testDefaults.ts +++ b/packages/supi/test/utils/testDefaults.ts @@ -39,7 +39,6 @@ export default async function testDefaults ( const authConfig = { registry } const { resolve, fetchers } = createClient({ authConfig, - metaCache: new Map(), retry: retryOpts, storeDir, ...resolveOpts, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9efcc24d29..49db5bc7d1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1168,6 +1168,7 @@ importers: '@pnpm/types': 'link:../types' encode-registry: 2.0.2 load-json-file: 6.2.0 + lru-cache: 6.0.0 mz: 2.7.0 normalize-path: 3.0.0 p-limit: 3.0.2 @@ -1182,6 +1183,7 @@ importers: '@pnpm/fetch': 'link:../fetch' '@pnpm/logger': 3.2.2 '@pnpm/npm-resolver': 'link:' + '@types/lru-cache': 5.1.0 '@types/mz': 2.7.1 '@types/normalize-path': 3.0.0 '@types/semver': 7.3.1 @@ -1198,12 +1200,14 @@ importers: '@pnpm/resolve-workspace-range': 'workspace:1.0.1' '@pnpm/resolver-base': 'workspace:7.0.3' '@pnpm/types': 'workspace:6.2.0' + '@types/lru-cache': ^5.1.0 '@types/mz': ^2.7.1 '@types/normalize-path': ^3.0.0 '@types/semver': ^7.3.1 '@types/ssri': ^6.0.3 encode-registry: ^2.0.2 load-json-file: ^6.2.0 + lru-cache: ^6.0.0 mz: ^2.7.0 nock: 12.0.3 normalize-path: ^3.0.0 @@ -1233,14 +1237,12 @@ importers: '@pnpm/types': 'link:../types' credentials-by-uri: 2.0.0 dependency-path: 'link:../dependency-path' - lru-cache: 6.0.0 mem: 6.1.0 ramda: 0.27.1 semver: 7.3.2 devDependencies: '@pnpm/logger': 3.2.2 '@pnpm/outdated': 'link:' - '@types/lru-cache': 5.1.0 '@types/ramda': 0.27.14 '@types/semver': 7.3.1 npm-run-all: 4.1.5 @@ -1259,12 +1261,10 @@ importers: '@pnpm/pick-registry-for-package': 'workspace:1.0.3' '@pnpm/store-path': ^4.0.2 '@pnpm/types': 'workspace:6.2.0' - '@types/lru-cache': ^5.1.0 '@types/ramda': ^0.27.14 '@types/semver': ^7.3.1 credentials-by-uri: ^2.0.0 dependency-path: 'workspace:5.0.3' - lru-cache: ^6.0.0 mem: ^6.1.0 npm-run-all: ^4.1.5 ramda: ^0.27.1 @@ -1807,7 +1807,6 @@ importers: credentials-by-uri: 2.0.0 enquirer: 2.3.6 fast-glob: 3.2.4 - lru-cache: 6.0.0 mem: 6.1.0 mz: 2.7.0 p-filter: 2.1.0 @@ -1820,7 +1819,6 @@ importers: '@pnpm/plugin-commands-publishing': 'link:' '@pnpm/prepare': 'link:../../privatePackages/prepare' '@types/cross-spawn': 6.0.2 - '@types/lru-cache': 5.1.0 '@types/mz': 2.7.1 '@types/proxyquire': 1.3.28 '@types/ramda': 0.27.14 @@ -1850,7 +1848,6 @@ importers: '@pnpm/store-path': ^4.0.2 '@pnpm/types': 'workspace:6.2.0' '@types/cross-spawn': ^6.0.2 - '@types/lru-cache': ^5.1.0 '@types/mz': ^2.7.1 '@types/proxyquire': ^1.3.28 '@types/ramda': ^0.27.14 @@ -1862,7 +1859,6 @@ importers: enquirer: ^2.3.6 execa: ^4.0.3 fast-glob: ^3.2.4 - lru-cache: ^6.0.0 mem: ^6.1.0 mz: ^2.7.0 p-filter: ^2.1.0 @@ -2596,12 +2592,10 @@ importers: '@zkochan/diable': 1.0.2 delay: 4.4.0 dir-is-case-sensitive: 1.0.2 - lru-cache: 6.0.0 mz: 2.7.0 devDependencies: '@pnpm/logger': 3.2.2 '@pnpm/store-connection-manager': 'link:' - '@types/lru-cache': 5.1.0 '@types/mz': 2.7.1 specifiers: '@pnpm/cli-meta': 'workspace:1.0.1' @@ -2613,12 +2607,10 @@ importers: '@pnpm/server': 'workspace:8.0.8' '@pnpm/store-connection-manager': 'link:' '@pnpm/store-path': ^4.0.2 - '@types/lru-cache': ^5.1.0 '@types/mz': ^2.7.1 '@zkochan/diable': ^1.0.2 delay: ^4.4.0 dir-is-case-sensitive: ^1.0.2 - lru-cache: ^6.0.0 mz: ^2.7.0 packages/store-controller-types: dependencies: