zinfer 0.0.1 → 0.1.2
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 +477 -28
- package/bin/zinfer +2 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +486 -0
- package/dist/cli.js.map +1 -0
- package/dist/core/brand-detector.d.ts +32 -0
- package/dist/core/brand-detector.d.ts.map +1 -0
- package/dist/core/brand-detector.js +121 -0
- package/dist/core/brand-detector.js.map +1 -0
- package/dist/core/config-loader.d.ts +87 -0
- package/dist/core/config-loader.d.ts.map +1 -0
- package/dist/core/config-loader.js +105 -0
- package/dist/core/config-loader.js.map +1 -0
- package/dist/core/description-extractor.d.ts +54 -0
- package/dist/core/description-extractor.d.ts.map +1 -0
- package/dist/core/description-extractor.js +180 -0
- package/dist/core/description-extractor.js.map +1 -0
- package/dist/core/errors.d.ts +35 -0
- package/dist/core/errors.d.ts.map +1 -0
- package/dist/core/errors.js +96 -0
- package/dist/core/errors.js.map +1 -0
- package/dist/core/extractor.d.ts +121 -0
- package/dist/core/extractor.d.ts.map +1 -0
- package/dist/core/extractor.js +504 -0
- package/dist/core/extractor.js.map +1 -0
- package/dist/core/file-resolver.d.ts +41 -0
- package/dist/core/file-resolver.d.ts.map +1 -0
- package/dist/core/file-resolver.js +95 -0
- package/dist/core/file-resolver.js.map +1 -0
- package/dist/core/getter-resolver.d.ts +67 -0
- package/dist/core/getter-resolver.d.ts.map +1 -0
- package/dist/core/getter-resolver.js +234 -0
- package/dist/core/getter-resolver.js.map +1 -0
- package/dist/core/import-resolver.d.ts +51 -0
- package/dist/core/import-resolver.d.ts.map +1 -0
- package/dist/core/import-resolver.js +158 -0
- package/dist/core/import-resolver.js.map +1 -0
- package/dist/core/index.d.ts +14 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +13 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/logger.d.ts +20 -0
- package/dist/core/logger.d.ts.map +1 -0
- package/dist/core/logger.js +36 -0
- package/dist/core/logger.js.map +1 -0
- package/dist/core/name-mapper.d.ts +45 -0
- package/dist/core/name-mapper.d.ts.map +1 -0
- package/dist/core/name-mapper.js +82 -0
- package/dist/core/name-mapper.js.map +1 -0
- package/dist/core/normalizer.d.ts +24 -0
- package/dist/core/normalizer.d.ts.map +1 -0
- package/dist/core/normalizer.js +50 -0
- package/dist/core/normalizer.js.map +1 -0
- package/dist/core/schema-detector.d.ts +49 -0
- package/dist/core/schema-detector.d.ts.map +1 -0
- package/dist/core/schema-detector.js +272 -0
- package/dist/core/schema-detector.js.map +1 -0
- package/dist/core/schema-reference-analyzer.d.ts +77 -0
- package/dist/core/schema-reference-analyzer.d.ts.map +1 -0
- package/dist/core/schema-reference-analyzer.js +269 -0
- package/dist/core/schema-reference-analyzer.js.map +1 -0
- package/dist/core/test-generator.d.ts +97 -0
- package/dist/core/test-generator.d.ts.map +1 -0
- package/dist/core/test-generator.js +177 -0
- package/dist/core/test-generator.js.map +1 -0
- package/dist/core/type-printer.d.ts +46 -0
- package/dist/core/type-printer.d.ts.map +1 -0
- package/dist/core/type-printer.js +519 -0
- package/dist/core/type-printer.js.map +1 -0
- package/dist/core/types.d.ts +124 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +5 -0
- package/dist/core/types.js.map +1 -0
- package/dist/index.d.ts +66 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +79 -0
- package/dist/index.js.map +1 -0
- package/package.json +63 -7
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brand-detector.js","sourceRoot":"","sources":["../../src/core/brand-detector.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration options that can be specified in config file.
|
|
3
|
+
*/
|
|
4
|
+
export interface ZinferConfig {
|
|
5
|
+
/** File paths or glob patterns to process */
|
|
6
|
+
include?: string[];
|
|
7
|
+
/** Glob patterns to exclude */
|
|
8
|
+
exclude?: string[];
|
|
9
|
+
/** Path to tsconfig.json */
|
|
10
|
+
project?: string;
|
|
11
|
+
/** Schema names to extract (if not specified, all are extracted) */
|
|
12
|
+
schemas?: string[];
|
|
13
|
+
/** Output only input types */
|
|
14
|
+
inputOnly?: boolean;
|
|
15
|
+
/** Output only output types */
|
|
16
|
+
outputOnly?: boolean;
|
|
17
|
+
/** Single type if input===output */
|
|
18
|
+
mergeSame?: boolean;
|
|
19
|
+
/** Remove suffix from schema names */
|
|
20
|
+
suffix?: string;
|
|
21
|
+
/** Suffix for input type names */
|
|
22
|
+
inputSuffix?: string;
|
|
23
|
+
/** Suffix for output type names */
|
|
24
|
+
outputSuffix?: string;
|
|
25
|
+
/** Custom name mappings */
|
|
26
|
+
map?: Record<string, string>;
|
|
27
|
+
/** Output directory */
|
|
28
|
+
outDir?: string;
|
|
29
|
+
/** Single output file */
|
|
30
|
+
outFile?: string;
|
|
31
|
+
/** Output file naming pattern */
|
|
32
|
+
outPattern?: string;
|
|
33
|
+
/** Generate .d.ts files */
|
|
34
|
+
declaration?: boolean;
|
|
35
|
+
/** Include Zod .describe() as TSDoc comments */
|
|
36
|
+
withDescriptions?: boolean;
|
|
37
|
+
/** Generate vitest type equality tests alongside type files */
|
|
38
|
+
generateTests?: boolean;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Result of loading config.
|
|
42
|
+
*/
|
|
43
|
+
export interface ConfigLoadResult {
|
|
44
|
+
/** The loaded configuration */
|
|
45
|
+
config: ZinferConfig;
|
|
46
|
+
/** Path to the config file (if found) */
|
|
47
|
+
configPath?: string;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Loads zinfer configuration from config file or package.json.
|
|
51
|
+
*/
|
|
52
|
+
export declare class ConfigLoader {
|
|
53
|
+
/**
|
|
54
|
+
* Loads configuration from the specified directory.
|
|
55
|
+
*
|
|
56
|
+
* @param cwd - Directory to search for config files
|
|
57
|
+
* @returns Configuration and config file path
|
|
58
|
+
*/
|
|
59
|
+
load(cwd: string): Promise<ConfigLoadResult>;
|
|
60
|
+
/**
|
|
61
|
+
* Loads configuration from a TypeScript/JavaScript config file.
|
|
62
|
+
*/
|
|
63
|
+
private loadConfigFile;
|
|
64
|
+
/**
|
|
65
|
+
* Loads configuration from package.json's "zinfer" field.
|
|
66
|
+
*/
|
|
67
|
+
private loadFromPackageJson;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Defines a zinfer configuration with type checking.
|
|
71
|
+
* Use this in zinfer.config.ts for type safety.
|
|
72
|
+
*
|
|
73
|
+
* @example
|
|
74
|
+
* ```typescript
|
|
75
|
+
* // zinfer.config.ts
|
|
76
|
+
* import { defineConfig } from 'zinfer';
|
|
77
|
+
*
|
|
78
|
+
* export default defineConfig({
|
|
79
|
+
* include: ['src/** /*.schema.ts'],
|
|
80
|
+
* outDir: './types',
|
|
81
|
+
* mergeSame: true,
|
|
82
|
+
* suffix: 'Schema',
|
|
83
|
+
* });
|
|
84
|
+
* ```
|
|
85
|
+
*/
|
|
86
|
+
export declare function defineConfig(config: ZinferConfig): ZinferConfig;
|
|
87
|
+
//# sourceMappingURL=config-loader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-loader.d.ts","sourceRoot":"","sources":["../../src/core/config-loader.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,6CAA6C;IAC7C,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,+BAA+B;IAC/B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,4BAA4B;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oEAAoE;IACpE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,8BAA8B;IAC9B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,+BAA+B;IAC/B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,oCAAoC;IACpC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,sCAAsC;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,kCAAkC;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mCAAmC;IACnC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,2BAA2B;IAC3B,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,uBAAuB;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,yBAAyB;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iCAAiC;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,2BAA2B;IAC3B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,gDAAgD;IAChD,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,+DAA+D;IAC/D,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,+BAA+B;IAC/B,MAAM,EAAE,YAAY,CAAC;IACrB,yCAAyC;IACzC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAYD;;GAEG;AACH,qBAAa,YAAY;IACvB;;;;;OAKG;IACG,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAuBlD;;OAEG;YACW,cAAc;IAW5B;;OAEG;YACW,mBAAmB;CAwBlC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,YAAY,CAE/D"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { existsSync } from "fs";
|
|
2
|
+
import { readFile } from "fs/promises";
|
|
3
|
+
import { resolve } from "pathe";
|
|
4
|
+
import { pathToFileURL } from "url";
|
|
5
|
+
/**
|
|
6
|
+
* Config file names to search for, in order of priority.
|
|
7
|
+
*/
|
|
8
|
+
const CONFIG_FILES = [
|
|
9
|
+
"zinfer.config.ts",
|
|
10
|
+
"zinfer.config.mts",
|
|
11
|
+
"zinfer.config.js",
|
|
12
|
+
"zinfer.config.mjs",
|
|
13
|
+
];
|
|
14
|
+
/**
|
|
15
|
+
* Loads zinfer configuration from config file or package.json.
|
|
16
|
+
*/
|
|
17
|
+
export class ConfigLoader {
|
|
18
|
+
/**
|
|
19
|
+
* Loads configuration from the specified directory.
|
|
20
|
+
*
|
|
21
|
+
* @param cwd - Directory to search for config files
|
|
22
|
+
* @returns Configuration and config file path
|
|
23
|
+
*/
|
|
24
|
+
async load(cwd) {
|
|
25
|
+
// Try config files first
|
|
26
|
+
for (const configFile of CONFIG_FILES) {
|
|
27
|
+
const configPath = resolve(cwd, configFile);
|
|
28
|
+
if (existsSync(configPath)) {
|
|
29
|
+
const config = await this.loadConfigFile(configPath);
|
|
30
|
+
return { config, configPath };
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
// Try package.json
|
|
34
|
+
const packageJsonPath = resolve(cwd, "package.json");
|
|
35
|
+
if (existsSync(packageJsonPath)) {
|
|
36
|
+
const config = await this.loadFromPackageJson(packageJsonPath);
|
|
37
|
+
if (config) {
|
|
38
|
+
return { config, configPath: packageJsonPath };
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
// No config found, return empty config
|
|
42
|
+
return { config: {} };
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Loads configuration from a TypeScript/JavaScript config file.
|
|
46
|
+
*/
|
|
47
|
+
async loadConfigFile(configPath) {
|
|
48
|
+
try {
|
|
49
|
+
const fileUrl = pathToFileURL(configPath).href;
|
|
50
|
+
const module = await import(fileUrl);
|
|
51
|
+
return module.default || module;
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
console.warn(`Warning: Failed to load config from ${configPath}:`, error.message);
|
|
55
|
+
return {};
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Loads configuration from package.json's "zinfer" field.
|
|
60
|
+
*/
|
|
61
|
+
async loadFromPackageJson(packageJsonPath) {
|
|
62
|
+
let content;
|
|
63
|
+
try {
|
|
64
|
+
content = await readFile(packageJsonPath, "utf-8");
|
|
65
|
+
}
|
|
66
|
+
catch (error) {
|
|
67
|
+
// File read error (permissions, not found, etc.) - silently return null
|
|
68
|
+
// since package.json config is optional
|
|
69
|
+
return null;
|
|
70
|
+
}
|
|
71
|
+
try {
|
|
72
|
+
const packageJson = JSON.parse(content);
|
|
73
|
+
if (packageJson.zinfer && typeof packageJson.zinfer === "object") {
|
|
74
|
+
return packageJson.zinfer;
|
|
75
|
+
}
|
|
76
|
+
return null;
|
|
77
|
+
}
|
|
78
|
+
catch (error) {
|
|
79
|
+
// JSON parse error - warn the user since this is likely a syntax error
|
|
80
|
+
console.warn(`Warning: Failed to parse ${packageJsonPath}: ${error.message}`);
|
|
81
|
+
return null;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Defines a zinfer configuration with type checking.
|
|
87
|
+
* Use this in zinfer.config.ts for type safety.
|
|
88
|
+
*
|
|
89
|
+
* @example
|
|
90
|
+
* ```typescript
|
|
91
|
+
* // zinfer.config.ts
|
|
92
|
+
* import { defineConfig } from 'zinfer';
|
|
93
|
+
*
|
|
94
|
+
* export default defineConfig({
|
|
95
|
+
* include: ['src/** /*.schema.ts'],
|
|
96
|
+
* outDir: './types',
|
|
97
|
+
* mergeSame: true,
|
|
98
|
+
* suffix: 'Schema',
|
|
99
|
+
* });
|
|
100
|
+
* ```
|
|
101
|
+
*/
|
|
102
|
+
export function defineConfig(config) {
|
|
103
|
+
return config;
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=config-loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-loader.js","sourceRoot":"","sources":["../../src/core/config-loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAoDpC;;GAEG;AACH,MAAM,YAAY,GAAG;IACnB,kBAAkB;IAClB,mBAAmB;IACnB,kBAAkB;IAClB,mBAAmB;CACpB,CAAC;AAEF;;GAEG;AACH,MAAM,OAAO,YAAY;IACvB;;;;;OAKG;IACH,KAAK,CAAC,IAAI,CAAC,GAAW;QACpB,yBAAyB;QACzB,KAAK,MAAM,UAAU,IAAI,YAAY,EAAE,CAAC;YACtC,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;YAC5C,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC3B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;gBACrD,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;YAChC,CAAC;QACH,CAAC;QAED,mBAAmB;QACnB,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;QACrD,IAAI,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;YAChC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,eAAe,CAAC,CAAC;YAC/D,IAAI,MAAM,EAAE,CAAC;gBACX,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,CAAC;YACjD,CAAC;QACH,CAAC;QAED,uCAAuC;QACvC,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IACxB,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,cAAc,CAAC,UAAkB;QAC7C,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC;YAC/C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC;YACrC,OAAO,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC;QAClC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,uCAAuC,UAAU,GAAG,EAAG,KAAe,CAAC,OAAO,CAAC,CAAC;YAC7F,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,mBAAmB,CAAC,eAAuB;QACvD,IAAI,OAAe,CAAC;QACpB,IAAI,CAAC;YACH,OAAO,GAAG,MAAM,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;QACrD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,wEAAwE;YACxE,wCAAwC;YACxC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAExC,IAAI,WAAW,CAAC,MAAM,IAAI,OAAO,WAAW,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;gBACjE,OAAO,WAAW,CAAC,MAAsB,CAAC;YAC5C,CAAC;YAED,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,uEAAuE;YACvE,OAAO,CAAC,IAAI,CAAC,4BAA4B,eAAe,KAAM,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;YACzF,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;CACF;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,YAAY,CAAC,MAAoB;IAC/C,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import type { FieldDescription } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Schema description information.
|
|
4
|
+
*/
|
|
5
|
+
export interface SchemaDescription {
|
|
6
|
+
/** Schema name */
|
|
7
|
+
schemaName: string;
|
|
8
|
+
/** Schema-level description if present */
|
|
9
|
+
description?: string;
|
|
10
|
+
/** Field descriptions */
|
|
11
|
+
fields: FieldDescription[];
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Extracts descriptions from Zod schemas by dynamically importing the module.
|
|
15
|
+
*/
|
|
16
|
+
export declare class DescriptionExtractor {
|
|
17
|
+
/**
|
|
18
|
+
* Extracts descriptions from schemas in a file.
|
|
19
|
+
*
|
|
20
|
+
* @param filePath - Path to the TypeScript/JavaScript file
|
|
21
|
+
* @param schemaNames - Names of schemas to extract descriptions from
|
|
22
|
+
* @returns Map of schema name to description info
|
|
23
|
+
*/
|
|
24
|
+
extractDescriptions(filePath: string, schemaNames: string[]): Promise<Map<string, SchemaDescription>>;
|
|
25
|
+
/**
|
|
26
|
+
* Extracts descriptions from a Zod schema.
|
|
27
|
+
*/
|
|
28
|
+
private extractFromSchema;
|
|
29
|
+
/**
|
|
30
|
+
* Recursively extracts field descriptions from a Zod schema.
|
|
31
|
+
*/
|
|
32
|
+
private extractFieldDescriptions;
|
|
33
|
+
/**
|
|
34
|
+
* Gets the description from a Zod schema.
|
|
35
|
+
* Supports both Zod v3 (_def.description) and Zod v4 (meta().description).
|
|
36
|
+
*/
|
|
37
|
+
private getDescription;
|
|
38
|
+
/**
|
|
39
|
+
* Checks if a schema is a ZodObject.
|
|
40
|
+
* Supports both Zod v3 and v4.
|
|
41
|
+
*/
|
|
42
|
+
private isZodObject;
|
|
43
|
+
/**
|
|
44
|
+
* Unwraps optional/nullable/default wrappers to get the inner schema.
|
|
45
|
+
* Supports both Zod v3 and v4.
|
|
46
|
+
*/
|
|
47
|
+
private unwrapSchema;
|
|
48
|
+
/**
|
|
49
|
+
* Gets the shape from a ZodObject schema.
|
|
50
|
+
* Supports both Zod v3 and v4.
|
|
51
|
+
*/
|
|
52
|
+
private getShape;
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=description-extractor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"description-extractor.d.ts","sourceRoot":"","sources":["../../src/core/description-extractor.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,kBAAkB;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,0CAA0C;IAC1C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yBAAyB;IACzB,MAAM,EAAE,gBAAgB,EAAE,CAAC;CAC5B;AAED;;GAEG;AACH,qBAAa,oBAAoB;IAC/B;;;;;;OAMG;IACG,mBAAmB,CACvB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EAAE,GACpB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IA+B1C;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAgBzB;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAgChC;;;OAGG;IACH,OAAO,CAAC,cAAc;IA4BtB;;;OAGG;IACH,OAAO,CAAC,WAAW;IAsBnB;;;OAGG;IACH,OAAO,CAAC,YAAY;IAkCpB;;;OAGG;IACH,OAAO,CAAC,QAAQ;CAoBjB"}
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
import { pathToFileURL } from "url";
|
|
2
|
+
import { resolve } from "pathe";
|
|
3
|
+
import { logDebugError } from "./logger.js";
|
|
4
|
+
/**
|
|
5
|
+
* Extracts descriptions from Zod schemas by dynamically importing the module.
|
|
6
|
+
*/
|
|
7
|
+
export class DescriptionExtractor {
|
|
8
|
+
/**
|
|
9
|
+
* Extracts descriptions from schemas in a file.
|
|
10
|
+
*
|
|
11
|
+
* @param filePath - Path to the TypeScript/JavaScript file
|
|
12
|
+
* @param schemaNames - Names of schemas to extract descriptions from
|
|
13
|
+
* @returns Map of schema name to description info
|
|
14
|
+
*/
|
|
15
|
+
async extractDescriptions(filePath, schemaNames) {
|
|
16
|
+
const result = new Map();
|
|
17
|
+
try {
|
|
18
|
+
// Convert to absolute path and file URL for dynamic import
|
|
19
|
+
const absolutePath = resolve(filePath);
|
|
20
|
+
const fileUrl = pathToFileURL(absolutePath).href;
|
|
21
|
+
// Dynamically import the module
|
|
22
|
+
const module = await import(fileUrl);
|
|
23
|
+
for (const schemaName of schemaNames) {
|
|
24
|
+
const schema = module[schemaName];
|
|
25
|
+
if (!schema) {
|
|
26
|
+
continue;
|
|
27
|
+
}
|
|
28
|
+
const descriptions = this.extractFromSchema(schema, schemaName);
|
|
29
|
+
result.set(schemaName, descriptions);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
catch (error) {
|
|
33
|
+
// If import fails, return empty descriptions (non-blocking)
|
|
34
|
+
console.warn(`Warning: Could not import ${filePath} for description extraction:`, error.message);
|
|
35
|
+
}
|
|
36
|
+
return result;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Extracts descriptions from a Zod schema.
|
|
40
|
+
*/
|
|
41
|
+
extractFromSchema(schema, schemaName) {
|
|
42
|
+
const fields = [];
|
|
43
|
+
// Get schema-level description
|
|
44
|
+
const schemaDesc = this.getDescription(schema);
|
|
45
|
+
// Extract field descriptions recursively
|
|
46
|
+
this.extractFieldDescriptions(schema, "", fields);
|
|
47
|
+
return {
|
|
48
|
+
schemaName,
|
|
49
|
+
description: schemaDesc,
|
|
50
|
+
fields,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Recursively extracts field descriptions from a Zod schema.
|
|
55
|
+
*/
|
|
56
|
+
extractFieldDescriptions(schema, prefix, fields) {
|
|
57
|
+
if (!schema || typeof schema !== "object") {
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
// Handle ZodObject - extract from shape
|
|
61
|
+
if (this.isZodObject(schema)) {
|
|
62
|
+
const shape = this.getShape(schema);
|
|
63
|
+
if (shape && typeof shape === "object") {
|
|
64
|
+
for (const [key, fieldSchema] of Object.entries(shape)) {
|
|
65
|
+
const path = prefix ? `${prefix}.${key}` : key;
|
|
66
|
+
// Get description for this field
|
|
67
|
+
const desc = this.getDescription(fieldSchema);
|
|
68
|
+
if (desc) {
|
|
69
|
+
fields.push({ path, description: desc });
|
|
70
|
+
}
|
|
71
|
+
// Recurse into nested schemas
|
|
72
|
+
const innerSchema = this.unwrapSchema(fieldSchema);
|
|
73
|
+
if (this.isZodObject(innerSchema)) {
|
|
74
|
+
this.extractFieldDescriptions(innerSchema, path, fields);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Gets the description from a Zod schema.
|
|
82
|
+
* Supports both Zod v3 (_def.description) and Zod v4 (meta().description).
|
|
83
|
+
*/
|
|
84
|
+
getDescription(schema) {
|
|
85
|
+
if (!schema || typeof schema !== "object") {
|
|
86
|
+
return undefined;
|
|
87
|
+
}
|
|
88
|
+
const zodSchema = schema;
|
|
89
|
+
// Zod v4: use meta() method to get description
|
|
90
|
+
if (typeof zodSchema.meta === "function") {
|
|
91
|
+
try {
|
|
92
|
+
const meta = zodSchema.meta();
|
|
93
|
+
if (meta && typeof meta.description === "string") {
|
|
94
|
+
return meta.description;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
catch (error) {
|
|
98
|
+
logDebugError("meta() call failed", error);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
// Zod v3 fallback: description in _def.description
|
|
102
|
+
const def = zodSchema._def;
|
|
103
|
+
if (def && typeof def.description === "string") {
|
|
104
|
+
return def.description;
|
|
105
|
+
}
|
|
106
|
+
return undefined;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Checks if a schema is a ZodObject.
|
|
110
|
+
* Supports both Zod v3 and v4.
|
|
111
|
+
*/
|
|
112
|
+
isZodObject(schema) {
|
|
113
|
+
if (!schema || typeof schema !== "object") {
|
|
114
|
+
return false;
|
|
115
|
+
}
|
|
116
|
+
const zodSchema = schema;
|
|
117
|
+
// Zod v4: check type property
|
|
118
|
+
if (zodSchema.type === "object") {
|
|
119
|
+
return true;
|
|
120
|
+
}
|
|
121
|
+
// Zod v3 fallback: check _def.typeName
|
|
122
|
+
const def = zodSchema._def;
|
|
123
|
+
if (def?.typeName === "ZodObject") {
|
|
124
|
+
return true;
|
|
125
|
+
}
|
|
126
|
+
// Also check for shape property existence
|
|
127
|
+
return "shape" in zodSchema;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Unwraps optional/nullable/default wrappers to get the inner schema.
|
|
131
|
+
* Supports both Zod v3 and v4.
|
|
132
|
+
*/
|
|
133
|
+
unwrapSchema(schema) {
|
|
134
|
+
if (!schema || typeof schema !== "object") {
|
|
135
|
+
return schema;
|
|
136
|
+
}
|
|
137
|
+
const zodSchema = schema;
|
|
138
|
+
// Zod v4: check type property and use def.innerType
|
|
139
|
+
const type = zodSchema.type;
|
|
140
|
+
const def = zodSchema.def;
|
|
141
|
+
if (type === "optional" || type === "nullable" || type === "default") {
|
|
142
|
+
if (def?.innerType) {
|
|
143
|
+
return this.unwrapSchema(def.innerType);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
// Zod v3 fallback: check _def.typeName
|
|
147
|
+
const _def = zodSchema._def;
|
|
148
|
+
if (_def) {
|
|
149
|
+
if (_def.typeName === "ZodOptional" ||
|
|
150
|
+
_def.typeName === "ZodNullable" ||
|
|
151
|
+
_def.typeName === "ZodDefault") {
|
|
152
|
+
if (_def.innerType) {
|
|
153
|
+
return this.unwrapSchema(_def.innerType);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
return schema;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Gets the shape from a ZodObject schema.
|
|
161
|
+
* Supports both Zod v3 and v4.
|
|
162
|
+
*/
|
|
163
|
+
getShape(schema) {
|
|
164
|
+
if (!schema || typeof schema !== "object") {
|
|
165
|
+
return undefined;
|
|
166
|
+
}
|
|
167
|
+
const zodSchema = schema;
|
|
168
|
+
// Zod v4: shape is in _def.shape (getter)
|
|
169
|
+
const _def = zodSchema._def;
|
|
170
|
+
if (_def?.shape && typeof _def.shape === "object") {
|
|
171
|
+
return _def.shape;
|
|
172
|
+
}
|
|
173
|
+
// Direct shape property
|
|
174
|
+
if (zodSchema.shape && typeof zodSchema.shape === "object") {
|
|
175
|
+
return zodSchema.shape;
|
|
176
|
+
}
|
|
177
|
+
return undefined;
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
//# sourceMappingURL=description-extractor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"description-extractor.js","sourceRoot":"","sources":["../../src/core/description-extractor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base error class for zinfer errors.
|
|
3
|
+
*/
|
|
4
|
+
export declare class ZinferError extends Error {
|
|
5
|
+
readonly code: string;
|
|
6
|
+
readonly hint?: string | undefined;
|
|
7
|
+
constructor(message: string, code: string, hint?: string | undefined);
|
|
8
|
+
/**
|
|
9
|
+
* Formats the error for display.
|
|
10
|
+
*/
|
|
11
|
+
format(): string;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Error when no schemas are found in files.
|
|
15
|
+
*/
|
|
16
|
+
export declare class NoSchemasFoundError extends ZinferError {
|
|
17
|
+
constructor(filePaths: string[], requestedSchemas?: string[]);
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Error when files don't match the pattern.
|
|
21
|
+
*/
|
|
22
|
+
export declare class NoFilesMatchedError extends ZinferError {
|
|
23
|
+
constructor(patterns: string[]);
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Error when CLI options are invalid.
|
|
27
|
+
*/
|
|
28
|
+
export declare class InvalidOptionError extends ZinferError {
|
|
29
|
+
constructor(optionName: string, reason: string, hint?: string);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Formats any error for CLI output.
|
|
33
|
+
*/
|
|
34
|
+
export declare function formatError(error: unknown): string;
|
|
35
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,qBAAa,WAAY,SAAQ,KAAK;aAGlB,IAAI,EAAE,MAAM;aACZ,IAAI,CAAC,EAAE,MAAM;gBAF7B,OAAO,EAAE,MAAM,EACC,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,MAAM,YAAA;IAM/B;;OAEG;IACH,MAAM,IAAI,MAAM;CAOjB;AAED;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,WAAW;gBACtC,SAAS,EAAE,MAAM,EAAE,EAAE,gBAAgB,CAAC,EAAE,MAAM,EAAE;CAkB7D;AAED;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,WAAW;gBACtC,QAAQ,EAAE,MAAM,EAAE;CAQ/B;AAED;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,WAAW;gBACrC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM;CAI9D;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAiBlD"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base error class for zinfer errors.
|
|
3
|
+
*/
|
|
4
|
+
export class ZinferError extends Error {
|
|
5
|
+
code;
|
|
6
|
+
hint;
|
|
7
|
+
constructor(message, code, hint) {
|
|
8
|
+
super(message);
|
|
9
|
+
this.code = code;
|
|
10
|
+
this.hint = hint;
|
|
11
|
+
this.name = "ZinferError";
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Formats the error for display.
|
|
15
|
+
*/
|
|
16
|
+
format() {
|
|
17
|
+
const lines = [`Error: ${this.message}`];
|
|
18
|
+
if (this.hint) {
|
|
19
|
+
lines.push(`Hint: ${this.hint}`);
|
|
20
|
+
}
|
|
21
|
+
return lines.join("\n");
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Error when no schemas are found in files.
|
|
26
|
+
*/
|
|
27
|
+
export class NoSchemasFoundError extends ZinferError {
|
|
28
|
+
constructor(filePaths, requestedSchemas) {
|
|
29
|
+
const files = filePaths.length === 1 ? filePaths[0] : `${filePaths.length} files`;
|
|
30
|
+
if (requestedSchemas?.length) {
|
|
31
|
+
super(`Requested schemas not found: ${requestedSchemas.join(", ")}`, "NO_SCHEMAS_FOUND", `These schemas were not found in ${files}. Check schema names are correct.`);
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
super(`No Zod schemas found in ${files}`, "NO_SCHEMAS_FOUND", "Ensure schemas are exported and use Zod syntax (z.object, z.string, etc.)");
|
|
35
|
+
}
|
|
36
|
+
this.name = "NoSchemasFoundError";
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Error when files don't match the pattern.
|
|
41
|
+
*/
|
|
42
|
+
export class NoFilesMatchedError extends ZinferError {
|
|
43
|
+
constructor(patterns) {
|
|
44
|
+
super(`No files matched the pattern(s): ${patterns.join(", ")}`, "NO_FILES_MATCHED", "Check that the file paths or glob patterns are correct");
|
|
45
|
+
this.name = "NoFilesMatchedError";
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Error when CLI options are invalid.
|
|
50
|
+
*/
|
|
51
|
+
export class InvalidOptionError extends ZinferError {
|
|
52
|
+
constructor(optionName, reason, hint) {
|
|
53
|
+
super(`Invalid option "${optionName}": ${reason}`, "INVALID_OPTION", hint);
|
|
54
|
+
this.name = "InvalidOptionError";
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Formats any error for CLI output.
|
|
59
|
+
*/
|
|
60
|
+
export function formatError(error) {
|
|
61
|
+
if (error instanceof ZinferError) {
|
|
62
|
+
return error.format();
|
|
63
|
+
}
|
|
64
|
+
if (error instanceof Error) {
|
|
65
|
+
// Clean up common ts-morph errors
|
|
66
|
+
const message = error.message;
|
|
67
|
+
if (message.includes("Manipulation error")) {
|
|
68
|
+
return formatTsMorphError(message);
|
|
69
|
+
}
|
|
70
|
+
return `Error: ${message}`;
|
|
71
|
+
}
|
|
72
|
+
return `Error: ${String(error)}`;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Formats ts-morph manipulation errors.
|
|
76
|
+
*/
|
|
77
|
+
function formatTsMorphError(message) {
|
|
78
|
+
const lines = [];
|
|
79
|
+
// Extract the first line (main error)
|
|
80
|
+
const firstLine = message.split("\n")[0];
|
|
81
|
+
if (firstLine.includes("syntax error")) {
|
|
82
|
+
lines.push("Error: Syntax error in source file");
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
lines.push("Error: Failed to process TypeScript file");
|
|
86
|
+
}
|
|
87
|
+
// Extract TypeScript error codes (TS1005, etc.)
|
|
88
|
+
const tsErrors = message.match(/TS\d+/g);
|
|
89
|
+
if (tsErrors?.length) {
|
|
90
|
+
lines.push("");
|
|
91
|
+
lines.push("TypeScript reported errors in the file.");
|
|
92
|
+
lines.push("Please fix any syntax errors before running zinfer.");
|
|
93
|
+
}
|
|
94
|
+
return lines.join("\n");
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"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"}
|