@lakeql/file-generator 0.2.0 → 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/dist/ast-builders.d.mts +33 -35
- package/dist/config-registry.d.mts +3 -6
- package/dist/config-registry.mjs +1 -1
- package/dist/config.d.mts +16 -19
- package/dist/config.mjs +1 -1
- package/dist/index.d.mts +2 -5
- package/dist/index.mjs +2 -2
- package/dist/interface.d.mts +2 -5
- package/dist/query-schema.d.mts +2 -5
- package/dist/query-schema.mjs +1 -1
- package/package.json +18 -15
package/dist/ast-builders.d.mts
CHANGED
|
@@ -1,47 +1,45 @@
|
|
|
1
1
|
import ts from "typescript";
|
|
2
|
-
//#region src/ast-builders.d.ts
|
|
3
2
|
type TypeLike = string | ts.TypeNode;
|
|
4
|
-
declare function id(name: string): ts.Identifier;
|
|
5
|
-
declare function stringLiteral(value: string): ts.StringLiteral;
|
|
6
|
-
declare function typeRef(name: string, typeArguments?: ts.TypeNode[]): ts.TypeReferenceNode;
|
|
7
|
-
declare function property(name: string, initializer: ts.Expression): ts.PropertyAssignment;
|
|
8
|
-
declare function shorthand(name: string): ts.ShorthandPropertyAssignment;
|
|
9
|
-
declare function objectLiteral(properties: ts.ObjectLiteralElementLike[], multiline?: boolean): ts.ObjectLiteralExpression;
|
|
10
|
-
declare function arrayLiteral(elements: ts.Expression[], multiline?: boolean): ts.ArrayLiteralExpression;
|
|
11
|
-
declare function asConst(expression: ts.Expression): ts.AsExpression;
|
|
12
|
-
declare function access(target: ts.Expression | string, propertyName: string): ts.PropertyAccessExpression;
|
|
13
|
-
declare function call(expression: ts.Expression, args?: ts.Expression[], typeArguments?: ts.TypeNode[]): ts.CallExpression;
|
|
14
|
-
declare function methodCall(target: ts.Expression | string, methodName: string, args?: ts.Expression[], typeArguments?: ts.TypeNode[]): ts.CallExpression;
|
|
15
|
-
declare function parameter(name: string): ts.ParameterDeclaration;
|
|
16
|
-
declare function arrowFunction(parameters: (string | ts.ParameterDeclaration)[], body: ts.ConciseBody, options?: {
|
|
3
|
+
export declare function id(name: string): ts.Identifier;
|
|
4
|
+
export declare function stringLiteral(value: string): ts.StringLiteral;
|
|
5
|
+
export declare function typeRef(name: string, typeArguments?: ts.TypeNode[]): ts.TypeReferenceNode;
|
|
6
|
+
export declare function property(name: string, initializer: ts.Expression): ts.PropertyAssignment;
|
|
7
|
+
export declare function shorthand(name: string): ts.ShorthandPropertyAssignment;
|
|
8
|
+
export declare function objectLiteral(properties: ts.ObjectLiteralElementLike[], multiline?: boolean): ts.ObjectLiteralExpression;
|
|
9
|
+
export declare function arrayLiteral(elements: ts.Expression[], multiline?: boolean): ts.ArrayLiteralExpression;
|
|
10
|
+
export declare function asConst(expression: ts.Expression): ts.AsExpression;
|
|
11
|
+
export declare function access(target: ts.Expression | string, propertyName: string): ts.PropertyAccessExpression;
|
|
12
|
+
export declare function call(expression: ts.Expression, args?: ts.Expression[], typeArguments?: ts.TypeNode[]): ts.CallExpression;
|
|
13
|
+
export declare function methodCall(target: ts.Expression | string, methodName: string, args?: ts.Expression[], typeArguments?: ts.TypeNode[]): ts.CallExpression;
|
|
14
|
+
export declare function parameter(name: string): ts.ParameterDeclaration;
|
|
15
|
+
export declare function arrowFunction(parameters: (string | ts.ParameterDeclaration)[], body: ts.ConciseBody, options?: {
|
|
17
16
|
async?: boolean;
|
|
18
17
|
}): ts.ArrowFunction;
|
|
19
|
-
declare function parenthesized(expression: ts.Expression): ts.ParenthesizedExpression;
|
|
20
|
-
declare function fieldsFunction(properties: ts.ObjectLiteralElementLike[], multiline?: boolean): ts.ArrowFunction;
|
|
21
|
-
declare function bool(value: boolean): ts.Expression;
|
|
22
|
-
declare function nullLiteral(): ts.NullLiteral;
|
|
23
|
-
declare function expressionStatement(expression: ts.Expression): ts.ExpressionStatement;
|
|
24
|
-
declare function implement(target: ts.Expression | string, properties: ts.ObjectLiteralElementLike[]): ts.CallExpression;
|
|
25
|
-
declare function builderCall(methodName: string, args?: ts.Expression[], typeArguments?: ts.TypeNode[]): ts.CallExpression;
|
|
26
|
-
declare function builderInputRef(name: string): ts.CallExpression;
|
|
27
|
-
declare function builderObjectRef(name: string, typeArguments?: ts.TypeNode[]): ts.CallExpression;
|
|
28
|
-
declare function tField(properties: ts.ObjectLiteralElementLike[]): ts.CallExpression;
|
|
29
|
-
declare function tArg(properties: ts.ObjectLiteralElementLike[]): ts.CallExpression;
|
|
30
|
-
declare function tExpose(name: string, properties: ts.ObjectLiteralElementLike[]): ts.CallExpression;
|
|
31
|
-
declare function constStatement(name: string, initializer: ts.Expression): ts.VariableStatement;
|
|
32
|
-
declare function exportedConstStatement(name: string, initializer: ts.Expression): ts.VariableStatement;
|
|
33
|
-
declare function propertySignature(name: string, type: TypeLike, options?: {
|
|
18
|
+
export declare function parenthesized(expression: ts.Expression): ts.ParenthesizedExpression;
|
|
19
|
+
export declare function fieldsFunction(properties: ts.ObjectLiteralElementLike[], multiline?: boolean): ts.ArrowFunction;
|
|
20
|
+
export declare function bool(value: boolean): ts.Expression;
|
|
21
|
+
export declare function nullLiteral(): ts.NullLiteral;
|
|
22
|
+
export declare function expressionStatement(expression: ts.Expression): ts.ExpressionStatement;
|
|
23
|
+
export declare function implement(target: ts.Expression | string, properties: ts.ObjectLiteralElementLike[]): ts.CallExpression;
|
|
24
|
+
export declare function builderCall(methodName: string, args?: ts.Expression[], typeArguments?: ts.TypeNode[]): ts.CallExpression;
|
|
25
|
+
export declare function builderInputRef(name: string): ts.CallExpression;
|
|
26
|
+
export declare function builderObjectRef(name: string, typeArguments?: ts.TypeNode[]): ts.CallExpression;
|
|
27
|
+
export declare function tField(properties: ts.ObjectLiteralElementLike[]): ts.CallExpression;
|
|
28
|
+
export declare function tArg(properties: ts.ObjectLiteralElementLike[]): ts.CallExpression;
|
|
29
|
+
export declare function tExpose(name: string, properties: ts.ObjectLiteralElementLike[]): ts.CallExpression;
|
|
30
|
+
export declare function constStatement(name: string, initializer: ts.Expression): ts.VariableStatement;
|
|
31
|
+
export declare function exportedConstStatement(name: string, initializer: ts.Expression): ts.VariableStatement;
|
|
32
|
+
export declare function propertySignature(name: string, type: TypeLike, options?: {
|
|
34
33
|
optional?: boolean;
|
|
35
34
|
}): ts.PropertySignature;
|
|
36
|
-
declare function exportedInterface(name: string, members: ts.TypeElement[]): ts.InterfaceDeclaration;
|
|
37
|
-
declare function importNames(moduleName: string, names: string[], options?: {
|
|
35
|
+
export declare function exportedInterface(name: string, members: ts.TypeElement[]): ts.InterfaceDeclaration;
|
|
36
|
+
export declare function importNames(moduleName: string, names: string[], options?: {
|
|
38
37
|
typeOnly?: boolean;
|
|
39
38
|
}): ts.ImportDeclaration;
|
|
40
|
-
declare function importDefault(moduleName: string, defaultName: string, options?: {
|
|
39
|
+
export declare function importDefault(moduleName: string, defaultName: string, options?: {
|
|
41
40
|
typeOnly?: boolean;
|
|
42
41
|
}): ts.ImportDeclaration;
|
|
43
|
-
declare function importDefaultAndNames(moduleName: string, defaultName: string | undefined, names: string[], options?: {
|
|
42
|
+
export declare function importDefaultAndNames(moduleName: string, defaultName: string | undefined, names: string[], options?: {
|
|
44
43
|
typeOnly?: boolean;
|
|
45
44
|
}): ts.ImportDeclaration;
|
|
46
|
-
|
|
47
|
-
export { access, arrayLiteral, arrowFunction, asConst, bool, builderCall, builderInputRef, builderObjectRef, call, constStatement, exportedConstStatement, exportedInterface, expressionStatement, fieldsFunction, id, implement, importDefault, importDefaultAndNames, importNames, methodCall, nullLiteral, objectLiteral, parameter, parenthesized, property, propertySignature, shorthand, stringLiteral, tArg, tExpose, tField, typeRef };
|
|
45
|
+
export {};
|
|
@@ -1,15 +1,12 @@
|
|
|
1
1
|
import ts from "typescript";
|
|
2
|
-
//#region src/config-registry.d.ts
|
|
3
2
|
/**
|
|
4
|
-
* Parameters for
|
|
3
|
+
* Parameters for generateConfigRegistry.
|
|
5
4
|
*/
|
|
6
|
-
interface
|
|
5
|
+
export interface GenerateConfigRegistryProps {
|
|
7
6
|
/** Relative paths to individual table config modules. */
|
|
8
7
|
configPaths: string[];
|
|
9
8
|
}
|
|
10
9
|
/**
|
|
11
10
|
* Generates the config registry aggregating all table configs.
|
|
12
11
|
*/
|
|
13
|
-
declare function
|
|
14
|
-
//#endregion
|
|
15
|
-
export { GenerateConfigReqistryProps, generateConfigReqistry };
|
|
12
|
+
export declare function generateConfigRegistry({ configPaths }: GenerateConfigRegistryProps): (ts.ImportDeclaration | ts.VariableStatement | ts.TypeAliasDeclaration)[];
|
package/dist/config-registry.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import e from"typescript";function t({configPaths:t}){let{factory:n}=e;return[...t.map((e,t)=>n.createImportDeclaration(void 0,n.createImportClause(!1,void 0,n.createNamedImports([n.createImportSpecifier(!1,n.createIdentifier(`
|
|
1
|
+
import e from"typescript";function t({configPaths:t}){let{factory:n}=e;return[...t.map((e,t)=>n.createImportDeclaration(void 0,n.createImportClause(!1,void 0,n.createNamedImports([n.createImportSpecifier(!1,n.createIdentifier(`sourceConfig`),n.createIdentifier(`config_${t}`))])),n.createStringLiteral(`./${e}`))),n.createVariableStatement([n.createToken(e.SyntaxKind.ExportKeyword)],n.createVariableDeclarationList([n.createVariableDeclaration(n.createIdentifier(`allConfigs`),void 0,void 0,n.createAsExpression(n.createArrayLiteralExpression(t.map((e,t)=>n.createIdentifier(`config_${t}`)),!0),n.createTypeReferenceNode(n.createIdentifier(`const`))))],e.NodeFlags.Const)),n.createTypeAliasDeclaration([n.createToken(e.SyntaxKind.ExportKeyword)],n.createIdentifier(`AvailableDataSources`),void 0,n.createIndexedAccessTypeNode(n.createIndexedAccessTypeNode(n.createParenthesizedType(n.createTypeQueryNode(n.createIdentifier(`allConfigs`))),n.createKeywordTypeNode(e.SyntaxKind.NumberKeyword)),n.createLiteralTypeNode(n.createStringLiteral(`dataSource`)))),n.createTypeAliasDeclaration([n.createToken(e.SyntaxKind.ExportKeyword)],n.createIdentifier(`AvailableAdapters`),void 0,n.createIndexedAccessTypeNode(n.createIndexedAccessTypeNode(n.createParenthesizedType(n.createTypeQueryNode(n.createIdentifier(`allConfigs`))),n.createKeywordTypeNode(e.SyntaxKind.NumberKeyword)),n.createLiteralTypeNode(n.createStringLiteral(`adapter`)))),n.createTypeAliasDeclaration([n.createToken(e.SyntaxKind.ExportKeyword)],n.createIdentifier(`AvailableTables`),void 0,n.createIndexedAccessTypeNode(n.createIndexedAccessTypeNode(n.createParenthesizedType(n.createTypeQueryNode(n.createIdentifier(`allConfigs`))),n.createKeywordTypeNode(e.SyntaxKind.NumberKeyword)),n.createLiteralTypeNode(n.createStringLiteral(`tableName`)))),n.createTypeAliasDeclaration([n.createToken(e.SyntaxKind.ExportKeyword)],n.createIdentifier(`TablesForDataSource`),[n.createTypeParameterDeclaration(void 0,n.createIdentifier(`DS`),n.createTypeReferenceNode(n.createIdentifier(`AvailableDataSources`)))],n.createIndexedAccessTypeNode(n.createTypeReferenceNode(n.createIdentifier(`Extract`),[n.createIndexedAccessTypeNode(n.createParenthesizedType(n.createTypeQueryNode(n.createIdentifier(`allConfigs`))),n.createKeywordTypeNode(e.SyntaxKind.NumberKeyword)),n.createTypeLiteralNode([n.createPropertySignature(void 0,n.createIdentifier(`dataSource`),void 0,n.createTypeReferenceNode(n.createIdentifier(`DS`)))])]),n.createLiteralTypeNode(n.createStringLiteral(`tableName`))))]}export{t as generateConfigRegistry};
|
package/dist/config.d.mts
CHANGED
|
@@ -1,21 +1,15 @@
|
|
|
1
1
|
import ts from "typescript";
|
|
2
|
-
|
|
2
|
+
import { AdapterName } from "@lakeql/datasource";
|
|
3
3
|
/**
|
|
4
4
|
* Storage configuration for the mutation write pipeline.
|
|
5
|
+
* Only contains per-endpoint concerns — infrastructure fields (bucket, type, region, endpoint)
|
|
6
|
+
* are now part of the DataSource storage config.
|
|
5
7
|
*/
|
|
6
|
-
interface StorageConfigProps {
|
|
8
|
+
export interface StorageConfigProps {
|
|
7
9
|
/** The load strategy for the write pipeline. */
|
|
8
10
|
loadStrategy: string;
|
|
9
|
-
/** Storage adapter type (s3 or minio). */
|
|
10
|
-
type?: string;
|
|
11
|
-
/** Bucket name. */
|
|
12
|
-
bucket: string;
|
|
13
11
|
/** Base path for endpoint data. */
|
|
14
12
|
basePath: string;
|
|
15
|
-
/** Optional region override. */
|
|
16
|
-
region?: string;
|
|
17
|
-
/** Optional custom endpoint. */
|
|
18
|
-
endpoint?: string;
|
|
19
13
|
/** Partitioning mode (true, false, or field name string). */
|
|
20
14
|
partitioning?: boolean | string;
|
|
21
15
|
/** Partition format granularity. */
|
|
@@ -24,12 +18,16 @@ interface StorageConfigProps {
|
|
|
24
18
|
/**
|
|
25
19
|
* Parameters for generateConfig.
|
|
26
20
|
*/
|
|
27
|
-
interface GenerateConfigProps {
|
|
28
|
-
/** The
|
|
29
|
-
|
|
30
|
-
/** The
|
|
31
|
-
|
|
32
|
-
/** The
|
|
21
|
+
export interface GenerateConfigProps {
|
|
22
|
+
/** The adapter type for this endpoint. */
|
|
23
|
+
adapter: AdapterName;
|
|
24
|
+
/** The DataSource name referencing a configured DataSource. */
|
|
25
|
+
dataSourceName: string;
|
|
26
|
+
/** The catalog name. */
|
|
27
|
+
catalog?: string;
|
|
28
|
+
/** The schema name. */
|
|
29
|
+
schema?: string;
|
|
30
|
+
/** The table name. */
|
|
33
31
|
tableName: string;
|
|
34
32
|
/** The GraphQL query name for this table. */
|
|
35
33
|
queryName: string;
|
|
@@ -40,7 +38,6 @@ interface GenerateConfigProps {
|
|
|
40
38
|
}
|
|
41
39
|
/**
|
|
42
40
|
* Generates config.ts AST nodes for a table endpoint.
|
|
41
|
+
* Outputs a `sourceConfig` discriminated union (replaces `hiveConfig`).
|
|
43
42
|
*/
|
|
44
|
-
declare function generateConfig(
|
|
45
|
-
//#endregion
|
|
46
|
-
export { GenerateConfigProps, StorageConfigProps, generateConfig };
|
|
43
|
+
export declare function generateConfig(props: GenerateConfigProps): ts.Node[];
|
package/dist/config.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{asConst as e,exportedConstStatement as t,objectLiteral as n,property as r,stringLiteral as i}from"./ast-builders.mjs";import a from"typescript";function o({
|
|
1
|
+
import{asConst as e,exportedConstStatement as t,objectLiteral as n,property as r,stringLiteral as i}from"./ast-builders.mjs";import a from"typescript";function o(e){let{adapter:t,dataSourceName:n,tableName:a}=e,o=[r(`dataSource`,i(n)),r(`adapter`,i(t))];if(!e.catalog||!e.schema)throw Error(`${t} adapter requires catalog and schema in generateConfig`);return[...o,r(`catalog`,i(e.catalog)),r(`schema`,i(e.schema)),r(`tableName`,i(a))]}function s(s){let{queryName:c,mutationName:l,storageConfig:u}=s,d=[t(`sourceConfig`,e(n(o(s)))),t(`docsConfig`,n([r(`query`,a.factory.createTrue()),r(`mutation`,l?.length?a.factory.createTrue():a.factory.createFalse()),r(`queryName`,i(c)),r(`mutationName`,l?.length?a.factory.createArrayLiteralExpression(l.map(e=>i(e)),!1):a.factory.createNull())]))];if(u){let o=[r(`loadStrategy`,i(u.loadStrategy)),r(`basePath`,i(u.basePath))];u.partitioning!==void 0&&(typeof u.partitioning==`boolean`?o.push(r(`partitioning`,u.partitioning?a.factory.createTrue():a.factory.createFalse())):o.push(r(`partitioning`,i(u.partitioning)))),u.partitioningFormat&&o.push(r(`partitioningFormat`,i(u.partitioningFormat)));let s=t(`storageConfig`,e(n(o)));d.push(s)}return d}export{s as generateConfig};
|
package/dist/index.d.mts
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import ts from "typescript";
|
|
2
|
-
//#region src/index.d.ts
|
|
3
2
|
/**
|
|
4
3
|
* Parameters for generateCode.
|
|
5
4
|
*/
|
|
6
|
-
interface GenerateCodeProps {
|
|
5
|
+
export interface GenerateCodeProps {
|
|
7
6
|
/** The output file name for the generated source. */
|
|
8
7
|
fileName: string;
|
|
9
8
|
/** The TypeScript AST nodes to print and format. */
|
|
@@ -12,6 +11,4 @@ interface GenerateCodeProps {
|
|
|
12
11
|
/**
|
|
13
12
|
* Generates formatted TypeScript source from AST nodes.
|
|
14
13
|
*/
|
|
15
|
-
declare function generateCode({ fileName, nodes }: GenerateCodeProps): Promise<ts.SourceFile>;
|
|
16
|
-
//#endregion
|
|
17
|
-
export { GenerateCodeProps, generateCode };
|
|
14
|
+
export declare function generateCode({ fileName, nodes }: GenerateCodeProps): Promise<ts.SourceFile>;
|
package/dist/index.mjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import e from"typescript";import t from"@lakeql/helpers/format-code";async function n({fileName:n,nodes:r}){let i=e.createPrinter({newLine:e.NewLineKind.LineFeed,omitTrailingSemicolon:!0}),a=e.createSourceFile(n,``,e.ScriptTarget.Latest,!1,e.ScriptKind.TS),o=
|
|
1
|
+
import e from"typescript";import t from"@lakeql/helpers/format-code";async function n({fileName:n,nodes:r}){let i=e.createPrinter({newLine:e.NewLineKind.LineFeed,omitTrailingSemicolon:!0}),a=e.createSourceFile(n,``,e.ScriptTarget.Latest,!1,e.ScriptKind.TS),o=r.map(t=>i.printNode(e.EmitHint.Unspecified,t,a)).join(`
|
|
2
2
|
|
|
3
|
-
`));return e.createSourceFile(n,
|
|
3
|
+
`),s=await t(o);return e.createSourceFile(n,s,e.ScriptTarget.Latest,!1,e.ScriptKind.TS)}export{n as generateCode};
|
package/dist/interface.d.mts
CHANGED
|
@@ -1,7 +1,4 @@
|
|
|
1
1
|
import ts from "typescript";
|
|
2
2
|
import { ModelResponse } from "@lakeql/schema-generator/graphql-schema";
|
|
3
|
-
|
|
4
|
-
declare function
|
|
5
|
-
declare function generateTableDefinition(model: ModelResponse): (ts.Identifier | ts.InterfaceDeclaration)[];
|
|
6
|
-
//#endregion
|
|
7
|
-
export { generateInterface, generateTableDefinition };
|
|
3
|
+
export declare function generateInterface(models: Record<string, ModelResponse>): (ts.Identifier | ts.InterfaceDeclaration)[];
|
|
4
|
+
export declare function generateTableDefinition(model: ModelResponse): (ts.Identifier | ts.InterfaceDeclaration)[];
|
package/dist/query-schema.d.mts
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import ts from "typescript";
|
|
2
2
|
import { FilterFieldInput, ModelResponse } from "@lakeql/schema-generator/graphql-schema";
|
|
3
|
-
//#region src/query-schema.d.ts
|
|
4
3
|
/**
|
|
5
4
|
* Parameters for generateQuerySchema.
|
|
6
5
|
*/
|
|
7
|
-
interface GenerateQuerySchemaProps {
|
|
6
|
+
export interface GenerateQuerySchemaProps {
|
|
8
7
|
/** The model definitions keyed by model name. */
|
|
9
8
|
models: Record<string, ModelResponse>;
|
|
10
9
|
/** The GraphQL query name for this table. */
|
|
@@ -21,6 +20,4 @@ interface GenerateQuerySchemaProps {
|
|
|
21
20
|
/**
|
|
22
21
|
* Generates the Pothos query schema AST for a table.
|
|
23
22
|
*/
|
|
24
|
-
declare function generateQuerySchema({ models, queryName, transformFields, filterFields, filterTypes, dateTimeFields }: GenerateQuerySchemaProps): ts.Node[];
|
|
25
|
-
//#endregion
|
|
26
|
-
export { GenerateQuerySchemaProps, generateQuerySchema };
|
|
23
|
+
export declare function generateQuerySchema({ models, queryName, transformFields, filterFields, filterTypes, dateTimeFields }: GenerateQuerySchemaProps): ts.Node[];
|
package/dist/query-schema.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{access as e,arrayLiteral as t,arrowFunction as n,asConst as r,bool as i,builderCall as a,builderInputRef as o,builderObjectRef as s,constStatement as c,expressionStatement as l,fieldsFunction as u,id as d,implement as f,importDefault as p,importNames as m,objectLiteral as h,parameter as g,property as _,shorthand as v,stringLiteral as y,tArg as b,tExpose as x,tField as S,typeRef as C}from"./ast-builders.mjs";import w from"typescript";function T({models:e,queryName:t,transformFields:n,filterFields:r,filterTypes:i,dateTimeFields:a}){let o=Object.values(e).find(e=>e.root);if(!o)throw Error(`generateQuerySchema requires exactly one root model`);return[...D({filterTypes:i,models:e}),...O({filterFields:r,rootModel:o}),...M({filterFields:r,rootModel:o}),...N({rootModel:o}),...P({models:e,rootModel:o}),...F({models:e}),...I({transformFields:n}),...L({dateTimeFields:a}),...
|
|
1
|
+
import{access as e,arrayLiteral as t,arrowFunction as n,asConst as r,bool as i,builderCall as a,builderInputRef as o,builderObjectRef as s,constStatement as c,expressionStatement as l,fieldsFunction as u,id as d,implement as f,importDefault as p,importNames as m,objectLiteral as h,parameter as g,property as _,shorthand as v,stringLiteral as y,tArg as b,tExpose as x,tField as S,typeRef as C}from"./ast-builders.mjs";import w from"typescript";function T({models:e,queryName:t,transformFields:n,filterFields:r,filterTypes:i,dateTimeFields:a}){let o=Object.values(e).find(e=>e.root);if(!o)throw Error(`generateQuerySchema requires exactly one root model`);return[...D({filterTypes:i,models:e}),...O({filterFields:r,rootModel:o}),...M({filterFields:r,rootModel:o}),...N({rootModel:o}),...P({models:e,rootModel:o}),...F({models:e}),...I({transformFields:n}),...L({dateTimeFields:a}),...W({queryName:t,nodeInterfaceName:o.interfaceName})]}function E(e){switch(e.type){case`String`:return`StringFieldComparison`;case`Int`:return`IntFieldComparison`;case`Float`:return`FloatFieldComparison`;case`Boolean`:return`BooleanFieldComparison`;case`Date`:return`DateFieldComparison`;case`DateTime`:return`DateTimeFieldComparison`;case`ID`:return`IDFieldComparison`;default:return e.type}}function D({models:e,filterTypes:t}){return[m(`@lakeql/api/types`,[`ConnectionInterface`],{typeOnly:!0}),m(`@lakeql/api/builder`,[`builder`,...t.map(e=>`${e}FieldComparison`),`PageInfo`,`Paging`,`SortDirection`]),m(`@lakeql/api/helpers`,[`handleErrorResponse`]),m(`@lakeql/query-builder`,[`getSelectFields`]),m(`./interface`,Object.values(e).map(e=>e.interfaceName),{typeOnly:!0}),m(`./config`,[`sourceConfig`]),p(`./json-schema.json`,`jsonSchema`)]}function O({rootModel:e,filterFields:n}){return[c(`FilterInput`,f(o(`${e.modelName}FilterInput`),[_(`fields`,u([...n.map(e=>_(e.name,S([_(`type`,d(E(e)))]))),_(`and`,S([_(`type`,t([d(`FilterInput`)]))])),_(`or`,S([_(`type`,t([d(`FilterInput`)]))]))]))]))]}function k(e,t){return _(e,S([_(`type`,d(t)),_(`required`,i(!0))]))}function A(e,t,n=[]){return _(e,x(e,[_(`type`,t),...n]))}function j(e){return[_(`fields`,u(e))]}function M({rootModel:e,filterFields:n}){return[c(`SortFields`,a(`enumType`,[y(`${e.modelName}SortFields`),h([_(`values`,r(t(n.map(e=>y(e.name)),!0)))])]))]}function N({rootModel:e}){return[c(`SortingInput`,f(o(`${e.modelName}SortOrder`),j([k(`field`,`SortFields`),k(`direction`,`SortDirection`)])))]}function P({rootModel:e,models:n}){return[...Object.values(n).map(e=>c(e.modelName,s(e.modelName,[C(e.interfaceName)]))),c(`Connection`,s(`${e.modelName}Connection`,[C(`ConnectionInterface`,[C(e.interfaceName)])])),l(f(`Connection`,j([A(`totalCount`,y(`Int`)),A(`pageInfo`,d(`PageInfo`)),A(`nodes`,t([d(e.modelName)]),[_(`nullable`,i(!1))])])))]}function F({models:e}){return Object.values(e).toReversed().map(e=>{let t=Object.values(e.fields).map(e=>{let t=A(e.name,d(e.graphqlTplType),[_(`nullable`,i(!0))]);return(e.graphqlType===`DateTime`||e.graphqlType===`Date`)&&(w.addSyntheticLeadingComment(t.initializer,w.SyntaxKind.SingleLineCommentTrivia,` @ts-expect-error not sure why, but it doesn't get the type`,!0),w.addSyntheticLeadingComment(t.initializer,w.SyntaxKind.SingleLineCommentTrivia,` GH Issue: https://github.com/hayes/pothos/issues/1277`,!0)),t});return l(f(e.modelName,j(t)))})}function I({transformFields:e}){let t=/* @__PURE__ */ new Map;for(let n of e){let[e,r]=n;if(e===void 0||r===void 0)continue;let i=t.get(e);if(i!==void 0&&i!==r)throw Error(`Conflicting transform field mapping for "${e}": "${i}" vs "${r}".`);t.set(e,r)}return[w.factory.createVariableStatement(void 0,w.factory.createVariableDeclarationList([w.factory.createVariableDeclaration(w.factory.createIdentifier(`transformFields`),void 0,w.factory.createTypeReferenceNode(`Record`,[w.factory.createKeywordTypeNode(w.SyntaxKind.StringKeyword),w.factory.createKeywordTypeNode(w.SyntaxKind.StringKeyword)]),h([...t.entries()].map(([e,t])=>_(e,y(t)))))],w.NodeFlags.Const))]}function L({dateTimeFields:e}){return[w.factory.createVariableStatement(void 0,w.factory.createVariableDeclarationList([w.factory.createVariableDeclaration(w.factory.createIdentifier(`dateFields`),void 0,w.factory.createArrayTypeNode(w.factory.createKeywordTypeNode(w.SyntaxKind.StringKeyword)),t(e.map(e=>y(e))))],w.NodeFlags.Const))]}function R(e,t,n){return _(e,b([_(`type`,t),_(`required`,i(n))]))}function z(t,n){return w.factory.createBinaryExpression(w.factory.createPropertyAccessChain(e(`args`,`paging`),w.factory.createToken(w.SyntaxKind.QuestionDotToken),d(t)),w.factory.createToken(w.SyntaxKind.QuestionQuestionToken),w.factory.createNumericLiteral(n))}function B(){return h([_(`dataSource`,e(`sourceConfig`,`dataSource`)),_(`tableName`,e(`sourceConfig`,`tableName`)),_(`catalog`,e(`sourceConfig`,`catalog`)),_(`schema`,e(`sourceConfig`,`schema`))])}function V(){return h([_(`authorized`,i(!0)),_(`readPermission`,B())])}function H(t){let r=w.factory.createVariableStatement(void 0,w.factory.createVariableDeclarationList([w.factory.createVariableDeclaration(d(`readStrategy`),void 0,void 0,w.factory.createCallExpression(e(d(`context`),`getReadStrategy`),void 0,[e(`sourceConfig`,`dataSource`)]))],w.NodeFlags.Const)),a=w.factory.createReturnStatement(w.factory.createAwaitExpression(w.factory.createCallExpression(e(d(`readStrategy`),`read`),[C(t)],[h([v(`sourceConfig`),_(`selectFields`,w.factory.createCallExpression(d(`getSelectFields`),void 0,[h([_(`graphqlInfo`,d(`info`)),_(`withNodes`,i(!0))],!1)])),_(`filter`,w.factory.createBinaryExpression(e(`args`,`filter`),w.factory.createToken(w.SyntaxKind.QuestionQuestionToken),h([],!1))),_(`paging`,h([_(`page`,z(`page`,`1`)),_(`perPage`,w.factory.createPropertyAccessChain(e(`args`,`paging`),w.factory.createToken(w.SyntaxKind.QuestionDotToken),d(`perPage`)))],!1)),_(`sorting`,e(`args`,`sorting`)),v(`transformFields`),v(`dateFields`),_(`schema`,d(`jsonSchema`)),v(`context`)])]))),o=w.factory.createTryStatement(w.factory.createBlock([a],!0),w.factory.createCatchClause(w.factory.createVariableDeclaration(d(`error`)),w.factory.createBlock([w.factory.createReturnStatement(w.factory.createCallExpression(d(`handleErrorResponse`),void 0,[d(`error`)]))],!0)),void 0);return n([g(`_parent`),g(`args`),g(`context`),g(`info`)],w.factory.createBlock([r,o],!0),{async:!0})}function U(e,n){return _(e,S([_(`type`,d(`Connection`)),_(`args`,h([R(`filter`,d(`FilterInput`),!1),R(`paging`,d(`Paging`),!1),R(`sorting`,t([d(`SortingInput`)]),!0)])),_(`authScopes`,V()),_(`resolve`,H(n))]))}function W({queryName:e,nodeInterfaceName:t}){return[a(`queryFields`,[u([U(e,t)])])]}export{T as generateQuerySchema};
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lakeql/file-generator",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "Generates TypeScript source files from
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Generates TypeScript source files from data source table metadata",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ast",
|
|
7
7
|
"codegen",
|
|
@@ -37,6 +37,10 @@
|
|
|
37
37
|
"types": "./dist/index.d.mts",
|
|
38
38
|
"import": "./dist/index.mjs"
|
|
39
39
|
},
|
|
40
|
+
"./ast-builders": {
|
|
41
|
+
"types": "./dist/ast-builders.d.mts",
|
|
42
|
+
"import": "./dist/ast-builders.mjs"
|
|
43
|
+
},
|
|
40
44
|
"./config": {
|
|
41
45
|
"types": "./dist/config.d.mts",
|
|
42
46
|
"import": "./dist/config.mjs"
|
|
@@ -49,28 +53,27 @@
|
|
|
49
53
|
"types": "./dist/interface.d.mts",
|
|
50
54
|
"import": "./dist/interface.mjs"
|
|
51
55
|
},
|
|
52
|
-
"./mutation-schema": {
|
|
53
|
-
"types": "./dist/mutation-schema.d.mts",
|
|
54
|
-
"import": "./dist/mutation-schema.mjs"
|
|
55
|
-
},
|
|
56
56
|
"./query-schema": {
|
|
57
57
|
"types": "./dist/query-schema.d.mts",
|
|
58
58
|
"import": "./dist/query-schema.mjs"
|
|
59
59
|
}
|
|
60
60
|
},
|
|
61
61
|
"dependencies": {
|
|
62
|
-
"
|
|
63
|
-
"@lakeql/
|
|
64
|
-
"@lakeql/
|
|
62
|
+
"@ianvs/prettier-plugin-sort-imports": "4.7.1",
|
|
63
|
+
"@lakeql/datasource": "1.0.0",
|
|
64
|
+
"@lakeql/helpers": "1.0.0",
|
|
65
|
+
"@lakeql/schema-generator": "1.0.0",
|
|
66
|
+
"prettier": "3.9.10",
|
|
67
|
+
"typescript": "6.0.3"
|
|
65
68
|
},
|
|
66
69
|
"devDependencies": {
|
|
70
|
+
"@lakeql/column-parser": "1.0.0",
|
|
71
|
+
"@lakeql/tsconfig": "0.1.0",
|
|
72
|
+
"@lakeql/vitest-config": "0.1.0",
|
|
67
73
|
"@types/json-schema": "7.0.15",
|
|
68
|
-
"@types/node": "24.
|
|
69
|
-
"
|
|
70
|
-
"
|
|
71
|
-
"vitest": "4.1.10",
|
|
72
|
-
"@lakeql/column-parser": "0.1.6",
|
|
73
|
-
"@lakeql/tsconfig": "0.1.0"
|
|
74
|
+
"@types/node": "24.19.2",
|
|
75
|
+
"tsdown": "0.23.7",
|
|
76
|
+
"vitest": "5.1.0"
|
|
74
77
|
},
|
|
75
78
|
"scripts": {
|
|
76
79
|
"build": "tsdown",
|