zenstack 1.6.1 → 1.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -0
- package/language-server/validator/attribute-application-validator.js +17 -0
- package/language-server/validator/attribute-application-validator.js.map +1 -1
- package/language-server/validator/function-invocation-validator.js +1 -1
- package/language-server/validator/function-invocation-validator.js.map +1 -1
- package/language-server/zmodel-completion-provider.d.ts +22 -0
- package/language-server/zmodel-completion-provider.js +325 -0
- package/language-server/zmodel-completion-provider.js.map +1 -0
- package/language-server/zmodel-highlight.d.ts +5 -0
- package/language-server/zmodel-highlight.js +31 -0
- package/language-server/zmodel-highlight.js.map +1 -0
- package/language-server/zmodel-hover.d.ts +5 -0
- package/language-server/zmodel-hover.js +31 -0
- package/language-server/zmodel-hover.js.map +1 -0
- package/language-server/zmodel-module.js +16 -2
- package/language-server/zmodel-module.js.map +1 -1
- package/language-server/zmodel-scope.d.ts +2 -0
- package/language-server/zmodel-scope.js +51 -0
- package/language-server/zmodel-scope.js.map +1 -1
- package/package.json +4 -4
- package/res/stdlib.zmodel +70 -8
package/README.md
CHANGED
|
@@ -9,6 +9,9 @@
|
|
|
9
9
|
<a href="https://www.npmjs.com/package/zenstack">
|
|
10
10
|
<img src="https://img.shields.io/npm/v/zenstack">
|
|
11
11
|
</a>
|
|
12
|
+
<a href="https://www.npmjs.com/package/zenstack">
|
|
13
|
+
<img src="https://img.shields.io/npm/dm/zenstack">
|
|
14
|
+
</a>
|
|
12
15
|
<img src="https://github.com/zenstackhq/zenstack/actions/workflows/build-test.yml/badge.svg">
|
|
13
16
|
<a href="https://twitter.com/zenstackhq">
|
|
14
17
|
<img src="https://img.shields.io/twitter/url?style=social&url=https%3A%2F%2Fgithub.com%2Fzenstackhq%2Fzenstack">
|
|
@@ -144,10 +144,27 @@ function assignableToAttributeParam(arg, param, attr) {
|
|
|
144
144
|
}
|
|
145
145
|
let dstType = param.type.type;
|
|
146
146
|
let dstIsArray = param.type.array;
|
|
147
|
+
if (dstType === 'ContextType') {
|
|
148
|
+
// ContextType is inferred from the attribute's container's type
|
|
149
|
+
if ((0, ast_1.isDataModelField)(attr.$container)) {
|
|
150
|
+
dstIsArray = attr.$container.type.array;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
147
153
|
const dstRef = param.type.reference;
|
|
148
154
|
if (dstType === 'Any' && !dstIsArray) {
|
|
149
155
|
return true;
|
|
150
156
|
}
|
|
157
|
+
if (argResolvedType.decl === 'Any') {
|
|
158
|
+
// arg is any type
|
|
159
|
+
if (!argResolvedType.array) {
|
|
160
|
+
// if it's not an array, it's assignable to any type
|
|
161
|
+
return true;
|
|
162
|
+
}
|
|
163
|
+
else {
|
|
164
|
+
// otherwise it's assignable to any array type
|
|
165
|
+
return argResolvedType.array === dstIsArray;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
151
168
|
// destination is field reference or transitive field reference, check if
|
|
152
169
|
// argument is reference or array or reference
|
|
153
170
|
if (dstType === 'FieldReference' || dstType === 'TransitiveFieldReference') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attribute-application-validator.js","sourceRoot":"","sources":["../../../src/language-server/validator/attribute-application-validator.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"attribute-application-validator.js","sourceRoot":"","sources":["../../../src/language-server/validator/attribute-application-validator.ts"],"names":[],"mappings":"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"}
|
|
@@ -34,7 +34,7 @@ class FunctionInvocationValidator {
|
|
|
34
34
|
// validate the context allowed for the function
|
|
35
35
|
const exprContext = (0, ts_pattern_1.match)(containerAttribute === null || containerAttribute === void 0 ? void 0 : containerAttribute.decl.$refText)
|
|
36
36
|
.with('@default', () => sdk_1.ExpressionContext.DefaultValue)
|
|
37
|
-
.with(ts_pattern_1.P.union('@@allow', '@@deny'), () => sdk_1.ExpressionContext.AccessPolicy)
|
|
37
|
+
.with(ts_pattern_1.P.union('@@allow', '@@deny', '@allow', '@deny'), () => sdk_1.ExpressionContext.AccessPolicy)
|
|
38
38
|
.with('@@validate', () => sdk_1.ExpressionContext.ValidationRule)
|
|
39
39
|
.otherwise(() => undefined);
|
|
40
40
|
// get the context allowed for the function
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"function-invocation-validator.js","sourceRoot":"","sources":["../../../src/language-server/validator/function-invocation-validator.ts"],"names":[],"mappings":";;AAAA,kDAYkC;AAClC,yCAAsH;AAEtH,2CAAsC;AACtC,qDAAmE;AAEnE,mCAAyC;AAEzC;;GAEG;AACH,MAAqB,2BAA2B;IAC5C,QAAQ,CAAC,IAAoB,EAAE,MAA0B;;QACrD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;QACnC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACZ,MAAM,CAAC,OAAO,EAAE,6BAA6B,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YAC/D,OAAO;QACX,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC;YAClD,OAAO;QACX,CAAC;QAED,IAAI,IAAA,kBAAY,EAAC,QAAQ,CAAC,EAAE,CAAC;YACzB,sCAAsC;YAEtC,2DAA2D;YAC3D,IAAI,IAAI,GAAwB,IAAI,CAAC,UAAU,CAAC;YAChD,IAAI,kBAA4E,CAAC;YACjF,OAAO,IAAI,EAAE,CAAC;gBACV,IAAI,IAAA,0BAAoB,EAAC,IAAI,CAAC,IAAI,IAAA,+BAAyB,EAAC,IAAI,CAAC,EAAE,CAAC;oBAChE,kBAAkB,GAAG,IAAI,CAAC;oBAC1B,MAAM;gBACV,CAAC;gBACD,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC;YAC3B,CAAC;YAED,gDAAgD;YAChD,MAAM,WAAW,GAAG,IAAA,kBAAK,EAAC,kBAAkB,aAAlB,kBAAkB,uBAAlB,kBAAkB,CAAE,IAAI,CAAC,QAAQ,CAAC;iBACvD,IAAI,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,uBAAiB,CAAC,YAAY,CAAC;iBACtD,IAAI,CAAC,cAAC,CAAC,KAAK,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC,uBAAiB,CAAC,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"function-invocation-validator.js","sourceRoot":"","sources":["../../../src/language-server/validator/function-invocation-validator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { AstNodeDescription, CompletionAcceptor, CompletionContext, CompletionProviderOptions, CompletionValueItem, DefaultCompletionProvider, LangiumDocument, LangiumServices, MaybePromise, NextFeature } from 'langium';
|
|
2
|
+
import { CompletionList, CompletionParams } from 'vscode-languageserver';
|
|
3
|
+
export declare class ZModelCompletionProvider extends DefaultCompletionProvider {
|
|
4
|
+
private readonly services;
|
|
5
|
+
constructor(services: LangiumServices);
|
|
6
|
+
readonly completionOptions?: CompletionProviderOptions;
|
|
7
|
+
getCompletion(document: LangiumDocument, params: CompletionParams): Promise<CompletionList | undefined>;
|
|
8
|
+
completionFor(context: CompletionContext, next: NextFeature, acceptor: CompletionAcceptor): MaybePromise<void>;
|
|
9
|
+
private getCompletionFromHint;
|
|
10
|
+
private getUnfilledAttributeParams;
|
|
11
|
+
completionForCrossReference(context: CompletionContext, crossRef: any, acceptor: CompletionAcceptor): MaybePromise<void>;
|
|
12
|
+
completionForKeyword(context: CompletionContext, keyword: any, acceptor: CompletionAcceptor): MaybePromise<void>;
|
|
13
|
+
private filterKeywordForContext;
|
|
14
|
+
private filterAttributeApplicationCompletion;
|
|
15
|
+
private getAttributeContextType;
|
|
16
|
+
createReferenceCompletionItem(nodeDescription: AstNodeDescription): CompletionValueItem;
|
|
17
|
+
private getFunctionInsertText;
|
|
18
|
+
private getAttributeInsertText;
|
|
19
|
+
private getAstNode;
|
|
20
|
+
private getNodeDocumentation;
|
|
21
|
+
private commentsToMarkdown;
|
|
22
|
+
}
|
|
@@ -0,0 +1,325 @@
|
|
|
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.ZModelCompletionProvider = void 0;
|
|
13
|
+
const ast_1 = require("@zenstackhq/language/ast");
|
|
14
|
+
const sdk_1 = require("@zenstackhq/sdk");
|
|
15
|
+
const langium_1 = require("langium");
|
|
16
|
+
const ts_pattern_1 = require("ts-pattern");
|
|
17
|
+
const vscode_languageserver_1 = require("vscode-languageserver");
|
|
18
|
+
class ZModelCompletionProvider extends langium_1.DefaultCompletionProvider {
|
|
19
|
+
constructor(services) {
|
|
20
|
+
super(services);
|
|
21
|
+
this.services = services;
|
|
22
|
+
this.completionOptions = {
|
|
23
|
+
triggerCharacters: ['@', '(', ',', '.'],
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
getCompletion(document, params) {
|
|
27
|
+
const _super = Object.create(null, {
|
|
28
|
+
getCompletion: { get: () => super.getCompletion }
|
|
29
|
+
});
|
|
30
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
31
|
+
try {
|
|
32
|
+
return yield _super.getCompletion.call(this, document, params);
|
|
33
|
+
}
|
|
34
|
+
catch (e) {
|
|
35
|
+
console.error('Completion error:', e.message);
|
|
36
|
+
return undefined;
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
completionFor(context, next, acceptor) {
|
|
41
|
+
if ((0, ast_1.isDataModelAttribute)(context.node) || (0, ast_1.isDataModelFieldAttribute)(context.node)) {
|
|
42
|
+
const completions = this.getCompletionFromHint(context.node);
|
|
43
|
+
if (completions) {
|
|
44
|
+
completions.forEach(acceptor);
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return super.completionFor(context, next, acceptor);
|
|
49
|
+
}
|
|
50
|
+
getCompletionFromHint(contextNode) {
|
|
51
|
+
// get completion based on the hint on the next unfilled parameter
|
|
52
|
+
const unfilledParams = this.getUnfilledAttributeParams(contextNode);
|
|
53
|
+
const nextParam = unfilledParams[0];
|
|
54
|
+
if (!nextParam) {
|
|
55
|
+
return undefined;
|
|
56
|
+
}
|
|
57
|
+
const hintAttr = (0, sdk_1.getAttribute)(nextParam, '@@@completionHint');
|
|
58
|
+
if (hintAttr) {
|
|
59
|
+
const hint = hintAttr.args[0];
|
|
60
|
+
if (hint === null || hint === void 0 ? void 0 : hint.value) {
|
|
61
|
+
if ((0, ast_1.isArrayExpr)(hint.value)) {
|
|
62
|
+
return hint.value.items.map((item) => {
|
|
63
|
+
return {
|
|
64
|
+
label: `${item.value}`,
|
|
65
|
+
kind: vscode_languageserver_1.CompletionItemKind.Value,
|
|
66
|
+
detail: 'Parameter',
|
|
67
|
+
sortText: '0',
|
|
68
|
+
};
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
return undefined;
|
|
74
|
+
}
|
|
75
|
+
// TODO: this doesn't work when the file contains parse errors
|
|
76
|
+
getUnfilledAttributeParams(contextNode) {
|
|
77
|
+
var _a;
|
|
78
|
+
try {
|
|
79
|
+
const params = (_a = contextNode.decl.ref) === null || _a === void 0 ? void 0 : _a.params;
|
|
80
|
+
if (params) {
|
|
81
|
+
const args = contextNode.args;
|
|
82
|
+
let unfilledParams = [...params];
|
|
83
|
+
args.forEach((arg) => {
|
|
84
|
+
if (arg.name) {
|
|
85
|
+
unfilledParams = unfilledParams.filter((p) => p.name !== arg.name);
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
unfilledParams.shift();
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
return unfilledParams;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
catch (_b) {
|
|
95
|
+
// noop
|
|
96
|
+
}
|
|
97
|
+
return [];
|
|
98
|
+
}
|
|
99
|
+
completionForCrossReference(context,
|
|
100
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
101
|
+
crossRef, acceptor) {
|
|
102
|
+
if (crossRef.property === 'member' && !(0, ast_1.isMemberAccessExpr)(context.node)) {
|
|
103
|
+
// for guarding an error in the base implementation
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
const customAcceptor = (item) => {
|
|
107
|
+
var _a, _b;
|
|
108
|
+
// attributes starting with @@@ are for internal use only
|
|
109
|
+
if (((_a = item.insertText) === null || _a === void 0 ? void 0 : _a.startsWith('@@@')) || ((_b = item.label) === null || _b === void 0 ? void 0 : _b.startsWith('@@@'))) {
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
if ('nodeDescription' in item) {
|
|
113
|
+
const node = this.getAstNode(item.nodeDescription);
|
|
114
|
+
if (!node) {
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
// enums in stdlib are not supposed to be referenced directly
|
|
118
|
+
if (((0, ast_1.isEnum)(node) || (0, ast_1.isEnumField)(node)) && (0, sdk_1.isFromStdlib)(node)) {
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
if (((0, ast_1.isDataModelAttribute)(context.node) || (0, ast_1.isDataModelFieldAttribute)(context.node)) &&
|
|
122
|
+
!this.filterAttributeApplicationCompletion(context.node, node)) {
|
|
123
|
+
// node not matching attribute context
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
acceptor(item);
|
|
128
|
+
};
|
|
129
|
+
super.completionForCrossReference(context, crossRef, customAcceptor);
|
|
130
|
+
}
|
|
131
|
+
completionForKeyword(context,
|
|
132
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
133
|
+
keyword, acceptor) {
|
|
134
|
+
const customAcceptor = (item) => {
|
|
135
|
+
if (!this.filterKeywordForContext(context, keyword.value)) {
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
acceptor(item);
|
|
139
|
+
};
|
|
140
|
+
super.completionForKeyword(context, keyword, customAcceptor);
|
|
141
|
+
}
|
|
142
|
+
filterKeywordForContext(context, keyword) {
|
|
143
|
+
if ((0, ast_1.isInvocationExpr)(context.node)) {
|
|
144
|
+
return ['true', 'false', 'null', 'this'].includes(keyword);
|
|
145
|
+
}
|
|
146
|
+
else if ((0, ast_1.isDataModelAttribute)(context.node) || (0, ast_1.isDataModelFieldAttribute)(context.node)) {
|
|
147
|
+
const exprContext = this.getAttributeContextType(context.node);
|
|
148
|
+
if (exprContext === 'DefaultValue') {
|
|
149
|
+
return ['true', 'false', 'null'].includes(keyword);
|
|
150
|
+
}
|
|
151
|
+
else {
|
|
152
|
+
return ['true', 'false', 'null', 'this'].includes(keyword);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
else {
|
|
156
|
+
return true;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
filterAttributeApplicationCompletion(contextNode, node) {
|
|
160
|
+
const attrContextType = this.getAttributeContextType(contextNode);
|
|
161
|
+
if ((0, ast_1.isFunctionDecl)(node) && attrContextType) {
|
|
162
|
+
// functions are excluded if they are not allowed in the current context
|
|
163
|
+
const funcExprContextAttr = (0, sdk_1.getAttribute)(node, '@@@expressionContext');
|
|
164
|
+
if (funcExprContextAttr && funcExprContextAttr.args[0]) {
|
|
165
|
+
const arg = funcExprContextAttr.args[0];
|
|
166
|
+
if ((0, ast_1.isArrayExpr)(arg.value)) {
|
|
167
|
+
return arg.value.items.some((item) => (0, sdk_1.isEnumFieldReference)(item) && item.target.$refText === attrContextType);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
return false;
|
|
171
|
+
}
|
|
172
|
+
if ((0, ast_1.isDataModelField)(node)) {
|
|
173
|
+
// model fields are not allowed in @default
|
|
174
|
+
return attrContextType !== 'DefaultValue';
|
|
175
|
+
}
|
|
176
|
+
return true;
|
|
177
|
+
}
|
|
178
|
+
getAttributeContextType(node) {
|
|
179
|
+
return (0, ts_pattern_1.match)(node.decl.$refText)
|
|
180
|
+
.with('@default', () => 'DefaultValue')
|
|
181
|
+
.with(ts_pattern_1.P.union('@@allow', '@allow', '@@deny', '@deny'), () => 'AccessPolicy')
|
|
182
|
+
.with('@@validate', () => 'ValidationRule')
|
|
183
|
+
.otherwise(() => undefined);
|
|
184
|
+
}
|
|
185
|
+
createReferenceCompletionItem(nodeDescription) {
|
|
186
|
+
const node = this.getAstNode(nodeDescription);
|
|
187
|
+
const documentation = this.getNodeDocumentation(node);
|
|
188
|
+
return (0, ts_pattern_1.match)(node)
|
|
189
|
+
.when(ast_1.isDataModel, () => ({
|
|
190
|
+
nodeDescription,
|
|
191
|
+
kind: vscode_languageserver_1.CompletionItemKind.Class,
|
|
192
|
+
detail: 'Data model',
|
|
193
|
+
sortText: '1',
|
|
194
|
+
documentation,
|
|
195
|
+
}))
|
|
196
|
+
.when(ast_1.isDataModelField, () => ({
|
|
197
|
+
nodeDescription,
|
|
198
|
+
kind: vscode_languageserver_1.CompletionItemKind.Field,
|
|
199
|
+
detail: 'Data model field',
|
|
200
|
+
sortText: '0',
|
|
201
|
+
documentation,
|
|
202
|
+
}))
|
|
203
|
+
.when(ast_1.isEnum, () => ({
|
|
204
|
+
nodeDescription,
|
|
205
|
+
kind: vscode_languageserver_1.CompletionItemKind.Class,
|
|
206
|
+
detail: 'Enum',
|
|
207
|
+
sortText: '1',
|
|
208
|
+
documentation,
|
|
209
|
+
}))
|
|
210
|
+
.when(ast_1.isEnumField, () => ({
|
|
211
|
+
nodeDescription,
|
|
212
|
+
kind: vscode_languageserver_1.CompletionItemKind.Enum,
|
|
213
|
+
detail: 'Enum value',
|
|
214
|
+
sortText: '1',
|
|
215
|
+
documentation,
|
|
216
|
+
}))
|
|
217
|
+
.when(ast_1.isFunctionDecl, () => ({
|
|
218
|
+
nodeDescription,
|
|
219
|
+
insertText: this.getFunctionInsertText(nodeDescription),
|
|
220
|
+
kind: vscode_languageserver_1.CompletionItemKind.Function,
|
|
221
|
+
detail: 'Function',
|
|
222
|
+
sortText: '1',
|
|
223
|
+
documentation,
|
|
224
|
+
}))
|
|
225
|
+
.when(ast_1.isAttribute, () => ({
|
|
226
|
+
nodeDescription,
|
|
227
|
+
insertText: this.getAttributeInsertText(nodeDescription),
|
|
228
|
+
kind: vscode_languageserver_1.CompletionItemKind.Property,
|
|
229
|
+
detail: 'Attribute',
|
|
230
|
+
sortText: '1',
|
|
231
|
+
documentation,
|
|
232
|
+
}))
|
|
233
|
+
.otherwise(() => ({
|
|
234
|
+
nodeDescription,
|
|
235
|
+
kind: vscode_languageserver_1.CompletionItemKind.Reference,
|
|
236
|
+
detail: nodeDescription.type,
|
|
237
|
+
sortText: '2',
|
|
238
|
+
documentation,
|
|
239
|
+
}));
|
|
240
|
+
}
|
|
241
|
+
getFunctionInsertText(nodeDescription) {
|
|
242
|
+
const node = this.getAstNode(nodeDescription);
|
|
243
|
+
if ((0, ast_1.isFunctionDecl)(node)) {
|
|
244
|
+
if (node.params.some((p) => !p.optional)) {
|
|
245
|
+
return nodeDescription.name;
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
return `${nodeDescription.name}()`;
|
|
249
|
+
}
|
|
250
|
+
getAttributeInsertText(nodeDescription) {
|
|
251
|
+
const node = this.getAstNode(nodeDescription);
|
|
252
|
+
if ((0, ast_1.isAttribute)(node)) {
|
|
253
|
+
if (node.name === '@relation') {
|
|
254
|
+
return `${nodeDescription.name}(fields: [], references: [])`;
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
return nodeDescription.name;
|
|
258
|
+
}
|
|
259
|
+
getAstNode(nodeDescription) {
|
|
260
|
+
let node = nodeDescription.node;
|
|
261
|
+
if (!node) {
|
|
262
|
+
const doc = this.services.shared.workspace.LangiumDocuments.getOrCreateDocument(nodeDescription.documentUri);
|
|
263
|
+
if (!doc) {
|
|
264
|
+
return undefined;
|
|
265
|
+
}
|
|
266
|
+
node = this.services.workspace.AstNodeLocator.getAstNode(doc.parseResult.value, nodeDescription.path);
|
|
267
|
+
if (!node) {
|
|
268
|
+
return undefined;
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
return node;
|
|
272
|
+
}
|
|
273
|
+
getNodeDocumentation(node) {
|
|
274
|
+
if (!node) {
|
|
275
|
+
return undefined;
|
|
276
|
+
}
|
|
277
|
+
const md = this.commentsToMarkdown(node);
|
|
278
|
+
return {
|
|
279
|
+
kind: 'markdown',
|
|
280
|
+
value: md,
|
|
281
|
+
};
|
|
282
|
+
}
|
|
283
|
+
commentsToMarkdown(node) {
|
|
284
|
+
var _a;
|
|
285
|
+
const md = (_a = this.services.documentation.DocumentationProvider.getDocumentation(node)) !== null && _a !== void 0 ? _a : '';
|
|
286
|
+
const zModelGenerator = new sdk_1.ZModelCodeGenerator();
|
|
287
|
+
const docs = [];
|
|
288
|
+
try {
|
|
289
|
+
(0, ts_pattern_1.match)(node)
|
|
290
|
+
.when(ast_1.isAttribute, (attr) => {
|
|
291
|
+
const zModelGenerator = new sdk_1.ZModelCodeGenerator();
|
|
292
|
+
docs.push('```prisma', zModelGenerator.generate(attr), '```');
|
|
293
|
+
})
|
|
294
|
+
.when(ast_1.isFunctionDecl, (func) => {
|
|
295
|
+
docs.push('```ts', zModelGenerator.generate(func), '```');
|
|
296
|
+
})
|
|
297
|
+
.when(ast_1.isDataModel, (model) => {
|
|
298
|
+
docs.push('```prisma', `model ${model.name} { ... }`, '```');
|
|
299
|
+
})
|
|
300
|
+
.when(ast_1.isEnum, (enumDecl) => {
|
|
301
|
+
docs.push('```prisma', zModelGenerator.generate(enumDecl), '```');
|
|
302
|
+
})
|
|
303
|
+
.when(ast_1.isDataModelField, (field) => {
|
|
304
|
+
var _a, _b;
|
|
305
|
+
docs.push(`${field.name}: ${(_a = field.type.type) !== null && _a !== void 0 ? _a : (_b = field.type.reference) === null || _b === void 0 ? void 0 : _b.$refText}`);
|
|
306
|
+
})
|
|
307
|
+
.otherwise((ast) => {
|
|
308
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
309
|
+
const name = ast.name;
|
|
310
|
+
if (name) {
|
|
311
|
+
docs.push(name);
|
|
312
|
+
}
|
|
313
|
+
});
|
|
314
|
+
}
|
|
315
|
+
catch (_b) {
|
|
316
|
+
// noop
|
|
317
|
+
}
|
|
318
|
+
if (md) {
|
|
319
|
+
docs.push('___', md);
|
|
320
|
+
}
|
|
321
|
+
return docs.join('\n');
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
exports.ZModelCompletionProvider = ZModelCompletionProvider;
|
|
325
|
+
//# sourceMappingURL=zmodel-completion-provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zmodel-completion-provider.js","sourceRoot":"","sources":["../../src/language-server/zmodel-completion-provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { DefaultDocumentHighlightProvider, LangiumDocument } from 'langium';
|
|
2
|
+
import { DocumentHighlight, DocumentHighlightParams } from 'vscode-languageserver';
|
|
3
|
+
export declare class ZModelHighlightProvider extends DefaultDocumentHighlightProvider {
|
|
4
|
+
getDocumentHighlight(document: LangiumDocument, params: DocumentHighlightParams): Promise<DocumentHighlight[] | undefined>;
|
|
5
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
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.ZModelHighlightProvider = void 0;
|
|
13
|
+
const langium_1 = require("langium");
|
|
14
|
+
class ZModelHighlightProvider extends langium_1.DefaultDocumentHighlightProvider {
|
|
15
|
+
getDocumentHighlight(document, params) {
|
|
16
|
+
const _super = Object.create(null, {
|
|
17
|
+
getDocumentHighlight: { get: () => super.getDocumentHighlight }
|
|
18
|
+
});
|
|
19
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
20
|
+
try {
|
|
21
|
+
return yield _super.getDocumentHighlight.call(this, document, params);
|
|
22
|
+
}
|
|
23
|
+
catch (e) {
|
|
24
|
+
console.error('Highlight error:', e.message);
|
|
25
|
+
return undefined;
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
exports.ZModelHighlightProvider = ZModelHighlightProvider;
|
|
31
|
+
//# sourceMappingURL=zmodel-highlight.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zmodel-highlight.js","sourceRoot":"","sources":["../../src/language-server/zmodel-highlight.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qCAA4E;AAG5E,MAAa,uBAAwB,SAAQ,0CAAgC;IAC1D,oBAAoB,CAC/B,QAAyB,EACzB,MAA+B;;;;;YAE/B,IAAI,CAAC;gBACD,OAAO,MAAM,OAAM,oBAAoB,YAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAC9D,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACT,OAAO,CAAC,KAAK,CAAC,kBAAkB,EAAG,CAAW,CAAC,OAAO,CAAC,CAAC;gBACxD,OAAO,SAAS,CAAC;YACrB,CAAC;QACL,CAAC;KAAA;CACJ;AAZD,0DAYC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { AstNode, LangiumDocument, MultilineCommentHoverProvider } from 'langium';
|
|
2
|
+
import { Hover, HoverParams } from 'vscode-languageclient';
|
|
3
|
+
export declare class ZModelHoverProvider extends MultilineCommentHoverProvider {
|
|
4
|
+
getHoverContent(document: LangiumDocument<AstNode>, params: HoverParams): Promise<Hover | undefined>;
|
|
5
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
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.ZModelHoverProvider = void 0;
|
|
13
|
+
const langium_1 = require("langium");
|
|
14
|
+
class ZModelHoverProvider extends langium_1.MultilineCommentHoverProvider {
|
|
15
|
+
getHoverContent(document, params) {
|
|
16
|
+
const _super = Object.create(null, {
|
|
17
|
+
getHoverContent: { get: () => super.getHoverContent }
|
|
18
|
+
});
|
|
19
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
20
|
+
try {
|
|
21
|
+
return yield _super.getHoverContent.call(this, document, params);
|
|
22
|
+
}
|
|
23
|
+
catch (e) {
|
|
24
|
+
console.error('Hover error:', e.message);
|
|
25
|
+
return undefined;
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
exports.ZModelHoverProvider = ZModelHoverProvider;
|
|
31
|
+
//# sourceMappingURL=zmodel-hover.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zmodel-hover.js","sourceRoot":"","sources":["../../src/language-server/zmodel-hover.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qCAAkF;AAGlF,MAAa,mBAAoB,SAAQ,uCAA6B;IACnD,eAAe,CAC1B,QAAkC,EAClC,MAAmB;;;;;YAEnB,IAAI,CAAC;gBACD,OAAO,MAAM,OAAM,eAAe,YAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YACzD,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACT,OAAO,CAAC,KAAK,CAAC,cAAc,EAAG,CAAW,CAAC,OAAO,CAAC,CAAC;gBACpD,OAAO,SAAS,CAAC;YACrB,CAAC;QACL,CAAC;KAAA;CACJ;AAZD,kDAYC"}
|
|
@@ -10,12 +10,15 @@ const vscode_languageserver_1 = require("vscode-languageserver");
|
|
|
10
10
|
const vscode_languageserver_textdocument_1 = require("vscode-languageserver-textdocument");
|
|
11
11
|
const zmodel_validator_1 = require("./validator/zmodel-validator");
|
|
12
12
|
const zmodel_code_action_1 = require("./zmodel-code-action");
|
|
13
|
+
const zmodel_completion_provider_1 = require("./zmodel-completion-provider");
|
|
14
|
+
const zmodel_definition_1 = require("./zmodel-definition");
|
|
13
15
|
const zmodel_formatter_1 = require("./zmodel-formatter");
|
|
16
|
+
const zmodel_highlight_1 = require("./zmodel-highlight");
|
|
17
|
+
const zmodel_hover_1 = require("./zmodel-hover");
|
|
14
18
|
const zmodel_linker_1 = require("./zmodel-linker");
|
|
15
19
|
const zmodel_scope_1 = require("./zmodel-scope");
|
|
16
|
-
const zmodel_workspace_manager_1 = __importDefault(require("./zmodel-workspace-manager"));
|
|
17
|
-
const zmodel_definition_1 = require("./zmodel-definition");
|
|
18
20
|
const zmodel_semantic_1 = require("./zmodel-semantic");
|
|
21
|
+
const zmodel_workspace_manager_1 = __importDefault(require("./zmodel-workspace-manager"));
|
|
19
22
|
/**
|
|
20
23
|
* Dependency injection module that overrides Langium default services and contributes the
|
|
21
24
|
* declared custom services. The Langium defaults can be partially specified to override only
|
|
@@ -36,6 +39,12 @@ exports.ZModelModule = {
|
|
|
36
39
|
CodeActionProvider: (services) => new zmodel_code_action_1.ZModelCodeActionProvider(services),
|
|
37
40
|
DefinitionProvider: (services) => new zmodel_definition_1.ZModelDefinitionProvider(services),
|
|
38
41
|
SemanticTokenProvider: (services) => new zmodel_semantic_1.ZModelSemanticTokenProvider(services),
|
|
42
|
+
CompletionProvider: (services) => new zmodel_completion_provider_1.ZModelCompletionProvider(services),
|
|
43
|
+
HoverProvider: (services) => new zmodel_hover_1.ZModelHoverProvider(services),
|
|
44
|
+
DocumentHighlightProvider: (services) => new zmodel_highlight_1.ZModelHighlightProvider(services),
|
|
45
|
+
},
|
|
46
|
+
parser: {
|
|
47
|
+
GrammarConfig: (services) => createGrammarConfig(services),
|
|
39
48
|
},
|
|
40
49
|
};
|
|
41
50
|
// this duplicates createDefaultSharedModule except that a custom WorkspaceManager is used
|
|
@@ -82,4 +91,9 @@ function createZModelServices(context) {
|
|
|
82
91
|
return { shared, ZModel };
|
|
83
92
|
}
|
|
84
93
|
exports.createZModelServices = createZModelServices;
|
|
94
|
+
function createGrammarConfig(services) {
|
|
95
|
+
const config = (0, langium_1.createGrammarConfig)(services);
|
|
96
|
+
config.nameRegexp = /^[@\w\p{L}]$/u;
|
|
97
|
+
return config;
|
|
98
|
+
}
|
|
85
99
|
//# sourceMappingURL=zmodel-module.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zmodel-module.js","sourceRoot":"","sources":["../../src/language-server/zmodel-module.ts"],"names":[],"mappings":";;;;;;AAAA,wDAAiG;AACjG,
|
|
1
|
+
{"version":3,"file":"zmodel-module.js","sourceRoot":"","sources":["../../src/language-server/zmodel-module.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,4 +14,6 @@ export declare class ZModelScopeComputation extends DefaultScopeComputation {
|
|
|
14
14
|
export declare class ZModelScopeProvider extends DefaultScopeProvider {
|
|
15
15
|
constructor(services: LangiumServices);
|
|
16
16
|
protected getGlobalScope(referenceType: string, context: ReferenceInfo): Scope;
|
|
17
|
+
getScope(context: ReferenceInfo): Scope;
|
|
18
|
+
private getMemberAccessScope;
|
|
17
19
|
}
|
|
@@ -11,6 +11,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.ZModelScopeProvider = exports.ZModelScopeComputation = void 0;
|
|
13
13
|
const ast_1 = require("@zenstackhq/language/ast");
|
|
14
|
+
const sdk_1 = require("@zenstackhq/sdk");
|
|
14
15
|
const langium_1 = require("langium");
|
|
15
16
|
const ast_utils_1 = require("../utils/ast-utils");
|
|
16
17
|
const constants_1 = require("./constants");
|
|
@@ -103,6 +104,56 @@ class ZModelScopeProvider extends langium_1.DefaultScopeProvider {
|
|
|
103
104
|
});
|
|
104
105
|
return new langium_1.StreamScope(importedElements);
|
|
105
106
|
}
|
|
107
|
+
getScope(context) {
|
|
108
|
+
if ((0, ast_1.isMemberAccessExpr)(context.container) && context.container.operand && context.property === 'member') {
|
|
109
|
+
return this.getMemberAccessScope(context.container);
|
|
110
|
+
}
|
|
111
|
+
return super.getScope(context);
|
|
112
|
+
}
|
|
113
|
+
getMemberAccessScope(node) {
|
|
114
|
+
var _a, _b;
|
|
115
|
+
if ((0, ast_1.isReferenceExpr)(node.operand)) {
|
|
116
|
+
// scope to target model's fields
|
|
117
|
+
const ref = node.operand.target.ref;
|
|
118
|
+
if ((0, ast_1.isDataModelField)(ref)) {
|
|
119
|
+
const targetModel = (_a = ref.type.reference) === null || _a === void 0 ? void 0 : _a.ref;
|
|
120
|
+
if ((0, ast_1.isDataModel)(targetModel)) {
|
|
121
|
+
return this.createScopeForNodes(targetModel.fields);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
else if ((0, ast_1.isMemberAccessExpr)(node.operand)) {
|
|
126
|
+
// scope to target model's fields
|
|
127
|
+
const ref = node.operand.member.ref;
|
|
128
|
+
if ((0, ast_1.isDataModelField)(ref)) {
|
|
129
|
+
const targetModel = (_b = ref.type.reference) === null || _b === void 0 ? void 0 : _b.ref;
|
|
130
|
+
if ((0, ast_1.isDataModel)(targetModel)) {
|
|
131
|
+
return this.createScopeForNodes(targetModel.fields);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
else if ((0, ast_1.isInvocationExpr)(node.operand)) {
|
|
136
|
+
// deal with member access from `auth()` and `future()
|
|
137
|
+
const funcName = node.operand.function.$refText;
|
|
138
|
+
if (funcName === 'auth') {
|
|
139
|
+
// resolve to `User` or `@@auth` model
|
|
140
|
+
const model = (0, langium_1.getContainerOfType)(node, ast_1.isModel);
|
|
141
|
+
if (model) {
|
|
142
|
+
const authModel = (0, sdk_1.getAuthModel)((0, sdk_1.getDataModels)(model));
|
|
143
|
+
if (authModel) {
|
|
144
|
+
return this.createScopeForNodes(authModel.fields);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
if (funcName === 'future') {
|
|
149
|
+
const thisModel = (0, langium_1.getContainerOfType)(node, ast_1.isDataModel);
|
|
150
|
+
if (thisModel) {
|
|
151
|
+
return this.createScopeForNodes(thisModel.fields);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
return langium_1.EMPTY_SCOPE;
|
|
156
|
+
}
|
|
106
157
|
}
|
|
107
158
|
exports.ZModelScopeProvider = ZModelScopeProvider;
|
|
108
159
|
//# sourceMappingURL=zmodel-scope.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zmodel-scope.js","sourceRoot":"","sources":["../../src/language-server/zmodel-scope.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"zmodel-scope.js","sourceRoot":"","sources":["../../src/language-server/zmodel-scope.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": "Build scalable web apps with minimum code by defining authorization and validation rules inside the data schema that closer to the database",
|
|
6
|
-
"version": "1.
|
|
6
|
+
"version": "1.7.0",
|
|
7
7
|
"author": {
|
|
8
8
|
"name": "ZenStack Team"
|
|
9
9
|
},
|
|
@@ -95,8 +95,8 @@
|
|
|
95
95
|
"vscode-uri": "^3.0.6",
|
|
96
96
|
"zod": "^3.22.4",
|
|
97
97
|
"zod-validation-error": "^1.5.0",
|
|
98
|
-
"@zenstackhq/sdk": "1.
|
|
99
|
-
"@zenstackhq/language": "1.
|
|
98
|
+
"@zenstackhq/sdk": "1.7.0",
|
|
99
|
+
"@zenstackhq/language": "1.7.0"
|
|
100
100
|
},
|
|
101
101
|
"devDependencies": {
|
|
102
102
|
"@prisma/client": "^4.8.0",
|
|
@@ -115,7 +115,7 @@
|
|
|
115
115
|
"tmp": "^0.2.1",
|
|
116
116
|
"tsc-alias": "^1.7.0",
|
|
117
117
|
"vitest": "^0.29.7",
|
|
118
|
-
"@zenstackhq/runtime": "1.
|
|
118
|
+
"@zenstackhq/runtime": "1.7.0"
|
|
119
119
|
},
|
|
120
120
|
"scripts": {
|
|
121
121
|
"vscode:publish": "vsce publish --no-dependencies",
|
package/res/stdlib.zmodel
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Enum representing referential integrity related actions
|
|
3
|
+
* @see https://www.prisma.io/docs/orm/prisma-schema/data-model/relations/referential-actions
|
|
3
4
|
*/
|
|
4
5
|
enum ReferentialAction {
|
|
5
6
|
/**
|
|
@@ -16,7 +17,6 @@ enum ReferentialAction {
|
|
|
16
17
|
|
|
17
18
|
/**
|
|
18
19
|
* Similar to 'Restrict', the difference between the two is dependent on the database being used.
|
|
19
|
-
* See details: https://www.prisma.io/docs/concepts/components/prisma-schema/relations/referential-actions#noaction
|
|
20
20
|
*/
|
|
21
21
|
NoAction
|
|
22
22
|
|
|
@@ -188,27 +188,55 @@ attribute @@@expressionContext(_ context: ExpressionContext[])
|
|
|
188
188
|
attribute @@@prisma()
|
|
189
189
|
|
|
190
190
|
/**
|
|
191
|
-
*
|
|
191
|
+
* Provides hint for auto-completion.
|
|
192
|
+
*/
|
|
193
|
+
attribute @@@completionHint(_ values: String[])
|
|
194
|
+
|
|
195
|
+
/**
|
|
196
|
+
* Defines a single-field ID on the model.
|
|
197
|
+
*
|
|
198
|
+
* @param map: The name of the underlying primary key constraint in the database.
|
|
199
|
+
* @param length: Allows you to specify a maximum length for the subpart of the value to be indexed.
|
|
200
|
+
* @param sort: Allows you to specify in what order the entries of the ID are stored in the database. The available options are Asc and Desc.
|
|
201
|
+
* @param clustered: Defines whether the ID is clustered or non-clustered. Defaults to true.
|
|
192
202
|
*/
|
|
193
203
|
attribute @id(map: String?, length: Int?, sort: String?, clustered: Boolean?) @@@prisma
|
|
194
204
|
|
|
195
205
|
/**
|
|
196
206
|
* Defines a default value for a field.
|
|
207
|
+
* @param value: An expression (e.g. 5, true, now()).
|
|
197
208
|
*/
|
|
198
209
|
attribute @default(_ value: ContextType, map: String?) @@@prisma
|
|
199
210
|
|
|
200
211
|
/**
|
|
201
212
|
* Defines a unique constraint for this field.
|
|
213
|
+
*
|
|
214
|
+
* @param length: Allows you to specify a maximum length for the subpart of the value to be indexed.
|
|
215
|
+
* @param sort: Allows you to specify in what order the entries of the constraint are stored in the database. The available options are Asc and Desc.
|
|
216
|
+
* @param clustered: Boolean Defines whether the constraint is clustered or non-clustered. Defaults to false.
|
|
202
217
|
*/
|
|
203
218
|
attribute @unique(map: String?, length: Int?, sort: String?, clustered: Boolean?) @@@prisma
|
|
204
219
|
|
|
205
220
|
/**
|
|
206
221
|
* Defines a multi-field ID (composite ID) on the model.
|
|
222
|
+
*
|
|
223
|
+
* @param fields: A list of field names - for example, [firstname, lastname]
|
|
224
|
+
* @param name: The name that Prisma Client will expose for the argument covering all fields, e.g. fullName in fullName: { firstName: "First", lastName: "Last"}
|
|
225
|
+
* @param map: The name of the underlying primary key constraint in the database.
|
|
226
|
+
* @param length: Allows you to specify a maximum length for the subpart of the value to be indexed.
|
|
227
|
+
* @param sort: Allows you to specify in what order the entries of the ID are stored in the database. The available options are Asc and Desc.
|
|
228
|
+
* @param clustered: Defines whether the ID is clustered or non-clustered. Defaults to true.
|
|
207
229
|
*/
|
|
208
230
|
attribute @@id(_ fields: FieldReference[], name: String?, map: String?, length: Int?, sort: String?, clustered: Boolean?) @@@prisma
|
|
209
231
|
|
|
210
232
|
/**
|
|
211
233
|
* Defines a compound unique constraint for the specified fields.
|
|
234
|
+
*
|
|
235
|
+
* @param fields: A list of field names - for example, [firstname, lastname]. Fields must be mandatory.
|
|
236
|
+
* @param name: The name of the unique combination of fields - defaults to fieldName1_fieldName2_fieldName3
|
|
237
|
+
* @param length: Allows you to specify a maximum length for the subpart of the value to be indexed.
|
|
238
|
+
* @param sort: Allows you to specify in what order the entries of the constraint are stored in the database. The available options are Asc and Desc.
|
|
239
|
+
* @param clustered: Boolean Defines whether the constraint is clustered or non-clustered. Defaults to false.
|
|
212
240
|
*/
|
|
213
241
|
attribute @@unique(_ fields: FieldReference[], name: String?, map: String?, length: Int?, sort: String?, clustered: Boolean?) @@@prisma
|
|
214
242
|
|
|
@@ -226,21 +254,40 @@ enum IndexType {
|
|
|
226
254
|
|
|
227
255
|
/**
|
|
228
256
|
* Defines an index in the database.
|
|
257
|
+
*
|
|
258
|
+
* @params fields: A list of field names - for example, [firstname, lastname]
|
|
259
|
+
* @params name: The name that Prisma Client will expose for the argument covering all fields, e.g. fullName in fullName: { firstName: "First", lastName: "Last"}
|
|
260
|
+
* @params map: The name of the index in the underlying database (Prisma generates an index name that respects identifier length limits if you do not specify a name. Prisma uses the following naming convention: tablename.field1_field2_field3_unique)
|
|
261
|
+
* @params length: Allows you to specify a maximum length for the subpart of the value to be indexed.
|
|
262
|
+
* @params sort: Allows you to specify in what order the entries of the index or constraint are stored in the database. The available options are asc and desc.
|
|
263
|
+
* @params clustered: Defines whether the index is clustered or non-clustered. Defaults to false.
|
|
264
|
+
* @params type: Allows you to specify an index access method. Defaults to BTree.
|
|
229
265
|
*/
|
|
230
266
|
attribute @@index(_ fields: FieldReference[], name: String?, map: String?, length: Int?, sort: String?, clustered: Boolean?, type: IndexType?) @@@prisma
|
|
231
267
|
|
|
232
268
|
/**
|
|
233
269
|
* Defines meta information about the relation.
|
|
270
|
+
*
|
|
271
|
+
* @param name: Sometimes (e.g. to disambiguate a relation) Defines the name of the relationship. In an m-n-relation, it also determines the name of the underlying relation table.
|
|
272
|
+
* @param fields: A list of fields of the current model
|
|
273
|
+
* @param references: A list of fields of the model on the other side of the relation
|
|
274
|
+
* @param map: Defines a custom name for the foreign key in the database.
|
|
275
|
+
* @param onUpdate: Defines the referential action to perform when a referenced entry in the referenced model is being updated.
|
|
276
|
+
* @param onDelete: Defines the referential action to perform when a referenced entry in the referenced model is being deleted.
|
|
234
277
|
*/
|
|
235
278
|
attribute @relation(_ name: String?, fields: FieldReference[]?, references: TransitiveFieldReference[]?, onDelete: ReferentialAction?, onUpdate: ReferentialAction?, map: String?) @@@prisma
|
|
236
279
|
|
|
237
280
|
/**
|
|
238
281
|
* Maps a field name or enum value from the schema to a column with a different name in the database.
|
|
282
|
+
*
|
|
283
|
+
* @param name: The database column name.
|
|
239
284
|
*/
|
|
240
285
|
attribute @map(_ name: String) @@@prisma
|
|
241
286
|
|
|
242
287
|
/**
|
|
243
288
|
* Maps the schema model name to a table with a different name, or an enum name to a different underlying enum in the database.
|
|
289
|
+
*
|
|
290
|
+
* @param name: The database column name.
|
|
244
291
|
*/
|
|
245
292
|
attribute @@map(_ name: String) @@@prisma
|
|
246
293
|
|
|
@@ -359,29 +406,44 @@ attribute @db.Image() @@@targetField([BytesField]) @@@prisma
|
|
|
359
406
|
|
|
360
407
|
/**
|
|
361
408
|
* Specifies the schema to use in a multi-schema database. https://www.prisma.io/docs/guides/database/multi-schema.
|
|
409
|
+
*
|
|
410
|
+
* @param: The name of the database schema.
|
|
362
411
|
*/
|
|
363
412
|
attribute @@schema(_ name: String) @@@prisma
|
|
364
413
|
|
|
365
414
|
/**
|
|
366
415
|
* Defines an access policy that allows a set of operations when the given condition is true.
|
|
416
|
+
*
|
|
417
|
+
* @param operation: comma-separated list of "create", "read", "update", "delete". Use "all" to denote all operations.
|
|
418
|
+
* @param condition: a boolean expression that controls if the operation should be allowed.
|
|
367
419
|
*/
|
|
368
|
-
attribute @@allow(_ operation: String, _ condition: Boolean)
|
|
420
|
+
attribute @@allow(_ operation: String @@@completionHint(["'create'", "'read'", "'update'", "'delete'", "'all'"]), _ condition: Boolean)
|
|
369
421
|
|
|
370
422
|
/**
|
|
371
423
|
* Defines an access policy that allows the annotated field to be read or updated.
|
|
372
424
|
* You can pass a thrid argument as `true` to make it override the model-level policies.
|
|
425
|
+
*
|
|
426
|
+
* @param operation: comma-separated list of "create", "read", "update", "delete". Use "all" to denote all operations.
|
|
427
|
+
* @param condition: a boolean expression that controls if the operation should be allowed.
|
|
428
|
+
* @param override: a boolean value that controls if the field-level policy should override the model-level policy.
|
|
373
429
|
*/
|
|
374
|
-
attribute @allow(_ operation: String, _ condition: Boolean, _ override: Boolean?)
|
|
430
|
+
attribute @allow(_ operation: String @@@completionHint(["'create'", "'read'", "'update'", "'delete'", "'all'"]), _ condition: Boolean, _ override: Boolean?)
|
|
375
431
|
|
|
376
432
|
/**
|
|
377
433
|
* Defines an access policy that denies a set of operations when the given condition is true.
|
|
434
|
+
*
|
|
435
|
+
* @param operation: comma-separated list of "create", "read", "update", "delete". Use "all" to denote all operations.
|
|
436
|
+
* @param condition: a boolean expression that controls if the operation should be denied.
|
|
378
437
|
*/
|
|
379
|
-
attribute @@deny(_ operation: String, _ condition: Boolean)
|
|
438
|
+
attribute @@deny(_ operation: String @@@completionHint(["'create'", "'read'", "'update'", "'delete'", "'all'"]), _ condition: Boolean)
|
|
380
439
|
|
|
381
440
|
/**
|
|
382
441
|
* Defines an access policy that denies the annotated field to be read or updated.
|
|
442
|
+
*
|
|
443
|
+
* @param operation: comma-separated list of "create", "read", "update", "delete". Use "all" to denote all operations.
|
|
444
|
+
* @param condition: a boolean expression that controls if the operation should be denied.
|
|
383
445
|
*/
|
|
384
|
-
attribute @deny(_ operation: String, _ condition: Boolean)
|
|
446
|
+
attribute @deny(_ operation: String @@@completionHint(["'create'", "'read'", "'update'", "'delete'", "'all'"]), _ condition: Boolean)
|
|
385
447
|
|
|
386
448
|
/**
|
|
387
449
|
* Used to specify the model for resolving `auth()` function call in access policies. A Zmodel
|
|
@@ -398,8 +460,8 @@ attribute @@auth()
|
|
|
398
460
|
*
|
|
399
461
|
* @see https://www.npmjs.com/package/bcryptjs for details
|
|
400
462
|
*
|
|
401
|
-
* @saltLength: length of salt to use (cost factor for the hash function)
|
|
402
|
-
* @salt: salt to use (a pregenerated valid salt)
|
|
463
|
+
* @param saltLength: length of salt to use (cost factor for the hash function)
|
|
464
|
+
* @param salt: salt to use (a pregenerated valid salt)
|
|
403
465
|
*/
|
|
404
466
|
attribute @password(saltLength: Int?, salt: String?) @@@targetField([StringField])
|
|
405
467
|
|