zenstack 1.10.0 → 2.0.0-alpha.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 +29 -1
- package/cli/cli-util.d.ts +1 -1
- package/cli/cli-util.js +20 -2
- package/cli/cli-util.js.map +1 -1
- package/cli/index.js +0 -3
- package/cli/index.js.map +1 -1
- package/cli/plugin-runner.d.ts +4 -2
- package/cli/plugin-runner.js +128 -90
- package/cli/plugin-runner.js.map +1 -1
- package/language-server/validator/datamodel-validator.js +26 -19
- package/language-server/validator/datamodel-validator.js.map +1 -1
- package/language-server/validator/datasource-validator.js +1 -1
- package/language-server/validator/datasource-validator.js.map +1 -1
- package/language-server/validator/enum-validator.js +1 -1
- package/language-server/validator/enum-validator.js.map +1 -1
- package/language-server/validator/expression-validator.js +12 -6
- package/language-server/validator/expression-validator.js.map +1 -1
- package/language-server/validator/function-invocation-validator.js +1 -2
- package/language-server/validator/function-invocation-validator.js.map +1 -1
- package/language-server/validator/schema-validator.js +1 -1
- package/language-server/validator/schema-validator.js.map +1 -1
- package/language-server/validator/utils.d.ts +1 -1
- package/language-server/validator/utils.js +3 -3
- package/language-server/validator/utils.js.map +1 -1
- package/language-server/zmodel-code-action.js +4 -3
- package/language-server/zmodel-code-action.js.map +1 -1
- package/language-server/zmodel-completion-provider.js +2 -2
- package/language-server/zmodel-completion-provider.js.map +1 -1
- package/language-server/zmodel-linker.d.ts +0 -1
- package/language-server/zmodel-linker.js +9 -67
- package/language-server/zmodel-linker.js.map +1 -1
- package/language-server/zmodel-scope.d.ts +5 -3
- package/language-server/zmodel-scope.js +117 -68
- package/language-server/zmodel-scope.js.map +1 -1
- package/package.json +6 -6
- package/plugins/enhancer/enhance/index.d.ts +7 -0
- package/plugins/enhancer/enhance/index.js +336 -0
- package/plugins/enhancer/enhance/index.js.map +1 -0
- package/plugins/enhancer/enhancer-utils.d.ts +5 -0
- package/plugins/enhancer/enhancer-utils.js +22 -0
- package/plugins/enhancer/enhancer-utils.js.map +1 -0
- package/plugins/enhancer/index.d.ts +5 -0
- package/plugins/enhancer/index.js +51 -0
- package/plugins/enhancer/index.js.map +1 -0
- package/plugins/enhancer/model-meta/index.d.ts +4 -0
- package/plugins/enhancer/model-meta/index.js +32 -0
- package/plugins/enhancer/model-meta/index.js.map +1 -0
- package/plugins/{access-policy → enhancer/policy}/expression-writer.d.ts +3 -0
- package/plugins/{access-policy → enhancer/policy}/expression-writer.js +97 -47
- package/plugins/enhancer/policy/expression-writer.js.map +1 -0
- package/plugins/enhancer/policy/index.d.ts +4 -0
- package/plugins/{access-policy → enhancer/policy}/index.js +8 -10
- package/plugins/enhancer/policy/index.js.map +1 -0
- package/plugins/{access-policy → enhancer/policy}/policy-guard-generator.d.ts +4 -4
- package/plugins/{access-policy → enhancer/policy}/policy-guard-generator.js +26 -66
- package/plugins/enhancer/policy/policy-guard-generator.js.map +1 -0
- package/plugins/plugin-utils.d.ts +8 -0
- package/plugins/plugin-utils.js +17 -9
- package/plugins/plugin-utils.js.map +1 -1
- package/plugins/prisma/index.d.ts +2 -0
- package/plugins/prisma/index.js +91 -3
- package/plugins/prisma/index.js.map +1 -1
- package/plugins/prisma/prisma-builder.d.ts +1 -1
- package/plugins/prisma/prisma-builder.js +7 -2
- package/plugins/prisma/prisma-builder.js.map +1 -1
- package/plugins/prisma/schema-generator.d.ts +10 -4
- package/plugins/prisma/schema-generator.js +178 -70
- package/plugins/prisma/schema-generator.js.map +1 -1
- package/plugins/zod/generator.d.ts +21 -1
- package/plugins/zod/generator.js +364 -352
- package/plugins/zod/generator.js.map +1 -1
- package/plugins/zod/index.d.ts +1 -0
- package/plugins/zod/index.js +4 -2
- package/plugins/zod/index.js.map +1 -1
- package/plugins/zod/transformer.d.ts +7 -5
- package/plugins/zod/transformer.js +18 -14
- package/plugins/zod/transformer.js.map +1 -1
- package/plugins/zod/types.d.ts +0 -2
- package/plugins/zod/utils/schema-gen.js +2 -3
- package/plugins/zod/utils/schema-gen.js.map +1 -1
- package/res/stdlib.zmodel +7 -2
- package/telemetry.d.ts +1 -1
- package/telemetry.js +1 -1
- package/telemetry.js.map +1 -1
- package/utils/ast-utils.d.ts +5 -2
- package/utils/ast-utils.js +63 -24
- package/utils/ast-utils.js.map +1 -1
- package/utils/exec-utils.d.ts +7 -3
- package/utils/exec-utils.js +18 -6
- package/utils/exec-utils.js.map +1 -1
- package/plugins/access-policy/expression-writer.js.map +0 -1
- package/plugins/access-policy/index.d.ts +0 -4
- package/plugins/access-policy/index.js.map +0 -1
- package/plugins/access-policy/policy-guard-generator.js.map +0 -1
- package/plugins/model-meta/index.d.ts +0 -4
- package/plugins/model-meta/index.js +0 -46
- package/plugins/model-meta/index.js.map +0 -1
- package/utils/typescript-expression-transformer.d.ts +0 -56
- package/utils/typescript-expression-transformer.js +0 -338
- package/utils/typescript-expression-transformer.js.map +0 -1
|
@@ -0,0 +1,336 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.generate = void 0;
|
|
16
|
+
const runtime_1 = require("@zenstackhq/runtime");
|
|
17
|
+
const sdk_1 = require("@zenstackhq/sdk");
|
|
18
|
+
const ast_1 = require("@zenstackhq/sdk/ast");
|
|
19
|
+
const fs_1 = __importDefault(require("fs"));
|
|
20
|
+
const path_1 = __importDefault(require("path"));
|
|
21
|
+
const ts_morph_1 = require("ts-morph");
|
|
22
|
+
const __1 = require("..");
|
|
23
|
+
const exec_utils_1 = require("../../../utils/exec-utils");
|
|
24
|
+
const prisma_1 = require("../../prisma");
|
|
25
|
+
const schema_generator_1 = require("../../prisma/schema-generator");
|
|
26
|
+
const enhancer_utils_1 = require("../enhancer-utils");
|
|
27
|
+
function generate(model, options, project, outDir) {
|
|
28
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
29
|
+
let logicalPrismaClientDir;
|
|
30
|
+
let dmmf;
|
|
31
|
+
if (needsLogicalClient(model)) {
|
|
32
|
+
// schema contains delegate models, need to generate a logical prisma schema
|
|
33
|
+
const result = yield generateLogicalPrisma(model, options, outDir);
|
|
34
|
+
logicalPrismaClientDir = './.logical-prisma-client';
|
|
35
|
+
dmmf = result.dmmf;
|
|
36
|
+
// create a reexport of the logical prisma client
|
|
37
|
+
const prismaDts = project.createSourceFile(path_1.default.join(outDir, 'prisma.d.ts'), `export type * from '${logicalPrismaClientDir}/index-fixed';`, { overwrite: true });
|
|
38
|
+
yield saveSourceFile(prismaDts, options);
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
// just reexport the prisma client
|
|
42
|
+
const prismaDts = project.createSourceFile(path_1.default.join(outDir, 'prisma.d.ts'), `export type * from '${(0, sdk_1.getPrismaClientImportSpec)(outDir, options)}';`, { overwrite: true });
|
|
43
|
+
yield saveSourceFile(prismaDts, options);
|
|
44
|
+
}
|
|
45
|
+
const enhanceTs = project.createSourceFile(path_1.default.join(outDir, 'enhance.ts'), `import { createEnhancement, type EnhancementContext, type EnhancementOptions, type ZodSchemas } from '@zenstackhq/runtime';
|
|
46
|
+
import modelMeta from './model-meta';
|
|
47
|
+
import policy from './policy';
|
|
48
|
+
${options.withZodSchemas ? "import * as zodSchemas from './zod';" : 'const zodSchemas = undefined;'}
|
|
49
|
+
import { Prisma } from '${(0, sdk_1.getPrismaClientImportSpec)(outDir, options)}';
|
|
50
|
+
${logicalPrismaClientDir ? `import { type PrismaClient } from '${logicalPrismaClientDir}/index-fixed';` : ``}
|
|
51
|
+
|
|
52
|
+
export function enhance<DbClient extends object>(prisma: DbClient, context?: EnhancementContext, options?: EnhancementOptions) {
|
|
53
|
+
return createEnhancement(prisma, {
|
|
54
|
+
modelMeta,
|
|
55
|
+
policy,
|
|
56
|
+
zodSchemas: zodSchemas as unknown as (ZodSchemas | undefined),
|
|
57
|
+
prismaModule: Prisma,
|
|
58
|
+
...options
|
|
59
|
+
}, context)${logicalPrismaClientDir ? ' as PrismaClient' : ''};
|
|
60
|
+
}
|
|
61
|
+
`, { overwrite: true });
|
|
62
|
+
yield saveSourceFile(enhanceTs, options);
|
|
63
|
+
return { dmmf };
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
exports.generate = generate;
|
|
67
|
+
function needsLogicalClient(model) {
|
|
68
|
+
return hasDelegateModel(model) || hasAuthInDefault(model);
|
|
69
|
+
}
|
|
70
|
+
function hasDelegateModel(model) {
|
|
71
|
+
const dataModels = (0, sdk_1.getDataModels)(model);
|
|
72
|
+
return dataModels.some((dm) => (0, sdk_1.isDelegateModel)(dm) && dataModels.some((sub) => sub.superTypes.some((base) => base.ref === dm)));
|
|
73
|
+
}
|
|
74
|
+
function hasAuthInDefault(model) {
|
|
75
|
+
return (0, sdk_1.getDataModels)(model).some((dm) => dm.fields.some((f) => f.attributes.some((attr) => (0, enhancer_utils_1.isDefaultWithAuth)(attr))));
|
|
76
|
+
}
|
|
77
|
+
function generateLogicalPrisma(model, options, outDir) {
|
|
78
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
79
|
+
const prismaGenerator = new schema_generator_1.PrismaSchemaGenerator(model);
|
|
80
|
+
const prismaClientOutDir = './.logical-prisma-client';
|
|
81
|
+
const logicalPrismaFile = path_1.default.join(outDir, 'logical.prisma');
|
|
82
|
+
yield prismaGenerator.generate({
|
|
83
|
+
provider: '@internal', // doesn't matter
|
|
84
|
+
schemaPath: options.schemaPath,
|
|
85
|
+
output: logicalPrismaFile,
|
|
86
|
+
overrideClientGenerationPath: prismaClientOutDir,
|
|
87
|
+
mode: 'logical',
|
|
88
|
+
});
|
|
89
|
+
// generate the prisma client
|
|
90
|
+
const generateCmd = `prisma generate --schema "${logicalPrismaFile}" --no-engine`;
|
|
91
|
+
try {
|
|
92
|
+
// run 'prisma generate'
|
|
93
|
+
yield (0, exec_utils_1.execPackage)(generateCmd, { stdio: 'ignore' });
|
|
94
|
+
}
|
|
95
|
+
catch (_a) {
|
|
96
|
+
yield (0, prisma_1.trackPrismaSchemaError)(logicalPrismaFile);
|
|
97
|
+
try {
|
|
98
|
+
// run 'prisma generate' again with output to the console
|
|
99
|
+
yield (0, exec_utils_1.execPackage)(generateCmd);
|
|
100
|
+
}
|
|
101
|
+
catch (_b) {
|
|
102
|
+
// noop
|
|
103
|
+
}
|
|
104
|
+
throw new sdk_1.PluginError(__1.name, `Failed to run "prisma generate"`);
|
|
105
|
+
}
|
|
106
|
+
// make a bunch of typing fixes to the generated prisma client
|
|
107
|
+
yield processClientTypes(model, path_1.default.join(outDir, prismaClientOutDir));
|
|
108
|
+
return {
|
|
109
|
+
prismaSchema: logicalPrismaFile,
|
|
110
|
+
// load the dmmf of the logical prisma schema
|
|
111
|
+
dmmf: yield (0, sdk_1.getDMMF)({ datamodel: fs_1.default.readFileSync(logicalPrismaFile, { encoding: 'utf-8' }) }),
|
|
112
|
+
};
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
function processClientTypes(model, prismaClientDir) {
|
|
116
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
117
|
+
// make necessary updates to the generated `index.d.ts` file and save it as `index-fixed.d.ts`
|
|
118
|
+
const project = new ts_morph_1.Project();
|
|
119
|
+
const sf = project.addSourceFileAtPath(path_1.default.join(prismaClientDir, 'index.d.ts'));
|
|
120
|
+
// build a map of delegate models and their sub models
|
|
121
|
+
const delegateInfo = [];
|
|
122
|
+
model.declarations
|
|
123
|
+
.filter((d) => (0, sdk_1.isDelegateModel)(d))
|
|
124
|
+
.forEach((dm) => {
|
|
125
|
+
delegateInfo.push([
|
|
126
|
+
dm,
|
|
127
|
+
model.declarations.filter((d) => (0, ast_1.isDataModel)(d) && d.superTypes.some((s) => s.ref === dm)),
|
|
128
|
+
]);
|
|
129
|
+
});
|
|
130
|
+
const sfNew = project.createSourceFile(path_1.default.join(prismaClientDir, 'index-fixed.d.ts'), undefined, {
|
|
131
|
+
overwrite: true,
|
|
132
|
+
});
|
|
133
|
+
if (delegateInfo.length > 0) {
|
|
134
|
+
// transform types for delegated models
|
|
135
|
+
transformDelegate(sf, sfNew, delegateInfo);
|
|
136
|
+
sfNew.formatText();
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
// just copy
|
|
140
|
+
sfNew.replaceWithText(sf.getFullText());
|
|
141
|
+
}
|
|
142
|
+
yield sfNew.save();
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
function transformDelegate(sf, sfNew, delegateModels) {
|
|
146
|
+
// copy toplevel imports
|
|
147
|
+
sfNew.addImportDeclarations(sf.getImportDeclarations().map((n) => n.getStructure()));
|
|
148
|
+
// copy toplevel import equals
|
|
149
|
+
sfNew.addStatements(sf.getChildrenOfKind(ts_morph_1.SyntaxKind.ImportEqualsDeclaration).map((n) => n.getFullText()));
|
|
150
|
+
// copy toplevel exports
|
|
151
|
+
sfNew.addExportAssignments(sf.getExportAssignments().map((n) => n.getStructure()));
|
|
152
|
+
// copy toplevel type aliases
|
|
153
|
+
sfNew.addTypeAliases(sf.getTypeAliases().map((n) => n.getStructure()));
|
|
154
|
+
// copy toplevel classes
|
|
155
|
+
sfNew.addClasses(sf.getClasses().map((n) => n.getStructure()));
|
|
156
|
+
// copy toplevel variables
|
|
157
|
+
sfNew.addVariableStatements(sf.getVariableStatements().map((n) => n.getStructure()));
|
|
158
|
+
// copy toplevel namespaces except for `Prisma`
|
|
159
|
+
sfNew.addModules(sf
|
|
160
|
+
.getModules()
|
|
161
|
+
.filter((n) => n.getName() !== 'Prisma')
|
|
162
|
+
.map((n) => n.getStructure()));
|
|
163
|
+
// transform the `Prisma` namespace
|
|
164
|
+
const prismaModule = sf.getModuleOrThrow('Prisma');
|
|
165
|
+
const newPrismaModule = sfNew.addModule({ name: 'Prisma', isExported: true });
|
|
166
|
+
transformPrismaModule(prismaModule, newPrismaModule, delegateModels);
|
|
167
|
+
}
|
|
168
|
+
function transformPrismaModule(prismaModule, newPrismaModule, delegateInfo) {
|
|
169
|
+
// module block is the direct container of declarations inside a namespace
|
|
170
|
+
const moduleBlock = prismaModule.getFirstChildByKindOrThrow(ts_morph_1.SyntaxKind.ModuleBlock);
|
|
171
|
+
// most of the toplevel constructs should be copied over
|
|
172
|
+
// here we use ts-morph batch operations for optimal performance
|
|
173
|
+
// copy imports
|
|
174
|
+
newPrismaModule.addStatements(moduleBlock.getChildrenOfKind(ts_morph_1.SyntaxKind.ImportEqualsDeclaration).map((n) => n.getFullText()));
|
|
175
|
+
// copy classes
|
|
176
|
+
newPrismaModule.addClasses(moduleBlock.getClasses().map((n) => n.getStructure()));
|
|
177
|
+
// copy functions
|
|
178
|
+
newPrismaModule.addFunctions(moduleBlock.getFunctions().map((n) => n.getStructure()));
|
|
179
|
+
// copy nested namespaces
|
|
180
|
+
newPrismaModule.addModules(moduleBlock.getModules().map((n) => n.getStructure()));
|
|
181
|
+
// transform variables
|
|
182
|
+
const newVariables = moduleBlock.getVariableStatements().map((variable) => transformVariableStatement(variable));
|
|
183
|
+
newPrismaModule.addVariableStatements(newVariables);
|
|
184
|
+
// transform interfaces
|
|
185
|
+
const newInterfaces = moduleBlock.getInterfaces().map((iface) => transformInterface(iface, delegateInfo));
|
|
186
|
+
newPrismaModule.addInterfaces(newInterfaces);
|
|
187
|
+
// transform type aliases
|
|
188
|
+
const newTypeAliases = moduleBlock.getTypeAliases().map((typeAlias) => transformTypeAlias(typeAlias, delegateInfo));
|
|
189
|
+
newPrismaModule.addTypeAliases(newTypeAliases);
|
|
190
|
+
}
|
|
191
|
+
function transformVariableStatement(variable) {
|
|
192
|
+
const structure = variable.getStructure();
|
|
193
|
+
// remove `delegate_aux_*` fields from the variable's typing
|
|
194
|
+
const auxFields = findAuxDecls(variable);
|
|
195
|
+
if (auxFields.length > 0) {
|
|
196
|
+
structure.declarations.forEach((variable) => {
|
|
197
|
+
var _a;
|
|
198
|
+
let source = (_a = variable.type) === null || _a === void 0 ? void 0 : _a.toString();
|
|
199
|
+
auxFields.forEach((f) => {
|
|
200
|
+
source = source === null || source === void 0 ? void 0 : source.replace(f.getText(), '');
|
|
201
|
+
});
|
|
202
|
+
variable.type = source;
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
return structure;
|
|
206
|
+
}
|
|
207
|
+
function transformInterface(iface, delegateInfo) {
|
|
208
|
+
var _a, _b, _c;
|
|
209
|
+
const structure = iface.getStructure();
|
|
210
|
+
// filter out aux fields
|
|
211
|
+
structure.properties = (_a = structure.properties) === null || _a === void 0 ? void 0 : _a.filter((p) => !p.name.startsWith(runtime_1.DELEGATE_AUX_RELATION_PREFIX));
|
|
212
|
+
// filter out aux methods
|
|
213
|
+
structure.methods = (_b = structure.methods) === null || _b === void 0 ? void 0 : _b.filter((m) => !m.name.startsWith(runtime_1.DELEGATE_AUX_RELATION_PREFIX));
|
|
214
|
+
if (delegateInfo.some(([delegate]) => `${delegate.name}Delegate` === iface.getName())) {
|
|
215
|
+
// delegate models cannot be created directly, remove create/createMany/upsert
|
|
216
|
+
structure.methods = (_c = structure.methods) === null || _c === void 0 ? void 0 : _c.filter((m) => !['create', 'createMany', 'upsert'].includes(m.name));
|
|
217
|
+
}
|
|
218
|
+
return structure;
|
|
219
|
+
}
|
|
220
|
+
function transformTypeAlias(typeAlias, delegateInfo) {
|
|
221
|
+
const structure = typeAlias.getStructure();
|
|
222
|
+
let source = structure.type;
|
|
223
|
+
// remove aux fields
|
|
224
|
+
source = removeAuxFieldsFromTypeAlias(typeAlias, source);
|
|
225
|
+
// remove discriminator field from concrete input types
|
|
226
|
+
source = removeDiscriminatorFromConcreteInput(typeAlias, delegateInfo, source);
|
|
227
|
+
// remove create/connectOrCreate/upsert fields from delegate's input types
|
|
228
|
+
source = removeCreateFromDelegateInput(typeAlias, delegateInfo, source);
|
|
229
|
+
// fix delegate payload union type
|
|
230
|
+
source = fixDelegatePayloadType(typeAlias, delegateInfo, source);
|
|
231
|
+
structure.type = source;
|
|
232
|
+
return structure;
|
|
233
|
+
}
|
|
234
|
+
function fixDelegatePayloadType(typeAlias, delegateInfo, source) {
|
|
235
|
+
// change the type of `$<DelegateModel>Payload` type of delegate model to a union of concrete types
|
|
236
|
+
const typeName = typeAlias.getName();
|
|
237
|
+
const payloadRecord = delegateInfo.find(([delegate]) => `$${delegate.name}Payload` === typeName);
|
|
238
|
+
if (payloadRecord) {
|
|
239
|
+
const discriminatorDecl = getDiscriminatorField(payloadRecord[0]);
|
|
240
|
+
if (discriminatorDecl) {
|
|
241
|
+
source = `${payloadRecord[1]
|
|
242
|
+
.map((concrete) => `($${concrete.name}Payload<ExtArgs> & { scalars: { ${discriminatorDecl.name}: '${concrete.name}' } })`)
|
|
243
|
+
.join(' | ')}`;
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
return source;
|
|
247
|
+
}
|
|
248
|
+
function removeCreateFromDelegateInput(typeAlias, delegateModels, source) {
|
|
249
|
+
// remove create/connectOrCreate/upsert fields from delegate's input types because
|
|
250
|
+
// delegate models cannot be created directly
|
|
251
|
+
const typeName = typeAlias.getName();
|
|
252
|
+
const delegateModelNames = delegateModels.map(([delegate]) => delegate.name);
|
|
253
|
+
const delegateCreateUpdateInputRegex = new RegExp(`\\${delegateModelNames.join('|')}(Unchecked)?(Create|Update).*Input`);
|
|
254
|
+
if (delegateCreateUpdateInputRegex.test(typeName)) {
|
|
255
|
+
const toRemove = typeAlias
|
|
256
|
+
.getDescendantsOfKind(ts_morph_1.SyntaxKind.PropertySignature)
|
|
257
|
+
.filter((p) => ['create', 'connectOrCreate', 'upsert'].includes(p.getName()));
|
|
258
|
+
toRemove.forEach((r) => {
|
|
259
|
+
source = source.replace(r.getText(), '');
|
|
260
|
+
});
|
|
261
|
+
}
|
|
262
|
+
return source;
|
|
263
|
+
}
|
|
264
|
+
function removeDiscriminatorFromConcreteInput(typeAlias, delegateInfo, source) {
|
|
265
|
+
// remove discriminator field from the create/update input of concrete models because
|
|
266
|
+
// discriminator cannot be set directly
|
|
267
|
+
const typeName = typeAlias.getName();
|
|
268
|
+
const concreteModelNames = delegateInfo.map(([, concretes]) => concretes.map((c) => c.name)).flatMap((c) => c);
|
|
269
|
+
const concreteCreateUpdateInputRegex = new RegExp(`(${concreteModelNames.join('|')})(Unchecked)?(Create|Update).*Input`);
|
|
270
|
+
const match = typeName.match(concreteCreateUpdateInputRegex);
|
|
271
|
+
if (match) {
|
|
272
|
+
const modelName = match[1];
|
|
273
|
+
const record = delegateInfo.find(([, concretes]) => concretes.some((c) => c.name === modelName));
|
|
274
|
+
if (record) {
|
|
275
|
+
// remove all discriminator fields recursively
|
|
276
|
+
const delegateOfConcrete = record[0];
|
|
277
|
+
const discriminators = getDiscriminatorFieldsRecursively(delegateOfConcrete);
|
|
278
|
+
discriminators.forEach((discriminatorDecl) => {
|
|
279
|
+
const discriminatorNode = findNamedProperty(typeAlias, discriminatorDecl.name);
|
|
280
|
+
if (discriminatorNode) {
|
|
281
|
+
source = source.replace(discriminatorNode.getText(), '');
|
|
282
|
+
}
|
|
283
|
+
});
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
return source;
|
|
287
|
+
}
|
|
288
|
+
function removeAuxFieldsFromTypeAlias(typeAlias, source) {
|
|
289
|
+
// remove `delegate_aux_*` fields from the type alias
|
|
290
|
+
const auxDecls = findAuxDecls(typeAlias);
|
|
291
|
+
if (auxDecls.length > 0) {
|
|
292
|
+
auxDecls.forEach((d) => {
|
|
293
|
+
source = source.replace(d.getText(), '');
|
|
294
|
+
});
|
|
295
|
+
}
|
|
296
|
+
return source;
|
|
297
|
+
}
|
|
298
|
+
function findNamedProperty(typeAlias, name) {
|
|
299
|
+
return typeAlias.getFirstDescendant((d) => d.isKind(ts_morph_1.SyntaxKind.PropertySignature) && d.getName() === name);
|
|
300
|
+
}
|
|
301
|
+
function findAuxDecls(node) {
|
|
302
|
+
return node
|
|
303
|
+
.getDescendantsOfKind(ts_morph_1.SyntaxKind.PropertySignature)
|
|
304
|
+
.filter((n) => n.getName().startsWith(runtime_1.DELEGATE_AUX_RELATION_PREFIX));
|
|
305
|
+
}
|
|
306
|
+
function getDiscriminatorField(delegate) {
|
|
307
|
+
var _a;
|
|
308
|
+
const delegateAttr = (0, sdk_1.getAttribute)(delegate, '@@delegate');
|
|
309
|
+
if (!delegateAttr) {
|
|
310
|
+
return undefined;
|
|
311
|
+
}
|
|
312
|
+
const arg = (_a = delegateAttr.args[0]) === null || _a === void 0 ? void 0 : _a.value;
|
|
313
|
+
return (0, ast_1.isReferenceExpr)(arg) ? arg.target.ref : undefined;
|
|
314
|
+
}
|
|
315
|
+
function getDiscriminatorFieldsRecursively(delegate, result = []) {
|
|
316
|
+
if ((0, sdk_1.isDelegateModel)(delegate)) {
|
|
317
|
+
const discriminator = getDiscriminatorField(delegate);
|
|
318
|
+
if (discriminator) {
|
|
319
|
+
result.push(discriminator);
|
|
320
|
+
}
|
|
321
|
+
for (const superType of delegate.superTypes) {
|
|
322
|
+
if (superType.ref) {
|
|
323
|
+
result.push(...getDiscriminatorFieldsRecursively(superType.ref, result));
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
return result;
|
|
328
|
+
}
|
|
329
|
+
function saveSourceFile(sf, options) {
|
|
330
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
331
|
+
if (options.preserveTsFiles) {
|
|
332
|
+
yield sf.save();
|
|
333
|
+
}
|
|
334
|
+
});
|
|
335
|
+
}
|
|
336
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/plugins/enhancer/enhance/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AACA,iDAAmE;AACnE,yCAQyB;AACzB,6CAA0G;AAC1G,4CAAoB;AACpB,gDAAwB;AACxB,uCAUkB;AAClB,0BAA0B;AAC1B,0DAAwD;AACxD,yCAAsD;AACtD,oEAAsE;AACtE,sDAAsD;AAKtD,SAAsB,QAAQ,CAAC,KAAY,EAAE,OAAsB,EAAE,OAAgB,EAAE,MAAc;;QACjG,IAAI,sBAA0C,CAAC;QAC/C,IAAI,IAA+B,CAAC;QAEpC,IAAI,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5B,4EAA4E;YAC5E,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;YAEnE,sBAAsB,GAAG,0BAA0B,CAAC;YACpD,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;YAEnB,iDAAiD;YACjD,MAAM,SAAS,GAAG,OAAO,CAAC,gBAAgB,CACtC,cAAI,CAAC,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,EAChC,uBAAuB,sBAAsB,gBAAgB,EAC7D,EAAE,SAAS,EAAE,IAAI,EAAE,CACtB,CAAC;YACF,MAAM,cAAc,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC7C,CAAC;aAAM,CAAC;YACJ,kCAAkC;YAClC,MAAM,SAAS,GAAG,OAAO,CAAC,gBAAgB,CACtC,cAAI,CAAC,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,EAChC,uBAAuB,IAAA,+BAAyB,EAAC,MAAM,EAAE,OAAO,CAAC,IAAI,EACrE,EAAE,SAAS,EAAE,IAAI,EAAE,CACtB,CAAC;YACF,MAAM,cAAc,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC7C,CAAC;QAED,MAAM,SAAS,GAAG,OAAO,CAAC,gBAAgB,CACtC,cAAI,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,EAC/B;;;EAGN,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,sCAAsC,CAAC,CAAC,CAAC,+BAA+B;0BACzE,IAAA,+BAAyB,EAAC,MAAM,EAAE,OAAO,CAAC;EAClE,sBAAsB,CAAC,CAAC,CAAC,sCAAsC,sBAAsB,gBAAgB,CAAC,CAAC,CAAC,EAAE;;;;;;;;;iBAS3F,sBAAsB,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE;;CAEhE,EACO,EAAE,SAAS,EAAE,IAAI,EAAE,CACtB,CAAC;QAEF,MAAM,cAAc,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAEzC,OAAO,EAAE,IAAI,EAAE,CAAC;IACpB,CAAC;CAAA;AArDD,4BAqDC;AAED,SAAS,kBAAkB,CAAC,KAAY;IACpC,OAAO,gBAAgB,CAAC,KAAK,CAAC,IAAI,gBAAgB,CAAC,KAAK,CAAC,CAAC;AAC9D,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAY;IAClC,MAAM,UAAU,GAAG,IAAA,mBAAa,EAAC,KAAK,CAAC,CAAC;IACxC,OAAO,UAAU,CAAC,IAAI,CAClB,CAAC,EAAE,EAAE,EAAE,CAAC,IAAA,qBAAe,EAAC,EAAE,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,CAAC,CAC1G,CAAC;AACN,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAY;IAClC,OAAO,IAAA,mBAAa,EAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CACpC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,kCAAiB,EAAC,IAAI,CAAC,CAAC,CAAC,CAC9E,CAAC;AACN,CAAC;AAED,SAAe,qBAAqB,CAAC,KAAY,EAAE,OAAsB,EAAE,MAAc;;QACrF,MAAM,eAAe,GAAG,IAAI,wCAAqB,CAAC,KAAK,CAAC,CAAC;QACzD,MAAM,kBAAkB,GAAG,0BAA0B,CAAC;QACtD,MAAM,iBAAiB,GAAG,cAAI,CAAC,IAAI,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;QAC9D,MAAM,eAAe,CAAC,QAAQ,CAAC;YAC3B,QAAQ,EAAE,WAAW,EAAE,iBAAiB;YACxC,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,MAAM,EAAE,iBAAiB;YACzB,4BAA4B,EAAE,kBAAkB;YAChD,IAAI,EAAE,SAAS;SAClB,CAAC,CAAC;QAEH,6BAA6B;QAC7B,MAAM,WAAW,GAAG,6BAA6B,iBAAiB,eAAe,CAAC;QAClF,IAAI,CAAC;YACD,wBAAwB;YACxB,MAAM,IAAA,wBAAW,EAAC,WAAW,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QACxD,CAAC;QAAC,WAAM,CAAC;YACL,MAAM,IAAA,+BAAsB,EAAC,iBAAiB,CAAC,CAAC;YAChD,IAAI,CAAC;gBACD,yDAAyD;gBACzD,MAAM,IAAA,wBAAW,EAAC,WAAW,CAAC,CAAC;YACnC,CAAC;YAAC,WAAM,CAAC;gBACL,OAAO;YACX,CAAC;YACD,MAAM,IAAI,iBAAW,CAAC,QAAI,EAAE,iCAAiC,CAAC,CAAC;QACnE,CAAC;QAED,8DAA8D;QAC9D,MAAM,kBAAkB,CAAC,KAAK,EAAE,cAAI,CAAC,IAAI,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAAC;QAEvE,OAAO;YACH,YAAY,EAAE,iBAAiB;YAC/B,6CAA6C;YAC7C,IAAI,EAAE,MAAM,IAAA,aAAO,EAAC,EAAE,SAAS,EAAE,YAAE,CAAC,YAAY,CAAC,iBAAiB,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;SAChG,CAAC;IACN,CAAC;CAAA;AAED,SAAe,kBAAkB,CAAC,KAAY,EAAE,eAAuB;;QACnE,8FAA8F;QAC9F,MAAM,OAAO,GAAG,IAAI,kBAAO,EAAE,CAAC;QAC9B,MAAM,EAAE,GAAG,OAAO,CAAC,mBAAmB,CAAC,cAAI,CAAC,IAAI,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC,CAAC;QAEjF,sDAAsD;QACtD,MAAM,YAAY,GAAiB,EAAE,CAAC;QACtC,KAAK,CAAC,YAAY;aACb,MAAM,CAAC,CAAC,CAAC,EAAkB,EAAE,CAAC,IAAA,qBAAe,EAAC,CAAC,CAAC,CAAC;aACjD,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;YACZ,YAAY,CAAC,IAAI,CAAC;gBACd,EAAE;gBACF,KAAK,CAAC,YAAY,CAAC,MAAM,CACrB,CAAC,CAAC,EAAkB,EAAE,CAAC,IAAA,iBAAW,EAAC,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,CAClF;aACJ,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEP,MAAM,KAAK,GAAG,OAAO,CAAC,gBAAgB,CAAC,cAAI,CAAC,IAAI,CAAC,eAAe,EAAE,kBAAkB,CAAC,EAAE,SAAS,EAAE;YAC9F,SAAS,EAAE,IAAI;SAClB,CAAC,CAAC;QAEH,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1B,uCAAuC;YACvC,iBAAiB,CAAC,EAAE,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;YAC3C,KAAK,CAAC,UAAU,EAAE,CAAC;QACvB,CAAC;aAAM,CAAC;YACJ,YAAY;YACZ,KAAK,CAAC,eAAe,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;QAC5C,CAAC;QACD,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;IACvB,CAAC;CAAA;AAED,SAAS,iBAAiB,CAAC,EAAc,EAAE,KAAiB,EAAE,cAA4B;IACtF,wBAAwB;IACxB,KAAK,CAAC,qBAAqB,CAAC,EAAE,CAAC,qBAAqB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;IAErF,8BAA8B;IAC9B,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC,iBAAiB,CAAC,qBAAU,CAAC,uBAAuB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IAE1G,wBAAwB;IACxB,KAAK,CAAC,oBAAoB,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;IAEnF,6BAA6B;IAC7B,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC,cAAc,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;IAEvE,wBAAwB;IACxB,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;IAE/D,0BAA0B;IAC1B,KAAK,CAAC,qBAAqB,CAAC,EAAE,CAAC,qBAAqB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;IAErF,+CAA+C;IAC/C,KAAK,CAAC,UAAU,CACZ,EAAE;SACG,UAAU,EAAE;SACZ,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,QAAQ,CAAC;SACvC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CACpC,CAAC;IAEF,mCAAmC;IACnC,MAAM,YAAY,GAAG,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IACnD,MAAM,eAAe,GAAG,KAAK,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9E,qBAAqB,CAAC,YAAY,EAAE,eAAe,EAAE,cAAc,CAAC,CAAC;AACzE,CAAC;AAED,SAAS,qBAAqB,CAC1B,YAA+B,EAC/B,eAAkC,EAClC,YAA0B;IAE1B,0EAA0E;IAC1E,MAAM,WAAW,GAAG,YAAY,CAAC,0BAA0B,CAAC,qBAAU,CAAC,WAAW,CAAC,CAAC;IAEpF,wDAAwD;IACxD,gEAAgE;IAEhE,eAAe;IACf,eAAe,CAAC,aAAa,CACzB,WAAW,CAAC,iBAAiB,CAAC,qBAAU,CAAC,uBAAuB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAChG,CAAC;IAEF,eAAe;IACf,eAAe,CAAC,UAAU,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;IAElF,iBAAiB;IACjB,eAAe,CAAC,YAAY,CACxB,WAAW,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,EAAkC,CAAC,CAC1F,CAAC;IAEF,yBAAyB;IACzB,eAAe,CAAC,UAAU,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;IAElF,sBAAsB;IACtB,MAAM,YAAY,GAAG,WAAW,CAAC,qBAAqB,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,0BAA0B,CAAC,QAAQ,CAAC,CAAC,CAAC;IACjH,eAAe,CAAC,qBAAqB,CAAC,YAAY,CAAC,CAAC;IAEpD,uBAAuB;IACvB,MAAM,aAAa,GAAG,WAAW,CAAC,aAAa,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,kBAAkB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC;IAC1G,eAAe,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;IAE7C,yBAAyB;IACzB,MAAM,cAAc,GAAG,WAAW,CAAC,cAAc,EAAE,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,kBAAkB,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC;IACpH,eAAe,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;AACnD,CAAC;AAED,SAAS,0BAA0B,CAAC,QAA2B;IAC3D,MAAM,SAAS,GAAG,QAAQ,CAAC,YAAY,EAAE,CAAC;IAE1C,4DAA4D;IAC5D,MAAM,SAAS,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;IACzC,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,SAAS,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;;YACxC,IAAI,MAAM,GAAG,MAAA,QAAQ,CAAC,IAAI,0CAAE,QAAQ,EAAE,CAAC;YACvC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;gBACpB,MAAM,GAAG,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;YAC9C,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,IAAI,GAAG,MAAM,CAAC;QAC3B,CAAC,CAAC,CAAC;IACP,CAAC;IAED,OAAO,SAAS,CAAC;AACrB,CAAC;AAED,SAAS,kBAAkB,CAAC,KAA2B,EAAE,YAA0B;;IAC/E,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;IAEvC,wBAAwB;IACxB,SAAS,CAAC,UAAU,GAAG,MAAA,SAAS,CAAC,UAAU,0CAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,sCAA4B,CAAC,CAAC,CAAC;IAE7G,yBAAyB;IACzB,SAAS,CAAC,OAAO,GAAG,MAAA,SAAS,CAAC,OAAO,0CAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,sCAA4B,CAAC,CAAC,CAAC;IAEvG,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,GAAG,QAAQ,CAAC,IAAI,UAAU,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;QACpF,8EAA8E;QAC9E,SAAS,CAAC,OAAO,GAAG,MAAA,SAAS,CAAC,OAAO,0CAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/G,CAAC;IAED,OAAO,SAAS,CAAC;AACrB,CAAC;AAED,SAAS,kBAAkB,CAAC,SAA+B,EAAE,YAA0B;IACnF,MAAM,SAAS,GAAG,SAAS,CAAC,YAAY,EAAE,CAAC;IAC3C,IAAI,MAAM,GAAG,SAAS,CAAC,IAAc,CAAC;IAEtC,oBAAoB;IACpB,MAAM,GAAG,4BAA4B,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAEzD,uDAAuD;IACvD,MAAM,GAAG,oCAAoC,CAAC,SAAS,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;IAE/E,0EAA0E;IAC1E,MAAM,GAAG,6BAA6B,CAAC,SAAS,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;IAExE,kCAAkC;IAClC,MAAM,GAAG,sBAAsB,CAAC,SAAS,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;IAEjE,SAAS,CAAC,IAAI,GAAG,MAAM,CAAC;IACxB,OAAO,SAAS,CAAC;AACrB,CAAC;AAED,SAAS,sBAAsB,CAAC,SAA+B,EAAE,YAA0B,EAAE,MAAc;IACvG,mGAAmG;IACnG,MAAM,QAAQ,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC;IACrC,MAAM,aAAa,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,IAAI,QAAQ,CAAC,IAAI,SAAS,KAAK,QAAQ,CAAC,CAAC;IACjG,IAAI,aAAa,EAAE,CAAC;QAChB,MAAM,iBAAiB,GAAG,qBAAqB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;QAClE,IAAI,iBAAiB,EAAE,CAAC;YACpB,MAAM,GAAG,GAAG,aAAa,CAAC,CAAC,CAAC;iBACvB,GAAG,CACA,CAAC,QAAQ,EAAE,EAAE,CACT,KAAK,QAAQ,CAAC,IAAI,mCAAmC,iBAAiB,CAAC,IAAI,MAAM,QAAQ,CAAC,IAAI,QAAQ,CAC7G;iBACA,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACvB,CAAC;IACL,CAAC;IACD,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,SAAS,6BAA6B,CAAC,SAA+B,EAAE,cAA4B,EAAE,MAAc;IAChH,kFAAkF;IAClF,6CAA6C;IAC7C,MAAM,QAAQ,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC;IACrC,MAAM,kBAAkB,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC7E,MAAM,8BAA8B,GAAG,IAAI,MAAM,CAC7C,KAAK,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,oCAAoC,CACxE,CAAC;IACF,IAAI,8BAA8B,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QAChD,MAAM,QAAQ,GAAG,SAAS;aACrB,oBAAoB,CAAC,qBAAU,CAAC,iBAAiB,CAAC;aAClD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,iBAAiB,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAClF,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YACnB,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;IACP,CAAC;IACD,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,SAAS,oCAAoC,CACzC,SAA+B,EAC/B,YAA0B,EAC1B,MAAc;IAEd,qFAAqF;IACrF,uCAAuC;IACvC,MAAM,QAAQ,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC;IACrC,MAAM,kBAAkB,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/G,MAAM,8BAA8B,GAAG,IAAI,MAAM,CAC7C,IAAI,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,qCAAqC,CACxE,CAAC;IAEF,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAC7D,IAAI,KAAK,EAAE,CAAC;QACR,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAC3B,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC;QACjG,IAAI,MAAM,EAAE,CAAC;YACT,8CAA8C;YAC9C,MAAM,kBAAkB,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACrC,MAAM,cAAc,GAAG,iCAAiC,CAAC,kBAAkB,CAAC,CAAC;YAC7E,cAAc,CAAC,OAAO,CAAC,CAAC,iBAAiB,EAAE,EAAE;gBACzC,MAAM,iBAAiB,GAAG,iBAAiB,CAAC,SAAS,EAAE,iBAAiB,CAAC,IAAI,CAAC,CAAC;gBAC/E,IAAI,iBAAiB,EAAE,CAAC;oBACpB,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC7D,CAAC;YACL,CAAC,CAAC,CAAC;QACP,CAAC;IACL,CAAC;IACD,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,SAAS,4BAA4B,CAAC,SAA+B,EAAE,MAAc;IACjF,qDAAqD;IACrD,MAAM,QAAQ,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;IACzC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YACnB,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;IACP,CAAC;IACD,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,SAAS,iBAAiB,CAAC,SAA+B,EAAE,IAAY;IACpE,OAAO,SAAS,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,qBAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,KAAK,IAAI,CAAC,CAAC;AAC/G,CAAC;AAED,SAAS,YAAY,CAAC,IAAU;IAC5B,OAAO,IAAI;SACN,oBAAoB,CAAC,qBAAU,CAAC,iBAAiB,CAAC;SAClD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC,sCAA4B,CAAC,CAAC,CAAC;AAC7E,CAAC;AAED,SAAS,qBAAqB,CAAC,QAAmB;;IAC9C,MAAM,YAAY,GAAG,IAAA,kBAAY,EAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IAC1D,IAAI,CAAC,YAAY,EAAE,CAAC;QAChB,OAAO,SAAS,CAAC;IACrB,CAAC;IACD,MAAM,GAAG,GAAG,MAAA,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,0CAAE,KAAK,CAAC;IACxC,OAAO,IAAA,qBAAe,EAAC,GAAG,CAAC,CAAC,CAAC,CAAE,GAAG,CAAC,MAAM,CAAC,GAAsB,CAAC,CAAC,CAAC,SAAS,CAAC;AACjF,CAAC;AAED,SAAS,iCAAiC,CAAC,QAAmB,EAAE,SAA2B,EAAE;IACzF,IAAI,IAAA,qBAAe,EAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,MAAM,aAAa,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;QACtD,IAAI,aAAa,EAAE,CAAC;YAChB,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC/B,CAAC;QAED,KAAK,MAAM,SAAS,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;YAC1C,IAAI,SAAS,CAAC,GAAG,EAAE,CAAC;gBAChB,MAAM,CAAC,IAAI,CAAC,GAAG,iCAAiC,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;YAC7E,CAAC;QACL,CAAC;IACL,CAAC;IACD,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,SAAe,cAAc,CAAC,EAAc,EAAE,OAAsB;;QAChE,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;YAC1B,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC;QACpB,CAAC;IACL,CAAC;CAAA"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isDefaultWithAuth = void 0;
|
|
4
|
+
const sdk_1 = require("@zenstackhq/sdk");
|
|
5
|
+
const langium_1 = require("langium");
|
|
6
|
+
/**
|
|
7
|
+
* Check if the given field attribute is a `@default` with `auth()` invocation
|
|
8
|
+
*/
|
|
9
|
+
function isDefaultWithAuth(attr) {
|
|
10
|
+
var _a, _b;
|
|
11
|
+
if (((_a = attr.decl.ref) === null || _a === void 0 ? void 0 : _a.name) !== '@default') {
|
|
12
|
+
return false;
|
|
13
|
+
}
|
|
14
|
+
const expr = (_b = attr.args[0]) === null || _b === void 0 ? void 0 : _b.value;
|
|
15
|
+
if (!expr) {
|
|
16
|
+
return false;
|
|
17
|
+
}
|
|
18
|
+
// find `auth()` in default value expression
|
|
19
|
+
return (0, langium_1.streamAst)(expr).some(sdk_1.isAuthInvocation);
|
|
20
|
+
}
|
|
21
|
+
exports.isDefaultWithAuth = isDefaultWithAuth;
|
|
22
|
+
//# sourceMappingURL=enhancer-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enhancer-utils.js","sourceRoot":"","sources":["../../../src/plugins/enhancer/enhancer-utils.ts"],"names":[],"mappings":";;;AAAA,yCAAmD;AAEnD,qCAAoC;AAEpC;;GAEG;AACH,SAAgB,iBAAiB,CAAC,IAA6B;;IAC3D,IAAI,CAAA,MAAA,IAAI,CAAC,IAAI,CAAC,GAAG,0CAAE,IAAI,MAAK,UAAU,EAAE,CAAC;QACrC,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,MAAM,IAAI,GAAG,MAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,0CAAE,KAAK,CAAC;IACjC,IAAI,CAAC,IAAI,EAAE,CAAC;QACR,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,4CAA4C;IAC5C,OAAO,IAAA,mBAAS,EAAC,IAAI,CAAC,CAAC,IAAI,CAAC,sBAAgB,CAAC,CAAC;AAClD,CAAC;AAZD,8CAYC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.description = exports.name = void 0;
|
|
16
|
+
const sdk_1 = require("@zenstackhq/sdk");
|
|
17
|
+
const path_1 = __importDefault(require("path"));
|
|
18
|
+
const plugin_utils_1 = require("../plugin-utils");
|
|
19
|
+
const enhance_1 = require("./enhance");
|
|
20
|
+
const model_meta_1 = require("./model-meta");
|
|
21
|
+
const policy_1 = require("./policy");
|
|
22
|
+
exports.name = 'Prisma Enhancer';
|
|
23
|
+
exports.description = 'Generating PrismaClient enhancer';
|
|
24
|
+
const run = (model, options, _dmmf, globalOptions) => __awaiter(void 0, void 0, void 0, function* () {
|
|
25
|
+
var _a;
|
|
26
|
+
let outDir = options.output ? options.output : (0, plugin_utils_1.getDefaultOutputFolder)(globalOptions);
|
|
27
|
+
if (!outDir) {
|
|
28
|
+
throw new sdk_1.PluginError(exports.name, `Unable to determine output path, not running plugin`);
|
|
29
|
+
}
|
|
30
|
+
outDir = (0, sdk_1.resolvePath)(outDir, options);
|
|
31
|
+
const project = (_a = globalOptions === null || globalOptions === void 0 ? void 0 : globalOptions.tsProject) !== null && _a !== void 0 ? _a : (0, sdk_1.createProject)();
|
|
32
|
+
yield (0, model_meta_1.generate)(model, options, project, outDir);
|
|
33
|
+
yield (0, policy_1.generate)(model, options, project, outDir);
|
|
34
|
+
const { dmmf } = yield (0, enhance_1.generate)(model, options, project, outDir);
|
|
35
|
+
let prismaClientPath;
|
|
36
|
+
if (dmmf) {
|
|
37
|
+
// a logical client is generated
|
|
38
|
+
if (typeof options.output === 'string') {
|
|
39
|
+
// get the absolute path of the logical prisma client
|
|
40
|
+
const prismaClientPathAbs = path_1.default.resolve(options.output, 'prisma');
|
|
41
|
+
// resolve it relative to the schema path
|
|
42
|
+
prismaClientPath = path_1.default.relative(path_1.default.dirname(options.schemaPath), prismaClientPathAbs);
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
prismaClientPath = `${sdk_1.RUNTIME_PACKAGE}/prisma`;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return { dmmf, warnings: [], prismaClientPath };
|
|
49
|
+
});
|
|
50
|
+
exports.default = run;
|
|
51
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugins/enhancer/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,yCAAgH;AAChH,gDAAwB;AACxB,kDAAyD;AACzD,uCAAyD;AACzD,6CAA6D;AAC7D,qCAAsD;AAEzC,QAAA,IAAI,GAAG,iBAAiB,CAAC;AACzB,QAAA,WAAW,GAAG,kCAAkC,CAAC;AAE9D,MAAM,GAAG,GAAmB,CAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE;;IACvE,IAAI,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAE,OAAO,CAAC,MAAiB,CAAC,CAAC,CAAC,IAAA,qCAAsB,EAAC,aAAa,CAAC,CAAC;IACjG,IAAI,CAAC,MAAM,EAAE,CAAC;QACV,MAAM,IAAI,iBAAW,CAAC,YAAI,EAAE,qDAAqD,CAAC,CAAC;IACvF,CAAC;IACD,MAAM,GAAG,IAAA,iBAAW,EAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEtC,MAAM,OAAO,GAAG,MAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,SAAS,mCAAI,IAAA,mBAAa,GAAE,CAAC;IAE5D,MAAM,IAAA,qBAAiB,EAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IACzD,MAAM,IAAA,iBAAc,EAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IACtD,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAA,kBAAgB,EAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAEzE,IAAI,gBAAoC,CAAC;IACzC,IAAI,IAAI,EAAE,CAAC;QACP,gCAAgC;QAChC,IAAI,OAAO,OAAO,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YACrC,qDAAqD;YACrD,MAAM,mBAAmB,GAAG,cAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YAEnE,yCAAyC;YACzC,gBAAgB,GAAG,cAAI,CAAC,QAAQ,CAAC,cAAI,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,mBAAmB,CAAC,CAAC;QAC5F,CAAC;aAAM,CAAC;YACJ,gBAAgB,GAAG,GAAG,qBAAe,SAAS,CAAC;QACnD,CAAC;IACL,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,gBAAgB,EAAE,CAAC;AACpD,CAAC,CAAA,CAAC;AAEF,kBAAe,GAAG,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.generate = void 0;
|
|
16
|
+
const sdk_1 = require("@zenstackhq/sdk");
|
|
17
|
+
const path_1 = __importDefault(require("path"));
|
|
18
|
+
function generate(model, options, project, outDir) {
|
|
19
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
20
|
+
const outFile = path_1.default.join(outDir, 'model-meta.ts');
|
|
21
|
+
const dataModels = (0, sdk_1.getDataModels)(model);
|
|
22
|
+
// save ts files if requested explicitly or the user provided
|
|
23
|
+
const preserveTsFiles = options.preserveTsFiles === true || !!options.output;
|
|
24
|
+
yield (0, sdk_1.generateModelMeta)(project, dataModels, {
|
|
25
|
+
output: outFile,
|
|
26
|
+
generateAttributes: true,
|
|
27
|
+
preserveTsFiles,
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
exports.generate = generate;
|
|
32
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/plugins/enhancer/model-meta/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,yCAAuF;AAEvF,gDAAwB;AAGxB,SAAsB,QAAQ,CAAC,KAAY,EAAE,OAAsB,EAAE,OAAgB,EAAE,MAAc;;QACjG,MAAM,OAAO,GAAG,cAAI,CAAC,IAAI,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;QACnD,MAAM,UAAU,GAAG,IAAA,mBAAa,EAAC,KAAK,CAAC,CAAC;QAExC,6DAA6D;QAC7D,MAAM,eAAe,GAAG,OAAO,CAAC,eAAe,KAAK,IAAI,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;QAC7E,MAAM,IAAA,uBAAiB,EAAC,OAAO,EAAE,UAAU,EAAE;YACzC,MAAM,EAAE,OAAO;YACf,kBAAkB,EAAE,IAAI;YACxB,eAAe;SAClB,CAAC,CAAC;IACP,CAAC;CAAA;AAXD,4BAWC"}
|
|
@@ -20,6 +20,9 @@ export declare class ExpressionWriter {
|
|
|
20
20
|
*/
|
|
21
21
|
write(expr: Expression): void;
|
|
22
22
|
private writeReference;
|
|
23
|
+
private writeBaseHierarchy;
|
|
24
|
+
private getDelegateBase;
|
|
25
|
+
private isFieldReferenceToDelegateModel;
|
|
23
26
|
private writeMemberAccess;
|
|
24
27
|
private writeExprList;
|
|
25
28
|
private writeBinary;
|