zenstack 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/bin/cli +3 -0
- package/out/cli/cli-util.js +64 -0
- package/out/cli/cli-util.js.map +1 -0
- package/out/cli/generator.js +1 -0
- package/out/cli/generator.js.map +1 -0
- package/out/cli/index.js +90 -0
- package/out/cli/index.js.map +1 -0
- package/out/extension.js +81 -0
- package/out/extension.js.map +1 -0
- package/out/generator/data-server/index.js +1 -0
- package/out/generator/data-server/index.js.map +1 -0
- package/out/generator/next-auth/index.js +196 -0
- package/out/generator/next-auth/index.js.map +1 -0
- package/out/generator/prisma/index.js +212 -0
- package/out/generator/prisma/index.js.map +1 -0
- package/out/generator/prisma/prisma-builder.js +307 -0
- package/out/generator/prisma/prisma-builder.js.map +1 -0
- package/out/generator/react-hooks/index.js +258 -0
- package/out/generator/react-hooks/index.js.map +1 -0
- package/out/generator/server/data/data-generator.js +376 -0
- package/out/generator/server/data/data-generator.js.map +1 -0
- package/out/generator/server/data/expression-writer.js +281 -0
- package/out/generator/server/data/expression-writer.js.map +1 -0
- package/out/generator/server/data/plain-expression-builder.js +53 -0
- package/out/generator/server/data/plain-expression-builder.js.map +1 -0
- package/out/generator/server/data-generator.js +82 -0
- package/out/generator/server/data-generator.js.map +1 -0
- package/out/generator/server/expression-writer.js +1 -0
- package/out/generator/server/expression-writer.js.map +1 -0
- package/out/generator/server/function/function-generator.js +50 -0
- package/out/generator/server/function/function-generator.js.map +1 -0
- package/out/generator/server/function-generator.js +13 -0
- package/out/generator/server/function-generator.js.map +1 -0
- package/out/generator/server/index.js +88 -0
- package/out/generator/server/index.js.map +1 -0
- package/out/generator/server/js-expression-builder.js +1 -0
- package/out/generator/server/js-expression-builder.js.map +1 -0
- package/out/generator/server/plain-expression-builder.js +1 -0
- package/out/generator/server/plain-expression-builder.js.map +1 -0
- package/out/generator/server/server-code-generator.js +3 -0
- package/out/generator/server/server-code-generator.js.map +1 -0
- package/out/generator/server/server-code-writer.js +1 -0
- package/out/generator/server/server-code-writer.js.map +1 -0
- package/out/generator/service/index.js +72 -0
- package/out/generator/service/index.js.map +1 -0
- package/out/generator/types.js +10 -0
- package/out/generator/types.js.map +1 -0
- package/out/generator/utils.js +10 -0
- package/out/generator/utils.js.map +1 -0
- package/out/language-server/generated/ast.js +386 -0
- package/out/language-server/generated/ast.js.map +1 -0
- package/out/language-server/generated/grammar.js +2193 -0
- package/out/language-server/generated/grammar.js.map +1 -0
- package/out/language-server/generated/module.js +23 -0
- package/out/language-server/generated/module.js.map +1 -0
- package/out/language-server/main.js +12 -0
- package/out/language-server/main.js.map +1 -0
- package/out/language-server/stdlib.zmodel +21 -0
- package/out/language-server/types.js +3 -0
- package/out/language-server/types.js.map +1 -0
- package/out/language-server/zmodel-index.js +38 -0
- package/out/language-server/zmodel-index.js.map +1 -0
- package/out/language-server/zmodel-linker.js +239 -0
- package/out/language-server/zmodel-linker.js.map +1 -0
- package/out/language-server/zmodel-module.js +51 -0
- package/out/language-server/zmodel-module.js.map +1 -0
- package/out/language-server/zmodel-scope.js +30 -0
- package/out/language-server/zmodel-scope.js.map +1 -0
- package/out/language-server/zmodel-validator.js +25 -0
- package/out/language-server/zmodel-validator.js.map +1 -0
- package/out/utils/indent-string.js +25 -0
- package/out/utils/indent-string.js.map +1 -0
- package/package.json +94 -0
- package/src/cli/cli-util.ts +80 -0
- package/src/cli/index.ts +80 -0
- package/src/extension.ts +76 -0
- package/src/generator/next-auth/index.ts +183 -0
- package/src/generator/prisma/index.ts +323 -0
- package/src/generator/prisma/prisma-builder.ts +366 -0
- package/src/generator/react-hooks/index.ts +267 -0
- package/src/generator/server/data/data-generator.ts +483 -0
- package/src/generator/server/data/expression-writer.ts +350 -0
- package/src/generator/server/data/plain-expression-builder.ts +72 -0
- package/src/generator/server/function/function-generator.ts +32 -0
- package/src/generator/server/index.ts +57 -0
- package/src/generator/server/server-code-generator.ts +6 -0
- package/src/generator/service/index.ts +43 -0
- package/src/generator/types.ts +16 -0
- package/src/generator/utils.ts +9 -0
- package/src/language-server/generated/ast.ts +603 -0
- package/src/language-server/generated/grammar.ts +2190 -0
- package/src/language-server/generated/module.ts +24 -0
- package/src/language-server/main.ts +12 -0
- package/src/language-server/stdlib.zmodel +21 -0
- package/src/language-server/types.ts +9 -0
- package/src/language-server/zmodel-index.ts +33 -0
- package/src/language-server/zmodel-linker.ts +407 -0
- package/src/language-server/zmodel-module.ts +90 -0
- package/src/language-server/zmodel-scope.ts +21 -0
- package/src/language-server/zmodel-validator.ts +35 -0
- package/src/language-server/zmodel.langium +186 -0
- package/src/utils/indent-string.ts +41 -0
|
@@ -0,0 +1,281 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const ast_1 = require("../../../language-server/generated/ast");
|
|
7
|
+
const types_1 = require("../../types");
|
|
8
|
+
const plain_expression_builder_1 = __importDefault(require("./plain-expression-builder"));
|
|
9
|
+
const AUX_GUARD_FIELD = 'zenstack_guard';
|
|
10
|
+
class ExpressionWriter {
|
|
11
|
+
constructor(writer) {
|
|
12
|
+
this.writer = writer;
|
|
13
|
+
this.plainExprBuilder = new plain_expression_builder_1.default();
|
|
14
|
+
}
|
|
15
|
+
write(expr) {
|
|
16
|
+
const _write = () => {
|
|
17
|
+
switch (expr.$type) {
|
|
18
|
+
case ast_1.LiteralExpr:
|
|
19
|
+
this.writeLiteral(expr);
|
|
20
|
+
break;
|
|
21
|
+
case ast_1.UnaryExpr:
|
|
22
|
+
this.writeUnary(expr);
|
|
23
|
+
break;
|
|
24
|
+
case ast_1.BinaryExpr:
|
|
25
|
+
this.writeBinary(expr);
|
|
26
|
+
break;
|
|
27
|
+
case ast_1.ReferenceExpr:
|
|
28
|
+
this.writeReference(expr);
|
|
29
|
+
break;
|
|
30
|
+
case ast_1.MemberAccessExpr:
|
|
31
|
+
this.writeMemberAccess(expr);
|
|
32
|
+
break;
|
|
33
|
+
case ast_1.ThisExpr:
|
|
34
|
+
throw new Error('Not implemented');
|
|
35
|
+
default:
|
|
36
|
+
throw new Error(`Not implemented: ${expr.$type}`);
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
this.writer.block(_write);
|
|
40
|
+
}
|
|
41
|
+
writeReference(expr) {
|
|
42
|
+
if ((0, ast_1.isEnumField)(expr.target.ref)) {
|
|
43
|
+
throw new Error('Not implemented');
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
this.writer.write(`${expr.target.ref.name}: true`);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
writeMemberAccess(expr) {
|
|
50
|
+
this.writeFieldCondition(expr.operand, () => {
|
|
51
|
+
this.writer.block(() => {
|
|
52
|
+
var _a;
|
|
53
|
+
this.writer.write(`${(_a = expr.member.ref) === null || _a === void 0 ? void 0 : _a.name}: true`);
|
|
54
|
+
});
|
|
55
|
+
}, 'is');
|
|
56
|
+
}
|
|
57
|
+
writeExprList(exprs) {
|
|
58
|
+
this.writer.writeLine('[');
|
|
59
|
+
for (let i = 0; i < exprs.length; i++) {
|
|
60
|
+
this.write(exprs[i]);
|
|
61
|
+
if (i !== exprs.length - 1) {
|
|
62
|
+
this.writer.writeLine(',');
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
this.writer.writeLine(']');
|
|
66
|
+
}
|
|
67
|
+
writeBinary(expr) {
|
|
68
|
+
switch (expr.operator) {
|
|
69
|
+
case '&&':
|
|
70
|
+
case '||':
|
|
71
|
+
this.writeLogical(expr, expr.operator);
|
|
72
|
+
break;
|
|
73
|
+
case '==':
|
|
74
|
+
case '!=':
|
|
75
|
+
case '>':
|
|
76
|
+
case '>=':
|
|
77
|
+
case '<':
|
|
78
|
+
case '<=':
|
|
79
|
+
this.writeComparison(expr, expr.operator);
|
|
80
|
+
break;
|
|
81
|
+
case '?':
|
|
82
|
+
case '!':
|
|
83
|
+
case '^':
|
|
84
|
+
this.writeCollectionPredicate(expr, expr.operator);
|
|
85
|
+
break;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
writeCollectionPredicate(expr, operator) {
|
|
89
|
+
this.writeFieldCondition(expr.left, () => {
|
|
90
|
+
this.write(expr.right);
|
|
91
|
+
}, operator === '?' ? 'some' : operator === '!' ? 'every' : 'none');
|
|
92
|
+
}
|
|
93
|
+
isFieldRef(expr) {
|
|
94
|
+
if ((0, ast_1.isReferenceExpr)(expr) && (0, ast_1.isDataModelField)(expr.target.ref)) {
|
|
95
|
+
return true;
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
return false;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
guard(write) {
|
|
102
|
+
this.writer.write(`${AUX_GUARD_FIELD}: `);
|
|
103
|
+
write();
|
|
104
|
+
}
|
|
105
|
+
plain(expr) {
|
|
106
|
+
this.writer.write(this.plainExprBuilder.build(expr));
|
|
107
|
+
}
|
|
108
|
+
writeComparison(expr, operator) {
|
|
109
|
+
var _a;
|
|
110
|
+
const leftIsFieldAccess = this.isFieldRef(expr.left) || this.isRelationFieldAccess(expr.left);
|
|
111
|
+
const rightIsFieldAccess = this.isFieldRef(expr.right) ||
|
|
112
|
+
this.isRelationFieldAccess(expr.right);
|
|
113
|
+
if (leftIsFieldAccess && rightIsFieldAccess) {
|
|
114
|
+
throw new types_1.GeneratorError(`Comparison between fields are not supported yet`);
|
|
115
|
+
}
|
|
116
|
+
if (!leftIsFieldAccess && !rightIsFieldAccess) {
|
|
117
|
+
// compile down to a plain expression
|
|
118
|
+
this.guard(() => {
|
|
119
|
+
this.plain(expr.left);
|
|
120
|
+
this.writer.write(' ' + operator + ' ');
|
|
121
|
+
this.plain(expr.right);
|
|
122
|
+
});
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
let fieldAccess;
|
|
126
|
+
let operand;
|
|
127
|
+
if (leftIsFieldAccess) {
|
|
128
|
+
fieldAccess = expr.left;
|
|
129
|
+
operand = expr.right;
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
fieldAccess = expr.right;
|
|
133
|
+
operand = expr.left;
|
|
134
|
+
operator = this.negateOperator(operator);
|
|
135
|
+
}
|
|
136
|
+
const type = (_a = fieldAccess.$resolvedType) === null || _a === void 0 ? void 0 : _a.decl;
|
|
137
|
+
this.writeFieldCondition(fieldAccess, () => {
|
|
138
|
+
this.writer.block(() => {
|
|
139
|
+
if ((0, ast_1.isDataModel)(type)) {
|
|
140
|
+
// comparing with an object, conver to "id" comparison instead
|
|
141
|
+
this.writer.write('id: ');
|
|
142
|
+
this.writer.block(() => {
|
|
143
|
+
this.writeOperator(operator, () => {
|
|
144
|
+
this.plain(operand);
|
|
145
|
+
this.writer.write('?.id');
|
|
146
|
+
});
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
else {
|
|
150
|
+
this.writeOperator(operator, () => {
|
|
151
|
+
this.plain(operand);
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
});
|
|
155
|
+
}, 'is');
|
|
156
|
+
}
|
|
157
|
+
writeOperator(operator, writeOperand) {
|
|
158
|
+
if (operator === '!=') {
|
|
159
|
+
// wrap a 'not'
|
|
160
|
+
this.writer.write('not: ');
|
|
161
|
+
this.writer.block(() => {
|
|
162
|
+
this.writeOperator('==', writeOperand);
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
else {
|
|
166
|
+
this.writer.write(`${this.mapOperator(operator)}: `);
|
|
167
|
+
writeOperand();
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
writeFieldCondition(fieldAccess, writeCondition, relationOp) {
|
|
171
|
+
var _a, _b;
|
|
172
|
+
let selector;
|
|
173
|
+
let operand;
|
|
174
|
+
if ((0, ast_1.isReferenceExpr)(fieldAccess)) {
|
|
175
|
+
selector = (_a = fieldAccess.target.ref) === null || _a === void 0 ? void 0 : _a.name;
|
|
176
|
+
}
|
|
177
|
+
else if ((0, ast_1.isMemberAccessExpr)(fieldAccess)) {
|
|
178
|
+
selector = (_b = fieldAccess.member.ref) === null || _b === void 0 ? void 0 : _b.name;
|
|
179
|
+
operand = fieldAccess.operand;
|
|
180
|
+
}
|
|
181
|
+
else {
|
|
182
|
+
throw new types_1.GeneratorError(`Unsupported expression type: ${fieldAccess.$type}`);
|
|
183
|
+
}
|
|
184
|
+
if (operand) {
|
|
185
|
+
// member access expression
|
|
186
|
+
this.writeFieldCondition(operand, () => {
|
|
187
|
+
this.writer.block(() => {
|
|
188
|
+
this.writer.write(selector + ': ');
|
|
189
|
+
if (this.isModelTyped(fieldAccess)) {
|
|
190
|
+
// expression is resolved to a model, generate relation query
|
|
191
|
+
this.writer.block(() => {
|
|
192
|
+
this.writer.write(`${relationOp}: `);
|
|
193
|
+
writeCondition();
|
|
194
|
+
});
|
|
195
|
+
}
|
|
196
|
+
else {
|
|
197
|
+
// generate plain query
|
|
198
|
+
writeCondition();
|
|
199
|
+
}
|
|
200
|
+
});
|
|
201
|
+
}, 'is');
|
|
202
|
+
}
|
|
203
|
+
else if (this.isModelTyped(fieldAccess)) {
|
|
204
|
+
// reference resolved to a model, generate relation query
|
|
205
|
+
this.writer.write(selector + ': ');
|
|
206
|
+
this.writer.block(() => {
|
|
207
|
+
this.writer.write(`${relationOp}: `);
|
|
208
|
+
writeCondition();
|
|
209
|
+
});
|
|
210
|
+
}
|
|
211
|
+
else {
|
|
212
|
+
// generate a plain query
|
|
213
|
+
this.writer.write(selector + ': ');
|
|
214
|
+
writeCondition();
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
isModelTyped(expr) {
|
|
218
|
+
var _a;
|
|
219
|
+
return (0, ast_1.isDataModel)((_a = expr.$resolvedType) === null || _a === void 0 ? void 0 : _a.decl);
|
|
220
|
+
}
|
|
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
|
+
mapOperator(operator) {
|
|
234
|
+
switch (operator) {
|
|
235
|
+
case '==':
|
|
236
|
+
return 'equals';
|
|
237
|
+
case '!=':
|
|
238
|
+
throw new Error('Operation != should have been compiled away');
|
|
239
|
+
case '>':
|
|
240
|
+
return 'gt';
|
|
241
|
+
case '>=':
|
|
242
|
+
return 'ge';
|
|
243
|
+
case '<':
|
|
244
|
+
return 'lt';
|
|
245
|
+
case '<=':
|
|
246
|
+
return 'le';
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
negateOperator(operator) {
|
|
250
|
+
switch (operator) {
|
|
251
|
+
case '>':
|
|
252
|
+
return '<=';
|
|
253
|
+
case '<':
|
|
254
|
+
return '>=';
|
|
255
|
+
case '>=':
|
|
256
|
+
return '<';
|
|
257
|
+
case '<=':
|
|
258
|
+
return '>';
|
|
259
|
+
default:
|
|
260
|
+
return operator;
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
writeLogical(expr, operator) {
|
|
264
|
+
this.writer.writeLine(`${operator === '&&' ? 'AND' : 'OR'}: `);
|
|
265
|
+
this.writeExprList([expr.left, expr.right]);
|
|
266
|
+
}
|
|
267
|
+
writeUnary(expr) {
|
|
268
|
+
if (expr.operator !== '!') {
|
|
269
|
+
throw new types_1.GeneratorError(`Unary operator "${expr.operator}" is not supported`);
|
|
270
|
+
}
|
|
271
|
+
this.writer.writeLine('NOT: ');
|
|
272
|
+
this.write(expr.operand);
|
|
273
|
+
}
|
|
274
|
+
writeLiteral(expr) {
|
|
275
|
+
this.guard(() => {
|
|
276
|
+
this.plain(expr);
|
|
277
|
+
});
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
exports.default = ExpressionWriter;
|
|
281
|
+
//# sourceMappingURL=expression-writer.js.map
|
|
@@ -0,0 +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,KAAK,cAAQ;oBACT,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;gBAEvC;oBACI,MAAM,IAAI,KAAK,CAAC,oBAAoB,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;aACzD;QACL,CAAC,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC;IAEO,cAAc,CAAC,IAAmB;QACtC,IAAI,IAAA,iBAAW,EAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;YAC9B,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;SACtC;aAAM;YACH,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,GAAI,CAAC,IAAI,QAAQ,CAAC,CAAC;SACvD;IACL,CAAC;IAEO,iBAAiB,CAAC,IAAsB;QAC5C,IAAI,CAAC,mBAAmB,CACpB,IAAI,CAAC,OAAO,EACZ,GAAG,EAAE;YACD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE;;gBACnB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,MAAA,IAAI,CAAC,MAAM,CAAC,GAAG,0CAAE,IAAI,QAAQ,CAAC,CAAC;YACxD,CAAC,CAAC,CAAC;QACP,CAAC,EACD,IAAI,CACP,CAAC;IACN,CAAC;IAEO,aAAa,CAAC,KAAmB;QACrC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACnC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACrB,IAAI,CAAC,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;gBACxB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;aAC9B;SACJ;QACD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC;IAEO,WAAW,CAAC,IAAgB;QAChC,QAAQ,IAAI,CAAC,QAAQ,EAAE;YACnB,KAAK,IAAI,CAAC;YACV,KAAK,IAAI;gBACL,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACvC,MAAM;YAEV,KAAK,IAAI,CAAC;YACV,KAAK,IAAI,CAAC;YACV,KAAK,GAAG,CAAC;YACT,KAAK,IAAI,CAAC;YACV,KAAK,GAAG,CAAC;YACT,KAAK,IAAI;gBACL,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAC1C,MAAM;YAEV,KAAK,GAAG,CAAC;YACT,KAAK,GAAG,CAAC;YACT,KAAK,GAAG;gBACJ,IAAI,CAAC,wBAAwB,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACnD,MAAM;SACb;IACL,CAAC;IAEO,wBAAwB,CAAC,IAAgB,EAAE,QAAgB;QAC/D,IAAI,CAAC,mBAAmB,CACpB,IAAI,CAAC,IAAI,EACT,GAAG,EAAE;YACD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3B,CAAC,EACD,QAAQ,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,KAAK,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAClE,CAAC;IACN,CAAC;IAEO,UAAU,CAAC,IAAgB;QAC/B,IAAI,IAAA,qBAAe,EAAC,IAAI,CAAC,IAAI,IAAA,sBAAgB,EAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;YAC5D,OAAO,IAAI,CAAC;SACf;aAAM;YACH,OAAO,KAAK,CAAC;SAChB;IACL,CAAC;IAEO,KAAK,CAAC,KAAiB;QAC3B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,eAAe,IAAI,CAAC,CAAC;QAC1C,KAAK,EAAE,CAAC;IACZ,CAAC;IAEO,KAAK,CAAC,IAAgB;QAC1B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IACzD,CAAC;IAEO,eAAe,CAAC,IAAgB,EAAE,QAA4B;;QAClE,MAAM,iBAAiB,GACnB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxE,MAAM,kBAAkB,GACpB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;YAC3B,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAE3C,IAAI,iBAAiB,IAAI,kBAAkB,EAAE;YACzC,MAAM,IAAI,sBAAc,CACpB,iDAAiD,CACpD,CAAC;SACL;QAED,IAAI,CAAC,iBAAiB,IAAI,CAAC,kBAAkB,EAAE;YAC3C,qCAAqC;YACrC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE;gBACZ,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACtB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,QAAQ,GAAG,GAAG,CAAC,CAAC;gBACxC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC3B,CAAC,CAAC,CAAC;YAEH,OAAO;SACV;QAED,IAAI,WAAuB,CAAC;QAC5B,IAAI,OAAmB,CAAC;QACxB,IAAI,iBAAiB,EAAE;YACnB,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC;YACxB,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC;SACxB;aAAM;YACH,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC;YACzB,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;YACpB,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;SAC5C;QAED,MAAM,IAAI,GAAG,MAAC,WAAyB,CAAC,aAAa,0CAAE,IAAI,CAAC;QAE5D,IAAI,CAAC,mBAAmB,CACpB,WAAW,EACX,GAAG,EAAE;YACD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE;gBACnB,IAAI,IAAA,iBAAW,EAAC,IAAI,CAAC,EAAE;oBACnB,8DAA8D;oBAC9D,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;oBAC1B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE;wBACnB,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,GAAG,EAAE;4BAC9B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;4BACpB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;wBAC9B,CAAC,CAAC,CAAC;oBACP,CAAC,CAAC,CAAC;iBACN;qBAAM;oBACH,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,GAAG,EAAE;wBAC9B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;oBACxB,CAAC,CAAC,CAAC;iBACN;YACL,CAAC,CAAC,CAAC;QACP,CAAC,EACD,IAAI,CACP,CAAC;IACN,CAAC;IAEO,aAAa,CACjB,QAA4B,EAC5B,YAAwB;QAExB,IAAI,QAAQ,KAAK,IAAI,EAAE;YACnB,eAAe;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC3B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE;gBACnB,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;YAC3C,CAAC,CAAC,CAAC;SACN;aAAM;YACH,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACrD,YAAY,EAAE,CAAC;SAClB;IACL,CAAC;IAEO,mBAAmB,CACvB,WAAuB,EACvB,cAA0B,EAC1B,UAA4C;;QAE5C,IAAI,QAAgB,CAAC;QACrB,IAAI,OAA+B,CAAC;QAEpC,IAAI,IAAA,qBAAe,EAAC,WAAW,CAAC,EAAE;YAC9B,QAAQ,GAAG,MAAA,WAAW,CAAC,MAAM,CAAC,GAAG,0CAAE,IAAK,CAAC;SAC5C;aAAM,IAAI,IAAA,wBAAkB,EAAC,WAAW,CAAC,EAAE;YACxC,QAAQ,GAAG,MAAA,WAAW,CAAC,MAAM,CAAC,GAAG,0CAAE,IAAK,CAAC;YACzC,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;SACjC;aAAM;YACH,MAAM,IAAI,sBAAc,CACpB,gCAAgC,WAAW,CAAC,KAAK,EAAE,CACtD,CAAC;SACL;QAED,IAAI,OAAO,EAAE;YACT,2BAA2B;YAC3B,IAAI,CAAC,mBAAmB,CACpB,OAAO,EACP,GAAG,EAAE;gBACD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE;oBACnB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC;oBACnC,IAAI,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE;wBAChC,6DAA6D;wBAC7D,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE;4BACnB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,UAAU,IAAI,CAAC,CAAC;4BACrC,cAAc,EAAE,CAAC;wBACrB,CAAC,CAAC,CAAC;qBACN;yBAAM;wBACH,uBAAuB;wBACvB,cAAc,EAAE,CAAC;qBACpB;gBACL,CAAC,CAAC,CAAC;YACP,CAAC,EACD,IAAI,CACP,CAAC;SACL;aAAM,IAAI,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE;YACvC,yDAAyD;YACzD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC;YACnC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE;gBACnB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,UAAU,IAAI,CAAC,CAAC;gBACrC,cAAc,EAAE,CAAC;YACrB,CAAC,CAAC,CAAC;SACN;aAAM;YACH,yBAAyB;YACzB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC;YACnC,cAAc,EAAE,CAAC;SACpB;IACL,CAAC;IAEO,YAAY,CAAC,IAAgB;;QACjC,OAAO,IAAA,iBAAW,EAAC,MAAC,IAAkB,CAAC,aAAa,0CAAE,IAAI,CAAC,CAAC;IAChE,CAAC;IAEO,qBAAqB,CAAC,IAAgB;QAC1C,IAAI,IAAA,wBAAkB,EAAC,IAAI,CAAC,EAAE;YAC1B,OAAO,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SACnD;QAED,IACI,IAAA,qBAAe,EAAC,IAAI,CAAC;YACrB,IAAA,sBAAgB,EAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;YACjC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS;YAC9B,IAAA,iBAAW,EAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EACjD;YACE,OAAO,IAAI,CAAC;SACf;QAED,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,WAAW,CAAC,QAA+C;QACvD,QAAQ,QAAQ,EAAE;YACd,KAAK,IAAI;gBACL,OAAO,QAAQ,CAAC;YACpB,KAAK,IAAI;gBACL,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;YACnE,KAAK,GAAG;gBACJ,OAAO,IAAI,CAAC;YAChB,KAAK,IAAI;gBACL,OAAO,IAAI,CAAC;YAChB,KAAK,GAAG;gBACJ,OAAO,IAAI,CAAC;YAChB,KAAK,IAAI;gBACL,OAAO,IAAI,CAAC;SACnB;IACL,CAAC;IAEO,cAAc,CAAC,QAA+C;QAClE,QAAQ,QAAQ,EAAE;YACd,KAAK,GAAG;gBACJ,OAAO,IAAI,CAAC;YAChB,KAAK,GAAG;gBACJ,OAAO,IAAI,CAAC;YAChB,KAAK,IAAI;gBACL,OAAO,GAAG,CAAC;YACf,KAAK,IAAI;gBACL,OAAO,GAAG,CAAC;YACf;gBACI,OAAO,QAAQ,CAAC;SACvB;IACL,CAAC;IAEO,YAAY,CAAC,IAAgB,EAAE,QAAqB;QACxD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;QAC/D,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAChD,CAAC;IAEO,UAAU,CAAC,IAAe;QAC9B,IAAI,IAAI,CAAC,QAAQ,KAAK,GAAG,EAAE;YACvB,MAAM,IAAI,sBAAc,CACpB,mBAAmB,IAAI,CAAC,QAAQ,oBAAoB,CACvD,CAAC;SACL;QAED,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAC/B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAEO,YAAY,CAAC,IAAiB;QAClC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE;YACZ,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC;IACP,CAAC;CACJ;AAtUD,mCAsUC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const types_1 = require("../../types");
|
|
4
|
+
const ast_1 = require("../../../language-server/generated/ast");
|
|
5
|
+
class PlainExpressionBuilder {
|
|
6
|
+
build(expr) {
|
|
7
|
+
switch (expr.$type) {
|
|
8
|
+
case ast_1.LiteralExpr:
|
|
9
|
+
return this.literal(expr);
|
|
10
|
+
case ast_1.ArrayExpr:
|
|
11
|
+
return this.array(expr);
|
|
12
|
+
case ast_1.NullExpr:
|
|
13
|
+
return this.null();
|
|
14
|
+
case ast_1.ReferenceExpr:
|
|
15
|
+
return this.reference(expr);
|
|
16
|
+
case ast_1.InvocationExpr:
|
|
17
|
+
return this.invocation(expr);
|
|
18
|
+
case ast_1.MemberAccessExpr:
|
|
19
|
+
return this.memberAccess(expr);
|
|
20
|
+
default:
|
|
21
|
+
throw new types_1.GeneratorError(`Unsupported expression type: ${expr.$type}`);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
memberAccess(expr) {
|
|
25
|
+
return `${this.build(expr.operand)}?.${expr.member.ref.name}`;
|
|
26
|
+
}
|
|
27
|
+
invocation(expr) {
|
|
28
|
+
var _a, _b;
|
|
29
|
+
if (((_a = expr.function.ref) === null || _a === void 0 ? void 0 : _a.name) !== 'auth') {
|
|
30
|
+
throw new types_1.GeneratorError(`Function invocation is not supported: ${(_b = expr.function.ref) === null || _b === void 0 ? void 0 : _b.name}`);
|
|
31
|
+
}
|
|
32
|
+
return 'user';
|
|
33
|
+
}
|
|
34
|
+
reference(expr) {
|
|
35
|
+
return expr.target.ref.name;
|
|
36
|
+
}
|
|
37
|
+
null() {
|
|
38
|
+
return 'null';
|
|
39
|
+
}
|
|
40
|
+
array(expr) {
|
|
41
|
+
return `[${expr.items.map((item) => this.build(item)).join(', ')}]`;
|
|
42
|
+
}
|
|
43
|
+
literal(expr) {
|
|
44
|
+
if (typeof expr.value === 'string') {
|
|
45
|
+
return `'${expr.value}'`;
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
return expr.value.toString();
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
exports.default = PlainExpressionBuilder;
|
|
53
|
+
//# sourceMappingURL=plain-expression-builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plain-expression-builder.js","sourceRoot":"","sources":["../../../../src/generator/server/data/plain-expression-builder.ts"],"names":[],"mappings":";;AAAA,uCAA6C;AAC7C,6CAQ6B;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,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,YAAY,CAAC,IAAsB;QACvC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,GAAI,CAAC,IAAI,EAAE,CAAC;IACnE,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,OAAO,IAAI,CAAC,MAAM,CAAC,GAAI,CAAC,IAAI,CAAC;IACjC,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;AA5DD,yCA4DC"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
'use strict';var __createBinding=this&&this.__createBinding||(Object.create?function(o,m,k,k2){if(k2===undefined)k2=k;var desc=Object.getOwnPropertyDescriptor(m,k);if(!desc||('get'in desc?!m.__esModule:desc.writable||desc.configurable)){desc={enumerable:true,get:function(){return m[k];}};}Object.defineProperty(o,k2,desc);}:function(o,m,k,k2){if(k2===undefined)k2=k;o[k2]=m[k];});var __setModuleDefault=this&&this.__setModuleDefault||(Object.create?function(o,v){Object.defineProperty(o,'default',{enumerable:true,value:v});}:function(o,v){o['default']=v;});var __importStar=this&&this.__importStar||function(mod){if(mod&&mod.__esModule)return mod;var result={};if(mod!=null)for(var k in mod)if(k!=='default'&&Object.prototype.hasOwnProperty.call(mod,k))__createBinding(result,mod,k);__setModuleDefault(result,mod);return result;};var __importDefault=this&&this.__importDefault||function(mod){return mod&&mod.__esModule?mod:{'default':mod};};Object.defineProperty(exports,'__esModule',{value:true});const ts_morph_1=require('ts-morph');const path=__importStar(require('path'));const change_case_1=require('change-case');const utils_1=require('../utils');const expression_writer_1=__importDefault(require('./expression-writer'));class DataServerGenerator{generate(project,context){const models=(0,utils_1.extractDataModelsWithAllowRules)(context.schema);this.generateIndex(models,project,context);this.generateUtils(project,context);models.forEach(model=>this.generateForModel(model,project,context));}generateIndex(models,project,context){const content=`
|
|
2
|
+
import type { NextApiRequest, NextApiResponse } from 'next';
|
|
3
|
+
import { RequestionHandlerOptions } from '..';
|
|
4
|
+
${models.map(model=>this.writeModelImport(model)).join('\n')}
|
|
5
|
+
|
|
6
|
+
export default async function (
|
|
7
|
+
req: NextApiRequest,
|
|
8
|
+
res: NextApiResponse,
|
|
9
|
+
path: string[],
|
|
10
|
+
options: RequestionHandlerOptions
|
|
11
|
+
) {
|
|
12
|
+
const [type, ...rest] = path;
|
|
13
|
+
switch (type) {
|
|
14
|
+
${models.map(model=>this.writeModelEntrance(model)).join('\n')}
|
|
15
|
+
default:
|
|
16
|
+
res.status(404).json({ error: 'Unknown type: ' + type });
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
`;const sf=project.createSourceFile(path.join(context.outDir,'server/data/index.ts'),content,{overwrite:true});sf.formatText();}generateUtils(project,context){const content=`
|
|
20
|
+
import type { NextApiRequest, NextApiResponse } from 'next';
|
|
21
|
+
import { RequestionHandlerOptions } from '..';
|
|
22
|
+
|
|
23
|
+
export async function getUser(
|
|
24
|
+
req: NextApiRequest,
|
|
25
|
+
res: NextApiResponse,
|
|
26
|
+
options: RequestionHandlerOptions
|
|
27
|
+
): Promise<{id: string}> {
|
|
28
|
+
return await options.getServerUser(req, res);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export function unauthorized(res: NextApiResponse) {
|
|
32
|
+
res.status(403).json({ message: 'Unauthorized' });
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export function notFound(res: NextApiResponse) {
|
|
36
|
+
res.status(404).json({ message: 'Entity not found' });
|
|
37
|
+
}
|
|
38
|
+
`;const sf=project.createSourceFile(path.join(context.outDir,'server/data/_utils.ts'),content,{overwrite:true});sf.formatText();}writeModelImport(model){return`import ${(0,change_case_1.camelCase)(model.name)}Handler from './${(0,change_case_1.paramCase)(model.name)}';`;}writeModelEntrance(model){return`
|
|
39
|
+
case '${(0,change_case_1.camelCase)(model.name)}':
|
|
40
|
+
return ${(0,change_case_1.camelCase)(model.name)}Handler(req, res, rest, options);
|
|
41
|
+
`;}generateForModel(model,project,context){const content=`
|
|
42
|
+
import type { NextApiRequest, NextApiResponse } from 'next';
|
|
43
|
+
import type { Prisma } from '@zenstack/.prisma';
|
|
44
|
+
import { RequestionHandlerOptions } from '..';
|
|
45
|
+
import service from '@zenstack/service';
|
|
46
|
+
import { getUser, notFound } from './_utils';
|
|
47
|
+
|
|
48
|
+
export default async function (
|
|
49
|
+
req: NextApiRequest,
|
|
50
|
+
res: NextApiResponse,
|
|
51
|
+
path: string[],
|
|
52
|
+
options: RequestionHandlerOptions
|
|
53
|
+
) {
|
|
54
|
+
switch (req.method) {
|
|
55
|
+
case 'GET':
|
|
56
|
+
if (path.length > 0) {
|
|
57
|
+
return get(req, res, path[0], options);
|
|
58
|
+
} else {
|
|
59
|
+
return find(req, res, options);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
case 'POST':
|
|
63
|
+
return create(req, res, options);
|
|
64
|
+
|
|
65
|
+
case 'PUT':
|
|
66
|
+
return update(req, res, path[0], options);
|
|
67
|
+
|
|
68
|
+
case 'DELETE':
|
|
69
|
+
return del(req, res, path[0], options);
|
|
70
|
+
|
|
71
|
+
default:
|
|
72
|
+
throw new Error('Unsupported HTTP method: ' + req.method);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
`;const sf=project.createSourceFile(path.join(context.outDir,`server/data/${(0,change_case_1.paramCase)(model.name)}.ts`),content,{overwrite:true});this.generateFind(sf,model);this.generateGet(sf,model);sf.formatText();}generateFind(sourceFile,model){const func=sourceFile.addFunction({name:'find',isAsync:true,parameters:[{name:'req',type:'NextApiRequest'},{name:'res',type:'NextApiResponse'},{name:'options',type:'RequestionHandlerOptions'}]}).addBody();func.addStatements([`const user = await getUser(req, res, options);`,`const condition: Prisma.${model.name}FindManyArgs = req.query.q? (JSON.parse(req.query.q as string)): {};`]);func.addVariableStatement({declarationKind:ts_morph_1.VariableDeclarationKind.Const,declarations:[{name:'args',initializer:writer=>{writer.block(()=>{writer.writeLine('...condition,');writer.write('where:');writer.block(()=>{writer.write('AND: [');writer.write('{ ...condition.where },');this.writeFindArgs(writer,model);writer.write(']');});});}}]});func.addStatements([`res.status(200).send(await service.db.${(0,change_case_1.camelCase)(model.name)}.findMany(args));`]);}generateGet(sourceFile,model){const func=sourceFile.addFunction({name:'get',isAsync:true,parameters:[{name:'req',type:'NextApiRequest'},{name:'res',type:'NextApiResponse'},{name:'id',type:'string'},{name:'options',type:'RequestionHandlerOptions'}]}).addBody();func.addStatements([`const user = await getUser(req, res, options);`,`const condition: Prisma.${model.name}FindManyArgs = req.query.q? (JSON.parse(req.query.q as string)): {};`]);func.addVariableStatement({declarationKind:ts_morph_1.VariableDeclarationKind.Const,declarations:[{name:'args',initializer:writer=>{writer.block(()=>{writer.writeLine('...condition,');writer.write('where:');writer.block(()=>{writer.write('AND: [');writer.write('{ id },');this.writeFindArgs(writer,model);writer.write(']');});});}}]});func.addStatements([`
|
|
76
|
+
const r = await service.db.${(0,change_case_1.camelCase)(model.name)}.findMany(args);
|
|
77
|
+
if (r.length == 0) {
|
|
78
|
+
notFound(res);
|
|
79
|
+
} else {
|
|
80
|
+
res.status(200).send(r[0]);
|
|
81
|
+
}
|
|
82
|
+
`]);}writeFindArgs(writer,model){writer.block(()=>{writer.writeLine('AND: [');this.writeDenyRules(writer,model);this.writeAllowRules(writer,model);writer.writeLine(']');});}writeDenyRules(writer,model){const attrs=model.attributes.filter(attr=>{var _a;return attr.args.length>0&&((_a=attr.decl.ref)===null||_a===void 0?void 0:_a.name)==='deny'&&attr.args.length>1;});attrs.forEach(attr=>this.writeDenyRule(writer,model,attr.args[1].value));}writeDenyRule(writer,model,rule){writer.block(()=>{writer.writeLine('NOT: ');new expression_writer_1.default(writer).write(rule);});}writeAllowRules(writer,model){}}exports.default=DataServerGenerator;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-generator.js","sourceRoot":"","sources":["../../../src/generator/server/data-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
'use strict';var __importDefault=this&&this.__importDefault||function(mod){return mod&&mod.__esModule?mod:{'default':mod};};Object.defineProperty(exports,'__esModule',{value:true});const ast_1=require('../../language-server/generated/ast');const types_1=require('../types');const plain_expression_builder_1=__importDefault(require('./plain-expression-builder'));const AUX_GUARD_FIELD='zenstack_guard';class ExpressionWriter{constructor(writer){this.writer=writer;this.plainExprBuilder=new plain_expression_builder_1.default();}write(expr){const _write=()=>{switch(expr.$type){case ast_1.LiteralExpr:this.writeLiteral(expr);break;case ast_1.UnaryExpr:this.writeUnary(expr);break;case ast_1.BinaryExpr:this.writeBinary(expr);break;case ast_1.ReferenceExpr:this.writeReference(expr);break;case ast_1.MemberAccessExpr:this.writeMemberAccess(expr);break;case ast_1.ThisExpr:throw new Error('Not implemented');default:throw new Error(`Not implemented: ${expr.$type}`);}};this.writer.block(_write);}writeReference(expr){if(!(0,ast_1.isDataModelField)(expr.target.ref)){throw new types_1.GeneratorError('must be a field in current model');}this.writer.write(`${expr.target.ref.name}: true`);}writeMemberAccess(expr){var _a;this.write(expr.operand);this.writer.write('.'+((_a=expr.member.ref)===null||_a===void 0?void 0:_a.name));}writeExprList(exprs){this.writer.writeLine('[');for(let i=0;i<exprs.length;i++){this.write(exprs[i]);if(i!==exprs.length-1){this.writer.writeLine(',');}}this.writer.writeLine(']');}writeBinary(expr){switch(expr.operator){case'&&':case'||':this.writeLogical(expr,expr.operator);break;case'==':case'!=':case'>':case'>=':case'<':case'<=':this.writeComparison(expr,expr.operator);break;case'?':case'!':case'^':this.writeCollectionPredicate(expr,expr.operator);break;}}writeCollectionPredicate(expr,operator){this.writeFieldCondition(expr.left,()=>{this.write(expr.right);},operator==='?'?'some':operator==='!'?'every':'none');}isFieldRef(expr){if((0,ast_1.isReferenceExpr)(expr)&&(0,ast_1.isDataModelField)(expr.target.ref)){return true;}else{return false;}}guard(write){this.writer.write(`${AUX_GUARD_FIELD}: `);write();}plain(expr){this.writer.write(this.plainExprBuilder.build(expr));}writeComparison(expr,operator){var _a;const leftIsFieldAccess=this.isFieldRef(expr.left)||this.isRelationFieldAccess(expr.left);const rightIsFieldAccess=this.isFieldRef(expr.right)||this.isRelationFieldAccess(expr.right);if(leftIsFieldAccess&&rightIsFieldAccess){throw new types_1.GeneratorError(`Comparison between fields are not supported yet`);}if(!leftIsFieldAccess&&!rightIsFieldAccess){this.guard(()=>{this.plain(expr.left);this.writer.write(' '+operator+' ');this.plain(expr.right);});return;}let fieldAccess;let operand;if(leftIsFieldAccess){fieldAccess=expr.left;operand=expr.right;}else{fieldAccess=expr.right;operand=expr.left;operator=this.negateOperator(operator);}const type=(_a=fieldAccess.$resolvedType)===null||_a===void 0?void 0:_a.decl;this.writeFieldCondition(fieldAccess,()=>{this.writer.block(()=>{if((0,ast_1.isDataModel)(type)){this.writer.write('id: ');this.writer.block(()=>{this.writeOperator(operator,()=>{this.plain(operand);this.writer.write('.id');});});}else{this.writeOperator(operator,()=>{this.plain(operand);});}});},'is');}writeOperator(operator,writeOperand){if(operator==='!='){this.writer.write('not: ');this.writer.block(()=>{this.writeOperator('==',writeOperand);});}else{this.writer.write(`${this.mapOperator(operator)}: `);writeOperand();}}writeFieldCondition(fieldAccess,writeCondition,relationOp){var _a,_b;let selector;let operand;if((0,ast_1.isReferenceExpr)(fieldAccess)){selector=(_a=fieldAccess.target.ref)===null||_a===void 0?void 0:_a.name;}else if((0,ast_1.isMemberAccessExpr)(fieldAccess)){selector=(_b=fieldAccess.member.ref)===null||_b===void 0?void 0:_b.name;operand=fieldAccess.operand;}else{throw new types_1.GeneratorError(`Unsupported expression type: ${fieldAccess.$type}`);}if(operand){this.writeFieldCondition(operand,()=>{this.writer.block(()=>{this.writer.write(selector+': ');if(this.isModelTyped(fieldAccess)){this.writer.block(()=>{this.writer.write(`${relationOp}: `);writeCondition();});}else{writeCondition();}});},'is');}else if(this.isModelTyped(fieldAccess)){this.writer.write(selector+': ');this.writer.block(()=>{this.writer.write(`${relationOp}: `);writeCondition();});}else{this.writer.write(selector+': ');writeCondition();}}isModelTyped(expr){var _a;return(0,ast_1.isDataModel)((_a=expr.$resolvedType)===null||_a===void 0?void 0:_a.decl);}isRelationFieldAccess(expr){if((0,ast_1.isMemberAccessExpr)(expr)){return this.isRelationFieldAccess(expr.operand);}if((0,ast_1.isReferenceExpr)(expr)&&(0,ast_1.isDataModelField)(expr.target.ref)&&expr.target.ref.type.reference&&(0,ast_1.isDataModel)(expr.target.ref.type.reference.ref)){return true;}return false;}mapOperator(operator){switch(operator){case'==':return'equals';case'!=':return'not_equal';case'>':return'gt';case'>=':return'ge';case'<':return'lt';case'<=':return'le';}}negateOperator(operator){switch(operator){case'>':return'<=';case'<':return'>=';case'>=':return'<';case'<=':return'>';default:return operator;}}writeLogical(expr,operator){this.writer.writeLine(`${operator==='&&'?'AND':'OR'}: `);this.writeExprList([expr.left,expr.right]);}writeUnary(expr){if(expr.operator!=='!'){throw new types_1.GeneratorError(`Unary operator "${expr.operator}" is not supported`);}this.writer.writeLine('NOT: ');this.write(expr.operand);}writeLiteral(expr){this.guard(()=>{this.plain(expr);});}}exports.default=ExpressionWriter;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expression-writer.js","sourceRoot":"","sources":["../../../src/generator/server/expression-writer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
const path = __importStar(require("path"));
|
|
27
|
+
class FunctionServerGenerator {
|
|
28
|
+
generate(project, context) {
|
|
29
|
+
this.generateIndex(project, context);
|
|
30
|
+
}
|
|
31
|
+
generateIndex(project, context) {
|
|
32
|
+
const content = `
|
|
33
|
+
import type { NextApiRequest, NextApiResponse } from 'next';
|
|
34
|
+
import { RequestHandlerOptions } from '..';
|
|
35
|
+
|
|
36
|
+
export default async function (
|
|
37
|
+
req: NextApiRequest,
|
|
38
|
+
res: NextApiResponse,
|
|
39
|
+
path: string[],
|
|
40
|
+
options: RequestHandlerOptions
|
|
41
|
+
) {
|
|
42
|
+
throw new Error('Not implemented');
|
|
43
|
+
}
|
|
44
|
+
`;
|
|
45
|
+
const sf = project.createSourceFile(path.join(context.outDir, 'server/function/index.ts'), content, { overwrite: true });
|
|
46
|
+
sf.formatText();
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
exports.default = FunctionServerGenerator;
|
|
50
|
+
//# sourceMappingURL=function-generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"function-generator.js","sourceRoot":"","sources":["../../../../src/generator/server/function/function-generator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAEA,2CAA6B;AAG7B,MAAqB,uBAAuB;IACxC,QAAQ,CAAC,OAAgB,EAAE,OAAgB;QACvC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACzC,CAAC;IAEO,aAAa,CAAC,OAAgB,EAAE,OAAgB;QACpD,MAAM,OAAO,GAAG;;;;;;;;;;;;aAYX,CAAC;QACN,MAAM,EAAE,GAAG,OAAO,CAAC,gBAAgB,CAC/B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,0BAA0B,CAAC,EACrD,OAAO,EACP,EAAE,SAAS,EAAE,IAAI,EAAE,CACtB,CAAC;QACF,EAAE,CAAC,UAAU,EAAE,CAAC;IACpB,CAAC;CACJ;AA1BD,0CA0BC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
'use strict';var __createBinding=this&&this.__createBinding||(Object.create?function(o,m,k,k2){if(k2===undefined)k2=k;var desc=Object.getOwnPropertyDescriptor(m,k);if(!desc||('get'in desc?!m.__esModule:desc.writable||desc.configurable)){desc={enumerable:true,get:function(){return m[k];}};}Object.defineProperty(o,k2,desc);}:function(o,m,k,k2){if(k2===undefined)k2=k;o[k2]=m[k];});var __setModuleDefault=this&&this.__setModuleDefault||(Object.create?function(o,v){Object.defineProperty(o,'default',{enumerable:true,value:v});}:function(o,v){o['default']=v;});var __importStar=this&&this.__importStar||function(mod){if(mod&&mod.__esModule)return mod;var result={};if(mod!=null)for(var k in mod)if(k!=='default'&&Object.prototype.hasOwnProperty.call(mod,k))__createBinding(result,mod,k);__setModuleDefault(result,mod);return result;};Object.defineProperty(exports,'__esModule',{value:true});const path=__importStar(require('path'));class FunctionServerGenerator{generate(project,context){this.generateIndex(project,context);}generateIndex(project,context){const content=`
|
|
2
|
+
import type { NextApiRequest, NextApiResponse } from 'next';
|
|
3
|
+
import { RequestionHandlerOptions } from '..';
|
|
4
|
+
|
|
5
|
+
export default async function (
|
|
6
|
+
req: NextApiRequest,
|
|
7
|
+
res: NextApiResponse,
|
|
8
|
+
path: string[],
|
|
9
|
+
options: RequestionHandlerOptions
|
|
10
|
+
) {
|
|
11
|
+
throw new Error('Not implemented');
|
|
12
|
+
}
|
|
13
|
+
`;const sf=project.createSourceFile(path.join(context.outDir,'server/function/index.ts'),content,{overwrite:true});sf.formatText();}}exports.default=FunctionServerGenerator;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"function-generator.js","sourceRoot":"","sources":["../../../src/generator/server/function-generator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAEA,2CAA6B;AAG7B,MAAqB,uBAAuB;IACxC,QAAQ,CAAC,OAAgB,EAAE,OAAgB;QACvC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACzC,CAAC;IAEO,aAAa,CAAC,OAAgB,EAAE,OAAgB;QACpD,MAAM,OAAO,GAAG;;;;;;;;;;;;aAYX,CAAC;QACN,MAAM,EAAE,GAAG,OAAO,CAAC,gBAAgB,CAC/B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,0BAA0B,CAAC,EACrD,OAAO,EACP,EAAE,SAAS,EAAE,IAAI,EAAE,CACtB,CAAC;QACF,EAAE,CAAC,UAAU,EAAE,CAAC;IACpB,CAAC;CACJ;AA1BD,0CA0BC"}
|