skir 0.0.1
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/README.md +447 -0
- package/dist/casing.d.ts +8 -0
- package/dist/casing.d.ts.map +1 -0
- package/dist/casing.js +49 -0
- package/dist/casing.js.map +1 -0
- package/dist/casing.test.d.ts +2 -0
- package/dist/casing.test.d.ts.map +1 -0
- package/dist/casing.test.js +134 -0
- package/dist/casing.test.js.map +1 -0
- package/dist/command_line_parser.d.ts +33 -0
- package/dist/command_line_parser.d.ts.map +1 -0
- package/dist/command_line_parser.js +171 -0
- package/dist/command_line_parser.js.map +1 -0
- package/dist/command_line_parser.test.d.ts +2 -0
- package/dist/command_line_parser.test.d.ts.map +1 -0
- package/dist/command_line_parser.test.js +302 -0
- package/dist/command_line_parser.test.js.map +1 -0
- package/dist/compatibility_checker.d.ts +68 -0
- package/dist/compatibility_checker.d.ts.map +1 -0
- package/dist/compatibility_checker.js +328 -0
- package/dist/compatibility_checker.js.map +1 -0
- package/dist/compatibility_checker.test.d.ts +2 -0
- package/dist/compatibility_checker.test.d.ts.map +1 -0
- package/dist/compatibility_checker.test.js +528 -0
- package/dist/compatibility_checker.test.js.map +1 -0
- package/dist/compiler.d.ts +3 -0
- package/dist/compiler.d.ts.map +1 -0
- package/dist/compiler.js +358 -0
- package/dist/compiler.js.map +1 -0
- package/dist/config.d.ts +47 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +23 -0
- package/dist/config.js.map +1 -0
- package/dist/definition_finder.d.ts +12 -0
- package/dist/definition_finder.d.ts.map +1 -0
- package/dist/definition_finder.js +180 -0
- package/dist/definition_finder.js.map +1 -0
- package/dist/definition_finder.test.d.ts +2 -0
- package/dist/definition_finder.test.d.ts.map +1 -0
- package/dist/definition_finder.test.js +164 -0
- package/dist/definition_finder.test.js.map +1 -0
- package/dist/encoding.d.ts +2 -0
- package/dist/encoding.d.ts.map +1 -0
- package/dist/encoding.js +38 -0
- package/dist/encoding.js.map +1 -0
- package/dist/encoding.test.d.ts +2 -0
- package/dist/encoding.test.d.ts.map +1 -0
- package/dist/encoding.test.js +23 -0
- package/dist/encoding.test.js.map +1 -0
- package/dist/error_renderer.d.ts +10 -0
- package/dist/error_renderer.d.ts.map +1 -0
- package/dist/error_renderer.js +247 -0
- package/dist/error_renderer.js.map +1 -0
- package/dist/formatter.d.ts +3 -0
- package/dist/formatter.d.ts.map +1 -0
- package/dist/formatter.js +263 -0
- package/dist/formatter.js.map +1 -0
- package/dist/formatter.test.d.ts +2 -0
- package/dist/formatter.test.d.ts.map +1 -0
- package/dist/formatter.test.js +156 -0
- package/dist/formatter.test.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -0
- package/dist/index.test.d.ts +2 -0
- package/dist/index.test.d.ts.map +1 -0
- package/dist/index.test.js +14 -0
- package/dist/index.test.js.map +1 -0
- package/dist/io.d.ts +13 -0
- package/dist/io.d.ts.map +1 -0
- package/dist/io.js +22 -0
- package/dist/io.js.map +1 -0
- package/dist/language_server.d.ts +15 -0
- package/dist/language_server.d.ts.map +1 -0
- package/dist/language_server.js +248 -0
- package/dist/language_server.js.map +1 -0
- package/dist/literals.d.ts +13 -0
- package/dist/literals.d.ts.map +1 -0
- package/dist/literals.js +100 -0
- package/dist/literals.js.map +1 -0
- package/dist/literals.test.d.ts +2 -0
- package/dist/literals.test.d.ts.map +1 -0
- package/dist/literals.test.js +149 -0
- package/dist/literals.test.js.map +1 -0
- package/dist/module_collector.d.ts +3 -0
- package/dist/module_collector.d.ts.map +1 -0
- package/dist/module_collector.js +22 -0
- package/dist/module_collector.js.map +1 -0
- package/dist/module_set.d.ts +44 -0
- package/dist/module_set.d.ts.map +1 -0
- package/dist/module_set.js +1025 -0
- package/dist/module_set.js.map +1 -0
- package/dist/module_set.test.d.ts +2 -0
- package/dist/module_set.test.d.ts.map +1 -0
- package/dist/module_set.test.js +1330 -0
- package/dist/module_set.test.js.map +1 -0
- package/dist/parser.d.ts +6 -0
- package/dist/parser.d.ts.map +1 -0
- package/dist/parser.js +971 -0
- package/dist/parser.js.map +1 -0
- package/dist/parser.test.d.ts +2 -0
- package/dist/parser.test.d.ts.map +1 -0
- package/dist/parser.test.js +1366 -0
- package/dist/parser.test.js.map +1 -0
- package/dist/snapshotter.d.ts +6 -0
- package/dist/snapshotter.d.ts.map +1 -0
- package/dist/snapshotter.js +107 -0
- package/dist/snapshotter.js.map +1 -0
- package/dist/tokenizer.d.ts +4 -0
- package/dist/tokenizer.d.ts.map +1 -0
- package/dist/tokenizer.js +192 -0
- package/dist/tokenizer.js.map +1 -0
- package/dist/tokenizer.test.d.ts +2 -0
- package/dist/tokenizer.test.d.ts.map +1 -0
- package/dist/tokenizer.test.js +425 -0
- package/dist/tokenizer.test.js.map +1 -0
- package/dist/types.d.ts +375 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/package.json +63 -0
- package/src/casing.ts +64 -0
- package/src/command_line_parser.ts +249 -0
- package/src/compatibility_checker.ts +470 -0
- package/src/compiler.ts +435 -0
- package/src/config.ts +28 -0
- package/src/definition_finder.ts +221 -0
- package/src/encoding.ts +32 -0
- package/src/error_renderer.ts +278 -0
- package/src/formatter.ts +274 -0
- package/src/index.ts +6 -0
- package/src/io.ts +33 -0
- package/src/language_server.ts +301 -0
- package/src/literals.ts +120 -0
- package/src/module_collector.ts +22 -0
- package/src/module_set.ts +1175 -0
- package/src/parser.ts +1122 -0
- package/src/snapshotter.ts +136 -0
- package/src/tokenizer.ts +216 -0
- package/src/types.ts +518 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser.test.js","sourceRoot":"","sources":["../src/parser.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snapshotter.d.ts","sourceRoot":"","sources":["../src/snapshotter.ts"],"names":[],"mappings":"AAYA,wBAAsB,YAAY,CAAC,IAAI,EAAE;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;CAChB,GAAG,OAAO,CAAC,IAAI,CAAC,CA4ChB"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { readFile, writeFile } from "node:fs/promises";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import { checkBackwardCompatibility } from "./compatibility_checker.js";
|
|
4
|
+
import { formatError, makeRed, renderBreakingChanges, renderErrors, } from "./error_renderer.js";
|
|
5
|
+
import { collectModules } from "./module_collector.js";
|
|
6
|
+
import { ModuleSet } from "./module_set.js";
|
|
7
|
+
export async function takeSnapshot(args) {
|
|
8
|
+
const newModuleSet = await collectModules(args.srcDir);
|
|
9
|
+
if (newModuleSet.errors.length) {
|
|
10
|
+
renderErrors(newModuleSet.errors);
|
|
11
|
+
process.exit(1);
|
|
12
|
+
}
|
|
13
|
+
const snapshotPath = join(args.rootDir, "skir-snapshot.json");
|
|
14
|
+
const oldModuleSet = await readLastSnapshot(join(args.rootDir, snapshotPath));
|
|
15
|
+
if (!(oldModuleSet instanceof ModuleSet)) {
|
|
16
|
+
console.error(makeRed(`Corrupted snapshot file: ${snapshotPath}`));
|
|
17
|
+
console.error(`Error: ${oldModuleSet.error.toString()}`);
|
|
18
|
+
console.log("If the snapshot file cannot be restored to a valid state, delete it and run again. " +
|
|
19
|
+
"Breaking changes from recent commits will not be detected, but a valid snapshot will be created for future comparisons.");
|
|
20
|
+
process.exit(1);
|
|
21
|
+
}
|
|
22
|
+
const breakingChanges = checkBackwardCompatibility({
|
|
23
|
+
before: oldModuleSet,
|
|
24
|
+
after: newModuleSet,
|
|
25
|
+
});
|
|
26
|
+
if (breakingChanges.length) {
|
|
27
|
+
renderBreakingChanges(breakingChanges, {
|
|
28
|
+
before: oldModuleSet,
|
|
29
|
+
after: newModuleSet,
|
|
30
|
+
});
|
|
31
|
+
process.exit(1);
|
|
32
|
+
}
|
|
33
|
+
const newSnapshot = makeSnapshot(newModuleSet, new Date());
|
|
34
|
+
if (sameModules(newSnapshot, makeSnapshot(oldModuleSet, new Date()))) {
|
|
35
|
+
console.log("No changes detected since last snapshot.");
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
if (args.check) {
|
|
39
|
+
console.error(makeRed(`Modules have changed since the last snapshot. ` +
|
|
40
|
+
`Run the command without --check to take a new snapshot.`));
|
|
41
|
+
process.exit(1);
|
|
42
|
+
}
|
|
43
|
+
await writeFile(snapshotPath, JSON.stringify(newSnapshot, null, 2), "utf-8");
|
|
44
|
+
console.log("Snapshot taken. No breaking changes detected.");
|
|
45
|
+
}
|
|
46
|
+
async function readLastSnapshot(snapshotPath) {
|
|
47
|
+
let snapshot;
|
|
48
|
+
try {
|
|
49
|
+
const textContent = await readFile(snapshotPath, "utf-8");
|
|
50
|
+
snapshot = JSON.parse(textContent);
|
|
51
|
+
}
|
|
52
|
+
catch (error) {
|
|
53
|
+
if (error instanceof SyntaxError) {
|
|
54
|
+
return {
|
|
55
|
+
kind: "corrupted",
|
|
56
|
+
error: error,
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
const isNotFoundError = error instanceof Error && "code" in error && error.code === "ENOENT";
|
|
60
|
+
if (isNotFoundError) {
|
|
61
|
+
return ModuleSet.fromMap(new Map());
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
// Rethrow I/O error
|
|
65
|
+
throw error;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
const pathToSourceCode = new Map();
|
|
69
|
+
try {
|
|
70
|
+
for (const [path, sourceCode] of Object.entries(snapshot.modules)) {
|
|
71
|
+
// + "" to ensure string type
|
|
72
|
+
pathToSourceCode.set(path + "", sourceCode + "");
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
catch (error) {
|
|
76
|
+
return {
|
|
77
|
+
kind: "corrupted",
|
|
78
|
+
error: error,
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
const moduleSet = ModuleSet.fromMap(pathToSourceCode);
|
|
82
|
+
if (moduleSet.errors.length) {
|
|
83
|
+
const firstError = formatError(moduleSet.errors[0]);
|
|
84
|
+
return {
|
|
85
|
+
kind: "corrupted",
|
|
86
|
+
error: new Error(`errors in modules; first error: ${firstError}`),
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
return moduleSet;
|
|
90
|
+
}
|
|
91
|
+
function makeSnapshot(moduleSet, now) {
|
|
92
|
+
const modules = {};
|
|
93
|
+
for (const module of moduleSet.resolvedModules) {
|
|
94
|
+
modules[module.path] = module.sourceCode;
|
|
95
|
+
}
|
|
96
|
+
return {
|
|
97
|
+
lastChange: now.toISOString(),
|
|
98
|
+
modules: modules,
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
function sameModules(a, b) {
|
|
102
|
+
return (Object.keys(a.modules).length === Object.keys(b.modules).length ||
|
|
103
|
+
Object.entries(a.modules).every(([path, sourceCode]) => {
|
|
104
|
+
return sourceCode === b.modules[path];
|
|
105
|
+
}));
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=snapshotter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snapshotter.js","sourceRoot":"","sources":["../src/snapshotter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokenizer.d.ts","sourceRoot":"","sources":["../src/tokenizer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAuB,MAAM,EAAa,KAAK,EAAE,MAAM,YAAY,CAAC;AAEhF,kCAAkC;AAClC,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,YAAY,CAAC,EAAE,eAAe,GAC7B,MAAM,CAAC,KAAK,EAAE,CAAC,CAyHjB"}
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
import { unquoteAndUnescape } from "./literals.js";
|
|
2
|
+
/** Tokenizes the given module. */
|
|
3
|
+
export function tokenizeModule(code, modulePath, keepComments) {
|
|
4
|
+
const tokens = [];
|
|
5
|
+
const errors = [];
|
|
6
|
+
const lines = new Lines(code, modulePath);
|
|
7
|
+
// Multiline comment: \/\*([^*]|\*[^\/])*(\*\/)?
|
|
8
|
+
// Single-line comment: \/\/[^\n\r]*
|
|
9
|
+
// Number: -?(0|[1-9][0-9]*)(\.[0-9]+)?\b
|
|
10
|
+
// Word: \b\w+\b
|
|
11
|
+
// Whitespaces: [ \n\r\t]+
|
|
12
|
+
// Symbol: \.\.|\{\||\|\}|[{}[\]()*.:=;|?,]
|
|
13
|
+
// Double-quote string literal: "(\\(\n|\r|\n\r|.)|[^\\\"\n\r])*"?
|
|
14
|
+
// Single-quote string literal: '(\\(\n|\r|\n\r|.)|[^\\\'\n\r])*'?
|
|
15
|
+
//
|
|
16
|
+
// To iterate on this regex, use https://regex101.com/.
|
|
17
|
+
const re = /(\/\*([^*]|\*[^/])*(\*\/)?)|(\/\/[^\n\r]*)|(-?(0|[1-9][0-9]*)(\.[0-9]+)?\b)|\b(\w+)\b|([ \n\r\t]+)|(\.\.|\{\||\|\}|[{}[\]()*.:=;|?,])|("(\\(\n|\r|\n\r|.)|[^\\"\n\r])*"?)|('(\\(\n|\r|\n\r|.)|[^\\'\n\r])*'?)|($)/g;
|
|
18
|
+
// 1 2 3 4 5 6 7 8 9 10 11 13 14 16 17
|
|
19
|
+
let group;
|
|
20
|
+
let expectedPosition = 0;
|
|
21
|
+
while ((group = re.exec(code)) !== null) {
|
|
22
|
+
const position = re.lastIndex - group[0].length;
|
|
23
|
+
// Check that all the regex matches are consecutive.
|
|
24
|
+
// If there is a gap between two matches, it means that we have an invalid
|
|
25
|
+
// sequence of characters.
|
|
26
|
+
if (position !== expectedPosition) {
|
|
27
|
+
const line = lines.advancePosition(expectedPosition);
|
|
28
|
+
const colNumber = expectedPosition - line.position;
|
|
29
|
+
errors.push({
|
|
30
|
+
token: {
|
|
31
|
+
text: code.substring(expectedPosition, position),
|
|
32
|
+
position: expectedPosition,
|
|
33
|
+
line: line,
|
|
34
|
+
colNumber: colNumber,
|
|
35
|
+
},
|
|
36
|
+
message: "Invalid sequence of characters",
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
expectedPosition = re.lastIndex;
|
|
40
|
+
const line = lines.advancePosition(position);
|
|
41
|
+
const colNumber = position - line.position;
|
|
42
|
+
const token = {
|
|
43
|
+
text: group[0],
|
|
44
|
+
position: position,
|
|
45
|
+
line: line,
|
|
46
|
+
colNumber: colNumber,
|
|
47
|
+
};
|
|
48
|
+
// Skip multiline comments.
|
|
49
|
+
if (group[1] !== undefined && !keepComments) {
|
|
50
|
+
// Make sure the multiline comment is terminated.
|
|
51
|
+
if (!group[1].endsWith("*/")) {
|
|
52
|
+
errors.push({
|
|
53
|
+
token: token,
|
|
54
|
+
message: "Unterminated multi-line comment",
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
continue;
|
|
58
|
+
}
|
|
59
|
+
// Skip single-line comments.
|
|
60
|
+
if (group[4] !== undefined && !keepComments) {
|
|
61
|
+
continue;
|
|
62
|
+
}
|
|
63
|
+
if (group[8] !== undefined) {
|
|
64
|
+
if (!validateWord(token, errors)) {
|
|
65
|
+
continue;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
// Skip whitespaces.
|
|
69
|
+
if (group[9] !== undefined)
|
|
70
|
+
continue;
|
|
71
|
+
// Validate string literals.
|
|
72
|
+
const stringLiteral = group[11] || group[14];
|
|
73
|
+
if (stringLiteral !== undefined) {
|
|
74
|
+
if (!stringLiteral.endsWith(stringLiteral[0])) {
|
|
75
|
+
errors.push({
|
|
76
|
+
token: token,
|
|
77
|
+
message: "Unterminated string literal",
|
|
78
|
+
});
|
|
79
|
+
continue;
|
|
80
|
+
}
|
|
81
|
+
const stringLiteralRe = /^["'](\\(\r\n|u[0-9A-Fa-f]{4}|["'\\/bfnrt\n\r])|[^\\])*["']$/;
|
|
82
|
+
if (!stringLiteralRe.test(stringLiteral)) {
|
|
83
|
+
errors.push({
|
|
84
|
+
token: token,
|
|
85
|
+
message: "String literal contains invalid escape sequence",
|
|
86
|
+
});
|
|
87
|
+
continue;
|
|
88
|
+
}
|
|
89
|
+
// Check that the string doesn't contain lone surrogates.
|
|
90
|
+
// See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/isWellFormed
|
|
91
|
+
const unquoted = unquoteAndUnescape(stringLiteral);
|
|
92
|
+
try {
|
|
93
|
+
encodeURIComponent(unquoted);
|
|
94
|
+
}
|
|
95
|
+
catch {
|
|
96
|
+
errors.push({
|
|
97
|
+
token: token,
|
|
98
|
+
message: "String literal contains lone surrogates",
|
|
99
|
+
});
|
|
100
|
+
continue;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
tokens.push(token);
|
|
104
|
+
if (group[17] !== undefined) {
|
|
105
|
+
// The end of the string has been reached.
|
|
106
|
+
// The last token we added is an empty string.
|
|
107
|
+
break;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
return { result: tokens, errors: errors };
|
|
111
|
+
}
|
|
112
|
+
function validateWord(token, errors) {
|
|
113
|
+
if (/^[0-9]/.test(token.text)) {
|
|
114
|
+
errors.push({
|
|
115
|
+
token: token,
|
|
116
|
+
message: "Invalid number",
|
|
117
|
+
});
|
|
118
|
+
return false;
|
|
119
|
+
}
|
|
120
|
+
if (token.text.startsWith("_")) {
|
|
121
|
+
errors.push({
|
|
122
|
+
token: token,
|
|
123
|
+
message: "Identifier cannot start with _",
|
|
124
|
+
});
|
|
125
|
+
return false;
|
|
126
|
+
}
|
|
127
|
+
if (token.text.endsWith("_")) {
|
|
128
|
+
errors.push({
|
|
129
|
+
token: token,
|
|
130
|
+
message: "Identifier cannot end with _",
|
|
131
|
+
});
|
|
132
|
+
return false;
|
|
133
|
+
}
|
|
134
|
+
if (token.text.includes("__")) {
|
|
135
|
+
errors.push({
|
|
136
|
+
token: token,
|
|
137
|
+
message: "Identifier cannot contain __ sequence",
|
|
138
|
+
});
|
|
139
|
+
return false;
|
|
140
|
+
}
|
|
141
|
+
if (/_[0-9]/.test(token.text)) {
|
|
142
|
+
// The problem is we could end up with duplicate field names when converting
|
|
143
|
+
// to camel case. For example: "field0" and "field_0" would both be
|
|
144
|
+
// converted to "field0".
|
|
145
|
+
errors.push({
|
|
146
|
+
token: token,
|
|
147
|
+
message: "Digit cannot follow _",
|
|
148
|
+
});
|
|
149
|
+
return false;
|
|
150
|
+
}
|
|
151
|
+
return true;
|
|
152
|
+
}
|
|
153
|
+
class Lines {
|
|
154
|
+
/** Splits the given code into multiple lines. */
|
|
155
|
+
constructor(code, modulePath) {
|
|
156
|
+
this.lines = [];
|
|
157
|
+
const lines = this.lines;
|
|
158
|
+
let lineStart = 0;
|
|
159
|
+
let group;
|
|
160
|
+
const re = /\n|\r|\n\r|$/g;
|
|
161
|
+
while ((group = re.exec(code)) !== null) {
|
|
162
|
+
const match = group[0];
|
|
163
|
+
const lineEnd = re.lastIndex - match.length;
|
|
164
|
+
const lineString = code.substring(lineStart, lineEnd);
|
|
165
|
+
lines.push({
|
|
166
|
+
lineNumber: lines.length,
|
|
167
|
+
line: lineString,
|
|
168
|
+
position: lineStart,
|
|
169
|
+
modulePath: modulePath,
|
|
170
|
+
});
|
|
171
|
+
// Record the position after the EOL or EOF.
|
|
172
|
+
lineStart = re.lastIndex;
|
|
173
|
+
if (match === "") {
|
|
174
|
+
break;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Returns the line at the given position, where the position is the char
|
|
180
|
+
* index within `code`.
|
|
181
|
+
* Requires the position to be >= the position given the last time the method
|
|
182
|
+
* was called.
|
|
183
|
+
*/
|
|
184
|
+
advancePosition(position) {
|
|
185
|
+
const lines = this.lines;
|
|
186
|
+
while (lines.length >= 2 && position >= this.lines[1].position) {
|
|
187
|
+
lines.shift();
|
|
188
|
+
}
|
|
189
|
+
return lines[0];
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
//# sourceMappingURL=tokenizer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokenizer.js","sourceRoot":"","sources":["../src/tokenizer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokenizer.test.d.ts","sourceRoot":"","sources":["../src/tokenizer.test.ts"],"names":[],"mappings":""}
|