@justmpm/deps-consult 1.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.
- package/README.md +227 -0
- package/build/cache/package-cache.d.ts +39 -0
- package/build/cache/package-cache.d.ts.map +1 -0
- package/build/cache/package-cache.js +90 -0
- package/build/cache/package-cache.js.map +1 -0
- package/build/extractors/api-extractor.d.ts +6 -0
- package/build/extractors/api-extractor.d.ts.map +1 -0
- package/build/extractors/api-extractor.js +191 -0
- package/build/extractors/api-extractor.js.map +1 -0
- package/build/extractors/examples-extractor.d.ts +16 -0
- package/build/extractors/examples-extractor.d.ts.map +1 -0
- package/build/extractors/examples-extractor.js +224 -0
- package/build/extractors/examples-extractor.js.map +1 -0
- package/build/extractors/jsdoc-extractor.d.ts +11 -0
- package/build/extractors/jsdoc-extractor.d.ts.map +1 -0
- package/build/extractors/jsdoc-extractor.js +115 -0
- package/build/extractors/jsdoc-extractor.js.map +1 -0
- package/build/extractors/readme-extractor.d.ts +6 -0
- package/build/extractors/readme-extractor.d.ts.map +1 -0
- package/build/extractors/readme-extractor.js +138 -0
- package/build/extractors/readme-extractor.js.map +1 -0
- package/build/formatters/markdown-formatter.d.ts +12 -0
- package/build/formatters/markdown-formatter.d.ts.map +1 -0
- package/build/formatters/markdown-formatter.js +251 -0
- package/build/formatters/markdown-formatter.js.map +1 -0
- package/build/index.d.ts +12 -0
- package/build/index.d.ts.map +1 -0
- package/build/index.js +226 -0
- package/build/index.js.map +1 -0
- package/build/pipeline.d.ts +31 -0
- package/build/pipeline.d.ts.map +1 -0
- package/build/pipeline.js +203 -0
- package/build/pipeline.js.map +1 -0
- package/build/resolvers/exports-resolver.d.ts +12 -0
- package/build/resolvers/exports-resolver.d.ts.map +1 -0
- package/build/resolvers/exports-resolver.js +235 -0
- package/build/resolvers/exports-resolver.js.map +1 -0
- package/build/resolvers/package-resolver.d.ts +25 -0
- package/build/resolvers/package-resolver.d.ts.map +1 -0
- package/build/resolvers/package-resolver.js +189 -0
- package/build/resolvers/package-resolver.js.map +1 -0
- package/build/resolvers/types-resolver.d.ts +19 -0
- package/build/resolvers/types-resolver.d.ts.map +1 -0
- package/build/resolvers/types-resolver.js +155 -0
- package/build/resolvers/types-resolver.js.map +1 -0
- package/build/schemas/package-json.schema.d.ts +81 -0
- package/build/schemas/package-json.schema.d.ts.map +1 -0
- package/build/schemas/package-json.schema.js +91 -0
- package/build/schemas/package-json.schema.js.map +1 -0
- package/build/test.d.ts +6 -0
- package/build/test.d.ts.map +1 -0
- package/build/test.js.map +1 -0
- package/build/types/index.d.ts +117 -0
- package/build/types/index.d.ts.map +1 -0
- package/build/types/index.js +14 -0
- package/build/types/index.js.map +1 -0
- package/package.json +48 -0
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
import { packageCache } from './cache/package-cache.js';
|
|
2
|
+
import { resolvePackage, computePackageSize } from './resolvers/package-resolver.js';
|
|
3
|
+
import { resolveEntrypoints } from './resolvers/exports-resolver.js';
|
|
4
|
+
import { resolveTypes } from './resolvers/types-resolver.js';
|
|
5
|
+
import { extractApiSurface } from './extractors/api-extractor.js';
|
|
6
|
+
import { extractReadme } from './extractors/readme-extractor.js';
|
|
7
|
+
import { extractExamples } from './extractors/examples-extractor.js';
|
|
8
|
+
/**
|
|
9
|
+
* Extrai e cacheia o pacote completo.
|
|
10
|
+
* Este é o ponto de entrada para todas as tools.
|
|
11
|
+
*/
|
|
12
|
+
export async function getOrExtractPackage(packageName, projectDir) {
|
|
13
|
+
// 1. Verificar cache
|
|
14
|
+
const cached = await packageCache.get(projectDir, packageName);
|
|
15
|
+
if (cached)
|
|
16
|
+
return cached;
|
|
17
|
+
// 2. Resolver pacote
|
|
18
|
+
const resolution = await resolvePackage(packageName, projectDir);
|
|
19
|
+
const { packageDir, packageJson } = resolution;
|
|
20
|
+
// 3. Resolver entry points
|
|
21
|
+
const entrypoints = resolveEntrypoints(packageDir, packageJson);
|
|
22
|
+
// 4. Construir meta
|
|
23
|
+
const diskSize = await computePackageSize(packageDir);
|
|
24
|
+
const meta = {
|
|
25
|
+
name: packageJson.name ?? packageName,
|
|
26
|
+
version: packageJson.version,
|
|
27
|
+
description: packageJson.description,
|
|
28
|
+
license: typeof packageJson.license === 'string' ? packageJson.license : packageJson.license?.type,
|
|
29
|
+
entrypoints,
|
|
30
|
+
dependencies: packageJson.dependencies,
|
|
31
|
+
peerDependencies: packageJson.peerDependencies,
|
|
32
|
+
hasTypes: entrypoints.some((ep) => ep.hasTypes),
|
|
33
|
+
packageDir,
|
|
34
|
+
diskSize,
|
|
35
|
+
includedFiles: packageJson.files
|
|
36
|
+
?.map((f) => typeof f === 'string' ? f : undefined)
|
|
37
|
+
.filter((f) => f !== undefined),
|
|
38
|
+
sideEffects: packageJson.sideEffects,
|
|
39
|
+
};
|
|
40
|
+
// 5. Extrair API surface para todos os entry points
|
|
41
|
+
const symbolsMap = new Map();
|
|
42
|
+
for (const ep of entrypoints) {
|
|
43
|
+
const typesRes = resolveTypes(packageDir, packageJson, ep);
|
|
44
|
+
if (typesRes.hasTypes && typesRes.typeFiles.length > 0) {
|
|
45
|
+
const symbols = extractApiSurface(typesRes.typeFiles, ep.subpath, packageDir);
|
|
46
|
+
symbolsMap.set(ep.subpath, [...symbols]);
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
symbolsMap.set(ep.subpath, []);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
// 6. Extrair README
|
|
53
|
+
const readme = await extractReadme(packageDir);
|
|
54
|
+
// 7. Construir cached package
|
|
55
|
+
const cachedPackage = {
|
|
56
|
+
meta,
|
|
57
|
+
symbols: symbolsMap,
|
|
58
|
+
readme,
|
|
59
|
+
extractedAt: Date.now(),
|
|
60
|
+
packageJsonHash: '',
|
|
61
|
+
};
|
|
62
|
+
// 8. Salvar no cache
|
|
63
|
+
await packageCache.set(projectDir, packageName, cachedPackage);
|
|
64
|
+
return cachedPackage;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Busca símbolos em um pacote com scoring.
|
|
68
|
+
*/
|
|
69
|
+
export function searchSymbols(cached, query, options) {
|
|
70
|
+
const allSymbols = getAllSymbols(cached, options?.entrypoint);
|
|
71
|
+
const filtered = options?.kind && options.kind !== 'all'
|
|
72
|
+
? allSymbols.filter(s => s.kind === options.kind)
|
|
73
|
+
: allSymbols;
|
|
74
|
+
const results = [];
|
|
75
|
+
const normalizedQuery = query.toLowerCase().replace(/\*/g, '');
|
|
76
|
+
const isPrefixWildcard = query.endsWith('*') && !query.startsWith('*');
|
|
77
|
+
const isSuffixWildcard = query.startsWith('*') && !query.endsWith('*');
|
|
78
|
+
const isContainsWildcard = query.startsWith('*') && query.endsWith('*');
|
|
79
|
+
const isExact = !isPrefixWildcard && !isSuffixWildcard && !isContainsWildcard;
|
|
80
|
+
for (const symbol of filtered) {
|
|
81
|
+
const nameLower = symbol.name.toLowerCase();
|
|
82
|
+
let matchType;
|
|
83
|
+
let score = 0;
|
|
84
|
+
if (isExact) {
|
|
85
|
+
if (nameLower === normalizedQuery) {
|
|
86
|
+
matchType = 'exact';
|
|
87
|
+
score = 1.0;
|
|
88
|
+
}
|
|
89
|
+
else if (nameLower.startsWith(normalizedQuery)) {
|
|
90
|
+
matchType = 'prefix';
|
|
91
|
+
score = 0.8;
|
|
92
|
+
}
|
|
93
|
+
else if (nameLower.includes(normalizedQuery)) {
|
|
94
|
+
matchType = 'contains';
|
|
95
|
+
score = 0.6;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
else if (isPrefixWildcard) {
|
|
99
|
+
if (nameLower.startsWith(normalizedQuery)) {
|
|
100
|
+
matchType = 'prefix';
|
|
101
|
+
score = 0.8;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
else if (isSuffixWildcard) {
|
|
105
|
+
if (nameLower.endsWith(normalizedQuery)) {
|
|
106
|
+
matchType = 'contains';
|
|
107
|
+
score = 0.7;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
else if (isContainsWildcard) {
|
|
111
|
+
if (nameLower.includes(normalizedQuery)) {
|
|
112
|
+
matchType = 'contains';
|
|
113
|
+
score = 0.6;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
if (!matchType) {
|
|
117
|
+
const queryTokens = tokenize(normalizedQuery);
|
|
118
|
+
const nameTokens = tokenize(nameLower);
|
|
119
|
+
const overlap = queryTokens.filter(qt => nameTokens.some(nt => nt.includes(qt) || qt.includes(nt)));
|
|
120
|
+
if (overlap.length > 0 && overlap.length >= queryTokens.length * 0.5) {
|
|
121
|
+
matchType = 'fuzzy';
|
|
122
|
+
score = 0.3 + (overlap.length / Math.max(queryTokens.length, 1)) * 0.3;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
if (matchType) {
|
|
126
|
+
results.push({ symbol, score, matchType });
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
results.sort((a, b) => b.score - a.score);
|
|
130
|
+
return results;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Encontra um símbolo exato pelo nome.
|
|
134
|
+
*/
|
|
135
|
+
export function findSymbol(cached, symbolName, entrypoint) {
|
|
136
|
+
const allSymbols = getAllSymbols(cached, entrypoint);
|
|
137
|
+
return allSymbols.find(s => s.name === symbolName);
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Extrai exemplos para um pacote/símbolo.
|
|
141
|
+
*/
|
|
142
|
+
export async function getExamples(cached, symbolName) {
|
|
143
|
+
const allSymbols = getAllSymbols(cached);
|
|
144
|
+
return extractExamples(cached.meta.packageDir, allSymbols, cached.readme, symbolName);
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Resolve os import paths possíveis para um símbolo.
|
|
148
|
+
*/
|
|
149
|
+
export function resolveImportPaths(cached, symbol) {
|
|
150
|
+
const packageName = cached.meta.name;
|
|
151
|
+
const paths = [];
|
|
152
|
+
paths.push(packageName);
|
|
153
|
+
if (symbol.entrypoint && symbol.entrypoint !== '.') {
|
|
154
|
+
const subpath = symbol.entrypoint.startsWith('./')
|
|
155
|
+
? symbol.entrypoint
|
|
156
|
+
: `./${symbol.entrypoint}`;
|
|
157
|
+
paths.push(`${packageName}/${subpath.replace('./', '')}`);
|
|
158
|
+
}
|
|
159
|
+
for (const [subpath, symbols] of cached.symbols.entries()) {
|
|
160
|
+
if (symbols.some(s => s.name === symbol.name)) {
|
|
161
|
+
if (subpath === '.') {
|
|
162
|
+
if (!paths.includes(packageName))
|
|
163
|
+
paths.push(packageName);
|
|
164
|
+
}
|
|
165
|
+
else {
|
|
166
|
+
const importPath = `${packageName}/${subpath.replace('./', '')}`;
|
|
167
|
+
if (!paths.includes(importPath))
|
|
168
|
+
paths.push(importPath);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
return paths;
|
|
173
|
+
}
|
|
174
|
+
// ─────────────────────────────────────────
|
|
175
|
+
// Helpers
|
|
176
|
+
// ─────────────────────────────────────────
|
|
177
|
+
function getAllSymbols(cached, entrypoint) {
|
|
178
|
+
if (entrypoint) {
|
|
179
|
+
const normalized = entrypoint.startsWith('.') ? entrypoint : `./${entrypoint}`;
|
|
180
|
+
const symbols = cached.symbols.get(normalized) ?? cached.symbols.get('.');
|
|
181
|
+
return symbols ? [...symbols] : [];
|
|
182
|
+
}
|
|
183
|
+
const seen = new Set();
|
|
184
|
+
const all = [];
|
|
185
|
+
for (const symbols of cached.symbols.values()) {
|
|
186
|
+
for (const sym of symbols) {
|
|
187
|
+
if (!seen.has(sym.name)) {
|
|
188
|
+
seen.add(sym.name);
|
|
189
|
+
all.push(sym);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
return all;
|
|
194
|
+
}
|
|
195
|
+
function tokenize(str) {
|
|
196
|
+
return str
|
|
197
|
+
.replace(/([a-z])([A-Z])/g, '$1 $2')
|
|
198
|
+
.replace(/([A-Z]+)([A-Z][a-z])/g, '$1 $2')
|
|
199
|
+
.split(/[\s_-]+/)
|
|
200
|
+
.filter(t => t.length > 0)
|
|
201
|
+
.map(t => t.toLowerCase());
|
|
202
|
+
}
|
|
203
|
+
//# sourceMappingURL=pipeline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../src/pipeline.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { PackageJsonData } from '../schemas/package-json.schema.ts';
|
|
2
|
+
import type { ResolvedEntrypoint } from '../types/index.ts';
|
|
3
|
+
/**
|
|
4
|
+
* Resolve todos os entry points de um pacote.
|
|
5
|
+
*/
|
|
6
|
+
export declare function resolveEntrypoints(packageDir: string, packageJson: PackageJsonData): ReadonlyArray<ResolvedEntrypoint>;
|
|
7
|
+
/**
|
|
8
|
+
* Resolve um subpath específico.
|
|
9
|
+
* Ex: resolveSubpath(packageDir, pkgJson, "./hooks") -> entrypoint de hooks
|
|
10
|
+
*/
|
|
11
|
+
export declare function resolveSubpath(packageDir: string, packageJson: PackageJsonData, subpath: string): ResolvedEntrypoint | undefined;
|
|
12
|
+
//# sourceMappingURL=exports-resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exports-resolver.d.ts","sourceRoot":"","sources":["../../src/resolvers/exports-resolver.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AA0B5D;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,eAAe,GAC3B,aAAa,CAAC,kBAAkB,CAAC,CASnC;AAwOD;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,eAAe,EAC5B,OAAO,EAAE,MAAM,GACd,kBAAkB,GAAG,SAAS,CAMhC"}
|
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolve entry points de um pacote a partir do campo exports do package.json.
|
|
3
|
+
* Lida com conditional exports, subpath exports e fallbacks legados.
|
|
4
|
+
*/
|
|
5
|
+
import { existsSync } from 'node:fs';
|
|
6
|
+
import { resolve } from 'node:path';
|
|
7
|
+
import { isString, isPlainObject, compact } from 'es-toolkit';
|
|
8
|
+
/**
|
|
9
|
+
* Ordem de prioridade das condições ao resolver exports.
|
|
10
|
+
* types sempre primeiro para garantir que o TypeScript encontre os tipos.
|
|
11
|
+
*/
|
|
12
|
+
const CONDITION_PRIORITY = [
|
|
13
|
+
'types',
|
|
14
|
+
'import',
|
|
15
|
+
'require',
|
|
16
|
+
'node',
|
|
17
|
+
'node-addons',
|
|
18
|
+
'browser',
|
|
19
|
+
'react-native',
|
|
20
|
+
'edge-light',
|
|
21
|
+
'workerd',
|
|
22
|
+
'deno',
|
|
23
|
+
'default',
|
|
24
|
+
];
|
|
25
|
+
/**
|
|
26
|
+
* Resolve todos os entry points de um pacote.
|
|
27
|
+
*/
|
|
28
|
+
export function resolveEntrypoints(packageDir, packageJson) {
|
|
29
|
+
const exports = packageJson.exports;
|
|
30
|
+
if (exports) {
|
|
31
|
+
return resolveFromExports(packageDir, packageJson, exports);
|
|
32
|
+
}
|
|
33
|
+
// Fallback para pacotes legados (sem campo exports)
|
|
34
|
+
return resolveFromLegacy(packageDir, packageJson);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Resolve entry points a partir do campo exports.
|
|
38
|
+
*/
|
|
39
|
+
function resolveFromExports(packageDir, packageJson, exports) {
|
|
40
|
+
// exports pode ser uma string direta: "./dist/index.js"
|
|
41
|
+
if (isString(exports)) {
|
|
42
|
+
const resolvedJs = resolveCondition({ default: exports }, ['import', 'require', 'default', 'node']);
|
|
43
|
+
return [buildEntrypoint(packageDir, '.', { default: exports })];
|
|
44
|
+
}
|
|
45
|
+
if (!exports || typeof exports !== 'object') {
|
|
46
|
+
return resolveFromLegacy(packageDir, packageJson);
|
|
47
|
+
}
|
|
48
|
+
const entries = parseExportMap(exports);
|
|
49
|
+
const results = [];
|
|
50
|
+
for (const entry of entries) {
|
|
51
|
+
const resolvedJs = resolveCondition(entry.conditions, ['import', 'require', 'default', 'node']);
|
|
52
|
+
const resolvedTypes = resolveCondition(entry.conditions, ['types']);
|
|
53
|
+
// Se não achou types nas conditions, tentar inferir do js
|
|
54
|
+
let typesPath;
|
|
55
|
+
if (resolvedTypes) {
|
|
56
|
+
typesPath = resolveFilePath(packageDir, resolvedTypes);
|
|
57
|
+
}
|
|
58
|
+
else if (resolvedJs) {
|
|
59
|
+
typesPath = inferTypesFromJs(packageDir, resolvedJs);
|
|
60
|
+
}
|
|
61
|
+
results.push({
|
|
62
|
+
subpath: entry.subpath,
|
|
63
|
+
jsPath: resolvedJs ? resolveFilePath(packageDir, resolvedJs) : undefined,
|
|
64
|
+
typesPath,
|
|
65
|
+
hasTypes: typesPath !== undefined,
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
// Se não tem ".", adicionar o entry principal
|
|
69
|
+
if (!results.some(r => r.subpath === '.')) {
|
|
70
|
+
const legacy = resolveFromLegacy(packageDir, packageJson);
|
|
71
|
+
results.unshift(...legacy);
|
|
72
|
+
}
|
|
73
|
+
return results;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Faz parse do mapa de exports em entradas individuais.
|
|
77
|
+
*/
|
|
78
|
+
function parseExportMap(exports) {
|
|
79
|
+
const entries = [];
|
|
80
|
+
for (const [subpath, value] of Object.entries(exports)) {
|
|
81
|
+
if (isString(value)) {
|
|
82
|
+
entries.push({ subpath, conditions: { default: value } });
|
|
83
|
+
}
|
|
84
|
+
else if (isPlainObject(value)) {
|
|
85
|
+
const conditions = flattenConditions(value);
|
|
86
|
+
entries.push({ subpath, conditions });
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
return entries;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Achata conditions aninhadas em um mapa plano.
|
|
93
|
+
* { "import": { "types": "...", "default": "..." } }
|
|
94
|
+
* -> { "import.types": "...", "import.default": "..." }
|
|
95
|
+
* Mas o mais comum é:
|
|
96
|
+
* { "types": "...", "import": "...", "require": "...", "default": "..." }
|
|
97
|
+
*/
|
|
98
|
+
function flattenConditions(obj, prefix = '') {
|
|
99
|
+
const result = {};
|
|
100
|
+
for (const [key, value] of Object.entries(obj)) {
|
|
101
|
+
const fullKey = prefix ? `${prefix}.${key}` : key;
|
|
102
|
+
if (isString(value)) {
|
|
103
|
+
result[fullKey] = value;
|
|
104
|
+
}
|
|
105
|
+
else if (isPlainObject(value)) {
|
|
106
|
+
Object.assign(result, flattenConditions(value, fullKey));
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
return result;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Resolve o caminho correto para uma condition específica.
|
|
113
|
+
*/
|
|
114
|
+
function resolveCondition(conditions, targetConditions) {
|
|
115
|
+
// Procurar pela condition na ordem de prioridade
|
|
116
|
+
for (const target of targetConditions) {
|
|
117
|
+
for (const priority of CONDITION_PRIORITY) {
|
|
118
|
+
// Match exato: "import" -> "import"
|
|
119
|
+
if (priority === target && conditions[priority]) {
|
|
120
|
+
return conditions[priority];
|
|
121
|
+
}
|
|
122
|
+
// Match combinado: "import" -> "node.import", "import.types"
|
|
123
|
+
for (const [key, value] of Object.entries(conditions)) {
|
|
124
|
+
if (key === `${target}.${priority}` || key === `${priority}.${target}`) {
|
|
125
|
+
return value;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
// Procurar qualquer condition que bata
|
|
131
|
+
for (const target of targetConditions) {
|
|
132
|
+
for (const [key, value] of Object.entries(conditions)) {
|
|
133
|
+
if (key === target)
|
|
134
|
+
return value;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
return conditions['default'];
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Resolve entry points para pacotes legados (sem campo exports).
|
|
141
|
+
*/
|
|
142
|
+
function resolveFromLegacy(packageDir, packageJson) {
|
|
143
|
+
const jsCandidates = compact([
|
|
144
|
+
packageJson.main,
|
|
145
|
+
packageJson.module,
|
|
146
|
+
'index.js',
|
|
147
|
+
'index.mjs',
|
|
148
|
+
'index.cjs',
|
|
149
|
+
]);
|
|
150
|
+
let jsPath;
|
|
151
|
+
for (const candidate of jsCandidates) {
|
|
152
|
+
const fullPath = resolveFilePath(packageDir, candidate);
|
|
153
|
+
if (fullPath) {
|
|
154
|
+
jsPath = fullPath;
|
|
155
|
+
break;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
// Resolver tipos
|
|
159
|
+
const typesCandidates = compact([
|
|
160
|
+
packageJson.types,
|
|
161
|
+
packageJson.typings,
|
|
162
|
+
]);
|
|
163
|
+
let typesPath;
|
|
164
|
+
for (const candidate of typesCandidates) {
|
|
165
|
+
const fullPath = resolveFilePath(packageDir, candidate);
|
|
166
|
+
if (fullPath) {
|
|
167
|
+
typesPath = fullPath;
|
|
168
|
+
break;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
// Se não achou types declarados, inferir do js
|
|
172
|
+
if (!typesPath && jsPath) {
|
|
173
|
+
typesPath = inferTypesFromJs(packageDir, jsPath);
|
|
174
|
+
}
|
|
175
|
+
// Se ainda não achou, buscar index.d.ts na raiz
|
|
176
|
+
if (!typesPath) {
|
|
177
|
+
const indexDts = resolveFilePath(packageDir, 'index.d.ts');
|
|
178
|
+
if (indexDts)
|
|
179
|
+
typesPath = indexDts;
|
|
180
|
+
}
|
|
181
|
+
return [{
|
|
182
|
+
subpath: '.',
|
|
183
|
+
jsPath,
|
|
184
|
+
typesPath,
|
|
185
|
+
hasTypes: typesPath !== undefined,
|
|
186
|
+
}];
|
|
187
|
+
}
|
|
188
|
+
// ─────────────────────────────────────────
|
|
189
|
+
// Helpers
|
|
190
|
+
// ─────────────────────────────────────────
|
|
191
|
+
function resolveFilePath(baseDir, relativePath) {
|
|
192
|
+
const fullPath = resolve(baseDir, relativePath);
|
|
193
|
+
return existsSync(fullPath) ? fullPath : undefined;
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Infere arquivo de tipos a partir do arquivo JS.
|
|
197
|
+
* Se jsPath é ./dist/index.js, tenta ./dist/index.d.ts
|
|
198
|
+
*/
|
|
199
|
+
function inferTypesFromJs(packageDir, jsPath) {
|
|
200
|
+
// Se o jsPath já é absoluto, usar diretamente
|
|
201
|
+
const absJsPath = resolve(packageDir, jsPath);
|
|
202
|
+
const candidates = [
|
|
203
|
+
absJsPath.replace(/\.js$/, '.d.ts'),
|
|
204
|
+
absJsPath.replace(/\.js$/, '.d.mts'),
|
|
205
|
+
absJsPath.replace(/\.mjs$/, '.d.mts'),
|
|
206
|
+
absJsPath.replace(/\.cjs$/, '.d.cts'),
|
|
207
|
+
absJsPath.replace(/\.jsx$/, '.d.ts'),
|
|
208
|
+
];
|
|
209
|
+
for (const candidate of candidates) {
|
|
210
|
+
if (existsSync(candidate))
|
|
211
|
+
return candidate;
|
|
212
|
+
}
|
|
213
|
+
return undefined;
|
|
214
|
+
}
|
|
215
|
+
function buildEntrypoint(packageDir, subpath, conditions) {
|
|
216
|
+
const jsPath = resolveCondition(conditions, ['import', 'require', 'default', 'node']);
|
|
217
|
+
const typesPath = resolveCondition(conditions, ['types']);
|
|
218
|
+
return {
|
|
219
|
+
subpath,
|
|
220
|
+
jsPath: jsPath ? resolveFilePath(packageDir, jsPath) : undefined,
|
|
221
|
+
typesPath: typesPath ? resolveFilePath(packageDir, typesPath) : undefined,
|
|
222
|
+
hasTypes: typesPath !== undefined || (jsPath !== undefined && inferTypesFromJs(packageDir, jsPath) !== undefined),
|
|
223
|
+
};
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* Resolve um subpath específico.
|
|
227
|
+
* Ex: resolveSubpath(packageDir, pkgJson, "./hooks") -> entrypoint de hooks
|
|
228
|
+
*/
|
|
229
|
+
export function resolveSubpath(packageDir, packageJson, subpath) {
|
|
230
|
+
// Normalizar subpath
|
|
231
|
+
const normalizedSubpath = subpath.startsWith('.') ? subpath : `./${subpath}`;
|
|
232
|
+
const allEntrypoints = resolveEntrypoints(packageDir, packageJson);
|
|
233
|
+
return allEntrypoints.find(ep => ep.subpath === normalizedSubpath || ep.subpath === subpath);
|
|
234
|
+
}
|
|
235
|
+
//# sourceMappingURL=exports-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exports-resolver.js","sourceRoot":"","sources":["../../src/resolvers/exports-resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { type PackageJsonData } from '../schemas/package-json.schema.js';
|
|
2
|
+
export interface PackageResolution {
|
|
3
|
+
/** Diretório raiz do pacote no node_modules */
|
|
4
|
+
packageDir: string;
|
|
5
|
+
/** package.json parseado e validado */
|
|
6
|
+
packageJson: PackageJsonData;
|
|
7
|
+
/** Caminho absoluto para o node_modules do projeto */
|
|
8
|
+
nodeModulesDir: string;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Resolve o diretório de um pacote instalado.
|
|
12
|
+
*/
|
|
13
|
+
export declare function resolvePackage(packageName: string, projectDir: string): Promise<PackageResolution>;
|
|
14
|
+
/**
|
|
15
|
+
* Lista todos os pacotes instalados no node_modules do projeto.
|
|
16
|
+
*/
|
|
17
|
+
export declare function listInstalledPackages(projectDir: string): Promise<ReadonlyArray<{
|
|
18
|
+
name: string;
|
|
19
|
+
version?: string;
|
|
20
|
+
}>>;
|
|
21
|
+
/**
|
|
22
|
+
* Calcula o tamanho no disco de um diretório de pacote.
|
|
23
|
+
*/
|
|
24
|
+
export declare function computePackageSize(packageDir: string): Promise<number>;
|
|
25
|
+
//# sourceMappingURL=package-resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-resolver.d.ts","sourceRoot":"","sources":["../../src/resolvers/package-resolver.ts"],"names":[],"mappings":"AAQA,OAAO,EAAqB,KAAK,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAE5F,MAAM,WAAW,iBAAiB;IAChC,+CAA+C;IAC/C,UAAU,EAAE,MAAM,CAAC;IACnB,uCAAuC;IACvC,WAAW,EAAE,eAAe,CAAC;IAC7B,sDAAsD;IACtD,cAAc,EAAE,MAAM,CAAC;CACxB;AAWD;;GAEG;AACH,wBAAsB,cAAc,CAClC,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,iBAAiB,CAAC,CA6D5B;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,aAAa,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAkC5D;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA6B5E"}
|