dot-language-support 4.1.1 → 4.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.mjs +6 -35
- package/package.json +24 -22
package/dist/index.mjs
CHANGED
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
import * as lst from "vscode-languageserver-types";
|
|
2
2
|
import { Range, TextEdit } from "vscode-languageserver-types";
|
|
3
|
-
|
|
4
3
|
//#region src/core.ts
|
|
5
4
|
function createMapFromTemplate(template) {
|
|
6
5
|
const map = /* @__PURE__ */ new Map();
|
|
7
6
|
for (const key in template) if (key in template) map.set(key, template[key]);
|
|
8
7
|
return map;
|
|
9
8
|
}
|
|
10
|
-
|
|
11
9
|
//#endregion
|
|
12
10
|
//#region src/types.ts
|
|
13
11
|
const errorSource = {
|
|
@@ -295,7 +293,6 @@ const characterCodes = {
|
|
|
295
293
|
tab: 9,
|
|
296
294
|
verticalTab: 11
|
|
297
295
|
};
|
|
298
|
-
|
|
299
296
|
//#endregion
|
|
300
297
|
//#region src/service/util.ts
|
|
301
298
|
function getStart(sourceFile, node) {
|
|
@@ -328,7 +325,6 @@ const quote = (s) => `"${s}"`;
|
|
|
328
325
|
function assertNever(v) {
|
|
329
326
|
throw new Error(`Should not have reached this. Value: ${v ?? ""}`);
|
|
330
327
|
}
|
|
331
|
-
|
|
332
328
|
//#endregion
|
|
333
329
|
//#region src/scanner.ts
|
|
334
330
|
const textToToken = createMapFromTemplate({
|
|
@@ -787,7 +783,6 @@ function skipTrivia(text, pos) {
|
|
|
787
783
|
function isLineBreak(ch) {
|
|
788
784
|
return ch === characterCodes.lineFeed || ch === characterCodes.carriageReturn;
|
|
789
785
|
}
|
|
790
|
-
|
|
791
786
|
//#endregion
|
|
792
787
|
//#region src/parser.ts
|
|
793
788
|
const parsingContext = {
|
|
@@ -1374,7 +1369,6 @@ function isIdentifier(kind) {
|
|
|
1374
1369
|
function isIdentifierNode(node) {
|
|
1375
1370
|
return isIdentifier(node.kind);
|
|
1376
1371
|
}
|
|
1377
|
-
|
|
1378
1372
|
//#endregion
|
|
1379
1373
|
//#region src/service/languageFacts.ts
|
|
1380
1374
|
const shapes = Object.freeze([
|
|
@@ -2377,7 +2371,6 @@ const colors = Object.freeze({
|
|
|
2377
2371
|
yellow4: "#8b8b00",
|
|
2378
2372
|
yellowgreen: "#9acd32"
|
|
2379
2373
|
});
|
|
2380
|
-
|
|
2381
2374
|
//#endregion
|
|
2382
2375
|
//#region src/visitor.ts
|
|
2383
2376
|
function visitNode(cbNode, node) {
|
|
@@ -2413,7 +2406,6 @@ function forEachChild(node, cbNode, cbNodes) {
|
|
|
2413
2406
|
default: return;
|
|
2414
2407
|
}
|
|
2415
2408
|
}
|
|
2416
|
-
|
|
2417
2409
|
//#endregion
|
|
2418
2410
|
//#region src/checker.ts
|
|
2419
2411
|
const validShapesLowerCase = new Set(shapes.map((s) => s.toLowerCase()));
|
|
@@ -2554,7 +2546,6 @@ function createCheckerError(sub) {
|
|
|
2554
2546
|
function nodeContainsErrors(node) {
|
|
2555
2547
|
return (node.flags & syntaxNodeFlags.ContainsErrors) === syntaxNodeFlags.ContainsErrors;
|
|
2556
2548
|
}
|
|
2557
|
-
|
|
2558
2549
|
//#endregion
|
|
2559
2550
|
//#region src/binder.ts
|
|
2560
2551
|
const binder = createBinder();
|
|
@@ -2784,7 +2775,6 @@ function createBinder() {
|
|
|
2784
2775
|
file.colors = colorTable;
|
|
2785
2776
|
} };
|
|
2786
2777
|
}
|
|
2787
|
-
|
|
2788
2778
|
//#endregion
|
|
2789
2779
|
//#region src/service/command/common.ts
|
|
2790
2780
|
function createChangeToEdit(start, end, changeTo) {
|
|
@@ -2805,7 +2795,6 @@ function getOppositeEdgeOp(g) {
|
|
|
2805
2795
|
function getAllowedOp(g) {
|
|
2806
2796
|
return g === syntaxKind.DigraphKeyword ? syntaxKind.DirectedEdgeOp : syntaxKind.UndirectedEdgeOp;
|
|
2807
2797
|
}
|
|
2808
|
-
|
|
2809
2798
|
//#endregion
|
|
2810
2799
|
//#region src/service/command/ChangeAllOtherEdgeOpsAndFixGraphCommand.ts
|
|
2811
2800
|
function create$3(edgeOffsets, changeEdgesTo, graphOffset, changeFromGraph, changeGraphTo) {
|
|
@@ -2840,7 +2829,6 @@ function execute$3(doc, _sourceFile, cmd) {
|
|
|
2840
2829
|
function isChangeAllOtherEdgeOpsAndFixGraphCommand(cmd) {
|
|
2841
2830
|
return cmd.command === commandIds.ConvertGraphType && !!cmd.arguments && cmd.arguments.length === 4;
|
|
2842
2831
|
}
|
|
2843
|
-
|
|
2844
2832
|
//#endregion
|
|
2845
2833
|
//#region src/service/command/ChangeEdgeOpCommand.ts
|
|
2846
2834
|
function create$2(startOffset, endOffset, changeTo, changeFrom) {
|
|
@@ -2869,7 +2857,6 @@ function execute$2(doc, _sourceFile, cmd) {
|
|
|
2869
2857
|
function isChangeEdgeOpCommand(cmd) {
|
|
2870
2858
|
return cmd.command === commandIds.ChangeEdgeOp && !!cmd.arguments && cmd.arguments.length === 3;
|
|
2871
2859
|
}
|
|
2872
|
-
|
|
2873
2860
|
//#endregion
|
|
2874
2861
|
//#region src/service/command/ConsolidateDescendantsCommand.ts
|
|
2875
2862
|
function create$1(statements, below) {
|
|
@@ -2937,7 +2924,6 @@ function execute$1(doc, sourceFile, cmd) {
|
|
|
2937
2924
|
function isConsolidateDescendantsCommand(cmd) {
|
|
2938
2925
|
return cmd.command === commandIds.ConsolidateDescendants && !!cmd.arguments && cmd.arguments.length > 1;
|
|
2939
2926
|
}
|
|
2940
|
-
|
|
2941
2927
|
//#endregion
|
|
2942
2928
|
//#region src/service/command/RemoveSemicolons.ts
|
|
2943
2929
|
function create() {
|
|
@@ -2964,7 +2950,6 @@ function execute(doc, sourceFile, cmd) {
|
|
|
2964
2950
|
function isRemoveSemicolonsCommand(cmd) {
|
|
2965
2951
|
return cmd.command === commandIds.RemoveSemicolons && (!cmd.arguments || cmd.arguments.length === 0 || cmd.arguments.every((e) => e === void 0));
|
|
2966
2952
|
}
|
|
2967
|
-
|
|
2968
2953
|
//#endregion
|
|
2969
2954
|
//#region src/service/codeAction.ts
|
|
2970
2955
|
function getCodeActions(doc, sourceFile, range, _context) {
|
|
@@ -3085,15 +3070,13 @@ function getCheckerErrorCommand(_doc, file, d, code) {
|
|
|
3085
3070
|
}
|
|
3086
3071
|
function convertGraphTypeCommand(file, graph, changeToGraphType) {
|
|
3087
3072
|
const changeToEdgeOp = getAllowedOp(changeToGraphType);
|
|
3088
|
-
|
|
3073
|
+
return create$3(findAllEdges(graph).filter((e) => e.operation.kind !== changeToEdgeOp).map((e) => ({
|
|
3089
3074
|
start: getStart(file, e.operation),
|
|
3090
3075
|
end: e.operation.end
|
|
3091
|
-
}))
|
|
3092
|
-
const graphTypeOffset = {
|
|
3076
|
+
})), changeToEdgeOp, {
|
|
3093
3077
|
start: getStart(file, graph.keyword),
|
|
3094
3078
|
end: graph.keyword.end
|
|
3095
|
-
};
|
|
3096
|
-
return create$3(edgeOffsets, changeToEdgeOp, graphTypeOffset, graph.keyword.kind, changeToGraphType);
|
|
3079
|
+
}, graph.keyword.kind, changeToGraphType);
|
|
3097
3080
|
}
|
|
3098
3081
|
function isInRange(rangeStartOffset, rangeEndOffset, startOffset, endOffset) {
|
|
3099
3082
|
if (rangeStartOffset === rangeEndOffset) return startOffset <= rangeStartOffset && rangeEndOffset <= endOffset;
|
|
@@ -3128,7 +3111,6 @@ function subtreeContainsErrors(node) {
|
|
|
3128
3111
|
});
|
|
3129
3112
|
return hasError;
|
|
3130
3113
|
}
|
|
3131
|
-
|
|
3132
3114
|
//#endregion
|
|
3133
3115
|
//#region src/service/colorProvider.ts
|
|
3134
3116
|
const colorMap = colors;
|
|
@@ -3177,7 +3159,6 @@ function numberToPaddedString(n) {
|
|
|
3177
3159
|
const s = n.toString(16);
|
|
3178
3160
|
return (s.length === 1 ? `0${s}` : s).toLowerCase();
|
|
3179
3161
|
}
|
|
3180
|
-
|
|
3181
3162
|
//#endregion
|
|
3182
3163
|
//#region src/service/completion.ts
|
|
3183
3164
|
function getCompletions(doc, sourceFile, position) {
|
|
@@ -3274,7 +3255,6 @@ function getNodeCompletions(symbols, exlucdedSymbols) {
|
|
|
3274
3255
|
}
|
|
3275
3256
|
return res;
|
|
3276
3257
|
}
|
|
3277
|
-
|
|
3278
3258
|
//#endregion
|
|
3279
3259
|
//#region src/service/hover.ts
|
|
3280
3260
|
function hover(doc, sourceFile, position) {
|
|
@@ -3370,7 +3350,6 @@ function getEdgeHover(n) {
|
|
|
3370
3350
|
function getEdgeSourceOrTargetText(n) {
|
|
3371
3351
|
return n.kind === syntaxKind.NodeId ? getIdentifierText(n.id) : n.id !== void 0 ? `${getIdentifierText(n.id)}` : "sub graph";
|
|
3372
3352
|
}
|
|
3373
|
-
|
|
3374
3353
|
//#endregion
|
|
3375
3354
|
//#region src/service/reference.ts
|
|
3376
3355
|
function findReferences(doc, sourceFile, position, context) {
|
|
@@ -3418,7 +3397,6 @@ function findDefinition(doc, sourceFile, position) {
|
|
|
3418
3397
|
}
|
|
3419
3398
|
debugger;
|
|
3420
3399
|
}
|
|
3421
|
-
|
|
3422
3400
|
//#endregion
|
|
3423
3401
|
//#region src/service/rename.ts
|
|
3424
3402
|
function renameSymbol(doc, sourceFile, position, newName) {
|
|
@@ -3444,16 +3422,11 @@ function isRenameableNode(node) {
|
|
|
3444
3422
|
function isRenamableIdentifier(node) {
|
|
3445
3423
|
return node.kind !== syntaxKind.QuotedTextIdentifier;
|
|
3446
3424
|
}
|
|
3447
|
-
|
|
3448
|
-
//#endregion
|
|
3449
|
-
//#region src/error.ts
|
|
3450
|
-
const diagnosicSource = "DOT";
|
|
3451
3425
|
const subErrorCodeLength = 3;
|
|
3452
3426
|
function formatError(error) {
|
|
3453
3427
|
const subCode = (error.sub | 0).toString().padStart(subErrorCodeLength, "0");
|
|
3454
|
-
return
|
|
3428
|
+
return "DOT" + error.source + subCode;
|
|
3455
3429
|
}
|
|
3456
|
-
|
|
3457
3430
|
//#endregion
|
|
3458
3431
|
//#region src/service/validation.ts
|
|
3459
3432
|
function convertDiagnostic(document, source) {
|
|
@@ -3464,7 +3437,7 @@ function convertDiagnostic(document, source) {
|
|
|
3464
3437
|
},
|
|
3465
3438
|
severity: source.category,
|
|
3466
3439
|
code: formatError(source.code),
|
|
3467
|
-
source:
|
|
3440
|
+
source: "DOT",
|
|
3468
3441
|
message: source.message
|
|
3469
3442
|
};
|
|
3470
3443
|
}
|
|
@@ -3473,7 +3446,6 @@ function validateDocument(doc, sourceFile) {
|
|
|
3473
3446
|
if (!diagnostics || diagnostics.length <= 0) return [];
|
|
3474
3447
|
return diagnostics.map((d) => convertDiagnostic(doc, d));
|
|
3475
3448
|
}
|
|
3476
|
-
|
|
3477
3449
|
//#endregion
|
|
3478
3450
|
//#region src/service/service.ts
|
|
3479
3451
|
function parseDocument(doc) {
|
|
@@ -3500,6 +3472,5 @@ function createService() {
|
|
|
3500
3472
|
getAvailableCommands
|
|
3501
3473
|
};
|
|
3502
3474
|
}
|
|
3503
|
-
|
|
3504
3475
|
//#endregion
|
|
3505
|
-
export { DefaultScanner, Parser, characterCodes, checkError, createService, diagnosticCategory, errorSource, forEachChild, getTextAsToken, getTokenAsText, graphContext, isIdentifier, isIdentifierNode, isIdentifierStart, isLineBreak, parseError, parsingContext, scanError, skipTrivia, syntaxKind, syntaxKindNames, syntaxNodeFlags, tokenFlags };
|
|
3476
|
+
export { DefaultScanner, Parser, characterCodes, checkError, createService, diagnosticCategory, errorSource, forEachChild, getTextAsToken, getTokenAsText, graphContext, isIdentifier, isIdentifierNode, isIdentifierStart, isLineBreak, parseError, parsingContext, scanError, skipTrivia, syntaxKind, syntaxKindNames, syntaxNodeFlags, tokenFlags };
|
package/package.json
CHANGED
|
@@ -1,43 +1,45 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dot-language-support",
|
|
3
|
-
"version": "4.1.
|
|
3
|
+
"version": "4.1.2",
|
|
4
4
|
"description": "Parser and language service for graphviz (dot) files",
|
|
5
|
-
"author": "Niklas Mollenhauer",
|
|
6
|
-
"license": "MIT",
|
|
7
|
-
"main": "./dist/index.mjs",
|
|
8
|
-
"module": "./dist/index.mjs",
|
|
9
|
-
"types": "./dist/index.d.mts",
|
|
10
|
-
"type": "module",
|
|
11
|
-
"scripts": {
|
|
12
|
-
"ci": "biome ci ./src",
|
|
13
|
-
"test": "tsc && node --test '**/*.spec.ts'",
|
|
14
|
-
"test:coverage": "node --test --experimental-test-coverage '**/*.spec.ts'",
|
|
15
|
-
"format": "biome format --write ./src",
|
|
16
|
-
"lint": "biome lint ./src",
|
|
17
|
-
"lint:fix": "biome lint --write ./src",
|
|
18
|
-
"build": "tsdown",
|
|
19
|
-
"prepare": "npm run build"
|
|
20
|
-
},
|
|
21
5
|
"keywords": [
|
|
22
|
-
"graphviz",
|
|
23
6
|
"dot",
|
|
7
|
+
"graphviz",
|
|
24
8
|
"gv",
|
|
25
|
-
"parser",
|
|
26
9
|
"language",
|
|
10
|
+
"parser",
|
|
27
11
|
"service"
|
|
28
12
|
],
|
|
13
|
+
"license": "MIT",
|
|
14
|
+
"author": "Niklas Mollenhauer",
|
|
29
15
|
"repository": {
|
|
30
16
|
"type": "git",
|
|
31
17
|
"url": "https://github.com/nikeee/dot-language-support.git"
|
|
32
18
|
},
|
|
19
|
+
"type": "module",
|
|
20
|
+
"main": "./dist/index.mjs",
|
|
21
|
+
"module": "./dist/index.mjs",
|
|
22
|
+
"types": "./dist/index.d.mts",
|
|
23
|
+
"scripts": {
|
|
24
|
+
"ci": "oxlint -f github",
|
|
25
|
+
"test": "tsc && node --test '**/*.spec.ts'",
|
|
26
|
+
"test:coverage": "node --test --experimental-test-coverage '**/*.spec.ts'",
|
|
27
|
+
"format": "oxfmt",
|
|
28
|
+
"lint": "oxlint --type-aware",
|
|
29
|
+
"lint:fix": "oxlint --type-aware --fix",
|
|
30
|
+
"build": "tsdown",
|
|
31
|
+
"prepare": "npm run build"
|
|
32
|
+
},
|
|
33
33
|
"dependencies": {
|
|
34
34
|
"vscode-languageserver-textdocument": "^1.0.12",
|
|
35
35
|
"vscode-languageserver-types": "^3.17.5"
|
|
36
36
|
},
|
|
37
37
|
"devDependencies": {
|
|
38
|
-
"
|
|
39
|
-
"
|
|
40
|
-
"
|
|
38
|
+
"expect": "^30.3.0",
|
|
39
|
+
"oxfmt": "^0.41.0",
|
|
40
|
+
"oxlint": "^1.49.0",
|
|
41
|
+
"oxlint-tsgolint": "^0.17.1",
|
|
42
|
+
"tsdown": "^0.21.4",
|
|
41
43
|
"typescript": "^5.9.3"
|
|
42
44
|
},
|
|
43
45
|
"engines": {
|