zenstack 1.0.0 → 1.0.16

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 (264) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +126 -1
  3. package/bin/cli +3 -0
  4. package/bin/post-install.js +24 -0
  5. package/cli/cli-error.d.ts +5 -0
  6. package/cli/cli-error.js +10 -0
  7. package/cli/cli-error.js.map +1 -0
  8. package/cli/cli-util.d.ts +18 -0
  9. package/cli/cli-util.js +143 -0
  10. package/cli/cli-util.js.map +1 -0
  11. package/cli/index.d.ts +15 -0
  12. package/cli/index.js +121 -0
  13. package/cli/index.js.map +1 -0
  14. package/cli/plugin-runner.d.ts +14 -0
  15. package/cli/plugin-runner.js +145 -0
  16. package/cli/plugin-runner.js.map +1 -0
  17. package/constants.d.ts +1 -0
  18. package/constants.js +6 -0
  19. package/constants.js.map +1 -0
  20. package/language-server/constants.d.ts +15 -0
  21. package/language-server/constants.js +20 -0
  22. package/language-server/constants.js.map +1 -0
  23. package/language-server/main.d.ts +1 -0
  24. package/language-server/main.js +13 -0
  25. package/language-server/main.js.map +1 -0
  26. package/language-server/types.d.ts +10 -0
  27. package/language-server/types.js +3 -0
  28. package/language-server/types.js.map +1 -0
  29. package/language-server/utils.d.ts +18 -0
  30. package/language-server/utils.js +58 -0
  31. package/language-server/utils.js.map +1 -0
  32. package/language-server/validator/attribute-validator.d.ts +9 -0
  33. package/language-server/validator/attribute-validator.js +11 -0
  34. package/language-server/validator/attribute-validator.js.map +1 -0
  35. package/language-server/validator/datamodel-validator.d.ts +15 -0
  36. package/language-server/validator/datamodel-validator.js +278 -0
  37. package/language-server/validator/datamodel-validator.js.map +1 -0
  38. package/language-server/validator/datasource-validator.d.ts +12 -0
  39. package/language-server/validator/datasource-validator.js +66 -0
  40. package/language-server/validator/datasource-validator.js.map +1 -0
  41. package/language-server/validator/enum-validator.d.ts +11 -0
  42. package/language-server/validator/enum-validator.js +28 -0
  43. package/language-server/validator/enum-validator.js.map +1 -0
  44. package/language-server/validator/expression-validator.d.ts +10 -0
  45. package/language-server/validator/expression-validator.js +30 -0
  46. package/language-server/validator/expression-validator.js.map +1 -0
  47. package/language-server/validator/schema-validator.d.ts +10 -0
  48. package/language-server/validator/schema-validator.js +28 -0
  49. package/language-server/validator/schema-validator.js.map +1 -0
  50. package/language-server/validator/utils.d.ts +25 -0
  51. package/language-server/validator/utils.js +257 -0
  52. package/language-server/validator/utils.js.map +1 -0
  53. package/language-server/validator/zmodel-validator.d.ts +21 -0
  54. package/language-server/validator/zmodel-validator.js +69 -0
  55. package/language-server/validator/zmodel-validator.js.map +1 -0
  56. package/language-server/zmodel-code-action.d.ts +14 -0
  57. package/language-server/zmodel-code-action.js +93 -0
  58. package/language-server/zmodel-code-action.js.map +1 -0
  59. package/language-server/zmodel-formatter.d.ts +9 -0
  60. package/language-server/zmodel-formatter.js +76 -0
  61. package/language-server/zmodel-formatter.js.map +1 -0
  62. package/language-server/zmodel-linker.d.ts +29 -0
  63. package/language-server/zmodel-linker.js +366 -0
  64. package/language-server/zmodel-linker.js.map +1 -0
  65. package/language-server/zmodel-module.d.ts +41 -0
  66. package/language-server/zmodel-module.js +80 -0
  67. package/language-server/zmodel-module.js.map +1 -0
  68. package/language-server/zmodel-scope.d.ts +10 -0
  69. package/language-server/zmodel-scope.js +44 -0
  70. package/language-server/zmodel-scope.js.map +1 -0
  71. package/language-server/zmodel-workspace-manager.d.ts +8 -0
  72. package/language-server/zmodel-workspace-manager.js +37 -0
  73. package/language-server/zmodel-workspace-manager.js.map +1 -0
  74. package/package.json +133 -8
  75. package/plugins/access-policy/expression-writer.d.ts +39 -0
  76. package/plugins/access-policy/expression-writer.js +361 -0
  77. package/plugins/access-policy/expression-writer.js.map +1 -0
  78. package/plugins/access-policy/index.d.ts +4 -0
  79. package/plugins/access-policy/index.js +24 -0
  80. package/plugins/access-policy/index.js.map +1 -0
  81. package/plugins/access-policy/policy-guard-generator.d.ts +15 -0
  82. package/plugins/access-policy/policy-guard-generator.js +349 -0
  83. package/plugins/access-policy/policy-guard-generator.js.map +1 -0
  84. package/plugins/access-policy/typescript-expression-transformer.d.ts +26 -0
  85. package/plugins/access-policy/typescript-expression-transformer.js +111 -0
  86. package/plugins/access-policy/typescript-expression-transformer.js.map +1 -0
  87. package/plugins/access-policy/utils.d.ts +5 -0
  88. package/plugins/access-policy/utils.js +14 -0
  89. package/plugins/access-policy/utils.js.map +1 -0
  90. package/plugins/access-policy/zod-schema-generator.d.ts +12 -0
  91. package/plugins/access-policy/zod-schema-generator.js +158 -0
  92. package/plugins/access-policy/zod-schema-generator.js.map +1 -0
  93. package/plugins/model-meta/index.d.ts +4 -0
  94. package/plugins/model-meta/index.js +168 -0
  95. package/plugins/model-meta/index.js.map +1 -0
  96. package/plugins/plugin-utils.d.ts +16 -0
  97. package/plugins/plugin-utils.js +54 -0
  98. package/plugins/plugin-utils.js.map +1 -0
  99. package/plugins/prisma/indent-string.d.ts +4 -0
  100. package/plugins/prisma/indent-string.js +12 -0
  101. package/plugins/prisma/indent-string.js.map +1 -0
  102. package/plugins/prisma/index.d.ts +4 -0
  103. package/plugins/prisma/index.js +24 -0
  104. package/plugins/prisma/index.js.map +1 -0
  105. package/plugins/prisma/prisma-builder.d.ts +152 -0
  106. package/plugins/prisma/prisma-builder.js +363 -0
  107. package/plugins/prisma/prisma-builder.js.map +1 -0
  108. package/plugins/prisma/schema-generator.d.ts +25 -0
  109. package/plugins/prisma/schema-generator.js +292 -0
  110. package/plugins/prisma/schema-generator.js.map +1 -0
  111. package/plugins/prisma/zmodel-code-generator.d.ts +28 -0
  112. package/plugins/prisma/zmodel-code-generator.js +114 -0
  113. package/plugins/prisma/zmodel-code-generator.js.map +1 -0
  114. package/res/prism-zmodel.js +20 -0
  115. package/res/starter.zmodel +51 -0
  116. package/res/stdlib.zmodel +346 -0
  117. package/telemetry.d.ts +20 -0
  118. package/telemetry.js +119 -0
  119. package/telemetry.js.map +1 -0
  120. package/types.d.ts +12 -0
  121. package/types.js +3 -0
  122. package/types.js.map +1 -0
  123. package/utils/ast-utils.d.ts +16 -0
  124. package/utils/ast-utils.js +85 -0
  125. package/utils/ast-utils.js.map +1 -0
  126. package/utils/exec-utils.d.ts +6 -0
  127. package/utils/exec-utils.js +13 -0
  128. package/utils/exec-utils.js.map +1 -0
  129. package/utils/pkg-utils.d.ts +3 -0
  130. package/utils/pkg-utils.js +46 -0
  131. package/utils/pkg-utils.js.map +1 -0
  132. package/utils/version-utils.d.ts +1 -0
  133. package/utils/version-utils.js +14 -0
  134. package/utils/version-utils.js.map +1 -0
  135. package/.vscode/extensions.json +0 -7
  136. package/.vscode/launch.json +0 -49
  137. package/.vscode/settings.json +0 -4
  138. package/packages/internal/jest.config.ts +0 -32
  139. package/packages/internal/package.json +0 -42
  140. package/packages/internal/src/constants.ts +0 -1
  141. package/packages/internal/src/handler/data/guard-utils.ts +0 -7
  142. package/packages/internal/src/handler/data/handler.ts +0 -415
  143. package/packages/internal/src/handler/data/query-processor.ts +0 -504
  144. package/packages/internal/src/handler/index.ts +0 -1
  145. package/packages/internal/src/handler/types.ts +0 -20
  146. package/packages/internal/src/index.ts +0 -3
  147. package/packages/internal/src/request-handler.ts +0 -27
  148. package/packages/internal/src/request.ts +0 -101
  149. package/packages/internal/src/types.ts +0 -40
  150. package/packages/internal/tests/query-processor.test.ts +0 -172
  151. package/packages/internal/tsconfig.json +0 -21
  152. package/packages/runtime/auth.d.ts +0 -1
  153. package/packages/runtime/auth.js +0 -3
  154. package/packages/runtime/hooks.d.ts +0 -10
  155. package/packages/runtime/hooks.js +0 -3
  156. package/packages/runtime/index.d.ts +0 -3
  157. package/packages/runtime/index.js +0 -1
  158. package/packages/runtime/package-lock.json +0 -512
  159. package/packages/runtime/package.json +0 -16
  160. package/packages/runtime/server.d.ts +0 -1
  161. package/packages/runtime/server.js +0 -3
  162. package/packages/runtime/types.d.ts +0 -1
  163. package/packages/runtime/types.js +0 -3
  164. package/packages/schema/.eslintrc.json +0 -13
  165. package/packages/schema/.vscodeignore +0 -4
  166. package/packages/schema/asset/logo-dark.png +0 -0
  167. package/packages/schema/asset/logo-light.png +0 -0
  168. package/packages/schema/bin/cli +0 -3
  169. package/packages/schema/jest.config.ts +0 -32
  170. package/packages/schema/langium-config.json +0 -14
  171. package/packages/schema/langium-quickstart.md +0 -41
  172. package/packages/schema/language-configuration.json +0 -30
  173. package/packages/schema/package.json +0 -96
  174. package/packages/schema/src/cli/cli-util.ts +0 -80
  175. package/packages/schema/src/cli/index.ts +0 -64
  176. package/packages/schema/src/extension.ts +0 -76
  177. package/packages/schema/src/generator/constants.ts +0 -5
  178. package/packages/schema/src/generator/index.ts +0 -92
  179. package/packages/schema/src/generator/next-auth/index.ts +0 -197
  180. package/packages/schema/src/generator/package.template.json +0 -9
  181. package/packages/schema/src/generator/prisma/expression-writer.ts +0 -352
  182. package/packages/schema/src/generator/prisma/index.ts +0 -32
  183. package/packages/schema/src/generator/prisma/plain-expression-builder.ts +0 -91
  184. package/packages/schema/src/generator/prisma/prisma-builder.ts +0 -366
  185. package/packages/schema/src/generator/prisma/query-gard-generator.ts +0 -208
  186. package/packages/schema/src/generator/prisma/schema-generator.ts +0 -300
  187. package/packages/schema/src/generator/react-hooks/index.ts +0 -181
  188. package/packages/schema/src/generator/service/index.ts +0 -107
  189. package/packages/schema/src/generator/tsconfig.template.json +0 -17
  190. package/packages/schema/src/generator/types.ts +0 -17
  191. package/packages/schema/src/generator/utils.ts +0 -9
  192. package/packages/schema/src/language-server/generated/ast.ts +0 -603
  193. package/packages/schema/src/language-server/generated/grammar.ts +0 -2190
  194. package/packages/schema/src/language-server/generated/module.ts +0 -24
  195. package/packages/schema/src/language-server/main.ts +0 -12
  196. package/packages/schema/src/language-server/stdlib.zmodel +0 -22
  197. package/packages/schema/src/language-server/types.ts +0 -9
  198. package/packages/schema/src/language-server/zmodel-index.ts +0 -33
  199. package/packages/schema/src/language-server/zmodel-linker.ts +0 -409
  200. package/packages/schema/src/language-server/zmodel-module.ts +0 -90
  201. package/packages/schema/src/language-server/zmodel-scope.ts +0 -21
  202. package/packages/schema/src/language-server/zmodel-validator.ts +0 -35
  203. package/packages/schema/src/language-server/zmodel.langium +0 -186
  204. package/packages/schema/src/utils/exec-utils.ts +0 -5
  205. package/packages/schema/src/utils/indent-string.ts +0 -6
  206. package/packages/schema/syntaxes/zmodel.json +0 -57
  207. package/packages/schema/syntaxes/zmodel.tmLanguage.json +0 -57
  208. package/packages/schema/tests/generator/expression-writer.test.ts +0 -676
  209. package/packages/schema/tests/generator/prisma-builder.test.ts +0 -138
  210. package/packages/schema/tests/schema/parser.test.ts +0 -423
  211. package/packages/schema/tests/schema/sample-todo.test.ts +0 -14
  212. package/packages/schema/tests/utils.ts +0 -38
  213. package/packages/schema/tsconfig.json +0 -23
  214. package/pnpm-workspace.yaml +0 -3
  215. package/samples/todo/.env +0 -2
  216. package/samples/todo/.eslintrc.json +0 -3
  217. package/samples/todo/.vscode/launch.json +0 -11
  218. package/samples/todo/README.md +0 -34
  219. package/samples/todo/components/AuthGuard.tsx +0 -17
  220. package/samples/todo/components/Avatar.tsx +0 -22
  221. package/samples/todo/components/BreadCrumb.tsx +0 -44
  222. package/samples/todo/components/ManageMembers.tsx +0 -134
  223. package/samples/todo/components/NavBar.tsx +0 -57
  224. package/samples/todo/components/SpaceMembers.tsx +0 -76
  225. package/samples/todo/components/Spaces.tsx +0 -28
  226. package/samples/todo/components/TimeInfo.tsx +0 -17
  227. package/samples/todo/components/Todo.tsx +0 -72
  228. package/samples/todo/components/TodoList.tsx +0 -77
  229. package/samples/todo/lib/context.ts +0 -31
  230. package/samples/todo/next.config.js +0 -10
  231. package/samples/todo/package-lock.json +0 -7527
  232. package/samples/todo/package.json +0 -45
  233. package/samples/todo/pages/_app.tsx +0 -50
  234. package/samples/todo/pages/api/auth/[...nextauth].ts +0 -83
  235. package/samples/todo/pages/api/zenstack/[...path].ts +0 -16
  236. package/samples/todo/pages/create-space.tsx +0 -114
  237. package/samples/todo/pages/index.tsx +0 -32
  238. package/samples/todo/pages/space/[slug]/[listId]/index.tsx +0 -88
  239. package/samples/todo/pages/space/[slug]/index.tsx +0 -169
  240. package/samples/todo/postcss.config.js +0 -6
  241. package/samples/todo/public/avatar.jpg +0 -0
  242. package/samples/todo/public/favicon.ico +0 -0
  243. package/samples/todo/public/logo.png +0 -0
  244. package/samples/todo/public/vercel.svg +0 -4
  245. package/samples/todo/styles/globals.css +0 -7
  246. package/samples/todo/tailwind.config.js +0 -11
  247. package/samples/todo/tsconfig.json +0 -28
  248. package/samples/todo/types/next-auth.d.ts +0 -14
  249. package/samples/todo/types/next.d.ts +0 -16
  250. package/samples/todo/zenstack/migrations/20221014084317_init/migration.sql +0 -153
  251. package/samples/todo/zenstack/migrations/20221020094651_upate_cli/migration.sql +0 -23
  252. package/samples/todo/zenstack/migrations/migration_lock.toml +0 -3
  253. package/samples/todo/zenstack/schema.prisma +0 -126
  254. package/samples/todo/zenstack/schema.zmodel +0 -161
  255. package/tests/integration/jest.config.ts +0 -16
  256. package/tests/integration/package-lock.json +0 -1081
  257. package/tests/integration/package.json +0 -27
  258. package/tests/integration/tests/operation-coverate.test.ts +0 -563
  259. package/tests/integration/tests/operations.zmodel +0 -69
  260. package/tests/integration/tests/todo-e2e.test.ts +0 -577
  261. package/tests/integration/tests/todo.zmodel +0 -123
  262. package/tests/integration/tests/tsconfig.template.json +0 -10
  263. package/tests/integration/tests/utils.ts +0 -133
  264. package/tests/integration/tsconfig.json +0 -10
@@ -0,0 +1,145 @@
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
+ exports.PluginRunner = void 0;
16
+ const internals_1 = require("@prisma/internals");
17
+ const ast_1 = require("@zenstackhq/language/ast");
18
+ const sdk_1 = require("@zenstackhq/sdk");
19
+ const colors_1 = __importDefault(require("colors"));
20
+ const fs_1 = __importDefault(require("fs"));
21
+ const ora_1 = __importDefault(require("ora"));
22
+ const path_1 = __importDefault(require("path"));
23
+ const telemetry_1 = __importDefault(require("../telemetry"));
24
+ const cli_error_1 = require("./cli-error");
25
+ /**
26
+ * ZenStack code generator
27
+ */
28
+ class PluginRunner {
29
+ /**
30
+ * Runs a series of nested generators
31
+ */
32
+ run(context) {
33
+ return __awaiter(this, void 0, void 0, function* () {
34
+ const version = require('../package.json').version;
35
+ console.log(colors_1.default.bold(`⌛️ ZenStack CLI v${version}, running plugins`));
36
+ const plugins = [];
37
+ const pluginDecls = context.schema.declarations.filter((d) => (0, ast_1.isPlugin)(d));
38
+ const prereqPlugins = ['@zenstack/prisma', '@zenstack/model-meta', '@zenstack/access-policy'];
39
+ const allPluginProviders = prereqPlugins.concat(pluginDecls
40
+ .map((p) => this.getPluginProvider(p))
41
+ .filter((p) => !!p && !prereqPlugins.includes(p)));
42
+ let prismaOutput = './prisma/schema.prisma';
43
+ for (const pluginProvider of allPluginProviders) {
44
+ const plugin = pluginDecls.find((p) => this.getPluginProvider(p) === pluginProvider);
45
+ if (plugin) {
46
+ const options = { schemaPath: context.schemaPath };
47
+ plugin.fields.forEach((f) => {
48
+ const value = (0, sdk_1.getLiteral)(f.value) || (0, sdk_1.getLiteralArray)(f.value);
49
+ if (!value) {
50
+ throw new cli_error_1.CliError(`Invalid plugin value for ${f.name}`);
51
+ }
52
+ options[f.name] = value;
53
+ });
54
+ const pluginModulePath = this.getPluginModulePath(pluginProvider);
55
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
56
+ let pluginModule;
57
+ try {
58
+ pluginModule = require(pluginModulePath);
59
+ }
60
+ catch (err) {
61
+ console.error(`Unable to load plugin module ${pluginProvider}: ${pluginModulePath}, ${err}`);
62
+ throw new cli_error_1.CliError(`Unable to load plugin module ${pluginProvider}`);
63
+ }
64
+ if (!pluginModule.default || typeof pluginModule.default !== 'function') {
65
+ console.error(`Plugin provider ${pluginProvider} is missing a default function export`);
66
+ throw new cli_error_1.CliError(`Plugin provider ${pluginProvider} is missing a default function export`);
67
+ }
68
+ plugins.push({
69
+ name: this.getPluginName(pluginModule, pluginProvider),
70
+ provider: pluginProvider,
71
+ run: pluginModule.default,
72
+ options,
73
+ });
74
+ if (pluginProvider === '@zenstack/prisma' && options.output) {
75
+ // record custom prisma output path
76
+ prismaOutput = options.output;
77
+ }
78
+ }
79
+ else {
80
+ // synthesize a plugin
81
+ const pluginModule = require(this.getPluginModulePath(pluginProvider));
82
+ plugins.push({
83
+ name: this.getPluginName(pluginModule, pluginProvider),
84
+ provider: pluginProvider,
85
+ run: pluginModule.default,
86
+ options: { schemaPath: context.schemaPath },
87
+ });
88
+ }
89
+ }
90
+ const warnings = [];
91
+ let dmmf = undefined;
92
+ for (const { name, provider, run, options } of plugins) {
93
+ yield this.runPlugin(name, run, context, options, dmmf, warnings);
94
+ if (provider === '@zenstack/prisma') {
95
+ // load prisma DMMF
96
+ dmmf = yield (0, internals_1.getDMMF)({
97
+ datamodel: fs_1.default.readFileSync(prismaOutput, { encoding: 'utf-8' }),
98
+ });
99
+ }
100
+ }
101
+ console.log(colors_1.default.green(colors_1.default.bold('\n👻 All plugins completed successfully!')));
102
+ warnings.forEach((w) => console.warn(colors_1.default.yellow(w)));
103
+ });
104
+ }
105
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
106
+ getPluginName(pluginModule, pluginProvider) {
107
+ return typeof pluginModule.name === 'string' ? pluginModule.name : pluginProvider;
108
+ }
109
+ getPluginProvider(plugin) {
110
+ const providerField = plugin.fields.find((f) => f.name === 'provider');
111
+ return (0, sdk_1.getLiteral)(providerField === null || providerField === void 0 ? void 0 : providerField.value);
112
+ }
113
+ runPlugin(name, run, context, options, dmmf, warnings) {
114
+ return __awaiter(this, void 0, void 0, function* () {
115
+ const spinner = (0, ora_1.default)(`Running plugin ${colors_1.default.cyan(name)}`).start();
116
+ try {
117
+ yield telemetry_1.default.trackSpan('cli:plugin:start', 'cli:plugin:complete', 'cli:plugin:error', {
118
+ plugin: name,
119
+ }, () => __awaiter(this, void 0, void 0, function* () {
120
+ let result = run(context.schema, options, dmmf);
121
+ if (result instanceof Promise) {
122
+ result = yield result;
123
+ }
124
+ if (Array.isArray(result)) {
125
+ warnings.push(...result);
126
+ }
127
+ }));
128
+ spinner.succeed();
129
+ }
130
+ catch (err) {
131
+ spinner.fail();
132
+ throw err;
133
+ }
134
+ });
135
+ }
136
+ getPluginModulePath(provider) {
137
+ let pluginModulePath = provider;
138
+ if (pluginModulePath.startsWith('@zenstack/')) {
139
+ pluginModulePath = pluginModulePath.replace(/^@zenstack/, path_1.default.join(__dirname, '../plugins'));
140
+ }
141
+ return pluginModulePath;
142
+ }
143
+ }
144
+ exports.PluginRunner = PluginRunner;
145
+ //# sourceMappingURL=plugin-runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-runner.js","sourceRoot":"","sources":["../../src/cli/plugin-runner.ts"],"names":[],"mappings":"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"}
package/constants.d.ts ADDED
@@ -0,0 +1 @@
1
+ export declare const TELEMETRY_TRACKING_TOKEN = "<TELEMETRY_TRACKING_TOKEN>";
package/constants.js ADDED
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TELEMETRY_TRACKING_TOKEN = void 0;
4
+ // replaced at build time
5
+ exports.TELEMETRY_TRACKING_TOKEN = '';
6
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAAA,yBAAyB;AACZ,QAAA,wBAAwB,GAAG,4BAA4B,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Supported Prisma db providers
3
+ */
4
+ export declare const SUPPORTED_PROVIDERS: string[];
5
+ /**
6
+ * All scalar types
7
+ */
8
+ export declare const SCALAR_TYPES: string[];
9
+ /**
10
+ * Name of standard library module
11
+ */
12
+ export declare const STD_LIB_MODULE_NAME = "stdlib.zmodel";
13
+ export declare enum IssueCodes {
14
+ MissingOppositeRelation = "miss-opposite-relation"
15
+ }
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IssueCodes = exports.STD_LIB_MODULE_NAME = exports.SCALAR_TYPES = exports.SUPPORTED_PROVIDERS = void 0;
4
+ /**
5
+ * Supported Prisma db providers
6
+ */
7
+ exports.SUPPORTED_PROVIDERS = ['sqlite', 'postgresql', 'mysql', 'sqlserver', 'cockroachdb'];
8
+ /**
9
+ * All scalar types
10
+ */
11
+ exports.SCALAR_TYPES = ['String', 'Int', 'Float', 'Decimal', 'BigInt', 'Boolean', 'Bytes', 'DateTime'];
12
+ /**
13
+ * Name of standard library module
14
+ */
15
+ exports.STD_LIB_MODULE_NAME = 'stdlib.zmodel';
16
+ var IssueCodes;
17
+ (function (IssueCodes) {
18
+ IssueCodes["MissingOppositeRelation"] = "miss-opposite-relation";
19
+ })(IssueCodes = exports.IssueCodes || (exports.IssueCodes = {}));
20
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/language-server/constants.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACU,QAAA,mBAAmB,GAAG,CAAC,QAAQ,EAAE,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC;AAEjG;;GAEG;AACU,QAAA,YAAY,GAAG,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;AAE5G;;GAEG;AACU,QAAA,mBAAmB,GAAG,eAAe,CAAC;AAEnD,IAAY,UAEX;AAFD,WAAY,UAAU;IAClB,gEAAkD,CAAA;AACtD,CAAC,EAFW,UAAU,GAAV,kBAAU,KAAV,kBAAU,QAErB"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const langium_1 = require("langium");
4
+ const node_1 = require("langium/node");
5
+ const node_2 = require("vscode-languageserver/node");
6
+ const zmodel_module_1 = require("./zmodel-module");
7
+ // Create a connection to the client
8
+ const connection = (0, node_2.createConnection)(node_2.ProposedFeatures.all);
9
+ // Inject the shared services and language-specific services
10
+ const { shared } = (0, zmodel_module_1.createZModelServices)(Object.assign({ connection }, node_1.NodeFileSystem));
11
+ // Start the language server with the shared services
12
+ (0, langium_1.startLanguageServer)(shared);
13
+ //# sourceMappingURL=main.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/language-server/main.ts"],"names":[],"mappings":";;AAAA,qCAA8C;AAC9C,uCAA8C;AAC9C,qDAAgF;AAChF,mDAAuD;AAEvD,oCAAoC;AACpC,MAAM,UAAU,GAAG,IAAA,uBAAgB,EAAC,uBAAgB,CAAC,GAAG,CAAC,CAAC;AAE1D,4DAA4D;AAC5D,MAAM,EAAE,MAAM,EAAE,GAAG,IAAA,oCAAoB,kBAAG,UAAU,IAAK,qBAAc,EAAG,CAAC;AAE3E,qDAAqD;AACrD,IAAA,6BAAmB,EAAC,MAAM,CAAC,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { AstNode, ValidationAcceptor } from 'langium';
2
+ /**
3
+ * AST validator contract
4
+ */
5
+ export interface AstValidator<T extends AstNode> {
6
+ /**
7
+ * Validates an AST node
8
+ */
9
+ validate(node: T, accept: ValidationAcceptor): void;
10
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/language-server/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,18 @@
1
+ import { AstNode } from 'langium';
2
+ import { DataModel, DataModelField, Model } from '@zenstackhq/language/ast';
3
+ /**
4
+ * Gets the toplevel Model containing the given node.
5
+ */
6
+ export declare function getContainingModel(node: AstNode | undefined): Model | null;
7
+ /**
8
+ * Returns if the given node is declared in stdlib.
9
+ */
10
+ export declare function isFromStdlib(node: AstNode): boolean;
11
+ /**
12
+ * Gets id fields declared at the data model level
13
+ */
14
+ export declare function getIdFields(model: DataModel): DataModelField[];
15
+ /**
16
+ * Gets lists of unique fields declared at the data model level
17
+ */
18
+ export declare function getUniqueFields(model: DataModel): DataModelField[][];
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getUniqueFields = exports.getIdFields = exports.isFromStdlib = exports.getContainingModel = void 0;
4
+ const constants_1 = require("./constants");
5
+ const ast_1 = require("@zenstackhq/language/ast");
6
+ const sdk_1 = require("@zenstackhq/sdk");
7
+ /**
8
+ * Gets the toplevel Model containing the given node.
9
+ */
10
+ function getContainingModel(node) {
11
+ if (!node) {
12
+ return null;
13
+ }
14
+ return (0, ast_1.isModel)(node) ? node : getContainingModel(node.$container);
15
+ }
16
+ exports.getContainingModel = getContainingModel;
17
+ /**
18
+ * Returns if the given node is declared in stdlib.
19
+ */
20
+ function isFromStdlib(node) {
21
+ const model = getContainingModel(node);
22
+ return !!model && !!model.$document && model.$document.uri.path.endsWith(constants_1.STD_LIB_MODULE_NAME);
23
+ }
24
+ exports.isFromStdlib = isFromStdlib;
25
+ /**
26
+ * Gets id fields declared at the data model level
27
+ */
28
+ function getIdFields(model) {
29
+ const idAttr = model.attributes.find((attr) => { var _a; return ((_a = attr.decl.ref) === null || _a === void 0 ? void 0 : _a.name) === '@@id'; });
30
+ if (!idAttr) {
31
+ return [];
32
+ }
33
+ const fieldsArg = idAttr.args.find((a) => { var _a; return ((_a = a.$resolvedParam) === null || _a === void 0 ? void 0 : _a.name) === 'fields'; });
34
+ if (!fieldsArg || !(0, ast_1.isArrayExpr)(fieldsArg.value)) {
35
+ return [];
36
+ }
37
+ return fieldsArg.value.items
38
+ .filter((item) => (0, ast_1.isReferenceExpr)(item))
39
+ .map((item) => (0, sdk_1.resolved)(item.target));
40
+ }
41
+ exports.getIdFields = getIdFields;
42
+ /**
43
+ * Gets lists of unique fields declared at the data model level
44
+ */
45
+ function getUniqueFields(model) {
46
+ const uniqueAttrs = model.attributes.filter((attr) => { var _a; return ((_a = attr.decl.ref) === null || _a === void 0 ? void 0 : _a.name) === '@@unique'; });
47
+ return uniqueAttrs.map((uniqueAttr) => {
48
+ const fieldsArg = uniqueAttr.args.find((a) => { var _a; return ((_a = a.$resolvedParam) === null || _a === void 0 ? void 0 : _a.name) === 'fields'; });
49
+ if (!fieldsArg || !(0, ast_1.isArrayExpr)(fieldsArg.value)) {
50
+ return [];
51
+ }
52
+ return fieldsArg.value.items
53
+ .filter((item) => (0, ast_1.isReferenceExpr)(item))
54
+ .map((item) => (0, sdk_1.resolved)(item.target));
55
+ });
56
+ }
57
+ exports.getUniqueFields = getUniqueFields;
58
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/language-server/utils.ts"],"names":[],"mappings":";;;AACA,2CAAkD;AAClD,kDAQkC;AAClC,yCAA2C;AAE3C;;GAEG;AACH,SAAgB,kBAAkB,CAAC,IAAyB;IACxD,IAAI,CAAC,IAAI,EAAE;QACP,OAAO,IAAI,CAAC;KACf;IACD,OAAO,IAAA,aAAO,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACtE,CAAC;AALD,gDAKC;AAED;;GAEG;AACH,SAAgB,YAAY,CAAC,IAAa;IACtC,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACvC,OAAO,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,+BAAmB,CAAC,CAAC;AAClG,CAAC;AAHD,oCAGC;AAED;;GAEG;AACH,SAAgB,WAAW,CAAC,KAAgB;IACxC,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,WAAC,OAAA,CAAA,MAAA,IAAI,CAAC,IAAI,CAAC,GAAG,0CAAE,IAAI,MAAK,MAAM,CAAA,EAAA,CAAC,CAAC;IAC/E,IAAI,CAAC,MAAM,EAAE;QACT,OAAO,EAAE,CAAC;KACb;IACD,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,WAAC,OAAA,CAAA,MAAA,CAAC,CAAC,cAAc,0CAAE,IAAI,MAAK,QAAQ,CAAA,EAAA,CAAC,CAAC;IAC/E,IAAI,CAAC,SAAS,IAAI,CAAC,IAAA,iBAAW,EAAC,SAAS,CAAC,KAAK,CAAC,EAAE;QAC7C,OAAO,EAAE,CAAC;KACb;IAED,OAAO,SAAS,CAAC,KAAK,CAAC,KAAK;SACvB,MAAM,CAAC,CAAC,IAAI,EAAyB,EAAE,CAAC,IAAA,qBAAe,EAAC,IAAI,CAAC,CAAC;SAC9D,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,cAAQ,EAAC,IAAI,CAAC,MAAM,CAAmB,CAAC,CAAC;AAChE,CAAC;AAbD,kCAaC;AAED;;GAEG;AACH,SAAgB,eAAe,CAAC,KAAgB;IAC5C,MAAM,WAAW,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,WAAC,OAAA,CAAA,MAAA,IAAI,CAAC,IAAI,CAAC,GAAG,0CAAE,IAAI,MAAK,UAAU,CAAA,EAAA,CAAC,CAAC;IAC1F,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE;QAClC,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,WAAC,OAAA,CAAA,MAAA,CAAC,CAAC,cAAc,0CAAE,IAAI,MAAK,QAAQ,CAAA,EAAA,CAAC,CAAC;QACnF,IAAI,CAAC,SAAS,IAAI,CAAC,IAAA,iBAAW,EAAC,SAAS,CAAC,KAAK,CAAC,EAAE;YAC7C,OAAO,EAAE,CAAC;SACb;QAED,OAAO,SAAS,CAAC,KAAK,CAAC,KAAK;aACvB,MAAM,CAAC,CAAC,IAAI,EAAyB,EAAE,CAAC,IAAA,qBAAe,EAAC,IAAI,CAAC,CAAC;aAC9D,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,cAAQ,EAAC,IAAI,CAAC,MAAM,CAAmB,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;AACP,CAAC;AAZD,0CAYC"}
@@ -0,0 +1,9 @@
1
+ import { Attribute } from '@zenstackhq/language/ast';
2
+ import { AstValidator } from '../types';
3
+ import { ValidationAcceptor } from 'langium';
4
+ /**
5
+ * Validates attribute declarations.
6
+ */
7
+ export default class AttributeValidator implements AstValidator<Attribute> {
8
+ validate(attr: Attribute, accept: ValidationAcceptor): void;
9
+ }
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ /**
4
+ * Validates attribute declarations.
5
+ */
6
+ class AttributeValidator {
7
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-empty-function
8
+ validate(attr, accept) { }
9
+ }
10
+ exports.default = AttributeValidator;
11
+ //# sourceMappingURL=attribute-validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attribute-validator.js","sourceRoot":"","sources":["../../../src/language-server/validator/attribute-validator.ts"],"names":[],"mappings":";;AAIA;;GAEG;AACH,MAAqB,kBAAkB;IACnC,mGAAmG;IACnG,QAAQ,CAAC,IAAe,EAAE,MAA0B,IAAS,CAAC;CACjE;AAHD,qCAGC"}
@@ -0,0 +1,15 @@
1
+ import { DataModel } from '@zenstackhq/language/ast';
2
+ import { ValidationAcceptor } from 'langium';
3
+ import { AstValidator } from '../types';
4
+ /**
5
+ * Validates data model declarations.
6
+ */
7
+ export default class DataModelValidator implements AstValidator<DataModel> {
8
+ validate(dm: DataModel, accept: ValidationAcceptor): void;
9
+ private validateFields;
10
+ private validateField;
11
+ private validateAttributes;
12
+ private parseRelation;
13
+ private isSelfRelation;
14
+ private validateRelationField;
15
+ }