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,201 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- const ast_1 = require("../../language-server/generated/ast");
16
- const promises_1 = require("fs/promises");
17
- const path_1 = __importDefault(require("path"));
18
- const constants_1 = require("../constants");
19
- const types_1 = require("../types");
20
- const prisma_builder_1 = require("./prisma-builder");
21
- const supportedProviders = ['postgresql', 'mysql', 'sqlite', 'sqlserver'];
22
- const supportedAttrbutes = [
23
- 'id',
24
- 'index',
25
- 'relation',
26
- 'default',
27
- 'createdAt',
28
- 'updatedAt',
29
- 'unique',
30
- ];
31
- class PrismaSchemaGenerator {
32
- constructor(context) {
33
- this.context = context;
34
- }
35
- generate() {
36
- return __awaiter(this, void 0, void 0, function* () {
37
- const { schema } = this.context;
38
- const prisma = new prisma_builder_1.PrismaModel();
39
- for (const decl of schema.declarations) {
40
- switch (decl.$type) {
41
- case ast_1.DataSource:
42
- this.generateDataSource(prisma, decl);
43
- break;
44
- case ast_1.Enum:
45
- this.generateEnum(prisma, decl);
46
- break;
47
- case ast_1.DataModel:
48
- this.generateModel(prisma, decl);
49
- break;
50
- }
51
- }
52
- this.generateGenerator(prisma);
53
- const outFile = path_1.default.join(this.context.outDir, 'schema.prisma');
54
- yield (0, promises_1.writeFile)(outFile, prisma.toString());
55
- return outFile;
56
- });
57
- }
58
- generateDataSource(prisma, dataSource) {
59
- let provider = undefined;
60
- let url = undefined;
61
- let shadowDatabaseUrl = undefined;
62
- for (const f of dataSource.fields) {
63
- switch (f.name) {
64
- case 'provider': {
65
- if (this.isStringLiteral(f.value)) {
66
- provider = f.value.value;
67
- }
68
- else {
69
- throw new types_1.GeneratorError('Datasource provider must be set to a string');
70
- }
71
- if (!supportedProviders.includes(provider)) {
72
- throw new types_1.GeneratorError(`Provider ${provider} is not supported. Supported providers: ${supportedProviders.join(', ')}`);
73
- }
74
- break;
75
- }
76
- case 'url': {
77
- const r = this.extractDataSourceUrl(f.value);
78
- if (!r) {
79
- throw new types_1.GeneratorError('Invalid value for datasource url');
80
- }
81
- url = r;
82
- break;
83
- }
84
- case 'shadowDatabaseUrl': {
85
- const r = this.extractDataSourceUrl(f.value);
86
- if (!r) {
87
- throw new types_1.GeneratorError('Invalid value for datasource url');
88
- }
89
- shadowDatabaseUrl = r;
90
- break;
91
- }
92
- }
93
- }
94
- if (!provider) {
95
- throw new types_1.GeneratorError('Datasource is missing "provider" field');
96
- }
97
- if (!url) {
98
- throw new types_1.GeneratorError('Datasource is missing "url" field');
99
- }
100
- prisma.addDataSource(dataSource.name, provider, url, shadowDatabaseUrl);
101
- }
102
- extractDataSourceUrl(fieldValue) {
103
- var _a;
104
- if (this.isStringLiteral(fieldValue)) {
105
- return new prisma_builder_1.DataSourceUrl(fieldValue.value, false);
106
- }
107
- else if ((0, ast_1.isInvocationExpr)(fieldValue) &&
108
- ((_a = fieldValue.function.ref) === null || _a === void 0 ? void 0 : _a.name) === 'env' &&
109
- fieldValue.args.length === 1 &&
110
- this.isStringLiteral(fieldValue.args[0].value)) {
111
- return new prisma_builder_1.DataSourceUrl(fieldValue.args[0].value.value, true);
112
- }
113
- else {
114
- return null;
115
- }
116
- }
117
- generateGenerator(prisma) {
118
- prisma.addGenerator('client', 'prisma-client-js', path_1.default.join('../', this.context.generatedCodeDir, '.prisma'), ['fieldReference', 'interactiveTransactions']);
119
- }
120
- generateModel(prisma, decl) {
121
- const model = prisma.addModel(decl.name);
122
- for (const field of decl.fields) {
123
- this.generateModelField(model, field);
124
- }
125
- // add an "zenstack_guard" field for dealing with pure auth() related conditions
126
- model.addField(constants_1.GUARD_FIELD_NAME, 'Boolean', [
127
- new prisma_builder_1.FieldAttribute('default', [
128
- new prisma_builder_1.AttributeArg(undefined, new prisma_builder_1.AttributeArgValue('Boolean', true)),
129
- ]),
130
- ]);
131
- // add an "zenstack_transaction" field for tracking records created/updated with nested writes
132
- model.addField(constants_1.TRANSACTION_FIELD_NAME, 'String?');
133
- for (const attr of decl.attributes.filter((attr) => { var _a; return supportedAttrbutes.includes((_a = attr.decl.ref) === null || _a === void 0 ? void 0 : _a.name); })) {
134
- this.generateModelAttribute(model, attr);
135
- }
136
- }
137
- generateModelField(model, field) {
138
- var _a, _b;
139
- const type = new prisma_builder_1.ModelFieldType((field.type.type || ((_b = (_a = field.type.reference) === null || _a === void 0 ? void 0 : _a.ref) === null || _b === void 0 ? void 0 : _b.name)), field.type.array, field.type.optional);
140
- const attributes = field.attributes
141
- .filter((attr) => { var _a; return supportedAttrbutes.includes((_a = attr.decl.ref) === null || _a === void 0 ? void 0 : _a.name); })
142
- .map((attr) => this.makeFieldAttribute(attr));
143
- model.addField(field.name, type, attributes);
144
- }
145
- makeFieldAttribute(attr) {
146
- var _a;
147
- return new prisma_builder_1.FieldAttribute((_a = attr.decl.ref) === null || _a === void 0 ? void 0 : _a.name, attr.args.map((arg) => this.makeAttributeArg(arg)));
148
- }
149
- makeAttributeArg(arg) {
150
- return new prisma_builder_1.AttributeArg(arg.name, this.makeAttributeArgValue(arg.value));
151
- }
152
- makeAttributeArgValue(node) {
153
- var _a;
154
- if ((0, ast_1.isLiteralExpr)(node)) {
155
- switch (typeof node.value) {
156
- case 'string':
157
- return new prisma_builder_1.AttributeArgValue('String', node.value);
158
- case 'number':
159
- return new prisma_builder_1.AttributeArgValue('Number', node.value);
160
- case 'boolean':
161
- return new prisma_builder_1.AttributeArgValue('Boolean', node.value);
162
- default:
163
- throw new types_1.GeneratorError(`Unexpected literal type: ${typeof node.value}`);
164
- }
165
- }
166
- else if ((0, ast_1.isArrayExpr)(node)) {
167
- return new prisma_builder_1.AttributeArgValue('Array', new Array(...node.items.map((item) => this.makeAttributeArgValue(item))));
168
- }
169
- else if ((0, ast_1.isReferenceExpr)(node)) {
170
- return new prisma_builder_1.AttributeArgValue('FieldReference', new prisma_builder_1.FieldReference((_a = node.target.ref) === null || _a === void 0 ? void 0 : _a.name, node.args.map((arg) => new prisma_builder_1.FieldReferenceArg(arg.name, arg.value))));
171
- }
172
- else if ((0, ast_1.isInvocationExpr)(node)) {
173
- // invocation
174
- return new prisma_builder_1.AttributeArgValue('FunctionCall', this.makeFunctionCall(node));
175
- }
176
- else {
177
- throw new types_1.GeneratorError(`Unsupported attribute argument expression type: ${node.$type}`);
178
- }
179
- }
180
- makeFunctionCall(node) {
181
- var _a;
182
- return new prisma_builder_1.FunctionCall((_a = node.function.ref) === null || _a === void 0 ? void 0 : _a.name, node.args.map((arg) => {
183
- if (!(0, ast_1.isLiteralExpr)(arg.value)) {
184
- throw new types_1.GeneratorError('Function call argument must be literal');
185
- }
186
- return new prisma_builder_1.FunctionCallArg(arg.name, arg.value.value);
187
- }));
188
- }
189
- generateModelAttribute(model, attr) {
190
- var _a;
191
- model.attributes.push(new prisma_builder_1.ModelAttribute((_a = attr.decl.ref) === null || _a === void 0 ? void 0 : _a.name, attr.args.map((arg) => this.makeAttributeArg(arg))));
192
- }
193
- generateEnum(prisma, decl) {
194
- prisma.addEnum(decl.name, decl.fields.map((f) => f.name));
195
- }
196
- isStringLiteral(node) {
197
- return (0, ast_1.isLiteralExpr)(node) && typeof node.value === 'string';
198
- }
199
- }
200
- exports.default = PrismaSchemaGenerator;
201
- //# sourceMappingURL=schema-generator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"schema-generator.js","sourceRoot":"","sources":["../../../src/generator/prisma/schema-generator.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- "use strict";
2
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/generator/query-guard/index.ts"],"names":[],"mappings":""}
@@ -1,179 +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 change_case_1 = require("change-case");
41
- const colors_1 = __importDefault(require("colors"));
42
- const utils_1 = require("../utils");
43
- const constants_1 = require("../constants");
44
- class ReactHooksGenerator {
45
- generate(context) {
46
- return __awaiter(this, void 0, void 0, function* () {
47
- const project = new ts_morph_1.Project();
48
- const models = (0, utils_1.extractDataModelsWithAllowRules)(context.schema);
49
- this.generateIndex(project, context, models);
50
- models.forEach((d) => this.generateModelHooks(project, context, d));
51
- yield project.save();
52
- console.log(colors_1.default.blue(' ✔️ React hooks generated'));
53
- });
54
- }
55
- generateModelHooks(project, context, model) {
56
- const fileName = (0, change_case_1.paramCase)(model.name);
57
- const sf = project.createSourceFile(path.join(context.generatedCodeDir, `src/hooks/${fileName}.ts`), undefined, { overwrite: true });
58
- sf.addImportDeclaration({
59
- namedImports: [{ name: 'Prisma', alias: 'P' }, model.name],
60
- isTypeOnly: true,
61
- moduleSpecifier: '../../.prisma',
62
- });
63
- sf.addStatements(`import { request } from '${constants_1.INTERNAL_PACKAGE}';`);
64
- sf.addStatements(`import { type SWRResponse } from 'swr'`);
65
- sf.addStatements(`const endpoint = '/api/${constants_1.API_ROUTE_NAME}/data/${model.name}';`);
66
- const useFuncBody = sf
67
- .addFunction({
68
- name: `use${model.name}`,
69
- isExported: true,
70
- })
71
- .addBody();
72
- useFuncBody.addStatements(['const mutate = request.getMutate();']);
73
- // create
74
- useFuncBody
75
- .addFunction({
76
- name: 'create',
77
- isAsync: true,
78
- typeParameters: [`T extends P.${model.name}CreateArgs`],
79
- parameters: [
80
- { name: 'args', type: `P.${model.name}CreateArgs` },
81
- ],
82
- })
83
- .addBody()
84
- .addStatements([
85
- `return request.post<P.${model.name}CreateArgs, P.CheckSelect<T, ${model.name}, P.${model.name}GetPayload<T>>>(endpoint, args, mutate);`,
86
- ]);
87
- // find
88
- useFuncBody
89
- .addFunction({
90
- name: 'find',
91
- typeParameters: [`T extends P.${model.name}FindManyArgs`],
92
- returnType: `SWRResponse<P.CheckSelect<T, ${model.name}[], P.${model.name}GetPayload<T, keyof T>[]>, any>`,
93
- parameters: [
94
- {
95
- name: 'args?',
96
- type: `P.SelectSubset<T, P.${model.name}FindManyArgs>`,
97
- },
98
- ],
99
- })
100
- .addBody()
101
- .addStatements([
102
- `return request.get<P.CheckSelect<T, Array<${model.name}>, Array<P.${model.name}GetPayload<T>>>>(endpoint, args);`,
103
- ]);
104
- // get
105
- useFuncBody
106
- .addFunction({
107
- name: 'get',
108
- typeParameters: [
109
- `T extends P.Subset<P.${model.name}FindFirstArgs, 'select' | 'include'>`,
110
- ],
111
- returnType: `SWRResponse<P.CheckSelect<T, ${model.name}, P.${model.name}GetPayload<T, keyof T>>, any>`,
112
- parameters: [
113
- {
114
- name: 'id',
115
- type: 'String',
116
- },
117
- {
118
- name: 'args?',
119
- type: `P.SelectSubset<T, P.Subset<P.${model.name}FindFirstArgs, 'select' | 'include'>>`,
120
- },
121
- ],
122
- })
123
- .addBody()
124
- .addStatements([
125
- `return request.get<P.CheckSelect<T, ${model.name}, P.${model.name}GetPayload<T>>>(id ? \`\${endpoint}/\${id}\`: null, args);`,
126
- ]);
127
- // update
128
- useFuncBody
129
- .addFunction({
130
- name: 'update',
131
- isAsync: true,
132
- typeParameters: [
133
- `T extends Omit<P.${model.name}UpdateArgs, 'where'>`,
134
- ],
135
- parameters: [
136
- { name: 'id', type: 'String' },
137
- {
138
- name: 'args',
139
- type: `Omit<P.${model.name}UpdateArgs, 'where'>`,
140
- },
141
- ],
142
- })
143
- .addBody()
144
- .addStatements([
145
- `return request.put<Omit<P.${model.name}UpdateArgs, 'where'>, P.CheckSelect<T, ${model.name}, P.${model.name}GetPayload<T>>>(\`\${endpoint}/\${id}\`, args, mutate);`,
146
- ]);
147
- // del
148
- useFuncBody
149
- .addFunction({
150
- name: 'del',
151
- isAsync: true,
152
- typeParameters: [
153
- `T extends Omit<P.${model.name}DeleteArgs, 'where'>`,
154
- ],
155
- parameters: [
156
- { name: 'id', type: 'String' },
157
- {
158
- name: 'args?',
159
- type: `Omit<P.${model.name}DeleteArgs, 'where'>`,
160
- },
161
- ],
162
- })
163
- .addBody()
164
- .addStatements([
165
- `return request.del<P.CheckSelect<T, ${model.name}, P.${model.name}GetPayload<T>>>(\`\${endpoint}/\${id}\`, args, mutate);`,
166
- ]);
167
- useFuncBody.addStatements([
168
- 'return { create, find, get, update, del };',
169
- ]);
170
- sf.formatText();
171
- }
172
- generateIndex(project, context, models) {
173
- const sf = project.createSourceFile(path.join(context.generatedCodeDir, 'src/hooks/index.ts'), undefined, { overwrite: true });
174
- sf.addStatements(models.map((d) => `export * from './${(0, change_case_1.paramCase)(d.name)}';`));
175
- sf.formatText();
176
- }
177
- }
178
- exports.default = ReactHooksGenerator;
179
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/generator/react-hooks/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,uCAAmC;AACnC,2CAA6B;AAC7B,6CAAwC;AAExC,oDAA4B;AAC5B,oCAA2D;AAC3D,4CAAgE;AAEhE,MAAqB,mBAAmB;IAC9B,QAAQ,CAAC,OAAgB;;YAC3B,MAAM,OAAO,GAAG,IAAI,kBAAO,EAAE,CAAC;YAE9B,MAAM,MAAM,GAAG,IAAA,uCAA+B,EAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAE/D,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;YAE7C,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;YAEpE,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;YAErB,OAAO,CAAC,GAAG,CAAC,gBAAM,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC,CAAC;QAC3D,CAAC;KAAA;IAEO,kBAAkB,CACtB,OAAgB,EAChB,OAAgB,EAChB,KAAgB;QAEhB,MAAM,QAAQ,GAAG,IAAA,uBAAS,EAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,EAAE,GAAG,OAAO,CAAC,gBAAgB,CAC/B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,aAAa,QAAQ,KAAK,CAAC,EAC/D,SAAS,EACT,EAAE,SAAS,EAAE,IAAI,EAAE,CACtB,CAAC;QAEF,EAAE,CAAC,oBAAoB,CAAC;YACpB,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC;YAC1D,UAAU,EAAE,IAAI;YAChB,eAAe,EAAE,eAAe;SACnC,CAAC,CAAC;QACH,EAAE,CAAC,aAAa,CAAC,4BAA4B,4BAAgB,IAAI,CAAC,CAAC;QACnE,EAAE,CAAC,aAAa,CAAC,wCAAwC,CAAC,CAAC;QAE3D,EAAE,CAAC,aAAa,CACZ,0BAA0B,0BAAc,SAAS,KAAK,CAAC,IAAI,IAAI,CAClE,CAAC;QAEF,MAAM,WAAW,GAAG,EAAE;aACjB,WAAW,CAAC;YACT,IAAI,EAAE,MAAM,KAAK,CAAC,IAAI,EAAE;YACxB,UAAU,EAAE,IAAI;SACnB,CAAC;aACD,OAAO,EAAE,CAAC;QAEf,WAAW,CAAC,aAAa,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC;QAEnE,SAAS;QACT,WAAW;aACN,WAAW,CAAC;YACT,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,IAAI;YACb,cAAc,EAAE,CAAC,eAAe,KAAK,CAAC,IAAI,YAAY,CAAC;YACvD,UAAU,EAAE;gBACR,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,KAAK,CAAC,IAAI,YAAY,EAAE;aACtD;SACJ,CAAC;aACD,OAAO,EAAE;aACT,aAAa,CAAC;YACX,yBAAyB,KAAK,CAAC,IAAI,gCAAgC,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,IAAI,0CAA0C;SAC3I,CAAC,CAAC;QAEP,OAAO;QACP,WAAW;aACN,WAAW,CAAC;YACT,IAAI,EAAE,MAAM;YACZ,cAAc,EAAE,CAAC,eAAe,KAAK,CAAC,IAAI,cAAc,CAAC;YACzD,UAAU,EAAE,gCAAgC,KAAK,CAAC,IAAI,SAAS,KAAK,CAAC,IAAI,iCAAiC;YAC1G,UAAU,EAAE;gBACR;oBACI,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE,uBAAuB,KAAK,CAAC,IAAI,eAAe;iBACzD;aACJ;SACJ,CAAC;aACD,OAAO,EAAE;aACT,aAAa,CAAC;YACX,6CAA6C,KAAK,CAAC,IAAI,cAAc,KAAK,CAAC,IAAI,mCAAmC;SACrH,CAAC,CAAC;QAEP,MAAM;QACN,WAAW;aACN,WAAW,CAAC;YACT,IAAI,EAAE,KAAK;YACX,cAAc,EAAE;gBACZ,wBAAwB,KAAK,CAAC,IAAI,sCAAsC;aAC3E;YACD,UAAU,EAAE,gCAAgC,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,IAAI,+BAA+B;YACtG,UAAU,EAAE;gBACR;oBACI,IAAI,EAAE,IAAI;oBACV,IAAI,EAAE,QAAQ;iBACjB;gBACD;oBACI,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE,gCAAgC,KAAK,CAAC,IAAI,uCAAuC;iBAC1F;aACJ;SACJ,CAAC;aACD,OAAO,EAAE;aACT,aAAa,CAAC;YACX,uCAAuC,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,IAAI,4DAA4D;SACjI,CAAC,CAAC;QAEP,SAAS;QACT,WAAW;aACN,WAAW,CAAC;YACT,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,IAAI;YACb,cAAc,EAAE;gBACZ,oBAAoB,KAAK,CAAC,IAAI,sBAAsB;aACvD;YACD,UAAU,EAAE;gBACR,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE;gBAC9B;oBACI,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,UAAU,KAAK,CAAC,IAAI,sBAAsB;iBACnD;aACJ;SACJ,CAAC;aACD,OAAO,EAAE;aACT,aAAa,CAAC;YACX,6BAA6B,KAAK,CAAC,IAAI,0CAA0C,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,IAAI,yDAAyD;SACxK,CAAC,CAAC;QAEP,MAAM;QACN,WAAW;aACN,WAAW,CAAC;YACT,IAAI,EAAE,KAAK;YACX,OAAO,EAAE,IAAI;YACb,cAAc,EAAE;gBACZ,oBAAoB,KAAK,CAAC,IAAI,sBAAsB;aACvD;YACD,UAAU,EAAE;gBACR,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE;gBAC9B;oBACI,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE,UAAU,KAAK,CAAC,IAAI,sBAAsB;iBACnD;aACJ;SACJ,CAAC;aACD,OAAO,EAAE;aACT,aAAa,CAAC;YACX,uCAAuC,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,IAAI,yDAAyD;SAC9H,CAAC,CAAC;QAEP,WAAW,CAAC,aAAa,CAAC;YACtB,4CAA4C;SAC/C,CAAC,CAAC;QAEH,EAAE,CAAC,UAAU,EAAE,CAAC;IACpB,CAAC;IAEO,aAAa,CACjB,OAAgB,EAChB,OAAgB,EAChB,MAAmB;QAEnB,MAAM,EAAE,GAAG,OAAO,CAAC,gBAAgB,CAC/B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,oBAAoB,CAAC,EACzD,SAAS,EACT,EAAE,SAAS,EAAE,IAAI,EAAE,CACtB,CAAC;QAEF,EAAE,CAAC,aAAa,CACZ,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,oBAAoB,IAAA,uBAAS,EAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAC/D,CAAC;QAEF,EAAE,CAAC,UAAU,EAAE,CAAC;IACpB,CAAC;CACJ;AA3KD,sCA2KC"}