knip 6.35.1 → 6.36.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.
- package/dist/ConfigurationChief.d.ts +12 -0
- package/dist/WorkspaceWorker.js +6 -4
- package/dist/binaries/command.js +2 -2
- package/dist/compilers/compilers.js +1 -1
- package/dist/compilers/scss.js +2 -2
- package/dist/graph-explorer/cache.d.ts +3 -0
- package/dist/graph-explorer/cache.js +6 -0
- package/dist/graph-explorer/explorer.d.ts +1 -0
- package/dist/graph-explorer/explorer.js +2 -0
- package/dist/graph-explorer/operations/build-exports-tree.js +14 -2
- package/dist/graph-explorer/operations/get-ambiguous-star-export.d.ts +8 -0
- package/dist/graph-explorer/operations/get-ambiguous-star-export.js +11 -0
- package/dist/graph-explorer/operations/get-contention.js +265 -122
- package/dist/graph-explorer/operations/resolve-export-origins.d.ts +32 -0
- package/dist/graph-explorer/operations/resolve-export-origins.js +255 -0
- package/dist/graph-explorer/utils.js +8 -0
- package/dist/plugins/eslint/helpers.js +31 -6
- package/dist/plugins/eslint/resolveFromAST.js +17 -11
- package/dist/plugins/eslint/types.d.ts +3 -3
- package/dist/plugins/index.d.ts +2 -0
- package/dist/plugins/index.js +4 -0
- package/dist/plugins/next/index.js +39 -5
- package/dist/plugins/node/index.js +6 -0
- package/dist/plugins/tailwind/compiler.js +2 -2
- package/dist/plugins/tailwind/index.js +7 -1
- package/dist/plugins/textlint/helpers.d.ts +4 -0
- package/dist/plugins/textlint/helpers.js +39 -0
- package/dist/plugins/textlint/index.d.ts +3 -0
- package/dist/plugins/textlint/index.js +52 -0
- package/dist/plugins/textlint/types.d.ts +5 -0
- package/dist/plugins/textlint/types.js +1 -0
- package/dist/plugins/typedoc/index.js +3 -2
- package/dist/plugins/typedoc/types.d.ts +2 -2
- package/dist/plugins/varlock/index.d.ts +3 -0
- package/dist/plugins/varlock/index.js +31 -0
- package/dist/plugins/varlock/parse.d.ts +11 -0
- package/dist/plugins/varlock/parse.js +185 -0
- package/dist/plugins/varlock/scan.d.ts +2 -0
- package/dist/plugins/varlock/scan.js +78 -0
- package/dist/plugins/vitest/index.js +4 -2
- package/dist/reporters/trace.js +30 -1
- package/dist/schema/configuration.d.ts +30 -0
- package/dist/schema/plugins.d.ts +10 -0
- package/dist/schema/plugins.js +2 -0
- package/dist/session/build-maps.js +9 -1
- package/dist/session/file-descriptor.js +0 -2
- package/dist/session/index.d.ts +1 -1
- package/dist/session/types.d.ts +18 -0
- package/dist/types/PluginNames.d.ts +2 -2
- package/dist/types/PluginNames.js +2 -0
- package/dist/types/config.d.ts +1 -0
- package/dist/types/module-graph.d.ts +3 -0
- package/dist/typescript/get-imports-and-exports.js +43 -9
- package/dist/typescript/visitors/exports.js +9 -4
- package/dist/typescript/visitors/walk.d.ts +1 -1
- package/dist/typescript/visitors/walk.js +4 -1
- package/dist/util/array.d.ts +1 -1
- package/dist/util/array.js +5 -1
- package/dist/util/create-options.d.ts +20 -0
- package/dist/util/file-entry-cache.js +1 -1
- package/dist/util/glob-core.d.ts +1 -0
- package/dist/util/glob-core.js +11 -3
- package/dist/util/package-json.d.ts +2 -0
- package/dist/util/url.d.ts +1 -0
- package/dist/util/url.js +2 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
- package/schema.json +8 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { arrayify } from '../../util/array.js';
|
|
1
2
|
import { toDeferResolve, toEntry } from '../../util/input.js';
|
|
2
3
|
import { join } from '../../util/path.js';
|
|
3
4
|
import { hasDependency } from '../../util/plugin.js';
|
|
@@ -15,8 +16,8 @@ const config = [
|
|
|
15
16
|
];
|
|
16
17
|
const resolveConfig = (config, options) => {
|
|
17
18
|
const cfg = 'typedocOptions' in config ? config.typedocOptions : config;
|
|
18
|
-
const plugins = cfg?.plugin
|
|
19
|
-
const themes = cfg?.theme
|
|
19
|
+
const plugins = arrayify(cfg?.plugin);
|
|
20
|
+
const themes = arrayify(cfg?.theme);
|
|
20
21
|
const inputs = [...plugins, ...themes].map(id => toDeferResolve(id));
|
|
21
22
|
for (const file of [cfg?.customCss, cfg?.customJs]) {
|
|
22
23
|
if (file)
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { arrayify } from '../../util/array.js';
|
|
2
|
+
import { get } from '../../util/object.js';
|
|
3
|
+
import { hasDependency } from '../../util/plugin.js';
|
|
4
|
+
import { scanVarlockFiles } from './scan.js';
|
|
5
|
+
const title = 'Varlock';
|
|
6
|
+
const enablers = ['varlock'];
|
|
7
|
+
const isEnabled = ({ dependencies }) => hasDependency(dependencies, enablers);
|
|
8
|
+
const getLoadPaths = (manifest) => arrayify(get(manifest, 'varlock.loadPath'));
|
|
9
|
+
const resolve = options => {
|
|
10
|
+
const loadPaths = getLoadPaths(options.manifest);
|
|
11
|
+
return scanVarlockFiles(loadPaths.length > 0 ? loadPaths : ['.'], options.cwd);
|
|
12
|
+
};
|
|
13
|
+
const args = {
|
|
14
|
+
alias: { path: ['p'] },
|
|
15
|
+
string: ['path', 'env'],
|
|
16
|
+
fromArgs: parsed => (parsed._[0] === 'run' ? (parsed['--'] ?? []) : []),
|
|
17
|
+
resolveInputs: (parsed, { cwd, manifest }) => {
|
|
18
|
+
const paths = arrayify(parsed.path);
|
|
19
|
+
const loadPaths = getLoadPaths(manifest);
|
|
20
|
+
const environment = arrayify(parsed.env).at(-1);
|
|
21
|
+
return scanVarlockFiles(paths.length > 0 ? paths : environment ? (loadPaths.length > 0 ? loadPaths : ['.']) : [], cwd);
|
|
22
|
+
},
|
|
23
|
+
};
|
|
24
|
+
const plugin = {
|
|
25
|
+
title,
|
|
26
|
+
enablers,
|
|
27
|
+
isEnabled,
|
|
28
|
+
args,
|
|
29
|
+
resolve,
|
|
30
|
+
};
|
|
31
|
+
export default plugin;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
type Directive = {
|
|
2
|
+
name: 'import' | 'plugin';
|
|
3
|
+
descriptor: string;
|
|
4
|
+
enabled?: boolean | null;
|
|
5
|
+
allowMissing?: boolean | null;
|
|
6
|
+
};
|
|
7
|
+
export declare const parseVarlockFile: (source: string) => {
|
|
8
|
+
directives: Directive[];
|
|
9
|
+
disabled: boolean;
|
|
10
|
+
};
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
const pairs = { '(': ')', '[': ']', '{': '}' };
|
|
2
|
+
const getRootComments = (source) => {
|
|
3
|
+
const comments = [];
|
|
4
|
+
let block = [];
|
|
5
|
+
let hasConfigItem = false;
|
|
6
|
+
for (const line of source.replace(/^\uFEFF/, '').split(/\r?\n/)) {
|
|
7
|
+
if (!line.trim()) {
|
|
8
|
+
comments.push(...block);
|
|
9
|
+
block = [];
|
|
10
|
+
continue;
|
|
11
|
+
}
|
|
12
|
+
const match = line.match(/^\s*#(.*)$/);
|
|
13
|
+
if (!match) {
|
|
14
|
+
hasConfigItem = true;
|
|
15
|
+
break;
|
|
16
|
+
}
|
|
17
|
+
const content = match[1].trimStart();
|
|
18
|
+
if (/^[-=*#]{3}/.test(content)) {
|
|
19
|
+
comments.push(...block);
|
|
20
|
+
block = [];
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
block.push(content);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
if (!hasConfigItem)
|
|
27
|
+
comments.push(...block);
|
|
28
|
+
return comments.join('\n');
|
|
29
|
+
};
|
|
30
|
+
const readQuoted = (value, start) => {
|
|
31
|
+
const quote = value[start];
|
|
32
|
+
let result = '';
|
|
33
|
+
for (let index = start + 1; index < value.length; index++) {
|
|
34
|
+
const char = value[index];
|
|
35
|
+
if (char === quote)
|
|
36
|
+
return { value: result, end: index + 1 };
|
|
37
|
+
if (char === '\\' && value[index + 1] === quote) {
|
|
38
|
+
result += quote;
|
|
39
|
+
index++;
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
result += char;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
const readArguments = (value, start) => {
|
|
47
|
+
const args = [];
|
|
48
|
+
const stack = [pairs[value[start]]];
|
|
49
|
+
let argument = '';
|
|
50
|
+
for (let index = start + 1; index < value.length; index++) {
|
|
51
|
+
const char = value[index];
|
|
52
|
+
if (char === '"' || char === "'" || char === '`') {
|
|
53
|
+
const quoted = readQuoted(value, index);
|
|
54
|
+
if (!quoted)
|
|
55
|
+
return;
|
|
56
|
+
argument += value.slice(index, quoted.end);
|
|
57
|
+
index = quoted.end - 1;
|
|
58
|
+
}
|
|
59
|
+
else if (char === '#') {
|
|
60
|
+
index = value.indexOf('\n', index);
|
|
61
|
+
if (index === -1)
|
|
62
|
+
return;
|
|
63
|
+
argument += ' ';
|
|
64
|
+
}
|
|
65
|
+
else if (pairs[char]) {
|
|
66
|
+
stack.push(pairs[char]);
|
|
67
|
+
argument += char;
|
|
68
|
+
}
|
|
69
|
+
else if (char === stack.at(-1)) {
|
|
70
|
+
stack.pop();
|
|
71
|
+
if (stack.length === 0) {
|
|
72
|
+
args.push(argument.trim());
|
|
73
|
+
return { args, end: index + 1 };
|
|
74
|
+
}
|
|
75
|
+
argument += char;
|
|
76
|
+
}
|
|
77
|
+
else if (char === ',' && stack.length === 1) {
|
|
78
|
+
args.push(argument.trim());
|
|
79
|
+
argument = '';
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
argument += char;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
};
|
|
86
|
+
const readValueEnd = (value, start) => {
|
|
87
|
+
let index = start;
|
|
88
|
+
while (index < value.length && !/[\s#]/.test(value[index])) {
|
|
89
|
+
const char = value[index];
|
|
90
|
+
if (char === '"' || char === "'" || char === '`') {
|
|
91
|
+
const quoted = readQuoted(value, index);
|
|
92
|
+
if (!quoted)
|
|
93
|
+
return value.length;
|
|
94
|
+
index = quoted.end;
|
|
95
|
+
}
|
|
96
|
+
else if (pairs[char]) {
|
|
97
|
+
const nested = readArguments(value, index);
|
|
98
|
+
if (!nested)
|
|
99
|
+
return value.length;
|
|
100
|
+
index = nested.end;
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
index++;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
return index;
|
|
107
|
+
};
|
|
108
|
+
const getStaticString = (value) => {
|
|
109
|
+
const trimmed = value.trim();
|
|
110
|
+
const quote = trimmed[0];
|
|
111
|
+
if (quote === '"' || quote === "'" || quote === '`') {
|
|
112
|
+
const quoted = readQuoted(trimmed, 0);
|
|
113
|
+
return quoted?.end === trimmed.length ? quoted.value : undefined;
|
|
114
|
+
}
|
|
115
|
+
if (!trimmed || /[\s,)]/.test(trimmed) || trimmed.includes('$') || /^[a-z][a-z\d_]*\(/i.test(trimmed))
|
|
116
|
+
return;
|
|
117
|
+
if (/^(?:true|false|undefined)$/i.test(trimmed))
|
|
118
|
+
return;
|
|
119
|
+
const number = Number(trimmed);
|
|
120
|
+
return Number.isFinite(number) && String(number) === trimmed ? undefined : trimmed;
|
|
121
|
+
};
|
|
122
|
+
const getBoolean = (value) => {
|
|
123
|
+
const trimmed = value.trim();
|
|
124
|
+
return trimmed === 'true' ? true : trimmed === 'false' ? false : null;
|
|
125
|
+
};
|
|
126
|
+
export const parseVarlockFile = (source) => {
|
|
127
|
+
const directives = [];
|
|
128
|
+
const value = getRootComments(source);
|
|
129
|
+
let disabled = false;
|
|
130
|
+
for (let index = 0; index < value.length;) {
|
|
131
|
+
while (value[index] === ' ' || value[index] === '\t')
|
|
132
|
+
index++;
|
|
133
|
+
if (value[index] !== '@') {
|
|
134
|
+
index = value.indexOf('\n', index) + 1 || value.length;
|
|
135
|
+
continue;
|
|
136
|
+
}
|
|
137
|
+
while (index < value.length && value[index] !== '\n' && value[index] !== '#') {
|
|
138
|
+
if (value[index] !== '@' || !/[a-z]/i.test(value[index + 1] ?? '')) {
|
|
139
|
+
index++;
|
|
140
|
+
continue;
|
|
141
|
+
}
|
|
142
|
+
let nameEnd = index + 2;
|
|
143
|
+
while (/[a-z\d_]/i.test(value[nameEnd] ?? ''))
|
|
144
|
+
nameEnd++;
|
|
145
|
+
const name = value.slice(index + 1, nameEnd);
|
|
146
|
+
let cursor = nameEnd;
|
|
147
|
+
while (value[cursor] === ' ' || value[cursor] === '\t')
|
|
148
|
+
cursor++;
|
|
149
|
+
if (value[cursor] === '(') {
|
|
150
|
+
const result = readArguments(value, cursor);
|
|
151
|
+
if (!result)
|
|
152
|
+
break;
|
|
153
|
+
if (name === 'plugin' || name === 'import') {
|
|
154
|
+
const descriptor = getStaticString(result.args[0] ?? '');
|
|
155
|
+
if (descriptor !== undefined) {
|
|
156
|
+
const directive = { name, descriptor };
|
|
157
|
+
for (const arg of result.args.slice(1)) {
|
|
158
|
+
const separator = arg.indexOf('=');
|
|
159
|
+
if (separator === -1)
|
|
160
|
+
continue;
|
|
161
|
+
const key = arg.slice(0, separator).trim();
|
|
162
|
+
if (key === 'enabled' || key === 'allowMissing')
|
|
163
|
+
directive[key] = getBoolean(arg.slice(separator + 1));
|
|
164
|
+
}
|
|
165
|
+
directives.push(directive);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
index = result.end;
|
|
169
|
+
}
|
|
170
|
+
else if (value[cursor] === '=') {
|
|
171
|
+
const end = readValueEnd(value, cursor + 1);
|
|
172
|
+
if (name === 'disable')
|
|
173
|
+
disabled ||= getBoolean(value.slice(cursor + 1, end)) === true;
|
|
174
|
+
index = end;
|
|
175
|
+
}
|
|
176
|
+
else {
|
|
177
|
+
if (name === 'disable')
|
|
178
|
+
disabled = true;
|
|
179
|
+
index = nameEnd;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
index = value.indexOf('\n', index) + 1 || value.length;
|
|
183
|
+
}
|
|
184
|
+
return { directives, disabled };
|
|
185
|
+
};
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { readFileSync, readdirSync } from 'node:fs';
|
|
2
|
+
import { homedir } from 'node:os';
|
|
3
|
+
import { toDeferResolve, toDeferResolveProductionEntry, toDependency } from '../../util/input.js';
|
|
4
|
+
import { isDirectory, isFile, tryRealpath } from '../../util/fs.js';
|
|
5
|
+
import { getPackageNameFromModuleSpecifier } from '../../util/modules.js';
|
|
6
|
+
import { dirname, isInternal, join, toAbsolute } from '../../util/path.js';
|
|
7
|
+
import { isGitIgnored } from '../../util/glob-core.js';
|
|
8
|
+
import { debugLog } from '../../util/debug.js';
|
|
9
|
+
import { hasUrlScheme } from '../../util/url.js';
|
|
10
|
+
import { parseVarlockFile } from './parse.js';
|
|
11
|
+
const resolvePath = (path, cwd) => path.startsWith('~/') ? join(homedir(), path.slice(2)) : toAbsolute(path, cwd);
|
|
12
|
+
const isExternalUrl = (path) => path.startsWith('//') || hasUrlScheme(path);
|
|
13
|
+
const isLocalPath = (path) => path.startsWith('~/') || isInternal(path);
|
|
14
|
+
const expandLoadPath = (path) => {
|
|
15
|
+
if (!isDirectory(path))
|
|
16
|
+
return [path];
|
|
17
|
+
try {
|
|
18
|
+
const paths = [];
|
|
19
|
+
for (const name of readdirSync(path))
|
|
20
|
+
if (name === '.env' || name.startsWith('.env.'))
|
|
21
|
+
paths.push(join(path, name));
|
|
22
|
+
return paths;
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
return [];
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
export const scanVarlockFiles = (paths, cwd) => {
|
|
29
|
+
const inputs = [];
|
|
30
|
+
const queue = [];
|
|
31
|
+
for (const path of paths)
|
|
32
|
+
queue.push(...expandLoadPath(resolvePath(path, cwd)));
|
|
33
|
+
const visited = new Set();
|
|
34
|
+
for (const path of queue) {
|
|
35
|
+
if (!isFile(path) || isGitIgnored(path))
|
|
36
|
+
continue;
|
|
37
|
+
const realPath = tryRealpath(path);
|
|
38
|
+
if (visited.has(realPath))
|
|
39
|
+
continue;
|
|
40
|
+
visited.add(realPath);
|
|
41
|
+
let source;
|
|
42
|
+
try {
|
|
43
|
+
source = readFileSync(realPath, 'utf8');
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
debugLog('Varlock', `Unable to read ${realPath} (${error instanceof Error ? error.message : error})`);
|
|
47
|
+
continue;
|
|
48
|
+
}
|
|
49
|
+
const { directives, disabled } = parseVarlockFile(source);
|
|
50
|
+
if (disabled)
|
|
51
|
+
continue;
|
|
52
|
+
for (const { name, descriptor, enabled, allowMissing } of directives) {
|
|
53
|
+
if (!descriptor || descriptor.includes('$') || isExternalUrl(descriptor) || enabled === false)
|
|
54
|
+
continue;
|
|
55
|
+
if (name === 'plugin') {
|
|
56
|
+
if (isLocalPath(descriptor)) {
|
|
57
|
+
inputs.push(toDeferResolveProductionEntry(descriptor.startsWith('~/') ? resolvePath(descriptor, dirname(realPath)) : descriptor, { containingFilePath: realPath }));
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
const packageName = getPackageNameFromModuleSpecifier(descriptor);
|
|
61
|
+
if (packageName) {
|
|
62
|
+
inputs.push({ ...toDependency(packageName, { containingFilePath: realPath }), production: true });
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
continue;
|
|
66
|
+
}
|
|
67
|
+
if (!isLocalPath(descriptor))
|
|
68
|
+
continue;
|
|
69
|
+
const importPath = resolvePath(descriptor, dirname(realPath));
|
|
70
|
+
if (isFile(importPath) || isDirectory(importPath))
|
|
71
|
+
queue.push(...expandLoadPath(importPath));
|
|
72
|
+
else if (allowMissing !== true && allowMissing !== null && enabled !== null) {
|
|
73
|
+
inputs.push(toDeferResolve(descriptor, { containingFilePath: realPath }));
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return inputs;
|
|
78
|
+
};
|
|
@@ -143,7 +143,9 @@ export const resolveConfig = async (localConfig, options) => {
|
|
|
143
143
|
for (const entry of await getIndexHtmlEntries(viteRoot, publicDir))
|
|
144
144
|
inputs.add(entry);
|
|
145
145
|
}
|
|
146
|
-
const vitestRoot =
|
|
146
|
+
const vitestRoot = cfg.test?.root || !options.isResolvedConfigFile
|
|
147
|
+
? toAbsolute(cfg.test?.root ?? '.', options.cwd)
|
|
148
|
+
: toAbsolute('.', options.configFileDir);
|
|
147
149
|
const dir = cfg.test?.dir ? toAbsolute(cfg.test.dir, vitestRoot) : vitestRoot;
|
|
148
150
|
if (cfg.test) {
|
|
149
151
|
if (cfg.test?.include) {
|
|
@@ -189,7 +191,7 @@ export const resolveConfig = async (localConfig, options) => {
|
|
|
189
191
|
inputs.add(dependency);
|
|
190
192
|
const _entry = cfg.build?.lib?.entry ?? [];
|
|
191
193
|
const entries = typeof _entry === 'string' ? [_entry] : Array.isArray(_entry) ? _entry : Object.values(_entry).flat();
|
|
192
|
-
const deps = entries.map(specifier => join(
|
|
194
|
+
const deps = entries.map(specifier => join(viteRoot, specifier)).map(id => toEntry(id));
|
|
193
195
|
for (const dependency of deps)
|
|
194
196
|
inputs.add(dependency);
|
|
195
197
|
}
|
package/dist/reporters/trace.js
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { IMPORT_STAR } from '../constants.js';
|
|
2
|
+
import { getAmbiguousStarExport } from '../graph-explorer/operations/get-ambiguous-star-export.js';
|
|
1
3
|
import st from '../util/colors.js';
|
|
2
4
|
import { toRelative } from '../util/path.js';
|
|
3
5
|
import { toRegexOrString } from '../util/regex.js';
|
|
@@ -33,6 +35,34 @@ export default ({ graph, explorer, options, workspaceFilePathFilter, issues }) =
|
|
|
33
35
|
}
|
|
34
36
|
else {
|
|
35
37
|
let nodes = explorer.buildExportsTree({ filePath: options.traceFile, identifier: options.traceExport });
|
|
38
|
+
const traceFile = options.traceFile;
|
|
39
|
+
const traceExport = options.traceExport;
|
|
40
|
+
const dotIndex = traceExport?.indexOf('.') ?? -1;
|
|
41
|
+
const resolvedTraceExport = dotIndex === -1 ? traceExport : traceExport?.slice(0, dotIndex);
|
|
42
|
+
const resolution = traceFile && resolvedTraceExport ? explorer.resolveExportOrigins(traceFile, resolvedTraceExport) : undefined;
|
|
43
|
+
const collision = resolution && resolvedTraceExport ? getAmbiguousStarExport(resolution, resolvedTraceExport) : undefined;
|
|
44
|
+
const toRel = (path) => toRelative(path, options.cwd);
|
|
45
|
+
if (collision) {
|
|
46
|
+
collision.origins.sort((a, b) => compareStrings(a.filePath, b.filePath));
|
|
47
|
+
console.log(`${toRel(traceFile ?? '')}:${st.cyanBright(resolvedTraceExport ?? '')} [ambiguous]`);
|
|
48
|
+
for (let i = 0; i < collision.origins.length; i++) {
|
|
49
|
+
const origin = collision.origins[i];
|
|
50
|
+
const connector = i === collision.origins.length - 1 ? '└──' : '├──';
|
|
51
|
+
console.log(`${st.dim(connector)} ${toRel(origin.filePath)}:${st.cyanBright(origin.identifier)}`);
|
|
52
|
+
}
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
if (nodes.length === 0 && resolution && !resolution.hasExplicitExport && resolution.origins.length === 1) {
|
|
56
|
+
const [origin] = resolution.origins;
|
|
57
|
+
const originFile = graph.get(origin.filePath);
|
|
58
|
+
if (originFile && origin.identifier !== IMPORT_STAR && origin.identifier !== 'default') {
|
|
59
|
+
for (const [exportId, exp] of originFile.exports) {
|
|
60
|
+
if (exp.binding !== origin.identifier)
|
|
61
|
+
continue;
|
|
62
|
+
nodes.push(...explorer.buildExportsTree({ filePath: origin.filePath, identifier: exportId }));
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
36
66
|
if (nodes.length === 0 && options.traceExport?.includes('.')) {
|
|
37
67
|
const nsName = options.traceExport.substring(0, options.traceExport.indexOf('.'));
|
|
38
68
|
nodes = explorer.buildExportsTree({ filePath: options.traceFile, identifier: nsName });
|
|
@@ -56,7 +86,6 @@ export default ({ graph, explorer, options, workspaceFilePathFilter, issues }) =
|
|
|
56
86
|
}
|
|
57
87
|
}
|
|
58
88
|
nodes.sort((a, b) => compareStrings(a.filePath, b.filePath) || compareStrings(a.identifier, b.identifier));
|
|
59
|
-
const toRel = (path) => toRelative(path, options.cwd);
|
|
60
89
|
if (nodes.length === 0) {
|
|
61
90
|
if (options.traceFile && !graph.has(options.traceFile)) {
|
|
62
91
|
console.log(`File not found in module graph: ${toRel(options.traceFile)}`);
|
|
@@ -731,6 +731,11 @@ export declare const workspaceConfigurationSchema: z.ZodMiniObject<{
|
|
|
731
731
|
entry: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
|
|
732
732
|
project: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
|
|
733
733
|
}, z.core.$strip>]>>;
|
|
734
|
+
textlint: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniBoolean<boolean>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>, z.ZodMiniObject<{
|
|
735
|
+
config: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
|
|
736
|
+
entry: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
|
|
737
|
+
project: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
|
|
738
|
+
}, z.core.$strip>]>>;
|
|
734
739
|
travis: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniBoolean<boolean>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>, z.ZodMiniObject<{
|
|
735
740
|
config: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
|
|
736
741
|
entry: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
|
|
@@ -811,6 +816,11 @@ export declare const workspaceConfigurationSchema: z.ZodMiniObject<{
|
|
|
811
816
|
entry: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
|
|
812
817
|
project: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
|
|
813
818
|
}, z.core.$strip>]>>;
|
|
819
|
+
varlock: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniBoolean<boolean>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>, z.ZodMiniObject<{
|
|
820
|
+
config: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
|
|
821
|
+
entry: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
|
|
822
|
+
project: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
|
|
823
|
+
}, z.core.$strip>]>>;
|
|
814
824
|
vercel: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniBoolean<boolean>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>, z.ZodMiniObject<{
|
|
815
825
|
config: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
|
|
816
826
|
entry: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
|
|
@@ -1662,6 +1672,11 @@ export declare const knipConfigurationSchema: z.ZodMiniObject<{
|
|
|
1662
1672
|
entry: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
|
|
1663
1673
|
project: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
|
|
1664
1674
|
}, z.core.$strip>]>>;
|
|
1675
|
+
textlint: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniBoolean<boolean>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>, z.ZodMiniObject<{
|
|
1676
|
+
config: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
|
|
1677
|
+
entry: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
|
|
1678
|
+
project: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
|
|
1679
|
+
}, z.core.$strip>]>>;
|
|
1665
1680
|
travis: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniBoolean<boolean>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>, z.ZodMiniObject<{
|
|
1666
1681
|
config: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
|
|
1667
1682
|
entry: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
|
|
@@ -1742,6 +1757,11 @@ export declare const knipConfigurationSchema: z.ZodMiniObject<{
|
|
|
1742
1757
|
entry: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
|
|
1743
1758
|
project: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
|
|
1744
1759
|
}, z.core.$strip>]>>;
|
|
1760
|
+
varlock: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniBoolean<boolean>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>, z.ZodMiniObject<{
|
|
1761
|
+
config: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
|
|
1762
|
+
entry: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
|
|
1763
|
+
project: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
|
|
1764
|
+
}, z.core.$strip>]>>;
|
|
1745
1765
|
vercel: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniBoolean<boolean>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>, z.ZodMiniObject<{
|
|
1746
1766
|
config: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
|
|
1747
1767
|
entry: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
|
|
@@ -2612,6 +2632,11 @@ export declare const knipConfigurationSchema: z.ZodMiniObject<{
|
|
|
2612
2632
|
entry: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
|
|
2613
2633
|
project: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
|
|
2614
2634
|
}, z.core.$strip>]>>;
|
|
2635
|
+
textlint: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniBoolean<boolean>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>, z.ZodMiniObject<{
|
|
2636
|
+
config: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
|
|
2637
|
+
entry: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
|
|
2638
|
+
project: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
|
|
2639
|
+
}, z.core.$strip>]>>;
|
|
2615
2640
|
travis: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniBoolean<boolean>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>, z.ZodMiniObject<{
|
|
2616
2641
|
config: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
|
|
2617
2642
|
entry: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
|
|
@@ -2692,6 +2717,11 @@ export declare const knipConfigurationSchema: z.ZodMiniObject<{
|
|
|
2692
2717
|
entry: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
|
|
2693
2718
|
project: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
|
|
2694
2719
|
}, z.core.$strip>]>>;
|
|
2720
|
+
varlock: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniBoolean<boolean>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>, z.ZodMiniObject<{
|
|
2721
|
+
config: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
|
|
2722
|
+
entry: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
|
|
2723
|
+
project: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
|
|
2724
|
+
}, z.core.$strip>]>>;
|
|
2695
2725
|
vercel: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniBoolean<boolean>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>, z.ZodMiniObject<{
|
|
2696
2726
|
config: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
|
|
2697
2727
|
entry: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
|
package/dist/schema/plugins.d.ts
CHANGED
|
@@ -736,6 +736,11 @@ export declare const pluginsSchema: z.ZodMiniObject<{
|
|
|
736
736
|
entry: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
|
|
737
737
|
project: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
|
|
738
738
|
}, z.core.$strip>]>;
|
|
739
|
+
textlint: z.ZodMiniUnion<readonly [z.ZodMiniBoolean<boolean>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>, z.ZodMiniObject<{
|
|
740
|
+
config: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
|
|
741
|
+
entry: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
|
|
742
|
+
project: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
|
|
743
|
+
}, z.core.$strip>]>;
|
|
739
744
|
travis: z.ZodMiniUnion<readonly [z.ZodMiniBoolean<boolean>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>, z.ZodMiniObject<{
|
|
740
745
|
config: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
|
|
741
746
|
entry: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
|
|
@@ -816,6 +821,11 @@ export declare const pluginsSchema: z.ZodMiniObject<{
|
|
|
816
821
|
entry: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
|
|
817
822
|
project: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
|
|
818
823
|
}, z.core.$strip>]>;
|
|
824
|
+
varlock: z.ZodMiniUnion<readonly [z.ZodMiniBoolean<boolean>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>, z.ZodMiniObject<{
|
|
825
|
+
config: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
|
|
826
|
+
entry: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
|
|
827
|
+
project: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
|
|
828
|
+
}, z.core.$strip>]>;
|
|
819
829
|
vercel: z.ZodMiniUnion<readonly [z.ZodMiniBoolean<boolean>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>, z.ZodMiniObject<{
|
|
820
830
|
config: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
|
|
821
831
|
entry: z.ZodMiniOptional<z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniArray<z.ZodMiniString<string>>]>>;
|
package/dist/schema/plugins.js
CHANGED
|
@@ -156,6 +156,7 @@ export const pluginsSchema = z.object({
|
|
|
156
156
|
taskfile: pluginSchema,
|
|
157
157
|
tauri: pluginSchema,
|
|
158
158
|
temporal: pluginSchema,
|
|
159
|
+
textlint: pluginSchema,
|
|
159
160
|
travis: pluginSchema,
|
|
160
161
|
'ts-node': pluginSchema,
|
|
161
162
|
tsd: pluginSchema,
|
|
@@ -172,6 +173,7 @@ export const pluginsSchema = z.object({
|
|
|
172
173
|
'unplugin-vue-i18n': pluginSchema,
|
|
173
174
|
'unplugin-vue-markdown': pluginSchema,
|
|
174
175
|
'unplugin-vue-router': pluginSchema,
|
|
176
|
+
varlock: pluginSchema,
|
|
175
177
|
vercel: pluginSchema,
|
|
176
178
|
'vercel-og': pluginSchema,
|
|
177
179
|
vike: pluginSchema,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { IMPORT_STAR } from '../constants.js';
|
|
1
|
+
import { IMPORT_FLAGS, IMPORT_STAR } from '../constants.js';
|
|
2
2
|
import { getExportedIdentifiers } from '../graph-explorer/utils.js';
|
|
3
3
|
import { forEachAliasReExport, forEachNamespaceReExport, forEachPassThroughReExport, getStarReExportSources, } from '../graph-explorer/visitors.js';
|
|
4
4
|
import { compareStrings } from '../util/string.js';
|
|
@@ -52,6 +52,14 @@ export const buildExportsMap = (fileNode, filePath, graph, entryPaths, explorer,
|
|
|
52
52
|
for (const _export of fileNode.exports.values()) {
|
|
53
53
|
addExport(_export.identifier, filePath, _export.pos, _export.line, _export.col, undefined);
|
|
54
54
|
}
|
|
55
|
+
for (const _import of fileNode.imports.imports) {
|
|
56
|
+
if (!_import.filePath &&
|
|
57
|
+
_import.modifiers & IMPORT_FLAGS.RE_EXPORT &&
|
|
58
|
+
_import.identifier === IMPORT_STAR &&
|
|
59
|
+
_import.alias) {
|
|
60
|
+
addExport(_import.alias, filePath, _import.pos, _import.line, _import.col, undefined);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
55
63
|
for (const [importedFilePath, importMaps] of fileNode.imports.internal) {
|
|
56
64
|
forEachPassThroughReExport(importMaps, (id, _sources) => {
|
|
57
65
|
if (exportsMap.has(id))
|
|
@@ -27,8 +27,6 @@ export const buildFileDescriptor = (filePath, cwd, graph, entryPaths, options =
|
|
|
27
27
|
const details = contentionMap.get(identifier);
|
|
28
28
|
if (!details)
|
|
29
29
|
continue;
|
|
30
|
-
if (details.branching.length === 0 && details.conflict.length === 0)
|
|
31
|
-
continue;
|
|
32
30
|
contention[identifier] = details;
|
|
33
31
|
}
|
|
34
32
|
}
|
package/dist/session/index.d.ts
CHANGED
|
@@ -9,4 +9,4 @@ export { createOptions, type MainOptions } from '../util/create-options.ts';
|
|
|
9
9
|
export { buildFileDescriptor, type FileDescriptorOptions } from './file-descriptor.ts';
|
|
10
10
|
export { buildPackageJsonDescriptor, type PackageJsonFile } from './package-json-descriptor.ts';
|
|
11
11
|
export { createSession, type Session } from './session.ts';
|
|
12
|
-
export type { ContentionDetails, Export, File, SourceLocation } from './types.ts';
|
|
12
|
+
export type { ContentionDetails, ContentionKind, ContentionOrigin, ContentionSite, Export, File, SourceLocation, } from './types.ts';
|
package/dist/session/types.d.ts
CHANGED
|
@@ -13,9 +13,27 @@ export interface Export extends SourceLocation {
|
|
|
13
13
|
entryPaths: Set<string>;
|
|
14
14
|
exports: Export[] | undefined;
|
|
15
15
|
}
|
|
16
|
+
export type ContentionKind = 'ambiguous' | 'shadowed' | 'converged';
|
|
17
|
+
export interface ContentionOrigin {
|
|
18
|
+
filePath: string;
|
|
19
|
+
identifier: string;
|
|
20
|
+
line?: number;
|
|
21
|
+
col?: number;
|
|
22
|
+
}
|
|
23
|
+
export interface ContentionSite {
|
|
24
|
+
kind: ContentionKind;
|
|
25
|
+
filePath: string;
|
|
26
|
+
identifier: string;
|
|
27
|
+
line?: number;
|
|
28
|
+
col?: number;
|
|
29
|
+
origins: ContentionOrigin[];
|
|
30
|
+
winner?: ContentionOrigin;
|
|
31
|
+
sources: string[];
|
|
32
|
+
}
|
|
16
33
|
export interface ContentionDetails {
|
|
17
34
|
branching: string[];
|
|
18
35
|
conflict: string[];
|
|
36
|
+
sites: ContentionSite[];
|
|
19
37
|
}
|
|
20
38
|
export interface FileMetrics {
|
|
21
39
|
imports: number;
|