dot-language-support 1.5.4

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 (57) hide show
  1. package/.github/workflows/CD.yml +36 -0
  2. package/.github/workflows/CI.yml +33 -0
  3. package/LICENSE +21 -0
  4. package/README.md +17 -0
  5. package/lib/binder.d.ts +2 -0
  6. package/lib/binder.js +300 -0
  7. package/lib/checker.d.ts +14 -0
  8. package/lib/checker.js +185 -0
  9. package/lib/core.d.ts +1 -0
  10. package/lib/core.js +14 -0
  11. package/lib/error.d.ts +3 -0
  12. package/lib/error.js +14 -0
  13. package/lib/index.d.ts +6 -0
  14. package/lib/index.js +19 -0
  15. package/lib/parser.d.ts +84 -0
  16. package/lib/parser.js +698 -0
  17. package/lib/scanner.d.ts +52 -0
  18. package/lib/scanner.js +580 -0
  19. package/lib/service/codeAction.d.ts +12 -0
  20. package/lib/service/codeAction.js +214 -0
  21. package/lib/service/colorProvider.d.ts +6 -0
  22. package/lib/service/colorProvider.js +74 -0
  23. package/lib/service/command/ChangeAllOtherEdgeOpsAndFixGraphCommand.d.ts +10 -0
  24. package/lib/service/command/ChangeAllOtherEdgeOpsAndFixGraphCommand.js +43 -0
  25. package/lib/service/command/ChangeEdgeOpCommand.d.ts +10 -0
  26. package/lib/service/command/ChangeEdgeOpCommand.js +37 -0
  27. package/lib/service/command/ConsolidateDescendantsCommand.d.ts +10 -0
  28. package/lib/service/command/ConsolidateDescendantsCommand.js +106 -0
  29. package/lib/service/command/RemoveSemicolons.d.ts +10 -0
  30. package/lib/service/command/RemoveSemicolons.js +42 -0
  31. package/lib/service/command/common.d.ts +31 -0
  32. package/lib/service/command/common.js +31 -0
  33. package/lib/service/completion.d.ts +4 -0
  34. package/lib/service/completion.js +141 -0
  35. package/lib/service/hover.d.ts +4 -0
  36. package/lib/service/hover.js +123 -0
  37. package/lib/service/interop.d.ts +15 -0
  38. package/lib/service/interop.js +56 -0
  39. package/lib/service/languageFacts.d.ts +659 -0
  40. package/lib/service/languageFacts.js +976 -0
  41. package/lib/service/polyfill.d.ts +16 -0
  42. package/lib/service/polyfill.js +3 -0
  43. package/lib/service/reference.d.ts +5 -0
  44. package/lib/service/reference.js +73 -0
  45. package/lib/service/rename.d.ts +4 -0
  46. package/lib/service/rename.js +49 -0
  47. package/lib/service/service.d.ts +27 -0
  48. package/lib/service/service.js +39 -0
  49. package/lib/service/util.d.ts +11 -0
  50. package/lib/service/util.js +52 -0
  51. package/lib/service/validation.d.ts +4 -0
  52. package/lib/service/validation.js +24 -0
  53. package/lib/types.d.ts +396 -0
  54. package/lib/types.js +74 -0
  55. package/lib/visitor.d.ts +2 -0
  56. package/lib/visitor.js +78 -0
  57. package/package.json +42 -0
package/lib/types.d.ts ADDED
@@ -0,0 +1,396 @@
1
+ export declare const enum ErrorSource {
2
+ Scan = 1,
3
+ Parse = 2,
4
+ Check = 4
5
+ }
6
+ export declare type ErrorCode = ParseErrorCode | ScanErrorCode | CheckErrorCode;
7
+ export interface ParseErrorCode {
8
+ source: ErrorSource.Parse;
9
+ sub: ParseError;
10
+ }
11
+ export interface ScanErrorCode {
12
+ source: ErrorSource.Scan;
13
+ sub: ScanError;
14
+ }
15
+ export interface CheckErrorCode {
16
+ source: ErrorSource.Check;
17
+ sub: CheckError;
18
+ }
19
+ export declare const enum ParseError {
20
+ ExpectationFailed = 0,
21
+ TrailingData = 1,
22
+ FailedListParsing = 2
23
+ }
24
+ export declare const enum ScanError {
25
+ ExpectationFailed = 0,
26
+ Unterminated = 1
27
+ }
28
+ export declare const enum CheckError {
29
+ InvalidEdgeOperation = 0
30
+ }
31
+ export interface DiagnosticMessage {
32
+ message: string;
33
+ code: ErrorCode;
34
+ category: DiagnosticCategory;
35
+ start: number;
36
+ end: number;
37
+ }
38
+ export declare enum DiagnosticCategory {
39
+ Error = 1,
40
+ Warning = 2,
41
+ Message = 3,
42
+ Suggestion = 4
43
+ }
44
+ export declare type ID = string;
45
+ export interface SourceFile {
46
+ content: string;
47
+ graph?: Graph;
48
+ identifiers: Set<ID>;
49
+ diagnostics: DiagnosticMessage[];
50
+ symbols?: SymbolTable;
51
+ colors?: ColorTable;
52
+ }
53
+ export interface HtmlIdentifier extends SyntaxNode {
54
+ kind: SyntaxKind.HtmlIdentifier;
55
+ htmlContent: string;
56
+ }
57
+ export interface TextIdentifier extends SyntaxNode {
58
+ kind: SyntaxKind.TextIdentifier;
59
+ text: string;
60
+ }
61
+ export interface QuotedTextIdentifier extends SyntaxNode {
62
+ kind: SyntaxKind.QuotedTextIdentifier;
63
+ values: SyntaxNodeArray<StringLiteral>;
64
+ concatenation?: string;
65
+ }
66
+ export interface StringLiteral extends SyntaxNode {
67
+ kind: SyntaxKind.StringLiteral;
68
+ text: string;
69
+ }
70
+ export interface NumericIdentifier extends SyntaxNode {
71
+ kind: SyntaxKind.NumericIdentifier;
72
+ text: string;
73
+ value: number;
74
+ }
75
+ export declare type Identifier = TextIdentifier | QuotedTextIdentifier | HtmlIdentifier | NumericIdentifier;
76
+ export interface Graph extends SyntaxNode {
77
+ kind: SyntaxKind.DirectedGraph | SyntaxKind.UndirectedGraph;
78
+ keyword: Token<SyntaxKind.GraphKeyword | SyntaxKind.DigraphKeyword>;
79
+ strict?: Token<SyntaxKind.StrictKeyword>;
80
+ id?: Identifier;
81
+ statements: SyntaxNodeArray<Statement>;
82
+ }
83
+ export interface StatementBase {
84
+ terminator?: StatementSeparator;
85
+ }
86
+ export declare type StatementSeparator = Token<SyntaxKind.SemicolonToken>;
87
+ export declare type Statement = NodeStatement | EdgeStatement | AttributeStatement | IdEqualsIdStatement | SubGraphStatement;
88
+ export interface NodeStatement extends SyntaxNode, StatementBase {
89
+ kind: SyntaxKind.NodeStatement;
90
+ id: NodeId;
91
+ attributes: SyntaxNodeArray<AttributeContainer>;
92
+ }
93
+ export interface NodeId extends SyntaxNode {
94
+ kind: SyntaxKind.NodeId;
95
+ id: Identifier;
96
+ port?: PortDeclaration;
97
+ }
98
+ export declare type EdgeSourceOrTarget = NodeId | SubGraph;
99
+ export interface EdgeStatement extends SyntaxNode, StatementBase {
100
+ kind: SyntaxKind.EdgeStatement;
101
+ source: EdgeSourceOrTarget;
102
+ rhs: SyntaxNodeArray<EdgeRhs>;
103
+ attributes: SyntaxNodeArray<AttributeContainer>;
104
+ }
105
+ export interface AttributeStatement extends SyntaxNode, StatementBase {
106
+ kind: SyntaxKind.AttributeStatement;
107
+ subject: Token<SyntaxKind.GraphKeyword> | Token<SyntaxKind.NodeKeyword> | Token<SyntaxKind.EdgeKeyword>;
108
+ attributes: SyntaxNodeArray<AttributeContainer>;
109
+ }
110
+ export interface IdEqualsIdStatement extends SyntaxNode, StatementBase {
111
+ kind: SyntaxKind.IdEqualsIdStatement;
112
+ leftId: Identifier;
113
+ rightId: Identifier;
114
+ }
115
+ export interface SubGraph extends SyntaxNode {
116
+ kind: SyntaxKind.SubGraph;
117
+ id?: Identifier;
118
+ statements: SyntaxNodeArray<Statement>;
119
+ }
120
+ export interface SubGraphStatement extends SyntaxNode, StatementBase {
121
+ kind: SyntaxKind.SubGraphStatement;
122
+ subgraph: SubGraph;
123
+ }
124
+ export interface EdgeRhs extends SyntaxNode {
125
+ kind: SyntaxKind.EdgeRhs;
126
+ operation: EdgeOp;
127
+ target: EdgeSourceOrTarget;
128
+ }
129
+ export interface AttributeContainer extends SyntaxNode {
130
+ kind: SyntaxKind.AttributeContainer;
131
+ openBracket: Token<SyntaxKind.OpenBracketToken>;
132
+ assignments: SyntaxNodeArray<Assignment>;
133
+ closeBracket: Token<SyntaxKind.CloseBracketToken>;
134
+ }
135
+ export interface Assignment extends SyntaxNode {
136
+ kind: SyntaxKind.Assignment;
137
+ leftId: Identifier;
138
+ rightId: Identifier;
139
+ terminator?: AssignmentSeparator;
140
+ }
141
+ export declare type AssignmentSeparator = Token<SyntaxKind.SemicolonToken> | Token<SyntaxKind.CommaToken>;
142
+ export declare type PortDeclaration = NormalPortDeclaration | CompassPortDeclaration;
143
+ export interface NormalPortDeclaration extends SyntaxNode {
144
+ kind: SyntaxKind.NormalPortDeclaration;
145
+ colon: Token<SyntaxKind.ColonToken>;
146
+ id: Identifier;
147
+ compassPt?: CompassPortDeclaration;
148
+ }
149
+ export interface CompassPortDeclaration extends SyntaxNode {
150
+ kind: SyntaxKind.CompassPortDeclaration;
151
+ colon: Token<SyntaxKind.ColonToken>;
152
+ compassPt: CompassPort;
153
+ }
154
+ export declare type CompassPort = Token<SyntaxKind.CompassNorthToken> | Token<SyntaxKind.CompassNorthEastToken> | Token<SyntaxKind.CompassEastToken> | Token<SyntaxKind.CompassSouthEastToken> | Token<SyntaxKind.CompassSouthToken> | Token<SyntaxKind.CompassSouthWestToken> | Token<SyntaxKind.CompassWestToken> | Token<SyntaxKind.CompassNorthWestToken> | Token<SyntaxKind.CompassCenterToken> | Token<SyntaxKind.UnderscoreToken>;
155
+ export declare type EdgeOp = Token<SyntaxKind.DirectedEdgeOp> | Token<SyntaxKind.UndirectedEdgeOp>;
156
+ export interface TextRange {
157
+ pos: number;
158
+ end: number;
159
+ }
160
+ export declare enum SyntaxKind {
161
+ Unknown = 0,
162
+ EndOfFileToken = 1,
163
+ NewLineTrivia = 2,
164
+ WhitespaceTrivia = 3,
165
+ HashCommentTrivia = 4,
166
+ SingleLineCommentTrivia = 5,
167
+ MultiLineCommentTrivia = 6,
168
+ CommaToken = 7,
169
+ SemicolonToken = 8,
170
+ PlusToken = 9,
171
+ OpenBraceToken = 10,
172
+ CloseBraceToken = 11,
173
+ OpenBracketToken = 12,
174
+ CloseBracketToken = 13,
175
+ ColonToken = 14,
176
+ EqualsToken = 15,
177
+ LessThan = 16,
178
+ GreaterThan = 17,
179
+ CompassNorthToken = 18,
180
+ CompassNorthEastToken = 19,
181
+ CompassEastToken = 20,
182
+ CompassSouthEastToken = 21,
183
+ CompassSouthToken = 22,
184
+ CompassSouthWestToken = 23,
185
+ CompassWestToken = 24,
186
+ CompassNorthWestToken = 25,
187
+ CompassCenterToken = 26,
188
+ UnderscoreToken = 27,
189
+ StringLiteral = 28,
190
+ HtmlIdentifier = 29,
191
+ TextIdentifier = 30,
192
+ QuotedTextIdentifier = 31,
193
+ NumericIdentifier = 32,
194
+ GraphKeyword = 33,
195
+ DigraphKeyword = 34,
196
+ NodeKeyword = 35,
197
+ EdgeKeyword = 36,
198
+ SubgraphKeyword = 37,
199
+ StrictKeyword = 38,
200
+ DirectedEdgeOp = 39,
201
+ UndirectedEdgeOp = 40,
202
+ DirectedGraph = 41,
203
+ UndirectedGraph = 42,
204
+ NodeStatement = 43,
205
+ EdgeStatement = 44,
206
+ AttributeStatement = 45,
207
+ IdEqualsIdStatement = 46,
208
+ SubGraph = 47,
209
+ SubGraphStatement = 48,
210
+ EdgeRhs = 49,
211
+ AttributeContainer = 50,
212
+ Assignment = 51,
213
+ NormalPortDeclaration = 52,
214
+ CompassPortDeclaration = 53,
215
+ NodeId = 54,
216
+ Count = 55,
217
+ FirstNode = 41,
218
+ CompassBegin = 18,
219
+ CompassEnd = 27,
220
+ LastKeyword = 38
221
+ }
222
+ export interface SyntaxNode extends TextRange {
223
+ kind: SyntaxKind;
224
+ flags: SyntaxNodeFlags;
225
+ graphContext?: GraphContext;
226
+ parent?: SyntaxNode;
227
+ symbol?: TypeSymbol;
228
+ }
229
+ export interface Token<TKind extends SyntaxKind> extends SyntaxNode {
230
+ kind: TKind;
231
+ }
232
+ export interface SyntaxNodeArray<T extends SyntaxNode> extends ReadonlyArray<T>, TextRange {
233
+ hasTrailingComma?: boolean;
234
+ }
235
+ export declare type MutableSyntaxNodeArray<T extends SyntaxNode> = SyntaxNodeArray<T> & T[];
236
+ export declare const enum SyntaxNodeFlags {
237
+ None = 0,
238
+ ContainsErrors = 2,
239
+ Synthesized = 4
240
+ }
241
+ export declare const enum GraphContext {
242
+ None = 0,
243
+ Strict = 2,
244
+ Directed = 4,
245
+ Undirected = 8
246
+ }
247
+ export declare const enum TokenFlags {
248
+ None = 0,
249
+ Unterminated = 2,
250
+ PrecedingLineBreak = 4
251
+ }
252
+ export declare const enum CharacterCodes {
253
+ nullCharacter = 0,
254
+ maxAsciiCharacter = 127,
255
+ lineFeed = 10,
256
+ carriageReturn = 13,
257
+ lineSeparator = 8232,
258
+ paragraphSeparator = 8233,
259
+ nextLine = 133,
260
+ space = 32,
261
+ nonBreakingSpace = 160,
262
+ enQuad = 8192,
263
+ emQuad = 8193,
264
+ enSpace = 8194,
265
+ emSpace = 8195,
266
+ threePerEmSpace = 8196,
267
+ fourPerEmSpace = 8197,
268
+ sixPerEmSpace = 8198,
269
+ figureSpace = 8199,
270
+ punctuationSpace = 8200,
271
+ thinSpace = 8201,
272
+ hairSpace = 8202,
273
+ zeroWidthSpace = 8203,
274
+ narrowNoBreakSpace = 8239,
275
+ ideographicSpace = 12288,
276
+ mathematicalSpace = 8287,
277
+ ogham = 5760,
278
+ _ = 95,
279
+ $ = 36,
280
+ _0 = 48,
281
+ _1 = 49,
282
+ _2 = 50,
283
+ _3 = 51,
284
+ _4 = 52,
285
+ _5 = 53,
286
+ _6 = 54,
287
+ _7 = 55,
288
+ _8 = 56,
289
+ _9 = 57,
290
+ a = 97,
291
+ b = 98,
292
+ c = 99,
293
+ d = 100,
294
+ e = 101,
295
+ f = 102,
296
+ g = 103,
297
+ h = 104,
298
+ i = 105,
299
+ j = 106,
300
+ k = 107,
301
+ l = 108,
302
+ m = 109,
303
+ n = 110,
304
+ o = 111,
305
+ p = 112,
306
+ q = 113,
307
+ r = 114,
308
+ s = 115,
309
+ t = 116,
310
+ u = 117,
311
+ v = 118,
312
+ w = 119,
313
+ x = 120,
314
+ y = 121,
315
+ z = 122,
316
+ A = 65,
317
+ B = 66,
318
+ C = 67,
319
+ D = 68,
320
+ E = 69,
321
+ F = 70,
322
+ G = 71,
323
+ H = 72,
324
+ I = 73,
325
+ J = 74,
326
+ K = 75,
327
+ L = 76,
328
+ M = 77,
329
+ N = 78,
330
+ O = 79,
331
+ P = 80,
332
+ Q = 81,
333
+ R = 82,
334
+ S = 83,
335
+ T = 84,
336
+ U = 85,
337
+ V = 86,
338
+ W = 87,
339
+ X = 88,
340
+ Y = 89,
341
+ Z = 90,
342
+ ampersand = 38,
343
+ asterisk = 42,
344
+ at = 64,
345
+ backslash = 92,
346
+ backtick = 96,
347
+ bar = 124,
348
+ caret = 94,
349
+ closeBrace = 125,
350
+ closeBracket = 93,
351
+ closeParen = 41,
352
+ colon = 58,
353
+ comma = 44,
354
+ dot = 46,
355
+ doubleQuote = 34,
356
+ equals = 61,
357
+ exclamation = 33,
358
+ greaterThan = 62,
359
+ hash = 35,
360
+ lessThan = 60,
361
+ minus = 45,
362
+ openBrace = 123,
363
+ openBracket = 91,
364
+ openParen = 40,
365
+ percent = 37,
366
+ plus = 43,
367
+ question = 63,
368
+ semicolon = 59,
369
+ singleQuote = 39,
370
+ slash = 47,
371
+ tilde = 126,
372
+ backspace = 8,
373
+ formFeed = 12,
374
+ byteOrderMark = 65279,
375
+ tab = 9,
376
+ verticalTab = 11
377
+ }
378
+ export declare type SymbolTable = Map<string, TypeSymbol>;
379
+ export declare type ColorTable = Map<string, ColorInfo>;
380
+ export interface TypeSymbol {
381
+ name: string;
382
+ firstMention: SyntaxNode;
383
+ references?: SyntaxNode[];
384
+ members?: SymbolTable;
385
+ }
386
+ export interface ColorInfo {
387
+ node: SyntaxNode;
388
+ }
389
+ export interface Color {
390
+ readonly red: number;
391
+ readonly green: number;
392
+ readonly blue: number;
393
+ readonly alpha: number;
394
+ }
395
+ export declare type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>;
396
+ export declare type StatementOf<T extends Statement["kind"]> = T extends SyntaxKind.SubGraphStatement ? SubGraphStatement : T extends SyntaxKind.AttributeStatement ? AttributeStatement : T extends SyntaxKind.EdgeStatement ? EdgeStatement : T extends SyntaxKind.IdEqualsIdStatement ? IdEqualsIdStatement : T extends SyntaxKind.NodeStatement ? NodeStatement : never;
package/lib/types.js ADDED
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SyntaxKind = exports.DiagnosticCategory = void 0;
4
+ var DiagnosticCategory;
5
+ (function (DiagnosticCategory) {
6
+ DiagnosticCategory[DiagnosticCategory["Error"] = 1] = "Error";
7
+ DiagnosticCategory[DiagnosticCategory["Warning"] = 2] = "Warning";
8
+ DiagnosticCategory[DiagnosticCategory["Message"] = 3] = "Message";
9
+ DiagnosticCategory[DiagnosticCategory["Suggestion"] = 4] = "Suggestion";
10
+ })(DiagnosticCategory = exports.DiagnosticCategory || (exports.DiagnosticCategory = {}));
11
+ var SyntaxKind;
12
+ (function (SyntaxKind) {
13
+ SyntaxKind[SyntaxKind["Unknown"] = 0] = "Unknown";
14
+ SyntaxKind[SyntaxKind["EndOfFileToken"] = 1] = "EndOfFileToken";
15
+ SyntaxKind[SyntaxKind["NewLineTrivia"] = 2] = "NewLineTrivia";
16
+ SyntaxKind[SyntaxKind["WhitespaceTrivia"] = 3] = "WhitespaceTrivia";
17
+ SyntaxKind[SyntaxKind["HashCommentTrivia"] = 4] = "HashCommentTrivia";
18
+ SyntaxKind[SyntaxKind["SingleLineCommentTrivia"] = 5] = "SingleLineCommentTrivia";
19
+ SyntaxKind[SyntaxKind["MultiLineCommentTrivia"] = 6] = "MultiLineCommentTrivia";
20
+ SyntaxKind[SyntaxKind["CommaToken"] = 7] = "CommaToken";
21
+ SyntaxKind[SyntaxKind["SemicolonToken"] = 8] = "SemicolonToken";
22
+ SyntaxKind[SyntaxKind["PlusToken"] = 9] = "PlusToken";
23
+ SyntaxKind[SyntaxKind["OpenBraceToken"] = 10] = "OpenBraceToken";
24
+ SyntaxKind[SyntaxKind["CloseBraceToken"] = 11] = "CloseBraceToken";
25
+ SyntaxKind[SyntaxKind["OpenBracketToken"] = 12] = "OpenBracketToken";
26
+ SyntaxKind[SyntaxKind["CloseBracketToken"] = 13] = "CloseBracketToken";
27
+ SyntaxKind[SyntaxKind["ColonToken"] = 14] = "ColonToken";
28
+ SyntaxKind[SyntaxKind["EqualsToken"] = 15] = "EqualsToken";
29
+ SyntaxKind[SyntaxKind["LessThan"] = 16] = "LessThan";
30
+ SyntaxKind[SyntaxKind["GreaterThan"] = 17] = "GreaterThan";
31
+ SyntaxKind[SyntaxKind["CompassNorthToken"] = 18] = "CompassNorthToken";
32
+ SyntaxKind[SyntaxKind["CompassNorthEastToken"] = 19] = "CompassNorthEastToken";
33
+ SyntaxKind[SyntaxKind["CompassEastToken"] = 20] = "CompassEastToken";
34
+ SyntaxKind[SyntaxKind["CompassSouthEastToken"] = 21] = "CompassSouthEastToken";
35
+ SyntaxKind[SyntaxKind["CompassSouthToken"] = 22] = "CompassSouthToken";
36
+ SyntaxKind[SyntaxKind["CompassSouthWestToken"] = 23] = "CompassSouthWestToken";
37
+ SyntaxKind[SyntaxKind["CompassWestToken"] = 24] = "CompassWestToken";
38
+ SyntaxKind[SyntaxKind["CompassNorthWestToken"] = 25] = "CompassNorthWestToken";
39
+ SyntaxKind[SyntaxKind["CompassCenterToken"] = 26] = "CompassCenterToken";
40
+ SyntaxKind[SyntaxKind["UnderscoreToken"] = 27] = "UnderscoreToken";
41
+ SyntaxKind[SyntaxKind["StringLiteral"] = 28] = "StringLiteral";
42
+ SyntaxKind[SyntaxKind["HtmlIdentifier"] = 29] = "HtmlIdentifier";
43
+ SyntaxKind[SyntaxKind["TextIdentifier"] = 30] = "TextIdentifier";
44
+ SyntaxKind[SyntaxKind["QuotedTextIdentifier"] = 31] = "QuotedTextIdentifier";
45
+ SyntaxKind[SyntaxKind["NumericIdentifier"] = 32] = "NumericIdentifier";
46
+ SyntaxKind[SyntaxKind["GraphKeyword"] = 33] = "GraphKeyword";
47
+ SyntaxKind[SyntaxKind["DigraphKeyword"] = 34] = "DigraphKeyword";
48
+ SyntaxKind[SyntaxKind["NodeKeyword"] = 35] = "NodeKeyword";
49
+ SyntaxKind[SyntaxKind["EdgeKeyword"] = 36] = "EdgeKeyword";
50
+ SyntaxKind[SyntaxKind["SubgraphKeyword"] = 37] = "SubgraphKeyword";
51
+ SyntaxKind[SyntaxKind["StrictKeyword"] = 38] = "StrictKeyword";
52
+ SyntaxKind[SyntaxKind["DirectedEdgeOp"] = 39] = "DirectedEdgeOp";
53
+ SyntaxKind[SyntaxKind["UndirectedEdgeOp"] = 40] = "UndirectedEdgeOp";
54
+ SyntaxKind[SyntaxKind["DirectedGraph"] = 41] = "DirectedGraph";
55
+ SyntaxKind[SyntaxKind["UndirectedGraph"] = 42] = "UndirectedGraph";
56
+ SyntaxKind[SyntaxKind["NodeStatement"] = 43] = "NodeStatement";
57
+ SyntaxKind[SyntaxKind["EdgeStatement"] = 44] = "EdgeStatement";
58
+ SyntaxKind[SyntaxKind["AttributeStatement"] = 45] = "AttributeStatement";
59
+ SyntaxKind[SyntaxKind["IdEqualsIdStatement"] = 46] = "IdEqualsIdStatement";
60
+ SyntaxKind[SyntaxKind["SubGraph"] = 47] = "SubGraph";
61
+ SyntaxKind[SyntaxKind["SubGraphStatement"] = 48] = "SubGraphStatement";
62
+ SyntaxKind[SyntaxKind["EdgeRhs"] = 49] = "EdgeRhs";
63
+ SyntaxKind[SyntaxKind["AttributeContainer"] = 50] = "AttributeContainer";
64
+ SyntaxKind[SyntaxKind["Assignment"] = 51] = "Assignment";
65
+ SyntaxKind[SyntaxKind["NormalPortDeclaration"] = 52] = "NormalPortDeclaration";
66
+ SyntaxKind[SyntaxKind["CompassPortDeclaration"] = 53] = "CompassPortDeclaration";
67
+ SyntaxKind[SyntaxKind["NodeId"] = 54] = "NodeId";
68
+ SyntaxKind[SyntaxKind["Count"] = 55] = "Count";
69
+ SyntaxKind[SyntaxKind["FirstNode"] = 41] = "FirstNode";
70
+ SyntaxKind[SyntaxKind["CompassBegin"] = 18] = "CompassBegin";
71
+ SyntaxKind[SyntaxKind["CompassEnd"] = 27] = "CompassEnd";
72
+ SyntaxKind[SyntaxKind["LastKeyword"] = 38] = "LastKeyword";
73
+ })(SyntaxKind = exports.SyntaxKind || (exports.SyntaxKind = {}));
74
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1,2 @@
1
+ import { SyntaxNode, SyntaxNodeArray } from "./types";
2
+ export declare function forEachChild<TReturn>(node: SyntaxNode, cbNode: (node: SyntaxNode) => TReturn, cbNodes?: (nodes: SyntaxNodeArray<SyntaxNode>) => TReturn): TReturn | undefined;
package/lib/visitor.js ADDED
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.forEachChild = void 0;
4
+ const types_1 = require("./types");
5
+ function visitNode(cbNode, node) {
6
+ return node && cbNode(node);
7
+ }
8
+ function visitNodes(cbNode, cbNodes, nodes) {
9
+ if (nodes) {
10
+ if (cbNodes)
11
+ return cbNodes(nodes);
12
+ for (const node of nodes) {
13
+ const result = cbNode(node);
14
+ if (result)
15
+ return result;
16
+ }
17
+ }
18
+ return undefined;
19
+ }
20
+ function forEachChild(node, cbNode, cbNodes) {
21
+ if (!node || node.kind <= types_1.SyntaxKind.LastKeyword)
22
+ return;
23
+ switch (node.kind) {
24
+ case types_1.SyntaxKind.DirectedGraph:
25
+ case types_1.SyntaxKind.UndirectedGraph:
26
+ return visitNodes(cbNode, cbNodes, node.statements)
27
+ || visitNode(cbNode, node.strict)
28
+ || visitNode(cbNode, node.id);
29
+ case types_1.SyntaxKind.AttributeStatement:
30
+ return visitNodes(cbNode, cbNodes, node.attributes)
31
+ || visitNode(cbNode, node.subject)
32
+ || visitNode(cbNode, node.terminator);
33
+ case types_1.SyntaxKind.EdgeStatement:
34
+ return visitNodes(cbNode, cbNodes, node.attributes)
35
+ || visitNodes(cbNode, cbNodes, node.rhs)
36
+ || visitNode(cbNode, node.source)
37
+ || visitNode(cbNode, node.terminator);
38
+ case types_1.SyntaxKind.NodeStatement:
39
+ return visitNodes(cbNode, cbNodes, node.attributes)
40
+ || visitNode(cbNode, node.id)
41
+ || visitNode(cbNode, node.terminator);
42
+ case types_1.SyntaxKind.SubGraph:
43
+ return visitNodes(cbNode, cbNodes, node.statements)
44
+ || visitNode(cbNode, node.id);
45
+ case types_1.SyntaxKind.SubGraphStatement:
46
+ return visitNode(cbNode, node.subgraph)
47
+ || visitNode(cbNode, node.terminator);
48
+ case types_1.SyntaxKind.IdEqualsIdStatement:
49
+ return visitNode(cbNode, node.leftId)
50
+ || visitNode(cbNode, node.rightId)
51
+ || visitNode(cbNode, node.terminator);
52
+ case types_1.SyntaxKind.QuotedTextIdentifier:
53
+ return visitNodes(cbNode, cbNodes, node.values);
54
+ case types_1.SyntaxKind.EdgeRhs:
55
+ return visitNode(cbNode, node.operation)
56
+ || visitNode(cbNode, node.target);
57
+ case types_1.SyntaxKind.AttributeContainer:
58
+ return visitNodes(cbNode, cbNodes, node.assignments);
59
+ case types_1.SyntaxKind.Assignment:
60
+ return visitNode(cbNode, node.leftId)
61
+ || visitNode(cbNode, node.rightId)
62
+ || visitNode(cbNode, node.terminator);
63
+ case types_1.SyntaxKind.NormalPortDeclaration:
64
+ return visitNode(cbNode, node.colon)
65
+ || visitNode(cbNode, node.id)
66
+ || visitNode(cbNode, node.compassPt);
67
+ case types_1.SyntaxKind.CompassPortDeclaration:
68
+ return visitNode(cbNode, node.colon)
69
+ || visitNode(cbNode, node.compassPt);
70
+ case types_1.SyntaxKind.NodeId:
71
+ return visitNode(cbNode, node.port)
72
+ || visitNode(cbNode, node.id);
73
+ default:
74
+ return undefined;
75
+ }
76
+ }
77
+ exports.forEachChild = forEachChild;
78
+ //# sourceMappingURL=visitor.js.map
package/package.json ADDED
@@ -0,0 +1,42 @@
1
+ {
2
+ "name": "dot-language-support",
3
+ "version": "1.5.4",
4
+ "description": "Parser and language service for graphviz (dot) files",
5
+ "author": "Niklas Mollenhauer",
6
+ "license": "MIT",
7
+ "main": "lib/index.js",
8
+ "types": "lib/index.d.ts",
9
+ "scripts": {
10
+ "test": "mocha -r ts-node/register tests/**/*.spec.ts tests/*.spec.ts",
11
+ "clean": "rimraf lib",
12
+ "compile": "tsc",
13
+ "prepare": "npm run compile"
14
+ },
15
+ "keywords": [
16
+ "graphviz",
17
+ "dot",
18
+ "gv",
19
+ "parser",
20
+ "language",
21
+ "service"
22
+ ],
23
+ "repository": {
24
+ "type": "git",
25
+ "url": "https://github.com/nikeee/dot-language-support.git"
26
+ },
27
+ "dependencies": {
28
+ "vscode-languageserver-types": "^3.16.0"
29
+ },
30
+ "devDependencies": {
31
+ "@types/chai": "^4.2.22",
32
+ "@types/mocha": "^9.0.0",
33
+ "chai": "^4.3.4",
34
+ "mocha": "^9.1.2",
35
+ "ts-node": "^10.2.1",
36
+ "typescript": "^4.4.3",
37
+ "vscode-languageserver": "^7.0.0"
38
+ },
39
+ "engines": {
40
+ "node": ">=14"
41
+ }
42
+ }