@cratis/screenplay-language 4.2.0 → 4.2.2
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 +1 -1
- package/diagnostic-codes.ts +27 -0
- package/diagnostics.ts +1 -0
- package/dist/diagnostic-codes.d.ts +16 -0
- package/dist/diagnostic-codes.d.ts.map +1 -0
- package/dist/diagnostic-codes.js +25 -0
- package/dist/diagnostic-codes.js.map +1 -0
- package/dist/diagnostics.d.ts.map +1 -1
- package/dist/diagnostics.js +1 -0
- package/dist/diagnostics.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/symbols.d.ts.map +1 -1
- package/dist/symbols.js +5 -1
- package/dist/symbols.js.map +1 -1
- package/dist/validation.d.ts +2 -0
- package/dist/validation.d.ts.map +1 -1
- package/dist/validation.js +18 -17
- package/dist/validation.js.map +1 -1
- package/for_scanDocument/when_scanning_a_query/with_a_dotted_return_type.ts +34 -0
- package/for_validateLines/when_validating_a_document/with_a_problem_of_every_coded_kind.ts +52 -0
- package/for_validateLines/when_validating_a_document/with_an_unknown_policy.ts +33 -0
- package/index.ts +2 -0
- package/package.json +1 -1
- package/symbols.ts +5 -1
- package/validation.ts +98 -12
package/README.md
CHANGED
|
@@ -29,7 +29,7 @@ monaco.editor.create(element, {
|
|
|
29
29
|
- **Sub-languages** — the PDL (`projection`) and CDL (`capture`) bodies are tokenized by their own registered rules using Monarch's state stack.
|
|
30
30
|
- **Completions** — context-aware by enclosing construct (top level, module, feature, slice, command, produces, handler, screen, constraint, …), plus in-scope symbol names: policies after `authorize`, events after `on` and `produces`, concepts and primitives in type positions.
|
|
31
31
|
- **Hover** — keyword documentation, concept definitions (primitive + attributes), policy require expressions, and event property lists.
|
|
32
|
-
- **Diagnostics** — unknown slice types, unknown primitive types, references to undeclared policies and events, tab indentation, and unclosed code fences.
|
|
32
|
+
- **Diagnostics** — unknown slice types, unknown primitive types, references to undeclared policies and events, tab indentation, and unclosed code fences. Every one of them carries the compiler's own `PLAY` code (`diagnosticCodes`), so a squiggle and a CLI diagnostic for the same condition are the same code.
|
|
33
33
|
|
|
34
34
|
## Extending with new sub-languages
|
|
35
35
|
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
// Copyright (c) Cratis. All rights reserved.
|
|
2
|
+
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
3
|
+
|
|
4
|
+
// The PLAY codes the editor reports. Every one of them mirrors a condition the compiler checks and
|
|
5
|
+
// carries the compiler's own code for it, so the same problem is called the same thing whether it was
|
|
6
|
+
// found by the CLI or by a squiggle - see Documentation/screenplay/diagnostics.md for the catalogue.
|
|
7
|
+
//
|
|
8
|
+
// A code is only ever added here for a condition the compiler can also report. The editor makes a few
|
|
9
|
+
// structural checks the compiler does not - the capture and projection validators are where they live -
|
|
10
|
+
// and those stay codeless deliberately: minting a PLAY number for something no compiler run can emit
|
|
11
|
+
// would make the catalogue describe two different tools.
|
|
12
|
+
export const diagnosticCodes = {
|
|
13
|
+
tabIndentation: 'PLAY0006',
|
|
14
|
+
unknownPrimitiveType: 'PLAY0008',
|
|
15
|
+
unknownSliceType: 'PLAY0028',
|
|
16
|
+
duplicateCommandIdentifier: 'PLAY0036',
|
|
17
|
+
unknownContextPath: 'PLAY0153',
|
|
18
|
+
unknownContextCausedByProperty: 'PLAY0154',
|
|
19
|
+
unknownContextIdentityProperty: 'PLAY0155',
|
|
20
|
+
unclosedCodeBlock: 'PLAY0164',
|
|
21
|
+
unknownType: 'PLAY0165',
|
|
22
|
+
unknownEvent: 'PLAY0166',
|
|
23
|
+
unknownPolicy: 'PLAY0167',
|
|
24
|
+
duplicateDeclaration: 'PLAY0168',
|
|
25
|
+
} as const;
|
|
26
|
+
|
|
27
|
+
export type DiagnosticCode = (typeof diagnosticCodes)[keyof typeof diagnosticCodes];
|
package/diagnostics.ts
CHANGED
|
@@ -15,6 +15,7 @@ export function validate(monaco: Monaco, model: editor.ITextModel): editor.IMark
|
|
|
15
15
|
? monaco.MarkerSeverity.Error
|
|
16
16
|
: monaco.MarkerSeverity.Warning,
|
|
17
17
|
message: issue.message,
|
|
18
|
+
code: issue.code,
|
|
18
19
|
startLineNumber: issue.line + 1,
|
|
19
20
|
startColumn: issue.startColumn,
|
|
20
21
|
endLineNumber: issue.line + 1,
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export declare const diagnosticCodes: {
|
|
2
|
+
readonly tabIndentation: "PLAY0006";
|
|
3
|
+
readonly unknownPrimitiveType: "PLAY0008";
|
|
4
|
+
readonly unknownSliceType: "PLAY0028";
|
|
5
|
+
readonly duplicateCommandIdentifier: "PLAY0036";
|
|
6
|
+
readonly unknownContextPath: "PLAY0153";
|
|
7
|
+
readonly unknownContextCausedByProperty: "PLAY0154";
|
|
8
|
+
readonly unknownContextIdentityProperty: "PLAY0155";
|
|
9
|
+
readonly unclosedCodeBlock: "PLAY0164";
|
|
10
|
+
readonly unknownType: "PLAY0165";
|
|
11
|
+
readonly unknownEvent: "PLAY0166";
|
|
12
|
+
readonly unknownPolicy: "PLAY0167";
|
|
13
|
+
readonly duplicateDeclaration: "PLAY0168";
|
|
14
|
+
};
|
|
15
|
+
export type DiagnosticCode = (typeof diagnosticCodes)[keyof typeof diagnosticCodes];
|
|
16
|
+
//# sourceMappingURL=diagnostic-codes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagnostic-codes.d.ts","sourceRoot":"","sources":["../diagnostic-codes.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,eAAe;;;;;;;;;;;;;CAalB,CAAC;AAEX,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,OAAO,eAAe,CAAC,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
// Copyright (c) Cratis. All rights reserved.
|
|
2
|
+
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
3
|
+
// The PLAY codes the editor reports. Every one of them mirrors a condition the compiler checks and
|
|
4
|
+
// carries the compiler's own code for it, so the same problem is called the same thing whether it was
|
|
5
|
+
// found by the CLI or by a squiggle - see Documentation/screenplay/diagnostics.md for the catalogue.
|
|
6
|
+
//
|
|
7
|
+
// A code is only ever added here for a condition the compiler can also report. The editor makes a few
|
|
8
|
+
// structural checks the compiler does not - the capture and projection validators are where they live -
|
|
9
|
+
// and those stay codeless deliberately: minting a PLAY number for something no compiler run can emit
|
|
10
|
+
// would make the catalogue describe two different tools.
|
|
11
|
+
export const diagnosticCodes = {
|
|
12
|
+
tabIndentation: 'PLAY0006',
|
|
13
|
+
unknownPrimitiveType: 'PLAY0008',
|
|
14
|
+
unknownSliceType: 'PLAY0028',
|
|
15
|
+
duplicateCommandIdentifier: 'PLAY0036',
|
|
16
|
+
unknownContextPath: 'PLAY0153',
|
|
17
|
+
unknownContextCausedByProperty: 'PLAY0154',
|
|
18
|
+
unknownContextIdentityProperty: 'PLAY0155',
|
|
19
|
+
unclosedCodeBlock: 'PLAY0164',
|
|
20
|
+
unknownType: 'PLAY0165',
|
|
21
|
+
unknownEvent: 'PLAY0166',
|
|
22
|
+
unknownPolicy: 'PLAY0167',
|
|
23
|
+
duplicateDeclaration: 'PLAY0168',
|
|
24
|
+
};
|
|
25
|
+
//# sourceMappingURL=diagnostic-codes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagnostic-codes.js","sourceRoot":"","sources":["../diagnostic-codes.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,qGAAqG;AAErG,mGAAmG;AACnG,sGAAsG;AACtG,qGAAqG;AACrG,EAAE;AACF,sGAAsG;AACtG,wGAAwG;AACxG,qGAAqG;AACrG,yDAAyD;AACzD,MAAM,CAAC,MAAM,eAAe,GAAG;IAC3B,cAAc,EAAE,UAAU;IAC1B,oBAAoB,EAAE,UAAU;IAChC,gBAAgB,EAAE,UAAU;IAC5B,0BAA0B,EAAE,UAAU;IACtC,kBAAkB,EAAE,UAAU;IAC9B,8BAA8B,EAAE,UAAU;IAC1C,8BAA8B,EAAE,UAAU;IAC1C,iBAAiB,EAAE,UAAU;IAC7B,WAAW,EAAE,UAAU;IACvB,YAAY,EAAE,UAAU;IACxB,aAAa,EAAE,UAAU;IACzB,oBAAoB,EAAE,UAAU;CAC1B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../diagnostics.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAc,MAAM,YAAY,CAAC;AAMhD,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../diagnostics.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAc,MAAM,YAAY,CAAC;AAMhD,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,WAAW,EAAE,CAavF;AA0BD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAGtD"}
|
package/dist/diagnostics.js
CHANGED
|
@@ -10,6 +10,7 @@ export function validate(monaco, model) {
|
|
|
10
10
|
? monaco.MarkerSeverity.Error
|
|
11
11
|
: monaco.MarkerSeverity.Warning,
|
|
12
12
|
message: issue.message,
|
|
13
|
+
code: issue.code,
|
|
13
14
|
startLineNumber: issue.line + 1,
|
|
14
15
|
startColumn: issue.startColumn,
|
|
15
16
|
endLineNumber: issue.line + 1,
|
package/dist/diagnostics.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../diagnostics.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,qGAAqG;AAGrG,OAAO,EAAU,UAAU,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,MAAM,KAAK,GAAG,YAAY,CAAC;AAC3B,MAAM,eAAe,GAAG,GAAG,CAAC;AAE5B,MAAM,UAAU,QAAQ,CAAC,MAAc,EAAE,KAAwB;IAC7D,OAAO,aAAa,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC1D,QAAQ,EACJ,KAAK,CAAC,QAAQ,KAAK,OAAO;YACtB,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK;YAC7B,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO;QACvC,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,eAAe,EAAE,KAAK,CAAC,IAAI,GAAG,CAAC;QAC/B,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,aAAa,EAAE,KAAK,CAAC,IAAI,GAAG,CAAC;QAC7B,SAAS,EAAE,KAAK,CAAC,SAAS;KAC7B,CAAC,CAAC,CAAC;AACR,CAAC;AAED,SAAS,KAAK,CAAC,MAAc,EAAE,KAAwB;IACnD,IAAI,MAAiD,CAAC;IAEtD,MAAM,GAAG,GAAG,GAAG,EAAE;QACb,IAAI,KAAK,CAAC,UAAU,EAAE;YAAE,OAAO;QAC/B,IAAI,KAAK,CAAC,aAAa,EAAE,KAAK,UAAU,EAAE,CAAC;YACvC,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;YAChD,OAAO;QACX,CAAC;QACD,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;IACzE,CAAC,CAAC;IACF,MAAM,QAAQ,GAAG,GAAG,EAAE;QAClB,IAAI,MAAM,KAAK,SAAS;YAAE,YAAY,CAAC,MAAM,CAAC,CAAC;QAC/C,MAAM,GAAG,UAAU,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;IAC9C,CAAC,CAAC;IAEF,KAAK,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IACnC,KAAK,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;IAC/B,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE;QACrB,IAAI,MAAM,KAAK,SAAS;YAAE,YAAY,CAAC,MAAM,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IACH,GAAG,EAAE,CAAC;AACV,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,MAAc;IAC5C,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;IACnE,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;AACpE,CAAC"}
|
|
1
|
+
{"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../diagnostics.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,qGAAqG;AAGrG,OAAO,EAAU,UAAU,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,MAAM,KAAK,GAAG,YAAY,CAAC;AAC3B,MAAM,eAAe,GAAG,GAAG,CAAC;AAE5B,MAAM,UAAU,QAAQ,CAAC,MAAc,EAAE,KAAwB;IAC7D,OAAO,aAAa,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC1D,QAAQ,EACJ,KAAK,CAAC,QAAQ,KAAK,OAAO;YACtB,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK;YAC7B,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO;QACvC,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,eAAe,EAAE,KAAK,CAAC,IAAI,GAAG,CAAC;QAC/B,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,aAAa,EAAE,KAAK,CAAC,IAAI,GAAG,CAAC;QAC7B,SAAS,EAAE,KAAK,CAAC,SAAS;KAC7B,CAAC,CAAC,CAAC;AACR,CAAC;AAED,SAAS,KAAK,CAAC,MAAc,EAAE,KAAwB;IACnD,IAAI,MAAiD,CAAC;IAEtD,MAAM,GAAG,GAAG,GAAG,EAAE;QACb,IAAI,KAAK,CAAC,UAAU,EAAE;YAAE,OAAO;QAC/B,IAAI,KAAK,CAAC,aAAa,EAAE,KAAK,UAAU,EAAE,CAAC;YACvC,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;YAChD,OAAO;QACX,CAAC;QACD,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;IACzE,CAAC,CAAC;IACF,MAAM,QAAQ,GAAG,GAAG,EAAE;QAClB,IAAI,MAAM,KAAK,SAAS;YAAE,YAAY,CAAC,MAAM,CAAC,CAAC;QAC/C,MAAM,GAAG,UAAU,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;IAC9C,CAAC,CAAC;IAEF,KAAK,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IACnC,KAAK,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;IAC/B,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE;QACrB,IAAI,MAAM,KAAK,SAAS;YAAE,YAAY,CAAC,MAAM,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IACH,GAAG,EAAE,CAAC;AACV,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,MAAc;IAC5C,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;IACnE,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;AACpE,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -22,4 +22,6 @@ export type { CompletionPlan } from './completion-planner';
|
|
|
22
22
|
export { hoverContent } from './hover-content';
|
|
23
23
|
export { validateLines } from './validation';
|
|
24
24
|
export type { ValidationIssue, ValidationSeverity } from './validation';
|
|
25
|
+
export { diagnosticCodes } from './diagnostic-codes';
|
|
26
|
+
export type { DiagnosticCode } from './diagnostic-codes';
|
|
25
27
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAGA,OAAO,EACH,MAAM,EAIT,MAAM,YAAY,CAAC;AA2BpB,wBAAgB,yBAAyB,IAAI,IAAI,CAGhD;AAED,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAe7C;AAED,OAAO,EACH,kBAAkB,EAClB,cAAc,EACd,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,EACZ,UAAU,EACV,cAAc,EACd,UAAU,GACb,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC/F,YAAY,EACR,iBAAiB,EACjB,WAAW,EACX,qBAAqB,EACrB,qBAAqB,GACxB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAC1C,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAC1C,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnF,OAAO,EACH,oBAAoB,EACpB,eAAe,EACf,cAAc,EACd,2BAA2B,GAC9B,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,iBAAiB,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAClH,YAAY,EACR,aAAa,EACb,aAAa,EACb,eAAe,EACf,WAAW,EACX,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,cAAc,EACd,WAAW,EACX,UAAU,GACb,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACjF,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACzE,YAAY,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC7E,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,YAAY,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAGA,OAAO,EACH,MAAM,EAIT,MAAM,YAAY,CAAC;AA2BpB,wBAAgB,yBAAyB,IAAI,IAAI,CAGhD;AAED,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAe7C;AAED,OAAO,EACH,kBAAkB,EAClB,cAAc,EACd,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,EACZ,UAAU,EACV,cAAc,EACd,UAAU,GACb,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC/F,YAAY,EACR,iBAAiB,EACjB,WAAW,EACX,qBAAqB,EACrB,qBAAqB,GACxB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAC1C,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAC1C,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnF,OAAO,EACH,oBAAoB,EACpB,eAAe,EACf,cAAc,EACd,2BAA2B,GAC9B,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,iBAAiB,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAClH,YAAY,EACR,aAAa,EACb,aAAa,EACb,eAAe,EACf,WAAW,EACX,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,cAAc,EACd,WAAW,EACX,UAAU,GACb,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACjF,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACzE,YAAY,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC7E,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,YAAY,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,YAAY,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -52,4 +52,5 @@ export { contextVariableItems, producesItems } from './completion-items';
|
|
|
52
52
|
export { completionEntriesFor, planCompletions } from './completion-planner';
|
|
53
53
|
export { hoverContent } from './hover-content';
|
|
54
54
|
export { validateLines } from './validation';
|
|
55
|
+
export { diagnosticCodes } from './diagnostic-codes';
|
|
55
56
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,qGAAqG;AAErG,OAAO,EAEH,qBAAqB,EACrB,sBAAsB,EACtB,UAAU,GACb,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EACH,cAAc,EACd,eAAe,EACf,qBAAqB,EACrB,mBAAmB,GACtB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAC1C,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACnF,OAAO,EAAE,eAAe,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAEtF,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAU,CAAC;AAE9C,SAAS,mBAAmB,CAAC,MAAc;IACvC,MAAM,CAAC,SAAS,CAAC,wBAAwB,CAAC,UAAU,EAAE,oBAAoB,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;AACnG,CAAC;AAED,gFAAgF;AAChF,qBAAqB,CAAC,GAAG,EAAE,CAAC,mBAAmB,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC;AAE9E,iFAAiF;AACjF,mFAAmF;AACnF,MAAM,UAAU,yBAAyB;IACrC,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC;QAAE,mBAAmB,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;IAC1E,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC;QAAE,mBAAmB,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;AACxE,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,MAAc;IACnC,IAAI,mBAAmB,CAAC,GAAG,CAAC,MAAM,CAAC;QAAE,OAAO;IAE5C,yBAAyB,EAAE,CAAC;IAE5B,mBAAmB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAEhC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC;IAClD,MAAM,CAAC,SAAS,CAAC,wBAAwB,CAAC,UAAU,EAAE,qBAAqB,CAAC,CAAC;IAC7E,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAC5B,MAAM,CAAC,SAAS,CAAC,8BAA8B,CAAC,UAAU,EAAE,wBAAwB,CAAC,MAAM,CAAC,CAAC,CAAC;IAC9F,MAAM,CAAC,SAAS,CAAC,qBAAqB,CAAC,UAAU,EAAE,mBAAmB,EAAE,CAAC,CAAC;IAC1E,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,uBAAuB,EAAE,cAAc,CAAC,CAAC;IACnE,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,wBAAwB,EAAE,eAAe,CAAC,CAAC;IACrE,iBAAiB,CAAC,MAAM,CAAC,CAAC;AAC9B,CAAC;AAED,OAAO,EACH,kBAAkB,EAClB,cAAc,EACd,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,EACZ,UAAU,EACV,cAAc,EACd,UAAU,GACb,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAO/F,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAC1C,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAC1C,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnF,OAAO,EACH,oBAAoB,EACpB,eAAe,EACf,cAAc,EACd,2BAA2B,GAC9B,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,iBAAiB,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAalH,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACjF,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEzE,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE7E,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
|
package/dist/symbols.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"symbols.d.ts","sourceRoot":"","sources":["../symbols.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,cAAc;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,OAAO,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,UAAU;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,cAAc,EAAE,CAAC;IAC7B,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,cAAc,EAAE,CAAC;IAC7B,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,aAAc,SAAQ,WAAW;IAC9C,UAAU,EAAE,cAAc,EAAE,CAAC;CAChC;AAED,MAAM,WAAW,WAAW;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAY,SAAQ,WAAW;IAC5C,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,cAAc,EAAE,CAAC;CAChC;AAED,MAAM,WAAW,YAAY;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC5B,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,QAAQ,EAAE,WAAW,EAAE,CAAC;CAC3B;AAmCD,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,eAAe,
|
|
1
|
+
{"version":3,"file":"symbols.d.ts","sourceRoot":"","sources":["../symbols.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,cAAc;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,OAAO,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,UAAU;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,cAAc,EAAE,CAAC;IAC7B,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,cAAc,EAAE,CAAC;IAC7B,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,aAAc,SAAQ,WAAW;IAC9C,UAAU,EAAE,cAAc,EAAE,CAAC;CAChC;AAED,MAAM,WAAW,WAAW;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAY,SAAQ,WAAW;IAC5C,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,cAAc,EAAE,CAAC;CAChC;AAED,MAAM,WAAW,YAAY;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC5B,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,QAAQ,EAAE,WAAW,EAAE,CAAC;CAC3B;AAmCD,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,eAAe,CAsI7D;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,EAAE,CAKlE;AAGD,eAAO,MAAM,mBAAmB,UAA0B,CAAC;AAI3D,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,EAAE,CAMpE;AAID,wBAAgB,cAAc,CAAC,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAOhG"}
|
package/dist/symbols.js
CHANGED
|
@@ -116,7 +116,11 @@ export function scanDocument(lines) {
|
|
|
116
116
|
});
|
|
117
117
|
continue;
|
|
118
118
|
}
|
|
119
|
-
|
|
119
|
+
// The return type shape is the compiler's, dots and all - QueryParser's
|
|
120
|
+
// ^query\s+([A-Za-z_]\w*)\s*=>\s*(observable\s+)?([\w.]+(?:\[\])?\??)$. A narrower one here
|
|
121
|
+
// silently drops the query from the symbol table, and with it every check and completion that
|
|
122
|
+
// reads from it.
|
|
123
|
+
const queryMatch = trimmed.match(/^query\s+(\w+)\s*=>\s*(?:observable\s+)?([\w.]+(?:\[\])?\??)\s*$/);
|
|
120
124
|
if (queryMatch) {
|
|
121
125
|
// The return type names a read model, which no construct declares — only the
|
|
122
126
|
// 'by' and 'filter' parameters resolve against the document's own types.
|
package/dist/symbols.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"symbols.js","sourceRoot":"","sources":["../symbols.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"symbols.js","sourceRoot":"","sources":["../symbols.ts"],"names":[],"mappings":"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"}
|
package/dist/validation.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { DiagnosticCode } from './diagnostic-codes';
|
|
1
2
|
export type ValidationSeverity = 'error' | 'warning';
|
|
2
3
|
export interface ValidationIssue {
|
|
3
4
|
line: number;
|
|
@@ -5,6 +6,7 @@ export interface ValidationIssue {
|
|
|
5
6
|
endColumn: number;
|
|
6
7
|
message: string;
|
|
7
8
|
severity: ValidationSeverity;
|
|
9
|
+
code?: DiagnosticCode;
|
|
8
10
|
}
|
|
9
11
|
export declare function validateLines(lines: string[]): ValidationIssue[];
|
|
10
12
|
//# sourceMappingURL=validation.d.ts.map
|
package/dist/validation.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../validation.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../validation.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,cAAc,EAAmB,MAAM,oBAAoB,CAAC;AAUrE,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG,SAAS,CAAC;AAErD,MAAM,WAAW,eAAe;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,kBAAkB,CAAC;IAI7B,IAAI,CAAC,EAAE,cAAc,CAAC;CACzB;AA6FD,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,eAAe,EAAE,CA8MhE"}
|
package/dist/validation.js
CHANGED
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
// Copyright (c) Cratis. All rights reserved.
|
|
2
2
|
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
3
3
|
import { causedByProperties, contextRoots, identityProperties, primitiveTypes, sliceTypes } from './language';
|
|
4
|
+
import { diagnosticCodes } from './diagnostic-codes';
|
|
4
5
|
import { fenceMap, indentOf } from './document-context';
|
|
5
6
|
import { knownEventNames, knownTypeNames, scanDocument, } from './symbols';
|
|
6
|
-
function issue(severity, line, startColumn, length, message) {
|
|
7
|
-
return { severity, message, line, startColumn, endColumn: startColumn + length };
|
|
7
|
+
function issue(severity, line, startColumn, length, message, code) {
|
|
8
|
+
return { severity, message, line, startColumn, endColumn: startColumn + length, code };
|
|
8
9
|
}
|
|
9
|
-
function tokenIssue(severity, line, text, token, message) {
|
|
10
|
+
function tokenIssue(severity, line, text, token, message, code) {
|
|
10
11
|
const column = text.indexOf(token) + 1;
|
|
11
|
-
return issue(severity, line, column, token.length, message);
|
|
12
|
+
return issue(severity, line, column, token.length, message, code);
|
|
12
13
|
}
|
|
13
14
|
// Reports every property whose type reference names nothing the document declares, and
|
|
14
15
|
// every command that marks more than one property as its identifier.
|
|
@@ -18,7 +19,7 @@ function validateDeclarations(lines, symbols) {
|
|
|
18
19
|
const checkProperties = (properties, owner) => {
|
|
19
20
|
for (const property of properties.filter((candidate) => !types.has(candidate.type.replace(/[[\]?]/g, '')))) {
|
|
20
21
|
const bare = property.type.replace(/[[\]?]/g, '');
|
|
21
|
-
issues.push(tokenIssue('warning', property.line, lines[property.line], property.type, `Unknown type '${bare}' on '${property.name}' of ${owner} — declare it with 'concept ${bare} : <Primitive>' or 'type ${bare}'
|
|
22
|
+
issues.push(tokenIssue('warning', property.line, lines[property.line], property.type, `Unknown type '${bare}' on '${property.name}' of ${owner} — declare it with 'concept ${bare} : <Primitive>' or 'type ${bare}'.`, diagnosticCodes.unknownType));
|
|
22
23
|
}
|
|
23
24
|
};
|
|
24
25
|
for (const type of symbols.types)
|
|
@@ -31,7 +32,7 @@ function validateDeclarations(lines, symbols) {
|
|
|
31
32
|
checkProperties(command.properties, `command '${command.name}'`);
|
|
32
33
|
const identifiers = command.properties.filter((property) => property.isIdentifier);
|
|
33
34
|
for (const extra of identifiers.slice(1)) {
|
|
34
|
-
issues.push(tokenIssue('error', extra.line, lines[extra.line], 'identifier', `Command '${command.name}' already marks '${identifiers[0].name}' as identifier — only one property can be the identifier
|
|
35
|
+
issues.push(tokenIssue('error', extra.line, lines[extra.line], 'identifier', `Command '${command.name}' already marks '${identifiers[0].name}' as identifier — only one property can be the identifier.`, diagnosticCodes.duplicateCommandIdentifier));
|
|
35
36
|
}
|
|
36
37
|
}
|
|
37
38
|
const declared = new Map();
|
|
@@ -41,7 +42,7 @@ function validateDeclarations(lines, symbols) {
|
|
|
41
42
|
declared.set(declaration.name, declaration.line);
|
|
42
43
|
continue;
|
|
43
44
|
}
|
|
44
|
-
issues.push(tokenIssue('error', declaration.line, lines[declaration.line], declaration.name, `Duplicate declaration of '${declaration.name}' — concept and type names must be unique
|
|
45
|
+
issues.push(tokenIssue('error', declaration.line, lines[declaration.line], declaration.name, `Duplicate declaration of '${declaration.name}' — concept and type names must be unique.`, diagnosticCodes.duplicateDeclaration));
|
|
45
46
|
}
|
|
46
47
|
return issues;
|
|
47
48
|
}
|
|
@@ -55,7 +56,7 @@ export function validateLines(lines) {
|
|
|
55
56
|
const issues = validateDeclarations(lines, symbols);
|
|
56
57
|
const checkEvent = (line, text, name) => {
|
|
57
58
|
if (!events.has(name)) {
|
|
58
|
-
issues.push(tokenIssue('warning', line, text, name, `Unknown event type '${name}' — declare it in a slice or import it
|
|
59
|
+
issues.push(tokenIssue('warning', line, text, name, `Unknown event type '${name}' — declare it in a slice or import it.`, diagnosticCodes.unknownEvent));
|
|
59
60
|
}
|
|
60
61
|
};
|
|
61
62
|
let authorizeIndent = -1;
|
|
@@ -66,7 +67,7 @@ export function validateLines(lines) {
|
|
|
66
67
|
continue;
|
|
67
68
|
const leading = line.match(/^[ ]*(\t+)/);
|
|
68
69
|
if (leading) {
|
|
69
|
-
issues.push(issue('warning', index, leading[0].length - leading[1].length + 1, leading[1].length, 'Screenplay is indentation-based — use spaces, not tabs.'));
|
|
70
|
+
issues.push(issue('warning', index, leading[0].length - leading[1].length + 1, leading[1].length, 'Screenplay is indentation-based — use spaces, not tabs.', diagnosticCodes.tabIndentation));
|
|
70
71
|
}
|
|
71
72
|
// Policy references continue on indented lines below an authorize clause.
|
|
72
73
|
if (authorizeIndent >= 0) {
|
|
@@ -74,7 +75,7 @@ export function validateLines(lines) {
|
|
|
74
75
|
/^(?:or\s+)?[A-Z]\w*(?:\s+or\s+[A-Z]\w*)*$/.test(trimmed)) {
|
|
75
76
|
for (const name of trimmed.split(/\s+/).filter((token) => token !== 'or')) {
|
|
76
77
|
if (!policies.has(name)) {
|
|
77
|
-
issues.push(tokenIssue('warning', index, line, name, `Unknown policy '${name}' — declare it with 'policy ${name}'
|
|
78
|
+
issues.push(tokenIssue('warning', index, line, name, `Unknown policy '${name}' — declare it with 'policy ${name}'.`, diagnosticCodes.unknownPolicy));
|
|
78
79
|
}
|
|
79
80
|
}
|
|
80
81
|
continue;
|
|
@@ -83,18 +84,18 @@ export function validateLines(lines) {
|
|
|
83
84
|
}
|
|
84
85
|
const slice = trimmed.match(/^slice\s+(\w+)/);
|
|
85
86
|
if (slice && !sliceTypes.includes(slice[1])) {
|
|
86
|
-
issues.push(tokenIssue('error', index, line, slice[1], `Unknown slice type '${slice[1]}' — expected ${sliceTypes.join(', ')}
|
|
87
|
+
issues.push(tokenIssue('error', index, line, slice[1], `Unknown slice type '${slice[1]}' — expected ${sliceTypes.join(', ')}.`, diagnosticCodes.unknownSliceType));
|
|
87
88
|
}
|
|
88
89
|
const concept = trimmed.match(/^concept\s+\w+\s*:\s*(\w+)/);
|
|
89
90
|
if (concept && concept[1] !== 'Enum' && !primitiveTypes.includes(concept[1])) {
|
|
90
|
-
issues.push(tokenIssue('error', index, line, concept[1], `Unknown primitive type '${concept[1]}' — expected ${primitiveTypes.join(', ')} or Enum
|
|
91
|
+
issues.push(tokenIssue('error', index, line, concept[1], `Unknown primitive type '${concept[1]}' — expected ${primitiveTypes.join(', ')} or Enum.`, diagnosticCodes.unknownPrimitiveType));
|
|
91
92
|
}
|
|
92
93
|
const authorize = trimmed.match(/^authorize\s+(.*)$/);
|
|
93
94
|
if (authorize) {
|
|
94
95
|
authorizeIndent = indentOf(line);
|
|
95
96
|
for (const name of authorize[1].split(/\s+/).filter((token) => token !== 'or' && token.length > 0)) {
|
|
96
97
|
if (!policies.has(name)) {
|
|
97
|
-
issues.push(tokenIssue('warning', index, line, name, `Unknown policy '${name}' — declare it with 'policy ${name}'
|
|
98
|
+
issues.push(tokenIssue('warning', index, line, name, `Unknown policy '${name}' — declare it with 'policy ${name}'.`, diagnosticCodes.unknownPolicy));
|
|
98
99
|
}
|
|
99
100
|
}
|
|
100
101
|
}
|
|
@@ -127,17 +128,17 @@ export function validateLines(lines) {
|
|
|
127
128
|
for (const path of line.match(/\$context\.[\w.]+/g) ?? []) {
|
|
128
129
|
const segments = path.substring('$context.'.length).split('.');
|
|
129
130
|
if (!contextRoots.includes(segments[0])) {
|
|
130
|
-
issues.push(tokenIssue('warning', index, line, path, `Unknown $context path '${segments.join('.')}' — expected one of ${contextRoots.join(', ')}
|
|
131
|
+
issues.push(tokenIssue('warning', index, line, path, `Unknown $context path '${segments.join('.')}' — expected one of ${contextRoots.join(', ')}.`, diagnosticCodes.unknownContextPath));
|
|
131
132
|
}
|
|
132
133
|
else if (segments[0] === 'causedBy' &&
|
|
133
134
|
segments.length > 1 &&
|
|
134
135
|
!causedByProperties.includes(segments[1])) {
|
|
135
|
-
issues.push(tokenIssue('warning', index, line, path, `Unknown $context.causedBy property '${segments[1]}' — expected ${causedByProperties.join(', ')}
|
|
136
|
+
issues.push(tokenIssue('warning', index, line, path, `Unknown $context.causedBy property '${segments[1]}' — expected ${causedByProperties.join(', ')}.`, diagnosticCodes.unknownContextCausedByProperty));
|
|
136
137
|
}
|
|
137
138
|
else if (segments[0] === 'identity' &&
|
|
138
139
|
segments.length > 1 &&
|
|
139
140
|
!identityProperties.includes(segments[1])) {
|
|
140
|
-
issues.push(tokenIssue('warning', index, line, path, `Unknown $context.identity property '${segments[1]}' — expected ${identityProperties.join(', ')}
|
|
141
|
+
issues.push(tokenIssue('warning', index, line, path, `Unknown $context.identity property '${segments[1]}' — expected ${identityProperties.join(', ')}.`, diagnosticCodes.unknownContextIdentityProperty));
|
|
141
142
|
}
|
|
142
143
|
}
|
|
143
144
|
}
|
|
@@ -146,7 +147,7 @@ export function validateLines(lines) {
|
|
|
146
147
|
.filter(({ line }) => /^\s*```\s*$/.test(line));
|
|
147
148
|
if (fenceLines.length % 2 === 1) {
|
|
148
149
|
const last = fenceLines[fenceLines.length - 1];
|
|
149
|
-
issues.push(issue('error', last.index, 1, last.line.length + 1, 'Unclosed inline code block — expected a closing ``` line.'));
|
|
150
|
+
issues.push(issue('error', last.index, 1, last.line.length + 1, 'Unclosed inline code block — expected a closing ``` line.', diagnosticCodes.unclosedCodeBlock));
|
|
150
151
|
}
|
|
151
152
|
return issues;
|
|
152
153
|
}
|
package/dist/validation.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../validation.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,qGAAqG;AAErG,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,kBAAkB,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC9G,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAGH,eAAe,EACf,cAAc,EACd,YAAY,GACf,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../validation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
// Copyright (c) Cratis. All rights reserved.
|
|
2
|
+
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
3
|
+
|
|
4
|
+
import { describe, beforeEach, it } from 'vitest';
|
|
5
|
+
import { DocumentSymbols, scanDocument } from '../../symbols';
|
|
6
|
+
|
|
7
|
+
// The compiler takes a dotted return type - QueryParser's ([\w.]+(?:\[\])?\??) - so the editor has to
|
|
8
|
+
// as well. When it did not, the query never made it into the symbol table and every check and
|
|
9
|
+
// completion reading from it went silently missing.
|
|
10
|
+
describe('when scanning a query with a dotted return type', () => {
|
|
11
|
+
let symbols: DocumentSymbols;
|
|
12
|
+
|
|
13
|
+
beforeEach(() => {
|
|
14
|
+
symbols = scanDocument([
|
|
15
|
+
'module Invoicing',
|
|
16
|
+
' feature Invoices',
|
|
17
|
+
' slice StateView Overdue',
|
|
18
|
+
' query Overdue => Invoicing.OverdueReadModel[]',
|
|
19
|
+
' by invoiceId InvoiceId',
|
|
20
|
+
]);
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
it('should register the query', () => {
|
|
24
|
+
symbols.queries.should.have.lengthOf(1);
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
it('should carry the return type as written', () => {
|
|
28
|
+
symbols.queries[0].returnType.should.equal('Invoicing.OverdueReadModel[]');
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
it('should collect the parameters it declares', () => {
|
|
32
|
+
symbols.queries[0].parameters.should.have.lengthOf(1);
|
|
33
|
+
});
|
|
34
|
+
});
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
// Copyright (c) Cratis. All rights reserved.
|
|
2
|
+
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
3
|
+
|
|
4
|
+
import { describe, beforeEach, it } from 'vitest';
|
|
5
|
+
import { diagnosticCodes } from '../../diagnostic-codes';
|
|
6
|
+
import { ValidationIssue, validateLines } from '../../validation';
|
|
7
|
+
|
|
8
|
+
// One document holding every condition the editor and the compiler both check, so a condition added
|
|
9
|
+
// later without a code fails here rather than reaching a user as a codeless squiggle.
|
|
10
|
+
const document = [
|
|
11
|
+
'concept InvoiceId : Guid',
|
|
12
|
+
'concept InvoiceId : String',
|
|
13
|
+
'concept Amount : Wat',
|
|
14
|
+
'',
|
|
15
|
+
'module Invoicing',
|
|
16
|
+
' feature Invoices',
|
|
17
|
+
' slice Wat Register',
|
|
18
|
+
' event InvoiceRegistered',
|
|
19
|
+
' invoiceId InvoiceId',
|
|
20
|
+
'\t amount Amount',
|
|
21
|
+
' command RegisterInvoice',
|
|
22
|
+
' invoiceId InvoiceId identifier',
|
|
23
|
+
' amount Amount identifier',
|
|
24
|
+
' reference Unknown',
|
|
25
|
+
' authorize CanRegister',
|
|
26
|
+
' produces InvoiceArchived',
|
|
27
|
+
' registeredBy = $context.wat',
|
|
28
|
+
' causedBy = $context.causedBy.wat',
|
|
29
|
+
' department = $context.identity.wat',
|
|
30
|
+
' query Overdue => OverdueReadModel[]',
|
|
31
|
+
' performer',
|
|
32
|
+
' csharp',
|
|
33
|
+
' ```',
|
|
34
|
+
' return readModels;',
|
|
35
|
+
];
|
|
36
|
+
|
|
37
|
+
describe('when validating a document with a problem of every coded kind', () => {
|
|
38
|
+
let issues: ValidationIssue[];
|
|
39
|
+
|
|
40
|
+
beforeEach(() => {
|
|
41
|
+
issues = validateLines(document);
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
it('should give every issue it reports a code', () => {
|
|
45
|
+
issues.filter((issue) => !issue.code).should.be.empty;
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
it('should report each condition with the code the compiler reports it with', () => {
|
|
49
|
+
const reported = new Set(issues.map((issue) => issue.code));
|
|
50
|
+
[...Object.values(diagnosticCodes)].forEach((code) => reported.has(code).should.be.true);
|
|
51
|
+
});
|
|
52
|
+
});
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
// Copyright (c) Cratis. All rights reserved.
|
|
2
|
+
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
3
|
+
|
|
4
|
+
import { describe, beforeEach, it } from 'vitest';
|
|
5
|
+
import { diagnosticCodes } from '../../diagnostic-codes';
|
|
6
|
+
import { ValidationIssue, validateLines } from '../../validation';
|
|
7
|
+
|
|
8
|
+
describe('when validating a document with an unknown policy', () => {
|
|
9
|
+
let issues: ValidationIssue[];
|
|
10
|
+
|
|
11
|
+
beforeEach(() => {
|
|
12
|
+
issues = validateLines([
|
|
13
|
+
'module Invoicing',
|
|
14
|
+
' feature Invoices',
|
|
15
|
+
' slice StateView Overdue',
|
|
16
|
+
' query Overdue => OverdueReadModel[]',
|
|
17
|
+
' authorize CanRead',
|
|
18
|
+
' or CanAlsoRead',
|
|
19
|
+
]);
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
it('should report the policy named on the authorize line', () => {
|
|
23
|
+
issues[0].should.include({ line: 4, code: diagnosticCodes.unknownPolicy });
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
it('should report the policy continued on the line below it', () => {
|
|
27
|
+
issues[1].should.include({ line: 5, code: diagnosticCodes.unknownPolicy });
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
it('should report nothing else', () => {
|
|
31
|
+
issues.should.have.lengthOf(2);
|
|
32
|
+
});
|
|
33
|
+
});
|
package/index.ts
CHANGED
|
@@ -107,3 +107,5 @@ export type { CompletionPlan } from './completion-planner';
|
|
|
107
107
|
export { hoverContent } from './hover-content';
|
|
108
108
|
export { validateLines } from './validation';
|
|
109
109
|
export type { ValidationIssue, ValidationSeverity } from './validation';
|
|
110
|
+
export { diagnosticCodes } from './diagnostic-codes';
|
|
111
|
+
export type { DiagnosticCode } from './diagnostic-codes';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cratis/screenplay-language",
|
|
3
|
-
"version": "4.2.
|
|
3
|
+
"version": "4.2.2",
|
|
4
4
|
"description": "Monaco language service for the Cratis Screenplay DSL — syntax highlighting, IntelliSense, hover and diagnostics for .play files",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
package/symbols.ts
CHANGED
|
@@ -194,7 +194,11 @@ export function scanDocument(lines: string[]): DocumentSymbols {
|
|
|
194
194
|
continue;
|
|
195
195
|
}
|
|
196
196
|
|
|
197
|
-
|
|
197
|
+
// The return type shape is the compiler's, dots and all - QueryParser's
|
|
198
|
+
// ^query\s+([A-Za-z_]\w*)\s*=>\s*(observable\s+)?([\w.]+(?:\[\])?\??)$. A narrower one here
|
|
199
|
+
// silently drops the query from the symbol table, and with it every check and completion that
|
|
200
|
+
// reads from it.
|
|
201
|
+
const queryMatch = trimmed.match(/^query\s+(\w+)\s*=>\s*(?:observable\s+)?([\w.]+(?:\[\])?\??)\s*$/);
|
|
198
202
|
if (queryMatch) {
|
|
199
203
|
// The return type names a read model, which no construct declares — only the
|
|
200
204
|
// 'by' and 'filter' parameters resolve against the document's own types.
|
package/validation.ts
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
3
3
|
|
|
4
4
|
import { causedByProperties, contextRoots, identityProperties, primitiveTypes, sliceTypes } from './language';
|
|
5
|
+
import { DiagnosticCode, diagnosticCodes } from './diagnostic-codes';
|
|
5
6
|
import { fenceMap, indentOf } from './document-context';
|
|
6
7
|
import {
|
|
7
8
|
DocumentSymbols,
|
|
@@ -19,6 +20,10 @@ export interface ValidationIssue {
|
|
|
19
20
|
endColumn: number;
|
|
20
21
|
message: string;
|
|
21
22
|
severity: ValidationSeverity;
|
|
23
|
+
|
|
24
|
+
// The compiler code for this condition, absent on the structural checks the editor makes and the
|
|
25
|
+
// compiler does not. See ./diagnostic-codes.ts.
|
|
26
|
+
code?: DiagnosticCode;
|
|
22
27
|
}
|
|
23
28
|
|
|
24
29
|
function issue(
|
|
@@ -27,8 +32,9 @@ function issue(
|
|
|
27
32
|
startColumn: number,
|
|
28
33
|
length: number,
|
|
29
34
|
message: string,
|
|
35
|
+
code: DiagnosticCode,
|
|
30
36
|
): ValidationIssue {
|
|
31
|
-
return { severity, message, line, startColumn, endColumn: startColumn + length };
|
|
37
|
+
return { severity, message, line, startColumn, endColumn: startColumn + length, code };
|
|
32
38
|
}
|
|
33
39
|
|
|
34
40
|
function tokenIssue(
|
|
@@ -37,9 +43,10 @@ function tokenIssue(
|
|
|
37
43
|
text: string,
|
|
38
44
|
token: string,
|
|
39
45
|
message: string,
|
|
46
|
+
code: DiagnosticCode,
|
|
40
47
|
): ValidationIssue {
|
|
41
48
|
const column = text.indexOf(token) + 1;
|
|
42
|
-
return issue(severity, line, column, token.length, message);
|
|
49
|
+
return issue(severity, line, column, token.length, message, code);
|
|
43
50
|
}
|
|
44
51
|
|
|
45
52
|
// Reports every property whose type reference names nothing the document declares, and
|
|
@@ -60,6 +67,7 @@ function validateDeclarations(lines: string[], symbols: DocumentSymbols): Valida
|
|
|
60
67
|
lines[property.line],
|
|
61
68
|
property.type,
|
|
62
69
|
`Unknown type '${bare}' on '${property.name}' of ${owner} — declare it with 'concept ${bare} : <Primitive>' or 'type ${bare}'.`,
|
|
70
|
+
diagnosticCodes.unknownType,
|
|
63
71
|
),
|
|
64
72
|
);
|
|
65
73
|
}
|
|
@@ -79,6 +87,7 @@ function validateDeclarations(lines: string[], symbols: DocumentSymbols): Valida
|
|
|
79
87
|
lines[extra.line],
|
|
80
88
|
'identifier',
|
|
81
89
|
`Command '${command.name}' already marks '${identifiers[0].name}' as identifier — only one property can be the identifier.`,
|
|
90
|
+
diagnosticCodes.duplicateCommandIdentifier,
|
|
82
91
|
),
|
|
83
92
|
);
|
|
84
93
|
}
|
|
@@ -98,6 +107,7 @@ function validateDeclarations(lines: string[], symbols: DocumentSymbols): Valida
|
|
|
98
107
|
lines[declaration.line],
|
|
99
108
|
declaration.name,
|
|
100
109
|
`Duplicate declaration of '${declaration.name}' — concept and type names must be unique.`,
|
|
110
|
+
diagnosticCodes.duplicateDeclaration,
|
|
101
111
|
),
|
|
102
112
|
);
|
|
103
113
|
}
|
|
@@ -117,7 +127,14 @@ export function validateLines(lines: string[]): ValidationIssue[] {
|
|
|
117
127
|
const checkEvent = (line: number, text: string, name: string) => {
|
|
118
128
|
if (!events.has(name)) {
|
|
119
129
|
issues.push(
|
|
120
|
-
tokenIssue(
|
|
130
|
+
tokenIssue(
|
|
131
|
+
'warning',
|
|
132
|
+
line,
|
|
133
|
+
text,
|
|
134
|
+
name,
|
|
135
|
+
`Unknown event type '${name}' — declare it in a slice or import it.`,
|
|
136
|
+
diagnosticCodes.unknownEvent,
|
|
137
|
+
),
|
|
121
138
|
);
|
|
122
139
|
}
|
|
123
140
|
};
|
|
@@ -133,7 +150,14 @@ export function validateLines(lines: string[]): ValidationIssue[] {
|
|
|
133
150
|
const leading = line.match(/^[ ]*(\t+)/);
|
|
134
151
|
if (leading) {
|
|
135
152
|
issues.push(
|
|
136
|
-
issue(
|
|
153
|
+
issue(
|
|
154
|
+
'warning',
|
|
155
|
+
index,
|
|
156
|
+
leading[0].length - leading[1].length + 1,
|
|
157
|
+
leading[1].length,
|
|
158
|
+
'Screenplay is indentation-based — use spaces, not tabs.',
|
|
159
|
+
diagnosticCodes.tabIndentation,
|
|
160
|
+
),
|
|
137
161
|
);
|
|
138
162
|
}
|
|
139
163
|
|
|
@@ -145,7 +169,16 @@ export function validateLines(lines: string[]): ValidationIssue[] {
|
|
|
145
169
|
) {
|
|
146
170
|
for (const name of trimmed.split(/\s+/).filter((token) => token !== 'or')) {
|
|
147
171
|
if (!policies.has(name)) {
|
|
148
|
-
issues.push(
|
|
172
|
+
issues.push(
|
|
173
|
+
tokenIssue(
|
|
174
|
+
'warning',
|
|
175
|
+
index,
|
|
176
|
+
line,
|
|
177
|
+
name,
|
|
178
|
+
`Unknown policy '${name}' — declare it with 'policy ${name}'.`,
|
|
179
|
+
diagnosticCodes.unknownPolicy,
|
|
180
|
+
),
|
|
181
|
+
);
|
|
149
182
|
}
|
|
150
183
|
}
|
|
151
184
|
continue;
|
|
@@ -156,14 +189,28 @@ export function validateLines(lines: string[]): ValidationIssue[] {
|
|
|
156
189
|
const slice = trimmed.match(/^slice\s+(\w+)/);
|
|
157
190
|
if (slice && !sliceTypes.includes(slice[1])) {
|
|
158
191
|
issues.push(
|
|
159
|
-
tokenIssue(
|
|
192
|
+
tokenIssue(
|
|
193
|
+
'error',
|
|
194
|
+
index,
|
|
195
|
+
line,
|
|
196
|
+
slice[1],
|
|
197
|
+
`Unknown slice type '${slice[1]}' — expected ${sliceTypes.join(', ')}.`,
|
|
198
|
+
diagnosticCodes.unknownSliceType,
|
|
199
|
+
),
|
|
160
200
|
);
|
|
161
201
|
}
|
|
162
202
|
|
|
163
203
|
const concept = trimmed.match(/^concept\s+\w+\s*:\s*(\w+)/);
|
|
164
204
|
if (concept && concept[1] !== 'Enum' && !primitiveTypes.includes(concept[1])) {
|
|
165
205
|
issues.push(
|
|
166
|
-
tokenIssue(
|
|
206
|
+
tokenIssue(
|
|
207
|
+
'error',
|
|
208
|
+
index,
|
|
209
|
+
line,
|
|
210
|
+
concept[1],
|
|
211
|
+
`Unknown primitive type '${concept[1]}' — expected ${primitiveTypes.join(', ')} or Enum.`,
|
|
212
|
+
diagnosticCodes.unknownPrimitiveType,
|
|
213
|
+
),
|
|
167
214
|
);
|
|
168
215
|
}
|
|
169
216
|
|
|
@@ -172,7 +219,16 @@ export function validateLines(lines: string[]): ValidationIssue[] {
|
|
|
172
219
|
authorizeIndent = indentOf(line);
|
|
173
220
|
for (const name of authorize[1].split(/\s+/).filter((token) => token !== 'or' && token.length > 0)) {
|
|
174
221
|
if (!policies.has(name)) {
|
|
175
|
-
issues.push(
|
|
222
|
+
issues.push(
|
|
223
|
+
tokenIssue(
|
|
224
|
+
'warning',
|
|
225
|
+
index,
|
|
226
|
+
line,
|
|
227
|
+
name,
|
|
228
|
+
`Unknown policy '${name}' — declare it with 'policy ${name}'.`,
|
|
229
|
+
diagnosticCodes.unknownPolicy,
|
|
230
|
+
),
|
|
231
|
+
);
|
|
176
232
|
}
|
|
177
233
|
}
|
|
178
234
|
}
|
|
@@ -206,7 +262,14 @@ export function validateLines(lines: string[]): ValidationIssue[] {
|
|
|
206
262
|
const segments = path.substring('$context.'.length).split('.');
|
|
207
263
|
if (!contextRoots.includes(segments[0])) {
|
|
208
264
|
issues.push(
|
|
209
|
-
tokenIssue(
|
|
265
|
+
tokenIssue(
|
|
266
|
+
'warning',
|
|
267
|
+
index,
|
|
268
|
+
line,
|
|
269
|
+
path,
|
|
270
|
+
`Unknown $context path '${segments.join('.')}' — expected one of ${contextRoots.join(', ')}.`,
|
|
271
|
+
diagnosticCodes.unknownContextPath,
|
|
272
|
+
),
|
|
210
273
|
);
|
|
211
274
|
} else if (
|
|
212
275
|
segments[0] === 'causedBy' &&
|
|
@@ -214,7 +277,14 @@ export function validateLines(lines: string[]): ValidationIssue[] {
|
|
|
214
277
|
!causedByProperties.includes(segments[1])
|
|
215
278
|
) {
|
|
216
279
|
issues.push(
|
|
217
|
-
tokenIssue(
|
|
280
|
+
tokenIssue(
|
|
281
|
+
'warning',
|
|
282
|
+
index,
|
|
283
|
+
line,
|
|
284
|
+
path,
|
|
285
|
+
`Unknown $context.causedBy property '${segments[1]}' — expected ${causedByProperties.join(', ')}.`,
|
|
286
|
+
diagnosticCodes.unknownContextCausedByProperty,
|
|
287
|
+
),
|
|
218
288
|
);
|
|
219
289
|
} else if (
|
|
220
290
|
segments[0] === 'identity' &&
|
|
@@ -222,7 +292,14 @@ export function validateLines(lines: string[]): ValidationIssue[] {
|
|
|
222
292
|
!identityProperties.includes(segments[1])
|
|
223
293
|
) {
|
|
224
294
|
issues.push(
|
|
225
|
-
tokenIssue(
|
|
295
|
+
tokenIssue(
|
|
296
|
+
'warning',
|
|
297
|
+
index,
|
|
298
|
+
line,
|
|
299
|
+
path,
|
|
300
|
+
`Unknown $context.identity property '${segments[1]}' — expected ${identityProperties.join(', ')}.`,
|
|
301
|
+
diagnosticCodes.unknownContextIdentityProperty,
|
|
302
|
+
),
|
|
226
303
|
);
|
|
227
304
|
}
|
|
228
305
|
}
|
|
@@ -233,7 +310,16 @@ export function validateLines(lines: string[]): ValidationIssue[] {
|
|
|
233
310
|
.filter(({ line }) => /^\s*```\s*$/.test(line));
|
|
234
311
|
if (fenceLines.length % 2 === 1) {
|
|
235
312
|
const last = fenceLines[fenceLines.length - 1];
|
|
236
|
-
issues.push(
|
|
313
|
+
issues.push(
|
|
314
|
+
issue(
|
|
315
|
+
'error',
|
|
316
|
+
last.index,
|
|
317
|
+
1,
|
|
318
|
+
last.line.length + 1,
|
|
319
|
+
'Unclosed inline code block — expected a closing ``` line.',
|
|
320
|
+
diagnosticCodes.unclosedCodeBlock,
|
|
321
|
+
),
|
|
322
|
+
);
|
|
237
323
|
}
|
|
238
324
|
|
|
239
325
|
return issues;
|