dot-language-support 1.6.1 → 2.0.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 (119) hide show
  1. package/.github/workflows/CD.yml +3 -3
  2. package/.github/workflows/CI.yml +2 -2
  3. package/README.md +5 -4
  4. package/jest.config.mjs +19 -0
  5. package/lib/{binder.d.ts → cjs/binder.d.ts} +1 -1
  6. package/lib/{binder.js → cjs/binder.js} +34 -34
  7. package/lib/{checker.d.ts → cjs/checker.d.ts} +1 -1
  8. package/lib/{checker.js → cjs/checker.js} +28 -28
  9. package/lib/{core.d.ts → cjs/core.d.ts} +0 -0
  10. package/lib/{core.js → cjs/core.js} +0 -0
  11. package/lib/{error.d.ts → cjs/error.d.ts} +1 -1
  12. package/lib/{error.js → cjs/error.js} +0 -0
  13. package/lib/cjs/index.d.ts +5 -0
  14. package/lib/{index.js → cjs/index.js} +5 -6
  15. package/lib/{parser.d.ts → cjs/parser.d.ts} +2 -2
  16. package/lib/{parser.js → cjs/parser.js} +14 -12
  17. package/lib/{scanner.d.ts → cjs/scanner.d.ts} +1 -1
  18. package/lib/{scanner.js → cjs/scanner.js} +67 -67
  19. package/lib/{service → cjs/service}/codeAction.d.ts +4 -4
  20. package/lib/cjs/service/codeAction.js +237 -0
  21. package/lib/cjs/service/colorProvider.d.ts +6 -0
  22. package/lib/cjs/service/colorProvider.js +97 -0
  23. package/lib/{service → cjs/service}/command/ChangeAllOtherEdgeOpsAndFixGraphCommand.d.ts +4 -4
  24. package/lib/{service → cjs/service}/command/ChangeAllOtherEdgeOpsAndFixGraphCommand.js +7 -7
  25. package/lib/{service → cjs/service}/command/ChangeEdgeOpCommand.d.ts +4 -4
  26. package/lib/cjs/service/command/ChangeEdgeOpCommand.js +60 -0
  27. package/lib/{service → cjs/service}/command/ConsolidateDescendantsCommand.d.ts +3 -3
  28. package/lib/{service → cjs/service}/command/ConsolidateDescendantsCommand.js +7 -25
  29. package/lib/{service → cjs/service}/command/RemoveSemicolons.d.ts +3 -3
  30. package/lib/{service → cjs/service}/command/RemoveSemicolons.js +4 -4
  31. package/lib/{service → cjs/service}/command/common.d.ts +4 -4
  32. package/lib/cjs/service/command/common.js +31 -0
  33. package/lib/{service → cjs/service}/completion.d.ts +2 -2
  34. package/lib/{service → cjs/service}/completion.js +49 -26
  35. package/lib/cjs/service/hover.d.ts +4 -0
  36. package/lib/{service → cjs/service}/hover.js +38 -38
  37. package/lib/{service → cjs/service}/languageFacts.d.ts +0 -0
  38. package/lib/{service → cjs/service}/languageFacts.js +0 -0
  39. package/lib/{service → cjs/service}/polyfill.d.ts +4 -4
  40. package/lib/{service → cjs/service}/polyfill.js +0 -0
  41. package/lib/cjs/service/reference.d.ts +5 -0
  42. package/lib/{service → cjs/service}/reference.js +9 -11
  43. package/lib/cjs/service/rename.d.ts +4 -0
  44. package/lib/{service → cjs/service}/rename.js +13 -13
  45. package/lib/{service → cjs/service}/service.d.ts +5 -4
  46. package/lib/cjs/service/service.js +39 -0
  47. package/lib/cjs/service/util.d.ts +11 -0
  48. package/lib/{service → cjs/service}/util.js +7 -7
  49. package/lib/{service → cjs/service}/validation.d.ts +2 -2
  50. package/lib/{service → cjs/service}/validation.js +3 -3
  51. package/lib/cjs/tester.d.ts +1 -0
  52. package/lib/cjs/tester.js +23 -0
  53. package/lib/{types.d.ts → cjs/types.d.ts} +0 -0
  54. package/lib/{types.js → cjs/types.js} +0 -0
  55. package/lib/{visitor.d.ts → cjs/visitor.d.ts} +1 -1
  56. package/lib/{visitor.js → cjs/visitor.js} +17 -17
  57. package/lib/esm/binder.d.ts +2 -0
  58. package/lib/esm/binder.js +296 -0
  59. package/lib/esm/checker.d.ts +14 -0
  60. package/lib/esm/checker.js +169 -0
  61. package/lib/esm/core.d.ts +1 -0
  62. package/lib/esm/core.js +10 -0
  63. package/lib/esm/error.d.ts +3 -0
  64. package/lib/esm/error.js +10 -0
  65. package/lib/esm/index.d.ts +5 -0
  66. package/lib/esm/index.js +6 -0
  67. package/lib/esm/parser.d.ts +84 -0
  68. package/lib/esm/parser.js +700 -0
  69. package/lib/esm/scanner.d.ts +52 -0
  70. package/lib/esm/scanner.js +581 -0
  71. package/lib/esm/service/codeAction.d.ts +12 -0
  72. package/lib/{service → esm/service}/codeAction.js +40 -46
  73. package/lib/esm/service/colorProvider.d.ts +6 -0
  74. package/lib/{service → esm/service}/colorProvider.js +5 -10
  75. package/lib/esm/service/command/ChangeAllOtherEdgeOpsAndFixGraphCommand.d.ts +10 -0
  76. package/lib/esm/service/command/ChangeAllOtherEdgeOpsAndFixGraphCommand.js +38 -0
  77. package/lib/esm/service/command/ChangeEdgeOpCommand.d.ts +10 -0
  78. package/lib/{service → esm/service}/command/ChangeEdgeOpCommand.js +6 -11
  79. package/lib/esm/service/command/ConsolidateDescendantsCommand.d.ts +10 -0
  80. package/lib/esm/service/command/ConsolidateDescendantsCommand.js +83 -0
  81. package/lib/esm/service/command/RemoveSemicolons.d.ts +10 -0
  82. package/lib/esm/service/command/RemoveSemicolons.js +37 -0
  83. package/lib/esm/service/command/common.d.ts +31 -0
  84. package/lib/esm/service/command/common.js +22 -0
  85. package/lib/esm/service/completion.d.ts +4 -0
  86. package/lib/esm/service/completion.js +137 -0
  87. package/lib/esm/service/hover.d.ts +4 -0
  88. package/lib/esm/service/hover.js +119 -0
  89. package/lib/esm/service/languageFacts.d.ts +683 -0
  90. package/lib/esm/service/languageFacts.js +997 -0
  91. package/lib/esm/service/polyfill.d.ts +16 -0
  92. package/lib/esm/service/polyfill.js +2 -0
  93. package/lib/esm/service/reference.d.ts +5 -0
  94. package/lib/esm/service/reference.js +66 -0
  95. package/lib/esm/service/rename.d.ts +4 -0
  96. package/lib/esm/service/rename.js +45 -0
  97. package/lib/esm/service/service.d.ts +28 -0
  98. package/lib/esm/service/service.js +35 -0
  99. package/lib/esm/service/util.d.ts +11 -0
  100. package/lib/esm/service/util.js +44 -0
  101. package/lib/esm/service/validation.d.ts +4 -0
  102. package/lib/esm/service/validation.js +20 -0
  103. package/lib/esm/tester.d.ts +1 -0
  104. package/lib/esm/tester.js +21 -0
  105. package/lib/esm/types.d.ts +396 -0
  106. package/lib/esm/types.js +71 -0
  107. package/lib/esm/visitor.d.ts +2 -0
  108. package/lib/esm/visitor.js +74 -0
  109. package/package.json +14 -10
  110. package/lib/index.d.ts +0 -6
  111. package/lib/service/colorProvider.d.ts +0 -6
  112. package/lib/service/command/common.js +0 -31
  113. package/lib/service/hover.d.ts +0 -4
  114. package/lib/service/interop.d.ts +0 -15
  115. package/lib/service/interop.js +0 -56
  116. package/lib/service/reference.d.ts +0 -5
  117. package/lib/service/rename.d.ts +0 -4
  118. package/lib/service/service.js +0 -39
  119. package/lib/service/util.d.ts +0 -11
@@ -1,9 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.findDefinition = exports.findReferences = void 0;
4
- const __1 = require("../");
5
- const checker_1 = require("../checker");
6
- const util_1 = require("./util");
4
+ const index_js_1 = require("../index.js");
5
+ const checker_js_1 = require("../checker.js");
6
+ const util_js_1 = require("./util.js");
7
7
  function findReferences(doc, sourceFile, position, context) {
8
8
  if (!sourceFile.symbols)
9
9
  throw "sourceFile is not bound";
@@ -11,10 +11,10 @@ function findReferences(doc, sourceFile, position, context) {
11
11
  if (!g)
12
12
  return [];
13
13
  const offset = doc.offsetAt(position);
14
- const node = (0, checker_1.findNodeAtOffset)(g, offset);
14
+ const node = (0, checker_js_1.findNodeAtOffset)(g, offset);
15
15
  if (!node)
16
16
  return [];
17
- if ((0, __1.isIdentifierNode)(node)) {
17
+ if ((0, index_js_1.isIdentifierNode)(node)) {
18
18
  const nodeSymbol = node.symbol;
19
19
  if (!nodeSymbol)
20
20
  throw "node.symbol is not bound";
@@ -34,7 +34,7 @@ function findReferences(doc, sourceFile, position, context) {
34
34
  ];
35
35
  }
36
36
  }
37
- const ranges = (0, util_1.syntaxNodesToRanges)(doc, sourceFile, symbolRefs);
37
+ const ranges = (0, util_js_1.syntaxNodesToRanges)(doc, sourceFile, symbolRefs);
38
38
  const uri = doc.uri;
39
39
  return ranges.map(range => {
40
40
  return { uri, range };
@@ -51,19 +51,17 @@ function findDefinition(doc, sourceFile, position) {
51
51
  if (!g)
52
52
  return undefined;
53
53
  const offset = doc.offsetAt(position);
54
- const node = (0, checker_1.findNodeAtOffset)(g, offset);
54
+ const node = (0, checker_js_1.findNodeAtOffset)(g, offset);
55
55
  if (!node)
56
56
  return undefined;
57
- if ((0, __1.isIdentifierNode)(node)) {
57
+ if ((0, index_js_1.isIdentifierNode)(node)) {
58
58
  const nodeSymbol = node.symbol;
59
59
  if (!nodeSymbol)
60
60
  throw "node.symbol is not bound";
61
- const refs = nodeSymbol.references || [];
62
- let symbolRefs;
63
61
  const firstMention = nodeSymbol.firstMention;
64
62
  if (!firstMention)
65
63
  return undefined;
66
- const range = (0, util_1.syntaxNodeToRange)(doc, sourceFile, firstMention);
64
+ const range = (0, util_js_1.syntaxNodeToRange)(doc, sourceFile, firstMention);
67
65
  return { uri: doc.uri, range };
68
66
  }
69
67
  debugger;
@@ -0,0 +1,4 @@
1
+ import { Position, WorkspaceEdit } from "vscode-languageserver-types";
2
+ import { SourceFile } from "../types.js";
3
+ import { DocumentLike } from "../index.js";
4
+ export declare function renameSymbol(doc: DocumentLike, sourceFile: SourceFile, position: Position, newName: string): WorkspaceEdit | undefined;
@@ -1,11 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.renameSymbol = void 0;
4
- const lst = require("vscode-languageserver-types");
5
- const types_1 = require("../types");
6
- const checker_1 = require("../checker");
7
- const __1 = require("../");
8
- const util_1 = require("./util");
4
+ const vscode_languageserver_types_1 = require("vscode-languageserver-types");
5
+ const types_js_1 = require("../types.js");
6
+ const checker_js_1 = require("../checker.js");
7
+ const index_js_1 = require("../index.js");
8
+ const util_js_1 = require("./util.js");
9
9
  function renameSymbol(doc, sourceFile, position, newName) {
10
10
  if (!sourceFile.symbols)
11
11
  throw "sourceFile is not bound";
@@ -15,21 +15,21 @@ function renameSymbol(doc, sourceFile, position, newName) {
15
15
  if (!g)
16
16
  return undefined;
17
17
  const offset = doc.offsetAt(position);
18
- const node = (0, checker_1.findNodeAtOffset)(g, offset);
18
+ const node = (0, checker_js_1.findNodeAtOffset)(g, offset);
19
19
  if (!node)
20
20
  return undefined;
21
21
  const parent = node.parent;
22
- if ((0, __1.isIdentifierNode)(node) && isRenamableIdentifier(node) && !!parent && isRenameableNode(parent)) {
22
+ if ((0, index_js_1.isIdentifierNode)(node) && isRenamableIdentifier(node) && !!parent && isRenameableNode(parent)) {
23
23
  const nodeSymbol = node.symbol;
24
24
  if (!nodeSymbol)
25
25
  throw "node.symbol is not bound";
26
26
  const r = nodeSymbol.references;
27
27
  const refs = r ? [nodeSymbol.firstMention, ...r] : [nodeSymbol.firstMention];
28
- const ranges = (0, util_1.syntaxNodesToRanges)(doc, sourceFile, refs);
28
+ const ranges = (0, util_js_1.syntaxNodesToRanges)(doc, sourceFile, refs);
29
29
  const uri = doc.uri;
30
30
  const res = {
31
31
  changes: {
32
- [uri]: ranges.map(r => lst.TextEdit.replace(r, newName)),
32
+ [uri]: ranges.map(r => vscode_languageserver_types_1.TextEdit.replace(r, newName)),
33
33
  }
34
34
  };
35
35
  return res;
@@ -39,11 +39,11 @@ function renameSymbol(doc, sourceFile, position, newName) {
39
39
  }
40
40
  exports.renameSymbol = renameSymbol;
41
41
  function isRenameableNode(node) {
42
- return node.kind === types_1.SyntaxKind.NodeId
43
- || node.kind === types_1.SyntaxKind.DirectedGraph
44
- || node.kind === types_1.SyntaxKind.UndirectedGraph;
42
+ return node.kind === types_js_1.SyntaxKind.NodeId
43
+ || node.kind === types_js_1.SyntaxKind.DirectedGraph
44
+ || node.kind === types_js_1.SyntaxKind.UndirectedGraph;
45
45
  }
46
46
  function isRenamableIdentifier(node) {
47
- return node.kind !== types_1.SyntaxKind.QuotedTextIdentifier;
47
+ return node.kind !== types_js_1.SyntaxKind.QuotedTextIdentifier;
48
48
  }
49
49
  //# sourceMappingURL=rename.js.map
@@ -1,6 +1,7 @@
1
- import * as lst from "vscode-languageserver-types";
2
- import { ColorInformation, Color, ColorPresentation } from "./polyfill";
3
- import { SourceFile, Omit } from "../types";
1
+ import type * as lst from "vscode-languageserver-types";
2
+ import type { TextDocument } from "vscode-languageserver-textdocument";
3
+ import { ColorInformation, Color, ColorPresentation } from "./polyfill.js";
4
+ import { SourceFile, Omit } from "../types.js";
4
5
  export interface DocumentLike {
5
6
  positionAt(offset: number): lst.Position;
6
7
  offsetAt(position: lst.Position): number;
@@ -11,7 +12,7 @@ export interface CommandApplication {
11
12
  edit: lst.WorkspaceEdit;
12
13
  }
13
14
  export interface LanguageService {
14
- parseDocument(doc: lst.TextDocument | string): SourceFile;
15
+ parseDocument(doc: TextDocument | string): SourceFile;
15
16
  validateDocument(doc: DocumentLike, sourceFile: SourceFile): lst.Diagnostic[];
16
17
  hover(doc: DocumentLike, sourceFile: SourceFile, position: lst.Position): lst.Hover | undefined;
17
18
  findReferences(doc: DocumentLike, sourceFile: SourceFile, position: lst.Position, context: lst.ReferenceContext): lst.Location[];
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createService = void 0;
4
+ const index_js_1 = require("../index.js");
5
+ const binder_js_1 = require("../binder.js");
6
+ const hover_js_1 = require("./hover.js");
7
+ const validation_js_1 = require("./validation.js");
8
+ const reference_js_1 = require("./reference.js");
9
+ const rename_js_1 = require("./rename.js");
10
+ const completion_js_1 = require("./completion.js");
11
+ const checker_js_1 = require("../checker.js");
12
+ const codeAction_js_1 = require("./codeAction.js");
13
+ const colorProvider_js_1 = require("./colorProvider.js");
14
+ function parseDocument(doc) {
15
+ const parser = new index_js_1.Parser();
16
+ const content = typeof doc === "string" ? doc : doc.getText();
17
+ const sourceFile = parser.parse(content);
18
+ (0, binder_js_1.bindSourceFile)(sourceFile);
19
+ (0, checker_js_1.checkSourceFile)(sourceFile);
20
+ return sourceFile;
21
+ }
22
+ function createService() {
23
+ return {
24
+ parseDocument,
25
+ validateDocument: validation_js_1.validateDocument,
26
+ hover: hover_js_1.hover,
27
+ findReferences: reference_js_1.findReferences,
28
+ findDefinition: reference_js_1.findDefinition,
29
+ renameSymbol: rename_js_1.renameSymbol,
30
+ getCompletions: completion_js_1.getCompletions,
31
+ getDocumentColors: colorProvider_js_1.getDocumentColors,
32
+ getColorRepresentations: colorProvider_js_1.getColorRepresentations,
33
+ getCodeActions: codeAction_js_1.getCodeActions,
34
+ executeCommand: codeAction_js_1.executeCommand,
35
+ getAvailableCommands: codeAction_js_1.getAvailableCommands,
36
+ };
37
+ }
38
+ exports.createService = createService;
39
+ //# sourceMappingURL=service.js.map
@@ -0,0 +1,11 @@
1
+ import type { Range } from "vscode-languageserver-types";
2
+ import { SourceFile, SyntaxNode } from "../types.js";
3
+ import type { DocumentLike } from "../index.js";
4
+ export declare function getStart(sourceFile: SourceFile, node: SyntaxNode): number;
5
+ export declare function syntaxNodesToRanges(doc: DocumentLike, sourceFile: SourceFile, nodes: SyntaxNode[]): Range[];
6
+ export declare function syntaxNodeToRange(doc: DocumentLike, sourceFile: SourceFile, node: SyntaxNode): {
7
+ start: import("vscode-languageserver-types").Position;
8
+ end: import("vscode-languageserver-types").Position;
9
+ };
10
+ export declare function escapeIdentifierText(text: string): string;
11
+ export declare function assertNever(v: never): never;
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.assertNever = exports.escapeIdentifierText = exports.syntaxNodeToRange = exports.syntaxNodesToRanges = exports.getStart = void 0;
4
- const types_1 = require("../types");
5
- const scanner_1 = require("../scanner");
4
+ const types_js_1 = require("../types.js");
5
+ const scanner_js_1 = require("../scanner.js");
6
6
  function getStart(sourceFile, node) {
7
7
  return getTokenPosOfNode(sourceFile, node);
8
8
  }
@@ -10,12 +10,12 @@ exports.getStart = getStart;
10
10
  function getTokenPosOfNode(sourceFile, node) {
11
11
  if (nodeIsMissing(node))
12
12
  return node.pos;
13
- return (0, scanner_1.skipTrivia)(sourceFile.content, node.pos);
13
+ return (0, scanner_js_1.skipTrivia)(sourceFile.content, node.pos);
14
14
  }
15
15
  function nodeIsMissing(node) {
16
16
  return node === undefined
17
17
  ? true
18
- : node.pos === node.end && node.pos >= 0 && node.kind !== types_1.SyntaxKind.EndOfFileToken;
18
+ : node.pos === node.end && node.pos >= 0 && node.kind !== types_js_1.SyntaxKind.EndOfFileToken;
19
19
  }
20
20
  function syntaxNodesToRanges(doc, sourceFile, nodes) {
21
21
  return nodes.map(node => syntaxNodeToRange(doc, sourceFile, node));
@@ -39,14 +39,14 @@ function escapeIdentifierText(text) {
39
39
  return quote(esc);
40
40
  }
41
41
  const ch = text.charCodeAt(0);
42
- if (!(0, scanner_1.isIdentifierStart)(ch) || text.includes(" "))
42
+ if (!(0, scanner_js_1.isIdentifierStart)(ch) || text.includes(" "))
43
43
  return quote(text);
44
44
  return text;
45
45
  }
46
46
  exports.escapeIdentifierText = escapeIdentifierText;
47
47
  const quote = (s) => "\"" + s + "\"";
48
- function assertNever(n) {
49
- throw new Error("Never assertion");
48
+ function assertNever(v) {
49
+ throw new Error("Should not have reached this. Value: " + (v !== null && v !== void 0 ? v : ""));
50
50
  }
51
51
  exports.assertNever = assertNever;
52
52
  //# sourceMappingURL=util.js.map
@@ -1,4 +1,4 @@
1
1
  import * as lst from "vscode-languageserver-types";
2
- import { SourceFile } from "../types";
3
- import { DocumentLike } from "../";
2
+ import { SourceFile } from "../types.js";
3
+ import { DocumentLike } from "../index.js";
4
4
  export declare function validateDocument(doc: DocumentLike, sourceFile: SourceFile): lst.Diagnostic[];
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.validateDocument = void 0;
4
- const error_1 = require("../error");
4
+ const error_js_1 = require("../error.js");
5
5
  function convertDiagnostic(document, source) {
6
6
  return {
7
7
  range: {
@@ -9,8 +9,8 @@ function convertDiagnostic(document, source) {
9
9
  end: document.positionAt(source.end),
10
10
  },
11
11
  severity: source.category,
12
- code: (0, error_1.formatError)(source.code),
13
- source: error_1.diagnosicSource,
12
+ code: (0, error_js_1.formatError)(source.code),
13
+ source: error_js_1.diagnosicSource,
14
14
  message: source.message,
15
15
  };
16
16
  }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const vscode_languageserver_textdocument_1 = require("vscode-languageserver-textdocument");
4
+ const parser_js_1 = require("./parser.js");
5
+ const binder_js_1 = require("./binder.js");
6
+ const checker_js_1 = require("./checker.js");
7
+ const completion_js_1 = require("./service/completion.js");
8
+ const text = `graph {
9
+ node_name_a -- node_name_b [color=blue,
10
+ ];
11
+ }`;
12
+ function main() {
13
+ const parser = new parser_js_1.Parser();
14
+ const sf = parser.parse(text);
15
+ (0, binder_js_1.bindSourceFile)(sf);
16
+ (0, checker_js_1.checkSourceFile)(sf);
17
+ const doc = vscode_languageserver_textdocument_1.TextDocument.create("inmemory://model.json", "DOT", 0, text);
18
+ const requestOffset = text.indexOf("color=blue,\n\t") + "color=blue,\n\t".length;
19
+ const completions = (0, completion_js_1.getCompletions)(doc, sf, doc.positionAt(requestOffset));
20
+ console.dir(completions);
21
+ }
22
+ main();
23
+ //# sourceMappingURL=tester.js.map
File without changes
File without changes
@@ -1,2 +1,2 @@
1
- import { SyntaxNode, SyntaxNodeArray } from "./types";
1
+ import { SyntaxNode, SyntaxNodeArray } from "./types.js";
2
2
  export declare function forEachChild<TReturn>(node: SyntaxNode, cbNode: (node: SyntaxNode) => TReturn, cbNodes?: (nodes: SyntaxNodeArray<SyntaxNode>) => TReturn): TReturn | undefined;
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.forEachChild = void 0;
4
- const types_1 = require("./types");
4
+ const types_js_1 = require("./types.js");
5
5
  function visitNode(cbNode, node) {
6
6
  return node && cbNode(node);
7
7
  }
@@ -18,56 +18,56 @@ function visitNodes(cbNode, cbNodes, nodes) {
18
18
  return undefined;
19
19
  }
20
20
  function forEachChild(node, cbNode, cbNodes) {
21
- if (!node || node.kind <= types_1.SyntaxKind.LastKeyword)
21
+ if (!node || node.kind <= types_js_1.SyntaxKind.LastKeyword)
22
22
  return;
23
23
  switch (node.kind) {
24
- case types_1.SyntaxKind.DirectedGraph:
25
- case types_1.SyntaxKind.UndirectedGraph:
24
+ case types_js_1.SyntaxKind.DirectedGraph:
25
+ case types_js_1.SyntaxKind.UndirectedGraph:
26
26
  return visitNodes(cbNode, cbNodes, node.statements)
27
27
  || visitNode(cbNode, node.strict)
28
28
  || visitNode(cbNode, node.id);
29
- case types_1.SyntaxKind.AttributeStatement:
29
+ case types_js_1.SyntaxKind.AttributeStatement:
30
30
  return visitNodes(cbNode, cbNodes, node.attributes)
31
31
  || visitNode(cbNode, node.subject)
32
32
  || visitNode(cbNode, node.terminator);
33
- case types_1.SyntaxKind.EdgeStatement:
33
+ case types_js_1.SyntaxKind.EdgeStatement:
34
34
  return visitNodes(cbNode, cbNodes, node.attributes)
35
35
  || visitNodes(cbNode, cbNodes, node.rhs)
36
36
  || visitNode(cbNode, node.source)
37
37
  || visitNode(cbNode, node.terminator);
38
- case types_1.SyntaxKind.NodeStatement:
38
+ case types_js_1.SyntaxKind.NodeStatement:
39
39
  return visitNodes(cbNode, cbNodes, node.attributes)
40
40
  || visitNode(cbNode, node.id)
41
41
  || visitNode(cbNode, node.terminator);
42
- case types_1.SyntaxKind.SubGraph:
42
+ case types_js_1.SyntaxKind.SubGraph:
43
43
  return visitNodes(cbNode, cbNodes, node.statements)
44
44
  || visitNode(cbNode, node.id);
45
- case types_1.SyntaxKind.SubGraphStatement:
45
+ case types_js_1.SyntaxKind.SubGraphStatement:
46
46
  return visitNode(cbNode, node.subgraph)
47
47
  || visitNode(cbNode, node.terminator);
48
- case types_1.SyntaxKind.IdEqualsIdStatement:
48
+ case types_js_1.SyntaxKind.IdEqualsIdStatement:
49
49
  return visitNode(cbNode, node.leftId)
50
50
  || visitNode(cbNode, node.rightId)
51
51
  || visitNode(cbNode, node.terminator);
52
- case types_1.SyntaxKind.QuotedTextIdentifier:
52
+ case types_js_1.SyntaxKind.QuotedTextIdentifier:
53
53
  return visitNodes(cbNode, cbNodes, node.values);
54
- case types_1.SyntaxKind.EdgeRhs:
54
+ case types_js_1.SyntaxKind.EdgeRhs:
55
55
  return visitNode(cbNode, node.operation)
56
56
  || visitNode(cbNode, node.target);
57
- case types_1.SyntaxKind.AttributeContainer:
57
+ case types_js_1.SyntaxKind.AttributeContainer:
58
58
  return visitNodes(cbNode, cbNodes, node.assignments);
59
- case types_1.SyntaxKind.Assignment:
59
+ case types_js_1.SyntaxKind.Assignment:
60
60
  return visitNode(cbNode, node.leftId)
61
61
  || visitNode(cbNode, node.rightId)
62
62
  || visitNode(cbNode, node.terminator);
63
- case types_1.SyntaxKind.NormalPortDeclaration:
63
+ case types_js_1.SyntaxKind.NormalPortDeclaration:
64
64
  return visitNode(cbNode, node.colon)
65
65
  || visitNode(cbNode, node.id)
66
66
  || visitNode(cbNode, node.compassPt);
67
- case types_1.SyntaxKind.CompassPortDeclaration:
67
+ case types_js_1.SyntaxKind.CompassPortDeclaration:
68
68
  return visitNode(cbNode, node.colon)
69
69
  || visitNode(cbNode, node.compassPt);
70
- case types_1.SyntaxKind.NodeId:
70
+ case types_js_1.SyntaxKind.NodeId:
71
71
  return visitNode(cbNode, node.port)
72
72
  || visitNode(cbNode, node.id);
73
73
  default:
@@ -0,0 +1,2 @@
1
+ import { SourceFile } from "./types.js";
2
+ export declare function bindSourceFile(file: SourceFile): void;