@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.
Files changed (57) hide show
  1. package/README.md +227 -0
  2. package/build/cache/package-cache.d.ts +39 -0
  3. package/build/cache/package-cache.d.ts.map +1 -0
  4. package/build/cache/package-cache.js +90 -0
  5. package/build/cache/package-cache.js.map +1 -0
  6. package/build/extractors/api-extractor.d.ts +6 -0
  7. package/build/extractors/api-extractor.d.ts.map +1 -0
  8. package/build/extractors/api-extractor.js +191 -0
  9. package/build/extractors/api-extractor.js.map +1 -0
  10. package/build/extractors/examples-extractor.d.ts +16 -0
  11. package/build/extractors/examples-extractor.d.ts.map +1 -0
  12. package/build/extractors/examples-extractor.js +224 -0
  13. package/build/extractors/examples-extractor.js.map +1 -0
  14. package/build/extractors/jsdoc-extractor.d.ts +11 -0
  15. package/build/extractors/jsdoc-extractor.d.ts.map +1 -0
  16. package/build/extractors/jsdoc-extractor.js +115 -0
  17. package/build/extractors/jsdoc-extractor.js.map +1 -0
  18. package/build/extractors/readme-extractor.d.ts +6 -0
  19. package/build/extractors/readme-extractor.d.ts.map +1 -0
  20. package/build/extractors/readme-extractor.js +138 -0
  21. package/build/extractors/readme-extractor.js.map +1 -0
  22. package/build/formatters/markdown-formatter.d.ts +12 -0
  23. package/build/formatters/markdown-formatter.d.ts.map +1 -0
  24. package/build/formatters/markdown-formatter.js +251 -0
  25. package/build/formatters/markdown-formatter.js.map +1 -0
  26. package/build/index.d.ts +12 -0
  27. package/build/index.d.ts.map +1 -0
  28. package/build/index.js +226 -0
  29. package/build/index.js.map +1 -0
  30. package/build/pipeline.d.ts +31 -0
  31. package/build/pipeline.d.ts.map +1 -0
  32. package/build/pipeline.js +203 -0
  33. package/build/pipeline.js.map +1 -0
  34. package/build/resolvers/exports-resolver.d.ts +12 -0
  35. package/build/resolvers/exports-resolver.d.ts.map +1 -0
  36. package/build/resolvers/exports-resolver.js +235 -0
  37. package/build/resolvers/exports-resolver.js.map +1 -0
  38. package/build/resolvers/package-resolver.d.ts +25 -0
  39. package/build/resolvers/package-resolver.d.ts.map +1 -0
  40. package/build/resolvers/package-resolver.js +189 -0
  41. package/build/resolvers/package-resolver.js.map +1 -0
  42. package/build/resolvers/types-resolver.d.ts +19 -0
  43. package/build/resolvers/types-resolver.d.ts.map +1 -0
  44. package/build/resolvers/types-resolver.js +155 -0
  45. package/build/resolvers/types-resolver.js.map +1 -0
  46. package/build/schemas/package-json.schema.d.ts +81 -0
  47. package/build/schemas/package-json.schema.d.ts.map +1 -0
  48. package/build/schemas/package-json.schema.js +91 -0
  49. package/build/schemas/package-json.schema.js.map +1 -0
  50. package/build/test.d.ts +6 -0
  51. package/build/test.d.ts.map +1 -0
  52. package/build/test.js.map +1 -0
  53. package/build/types/index.d.ts +117 -0
  54. package/build/types/index.d.ts.map +1 -0
  55. package/build/types/index.js +14 -0
  56. package/build/types/index.js.map +1 -0
  57. package/package.json +48 -0
@@ -0,0 +1,189 @@
1
+ /**
2
+ * Resolve o diretório de um pacote no node_modules.
3
+ * Suporta pacotes scoped (@org/pkg), subpaths, workspaces e symlinks.
4
+ */
5
+ import { readFile, stat, realpath } from 'node:fs/promises';
6
+ import { existsSync } from 'node:fs';
7
+ import { join, dirname } from 'node:path';
8
+ import { createRequire } from 'node:module';
9
+ import { PackageJsonSchema } from '../schemas/package-json.schema.js';
10
+ /**
11
+ * Cria um require resolver no contexto do projeto do usuário.
12
+ */
13
+ function createProjectResolver(projectDir) {
14
+ // Precisa de um arquivo .js dentro do projectDir para o createRequire
15
+ const proxyFile = join(projectDir, 'package.json');
16
+ return createRequire(proxyFile);
17
+ }
18
+ /**
19
+ * Resolve o diretório de um pacote instalado.
20
+ */
21
+ export async function resolvePackage(packageName, projectDir) {
22
+ const projectResolve = createProjectResolver(projectDir);
23
+ const nodeModulesDir = join(projectDir, 'node_modules');
24
+ let packageDir;
25
+ // Abordagem 1: require.resolve para encontrar o entry point
26
+ try {
27
+ const entryPath = projectResolve.resolve(packageName);
28
+ packageDir = findPackageDirFromPath(entryPath, nodeModulesDir);
29
+ }
30
+ catch {
31
+ // Fallback: caminho manual
32
+ }
33
+ // Abordagem 2: Construir caminho manualmente no node_modules
34
+ if (!packageDir || !existsSync(join(packageDir, 'package.json'))) {
35
+ const segments = packageName.split('/');
36
+ const manualDir = join(nodeModulesDir, ...segments);
37
+ if (existsSync(join(manualDir, 'package.json'))) {
38
+ packageDir = manualDir;
39
+ }
40
+ else {
41
+ throw new Error(`Pacote '${packageName}' não encontrado no node_modules de '${projectDir}'. ` +
42
+ `Verifique se o pacote está instalado.`);
43
+ }
44
+ }
45
+ // Resolver symlinks (importante para monorepos com workspaces)
46
+ try {
47
+ const realDir = await realpath(packageDir);
48
+ packageDir = realDir;
49
+ }
50
+ catch {
51
+ // Se não conseguir resolver symlink, usa o caminho original
52
+ }
53
+ // Ler e validar package.json
54
+ const pkgJsonPath = join(packageDir, 'package.json');
55
+ const pkgJsonContent = await readFile(pkgJsonPath, 'utf-8');
56
+ let packageJson;
57
+ try {
58
+ const raw = JSON.parse(pkgJsonContent);
59
+ const parsed = PackageJsonSchema.safeParse(raw);
60
+ packageJson = parsed.success ? parsed.data : raw;
61
+ }
62
+ catch {
63
+ throw new Error(`package.json do pacote '${packageName}' está malformado.`);
64
+ }
65
+ if (!packageJson.name) {
66
+ packageJson.name = packageName;
67
+ }
68
+ return {
69
+ packageDir,
70
+ packageJson,
71
+ nodeModulesDir,
72
+ };
73
+ }
74
+ /**
75
+ * Lista todos os pacotes instalados no node_modules do projeto.
76
+ */
77
+ export async function listInstalledPackages(projectDir) {
78
+ const nodeModulesDir = join(projectDir, 'node_modules');
79
+ const packages = [];
80
+ if (!existsSync(nodeModulesDir)) {
81
+ return packages;
82
+ }
83
+ const { readdir } = await import('node:fs/promises');
84
+ const entries = await readdir(nodeModulesDir, { withFileTypes: true });
85
+ for (const entry of entries) {
86
+ if (!entry.isDirectory())
87
+ continue;
88
+ if (entry.name.startsWith('@')) {
89
+ const scopeDir = join(nodeModulesDir, entry.name);
90
+ try {
91
+ const scopeEntries = await readdir(scopeDir, { withFileTypes: true });
92
+ for (const subEntry of scopeEntries) {
93
+ if (!subEntry.isDirectory())
94
+ continue;
95
+ const pkgName = `${entry.name}/${subEntry.name}`;
96
+ const version = await readPackageVersion(join(scopeDir, subEntry.name));
97
+ packages.push({ name: pkgName, version });
98
+ }
99
+ }
100
+ catch {
101
+ // Sem permissão
102
+ }
103
+ }
104
+ else if (!entry.name.startsWith('.')) {
105
+ const version = await readPackageVersion(join(nodeModulesDir, entry.name));
106
+ packages.push({ name: entry.name, version });
107
+ }
108
+ }
109
+ return packages;
110
+ }
111
+ /**
112
+ * Calcula o tamanho no disco de um diretório de pacote.
113
+ */
114
+ export async function computePackageSize(packageDir) {
115
+ let totalSize = 0;
116
+ try {
117
+ const { readdir } = await import('node:fs/promises');
118
+ async function walk(dir) {
119
+ const entries = await readdir(dir, { withFileTypes: true });
120
+ for (const entry of entries) {
121
+ const fullPath = join(dir, entry.name);
122
+ if (entry.isDirectory() && entry.name !== 'node_modules') {
123
+ await walk(fullPath);
124
+ }
125
+ else if (entry.isFile()) {
126
+ try {
127
+ const fileStat = await stat(fullPath);
128
+ totalSize += fileStat.size;
129
+ }
130
+ catch {
131
+ // Arquivo deletado
132
+ }
133
+ }
134
+ }
135
+ }
136
+ await walk(packageDir);
137
+ }
138
+ catch {
139
+ // Diretório inacessível
140
+ }
141
+ return totalSize;
142
+ }
143
+ // ─────────────────────────────────────────
144
+ // Helpers
145
+ // ─────────────────────────────────────────
146
+ /**
147
+ * Encontra o diretório raiz do pacote a partir de um arquivo resolvido.
148
+ * Para @scope/pkg, sobe até node_modules/@scope/pkg/.
149
+ */
150
+ function findPackageDirFromPath(resolvedPath, nodeModulesDir) {
151
+ const normalizedPath = resolvedPath.replace(/\\/g, '/');
152
+ const nmIndex = normalizedPath.indexOf('/node_modules/');
153
+ if (nmIndex === -1)
154
+ return dirname(resolvedPath);
155
+ // Pega tudo após /node_modules/
156
+ const afterNm = normalizedPath.substring(nmIndex + '/node_modules/'.length);
157
+ // Para @scope/pkg/subpath, pega @scope/pkg
158
+ const segments = afterNm.split('/');
159
+ let pkgSegments;
160
+ if (segments[0]?.startsWith('@')) {
161
+ // Scoped: @scope/pkg
162
+ pkgSegments = segments.slice(0, 2);
163
+ }
164
+ else {
165
+ // Normal: pkg
166
+ pkgSegments = segments.slice(0, 1);
167
+ }
168
+ const packageDir = join(nodeModulesDir, ...pkgSegments);
169
+ // Verificar se tem package.json
170
+ if (existsSync(join(packageDir, 'package.json'))) {
171
+ return packageDir;
172
+ }
173
+ // Fallback: dirname do arquivo
174
+ return dirname(resolvedPath);
175
+ }
176
+ /**
177
+ * Lê a versão do package.json de um diretório.
178
+ */
179
+ async function readPackageVersion(dir) {
180
+ try {
181
+ const content = await readFile(join(dir, 'package.json'), 'utf-8');
182
+ const pkg = JSON.parse(content);
183
+ return pkg.version;
184
+ }
185
+ catch {
186
+ return undefined;
187
+ }
188
+ }
189
+ //# sourceMappingURL=package-resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-resolver.js","sourceRoot":"","sources":["../../src/resolvers/package-resolver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import type { PackageJsonData } from '../schemas/package-json.schema.js';
2
+ import type { ResolvedEntrypoint } from '../types/index.js';
3
+ export interface TypesResolution {
4
+ /** Arquivos .d.ts encontrados para o entry point solicitado */
5
+ typeFiles: ReadonlyArray<string>;
6
+ /** Se conseguiu encontrar tipos */
7
+ hasTypes: boolean;
8
+ /** Origem dos tipos */
9
+ source: 'exports' | 'package-json' | 'at-types' | 'source-ts' | 'inferred' | 'none';
10
+ }
11
+ /**
12
+ * Resolve todos os arquivos de tipos para um entry point específico.
13
+ */
14
+ export declare function resolveTypes(packageDir: string, packageJson: PackageJsonData, entrypoint?: ResolvedEntrypoint): TypesResolution;
15
+ /**
16
+ * Coleta TODOS os arquivos de tipos de TODOS os entry points.
17
+ */
18
+ export declare function resolveAllTypeFiles(packageDir: string, packageJson: PackageJsonData): ReadonlyArray<string>;
19
+ //# sourceMappingURL=types-resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types-resolver.d.ts","sourceRoot":"","sources":["../../src/resolvers/types-resolver.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAI5D,MAAM,WAAW,eAAe;IAC9B,+DAA+D;IAC/D,SAAS,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACjC,mCAAmC;IACnC,QAAQ,EAAE,OAAO,CAAC;IAClB,uBAAuB;IACvB,MAAM,EAAE,SAAS,GAAG,cAAc,GAAG,UAAU,GAAG,WAAW,GAAG,UAAU,GAAG,MAAM,CAAC;CACrF;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,eAAe,EAC5B,UAAU,CAAC,EAAE,kBAAkB,GAC9B,eAAe,CAoDjB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,eAAe,GAC3B,aAAa,CAAC,MAAM,CAAC,CAUvB"}
@@ -0,0 +1,155 @@
1
+ /**
2
+ * Resolve arquivos de tipos (.d.ts) de um pacote.
3
+ * Segue a ordem: exports.types > package.json types > @types/* > source .ts
4
+ */
5
+ import { existsSync } from 'node:fs';
6
+ import { join, resolve, dirname } from 'node:path';
7
+ import { compact, uniq } from 'es-toolkit';
8
+ import { resolveEntrypoints } from './exports-resolver.js';
9
+ /**
10
+ * Resolve todos os arquivos de tipos para um entry point específico.
11
+ */
12
+ export function resolveTypes(packageDir, packageJson, entrypoint) {
13
+ const candidates = [];
14
+ // 1. Types do exports (já resolvidos pelo exports-resolver)
15
+ if (entrypoint?.typesPath) {
16
+ candidates.push({
17
+ files: [entrypoint.typesPath],
18
+ source: 'exports',
19
+ });
20
+ }
21
+ // 2. Types do package.json (campo types/typings)
22
+ const pkgTypesFiles = resolveFromPackageJson(packageDir, packageJson);
23
+ if (pkgTypesFiles.length > 0) {
24
+ candidates.push({ files: pkgTypesFiles, source: 'package-json' });
25
+ }
26
+ // 3. @types/<pacote>
27
+ const atTypesFiles = resolveFromAtTypes(packageDir, packageJson);
28
+ if (atTypesFiles.length > 0) {
29
+ candidates.push({ files: atTypesFiles, source: 'at-types' });
30
+ }
31
+ // 4. Source .ts (pacotes que distribuem source)
32
+ const sourceFiles = resolveFromSourceTs(packageDir, packageJson);
33
+ if (sourceFiles.length > 0) {
34
+ candidates.push({ files: sourceFiles, source: 'source-ts' });
35
+ }
36
+ // 5. Inferir do JS (tentar index.d.ts, etc)
37
+ const inferredFiles = resolveByInference(packageDir, packageJson);
38
+ if (inferredFiles.length > 0) {
39
+ candidates.push({ files: inferredFiles, source: 'inferred' });
40
+ }
41
+ // Retornar o primeiro que tiver resultados
42
+ for (const candidate of candidates) {
43
+ const existing = candidate.files.filter(f => existsSync(f));
44
+ if (existing.length > 0) {
45
+ return {
46
+ typeFiles: uniq(existing),
47
+ hasTypes: true,
48
+ source: candidate.source,
49
+ };
50
+ }
51
+ }
52
+ return {
53
+ typeFiles: [],
54
+ hasTypes: false,
55
+ source: 'none',
56
+ };
57
+ }
58
+ /**
59
+ * Coleta TODOS os arquivos de tipos de TODOS os entry points.
60
+ */
61
+ export function resolveAllTypeFiles(packageDir, packageJson) {
62
+ const entrypoints = resolveEntrypoints(packageDir, packageJson);
63
+ const allFiles = [];
64
+ for (const ep of entrypoints) {
65
+ const typesRes = resolveTypes(packageDir, packageJson, ep);
66
+ allFiles.push(...typesRes.typeFiles);
67
+ }
68
+ return uniq(compact(allFiles));
69
+ }
70
+ // ─────────────────────────────────────────
71
+ // Estratégias de resolução
72
+ // ─────────────────────────────────────────
73
+ function resolveFromPackageJson(packageDir, pkgJson) {
74
+ const candidates = [];
75
+ if (pkgJson.types) {
76
+ candidates.push(resolve(packageDir, pkgJson.types));
77
+ }
78
+ if (pkgJson.typings && !pkgJson.types) {
79
+ candidates.push(resolve(packageDir, pkgJson.typings));
80
+ }
81
+ return candidates.filter(existsSync);
82
+ }
83
+ function resolveFromAtTypes(packageDir, pkgJson) {
84
+ const pkgName = pkgJson.name;
85
+ if (!pkgName)
86
+ return [];
87
+ // @types/ para pacotes não-scoped
88
+ // @types/scope__pkg para pacotes scoped (@org/pkg -> @types/org__pkg)
89
+ let typesPkgName;
90
+ if (pkgName.startsWith('@')) {
91
+ const [scope, name] = pkgName.split('/');
92
+ typesPkgName = `@types/${scope.slice(1)}__${name}`;
93
+ }
94
+ else {
95
+ typesPkgName = `@types/${pkgName}`;
96
+ }
97
+ // Buscar no node_modules pai (node_modules/@types/...)
98
+ // packageDir é algo como .../node_modules/pkg ou .../node_modules/@scope/pkg
99
+ const nodeModulesDir = packageDir.includes('node_modules')
100
+ ? packageDir.substring(0, packageDir.lastIndexOf('node_modules')) + 'node_modules'
101
+ : join(dirname(packageDir), 'node_modules');
102
+ const typesDir = join(nodeModulesDir, ...typesPkgName.split('/'));
103
+ const typesPkgJsonPath = join(typesDir, 'package.json');
104
+ if (!existsSync(typesPkgJsonPath))
105
+ return [];
106
+ try {
107
+ const content = require('node:fs').readFileSync(typesPkgJsonPath, 'utf-8');
108
+ const typesPkg = JSON.parse(content);
109
+ const indexFile = typesPkg.types || typesPkg.typings || typesPkg.main || 'index.d.ts';
110
+ const fullPath = resolve(typesDir, indexFile);
111
+ return existsSync(fullPath) ? [fullPath] : [];
112
+ }
113
+ catch {
114
+ return [];
115
+ }
116
+ }
117
+ function resolveFromSourceTs(packageDir, pkgJson) {
118
+ const candidates = [];
119
+ // Se o main aponta para .ts, o pacote distribui source
120
+ if (pkgJson.main?.endsWith('.ts')) {
121
+ candidates.push(resolve(packageDir, pkgJson.main));
122
+ }
123
+ // Se o exports aponta para .ts
124
+ if (pkgJson.exports && typeof pkgJson.exports === 'object') {
125
+ for (const [, value] of Object.entries(pkgJson.exports)) {
126
+ if (typeof value === 'string' && value.endsWith('.ts')) {
127
+ candidates.push(resolve(packageDir, value));
128
+ }
129
+ if (typeof value === 'object' && value !== null) {
130
+ for (const [, v] of Object.entries(value)) {
131
+ if (typeof v === 'string' && v.endsWith('.ts')) {
132
+ candidates.push(resolve(packageDir, v));
133
+ }
134
+ }
135
+ }
136
+ }
137
+ }
138
+ return candidates.filter(existsSync);
139
+ }
140
+ function resolveByInference(packageDir, pkgJson) {
141
+ const candidates = [];
142
+ // Tentar index.d.ts na raiz
143
+ candidates.push(join(packageDir, 'index.d.ts'));
144
+ // Tentar dist/index.d.ts
145
+ candidates.push(join(packageDir, 'dist', 'index.d.ts'));
146
+ // Tentar baseado no main
147
+ if (pkgJson.main) {
148
+ const mainDir = dirname(pkgJson.main);
149
+ const mainBase = pkgJson.main.replace(/\.\w+$/, '.d.ts');
150
+ candidates.push(resolve(packageDir, mainBase));
151
+ candidates.push(resolve(packageDir, mainDir, 'index.d.ts'));
152
+ }
153
+ return candidates.filter(existsSync);
154
+ }
155
+ //# sourceMappingURL=types-resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types-resolver.js","sourceRoot":"","sources":["../../src/resolvers/types-resolver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,81 @@
1
+ /**
2
+ * Schema Zod v4 para validar o package.json de pacotes instalados.
3
+ * Lida com todas as variações possíveis de formato.
4
+ */
5
+ import { z } from 'zod';
6
+ export declare const PackageJsonSchema: z.ZodObject<{
7
+ name: z.ZodOptional<z.ZodString>;
8
+ version: z.ZodOptional<z.ZodString>;
9
+ description: z.ZodOptional<z.ZodString>;
10
+ license: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
11
+ type: z.ZodString;
12
+ }, z.core.$strip>]>>;
13
+ main: z.ZodOptional<z.ZodString>;
14
+ module: z.ZodOptional<z.ZodString>;
15
+ browser: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
16
+ types: z.ZodOptional<z.ZodString>;
17
+ typings: z.ZodOptional<z.ZodString>;
18
+ exports: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNull, z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodType<string | Record<string, unknown>, unknown, z.core.$ZodTypeInternals<string | Record<string, unknown>, unknown>>>]>]>>]>>;
19
+ typesVersions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodArray<z.ZodString>>>>;
20
+ dependencies: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
21
+ peerDependencies: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
22
+ devDependencies: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
23
+ optionalDependencies: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
24
+ files: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
25
+ include: z.ZodArray<z.ZodString>;
26
+ exclude: z.ZodArray<z.ZodString>;
27
+ }, z.core.$strip>]>>>;
28
+ sideEffects: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodArray<z.ZodString>]>>;
29
+ type: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<"module">, z.ZodLiteral<"commonjs">]>>;
30
+ bin: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>]>>;
31
+ keywords: z.ZodOptional<z.ZodArray<z.ZodString>>;
32
+ homepage: z.ZodOptional<z.ZodString>;
33
+ repository: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
34
+ url: z.ZodOptional<z.ZodString>;
35
+ type: z.ZodOptional<z.ZodString>;
36
+ }, z.core.$strip>]>>;
37
+ }, z.core.$loose>;
38
+ export type PackageJsonData = z.infer<typeof PackageJsonSchema>;
39
+ export declare const DepsInfoInputSchema: {
40
+ package: z.ZodString;
41
+ projectDir: z.ZodOptional<z.ZodString>;
42
+ };
43
+ export declare const DepsApiInputSchema: {
44
+ package: z.ZodString;
45
+ entrypoint: z.ZodOptional<z.ZodString>;
46
+ kind: z.ZodOptional<z.ZodEnum<{
47
+ types: "types";
48
+ all: "all";
49
+ functions: "functions";
50
+ classes: "classes";
51
+ interfaces: "interfaces";
52
+ enums: "enums";
53
+ variables: "variables";
54
+ }>>;
55
+ limit: z.ZodOptional<z.ZodNumber>;
56
+ };
57
+ export declare const DepsSearchInputSchema: {
58
+ package: z.ZodString;
59
+ query: z.ZodString;
60
+ entrypoint: z.ZodOptional<z.ZodString>;
61
+ kind: z.ZodOptional<z.ZodEnum<{
62
+ types: "types";
63
+ all: "all";
64
+ functions: "functions";
65
+ classes: "classes";
66
+ interfaces: "interfaces";
67
+ enums: "enums";
68
+ variables: "variables";
69
+ }>>;
70
+ };
71
+ export declare const DepsUsageInputSchema: {
72
+ package: z.ZodString;
73
+ symbol: z.ZodString;
74
+ entrypoint: z.ZodOptional<z.ZodString>;
75
+ };
76
+ export declare const DepsExamplesInputSchema: {
77
+ package: z.ZodString;
78
+ symbol: z.ZodOptional<z.ZodString>;
79
+ entrypoint: z.ZodOptional<z.ZodString>;
80
+ };
81
+ //# sourceMappingURL=package-json.schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-json.schema.d.ts","sourceRoot":"","sources":["../../src/schemas/package-json.schema.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA0BxB,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA2Cd,CAAC;AAEjB,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAMhE,eAAO,MAAM,mBAAmB;;;CAG/B,CAAC;AAEF,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;CAO9B,CAAC;AAEF,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;CAMjC,CAAC;AAEF,eAAO,MAAM,oBAAoB;;;;CAIhC,CAAC;AAEF,eAAO,MAAM,uBAAuB;;;;CAInC,CAAC"}
@@ -0,0 +1,91 @@
1
+ /**
2
+ * Schema Zod v4 para validar o package.json de pacotes instalados.
3
+ * Lida com todas as variações possíveis de formato.
4
+ */
5
+ import { z } from 'zod';
6
+ // ─────────────────────────────────────────
7
+ // Exports condicional (pode ser profundamente aninhado)
8
+ // ─────────────────────────────────────────
9
+ const ExportTargetSchema = z.union([
10
+ z.string(),
11
+ z.record(z.string(), z.unknown()),
12
+ ]);
13
+ const ConditionalExportsSchema = z.union([
14
+ z.string(),
15
+ z.record(z.string(), ExportTargetSchema),
16
+ ]);
17
+ const ExportsSchema = z.union([
18
+ z.string(),
19
+ z.null(),
20
+ z.record(z.string(), z.union([z.string(), ConditionalExportsSchema])),
21
+ ]);
22
+ // ─────────────────────────────────────────
23
+ // Schema principal do package.json
24
+ // ─────────────────────────────────────────
25
+ export const PackageJsonSchema = z.object({
26
+ name: z.string().optional(),
27
+ version: z.string().optional(),
28
+ description: z.string().optional(),
29
+ license: z.union([z.string(), z.object({ type: z.string() })]).optional(),
30
+ // Entry points clássicos
31
+ main: z.string().optional(),
32
+ module: z.string().optional(),
33
+ browser: z.union([z.string(), z.record(z.string(), z.string())]).optional(),
34
+ // Tipos
35
+ types: z.string().optional(),
36
+ typings: z.string().optional(),
37
+ // Exports modernos
38
+ exports: ExportsSchema.optional(),
39
+ // Types versions (para múltiplas versões de TS)
40
+ typesVersions: z.record(z.string(), z.record(z.string(), z.array(z.string()))).optional(),
41
+ // Dependências
42
+ dependencies: z.record(z.string(), z.string()).optional(),
43
+ peerDependencies: z.record(z.string(), z.string()).optional(),
44
+ devDependencies: z.record(z.string(), z.string()).optional(),
45
+ optionalDependencies: z.record(z.string(), z.string()).optional(),
46
+ // Files incluídos no pacote
47
+ files: z.array(z.union([z.string(), z.object({ include: z.array(z.string()), exclude: z.array(z.string()) })])).optional(),
48
+ // Side effects
49
+ sideEffects: z.union([z.boolean(), z.array(z.string())]).optional(),
50
+ // Type (module/commonjs)
51
+ type: z.union([z.literal('module'), z.literal('commonjs')]).optional(),
52
+ // Bin
53
+ bin: z.union([z.string(), z.record(z.string(), z.string())]).optional(),
54
+ // Keywords e homepage
55
+ keywords: z.array(z.string()).optional(),
56
+ homepage: z.string().optional(),
57
+ repository: z.union([z.string(), z.object({ url: z.string().optional(), type: z.string().optional() })]).optional(),
58
+ }).passthrough(); // Permite campos extras não mapeados
59
+ // ─────────────────────────────────────────
60
+ // Input schemas das tools MCP
61
+ // ─────────────────────────────────────────
62
+ export const DepsInfoInputSchema = {
63
+ package: z.string().describe('Nome do pacote (ex: zod, @mui/material, react)'),
64
+ projectDir: z.string().optional().describe('Diretório raiz do projeto. Default: process.cwd()'),
65
+ };
66
+ export const DepsApiInputSchema = {
67
+ package: z.string().describe('Nome do pacote'),
68
+ entrypoint: z.string().optional().describe('Subpath do entry point (ex: "hooks", "utils"). Default: entry principal'),
69
+ kind: z.enum(['all', 'functions', 'classes', 'interfaces', 'types', 'enums', 'variables']).optional()
70
+ .describe('Filtrar por tipo de símbolo. Default: all'),
71
+ limit: z.number().min(1).max(200).optional()
72
+ .describe('Máximo de símbolos por categoria. Default: 50'),
73
+ };
74
+ export const DepsSearchInputSchema = {
75
+ package: z.string().describe('Nome do pacote'),
76
+ query: z.string().describe('Termo de busca (suporta wildcards: Button, Button*, *Button*)'),
77
+ entrypoint: z.string().optional().describe('Subpath para limitar a busca'),
78
+ kind: z.enum(['all', 'functions', 'classes', 'interfaces', 'types', 'enums', 'variables']).optional()
79
+ .describe('Filtrar por tipo. Default: all'),
80
+ };
81
+ export const DepsUsageInputSchema = {
82
+ package: z.string().describe('Nome do pacote'),
83
+ symbol: z.string().describe('Nome exato do símbolo (ex: generateContent, Button, useAuth)'),
84
+ entrypoint: z.string().optional().describe('Subpath onde o símbolo está'),
85
+ };
86
+ export const DepsExamplesInputSchema = {
87
+ package: z.string().describe('Nome do pacote'),
88
+ symbol: z.string().optional().describe('Símbolo específico. Default: exemplos gerais do pacote'),
89
+ entrypoint: z.string().optional().describe('Subpath'),
90
+ };
91
+ //# sourceMappingURL=package-json.schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-json.schema.js","sourceRoot":"","sources":["../../src/schemas/package-json.schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Teste direto do deps-consult contra os pacotes instalados neste projeto.
3
+ * Sem MCP -- chamada direta das funções.
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test.js","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":"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"}