zenstack 0.6.0-pre.9 → 1.0.0-alpha.100
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.
- package/README.md +111 -10
- package/cli/cli-error.d.ts +5 -0
- package/cli/cli-error.js +10 -0
- package/cli/cli-error.js.map +1 -0
- package/cli/cli-util.d.ts +21 -0
- package/cli/cli-util.js +239 -0
- package/cli/cli-util.js.map +1 -0
- package/cli/config.d.ts +19 -0
- package/cli/config.js +41 -0
- package/cli/config.js.map +1 -0
- package/cli/index.d.ts +16 -0
- package/cli/index.js +143 -6524
- package/cli/index.js.map +1 -0
- package/cli/plugin-runner.d.ts +14 -0
- package/cli/plugin-runner.js +146 -0
- package/cli/plugin-runner.js.map +1 -0
- package/constants.d.ts +1 -0
- package/constants.js +6 -0
- package/constants.js.map +1 -0
- package/language-server/constants.d.ts +26 -0
- package/language-server/constants.js +40 -0
- package/language-server/constants.js.map +1 -0
- package/language-server/main.d.ts +1 -0
- package/language-server/main.js +13 -6436
- package/language-server/main.js.map +1 -0
- package/language-server/types.d.ts +10 -0
- package/language-server/types.js +3 -0
- package/language-server/types.js.map +1 -0
- package/language-server/utils.d.ts +18 -0
- package/language-server/utils.js +58 -0
- package/language-server/utils.js.map +1 -0
- package/language-server/validator/attribute-validator.d.ts +9 -0
- package/language-server/validator/attribute-validator.js +11 -0
- package/language-server/validator/attribute-validator.js.map +1 -0
- package/language-server/validator/datamodel-validator.d.ts +15 -0
- package/language-server/validator/datamodel-validator.js +280 -0
- package/language-server/validator/datamodel-validator.js.map +1 -0
- package/language-server/validator/datasource-validator.d.ts +12 -0
- package/language-server/validator/datasource-validator.js +66 -0
- package/language-server/validator/datasource-validator.js.map +1 -0
- package/language-server/validator/enum-validator.d.ts +11 -0
- package/language-server/validator/enum-validator.js +28 -0
- package/language-server/validator/enum-validator.js.map +1 -0
- package/language-server/validator/expression-validator.d.ts +11 -0
- package/language-server/validator/expression-validator.js +57 -0
- package/language-server/validator/expression-validator.js.map +1 -0
- package/language-server/validator/function-invocation-validator.d.ts +11 -0
- package/language-server/validator/function-invocation-validator.js +110 -0
- package/language-server/validator/function-invocation-validator.js.map +1 -0
- package/language-server/validator/schema-validator.d.ts +10 -0
- package/language-server/validator/schema-validator.js +29 -0
- package/language-server/validator/schema-validator.js.map +1 -0
- package/language-server/validator/utils.d.ts +25 -0
- package/language-server/validator/utils.js +261 -0
- package/language-server/validator/utils.js.map +1 -0
- package/language-server/validator/zmodel-validator.d.ts +22 -0
- package/language-server/validator/zmodel-validator.js +74 -0
- package/language-server/validator/zmodel-validator.js.map +1 -0
- package/language-server/zmodel-code-action.d.ts +14 -0
- package/language-server/zmodel-code-action.js +109 -0
- package/language-server/zmodel-code-action.js.map +1 -0
- package/language-server/zmodel-formatter.d.ts +9 -0
- package/language-server/zmodel-formatter.js +76 -0
- package/language-server/zmodel-formatter.js.map +1 -0
- package/language-server/zmodel-linker.d.ts +30 -0
- package/language-server/zmodel-linker.js +375 -0
- package/language-server/zmodel-linker.js.map +1 -0
- package/language-server/zmodel-module.d.ts +41 -0
- package/language-server/zmodel-module.js +80 -0
- package/language-server/zmodel-module.js.map +1 -0
- package/language-server/zmodel-scope.d.ts +10 -0
- package/language-server/zmodel-scope.js +44 -0
- package/language-server/zmodel-scope.js.map +1 -0
- package/language-server/zmodel-workspace-manager.d.ts +12 -0
- package/language-server/zmodel-workspace-manager.js +138 -0
- package/language-server/zmodel-workspace-manager.js.map +1 -0
- package/package.json +31 -23
- package/plugins/access-policy/expression-writer.d.ts +41 -0
- package/plugins/access-policy/expression-writer.js +475 -0
- package/plugins/access-policy/expression-writer.js.map +1 -0
- package/plugins/access-policy/index.d.ts +4 -0
- package/plugins/access-policy/index.js +24 -0
- package/plugins/access-policy/index.js.map +1 -0
- package/plugins/access-policy/policy-guard-generator.d.ts +15 -0
- package/plugins/access-policy/policy-guard-generator.js +350 -0
- package/plugins/access-policy/policy-guard-generator.js.map +1 -0
- package/plugins/access-policy/typescript-expression-transformer.d.ts +28 -0
- package/plugins/access-policy/typescript-expression-transformer.js +121 -0
- package/plugins/access-policy/typescript-expression-transformer.js.map +1 -0
- package/plugins/access-policy/utils.d.ts +5 -0
- package/plugins/access-policy/utils.js +14 -0
- package/plugins/access-policy/utils.js.map +1 -0
- package/plugins/access-policy/zod-schema-generator.d.ts +12 -0
- package/plugins/access-policy/zod-schema-generator.js +157 -0
- package/plugins/access-policy/zod-schema-generator.js.map +1 -0
- package/plugins/model-meta/index.d.ts +4 -0
- package/plugins/model-meta/index.js +172 -0
- package/plugins/model-meta/index.js.map +1 -0
- package/plugins/plugin-utils.d.ts +15 -0
- package/plugins/plugin-utils.js +53 -0
- package/plugins/plugin-utils.js.map +1 -0
- package/plugins/prisma/indent-string.d.ts +4 -0
- package/plugins/prisma/indent-string.js +12 -0
- package/plugins/prisma/indent-string.js.map +1 -0
- package/plugins/prisma/index.d.ts +5 -0
- package/plugins/prisma/index.js +24 -3740
- package/plugins/prisma/index.js.map +1 -0
- package/plugins/prisma/prisma-builder.d.ts +152 -0
- package/plugins/prisma/prisma-builder.js +363 -0
- package/plugins/prisma/prisma-builder.js.map +1 -0
- package/plugins/prisma/schema-generator.d.ts +25 -0
- package/plugins/prisma/schema-generator.js +306 -0
- package/plugins/prisma/schema-generator.js.map +1 -0
- package/plugins/prisma/zmodel-code-generator.d.ts +30 -0
- package/plugins/prisma/zmodel-code-generator.js +122 -0
- package/plugins/prisma/zmodel-code-generator.js.map +1 -0
- package/plugins/zod/generator.d.ts +4 -0
- package/plugins/zod/generator.js +102 -0
- package/plugins/zod/generator.js.map +1 -0
- package/plugins/zod/index.d.ts +5 -0
- package/plugins/zod/index.js +21 -4808
- package/plugins/zod/index.js.map +1 -0
- package/plugins/zod/transformer.d.ts +67 -0
- package/plugins/zod/transformer.js +452 -0
- package/plugins/zod/transformer.js.map +1 -0
- package/plugins/zod/types.d.ts +22 -0
- package/plugins/zod/types.js +3 -0
- package/plugins/zod/types.js.map +1 -0
- package/plugins/zod/utils/removeDir.d.ts +1 -0
- package/plugins/zod/utils/removeDir.js +30 -0
- package/plugins/zod/utils/removeDir.js.map +1 -0
- package/res/prism-zmodel.js +2 -4
- package/res/starter.zmodel +51 -0
- package/res/stdlib.zmodel +194 -8
- package/telemetry.d.ts +20 -0
- package/telemetry.js +127 -0
- package/telemetry.js.map +1 -0
- package/types.d.ts +12 -0
- package/types.js +3 -0
- package/types.js.map +1 -0
- package/utils/ast-utils.d.ts +5 -0
- package/utils/ast-utils.js +49 -0
- package/utils/ast-utils.js.map +1 -0
- package/utils/exec-utils.d.ts +6 -0
- package/utils/exec-utils.js +13 -0
- package/utils/exec-utils.js.map +1 -0
- package/utils/pkg-utils.d.ts +3 -0
- package/utils/pkg-utils.js +64 -0
- package/utils/pkg-utils.js.map +1 -0
- package/utils/version-utils.d.ts +1 -0
- package/utils/version-utils.js +14 -0
- package/utils/version-utils.js.map +1 -0
- package/asset/logo-256-bg.png +0 -0
- package/asset/logo-dark-256.png +0 -0
- package/asset/logo-light-256.png +0 -0
- package/extension.js +0 -39
- package/plugins/policy-guard/index.js +0 -4289
- package/plugins/react-hooks/index.js +0 -4318
- package/plugins/trpc/index.js +0 -5386
- package/res/package.template.json +0 -9
- 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
|
+
"version": "1.0.0-alpha.100",
|
|
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":
|
|
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": "
|
|
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.
|
|
69
|
-
"@prisma/internals": "^4.
|
|
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
|
-
"
|
|
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": "^
|
|
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
|
-
"
|
|
93
|
-
"@zenstackhq/
|
|
94
|
-
"@zenstackhq/sdk": "0.
|
|
96
|
+
"zod-validation-error": "^0.2.1",
|
|
97
|
+
"@zenstackhq/language": "1.0.0-alpha.100",
|
|
98
|
+
"@zenstackhq/sdk": "1.0.0-alpha.100"
|
|
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
|
-
"
|
|
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
|
-
"
|
|
126
|
+
"vitest": "^0.29.7",
|
|
127
|
+
"vsce": "^2.13.0",
|
|
128
|
+
"@zenstackhq/runtime": "1.0.0-alpha.100",
|
|
129
|
+
"@zenstackhq/testtools": "1.0.0-alpha.100"
|
|
120
130
|
},
|
|
121
131
|
"scripts": {
|
|
122
132
|
"vscode:publish": "vsce publish --no-dependencies",
|
|
123
|
-
"vscode:prepublish": "
|
|
133
|
+
"vscode:prepublish": "pnpm bundle",
|
|
124
134
|
"vscode:package": "vsce package --no-dependencies",
|
|
125
|
-
"clean": "rimraf bundle",
|
|
126
|
-
"build": "pnpm
|
|
127
|
-
"bundle": "pnpm clean && node build/bundle.js --minify",
|
|
128
|
-
"watch": "
|
|
129
|
-
"
|
|
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
|
+
}
|