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.
Files changed (103) hide show
  1. package/LICENSE +21 -0
  2. package/bin/cli +3 -0
  3. package/out/cli/cli-util.js +64 -0
  4. package/out/cli/cli-util.js.map +1 -0
  5. package/out/cli/generator.js +1 -0
  6. package/out/cli/generator.js.map +1 -0
  7. package/out/cli/index.js +90 -0
  8. package/out/cli/index.js.map +1 -0
  9. package/out/extension.js +81 -0
  10. package/out/extension.js.map +1 -0
  11. package/out/generator/data-server/index.js +1 -0
  12. package/out/generator/data-server/index.js.map +1 -0
  13. package/out/generator/next-auth/index.js +196 -0
  14. package/out/generator/next-auth/index.js.map +1 -0
  15. package/out/generator/prisma/index.js +212 -0
  16. package/out/generator/prisma/index.js.map +1 -0
  17. package/out/generator/prisma/prisma-builder.js +307 -0
  18. package/out/generator/prisma/prisma-builder.js.map +1 -0
  19. package/out/generator/react-hooks/index.js +258 -0
  20. package/out/generator/react-hooks/index.js.map +1 -0
  21. package/out/generator/server/data/data-generator.js +376 -0
  22. package/out/generator/server/data/data-generator.js.map +1 -0
  23. package/out/generator/server/data/expression-writer.js +281 -0
  24. package/out/generator/server/data/expression-writer.js.map +1 -0
  25. package/out/generator/server/data/plain-expression-builder.js +53 -0
  26. package/out/generator/server/data/plain-expression-builder.js.map +1 -0
  27. package/out/generator/server/data-generator.js +82 -0
  28. package/out/generator/server/data-generator.js.map +1 -0
  29. package/out/generator/server/expression-writer.js +1 -0
  30. package/out/generator/server/expression-writer.js.map +1 -0
  31. package/out/generator/server/function/function-generator.js +50 -0
  32. package/out/generator/server/function/function-generator.js.map +1 -0
  33. package/out/generator/server/function-generator.js +13 -0
  34. package/out/generator/server/function-generator.js.map +1 -0
  35. package/out/generator/server/index.js +88 -0
  36. package/out/generator/server/index.js.map +1 -0
  37. package/out/generator/server/js-expression-builder.js +1 -0
  38. package/out/generator/server/js-expression-builder.js.map +1 -0
  39. package/out/generator/server/plain-expression-builder.js +1 -0
  40. package/out/generator/server/plain-expression-builder.js.map +1 -0
  41. package/out/generator/server/server-code-generator.js +3 -0
  42. package/out/generator/server/server-code-generator.js.map +1 -0
  43. package/out/generator/server/server-code-writer.js +1 -0
  44. package/out/generator/server/server-code-writer.js.map +1 -0
  45. package/out/generator/service/index.js +72 -0
  46. package/out/generator/service/index.js.map +1 -0
  47. package/out/generator/types.js +10 -0
  48. package/out/generator/types.js.map +1 -0
  49. package/out/generator/utils.js +10 -0
  50. package/out/generator/utils.js.map +1 -0
  51. package/out/language-server/generated/ast.js +386 -0
  52. package/out/language-server/generated/ast.js.map +1 -0
  53. package/out/language-server/generated/grammar.js +2193 -0
  54. package/out/language-server/generated/grammar.js.map +1 -0
  55. package/out/language-server/generated/module.js +23 -0
  56. package/out/language-server/generated/module.js.map +1 -0
  57. package/out/language-server/main.js +12 -0
  58. package/out/language-server/main.js.map +1 -0
  59. package/out/language-server/stdlib.zmodel +21 -0
  60. package/out/language-server/types.js +3 -0
  61. package/out/language-server/types.js.map +1 -0
  62. package/out/language-server/zmodel-index.js +38 -0
  63. package/out/language-server/zmodel-index.js.map +1 -0
  64. package/out/language-server/zmodel-linker.js +239 -0
  65. package/out/language-server/zmodel-linker.js.map +1 -0
  66. package/out/language-server/zmodel-module.js +51 -0
  67. package/out/language-server/zmodel-module.js.map +1 -0
  68. package/out/language-server/zmodel-scope.js +30 -0
  69. package/out/language-server/zmodel-scope.js.map +1 -0
  70. package/out/language-server/zmodel-validator.js +25 -0
  71. package/out/language-server/zmodel-validator.js.map +1 -0
  72. package/out/utils/indent-string.js +25 -0
  73. package/out/utils/indent-string.js.map +1 -0
  74. package/package.json +94 -0
  75. package/src/cli/cli-util.ts +80 -0
  76. package/src/cli/index.ts +80 -0
  77. package/src/extension.ts +76 -0
  78. package/src/generator/next-auth/index.ts +183 -0
  79. package/src/generator/prisma/index.ts +323 -0
  80. package/src/generator/prisma/prisma-builder.ts +366 -0
  81. package/src/generator/react-hooks/index.ts +267 -0
  82. package/src/generator/server/data/data-generator.ts +483 -0
  83. package/src/generator/server/data/expression-writer.ts +350 -0
  84. package/src/generator/server/data/plain-expression-builder.ts +72 -0
  85. package/src/generator/server/function/function-generator.ts +32 -0
  86. package/src/generator/server/index.ts +57 -0
  87. package/src/generator/server/server-code-generator.ts +6 -0
  88. package/src/generator/service/index.ts +43 -0
  89. package/src/generator/types.ts +16 -0
  90. package/src/generator/utils.ts +9 -0
  91. package/src/language-server/generated/ast.ts +603 -0
  92. package/src/language-server/generated/grammar.ts +2190 -0
  93. package/src/language-server/generated/module.ts +24 -0
  94. package/src/language-server/main.ts +12 -0
  95. package/src/language-server/stdlib.zmodel +21 -0
  96. package/src/language-server/types.ts +9 -0
  97. package/src/language-server/zmodel-index.ts +33 -0
  98. package/src/language-server/zmodel-linker.ts +407 -0
  99. package/src/language-server/zmodel-module.ts +90 -0
  100. package/src/language-server/zmodel-scope.ts +21 -0
  101. package/src/language-server/zmodel-validator.ts +35 -0
  102. package/src/language-server/zmodel.langium +186 -0
  103. 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":"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"}
@@ -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"}