zenstack 0.1.41 → 1.0.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 (215) hide show
  1. package/.vscode/extensions.json +7 -0
  2. package/.vscode/launch.json +49 -0
  3. package/.vscode/settings.json +4 -0
  4. package/README.md +1 -0
  5. package/package.json +8 -90
  6. package/packages/internal/jest.config.ts +32 -0
  7. package/packages/internal/package.json +42 -0
  8. package/packages/internal/src/constants.ts +1 -0
  9. package/packages/internal/src/handler/data/guard-utils.ts +7 -0
  10. package/packages/internal/src/handler/data/handler.ts +415 -0
  11. package/packages/internal/src/handler/data/query-processor.ts +504 -0
  12. package/packages/internal/src/handler/index.ts +1 -0
  13. package/packages/internal/src/handler/types.ts +20 -0
  14. package/packages/internal/src/index.ts +3 -0
  15. package/packages/internal/src/request-handler.ts +27 -0
  16. package/packages/internal/src/request.ts +101 -0
  17. package/packages/internal/src/types.ts +40 -0
  18. package/packages/internal/tests/query-processor.test.ts +172 -0
  19. package/{out/cli/tsconfig.template.json → packages/internal/tsconfig.json} +7 -3
  20. package/packages/runtime/auth.d.ts +1 -0
  21. package/packages/runtime/auth.js +3 -0
  22. package/packages/runtime/hooks.d.ts +10 -0
  23. package/packages/runtime/hooks.js +3 -0
  24. package/packages/runtime/index.d.ts +3 -0
  25. package/packages/runtime/index.js +1 -0
  26. package/packages/runtime/package-lock.json +512 -0
  27. package/packages/runtime/package.json +16 -0
  28. package/packages/runtime/server.d.ts +1 -0
  29. package/packages/runtime/server.js +3 -0
  30. package/packages/runtime/types.d.ts +1 -0
  31. package/packages/runtime/types.js +3 -0
  32. package/packages/schema/.eslintrc.json +13 -0
  33. package/packages/schema/.vscodeignore +4 -0
  34. package/packages/schema/asset/logo-dark.png +0 -0
  35. package/packages/schema/asset/logo-light.png +0 -0
  36. package/{bin → packages/schema/bin}/cli +0 -0
  37. package/packages/schema/jest.config.ts +32 -0
  38. package/packages/schema/langium-config.json +14 -0
  39. package/packages/schema/langium-quickstart.md +41 -0
  40. package/packages/schema/language-configuration.json +30 -0
  41. package/packages/schema/package.json +96 -0
  42. package/packages/schema/src/cli/cli-util.ts +80 -0
  43. package/packages/schema/src/cli/index.ts +64 -0
  44. package/packages/schema/src/extension.ts +76 -0
  45. package/packages/schema/src/generator/constants.ts +5 -0
  46. package/packages/schema/src/generator/index.ts +92 -0
  47. package/{out/generator/next-auth/index.js → packages/schema/src/generator/next-auth/index.ts} +46 -58
  48. package/{out → packages/schema/src}/generator/package.template.json +0 -0
  49. package/packages/schema/src/generator/prisma/expression-writer.ts +352 -0
  50. package/packages/schema/src/generator/prisma/index.ts +32 -0
  51. package/packages/schema/src/generator/prisma/plain-expression-builder.ts +91 -0
  52. package/packages/schema/src/generator/prisma/prisma-builder.ts +366 -0
  53. package/packages/schema/src/generator/prisma/query-gard-generator.ts +208 -0
  54. package/packages/schema/src/generator/prisma/schema-generator.ts +300 -0
  55. package/packages/schema/src/generator/react-hooks/index.ts +181 -0
  56. package/packages/schema/src/generator/service/index.ts +107 -0
  57. package/{out → packages/schema/src}/generator/tsconfig.template.json +0 -0
  58. package/packages/schema/src/generator/types.ts +17 -0
  59. package/packages/schema/src/generator/utils.ts +9 -0
  60. package/packages/schema/src/language-server/generated/ast.ts +603 -0
  61. package/{out/language-server/generated/grammar.js → packages/schema/src/language-server/generated/grammar.ts} +5 -8
  62. package/packages/schema/src/language-server/generated/module.ts +24 -0
  63. package/packages/schema/src/language-server/main.ts +12 -0
  64. package/{out → packages/schema/src}/language-server/stdlib.zmodel +0 -0
  65. package/packages/schema/src/language-server/types.ts +9 -0
  66. package/packages/schema/src/language-server/zmodel-index.ts +33 -0
  67. package/packages/schema/src/language-server/zmodel-linker.ts +409 -0
  68. package/packages/schema/src/language-server/zmodel-module.ts +90 -0
  69. package/packages/schema/src/language-server/zmodel-scope.ts +21 -0
  70. package/packages/schema/src/language-server/zmodel-validator.ts +35 -0
  71. package/packages/schema/src/language-server/zmodel.langium +186 -0
  72. package/packages/schema/src/utils/exec-utils.ts +5 -0
  73. package/packages/schema/src/utils/indent-string.ts +6 -0
  74. package/packages/schema/syntaxes/zmodel.json +57 -0
  75. package/packages/schema/syntaxes/zmodel.tmLanguage.json +57 -0
  76. package/packages/schema/tests/generator/expression-writer.test.ts +676 -0
  77. package/packages/schema/tests/generator/prisma-builder.test.ts +138 -0
  78. package/packages/schema/tests/schema/parser.test.ts +423 -0
  79. package/packages/schema/tests/schema/sample-todo.test.ts +14 -0
  80. package/packages/schema/tests/utils.ts +38 -0
  81. package/packages/schema/tsconfig.json +23 -0
  82. package/pnpm-workspace.yaml +3 -0
  83. package/samples/todo/.env +2 -0
  84. package/samples/todo/.eslintrc.json +3 -0
  85. package/samples/todo/.vscode/launch.json +11 -0
  86. package/samples/todo/README.md +34 -0
  87. package/samples/todo/components/AuthGuard.tsx +17 -0
  88. package/samples/todo/components/Avatar.tsx +22 -0
  89. package/samples/todo/components/BreadCrumb.tsx +44 -0
  90. package/samples/todo/components/ManageMembers.tsx +134 -0
  91. package/samples/todo/components/NavBar.tsx +57 -0
  92. package/samples/todo/components/SpaceMembers.tsx +76 -0
  93. package/samples/todo/components/Spaces.tsx +28 -0
  94. package/samples/todo/components/TimeInfo.tsx +17 -0
  95. package/samples/todo/components/Todo.tsx +72 -0
  96. package/samples/todo/components/TodoList.tsx +77 -0
  97. package/samples/todo/lib/context.ts +31 -0
  98. package/samples/todo/next.config.js +10 -0
  99. package/samples/todo/package-lock.json +7527 -0
  100. package/samples/todo/package.json +45 -0
  101. package/samples/todo/pages/_app.tsx +50 -0
  102. package/samples/todo/pages/api/auth/[...nextauth].ts +83 -0
  103. package/samples/todo/pages/api/zenstack/[...path].ts +16 -0
  104. package/samples/todo/pages/create-space.tsx +114 -0
  105. package/samples/todo/pages/index.tsx +32 -0
  106. package/samples/todo/pages/space/[slug]/[listId]/index.tsx +88 -0
  107. package/samples/todo/pages/space/[slug]/index.tsx +169 -0
  108. package/samples/todo/postcss.config.js +6 -0
  109. package/samples/todo/public/avatar.jpg +0 -0
  110. package/samples/todo/public/favicon.ico +0 -0
  111. package/samples/todo/public/logo.png +0 -0
  112. package/samples/todo/public/vercel.svg +4 -0
  113. package/samples/todo/styles/globals.css +7 -0
  114. package/samples/todo/tailwind.config.js +11 -0
  115. package/samples/todo/tsconfig.json +28 -0
  116. package/samples/todo/types/next-auth.d.ts +14 -0
  117. package/samples/todo/types/next.d.ts +16 -0
  118. package/samples/todo/zenstack/migrations/20221014084317_init/migration.sql +153 -0
  119. package/samples/todo/zenstack/migrations/20221020094651_upate_cli/migration.sql +23 -0
  120. package/samples/todo/zenstack/migrations/migration_lock.toml +3 -0
  121. package/samples/todo/zenstack/schema.prisma +126 -0
  122. package/samples/todo/zenstack/schema.zmodel +161 -0
  123. package/tests/integration/jest.config.ts +16 -0
  124. package/tests/integration/package-lock.json +1081 -0
  125. package/tests/integration/package.json +27 -0
  126. package/tests/integration/tests/operation-coverate.test.ts +563 -0
  127. package/tests/integration/tests/operations.zmodel +69 -0
  128. package/tests/integration/tests/todo-e2e.test.ts +577 -0
  129. package/tests/integration/tests/todo.zmodel +123 -0
  130. package/tests/integration/tests/tsconfig.template.json +10 -0
  131. package/tests/integration/tests/utils.ts +133 -0
  132. package/tests/integration/tsconfig.json +10 -0
  133. package/out/cli/cli-util.js +0 -64
  134. package/out/cli/cli-util.js.map +0 -1
  135. package/out/cli/generator.js +0 -1
  136. package/out/cli/generator.js.map +0 -1
  137. package/out/cli/index.js +0 -46
  138. package/out/cli/index.js.map +0 -1
  139. package/out/cli/package.template.json +0 -10
  140. package/out/extension.js +0 -81
  141. package/out/extension.js.map +0 -1
  142. package/out/generator/constants.js +0 -9
  143. package/out/generator/constants.js.map +0 -1
  144. package/out/generator/data-server/index.js +0 -1
  145. package/out/generator/data-server/index.js.map +0 -1
  146. package/out/generator/index.js +0 -98
  147. package/out/generator/index.js.map +0 -1
  148. package/out/generator/next-auth/index.js.map +0 -1
  149. package/out/generator/prisma/expression-writer.js +0 -287
  150. package/out/generator/prisma/expression-writer.js.map +0 -1
  151. package/out/generator/prisma/index.js +0 -38
  152. package/out/generator/prisma/index.js.map +0 -1
  153. package/out/generator/prisma/plain-expression-builder.js +0 -69
  154. package/out/generator/prisma/plain-expression-builder.js.map +0 -1
  155. package/out/generator/prisma/prisma-builder.js +0 -307
  156. package/out/generator/prisma/prisma-builder.js.map +0 -1
  157. package/out/generator/prisma/query-gard-generator.js +0 -159
  158. package/out/generator/prisma/query-gard-generator.js.map +0 -1
  159. package/out/generator/prisma/schema-generator.js +0 -201
  160. package/out/generator/prisma/schema-generator.js.map +0 -1
  161. package/out/generator/query-guard/index.js +0 -2
  162. package/out/generator/query-guard/index.js.map +0 -1
  163. package/out/generator/react-hooks/index.js +0 -179
  164. package/out/generator/react-hooks/index.js.map +0 -1
  165. package/out/generator/server/data/data-generator.js +0 -376
  166. package/out/generator/server/data/data-generator.js.map +0 -1
  167. package/out/generator/server/data/expression-writer.js +0 -287
  168. package/out/generator/server/data/expression-writer.js.map +0 -1
  169. package/out/generator/server/data/plain-expression-builder.js +0 -69
  170. package/out/generator/server/data/plain-expression-builder.js.map +0 -1
  171. package/out/generator/server/data-generator.js +0 -82
  172. package/out/generator/server/data-generator.js.map +0 -1
  173. package/out/generator/server/expression-writer.js +0 -1
  174. package/out/generator/server/expression-writer.js.map +0 -1
  175. package/out/generator/server/function/function-generator.js +0 -50
  176. package/out/generator/server/function/function-generator.js.map +0 -1
  177. package/out/generator/server/function-generator.js +0 -13
  178. package/out/generator/server/function-generator.js.map +0 -1
  179. package/out/generator/server/index.js +0 -88
  180. package/out/generator/server/index.js.map +0 -1
  181. package/out/generator/server/js-expression-builder.js +0 -1
  182. package/out/generator/server/js-expression-builder.js.map +0 -1
  183. package/out/generator/server/plain-expression-builder.js +0 -1
  184. package/out/generator/server/plain-expression-builder.js.map +0 -1
  185. package/out/generator/server/server-code-generator.js +0 -3
  186. package/out/generator/server/server-code-generator.js.map +0 -1
  187. package/out/generator/server/server-code-writer.js +0 -1
  188. package/out/generator/server/server-code-writer.js.map +0 -1
  189. package/out/generator/service/index.js +0 -133
  190. package/out/generator/service/index.js.map +0 -1
  191. package/out/generator/types.js +0 -10
  192. package/out/generator/types.js.map +0 -1
  193. package/out/generator/utils.js +0 -10
  194. package/out/generator/utils.js.map +0 -1
  195. package/out/language-server/generated/ast.js +0 -386
  196. package/out/language-server/generated/ast.js.map +0 -1
  197. package/out/language-server/generated/grammar.js.map +0 -1
  198. package/out/language-server/generated/module.js +0 -23
  199. package/out/language-server/generated/module.js.map +0 -1
  200. package/out/language-server/main.js +0 -12
  201. package/out/language-server/main.js.map +0 -1
  202. package/out/language-server/types.js +0 -3
  203. package/out/language-server/types.js.map +0 -1
  204. package/out/language-server/zmodel-index.js +0 -38
  205. package/out/language-server/zmodel-index.js.map +0 -1
  206. package/out/language-server/zmodel-linker.js +0 -241
  207. package/out/language-server/zmodel-linker.js.map +0 -1
  208. package/out/language-server/zmodel-module.js +0 -51
  209. package/out/language-server/zmodel-module.js.map +0 -1
  210. package/out/language-server/zmodel-scope.js +0 -30
  211. package/out/language-server/zmodel-scope.js.map +0 -1
  212. package/out/language-server/zmodel-validator.js +0 -25
  213. package/out/language-server/zmodel-validator.js.map +0 -1
  214. package/out/utils/indent-string.js +0 -9
  215. package/out/utils/indent-string.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"expression-writer.js","sourceRoot":"","sources":["../../../../src/generator/server/data/expression-writer.ts"],"names":[],"mappings":"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"}
@@ -1,69 +0,0 @@
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.ThisExpr:
15
- return this.this(expr);
16
- case ast_1.ReferenceExpr:
17
- return this.reference(expr);
18
- case ast_1.InvocationExpr:
19
- return this.invocation(expr);
20
- case ast_1.MemberAccessExpr:
21
- return this.memberAccess(expr);
22
- default:
23
- throw new types_1.GeneratorError(`Unsupported expression type: ${expr.$type}`);
24
- }
25
- }
26
- this(expr) {
27
- // "this" is mapped to id comparison
28
- return 'id';
29
- }
30
- memberAccess(expr) {
31
- if ((0, ast_1.isThisExpr)(expr.operand)) {
32
- return expr.member.ref.name;
33
- }
34
- else {
35
- return `${this.build(expr.operand)}?.${expr.member.ref.name}`;
36
- }
37
- }
38
- invocation(expr) {
39
- var _a, _b;
40
- if (((_a = expr.function.ref) === null || _a === void 0 ? void 0 : _a.name) !== 'auth') {
41
- throw new types_1.GeneratorError(`Function invocation is not supported: ${(_b = expr.function.ref) === null || _b === void 0 ? void 0 : _b.name}`);
42
- }
43
- return 'user';
44
- }
45
- reference(expr) {
46
- if ((0, ast_1.isEnumField)(expr.target.ref)) {
47
- return `${expr.target.ref.$container.name}.${expr.target.ref.name}`;
48
- }
49
- else {
50
- return expr.target.ref.name;
51
- }
52
- }
53
- null() {
54
- return 'null';
55
- }
56
- array(expr) {
57
- return `[${expr.items.map((item) => this.build(item)).join(', ')}]`;
58
- }
59
- literal(expr) {
60
- if (typeof expr.value === 'string') {
61
- return `'${expr.value}'`;
62
- }
63
- else {
64
- return expr.value.toString();
65
- }
66
- }
67
- }
68
- exports.default = PlainExpressionBuilder;
69
- //# sourceMappingURL=plain-expression-builder.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plain-expression-builder.js","sourceRoot":"","sources":["../../../../src/generator/server/data/plain-expression-builder.ts"],"names":[],"mappings":";;AAAA,uCAA6C;AAC7C,6CAW6B;AAE7B,MAAqB,sBAAsB;IACvC,KAAK,CAAC,IAAgB;QAClB,QAAQ,IAAI,CAAC,KAAK,EAAE;YAChB,KAAK,iBAAW;gBACZ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAmB,CAAC,CAAC;YAE7C,KAAK,eAAS;gBACV,OAAO,IAAI,CAAC,KAAK,CAAC,IAAiB,CAAC,CAAC;YAEzC,KAAK,cAAQ;gBACT,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;YAEvB,KAAK,cAAQ;gBACT,OAAO,IAAI,CAAC,IAAI,CAAC,IAAgB,CAAC,CAAC;YAEvC,KAAK,mBAAa;gBACd,OAAO,IAAI,CAAC,SAAS,CAAC,IAAqB,CAAC,CAAC;YAEjD,KAAK,oBAAc;gBACf,OAAO,IAAI,CAAC,UAAU,CAAC,IAAsB,CAAC,CAAC;YAEnD,KAAK,sBAAgB;gBACjB,OAAO,IAAI,CAAC,YAAY,CAAC,IAAwB,CAAC,CAAC;YAEvD;gBACI,MAAM,IAAI,sBAAc,CACpB,gCAAgC,IAAI,CAAC,KAAK,EAAE,CAC/C,CAAC;SACT;IACL,CAAC;IAEO,IAAI,CAAC,IAAc;QACvB,oCAAoC;QACpC,OAAO,IAAI,CAAC;IAChB,CAAC;IAEO,YAAY,CAAC,IAAsB;QACvC,IAAI,IAAA,gBAAU,EAAC,IAAI,CAAC,OAAO,CAAC,EAAE;YAC1B,OAAO,IAAI,CAAC,MAAM,CAAC,GAAI,CAAC,IAAI,CAAC;SAChC;aAAM;YACH,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,GAAI,CAAC,IAAI,EAAE,CAAC;SAClE;IACL,CAAC;IAEO,UAAU,CAAC,IAAoB;;QACnC,IAAI,CAAA,MAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,0CAAE,IAAI,MAAK,MAAM,EAAE;YACpC,MAAM,IAAI,sBAAc,CACpB,yCAAyC,MAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,0CAAE,IAAI,EAAE,CACrE,CAAC;SACL;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;IAEO,SAAS,CAAC,IAAmB;QACjC,IAAI,IAAA,iBAAW,EAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;YAC9B,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;SACvE;aAAM;YACH,OAAO,IAAI,CAAC,MAAM,CAAC,GAAI,CAAC,IAAI,CAAC;SAChC;IACL,CAAC;IAEO,IAAI;QACR,OAAO,MAAM,CAAC;IAClB,CAAC;IAEO,KAAK,CAAC,IAAe;QACzB,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;IACxE,CAAC;IAEO,OAAO,CAAC,IAAiB;QAC7B,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE;YAChC,OAAO,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC;SAC5B;aAAM;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;SAChC;IACL,CAAC;CACJ;AA5ED,yCA4EC"}
@@ -1,82 +0,0 @@
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;
@@ -1 +0,0 @@
1
- {"version":3,"file":"data-generator.js","sourceRoot":"","sources":["../../../src/generator/server/data-generator.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
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;
@@ -1 +0,0 @@
1
- {"version":3,"file":"expression-writer.js","sourceRoot":"","sources":["../../../src/generator/server/expression-writer.ts"],"names":[],"mappings":"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"}
@@ -1,50 +0,0 @@
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
@@ -1 +0,0 @@
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"}
@@ -1,13 +0,0 @@
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;
@@ -1 +0,0 @@
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"}
@@ -1,88 +0,0 @@
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
@@ -1 +0,0 @@
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"}
@@ -1 +0,0 @@
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;
@@ -1 +0,0 @@
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"}
@@ -1 +0,0 @@
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;
@@ -1 +0,0 @@
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"}
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=server-code-generator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"server-code-generator.js","sourceRoot":"","sources":["../../../src/generator/server/server-code-generator.ts"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- 'use strict';Object.defineProperty(exports,'__esModule',{value:true});
@@ -1 +0,0 @@
1
- {"version":3,"file":"server-code-writer.js","sourceRoot":"","sources":["../../../src/generator/server/server-code-writer.ts"],"names":[],"mappings":""}
@@ -1,133 +0,0 @@
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
- const constants_1 = require("../constants");
42
- class ServiceGenerator {
43
- generate(context) {
44
- return __awaiter(this, void 0, void 0, function* () {
45
- const project = new ts_morph_1.Project();
46
- const sf = project.createSourceFile(path.join(context.generatedCodeDir, 'src/index.ts'), undefined, { overwrite: true });
47
- sf.addImportDeclaration({
48
- namedImports: ['PrismaClient'],
49
- moduleSpecifier: '../.prisma',
50
- });
51
- sf.addImportDeclaration({
52
- namedImports: ['Service', 'PolicyOperationKind', 'QueryContext'],
53
- moduleSpecifier: constants_1.INTERNAL_PACKAGE,
54
- isTypeOnly: true,
55
- });
56
- const cls = sf.addClass({
57
- name: 'ZenStackService',
58
- isExported: true,
59
- implements: ['Service<PrismaClient>'],
60
- });
61
- cls.addMember({
62
- kind: ts_morph_1.StructureKind.Property,
63
- name: 'private readonly _prisma',
64
- initializer: 'new PrismaClient()',
65
- });
66
- cls.addGetAccessor({
67
- name: 'db',
68
- })
69
- .addBody()
70
- .setBodyText('return this._prisma;');
71
- sf.addVariableStatement({
72
- declarationKind: ts_morph_1.VariableDeclarationKind.Let,
73
- declarations: [
74
- {
75
- name: 'guardModule',
76
- type: 'any',
77
- },
78
- ],
79
- });
80
- cls
81
- .addMethod({
82
- name: 'resolveField',
83
- isAsync: true,
84
- parameters: [
85
- {
86
- name: 'model',
87
- type: 'string',
88
- },
89
- {
90
- name: 'field',
91
- type: 'string',
92
- },
93
- ],
94
- })
95
- .addBody().setBodyText(`
96
- if (!guardModule) {
97
- guardModule = await import('./query/guard');
98
- }
99
- return guardModule._fieldMapping?.[model]?.[field];
100
- `);
101
- cls
102
- .addMethod({
103
- name: 'buildQueryGuard',
104
- isAsync: true,
105
- parameters: [
106
- {
107
- name: 'model',
108
- type: 'string',
109
- },
110
- {
111
- name: 'operation',
112
- type: 'PolicyOperationKind',
113
- },
114
- {
115
- name: 'context',
116
- type: 'QueryContext',
117
- },
118
- ],
119
- })
120
- .addBody().setBodyText(`
121
- const module: any = await import('./query/guard');
122
- const provider: (context: QueryContext) => any = module[model+ '_' + operation];
123
- return provider(context);
124
- `);
125
- sf.addStatements(['export default new ZenStackService();']);
126
- sf.formatText();
127
- yield project.save();
128
- console.log(colors_1.default.blue(` ✔️ ZenStack service generated`));
129
- });
130
- }
131
- }
132
- exports.default = ServiceGenerator;
133
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/generator/service/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,uCAA2E;AAC3E,2CAA6B;AAC7B,oDAA4B;AAC5B,4CAAgD;AAEhD,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,gBAAgB,EAAE,cAAc,CAAC,EACnD,SAAS,EACT,EAAE,SAAS,EAAE,IAAI,EAAE,CACtB,CAAC;YAEF,EAAE,CAAC,oBAAoB,CAAC;gBACpB,YAAY,EAAE,CAAC,cAAc,CAAC;gBAC9B,eAAe,EAAE,YAAY;aAChC,CAAC,CAAC;YAEH,EAAE,CAAC,oBAAoB,CAAC;gBACpB,YAAY,EAAE,CAAC,SAAS,EAAE,qBAAqB,EAAE,cAAc,CAAC;gBAChE,eAAe,EAAE,4BAAgB;gBACjC,UAAU,EAAE,IAAI;aACnB,CAAC,CAAC;YAEH,MAAM,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAC;gBACpB,IAAI,EAAE,iBAAiB;gBACvB,UAAU,EAAE,IAAI;gBAChB,UAAU,EAAE,CAAC,uBAAuB,CAAC;aACxC,CAAC,CAAC;YACH,GAAG,CAAC,SAAS,CAAC;gBACV,IAAI,EAAE,wBAAa,CAAC,QAAQ;gBAC5B,IAAI,EAAE,0BAA0B;gBAChC,WAAW,EAAE,oBAAoB;aACpC,CAAC,CAAC;YAEH,GAAG,CAAC,cAAc,CAAC;gBACf,IAAI,EAAE,IAAI;aACb,CAAC;iBACG,OAAO,EAAE;iBACT,WAAW,CAAC,sBAAsB,CAAC,CAAC;YAEzC,EAAE,CAAC,oBAAoB,CAAC;gBACpB,eAAe,EAAE,kCAAuB,CAAC,GAAG;gBAC5C,YAAY,EAAE;oBACV;wBACI,IAAI,EAAE,aAAa;wBACnB,IAAI,EAAE,KAAK;qBACd;iBACJ;aACJ,CAAC,CAAC;YACH,GAAG;iBACE,SAAS,CAAC;gBACP,IAAI,EAAE,cAAc;gBACpB,OAAO,EAAE,IAAI;gBACb,UAAU,EAAE;oBACR;wBACI,IAAI,EAAE,OAAO;wBACb,IAAI,EAAE,QAAQ;qBACjB;oBACD;wBACI,IAAI,EAAE,OAAO;wBACb,IAAI,EAAE,QAAQ;qBACjB;iBACJ;aACJ,CAAC;iBACD,OAAO,EAAE,CAAC,WAAW,CAAC;;;;;aAKtB,CAAC,CAAC;YAEP,GAAG;iBACE,SAAS,CAAC;gBACP,IAAI,EAAE,iBAAiB;gBACvB,OAAO,EAAE,IAAI;gBACb,UAAU,EAAE;oBACR;wBACI,IAAI,EAAE,OAAO;wBACb,IAAI,EAAE,QAAQ;qBACjB;oBACD;wBACI,IAAI,EAAE,WAAW;wBACjB,IAAI,EAAE,qBAAqB;qBAC9B;oBACD;wBACI,IAAI,EAAE,SAAS;wBACf,IAAI,EAAE,cAAc;qBACvB;iBACJ;aACJ,CAAC;iBACD,OAAO,EAAE,CAAC,WAAW,CAAC;;;;aAItB,CAAC,CAAC;YAEP,EAAE,CAAC,aAAa,CAAC,CAAC,uCAAuC,CAAC,CAAC,CAAC;YAE5D,EAAE,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;YAErB,OAAO,CAAC,GAAG,CAAC,gBAAM,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC,CAAC;QAChE,CAAC;KAAA;CACJ;AApGD,mCAoGC"}
@@ -1,10 +0,0 @@
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/generator/types.ts"],"names":[],"mappings":";;;AAYA,MAAa,cAAe,SAAQ,KAAK;IACrC,YAAY,OAAe;QACvB,KAAK,CAAC,OAAO,CAAC,CAAC;IACnB,CAAC;CACJ;AAJD,wCAIC"}
@@ -1,10 +0,0 @@
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
@@ -1 +0,0 @@
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"}