@zenstackhq/sdk 3.0.0-alpha.9 → 3.0.0-beta.10

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/index.d.cts CHANGED
@@ -1,32 +1,28 @@
1
1
  import * as _zenstackhq_language_ast from '@zenstackhq/language/ast';
2
- import { DataModelField, DataModel, TypeDef, Enum, EnumField, FunctionDecl, Attribute, AttributeParam, TypeDefField, DataModelFieldAttribute, DataModelAttribute, AstNode, Model, Reference, InvocationExpr } from '@zenstackhq/language/ast';
2
+ import { DataField, DataModel, TypeDef, Enum, EnumField, FunctionDecl, Attribute, AttributeParam, DataFieldAttribute, DataModelAttribute, AstNode, Model, Reference, InvocationExpr } from '@zenstackhq/language/ast';
3
+ import { AttributeTarget } from '@zenstackhq/language/utils';
3
4
  import { MaybePromise } from 'langium';
4
5
 
5
- declare function isIdField(field: DataModelField): boolean;
6
- declare function hasAttribute(decl: DataModel | TypeDef | DataModelField | Enum | EnumField | FunctionDecl | Attribute | AttributeParam, name: string): boolean;
7
- declare function getAttribute(decl: DataModel | TypeDef | DataModelField | TypeDefField | Enum | EnumField | FunctionDecl | Attribute | AttributeParam, name: string): DataModelFieldAttribute | DataModelAttribute | undefined;
8
- /**
9
- * Gets `@@id` fields declared at the data model level (including search in base models)
10
- */
11
- declare function getModelIdFields(model: DataModel): DataModelField[];
12
- /**
13
- * Gets `@@unique` fields declared at the data model level (including search in base models)
14
- */
15
- declare function getModelUniqueFields(model: DataModel): DataModelField[];
16
- declare function getRecursiveBases(dataModel: DataModel, includeDelegate?: boolean, seen?: Set<DataModel>): DataModel[];
6
+ declare function isIdField(field: DataField, contextModel: DataModel): boolean;
7
+ declare function hasAttribute(decl: DataModel | TypeDef | DataField | Enum | EnumField | FunctionDecl | Attribute | AttributeParam, name: string): boolean;
8
+ declare function getAttribute(decl: AttributeTarget, name: string): DataFieldAttribute | DataModelAttribute | undefined;
17
9
  declare function isDelegateModel(node: AstNode): boolean;
18
- declare function isUniqueField(field: DataModelField): boolean;
10
+ declare function isUniqueField(field: DataField): boolean;
19
11
  declare function isFromStdlib(node: AstNode): boolean;
20
12
  declare function getContainingModel(node: AstNode | undefined): Model | null;
21
13
  declare function resolved<T extends AstNode>(ref: Reference<T>): T;
22
14
  declare function getAuthDecl(model: Model): _zenstackhq_language_ast.AbstractDeclaration | undefined;
15
+ declare function getIdFields(dm: DataModel): string[];
16
+ /**
17
+ * Prefix for auxiliary relation fields generated for delegated models
18
+ */
19
+ declare const DELEGATE_AUX_RELATION_PREFIX = "delegate_aux";
23
20
 
21
+ declare const modelUtils_DELEGATE_AUX_RELATION_PREFIX: typeof DELEGATE_AUX_RELATION_PREFIX;
24
22
  declare const modelUtils_getAttribute: typeof getAttribute;
25
23
  declare const modelUtils_getAuthDecl: typeof getAuthDecl;
26
24
  declare const modelUtils_getContainingModel: typeof getContainingModel;
27
- declare const modelUtils_getModelIdFields: typeof getModelIdFields;
28
- declare const modelUtils_getModelUniqueFields: typeof getModelUniqueFields;
29
- declare const modelUtils_getRecursiveBases: typeof getRecursiveBases;
25
+ declare const modelUtils_getIdFields: typeof getIdFields;
30
26
  declare const modelUtils_hasAttribute: typeof hasAttribute;
31
27
  declare const modelUtils_isDelegateModel: typeof isDelegateModel;
32
28
  declare const modelUtils_isFromStdlib: typeof isFromStdlib;
@@ -34,15 +30,47 @@ declare const modelUtils_isIdField: typeof isIdField;
34
30
  declare const modelUtils_isUniqueField: typeof isUniqueField;
35
31
  declare const modelUtils_resolved: typeof resolved;
36
32
  declare namespace modelUtils {
37
- export { modelUtils_getAttribute as getAttribute, modelUtils_getAuthDecl as getAuthDecl, modelUtils_getContainingModel as getContainingModel, modelUtils_getModelIdFields as getModelIdFields, modelUtils_getModelUniqueFields as getModelUniqueFields, modelUtils_getRecursiveBases as getRecursiveBases, modelUtils_hasAttribute as hasAttribute, modelUtils_isDelegateModel as isDelegateModel, modelUtils_isFromStdlib as isFromStdlib, modelUtils_isIdField as isIdField, modelUtils_isUniqueField as isUniqueField, modelUtils_resolved as resolved };
33
+ export { modelUtils_DELEGATE_AUX_RELATION_PREFIX as DELEGATE_AUX_RELATION_PREFIX, modelUtils_getAttribute as getAttribute, modelUtils_getAuthDecl as getAuthDecl, modelUtils_getContainingModel as getContainingModel, modelUtils_getIdFields as getIdFields, modelUtils_hasAttribute as hasAttribute, modelUtils_isDelegateModel as isDelegateModel, modelUtils_isFromStdlib as isFromStdlib, modelUtils_isIdField as isIdField, modelUtils_isUniqueField as isUniqueField, modelUtils_resolved as resolved };
38
34
  }
39
35
 
36
+ /**
37
+ * Context passed to CLI plugins when calling `generate`.
38
+ */
40
39
  type CliGeneratorContext = {
40
+ /**
41
+ * ZModel file path.
42
+ */
43
+ schemaFile: string;
44
+ /**
45
+ * ZModel AST.
46
+ */
41
47
  model: Model;
42
- outputPath: string;
43
- tsSchemaFile: string;
48
+ /**
49
+ * Default output path for code generation.
50
+ */
51
+ defaultOutputPath: string;
52
+ /**
53
+ * Plugin options provided by the user.
54
+ */
55
+ pluginOptions: Record<string, unknown>;
44
56
  };
45
- type CliGenerator = (context: CliGeneratorContext) => MaybePromise<void>;
57
+ /**
58
+ * Contract for a CLI plugin.
59
+ */
60
+ interface CliPlugin {
61
+ /**
62
+ * Plugin's display name.
63
+ */
64
+ name: string;
65
+ /**
66
+ * Text to show during generation.
67
+ */
68
+ statusText?: string;
69
+ /**
70
+ * Code generation callback.
71
+ */
72
+ generate(context: CliGeneratorContext): MaybePromise<void>;
73
+ }
46
74
 
47
75
  declare class FunctionCall {
48
76
  func: string;
@@ -62,6 +90,7 @@ declare class FunctionCallArg {
62
90
  declare class PrismaSchemaGenerator {
63
91
  private readonly zmodel;
64
92
  private readonly PRELUDE;
93
+ private shortNameMap;
65
94
  constructor(zmodel: Model);
66
95
  generate(): Promise<string>;
67
96
  private generateDataSource;
@@ -71,13 +100,12 @@ declare class PrismaSchemaGenerator {
71
100
  private literalToText;
72
101
  private generateGenerator;
73
102
  private generateModel;
103
+ private isInheritedMapAttribute;
74
104
  private isPrismaAttribute;
75
105
  private getUnsupportedFieldType;
76
106
  private getStringLiteral;
77
107
  private generateModelField;
78
- private isDefaultWithPluginInvocation;
79
- private isFromPlugin;
80
- private setDummyDefault;
108
+ private isDefaultWithAuthInvocation;
81
109
  private isInheritedFromDelegate;
82
110
  private makeFieldAttribute;
83
111
  private makeAttributeArg;
@@ -87,21 +115,29 @@ declare class PrismaSchemaGenerator {
87
115
  private generateContainerAttribute;
88
116
  private generateEnum;
89
117
  private generateEnumField;
118
+ private generateDelegateRelationForBase;
119
+ private generateDelegateRelationForConcrete;
120
+ private getConcreteModels;
121
+ private truncate;
90
122
  }
91
123
 
92
124
  declare class TsSchemaGenerator {
93
- generate(schemaFile: string, pluginModelFiles: string[], outputFile: string): Promise<{
94
- model: Model;
95
- warnings: string[];
96
- }>;
125
+ private usedExpressionUtils;
126
+ generate(model: Model, outputDir: string): Promise<void>;
127
+ private generateSchema;
97
128
  private generateSchemaStatements;
129
+ private createExpressionUtilsCall;
98
130
  private createSchemaObject;
99
131
  private createProviderObject;
100
132
  private createModelsObject;
133
+ private createTypeDefsObject;
101
134
  private createDataModelObject;
135
+ private getSubModels;
136
+ private createTypeDefObject;
102
137
  private createComputedFieldsObject;
103
138
  private mapFieldTypeToTSType;
104
- private createDataModelFieldObject;
139
+ private createDataFieldObject;
140
+ private isDiscriminatorField;
105
141
  private getDataSourceProvider;
106
142
  private getFieldMappedDefault;
107
143
  private getMappedValue;
@@ -113,8 +149,8 @@ declare class TsSchemaGenerator {
113
149
  private getForeignKeyFor;
114
150
  private getOppositeRelationField;
115
151
  private getRelationName;
116
- private getIdFields;
117
152
  private createUniqueFieldsObject;
153
+ private getCompoundUniqueKey;
118
154
  private generateFieldTypeLiteral;
119
155
  private createEnumObject;
120
156
  private getLiteral;
@@ -134,6 +170,10 @@ declare class TsSchemaGenerator {
134
170
  private createRefExpression;
135
171
  private createCallExpression;
136
172
  private createLiteralExpression;
173
+ private generateModelsAndTypeDefs;
174
+ private generateSchemaImport;
175
+ private generateDocs;
176
+ private generateInputTypes;
137
177
  }
138
178
 
139
179
  /**
@@ -166,10 +206,10 @@ declare class ZModelCodeGenerator {
166
206
  private _generatePlugin;
167
207
  private _generatePluginField;
168
208
  private _generateDataModel;
169
- private _generateDataModelField;
209
+ private _generateDataField;
170
210
  private fieldType;
171
211
  private _generateDataModelAttribute;
172
- private _generateDataModelFieldAttribute;
212
+ private _generateDataFieldAttribute;
173
213
  private attribute;
174
214
  private _generateAttributeArg;
175
215
  private _generateObjectExpr;
@@ -193,7 +233,6 @@ declare class ZModelCodeGenerator {
193
233
  private _generateFunctionParam;
194
234
  private _generateFunctionParamType;
195
235
  private _generateTypeDef;
196
- private _generateTypeDefField;
197
236
  private argument;
198
237
  private get binaryExprSpace();
199
238
  private get unaryExprSpace();
@@ -202,4 +241,4 @@ declare class ZModelCodeGenerator {
202
241
  private isCollectionPredicateOperator;
203
242
  }
204
243
 
205
- export { type CliGenerator, type CliGeneratorContext, modelUtils as ModelUtils, PrismaSchemaGenerator, TsSchemaGenerator, ZModelCodeGenerator, type ZModelCodeOptions };
244
+ export { type CliGeneratorContext, type CliPlugin, modelUtils as ModelUtils, PrismaSchemaGenerator, TsSchemaGenerator, ZModelCodeGenerator, type ZModelCodeOptions };
package/dist/index.d.ts CHANGED
@@ -1,32 +1,28 @@
1
1
  import * as _zenstackhq_language_ast from '@zenstackhq/language/ast';
2
- import { DataModelField, DataModel, TypeDef, Enum, EnumField, FunctionDecl, Attribute, AttributeParam, TypeDefField, DataModelFieldAttribute, DataModelAttribute, AstNode, Model, Reference, InvocationExpr } from '@zenstackhq/language/ast';
2
+ import { DataField, DataModel, TypeDef, Enum, EnumField, FunctionDecl, Attribute, AttributeParam, DataFieldAttribute, DataModelAttribute, AstNode, Model, Reference, InvocationExpr } from '@zenstackhq/language/ast';
3
+ import { AttributeTarget } from '@zenstackhq/language/utils';
3
4
  import { MaybePromise } from 'langium';
4
5
 
5
- declare function isIdField(field: DataModelField): boolean;
6
- declare function hasAttribute(decl: DataModel | TypeDef | DataModelField | Enum | EnumField | FunctionDecl | Attribute | AttributeParam, name: string): boolean;
7
- declare function getAttribute(decl: DataModel | TypeDef | DataModelField | TypeDefField | Enum | EnumField | FunctionDecl | Attribute | AttributeParam, name: string): DataModelFieldAttribute | DataModelAttribute | undefined;
8
- /**
9
- * Gets `@@id` fields declared at the data model level (including search in base models)
10
- */
11
- declare function getModelIdFields(model: DataModel): DataModelField[];
12
- /**
13
- * Gets `@@unique` fields declared at the data model level (including search in base models)
14
- */
15
- declare function getModelUniqueFields(model: DataModel): DataModelField[];
16
- declare function getRecursiveBases(dataModel: DataModel, includeDelegate?: boolean, seen?: Set<DataModel>): DataModel[];
6
+ declare function isIdField(field: DataField, contextModel: DataModel): boolean;
7
+ declare function hasAttribute(decl: DataModel | TypeDef | DataField | Enum | EnumField | FunctionDecl | Attribute | AttributeParam, name: string): boolean;
8
+ declare function getAttribute(decl: AttributeTarget, name: string): DataFieldAttribute | DataModelAttribute | undefined;
17
9
  declare function isDelegateModel(node: AstNode): boolean;
18
- declare function isUniqueField(field: DataModelField): boolean;
10
+ declare function isUniqueField(field: DataField): boolean;
19
11
  declare function isFromStdlib(node: AstNode): boolean;
20
12
  declare function getContainingModel(node: AstNode | undefined): Model | null;
21
13
  declare function resolved<T extends AstNode>(ref: Reference<T>): T;
22
14
  declare function getAuthDecl(model: Model): _zenstackhq_language_ast.AbstractDeclaration | undefined;
15
+ declare function getIdFields(dm: DataModel): string[];
16
+ /**
17
+ * Prefix for auxiliary relation fields generated for delegated models
18
+ */
19
+ declare const DELEGATE_AUX_RELATION_PREFIX = "delegate_aux";
23
20
 
21
+ declare const modelUtils_DELEGATE_AUX_RELATION_PREFIX: typeof DELEGATE_AUX_RELATION_PREFIX;
24
22
  declare const modelUtils_getAttribute: typeof getAttribute;
25
23
  declare const modelUtils_getAuthDecl: typeof getAuthDecl;
26
24
  declare const modelUtils_getContainingModel: typeof getContainingModel;
27
- declare const modelUtils_getModelIdFields: typeof getModelIdFields;
28
- declare const modelUtils_getModelUniqueFields: typeof getModelUniqueFields;
29
- declare const modelUtils_getRecursiveBases: typeof getRecursiveBases;
25
+ declare const modelUtils_getIdFields: typeof getIdFields;
30
26
  declare const modelUtils_hasAttribute: typeof hasAttribute;
31
27
  declare const modelUtils_isDelegateModel: typeof isDelegateModel;
32
28
  declare const modelUtils_isFromStdlib: typeof isFromStdlib;
@@ -34,15 +30,47 @@ declare const modelUtils_isIdField: typeof isIdField;
34
30
  declare const modelUtils_isUniqueField: typeof isUniqueField;
35
31
  declare const modelUtils_resolved: typeof resolved;
36
32
  declare namespace modelUtils {
37
- export { modelUtils_getAttribute as getAttribute, modelUtils_getAuthDecl as getAuthDecl, modelUtils_getContainingModel as getContainingModel, modelUtils_getModelIdFields as getModelIdFields, modelUtils_getModelUniqueFields as getModelUniqueFields, modelUtils_getRecursiveBases as getRecursiveBases, modelUtils_hasAttribute as hasAttribute, modelUtils_isDelegateModel as isDelegateModel, modelUtils_isFromStdlib as isFromStdlib, modelUtils_isIdField as isIdField, modelUtils_isUniqueField as isUniqueField, modelUtils_resolved as resolved };
33
+ export { modelUtils_DELEGATE_AUX_RELATION_PREFIX as DELEGATE_AUX_RELATION_PREFIX, modelUtils_getAttribute as getAttribute, modelUtils_getAuthDecl as getAuthDecl, modelUtils_getContainingModel as getContainingModel, modelUtils_getIdFields as getIdFields, modelUtils_hasAttribute as hasAttribute, modelUtils_isDelegateModel as isDelegateModel, modelUtils_isFromStdlib as isFromStdlib, modelUtils_isIdField as isIdField, modelUtils_isUniqueField as isUniqueField, modelUtils_resolved as resolved };
38
34
  }
39
35
 
36
+ /**
37
+ * Context passed to CLI plugins when calling `generate`.
38
+ */
40
39
  type CliGeneratorContext = {
40
+ /**
41
+ * ZModel file path.
42
+ */
43
+ schemaFile: string;
44
+ /**
45
+ * ZModel AST.
46
+ */
41
47
  model: Model;
42
- outputPath: string;
43
- tsSchemaFile: string;
48
+ /**
49
+ * Default output path for code generation.
50
+ */
51
+ defaultOutputPath: string;
52
+ /**
53
+ * Plugin options provided by the user.
54
+ */
55
+ pluginOptions: Record<string, unknown>;
44
56
  };
45
- type CliGenerator = (context: CliGeneratorContext) => MaybePromise<void>;
57
+ /**
58
+ * Contract for a CLI plugin.
59
+ */
60
+ interface CliPlugin {
61
+ /**
62
+ * Plugin's display name.
63
+ */
64
+ name: string;
65
+ /**
66
+ * Text to show during generation.
67
+ */
68
+ statusText?: string;
69
+ /**
70
+ * Code generation callback.
71
+ */
72
+ generate(context: CliGeneratorContext): MaybePromise<void>;
73
+ }
46
74
 
47
75
  declare class FunctionCall {
48
76
  func: string;
@@ -62,6 +90,7 @@ declare class FunctionCallArg {
62
90
  declare class PrismaSchemaGenerator {
63
91
  private readonly zmodel;
64
92
  private readonly PRELUDE;
93
+ private shortNameMap;
65
94
  constructor(zmodel: Model);
66
95
  generate(): Promise<string>;
67
96
  private generateDataSource;
@@ -71,13 +100,12 @@ declare class PrismaSchemaGenerator {
71
100
  private literalToText;
72
101
  private generateGenerator;
73
102
  private generateModel;
103
+ private isInheritedMapAttribute;
74
104
  private isPrismaAttribute;
75
105
  private getUnsupportedFieldType;
76
106
  private getStringLiteral;
77
107
  private generateModelField;
78
- private isDefaultWithPluginInvocation;
79
- private isFromPlugin;
80
- private setDummyDefault;
108
+ private isDefaultWithAuthInvocation;
81
109
  private isInheritedFromDelegate;
82
110
  private makeFieldAttribute;
83
111
  private makeAttributeArg;
@@ -87,21 +115,29 @@ declare class PrismaSchemaGenerator {
87
115
  private generateContainerAttribute;
88
116
  private generateEnum;
89
117
  private generateEnumField;
118
+ private generateDelegateRelationForBase;
119
+ private generateDelegateRelationForConcrete;
120
+ private getConcreteModels;
121
+ private truncate;
90
122
  }
91
123
 
92
124
  declare class TsSchemaGenerator {
93
- generate(schemaFile: string, pluginModelFiles: string[], outputFile: string): Promise<{
94
- model: Model;
95
- warnings: string[];
96
- }>;
125
+ private usedExpressionUtils;
126
+ generate(model: Model, outputDir: string): Promise<void>;
127
+ private generateSchema;
97
128
  private generateSchemaStatements;
129
+ private createExpressionUtilsCall;
98
130
  private createSchemaObject;
99
131
  private createProviderObject;
100
132
  private createModelsObject;
133
+ private createTypeDefsObject;
101
134
  private createDataModelObject;
135
+ private getSubModels;
136
+ private createTypeDefObject;
102
137
  private createComputedFieldsObject;
103
138
  private mapFieldTypeToTSType;
104
- private createDataModelFieldObject;
139
+ private createDataFieldObject;
140
+ private isDiscriminatorField;
105
141
  private getDataSourceProvider;
106
142
  private getFieldMappedDefault;
107
143
  private getMappedValue;
@@ -113,8 +149,8 @@ declare class TsSchemaGenerator {
113
149
  private getForeignKeyFor;
114
150
  private getOppositeRelationField;
115
151
  private getRelationName;
116
- private getIdFields;
117
152
  private createUniqueFieldsObject;
153
+ private getCompoundUniqueKey;
118
154
  private generateFieldTypeLiteral;
119
155
  private createEnumObject;
120
156
  private getLiteral;
@@ -134,6 +170,10 @@ declare class TsSchemaGenerator {
134
170
  private createRefExpression;
135
171
  private createCallExpression;
136
172
  private createLiteralExpression;
173
+ private generateModelsAndTypeDefs;
174
+ private generateSchemaImport;
175
+ private generateDocs;
176
+ private generateInputTypes;
137
177
  }
138
178
 
139
179
  /**
@@ -166,10 +206,10 @@ declare class ZModelCodeGenerator {
166
206
  private _generatePlugin;
167
207
  private _generatePluginField;
168
208
  private _generateDataModel;
169
- private _generateDataModelField;
209
+ private _generateDataField;
170
210
  private fieldType;
171
211
  private _generateDataModelAttribute;
172
- private _generateDataModelFieldAttribute;
212
+ private _generateDataFieldAttribute;
173
213
  private attribute;
174
214
  private _generateAttributeArg;
175
215
  private _generateObjectExpr;
@@ -193,7 +233,6 @@ declare class ZModelCodeGenerator {
193
233
  private _generateFunctionParam;
194
234
  private _generateFunctionParamType;
195
235
  private _generateTypeDef;
196
- private _generateTypeDefField;
197
236
  private argument;
198
237
  private get binaryExprSpace();
199
238
  private get unaryExprSpace();
@@ -202,4 +241,4 @@ declare class ZModelCodeGenerator {
202
241
  private isCollectionPredicateOperator;
203
242
  }
204
243
 
205
- export { type CliGenerator, type CliGeneratorContext, modelUtils as ModelUtils, PrismaSchemaGenerator, TsSchemaGenerator, ZModelCodeGenerator, type ZModelCodeOptions };
244
+ export { type CliGeneratorContext, type CliPlugin, modelUtils as ModelUtils, PrismaSchemaGenerator, TsSchemaGenerator, ZModelCodeGenerator, type ZModelCodeOptions };