cspell-lib 9.8.0 → 10.0.1
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
|
|
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
|
|
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
|
|
73
|
-
if (
|
|
74
|
-
return
|
|
68
|
+
const cached = cachedPnpImports.get(found);
|
|
69
|
+
if (cached)
|
|
70
|
+
return cached;
|
|
75
71
|
const r = loadPnp(found);
|
|
76
|
-
|
|
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
|
|
81
|
-
|
|
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
|
|
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
|
-
|
|
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) {
|
|
@@ -12,16 +12,18 @@ export class SubstitutionTransformer {
|
|
|
12
12
|
if (!this.#trie)
|
|
13
13
|
return text;
|
|
14
14
|
const transformed = this.transformString(text.text);
|
|
15
|
+
const rawText = text.rawText ?? text.text;
|
|
15
16
|
const result = {
|
|
16
17
|
...text,
|
|
17
18
|
text: transformed.text,
|
|
18
19
|
map: mergeSourceMaps(text.map, transformed.map),
|
|
20
|
+
rawText,
|
|
19
21
|
};
|
|
20
22
|
return result;
|
|
21
23
|
}
|
|
22
24
|
transformString(text) {
|
|
23
25
|
if (!this.#trie) {
|
|
24
|
-
return { text, range: [0, text.length] };
|
|
26
|
+
return { text, range: [0, text.length], rawText: text };
|
|
25
27
|
}
|
|
26
28
|
const map = [0, 0];
|
|
27
29
|
let repText = '';
|
|
@@ -36,7 +38,7 @@ export class SubstitutionTransformer {
|
|
|
36
38
|
lastEnd = edit.range[1];
|
|
37
39
|
}
|
|
38
40
|
if (lastEnd === 0) {
|
|
39
|
-
return { text, range: [0, text.length] };
|
|
41
|
+
return { text, range: [0, text.length], rawText: text };
|
|
40
42
|
}
|
|
41
43
|
if (lastEnd < text.length) {
|
|
42
44
|
repText += text.slice(lastEnd);
|
|
@@ -46,6 +48,7 @@ export class SubstitutionTransformer {
|
|
|
46
48
|
text: repText,
|
|
47
49
|
range: [0, text.length],
|
|
48
50
|
map: mapOffsetPairsToSourceMap(map),
|
|
51
|
+
rawText: text,
|
|
49
52
|
};
|
|
50
53
|
return result;
|
|
51
54
|
}
|
|
@@ -95,14 +95,15 @@ function genResult(text, issues, includeRanges) {
|
|
|
95
95
|
const issue = issues[i];
|
|
96
96
|
const endPos = issue.offset;
|
|
97
97
|
const text = span.text.slice(0, endPos - span.startPos);
|
|
98
|
-
const endPosError = issue.offset + issue.text.length;
|
|
98
|
+
const endPosError = issue.offset + (issue.length ?? issue.text.length);
|
|
99
|
+
const issueText = span.text.slice(endPos - span.startPos, endPosError - span.startPos);
|
|
99
100
|
yield { ...span, text, endPos };
|
|
100
101
|
yield {
|
|
101
102
|
...span,
|
|
102
103
|
isError: true,
|
|
103
104
|
startPos: issue.offset,
|
|
104
105
|
endPos: endPosError,
|
|
105
|
-
text:
|
|
106
|
+
text: issueText,
|
|
106
107
|
};
|
|
107
108
|
span.text = span.text.slice(endPosError - span.startPos);
|
|
108
109
|
span.startPos = endPosError;
|
|
@@ -366,7 +366,15 @@ export function textValidatorFactory(dict, options) {
|
|
|
366
366
|
const { text, offset, isFlagged, isFound, suggestionsEx, hasPreferredSuggestions, hasSimpleSuggestions } = vr;
|
|
367
367
|
const r = mapRangeBackToOriginalPos([offset, offset + text.length], map);
|
|
368
368
|
const range = [r[0] + srcOffset, r[1] + srcOffset];
|
|
369
|
-
return {
|
|
369
|
+
return {
|
|
370
|
+
text,
|
|
371
|
+
range,
|
|
372
|
+
isFlagged,
|
|
373
|
+
isFound,
|
|
374
|
+
suggestionsEx,
|
|
375
|
+
hasPreferredSuggestions,
|
|
376
|
+
hasSimpleSuggestions,
|
|
377
|
+
};
|
|
370
378
|
}
|
|
371
379
|
return [...lineValidatorFn(lineSegment)].map(mapBackToOriginSimple);
|
|
372
380
|
}
|
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"access": "public",
|
|
5
5
|
"provenance": true
|
|
6
6
|
},
|
|
7
|
-
"version": "
|
|
7
|
+
"version": "10.0.1",
|
|
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": "
|
|
79
|
-
"@cspell/cspell-performance-monitor": "
|
|
80
|
-
"@cspell/cspell-pipe": "
|
|
81
|
-
"@cspell/cspell-resolver": "
|
|
82
|
-
"@cspell/cspell-types": "
|
|
83
|
-
"@cspell/dynamic-import": "
|
|
84
|
-
"@cspell/filetypes": "
|
|
85
|
-
"@cspell/rpc": "
|
|
86
|
-
"@cspell/strong-weak-map": "
|
|
87
|
-
"@cspell/url": "
|
|
88
|
-
"
|
|
89
|
-
"cspell-
|
|
90
|
-
"cspell-
|
|
91
|
-
"cspell-
|
|
92
|
-
"cspell-
|
|
93
|
-
"cspell-
|
|
94
|
-
"cspell-trie-lib": "9.8.0",
|
|
78
|
+
"@cspell/cspell-bundled-dicts": "10.0.1",
|
|
79
|
+
"@cspell/cspell-performance-monitor": "10.0.1",
|
|
80
|
+
"@cspell/cspell-pipe": "10.0.1",
|
|
81
|
+
"@cspell/cspell-resolver": "10.0.1",
|
|
82
|
+
"@cspell/cspell-types": "10.0.1",
|
|
83
|
+
"@cspell/dynamic-import": "10.0.1",
|
|
84
|
+
"@cspell/filetypes": "10.0.1",
|
|
85
|
+
"@cspell/rpc": "10.0.1",
|
|
86
|
+
"@cspell/strong-weak-map": "10.0.1",
|
|
87
|
+
"@cspell/url": "10.0.1",
|
|
88
|
+
"cspell-config-lib": "10.0.1",
|
|
89
|
+
"cspell-dictionary": "10.0.1",
|
|
90
|
+
"cspell-glob": "10.0.1",
|
|
91
|
+
"cspell-grammar": "10.0.1",
|
|
92
|
+
"cspell-io": "10.0.1",
|
|
93
|
+
"cspell-trie-lib": "10.0.1",
|
|
95
94
|
"env-paths": "^4.0.0",
|
|
96
95
|
"gensequence": "^8.0.8",
|
|
97
|
-
"import-fresh": "^
|
|
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": ">=
|
|
103
|
+
"node": ">=22.18.0"
|
|
105
104
|
},
|
|
106
105
|
"devDependencies": {
|
|
107
|
-
"@cspell/cspell-tools": "
|
|
106
|
+
"@cspell/cspell-tools": "10.0.1",
|
|
108
107
|
"@cspell/dict-cpp": "^7.0.2",
|
|
109
108
|
"@cspell/dict-csharp": "^4.0.8",
|
|
110
109
|
"@cspell/dict-css": "^4.1.1",
|
|
@@ -116,12 +115,12 @@
|
|
|
116
115
|
"@cspell/dict-python": "^4.2.26",
|
|
117
116
|
"@cspell/dictionary-bundler-plugin": "",
|
|
118
117
|
"@types/configstore": "^6.0.2",
|
|
119
|
-
"comment-json": "^
|
|
118
|
+
"comment-json": "^5.0.0",
|
|
120
119
|
"configstore": "^8.0.0",
|
|
121
120
|
"cspell-dict-nl-nl": "^1.1.2",
|
|
122
121
|
"leaked-handles": "^5.2.0",
|
|
123
|
-
"lorem-ipsum": "^2.0.
|
|
122
|
+
"lorem-ipsum": "^2.0.10",
|
|
124
123
|
"perf-insight": "^2.0.1"
|
|
125
124
|
},
|
|
126
|
-
"gitHead": "
|
|
125
|
+
"gitHead": "0f43abf29e5da0ecbcb08214055cdc1e3267c3ea"
|
|
127
126
|
}
|