zenstack 0.6.0-pre.9 → 1.0.0-alpha.101

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 (161) hide show
  1. package/README.md +111 -10
  2. package/cli/cli-error.d.ts +5 -0
  3. package/cli/cli-error.js +10 -0
  4. package/cli/cli-error.js.map +1 -0
  5. package/cli/cli-util.d.ts +21 -0
  6. package/cli/cli-util.js +239 -0
  7. package/cli/cli-util.js.map +1 -0
  8. package/cli/config.d.ts +19 -0
  9. package/cli/config.js +41 -0
  10. package/cli/config.js.map +1 -0
  11. package/cli/index.d.ts +16 -0
  12. package/cli/index.js +143 -6524
  13. package/cli/index.js.map +1 -0
  14. package/cli/plugin-runner.d.ts +14 -0
  15. package/cli/plugin-runner.js +146 -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 +26 -0
  21. package/language-server/constants.js +40 -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 -6436
  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 +280 -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 +11 -0
  45. package/language-server/validator/expression-validator.js +57 -0
  46. package/language-server/validator/expression-validator.js.map +1 -0
  47. package/language-server/validator/function-invocation-validator.d.ts +11 -0
  48. package/language-server/validator/function-invocation-validator.js +110 -0
  49. package/language-server/validator/function-invocation-validator.js.map +1 -0
  50. package/language-server/validator/schema-validator.d.ts +10 -0
  51. package/language-server/validator/schema-validator.js +29 -0
  52. package/language-server/validator/schema-validator.js.map +1 -0
  53. package/language-server/validator/utils.d.ts +25 -0
  54. package/language-server/validator/utils.js +261 -0
  55. package/language-server/validator/utils.js.map +1 -0
  56. package/language-server/validator/zmodel-validator.d.ts +22 -0
  57. package/language-server/validator/zmodel-validator.js +74 -0
  58. package/language-server/validator/zmodel-validator.js.map +1 -0
  59. package/language-server/zmodel-code-action.d.ts +14 -0
  60. package/language-server/zmodel-code-action.js +109 -0
  61. package/language-server/zmodel-code-action.js.map +1 -0
  62. package/language-server/zmodel-formatter.d.ts +9 -0
  63. package/language-server/zmodel-formatter.js +76 -0
  64. package/language-server/zmodel-formatter.js.map +1 -0
  65. package/language-server/zmodel-linker.d.ts +30 -0
  66. package/language-server/zmodel-linker.js +375 -0
  67. package/language-server/zmodel-linker.js.map +1 -0
  68. package/language-server/zmodel-module.d.ts +41 -0
  69. package/language-server/zmodel-module.js +80 -0
  70. package/language-server/zmodel-module.js.map +1 -0
  71. package/language-server/zmodel-scope.d.ts +10 -0
  72. package/language-server/zmodel-scope.js +44 -0
  73. package/language-server/zmodel-scope.js.map +1 -0
  74. package/language-server/zmodel-workspace-manager.d.ts +12 -0
  75. package/language-server/zmodel-workspace-manager.js +138 -0
  76. package/language-server/zmodel-workspace-manager.js.map +1 -0
  77. package/package.json +31 -23
  78. package/plugins/access-policy/expression-writer.d.ts +41 -0
  79. package/plugins/access-policy/expression-writer.js +475 -0
  80. package/plugins/access-policy/expression-writer.js.map +1 -0
  81. package/plugins/access-policy/index.d.ts +4 -0
  82. package/plugins/access-policy/index.js +24 -0
  83. package/plugins/access-policy/index.js.map +1 -0
  84. package/plugins/access-policy/policy-guard-generator.d.ts +15 -0
  85. package/plugins/access-policy/policy-guard-generator.js +350 -0
  86. package/plugins/access-policy/policy-guard-generator.js.map +1 -0
  87. package/plugins/access-policy/typescript-expression-transformer.d.ts +28 -0
  88. package/plugins/access-policy/typescript-expression-transformer.js +121 -0
  89. package/plugins/access-policy/typescript-expression-transformer.js.map +1 -0
  90. package/plugins/access-policy/utils.d.ts +5 -0
  91. package/plugins/access-policy/utils.js +14 -0
  92. package/plugins/access-policy/utils.js.map +1 -0
  93. package/plugins/access-policy/zod-schema-generator.d.ts +12 -0
  94. package/plugins/access-policy/zod-schema-generator.js +157 -0
  95. package/plugins/access-policy/zod-schema-generator.js.map +1 -0
  96. package/plugins/model-meta/index.d.ts +4 -0
  97. package/plugins/model-meta/index.js +172 -0
  98. package/plugins/model-meta/index.js.map +1 -0
  99. package/plugins/plugin-utils.d.ts +15 -0
  100. package/plugins/plugin-utils.js +53 -0
  101. package/plugins/plugin-utils.js.map +1 -0
  102. package/plugins/prisma/indent-string.d.ts +4 -0
  103. package/plugins/prisma/indent-string.js +12 -0
  104. package/plugins/prisma/indent-string.js.map +1 -0
  105. package/plugins/prisma/index.d.ts +5 -0
  106. package/plugins/prisma/index.js +24 -3740
  107. package/plugins/prisma/index.js.map +1 -0
  108. package/plugins/prisma/prisma-builder.d.ts +152 -0
  109. package/plugins/prisma/prisma-builder.js +363 -0
  110. package/plugins/prisma/prisma-builder.js.map +1 -0
  111. package/plugins/prisma/schema-generator.d.ts +25 -0
  112. package/plugins/prisma/schema-generator.js +306 -0
  113. package/plugins/prisma/schema-generator.js.map +1 -0
  114. package/plugins/prisma/zmodel-code-generator.d.ts +30 -0
  115. package/plugins/prisma/zmodel-code-generator.js +122 -0
  116. package/plugins/prisma/zmodel-code-generator.js.map +1 -0
  117. package/plugins/zod/generator.d.ts +4 -0
  118. package/plugins/zod/generator.js +102 -0
  119. package/plugins/zod/generator.js.map +1 -0
  120. package/plugins/zod/index.d.ts +5 -0
  121. package/plugins/zod/index.js +21 -4808
  122. package/plugins/zod/index.js.map +1 -0
  123. package/plugins/zod/transformer.d.ts +67 -0
  124. package/plugins/zod/transformer.js +452 -0
  125. package/plugins/zod/transformer.js.map +1 -0
  126. package/plugins/zod/types.d.ts +22 -0
  127. package/plugins/zod/types.js +3 -0
  128. package/plugins/zod/types.js.map +1 -0
  129. package/plugins/zod/utils/removeDir.d.ts +1 -0
  130. package/plugins/zod/utils/removeDir.js +30 -0
  131. package/plugins/zod/utils/removeDir.js.map +1 -0
  132. package/res/prism-zmodel.js +2 -4
  133. package/res/starter.zmodel +51 -0
  134. package/res/stdlib.zmodel +194 -8
  135. package/telemetry.d.ts +20 -0
  136. package/telemetry.js +127 -0
  137. package/telemetry.js.map +1 -0
  138. package/types.d.ts +12 -0
  139. package/types.js +3 -0
  140. package/types.js.map +1 -0
  141. package/utils/ast-utils.d.ts +5 -0
  142. package/utils/ast-utils.js +49 -0
  143. package/utils/ast-utils.js.map +1 -0
  144. package/utils/exec-utils.d.ts +6 -0
  145. package/utils/exec-utils.js +13 -0
  146. package/utils/exec-utils.js.map +1 -0
  147. package/utils/pkg-utils.d.ts +3 -0
  148. package/utils/pkg-utils.js +64 -0
  149. package/utils/pkg-utils.js.map +1 -0
  150. package/utils/version-utils.d.ts +1 -0
  151. package/utils/version-utils.js +14 -0
  152. package/utils/version-utils.js.map +1 -0
  153. package/asset/logo-256-bg.png +0 -0
  154. package/asset/logo-dark-256.png +0 -0
  155. package/asset/logo-light-256.png +0 -0
  156. package/extension.js +0 -39
  157. package/plugins/policy-guard/index.js +0 -4289
  158. package/plugins/react-hooks/index.js +0 -4318
  159. package/plugins/trpc/index.js +0 -5386
  160. package/res/package.template.json +0 -9
  161. package/res/tsconfig.template.json +0 -17
@@ -0,0 +1,41 @@
1
+ import { DefaultSharedModuleContext, LangiumDefaultSharedServices, LangiumServices, LangiumSharedServices, Module, PartialLangiumServices } from 'langium';
2
+ import { ZModelValidator } from './validator/zmodel-validator';
3
+ /**
4
+ * Declaration of custom services - add your own service classes here.
5
+ */
6
+ export declare type ZModelAddedServices = {
7
+ validation: {
8
+ ZModelValidator: ZModelValidator;
9
+ };
10
+ };
11
+ /**
12
+ * Union of Langium default services and your custom services - use this as constructor parameter
13
+ * of custom service classes.
14
+ */
15
+ export declare type ZModelServices = LangiumServices & ZModelAddedServices;
16
+ /**
17
+ * Dependency injection module that overrides Langium default services and contributes the
18
+ * declared custom services. The Langium defaults can be partially specified to override only
19
+ * selected services, while the custom services must be fully specified.
20
+ */
21
+ export declare const ZModelModule: Module<ZModelServices, PartialLangiumServices & ZModelAddedServices>;
22
+ export declare function createSharedModule(context: DefaultSharedModuleContext): Module<LangiumSharedServices, LangiumDefaultSharedServices>;
23
+ /**
24
+ * Create the full set of services required by Langium.
25
+ *
26
+ * First inject the shared services by merging two modules:
27
+ * - Langium default shared services
28
+ * - Services generated by langium-cli
29
+ *
30
+ * Then inject the language-specific services by merging three modules:
31
+ * - Langium default language-specific services
32
+ * - Services generated by langium-cli
33
+ * - Services specified in this file
34
+ *
35
+ * @param context Optional module context with the LSP connection
36
+ * @returns An object wrapping the shared services and the language-specific services
37
+ */
38
+ export declare function createZModelServices(context: DefaultSharedModuleContext): {
39
+ shared: LangiumSharedServices;
40
+ ZModel: ZModelServices;
41
+ };
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.createZModelServices = exports.createSharedModule = exports.ZModelModule = void 0;
7
+ const module_1 = require("@zenstackhq/language/module");
8
+ const langium_1 = require("langium");
9
+ const vscode_languageserver_1 = require("vscode-languageserver");
10
+ const vscode_languageserver_textdocument_1 = require("vscode-languageserver-textdocument");
11
+ const zmodel_validator_1 = require("./validator/zmodel-validator");
12
+ const zmodel_code_action_1 = require("./zmodel-code-action");
13
+ const zmodel_formatter_1 = require("./zmodel-formatter");
14
+ const zmodel_linker_1 = require("./zmodel-linker");
15
+ const zmodel_scope_1 = require("./zmodel-scope");
16
+ const zmodel_workspace_manager_1 = __importDefault(require("./zmodel-workspace-manager"));
17
+ /**
18
+ * Dependency injection module that overrides Langium default services and contributes the
19
+ * declared custom services. The Langium defaults can be partially specified to override only
20
+ * selected services, while the custom services must be fully specified.
21
+ */
22
+ exports.ZModelModule = {
23
+ references: {
24
+ ScopeComputation: (services) => new zmodel_scope_1.ZModelScopeComputation(services),
25
+ Linker: (services) => new zmodel_linker_1.ZModelLinker(services),
26
+ },
27
+ validation: {
28
+ ValidationRegistry: (services) => new zmodel_validator_1.ZModelValidationRegistry(services),
29
+ ZModelValidator: () => new zmodel_validator_1.ZModelValidator(),
30
+ },
31
+ lsp: {
32
+ Formatter: () => new zmodel_formatter_1.ZModelFormatter(),
33
+ CodeActionProvider: (services) => new zmodel_code_action_1.ZModelCodeActionProvider(services),
34
+ },
35
+ };
36
+ // this duplicates createDefaultSharedModule except that a custom WorkspaceManager is used
37
+ function createSharedModule(context) {
38
+ return {
39
+ ServiceRegistry: () => new langium_1.DefaultServiceRegistry(),
40
+ lsp: {
41
+ Connection: () => context.connection,
42
+ LanguageServer: (services) => new langium_1.DefaultLanguageServer(services),
43
+ },
44
+ workspace: {
45
+ LangiumDocuments: (services) => new langium_1.DefaultLangiumDocuments(services),
46
+ LangiumDocumentFactory: (services) => new langium_1.DefaultLangiumDocumentFactory(services),
47
+ DocumentBuilder: (services) => new langium_1.DefaultDocumentBuilder(services),
48
+ TextDocuments: () => new vscode_languageserver_1.TextDocuments(vscode_languageserver_textdocument_1.TextDocument),
49
+ IndexManager: (services) => new langium_1.DefaultIndexManager(services),
50
+ WorkspaceManager: (services) => new zmodel_workspace_manager_1.default(services),
51
+ FileSystemProvider: (services) => context.fileSystemProvider(services),
52
+ MutexLock: () => new langium_1.MutexLock(),
53
+ ConfigurationProvider: (services) => new langium_1.DefaultConfigurationProvider(services),
54
+ },
55
+ };
56
+ }
57
+ exports.createSharedModule = createSharedModule;
58
+ /**
59
+ * Create the full set of services required by Langium.
60
+ *
61
+ * First inject the shared services by merging two modules:
62
+ * - Langium default shared services
63
+ * - Services generated by langium-cli
64
+ *
65
+ * Then inject the language-specific services by merging three modules:
66
+ * - Langium default language-specific services
67
+ * - Services generated by langium-cli
68
+ * - Services specified in this file
69
+ *
70
+ * @param context Optional module context with the LSP connection
71
+ * @returns An object wrapping the shared services and the language-specific services
72
+ */
73
+ function createZModelServices(context) {
74
+ const shared = (0, langium_1.inject)(createSharedModule(context), module_1.ZModelGeneratedSharedModule);
75
+ const ZModel = (0, langium_1.inject)((0, langium_1.createDefaultModule)({ shared }), module_1.ZModelGeneratedModule, exports.ZModelModule);
76
+ shared.ServiceRegistry.register(ZModel);
77
+ return { shared, ZModel };
78
+ }
79
+ exports.createZModelServices = createZModelServices;
80
+ //# sourceMappingURL=zmodel-module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zmodel-module.js","sourceRoot":"","sources":["../../src/language-server/zmodel-module.ts"],"names":[],"mappings":";;;;;;AAAA,wDAAiG;AACjG,qCAiBiB;AACjB,iEAAsD;AACtD,2FAAkE;AAClE,mEAAyF;AACzF,6DAAgE;AAChE,yDAAqD;AACrD,mDAA+C;AAC/C,iDAAwD;AACxD,0FAAgE;AAiBhE;;;;GAIG;AACU,QAAA,YAAY,GAAyE;IAC9F,UAAU,EAAE;QACR,gBAAgB,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,qCAAsB,CAAC,QAAQ,CAAC;QACpE,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,4BAAY,CAAC,QAAQ,CAAC;KACnD;IACD,UAAU,EAAE;QACR,kBAAkB,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,2CAAwB,CAAC,QAAQ,CAAC;QACxE,eAAe,EAAE,GAAG,EAAE,CAAC,IAAI,kCAAe,EAAE;KAC/C;IACD,GAAG,EAAE;QACD,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,kCAAe,EAAE;QACtC,kBAAkB,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,6CAAwB,CAAC,QAAQ,CAAC;KAC3E;CACJ,CAAC;AAEF,0FAA0F;AAC1F,SAAgB,kBAAkB,CAC9B,OAAmC;IAEnC,OAAO;QACH,eAAe,EAAE,GAAG,EAAE,CAAC,IAAI,gCAAsB,EAAE;QACnD,GAAG,EAAE;YACD,UAAU,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,UAAU;YACpC,cAAc,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,+BAAqB,CAAC,QAAQ,CAAC;SACpE;QACD,SAAS,EAAE;YACP,gBAAgB,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,iCAAuB,CAAC,QAAQ,CAAC;YACrE,sBAAsB,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,uCAA6B,CAAC,QAAQ,CAAC;YACjF,eAAe,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,gCAAsB,CAAC,QAAQ,CAAC;YACnE,aAAa,EAAE,GAAG,EAAE,CAAC,IAAI,qCAAa,CAAC,iDAAY,CAAC;YACpD,YAAY,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,6BAAmB,CAAC,QAAQ,CAAC;YAC7D,gBAAgB,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,kCAAsB,CAAC,QAAQ,CAAC;YACpE,kBAAkB,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,OAAO,CAAC,kBAAkB,CAAC,QAAQ,CAAC;YACtE,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,mBAAS,EAAE;YAChC,qBAAqB,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,sCAA4B,CAAC,QAAQ,CAAC;SAClF;KACJ,CAAC;AACN,CAAC;AArBD,gDAqBC;AAED;;;;;;;;;;;;;;GAcG;AACH,SAAgB,oBAAoB,CAAC,OAAmC;IAIpE,MAAM,MAAM,GAAG,IAAA,gBAAM,EAAC,kBAAkB,CAAC,OAAO,CAAC,EAAE,oCAA2B,CAAC,CAAC;IAEhF,MAAM,MAAM,GAAG,IAAA,gBAAM,EAAC,IAAA,6BAAmB,EAAC,EAAE,MAAM,EAAE,CAAC,EAAE,8BAAqB,EAAE,oBAAY,CAAC,CAAC;IAC5F,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACxC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AAC9B,CAAC;AATD,oDASC"}
@@ -0,0 +1,10 @@
1
+ import { AstNode, AstNodeDescription, DefaultScopeComputation, LangiumDocument, LangiumServices } from 'langium';
2
+ import { CancellationToken } from 'vscode-jsonrpc';
3
+ /**
4
+ * Custom Langium ScopeComputation implementation which adds enum fields into global scope
5
+ */
6
+ export declare class ZModelScopeComputation extends DefaultScopeComputation {
7
+ private readonly services;
8
+ constructor(services: LangiumServices);
9
+ computeExports(document: LangiumDocument<AstNode>, cancelToken?: CancellationToken | undefined): Promise<AstNodeDescription[]>;
10
+ }
@@ -0,0 +1,44 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.ZModelScopeComputation = void 0;
13
+ const ast_1 = require("@zenstackhq/language/ast");
14
+ const langium_1 = require("langium");
15
+ /**
16
+ * Custom Langium ScopeComputation implementation which adds enum fields into global scope
17
+ */
18
+ class ZModelScopeComputation extends langium_1.DefaultScopeComputation {
19
+ constructor(services) {
20
+ super(services);
21
+ this.services = services;
22
+ }
23
+ computeExports(document, cancelToken) {
24
+ const _super = Object.create(null, {
25
+ computeExports: { get: () => super.computeExports }
26
+ });
27
+ return __awaiter(this, void 0, void 0, function* () {
28
+ const result = yield _super.computeExports.call(this, document, cancelToken);
29
+ // add enum fields so they can be globally resolved across modules
30
+ for (const node of (0, langium_1.streamAllContents)(document.parseResult.value)) {
31
+ if (cancelToken) {
32
+ yield (0, langium_1.interruptAndCheck)(cancelToken);
33
+ }
34
+ if ((0, ast_1.isEnumField)(node)) {
35
+ const desc = this.services.workspace.AstNodeDescriptionProvider.createDescription(node, node.name, document);
36
+ result.push(desc);
37
+ }
38
+ }
39
+ return result;
40
+ });
41
+ }
42
+ }
43
+ exports.ZModelScopeComputation = ZModelScopeComputation;
44
+ //# sourceMappingURL=zmodel-scope.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zmodel-scope.js","sourceRoot":"","sources":["../../src/language-server/zmodel-scope.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,kDAAuD;AACvD,qCAQiB;AAGjB;;GAEG;AACH,MAAa,sBAAuB,SAAQ,iCAAuB;IAC/D,YAA6B,QAAyB;QAClD,KAAK,CAAC,QAAQ,CAAC,CAAC;QADS,aAAQ,GAAR,QAAQ,CAAiB;IAEtD,CAAC;IAEK,cAAc,CAChB,QAAkC,EAClC,WAA2C;;;;;YAE3C,MAAM,MAAM,GAAG,MAAM,OAAM,cAAc,YAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;YAEjE,kEAAkE;YAClE,KAAK,MAAM,IAAI,IAAI,IAAA,2BAAiB,EAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE;gBAC9D,IAAI,WAAW,EAAE;oBACb,MAAM,IAAA,2BAAiB,EAAC,WAAW,CAAC,CAAC;iBACxC;gBACD,IAAI,IAAA,iBAAW,EAAC,IAAI,CAAC,EAAE;oBACnB,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,0BAA0B,CAAC,iBAAiB,CAC7E,IAAI,EACJ,IAAI,CAAC,IAAI,EACT,QAAQ,CACX,CAAC;oBACF,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBACrB;aACJ;YAED,OAAO,MAAM,CAAC;QAClB,CAAC;KAAA;CACJ;AA5BD,wDA4BC"}
@@ -0,0 +1,12 @@
1
+ import { DefaultWorkspaceManager, LangiumDocument } from 'langium';
2
+ import { CancellationToken, WorkspaceFolder } from 'vscode-languageserver';
3
+ import { URI } from 'vscode-uri';
4
+ /**
5
+ * Custom Langium WorkspaceManager implementation which automatically loads stdlib.zmodel
6
+ */
7
+ export default class ZModelWorkspaceManager extends DefaultWorkspaceManager {
8
+ pluginModels: Set<string>;
9
+ protected loadAdditionalDocuments(_folders: WorkspaceFolder[], _collector: (document: LangiumDocument) => void): Promise<void>;
10
+ initializeWorkspace(folders: WorkspaceFolder[], cancelToken?: CancellationToken): Promise<void>;
11
+ protected loadPluginModels(workspaceFolder: WorkspaceFolder, folderPath: URI, pluginModels: Set<string>, collector: (document: LangiumDocument) => void): Promise<void>;
12
+ }
@@ -0,0 +1,138 @@
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("@zenstackhq/language/ast");
16
+ const sdk_1 = require("@zenstackhq/sdk");
17
+ const langium_1 = require("langium");
18
+ const path_1 = __importDefault(require("path"));
19
+ const vscode_languageserver_1 = require("vscode-languageserver");
20
+ const vscode_uri_1 = require("vscode-uri");
21
+ const constants_1 = require("./constants");
22
+ /**
23
+ * Custom Langium WorkspaceManager implementation which automatically loads stdlib.zmodel
24
+ */
25
+ class ZModelWorkspaceManager extends langium_1.DefaultWorkspaceManager {
26
+ constructor() {
27
+ super(...arguments);
28
+ this.pluginModels = new Set();
29
+ }
30
+ loadAdditionalDocuments(_folders, _collector) {
31
+ const _super = Object.create(null, {
32
+ loadAdditionalDocuments: { get: () => super.loadAdditionalDocuments }
33
+ });
34
+ return __awaiter(this, void 0, void 0, function* () {
35
+ yield _super.loadAdditionalDocuments.call(this, _folders, _collector);
36
+ const stdLibUri = vscode_uri_1.URI.file(path_1.default.join(__dirname, '../res', constants_1.STD_LIB_MODULE_NAME));
37
+ console.log(`Adding stdlib document from ${stdLibUri}`);
38
+ const stdlib = this.langiumDocuments.getOrCreateDocument(stdLibUri);
39
+ _collector(stdlib);
40
+ });
41
+ }
42
+ initializeWorkspace(folders, cancelToken = vscode_languageserver_1.CancellationToken.None) {
43
+ return __awaiter(this, void 0, void 0, function* () {
44
+ const fileExtensions = this.serviceRegistry.all.flatMap((e) => e.LanguageMetaData.fileExtensions);
45
+ const documents = [];
46
+ const collector = (document) => {
47
+ documents.push(document);
48
+ if (!this.langiumDocuments.hasDocument(document.uri)) {
49
+ this.langiumDocuments.addDocument(document);
50
+ }
51
+ };
52
+ yield this.loadAdditionalDocuments(folders, collector);
53
+ yield Promise.all(folders
54
+ .map((wf) => [wf, this.getRootFolder(wf)])
55
+ .map((entry) => __awaiter(this, void 0, void 0, function* () { return this.traverseFolder(...entry, fileExtensions, collector); })));
56
+ // find plugin models
57
+ documents.forEach((doc) => {
58
+ const parsed = doc.parseResult.value;
59
+ parsed.declarations.forEach((decl) => {
60
+ if ((0, ast_1.isPlugin)(decl)) {
61
+ const providerField = decl.fields.find((f) => f.name === 'provider');
62
+ if (providerField) {
63
+ const provider = (0, sdk_1.getLiteral)(providerField.value);
64
+ if (provider) {
65
+ this.pluginModels.add(provider);
66
+ }
67
+ }
68
+ }
69
+ });
70
+ });
71
+ if (this.pluginModels.size > 0) {
72
+ console.log(`Used plugin documents: ${Array.from(this.pluginModels)}`);
73
+ // the loaded plugin models would be removed from the set
74
+ const unLoadedPluginModels = new Set(this.pluginModels);
75
+ yield Promise.all(folders
76
+ .map((wf) => [wf, this.getRootFolder(wf)])
77
+ .map((entry) => __awaiter(this, void 0, void 0, function* () { return this.loadPluginModels(...entry, unLoadedPluginModels, collector); })));
78
+ if (unLoadedPluginModels.size > 0) {
79
+ console.warn(`The following plugin documents could not be loaded: ${Array.from(unLoadedPluginModels)}`);
80
+ }
81
+ }
82
+ // Only after creating all documents do we check whether we need to cancel the initialization
83
+ // The document builder will later pick up on all unprocessed documents
84
+ yield (0, langium_1.interruptAndCheck)(cancelToken);
85
+ yield this.documentBuilder.build(documents, undefined, cancelToken);
86
+ });
87
+ }
88
+ loadPluginModels(workspaceFolder, folderPath, pluginModels, collector) {
89
+ return __awaiter(this, void 0, void 0, function* () {
90
+ const content = yield (yield this.fileSystemProvider.readDirectory(folderPath)).sort((a, b) => {
91
+ // make sure the node_moudules folder is always the first one to be checked
92
+ // so it could be early exited if the plugin is found
93
+ if (a.isDirectory && b.isDirectory) {
94
+ const aName = vscode_uri_1.Utils.basename(a.uri);
95
+ if (aName === 'node_modules') {
96
+ return -1;
97
+ }
98
+ else {
99
+ return 1;
100
+ }
101
+ }
102
+ else {
103
+ return 0;
104
+ }
105
+ });
106
+ for (const entry of content) {
107
+ if (entry.isDirectory) {
108
+ const name = vscode_uri_1.Utils.basename(entry.uri);
109
+ if (name === 'node_modules') {
110
+ for (const plugin of Array.from(pluginModels)) {
111
+ const path = vscode_uri_1.Utils.joinPath(entry.uri, plugin, constants_1.PLUGIN_MODULE_NAME);
112
+ try {
113
+ this.fileSystemProvider.readFileSync(path);
114
+ const document = this.langiumDocuments.getOrCreateDocument(path);
115
+ collector(document);
116
+ console.log(`Adding plugin document from ${path.path}`);
117
+ pluginModels.delete(plugin);
118
+ // early exit if all plugins are loaded
119
+ if (pluginModels.size === 0) {
120
+ return;
121
+ }
122
+ }
123
+ catch (_a) {
124
+ // no-op. The module might be found in another node_modules folder
125
+ // will show the warning message eventually if not found
126
+ }
127
+ }
128
+ }
129
+ else {
130
+ yield this.loadPluginModels(workspaceFolder, entry.uri, pluginModels, collector);
131
+ }
132
+ }
133
+ }
134
+ });
135
+ }
136
+ }
137
+ exports.default = ZModelWorkspaceManager;
138
+ //# sourceMappingURL=zmodel-workspace-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zmodel-workspace-manager.js","sourceRoot":"","sources":["../../src/language-server/zmodel-workspace-manager.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "publisher": "zenstack",
4
4
  "displayName": "ZenStack Language Tools",
5
5
  "description": "A toolkit for building secure CRUD apps with Next.js + Typescript",
6
- "version": "0.6.0-pre.9",
6
+ "version": "1.0.0-alpha.101",
7
7
  "author": {
8
8
  "name": "ZenStack Team"
9
9
  },
@@ -15,14 +15,14 @@
15
15
  "typescript",
16
16
  "data modeling"
17
17
  ],
18
- "preview": true,
18
+ "preview": false,
19
19
  "icon": "asset/logo-256-bg.png",
20
20
  "repository": {
21
21
  "type": "git",
22
22
  "url": "https://github.com/zenstackhq/zenstack"
23
23
  },
24
24
  "publishConfig": {
25
- "directory": "bundle",
25
+ "directory": "dist",
26
26
  "linkDirectory": true
27
27
  },
28
28
  "engines": {
@@ -63,23 +63,27 @@
63
63
  "bin": {
64
64
  "zenstack": "bin/cli"
65
65
  },
66
- "main": "./extension.js",
66
+ "main": "./bundle/extension.js",
67
+ "peerDependencies": {
68
+ "prisma": "^4.0.0"
69
+ },
67
70
  "dependencies": {
68
- "@prisma/generator-helper": "^4.7.1",
69
- "@prisma/internals": "^4.7.1",
71
+ "@prisma/generator-helper": "^4.0.0",
72
+ "@prisma/internals": "^4.0.0",
70
73
  "async-exit-hook": "^2.0.1",
71
74
  "change-case": "^4.1.2",
72
75
  "chevrotain": "^9.1.0",
73
76
  "colors": "1.4.0",
74
77
  "commander": "^8.3.0",
75
78
  "cuid": "^2.1.8",
76
- "langium": "^0.5.0",
79
+ "get-latest-version": "^5.0.1",
80
+ "langium": "1.1.0",
77
81
  "mixpanel": "^0.17.0",
78
82
  "node-machine-id": "^1.1.12",
79
- "ora": "^6.1.2",
83
+ "ora": "^5.4.1",
80
84
  "pluralize": "^8.0.0",
81
- "prisma": "~4.7.0",
82
85
  "promisify": "^0.0.3",
86
+ "semver": "^7.3.8",
83
87
  "sleep-promise": "^9.1.0",
84
88
  "ts-morph": "^16.0.0",
85
89
  "uuid": "^9.0.0",
@@ -89,46 +93,50 @@
89
93
  "vscode-languageserver-textdocument": "^1.0.7",
90
94
  "vscode-uri": "^3.0.6",
91
95
  "zod": "^3.19.1",
92
- "@zenstackhq/language": "0.6.0-pre.2",
93
- "@zenstackhq/runtime": "0.6.0-pre.2",
94
- "@zenstackhq/sdk": "0.6.0-pre.2"
96
+ "zod-validation-error": "^0.2.1",
97
+ "@zenstackhq/language": "1.0.0-alpha.101",
98
+ "@zenstackhq/sdk": "1.0.0-alpha.101"
95
99
  },
96
100
  "devDependencies": {
97
101
  "@types/async-exit-hook": "^2.0.0",
98
102
  "@types/jest": "^29.2.0",
99
103
  "@types/node": "^14.18.32",
100
104
  "@types/pluralize": "^0.0.29",
105
+ "@types/semver": "^7.3.13",
101
106
  "@types/tmp": "^0.2.3",
102
107
  "@types/uuid": "^8.3.4",
103
108
  "@types/vscode": "^1.56.0",
104
109
  "@typescript-eslint/eslint-plugin": "^5.42.0",
105
110
  "@typescript-eslint/parser": "^5.42.0",
106
111
  "concurrently": "^7.4.0",
112
+ "copyfiles": "^2.4.1",
107
113
  "dotenv": "^16.0.3",
108
114
  "esbuild": "^0.15.12",
109
115
  "eslint": "^8.27.0",
116
+ "eslint-plugin-jest": "^27.1.7",
110
117
  "jest": "^29.2.1",
111
- "langium-cli": "^0.5.0",
118
+ "prisma": "^4.0.0",
119
+ "renamer": "^4.0.0",
112
120
  "rimraf": "^3.0.2",
113
121
  "tmp": "^0.2.1",
114
122
  "ts-jest": "^29.0.3",
115
123
  "ts-node": "^10.9.1",
116
124
  "tsc-alias": "^1.7.0",
117
- "tsconfig-paths-jest": "^0.0.1",
118
125
  "typescript": "^4.8.4",
119
- "vsce": "^2.13.0"
126
+ "vitest": "^0.29.7",
127
+ "vsce": "^2.13.0",
128
+ "@zenstackhq/runtime": "1.0.0-alpha.101",
129
+ "@zenstackhq/testtools": "1.0.0-alpha.101"
120
130
  },
121
131
  "scripts": {
122
132
  "vscode:publish": "vsce publish --no-dependencies",
123
- "vscode:prepublish": "cp ../../README.md ./ && pnpm lint && pnpm build",
133
+ "vscode:prepublish": "pnpm bundle",
124
134
  "vscode:package": "vsce package --no-dependencies",
125
- "clean": "rimraf bundle",
126
- "build": "pnpm lint && pnpm bundle && tsc --emitDeclarationOnly --declaration ",
127
- "bundle": "pnpm clean && node build/bundle.js --minify",
128
- "watch": "node build/bundle.js --watch",
129
- "ts:watch": "tsc --watch --noEmit",
130
- "tsc-alias:watch": "tsc-alias --watch",
131
- "lint": "eslint src --ext ts",
135
+ "clean": "rimraf bundle dist",
136
+ "build": "pnpm clean && pnpm lint && tsc && copyfiles -F \"bin/*\" dist && copyfiles ./README-global.md ./LICENSE ./package.json dist && renamer --replace \"README.md\" dist/README-global.md && copyfiles -u 1 \"src/res/*\" dist && node build/post-build.js",
137
+ "bundle": "pnpm clean && pnpm lint && node build/bundle.js --minify",
138
+ "watch": "tsc --watch",
139
+ "lint": "eslint src tests --ext ts",
132
140
  "test": "jest",
133
141
  "publish-dev": "pnpm publish --tag dev",
134
142
  "postinstall": "node bin/post-install.js"
@@ -0,0 +1,41 @@
1
+ import { Expression } from '@zenstackhq/language/ast';
2
+ import { CodeBlockWriter } from 'ts-morph';
3
+ /**
4
+ * Utility for writing ZModel expression as Prisma query argument objects into a ts-morph writer
5
+ */
6
+ export declare class ExpressionWriter {
7
+ private readonly writer;
8
+ private readonly isPostGuard;
9
+ private readonly plainExprBuilder;
10
+ /**
11
+ * Constructs a new ExpressionWriter
12
+ *
13
+ * @param isPostGuard indicates if we're writing for post-update conditions
14
+ */
15
+ constructor(writer: CodeBlockWriter, isPostGuard?: boolean);
16
+ /**
17
+ * Writes the given ZModel expression.
18
+ */
19
+ write(expr: Expression): void;
20
+ private writeReference;
21
+ private writeMemberAccess;
22
+ private writeExprList;
23
+ private writeBinary;
24
+ private writeIn;
25
+ private writeCollectionPredicate;
26
+ private isFieldAccess;
27
+ private guard;
28
+ private plain;
29
+ private writeComparison;
30
+ private isAuthOrAuthMemberAccess;
31
+ private writeOperator;
32
+ private writeFieldCondition;
33
+ private block;
34
+ private isModelTyped;
35
+ private mapOperator;
36
+ private negateOperator;
37
+ private writeLogical;
38
+ private writeUnary;
39
+ private writeLiteral;
40
+ private writeInvocation;
41
+ }