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,88 @@
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
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
+ return new (P || (P = Promise))(function (resolve, reject) {
28
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
29
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
30
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
31
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
32
+ });
33
+ };
34
+ var __importDefault = (this && this.__importDefault) || function (mod) {
35
+ return (mod && mod.__esModule) ? mod : { "default": mod };
36
+ };
37
+ Object.defineProperty(exports, "__esModule", { value: true });
38
+ const ts_morph_1 = require("ts-morph");
39
+ const path = __importStar(require("path"));
40
+ const data_generator_1 = __importDefault(require("./data/data-generator"));
41
+ const function_generator_1 = __importDefault(require("./function/function-generator"));
42
+ class ServerGenerator {
43
+ generate(context) {
44
+ return __awaiter(this, void 0, void 0, function* () {
45
+ const project = new ts_morph_1.Project();
46
+ this.generateIndex(project, context);
47
+ new data_generator_1.default().generate(project, context);
48
+ new function_generator_1.default().generate(project, context);
49
+ yield project.save();
50
+ });
51
+ }
52
+ generateIndex(project, context) {
53
+ const content = `
54
+ import type { NextApiRequest, NextApiResponse } from 'next';
55
+ import dataHandler from './data';
56
+ import functionHandler from './function';
57
+
58
+ export type AuthUser = { id: string } & Record<string, any>;
59
+
60
+ export type RequestHandlerOptions = {
61
+ getServerUser: (
62
+ req: NextApiRequest,
63
+ res: NextApiResponse
64
+ ) => Promise<AuthUser | undefined>;
65
+ };
66
+
67
+ export function RequestHandler(options: RequestHandlerOptions) {
68
+ return async (req: NextApiRequest, res: NextApiResponse) => {
69
+ const [route, ...rest] = req.query.path as string[];
70
+ switch (route) {
71
+ case 'data':
72
+ return dataHandler(req, res, rest, options);
73
+
74
+ case 'function':
75
+ return functionHandler(req, res, rest, options);
76
+
77
+ default:
78
+ res.status(404).json({ error: 'Unknown route: ' + route });
79
+ }
80
+ };
81
+ }
82
+ `;
83
+ const sf = project.createSourceFile(path.join(context.outDir, 'server/index.ts'), content, { overwrite: true });
84
+ sf.formatText();
85
+ }
86
+ }
87
+ exports.default = ServerGenerator;
88
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/generator/server/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAmC;AAEnC,2CAA6B;AAC7B,2EAAwD;AACxD,uFAAoE;AAEpE,MAAqB,eAAe;IAC1B,QAAQ,CAAC,OAAgB;;YAC3B,MAAM,OAAO,GAAG,IAAI,kBAAO,EAAE,CAAC;YAE9B,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAErC,IAAI,wBAAmB,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACrD,IAAI,4BAAuB,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAEzD,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;QACzB,CAAC;KAAA;IAED,aAAa,CAAC,OAAgB,EAAE,OAAgB;QAC5C,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SA6Bf,CAAC;QACF,MAAM,EAAE,GAAG,OAAO,CAAC,gBAAgB,CAC/B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,iBAAiB,CAAC,EAC5C,OAAO,EACP,EAAE,SAAS,EAAE,IAAI,EAAE,CACtB,CAAC;QACF,EAAE,CAAC,UAAU,EAAE,CAAC;IACpB,CAAC;CACJ;AAlDD,kCAkDC"}
@@ -0,0 +1 @@
1
+ 'use strict';Object.defineProperty(exports,'__esModule',{value:true});const types_1=require('../types');const ast_1=require('../../language-server/generated/ast');class JsExpressionBuilder{build(expr){switch(expr.$type){case ast_1.LiteralExpr:return this.literal(expr);case ast_1.ArrayExpr:return this.array(expr);case ast_1.NullExpr:return this.null();case ast_1.ReferenceExpr:return this.reference(expr);case ast_1.InvocationExpr:return this.invocation(expr);case ast_1.MemberAccessExpr:return this.memberAccess(expr);default:throw new types_1.GeneratorError(`Unsupported expression type: ${expr.$type}`);}}memberAccess(expr){return`${this.build(expr.operand)}.${expr.member.ref.name}`;}invocation(expr){var _a,_b;if(((_a=expr.function.ref)===null||_a===void 0?void 0:_a.name)!=='auth'){throw new types_1.GeneratorError(`Function invocation is not supported: ${(_b=expr.function.ref)===null||_b===void 0?void 0:_b.name}`);}return'user';}reference(expr){return expr.target.ref.name;}null(){return'null';}array(expr){return`[${expr.items.map(item=>this.build(item)).join(', ')}]`;}literal(expr){if(typeof expr.value==='string'){return`'${expr.value}'`;}else{return expr.value.toString();}}}exports.default=JsExpressionBuilder;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"js-expression-builder.js","sourceRoot":"","sources":["../../../src/generator/server/js-expression-builder.ts"],"names":[],"mappings":";;AAAA,oCAA0C;AAC1C,6DAQ6C;AAE7C,MAAqB,mBAAmB;IACpC,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,IAAI,IAAI,CAAC,MAAM,CAAC,GAAI,CAAC,IAAI,EAAE,CAAC;IAClE,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,sCA4DC"}
@@ -0,0 +1 @@
1
+ 'use strict';Object.defineProperty(exports,'__esModule',{value:true});const types_1=require('../types');const ast_1=require('../../language-server/generated/ast');class PlainExpressionBuilder{build(expr){switch(expr.$type){case ast_1.LiteralExpr:return this.literal(expr);case ast_1.ArrayExpr:return this.array(expr);case ast_1.NullExpr:return this.null();case ast_1.ReferenceExpr:return this.reference(expr);case ast_1.InvocationExpr:return this.invocation(expr);case ast_1.MemberAccessExpr:return this.memberAccess(expr);default:throw new types_1.GeneratorError(`Unsupported expression type: ${expr.$type}`);}}memberAccess(expr){return`${this.build(expr.operand)}.${expr.member.ref.name}`;}invocation(expr){var _a,_b;if(((_a=expr.function.ref)===null||_a===void 0?void 0:_a.name)!=='auth'){throw new types_1.GeneratorError(`Function invocation is not supported: ${(_b=expr.function.ref)===null||_b===void 0?void 0:_b.name}`);}return'user';}reference(expr){return expr.target.ref.name;}null(){return'null';}array(expr){return`[${expr.items.map(item=>this.build(item)).join(', ')}]`;}literal(expr){if(typeof expr.value==='string'){return`'${expr.value}'`;}else{return expr.value.toString();}}}exports.default=PlainExpressionBuilder;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plain-expression-builder.js","sourceRoot":"","sources":["../../../src/generator/server/plain-expression-builder.ts"],"names":[],"mappings":";;AAAA,oCAA0C;AAC1C,6DAQ6C;AAE7C,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,IAAI,IAAI,CAAC,MAAM,CAAC,GAAI,CAAC,IAAI,EAAE,CAAC;IAClE,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,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=server-code-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server-code-generator.js","sourceRoot":"","sources":["../../../src/generator/server/server-code-generator.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ 'use strict';Object.defineProperty(exports,'__esModule',{value:true});
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server-code-writer.js","sourceRoot":"","sources":["../../../src/generator/server/server-code-writer.ts"],"names":[],"mappings":""}
@@ -0,0 +1,72 @@
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
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
+ return new (P || (P = Promise))(function (resolve, reject) {
28
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
29
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
30
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
31
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
32
+ });
33
+ };
34
+ var __importDefault = (this && this.__importDefault) || function (mod) {
35
+ return (mod && mod.__esModule) ? mod : { "default": mod };
36
+ };
37
+ Object.defineProperty(exports, "__esModule", { value: true });
38
+ const ts_morph_1 = require("ts-morph");
39
+ const path = __importStar(require("path"));
40
+ const colors_1 = __importDefault(require("colors"));
41
+ class ServiceGenerator {
42
+ generate(context) {
43
+ return __awaiter(this, void 0, void 0, function* () {
44
+ const project = new ts_morph_1.Project();
45
+ const sf = project.createSourceFile(path.join(context.outDir, 'service.ts'), undefined, { overwrite: true });
46
+ sf.addImportDeclaration({
47
+ namedImports: ['PrismaClient'],
48
+ moduleSpecifier: './.prisma',
49
+ });
50
+ const cls = sf.addClass({
51
+ name: 'ZenStackService',
52
+ isExported: true,
53
+ });
54
+ cls.addMember({
55
+ kind: ts_morph_1.StructureKind.Property,
56
+ name: 'private readonly _prisma',
57
+ initializer: 'new PrismaClient()',
58
+ });
59
+ cls.addGetAccessor({
60
+ name: 'db',
61
+ })
62
+ .addBody()
63
+ .setBodyText('return this._prisma;');
64
+ sf.addStatements(['export default new ZenStackService();']);
65
+ sf.formatText();
66
+ yield project.save();
67
+ console.log(colors_1.default.blue(` ✔️ ZenStack service generated`));
68
+ });
69
+ }
70
+ }
71
+ exports.default = ServiceGenerator;
72
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/generator/service/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,uCAAkD;AAClD,2CAA6B;AAC7B,oDAA4B;AAE5B,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,YAAY,CAAC,EACvC,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,MAAM,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAC;gBACpB,IAAI,EAAE,iBAAiB;gBACvB,UAAU,EAAE,IAAI;aACnB,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,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;AArCD,mCAqCC"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GeneratorError = void 0;
4
+ class GeneratorError extends Error {
5
+ constructor(message) {
6
+ super(message);
7
+ }
8
+ }
9
+ exports.GeneratorError = GeneratorError;
10
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/generator/types.ts"],"names":[],"mappings":";;;AAWA,MAAa,cAAe,SAAQ,KAAK;IACrC,YAAY,OAAe;QACvB,KAAK,CAAC,OAAO,CAAC,CAAC;IACnB,CAAC;CACJ;AAJD,wCAIC"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.extractDataModelsWithAllowRules = void 0;
4
+ const ast_1 = require("../language-server/generated/ast");
5
+ function extractDataModelsWithAllowRules(model) {
6
+ return model.declarations.filter((d) => (0, ast_1.isDataModel)(d) &&
7
+ !!d.attributes.find((attr) => { var _a; return ((_a = attr.decl.ref) === null || _a === void 0 ? void 0 : _a.name) === 'allow'; }));
8
+ }
9
+ exports.extractDataModelsWithAllowRules = extractDataModelsWithAllowRules;
10
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/generator/utils.ts"],"names":[],"mappings":";;;AAAA,6CAAoE;AAEpE,SAAgB,+BAA+B,CAAC,KAAY;IACxD,OAAO,KAAK,CAAC,YAAY,CAAC,MAAM,CAC5B,CAAC,CAAC,EAAE,EAAE,CACF,IAAA,iBAAW,EAAC,CAAC,CAAC;QACd,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,WAAC,OAAA,CAAA,MAAA,IAAI,CAAC,IAAI,CAAC,GAAG,0CAAE,IAAI,MAAK,OAAO,CAAA,EAAA,CAAC,CACtD,CAAC;AACrB,CAAC;AAND,0EAMC"}
@@ -0,0 +1,386 @@
1
+ "use strict";
2
+ /******************************************************************************
3
+ * This file was generated by langium-cli 0.4.0.
4
+ * DO NOT EDIT MANUALLY!
5
+ ******************************************************************************/
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.isLiteralExpr = exports.LiteralExpr = exports.isInvocationExpr = exports.InvocationExpr = exports.isFunctionParamType = exports.FunctionParamType = exports.isFunctionParam = exports.FunctionParam = exports.isFunction = exports.Function = exports.isEnumField = exports.EnumField = exports.isEnum = exports.Enum = exports.isDataSourceField = exports.DataSourceField = exports.isDataSource = exports.DataSource = exports.isDataModelFieldType = exports.DataModelFieldType = exports.isDataModelFieldAttribute = exports.DataModelFieldAttribute = exports.isDataModelField = exports.DataModelField = exports.isDataModelAttribute = exports.DataModelAttribute = exports.isDataModel = exports.DataModel = exports.isBinaryExpr = exports.BinaryExpr = exports.isAttributeParamType = exports.AttributeParamType = exports.isAttributeParam = exports.AttributeParam = exports.isAttributeArg = exports.AttributeArg = exports.isAttribute = exports.Attribute = exports.isArrayExpr = exports.ArrayExpr = exports.isArgument = exports.Argument = exports.isTypeDeclaration = exports.TypeDeclaration = exports.isReferenceTarget = exports.ReferenceTarget = exports.isExpression = exports.Expression = exports.isAbstractDeclaration = exports.AbstractDeclaration = void 0;
8
+ exports.reflection = exports.ZModelAstReflection = exports.isUnaryExpr = exports.UnaryExpr = exports.isThisExpr = exports.ThisExpr = exports.isReferenceExpr = exports.ReferenceExpr = exports.isReferenceArg = exports.ReferenceArg = exports.isNullExpr = exports.NullExpr = exports.isModel = exports.Model = exports.isMemberAccessExpr = exports.MemberAccessExpr = void 0;
9
+ /* eslint-disable @typescript-eslint/array-type */
10
+ /* eslint-disable @typescript-eslint/no-empty-interface */
11
+ const langium_1 = require("langium");
12
+ exports.AbstractDeclaration = 'AbstractDeclaration';
13
+ function isAbstractDeclaration(item) {
14
+ return exports.reflection.isInstance(item, exports.AbstractDeclaration);
15
+ }
16
+ exports.isAbstractDeclaration = isAbstractDeclaration;
17
+ exports.Expression = 'Expression';
18
+ function isExpression(item) {
19
+ return exports.reflection.isInstance(item, exports.Expression);
20
+ }
21
+ exports.isExpression = isExpression;
22
+ exports.ReferenceTarget = 'ReferenceTarget';
23
+ function isReferenceTarget(item) {
24
+ return exports.reflection.isInstance(item, exports.ReferenceTarget);
25
+ }
26
+ exports.isReferenceTarget = isReferenceTarget;
27
+ exports.TypeDeclaration = 'TypeDeclaration';
28
+ function isTypeDeclaration(item) {
29
+ return exports.reflection.isInstance(item, exports.TypeDeclaration);
30
+ }
31
+ exports.isTypeDeclaration = isTypeDeclaration;
32
+ exports.Argument = 'Argument';
33
+ function isArgument(item) {
34
+ return exports.reflection.isInstance(item, exports.Argument);
35
+ }
36
+ exports.isArgument = isArgument;
37
+ exports.ArrayExpr = 'ArrayExpr';
38
+ function isArrayExpr(item) {
39
+ return exports.reflection.isInstance(item, exports.ArrayExpr);
40
+ }
41
+ exports.isArrayExpr = isArrayExpr;
42
+ exports.Attribute = 'Attribute';
43
+ function isAttribute(item) {
44
+ return exports.reflection.isInstance(item, exports.Attribute);
45
+ }
46
+ exports.isAttribute = isAttribute;
47
+ exports.AttributeArg = 'AttributeArg';
48
+ function isAttributeArg(item) {
49
+ return exports.reflection.isInstance(item, exports.AttributeArg);
50
+ }
51
+ exports.isAttributeArg = isAttributeArg;
52
+ exports.AttributeParam = 'AttributeParam';
53
+ function isAttributeParam(item) {
54
+ return exports.reflection.isInstance(item, exports.AttributeParam);
55
+ }
56
+ exports.isAttributeParam = isAttributeParam;
57
+ exports.AttributeParamType = 'AttributeParamType';
58
+ function isAttributeParamType(item) {
59
+ return exports.reflection.isInstance(item, exports.AttributeParamType);
60
+ }
61
+ exports.isAttributeParamType = isAttributeParamType;
62
+ exports.BinaryExpr = 'BinaryExpr';
63
+ function isBinaryExpr(item) {
64
+ return exports.reflection.isInstance(item, exports.BinaryExpr);
65
+ }
66
+ exports.isBinaryExpr = isBinaryExpr;
67
+ exports.DataModel = 'DataModel';
68
+ function isDataModel(item) {
69
+ return exports.reflection.isInstance(item, exports.DataModel);
70
+ }
71
+ exports.isDataModel = isDataModel;
72
+ exports.DataModelAttribute = 'DataModelAttribute';
73
+ function isDataModelAttribute(item) {
74
+ return exports.reflection.isInstance(item, exports.DataModelAttribute);
75
+ }
76
+ exports.isDataModelAttribute = isDataModelAttribute;
77
+ exports.DataModelField = 'DataModelField';
78
+ function isDataModelField(item) {
79
+ return exports.reflection.isInstance(item, exports.DataModelField);
80
+ }
81
+ exports.isDataModelField = isDataModelField;
82
+ exports.DataModelFieldAttribute = 'DataModelFieldAttribute';
83
+ function isDataModelFieldAttribute(item) {
84
+ return exports.reflection.isInstance(item, exports.DataModelFieldAttribute);
85
+ }
86
+ exports.isDataModelFieldAttribute = isDataModelFieldAttribute;
87
+ exports.DataModelFieldType = 'DataModelFieldType';
88
+ function isDataModelFieldType(item) {
89
+ return exports.reflection.isInstance(item, exports.DataModelFieldType);
90
+ }
91
+ exports.isDataModelFieldType = isDataModelFieldType;
92
+ exports.DataSource = 'DataSource';
93
+ function isDataSource(item) {
94
+ return exports.reflection.isInstance(item, exports.DataSource);
95
+ }
96
+ exports.isDataSource = isDataSource;
97
+ exports.DataSourceField = 'DataSourceField';
98
+ function isDataSourceField(item) {
99
+ return exports.reflection.isInstance(item, exports.DataSourceField);
100
+ }
101
+ exports.isDataSourceField = isDataSourceField;
102
+ exports.Enum = 'Enum';
103
+ function isEnum(item) {
104
+ return exports.reflection.isInstance(item, exports.Enum);
105
+ }
106
+ exports.isEnum = isEnum;
107
+ exports.EnumField = 'EnumField';
108
+ function isEnumField(item) {
109
+ return exports.reflection.isInstance(item, exports.EnumField);
110
+ }
111
+ exports.isEnumField = isEnumField;
112
+ exports.Function = 'Function';
113
+ function isFunction(item) {
114
+ return exports.reflection.isInstance(item, exports.Function);
115
+ }
116
+ exports.isFunction = isFunction;
117
+ exports.FunctionParam = 'FunctionParam';
118
+ function isFunctionParam(item) {
119
+ return exports.reflection.isInstance(item, exports.FunctionParam);
120
+ }
121
+ exports.isFunctionParam = isFunctionParam;
122
+ exports.FunctionParamType = 'FunctionParamType';
123
+ function isFunctionParamType(item) {
124
+ return exports.reflection.isInstance(item, exports.FunctionParamType);
125
+ }
126
+ exports.isFunctionParamType = isFunctionParamType;
127
+ exports.InvocationExpr = 'InvocationExpr';
128
+ function isInvocationExpr(item) {
129
+ return exports.reflection.isInstance(item, exports.InvocationExpr);
130
+ }
131
+ exports.isInvocationExpr = isInvocationExpr;
132
+ exports.LiteralExpr = 'LiteralExpr';
133
+ function isLiteralExpr(item) {
134
+ return exports.reflection.isInstance(item, exports.LiteralExpr);
135
+ }
136
+ exports.isLiteralExpr = isLiteralExpr;
137
+ exports.MemberAccessExpr = 'MemberAccessExpr';
138
+ function isMemberAccessExpr(item) {
139
+ return exports.reflection.isInstance(item, exports.MemberAccessExpr);
140
+ }
141
+ exports.isMemberAccessExpr = isMemberAccessExpr;
142
+ exports.Model = 'Model';
143
+ function isModel(item) {
144
+ return exports.reflection.isInstance(item, exports.Model);
145
+ }
146
+ exports.isModel = isModel;
147
+ exports.NullExpr = 'NullExpr';
148
+ function isNullExpr(item) {
149
+ return exports.reflection.isInstance(item, exports.NullExpr);
150
+ }
151
+ exports.isNullExpr = isNullExpr;
152
+ exports.ReferenceArg = 'ReferenceArg';
153
+ function isReferenceArg(item) {
154
+ return exports.reflection.isInstance(item, exports.ReferenceArg);
155
+ }
156
+ exports.isReferenceArg = isReferenceArg;
157
+ exports.ReferenceExpr = 'ReferenceExpr';
158
+ function isReferenceExpr(item) {
159
+ return exports.reflection.isInstance(item, exports.ReferenceExpr);
160
+ }
161
+ exports.isReferenceExpr = isReferenceExpr;
162
+ exports.ThisExpr = 'ThisExpr';
163
+ function isThisExpr(item) {
164
+ return exports.reflection.isInstance(item, exports.ThisExpr);
165
+ }
166
+ exports.isThisExpr = isThisExpr;
167
+ exports.UnaryExpr = 'UnaryExpr';
168
+ function isUnaryExpr(item) {
169
+ return exports.reflection.isInstance(item, exports.UnaryExpr);
170
+ }
171
+ exports.isUnaryExpr = isUnaryExpr;
172
+ class ZModelAstReflection {
173
+ getAllTypes() {
174
+ return ['AbstractDeclaration', 'Argument', 'ArrayExpr', 'Attribute', 'AttributeArg', 'AttributeParam', 'AttributeParamType', 'BinaryExpr', 'DataModel', 'DataModelAttribute', 'DataModelField', 'DataModelFieldAttribute', 'DataModelFieldType', 'DataSource', 'DataSourceField', 'Enum', 'EnumField', 'Expression', 'Function', 'FunctionParam', 'FunctionParamType', 'InvocationExpr', 'LiteralExpr', 'MemberAccessExpr', 'Model', 'NullExpr', 'ReferenceArg', 'ReferenceExpr', 'ReferenceTarget', 'ThisExpr', 'TypeDeclaration', 'UnaryExpr'];
175
+ }
176
+ isInstance(node, type) {
177
+ return (0, langium_1.isAstNode)(node) && this.isSubtype(node.$type, type);
178
+ }
179
+ isSubtype(subtype, supertype) {
180
+ if (subtype === supertype) {
181
+ return true;
182
+ }
183
+ switch (subtype) {
184
+ case exports.ArrayExpr:
185
+ case exports.BinaryExpr:
186
+ case exports.InvocationExpr:
187
+ case exports.LiteralExpr:
188
+ case exports.MemberAccessExpr:
189
+ case exports.NullExpr:
190
+ case exports.ReferenceExpr:
191
+ case exports.ThisExpr:
192
+ case exports.UnaryExpr: {
193
+ return this.isSubtype(exports.Expression, supertype);
194
+ }
195
+ case exports.Attribute:
196
+ case exports.DataSource:
197
+ case exports.Function: {
198
+ return this.isSubtype(exports.AbstractDeclaration, supertype);
199
+ }
200
+ case exports.DataModel:
201
+ case exports.Enum: {
202
+ return this.isSubtype(exports.AbstractDeclaration, supertype) || this.isSubtype(exports.TypeDeclaration, supertype);
203
+ }
204
+ case exports.DataModelField:
205
+ case exports.EnumField:
206
+ case exports.FunctionParam: {
207
+ return this.isSubtype(exports.ReferenceTarget, supertype);
208
+ }
209
+ default: {
210
+ return false;
211
+ }
212
+ }
213
+ }
214
+ getReferenceType(referenceId) {
215
+ switch (referenceId) {
216
+ case 'DataModelAttribute:decl': {
217
+ return exports.Attribute;
218
+ }
219
+ case 'DataModelFieldAttribute:decl': {
220
+ return exports.Attribute;
221
+ }
222
+ case 'DataModelFieldType:reference': {
223
+ return exports.TypeDeclaration;
224
+ }
225
+ case 'FunctionParamType:reference': {
226
+ return exports.TypeDeclaration;
227
+ }
228
+ case 'InvocationExpr:function': {
229
+ return exports.Function;
230
+ }
231
+ case 'MemberAccessExpr:member': {
232
+ return exports.DataModelField;
233
+ }
234
+ case 'ReferenceExpr:target': {
235
+ return exports.ReferenceTarget;
236
+ }
237
+ default: {
238
+ throw new Error(`${referenceId} is not a valid reference id.`);
239
+ }
240
+ }
241
+ }
242
+ getTypeMetaData(type) {
243
+ switch (type) {
244
+ case 'ArrayExpr': {
245
+ return {
246
+ name: 'ArrayExpr',
247
+ mandatory: [
248
+ { name: 'items', type: 'array' }
249
+ ]
250
+ };
251
+ }
252
+ case 'Attribute': {
253
+ return {
254
+ name: 'Attribute',
255
+ mandatory: [
256
+ { name: 'params', type: 'array' }
257
+ ]
258
+ };
259
+ }
260
+ case 'AttributeParam': {
261
+ return {
262
+ name: 'AttributeParam',
263
+ mandatory: [
264
+ { name: 'positional', type: 'boolean' }
265
+ ]
266
+ };
267
+ }
268
+ case 'AttributeParamType': {
269
+ return {
270
+ name: 'AttributeParamType',
271
+ mandatory: [
272
+ { name: 'array', type: 'boolean' },
273
+ { name: 'optional', type: 'boolean' }
274
+ ]
275
+ };
276
+ }
277
+ case 'DataModel': {
278
+ return {
279
+ name: 'DataModel',
280
+ mandatory: [
281
+ { name: 'attributes', type: 'array' },
282
+ { name: 'fields', type: 'array' }
283
+ ]
284
+ };
285
+ }
286
+ case 'DataModelAttribute': {
287
+ return {
288
+ name: 'DataModelAttribute',
289
+ mandatory: [
290
+ { name: 'args', type: 'array' }
291
+ ]
292
+ };
293
+ }
294
+ case 'DataModelField': {
295
+ return {
296
+ name: 'DataModelField',
297
+ mandatory: [
298
+ { name: 'attributes', type: 'array' }
299
+ ]
300
+ };
301
+ }
302
+ case 'DataModelFieldAttribute': {
303
+ return {
304
+ name: 'DataModelFieldAttribute',
305
+ mandatory: [
306
+ { name: 'args', type: 'array' }
307
+ ]
308
+ };
309
+ }
310
+ case 'DataModelFieldType': {
311
+ return {
312
+ name: 'DataModelFieldType',
313
+ mandatory: [
314
+ { name: 'array', type: 'boolean' },
315
+ { name: 'optional', type: 'boolean' }
316
+ ]
317
+ };
318
+ }
319
+ case 'DataSource': {
320
+ return {
321
+ name: 'DataSource',
322
+ mandatory: [
323
+ { name: 'fields', type: 'array' }
324
+ ]
325
+ };
326
+ }
327
+ case 'Enum': {
328
+ return {
329
+ name: 'Enum',
330
+ mandatory: [
331
+ { name: 'fields', type: 'array' }
332
+ ]
333
+ };
334
+ }
335
+ case 'Function': {
336
+ return {
337
+ name: 'Function',
338
+ mandatory: [
339
+ { name: 'params', type: 'array' }
340
+ ]
341
+ };
342
+ }
343
+ case 'FunctionParamType': {
344
+ return {
345
+ name: 'FunctionParamType',
346
+ mandatory: [
347
+ { name: 'array', type: 'boolean' }
348
+ ]
349
+ };
350
+ }
351
+ case 'InvocationExpr': {
352
+ return {
353
+ name: 'InvocationExpr',
354
+ mandatory: [
355
+ { name: 'args', type: 'array' }
356
+ ]
357
+ };
358
+ }
359
+ case 'Model': {
360
+ return {
361
+ name: 'Model',
362
+ mandatory: [
363
+ { name: 'declarations', type: 'array' }
364
+ ]
365
+ };
366
+ }
367
+ case 'ReferenceExpr': {
368
+ return {
369
+ name: 'ReferenceExpr',
370
+ mandatory: [
371
+ { name: 'args', type: 'array' }
372
+ ]
373
+ };
374
+ }
375
+ default: {
376
+ return {
377
+ name: type,
378
+ mandatory: []
379
+ };
380
+ }
381
+ }
382
+ }
383
+ }
384
+ exports.ZModelAstReflection = ZModelAstReflection;
385
+ exports.reflection = new ZModelAstReflection();
386
+ //# sourceMappingURL=ast.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ast.js","sourceRoot":"","sources":["../../../src/language-server/generated/ast.ts"],"names":[],"mappings":"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"}