@chkit/plugin-codegen 0.1.0-beta.6 → 0.1.0-beta.8

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 CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Plugin to generate TypeScript row types and optional Zod schemas from your chkit schema definitions.
4
4
 
5
- Part of the [chkit](https://github.com/obsessiondb/chkit) monorepo.
5
+ Part of the [chkit](https://github.com/obsessiondb/chkit) monorepo. This plugin extends the [`chkit`](https://www.npmjs.com/package/chkit) CLI with TypeScript code generation.
6
6
 
7
7
  ## Install
8
8
 
@@ -0,0 +1,9 @@
1
+ export declare class CodegenConfigError extends Error {
2
+ constructor(message: string);
3
+ }
4
+ export declare class UnsupportedTypeError extends Error {
5
+ readonly path: string;
6
+ readonly sourceType: string;
7
+ constructor(path: string, sourceType: string);
8
+ }
9
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,kBAAmB,SAAQ,KAAK;gBAC/B,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,oBAAqB,SAAQ,KAAK;IAC7C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;gBAEf,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;CAQ7C"}
package/dist/errors.js ADDED
@@ -0,0 +1,17 @@
1
+ export class CodegenConfigError extends Error {
2
+ constructor(message) {
3
+ super(message);
4
+ this.name = 'CodegenConfigError';
5
+ }
6
+ }
7
+ export class UnsupportedTypeError extends Error {
8
+ path;
9
+ sourceType;
10
+ constructor(path, sourceType) {
11
+ super(`Unsupported column type "${sourceType}" at ${path}. Set failOnUnsupportedType=false to emit unknown.`);
12
+ this.name = 'UnsupportedTypeError';
13
+ this.path = path;
14
+ this.sourceType = sourceType;
15
+ }
16
+ }
17
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAC3C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAA;IAClC,CAAC;CACF;AAED,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IACpC,IAAI,CAAQ;IACZ,UAAU,CAAQ;IAE3B,YAAY,IAAY,EAAE,UAAkB;QAC1C,KAAK,CACH,4BAA4B,UAAU,QAAQ,IAAI,oDAAoD,CACvG,CAAA;QACD,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAA;QAClC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;IAC9B,CAAC;CACF"}
@@ -0,0 +1,9 @@
1
+ import { type ColumnDefinition } from '@chkit/core';
2
+ import type { CodegenPluginOptions, GenerateIngestArtifactsInput, GenerateIngestArtifactsOutput, GenerateTypeArtifactsInput, GenerateTypeArtifactsOutput, MapColumnTypeResult } from './types.js';
3
+ export declare function mapColumnType(input: {
4
+ column: ColumnDefinition;
5
+ path: string;
6
+ }, options: Pick<Required<CodegenPluginOptions>, 'bigintMode' | 'failOnUnsupportedType'>): MapColumnTypeResult;
7
+ export declare function generateTypeArtifacts(input: GenerateTypeArtifactsInput): GenerateTypeArtifactsOutput;
8
+ export declare function generateIngestArtifacts(input: GenerateIngestArtifactsInput): GenerateIngestArtifactsOutput;
9
+ //# sourceMappingURL=generators.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generators.d.ts","sourceRoot":"","sources":["../src/generators.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,gBAAgB,EAItB,MAAM,aAAa,CAAA;AAEpB,OAAO,KAAK,EAEV,oBAAoB,EACpB,4BAA4B,EAC5B,6BAA6B,EAC7B,0BAA0B,EAC1B,2BAA2B,EAC3B,mBAAmB,EACpB,MAAM,YAAY,CAAA;AA2LnB,wBAAgB,aAAa,CAC3B,KAAK,EAAE;IAAE,MAAM,EAAE,gBAAgB,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EACjD,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,YAAY,GAAG,uBAAuB,CAAC,GACpF,mBAAmB,CAyBrB;AAwDD,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,0BAA0B,GAChC,2BAA2B,CA2C7B;AA8CD,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,4BAA4B,GAClC,6BAA6B,CAkD/B"}
@@ -0,0 +1,382 @@
1
+ import { dirname, relative } from 'node:path';
2
+ import { canonicalizeDefinitions, } from '@chkit/core';
3
+ import { UnsupportedTypeError } from './errors.js';
4
+ import { normalizeCodegenOptions } from './options.js';
5
+ import { renderPropertyName, resolveTableNames } from './naming.js';
6
+ const LARGE_INTEGER_TYPES = new Set([
7
+ 'Int64',
8
+ 'UInt64',
9
+ 'Int128',
10
+ 'UInt128',
11
+ 'Int256',
12
+ 'UInt256',
13
+ ]);
14
+ const NUMBER_TYPES = new Set([
15
+ 'Int8',
16
+ 'Int16',
17
+ 'Int32',
18
+ 'UInt8',
19
+ 'UInt16',
20
+ 'UInt32',
21
+ 'Float32',
22
+ 'Float64',
23
+ 'BFloat16',
24
+ ]);
25
+ const STRING_TYPES = new Set([
26
+ 'String',
27
+ 'FixedString',
28
+ 'Date',
29
+ 'Date32',
30
+ 'DateTime',
31
+ 'DateTime64',
32
+ 'UUID',
33
+ 'IPv4',
34
+ 'IPv6',
35
+ 'Enum',
36
+ 'Enum8',
37
+ 'Enum16',
38
+ 'Decimal',
39
+ 'Decimal32',
40
+ 'Decimal64',
41
+ 'Decimal128',
42
+ 'Decimal256',
43
+ ]);
44
+ const BOOLEAN_TYPES = new Set(['Bool', 'Boolean']);
45
+ function splitTopLevelArgs(input) {
46
+ const args = [];
47
+ let depth = 0;
48
+ let start = 0;
49
+ for (let i = 0; i < input.length; i++) {
50
+ const ch = input[i];
51
+ if (ch === '(')
52
+ depth++;
53
+ else if (ch === ')')
54
+ depth--;
55
+ else if (ch === ',' && depth === 0) {
56
+ args.push(input.slice(start, i).trim());
57
+ start = i + 1;
58
+ }
59
+ }
60
+ const last = input.slice(start).trim();
61
+ if (last.length > 0)
62
+ args.push(last);
63
+ return args;
64
+ }
65
+ function parseClickHouseType(typeStr) {
66
+ const trimmed = typeStr.trim();
67
+ const parenIndex = trimmed.indexOf('(');
68
+ if (parenIndex < 0)
69
+ return { base: trimmed, args: [] };
70
+ const base = trimmed.slice(0, parenIndex);
71
+ const closingParen = trimmed.lastIndexOf(')');
72
+ if (closingParen <= parenIndex)
73
+ return { base: trimmed, args: [] };
74
+ const inner = trimmed.slice(parenIndex + 1, closingParen);
75
+ if (inner.trim().length === 0)
76
+ return { base, args: [] };
77
+ return { base, args: splitTopLevelArgs(inner) };
78
+ }
79
+ function mapScalarType(base, bigintMode) {
80
+ if (STRING_TYPES.has(base))
81
+ return 'string';
82
+ if (BOOLEAN_TYPES.has(base))
83
+ return 'boolean';
84
+ if (NUMBER_TYPES.has(base))
85
+ return 'number';
86
+ if (LARGE_INTEGER_TYPES.has(base))
87
+ return bigintMode;
88
+ return null;
89
+ }
90
+ function scalarToZod(mapped) {
91
+ if (mapped === 'string')
92
+ return 'z.string()';
93
+ if (mapped === 'number')
94
+ return 'z.number()';
95
+ if (mapped === 'boolean')
96
+ return 'z.boolean()';
97
+ if (mapped === 'bigint')
98
+ return 'z.bigint()';
99
+ return 'z.unknown()';
100
+ }
101
+ function resolveInnerType(typeStr, bigintMode) {
102
+ const parsed = parseClickHouseType(typeStr);
103
+ const scalar = mapScalarType(parsed.base, bigintMode);
104
+ if (scalar)
105
+ return { tsType: scalar, zodType: scalarToZod(scalar) };
106
+ switch (parsed.base) {
107
+ case 'Nullable': {
108
+ const arg = parsed.args[0];
109
+ if (!arg)
110
+ return null;
111
+ const inner = resolveInnerType(arg, bigintMode);
112
+ if (!inner)
113
+ return null;
114
+ return { tsType: `${inner.tsType} | null`, zodType: `${inner.zodType}.nullable()` };
115
+ }
116
+ case 'LowCardinality': {
117
+ const arg = parsed.args[0];
118
+ if (!arg)
119
+ return null;
120
+ return resolveInnerType(arg, bigintMode);
121
+ }
122
+ case 'Array': {
123
+ const arg = parsed.args[0];
124
+ if (!arg)
125
+ return null;
126
+ const inner = resolveInnerType(arg, bigintMode);
127
+ if (!inner)
128
+ return null;
129
+ const needsWrap = inner.tsType.includes('|');
130
+ const tsType = needsWrap ? `(${inner.tsType})[]` : `${inner.tsType}[]`;
131
+ return { tsType, zodType: `z.array(${inner.zodType})` };
132
+ }
133
+ case 'Map': {
134
+ const keyArg = parsed.args[0];
135
+ const valueArg = parsed.args[1];
136
+ if (!keyArg || !valueArg)
137
+ return null;
138
+ const key = resolveInnerType(keyArg, bigintMode);
139
+ const value = resolveInnerType(valueArg, bigintMode);
140
+ if (!key || !value)
141
+ return null;
142
+ return {
143
+ tsType: `Record<${key.tsType}, ${value.tsType}>`,
144
+ zodType: `z.record(${key.zodType}, ${value.zodType})`,
145
+ };
146
+ }
147
+ case 'Tuple': {
148
+ if (parsed.args.length === 0)
149
+ return null;
150
+ const elements = parsed.args.map((a) => resolveInnerType(a, bigintMode));
151
+ if (elements.some((e) => e === null))
152
+ return null;
153
+ const valid = elements;
154
+ return {
155
+ tsType: `[${valid.map((e) => e.tsType).join(', ')}]`,
156
+ zodType: `z.tuple([${valid.map((e) => e.zodType).join(', ')}])`,
157
+ };
158
+ }
159
+ case 'SimpleAggregateFunction': {
160
+ const lastArg = parsed.args[parsed.args.length - 1];
161
+ if (parsed.args.length < 2 || !lastArg)
162
+ return null;
163
+ return resolveInnerType(lastArg, bigintMode);
164
+ }
165
+ case 'JSON': {
166
+ return { tsType: 'Record<string, unknown>', zodType: 'z.record(z.string(), z.unknown())' };
167
+ }
168
+ default:
169
+ return null;
170
+ }
171
+ }
172
+ function resolveColumnType(typeStr, bigintMode) {
173
+ const parsed = parseClickHouseType(typeStr);
174
+ const firstArg = parsed.args[0];
175
+ if (parsed.base === 'LowCardinality' && firstArg) {
176
+ return resolveColumnType(firstArg, bigintMode);
177
+ }
178
+ if (parsed.base === 'Nullable' && firstArg) {
179
+ const inner = resolveColumnType(firstArg, bigintMode);
180
+ if (!inner)
181
+ return null;
182
+ return { tsType: inner.tsType, zodType: inner.zodType, nullable: true };
183
+ }
184
+ const resolved = resolveInnerType(typeStr, bigintMode);
185
+ if (!resolved)
186
+ return null;
187
+ return { tsType: resolved.tsType, zodType: resolved.zodType, nullable: false };
188
+ }
189
+ export function mapColumnType(input, options) {
190
+ const resolved = resolveColumnType(input.column.type, options.bigintMode);
191
+ const columnNullable = input.column.nullable === true;
192
+ if (!resolved) {
193
+ if (options.failOnUnsupportedType) {
194
+ throw new UnsupportedTypeError(input.path, input.column.type);
195
+ }
196
+ const unknownType = columnNullable ? 'unknown | null' : 'unknown';
197
+ return {
198
+ tsType: unknownType,
199
+ zodType: 'z.unknown()',
200
+ nullable: columnNullable,
201
+ finding: {
202
+ code: 'codegen_unsupported_type',
203
+ message: `Unsupported type "${input.column.type}" at ${input.path}; emitted unknown.`,
204
+ severity: 'warn',
205
+ path: input.path,
206
+ },
207
+ };
208
+ }
209
+ const nullable = columnNullable || resolved.nullable;
210
+ const tsType = nullable ? `${resolved.tsType} | null` : resolved.tsType;
211
+ return { tsType, zodType: resolved.zodType, nullable };
212
+ }
213
+ function renderHeader(toolVersion) {
214
+ const lines = ['// Generated by chkit codegen plugin'];
215
+ lines.push(`// chkit-codegen-version: ${toolVersion}`);
216
+ return lines;
217
+ }
218
+ function renderTableInterface(table, interfaceName, options) {
219
+ const lines = [`export interface ${interfaceName} {`];
220
+ const findings = [];
221
+ const zodFields = [];
222
+ for (const column of table.columns) {
223
+ const path = `${table.database}.${table.name}.${column.name}`;
224
+ const mapped = mapColumnType({ column, path }, options);
225
+ if (mapped.finding)
226
+ findings.push(mapped.finding);
227
+ lines.push(` ${renderPropertyName(column.name)}: ${mapped.tsType}`);
228
+ const zodExpr = mapped.nullable ? `${mapped.zodType}.nullable()` : mapped.zodType;
229
+ zodFields.push(` ${renderPropertyName(column.name)}: ${zodExpr},`);
230
+ }
231
+ lines.push('}');
232
+ if (options.emitZod) {
233
+ lines.push('');
234
+ lines.push(`export const ${interfaceName}Schema = z.object({`);
235
+ lines.push(...zodFields);
236
+ lines.push('})');
237
+ lines.push('');
238
+ lines.push(`export type ${interfaceName}Input = z.input<typeof ${interfaceName}Schema>`);
239
+ lines.push(`export type ${interfaceName}Output = z.output<typeof ${interfaceName}Schema>`);
240
+ }
241
+ return { lines, findings };
242
+ }
243
+ function renderViewInterface(definition, interfaceName) {
244
+ const kind = definition.kind === 'view' ? 'view' : 'materialized_view';
245
+ return {
246
+ lines: [
247
+ `export interface ${interfaceName} {`,
248
+ ' [key: string]: unknown',
249
+ '}',
250
+ '',
251
+ `// ${kind} ${definition.database}.${definition.name} is emitted as unknown-key row shape in v1.`,
252
+ ],
253
+ findings: [],
254
+ };
255
+ }
256
+ export function generateTypeArtifacts(input) {
257
+ const normalized = normalizeCodegenOptions(input.options);
258
+ const definitions = canonicalizeDefinitions(input.definitions);
259
+ const sortedDefinitions = definitions
260
+ .filter((definition) => {
261
+ if (definition.kind === 'table')
262
+ return true;
263
+ if (!normalized.includeViews)
264
+ return false;
265
+ return definition.kind === 'view' || definition.kind === 'materialized_view';
266
+ })
267
+ .sort((a, b) => {
268
+ if (a.database !== b.database)
269
+ return a.database.localeCompare(b.database);
270
+ return a.name.localeCompare(b.name);
271
+ });
272
+ const resolved = resolveTableNames(sortedDefinitions, normalized.tableNameStyle);
273
+ const findings = [];
274
+ const bodyLines = [];
275
+ for (const entry of resolved) {
276
+ const rendered = entry.definition.kind === 'table'
277
+ ? renderTableInterface(entry.definition, entry.interfaceName, normalized)
278
+ : renderViewInterface(entry.definition, entry.interfaceName);
279
+ findings.push(...rendered.findings);
280
+ bodyLines.push(...rendered.lines);
281
+ bodyLines.push('');
282
+ }
283
+ const header = renderHeader(input.toolVersion ?? '0.1.0');
284
+ const lines = [
285
+ ...header,
286
+ ...(normalized.emitZod ? ['', "import { z } from 'zod'"] : []),
287
+ '',
288
+ ...bodyLines,
289
+ ];
290
+ const content = `${lines.join('\n').trimEnd()}\n`;
291
+ return {
292
+ content,
293
+ outFile: normalized.outFile,
294
+ declarationCount: resolved.length,
295
+ findings,
296
+ };
297
+ }
298
+ function computeRelativeImportPath(fromFile, toFile) {
299
+ const fromDir = dirname(fromFile);
300
+ let rel = relative(fromDir, toFile);
301
+ if (!rel.startsWith('.'))
302
+ rel = `./${rel}`;
303
+ // Replace .ts extension with .js for ESM imports
304
+ return rel.replace(/\.ts$/, '.js');
305
+ }
306
+ function stripRowSuffix(name) {
307
+ if (name.endsWith('Row'))
308
+ return name.slice(0, -3);
309
+ if (name.endsWith('_row'))
310
+ return name.slice(0, -4);
311
+ return name;
312
+ }
313
+ function renderIngestFunction(table, interfaceName, emitZod) {
314
+ const funcName = `ingest${stripRowSuffix(interfaceName)}`;
315
+ const tableFqn = `${table.database}.${table.name}`;
316
+ const lines = [];
317
+ if (emitZod) {
318
+ lines.push(`export async function ${funcName}(`);
319
+ lines.push(` ingestor: Ingestor,`);
320
+ lines.push(` rows: ${interfaceName}[],`);
321
+ lines.push(` options?: { validate?: boolean }`);
322
+ lines.push(`): Promise<void> {`);
323
+ lines.push(` const data = options?.validate ? rows.map(row => ${interfaceName}Schema.parse(row)) : rows`);
324
+ lines.push(` await ingestor.insert({ table: '${tableFqn}', values: data })`);
325
+ lines.push(`}`);
326
+ }
327
+ else {
328
+ lines.push(`export async function ${funcName}(`);
329
+ lines.push(` ingestor: Ingestor,`);
330
+ lines.push(` rows: ${interfaceName}[]`);
331
+ lines.push(`): Promise<void> {`);
332
+ lines.push(` await ingestor.insert({ table: '${tableFqn}', values: rows })`);
333
+ lines.push(`}`);
334
+ }
335
+ return lines;
336
+ }
337
+ export function generateIngestArtifacts(input) {
338
+ const normalized = normalizeCodegenOptions(input.options);
339
+ const definitions = canonicalizeDefinitions(input.definitions);
340
+ const tables = definitions
341
+ .filter((definition) => definition.kind === 'table')
342
+ .sort((a, b) => {
343
+ if (a.database !== b.database)
344
+ return a.database.localeCompare(b.database);
345
+ return a.name.localeCompare(b.name);
346
+ });
347
+ const resolved = resolveTableNames(tables, normalized.tableNameStyle);
348
+ const importPath = computeRelativeImportPath(normalized.ingestOutFile, normalized.outFile);
349
+ const typeImports = [];
350
+ const valueImports = [];
351
+ for (const entry of resolved) {
352
+ typeImports.push(entry.interfaceName);
353
+ if (normalized.emitZod) {
354
+ valueImports.push(`${entry.interfaceName}Schema`);
355
+ }
356
+ }
357
+ const header = renderHeader(input.toolVersion ?? '0.1.0');
358
+ const lines = [...header, ''];
359
+ if (typeImports.length > 0) {
360
+ lines.push(`import type { ${typeImports.join(', ')} } from '${importPath}'`);
361
+ }
362
+ if (valueImports.length > 0) {
363
+ lines.push(`import { ${valueImports.join(', ')} } from '${importPath}'`);
364
+ }
365
+ lines.push('');
366
+ lines.push('export interface Ingestor {');
367
+ lines.push(' insert(params: { table: string; values: Record<string, unknown>[] }): Promise<void>');
368
+ lines.push('}');
369
+ for (const entry of resolved) {
370
+ if (entry.definition.kind !== 'table')
371
+ continue;
372
+ lines.push('');
373
+ lines.push(...renderIngestFunction(entry.definition, entry.interfaceName, normalized.emitZod));
374
+ }
375
+ const content = `${lines.join('\n').trimEnd()}\n`;
376
+ return {
377
+ content,
378
+ outFile: normalized.ingestOutFile,
379
+ functionCount: resolved.length,
380
+ };
381
+ }
382
+ //# sourceMappingURL=generators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generators.js","sourceRoot":"","sources":["../src/generators.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,109 +1,5 @@
1
- import { type ChxInlinePluginRegistration, type ColumnDefinition, type ResolvedChxConfig, type SchemaDefinition } from '@chkit/core';
2
- export interface CodegenPluginOptions {
3
- outFile?: string;
4
- emitZod?: boolean;
5
- tableNameStyle?: 'pascal' | 'camel' | 'raw';
6
- bigintMode?: 'string' | 'bigint';
7
- includeViews?: boolean;
8
- runOnGenerate?: boolean;
9
- failOnUnsupportedType?: boolean;
10
- emitIngest?: boolean;
11
- ingestOutFile?: string;
12
- }
13
- export interface CodegenPluginCommandContext {
14
- args: string[];
15
- jsonMode: boolean;
16
- options: Record<string, unknown>;
17
- config: ResolvedChxConfig;
18
- configPath: string;
19
- print: (value: unknown) => void;
20
- }
21
- export interface CodegenPlugin {
22
- manifest: {
23
- name: 'codegen';
24
- apiVersion: 1;
25
- version?: string;
26
- };
27
- commands: Array<{
28
- name: 'codegen';
29
- description: string;
30
- run: (context: CodegenPluginCommandContext) => undefined | number | Promise<undefined | number>;
31
- }>;
32
- hooks?: {
33
- onConfigLoaded?: (context: {
34
- command: string;
35
- configPath: string;
36
- options: Record<string, unknown>;
37
- }) => void;
38
- onCheck?: (context: CodegenPluginCheckContext) => CodegenPluginCheckResult | undefined | Promise<CodegenPluginCheckResult | undefined>;
39
- onCheckReport?: (context: {
40
- result: CodegenPluginCheckResult;
41
- print: (line: string) => void;
42
- }) => void | Promise<void>;
43
- };
44
- }
45
- export interface CodegenFinding {
46
- code: 'codegen_unsupported_type' | 'codegen_stale_output' | 'codegen_missing_output' | 'codegen_stale_ingest_output' | 'codegen_missing_ingest_output';
47
- message: string;
48
- severity: 'warn' | 'error';
49
- path?: string;
50
- }
51
- export interface MapColumnTypeResult {
52
- tsType: string;
53
- zodType: string;
54
- nullable: boolean;
55
- finding?: CodegenFinding;
56
- }
57
- export interface GenerateTypeArtifactsInput {
58
- definitions: SchemaDefinition[];
59
- options?: CodegenPluginOptions;
60
- now?: Date;
61
- toolVersion?: string;
62
- }
63
- export interface GenerateTypeArtifactsOutput {
64
- content: string;
65
- outFile: string;
66
- declarationCount: number;
67
- findings: CodegenFinding[];
68
- }
69
- export interface GenerateIngestArtifactsInput {
70
- definitions: SchemaDefinition[];
71
- options?: CodegenPluginOptions;
72
- toolVersion?: string;
73
- }
74
- export interface GenerateIngestArtifactsOutput {
75
- content: string;
76
- outFile: string;
77
- functionCount: number;
78
- }
79
- export interface CodegenPluginCheckContext {
80
- command: 'check';
81
- config: ResolvedChxConfig;
82
- configPath: string;
83
- jsonMode: boolean;
84
- options: Record<string, unknown>;
85
- }
86
- export type CodegenPluginRegistration = ChxInlinePluginRegistration<CodegenPlugin, CodegenPluginOptions>;
87
- export interface CodegenPluginCheckResult {
88
- plugin: string;
89
- evaluated: boolean;
90
- ok: boolean;
91
- findings: Array<{
92
- code: string;
93
- message: string;
94
- severity: 'info' | 'warn' | 'error';
95
- metadata?: Record<string, unknown>;
96
- }>;
97
- metadata?: Record<string, unknown>;
98
- }
99
- export declare function normalizeCodegenOptions(options?: CodegenPluginOptions): Required<CodegenPluginOptions>;
100
- export declare function mapColumnType(input: {
101
- column: ColumnDefinition;
102
- path: string;
103
- }, options: Pick<Required<CodegenPluginOptions>, 'bigintMode' | 'failOnUnsupportedType'>): MapColumnTypeResult;
104
- export declare function generateTypeArtifacts(input: GenerateTypeArtifactsInput): GenerateTypeArtifactsOutput;
105
- export declare function generateIngestArtifacts(input: GenerateIngestArtifactsInput): GenerateIngestArtifactsOutput;
106
- export declare function isRunOnGenerateEnabled(baseOptions: Required<CodegenPluginOptions>, runtimeOptions: Record<string, unknown>): boolean;
107
- export declare function createCodegenPlugin(options?: CodegenPluginOptions): CodegenPlugin;
108
- export declare function codegen(options?: CodegenPluginOptions): CodegenPluginRegistration;
1
+ export { createCodegenPlugin, codegen } from './plugin.js';
2
+ export { normalizeCodegenOptions, isRunOnGenerateEnabled } from './options.js';
3
+ export { mapColumnType, generateTypeArtifacts, generateIngestArtifacts } from './generators.js';
4
+ export type { CodegenPluginOptions, CodegenPluginCommandContext, CodegenPlugin, CodegenFinding, MapColumnTypeResult, GenerateTypeArtifactsInput, GenerateTypeArtifactsOutput, GenerateIngestArtifactsInput, GenerateIngestArtifactsOutput, CodegenPluginCheckContext, CodegenPluginRegistration, CodegenPluginCheckResult, } from './types.js';
109
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAC1D,OAAO,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAA;AAC9E,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAA;AAC/F,YAAY,EACV,oBAAoB,EACpB,2BAA2B,EAC3B,aAAa,EACb,cAAc,EACd,mBAAmB,EACnB,0BAA0B,EAC1B,2BAA2B,EAC3B,4BAA4B,EAC5B,6BAA6B,EAC7B,yBAAyB,EACzB,yBAAyB,EACzB,wBAAwB,GACzB,MAAM,YAAY,CAAA"}