zenstack 1.0.0-alpha.23 → 1.0.0-alpha.25
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 +79 -9
- package/cli/cli-error.js +3 -5
- package/cli/cli-error.js.map +1 -1
- package/cli/cli-util.js +123 -105
- package/cli/cli-util.js.map +1 -1
- package/cli/index.js +105 -63
- package/cli/index.js.map +1 -1
- package/cli/plugin-runner.js +130 -127
- package/cli/plugin-runner.js.map +1 -1
- package/language-server/constants.js +5 -13
- package/language-server/constants.js.map +1 -1
- package/language-server/main.js +8 -15
- package/language-server/main.js.map +1 -1
- package/language-server/types.js +3 -1
- package/language-server/types.js.map +1 -1
- package/language-server/utils.js +13 -16
- package/language-server/utils.js.map +1 -1
- package/language-server/validator/attribute-validator.js +3 -7
- package/language-server/validator/attribute-validator.js.map +1 -1
- package/language-server/validator/datamodel-validator.js +293 -347
- package/language-server/validator/datamodel-validator.js.map +1 -1
- package/language-server/validator/datasource-validator.js +61 -71
- package/language-server/validator/datasource-validator.js.map +1 -1
- package/language-server/validator/enum-validator.js +6 -10
- package/language-server/validator/enum-validator.js.map +1 -1
- package/language-server/validator/expression-validator.js +25 -31
- package/language-server/validator/expression-validator.js.map +1 -1
- package/language-server/validator/schema-validator.js +18 -25
- package/language-server/validator/schema-validator.js.map +1 -1
- package/language-server/validator/utils.js +86 -85
- package/language-server/validator/utils.js.map +1 -1
- package/language-server/validator/zmodel-validator.js +55 -58
- package/language-server/validator/zmodel-validator.js.map +1 -1
- package/language-server/zmodel-formatter.js +40 -21
- package/language-server/zmodel-formatter.js.map +1 -1
- package/language-server/zmodel-linker.js +328 -331
- package/language-server/zmodel-linker.js.map +1 -1
- package/language-server/zmodel-module.js +50 -59
- package/language-server/zmodel-module.js.map +1 -1
- package/language-server/zmodel-scope.js +35 -25
- package/language-server/zmodel-scope.js.map +1 -1
- package/language-server/zmodel-workspace-manager.js +30 -18
- package/language-server/zmodel-workspace-manager.js.map +1 -1
- package/package.json +8 -12
- package/plugins/access-policy/expression-writer.js +301 -292
- package/plugins/access-policy/expression-writer.js.map +1 -1
- package/plugins/access-policy/index.js +20 -11
- package/plugins/access-policy/index.js.map +1 -1
- package/plugins/access-policy/policy-guard-generator.js +327 -321
- package/plugins/access-policy/policy-guard-generator.js.map +1 -1
- package/plugins/access-policy/typescript-expression-transformer.js +94 -95
- package/plugins/access-policy/typescript-expression-transformer.js.map +1 -1
- package/plugins/access-policy/utils.js +7 -9
- package/plugins/access-policy/utils.js.map +1 -1
- package/plugins/access-policy/zod-schema-generator.js +143 -159
- package/plugins/access-policy/zod-schema-generator.js.map +1 -1
- package/plugins/model-meta/index.js +97 -102
- package/plugins/model-meta/index.js.map +1 -1
- package/plugins/plugin-utils.js +34 -40
- package/plugins/plugin-utils.js.map +1 -1
- package/plugins/prisma/indent-string.js +4 -8
- package/plugins/prisma/indent-string.js.map +1 -1
- package/plugins/prisma/index.js +20 -11
- package/plugins/prisma/index.js.map +1 -1
- package/plugins/prisma/prisma-builder.js +235 -213
- package/plugins/prisma/prisma-builder.js.map +1 -1
- package/plugins/prisma/schema-generator.js +205 -192
- package/plugins/prisma/schema-generator.js.map +1 -1
- package/plugins/prisma/zmodel-code-generator.js +109 -114
- package/plugins/prisma/zmodel-code-generator.js.map +1 -1
- package/telemetry.js +107 -90
- package/telemetry.js.map +1 -1
- package/types.js +3 -1
- package/types.js.map +1 -1
- package/utils/ast-utils.js +67 -67
- package/utils/ast-utils.js.map +1 -1
- package/utils/exec-utils.js +6 -15
- package/utils/exec-utils.js.map +1 -1
- package/utils/pkg-utils.js +38 -35
- package/utils/pkg-utils.js.map +1 -1
- package/utils/version-utils.js +9 -10
- package/utils/version-utils.js.map +1 -1
- package/global.d.js +0 -1
- package/global.d.js.map +0 -1
|
@@ -1,116 +1,117 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
});
|
|
6
|
-
exports.assignableToAttributeParam = assignableToAttributeParam;
|
|
7
|
-
exports.getStringLiteral = getStringLiteral;
|
|
8
|
-
exports.mapBuiltinTypeToExpressionType = mapBuiltinTypeToExpressionType;
|
|
9
|
-
exports.typeAssignable = typeAssignable;
|
|
10
|
-
exports.validateDuplicatedDeclarations = validateDuplicatedDeclarations;
|
|
11
|
-
var _ast = require("@zenstackhq/language/ast");
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.assignableToAttributeParam = exports.mapBuiltinTypeToExpressionType = exports.typeAssignable = exports.getStringLiteral = exports.validateDuplicatedDeclarations = void 0;
|
|
4
|
+
const ast_1 = require("@zenstackhq/language/ast");
|
|
12
5
|
/**
|
|
13
6
|
* Checks if the given declarations have duplicated names
|
|
14
7
|
*/
|
|
15
8
|
function validateDuplicatedDeclarations(decls, accept) {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
9
|
+
const groupByName = decls.reduce((group, decl) => {
|
|
10
|
+
var _a;
|
|
11
|
+
group[decl.name] = (_a = group[decl.name]) !== null && _a !== void 0 ? _a : [];
|
|
12
|
+
group[decl.name].push(decl);
|
|
13
|
+
return group;
|
|
14
|
+
}, {});
|
|
15
|
+
for (const [name, decls] of Object.entries(groupByName)) {
|
|
16
|
+
if (decls.length > 1) {
|
|
17
|
+
accept('error', `Duplicated declaration name "${name}"`, {
|
|
18
|
+
node: decls[1],
|
|
19
|
+
});
|
|
20
|
+
}
|
|
26
21
|
}
|
|
27
|
-
}
|
|
28
22
|
}
|
|
29
|
-
|
|
23
|
+
exports.validateDuplicatedDeclarations = validateDuplicatedDeclarations;
|
|
30
24
|
/**
|
|
31
25
|
* Try getting string value from a potential string literal expression
|
|
32
26
|
*/
|
|
33
27
|
function getStringLiteral(node) {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
28
|
+
if ((0, ast_1.isLiteralExpr)(node) && typeof node.value === 'string') {
|
|
29
|
+
return node.value;
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
return undefined;
|
|
33
|
+
}
|
|
39
34
|
}
|
|
40
|
-
|
|
35
|
+
exports.getStringLiteral = getStringLiteral;
|
|
41
36
|
/**
|
|
42
37
|
* Determines if the given sourceType is assignable to a destination of destType
|
|
43
38
|
*/
|
|
44
39
|
function typeAssignable(destType, sourceType) {
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
40
|
+
switch (destType) {
|
|
41
|
+
case 'Any':
|
|
42
|
+
return true;
|
|
43
|
+
case 'Float':
|
|
44
|
+
return sourceType === 'Any' || sourceType === 'Int' || sourceType === 'Float';
|
|
45
|
+
default:
|
|
46
|
+
return sourceType === 'Any' || sourceType === destType;
|
|
47
|
+
}
|
|
53
48
|
}
|
|
54
|
-
|
|
49
|
+
exports.typeAssignable = typeAssignable;
|
|
55
50
|
/**
|
|
56
51
|
* Maps a ZModel builtin type to expression type
|
|
57
52
|
*/
|
|
58
53
|
function mapBuiltinTypeToExpressionType(type) {
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
54
|
+
switch (type) {
|
|
55
|
+
case 'Any':
|
|
56
|
+
case 'Boolean':
|
|
57
|
+
case 'String':
|
|
58
|
+
case 'DateTime':
|
|
59
|
+
case 'Int':
|
|
60
|
+
case 'Float':
|
|
61
|
+
case 'Null':
|
|
62
|
+
return type;
|
|
63
|
+
case 'BigInt':
|
|
64
|
+
return 'Int';
|
|
65
|
+
case 'Decimal':
|
|
66
|
+
return 'Float';
|
|
67
|
+
case 'Json':
|
|
68
|
+
case 'Bytes':
|
|
69
|
+
return 'Any';
|
|
70
|
+
}
|
|
76
71
|
}
|
|
77
|
-
|
|
72
|
+
exports.mapBuiltinTypeToExpressionType = mapBuiltinTypeToExpressionType;
|
|
78
73
|
/**
|
|
79
74
|
* Determines if the given attribute argument is assignable to the given attribute parameter
|
|
80
75
|
*/
|
|
81
76
|
function assignableToAttributeParam(arg, param, attr) {
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
let dstType = param.type.type;
|
|
87
|
-
const dstIsArray = param.type.array;
|
|
88
|
-
const dstRef = param.type.reference;
|
|
89
|
-
if (dstType) {
|
|
90
|
-
if (typeof (argResolvedType === null || argResolvedType === void 0 ? void 0 : argResolvedType.decl) !== 'string') {
|
|
91
|
-
// destination type is not a reference, so argument type must be a plain expression
|
|
92
|
-
return false;
|
|
77
|
+
var _a, _b;
|
|
78
|
+
const argResolvedType = arg.$resolvedType;
|
|
79
|
+
if (!argResolvedType) {
|
|
80
|
+
return false;
|
|
93
81
|
}
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
if ((0, _ast.isDataModelField)(attr.$container)) {
|
|
102
|
-
var _attr$$container, _attr$$container$type;
|
|
103
|
-
if (!((_attr$$container = attr.$container) !== null && _attr$$container !== void 0 && (_attr$$container$type = _attr$$container.type) !== null && _attr$$container$type !== void 0 && _attr$$container$type.type)) {
|
|
104
|
-
return false;
|
|
82
|
+
let dstType = param.type.type;
|
|
83
|
+
const dstIsArray = param.type.array;
|
|
84
|
+
const dstRef = param.type.reference;
|
|
85
|
+
if (dstType) {
|
|
86
|
+
if (typeof (argResolvedType === null || argResolvedType === void 0 ? void 0 : argResolvedType.decl) !== 'string') {
|
|
87
|
+
// destination type is not a reference, so argument type must be a plain expression
|
|
88
|
+
return false;
|
|
105
89
|
}
|
|
106
|
-
dstType
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
90
|
+
if (dstType === 'FieldReference' || dstType === 'TransitiveFieldReference') {
|
|
91
|
+
if (dstIsArray) {
|
|
92
|
+
return ((0, ast_1.isArrayExpr)(arg.value) &&
|
|
93
|
+
!arg.value.items.find((item) => !(0, ast_1.isReferenceExpr)(item) || !(0, ast_1.isDataModelField)(item.target.ref)));
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
return (0, ast_1.isReferenceExpr)(arg.value) && (0, ast_1.isDataModelField)(arg.value.target.ref);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
else if (dstType === 'ContextType') {
|
|
100
|
+
if ((0, ast_1.isDataModelField)(attr.$container)) {
|
|
101
|
+
if (!((_b = (_a = attr.$container) === null || _a === void 0 ? void 0 : _a.type) === null || _b === void 0 ? void 0 : _b.type)) {
|
|
102
|
+
return false;
|
|
103
|
+
}
|
|
104
|
+
dstType = mapBuiltinTypeToExpressionType(attr.$container.type.type);
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
dstType = 'Any';
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
return (typeAssignable(dstType, argResolvedType.decl) && (dstType === 'Any' || dstIsArray === argResolvedType.array));
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
return (dstRef === null || dstRef === void 0 ? void 0 : dstRef.ref) === argResolvedType.decl && dstIsArray === argResolvedType.array;
|
|
110
114
|
}
|
|
111
|
-
return typeAssignable(dstType, argResolvedType.decl) && (dstType === 'Any' || dstIsArray === argResolvedType.array);
|
|
112
|
-
} else {
|
|
113
|
-
return (dstRef === null || dstRef === void 0 ? void 0 : dstRef.ref) === argResolvedType.decl && dstIsArray === argResolvedType.array;
|
|
114
|
-
}
|
|
115
115
|
}
|
|
116
|
+
exports.assignableToAttributeParam = assignableToAttributeParam;
|
|
116
117
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/language-server/validator/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,72 +1,69 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
});
|
|
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
6
|
exports.ZModelValidator = exports.ZModelValidationRegistry = void 0;
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
7
|
+
const langium_1 = require("langium");
|
|
8
|
+
const schema_validator_1 = __importDefault(require("./schema-validator"));
|
|
9
|
+
const datasource_validator_1 = __importDefault(require("./datasource-validator"));
|
|
10
|
+
const datamodel_validator_1 = __importDefault(require("./datamodel-validator"));
|
|
11
|
+
const attribute_validator_1 = __importDefault(require("./attribute-validator"));
|
|
12
|
+
const enum_validator_1 = __importDefault(require("./enum-validator"));
|
|
13
|
+
const expression_validator_1 = __importDefault(require("./expression-validator"));
|
|
15
14
|
/**
|
|
16
15
|
* Registry for validation checks.
|
|
17
16
|
*/
|
|
18
|
-
class ZModelValidationRegistry extends
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
17
|
+
class ZModelValidationRegistry extends langium_1.ValidationRegistry {
|
|
18
|
+
constructor(services) {
|
|
19
|
+
super(services);
|
|
20
|
+
const validator = services.validation.ZModelValidator;
|
|
21
|
+
const checks = {
|
|
22
|
+
Model: validator.checkModel,
|
|
23
|
+
DataSource: validator.checkDataSource,
|
|
24
|
+
DataModel: validator.checkDataModel,
|
|
25
|
+
Enum: validator.checkEnum,
|
|
26
|
+
Attribute: validator.checkAttribute,
|
|
27
|
+
Expression: validator.checkExpression,
|
|
28
|
+
};
|
|
29
|
+
this.register(checks, validator);
|
|
30
|
+
}
|
|
32
31
|
}
|
|
33
|
-
|
|
32
|
+
exports.ZModelValidationRegistry = ZModelValidationRegistry;
|
|
34
33
|
/**
|
|
35
34
|
* Implementation of custom validations.
|
|
36
35
|
*/
|
|
37
|
-
exports.ZModelValidationRegistry = ZModelValidationRegistry;
|
|
38
36
|
class ZModelValidator {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
37
|
+
shouldCheck(node) {
|
|
38
|
+
let doc;
|
|
39
|
+
let currNode = node;
|
|
40
|
+
while (currNode) {
|
|
41
|
+
if (currNode.$document) {
|
|
42
|
+
doc = currNode.$document;
|
|
43
|
+
break;
|
|
44
|
+
}
|
|
45
|
+
currNode = currNode.$container;
|
|
46
|
+
}
|
|
47
|
+
return (doc === null || doc === void 0 ? void 0 : doc.parseResult.lexerErrors.length) === 0 && (doc === null || doc === void 0 ? void 0 : doc.parseResult.parserErrors.length) === 0;
|
|
48
|
+
}
|
|
49
|
+
checkModel(node, accept) {
|
|
50
|
+
this.shouldCheck(node) && new schema_validator_1.default().validate(node, accept);
|
|
51
|
+
}
|
|
52
|
+
checkDataSource(node, accept) {
|
|
53
|
+
this.shouldCheck(node) && new datasource_validator_1.default().validate(node, accept);
|
|
54
|
+
}
|
|
55
|
+
checkDataModel(node, accept) {
|
|
56
|
+
this.shouldCheck(node) && new datamodel_validator_1.default().validate(node, accept);
|
|
57
|
+
}
|
|
58
|
+
checkEnum(node, accept) {
|
|
59
|
+
this.shouldCheck(node) && new enum_validator_1.default().validate(node, accept);
|
|
60
|
+
}
|
|
61
|
+
checkAttribute(node, accept) {
|
|
62
|
+
this.shouldCheck(node) && new attribute_validator_1.default().validate(node, accept);
|
|
63
|
+
}
|
|
64
|
+
checkExpression(node, accept) {
|
|
65
|
+
new expression_validator_1.default().validate(node, accept);
|
|
49
66
|
}
|
|
50
|
-
return ((_doc = doc) === null || _doc === void 0 ? void 0 : _doc.parseResult.lexerErrors.length) === 0 && ((_doc2 = doc) === null || _doc2 === void 0 ? void 0 : _doc2.parseResult.parserErrors.length) === 0;
|
|
51
|
-
}
|
|
52
|
-
checkModel(node, accept) {
|
|
53
|
-
this.shouldCheck(node) && new _schemaValidator.default().validate(node, accept);
|
|
54
|
-
}
|
|
55
|
-
checkDataSource(node, accept) {
|
|
56
|
-
this.shouldCheck(node) && new _datasourceValidator.default().validate(node, accept);
|
|
57
|
-
}
|
|
58
|
-
checkDataModel(node, accept) {
|
|
59
|
-
this.shouldCheck(node) && new _datamodelValidator.default().validate(node, accept);
|
|
60
|
-
}
|
|
61
|
-
checkEnum(node, accept) {
|
|
62
|
-
this.shouldCheck(node) && new _enumValidator.default().validate(node, accept);
|
|
63
|
-
}
|
|
64
|
-
checkAttribute(node, accept) {
|
|
65
|
-
this.shouldCheck(node) && new _attributeValidator.default().validate(node, accept);
|
|
66
|
-
}
|
|
67
|
-
checkExpression(node, accept) {
|
|
68
|
-
new _expressionValidator.default().validate(node, accept);
|
|
69
|
-
}
|
|
70
67
|
}
|
|
71
68
|
exports.ZModelValidator = ZModelValidator;
|
|
72
69
|
//# sourceMappingURL=zmodel-validator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zmodel-validator.js","
|
|
1
|
+
{"version":3,"file":"zmodel-validator.js","sourceRoot":"","sources":["../../../src/language-server/validator/zmodel-validator.ts"],"names":[],"mappings":";;;;;;AAAA,qCAA6G;AAG7G,0EAAiD;AACjD,kFAAyD;AACzD,gFAAuD;AACvD,gFAAuD;AACvD,sEAA6C;AAC7C,kFAAyD;AAEzD;;GAEG;AACH,MAAa,wBAAyB,SAAQ,4BAAkB;IAC5D,YAAY,QAAwB;QAChC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAChB,MAAM,SAAS,GAAG,QAAQ,CAAC,UAAU,CAAC,eAAe,CAAC;QACtD,MAAM,MAAM,GAAoC;YAC5C,KAAK,EAAE,SAAS,CAAC,UAAU;YAC3B,UAAU,EAAE,SAAS,CAAC,eAAe;YACrC,SAAS,EAAE,SAAS,CAAC,cAAc;YACnC,IAAI,EAAE,SAAS,CAAC,SAAS;YACzB,SAAS,EAAE,SAAS,CAAC,cAAc;YACnC,UAAU,EAAE,SAAS,CAAC,eAAe;SACxC,CAAC;QACF,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACrC,CAAC;CACJ;AAdD,4DAcC;AAED;;GAEG;AACH,MAAa,eAAe;IAChB,WAAW,CAAC,IAAa;QAC7B,IAAI,GAAgC,CAAC;QACrC,IAAI,QAAQ,GAAwB,IAAI,CAAC;QACzC,OAAO,QAAQ,EAAE;YACb,IAAI,QAAQ,CAAC,SAAS,EAAE;gBACpB,GAAG,GAAG,QAAQ,CAAC,SAAS,CAAC;gBACzB,MAAM;aACT;YACD,QAAQ,GAAG,QAAQ,CAAC,UAAU,CAAC;SAClC;QAED,OAAO,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,WAAW,CAAC,WAAW,CAAC,MAAM,MAAK,CAAC,IAAI,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,WAAW,CAAC,YAAY,CAAC,MAAM,MAAK,CAAC,CAAC;IACnG,CAAC;IAED,UAAU,CAAC,IAAW,EAAE,MAA0B;QAC9C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,IAAI,0BAAe,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC3E,CAAC;IAED,eAAe,CAAC,IAAgB,EAAE,MAA0B;QACxD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,IAAI,8BAAmB,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC/E,CAAC;IAED,cAAc,CAAC,IAAe,EAAE,MAA0B;QACtD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,IAAI,6BAAkB,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC9E,CAAC;IAED,SAAS,CAAC,IAAU,EAAE,MAA0B;QAC5C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,IAAI,wBAAa,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACzE,CAAC;IAED,cAAc,CAAC,IAAe,EAAE,MAA0B;QACtD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,IAAI,6BAAkB,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC9E,CAAC;IAED,eAAe,CAAC,IAAgB,EAAE,MAA0B;QACxD,IAAI,8BAAmB,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACrD,CAAC;CACJ;AAtCD,0CAsCC"}
|
|
@@ -1,28 +1,47 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
5
17
|
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
26
|
exports.ZModelFormatter = void 0;
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
27
|
+
const langium_1 = require("langium");
|
|
28
|
+
const ast = __importStar(require("@zenstackhq/language/ast"));
|
|
29
|
+
class ZModelFormatter extends langium_1.AbstractFormatter {
|
|
30
|
+
format(node) {
|
|
31
|
+
const formatter = this.getNodeFormatter(node);
|
|
32
|
+
if (ast.isAbstractDeclaration(node)) {
|
|
33
|
+
const bracesOpen = formatter.keyword('{');
|
|
34
|
+
const bracesClose = formatter.keyword('}');
|
|
35
|
+
formatter.interior(bracesOpen, bracesClose).prepend(langium_1.Formatting.indent());
|
|
36
|
+
bracesOpen.prepend(langium_1.Formatting.oneSpace());
|
|
37
|
+
bracesClose.prepend(langium_1.Formatting.newLine());
|
|
38
|
+
}
|
|
39
|
+
else if (ast.isModel(node)) {
|
|
40
|
+
const model = node;
|
|
41
|
+
const nodes = formatter.nodes(...model.declarations);
|
|
42
|
+
nodes.prepend(langium_1.Formatting.noIndent());
|
|
43
|
+
}
|
|
24
44
|
}
|
|
25
|
-
}
|
|
26
45
|
}
|
|
27
46
|
exports.ZModelFormatter = ZModelFormatter;
|
|
28
47
|
//# sourceMappingURL=zmodel-formatter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zmodel-formatter.js","
|
|
1
|
+
{"version":3,"file":"zmodel-formatter.js","sourceRoot":"","sources":["../../src/language-server/zmodel-formatter.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qCAAiE;AAEjE,8DAAgD;AAEhD,MAAa,eAAgB,SAAQ,2BAAiB;IACxC,MAAM,CAAC,IAAa;QAC1B,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAC9C,IAAI,GAAG,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE;YACjC,MAAM,UAAU,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC1C,MAAM,WAAW,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC3C,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC,OAAO,CAAC,oBAAU,CAAC,MAAM,EAAE,CAAC,CAAC;YACzE,UAAU,CAAC,OAAO,CAAC,oBAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC1C,WAAW,CAAC,OAAO,CAAC,oBAAU,CAAC,OAAO,EAAE,CAAC,CAAC;SAC7C;aAAM,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAC1B,MAAM,KAAK,GAAG,IAAiB,CAAC;YAChC,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC;YACrD,KAAK,CAAC,OAAO,CAAC,oBAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;SACxC;IACL,CAAC;CACJ;AAfD,0CAeC"}
|