From cbb11e9454d329fddf4b97e19c69e6ac358db232 Mon Sep 17 00:00:00 2001 From: changfeng Date: Wed, 31 May 2023 17:05:11 +0800 Subject: [PATCH] fix: top await can't use in cjs #2 --- package.json | 1 - pnpm-lock.yaml | 23 ----------------------- src/index.ts | 25 +++++++++++++------------ 3 files changed, 13 insertions(+), 36 deletions(-) diff --git a/package.json b/package.json index 9ddbebf..e7eb3fe 100644 --- a/package.json +++ b/package.json @@ -69,7 +69,6 @@ "dependencies": { "@rollup/pluginutils": "^5.0.2", "consola": "^3.1.0", - "mem": "^9.0.2", "p-memoize": "^7.1.1", "picocolors": "^1.0.0", "semver": "^7.5.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4a2fafd..b55582f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -14,9 +14,6 @@ importers: consola: specifier: ^3.1.0 version: 3.1.0 - mem: - specifier: ^9.0.2 - version: 9.0.2 p-memoize: specifier: ^7.1.1 version: 7.1.1 @@ -3050,13 +3047,6 @@ packages: '@jridgewell/sourcemap-codec': 1.4.15 dev: true - /map-age-cleaner@0.1.3: - resolution: {integrity: sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==} - engines: {node: '>=6'} - dependencies: - p-defer: 1.0.0 - dev: false - /md5-hex@3.0.1: resolution: {integrity: sha512-BUiRtTtV39LIJwinWBjqVsU9xhdnz7/i889V859IBFpuqGAj6LuOvHv5XLbgZ2R7ptJoJaEcxkv88/h25T7Ciw==} engines: {node: '>=8'} @@ -3080,14 +3070,6 @@ packages: resolution: {integrity: sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==} dev: true - /mem@9.0.2: - resolution: {integrity: sha512-F2t4YIv9XQUBHt6AOJ0y7lSmP1+cY7Fm1DRh9GClTGzKST7UWLMx6ly9WZdLH/G/ppM5RL4MlQfRT71ri9t19A==} - engines: {node: '>=12.20'} - dependencies: - map-age-cleaner: 0.1.3 - mimic-fn: 4.0.0 - dev: false - /merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} dev: true @@ -3378,11 +3360,6 @@ packages: engines: {node: '>=12.20'} dev: true - /p-defer@1.0.0: - resolution: {integrity: sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw==} - engines: {node: '>=4'} - dev: false - /p-limit@2.3.0: resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} engines: {node: '>=6'} diff --git a/src/index.ts b/src/index.ts index c69aac3..3d648cc 100644 --- a/src/index.ts +++ b/src/index.ts @@ -3,7 +3,6 @@ import path from 'node:path'; import { normalizePath } from '@rollup/pluginutils'; import consola from 'consola'; -import mem from 'mem'; import pMemoize from 'p-memoize'; import c from 'picocolors'; import { gt } from 'semver'; @@ -13,16 +12,20 @@ import { workspaceRoot } from 'workspace-root'; export interface Options {} -let workspaceRootFolder = await workspaceRoot(); -if (workspaceRootFolder) { - workspaceRootFolder = normalizePath(workspaceRootFolder); -} +const getWorkspaceRootFolder = pMemoize(async () => { + let workspaceRootFolder = await workspaceRoot(); + if (workspaceRootFolder) { + workspaceRootFolder = normalizePath(workspaceRootFolder); + } + return workspaceRootFolder; +}); -const parsePackageNameFromModulePath = mem((id: string) => { +const parsePackageNameFromModulePath = pMemoize(async (id: string) => { id = normalizePath(id); const packageNameRegex = /.*\/node_modules\/((?:@[^/]+\/)?[^/]+)/; const match = id.match(packageNameRegex); const packageName = match ? match[1] : id; + const workspaceRootFolder = await getWorkspaceRootFolder(); if (workspaceRootFolder && packageName.startsWith(workspaceRootFolder)) { return packageName.slice(workspaceRootFolder.length + 1); } @@ -75,19 +78,17 @@ export default createUnplugin(() => { if (packageInfo) { const { name, version } = packageInfo; const existedVersionsMap = packageToVersionsMap.get(name); + const importerPackage = await parsePackageNameFromModulePath(importer); if (existedVersionsMap) { const existedImporters = existedVersionsMap.get(version); if (existedImporters) { - existedImporters.add(parsePackageNameFromModulePath(importer)); + existedImporters.add(importerPackage); } else { - existedVersionsMap.set( - version, - new Set([parsePackageNameFromModulePath(importer)]), - ); + existedVersionsMap.set(version, new Set([importerPackage])); } } else { const versionMap = new Map>([ - [version, new Set([parsePackageNameFromModulePath(importer)])], + [version, new Set([importerPackage])], ]); packageToVersionsMap.set(name, versionMap); }