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.
Files changed (91) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/LICENSE +201 -0
  3. package/README.md +122 -0
  4. package/dist/data/htmlAttributes.d.ts +5 -0
  5. package/dist/data/htmlAttributes.js +393 -0
  6. package/dist/data/htmlAttributes.js.map +1 -0
  7. package/dist/data/htmlTags.d.ts +5 -0
  8. package/dist/data/htmlTags.js +562 -0
  9. package/dist/data/htmlTags.js.map +1 -0
  10. package/dist/data/kpaBlocks.d.ts +12 -0
  11. package/dist/data/kpaBlocks.js +55 -0
  12. package/dist/data/kpaBlocks.js.map +1 -0
  13. package/dist/diagnosticsEngine.d.ts +4 -0
  14. package/dist/diagnosticsEngine.js +11 -0
  15. package/dist/diagnosticsEngine.js.map +1 -0
  16. package/dist/index.d.ts +15 -0
  17. package/dist/index.js +47 -0
  18. package/dist/index.js.map +1 -0
  19. package/dist/language/ast.d.ts +31 -0
  20. package/dist/language/ast.js +3 -0
  21. package/dist/language/ast.js.map +1 -0
  22. package/dist/language/componentContract.d.ts +22 -0
  23. package/dist/language/componentContract.js +273 -0
  24. package/dist/language/componentContract.js.map +1 -0
  25. package/dist/language/core.d.ts +14 -0
  26. package/dist/language/core.js +46 -0
  27. package/dist/language/core.js.map +1 -0
  28. package/dist/language/diagnosticCodes.d.ts +21 -0
  29. package/dist/language/diagnosticCodes.js +14 -0
  30. package/dist/language/diagnosticCodes.js.map +1 -0
  31. package/dist/language/diagnosticsRules.d.ts +12 -0
  32. package/dist/language/diagnosticsRules.js +58 -0
  33. package/dist/language/diagnosticsRules.js.map +1 -0
  34. package/dist/language/documentModel.d.ts +3 -0
  35. package/dist/language/documentModel.js +29 -0
  36. package/dist/language/documentModel.js.map +1 -0
  37. package/dist/language/localSymbolReferences.d.ts +8 -0
  38. package/dist/language/localSymbolReferences.js +199 -0
  39. package/dist/language/localSymbolReferences.js.map +1 -0
  40. package/dist/language/parser.d.ts +2 -0
  41. package/dist/language/parser.js +94 -0
  42. package/dist/language/parser.js.map +1 -0
  43. package/dist/language/projectConfig.d.ts +14 -0
  44. package/dist/language/projectConfig.js +154 -0
  45. package/dist/language/projectConfig.js.map +1 -0
  46. package/dist/language/sourcePositions.d.ts +4 -0
  47. package/dist/language/sourcePositions.js +50 -0
  48. package/dist/language/sourcePositions.js.map +1 -0
  49. package/dist/language/symbols.d.ts +25 -0
  50. package/dist/language/symbols.js +191 -0
  51. package/dist/language/symbols.js.map +1 -0
  52. package/dist/language/templateComponents.d.ts +83 -0
  53. package/dist/language/templateComponents.js +1248 -0
  54. package/dist/language/templateComponents.js.map +1 -0
  55. package/dist/language/templateDiagnosticsRules.d.ts +3 -0
  56. package/dist/language/templateDiagnosticsRules.js +58 -0
  57. package/dist/language/templateDiagnosticsRules.js.map +1 -0
  58. package/dist/language/templateExpressions.d.ts +23 -0
  59. package/dist/language/templateExpressions.js +361 -0
  60. package/dist/language/templateExpressions.js.map +1 -0
  61. package/dist/language/templateLoopScopes.d.ts +3 -0
  62. package/dist/language/templateLoopScopes.js +347 -0
  63. package/dist/language/templateLoopScopes.js.map +1 -0
  64. package/dist/language/templateSemantics.d.ts +38 -0
  65. package/dist/language/templateSemantics.js +373 -0
  66. package/dist/language/templateSemantics.js.map +1 -0
  67. package/dist/language/workspaceIndex.d.ts +37 -0
  68. package/dist/language/workspaceIndex.js +195 -0
  69. package/dist/language/workspaceIndex.js.map +1 -0
  70. package/dist/language/workspaceRegistrations.d.ts +10 -0
  71. package/dist/language/workspaceRegistrations.js +190 -0
  72. package/dist/language/workspaceRegistrations.js.map +1 -0
  73. package/dist/language/workspaceSymbols.d.ts +11 -0
  74. package/dist/language/workspaceSymbols.js +35 -0
  75. package/dist/language/workspaceSymbols.js.map +1 -0
  76. package/dist/service.d.ts +79 -0
  77. package/dist/service.js +919 -0
  78. package/dist/service.js.map +1 -0
  79. package/dist/utils/blockUtils.d.ts +1 -0
  80. package/dist/utils/blockUtils.js +9 -0
  81. package/dist/utils/blockUtils.js.map +1 -0
  82. package/dist/utils/htmlUtils.d.ts +2 -0
  83. package/dist/utils/htmlUtils.js +65 -0
  84. package/dist/utils/htmlUtils.js.map +1 -0
  85. package/dist/utils/templateContext.d.ts +14 -0
  86. package/dist/utils/templateContext.js +41 -0
  87. package/dist/utils/templateContext.js.map +1 -0
  88. package/dist/workspaceGraph.d.ts +28 -0
  89. package/dist/workspaceGraph.js +221 -0
  90. package/dist/workspaceGraph.js.map +1 -0
  91. package/package.json +44 -0
@@ -0,0 +1,347 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.collectTemplateLoopScopeNamesAtOffset = collectTemplateLoopScopeNamesAtOffset;
4
+ exports.collectTemplateLoopScopeDeclarationsAtOffset = collectTemplateLoopScopeDeclarationsAtOffset;
5
+ const kpaBlocks_1 = require("../data/kpaBlocks");
6
+ const identifierPattern = /^[A-Za-z_$][\w$]*$/;
7
+ const implicitLoopBindingNames = [
8
+ 'index',
9
+ 'key',
10
+ 'isFirst',
11
+ 'isLast',
12
+ 'isEven',
13
+ 'isOdd',
14
+ ];
15
+ function collectTemplateLoopScopeNamesAtOffset(document, offset) {
16
+ const names = [];
17
+ const seenNames = new Set();
18
+ for (const scope of collectTemplateLoopScopeEntries(document).filter((entry) => offset >= entry.startOffset && offset <= entry.endOffset)) {
19
+ for (const name of scope.names) {
20
+ if (seenNames.has(name)) {
21
+ continue;
22
+ }
23
+ seenNames.add(name);
24
+ names.push(name);
25
+ }
26
+ }
27
+ return names;
28
+ }
29
+ function collectTemplateLoopScopeDeclarationsAtOffset(document, offset) {
30
+ const declarations = [];
31
+ const seenDeclarations = new Set();
32
+ for (const scope of collectTemplateLoopScopeEntries(document).filter((entry) => offset >= entry.startOffset && offset <= entry.endOffset)) {
33
+ for (const declaration of scope.declarations) {
34
+ if (seenDeclarations.has(declaration)) {
35
+ continue;
36
+ }
37
+ seenDeclarations.add(declaration);
38
+ declarations.push(declaration);
39
+ }
40
+ }
41
+ return declarations;
42
+ }
43
+ function collectTemplateLoopScopeEntries(document) {
44
+ return document.blocks.flatMap((block) => {
45
+ if (block.name !== kpaBlocks_1.canonicalTemplateBlock) {
46
+ return [];
47
+ }
48
+ const matches = collectTemplateTagMatchesFromBlock(document, block);
49
+ const loopScopes = [];
50
+ const openTagStack = [];
51
+ for (const match of matches) {
52
+ if (match.isClosing) {
53
+ const openTagIndex = findMatchingOpenTagIndex(openTagStack, match.name);
54
+ if (openTagIndex === -1) {
55
+ continue;
56
+ }
57
+ const openTag = openTagStack.splice(openTagIndex, 1)[0];
58
+ if (!openTag.loopNames || openTag.loopNames.length === 0) {
59
+ continue;
60
+ }
61
+ loopScopes.push(createLoopScopeEntry(document, block, openTag.loopNames, openTag.match.tagStart, match.tagEnd));
62
+ continue;
63
+ }
64
+ const loopNames = parseLoopBindingNames(match.attributes);
65
+ if (match.isSelfClosing) {
66
+ if (loopNames.length > 0) {
67
+ loopScopes.push(createLoopScopeEntry(document, block, loopNames, match.tagStart, match.tagEnd));
68
+ }
69
+ continue;
70
+ }
71
+ openTagStack.push({
72
+ loopNames,
73
+ match,
74
+ });
75
+ }
76
+ for (const openTag of openTagStack) {
77
+ if (!openTag.loopNames || openTag.loopNames.length === 0) {
78
+ continue;
79
+ }
80
+ loopScopes.push(createLoopScopeEntry(document, block, openTag.loopNames, openTag.match.tagStart, block.contentRange.end.offset - block.contentRange.start.offset));
81
+ }
82
+ return loopScopes;
83
+ });
84
+ }
85
+ function createLoopScopeEntry(document, block, names, startOffsetInBlock, endOffsetInBlock) {
86
+ const absoluteStartOffset = block.contentRange.start.offset + startOffsetInBlock;
87
+ const absoluteEndOffset = block.contentRange.start.offset + endOffsetInBlock;
88
+ return {
89
+ declarations: names.map((name) => createLoopDeclaration(name)),
90
+ endOffset: absoluteEndOffset,
91
+ names,
92
+ startOffset: absoluteStartOffset,
93
+ };
94
+ }
95
+ function createLoopDeclaration(name) {
96
+ if (name === 'index') {
97
+ return 'const index = 0;';
98
+ }
99
+ if (name === 'isFirst' ||
100
+ name === 'isLast' ||
101
+ name === 'isEven' ||
102
+ name === 'isOdd') {
103
+ return `const ${name} = false;`;
104
+ }
105
+ return `const ${name} = undefined as any;`;
106
+ }
107
+ function parseLoopBindingNames(attributes) {
108
+ const loopAttribute = attributes.find((attribute) => attribute.name === 'loop');
109
+ const loopExpression = loopAttribute?.valueText?.trim();
110
+ if (!loopExpression) {
111
+ return [];
112
+ }
113
+ const loopMatch = /^(.+?)\s+in\s+(.+)$/.exec(loopExpression);
114
+ if (!loopMatch) {
115
+ return [];
116
+ }
117
+ const bindingNames = new Set(implicitLoopBindingNames);
118
+ const bindingPart = loopMatch[1]?.trim() ?? '';
119
+ if (bindingPart.startsWith('[') && bindingPart.endsWith(']')) {
120
+ const parts = bindingPart
121
+ .slice(1, -1)
122
+ .split(',')
123
+ .map((part) => part.trim())
124
+ .filter((part) => part.length > 0);
125
+ if (parts.length === 2 && parts.every((part) => identifierPattern.test(part))) {
126
+ bindingNames.add(parts[0]);
127
+ bindingNames.add(parts[1]);
128
+ }
129
+ return [...bindingNames];
130
+ }
131
+ if (identifierPattern.test(bindingPart)) {
132
+ bindingNames.add(bindingPart);
133
+ }
134
+ return [...bindingNames];
135
+ }
136
+ function collectTemplateTagMatchesFromBlock(document, block) {
137
+ const content = document.text.slice(block.contentRange.start.offset, block.contentRange.end.offset);
138
+ const tags = [];
139
+ for (let index = 0; index < content.length; index++) {
140
+ if (startsMustacheExpression(content, index)) {
141
+ const expressionEnd = findMustacheExpressionEnd(content, index + 2);
142
+ if (expressionEnd === undefined) {
143
+ break;
144
+ }
145
+ index = Math.max(index, expressionEnd + 1);
146
+ continue;
147
+ }
148
+ if (content[index] !== '<') {
149
+ continue;
150
+ }
151
+ const tagMatch = readTagAt(content, index);
152
+ if (!tagMatch) {
153
+ continue;
154
+ }
155
+ tags.push(tagMatch);
156
+ index = Math.max(index, tagMatch.tagEnd - 1);
157
+ }
158
+ return tags;
159
+ }
160
+ function readTagAt(content, index) {
161
+ let cursor = index + 1;
162
+ let isClosing = false;
163
+ if (content[cursor] === '/') {
164
+ isClosing = true;
165
+ cursor++;
166
+ }
167
+ while (isWhitespace(content[cursor])) {
168
+ cursor++;
169
+ }
170
+ const nameStart = cursor;
171
+ if (!isTagNameStart(content[cursor])) {
172
+ return undefined;
173
+ }
174
+ cursor++;
175
+ while (isTagNameCharacter(content[cursor])) {
176
+ cursor++;
177
+ }
178
+ const nameEnd = cursor;
179
+ const attributes = [];
180
+ while (cursor < content.length) {
181
+ while (isWhitespace(content[cursor])) {
182
+ cursor++;
183
+ }
184
+ if (content[cursor] === '>') {
185
+ return {
186
+ attributes,
187
+ isClosing,
188
+ isSelfClosing: false,
189
+ name: content.slice(nameStart, nameEnd),
190
+ tagEnd: cursor + 1,
191
+ tagStart: index,
192
+ };
193
+ }
194
+ if (content[cursor] === '/' && content[cursor + 1] === '>') {
195
+ return {
196
+ attributes,
197
+ isClosing,
198
+ isSelfClosing: true,
199
+ name: content.slice(nameStart, nameEnd),
200
+ tagEnd: cursor + 2,
201
+ tagStart: index,
202
+ };
203
+ }
204
+ const parsedAttribute = readAttributeAt(content, cursor);
205
+ if (!parsedAttribute) {
206
+ cursor++;
207
+ continue;
208
+ }
209
+ attributes.push(parsedAttribute.attribute);
210
+ cursor = parsedAttribute.nextIndex;
211
+ }
212
+ return {
213
+ attributes,
214
+ isClosing,
215
+ isSelfClosing: false,
216
+ name: content.slice(nameStart, nameEnd),
217
+ tagEnd: cursor,
218
+ tagStart: index,
219
+ };
220
+ }
221
+ function readAttributeAt(content, index) {
222
+ if (!isAttributeNameStart(content[index])) {
223
+ return undefined;
224
+ }
225
+ let cursor = index + 1;
226
+ while (isAttributeNameCharacter(content[cursor])) {
227
+ cursor++;
228
+ }
229
+ const name = content.slice(index, cursor);
230
+ while (isWhitespace(content[cursor])) {
231
+ cursor++;
232
+ }
233
+ if (content[cursor] !== '=') {
234
+ return {
235
+ attribute: { name },
236
+ nextIndex: cursor,
237
+ };
238
+ }
239
+ cursor++;
240
+ while (isWhitespace(content[cursor])) {
241
+ cursor++;
242
+ }
243
+ const quote = content[cursor];
244
+ if (quote === '"' || quote === "'") {
245
+ const valueStart = cursor + 1;
246
+ let valueEnd = valueStart;
247
+ while (valueEnd < content.length && content[valueEnd] !== quote) {
248
+ valueEnd++;
249
+ }
250
+ return {
251
+ attribute: {
252
+ name,
253
+ valueText: content.slice(valueStart, valueEnd),
254
+ },
255
+ nextIndex: valueEnd < content.length ? valueEnd + 1 : valueEnd,
256
+ };
257
+ }
258
+ const valueStart = cursor;
259
+ while (cursor < content.length &&
260
+ !isWhitespace(content[cursor]) &&
261
+ content[cursor] !== '>' &&
262
+ !(content[cursor] === '/' && content[cursor + 1] === '>')) {
263
+ cursor++;
264
+ }
265
+ return {
266
+ attribute: {
267
+ name,
268
+ valueText: content.slice(valueStart, cursor),
269
+ },
270
+ nextIndex: cursor,
271
+ };
272
+ }
273
+ function findMatchingOpenTagIndex(openTagStack, closingTagName) {
274
+ for (let index = openTagStack.length - 1; index >= 0; index--) {
275
+ if (openTagStack[index]?.match.name === closingTagName) {
276
+ return index;
277
+ }
278
+ }
279
+ return -1;
280
+ }
281
+ function startsMustacheExpression(content, index) {
282
+ return content[index] === '{' && content[index + 1] === '{';
283
+ }
284
+ function findMustacheExpressionEnd(content, startIndex) {
285
+ let cursor = startIndex;
286
+ let nestedBraceDepth = 0;
287
+ let quote;
288
+ let escaped = false;
289
+ while (cursor < content.length) {
290
+ const character = content[cursor];
291
+ if (quote) {
292
+ if (escaped) {
293
+ escaped = false;
294
+ cursor++;
295
+ continue;
296
+ }
297
+ if (character === '\\') {
298
+ escaped = true;
299
+ cursor++;
300
+ continue;
301
+ }
302
+ if (character === quote) {
303
+ quote = undefined;
304
+ }
305
+ cursor++;
306
+ continue;
307
+ }
308
+ if (character === "'" || character === '"' || character === '`') {
309
+ quote = character;
310
+ cursor++;
311
+ continue;
312
+ }
313
+ if (character === '{') {
314
+ nestedBraceDepth++;
315
+ cursor++;
316
+ continue;
317
+ }
318
+ if (character === '}') {
319
+ if (nestedBraceDepth > 0) {
320
+ nestedBraceDepth--;
321
+ cursor++;
322
+ continue;
323
+ }
324
+ if (content[cursor + 1] === '}') {
325
+ return cursor;
326
+ }
327
+ }
328
+ cursor++;
329
+ }
330
+ return undefined;
331
+ }
332
+ function isTagNameStart(character) {
333
+ return character !== undefined && /[A-Za-z]/.test(character);
334
+ }
335
+ function isTagNameCharacter(character) {
336
+ return character !== undefined && /[A-Za-z0-9:_-]/.test(character);
337
+ }
338
+ function isAttributeNameStart(character) {
339
+ return character !== undefined && /[A-Za-z_:@]/.test(character);
340
+ }
341
+ function isAttributeNameCharacter(character) {
342
+ return character !== undefined && /[A-Za-z0-9_:@.-]/.test(character);
343
+ }
344
+ function isWhitespace(character) {
345
+ return character === ' ' || character === '\t' || character === '\n' || character === '\r';
346
+ }
347
+ //# sourceMappingURL=templateLoopScopes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templateLoopScopes.js","sourceRoot":"","sources":["../../src/language/templateLoopScopes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ import ts from 'typescript';
2
+ import type { KpaDocument, KpaLocatedRange } from './ast';
3
+ export interface TemplateSemanticCompletion {
4
+ name: string;
5
+ kind: ts.ScriptElementKind;
6
+ detail?: string;
7
+ documentation?: string;
8
+ replacementRange?: KpaLocatedRange;
9
+ }
10
+ export interface TemplateSemanticHover {
11
+ range: KpaLocatedRange;
12
+ displayText: string;
13
+ documentation?: string;
14
+ }
15
+ export interface TemplateSemanticDefinition {
16
+ fileName: string;
17
+ range: KpaLocatedRange;
18
+ }
19
+ export interface TemplateSemanticReference {
20
+ fileName: string;
21
+ range: KpaLocatedRange;
22
+ isDefinition: boolean;
23
+ }
24
+ export interface TemplateSemanticRenameRange {
25
+ fileName: string;
26
+ range: KpaLocatedRange;
27
+ }
28
+ export interface TemplateSemanticRenameInfo {
29
+ range: KpaLocatedRange;
30
+ placeholder: string;
31
+ }
32
+ export declare function createTemplateSemanticVirtualFileName(sourcePath: string | undefined): string;
33
+ export declare function getTemplateSemanticCompletions(document: KpaDocument, sourcePath: string | undefined, offset: number): readonly TemplateSemanticCompletion[] | undefined;
34
+ export declare function getTemplateSemanticHover(document: KpaDocument, sourcePath: string | undefined, offset: number): TemplateSemanticHover | undefined;
35
+ export declare function getTemplateSemanticDefinitions(document: KpaDocument, sourcePath: string | undefined, offset: number): readonly TemplateSemanticDefinition[] | undefined;
36
+ export declare function getTemplateSemanticReferences(document: KpaDocument, sourcePath: string | undefined, offset: number): readonly TemplateSemanticReference[] | undefined;
37
+ export declare function getTemplateSemanticRenameInfo(document: KpaDocument, sourcePath: string | undefined, offset: number): TemplateSemanticRenameInfo | undefined;
38
+ export declare function getTemplateSemanticRenameRanges(document: KpaDocument, sourcePath: string | undefined, offset: number): readonly TemplateSemanticRenameRange[] | undefined;