cspell-lib 9.8.0 → 10.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,8 +2,7 @@
2
2
  * Handles loading of `.pnp.js` and `.pnp.js` files.
3
3
  */
4
4
  import { fileURLToPath } from 'node:url';
5
- import clearModule from 'clear-module';
6
- import importFresh from 'import-fresh';
5
+ import createImportFresh from 'import-fresh';
7
6
  import { findUp } from '../../util/findUp.js';
8
7
  import { toFileUrl } from '../../util/url.js';
9
8
  import { UnsupportedPnpFile } from './ImportError.js';
@@ -11,7 +10,7 @@ const defaultPnpFiles = ['.pnp.cjs', '.pnp.js'];
11
10
  const supportedSchemas = new Set(['file:']);
12
11
  const cachedRequests = new Map();
13
12
  let lock = undefined;
14
- const cachedPnpImportsSync = new Map();
13
+ const cachedPnpImports = new Map();
15
14
  const cachedRequestsSync = new Map();
16
15
  export class PnpLoader {
17
16
  pnpFiles;
@@ -59,28 +58,29 @@ export class PnpLoader {
59
58
  export function pnpLoader(pnpFiles) {
60
59
  return new PnpLoader(pnpFiles);
61
60
  }
62
- /**
63
- * @param urlDirectory - directory to start at.
64
- */
65
61
  async function findPnpAndLoad(urlDirectory, pnpFiles) {
66
62
  const found = await findUp(pnpFiles, { cwd: fileURLToPath(urlDirectory) });
67
63
  return loadPnpIfNeeded(found);
68
64
  }
69
- function loadPnpIfNeeded(found) {
65
+ async function loadPnpIfNeeded(found) {
70
66
  if (!found)
71
67
  return undefined;
72
- const c = cachedPnpImportsSync.get(found);
73
- if (c || cachedPnpImportsSync.has(found))
74
- return c;
68
+ const cached = cachedPnpImports.get(found);
69
+ if (cached)
70
+ return cached;
75
71
  const r = loadPnp(found);
76
- cachedPnpImportsSync.set(found, r);
72
+ cachedPnpImports.set(found, r);
73
+ // If loading fails, remove from cache so subsequent calls can retry.
74
+ r.catch(() => cachedPnpImports.delete(found));
77
75
  return r;
78
76
  }
79
- function loadPnp(pnpFile) {
80
- const pnp = importFresh(pnpFile);
81
- if (pnp.setup) {
77
+ async function loadPnp(pnpFile) {
78
+ const pnpFileUrl = toFileUrl(pnpFile);
79
+ const importFresh = createImportFresh(pnpFileUrl);
80
+ const { default: pnp } = await importFresh(pnpFileUrl.href);
81
+ if (pnp?.setup) {
82
82
  pnp.setup();
83
- return toFileUrl(pnpFile);
83
+ return pnpFileUrl;
84
84
  }
85
85
  throw new UnsupportedPnpFile(`Unsupported pnp file: "${pnpFile}"`);
86
86
  }
@@ -94,11 +94,9 @@ export function clearPnPGlobalCache() {
94
94
  }
95
95
  async function _cleanCache() {
96
96
  await Promise.all([...cachedRequests.values()].map(rejectToUndefined));
97
- const modules = [...cachedPnpImportsSync.values()];
98
- modules.forEach((r) => r && clearModule.single(fileURLToPath(r)));
97
+ cachedPnpImports.clear();
99
98
  cachedRequests.clear();
100
99
  cachedRequestsSync.clear();
101
- cachedPnpImportsSync.clear();
102
100
  return undefined;
103
101
  }
104
102
  function rejectToUndefined(p) {
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "access": "public",
5
5
  "provenance": true
6
6
  },
7
- "version": "9.8.0",
7
+ "version": "10.0.0",
8
8
  "description": "A library of useful functions used across various cspell tools.",
9
9
  "type": "module",
10
10
  "sideEffects": false,
@@ -75,36 +75,35 @@
75
75
  },
76
76
  "homepage": "https://github.com/streetsidesoftware/cspell/tree/main/packages/cspell-lib#readme",
77
77
  "dependencies": {
78
- "@cspell/cspell-bundled-dicts": "9.8.0",
79
- "@cspell/cspell-performance-monitor": "9.8.0",
80
- "@cspell/cspell-pipe": "9.8.0",
81
- "@cspell/cspell-resolver": "9.8.0",
82
- "@cspell/cspell-types": "9.8.0",
83
- "@cspell/dynamic-import": "9.8.0",
84
- "@cspell/filetypes": "9.8.0",
85
- "@cspell/rpc": "9.8.0",
86
- "@cspell/strong-weak-map": "9.8.0",
87
- "@cspell/url": "9.8.0",
88
- "clear-module": "^4.1.2",
89
- "cspell-config-lib": "9.8.0",
90
- "cspell-dictionary": "9.8.0",
91
- "cspell-glob": "9.8.0",
92
- "cspell-grammar": "9.8.0",
93
- "cspell-io": "9.8.0",
94
- "cspell-trie-lib": "9.8.0",
78
+ "@cspell/cspell-bundled-dicts": "10.0.0",
79
+ "@cspell/cspell-performance-monitor": "10.0.0",
80
+ "@cspell/cspell-pipe": "10.0.0",
81
+ "@cspell/cspell-resolver": "10.0.0",
82
+ "@cspell/cspell-types": "10.0.0",
83
+ "@cspell/dynamic-import": "10.0.0",
84
+ "@cspell/filetypes": "10.0.0",
85
+ "@cspell/rpc": "10.0.0",
86
+ "@cspell/strong-weak-map": "10.0.0",
87
+ "@cspell/url": "10.0.0",
88
+ "cspell-config-lib": "10.0.0",
89
+ "cspell-dictionary": "10.0.0",
90
+ "cspell-glob": "10.0.0",
91
+ "cspell-grammar": "10.0.0",
92
+ "cspell-io": "10.0.0",
93
+ "cspell-trie-lib": "10.0.0",
95
94
  "env-paths": "^4.0.0",
96
95
  "gensequence": "^8.0.8",
97
- "import-fresh": "^3.3.1",
96
+ "import-fresh": "^4.0.0",
98
97
  "resolve-from": "^5.0.0",
99
98
  "vscode-languageserver-textdocument": "^1.0.12",
100
99
  "vscode-uri": "^3.1.0",
101
100
  "xdg-basedir": "^5.1.0"
102
101
  },
103
102
  "engines": {
104
- "node": ">=20"
103
+ "node": ">=22.18.0"
105
104
  },
106
105
  "devDependencies": {
107
- "@cspell/cspell-tools": "9.8.0",
106
+ "@cspell/cspell-tools": "10.0.0",
108
107
  "@cspell/dict-cpp": "^7.0.2",
109
108
  "@cspell/dict-csharp": "^4.0.8",
110
109
  "@cspell/dict-css": "^4.1.1",
@@ -123,5 +122,5 @@
123
122
  "lorem-ipsum": "^2.0.8",
124
123
  "perf-insight": "^2.0.1"
125
124
  },
126
- "gitHead": "c822013ce676dffb5fa5544567c25a3ae666718f"
125
+ "gitHead": "6ddfd576b6bb554a7cb8dba1ab053a0b6ff8021f"
127
126
  }