koppajs-language-core 0.1.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/CHANGELOG.md +12 -0
- package/LICENSE +201 -0
- package/README.md +122 -0
- package/dist/data/htmlAttributes.d.ts +5 -0
- package/dist/data/htmlAttributes.js +393 -0
- package/dist/data/htmlAttributes.js.map +1 -0
- package/dist/data/htmlTags.d.ts +5 -0
- package/dist/data/htmlTags.js +562 -0
- package/dist/data/htmlTags.js.map +1 -0
- package/dist/data/kpaBlocks.d.ts +12 -0
- package/dist/data/kpaBlocks.js +55 -0
- package/dist/data/kpaBlocks.js.map +1 -0
- package/dist/diagnosticsEngine.d.ts +4 -0
- package/dist/diagnosticsEngine.js +11 -0
- package/dist/diagnosticsEngine.js.map +1 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.js +47 -0
- package/dist/index.js.map +1 -0
- package/dist/language/ast.d.ts +31 -0
- package/dist/language/ast.js +3 -0
- package/dist/language/ast.js.map +1 -0
- package/dist/language/componentContract.d.ts +22 -0
- package/dist/language/componentContract.js +273 -0
- package/dist/language/componentContract.js.map +1 -0
- package/dist/language/core.d.ts +14 -0
- package/dist/language/core.js +46 -0
- package/dist/language/core.js.map +1 -0
- package/dist/language/diagnosticCodes.d.ts +21 -0
- package/dist/language/diagnosticCodes.js +14 -0
- package/dist/language/diagnosticCodes.js.map +1 -0
- package/dist/language/diagnosticsRules.d.ts +12 -0
- package/dist/language/diagnosticsRules.js +58 -0
- package/dist/language/diagnosticsRules.js.map +1 -0
- package/dist/language/documentModel.d.ts +3 -0
- package/dist/language/documentModel.js +29 -0
- package/dist/language/documentModel.js.map +1 -0
- package/dist/language/localSymbolReferences.d.ts +8 -0
- package/dist/language/localSymbolReferences.js +199 -0
- package/dist/language/localSymbolReferences.js.map +1 -0
- package/dist/language/parser.d.ts +2 -0
- package/dist/language/parser.js +94 -0
- package/dist/language/parser.js.map +1 -0
- package/dist/language/projectConfig.d.ts +14 -0
- package/dist/language/projectConfig.js +154 -0
- package/dist/language/projectConfig.js.map +1 -0
- package/dist/language/sourcePositions.d.ts +4 -0
- package/dist/language/sourcePositions.js +50 -0
- package/dist/language/sourcePositions.js.map +1 -0
- package/dist/language/symbols.d.ts +25 -0
- package/dist/language/symbols.js +191 -0
- package/dist/language/symbols.js.map +1 -0
- package/dist/language/templateComponents.d.ts +83 -0
- package/dist/language/templateComponents.js +1248 -0
- package/dist/language/templateComponents.js.map +1 -0
- package/dist/language/templateDiagnosticsRules.d.ts +3 -0
- package/dist/language/templateDiagnosticsRules.js +58 -0
- package/dist/language/templateDiagnosticsRules.js.map +1 -0
- package/dist/language/templateExpressions.d.ts +23 -0
- package/dist/language/templateExpressions.js +361 -0
- package/dist/language/templateExpressions.js.map +1 -0
- package/dist/language/templateLoopScopes.d.ts +3 -0
- package/dist/language/templateLoopScopes.js +347 -0
- package/dist/language/templateLoopScopes.js.map +1 -0
- package/dist/language/templateSemantics.d.ts +38 -0
- package/dist/language/templateSemantics.js +373 -0
- package/dist/language/templateSemantics.js.map +1 -0
- package/dist/language/workspaceIndex.d.ts +37 -0
- package/dist/language/workspaceIndex.js +195 -0
- package/dist/language/workspaceIndex.js.map +1 -0
- package/dist/language/workspaceRegistrations.d.ts +10 -0
- package/dist/language/workspaceRegistrations.js +190 -0
- package/dist/language/workspaceRegistrations.js.map +1 -0
- package/dist/language/workspaceSymbols.d.ts +11 -0
- package/dist/language/workspaceSymbols.js +35 -0
- package/dist/language/workspaceSymbols.js.map +1 -0
- package/dist/service.d.ts +79 -0
- package/dist/service.js +919 -0
- package/dist/service.js.map +1 -0
- package/dist/utils/blockUtils.d.ts +1 -0
- package/dist/utils/blockUtils.js +9 -0
- package/dist/utils/blockUtils.js.map +1 -0
- package/dist/utils/htmlUtils.d.ts +2 -0
- package/dist/utils/htmlUtils.js +65 -0
- package/dist/utils/htmlUtils.js.map +1 -0
- package/dist/utils/templateContext.d.ts +14 -0
- package/dist/utils/templateContext.js +41 -0
- package/dist/utils/templateContext.js.map +1 -0
- package/dist/workspaceGraph.d.ts +28 -0
- package/dist/workspaceGraph.js +221 -0
- package/dist/workspaceGraph.js.map +1 -0
- package/package.json +44 -0
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export * from './language/ast';
|
|
2
|
+
export * from './language/core';
|
|
3
|
+
export * from './language/diagnosticCodes';
|
|
4
|
+
export * from './language/documentModel';
|
|
5
|
+
export * from './language/localSymbolReferences';
|
|
6
|
+
export * from './language/parser';
|
|
7
|
+
export * from './language/projectConfig';
|
|
8
|
+
export * from './language/sourcePositions';
|
|
9
|
+
export * from './language/templateExpressions';
|
|
10
|
+
export * from './language/templateSemantics';
|
|
11
|
+
export * from './language/workspaceSymbols';
|
|
12
|
+
export * from './service';
|
|
13
|
+
export * from './workspaceGraph';
|
|
14
|
+
export { collectLocalScriptSymbols, type KpaLocalScriptSymbolTable, type KpaScriptSymbol, type KpaScriptSymbolKind, } from './language/symbols';
|
|
15
|
+
export { collectCanonicalTemplateComponentDiagnostics, collectCanonicalTemplateComponentUsages, collectCanonicalTemplateTags, collectCanonicalTemplateTagsForComponent, collectImportedKpaComponents, collectWorkspaceTemplateComponentUsagesForResolvedFile, findImportedKpaComponentForSymbol, getCanonicalTemplateTagAtOffset, getImportedKpaComponentApi, getImportedKpaComponentLocalSymbols, normalizeComponentRenameTarget, resolveCanonicalTemplateComponentAtOffset, toKebabCase, type KpaCanonicalTemplateComponentUsage, type KpaComponentApiEntry, type KpaImportedComponent, type KpaImportedComponentApi, type KpaTemplateAttribute, type KpaTemplateTag, type KpaWorkspaceTemplateComponentUsage, type NormalizedComponentRenameTarget, type ResolvedKpaTemplateComponent, } from './language/templateComponents';
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.toKebabCase = exports.resolveCanonicalTemplateComponentAtOffset = exports.normalizeComponentRenameTarget = exports.getImportedKpaComponentLocalSymbols = exports.getImportedKpaComponentApi = exports.getCanonicalTemplateTagAtOffset = exports.findImportedKpaComponentForSymbol = exports.collectWorkspaceTemplateComponentUsagesForResolvedFile = exports.collectImportedKpaComponents = exports.collectCanonicalTemplateTagsForComponent = exports.collectCanonicalTemplateTags = exports.collectCanonicalTemplateComponentUsages = exports.collectCanonicalTemplateComponentDiagnostics = exports.collectLocalScriptSymbols = void 0;
|
|
18
|
+
__exportStar(require("./language/ast"), exports);
|
|
19
|
+
__exportStar(require("./language/core"), exports);
|
|
20
|
+
__exportStar(require("./language/diagnosticCodes"), exports);
|
|
21
|
+
__exportStar(require("./language/documentModel"), exports);
|
|
22
|
+
__exportStar(require("./language/localSymbolReferences"), exports);
|
|
23
|
+
__exportStar(require("./language/parser"), exports);
|
|
24
|
+
__exportStar(require("./language/projectConfig"), exports);
|
|
25
|
+
__exportStar(require("./language/sourcePositions"), exports);
|
|
26
|
+
__exportStar(require("./language/templateExpressions"), exports);
|
|
27
|
+
__exportStar(require("./language/templateSemantics"), exports);
|
|
28
|
+
__exportStar(require("./language/workspaceSymbols"), exports);
|
|
29
|
+
__exportStar(require("./service"), exports);
|
|
30
|
+
__exportStar(require("./workspaceGraph"), exports);
|
|
31
|
+
var symbols_1 = require("./language/symbols");
|
|
32
|
+
Object.defineProperty(exports, "collectLocalScriptSymbols", { enumerable: true, get: function () { return symbols_1.collectLocalScriptSymbols; } });
|
|
33
|
+
var templateComponents_1 = require("./language/templateComponents");
|
|
34
|
+
Object.defineProperty(exports, "collectCanonicalTemplateComponentDiagnostics", { enumerable: true, get: function () { return templateComponents_1.collectCanonicalTemplateComponentDiagnostics; } });
|
|
35
|
+
Object.defineProperty(exports, "collectCanonicalTemplateComponentUsages", { enumerable: true, get: function () { return templateComponents_1.collectCanonicalTemplateComponentUsages; } });
|
|
36
|
+
Object.defineProperty(exports, "collectCanonicalTemplateTags", { enumerable: true, get: function () { return templateComponents_1.collectCanonicalTemplateTags; } });
|
|
37
|
+
Object.defineProperty(exports, "collectCanonicalTemplateTagsForComponent", { enumerable: true, get: function () { return templateComponents_1.collectCanonicalTemplateTagsForComponent; } });
|
|
38
|
+
Object.defineProperty(exports, "collectImportedKpaComponents", { enumerable: true, get: function () { return templateComponents_1.collectImportedKpaComponents; } });
|
|
39
|
+
Object.defineProperty(exports, "collectWorkspaceTemplateComponentUsagesForResolvedFile", { enumerable: true, get: function () { return templateComponents_1.collectWorkspaceTemplateComponentUsagesForResolvedFile; } });
|
|
40
|
+
Object.defineProperty(exports, "findImportedKpaComponentForSymbol", { enumerable: true, get: function () { return templateComponents_1.findImportedKpaComponentForSymbol; } });
|
|
41
|
+
Object.defineProperty(exports, "getCanonicalTemplateTagAtOffset", { enumerable: true, get: function () { return templateComponents_1.getCanonicalTemplateTagAtOffset; } });
|
|
42
|
+
Object.defineProperty(exports, "getImportedKpaComponentApi", { enumerable: true, get: function () { return templateComponents_1.getImportedKpaComponentApi; } });
|
|
43
|
+
Object.defineProperty(exports, "getImportedKpaComponentLocalSymbols", { enumerable: true, get: function () { return templateComponents_1.getImportedKpaComponentLocalSymbols; } });
|
|
44
|
+
Object.defineProperty(exports, "normalizeComponentRenameTarget", { enumerable: true, get: function () { return templateComponents_1.normalizeComponentRenameTarget; } });
|
|
45
|
+
Object.defineProperty(exports, "resolveCanonicalTemplateComponentAtOffset", { enumerable: true, get: function () { return templateComponents_1.resolveCanonicalTemplateComponentAtOffset; } });
|
|
46
|
+
Object.defineProperty(exports, "toKebabCase", { enumerable: true, get: function () { return templateComponents_1.toKebabCase; } });
|
|
47
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,iDAA+B;AAC/B,kDAAgC;AAChC,6DAA2C;AAC3C,2DAAyC;AACzC,mEAAiD;AACjD,oDAAkC;AAClC,2DAAyC;AACzC,6DAA2C;AAC3C,iEAA+C;AAC/C,+DAA6C;AAC7C,8DAA4C;AAC5C,4CAA0B;AAC1B,mDAAiC;AACjC,8CAK4B;AAJ1B,oHAAA,yBAAyB,OAAA;AAK3B,oEAuBuC;AAtBrC,kJAAA,4CAA4C,OAAA;AAC5C,6IAAA,uCAAuC,OAAA;AACvC,kIAAA,4BAA4B,OAAA;AAC5B,8IAAA,wCAAwC,OAAA;AACxC,kIAAA,4BAA4B,OAAA;AAC5B,4JAAA,sDAAsD,OAAA;AACtD,uIAAA,iCAAiC,OAAA;AACjC,qIAAA,+BAA+B,OAAA;AAC/B,gIAAA,0BAA0B,OAAA;AAC1B,yIAAA,mCAAmC,OAAA;AACnC,oIAAA,8BAA8B,OAAA;AAC9B,+IAAA,yCAAyC,OAAA;AACzC,iHAAA,WAAW,OAAA"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export interface KpaSourcePosition {
|
|
2
|
+
offset: number;
|
|
3
|
+
line: number;
|
|
4
|
+
character: number;
|
|
5
|
+
}
|
|
6
|
+
export interface KpaLocatedRange {
|
|
7
|
+
start: KpaSourcePosition;
|
|
8
|
+
end: KpaSourcePosition;
|
|
9
|
+
}
|
|
10
|
+
export interface KpaTagToken {
|
|
11
|
+
name: string;
|
|
12
|
+
isClosing: boolean;
|
|
13
|
+
rawText: string;
|
|
14
|
+
range: KpaLocatedRange;
|
|
15
|
+
}
|
|
16
|
+
export type KpaBlockKind = 'template' | 'script-ts' | 'script-js' | 'style-css' | 'style-scss' | 'style-sass' | 'alias-html' | 'alias-tpl' | 'unknown';
|
|
17
|
+
export interface KpaBlockNode {
|
|
18
|
+
name: string;
|
|
19
|
+
kind: KpaBlockKind;
|
|
20
|
+
openTag: KpaTagToken;
|
|
21
|
+
closeTag?: KpaTagToken;
|
|
22
|
+
range: KpaLocatedRange;
|
|
23
|
+
contentRange: KpaLocatedRange;
|
|
24
|
+
isClosed: boolean;
|
|
25
|
+
}
|
|
26
|
+
export interface KpaDocument {
|
|
27
|
+
text: string;
|
|
28
|
+
lineStarts: readonly number[];
|
|
29
|
+
tags: readonly KpaTagToken[];
|
|
30
|
+
blocks: readonly KpaBlockNode[];
|
|
31
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ast.js","sourceRoot":"","sources":["../../src/language/ast.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import ts from 'typescript';
|
|
2
|
+
export type KpaTemplateContextBindingOrigin = 'component-method' | 'component-prop' | 'component-state';
|
|
3
|
+
export interface KpaTemplateContextBinding {
|
|
4
|
+
kind: 'function' | 'variable';
|
|
5
|
+
name: string;
|
|
6
|
+
nameEnd: number;
|
|
7
|
+
nameStart: number;
|
|
8
|
+
origin: KpaTemplateContextBindingOrigin;
|
|
9
|
+
optional: boolean;
|
|
10
|
+
typeText?: string;
|
|
11
|
+
valueText?: string;
|
|
12
|
+
}
|
|
13
|
+
export interface KpaRuntimeComponentPropEntry {
|
|
14
|
+
hasDefault: boolean;
|
|
15
|
+
name: string;
|
|
16
|
+
nameEnd: number;
|
|
17
|
+
nameStart: number;
|
|
18
|
+
optional: boolean;
|
|
19
|
+
typeText?: string;
|
|
20
|
+
}
|
|
21
|
+
export declare function collectRuntimeComponentProps(sourceFile: ts.SourceFile): readonly KpaRuntimeComponentPropEntry[];
|
|
22
|
+
export declare function collectRuntimeTemplateContextBindings(sourceFile: ts.SourceFile): readonly KpaTemplateContextBinding[];
|
|
@@ -0,0 +1,273 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.collectRuntimeComponentProps = collectRuntimeComponentProps;
|
|
7
|
+
exports.collectRuntimeTemplateContextBindings = collectRuntimeTemplateContextBindings;
|
|
8
|
+
const typescript_1 = __importDefault(require("typescript"));
|
|
9
|
+
const supportedRuntimePropTypeNames = new Map([
|
|
10
|
+
['Array', 'unknown[]'],
|
|
11
|
+
['Boolean', 'boolean'],
|
|
12
|
+
['Function', '(...args: unknown[]) => unknown'],
|
|
13
|
+
['Number', 'number'],
|
|
14
|
+
['Object', 'Record<string, unknown>'],
|
|
15
|
+
['String', 'string'],
|
|
16
|
+
]);
|
|
17
|
+
function collectRuntimeComponentProps(sourceFile) {
|
|
18
|
+
const componentReturn = getRuntimeComponentReturnObject(sourceFile);
|
|
19
|
+
if (!componentReturn) {
|
|
20
|
+
return [];
|
|
21
|
+
}
|
|
22
|
+
const propsObject = getNamedObjectLiteralProperty(componentReturn, 'props');
|
|
23
|
+
if (!propsObject) {
|
|
24
|
+
return [];
|
|
25
|
+
}
|
|
26
|
+
return propsObject.properties.flatMap((property) => {
|
|
27
|
+
const propertyName = getRuntimeContractPropertyName(property.name);
|
|
28
|
+
if (!propertyName) {
|
|
29
|
+
return [];
|
|
30
|
+
}
|
|
31
|
+
const propDefinition = getPropertyAssignmentObjectLiteral(property);
|
|
32
|
+
const required = propDefinition
|
|
33
|
+
? readBooleanLiteralProperty(propDefinition, 'required') === true
|
|
34
|
+
: false;
|
|
35
|
+
const hasDefault = propDefinition
|
|
36
|
+
? getObjectLiteralPropertyAssignment(propDefinition, 'default') !== undefined
|
|
37
|
+
: false;
|
|
38
|
+
return [
|
|
39
|
+
{
|
|
40
|
+
hasDefault,
|
|
41
|
+
name: propertyName.text,
|
|
42
|
+
nameEnd: propertyName.end,
|
|
43
|
+
nameStart: propertyName.getStart(sourceFile),
|
|
44
|
+
optional: !required,
|
|
45
|
+
typeText: propDefinition ? inferRuntimePropTypeText(propDefinition, sourceFile) : undefined,
|
|
46
|
+
},
|
|
47
|
+
];
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
function collectRuntimeTemplateContextBindings(sourceFile) {
|
|
51
|
+
const componentReturn = getRuntimeComponentReturnObject(sourceFile);
|
|
52
|
+
if (!componentReturn) {
|
|
53
|
+
return [];
|
|
54
|
+
}
|
|
55
|
+
const seenNames = new Set();
|
|
56
|
+
const bindings = [];
|
|
57
|
+
for (const methodEntry of collectRuntimeMethodEntries(componentReturn, sourceFile)) {
|
|
58
|
+
seenNames.add(methodEntry.name);
|
|
59
|
+
bindings.push({
|
|
60
|
+
kind: 'function',
|
|
61
|
+
name: methodEntry.name,
|
|
62
|
+
nameEnd: methodEntry.nameEnd,
|
|
63
|
+
nameStart: methodEntry.nameStart,
|
|
64
|
+
optional: false,
|
|
65
|
+
origin: 'component-method',
|
|
66
|
+
valueText: methodEntry.valueText,
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
for (const stateEntry of collectRuntimeStateEntries(componentReturn, sourceFile)) {
|
|
70
|
+
if (seenNames.has(stateEntry.name)) {
|
|
71
|
+
continue;
|
|
72
|
+
}
|
|
73
|
+
seenNames.add(stateEntry.name);
|
|
74
|
+
bindings.push({
|
|
75
|
+
kind: 'variable',
|
|
76
|
+
name: stateEntry.name,
|
|
77
|
+
nameEnd: stateEntry.nameEnd,
|
|
78
|
+
nameStart: stateEntry.nameStart,
|
|
79
|
+
optional: false,
|
|
80
|
+
origin: 'component-state',
|
|
81
|
+
valueText: stateEntry.valueText,
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
for (const propEntry of collectRuntimeComponentProps(sourceFile)) {
|
|
85
|
+
if (seenNames.has(propEntry.name)) {
|
|
86
|
+
continue;
|
|
87
|
+
}
|
|
88
|
+
seenNames.add(propEntry.name);
|
|
89
|
+
bindings.push({
|
|
90
|
+
kind: 'variable',
|
|
91
|
+
name: propEntry.name,
|
|
92
|
+
nameEnd: propEntry.nameEnd,
|
|
93
|
+
nameStart: propEntry.nameStart,
|
|
94
|
+
optional: propEntry.optional && !propEntry.hasDefault,
|
|
95
|
+
origin: 'component-prop',
|
|
96
|
+
typeText: propEntry.typeText,
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
return bindings;
|
|
100
|
+
}
|
|
101
|
+
function collectRuntimeStateEntries(componentReturn, sourceFile) {
|
|
102
|
+
const stateObject = getNamedObjectLiteralProperty(componentReturn, 'state');
|
|
103
|
+
if (!stateObject) {
|
|
104
|
+
return [];
|
|
105
|
+
}
|
|
106
|
+
return stateObject.properties.flatMap((property) => {
|
|
107
|
+
const propertyName = getRuntimeContractPropertyName(property.name);
|
|
108
|
+
if (!propertyName) {
|
|
109
|
+
return [];
|
|
110
|
+
}
|
|
111
|
+
return [
|
|
112
|
+
{
|
|
113
|
+
name: propertyName.text,
|
|
114
|
+
nameEnd: propertyName.end,
|
|
115
|
+
nameStart: propertyName.getStart(sourceFile),
|
|
116
|
+
valueText: readPropertyValueText(property, sourceFile),
|
|
117
|
+
},
|
|
118
|
+
];
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
function collectRuntimeMethodEntries(componentReturn, sourceFile) {
|
|
122
|
+
const methodsObject = getNamedObjectLiteralProperty(componentReturn, 'methods');
|
|
123
|
+
if (!methodsObject) {
|
|
124
|
+
return [];
|
|
125
|
+
}
|
|
126
|
+
return methodsObject.properties.flatMap((property) => {
|
|
127
|
+
if (!isRuntimeMethodProperty(property)) {
|
|
128
|
+
return [];
|
|
129
|
+
}
|
|
130
|
+
const propertyName = getRuntimeContractPropertyName(property.name);
|
|
131
|
+
if (!propertyName) {
|
|
132
|
+
return [];
|
|
133
|
+
}
|
|
134
|
+
return [
|
|
135
|
+
{
|
|
136
|
+
name: propertyName.text,
|
|
137
|
+
nameEnd: propertyName.end,
|
|
138
|
+
nameStart: propertyName.getStart(sourceFile),
|
|
139
|
+
valueText: createMethodValueText(property, sourceFile),
|
|
140
|
+
},
|
|
141
|
+
];
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
function getRuntimeComponentReturnObject(sourceFile) {
|
|
145
|
+
for (const statement of sourceFile.statements) {
|
|
146
|
+
if (typescript_1.default.isReturnStatement(statement) &&
|
|
147
|
+
statement.expression &&
|
|
148
|
+
typescript_1.default.isObjectLiteralExpression(statement.expression)) {
|
|
149
|
+
return statement.expression;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
return undefined;
|
|
153
|
+
}
|
|
154
|
+
function getNamedObjectLiteralProperty(objectLiteral, propertyName) {
|
|
155
|
+
return getPropertyAssignmentObjectLiteral(getObjectLiteralPropertyAssignment(objectLiteral, propertyName));
|
|
156
|
+
}
|
|
157
|
+
function getObjectLiteralPropertyAssignment(objectLiteral, propertyName) {
|
|
158
|
+
return objectLiteral.properties.find((property) => typescript_1.default.isPropertyAssignment(property) &&
|
|
159
|
+
getRuntimeContractPropertyName(property.name)?.text === propertyName);
|
|
160
|
+
}
|
|
161
|
+
function getPropertyAssignmentObjectLiteral(property) {
|
|
162
|
+
return property && typescript_1.default.isPropertyAssignment(property) && typescript_1.default.isObjectLiteralExpression(property.initializer)
|
|
163
|
+
? property.initializer
|
|
164
|
+
: undefined;
|
|
165
|
+
}
|
|
166
|
+
function readPropertyValueText(property, sourceFile) {
|
|
167
|
+
if (typescript_1.default.isPropertyAssignment(property)) {
|
|
168
|
+
return property.initializer.getText(sourceFile).trim() || undefined;
|
|
169
|
+
}
|
|
170
|
+
if (typescript_1.default.isShorthandPropertyAssignment(property)) {
|
|
171
|
+
return property.name.text;
|
|
172
|
+
}
|
|
173
|
+
return undefined;
|
|
174
|
+
}
|
|
175
|
+
function inferRuntimePropTypeText(propDefinition, sourceFile) {
|
|
176
|
+
const explicitTypeAssignment = getObjectLiteralPropertyAssignment(propDefinition, 'type');
|
|
177
|
+
if (explicitTypeAssignment) {
|
|
178
|
+
return inferTypeTextFromTypeInitializer(explicitTypeAssignment.initializer, sourceFile);
|
|
179
|
+
}
|
|
180
|
+
const defaultAssignment = getObjectLiteralPropertyAssignment(propDefinition, 'default');
|
|
181
|
+
if (defaultAssignment) {
|
|
182
|
+
return inferTypeTextFromValueExpression(defaultAssignment.initializer, sourceFile);
|
|
183
|
+
}
|
|
184
|
+
return undefined;
|
|
185
|
+
}
|
|
186
|
+
function inferTypeTextFromTypeInitializer(initializer, sourceFile) {
|
|
187
|
+
if (typescript_1.default.isIdentifier(initializer)) {
|
|
188
|
+
return supportedRuntimePropTypeNames.get(initializer.text) ?? initializer.text;
|
|
189
|
+
}
|
|
190
|
+
if (typescript_1.default.isStringLiteralLike(initializer)) {
|
|
191
|
+
return supportedRuntimePropTypeNames.get(initializer.text) ?? initializer.text;
|
|
192
|
+
}
|
|
193
|
+
if (typescript_1.default.isArrayLiteralExpression(initializer)) {
|
|
194
|
+
const memberTypes = initializer.elements
|
|
195
|
+
.flatMap((element) => inferTypeTextFromTypeInitializer(asExpression(element), sourceFile) ?? [])
|
|
196
|
+
.filter((typeText, index, values) => values.indexOf(typeText) === index);
|
|
197
|
+
if (memberTypes.length > 0) {
|
|
198
|
+
return memberTypes.join(' | ');
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
return initializer.getText(sourceFile).trim() || undefined;
|
|
202
|
+
}
|
|
203
|
+
function inferTypeTextFromValueExpression(initializer, sourceFile) {
|
|
204
|
+
if (typescript_1.default.isStringLiteralLike(initializer) || typescript_1.default.isNoSubstitutionTemplateLiteral(initializer)) {
|
|
205
|
+
return 'string';
|
|
206
|
+
}
|
|
207
|
+
if (typescript_1.default.isNumericLiteral(initializer) || isNegativeNumericLiteral(initializer)) {
|
|
208
|
+
return 'number';
|
|
209
|
+
}
|
|
210
|
+
if (initializer.kind === typescript_1.default.SyntaxKind.TrueKeyword || initializer.kind === typescript_1.default.SyntaxKind.FalseKeyword) {
|
|
211
|
+
return 'boolean';
|
|
212
|
+
}
|
|
213
|
+
if (initializer.kind === typescript_1.default.SyntaxKind.NullKeyword) {
|
|
214
|
+
return 'null';
|
|
215
|
+
}
|
|
216
|
+
if (typescript_1.default.isArrayLiteralExpression(initializer)) {
|
|
217
|
+
return 'unknown[]';
|
|
218
|
+
}
|
|
219
|
+
if (typescript_1.default.isObjectLiteralExpression(initializer)) {
|
|
220
|
+
return 'Record<string, unknown>';
|
|
221
|
+
}
|
|
222
|
+
if (typescript_1.default.isArrowFunction(initializer) || typescript_1.default.isFunctionExpression(initializer)) {
|
|
223
|
+
return '(...args: unknown[]) => unknown';
|
|
224
|
+
}
|
|
225
|
+
return initializer.getText(sourceFile).trim() || undefined;
|
|
226
|
+
}
|
|
227
|
+
function readBooleanLiteralProperty(objectLiteral, propertyName) {
|
|
228
|
+
const property = getObjectLiteralPropertyAssignment(objectLiteral, propertyName);
|
|
229
|
+
if (!property) {
|
|
230
|
+
return undefined;
|
|
231
|
+
}
|
|
232
|
+
if (property.initializer.kind === typescript_1.default.SyntaxKind.TrueKeyword) {
|
|
233
|
+
return true;
|
|
234
|
+
}
|
|
235
|
+
if (property.initializer.kind === typescript_1.default.SyntaxKind.FalseKeyword) {
|
|
236
|
+
return false;
|
|
237
|
+
}
|
|
238
|
+
return undefined;
|
|
239
|
+
}
|
|
240
|
+
function getRuntimeContractPropertyName(propertyName) {
|
|
241
|
+
if (!propertyName) {
|
|
242
|
+
return undefined;
|
|
243
|
+
}
|
|
244
|
+
if (typescript_1.default.isIdentifier(propertyName) || typescript_1.default.isStringLiteral(propertyName)) {
|
|
245
|
+
return propertyName;
|
|
246
|
+
}
|
|
247
|
+
return undefined;
|
|
248
|
+
}
|
|
249
|
+
function isRuntimeMethodProperty(property) {
|
|
250
|
+
if (typescript_1.default.isMethodDeclaration(property)) {
|
|
251
|
+
return true;
|
|
252
|
+
}
|
|
253
|
+
return (typescript_1.default.isPropertyAssignment(property) &&
|
|
254
|
+
(typescript_1.default.isArrowFunction(property.initializer) || typescript_1.default.isFunctionExpression(property.initializer)));
|
|
255
|
+
}
|
|
256
|
+
function createMethodValueText(property, sourceFile) {
|
|
257
|
+
if (typescript_1.default.isMethodDeclaration(property)) {
|
|
258
|
+
return `function ${property.getText(sourceFile).trim()}`;
|
|
259
|
+
}
|
|
260
|
+
if (typescript_1.default.isPropertyAssignment(property)) {
|
|
261
|
+
return property.initializer.getText(sourceFile).trim();
|
|
262
|
+
}
|
|
263
|
+
return 'function () {}';
|
|
264
|
+
}
|
|
265
|
+
function isNegativeNumericLiteral(node) {
|
|
266
|
+
return (typescript_1.default.isPrefixUnaryExpression(node) &&
|
|
267
|
+
node.operator === typescript_1.default.SyntaxKind.MinusToken &&
|
|
268
|
+
typescript_1.default.isNumericLiteral(node.operand));
|
|
269
|
+
}
|
|
270
|
+
function asExpression(node) {
|
|
271
|
+
return typescript_1.default.isSpreadElement(node) ? node.expression : node;
|
|
272
|
+
}
|
|
273
|
+
//# sourceMappingURL=componentContract.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"componentContract.js","sourceRoot":"","sources":["../../src/language/componentContract.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { KpaDocument } from './ast';
|
|
2
|
+
import { type KpaBlockDiagnostic } from './diagnosticsRules';
|
|
3
|
+
import { parseKpaDocument } from './parser';
|
|
4
|
+
export { collectImportedKpaComponents, collectCanonicalTemplateComponentUsages, collectCanonicalTemplateTags, collectCanonicalTemplateTagsForComponent, collectWorkspaceTemplateComponentUsagesForResolvedFile, findImportedKpaComponentForSymbol, getImportedKpaComponentApi, getImportedKpaComponentLocalSymbols, normalizeComponentRenameTarget, resolveCanonicalTemplateComponentAtOffset, toKebabCase, type KpaWorkspaceTemplateComponentUsage, } from './templateComponents';
|
|
5
|
+
export { resolveWorkspaceImportPath } from './projectConfig';
|
|
6
|
+
export { collectLocalScriptSymbols } from './symbols';
|
|
7
|
+
export { collectWorkspaceSymbolsFromKpaText, type KpaWorkspaceSymbolEntry, } from './workspaceSymbols';
|
|
8
|
+
export { KpaWorkspaceIndex, type KpaWorkspaceFileDiagnostics, type KpaWorkspaceIndexOptions, } from './workspaceIndex';
|
|
9
|
+
export { parseKpaDocument };
|
|
10
|
+
export declare function collectKpaDiagnosticsFromDocument(document: KpaDocument, knownBlocks?: readonly string[], sourcePath?: string): readonly KpaBlockDiagnostic[];
|
|
11
|
+
export declare function collectKpaDiagnosticsFromText(text: string, knownBlocks?: readonly string[], sourcePath?: string): {
|
|
12
|
+
document: KpaDocument;
|
|
13
|
+
diagnostics: readonly KpaBlockDiagnostic[];
|
|
14
|
+
};
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseKpaDocument = exports.KpaWorkspaceIndex = exports.collectWorkspaceSymbolsFromKpaText = exports.collectLocalScriptSymbols = exports.resolveWorkspaceImportPath = exports.toKebabCase = exports.resolveCanonicalTemplateComponentAtOffset = exports.normalizeComponentRenameTarget = exports.getImportedKpaComponentLocalSymbols = exports.getImportedKpaComponentApi = exports.findImportedKpaComponentForSymbol = exports.collectWorkspaceTemplateComponentUsagesForResolvedFile = exports.collectCanonicalTemplateTagsForComponent = exports.collectCanonicalTemplateTags = exports.collectCanonicalTemplateComponentUsages = exports.collectImportedKpaComponents = void 0;
|
|
4
|
+
exports.collectKpaDiagnosticsFromDocument = collectKpaDiagnosticsFromDocument;
|
|
5
|
+
exports.collectKpaDiagnosticsFromText = collectKpaDiagnosticsFromText;
|
|
6
|
+
const kpaBlocks_1 = require("../data/kpaBlocks");
|
|
7
|
+
const diagnosticsRules_1 = require("./diagnosticsRules");
|
|
8
|
+
const parser_1 = require("./parser");
|
|
9
|
+
Object.defineProperty(exports, "parseKpaDocument", { enumerable: true, get: function () { return parser_1.parseKpaDocument; } });
|
|
10
|
+
const templateComponents_1 = require("./templateComponents");
|
|
11
|
+
const templateDiagnosticsRules_1 = require("./templateDiagnosticsRules");
|
|
12
|
+
var templateComponents_2 = require("./templateComponents");
|
|
13
|
+
Object.defineProperty(exports, "collectImportedKpaComponents", { enumerable: true, get: function () { return templateComponents_2.collectImportedKpaComponents; } });
|
|
14
|
+
Object.defineProperty(exports, "collectCanonicalTemplateComponentUsages", { enumerable: true, get: function () { return templateComponents_2.collectCanonicalTemplateComponentUsages; } });
|
|
15
|
+
Object.defineProperty(exports, "collectCanonicalTemplateTags", { enumerable: true, get: function () { return templateComponents_2.collectCanonicalTemplateTags; } });
|
|
16
|
+
Object.defineProperty(exports, "collectCanonicalTemplateTagsForComponent", { enumerable: true, get: function () { return templateComponents_2.collectCanonicalTemplateTagsForComponent; } });
|
|
17
|
+
Object.defineProperty(exports, "collectWorkspaceTemplateComponentUsagesForResolvedFile", { enumerable: true, get: function () { return templateComponents_2.collectWorkspaceTemplateComponentUsagesForResolvedFile; } });
|
|
18
|
+
Object.defineProperty(exports, "findImportedKpaComponentForSymbol", { enumerable: true, get: function () { return templateComponents_2.findImportedKpaComponentForSymbol; } });
|
|
19
|
+
Object.defineProperty(exports, "getImportedKpaComponentApi", { enumerable: true, get: function () { return templateComponents_2.getImportedKpaComponentApi; } });
|
|
20
|
+
Object.defineProperty(exports, "getImportedKpaComponentLocalSymbols", { enumerable: true, get: function () { return templateComponents_2.getImportedKpaComponentLocalSymbols; } });
|
|
21
|
+
Object.defineProperty(exports, "normalizeComponentRenameTarget", { enumerable: true, get: function () { return templateComponents_2.normalizeComponentRenameTarget; } });
|
|
22
|
+
Object.defineProperty(exports, "resolveCanonicalTemplateComponentAtOffset", { enumerable: true, get: function () { return templateComponents_2.resolveCanonicalTemplateComponentAtOffset; } });
|
|
23
|
+
Object.defineProperty(exports, "toKebabCase", { enumerable: true, get: function () { return templateComponents_2.toKebabCase; } });
|
|
24
|
+
var projectConfig_1 = require("./projectConfig");
|
|
25
|
+
Object.defineProperty(exports, "resolveWorkspaceImportPath", { enumerable: true, get: function () { return projectConfig_1.resolveWorkspaceImportPath; } });
|
|
26
|
+
var symbols_1 = require("./symbols");
|
|
27
|
+
Object.defineProperty(exports, "collectLocalScriptSymbols", { enumerable: true, get: function () { return symbols_1.collectLocalScriptSymbols; } });
|
|
28
|
+
var workspaceSymbols_1 = require("./workspaceSymbols");
|
|
29
|
+
Object.defineProperty(exports, "collectWorkspaceSymbolsFromKpaText", { enumerable: true, get: function () { return workspaceSymbols_1.collectWorkspaceSymbolsFromKpaText; } });
|
|
30
|
+
var workspaceIndex_1 = require("./workspaceIndex");
|
|
31
|
+
Object.defineProperty(exports, "KpaWorkspaceIndex", { enumerable: true, get: function () { return workspaceIndex_1.KpaWorkspaceIndex; } });
|
|
32
|
+
function collectKpaDiagnosticsFromDocument(document, knownBlocks = kpaBlocks_1.supportedKpaBlocks, sourcePath) {
|
|
33
|
+
return [
|
|
34
|
+
...(0, diagnosticsRules_1.collectBlockDiagnosticsFromDocument)(document, knownBlocks),
|
|
35
|
+
...(0, templateDiagnosticsRules_1.collectTemplateDiagnosticsFromDocument)(document),
|
|
36
|
+
...(0, templateComponents_1.collectCanonicalTemplateComponentDiagnostics)(document, sourcePath),
|
|
37
|
+
];
|
|
38
|
+
}
|
|
39
|
+
function collectKpaDiagnosticsFromText(text, knownBlocks = kpaBlocks_1.supportedKpaBlocks, sourcePath) {
|
|
40
|
+
const document = (0, parser_1.parseKpaDocument)(text);
|
|
41
|
+
return {
|
|
42
|
+
document,
|
|
43
|
+
diagnostics: collectKpaDiagnosticsFromDocument(document, knownBlocks, sourcePath),
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=core.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core.js","sourceRoot":"","sources":["../../src/language/core.ts"],"names":[],"mappings":";;;AAkCA,8EAUC;AAED,sEAcC;AA5DD,iDAAuD;AAEvD,yDAAkG;AAClG,qCAA4C;AA6BnC,iGA7BA,yBAAgB,OA6BA;AA5BzB,6DAAoF;AACpF,yEAAoF;AAEpF,2DAa8B;AAZ5B,kIAAA,4BAA4B,OAAA;AAC5B,6IAAA,uCAAuC,OAAA;AACvC,kIAAA,4BAA4B,OAAA;AAC5B,8IAAA,wCAAwC,OAAA;AACxC,4JAAA,sDAAsD,OAAA;AACtD,uIAAA,iCAAiC,OAAA;AACjC,gIAAA,0BAA0B,OAAA;AAC1B,yIAAA,mCAAmC,OAAA;AACnC,oIAAA,8BAA8B,OAAA;AAC9B,+IAAA,yCAAyC,OAAA;AACzC,iHAAA,WAAW,OAAA;AAGb,iDAA6D;AAApD,2HAAA,0BAA0B,OAAA;AACnC,qCAAsD;AAA7C,oHAAA,yBAAyB,OAAA;AAClC,uDAG4B;AAF1B,sIAAA,kCAAkC,OAAA;AAGpC,mDAI0B;AAHxB,mHAAA,iBAAiB,OAAA;AAMnB,SAAgB,iCAAiC,CAC/C,QAAqB,EACrB,cAAiC,8BAAkB,EACnD,UAAmB;IAEnB,OAAO;QACL,GAAG,IAAA,sDAAmC,EAAC,QAAQ,EAAE,WAAW,CAAC;QAC7D,GAAG,IAAA,iEAAsC,EAAC,QAAQ,CAAC;QACnD,GAAG,IAAA,iEAA4C,EAAC,QAAQ,EAAE,UAAU,CAAC;KACtE,CAAC;AACJ,CAAC;AAED,SAAgB,6BAA6B,CAC3C,IAAY,EACZ,cAAiC,8BAAkB,EACnD,UAAmB;IAKnB,MAAM,QAAQ,GAAG,IAAA,yBAAgB,EAAC,IAAI,CAAC,CAAC;IAExC,OAAO;QACL,QAAQ;QACR,WAAW,EAAE,iCAAiC,CAAC,QAAQ,EAAE,WAAW,EAAE,UAAU,CAAC;KAClF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export declare const kpaDiagnosticCodes: {
|
|
2
|
+
readonly invalidComponentPropType: "kpa.invalid-component-prop-type";
|
|
3
|
+
readonly missingComponentSlot: "kpa.missing-component-slot";
|
|
4
|
+
readonly missingComponentProp: "kpa.missing-component-prop";
|
|
5
|
+
readonly unknownComponentEmit: "kpa.unknown-component-emit";
|
|
6
|
+
readonly unresolvedComponentImport: "kpa.unresolved-component-import";
|
|
7
|
+
readonly unresolvedComponentTag: "kpa.unresolved-component-tag";
|
|
8
|
+
readonly unknownComponentProp: "kpa.unknown-component-prop";
|
|
9
|
+
readonly unknownComponentSlot: "kpa.unknown-component-slot";
|
|
10
|
+
};
|
|
11
|
+
export type KpaDiagnosticCode = (typeof kpaDiagnosticCodes)[keyof typeof kpaDiagnosticCodes];
|
|
12
|
+
export interface MissingComponentPropDiagnosticData {
|
|
13
|
+
componentName: string;
|
|
14
|
+
insertOffset: number;
|
|
15
|
+
propName: string;
|
|
16
|
+
propTypeText?: string;
|
|
17
|
+
}
|
|
18
|
+
export interface UnresolvedComponentTagDiagnosticData {
|
|
19
|
+
componentName: string;
|
|
20
|
+
tagName: string;
|
|
21
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.kpaDiagnosticCodes = void 0;
|
|
4
|
+
exports.kpaDiagnosticCodes = {
|
|
5
|
+
invalidComponentPropType: 'kpa.invalid-component-prop-type',
|
|
6
|
+
missingComponentSlot: 'kpa.missing-component-slot',
|
|
7
|
+
missingComponentProp: 'kpa.missing-component-prop',
|
|
8
|
+
unknownComponentEmit: 'kpa.unknown-component-emit',
|
|
9
|
+
unresolvedComponentImport: 'kpa.unresolved-component-import',
|
|
10
|
+
unresolvedComponentTag: 'kpa.unresolved-component-tag',
|
|
11
|
+
unknownComponentProp: 'kpa.unknown-component-prop',
|
|
12
|
+
unknownComponentSlot: 'kpa.unknown-component-slot',
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=diagnosticCodes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagnosticCodes.js","sourceRoot":"","sources":["../../src/language/diagnosticCodes.ts"],"names":[],"mappings":";;;AAAa,QAAA,kBAAkB,GAAG;IAChC,wBAAwB,EAAE,iCAAiC;IAC3D,oBAAoB,EAAE,4BAA4B;IAClD,oBAAoB,EAAE,4BAA4B;IAClD,oBAAoB,EAAE,4BAA4B;IAClD,yBAAyB,EAAE,iCAAiC;IAC5D,sBAAsB,EAAE,8BAA8B;IACtD,oBAAoB,EAAE,4BAA4B;IAClD,oBAAoB,EAAE,4BAA4B;CAC1C,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { KpaDocument } from './ast';
|
|
2
|
+
export interface KpaBlockDiagnostic {
|
|
3
|
+
code?: number | string;
|
|
4
|
+
data?: unknown;
|
|
5
|
+
message: string;
|
|
6
|
+
range: {
|
|
7
|
+
line: number;
|
|
8
|
+
startChar: number;
|
|
9
|
+
endChar: number;
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
export declare function collectBlockDiagnosticsFromDocument(document: KpaDocument, knownBlocks?: readonly string[]): KpaBlockDiagnostic[];
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.collectBlockDiagnosticsFromDocument = collectBlockDiagnosticsFromDocument;
|
|
4
|
+
const kpaBlocks_1 = require("../data/kpaBlocks");
|
|
5
|
+
function collectBlockDiagnosticsFromDocument(document, knownBlocks = kpaBlocks_1.supportedKpaBlocks) {
|
|
6
|
+
const diagnostics = [];
|
|
7
|
+
const stack = [];
|
|
8
|
+
const knownBlockSet = new Set(knownBlocks);
|
|
9
|
+
for (const tag of document.tags) {
|
|
10
|
+
if (!knownBlockSet.has(tag.name)) {
|
|
11
|
+
continue;
|
|
12
|
+
}
|
|
13
|
+
if (!tag.isClosing) {
|
|
14
|
+
stack.push(tag);
|
|
15
|
+
continue;
|
|
16
|
+
}
|
|
17
|
+
const lastOpenTag = stack[stack.length - 1];
|
|
18
|
+
if (!lastOpenTag) {
|
|
19
|
+
diagnostics.push({
|
|
20
|
+
range: {
|
|
21
|
+
line: tag.range.start.line,
|
|
22
|
+
startChar: tag.range.start.character,
|
|
23
|
+
endChar: tag.range.end.character,
|
|
24
|
+
},
|
|
25
|
+
message: `Schliessender Block [/${tag.name}] gefunden, ohne dass er vorher geoeffnet wurde.`,
|
|
26
|
+
});
|
|
27
|
+
continue;
|
|
28
|
+
}
|
|
29
|
+
if (lastOpenTag.name !== tag.name) {
|
|
30
|
+
diagnostics.push({
|
|
31
|
+
range: {
|
|
32
|
+
line: tag.range.start.line,
|
|
33
|
+
startChar: tag.range.start.character,
|
|
34
|
+
endChar: tag.range.end.character,
|
|
35
|
+
},
|
|
36
|
+
message: `Erwarteter schliessender Block [/${lastOpenTag.name}] wurde nicht gefunden. Stattdessen [/${tag.name}] verwendet.`,
|
|
37
|
+
});
|
|
38
|
+
continue;
|
|
39
|
+
}
|
|
40
|
+
stack.pop();
|
|
41
|
+
}
|
|
42
|
+
while (stack.length > 0) {
|
|
43
|
+
const unclosedTag = stack.pop();
|
|
44
|
+
if (!unclosedTag) {
|
|
45
|
+
continue;
|
|
46
|
+
}
|
|
47
|
+
diagnostics.push({
|
|
48
|
+
range: {
|
|
49
|
+
line: unclosedTag.range.start.line,
|
|
50
|
+
startChar: unclosedTag.range.start.character,
|
|
51
|
+
endChar: unclosedTag.range.end.character,
|
|
52
|
+
},
|
|
53
|
+
message: `Der Block [${unclosedTag.name}] wurde nicht geschlossen. Erwartet [/${unclosedTag.name}].`,
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
return diagnostics;
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=diagnosticsRules.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagnosticsRules.js","sourceRoot":"","sources":["../../src/language/diagnosticsRules.ts"],"names":[],"mappings":";;AAcA,kFAiEC;AA/ED,iDAAuD;AAcvD,SAAgB,mCAAmC,CACjD,QAAqB,EACrB,cAAiC,8BAAkB;IAEnD,MAAM,WAAW,GAAyB,EAAE,CAAC;IAC7C,MAAM,KAAK,GAAkB,EAAE,CAAC;IAChC,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC;IAE3C,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;QAChC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACjC,SAAS;QACX,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;YACnB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAChB,SAAS;QACX,CAAC;QAED,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAE5C,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,WAAW,CAAC,IAAI,CAAC;gBACf,KAAK,EAAE;oBACL,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI;oBAC1B,SAAS,EAAE,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS;oBACpC,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS;iBACjC;gBACD,OAAO,EAAE,yBAAyB,GAAG,CAAC,IAAI,kDAAkD;aAC7F,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QAED,IAAI,WAAW,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC;YAClC,WAAW,CAAC,IAAI,CAAC;gBACf,KAAK,EAAE;oBACL,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI;oBAC1B,SAAS,EAAE,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS;oBACpC,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS;iBACjC;gBACD,OAAO,EAAE,oCAAoC,WAAW,CAAC,IAAI,yCAAyC,GAAG,CAAC,IAAI,cAAc;aAC7H,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QAED,KAAK,CAAC,GAAG,EAAE,CAAC;IACd,CAAC;IAED,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;QAEhC,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,SAAS;QACX,CAAC;QAED,WAAW,CAAC,IAAI,CAAC;YACf,KAAK,EAAE;gBACL,IAAI,EAAE,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI;gBAClC,SAAS,EAAE,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS;gBAC5C,OAAO,EAAE,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS;aACzC;YACD,OAAO,EAAE,cAAc,WAAW,CAAC,IAAI,yCAAyC,WAAW,CAAC,IAAI,IAAI;SACrG,CAAC,CAAC;IACL,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { KpaBlockNode, KpaDocument } from './ast';
|
|
2
|
+
export declare function getBlockAtOffset(document: KpaDocument, offset: number, blockNames?: readonly string[]): KpaBlockNode | undefined;
|
|
3
|
+
export declare function isOffsetInsideBlockNames(document: KpaDocument, offset: number, blockNames: readonly string[]): boolean;
|