zenstack 0.1.0 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/out/cli/index.js +4 -51
- package/out/cli/index.js.map +1 -1
- package/out/cli/package.template.json +10 -0
- package/out/cli/tsconfig.template.json +17 -0
- package/out/generator/constants.js +6 -0
- package/out/generator/constants.js.map +1 -0
- package/out/generator/index.js +76 -0
- package/out/generator/index.js.map +1 -0
- package/out/generator/next-auth/index.js +3 -3
- package/out/generator/package.template.json +9 -0
- package/out/generator/prisma/expression-writer.js +287 -0
- package/out/generator/prisma/expression-writer.js.map +1 -0
- package/out/generator/prisma/index.js +8 -182
- package/out/generator/prisma/index.js.map +1 -1
- package/out/generator/prisma/plain-expression-builder.js +69 -0
- package/out/generator/prisma/plain-expression-builder.js.map +1 -0
- package/out/generator/prisma/prisma-builder.js +1 -1
- package/out/generator/prisma/prisma-builder.js.map +1 -1
- package/out/generator/prisma/query-gard-generator.js +159 -0
- package/out/generator/prisma/query-gard-generator.js.map +1 -0
- package/out/generator/prisma/schema-generator.js +202 -0
- package/out/generator/prisma/schema-generator.js.map +1 -0
- package/out/generator/query-guard/index.js +2 -0
- package/out/generator/query-guard/index.js.map +1 -0
- package/out/generator/react-hooks/index.js +1 -1
- package/out/generator/react-hooks/index.js.map +1 -1
- package/out/generator/server/data/expression-writer.js +42 -36
- package/out/generator/server/data/expression-writer.js.map +1 -1
- package/out/generator/server/data/plain-expression-builder.js +18 -2
- package/out/generator/server/data/plain-expression-builder.js.map +1 -1
- package/out/generator/service/index.js +51 -1
- package/out/generator/service/index.js.map +1 -1
- package/out/generator/tsconfig.template.json +17 -0
- package/out/utils/indent-string.js +3 -19
- package/out/utils/indent-string.js.map +1 -1
- package/package.json +7 -4
- package/src/cli/index.ts +5 -33
- package/src/generator/constants.ts +2 -0
- package/src/generator/index.ts +59 -0
- package/src/generator/next-auth/index.ts +3 -3
- package/src/generator/package.template.json +9 -0
- package/src/generator/{server/data → prisma}/expression-writer.ts +65 -63
- package/src/generator/prisma/index.ts +10 -309
- package/src/generator/{server/data → prisma}/plain-expression-builder.ts +22 -3
- package/src/generator/prisma/prisma-builder.ts +1 -1
- package/src/generator/prisma/query-gard-generator.ts +208 -0
- package/src/generator/prisma/schema-generator.ts +295 -0
- package/src/generator/react-hooks/index.ts +2 -4
- package/src/generator/service/index.ts +54 -1
- package/src/generator/tsconfig.template.json +17 -0
- package/src/utils/indent-string.ts +3 -38
- package/src/generator/server/data/data-generator.ts +0 -483
- package/src/generator/server/function/function-generator.ts +0 -32
- package/src/generator/server/index.ts +0 -57
- package/src/generator/server/server-code-generator.ts +0 -6
|
@@ -0,0 +1,202 @@
|
|
|
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
|
+
const ast_1 = require("../../language-server/generated/ast");
|
|
16
|
+
const promises_1 = require("fs/promises");
|
|
17
|
+
const path_1 = __importDefault(require("path"));
|
|
18
|
+
const constants_1 = require("../constants");
|
|
19
|
+
const types_1 = require("../types");
|
|
20
|
+
const prisma_builder_1 = require("./prisma-builder");
|
|
21
|
+
const supportedProviders = ['postgresql', 'mysql', 'sqlite', 'sqlserver'];
|
|
22
|
+
const supportedAttrbutes = [
|
|
23
|
+
'id',
|
|
24
|
+
'index',
|
|
25
|
+
'relation',
|
|
26
|
+
'default',
|
|
27
|
+
'createdAt',
|
|
28
|
+
'updatedAt',
|
|
29
|
+
'unique',
|
|
30
|
+
];
|
|
31
|
+
class PrismaSchemaGenerator {
|
|
32
|
+
constructor(context) {
|
|
33
|
+
this.context = context;
|
|
34
|
+
}
|
|
35
|
+
generate() {
|
|
36
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
37
|
+
const { schema } = this.context;
|
|
38
|
+
const prisma = new prisma_builder_1.PrismaModel();
|
|
39
|
+
for (const decl of schema.declarations) {
|
|
40
|
+
switch (decl.$type) {
|
|
41
|
+
case ast_1.DataSource:
|
|
42
|
+
this.generateDataSource(prisma, decl);
|
|
43
|
+
break;
|
|
44
|
+
case ast_1.Enum:
|
|
45
|
+
this.generateEnum(prisma, decl);
|
|
46
|
+
break;
|
|
47
|
+
case ast_1.DataModel:
|
|
48
|
+
this.generateModel(prisma, decl);
|
|
49
|
+
break;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
this.generateGenerator(prisma);
|
|
53
|
+
const outFile = path_1.default.join(this.context.outDir, 'schema.prisma');
|
|
54
|
+
yield (0, promises_1.writeFile)(outFile, prisma.toString());
|
|
55
|
+
return outFile;
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
generateDataSource(prisma, dataSource) {
|
|
59
|
+
let provider = undefined;
|
|
60
|
+
let url = undefined;
|
|
61
|
+
let shadowDatabaseUrl = undefined;
|
|
62
|
+
for (const f of dataSource.fields) {
|
|
63
|
+
switch (f.name) {
|
|
64
|
+
case 'provider': {
|
|
65
|
+
if (this.isStringLiteral(f.value)) {
|
|
66
|
+
provider = f.value.value;
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
throw new types_1.GeneratorError('Datasource provider must be set to a string');
|
|
70
|
+
}
|
|
71
|
+
if (!supportedProviders.includes(provider)) {
|
|
72
|
+
throw new types_1.GeneratorError(`Provider ${provider} is not supported. Supported providers: ${supportedProviders.join(', ')}`);
|
|
73
|
+
}
|
|
74
|
+
break;
|
|
75
|
+
}
|
|
76
|
+
case 'url': {
|
|
77
|
+
const r = this.extractDataSourceUrl(f.value);
|
|
78
|
+
if (!r) {
|
|
79
|
+
throw new types_1.GeneratorError('Invalid value for datasource url');
|
|
80
|
+
}
|
|
81
|
+
url = r;
|
|
82
|
+
break;
|
|
83
|
+
}
|
|
84
|
+
case 'shadowDatabaseUrl': {
|
|
85
|
+
const r = this.extractDataSourceUrl(f.value);
|
|
86
|
+
if (!r) {
|
|
87
|
+
throw new types_1.GeneratorError('Invalid value for datasource url');
|
|
88
|
+
}
|
|
89
|
+
shadowDatabaseUrl = r;
|
|
90
|
+
break;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
if (!provider) {
|
|
95
|
+
throw new types_1.GeneratorError('Datasource is missing "provider" field');
|
|
96
|
+
}
|
|
97
|
+
if (!url) {
|
|
98
|
+
throw new types_1.GeneratorError('Datasource is missing "url" field');
|
|
99
|
+
}
|
|
100
|
+
prisma.addDataSource(dataSource.name, provider, url, shadowDatabaseUrl);
|
|
101
|
+
}
|
|
102
|
+
extractDataSourceUrl(fieldValue) {
|
|
103
|
+
var _a;
|
|
104
|
+
if (this.isStringLiteral(fieldValue)) {
|
|
105
|
+
return new prisma_builder_1.DataSourceUrl(fieldValue.value, false);
|
|
106
|
+
}
|
|
107
|
+
else if ((0, ast_1.isInvocationExpr)(fieldValue) &&
|
|
108
|
+
((_a = fieldValue.function.ref) === null || _a === void 0 ? void 0 : _a.name) === 'env' &&
|
|
109
|
+
fieldValue.args.length === 1 &&
|
|
110
|
+
this.isStringLiteral(fieldValue.args[0].value)) {
|
|
111
|
+
return new prisma_builder_1.DataSourceUrl(fieldValue.args[0].value.value, true);
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
return null;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
generateGenerator(prisma) {
|
|
118
|
+
prisma.addGenerator('client', 'prisma-client-js', '.prisma', [
|
|
119
|
+
'fieldReference',
|
|
120
|
+
'interactiveTransactions',
|
|
121
|
+
]);
|
|
122
|
+
}
|
|
123
|
+
generateModel(prisma, decl) {
|
|
124
|
+
const model = prisma.addModel(decl.name);
|
|
125
|
+
for (const field of decl.fields) {
|
|
126
|
+
this.generateModelField(model, field);
|
|
127
|
+
}
|
|
128
|
+
// add an "zenstack_guard" field for dealing with pure auth() related conditions
|
|
129
|
+
model.addField(constants_1.GUARD_FIELD_NAME, 'Boolean', [
|
|
130
|
+
new prisma_builder_1.FieldAttribute('default', [
|
|
131
|
+
new prisma_builder_1.AttributeArg(undefined, new prisma_builder_1.AttributeArgValue('Boolean', true)),
|
|
132
|
+
]),
|
|
133
|
+
]);
|
|
134
|
+
for (const attr of decl.attributes.filter((attr) => { var _a; return supportedAttrbutes.includes((_a = attr.decl.ref) === null || _a === void 0 ? void 0 : _a.name); })) {
|
|
135
|
+
this.generateModelAttribute(model, attr);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
generateModelField(model, field) {
|
|
139
|
+
var _a, _b;
|
|
140
|
+
const type = new prisma_builder_1.ModelFieldType((field.type.type || ((_b = (_a = field.type.reference) === null || _a === void 0 ? void 0 : _a.ref) === null || _b === void 0 ? void 0 : _b.name)), field.type.array, field.type.optional);
|
|
141
|
+
const attributes = field.attributes
|
|
142
|
+
.filter((attr) => { var _a; return supportedAttrbutes.includes((_a = attr.decl.ref) === null || _a === void 0 ? void 0 : _a.name); })
|
|
143
|
+
.map((attr) => this.makeFieldAttribute(attr));
|
|
144
|
+
model.addField(field.name, type, attributes);
|
|
145
|
+
}
|
|
146
|
+
makeFieldAttribute(attr) {
|
|
147
|
+
var _a;
|
|
148
|
+
return new prisma_builder_1.FieldAttribute((_a = attr.decl.ref) === null || _a === void 0 ? void 0 : _a.name, attr.args.map((arg) => this.makeAttributeArg(arg)));
|
|
149
|
+
}
|
|
150
|
+
makeAttributeArg(arg) {
|
|
151
|
+
return new prisma_builder_1.AttributeArg(arg.name, this.makeAttributeArgValue(arg.value));
|
|
152
|
+
}
|
|
153
|
+
makeAttributeArgValue(node) {
|
|
154
|
+
var _a;
|
|
155
|
+
if ((0, ast_1.isLiteralExpr)(node)) {
|
|
156
|
+
switch (typeof node.value) {
|
|
157
|
+
case 'string':
|
|
158
|
+
return new prisma_builder_1.AttributeArgValue('String', node.value);
|
|
159
|
+
case 'number':
|
|
160
|
+
return new prisma_builder_1.AttributeArgValue('Number', node.value);
|
|
161
|
+
case 'boolean':
|
|
162
|
+
return new prisma_builder_1.AttributeArgValue('Boolean', node.value);
|
|
163
|
+
default:
|
|
164
|
+
throw new types_1.GeneratorError(`Unexpected literal type: ${typeof node.value}`);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
else if ((0, ast_1.isArrayExpr)(node)) {
|
|
168
|
+
return new prisma_builder_1.AttributeArgValue('Array', new Array(...node.items.map((item) => this.makeAttributeArgValue(item))));
|
|
169
|
+
}
|
|
170
|
+
else if ((0, ast_1.isReferenceExpr)(node)) {
|
|
171
|
+
return new prisma_builder_1.AttributeArgValue('FieldReference', new prisma_builder_1.FieldReference((_a = node.target.ref) === null || _a === void 0 ? void 0 : _a.name, node.args.map((arg) => new prisma_builder_1.FieldReferenceArg(arg.name, arg.value))));
|
|
172
|
+
}
|
|
173
|
+
else if ((0, ast_1.isInvocationExpr)(node)) {
|
|
174
|
+
// invocation
|
|
175
|
+
return new prisma_builder_1.AttributeArgValue('FunctionCall', this.makeFunctionCall(node));
|
|
176
|
+
}
|
|
177
|
+
else {
|
|
178
|
+
throw new types_1.GeneratorError(`Unsupported attribute argument expression type: ${node.$type}`);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
makeFunctionCall(node) {
|
|
182
|
+
var _a;
|
|
183
|
+
return new prisma_builder_1.FunctionCall((_a = node.function.ref) === null || _a === void 0 ? void 0 : _a.name, node.args.map((arg) => {
|
|
184
|
+
if (!(0, ast_1.isLiteralExpr)(arg.value)) {
|
|
185
|
+
throw new types_1.GeneratorError('Function call argument must be literal');
|
|
186
|
+
}
|
|
187
|
+
return new prisma_builder_1.FunctionCallArg(arg.name, arg.value.value);
|
|
188
|
+
}));
|
|
189
|
+
}
|
|
190
|
+
generateModelAttribute(model, attr) {
|
|
191
|
+
var _a;
|
|
192
|
+
model.attributes.push(new prisma_builder_1.ModelAttribute((_a = attr.decl.ref) === null || _a === void 0 ? void 0 : _a.name, attr.args.map((arg) => this.makeAttributeArg(arg))));
|
|
193
|
+
}
|
|
194
|
+
generateEnum(prisma, decl) {
|
|
195
|
+
prisma.addEnum(decl.name, decl.fields.map((f) => f.name));
|
|
196
|
+
}
|
|
197
|
+
isStringLiteral(node) {
|
|
198
|
+
return (0, ast_1.isLiteralExpr)(node) && typeof node.value === 'string';
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
exports.default = PrismaSchemaGenerator;
|
|
202
|
+
//# sourceMappingURL=schema-generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-generator.js","sourceRoot":"","sources":["../../../src/generator/prisma/schema-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/generator/query-guard/index.ts"],"names":[],"mappings":""}
|
|
@@ -142,7 +142,7 @@ class ReactHooksGenerator {
|
|
|
142
142
|
moduleSpecifier: '../.prisma',
|
|
143
143
|
});
|
|
144
144
|
sf.addStatements([`import * as request from './request';`]);
|
|
145
|
-
sf.addStatements(`const endpoint = '/api/zen/data/${
|
|
145
|
+
sf.addStatements(`const endpoint = '/api/zen/data/${model.name}';`);
|
|
146
146
|
const useFuncBody = sf
|
|
147
147
|
.addFunction({
|
|
148
148
|
name: `use${model.name}`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/generator/react-hooks/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,uCAAmC;AACnC,2CAA6B;AAC7B,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/generator/react-hooks/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -30,17 +30,15 @@ class ExpressionWriter {
|
|
|
30
30
|
case ast_1.MemberAccessExpr:
|
|
31
31
|
this.writeMemberAccess(expr);
|
|
32
32
|
break;
|
|
33
|
-
case ast_1.ThisExpr:
|
|
34
|
-
throw new Error('Not implemented');
|
|
35
33
|
default:
|
|
36
34
|
throw new Error(`Not implemented: ${expr.$type}`);
|
|
37
35
|
}
|
|
38
36
|
};
|
|
39
|
-
this.
|
|
37
|
+
this.block(_write);
|
|
40
38
|
}
|
|
41
39
|
writeReference(expr) {
|
|
42
40
|
if ((0, ast_1.isEnumField)(expr.target.ref)) {
|
|
43
|
-
throw new Error('
|
|
41
|
+
throw new Error('We should never get here');
|
|
44
42
|
}
|
|
45
43
|
else {
|
|
46
44
|
this.writer.write(`${expr.target.ref.name}: true`);
|
|
@@ -48,7 +46,7 @@ class ExpressionWriter {
|
|
|
48
46
|
}
|
|
49
47
|
writeMemberAccess(expr) {
|
|
50
48
|
this.writeFieldCondition(expr.operand, () => {
|
|
51
|
-
this.
|
|
49
|
+
this.block(() => {
|
|
52
50
|
var _a;
|
|
53
51
|
this.writer.write(`${(_a = expr.member.ref) === null || _a === void 0 ? void 0 : _a.name}: true`);
|
|
54
52
|
});
|
|
@@ -90,13 +88,17 @@ class ExpressionWriter {
|
|
|
90
88
|
this.write(expr.right);
|
|
91
89
|
}, operator === '?' ? 'some' : operator === '!' ? 'every' : 'none');
|
|
92
90
|
}
|
|
93
|
-
|
|
94
|
-
if ((0, ast_1.
|
|
91
|
+
isFieldAccess(expr) {
|
|
92
|
+
if ((0, ast_1.isThisExpr)(expr)) {
|
|
95
93
|
return true;
|
|
96
94
|
}
|
|
97
|
-
|
|
98
|
-
return
|
|
95
|
+
if ((0, ast_1.isMemberAccessExpr)(expr)) {
|
|
96
|
+
return this.isFieldAccess(expr.operand);
|
|
97
|
+
}
|
|
98
|
+
if ((0, ast_1.isReferenceExpr)(expr) && (0, ast_1.isDataModelField)(expr.target.ref)) {
|
|
99
|
+
return true;
|
|
99
100
|
}
|
|
101
|
+
return false;
|
|
100
102
|
}
|
|
101
103
|
guard(write) {
|
|
102
104
|
this.writer.write(`${AUX_GUARD_FIELD}: `);
|
|
@@ -106,10 +108,8 @@ class ExpressionWriter {
|
|
|
106
108
|
this.writer.write(this.plainExprBuilder.build(expr));
|
|
107
109
|
}
|
|
108
110
|
writeComparison(expr, operator) {
|
|
109
|
-
|
|
110
|
-
const
|
|
111
|
-
const rightIsFieldAccess = this.isFieldRef(expr.right) ||
|
|
112
|
-
this.isRelationFieldAccess(expr.right);
|
|
111
|
+
const leftIsFieldAccess = this.isFieldAccess(expr.left);
|
|
112
|
+
const rightIsFieldAccess = this.isFieldAccess(expr.right);
|
|
113
113
|
if (leftIsFieldAccess && rightIsFieldAccess) {
|
|
114
114
|
throw new types_1.GeneratorError(`Comparison between fields are not supported yet`);
|
|
115
115
|
}
|
|
@@ -133,13 +133,12 @@ class ExpressionWriter {
|
|
|
133
133
|
operand = expr.left;
|
|
134
134
|
operator = this.negateOperator(operator);
|
|
135
135
|
}
|
|
136
|
-
const type = (_a = fieldAccess.$resolvedType) === null || _a === void 0 ? void 0 : _a.decl;
|
|
137
136
|
this.writeFieldCondition(fieldAccess, () => {
|
|
138
|
-
this.
|
|
139
|
-
if (
|
|
137
|
+
this.block(() => {
|
|
138
|
+
if (this.isModelTyped(fieldAccess)) {
|
|
140
139
|
// comparing with an object, conver to "id" comparison instead
|
|
141
140
|
this.writer.write('id: ');
|
|
142
|
-
this.
|
|
141
|
+
this.block(() => {
|
|
143
142
|
this.writeOperator(operator, () => {
|
|
144
143
|
this.plain(operand);
|
|
145
144
|
this.writer.write('?.id');
|
|
@@ -151,14 +150,17 @@ class ExpressionWriter {
|
|
|
151
150
|
this.plain(operand);
|
|
152
151
|
});
|
|
153
152
|
}
|
|
154
|
-
}
|
|
153
|
+
},
|
|
154
|
+
// "this" expression is compiled away (to .id access), so we should
|
|
155
|
+
// avoid generating a new layer
|
|
156
|
+
!(0, ast_1.isThisExpr)(fieldAccess));
|
|
155
157
|
}, 'is');
|
|
156
158
|
}
|
|
157
159
|
writeOperator(operator, writeOperand) {
|
|
158
160
|
if (operator === '!=') {
|
|
159
161
|
// wrap a 'not'
|
|
160
162
|
this.writer.write('not: ');
|
|
161
|
-
this.
|
|
163
|
+
this.block(() => {
|
|
162
164
|
this.writeOperator('==', writeOperand);
|
|
163
165
|
});
|
|
164
166
|
}
|
|
@@ -171,7 +173,12 @@ class ExpressionWriter {
|
|
|
171
173
|
var _a, _b;
|
|
172
174
|
let selector;
|
|
173
175
|
let operand;
|
|
174
|
-
if ((0, ast_1.
|
|
176
|
+
if ((0, ast_1.isThisExpr)(fieldAccess)) {
|
|
177
|
+
// pass on
|
|
178
|
+
writeCondition();
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
else if ((0, ast_1.isReferenceExpr)(fieldAccess)) {
|
|
175
182
|
selector = (_a = fieldAccess.target.ref) === null || _a === void 0 ? void 0 : _a.name;
|
|
176
183
|
}
|
|
177
184
|
else if ((0, ast_1.isMemberAccessExpr)(fieldAccess)) {
|
|
@@ -184,11 +191,11 @@ class ExpressionWriter {
|
|
|
184
191
|
if (operand) {
|
|
185
192
|
// member access expression
|
|
186
193
|
this.writeFieldCondition(operand, () => {
|
|
187
|
-
this.
|
|
194
|
+
this.block(() => {
|
|
188
195
|
this.writer.write(selector + ': ');
|
|
189
196
|
if (this.isModelTyped(fieldAccess)) {
|
|
190
197
|
// expression is resolved to a model, generate relation query
|
|
191
|
-
this.
|
|
198
|
+
this.block(() => {
|
|
192
199
|
this.writer.write(`${relationOp}: `);
|
|
193
200
|
writeCondition();
|
|
194
201
|
});
|
|
@@ -197,13 +204,16 @@ class ExpressionWriter {
|
|
|
197
204
|
// generate plain query
|
|
198
205
|
writeCondition();
|
|
199
206
|
}
|
|
200
|
-
}
|
|
207
|
+
},
|
|
208
|
+
// if operand is "this", it doesn't really generate a new layer of query,
|
|
209
|
+
// so we should avoid generating a new block
|
|
210
|
+
!(0, ast_1.isThisExpr)(operand));
|
|
201
211
|
}, 'is');
|
|
202
212
|
}
|
|
203
213
|
else if (this.isModelTyped(fieldAccess)) {
|
|
204
214
|
// reference resolved to a model, generate relation query
|
|
205
215
|
this.writer.write(selector + ': ');
|
|
206
|
-
this.
|
|
216
|
+
this.block(() => {
|
|
207
217
|
this.writer.write(`${relationOp}: `);
|
|
208
218
|
writeCondition();
|
|
209
219
|
});
|
|
@@ -214,22 +224,18 @@ class ExpressionWriter {
|
|
|
214
224
|
writeCondition();
|
|
215
225
|
}
|
|
216
226
|
}
|
|
227
|
+
block(write, condition = true) {
|
|
228
|
+
if (condition) {
|
|
229
|
+
this.writer.block(write);
|
|
230
|
+
}
|
|
231
|
+
else {
|
|
232
|
+
write();
|
|
233
|
+
}
|
|
234
|
+
}
|
|
217
235
|
isModelTyped(expr) {
|
|
218
236
|
var _a;
|
|
219
237
|
return (0, ast_1.isDataModel)((_a = expr.$resolvedType) === null || _a === void 0 ? void 0 : _a.decl);
|
|
220
238
|
}
|
|
221
|
-
isRelationFieldAccess(expr) {
|
|
222
|
-
if ((0, ast_1.isMemberAccessExpr)(expr)) {
|
|
223
|
-
return this.isRelationFieldAccess(expr.operand);
|
|
224
|
-
}
|
|
225
|
-
if ((0, ast_1.isReferenceExpr)(expr) &&
|
|
226
|
-
(0, ast_1.isDataModelField)(expr.target.ref) &&
|
|
227
|
-
expr.target.ref.type.reference &&
|
|
228
|
-
(0, ast_1.isDataModel)(expr.target.ref.type.reference.ref)) {
|
|
229
|
-
return true;
|
|
230
|
-
}
|
|
231
|
-
return false;
|
|
232
|
-
}
|
|
233
239
|
mapOperator(operator) {
|
|
234
240
|
switch (operator) {
|
|
235
241
|
case '==':
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expression-writer.js","sourceRoot":"","sources":["../../../../src/generator/server/data/expression-writer.ts"],"names":[],"mappings":";;;;;AAAA,6CAa6B;AAE7B,uCAA6C;AAE7C,0FAAgE;AAEhE,MAAM,eAAe,GAAG,gBAAgB,CAAC;AAIzC,MAAqB,gBAAgB;IAGjC,YAA6B,MAAuB;QAAvB,WAAM,GAAN,MAAM,CAAiB;QAFnC,qBAAgB,GAAG,IAAI,kCAAsB,EAAE,CAAC;IAEV,CAAC;IAExD,KAAK,CAAC,IAAgB;QAClB,MAAM,MAAM,GAAG,GAAG,EAAE;YAChB,QAAQ,IAAI,CAAC,KAAK,EAAE;gBAChB,KAAK,iBAAW;oBACZ,IAAI,CAAC,YAAY,CAAC,IAAmB,CAAC,CAAC;oBACvC,MAAM;gBAEV,KAAK,eAAS;oBACV,IAAI,CAAC,UAAU,CAAC,IAAiB,CAAC,CAAC;oBACnC,MAAM;gBAEV,KAAK,gBAAU;oBACX,IAAI,CAAC,WAAW,CAAC,IAAkB,CAAC,CAAC;oBACrC,MAAM;gBAEV,KAAK,mBAAa;oBACd,IAAI,CAAC,cAAc,CAAC,IAAqB,CAAC,CAAC;oBAC3C,MAAM;gBAEV,KAAK,sBAAgB;oBACjB,IAAI,CAAC,iBAAiB,CAAC,IAAwB,CAAC,CAAC;oBACjD,MAAM;gBAEV
|
|
1
|
+
{"version":3,"file":"expression-writer.js","sourceRoot":"","sources":["../../../../src/generator/server/data/expression-writer.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,6 +11,8 @@ class PlainExpressionBuilder {
|
|
|
11
11
|
return this.array(expr);
|
|
12
12
|
case ast_1.NullExpr:
|
|
13
13
|
return this.null();
|
|
14
|
+
case ast_1.ThisExpr:
|
|
15
|
+
return this.this(expr);
|
|
14
16
|
case ast_1.ReferenceExpr:
|
|
15
17
|
return this.reference(expr);
|
|
16
18
|
case ast_1.InvocationExpr:
|
|
@@ -21,8 +23,17 @@ class PlainExpressionBuilder {
|
|
|
21
23
|
throw new types_1.GeneratorError(`Unsupported expression type: ${expr.$type}`);
|
|
22
24
|
}
|
|
23
25
|
}
|
|
26
|
+
this(expr) {
|
|
27
|
+
// "this" is mapped to id comparison
|
|
28
|
+
return 'id';
|
|
29
|
+
}
|
|
24
30
|
memberAccess(expr) {
|
|
25
|
-
|
|
31
|
+
if ((0, ast_1.isThisExpr)(expr.operand)) {
|
|
32
|
+
return expr.member.ref.name;
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
return `${this.build(expr.operand)}?.${expr.member.ref.name}`;
|
|
36
|
+
}
|
|
26
37
|
}
|
|
27
38
|
invocation(expr) {
|
|
28
39
|
var _a, _b;
|
|
@@ -32,7 +43,12 @@ class PlainExpressionBuilder {
|
|
|
32
43
|
return 'user';
|
|
33
44
|
}
|
|
34
45
|
reference(expr) {
|
|
35
|
-
|
|
46
|
+
if ((0, ast_1.isEnumField)(expr.target.ref)) {
|
|
47
|
+
return `${expr.target.ref.$container.name}.${expr.target.ref.name}`;
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
return expr.target.ref.name;
|
|
51
|
+
}
|
|
36
52
|
}
|
|
37
53
|
null() {
|
|
38
54
|
return 'null';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plain-expression-builder.js","sourceRoot":"","sources":["../../../../src/generator/server/data/plain-expression-builder.ts"],"names":[],"mappings":";;AAAA,uCAA6C;AAC7C,
|
|
1
|
+
{"version":3,"file":"plain-expression-builder.js","sourceRoot":"","sources":["../../../../src/generator/server/data/plain-expression-builder.ts"],"names":[],"mappings":";;AAAA,uCAA6C;AAC7C,6CAW6B;AAE7B,MAAqB,sBAAsB;IACvC,KAAK,CAAC,IAAgB;QAClB,QAAQ,IAAI,CAAC,KAAK,EAAE;YAChB,KAAK,iBAAW;gBACZ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAmB,CAAC,CAAC;YAE7C,KAAK,eAAS;gBACV,OAAO,IAAI,CAAC,KAAK,CAAC,IAAiB,CAAC,CAAC;YAEzC,KAAK,cAAQ;gBACT,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;YAEvB,KAAK,cAAQ;gBACT,OAAO,IAAI,CAAC,IAAI,CAAC,IAAgB,CAAC,CAAC;YAEvC,KAAK,mBAAa;gBACd,OAAO,IAAI,CAAC,SAAS,CAAC,IAAqB,CAAC,CAAC;YAEjD,KAAK,oBAAc;gBACf,OAAO,IAAI,CAAC,UAAU,CAAC,IAAsB,CAAC,CAAC;YAEnD,KAAK,sBAAgB;gBACjB,OAAO,IAAI,CAAC,YAAY,CAAC,IAAwB,CAAC,CAAC;YAEvD;gBACI,MAAM,IAAI,sBAAc,CACpB,gCAAgC,IAAI,CAAC,KAAK,EAAE,CAC/C,CAAC;SACT;IACL,CAAC;IAEO,IAAI,CAAC,IAAc;QACvB,oCAAoC;QACpC,OAAO,IAAI,CAAC;IAChB,CAAC;IAEO,YAAY,CAAC,IAAsB;QACvC,IAAI,IAAA,gBAAU,EAAC,IAAI,CAAC,OAAO,CAAC,EAAE;YAC1B,OAAO,IAAI,CAAC,MAAM,CAAC,GAAI,CAAC,IAAI,CAAC;SAChC;aAAM;YACH,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,GAAI,CAAC,IAAI,EAAE,CAAC;SAClE;IACL,CAAC;IAEO,UAAU,CAAC,IAAoB;;QACnC,IAAI,CAAA,MAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,0CAAE,IAAI,MAAK,MAAM,EAAE;YACpC,MAAM,IAAI,sBAAc,CACpB,yCAAyC,MAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,0CAAE,IAAI,EAAE,CACrE,CAAC;SACL;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;IAEO,SAAS,CAAC,IAAmB;QACjC,IAAI,IAAA,iBAAW,EAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;YAC9B,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;SACvE;aAAM;YACH,OAAO,IAAI,CAAC,MAAM,CAAC,GAAI,CAAC,IAAI,CAAC;SAChC;IACL,CAAC;IAEO,IAAI;QACR,OAAO,MAAM,CAAC;IAClB,CAAC;IAEO,KAAK,CAAC,IAAe;QACzB,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;IACxE,CAAC;IAEO,OAAO,CAAC,IAAiB;QAC7B,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE;YAChC,OAAO,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC;SAC5B;aAAM;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;SAChC;IACL,CAAC;CACJ;AA5ED,yCA4EC"}
|
|
@@ -38,18 +38,25 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
38
38
|
const ts_morph_1 = require("ts-morph");
|
|
39
39
|
const path = __importStar(require("path"));
|
|
40
40
|
const colors_1 = __importDefault(require("colors"));
|
|
41
|
+
const constants_1 = require("../constants");
|
|
41
42
|
class ServiceGenerator {
|
|
42
43
|
generate(context) {
|
|
43
44
|
return __awaiter(this, void 0, void 0, function* () {
|
|
44
45
|
const project = new ts_morph_1.Project();
|
|
45
|
-
const sf = project.createSourceFile(path.join(context.outDir, '
|
|
46
|
+
const sf = project.createSourceFile(path.join(context.outDir, 'index.ts'), undefined, { overwrite: true });
|
|
46
47
|
sf.addImportDeclaration({
|
|
47
48
|
namedImports: ['PrismaClient'],
|
|
48
49
|
moduleSpecifier: './.prisma',
|
|
49
50
|
});
|
|
51
|
+
sf.addImportDeclaration({
|
|
52
|
+
namedImports: ['Service', 'PolicyOperationKind', 'QueryContext'],
|
|
53
|
+
moduleSpecifier: constants_1.RUNTIME_PACKAGE,
|
|
54
|
+
isTypeOnly: true,
|
|
55
|
+
});
|
|
50
56
|
const cls = sf.addClass({
|
|
51
57
|
name: 'ZenStackService',
|
|
52
58
|
isExported: true,
|
|
59
|
+
implements: ['Service<PrismaClient>'],
|
|
53
60
|
});
|
|
54
61
|
cls.addMember({
|
|
55
62
|
kind: ts_morph_1.StructureKind.Property,
|
|
@@ -61,6 +68,49 @@ class ServiceGenerator {
|
|
|
61
68
|
})
|
|
62
69
|
.addBody()
|
|
63
70
|
.setBodyText('return this._prisma;');
|
|
71
|
+
cls
|
|
72
|
+
.addMethod({
|
|
73
|
+
name: 'resolveField',
|
|
74
|
+
isAsync: true,
|
|
75
|
+
parameters: [
|
|
76
|
+
{
|
|
77
|
+
name: 'model',
|
|
78
|
+
type: 'string',
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
name: 'field',
|
|
82
|
+
type: 'string',
|
|
83
|
+
},
|
|
84
|
+
],
|
|
85
|
+
})
|
|
86
|
+
.addBody().setBodyText(`
|
|
87
|
+
const module: any = await import('./query/guard');
|
|
88
|
+
return module._fieldMapping?.[model]?.[field];
|
|
89
|
+
`);
|
|
90
|
+
cls
|
|
91
|
+
.addMethod({
|
|
92
|
+
name: 'buildQueryGuard',
|
|
93
|
+
isAsync: true,
|
|
94
|
+
parameters: [
|
|
95
|
+
{
|
|
96
|
+
name: 'model',
|
|
97
|
+
type: 'string',
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
name: 'operation',
|
|
101
|
+
type: 'PolicyOperationKind',
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
name: 'context',
|
|
105
|
+
type: 'QueryContext',
|
|
106
|
+
},
|
|
107
|
+
],
|
|
108
|
+
})
|
|
109
|
+
.addBody().setBodyText(`
|
|
110
|
+
const module: any = await import('./query/guard');
|
|
111
|
+
const provider: (context: QueryContext) => any = module[model+ '_' + operation];
|
|
112
|
+
return provider(context);
|
|
113
|
+
`);
|
|
64
114
|
sf.addStatements(['export default new ZenStackService();']);
|
|
65
115
|
sf.formatText();
|
|
66
116
|
yield project.save();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/generator/service/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,uCAAkD;AAClD,2CAA6B;AAC7B,oDAA4B;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/generator/service/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,uCAAkD;AAClD,2CAA6B;AAC7B,oDAA4B;AAC5B,4CAA+C;AAE/C,MAAqB,gBAAgB;IAC3B,QAAQ,CAAC,OAAgB;;YAC3B,MAAM,OAAO,GAAG,IAAI,kBAAO,EAAE,CAAC;YAC9B,MAAM,EAAE,GAAG,OAAO,CAAC,gBAAgB,CAC/B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC,EACrC,SAAS,EACT,EAAE,SAAS,EAAE,IAAI,EAAE,CACtB,CAAC;YAEF,EAAE,CAAC,oBAAoB,CAAC;gBACpB,YAAY,EAAE,CAAC,cAAc,CAAC;gBAC9B,eAAe,EAAE,WAAW;aAC/B,CAAC,CAAC;YAEH,EAAE,CAAC,oBAAoB,CAAC;gBACpB,YAAY,EAAE,CAAC,SAAS,EAAE,qBAAqB,EAAE,cAAc,CAAC;gBAChE,eAAe,EAAE,2BAAe;gBAChC,UAAU,EAAE,IAAI;aACnB,CAAC,CAAC;YAEH,MAAM,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAC;gBACpB,IAAI,EAAE,iBAAiB;gBACvB,UAAU,EAAE,IAAI;gBAChB,UAAU,EAAE,CAAC,uBAAuB,CAAC;aACxC,CAAC,CAAC;YACH,GAAG,CAAC,SAAS,CAAC;gBACV,IAAI,EAAE,wBAAa,CAAC,QAAQ;gBAC5B,IAAI,EAAE,0BAA0B;gBAChC,WAAW,EAAE,oBAAoB;aACpC,CAAC,CAAC;YAEH,GAAG,CAAC,cAAc,CAAC;gBACf,IAAI,EAAE,IAAI;aACb,CAAC;iBACG,OAAO,EAAE;iBACT,WAAW,CAAC,sBAAsB,CAAC,CAAC;YAEzC,GAAG;iBACE,SAAS,CAAC;gBACP,IAAI,EAAE,cAAc;gBACpB,OAAO,EAAE,IAAI;gBACb,UAAU,EAAE;oBACR;wBACI,IAAI,EAAE,OAAO;wBACb,IAAI,EAAE,QAAQ;qBACjB;oBACD;wBACI,IAAI,EAAE,OAAO;wBACb,IAAI,EAAE,QAAQ;qBACjB;iBACJ;aACJ,CAAC;iBACD,OAAO,EAAE,CAAC,WAAW,CAAC;;;aAGtB,CAAC,CAAC;YAEP,GAAG;iBACE,SAAS,CAAC;gBACP,IAAI,EAAE,iBAAiB;gBACvB,OAAO,EAAE,IAAI;gBACb,UAAU,EAAE;oBACR;wBACI,IAAI,EAAE,OAAO;wBACb,IAAI,EAAE,QAAQ;qBACjB;oBACD;wBACI,IAAI,EAAE,WAAW;wBACjB,IAAI,EAAE,qBAAqB;qBAC9B;oBACD;wBACI,IAAI,EAAE,SAAS;wBACf,IAAI,EAAE,cAAc;qBACvB;iBACJ;aACJ,CAAC;iBACD,OAAO,EAAE,CAAC,WAAW,CAAC;;;;aAItB,CAAC,CAAC;YAEP,EAAE,CAAC,aAAa,CAAC,CAAC,uCAAuC,CAAC,CAAC,CAAC;YAE5D,EAAE,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;YAErB,OAAO,CAAC,GAAG,CAAC,gBAAM,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC,CAAC;QAChE,CAAC;KAAA;CACJ;AAzFD,mCAyFC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"target": "ES6",
|
|
4
|
+
"module": "CommonJS",
|
|
5
|
+
"lib": ["ESNext", "DOM"],
|
|
6
|
+
"sourceMap": true,
|
|
7
|
+
"outDir": ".",
|
|
8
|
+
"strict": true,
|
|
9
|
+
"moduleResolution": "node",
|
|
10
|
+
"esModuleInterop": true,
|
|
11
|
+
"skipLibCheck": true,
|
|
12
|
+
"declaration": true,
|
|
13
|
+
"resolveJsonModule": true
|
|
14
|
+
},
|
|
15
|
+
"include": ["**/*.ts"],
|
|
16
|
+
"exclude": ["node_modules", ".prisma"]
|
|
17
|
+
}
|